BluRosie / hg-engine

complete heart gold engine
175 stars 99 forks source link

Order of Move Success Checks needs to be modernized #313

Open Aeliko opened 2 months ago

Aeliko commented 2 months ago

https://www.smogon.com/forums/threads/sword-shield-battle-mechanics-research.3655528/post-8548957

"We can use this data to determine, for example, what effects will and won't change a user's typing with Libero, where PP is deducted from the move, where Protect stops an effect before revealing an ability/item, what checks are blocked before/after Substitute, and so on."

Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
1 Recharge from a move that requires recharging [Pokemon] must recharge! No N/A e.g. Hyper Beam, Blast Burn, etc. ov12_0224B528
2 Sleep turn [Pokemon] is fast asleep. Yes N/A Check is skipped is using Sleep Talk or Snore ov12_0224B528
Waking up from sleep [Pokemon] woke up! N/A N/A ov12_0224B528
Continued to be frozen [Pokemon] is frozen solid! Yes N/A Check is skipped if using a move that auto-thaws, e.g. Flare Blitz ov12_0224B528
Thawing from freeze naturally [Pokemon] thawed out! N/A N/A Check is skipped if using a move that auto-thaws, e.g. Flare Blitz ov12_0224B528
3 No PP remaining for move [Pokemon] used [move]! But there was no PP left for the move! Yes N/A The trainer throws out their arm. ov12_0224C5F8
G7_1 If move is Z powered, display Z dance, and if move is status, APPLY Z effect
4 Truant (Truant triggers) [Pokemon] is loafing around! Yes N/A ov12_0224B528
5 Focus Punch loses focus [Pokemon] lost its focus and couldn't move! Yes N/A effect_script_0170_HIT_LAST_WHIFF_IF_HIT.s, subscript_0007_MISSED.s
6 Flinch [Pokemon] flinched and couldn't move! Yes N/A ov12_0224B528
7 Disabled [Pokemon]'s [move] is disabled! Yes N/A ov12_0224B528
G7_2 Heal Block ov12_0224B528 Could test using Psychic Noise
8 Gravity [Pokemon] can't use [move] because of gravity! Yes N/A ov12_0224B528
Throat Chop The effects of Throat Chop prevent [Pokemon] from using certain moves! Yes N/A Modernise
9 Using a move you're not Choice locked into [Pokemon] used move! But it failed! Yes N/A Choice item lock glitch is easiest to set this up; Choice lock -> Magic Room -> Trick / Knock Off choice item -> undo Magic Room Modernise
10 Taunt [Pokemon] can't use [move] after the taunt! Yes N/A ov12_0224B528
11 Imprison [Pokemon] can't use its sealed [move]! Yes N/A ov12_0224B528
12 Self-hit confusion damage [Pokemon] is confused! (if it hits itself) It hurt itself in its confusion! Yes N/A ov12_0224B528
Confusion wearing off [Pokemon] snapped out of its confusion! N/A N/A ov12_0224B528
13 Full paralysis [Pokemon] is paralyzed! It can't move! Yes N/A ov12_0224B528
14 Infatuation [Pokemon] is immobilized by love! Yes N/A ov12_0224B528
Infatuation check [Pokemon] is in love with [Pokemon that originally infatuated]! N/A N/A ov12_0224B528
15 Sleep Talk / Snore sleep announcement [Pokemon] is fast asleep. N/A N/A effect_script_0092_DAMAGE_WHILE_ASLEEP.s
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
16 Submoves N/A Replace the current move and repeat check 8. Submove announcement guarantees PP deduction. The trainer throws out their arm in PvP battles except for Metronome and Nature Power.
Copycat [Pokemon] used Copycat! (check 8 begins) N/A N/A effect_script_0242_USE_LAST_USED_MOVE.s
Metronome [Pokemon] used Metronome! Waggling a finger let it use [move]! (check 8 begins) N/A N/A effect_script_0083_CALL_RANDOM_MOVE.s
Nature Power [Pokemon] used Nature Power! Nature Power turned into [move]! (check 8 begins) N/A N/A effect_script_0173_NATURE_POWER.s
Sleep Talk submove [Pokemon] used Sleep Talk! (check 8 begins) N/A N/A effect_script_0097_USE_RANDOM_LEARNED_MOVE_SLEEP.s
Sleep Talk with no eligible moves to call But it failed! Yes N/A With animations off, it also plays "[Pokemon] used Sleep Talk!" between the messages. Regardless of animations, check 8 does NOT begin. effect_script_0097_USE_RANDOM_LEARNED_MOVE_SLEEP.s
17 Autothaw freeze from certain moves [Pokemon]'s [move] melted the ice! N/A N/A All checks that can be run will run for the autothaw move. For example, a Pokemon using Flare Blitz while frozen could be prevented from thawing because of infatuation, Imprison, etc. ov12_0224B528
18 Stance Change (Ability triggers) Changed to [Blade / Shield] Forme! N/A N/A ServerWazaBefore
19 Move is announced [Pokemon] used [move]! N/A N/A Move announcement guarantees PP deduction. The trainer throws out their arm.
20 Check for move type change from type-changing Ability (non-Max Move) N/A N/A N/A GetAdjustedMoveTypeBasics
21 Set move type for Multi-Attack / Techno Blast Terrain Pulse / Weather Ball N/A N/A N/A This will override move type changes from check 18. GetDynamicMoveType
22 Check for move type change from Electrify / Plasma Fists N/A N/A N/A Modernise
23 Check for move type change from type-changing Ability (Max Move) N/A N/A N/A Modernise
24 Set random target for multi-turn moves like Outrage N/A N/A N/A ov12_022506D4
Set random target for single-target submoves (e.g. Sleep Talk calling single-target move like Scald) N/A N/A N/A ov12_022506D4 (?)
Set random target for single-target move if the player timed out on move selection N/A N/A N/A I don’t think Link Battles have timers in G4
Set random target for Ghost-type Curse N/A N/A N/A Modernise Ghost-type Pokémon are no longer able to choose targets for Curse in a Double Battle, and will always attempt to inflict the curse on a random opponent.
25 Check for target redirection via Lightning Rod / Storm Drain (Ability triggers) [Pokemon] took the attack! N/A Raw Speed with non-RNG speed tie Check is skipped for effects that ignore redirection. ov12_02250A18
26 Check for target redirection via Follow Me / Rage Powder N/A N/A First use of Follow Me / Rage Powder takes precedence Check is skipped for effects that ignore redirection. ov12_022506D4
27 Deduct the appropriate amount of PP from the move N/A N/A N/A Can vary due to Pressure.
28 If user has a Choice item or Gorilla Tactics, lock into the chosen move N/A N/A Choice item lock > Gorilla Tactics lock Modernise
29 Burn Up when user is not Fire-type But it failed! Yes N/A A frozen Pokemon using non-Fire type Burn Up will not thaw; it will just play "frozen solid" without consuming PP. Modernise
30 Primal Weather Yes N/A Hacking-only
Desolate Land stopping Water-type moves The Water-type attack evaporated in the extremely harsh sunlight! MoveCheckDamageNegatingAbilities
Primordial Sea stopping Fire-type moves The Fire-type attack fizzled out in the heavy rain! MoveCheckDamageNegatingAbilities
31 Micle Berry's accuracy check consumed N/A N/A N/A BattleSystem_CheckMoveHit
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
32 Move failure checks, part 1
Aura Wheel when user isn't Morpeko But [Pokemon] can't use the move! Yes N/A Modernise
Aurora Veil when it is not hailing But it failed! Yes N/A Modernise
Clangorous Soul when user lacks HP to execute the move But it failed! Yes N/A Modernise
Counter / Mirror Coat / Metal Burst when user hasn't been damaged But it failed! Yes N/A effect_script_0089_COUNTER.s, effect_script_0144_MIRROR_COAT.s, effect_script_0227_METAL_BURST.s
Destiny Bond when user has "Destiny Bond" Y-info volatile But it failed! Yes N/A Modernise
Fake Out / First Impression / Mat Block after user has already performed an action But it failed! Yes N/A effect_script_0158_ALWAYS_FLINCH_FIRST_TURN_ONLY.s
Fling with no item But it failed! Yes N/A effect_script_0233_FLING.s
Follow Me / Rage Powder in singles But it failed! Yes N/A Modernise
Future Sight / Doom Desire into target that already has future attack But it failed! Yes N/A effect_script_0148_HIT_IN_3_TURNS.s
Last Resort when user has not used all its other moves once or user does not have Last Resort in its moveslot But it failed! Yes N/A Easiest way to trigger "doesn't have Last Resort in moveslot" failure is with Copycat effect_script_0246_FAIL_IF_NOT_USED_ALL_OTHER_MOVES.s
No Retreat when user has Can't Escape flag set by No Retreat But it failed! Yes N/A The flag must be set by No Retreat; Mean Look, Block, etc. won't count and do not place any restriction on move usage. Modernise
Poltergeist when the target does not have an item But it failed! Yes N/A Modernise
Protecting move when user failed to repeat a successive protecting move But it failed! Yes N/A subscript_0087_PROTECT.s
Protecting move when move is the last used in the turn But it failed! Yes N/A subscript_0087_PROTECT.s
Rest while user is already asleep But it failed! Yes N/A Called via Sleep Talk / Comatose effect_script_0037_RECOVER_HEALTH_AND_SLEEP.s
Sucker Punch when target doesn't have an eligible move pending But it failed! Yes N/A effect_script_0248_HIT_FIRST_IF_TARGET_ATTACKING.s
Sleep Talk / Snore while not asleep But it failed! Yes N/A effect_script_0097_USE_RANDOM_LEARNED_MOVE_SLEEP.s
Steel Roller when there is no Terrain But it failed! Yes N/A Modernise
Stockpile with 3 Stockpiles already But it failed! Yes N/A effect_script_0160_STOCKPILE.s, subscript_0124_STOCKPILE.s
Stuff Cheeks when user doesn't have a Berry But it failed! Yes N/A This has to be done mid-turn with Trick, otherwise it blocks at move selection with "It can't use the move because it doesn't have a Berry!" Modernise
Swallow / Spit Up with 0 Stockpiles But it failed! Yes N/A effect_script_0161_SPIT_UP.s, effect_script_0162_SWALLOW.s
Teleport with nothing to switch to But it failed! Yes N/A Modernise
Weight moves into Dynamax [Pokemon] shook its head. It seems like it can't use this move... Yes N/A Does not reveal target, because it announces the user's name Modernise
33 Rest while user is at full HP [Pokemon]'s HP is full! Yes N/A subscript_0055_REST.s
34 Rest while user has Insomnia / Vital Spirit (Ability triggers) [Pokemon] stayed awake! Yes N/A Only for sure happens before Rest vs. Uproar and after Rest at full HP subscript_0055_REST.s
35 Ability failures, part 1 Raw Speed with non-RNG speed tie
Damp (Ability triggers) [Pokemon] cannot use [move]! Yes effect_script_0007_HALVE_DEFENSE.s
Dazzling / Queenly Majesty (Ability triggers) [Pokemon] cannot use [move]! Yes Modernise
36 Interruptible moves
Future Sight / Doom Desire [Pokemon] foresaw an attack! No N/A The move checks end here. move_script_0248_FUTURE_SIGHT.s
Pledge move combos [Pokemon] is waiting for [ally Pokemon]'s move... Yes N/A The move checks end here, and the ally starts over at the start of the checks again. Modernise
The two moves have become one! It's a combined move! N/A N/A If the second user of the Pledge combo passed all checks up to this point. Modernise
37 Libero / Protean (Ability triggers) [Pokemon]'s type changed to [move type]! N/A N/A Does not trigger if user is of same type as move ServerWazaBefore
38 Charging move message Varies on move N/A N/A Power Herb triggers here; Skull Bash Defense boost triggers here; Meteor Beam Sp. Atk boost triggers here effect_script_0026_BIDE.s, effect_script_0039_CHARGE_TURN_HIGH_CRIT.s, effect_script_0075_CHARGE_TURN_HIGH_CRIT_FLINCH.s, effect_script_0145_CHARGE_TURN_DEF_UP.s, effect_script_0151_CHARGE_TURN_SUN_SKIPS.s, effect_script_0155_FLY.s, effect_script_0255_DIVE.s, effect_script_0256_DIG.s, effect_script_0263_BOUNCE. seffect_script_0272_SHADOW_FORCE.s, effect_script_0318_CHARGE_TURN_ATK_SP_ATK_SPEED_UP_2.s
G7_3 Check if move is STOLEN by a pending Snatch (go back to step 12 for the Pokemon who snatched it)
39 Set flag to lose 100% HP from Explosion / Self-Destruct N/A N/A N/A Does not fail the move from this check alone, and does not reduce HP until before damage calculation. effect_script_0007_HALVE_DEFENSE.s
40 Failure due to no target for move or target is self when it shouldn't be But it failed! Yes N/A Example of target being itself when it shouldn't be: Ally Switch + attacking an ally. Dragon Darts and most status moves skip this check.
41 Set flag to lose 50% HP from Steel Beam N/A N/A N/A Does not fail the move from this check alone, and does not reduce HP until before damage calculation. Modernise
G7_4 Sky Drop: target is a teammate
42 Semi-invulnerability [Pokemon] avoided the attack! Yes Ally -> opponent's left slot -> opponent's right slot first turn of Fly, Phantom Force, etc. BattleSystem_CheckMoveEffect
43 Psychic Terrain [Pokemon] is protected by the Psychic Terrain! Yes Opponent's left slot -> opponent's right slot MoveCheckDamageNegatingAbilities
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
44 Teammate Protection Effects First use of Quick Guard / Wide Guard / Crafty Shield takes precedence
Quick Guard Quick Guard protected [Pokemon]! No Modernise
Wide Guard Wide Guard protected [Pokemon]! No Modernise
Crafty Shield Crafty Shield protected [Pokemon]! No Modernise
45 Protect and equivalents (except Max Guard) [Pokemon] protected itself! No Ally -> opponent's left slot -> opponent's right slot Baneful Bunker, Detect, King's Shield, Obstruct, Protect, and Spiky Shield all belong here. BattleSystem_CheckMoveEffect (?)
46 Mat Block [move] was blocked by the kicked-up mat! No Impossible to tell Target is revealed via animation Modernise
47 Max Guard [Pokemon] protected itself! No Opponent's left slot -> opponent's right slot Modernise
48 Magic Coat [Pokemon] bounced the [move] back! Yes Ally -> opponent's left slot -> opponent's right slot Called moves meeting a fail condition will NOT double Stomping Tantrum.

