Fix Wish healing even if the target is Heal Blocked (#6979)
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
This commit is contained in:
parent
f8b3a02f6c
commit
7b686b6749
@ -1140,10 +1140,11 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro trywish turnNumber:req, failInstr:req
|
||||
.macro trywish turnNumber:req, failInstr:req, blockedInstr:req
|
||||
.byte 0xd4
|
||||
.byte \turnNumber
|
||||
.4byte \failInstr
|
||||
.4byte \blockedInstr
|
||||
.endm
|
||||
|
||||
.macro settoxicspikes failInstr:req
|
||||
|
||||
@ -5033,7 +5033,7 @@ BattleScript_EffectWish::
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
trywish 0, BattleScript_ButItFailed
|
||||
trywish 0, BattleScript_ButItFailed, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
goto BattleScript_MoveEnd
|
||||
@ -6675,7 +6675,7 @@ BattleScript_SelectingNotAllowedCurrentMoveInPalace::
|
||||
goto BattleScript_SelectingUnusableMoveInPalace
|
||||
|
||||
BattleScript_WishComesTrue::
|
||||
trywish 1, BattleScript_WishButFullHp
|
||||
trywish 1, BattleScript_WishButFullHp, BattleScript_WishButHealBlocked
|
||||
playanimation BS_TARGET, B_ANIM_WISH_HEAL
|
||||
printstring STRINGID_PKMNWISHCAMETRUE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@ -6694,6 +6694,14 @@ BattleScript_WishButFullHp::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_WishButHealBlocked::
|
||||
printstring STRINGID_PKMNWISHCAMETRUE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
pause B_WAIT_TIME_SHORT
|
||||
printstring STRINGID_HEALBLOCKPREVENTSUSAGE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
end2
|
||||
|
||||
BattleScript_IngrainTurnHeal::
|
||||
playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL
|
||||
printstring STRINGID_PKMNABSORBEDNUTRIENTS
|
||||
|
||||
@ -15150,7 +15150,7 @@ static void Cmd_trycopyability(void)
|
||||
|
||||
static void Cmd_trywish(void)
|
||||
{
|
||||
CMD_ARGS(u8 turnNumber, const u8 *failInstr);
|
||||
CMD_ARGS(u8 turnNumber, const u8 *failInstr, const u8 *healBlockedInstr);
|
||||
|
||||
switch (cmd->turnNumber)
|
||||
{
|
||||
@ -15174,7 +15174,9 @@ static void Cmd_trywish(void)
|
||||
gBattleStruct->moveDamage[gBattlerTarget] = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 2);
|
||||
|
||||
gBattleStruct->moveDamage[gBattlerTarget] *= -1;
|
||||
if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP)
|
||||
if (gStatuses3[gBattlerTarget] & STATUS3_HEAL_BLOCK)
|
||||
gBattlescriptCurrInstr = cmd->healBlockedInstr;
|
||||
else if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP)
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
else
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
|
||||
@ -1,4 +1,41 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Wish heals the user at the end of the next turn")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_WISH); MOVE(opponent, MOVE_POUND); }
|
||||
TURN { }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
|
||||
HP_BAR(player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
|
||||
MESSAGE("Wobbuffet's wish came true!");
|
||||
HP_BAR(player);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Wish is blocked by Heal Block")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_WISH); MOVE(opponent, MOVE_POUND); }
|
||||
TURN { MOVE(opponent, MOVE_HEAL_BLOCK); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_WISH, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponent);
|
||||
HP_BAR(player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponent);
|
||||
MESSAGE("Wobbuffet was prevented from healing!");
|
||||
NOT HP_BAR(player);
|
||||
}
|
||||
}
|
||||
TO_DO_BATTLE_TEST("TODO: Write Wish (Move Effect) test titles")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user