From 60e255ef5f177bda9be2d3247de84a0d4e9f5b16 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 16 Dec 2025 11:40:21 -0300 Subject: [PATCH] Finished Wish tests (#8530) --- include/constants/generational_changes.h | 2 +- src/battle_end_turn.c | 2 +- test/battle/move_effect/wish.c | 50 ++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index 57781784c0..96c917840c 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -92,7 +92,7 @@ F(GLARE_GHOST, glareGhost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(SKILL_SWAP, skillSwap, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(BRICK_BREAK, brickBreak, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ - F(WISH_HP_SOURCE, wishHpSource, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ + F(WISH_HP_SOURCE, wishHpSource, (u32, GEN_COUNT - 1)) \ F(RAMPAGE_CANCELLING, rampageCancelling, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(HEAL_BLOCKING, healBlocking, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ F(ROOTED_GROUNDING, rootedGrounding, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \ diff --git a/src/battle_end_turn.c b/src/battle_end_turn.c index b4d71c2cf4..ca4c46fa11 100644 --- a/src/battle_end_turn.c +++ b/src/battle_end_turn.c @@ -270,7 +270,7 @@ static bool32 HandleEndTurnWish(u32 battler) s32 wishHeal = 0; gBattlerTarget = battler; PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battler, gWishFutureKnock.wishPartyId[battler]) - if (B_WISH_HP_SOURCE >= GEN_5) + if (GetConfig(CONFIG_WISH_HP_SOURCE) >= GEN_5) { if (IsOnPlayerSide(battler)) wishHeal = GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[battler]], MON_DATA_MAX_HP) / 2; diff --git a/test/battle/move_effect/wish.c b/test/battle/move_effect/wish.c index 8fa3842123..a901ce0bbf 100644 --- a/test/battle/move_effect/wish.c +++ b/test/battle/move_effect/wish.c @@ -6,9 +6,13 @@ ASSUMPTIONS ASSUME(GetMoveEffect(MOVE_WISH) == EFFECT_WISH); } -SINGLE_BATTLE_TEST("Wish restores 50% of max player HP") +SINGLE_BATTLE_TEST("Wish restores 50% of the user's HP when not switching") { + u32 config; + PARAMETRIZE { config = GEN_4; } + PARAMETRIZE { config = GEN_5; } GIVEN { + WITH_CONFIG(CONFIG_WISH_HP_SOURCE, config); PLAYER(SPECIES_WYNAUT) { HP(50); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -18,11 +22,51 @@ SINGLE_BATTLE_TEST("Wish restores 50% of max player HP") ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player); ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); MESSAGE("Wynaut's wish came true!"); - HP_BAR(player, hp: 100); + HP_BAR(player, damage: -50); MESSAGE("Wynaut's HP was restored."); } } +SINGLE_BATTLE_TEST("Wish restores 50% of the user's HP when switching (Gen5+)") +{ + GIVEN { + WITH_CONFIG(CONFIG_WISH_HP_SOURCE, GEN_5); + PLAYER(SPECIES_WYNAUT) { HP(50); MaxHP(100); } + PLAYER(SPECIES_WOBBUFFET) { HP(100); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WISH); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player); + SWITCH_OUT_MESSAGE("Wynaut"); + SEND_IN_MESSAGE("Wobbuffet"); + MESSAGE("Wynaut's wish came true!"); + HP_BAR(player, damage: -50); + MESSAGE("Wobbuffet's HP was restored."); + } +} + +SINGLE_BATTLE_TEST("Wish restores 50% of the recipient's HP when switching (Gen3-4)") +{ + GIVEN { + WITH_CONFIG(CONFIG_WISH_HP_SOURCE, GEN_4); + PLAYER(SPECIES_WYNAUT) { HP(50); MaxHP(100); } + PLAYER(SPECIES_WOBBUFFET) { HP(100); MaxHP(200); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WISH); } + TURN { SWITCH(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player); + SWITCH_OUT_MESSAGE("Wynaut"); + SEND_IN_MESSAGE("Wobbuffet"); + MESSAGE("Wynaut's wish came true!"); + HP_BAR(player, damage: -100); + MESSAGE("Wobbuffet's HP was restored."); + } +} + SINGLE_BATTLE_TEST("Wish heals the user at the end of the next turn") { GIVEN { @@ -60,5 +104,3 @@ SINGLE_BATTLE_TEST("Wish is blocked by Heal Block") NOT HP_BAR(player); } } - -TO_DO_BATTLE_TEST("TODO: Write Wish (Move Effect) test titles")