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 NoAliveMonsForBattlerSide(u32 battler);
bool32 NoAliveMonsForPlayer(void); bool32 NoAliveMonsForPlayer(void);
bool32 NoAliveMonsForEitherParty(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); bool32 CanBattlerSwitch(u32 battlerId);
void BattleDestroyYesNoCursorAt(u8 cursorPosition); void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition); void BattleCreateYesNoCursorAt(u8 cursorPosition);

View File

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

View File

@ -218,10 +218,7 @@ static enum ItemEffect TryKingsRock(u32 battlerAtk, u32 battlerDef, u32 item)
&& RandomPercentage(RNG_HOLD_EFFECT_FLINCH, holdEffectParam) && RandomPercentage(RNG_HOLD_EFFECT_FLINCH, holdEffectParam)
&& ability != ABILITY_STENCH) && ability != ABILITY_STENCH)
{ {
gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; SetMoveEffect(battlerAtk, battlerDef, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, FALSE, FALSE);
BattleScriptPushCursor();
SetMoveEffect(battlerAtk, battlerDef, FALSE, FALSE);
BattleScriptPop();
effect = ITEM_EFFECT_OTHER; 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) if (effect == MOVE_STEP_FAILURE)
{ {
gBattleScripting.moveEffect = MOVE_EFFECT_NONE;
gProtectStructs[ctx->battlerAtk].chargingTurn = FALSE; gProtectStructs[ctx->battlerAtk].chargingTurn = FALSE;
CancelMultiTurnMoves(ctx->battlerAtk, SKY_DROP_ATTACKCANCELLER_CHECK); CancelMultiTurnMoves(ctx->battlerAtk, SKY_DROP_ATTACKCANCELLER_CHECK);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
@ -5331,10 +5330,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
&& IsBattlerTurnDamaged(gBattlerTarget) && IsBattlerTurnDamaged(gBattlerTarget)
&& !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH)) && !MoveHasAdditionalEffect(gCurrentMove, MOVE_EFFECT_FLINCH))
{ {
gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, FALSE, FALSE);
BattleScriptPushCursor();
SetMoveEffect(gBattlerAttacker, gBattlerTarget, FALSE, FALSE);
BattleScriptPop();
effect++; effect++;
} }
break; break;