From 41138f101cab957fef4e7a401bb6b528c0f3889e Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Sun, 5 May 2024 14:29:59 +0200 Subject: [PATCH] Fix Red Card, Endured Damage interaction (#4482) --- src/battle_main.c | 1 + test/battle/hold_effect/red_card.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/battle_main.c b/src/battle_main.c index e8f825676c..f09c8110a3 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3499,6 +3499,7 @@ void SwitchInClearSetData(u32 battler) // Reset damage to prevent things like red card activating if the switched-in mon is holding it gSpecialStatuses[battler].physicalDmg = 0; gSpecialStatuses[battler].specialDmg = 0; + gBattleStruct->enduredDamage &= ~gBitTable[battler]; // Reset G-Max Chi Strike boosts. gBattleStruct->bonusCritStages[battler] = 0; diff --git a/test/battle/hold_effect/red_card.c b/test/battle/hold_effect/red_card.c index ce4ac80b96..8d7e175cea 100644 --- a/test/battle/hold_effect/red_card.c +++ b/test/battle/hold_effect/red_card.c @@ -447,4 +447,25 @@ SINGLE_BATTLE_TEST("Red Card does not cause the dragged out mon to lose hp due t } } +SINGLE_BATTLE_TEST("Red Card does not activate if holder is switched in mid-turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); Item(ITEM_EJECT_BUTTON); } + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet is switched out with the Eject Button!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet held up its Red Card against Foe Wobbuffet!"); + } + } +} + // SINGLE_BATTLE_TEST("Red Card activates but fails if the attacker has Dynamaxed")