diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index d8aedafed..77b4adb6c 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -5121,7 +5121,10 @@ BattleScript_MonTookFutureAttack:: BattleScript_CheckDoomDesireMiss:: accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE BattleScript_FutureAttackAnimate:: + critcalc + damagecalc adjustdamage + jumpifmovehadnoeffect BattleScript_DoFutureAttackResult jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL goto BattleScript_DoFutureAttackHit @@ -5133,6 +5136,9 @@ BattleScript_DoFutureAttackHit:: waitstate healthbarupdate BS_TARGET datahpupdate BS_TARGET + critmessage + waitmessage 0x40 +BattleScript_DoFutureAttackResult: resultmessage waitmessage 0x40 tryfaintmon BS_TARGET, FALSE, NULL @@ -5144,11 +5150,9 @@ BattleScript_FutureAttackEnd:: moveend 0x2, 0xE sethword gMoveResultFlags, 0 end2 - BattleScript_FutureAttackMiss:: pause 0x20 - sethword gMoveResultFlags, 0 - orhalfword gMoveResultFlags, MOVE_RESULT_FAILED + sethword gMoveResultFlags, MOVE_RESULT_FAILED resultmessage waitmessage 0x40 sethword gMoveResultFlags, 0 diff --git a/include/battle.h b/include/battle.h index 6eaa6e30f..c7aa1132d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -273,7 +273,6 @@ struct WishFutureKnock { u8 futureSightCounter[MAX_BATTLERS_COUNT]; u8 futureSightAttacker[MAX_BATTLERS_COUNT]; - s32 futureSightDmg[MAX_BATTLERS_COUNT]; u16 futureSightMove[MAX_BATTLERS_COUNT]; u8 wishCounter[MAX_BATTLERS_COUNT]; u8 wishMonId[MAX_BATTLERS_COUNT]; diff --git a/src/battle_util.c b/src/battle_util.c index b66692d46..b4ed7458c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1800,8 +1800,9 @@ bool8 HandleWishPerishSongOnTurnEnd(void) gBattlerTarget = gActiveBattler; gBattlerAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler]; - gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler]; gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF; + gCurrentMove = gWishFutureKnock.futureSightMove[gActiveBattler]; + SetTypeBeforeUsingMove(gCurrentMove, gActiveBattler); BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 @@ -1812,12 +1813,8 @@ bool8 HandleWishPerishSongOnTurnEnd(void) return TRUE; } } - // Why do I have to keep doing this to match? - { - u8 *state = &gBattleStruct->wishPerishSongState; - *state = 1; - gBattleStruct->wishPerishSongBattlerId = 0; - } + gBattleStruct->wishPerishSongState = 1; + gBattleStruct->wishPerishSongBattlerId = 0; // fall through case 1: while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)