예제 #1
0
 private PBEMoveData(PBEType type, PBEMoveCategory category, sbyte priority, byte ppTier, byte power, byte accuracy,
                     PBEMoveEffect effect, int effectParam, PBEMoveTarget targets,
                     PBEMoveFlag flags)
 {
     Type   = type; Category = category; Priority = priority; PPTier = ppTier; Power = power; Accuracy = accuracy;
     Effect = effect; EffectParam = effectParam; Targets = targets;
     Flags  = flags;
 }
        public static bool IsHPRestoreMove(PBEMoveEffect effect)
        {
            switch (effect)
            {
            case PBEMoveEffect.Rest:
            case PBEMoveEffect.RestoreTargetHP: return(true);

            default: return(false);
            }
        }
        public static bool IsHPDrainMove(PBEMoveEffect effect)
        {
            switch (effect)
            {
            case PBEMoveEffect.HPDrain:
            case PBEMoveEffect.HPDrain__RequireSleep: return(true);

            default: return(false);
            }
        }
        public static bool IsRecoilMove(PBEMoveEffect effect) // TODO: JumpKick/HiJumpKick
        {
            switch (effect)
            {
            case PBEMoveEffect.Recoil:
            case PBEMoveEffect.Recoil__10PercentBurn:
            case PBEMoveEffect.Recoil__10PercentParalyze: return(true);

            default: return(false);
            }
        }
        public static bool IsMultiHitMove(PBEMoveEffect effect) // TODO: TripleKick
        {
            switch (effect)
            {
            case PBEMoveEffect.Hit__2Times:
            case PBEMoveEffect.Hit__2Times__MaybePoison:
            case PBEMoveEffect.Hit__2To5Times: return(true);

            default: return(false);
            }
        }
        public static bool IsWeatherMove(PBEMoveEffect effect)
        {
            switch (effect)
            {
            case PBEMoveEffect.Hail:
            case PBEMoveEffect.RainDance:
            case PBEMoveEffect.Sandstorm:
            case PBEMoveEffect.SunnyDay: return(true);

            default: return(false);
            }
        }
        public static bool IsSetDamageMove(PBEMoveEffect effect)
        {
            switch (effect)
            {
            case PBEMoveEffect.Endeavor:
            case PBEMoveEffect.FinalGambit:
            case PBEMoveEffect.OneHitKnockout:
            case PBEMoveEffect.Psywave:
            case PBEMoveEffect.SeismicToss:
            case PBEMoveEffect.SetDamage:
            case PBEMoveEffect.SuperFang: return(true);

            default: return(false);
            }
        }
        public static bool HasSecondaryEffects(PBEMoveEffect effect, PBESettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (!settings.IsReadOnly)
            {
                throw new ArgumentException("Settings must be read-only.", nameof(settings));
            }
            switch (effect)
            {
            case PBEMoveEffect.Hit__MaybeBurn:
            case PBEMoveEffect.Hit__MaybeBurn__10PercentFlinch:
            case PBEMoveEffect.Hit__MaybeConfuse:
            case PBEMoveEffect.Hit__MaybeFlinch:
            case PBEMoveEffect.Hit__MaybeFreeze:
            case PBEMoveEffect.Hit__MaybeFreeze__10PercentFlinch:
            case PBEMoveEffect.Hit__MaybeLowerTarget_ACC_By1:
            case PBEMoveEffect.Hit__MaybeLowerTarget_ATK_By1:
            case PBEMoveEffect.Hit__MaybeLowerTarget_DEF_By1:
            case PBEMoveEffect.Hit__MaybeLowerTarget_SPATK_By1:
            case PBEMoveEffect.Hit__MaybeLowerTarget_SPDEF_By1:
            case PBEMoveEffect.Hit__MaybeLowerTarget_SPDEF_By2:
            case PBEMoveEffect.Hit__MaybeLowerTarget_SPE_By1:
            case PBEMoveEffect.Hit__MaybeLowerUser_ATK_DEF_By1:
            case PBEMoveEffect.Hit__MaybeLowerUser_DEF_SPDEF_By1:
            case PBEMoveEffect.Hit__MaybeLowerUser_SPATK_By2:
            case PBEMoveEffect.Hit__MaybeLowerUser_SPE_By1:
            case PBEMoveEffect.Hit__MaybeLowerUser_SPE_DEF_SPDEF_By1:
            case PBEMoveEffect.Hit__MaybeParalyze:
            case PBEMoveEffect.Hit__MaybeParalyze__10PercentFlinch:
            case PBEMoveEffect.Hit__MaybePoison:
            case PBEMoveEffect.Hit__MaybeRaiseUser_ATK_By1:
            case PBEMoveEffect.Hit__MaybeRaiseUser_ATK_DEF_SPATK_SPDEF_SPE_By1:
            case PBEMoveEffect.Hit__MaybeRaiseUser_DEF_By1:
            case PBEMoveEffect.Hit__MaybeRaiseUser_SPATK_By1:
            case PBEMoveEffect.Hit__MaybeRaiseUser_SPE_By1:
            case PBEMoveEffect.Hit__MaybeToxic:
            case PBEMoveEffect.Snore: return(true);

            // BUG: SecretPower is unaffected by SereneGrace and the Rainbow
            case PBEMoveEffect.SecretPower: return(settings.BugFix);

            default: return(false);
            }
        }
예제 #9
0
 private static bool IsTeammateUsingEffect(IEnumerable <PBETurnAction> actions, PBEMoveEffect effect)
 {
     return(actions.Any(a => a != null && a.Decision == PBETurnDecision.Fight && PBEMoveData.Data[a.FightMove].Effect == effect));
 }
예제 #10
0
 private static bool IsTeammateUsingEffect(IEnumerable <PBETurnAction> actions, PBEMoveEffect effect)
 {
     return(actions.Any(a => a != null && a.Decision == PBETurnDecision.Fight && PBEDataProvider.Instance.GetMoveData(a.FightMove).Effect == effect));
 }
 /// <summary>Temporary check to see if a move is usable, can be removed once all moves are added</summary>
 public static bool IsMoveUsable(PBEMoveEffect effect)
 {
     return(effect != PBEMoveEffect.TODOMOVE && effect != PBEMoveEffect.Sketch);
 }