Revert gBattleTurnCounter change (#8197)
This commit is contained in:
parent
8d23b9dbda
commit
ea442bca6d
@ -1289,7 +1289,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
// the following checks apply to any target (including user)
|
||||
|
||||
// throat chop check
|
||||
if (gDisableStructs[battlerAtk].throatChopTimer > gBattleTurnCounter && IsSoundMove(move))
|
||||
if (gDisableStructs[battlerAtk].throatChopTimer > 0 && IsSoundMove(move))
|
||||
return 0; // Can't even select move at all
|
||||
// heal block check
|
||||
if (gBattleMons[battlerAtk].volatiles.healBlock && IsHealBlockPreventingMove(battlerAtk, move))
|
||||
@ -1993,8 +1993,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
if (gWishFutureKnock.futureSightCounter[LEFT_FOE(battlerAtk)] > gBattleTurnCounter
|
||||
|| gWishFutureKnock.futureSightCounter[RIGHT_FOE(battlerAtk)] > gBattleTurnCounter)
|
||||
if (gWishFutureKnock.futureSightCounter[LEFT_FOE(battlerAtk)] > 0
|
||||
|| gWishFutureKnock.futureSightCounter[RIGHT_FOE(battlerAtk)] > 0)
|
||||
ADJUST_SCORE(-12);
|
||||
else
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
@ -2449,7 +2449,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_WISH:
|
||||
if (gWishFutureKnock.wishCounter[battlerAtk] > gBattleTurnCounter)
|
||||
if (gWishFutureKnock.wishCounter[battlerAtk] > 0)
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_ASSIST:
|
||||
@ -2619,7 +2619,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
// This only happens if the ally already rolled on double trick room on final turn.
|
||||
// Both Pokemon use Trick Room on the final turn of Trick Room to anticipate both opponents Protecting to stall out.
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == (gBattleTurnCounter + 1))
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == 1)
|
||||
ADJUST_SCORE(PERFECT_EFFECT);
|
||||
else
|
||||
ADJUST_SCORE(-10);
|
||||
@ -2630,7 +2630,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !ShouldSetFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM))
|
||||
ADJUST_SCORE(-10);
|
||||
// Don't unset a trick room that doesn't harm you unless it's about to expire.
|
||||
else if ((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1) && !ShouldClearFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM))
|
||||
else if ((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && gFieldTimers.trickRoomTimer > 1 && !ShouldClearFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM))
|
||||
ADJUST_SCORE(-10);
|
||||
}
|
||||
break;
|
||||
@ -2829,7 +2829,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
case EFFECT_TAILWIND:
|
||||
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_TAILWIND
|
||||
|| PartnerMoveEffectIs(BATTLE_PARTNER(battlerAtk), aiData->partnerMove, EFFECT_TAILWIND)
|
||||
|| (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1)))
|
||||
|| (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == 1))
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_LUCKY_CHANT:
|
||||
@ -2839,7 +2839,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
break;
|
||||
case EFFECT_MAGNET_RISE:
|
||||
if (gFieldStatuses & STATUS_FIELD_GRAVITY
|
||||
|| gDisableStructs[battlerAtk].magnetRiseTimer > gBattleTurnCounter
|
||||
|| gDisableStructs[battlerAtk].magnetRiseTimer > 0
|
||||
|| aiData->holdEffects[battlerAtk] == HOLD_EFFECT_IRON_BALL
|
||||
|| gBattleMons[battlerAtk].volatiles.smackDown
|
||||
|| gBattleMons[battlerAtk].volatiles.root
|
||||
@ -3221,7 +3221,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
// Both Pokemon use Trick Room on the final turn of Trick Room to anticipate both opponents Protecting to stall out.
|
||||
// This unsets Trick Room and resets it with a full timer.
|
||||
case EFFECT_TRICK_ROOM:
|
||||
if (hasPartner && gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == (gBattleTurnCounter + 1)
|
||||
if (hasPartner && gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == 1
|
||||
&& ShouldSetFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM)
|
||||
&& HasMoveWithEffect(battlerAtkPartner, EFFECT_TRICK_ROOM)
|
||||
&& RandomPercentage(RNG_AI_REFRESH_TRICK_ROOM_ON_LAST_TURN, DOUBLE_TRICK_ROOM_ON_LAST_TURN_CHANCE))
|
||||
@ -3229,7 +3229,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
break;
|
||||
case EFFECT_TAILWIND:
|
||||
// Anticipate both opponents protecting to stall out Trick Room, and apply Tailwind.
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == (gBattleTurnCounter + 1)
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == 1
|
||||
&& RandomPercentage(RNG_AI_APPLY_TAILWIND_ON_LAST_TURN_OF_TRICK_ROOM, TAILWIND_IN_TRICK_ROOM_CHANCE))
|
||||
ADJUST_SCORE(BEST_EFFECT);
|
||||
break;
|
||||
@ -5331,7 +5331,7 @@ static s32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move, stru
|
||||
else if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !hasPartner && (CountUsablePartyMons(battlerAtk) != 0))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
// Don't unset it on last turn.
|
||||
else if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1) && ShouldClearFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM))
|
||||
else if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer > 1 && ShouldClearFieldStatus(battlerAtk, STATUS_FIELD_TRICK_ROOM))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
}
|
||||
break;
|
||||
@ -5443,7 +5443,7 @@ static s32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move, stru
|
||||
break;
|
||||
case EFFECT_TAILWIND:
|
||||
{
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1))
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer > 1)
|
||||
break;
|
||||
|
||||
if (HasBattlerSideMoveWithEffect(battlerAtk, EFFECT_ELECTRO_BALL))
|
||||
|
||||
@ -2089,7 +2089,7 @@ bool32 ShouldSetFieldStatus(u32 battler, u32 fieldStatus)
|
||||
if (!(fieldStatus & STATUS_FIELD_TRICK_ROOM))
|
||||
return FALSE;
|
||||
// DOUBLE_TRICK_ROOM_ON_LAST_TURN_CHANCE
|
||||
else if (gFieldTimers.trickRoomTimer != (gBattleTurnCounter + 1))
|
||||
else if (gFieldTimers.trickRoomTimer != 1)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@ -6833,8 +6833,8 @@ static void TrySwapWishBattlerIds(u32 battlerAtk, u32 battlerPartner)
|
||||
u32 i, temp;
|
||||
|
||||
// if used future sight on opposing side, properly track who used it
|
||||
if (gWishFutureKnock.futureSightCounter[LEFT_FOE(battlerAtk)] > gBattleTurnCounter
|
||||
|| gWishFutureKnock.futureSightCounter[RIGHT_FOE(battlerAtk)] > gBattleTurnCounter)
|
||||
if (gWishFutureKnock.futureSightCounter[LEFT_FOE(battlerAtk)] > 0
|
||||
|| gWishFutureKnock.futureSightCounter[RIGHT_FOE(battlerAtk)] > 0)
|
||||
{
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
@ -6858,8 +6858,8 @@ static void TrySwapWishBattlerIds(u32 battlerAtk, u32 battlerPartner)
|
||||
}
|
||||
|
||||
// swap wish party indices
|
||||
if (gWishFutureKnock.wishCounter[battlerAtk] > gBattleTurnCounter
|
||||
|| gWishFutureKnock.wishCounter[battlerPartner] > gBattleTurnCounter)
|
||||
if (gWishFutureKnock.wishCounter[battlerAtk] > 0
|
||||
|| gWishFutureKnock.wishCounter[battlerPartner] > 0)
|
||||
SWAP(gWishFutureKnock.wishPartyId[battlerAtk], gWishFutureKnock.wishPartyId[battlerPartner], temp);
|
||||
}
|
||||
|
||||
|
||||
@ -177,7 +177,7 @@ void ActivateDynamax(u32 battler)
|
||||
// Set appropriate use flags.
|
||||
SetActiveGimmick(battler, GIMMICK_DYNAMAX);
|
||||
SetGimmickAsActivated(battler, GIMMICK_DYNAMAX);
|
||||
gBattleStruct->dynamax.dynamaxTurns[battler] = gBattleTurnCounter + DYNAMAX_TURNS_COUNT;
|
||||
gBattleStruct->dynamax.dynamaxTurns[battler] = DYNAMAX_TURNS_COUNT;
|
||||
|
||||
// Substitute is removed upon Dynamaxing.
|
||||
gBattleMons[battler].volatiles.substitute = FALSE;
|
||||
|
||||
@ -62,24 +62,27 @@ static bool32 HandleEndTurnVarious(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK && gFieldTimers.fairyLockTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.fairyLockTimer > 0 && --gFieldTimers.fairyLockTimer == 0)
|
||||
gFieldStatuses &= ~STATUS_FIELD_FAIRY_LOCK;
|
||||
|
||||
for (i = 0; i < NUM_BATTLE_SIDES; i++)
|
||||
{
|
||||
if (gSideStatuses[i] & SIDE_STATUS_DAMAGE_NON_TYPES && gSideTimers[i].damageNonTypesTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[i].damageNonTypesTimer > 0 && --gSideTimers[i].damageNonTypesTimer == 0)
|
||||
gSideStatuses[i] &= ~SIDE_STATUS_DAMAGE_NON_TYPES;
|
||||
}
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gDisableStructs[i].throatChopTimer > 0)
|
||||
gDisableStructs[i].throatChopTimer--;
|
||||
|
||||
if (gBattleMons[i].volatiles.lockOn > 0)
|
||||
gBattleMons[i].volatiles.lockOn--;
|
||||
|
||||
if (gDisableStructs[i].chargeTimer && --gDisableStructs[i].chargeTimer == 0)
|
||||
if (gDisableStructs[i].chargeTimer > 0 && --gDisableStructs[i].chargeTimer == 0)
|
||||
gBattleMons[i].volatiles.charge = FALSE;
|
||||
|
||||
if (gBattleMons[i].volatiles.laserFocus && gDisableStructs[i].laserFocusTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[i].laserFocusTimer > 0 && --gDisableStructs[i].laserFocusTimer == 0)
|
||||
gBattleMons[i].volatiles.laserFocus = FALSE;
|
||||
|
||||
gBattleStruct->battlerState[i].wasAboveHalfHp = gBattleMons[i].hp > gBattleMons[i].maxHP / 2;
|
||||
@ -246,7 +249,7 @@ static bool32 HandleEndTurnFutureSight(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gWishFutureKnock.futureSightCounter[battler] == gBattleTurnCounter)
|
||||
if (gWishFutureKnock.futureSightCounter[battler] > 0 && --gWishFutureKnock.futureSightCounter[battler] == 0)
|
||||
{
|
||||
if (!IsBattlerAlive(battler))
|
||||
return effect;
|
||||
@ -278,7 +281,7 @@ static bool32 HandleEndTurnWish(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gWishFutureKnock.wishCounter[battler] == gBattleTurnCounter && IsBattlerAlive(battler))
|
||||
if (gWishFutureKnock.wishCounter[battler] > 0 && --gWishFutureKnock.wishCounter[battler] == 0 && IsBattlerAlive(battler))
|
||||
{
|
||||
s32 wishHeal = 0;
|
||||
gBattlerTarget = battler;
|
||||
@ -740,7 +743,7 @@ static bool32 HandleEndTurnTorment(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gDisableStructs[battler].tormentTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].tormentTimer > 0 && --gDisableStructs[battler].tormentTimer == 0)
|
||||
{
|
||||
gBattleMons[battler].volatiles.torment = FALSE;
|
||||
gBattleScripting.battler = battler;
|
||||
@ -815,7 +818,7 @@ static bool32 HandleEndTurnMagnetRise(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gBattleMons[battler].volatiles.magnetRise && gDisableStructs[battler].magnetRiseTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].magnetRiseTimer > 0 && --gDisableStructs[battler].magnetRiseTimer == 0)
|
||||
{
|
||||
gBattleMons[battler].volatiles.magnetRise = FALSE;
|
||||
BattleScriptExecute(BattleScript_BufferEndTurn);
|
||||
@ -832,7 +835,7 @@ static bool32 HandleEndTurnTelekinesis(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gBattleMons[battler].volatiles.telekinesis && gDisableStructs[battler].telekinesisTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].telekinesisTimer > 0 && --gDisableStructs[battler].telekinesisTimer == 0)
|
||||
{
|
||||
gBattleMons[battler].volatiles.telekinesis = FALSE;
|
||||
BattleScriptExecute(BattleScript_TelekinesisEndTurn);
|
||||
@ -848,7 +851,7 @@ static bool32 HandleEndTurnHealBlock(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gBattleMons[battler].volatiles.healBlock && gDisableStructs[battler].healBlockTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].healBlockTimer > 0 && --gDisableStructs[battler].healBlockTimer == 0)
|
||||
{
|
||||
gBattleMons[battler].volatiles.healBlock = FALSE;
|
||||
gBattleScripting.battler = battler;
|
||||
@ -866,7 +869,7 @@ static bool32 HandleEndTurnEmbargo(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (gBattleMons[battler].volatiles.embargo && gDisableStructs[battler].embargoTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].embargoTimer > 0 && --gDisableStructs[battler].embargoTimer == 0)
|
||||
{
|
||||
gBattleMons[battler].volatiles.embargo = FALSE;
|
||||
BattleScriptExecute(BattleScript_EmbargoEndTurn);
|
||||
@ -985,7 +988,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
switch (gBattleStruct->eventState.endTurnBlock)
|
||||
{
|
||||
case SECOND_EVENT_BLOCK_REFLECT:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_REFLECT && gSideTimers[side].reflectTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].reflectTimer > 0 && --gSideTimers[side].reflectTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_REFLECT;
|
||||
@ -997,7 +1000,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_LIGHT_SCREEN:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN && gSideTimers[side].lightscreenTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].lightscreenTimer > 0 && --gSideTimers[side].lightscreenTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN;
|
||||
@ -1009,7 +1012,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_SAFEGUARD:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD && gSideTimers[side].safeguardTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].safeguardTimer > 0 && --gSideTimers[side].safeguardTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD;
|
||||
@ -1019,7 +1022,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_MIST:
|
||||
if (gSideTimers[side].mistTimer != 0 && gSideTimers[side].mistTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].mistTimer > 0 && --gSideTimers[side].mistTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_MIST;
|
||||
@ -1031,7 +1034,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_TAILWIND:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_TAILWIND && gSideTimers[side].tailwindTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].tailwindTimer > 0 && --gSideTimers[side].tailwindTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_TAILWIND;
|
||||
@ -1041,7 +1044,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_LUCKY_CHANT:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_LUCKY_CHANT && gSideTimers[side].luckyChantTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].luckyChantTimer > 0 && --gSideTimers[side].luckyChantTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_LUCKY_CHANT;
|
||||
@ -1052,7 +1055,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_RAINBOW:
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
if (gSideStatuses[side] & SIDE_STATUS_RAINBOW && gSideTimers[side].rainbowTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].rainbowTimer > 0 && --gSideTimers[side].rainbowTimer == 0)
|
||||
{
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_RAINBOW;
|
||||
BattleScriptExecute(BattleScript_TheRainbowDisappeared);
|
||||
@ -1061,7 +1064,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_SEA_OF_FIRE:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_SEA_OF_FIRE && gSideTimers[side].seaOfFireTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].seaOfFireTimer > 0 && --gSideTimers[side].seaOfFireTimer == 0)
|
||||
{
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_SEA_OF_FIRE;
|
||||
BattleScriptExecute(BattleScript_TheSeaOfFireDisappeared);
|
||||
@ -1071,7 +1074,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_SWAMP:
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
if (gSideStatuses[side] & SIDE_STATUS_SWAMP && gSideTimers[side].swampTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].swampTimer > 0 && --gSideTimers[side].swampTimer == 0)
|
||||
{
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_SWAMP;
|
||||
BattleScriptExecute(BattleScript_TheSwampDisappeared);
|
||||
@ -1080,7 +1083,7 @@ static bool32 HandleEndTurnSecondEventBlock(u32 battler)
|
||||
gBattleStruct->eventState.endTurnBlock++;
|
||||
break;
|
||||
case SECOND_EVENT_BLOCK_AURORA_VEIL:
|
||||
if (gSideStatuses[side] & SIDE_STATUS_AURORA_VEIL && gSideTimers[side].auroraVeilTimer == gBattleTurnCounter)
|
||||
if (gSideTimers[side].auroraVeilTimer > 0 && --gSideTimers[side].auroraVeilTimer == 0)
|
||||
{
|
||||
gBattlerAttacker = GetBattlerSideForMessage(side);
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_AURORA_VEIL;
|
||||
@ -1103,7 +1106,7 @@ static bool32 HandleEndTurnTrickRoom(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.trickRoomTimer > 0 && --gFieldTimers.trickRoomTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_TRICK_ROOM;
|
||||
BattleScriptExecute(BattleScript_TrickRoomEnds);
|
||||
@ -1119,7 +1122,7 @@ static bool32 HandleEndTurnGravity(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_GRAVITY && gFieldTimers.gravityTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.gravityTimer > 0 && --gFieldTimers.gravityTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_GRAVITY;
|
||||
BattleScriptExecute(BattleScript_GravityEnds);
|
||||
@ -1135,7 +1138,7 @@ static bool32 HandleEndTurnWaterSport(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_WATERSPORT && gFieldTimers.waterSportTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.waterSportTimer > 0 && --gFieldTimers.waterSportTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_WATERSPORT;
|
||||
BattleScriptExecute(BattleScript_WaterSportEnds);
|
||||
@ -1151,7 +1154,7 @@ static bool32 HandleEndTurnMudSport(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_MUDSPORT && gFieldTimers.mudSportTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.mudSportTimer > 0 && --gFieldTimers.mudSportTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_MUDSPORT;
|
||||
BattleScriptExecute(BattleScript_MudSportEnds);
|
||||
@ -1167,7 +1170,7 @@ static bool32 HandleEndTurnWonderRoom(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM && gFieldTimers.wonderRoomTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.wonderRoomTimer > 0 && --gFieldTimers.wonderRoomTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_WONDER_ROOM;
|
||||
BattleScriptExecute(BattleScript_WonderRoomEnds);
|
||||
@ -1183,7 +1186,7 @@ static bool32 HandleEndTurnMagicRoom(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurn++;
|
||||
|
||||
if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM && gFieldTimers.magicRoomTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.magicRoomTimer > 0 && --gFieldTimers.magicRoomTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~STATUS_FIELD_MAGIC_ROOM;
|
||||
BattleScriptExecute(BattleScript_MagicRoomEnds);
|
||||
@ -1195,7 +1198,7 @@ static bool32 HandleEndTurnMagicRoom(u32 battler)
|
||||
|
||||
static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId)
|
||||
{
|
||||
if (gFieldStatuses & terrainFlag && gFieldTimers.terrainTimer == gBattleTurnCounter)
|
||||
if (gFieldTimers.terrainTimer > 0 && --gFieldTimers.terrainTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~terrainFlag;
|
||||
TryToRevertMimicryAndFlags();
|
||||
@ -1367,7 +1370,7 @@ static bool32 HandleEndTurnDynamax(u32 battler)
|
||||
|
||||
gBattleStruct->eventState.endTurnBattler++;
|
||||
|
||||
if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && gBattleStruct->dynamax.dynamaxTurns[battler] == gBattleTurnCounter)
|
||||
if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && gBattleStruct->dynamax.dynamaxTurns[battler] > 0 && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0)
|
||||
{
|
||||
gBattleScripting.battler = battler;
|
||||
UndoDynamax(battler);
|
||||
|
||||
@ -2810,9 +2810,9 @@ static inline bool32 TrySetReflect(u32 battler)
|
||||
{
|
||||
gSideStatuses[side] |= SIDE_STATUS_REFLECT;
|
||||
if (GetBattlerHoldEffect(battler) == HOLD_EFFECT_LIGHT_CLAY)
|
||||
gSideTimers[side].reflectTimer = gBattleTurnCounter + 8;
|
||||
gSideTimers[side].reflectTimer = 8;
|
||||
else
|
||||
gSideTimers[side].reflectTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[side].reflectTimer = 5;
|
||||
|
||||
if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, battler) == 2)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_REFLECT_DOUBLE;
|
||||
@ -2831,9 +2831,9 @@ static inline bool32 TrySetLightScreen(u32 battler)
|
||||
{
|
||||
gSideStatuses[side] |= SIDE_STATUS_LIGHTSCREEN;
|
||||
if (GetBattlerHoldEffect(battler) == HOLD_EFFECT_LIGHT_CLAY)
|
||||
gSideTimers[side].lightscreenTimer = gBattleTurnCounter + 8;
|
||||
gSideTimers[side].lightscreenTimer = 8;
|
||||
else
|
||||
gSideTimers[side].lightscreenTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[side].lightscreenTimer = 5;
|
||||
|
||||
if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, battler) == 2)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_LIGHTSCREEN_DOUBLE;
|
||||
@ -3382,7 +3382,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_THROAT_CHOP:
|
||||
gDisableStructs[gEffectBattler].throatChopTimer = gBattleTurnCounter + 2;
|
||||
gDisableStructs[gEffectBattler].throatChopTimer = 2;
|
||||
gBattlescriptCurrInstr = battleScript;
|
||||
break;
|
||||
case MOVE_EFFECT_INCINERATE:
|
||||
@ -3523,7 +3523,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
else if (!gBattleMons[gEffectBattler].volatiles.healBlock)
|
||||
{
|
||||
gBattleMons[gEffectBattler].volatiles.healBlock = TRUE;
|
||||
gDisableStructs[gEffectBattler].healBlockTimer = gBattleTurnCounter + 2;
|
||||
gDisableStructs[gEffectBattler].healBlockTimer = 2;
|
||||
BattleScriptPush(battleScript);
|
||||
gBattlescriptCurrInstr = BattleScript_EffectPsychicNoise;
|
||||
}
|
||||
@ -3808,9 +3808,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY;
|
||||
gFieldStatuses |= statusFlag;
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_TERRAIN_EXTENDER)
|
||||
gFieldTimers.terrainTimer = gBattleTurnCounter + 8;
|
||||
gFieldTimers.terrainTimer = 8;
|
||||
else
|
||||
gFieldTimers.terrainTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.terrainTimer = 5;
|
||||
BattleScriptPush(battleScript);
|
||||
gBattlescriptCurrInstr = BattleScript_EffectSetTerrain;
|
||||
}
|
||||
@ -3826,7 +3826,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
{
|
||||
u32 moveType = GetMoveType(gCurrentMove);
|
||||
gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES;
|
||||
gSideTimers[side].damageNonTypesTimer = gBattleTurnCounter + 5; // damage is dealt for 4 turns, ends on 5th
|
||||
gSideTimers[side].damageNonTypesTimer = 5;
|
||||
gSideTimers[side].damageNonTypesType = moveType;
|
||||
BattleScriptPush(battleScript);
|
||||
ChooseDamageNonTypesString(moveType);
|
||||
@ -3857,9 +3857,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
{
|
||||
gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL;
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_LIGHT_CLAY)
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 8;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8;
|
||||
else
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD;
|
||||
BattleScriptPush(battleScript);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEffectAuroraVeil;
|
||||
@ -3869,7 +3869,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
||||
if (!(gFieldStatuses & STATUS_FIELD_GRAVITY))
|
||||
{
|
||||
gFieldStatuses |= STATUS_FIELD_GRAVITY;
|
||||
gFieldTimers.gravityTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.gravityTimer = 5;
|
||||
BattleScriptPush(battleScript);
|
||||
gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess;
|
||||
}
|
||||
@ -7142,7 +7142,7 @@ static void Cmd_sethealblock(void)
|
||||
else
|
||||
{
|
||||
gBattleMons[gBattlerTarget].volatiles.healBlock = TRUE;
|
||||
gDisableStructs[gBattlerTarget].healBlockTimer = gBattleTurnCounter + 5;
|
||||
gDisableStructs[gBattlerTarget].healBlockTimer = 5;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
@ -8686,7 +8686,7 @@ static void Cmd_setgravity(void)
|
||||
else
|
||||
{
|
||||
gFieldStatuses |= STATUS_FIELD_GRAVITY;
|
||||
gFieldTimers.gravityTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.gravityTimer = 5;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
@ -11104,7 +11104,7 @@ static void Cmd_setmist(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].mistTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].mistTimer = 5;
|
||||
gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_MIST;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_MIST;
|
||||
}
|
||||
@ -11665,7 +11665,7 @@ static void Cmd_settailwind(void)
|
||||
if (!(gSideStatuses[side] & SIDE_STATUS_TAILWIND))
|
||||
{
|
||||
gSideStatuses[side] |= SIDE_STATUS_TAILWIND;
|
||||
gSideTimers[side].tailwindTimer = gBattleTurnCounter + (B_TAILWIND_TURNS >= GEN_5 ? 4 : 3);
|
||||
gSideTimers[side].tailwindTimer = (B_TAILWIND_TURNS >= GEN_5 ? 4 : 3);
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
else
|
||||
@ -11990,7 +11990,7 @@ static void Cmd_setembargo(void)
|
||||
else
|
||||
{
|
||||
gBattleMons[gBattlerTarget].volatiles.embargo = TRUE;
|
||||
gDisableStructs[gBattlerTarget].embargoTimer = gBattleTurnCounter + 5;
|
||||
gDisableStructs[gBattlerTarget].embargoTimer = 5;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
@ -12055,7 +12055,7 @@ static void Cmd_setsafeguard(void)
|
||||
else
|
||||
{
|
||||
gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].safeguardTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].safeguardTimer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD;
|
||||
}
|
||||
|
||||
@ -12375,7 +12375,7 @@ static void Cmd_setfutureattack(void)
|
||||
gWishFutureKnock.futureSightMove[gBattlerTarget] = gCurrentMove;
|
||||
gWishFutureKnock.futureSightBattlerIndex[gBattlerTarget] = gBattlerAttacker;
|
||||
gWishFutureKnock.futureSightPartyIndex[gBattlerTarget] = gBattlerPartyIndexes[gBattlerAttacker];
|
||||
gWishFutureKnock.futureSightCounter[gBattlerTarget] = gBattleTurnCounter + 3;
|
||||
gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3;
|
||||
|
||||
if (gCurrentMove == MOVE_DOOM_DESIRE)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE;
|
||||
@ -12826,9 +12826,9 @@ static void Cmd_trywish(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
}
|
||||
else if (gWishFutureKnock.wishCounter[gBattlerAttacker] <= gBattleTurnCounter)
|
||||
else if (gWishFutureKnock.wishCounter[gBattlerAttacker] == 0)
|
||||
{
|
||||
gWishFutureKnock.wishCounter[gBattlerAttacker] = gBattleTurnCounter + 2;
|
||||
gWishFutureKnock.wishCounter[gBattlerAttacker] = 2;
|
||||
gWishFutureKnock.wishPartyId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker];
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
@ -12934,7 +12934,7 @@ static void HandleRoomMove(u32 statusFlag, u16 *timer, u8 stringId)
|
||||
else
|
||||
{
|
||||
gFieldStatuses |= statusFlag;
|
||||
*timer = gBattleTurnCounter + 5;
|
||||
*timer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = stringId;
|
||||
}
|
||||
}
|
||||
@ -13077,10 +13077,10 @@ static void Cmd_trysetvolatile(void)
|
||||
switch (cmd->_volatile)
|
||||
{
|
||||
case VOLATILE_MAGNET_RISE:
|
||||
gDisableStructs[battler].magnetRiseTimer = gBattleTurnCounter + 5;
|
||||
gDisableStructs[battler].magnetRiseTimer = 5;
|
||||
break;
|
||||
case VOLATILE_LASER_FOCUS:
|
||||
gDisableStructs[battler].laserFocusTimer = gBattleTurnCounter + 2;
|
||||
gDisableStructs[battler].laserFocusTimer = 2;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -13287,7 +13287,7 @@ static void Cmd_settypebasedhalvers(void)
|
||||
if (!(gFieldStatuses & STATUS_FIELD_MUDSPORT))
|
||||
{
|
||||
gFieldStatuses |= STATUS_FIELD_MUDSPORT;
|
||||
gFieldTimers.mudSportTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.mudSportTimer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC;
|
||||
worked = TRUE;
|
||||
}
|
||||
@ -13309,7 +13309,7 @@ static void Cmd_settypebasedhalvers(void)
|
||||
if (!(gFieldStatuses & STATUS_FIELD_WATERSPORT))
|
||||
{
|
||||
gFieldStatuses |= STATUS_FIELD_WATERSPORT;
|
||||
gFieldTimers.waterSportTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.waterSportTimer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_FIRE;
|
||||
worked = TRUE;
|
||||
}
|
||||
@ -14293,7 +14293,7 @@ static void Cmd_settelekinesis(void)
|
||||
else
|
||||
{
|
||||
gBattleMons[gBattlerTarget].volatiles.telekinesis = TRUE;
|
||||
gDisableStructs[gBattlerTarget].telekinesisTimer = gBattleTurnCounter + 3;
|
||||
gDisableStructs[gBattlerTarget].telekinesisTimer = 3;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
@ -15300,13 +15300,13 @@ void BS_SetPledgeStatus(void)
|
||||
switch (cmd->sideStatus)
|
||||
{
|
||||
case SIDE_STATUS_RAINBOW:
|
||||
gSideTimers[side].rainbowTimer = gBattleTurnCounter + 4;
|
||||
gSideTimers[side].rainbowTimer = 4;
|
||||
break;
|
||||
case SIDE_STATUS_SEA_OF_FIRE:
|
||||
gSideTimers[side].seaOfFireTimer = gBattleTurnCounter + 4;
|
||||
gSideTimers[side].seaOfFireTimer = 4;
|
||||
break;
|
||||
case SIDE_STATUS_SWAMP:
|
||||
gSideTimers[side].swampTimer = gBattleTurnCounter + 4;
|
||||
gSideTimers[side].swampTimer = 4;
|
||||
}
|
||||
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
@ -16261,7 +16261,7 @@ void BS_TrySetTorment(void)
|
||||
&& !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL))
|
||||
{
|
||||
gBattleMons[gBattlerTarget].volatiles.torment = TRUE;
|
||||
gDisableStructs[gBattlerTarget].tormentTimer = gBattleTurnCounter + 3; // 3 turns excluding current turn
|
||||
gDisableStructs[gBattlerTarget].tormentTimer = 3;
|
||||
gEffectBattler = gBattlerTarget;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
@ -16595,7 +16595,7 @@ void BS_TrySetFairyLock(void)
|
||||
else
|
||||
{
|
||||
gFieldStatuses |= STATUS_FIELD_FAIRY_LOCK;
|
||||
gFieldTimers.fairyLockTimer = gBattleTurnCounter + 2;
|
||||
gFieldTimers.fairyLockTimer = 2;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
}
|
||||
@ -17147,7 +17147,7 @@ void BS_SetLuckyChant(void)
|
||||
if (!(gSideStatuses[side] & SIDE_STATUS_LUCKY_CHANT))
|
||||
{
|
||||
gSideStatuses[side] |= SIDE_STATUS_LUCKY_CHANT;
|
||||
gSideTimers[side].luckyChantTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[side].luckyChantTimer = 5;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
else
|
||||
@ -17519,9 +17519,9 @@ void BS_SetAuroraVeil(void)
|
||||
{
|
||||
gSideStatuses[side] |= SIDE_STATUS_AURORA_VEIL;
|
||||
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_LIGHT_CLAY)
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 8;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8;
|
||||
else
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = gBattleTurnCounter + 5;
|
||||
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5;
|
||||
|
||||
if (IsDoubleBattle() && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerAttacker) == 2)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
|
||||
|
||||
@ -1442,7 +1442,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler)
|
||||
}
|
||||
}
|
||||
|
||||
if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].throatChopTimer > gBattleTurnCounter && IsSoundMove(move))
|
||||
if (DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].throatChopTimer > 0 && IsSoundMove(move))
|
||||
{
|
||||
gCurrentMove = move;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
|
||||
@ -1683,7 +1683,7 @@ u32 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check)
|
||||
else if (check & MOVE_LIMITATION_BELCH && IsBelchPreventingMove(battler, move))
|
||||
unusableMoves |= 1u << i;
|
||||
// Throat Chop
|
||||
else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battler].throatChopTimer > gBattleTurnCounter && IsSoundMove(move))
|
||||
else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battler].throatChopTimer > 0 && IsSoundMove(move))
|
||||
unusableMoves |= 1u << i;
|
||||
// Stuff Cheeks
|
||||
else if (check & MOVE_LIMITATION_STUFF_CHEEKS && moveEffect == EFFECT_STUFF_CHEEKS && GetItemPocket(gBattleMons[battler].item) != POCKET_BERRIES)
|
||||
@ -2185,7 +2185,7 @@ static enum MoveCanceller CancellerVolatileBlocked(struct BattleContext *ctx)
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
return MOVE_STEP_FAILURE;
|
||||
}
|
||||
else if (GetActiveGimmick(ctx->battlerAtk) != GIMMICK_Z_MOVE && gDisableStructs[ctx->battlerAtk].throatChopTimer > gBattleTurnCounter && IsSoundMove(ctx->currentMove))
|
||||
else if (GetActiveGimmick(ctx->battlerAtk) != GIMMICK_Z_MOVE && gDisableStructs[ctx->battlerAtk].throatChopTimer > 0 && IsSoundMove(ctx->currentMove))
|
||||
{
|
||||
gProtectStructs[ctx->battlerAtk].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(ctx->battlerAtk, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
@ -2634,7 +2634,7 @@ static enum MoveCanceller CancellerMoveFailure(struct BattleContext *ctx)
|
||||
battleScript = BattleScript_ButItFailed;
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
if (gWishFutureKnock.futureSightCounter[ctx->battlerDef] > gBattleTurnCounter)
|
||||
if (gWishFutureKnock.futureSightCounter[ctx->battlerDef] > 0)
|
||||
battleScript = BattleScript_ButItFailed;
|
||||
break;
|
||||
case EFFECT_LAST_RESORT:
|
||||
@ -3200,9 +3200,9 @@ bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag)
|
||||
for (u32 i = 0; i < gBattlersCount; i++)
|
||||
gDisableStructs[i].terrainAbilityDone = FALSE;
|
||||
if (GetBattlerHoldEffect(battler) == HOLD_EFFECT_TERRAIN_EXTENDER)
|
||||
gFieldTimers.terrainTimer = gBattleTurnCounter + 8;
|
||||
gFieldTimers.terrainTimer = 8;
|
||||
else
|
||||
gFieldTimers.terrainTimer = gBattleTurnCounter + 5;
|
||||
gFieldTimers.terrainTimer = 5;
|
||||
gBattleScripting.battler = battler;
|
||||
return TRUE;
|
||||
}
|
||||
@ -3583,7 +3583,7 @@ static inline bool32 SetStartingFieldStatus(u32 flag, u32 message, u32 anim, u16
|
||||
gFieldStatuses |= flag;
|
||||
gBattleScripting.animArg1 = anim;
|
||||
if (gBattleStruct->startingStatusTimer)
|
||||
*timer = gBattleTurnCounter + gBattleStruct->startingStatusTimer;
|
||||
*timer = gBattleStruct->startingStatusTimer;
|
||||
else
|
||||
*timer = 0; // Infinite
|
||||
|
||||
@ -3602,7 +3602,7 @@ static inline bool32 SetStartingSideStatus(u32 flag, u32 side, u32 message, u32
|
||||
gSideStatuses[side] |= flag;
|
||||
gBattleScripting.animArg1 = anim;
|
||||
if (gBattleStruct->startingStatusTimer)
|
||||
*timer = gBattleTurnCounter + gBattleStruct->startingStatusTimer;
|
||||
*timer = gBattleStruct->startingStatusTimer;
|
||||
else
|
||||
*timer = 0; // Infinite
|
||||
|
||||
@ -3975,7 +3975,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
|
||||
case ABILITY_SLOW_START:
|
||||
if (!gSpecialStatuses[battler].switchInAbilityDone)
|
||||
{
|
||||
gDisableStructs[battler].slowStartTimer = gBattleTurnCounter + 5;
|
||||
gDisableStructs[battler].slowStartTimer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_SLOWSTART;
|
||||
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
|
||||
BattleScriptPushCursorAndCallback(BattleScript_SwitchInAbilityMsg);
|
||||
@ -4675,7 +4675,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
|
||||
gDisableStructs[gBattlerAttacker].truantCounter ^= 1;
|
||||
break;
|
||||
case ABILITY_SLOW_START:
|
||||
if (gDisableStructs[battler].slowStartTimer == gBattleTurnCounter)
|
||||
if (gDisableStructs[battler].slowStartTimer > 0 && --gDisableStructs[battler].slowStartTimer == 0)
|
||||
{
|
||||
BattleScriptExecute(BattleScript_SlowStartEnds);
|
||||
effect++;
|
||||
@ -7480,7 +7480,7 @@ static inline u32 CalcAttackStat(struct DamageContext *ctx)
|
||||
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0));
|
||||
break;
|
||||
case ABILITY_SLOW_START:
|
||||
if (gDisableStructs[battlerAtk].slowStartTimer > gBattleTurnCounter)
|
||||
if (gDisableStructs[battlerAtk].slowStartTimer > 0)
|
||||
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(0.5));
|
||||
break;
|
||||
case ABILITY_SOLAR_POWER:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user