public static void Lv7DDown(PokemonProxy pm) { switch (pm.Ability) { case As.DEFIANT: pm.ChangeLv7D(pm, StatType.Atk, 2, false, true); break; case As.COMPETITIVE: pm.ChangeLv7D(pm, StatType.SpAtk, 2, false, true); break; } }
private static void Download(PokemonProxy pm) { var sa = pm.CanChangeLv7D(pm, StatType.SpAtk, 1, false) != 0; var a = pm.CanChangeLv7D(pm, StatType.Atk, 1, false) != 0; if (sa || a) { var stats = new List <StatType>(); foreach (var p in pm.Controller.Board[1 - pm.Pokemon.TeamId].GetAdjacentPokemonsByOppositeX(pm.OnboardPokemon.X)) { if (p.OnboardPokemon.FiveD.Def > p.OnboardPokemon.FiveD.SpDef) { if (sa) { stats.Add(StatType.SpAtk); } } else if (a) { stats.Add(StatType.Atk); } } var n = stats.Count; if (n != 0) { pm.RaiseAbility(); pm.ChangeLv7D(pm, stats[pm.Controller.GetRandomInt(0, n - 1)], 1, false); } } }
private static bool Flinch(PokemonProxy pm) { if (pm.OnboardPokemon.HasCondition(Cs.Flinch)) { pm.ShowLogPm("Flinch"); if (pm.RaiseAbility(As.STEADFAST)) { pm.ChangeLv7D(pm, StatType.Speed, 1, false); } return(false); } return(true); }
private static void Debut(Condition hazard, PokemonProxy pm) { switch (hazard.Move.Id) { case Ms.SPIKES: if (HasEffect.IsGroundAffectable(pm, true, false)) { pm.EffectHurtByOneNth(hazard.Int, Ls.Spikes); } break; case Ms.TOXIC_SPIKES: if (HasEffect.IsGroundAffectable(pm, true, false)) { if (pm.OnboardPokemon.HasType(BattleType.Poison)) { De(pm.Controller.ReportBuilder, pm.Field, hazard.Move); } else if (pm.CanAddState(pm, AttachedState.PSN, false)) { pm.AddState(pm, AttachedState.PSN, false, hazard.Bool ? 15 : 0); } } break; case Ms.STEALTH_ROCK: int revise = BattleType.Rock.EffectRevise(pm.OnboardPokemon.Types); //羽栖有效无效都无所谓 int hp = (revise > 0 ? pm.Pokemon.MaxHp << revise : pm.Pokemon.MaxHp >> -revise) >> 3; pm.EffectHurt(hp, Ls.StealthRock); break; case Ms.STICKY_WEB: if (HasEffect.IsGroundAffectable(pm, true, false)) { pm.ShowLogPm("StickyWeb"); pm.ChangeLv7D(null, StatType.Speed, -1, false, false); } break; } }