Seems PIDs are getting mixed up at some point.
Found cause of issue: function calls such as self() are executed in the spawned process, so players use their own PID as that of dealer.
Weird. Name :cards gives different result from :cardanswer.
Making progress, but cards from battle are not being awarded and the game stops at a certain point.