Leverage CardBeingPlayedIs helper method.
Self parameter is available on GameState when invoking player actions.
Self member of gamestate is used instead of gamestate.players.currentplayer.   This fixes bugs in edge cases where during the current player turn, they play a card that requires another play to perform an action.  That other player now has access to Self (e.g. Self.Hand) when making choices.