public override void Run(GameEvent gameEvent, GameEventArgs eventArgs)
{
Player currentPlayer = Game.CurrentGame.CurrentPlayer;
Trace.TraceInformation("Player {0} discard stage.", currentPlayer.Id);
var args = new AdjustmentEventArgs();
args.Source = eventArgs.Source;
args.AdjustmentAmount = 0;
Game.CurrentGame.Emit(GameEvent.PlayerHandCardCapacityAdjustment, args);
Game.CurrentGame.ForcePlayerDiscard(currentPlayer,
(p, d) =>
{
int i = Game.CurrentGame.Decks[p, DeckType.Hand].Count - Math.Max(0, p.Health) - args.AdjustmentAmount;
if (i < 0) i = 0;
return i;
},
false,
false);
}