private void CheckDeadPokemon() { if (IsDraw()) { GameLog.AddMessage("It's a draw!"); EndGame(Id); return; } CheckDeadBenchedPokemon(NonActivePlayer); CheckDeadBenchedPokemon(ActivePlayer); if (NonActivePlayer.ActivePokemonCard != null && NonActivePlayer.ActivePokemonCard.IsDead()) { GameLog.AddMessage(NonActivePlayer.ActivePokemonCard.GetName() + " Dies"); NonActivePlayer.ActivePokemonCard.KnockedOutBy = ActivePlayer.ActivePokemonCard; SendEventToPlayers(new PokemonDiedEvent { Pokemon = NonActivePlayer.ActivePokemonCard }); TriggerAbilityOfType(TriggerType.Dies, NonActivePlayer.ActivePokemonCard); TriggerAbilityOfType(TriggerType.Kills, ActivePlayer.ActivePokemonCard); NonActivePlayer.ActivePokemonCard.KnockedOutBy = ActivePlayer.ActivePokemonCard; PushGameLogUpdatesToPlayers(); if (ActivePlayer.PrizeCards.Count == 1 && NonActivePlayer.ActivePokemonCard.PrizeCards > 0) { GameLog.AddMessage(NonActivePlayer.NetworkPlayer?.Name + $" has no pokémon left, {ActivePlayer.NetworkPlayer?.Name} wins the game"); EndGame(ActivePlayer.Id); return; } else if (NonActivePlayer.BenchedPokemon.Count == 0) { GameLog.AddMessage(ActivePlayer.NetworkPlayer?.Name + " wins the game"); EndGame(ActivePlayer.Id); return; } else { PushInfoToPlayer("Opponent is selecting a prize card", NonActivePlayer); ActivePlayer.SelectPrizeCard(NonActivePlayer.ActivePokemonCard.PrizeCards, this); } NonActivePlayer.KillActivePokemon(); if (NonActivePlayer.BenchedPokemon.Count > 0) { PushInfoToPlayer("Opponent is selecting a new active Pokémon", ActivePlayer); NonActivePlayer.SelectActiveFromBench(this); } else { GameLog.AddMessage(NonActivePlayer.NetworkPlayer?.Name + $" has no pokémon left, {ActivePlayer.NetworkPlayer?.Name} wins the game"); EndGame(ActivePlayer.Id); return; } } PushGameLogUpdatesToPlayers(); if (ActivePlayer.ActivePokemonCard != null && ActivePlayer.ActivePokemonCard.IsDead()) { GameLog.AddMessage(ActivePlayer.ActivePokemonCard.GetName() + "Dies"); SendEventToPlayers(new PokemonDiedEvent { Pokemon = ActivePlayer.ActivePokemonCard }); TriggerAbilityOfType(TriggerType.Dies, ActivePlayer.ActivePokemonCard); var prizeCardValue = ActivePlayer.ActivePokemonCard.PrizeCards; ActivePlayer.ActivePokemonCard.KnockedOutBy = NonActivePlayer.ActivePokemonCard; ActivePlayer.KillActivePokemon(); if (ActivePlayer.BenchedPokemon.Count > 0) { PushInfoToPlayer("Opponent is selecting a prize card", ActivePlayer); NonActivePlayer.SelectPrizeCard(prizeCardValue, this); PushInfoToPlayer("Opponent is selecting a new active Pokémon", NonActivePlayer); ActivePlayer.SelectActiveFromBench(this); } else { GameLog.AddMessage(ActivePlayer.NetworkPlayer?.Name + $" has no pokémon left, {NonActivePlayer.NetworkPlayer?.Name} wins the game"); EndGame(NonActivePlayer.Id); return; } } PushGameLogUpdatesToPlayers(); }