diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 5f077fe0cc..cec3241379 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -14,6 +14,7 @@ bool32 BattlerHasAi(u32 battlerId); bool32 IsAiBattlerAware(u32 battlerId); void ClearBattlerMoveHistory(u8 battlerId); void RecordLastUsedMoveBy(u32 battlerId, u32 move); +void RecordAllMoves(u32 battler); void RecordKnownMove(u8 battlerId, u32 move); void RecordAbilityBattle(u8 battlerId, u16 abilityId); void ClearBattlerAbilityHistory(u8 battlerId); diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index ed75fbad24..10668e07dd 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -507,6 +507,11 @@ void RecordKnownMove(u8 battlerId, u32 move) } } +void RecordAllMoves(u32 battler) +{ + memcpy(AI_PARTY->mons[GetBattlerSide(battler)][gBattlerPartyIndexes[battler]].moves, gBattleMons[battler].moves, MAX_MON_MOVES * sizeof(u16)); +} + void RecordAbilityBattle(u8 battlerId, u16 abilityId) { BATTLE_HISTORY->abilities[battlerId] = abilityId; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 61bd528b65..36327515c6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12439,7 +12439,7 @@ static void Cmd_transformdataexecution(void) { s32 i; u8 *battleMonAttacker, *battleMonTarget; - + gBattleMons[gBattlerAttacker].status2 |= STATUS2_TRANSFORMED; gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; gDisableStructs[gBattlerAttacker].disableTimer = 0; @@ -12464,7 +12464,11 @@ static void Cmd_transformdataexecution(void) else gBattleMons[gBattlerAttacker].pp[i] = 5; } - + + // update AI knowledge + RecordAllMoves(gBattlerAttacker); + RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability); + BtlController_EmitResetActionMoveSelection(gBattlerAttacker, BUFFER_A, RESET_MOVE_SELECTION); MarkBattlerForControllerExec(gBattlerAttacker); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORMED;