From 08bdc85359a2b6f0a608085f1ef48101cb40ce5d Mon Sep 17 00:00:00 2001 From: Isaac Rivera <40581123+iriv24@users.noreply.github.com> Date: Tue, 14 May 2024 11:28:14 -0400 Subject: [PATCH] Adds tests to verify Parental Bond doesn't affect EFFECT_MULTI_HIT moves (#4573) * Adds tests to verify that Parental Bond does not affect moves with EFFECT_MULTI_HIT * actually make kanga mega evolve in tests * add celebrate for opponent and "not animation" on 5th hit * update test strings --- test/battle/ability/parental_bond.c | 108 ++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/test/battle/ability/parental_bond.c b/test/battle/ability/parental_bond.c index 5ff56bcef2..46e71096de 100644 --- a/test/battle/ability/parental_bond.c +++ b/test/battle/ability/parental_bond.c @@ -131,6 +131,114 @@ SINGLE_BATTLE_TEST("Parental Bond-converted moves only hit once on Lightning Rod } } +SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they still hit twice 35% of the time") +{ + PASSES_RANDOMLY(35, 100, RNG_HITS); + + GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + MESSAGE("Hit 2 time(s)!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } + THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + +SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they still hit thrice 35% of the time") +{ + PASSES_RANDOMLY(35, 100, RNG_HITS); + + GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + MESSAGE("Hit 3 time(s)!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } + THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + +SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they still hit four times 15% of the time") +{ + PASSES_RANDOMLY(15, 100, RNG_HITS); + + GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + } SCENE { + MESSAGE("Kangaskhan's Kangaskhanite is reacting to 1's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, player); + MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + MESSAGE("Hit 4 time(s)!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } + THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + +SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they still hit five times 15% of the time") +{ + PASSES_RANDOMLY(15, 100, RNG_HITS); + + GIVEN { + ASSUME(B_MULTI_HIT_CHANCE >= GEN_5); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].category != DAMAGE_CATEGORY_STATUS); + ASSUME(gMovesInfo[MOVE_COMET_PUNCH].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_COMET_PUNCH, megaEvolve: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player); + MESSAGE("Hit 5 time(s)!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } + THEN { + EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA); + } +} + TO_DO_BATTLE_TEST("Parental Bond tests"); // Temporary TODO: Convert Bulbapedia description into tests.