Fixes hacky SetMoveEffect script calls (#7987)

This commit is contained in:
Alex 2025-11-04 18:47:35 +01:00 committed by GitHub
parent 5325c275e6
commit be5f6d4801
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 169 additions and 207 deletions

View File

@ -48,7 +48,7 @@ u32 GetBattlerTurnOrderNum(u32 battler);
bool32 NoAliveMonsForBattlerSide(u32 battler);
bool32 NoAliveMonsForPlayer(void);
bool32 NoAliveMonsForEitherParty(void);
void SetMoveEffect(u32 battler, u32 effectBattler, bool32 primary, bool32 certain);
void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, const u8 *battleScript, bool32 primary, bool32 certain);
bool32 CanBattlerSwitch(u32 battlerId);
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);

View File

@ -457,8 +457,7 @@ static bool32 HandleEndTurnFirstEventBlock(u32 battler)
gBattleMons[battler].volatiles.multipleTurns = FALSE;
if (!gBattleMons[battler].volatiles.confusionTurns)
{
gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION;
SetMoveEffect(battler, battler, TRUE, FALSE);
SetMoveEffect(battler, battler, MOVE_EFFECT_CONFUSION, gBattlescriptCurrInstr, TRUE, FALSE);
if (gBattleMons[battler].volatiles.confusionTurns)
BattleScriptExecute(BattleScript_ThrashConfuses);
effect = TRUE;

View File

@ -218,10 +218,7 @@ static enum ItemEffect TryKingsRock(u32 battlerAtk, u32 battlerDef, u32 item)
&& RandomPercentage(RNG_HOLD_EFFECT_FLINCH, holdEffectParam)
&& ability != ABILITY_STENCH)
{
gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH;
BattleScriptPushCursor();
SetMoveEffect(battlerAtk, battlerDef, FALSE, FALSE);
BattleScriptPop();
SetMoveEffect(battlerAtk, battlerDef, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, FALSE, FALSE);
effect = ITEM_EFFECT_OTHER;
}

File diff suppressed because it is too large Load Diff

View File

@ -2582,7 +2582,6 @@ static enum MoveCanceller CancellerWeatherPrimal(struct BattleContext *ctx)
}
if (effect == MOVE_STEP_FAILURE)
{
gBattleScripting.moveEffect = MOVE_EFFECT_NONE;
gProtectStructs[ctx->battlerAtk].chargingTurn = FALSE;
CancelMultiTurnMoves(ctx->battlerAtk, SKY_DROP_ATTACKCANCELLER_CHECK);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
@ -5331,10 +5330,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
&& IsBattlerTurnDamaged(gBattlerTarget)
&& !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH))
{
gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH;
BattleScriptPushCursor();
SetMoveEffect(gBattlerAttacker, gBattlerTarget, FALSE, FALSE);
BattleScriptPop();
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, FALSE, FALSE);
effect++;
}
break;