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);
                }
            }
        }
Esempio n. 3
0
 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;
            }
        }