A couple of things stand out…
- The first branch node in your for each loop currently returns after the first card is checked and returns false. Only one card is being checked so this is likely the cause why the issue with the player is occurring, and this leads onto the next point…
- The for each node’s complete execution pin should be what returns to damage the player after all cards have been checked. You should be able to swap the execution from the branch so the complete execution is triggered instead. You wont need to have anything come out of the false for the branch node.
As for the error, this essentially means there is no reference to the players graveyard. This is handled in the game state which sets references for each player at the start of the game. You shouldn’t need a graveyard in your game as they are optional really. In the 3D card, the “Move Card to Graveyard” function calls a function in the game state (“Remove Card from Board”) which would handle the removal cleanly. Have you made any changes in the game state recently? If you can provide more details and specific cases then this may help narrow this down.