Fixes EndTurn Eject Pack (#7813)
This commit is contained in:
parent
ac75fe04d8
commit
bd1a4db380
@ -61,8 +61,8 @@ enum EndTurnResolutionOrder
|
||||
ENDTURN_TERRAIN,
|
||||
ENDTURN_THIRD_EVENT_BLOCK,
|
||||
ENDTURN_EMERGENCY_EXIT_4,
|
||||
ENDTURN_ABILITIES,
|
||||
ENDTURN_FOURTH_EVENT_BLOCK,
|
||||
ENDTURN_FORM_CHANGE_ABILITIES,
|
||||
ENDTURN_EJECT_PACK,
|
||||
ENDTURN_DYNAMAX,
|
||||
ENDTURN_COUNT,
|
||||
};
|
||||
@ -101,13 +101,6 @@ enum ThirdEventBlock
|
||||
THIRD_EVENT_BLOCK_ITEMS,
|
||||
};
|
||||
|
||||
// Form changing abilities and Eject Pack
|
||||
enum FourthEventBlock
|
||||
{
|
||||
FOURTH_EVENT_BLOCK_HUNGER_SWITCH,
|
||||
FOURTH_EVENT_BLOCK_EJECT_PACK,
|
||||
};
|
||||
|
||||
static u32 GetBattlerSideForMessage(u32 side)
|
||||
{
|
||||
u32 battler = 0;
|
||||
@ -1458,7 +1451,7 @@ static bool32 HandleEndTurnThirdEventBlock(u32 battler)
|
||||
return effect;
|
||||
}
|
||||
|
||||
static bool32 HandleEndTurnAbilities(u32 battler)
|
||||
static bool32 HandleEndTurnFormChangeAbilities(u32 battler)
|
||||
{
|
||||
bool32 effect = FALSE;
|
||||
|
||||
@ -1472,6 +1465,7 @@ static bool32 HandleEndTurnAbilities(u32 battler)
|
||||
case ABILITY_SCHOOLING:
|
||||
case ABILITY_SHIELDS_DOWN:
|
||||
case ABILITY_ZEN_MODE:
|
||||
case ABILITY_HUNGER_SWITCH:
|
||||
if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE))
|
||||
effect = TRUE;
|
||||
}
|
||||
@ -1479,38 +1473,10 @@ static bool32 HandleEndTurnAbilities(u32 battler)
|
||||
return effect;
|
||||
}
|
||||
|
||||
static bool32 HandleEndTurnFourthEventBlock(u32 battler)
|
||||
static bool32 HandleEndTurnEjectPack(u32 battler)
|
||||
{
|
||||
bool32 effect = FALSE;
|
||||
|
||||
switch (gBattleStruct->eventBlockCounter)
|
||||
{
|
||||
case FOURTH_EVENT_BLOCK_HUNGER_SWITCH:
|
||||
{
|
||||
u32 ability = GetBattlerAbility(battler);
|
||||
if (ability == ABILITY_HUNGER_SWITCH)
|
||||
{
|
||||
if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, battler, ability, 0, MOVE_NONE))
|
||||
effect = TRUE;
|
||||
}
|
||||
gBattleStruct->eventBlockCounter++;
|
||||
break;
|
||||
}
|
||||
case FOURTH_EVENT_BLOCK_EJECT_PACK:
|
||||
{
|
||||
enum ItemHoldEffect holdEffect = GetBattlerHoldEffect(battler, TRUE);
|
||||
if (holdEffect == HOLD_EFFECT_EJECT_PACK)
|
||||
{
|
||||
if (ItemBattleEffects(ITEMEFFECT_NORMAL, battler))
|
||||
effect = TRUE;
|
||||
}
|
||||
gBattleStruct->eventBlockCounter = 0;
|
||||
gBattleStruct->turnEffectsBattlerId++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return effect;
|
||||
gBattleStruct->turnEffectsBattlerId++;
|
||||
return TrySwitchInEjectPack(ITEMEFFECT_NORMAL);
|
||||
}
|
||||
|
||||
static bool32 HandleEndTurnDynamax(u32 battler)
|
||||
@ -1577,8 +1543,8 @@ static bool32 (*const sEndTurnEffectHandlers[])(u32 battler) =
|
||||
[ENDTURN_TERRAIN] = HandleEndTurnTerrain,
|
||||
[ENDTURN_THIRD_EVENT_BLOCK] = HandleEndTurnThirdEventBlock,
|
||||
[ENDTURN_EMERGENCY_EXIT_4] = HandleEndTurnEmergencyExit,
|
||||
[ENDTURN_ABILITIES] = HandleEndTurnAbilities,
|
||||
[ENDTURN_FOURTH_EVENT_BLOCK] = HandleEndTurnFourthEventBlock,
|
||||
[ENDTURN_FORM_CHANGE_ABILITIES] = HandleEndTurnFormChangeAbilities,
|
||||
[ENDTURN_EJECT_PACK] = HandleEndTurnEjectPack,
|
||||
[ENDTURN_DYNAMAX] = HandleEndTurnDynamax,
|
||||
};
|
||||
|
||||
|
||||
@ -11499,14 +11499,11 @@ bool32 TrySwitchInEjectPack(enum ItemCaseId caseID)
|
||||
gBattleScripting.battler = battler;
|
||||
gLastUsedItem = gBattleMons[battler].item;
|
||||
if (caseID == ITEMEFFECT_ON_SWITCH_IN_FIRST_TURN)
|
||||
{
|
||||
BattleScriptPushCursorAndCallback(BattleScript_EjectPackActivate_End3);
|
||||
}
|
||||
else if (caseID == ITEMEFFECT_NORMAL)
|
||||
BattleScriptExecute(BattleScript_EjectPackActivate_End2);
|
||||
else
|
||||
{
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_EjectPackActivate_Ret;
|
||||
}
|
||||
BattleScriptCall(BattleScript_EjectPackActivate_Ret);
|
||||
gAiLogicData->ejectPackSwitch = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -338,3 +338,26 @@ SINGLE_BATTLE_TEST("Eject Pack does not activate if mon is switched in due to Ej
|
||||
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
|
||||
}
|
||||
}
|
||||
|
||||
DOUBLE_BATTLE_TEST("Eject Pack will trigger on the fastest mon at the end of the turn")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_SYRUP_BOMB, MOVE_EFFECT_SYRUP_BOMB) == TRUE);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(1); Item(ITEM_EJECT_PACK); }
|
||||
PLAYER(SPECIES_WYNAUT) { Speed(10); Item(ITEM_EJECT_PACK); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(2); }
|
||||
OPPONENT(SPECIES_WYNAUT) { Speed(4); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(3); }
|
||||
} WHEN {
|
||||
TURN {
|
||||
MOVE(opponentLeft, MOVE_SYRUP_BOMB, target: playerLeft);
|
||||
MOVE(opponentRight, MOVE_SYRUP_BOMB, target: playerRight);
|
||||
SEND_OUT(playerRight, 2);
|
||||
}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, playerRight);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, playerLeft);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerRight);
|
||||
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user