Ejemplo n.º 1
0
        public void RetreatActivePokemon(PokemonCard replacementPokemon, List <EnergyCard> payedEnergy, GameField game)
        {
            var retreatStoppers = GetAllPokemonCards().SelectMany(pokemon => pokemon.TemporaryAbilities.OfType <RetreatStopper>());

            if (!ActivePokemonCard.CanReatreat(game) || retreatStoppers.Any())
            {
                return;
            }

            foreach (var energyCard in payedEnergy)
            {
                ActivePokemonCard.DiscardEnergyCard(energyCard, game);
            }

            var oldActivePokemon = ActivePokemonCard;

            ActivePokemonCard = replacementPokemon;

            ClearAbilitiesWhenBenched(oldActivePokemon);

            ActivePokemonCard.DamageStoppers = ActivePokemonCard.DamageStoppers.Where(d => !d.LastsUntilDamageTaken).ToList();
            BenchedPokemon.ReplaceWith(replacementPokemon, oldActivePokemon);

            oldActivePokemon.ClearStatusEffects();

            game?.SendEventToPlayers(new PokemonBecameActiveEvent
            {
                NewActivePokemonId = replacementPokemon.Id,
                ReplacedPokemonId  = oldActivePokemon.Id
            });
        }
Ejemplo n.º 2
0
        public void SetBenchedPokemon(PokemonCard pokemon)
        {
            if (Hand.Contains(pokemon))
            {
                pokemon.PlayedThisTurn = true;
                Hand.Remove(pokemon);
            }

            BenchedPokemon.Add(pokemon);
            pokemon.RevealToAll();
        }
Ejemplo n.º 3
0
        public void SwapActivePokemon(PokemonCard pokemon, GameField game)
        {
            BenchedPokemon.ReplaceWith(pokemon, ActivePokemonCard);

            game?.SendEventToPlayers(new PokemonBecameActiveEvent
            {
                NewActivePokemonId = pokemon.Id,
                ReplacedPokemonId  = ActivePokemonCard.Id
            });

            ActivePokemonCard = pokemon;
            pokemon.RevealToAll();
        }
Ejemplo n.º 4
0
        public void PlayCard(PokemonCard pokemon)
        {
            if (ActivePokemonCard == null)
            {
                ActivePokemonCard = pokemon;
            }
            else
            {
                BenchedPokemon.Add(pokemon);
            }

            pokemon.RevealToAll();
        }
Ejemplo n.º 5
0
        public void ForceRetreatActivePokemon(PokemonCard replacementPokemon, GameField game)
        {
            var oldActivePokemon = ActivePokemonCard;

            ActivePokemonCard = replacementPokemon;
            BenchedPokemon.ReplaceWith(replacementPokemon, oldActivePokemon);
            ClearAbilitiesWhenBenched(oldActivePokemon);
            oldActivePokemon.ClearStatusEffects();

            game?.SendEventToPlayers(new PokemonBecameActiveEvent
            {
                NewActivePokemonId = replacementPokemon == null ? null : replacementPokemon.Id,
                ReplacedPokemonId  = oldActivePokemon.Id
            });
        }
Ejemplo n.º 6
0
        public void SetActivePokemon(PokemonCard pokemon)
        {
            if (ActivePokemonCard != null)
            {
                return;
            }

            if (Hand.Contains(pokemon))
            {
                pokemon.PlayedThisTurn = true;
                Hand.Remove(pokemon);
            }

            BenchedPokemon.Remove(pokemon);

            ActivePokemonCard = pokemon;
            pokemon.RevealToAll();
        }
Ejemplo n.º 7
0
 public void KillBenchedPokemon(PokemonCard pokemon)
 {
     KillPokemon(pokemon);
     BenchedPokemon.Remove(pokemon);
 }