summaryrefslogtreecommitdiff
path: root/src/battle/battle_ai.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-04-06 18:18:35 -0700
committerGitHub <noreply@github.com>2018-04-06 18:18:35 -0700
commitbe66a5cfefe578a0efb42d47fe8ed1a08e7fe30a (patch)
tree137e905d499c0b3cabae75db88df52233604adc0 /src/battle/battle_ai.c
parent18a6fb5c3fcdc852a8ee805ba02b2807938e1de8 (diff)
parent3571cb1d142090b59a9161a6bada11f0caf53b8c (diff)
Merge pull request #590 from huderlem/battle_9
Decompile battle_9
Diffstat (limited to 'src/battle/battle_ai.c')
-rw-r--r--src/battle/battle_ai.c104
1 files changed, 52 insertions, 52 deletions
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 629a57d25..134f6c18b 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -17,19 +17,19 @@ extern u8 gUnknown_02023A14_50;
extern u32 gUnknown_02023A14_4C;
extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
-extern u8 gActiveBank;
-extern u16 gBattlePartyID[MAX_BANKS_BATTLE];
+extern u8 gActiveBattler;
+extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern u16 gCurrentMove;
extern int gBattleMoveDamage;
extern u8 gBankAttacker;
extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gBattleMoveFlags;
+extern u8 gAbsentBattlerFlags;
+extern u8 gMoveResultFlags;
extern u16 gDynamicBasePower;
-extern u16 gLastUsedMove[MAX_BANKS_BATTLE];
-extern u32 gStatuses3[MAX_BANKS_BATTLE];
+extern u16 gLastUsedMove[MAX_BATTLERS_COUNT];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
extern u16 gSideAffecting[2];
-extern struct BattlePokemon gBattleMons[MAX_BANKS_BATTLE];
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u8 *BattleAIs[];
@@ -272,7 +272,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
s32 i;
u8 *data;
- MEMSET_ALT(UNK_2016A00_STRUCT, 0, sizeof(struct UnkBattleStruct1), i, data);
+ MEMSET_ALT(AI_BATTLE_HISTORY, 0, sizeof(struct BattleHistory), i, data);
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 0x400
@@ -282,8 +282,8 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
{
if (gTrainers[gTrainerBattleOpponent].items[i] != 0)
{
- UNK_2016A00_STRUCT->items[UNK_2016A00_STRUCT->numOfItems] = gTrainers[gTrainerBattleOpponent].items[i];
- UNK_2016A00_STRUCT->numOfItems++;
+ AI_BATTLE_HISTORY->trainerItems[AI_BATTLE_HISTORY->numItems] = gTrainers[gTrainerBattleOpponent].items[i];
+ AI_BATTLE_HISTORY->numItems++;
}
}
}
@@ -303,7 +303,7 @@ void BattleAI_SetupAIData(void)
for (i = 0; i < MAX_MON_MOVES; i++)
AI_THINKING_STRUCT->score[i] = 100;
- limitations = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ limitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
// do not consider moves the AI cannot select
// also, roll simulated RNG for moves that have a degree of
@@ -318,17 +318,17 @@ void BattleAI_SetupAIData(void)
// clear AI stack.
AI_STACK->size = 0;
- gBankAttacker = gActiveBank;
+ gBankAttacker = gActiveBattler;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
gBankTarget = Random() & 2; // just pick somebody to target.
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBankTarget])
gBankTarget ^= 2;
}
else
- gBankTarget = gActiveBank ^ 1;
+ gBankTarget = gActiveBattler ^ 1;
// special AI flag cases.
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
@@ -446,9 +446,9 @@ void sub_810745C(void)
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == 0)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == 0)
{
- UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] = gLastUsedMove[gBankTarget];
+ AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] = gLastUsedMove[gBankTarget];
return;
}
}
@@ -459,19 +459,19 @@ void unref_sub_81074A0(u8 a)
s32 i;
for (i = 0; i < 8; i++)
- UNK_2016A00_STRUCT->movesUsed[a / 2][i] = 0;
+ AI_BATTLE_HISTORY->usedMoves[a / 2][i] = 0;
}
void RecordAbilityBattle(u8 a, u8 b)
{
- if (GetBankSide(a) == 0)
- UNK_2016A00_STRUCT->unk20[GetBankIdentity(a) & 1] = b;
+ if (GetBattlerSide(a) == 0)
+ AI_BATTLE_HISTORY->abilities[GetBattlerPosition(a) & 1] = b;
}
void RecordItemBattle(u8 a, u8 b)
{
- if (GetBankSide(a) == 0)
- UNK_2016A00_STRUCT->unk22[GetBankIdentity(a) & 1] = b;
+ if (GetBattlerSide(a) == 0)
+ AI_BATTLE_HISTORY->itemEffects[GetBattlerPosition(a) & 1] = b;
}
static void BattleAICmd_if_random_less_than(void)
@@ -694,7 +694,7 @@ static void BattleAICmd_if_status4(void)
else
index = gBankTarget;
- arg1 = GetBankIdentity(index) & 1;
+ arg1 = GetBattlerPosition(index) & 1;
arg2 = T1_READ_32(gAIScriptPtr + 2);
if ((gSideAffecting[arg1] & arg2) != 0)
@@ -713,7 +713,7 @@ static void BattleAICmd_if_not_status4(void)
else
index = gBankTarget;
- arg1 = GetBankIdentity(index) & 1;
+ arg1 = GetBattlerPosition(index) & 1;
arg2 = T1_READ_32(gAIScriptPtr + 2);
if ((gSideAffecting[arg1] & arg2) == 0)
@@ -961,7 +961,7 @@ static void BattleAICmd_is_most_powerful_move(void)
gDynamicBasePower = 0;
eDynamicMoveType = 0;
eDmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -1072,7 +1072,7 @@ _08108250:\n\
adds r0, r5, r2\n\
movs r2, 0x1\n\
strb r2, [r0]\n\
- ldr r0, _08108340 @ =gBattleMoveFlags\n\
+ ldr r0, _08108340 @ =gMoveResultFlags\n\
strb r1, [r0]\n\
ldr r0, _08108344 @ =gCritMultiplier\n\
strb r2, [r0]\n\
@@ -1177,7 +1177,7 @@ _08108330: .4byte gBattleMoves\n\
_08108334: .4byte gSharedMem + 0x16800\n\
_08108338: .4byte gDynamicBasePower\n\
_0810833C: .4byte 0xfffff81c\n\
-_08108340: .4byte gBattleMoveFlags\n\
+_08108340: .4byte gMoveResultFlags\n\
_08108344: .4byte gCritMultiplier\n\
_08108348: .4byte gBattleMons\n\
_0810834C: .4byte gBankAttacker\n\
@@ -1317,7 +1317,7 @@ static void BattleAICmd_count_alive_pokemon(void)
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBattlerSide(index) == 0)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1325,14 +1325,14 @@ static void BattleAICmd_count_alive_pokemon(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u32 status;
- var = gBattlePartyID[index];
- status = GetBankIdentity(index) ^ 2;
- var2 = gBattlePartyID[GetBankByIdentity(status)];
+ var = gBattlerPartyIndexes[index];
+ status = GetBattlerPosition(index) ^ 2;
+ var2 = gBattlerPartyIndexes[GetBattlerAtPosition(status)];
}
else
{
- var = gBattlePartyID[index];
- var2 = gBattlePartyID[index];
+ var = gBattlerPartyIndexes[index];
+ var2 = gBattlerPartyIndexes[index];
}
for (i = 0; i < 6; i++)
@@ -1370,13 +1370,13 @@ static void BattleAICmd_get_ability(void)
else
index = gBankTarget;
- if (GetBankSide(index) == TARGET)
+ if (GetBattlerSide(index) == TARGET)
{
- u16 unk = GetBankIdentity(index) & 1;
+ u16 side = GetBattlerPosition(index) & 1;
- if (UNK_2016A00_STRUCT->unk20[unk] != 0)
+ if (AI_BATTLE_HISTORY->abilities[side] != 0)
{
- AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk20[unk];
+ AI_THINKING_STRUCT->funcResult = AI_BATTLE_HISTORY->abilities[side];
gAIScriptPtr += 2;
return;
}
@@ -1430,7 +1430,7 @@ static void BattleAICmd_get_highest_possible_damage(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
@@ -1453,7 +1453,7 @@ static void BattleAICmd_get_highest_possible_damage(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8) // if it's a status move, it wont do anything.
+ if (gMoveResultFlags & 8) // if it's a status move, it wont do anything.
gBattleMoveDamage = 0;
if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
@@ -1470,7 +1470,7 @@ static void BattleAICmd_if_damage_bonus(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gBattleMoveDamage = 40;
@@ -1487,7 +1487,7 @@ static void BattleAICmd_if_damage_bonus(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8)
+ if (gMoveResultFlags & 8)
gBattleMoveDamage = 0;
// store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
@@ -1677,7 +1677,7 @@ static void BattleAICmd_if_can_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
AI_CalcDmg(gBankAttacker, gBankTarget);
@@ -1706,7 +1706,7 @@ static void BattleAICmd_if_cant_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleStruct->dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
AI_CalcDmg(gBankAttacker, gBankTarget);
@@ -1745,7 +1745,7 @@ static void BattleAICmd_if_has_move(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == *temp_ptr)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
break;
}
if (i == 8)
@@ -1779,7 +1779,7 @@ static void BattleAICmd_if_dont_have_move(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] == *temp_ptr)
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] == *temp_ptr)
break;
}
if (i != 8)
@@ -1812,7 +1812,7 @@ static void BattleAICmd_if_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[gBankAttacker].moves[i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
@@ -1841,7 +1841,7 @@ static void BattleAICmd_if_not_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i] != 0 && gBattleMoves[UNK_2016A00_STRUCT->movesUsed[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
+ if (AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i] != 0 && gBattleMoves[AI_BATTLE_HISTORY->usedMoves[gBankTarget >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr += 7;
@@ -1885,7 +1885,7 @@ static void BattleAICmd_if_encored(void)
switch (gAIScriptPtr[1])
{
case 0: // _08109348
- if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
return;
@@ -1893,7 +1893,7 @@ static void BattleAICmd_if_encored(void)
gAIScriptPtr += 6;
return;
case 1: // _08109370
- if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
return;
@@ -1929,17 +1929,17 @@ static void BattleAICmd_watch(void)
static void BattleAICmd_get_hold_effect(void)
{
u8 index;
- u16 status;
+ u16 side;
if (gAIScriptPtr[1] == USER)
index = gBankAttacker;
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBattlerSide(index) == 0)
{
- status = (GetBankIdentity(index) & 1);
- AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk22[status];
+ side = (GetBattlerPosition(index) & 1);
+ AI_THINKING_STRUCT->funcResult = AI_BATTLE_HISTORY->itemEffects[side];
}
else
AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);