If the move is a spread move, set a flag for Magic Coat to trigger after all other targets have been resolved.
ServerWazaKoyuuCheck
G7_5 If move is Telekinesis, check for failure vs. Diglett / Dugtrio / Sandygast /Palossand / Mega Gengar, Smacked Down, or Ingrained target
49 Magic Bounce (Ability triggers) [Pokemon] bounced the [move] back! Yes Ally -> opponent's left slot -> opponent's right slot Called moves meeting a fail condition will NOT double Stomping Tantrum.

If the move is a spread move, set a flag for Magic Bounce to trigger after all other targets have been resolved.
Modernise
50 Ability failures, part 2 Ally -> opponent's left slot -> opponent's right slot
Dry Skin (Ability triggers) It doesn't affect [Pokemon]... Yes If at full HP MoveCheckDamageNegatingAbilities
(Ability triggers) [Pokemon] had its HP restored. Yes If not at full HP MoveCheckDamageNegatingAbilities
Flash Fire (Ability triggers) The power of [Pokemon]'s Fire-type moves rose! Yes If it does not have a Flash Fire boost MoveCheckDamageNegatingAbilities
(Ability triggers) It doesn't affect [Pokemon]... Yes If it already has a Flash Fire boost MoveCheckDamageNegatingAbilities
Lightning Rod (Ability triggers) [Pokemon]'s Sp. Atk rose! Yes If not at +6 Sp. Atk MoveCheckDamageNegatingAbilities
(Ability triggers) It doesn't affect [Pokemon]... Yes If at +6 Sp. Atk MoveCheckDamageNegatingAbilities
Overcoat (Ability triggers) It doesn't affect [Pokemon]… Yes Modernise
Sap Sipper (Ability triggers) [Pokemon]'s Attack rose! Yes MoveCheckDamageNegatingAbilities
Soundproof (Ability triggers) It doesn't affect [Pokemon]... Yes MoveCheckDamageNegatingAbilities
Storm Drain (Ability triggers) [Pokemon]'s Sp. Atk rose! Yes If not at +6 Sp. Atk MoveCheckDamageNegatingAbilities
(Ability triggers) It doesn't affect [Pokemon]... Yes If at +6 Sp. Atk MoveCheckDamageNegatingAbilities
Telepathy (Ability triggers) [Pokemon] can't be hit by attacks from its ally Pokémon! Yes CalcAccuracy Seems like wrong implementation in hg-engine
Volt Absorb (Ability triggers) It doesn't affect [Pokemon]... Yes If at full HP MoveCheckDamageNegatingAbilities
(Ability triggers) [Pokemon] had its HP restored. Yes If not at full HP MoveCheckDamageNegatingAbilities
Water Absorb (Ability triggers) It doesn't affect [Pokemon]... Yes If at full HP MoveCheckDamageNegatingAbilities
(Ability triggers) [Pokemon] had its HP restored. Yes If not at full HP MoveCheckDamageNegatingAbilities
Wonder Guard (Ability triggers) It doesn't affect [Pokemon]... Yes ServerDoTypeCalcMod
51 Type chart immunity It doesn't affect [Pokemon]... Yes Ally -> opponent's left slot -> opponent's right slot The only status move checked here is Thunder Wave vs. Ground-types ServerDoTypeCalcMod
52 Levitate Ground-type immunity (Ability triggers) It doesn't affect [Pokemon]... Yes Ally -> opponent's left slot -> opponent's right slot ServerDoTypeCalcMod
53 Air Balloon / Magnet Rise Ground-type immunity It doesn't affect [Pokemon]... Yes Ally -> opponent's left slot -> opponent's right slot ServerDoTypeCalcMod Wrong implementation
54 Safety Goggles [Pokemon] is not affected by [move] thanks to its Safety Goggles! Yes Opponent's left slot -> opponent's right slot Modernise
55 Ability failures, part 3
Bulletproof (Ability triggers) It doesn't affect [Pokémon]… Yes N/A MoveCheckDamageNegatingAbilities
Sticky Hold against Trick / Switcheroo / Corrosive Gas (Ability triggers) It doesn't affect [Pokémon]… Yes Ally -> opponent's left slot -> opponent's right slot Modernise
56 Type-based move condition immunities, part 1 Opponent's left slot -> opponent's right slot
Dark-type Prankster immunity It doesn't affect [Pokemon]... Yes CalcAccuracy
Ghost-type immunity to trapping moves It doesn't affect [Pokemon]... Yes Block / Mean Look / Spider Web / Octolock Modernise
Grass-type powder immunity It doesn't affect [Pokemon]... Yes CalcAccuracy
Ice-type immunity to Sheer Cold It doesn't affect [Pokemon]... Yes ServerDoTypeCalcMod
G7_6 Sky Drop on the way down: Flying type
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
57 Move failure checks, part 2
Attract into a target with same gender / genderless It doesn't affect [Pokemon]... Yes N/A subscript_0106_INFATUATE.s
G7_7 If move is Captivate, check for gender immunity
Torment into Dynamax It doesn't affect [Pokemon]... Yes N/A Modernise
Venom Drench when target is not poisoned But it failed! Yes Stat failure success check Modernise
58 Move failure checks, part 3
Attract into a target already infatuated But it failed! Yes N/A subscript_0106_INFATUATE.s
Clangorous Soul / No Retreat with all stats maxed out [Pokemon]'s [stat] won't go any higher! (repeat for Atk/Def/Sp.Atk/Sp.Def/Speed) Yes N/A Modernise
Coaching in singles or when there is no ally target available in doubles But it failed! Yes N/A Modernise
Dream Eater when target is awake It doesn't affect [Pokemon]... Yes N/A effect_script_0008_RECOVER_DAMAGE_SLEEP.s
Endeavor when target has equal or less HP than the user It doesn't affect [Pokemon]... Yes N/A effect_script_0189_SET_HP_EQUAL_TO_USER.s
Ingrain when user already has Ingrain But it failed! Yes N/A effect_script_0181_GROUND_TRAP_USER_CONTINUOUS_HEAL.s
Leech Seed when target already has Leech Seed But it failed! Yes N/A subscript_0068_LEECH_SEED_START.s
OHKO moves against a target with higher level than the user / target is Dynamaxed [Pokemon] is unaffected! Yes N/A Modernise
Perish Song when all targets have Perish Song But it failed! Yes N/A If another failure condition would prevent success (e.g. semi-invulernability), both failure messages play. subscript_0101_PERISH_SONG_START.s
Status move into target that already has that status [Pokemon] is already [asleep / burned / paralyzed / poisoned / confused]! Yes Ally -> opponent's left slot -> opponent's right slot Includes Toxic into regular poison and vice versa subscript_0018_FALL_ASLEEP.s, subscript_0025_BURN.s, subscript_0031_PARALYZE.s, subscript_0022_POISON.s, subscript_0047_BADLY_POISON.s, subscript_0037_CONFUSE.s
Status move into target that already has another major status condition (but not the same one) But it failed! Yes Two "But it failed!" occur; highly probable to be opponent's left slot -> opponent's right slot subscript_0018_FALL_ASLEEP.s, subscript_0025_BURN.s, subscript_0031_PARALYZE.s, subscript_0022_POISON.s, subscript_0047_BADLY_POISON.s, subscript_0037_CONFUSE.s Not sure
Stat changing moves that can't go any higher [Pokemon]'s [stat] won't go any higher! Yes N/A Individual subscripts
Stat changing moves that can't go any lower [Pokemon]'s [stat] won't go any lower! Yes Stat failure success check Individual subscripts
Stuff Cheeks with Defense maxed out [Pokemon]'s Defense won't go any higher! Yes N/A Modernise
Torment when target already has Torment But it failed! Yes N/A subscript_0127_TORMENT_START.s
Worry Seed when target has Insomnia / Truant It doesn't affect [Pokemon]... Yes N/A subscript_0167_GIVE_TARGET_INSOMNIA.s
Yawn into target with status condition / already has Yawn But it failed! Yes N/A subscript_0141_YAWN.s
G7_8 Synchronoise: non-matching type
59 Type-based move condition immunities part 2
Electric-type paralysis immunity It doesn't affect [Pokemon]... Yes N/A subscript_0031_PARALYZE.s Correct flags set?
Fire-type burn immunity It doesn't affect [Pokemon]... Yes N/A subscript_0025_BURN.s Correct flags set?
Grass-type Leech Seed immunity It doesn't affect [Pokemon]... Yes N/A subscript_0068_LEECH_SEED_START.s Correct flags set?
Poison / Steel-type poison / badly poison immunity It doesn't affect [Pokemon]... Yes Opponent's left slot -> opponent's right slot Corrosion bypasses this check subscript_0022_POISON.s, subscript_0047_BADLY_POISON.s Correct flags set?
60 Uproar stopping a sleep move other than Rest But [Pokemon] can't sleep in an uproar! Yes N/A subscript_0018_FALL_ASLEEP.s
Uproar stopping Rest But the uproar kept [Pokemon] awake! No N/A subscript_0055_REST.s
61 Safeguard [Pokemon] is protected by Safeguard! Yes Ally -> opponent's left slot -> opponent's right slot subscript_0018_FALL_ASLEEP.s, subscript_0025_BURN.s, subscript_0031_PARALYZE.s, subscript_0022_POISON.s, subscript_0047_BADLY_POISON.s, subscript_0037_CONFUSE.s, subscript_0141_YAWN.s
62 Electric Terrain blocking sleep [Pokemon] is protected by the Electric Terrain! Yes N/A subscript_0018_FALL_ASLEEP.s, subscript_0141_YAWN.s Wrong text
Electric Terrain blocking Rest [Pokemon] is protected by the Electric Terrain! No N/A subscript_0055_REST.s Wrong text
Misty Terrain blocking status [Pokemon] surrounds itself with a protective mist! Yes Ally -> opponent's left slot -> opponent's right slot subscript_0018_FALL_ASLEEP.s, subscript_0025_BURN.s, subscript_0031_PARALYZE.s, subscript_0022_POISON.s, subscript_0047_BADLY_POISON.s, subscript_0037_CONFUSE.s, subscript_0141_YAWN.s Wrong text
Misty Terrain blocking Rest [Pokemon] surrounds itself with a protective mist! No N/A subscript_0055_REST.s Wrong text
63 Substitute blocking stat drop / Decorate It doesn't affect [Pokemon]... Yes Stat failure success check Individual subscripts, Modernise Not sure
64 Mist [Pokemon] is protected by the mist! Yes Stat failure success check Not sure
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
65 Ability failures, part 4
Stat-based failures Stat failure success check
Big Pecks (Ability triggers) [Pokemon]'s Defense was not lowered! Yes If the move is Tickle, first attack will drop, then Big Pecks will prevent the Defense drop. Individual subscripts, Modernise Not sure
Clear Body (Ability triggers) [Pokemon]'s stats were not lowered! Yes Individual subscripts, Modernise Not sure
Flower Veil (Ability triggers) [Pokemon] surrounded itself with a veil of petals! Yes Individual subscripts, Modernise Not sure
Full Metal Body (Ability triggers) [Pokemon]'s stats were not lowered! Yes Individual subscripts, Modernise Not sure
Hyper Cutter (Ability triggers) [Pokemon]'s Attack was not lowered! Yes If the move is Tickle, first Hyper Cutter will block the Attack drop, then Defense will drop. Individual subscripts, Modernise Not sure
Keen Eye (Ability triggers) [Pokemon]'s accuracy was not lowered! Yes Individual subscripts, Modernise Not sure
White Smoke (Ability triggers) [Pokemon]'s stats were not lowered! Yes Individual subscripts, Modernise Not sure
Status condition-based failures Raw Speed with non-RNG speed tie
Comatose (Ability triggers) It doesn't affect [Pokemon]… Yes Hacking only Individual subscripts, Modernise Not sure
Flower Veil (Ability triggers) [Pokemon] surrounded itself with a veil of petals! Yes Individual subscripts, Modernise Not sure
Immunity (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Insomnia (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Leaf Guard (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Leaf Guard (Rest) (Ability triggers) It doesn't affect [Pokemon]… No Individual subscripts, Modernise Not sure
Limber (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Oblivious (Ability triggers) It doesn't affect [Pokémon]… Yes Individual subscripts, Modernise Not sure
Own Tempo (Ability triggers) [Pokemon] cannot be confused! Yes Individual subscripts, Modernise Not sure
Pastel Veil (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Shields Down (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Shields Down (Rest) (Ability triggers) It doesn't affect [Pokemon]… No Individual subscripts, Modernise Not sure
Sweet Veil (Ability triggers) [Pokemon] can't fall asleep due to a veil of sweetness! Yes Individual subscripts, Modernise Not sure
Sweet Veil (Rest) (Ability triggers) [Pokemon] can't fall asleep due to a veil of sweetness! No Individual subscripts, Modernise Not sure
Vital Spirit (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Water Bubble (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Water Veil (Ability triggers) It doesn't affect [Pokemon]… Yes Individual subscripts, Modernise Not sure
Other
Aroma Veil (Attract, Torment) (Ability triggers) [Pokémon] is protected by an aromatic veil! Yes Individual subscripts, Modernise Not sure
Sturdy against OHKO moves (Ability triggers) It doesn't affect [Pokemon]… Yes N/A Individual subscripts, Modernise Not sure
66 Move accuracy [Pokemon] avoided the attack! Yes Ally -> opponent's left slot -> opponent's right slot CalcAccuracy
67 Substitute blocking effect other than stat drop But it failed! Yes Consolidated into one "But it failed!" message List of effects tested: attempting to inflict a major status condition, Acupressure, Block / Mean Look / Spider Web / Octolock, Electrify / Quash, Flower Shield, Forest's Curse / Trick-or-Treat / Soak / Magic Powder, Gastro Acid, Guard Split / Power Split, Heal Pulse, Leech Seed, Lock-On, Mind Reader, Pain Split, Psycho Shift, Purify, Simple Beam, Tar Shot, Topsy-Turvy, Transform, Worry Seed Individual subscripts, Modernise Not sure
68 Mirror Armor (Ability triggers) (attempts to lower stats of the Pokemon it was targeted by) No Opponent's left slot -> opponent's right slot Modernise
69 Roar / Whirlwind into Dynamaxed target The move was blocked by the power of Dynamax! No N/A Modernise
70 Roar / Whirlwind into Suction Cups target (Ability triggers) [Pokemon] is anchored in place with its suction cups! No N/A subscript_0091_FORCE_TARGET_TO_SWITCH_OR_FLEE.s Wrong text
71 Roar / Whirlwind into target with Ingrain [Pokemon] is anchored in place with its roots! No N/A subscript_0091_FORCE_TARGET_TO_SWITCH_OR_FLEE.s Wrong text
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
72 Move failure checks, part 4
Ability failures
Entrainment failures But it failed! No N/A Dynamax, same Ability, target / user cannot meet conditions for Entrainment, used into Truant Modernise
Gastro Acid into already has Gastro Acid / unchangeable ability But it failed! No N/A subscript_0163_SUPPRESS_TARGET_ABILITY.s Modernise
Role Play when target has same ability as user or cannot take target's Ability But it failed! No N/A effect_script_0178_COPY_ABILITY.s, subscript_0135_COPY_ABILITY.s Unify checks
Simple Beam into target that has Simple / unreplaceable Ability But it failed! No N/A Including into Truant Modernise
Skill Swap when target or user cannot swap Ability / target is Dynamaxed But it failed! No N/A subscript_0143_EXCHANGE_ABILITIES.s
Worry Seed when target has unreplaceable Ability But it failed! No N/A Not including into Insomnia or Truant subscript_0167_GIVE_TARGET_INSOMNIA.s
Full HP Failures
Heal Pulse / Floral Healing into target at full HP [Pokemon]'s HP is full! No N/A Modernise
Jungle Healing when both targets are at full HP and have no status conditions But it failed! No N/A Always heals from user -> ally if multiple heals necessary; otherwise just fails or heals once Modernise
Life Dew into target at full HP [Pokemon]'s HP is full! No N/A Always heals from user -> ally; always plays both Pokemon healing or failing to heal Modernise
Pollen Puff into target at full HP It doesn't affect [Pokemon]... No N/A Modernise
Self-target recovery moves when user has full HP [Pokemon]'s HP is full! No N/A subscript_0111_RECOVER_HP.s
Stat-related failures
Belly Drum when user is at less than 50% HP or already at +6 Attack But it failed! No N/A subscript_0120_BELLY_DRUM.s
Flower Shield with no Grass-type targets But it failed! No User -> ally -> opponent's left slot -> opponent's right slot Modernise
Strength Sap into target at -6 Attack But it failed! No N/A Modernise
Swagger / Flatter when target is already at +6 and confused [Pokemon]'s [stat] won't go any higher! No N/A There is no failure message for already being confused.
Topsy-Turvy when target has no stat changes But it failed! No N/A Modernise
Type failures
Conversion when user is already the same type as its first move But it failed! No N/A
Conversion 2 into target that hasn't moved, or into target that most recently used Struggle But it failed! No N/A
Reflect Type when user is same type as target But it failed! No N/A
Soak into a pure Water-type / Magic Powder into a pure Psychic-type / Soak | Magic Powder into Silvally with RKS System But it failed! No N/A No animation plays for Soak failure.
Trick-or-Treat into a Ghost-type / Forest's Curse into a Grass-type But it failed! No N/A Modernise
Failures that always play additional text Even if the move wasn't successful, play the associated text. If another failure condition would prevent success (e.g. semi-invulernability), both failure messages play.
Aromatherapy while no party Pokemon have status conditions But it failed! No Heals status from left slot -> right slot (does not fail from left -> right) Text: "A soothing aroma wafted through the area!"

Aromatherapy does not cure the status when an ally is behind a Substitute or the ally has Sap Sipper. It has no other means of failing on the user except by not having a status condition curable by Aromatherapy. Aromatherapy never doubles Stomping Tantrum, despite both Sap Sipper and Substitute independently causing Stomping Tantrum to double in non-Aromatherapy situations. We also know that Aromatherapy heals statuses normally from left -> right. But if you use left slot Aromatherapy with Sap Sipper in the right slot, it plays Sap Sipper, then but it failed. So I think Aromatherapy without status conditions is a post-Sub failure, and that the game would have doubled ST on Aromatherapy failing vs. Sap Sipper / Sub; however, because it will always either do a non-ST fail (user lacks status condition) or a success (user has status condition) we can't know for sure.
Heal Bell while no party Pokemon have status conditions But it failed! No Heals status from left slot -> right slot (does not fail from left -> right) Text: "A bell chimed!"
Teatime when no Pokemon on the field have Berries to eat But nothing happened! No Consumes Berry's from user -> ally -> opponent's left slot -> opponent's right slot Text: "It's Teatime! Everyone dug into their Berries!" Modernise
Redundancy failures
Attempting to create a weather / Terrain that already exists / field effect that already exists But it failed! No N/A Sample field effects: Tailwind, Reflect, Gravity
Aqua Ring while the user already has Aqua Ring But it failed! No N/A
Baton Pass / Healing Wish / Lunar Dance with nothing to switch to But it failed! No N/A
Curse (user Ghost-type) into target that already has Curse But it failed! No N/A
Entry hazard when that entry hazard is already fully set But it failed! No N/A
Focus Energy when user already has "Critical Hit Boost" Y-info volatile But it failed! No N/A
Helping Hand when target has already moved But it failed! No N/A Via two Helping Hands, or Instruct
Lock-On / Mind Reader when user already has "Lock-On" Y-info volatile But it failed! No N/A
Magnet Rise when user already has Magnet Rise But it failed! No N/A
Substitute when user already has a Substitute [Pokemon] already has a substitute! No N/A
Taunt into target already taunted But it failed! No N/A
Trapping move while target already has "Can't Escape" Y-info volatile But it failed! No N/A Block / Mean Look / Spider Web / Octolock
Wish while a Wish is already active But it failed! No N/A
Other
After You / Electrify / Quash into a target that has already moved But it failed! No N/A
Corrosive Gas But it failed to affect [Pokemon]! No Ally -> opponent's left slot -> opponent's right slot Modernise
Copycat with no moves to copy But it failed! No N/A
Court Change when neither side has field effects But it failed! No N/A Modernise
Disable failures But it failed! No N/A Disable into target that hasn't moved, Disable into Struggle, Disable into Max Move, Disable into already disabled target
Encore failures But it failed! No N/A Target has not moved, or the target used a move that cannot be locked into Encore, or target's move has 0 PP, or target is Dynamaxed
G7_9 Sketch vs. no move, or ineligible move (note that Encore is checked earlier)
Helping Hand / Ally Switch / Aromatic Mist / Hold Hands in singles or when there is no ally target available in doubles But it failed! No N/A
Instruct failures But it failed! No N/A Target hasn't moved, target most recently used consecutively executed move (e.g. Rollout), target most recently used a move with recharge (Hyper Beam), target Dynamaxed, target most recently used Max Move, target's move has 0 PP Modernise
Mimic into target that hasn't moved / target used unMimicable move But it failed! No N/A
Primal weather active and trying to set a regular weather (if Primordial Sea) There is no relief from this heavy rain! No N/A Hacking only
(if Desolate Land) The extremely harsh sunlight was not lessened at all! No N/A Hacking only
(if Delta Stream) The mysterious strong winds blow on regardless! No N/A Hacking only
Psycho Shift when user has no status condition / target has same status condition / target has different status condition But it failed! No N/A
Purify when target does not have a status condition But it failed! No N/A Neither being at full HP nor target not having status will double Stomping Tantrum Modernise
Roar / Whirlwind into target with no Pokemon remaining to switch into But it failed! No N/A
Transform while user / target is already Transformed But it failed! No N/A
Trick / Switcheroo with neither having items or has unTrickable item But it failed! No N/A e.g. Memory on Silvally
Aeliko commented 2 months ago
Order Effect Text Stomping Tantrum? If multiple are present? Additional notes Vanilla Location Implementation Remarks
73 Move failure checks, part 5
Psycho Shift when target is immune to status condition It doesn't affect [Pokemon]... No N/A E.g. Paralyzed Psycho Shift into Electric-type, burned Psycho Shift into Fire-type
Substitute when user lacks enough HP to execute the move But it does not have enough HP left to make a substitute! No N/A
74 Aroma Veil (Disable, Encore, Taunt) (Ability triggers) [Pokémon] is protected by an aromatic veil! No Raw Speed with non-RNG speed tie Modernise