From 01105171a3701384d156499fc8329c4cd6b403ea Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:30:50 +0100 Subject: [PATCH] Fixes Magnet Rise when user is Rooted/Smacked Down (#7449) --- data/battle_scripts_1.s | 2 + test/battle/move_effect/magic_room.c | 2 + test/battle/move_effect/magnet_rise.c | 55 ++++++++++++++++++- .../move_effect_secondary/will_o_wisp.c | 4 -- 4 files changed, 58 insertions(+), 5 deletions(-) delete mode 100644 test/battle/move_effect_secondary/will_o_wisp.c diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 31835383dd..13d3c09012 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2601,6 +2601,8 @@ BattleScript_EffectMagnetRise:: attackcanceler attackstring ppreduce + jumpifstatus3 BS_ATTACKER, STATUS3_ROOTED, BattleScript_ButItFailed + jumpifstatus3 BS_ATTACKER, STATUS3_SMACKED_DOWN, BattleScript_ButItFailed setuserstatus3 STATUS3_MAGNET_RISE, BattleScript_ButItFailed attackanimation waitanimation diff --git a/test/battle/move_effect/magic_room.c b/test/battle/move_effect/magic_room.c index b1be6ac5bc..98d55cfd57 100644 --- a/test/battle/move_effect/magic_room.c +++ b/test/battle/move_effect/magic_room.c @@ -35,3 +35,5 @@ DOUBLE_BATTLE_TEST("Magic Room prevents item hold effects") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight); } } + +TO_DO_BATTLE_TEST("TODO: Write Magic Room (Move Effect) test titles") diff --git a/test/battle/move_effect/magnet_rise.c b/test/battle/move_effect/magnet_rise.c index 9fde0046fd..7e50bb24cb 100644 --- a/test/battle/move_effect/magnet_rise.c +++ b/test/battle/move_effect/magnet_rise.c @@ -1,4 +1,57 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("TODO: Write Magic Room (Move Effect) test titles") +ASSUMPTIONS +{ + ASSUME(GetMoveEffect(MOVE_MAGNET_RISE) == EFFECT_MAGNET_RISE); +} + +SINGLE_BATTLE_TEST("Magnet Rise rises the user into the air, avoiding Ground-type attacks") +{ + GIVEN { + ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_MAGNET_RISE); MOVE(opponent, MOVE_EARTHQUAKE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGNET_RISE, player); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); + HP_BAR(player); + } + } +} + +SINGLE_BATTLE_TEST("Magnet Rise fails if the user is Rooted") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_INGRAIN) == EFFECT_INGRAIN); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_INGRAIN); } + TURN { MOVE(player, MOVE_MAGNET_RISE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_INGRAIN, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGNET_RISE, player); + } +} + +SINGLE_BATTLE_TEST("Magnet Rise fails if the user is Grounded by Smack Down") +{ + GIVEN { + ASSUME(GetMoveEffect(MOVE_SMACK_DOWN) == EFFECT_SMACK_DOWN); + ASSUME(gSpeciesInfo[SPECIES_XATU].types[0] == TYPE_FLYING || gSpeciesInfo[SPECIES_XATU].types[1] == TYPE_FLYING); + PLAYER(SPECIES_XATU); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponent, MOVE_SMACK_DOWN); MOVE(player, MOVE_MAGNET_RISE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SMACK_DOWN, opponent); + MESSAGE("Xatu fell straight down!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGNET_RISE, player); + } +} + +TO_DO_BATTLE_TEST("TODO: Write Magnet Rise (Move Effect) test titles") diff --git a/test/battle/move_effect_secondary/will_o_wisp.c b/test/battle/move_effect_secondary/will_o_wisp.c deleted file mode 100644 index 08b1bd6c69..0000000000 --- a/test/battle/move_effect_secondary/will_o_wisp.c +++ /dev/null @@ -1,4 +0,0 @@ -#include "global.h" -#include "test/battle.h" - -TO_DO_BATTLE_TEST("TODO: Write Will-O-Wisp (Move Effect) test titles")