Skip to content

Commit

Permalink
Adds missing Doodle tests and fix (rh-hideout#3800)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexOn1ine authored Dec 22, 2023
1 parent 505b8b6 commit 63316da
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 5 deletions.
1 change: 1 addition & 0 deletions src/battle_script_commands.c
Original file line number Diff line number Diff line change
Expand Up @@ -13886,6 +13886,7 @@ static void Cmd_trycopyability(void)
if (gBattleMons[battler].ability == defAbility
|| defAbility == ABILITY_NONE
|| IsRolePlayDoodleBannedAbilityAttacker(gBattleMons[battler].ability)
|| IsRolePlayDoodleBannedAbilityAttacker(gBattleMons[BATTLE_PARTNER(battler)].ability)
|| IsRolePlayDoodleBannedAbility(defAbility))
{
gBattlescriptCurrInstr = cmd->failInstr;
Expand Down
67 changes: 62 additions & 5 deletions test/battle/move_effect/doodle.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,73 @@ DOUBLE_BATTLE_TEST("Doodle gives the target's ability to user and ally")
GIVEN {
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_STENCH); }
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft);
MESSAGE("Wynaut copied Foe Wobbuffet's Stench!");
MESSAGE("Wynaut copied Foe Wobbuffet's Stench!");
MESSAGE("Wynaut copied Foe Torchic's Blaze!");
MESSAGE("Wynaut copied Foe Torchic's Blaze!");
} THEN {
EXPECT(playerLeft->ability == ABILITY_STENCH);
EXPECT(playerRight->ability == ABILITY_STENCH);
EXPECT(playerLeft->ability == ABILITY_BLAZE);
EXPECT(playerRight->ability == ABILITY_BLAZE);
}
}

DOUBLE_BATTLE_TEST("Doodle can't copy a banned ability")
{
GIVEN {
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft);
NONE_OF {
MESSAGE("Wynaut copied Foe Great Tusk's Protosynthesis!");
MESSAGE("Wynaut copied Foe Great Tusk's Protosynthesis!");
}
} THEN {
EXPECT(playerLeft->ability != ABILITY_PROTOSYNTHESIS);
EXPECT(playerRight->ability != ABILITY_PROTOSYNTHESIS);
}
}

DOUBLE_BATTLE_TEST("Doodle fails if user has a banned Ability")
{
GIVEN {
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); }
PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); }
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft);
MESSAGE("But it failed!");
} THEN {
EXPECT(playerLeft->ability == ABILITY_PROTOSYNTHESIS);
EXPECT(playerRight->ability == ABILITY_SHADOW_TAG);
}
}

DOUBLE_BATTLE_TEST("Doodle fails if partner has a banned Ability")
{
GIVEN {
PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); }
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); }
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft);
MESSAGE("But it failed!");
} THEN {
EXPECT(playerLeft->ability == ABILITY_SHADOW_TAG);
EXPECT(playerRight->ability == ABILITY_PROTOSYNTHESIS);
}
}

0 comments on commit 63316da

Please sign in to comment.