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; }