Fixed moves with HP cost triggering effects where they shouldn't (#4533)

Co-authored-by: Hedara <hedara90@gmail.com>
This commit is contained in:
hedara90 2024-05-09 15:22:48 +02:00 committed by GitHub
parent fcfc6b60f2
commit dd0c3a9ee5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 63 additions and 2 deletions

View File

@ -52,6 +52,7 @@ BattleScript_EffectShedTail::
jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_ButItFailed
setsubstitute
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString
orword gHitMarker, HITMARKER_PASSIVE_DAMAGE
attackanimation
waitanimation
healthbarupdate BS_ATTACKER
@ -76,7 +77,7 @@ BattleScript_EffectFilletAway::
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, MAX_STAT_STAGE, BattleScript_ButItFailed
BattleScript_FilletAwayTryAttack::
halvehp BattleScript_ButItFailed
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
attackanimation
waitanimation
setbyte sSTAT_ANIM_PLAYED, FALSE
@ -3834,6 +3835,7 @@ BattleScript_EffectSubstitute::
jumpifstatus2 BS_ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
setsubstitute
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString
orword gHitMarker, HITMARKER_PASSIVE_DAMAGE
attackanimation
waitanimation
healthbarupdate BS_ATTACKER
@ -4568,7 +4570,7 @@ BattleScript_EffectBellyDrum::
ppreduce
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_ButItFailed
halvehp BattleScript_ButItFailed
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
attackanimation
waitanimation
healthbarupdate BS_ATTACKER

View File

@ -90,3 +90,17 @@ SINGLE_BATTLE_TEST("Belly Drum fails if the user's Attack is already at +6")
}
}
}
SINGLE_BATTLE_TEST("Belly Drum's HP cost doesn't trigger effects that trigger on damage taken")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_BELLY_DRUM); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player);
MESSAGE("Wobbuffet cut its own HP and maximized ATTACK!");
NOT MESSAGE("Wobbuffet's Air Balloon popped!");
}
}

View File

@ -56,3 +56,19 @@ SINGLE_BATTLE_TEST("Fillet Away fails if user's current HP is half or less than
}
}
}
SINGLE_BATTLE_TEST("Fillet Away's HP cost doesn't trigger effects that trigger on damage taken")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_FILLET_AWAY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FILLET_AWAY, player);
MESSAGE("Wobbuffet's Attack sharply rose!");
MESSAGE("Wobbuffet's Sp. Atk sharply rose!");
MESSAGE("Wobbuffet's Speed sharply rose!");
NOT MESSAGE("Wobbuffet's Air Balloon popped!");
}
}

View File

@ -70,3 +70,18 @@ SINGLE_BATTLE_TEST("Shed Tail fails if there are no usable pokemon left")
MESSAGE("But it failed!");
}
}
SINGLE_BATTLE_TEST("Shed Tail's HP cost doesn't trigger effects that trigger on damage taken")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_SHED_TAIL); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SHED_TAIL, player);
MESSAGE("Wobbuffet shed its tail to create a decoy!");
NOT MESSAGE("Wobbuffet's Air Balloon popped!");
}
}

View File

@ -54,3 +54,17 @@ SINGLE_BATTLE_TEST("Substitute's HP cost can trigger a berry")
MESSAGE("Wobbuffet's Sitrus Berry restored health!");
}
}
SINGLE_BATTLE_TEST("Substitute's HP cost doesn't trigger effects that trigger on damage taken")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_SUBSTITUTE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
MESSAGE("Wobbuffet made a SUBSTITUTE!");
NOT MESSAGE("Wobbuffet's Air Balloon popped!");
}
}