Fix USE_ITEM explicit targets

This commit is contained in:
Martin Griffin 2023-04-20 21:45:16 +01:00
parent ae80d545c5
commit c81a985b5b
4 changed files with 8 additions and 3 deletions

View File

@ -45,6 +45,7 @@ enum
RECORDED_PARTY_INDEX, RECORDED_PARTY_INDEX,
RECORDED_BATTLE_PALACE_ACTION, RECORDED_BATTLE_PALACE_ACTION,
RECORDED_ITEM_ID, RECORDED_ITEM_ID,
RECORDED_ITEM_TARGET,
}; };
extern u32 gRecordedBattleRngSeed; extern u32 gRecordedBattleRngSeed;

View File

@ -1441,6 +1441,7 @@ static void RecordedOpponentHandleChooseItem(void)
u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler);
u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler);
gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2; gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2;
gBattleStruct->itemPartyIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, gActiveBattler);
BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]); BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]);
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
} }

View File

@ -1465,6 +1465,7 @@ static void RecordedPlayerHandleChooseItem(void)
u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); u8 byte1 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler);
u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler); u8 byte2 = RecordedBattle_GetBattlerAction(RECORDED_ITEM_ID, gActiveBattler);
gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2; gBattleStruct->chosenItem[gActiveBattler] = (byte1 << 8) | byte2;
gBattleStruct->itemPartyIndex[gActiveBattler] = RecordedBattle_GetBattlerAction(RECORDED_ITEM_TARGET, gActiveBattler);
BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]); BtlController_EmitOneReturnValue(BUFFER_B, gBattleStruct->chosenItem[gActiveBattler]);
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }

View File

@ -1540,9 +1540,11 @@ void UseItem(u32 sourceLine, struct BattlePokemon *battler, struct ItemContext c
PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, (ctx.itemId >> 8) & 0xFF); PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, (ctx.itemId >> 8) & 0xFF);
PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, ctx.itemId & 0xFF); PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_ID, ctx.itemId & 0xFF);
if (ctx.explicitPartyIndex) if (ctx.explicitPartyIndex)
gBattleStruct->itemPartyIndex[battlerId] = ctx.partyIndex; PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_TARGET, ctx.partyIndex);
if (ctx.explicitMove) else if (ctx.explicitMove)
gBattleStruct->itemPartyIndex[battlerId] = i; PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_TARGET, i);
else
PushBattlerAction(sourceLine, battlerId, RECORDED_ITEM_TARGET, 0);
DATA.actionBattlers |= 1 << battlerId; DATA.actionBattlers |= 1 << battlerId;
} }