Example #1
0
 public static bool CheckFaint(this PokemonProxy pm)
 {
     if (pm.Hp == 0 && pm.OnboardPokemon != pm.NullOnboardPokemon)
     {
         ATs.Withdrawn(pm, pm.OnboardPokemon.Ability);
         pm.Field.SetCondition(Cs.FaintTurn, pm.Controller.TurnNumber);
         pm.Pokemon.State = PokemonState.Faint;
         pm.Controller.Withdraw(pm, "Faint", 0, false);
         foreach (var p in pm.Controller.OnboardPokemons)
         {
             if (p.AbilityE(As.Soul_Heart))
             {
                 p.ChangeLv7D(p, StatType.SpAtk, 1, false, true);
             }
         }
         foreach (var p in pm.Field.Pokemons)
         {
             var d = pm.OnboardPokemon.Ability;
             if ((p.AbilityE(As.Receiver) || p.AbilityE(As.Power_of_Alchemy)) && d != As.WONDER_GUARD && d != As.FORECAST && d != As.MULTITYPE && d != As.ILLUSION && d != As.ZEN_MODE && d != As.Shields_Down && d != As.Schooling && d != As.Shields_Down && d != As.Battle_Bond && d != As.RKS_System && d != As.Comatose)
             {
                 p.RaiseAbility();
                 p.ChangeAbility(d);
                 p.Controller.ReportBuilder.ShowLog("Receiver", pm.Id, pm.OnboardPokemon.Ability);
             }
         }
         return(true);
     }
     return(false);
 }
 public bool Withdraw(PokemonProxy pm, string log, int arg1, bool canPursuit)
 {
     if (CanWithdraw(pm))
     {
         if (log != null) pm.ShowLogPm(log, arg1);
         STs.Withdrawing(pm, canPursuit);
         if (pm.Tile != null)
         {
             ReportBuilder.Withdraw(pm);
             var ability = pm.Ability;
             pm.Action = PokemonAction.InBall;
             pm.Tile.Pokemon = null;
             pm.OnboardPokemon = pm.NullOnboardPokemon;
             Controller.ActingPokemons.Remove(pm);
             ATs.Withdrawn(pm, ability);
             return true;
         }
     }
     return false;
 }