PokéRogue
    Preparing search index...

    Implements the combined effect of lowering the target's stats and switching out the user.

    Because the stat drop phase is queued and not resolved immediately, this method silently simulates ability blocks and stat boundaries to accurately predict if the stat drop will succeed. This custom class ensures the switch only occurs if the stat drop is not blocked (e.g., by Clear Body or minimum stat stages), and prevents the move from failing outright if the user has no eligible party members.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Container for optional parameters to this attribute.

    StatStageChangeAttrOptions for available optional params

    selfTarget: boolean

    Should this Move target the user?

    stages: number
    stats: (ATK | DEF | SPATK | SPDEF | SPD | ACC | EVA)[]
    switchAttr: ForceSwitchOutAttr

    Accessors

    • get effectChanceOverride(): number | undefined

      If defined, overrides the move's base chance for this secondary effect to trigger.

      Returns number | undefined

    • get firstHitOnly(): boolean

      true if this effect should only trigger on the first hit of multi-hit moves.

      Returns boolean

      false

    • get firstTargetOnly(): boolean

      true if this effect should apply only upon hitting a target for the first time when targeting multiple Pokemon.

      Returns boolean

      false

    • get lastHitOnly(): boolean

      true if this effect should only trigger on the last hit of multi-hit moves.

      Returns boolean

      false

    • get showMessage(): boolean

      true to display a message for the stat change.

      Returns boolean

      true

    Methods

    • Attempts to apply the stat drop, and if successful, conditionally triggers the user to switch out.

      Parameters

      Returns boolean

      true if the stat drop phase was successfully queued

      The checks for the stat drop application cannot be moved to getCondition due to hiding activation messages from any effects that would prevent the stat decrease.

    • Gets the used move's additional effect chance. Chance is modified by MoveEffectChanceMultiplierAbAttr and IgnoreMoveEffectsAbAttr.

      Parameters

      • user: Pokemon

        Pokemon using this move

      • target: Pokemon

        Target of this move

      • move: Move

        Move being used

      • OptionalselfEffect: boolean

        true if move targets user.

      • OptionalshowAbility: boolean

      Returns number

      Move effect chance value.

    • Return whether this attribute is of the given type.

      Type Parameters

      • T extends
            | "MoveEffectAttr"
            | "MoveHeaderAttr"
            | "MessageHeaderAttr"
            | "AddBattlerTagAttr"
            | "AddBattlerTagHeaderAttr"
            | "BeakBlastHeaderAttr"
            | "PreMoveMessageAttr"
            | "PreUseInterruptAttr"
            | "RespectAttackTypeImmunityAttr"
            | "IgnoreOpponentStatStagesAttr"
            | "HighCritAttr"
            | "CritOnlyAttr"
            | "FixedDamageAttr"
            | "UserHpDamageAttr"
            | "TargetHalfHpDamageAttr"
            | "MatchHpAttr"
            | "CounterDamageAttr"
            | "CounterRedirectAttr"
            | "LevelDamageAttr"
            | "RandomLevelDamageAttr"
            | "ModifiedDamageAttr"
            | "SurviveDamageAttr"
            | "RecoilAttr"
            | "SacrificialAttr"
            | "SacrificialAttrOnHit"
            | "HalfSacrificialAttr"
            | "AddSubstituteAttr"
            | "HealAttr"
            | "PartyStatusCureAttr"
            | "FlameBurstAttr"
            | "SacrificialFullRestoreAttr"
            | "OverrideWeatherMultiplierAttr"
            | "WeatherHealAttr"
            | "PlantHealAttr"
            | "SandHealAttr"
            | "BoostHealAttr"
            | "HealOnAllyAttr"
            | "HitHealAttr"
            | "IncrementMovePriorityAttr"
            | "MultiHitAttr"
            | "ChangeMultiHitTypeAttr"
            | "WaterShurikenMultiHitTypeAttr"
            | "StatusEffectAttr"
            | "MultiStatusEffectAttr"
            | "PsychoShiftEffectAttr"
            | "StealHeldItemChanceAttr"
            | "RemoveHeldItemAttr"
            | "EatBerryAttr"
            | "StealEatBerryAttr"
            | "HealStatusEffectAttr"
            | "BypassSleepAttr"
            | "BypassBurnDamageReductionAttr"
            | "WeatherChangeAttr"
            | "ClearWeatherAttr"
            | "TerrainChangeAttr"
            | "ClearTerrainAttr"
            | "OneHitKOAttr"
            | "InstantChargeAttr"
            | "WeatherInstantChargeAttr"
            | "OverrideMoveEffectAttr"
            | "DelayedAttackAttr"
            | "AwaitCombinedPledgeAttr"
            | "StatStageChangeAttr"
            | "SecretPowerAttr"
            | "PostVictoryStatStageChangeAttr"
            | "AcupressureStatStageChangeAttr"
            | "GrowthStatStageChangeAttr"
            | "CutHpStatStageBoostAttr"
            | "OrderUpStatBoostAttr"
            | "CopyStatsAttr"
            | "InvertStatsAttr"
            | "ResetStatsAttr"
            | "SwapStatStagesAttr"
            | "HpSplitAttr"
            | "VariablePowerAttr"
            | "LessPPMorePowerAttr"
            | "MovePowerMultiplierAttr"
            | "BeatUpAttr"
            | "DoublePowerChanceAttr"
            | "ConsecutiveUsePowerMultiplierAttr"
            | "ConsecutiveUseDoublePowerAttr"
            | "ConsecutiveUseMultiBasePowerAttr"
            | "WeightPowerAttr"
            | "ElectroBallPowerAttr"
            | "GyroBallPowerAttr"
            | "LowHpPowerAttr"
            | "CompareWeightPowerAttr"
            | "HpPowerAttr"
            | "OpponentHighHpPowerAttr"
            | "TurnDamagedDoublePowerAttr"
            | "MagnitudePowerAttr"
            | "AntiSunlightPowerDecreaseAttr"
            | "FriendshipPowerAttr"
            | "RageFistPowerAttr"
            | "PositiveStatStagePowerAttr"
            | "PunishmentPowerAttr"
            | "PresentPowerAttr"
            | "WaterShurikenPowerAttr"
            | "SpitUpPowerAttr"
            | "SwallowHealAttr"
            | "MultiHitPowerIncrementAttr"
            | "LastMoveDoublePowerAttr"
            | "CombinedPledgePowerAttr"
            | "CombinedPledgeStabBoostAttr"
            | "RoundPowerAttr"
            | "CueNextRoundAttr"
            | "StatChangeBeforeDmgCalcAttr"
            | "SpectralThiefAttr"
            | "VariableAtkAttr"
            | "TargetAtkUserAtkAttr"
            | "DefAtkAttr"
            | "VariableDefAttr"
            | "DefDefAttr"
            | "VariableAccuracyAttr"
            | "ThunderAccuracyAttr"
            | "StormAccuracyAttr"
            | "AlwaysHitMinimizeAttr"
            | "ToxicAccuracyAttr"
            | "BlizzardAccuracyAttr"
            | "VariableMoveCategoryAttr"
            | "PhotonGeyserCategoryAttr"
            | "TeraMoveCategoryAttr"
            | "TeraBlastPowerAttr"
            | "ShellSideArmCategoryAttr"
            | "VariableMoveTypeAttr"
            | "FormChangeItemTypeAttr"
            | "TechnoBlastTypeAttr"
            | "AuraWheelTypeAttr"
            | "RagingBullTypeAttr"
            | "IvyCudgelTypeAttr"
            | "WeatherBallTypeAttr"
            | "TerrainPulseTypeAttr"
            | "HiddenPowerTypeAttr"
            | "TeraBlastTypeAttr"
            | "TeraStarstormTypeAttr"
            | "MatchUserTypeAttr"
            | "CombinedPledgeTypeAttr"
            | "NeutralDamageAgainstFlyingTypeAttr"
            | "IceNoEffectTypeAttr"
            | "FlyingTypeMultiplierAttr"
            | "MoveTypeChartOverrideAttr"
            | "FreezeDryAttr"
            | "OneHitKOAccuracyAttr"
            | "HitsSameTypeAttr"
            | "SheerColdAccuracyAttr"
            | "MissEffectAttr"
            | "NoEffectAttr"
            | "TypelessAttr"
            | "BypassRedirectAttr"
            | "FrenzyAttr"
            | "SemiInvulnerableAttr"
            | "LeechSeedAttr"
            | "FallDownAttr"
            | "GulpMissileTagAttr"
            | "JawLockAttr"
            | "CurseAttr"
            | "RemoveBattlerTagAttr"
            | "FlinchAttr"
            | "ConfuseAttr"
            | "RechargeAttr"
            | "TrapAttr"
            | "ProtectAttr"
            | "MessageAttr"
            | "RemoveAllSubstitutesAttr"
            | "HitsTagAttr"
            | "HitsTagForDoubleDamageAttr"
            | "AddArenaTagAttr"
            | "RemoveArenaTagsAttr"
            | "AddArenaTrapTagAttr"
            | "AddArenaTrapTagHitAttr"
            | "RemoveArenaTrapAttr"
            | "RemoveScreensAttr"
            | "SwapArenaTagsAttr"
            | "AddPledgeEffectAttr"
            | "RevivalBlessingAttr"
            | "ForceSwitchOutAttr"
            | "ChillyReceptionAttr"
            | "RemoveTypeAttr"
            | "CopyTypeAttr"
            | "CopyBiomeTypeAttr"
            | "ChangeTypeAttr"
            | "AddTypeAttr"
            | "FirstMoveTypeAttr"
            | "CallMoveAttr"
            | "RandomMoveAttr"
            | "RandomMovesetMoveAttr"
            | "NaturePowerAttr"
            | "CopyMoveAttr"
            | "RepeatMoveAttr"
            | "ReducePpMoveAttr"
            | "AttackReducePpMoveAttr"
            | "MovesetCopyMoveAttr"
            | "SketchAttr"
            | "AbilityChangeAttr"
            | "AbilityCopyAttr"
            | "AbilityGiveAttr"
            | "SwitchAbilitiesAttr"
            | "SuppressAbilitiesAttr"
            | "TransformAttr"
            | "SwapStatAttr"
            | "ShiftStatAttr"
            | "AverageStatsAttr"
            | "MoneyAttr"
            | "DestinyBondAttr"
            | "AddBattlerTagIfBoostedAttr"
            | "StatusIfBoostedAttr"
            | "VariableTargetAttr"
            | "AfterYouAttr"
            | "ForceLastAttr"
            | "ResistLastMoveTypeAttr"
            | "ExposedMoveAttr"
            | "PartingShotAttr"

      Parameters

      • attr: T

        The attribute to check against

      Returns this is MoveAttrMap[T]

      Whether the attribute is an instance of the given type.

      Used to avoid requring the caller to have imported the specific attribute type, avoiding circular dependencies.