Document BattleSystem_PartyCount

This commit is contained in:
lhearachel
2023-09-28 21:01:04 -07:00
parent ff5b3b820e
commit 0154d8a221
8 changed files with 55 additions and 35 deletions

View File

@@ -43,7 +43,24 @@ BattleContext * BattleSystem_Context(BattleSystem * param0);
BattlerData * BattleSystem_BattlerData(BattleSystem * param0, int param1);
int BattleSystem_MaxBattlers(BattleSystem * param0);
Party * BattleSystem_Party(BattleSystem * param0, int param1);
int ov16_0223DF60(BattleSystem * param0, int param1);
/**
* @brief Get the party count for a particular battler.
*
* - If the battle taking place is a 2vs2 battle (player-with-partner vs. two
* opponent trainers), then the battler input is not modified.
* - If the battle taking place is against two opponents (but the player does
* not have a partner) and the requested count is for an enemy party, then the
* battler input is not modified.
* - If the battle taking place is otherwise a double-battle, then the battler
* input will be normalized to 0 or 1.
* - Otherwise, the battler input is used to retrieve the particular party.
*
* @param battleSys
* @param battler The battler party to count.
* @return Number of Pokemon in the requested battler's party.
*/
int BattleSystem_PartyCount(BattleSystem *battleSys, int battler);
Pokemon * ov16_0223DFAC(BattleSystem * param0, int param1, int param2);
UnkStruct_02007768 * ov16_0223E000(BattleSystem * param0);
UnkStruct_ov12_0221FCDC * ov16_0223E008(BattleSystem * param0);

View File

@@ -1335,7 +1335,7 @@ static void ov14_02220D8C (BattleSystem * param0, BattleContext * param1)
v4 = v5 = param1->selectedPartySlot[v3];
}
for (v2 = 0; v2 < ov16_0223DF60(param0, v3); v2++) {
for (v2 = 0; v2 < BattleSystem_PartyCount(param0, v3); v2++) {
v1 = Party_GetPokemonBySlotIndex(v0, v2);
if ((v2 != v4) && (v2 != v5) && (Pokemon_GetValue(v1, MON_DATA_CURRENT_HP, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 494)) {
@@ -1553,7 +1553,7 @@ static void ov14_022211AC (BattleSystem * param0, BattleContext * param1)
v0 = BattleSystem_Party(param0, v3);
for (v2 = 0; v2 < ov16_0223DF60(param0, v3); v2++) {
for (v2 = 0; v2 < BattleSystem_PartyCount(param0, v3); v2++) {
v1 = Party_GetPokemonBySlotIndex(v0, v2);
if ((v2 != v4) && (v2 != v5) && (Pokemon_GetValue(v1, MON_DATA_CURRENT_HP, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 494) && (Pokemon_GetValue(v1, MON_DATA_160, NULL) & v7)) {
@@ -1590,7 +1590,7 @@ static void ov14_022212A0 (BattleSystem * param0, BattleContext * param1)
v0 = BattleSystem_Party(param0, v3);
for (v2 = 0; v2 < ov16_0223DF60(param0, v3); v2++) {
for (v2 = 0; v2 < BattleSystem_PartyCount(param0, v3); v2++) {
v1 = Party_GetPokemonBySlotIndex(v0, v2);
if ((v2 != v4) && (v2 != v5) && (Pokemon_GetValue(v1, MON_DATA_CURRENT_HP, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 0) && (Pokemon_GetValue(v1, MON_DATA_SPECIES_EGG, NULL) != 494) && ((Pokemon_GetValue(v1, MON_DATA_160, NULL) & v7) == 0)) {
@@ -2232,7 +2232,7 @@ static void ov14_02221D88 (BattleSystem * param0, BattleContext * param1)
v2 = ov14_02222CF0(param1);
v0 = ov14_02222D34(param1, v1);
for (v3 = 0; v3 < ov16_0223DF60(param0, v0); v3++) {
for (v3 = 0; v3 < BattleSystem_PartyCount(param0, v0); v3++) {
v4 = ov16_0223DFAC(param0, v0, v3);
if (v3 != param1->selectedPartySlot[v0]) {
@@ -2258,7 +2258,7 @@ static void ov14_02221E18 (BattleSystem * param0, BattleContext * param1)
v2 = ov14_02222CF0(param1);
v0 = ov14_02222D34(param1, v1);
for (v3 = 0; v3 < ov16_0223DF60(param0, v0); v3++) {
for (v3 = 0; v3 < BattleSystem_PartyCount(param0, v0); v3++) {
v5 = ov16_0223DFAC(param0, v0, v3);
if (v3 != param1->selectedPartySlot[v0]) {
@@ -2403,7 +2403,7 @@ static void ov14_022220CC (BattleSystem * param0, BattleContext * param1)
v5 = ov14_02222D7C(param0, param1, param1->aiContext.attacker, &param1->battleMons[v4].moves[0], &v7[0], param1->battleMons[v4].heldItem, &v9[0], Battler_Ability(param1, v4), param1->battleMons[v4].moveEffectsData.embargoTurns, v2);
for (v0 = 0; v0 < ov16_0223DF60(param0, v4); v0++) {
for (v0 = 0; v0 < BattleSystem_PartyCount(param0, v4); v0++) {
if (v0 != param1->selectedPartySlot[v4]) {
v10 = ov16_0223DFAC(param0, v4, v0);
@@ -3421,7 +3421,7 @@ static BOOL ov14_0222342C (BattleSystem * param0, BattleContext * param1, int pa
}
}
for (v0 = 0; v0 < ov16_0223DF60(param0, param2); v0++) {
for (v0 = 0; v0 < BattleSystem_PartyCount(param0, param2); v0++) {
v5 = ov16_0223DFAC(param0, param2, v0);
if ((Pokemon_GetValue(v5, MON_DATA_CURRENT_HP, NULL) != 0) && (Pokemon_GetValue(v5, MON_DATA_SPECIES_EGG, NULL) != 0) && (Pokemon_GetValue(v5, MON_DATA_SPECIES_EGG, NULL) != 494) && (v0 != param1->selectedPartySlot[param2])) {
@@ -3511,7 +3511,7 @@ static BOOL ov14_022235F0 (BattleSystem * param0, BattleContext * param1, int pa
}
v9 = 0;
v10 = ov16_0223DF60(param0, param2);
v10 = BattleSystem_PartyCount(param0, param2);
for (v0 = v9; v0 < v10; v0++) {
v12 = ov16_0223DFAC(param0, param2, v0);
@@ -3706,7 +3706,7 @@ static BOOL ov14_02223C8C (BattleSystem * param0, BattleContext * param1, int pa
}
v6 = 0;
v7 = ov16_0223DF60(param0, param2);
v7 = BattleSystem_PartyCount(param0, param2);
for (v0 = v6; v0 < v7; v0++) {
v8 = ov16_0223DFAC(param0, param2, v0);
@@ -3751,7 +3751,7 @@ static BOOL ov14_02223E10 (BattleSystem * param0, BattleContext * param1, int pa
}
v7 = 0;
v8 = ov16_0223DF60(param0, param2);
v8 = BattleSystem_PartyCount(param0, param2);
for (v0 = v7; v0 < v8; v0++) {
v9 = ov16_0223DFAC(param0, param2, v0);
@@ -3860,7 +3860,7 @@ static BOOL ov14_022241A4 (BattleSystem * param0, BattleContext * param1, int pa
}
v5 = 0;
v6 = ov16_0223DF60(param0, param2);
v6 = BattleSystem_PartyCount(param0, param2);
for (v0 = v5; v0 < v6; v0++) {
v7 = ov16_0223DFAC(param0, param2, v0);
@@ -3936,7 +3936,7 @@ int ov14_022243BC (BattleSystem * param0, int param1)
}
v4 = 0;
v5 = ov16_0223DF60(param0, param1);
v5 = BattleSystem_PartyCount(param0, param1);
for (v0 = v4; v0 < v5; v0++) {
v6 = ov16_0223DFAC(param0, param1, v0);

View File

@@ -1278,7 +1278,7 @@ static void ov16_0223C2C0 (BattleSystem * param0, BattleParams * param1)
}
for (v0 = 0; v0 < param0->maxBattlers; v0++) {
for (v1 = 0; v1 < ov16_0223DF60(param0, v0); v1++) {
for (v1 = 0; v1 < BattleSystem_PartyCount(param0, v0); v1++) {
v3 = ov16_0223DFAC(param0, v0, v1);
if (v0 == 2) {

View File

@@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#include "battle/common.h"
#include "constants/battle.h"
#include "struct_decls/struct_02002F38_decl.h"
@@ -83,7 +84,7 @@ BattleContext * BattleSystem_Context(BattleSystem * param0);
BattlerData * BattleSystem_BattlerData(BattleSystem * param0, int param1);
int BattleSystem_MaxBattlers(BattleSystem * param0);
Party * BattleSystem_Party(BattleSystem * param0, int param1);
int ov16_0223DF60(BattleSystem * param0, int param1);
int BattleSystem_PartyCount(BattleSystem *battleSys, int battler);
Pokemon * ov16_0223DFAC(BattleSystem * param0, int param1, int param2);
UnkStruct_02007768 * ov16_0223E000(BattleSystem * param0);
UnkStruct_ov12_0221FCDC * ov16_0223E008(BattleSystem * param0);
@@ -271,14 +272,16 @@ Party * BattleSystem_Party (BattleSystem * param0, int param1)
}
}
int ov16_0223DF60 (BattleSystem * param0, int param1)
int BattleSystem_PartyCount(BattleSystem *battleSys, int battler)
{
if ((param0->battleType & 0x8) || ((param0->battleType & 0x10) && (BattleSystem_BattlerSlot(param0, param1) & 0x1))) {
return Party_GetCurrentCount(param0->parties[param1]);
} else if (param0->battleType & 0x2) {
return Party_GetCurrentCount(param0->parties[param1 & 1]);
if ((battleSys->battleType & BATTLE_TYPE_2vs2)
|| ((battleSys->battleType & BATTLE_TYPE_TAG)
&& (BattleSystem_BattlerSlot(battleSys, battler) & BATTLER_THEM))) {
return Party_GetCurrentCount(battleSys->parties[battler]);
} else if (battleSys->battleType & BATTLE_TYPE_DOUBLES) {
return Party_GetCurrentCount(battleSys->parties[battler & 1]);
} else {
return Party_GetCurrentCount(param0->parties[param1]);
return Party_GetCurrentCount(battleSys->parties[battler]);
}
}
@@ -1086,7 +1089,7 @@ void ov16_0223EE70 (BattleSystem * param0)
return;
}
for (v0 = 0; v0 < ov16_0223DF60(param0, 0); v0++) {
for (v0 = 0; v0 < BattleSystem_PartyCount(param0, 0); v0++) {
v2 = ov16_0223DFAC(param0, 0, v0);
v3 = Pokemon_GetValue(v2, MON_DATA_SPECIES_EGG, NULL);

View File

@@ -4307,7 +4307,7 @@ static BOOL ov16_02244BC4 (BattleSystem * param0, BattleContext * param1)
int v11, v12;
v2 = BattleSystem_Party(param0, param1->defender);
v4 = ov16_0223DF60(param0, param1->defender);
v4 = BattleSystem_PartyCount(param0, param1->defender);
if ((v1 & 0x8) || ((v1 & 0x10) && (Battler_Side(param0, param1->defender)))) {
v8 = 0;
@@ -4968,7 +4968,7 @@ static BOOL ov16_02245D68 (BattleSystem * param0, BattleContext * param1)
ov16_02248AF0(param1, 1);
v1 = ov16_0223DF60(param0, param1->attacker);
v1 = BattleSystem_PartyCount(param0, param1->attacker);
if (param1->multiHitNumHits == 0) {
param1->multiHitNumHits = 2;
@@ -5138,7 +5138,7 @@ static BOOL ov16_022461F4 (BattleSystem * param0, BattleContext * param1)
v0 = ov16_02248AD0(param1);
v6 = 0;
v5 = ov16_0223DF60(param0, param1->attacker);
v5 = BattleSystem_PartyCount(param0, param1->attacker);
for (v3 = 0; v3 < v5; v3++) {
if (v3 != param1->selectedPartySlot[param1->attacker]) {
@@ -6199,7 +6199,7 @@ static BOOL ov16_022476F8 (BattleSystem * param0, BattleContext * param1)
ov16_02248AF0(param1, 1);
for (v1 = 0; v1 < ov16_0223DF60(param0, 0); v1++) {
for (v1 = 0; v1 < BattleSystem_PartyCount(param0, 0); v1++) {
v8 = ov16_0223DFAC(param0, 0, v1);
v4 = Pokemon_GetValue(v8, MON_DATA_SPECIES_EGG, NULL);
v5 = Pokemon_GetValue(v8, MON_DATA_HELD_ITEM, NULL);
@@ -7375,7 +7375,7 @@ static BOOL ov16_02248944 (BattleSystem * param0, BattleContext * param1)
v0 = ov16_02248AD0(param1);
if (((ov16_0223DF60(param0, 0) != 6) || (sub_020799A0(param0->unk_64) != 18)) && (param0->unk_2410)) {
if (((BattleSystem_PartyCount(param0, 0) != 6) || (sub_020799A0(param0->unk_64) != 18)) && (param0->unk_2410)) {
ov16_02248AF0(param1, v0);
}
@@ -7660,7 +7660,7 @@ static void ov16_02248E74 (UnkStruct_0201CD38 * param0, void * param1)
v5 = (v2->unk_04->faintedMon) >> 1 & 1;
v6 = 0;
for (v1 = v2->unk_30[6]; v1 < ov16_0223DF60(v2->unk_00, v6); v1++) {
for (v1 = v2->unk_30[6]; v1 < BattleSystem_PartyCount(v2->unk_00, v6); v1++) {
v3 = ov16_0223DFAC(v2->unk_00, v6, v1);
v9 = Pokemon_GetValue(v3, MON_DATA_HELD_ITEM, NULL);
v10 = Item_LoadParam(v9, 1, 5);
@@ -7670,7 +7670,7 @@ static void ov16_02248E74 (UnkStruct_0201CD38 * param0, void * param1)
}
}
if (v1 == ov16_0223DF60(v2->unk_00, v6)) {
if (v1 == BattleSystem_PartyCount(v2->unk_00, v6)) {
v2->unk_28 = 38;
} else if ((v8 & 0x2) && ((v8 & 0x40) == 0)) {
if (v2->unk_04->selectedPartySlot[2] == v1) {
@@ -8543,7 +8543,7 @@ static void ov16_02249B80 (UnkStruct_0201CD38 * param0, void * param1)
v16 = sub_0208712C(5, 1, Pokemon_GetValue(v3, MON_DATA_SPECIES, NULL), 10, ov16_0223EDA4(v2->unk_00));
v2->unk_50[1] = v16;
if (ov16_0223DF60(v2->unk_00, 0) < 6) {
if (BattleSystem_PartyCount(v2->unk_00, 0) < 6) {
v16->unk_44 = 0;
} else {
v16->unk_44 = 1174 + ov16_0223F240(v2->unk_00);

View File

@@ -3133,7 +3133,7 @@ BOOL BattleSystem_CheckAnySwitches (BattleSystem * param0, BattleContext * param
v0 = 0;
v12 = BattleSystem_BattleType(param0);
v1 = BattleSystem_Party(param0, param2);
v3 = ov16_0223DF60(param0, param2);
v3 = BattleSystem_PartyCount(param0, param2);
if ((v12 & 0x8) || ((v12 & 0x10) && (BattleSystem_BattlerSlot(param0, param2) & 0x1))) {
v7 = 0;
@@ -7795,7 +7795,7 @@ int ov16_0225BA88 (BattleSystem * param0, int param1)
v2 = BattleSystem_RandomOpponent(param0, v20, param1);
v17 = 0;
v18 = ov16_0223DF60(param0, param1);
v18 = BattleSystem_PartyCount(param0, param1);
v10 = 0;
while (v10 != 0x3f) {

View File

@@ -673,7 +673,7 @@ static void ov16_0225C5E0 (BattleSystem * param0, BattlerData * param1)
u32 v5;
v5 = 0;
v3 = ov16_0223DF60(param0, param1->unk_190);
v3 = BattleSystem_PartyCount(param0, param1->unk_190);
for (v2 = 0; v2 < v3; v2++) {
v1 = ov16_0223DFAC(param0, param1->unk_190, v2);

View File

@@ -4299,14 +4299,14 @@ static void ov16_02261E8C (UnkStruct_0201CD38 * param0, void * param1)
Heap_FreeToHeap(v9);
for (v3 = 0; v3 < ov16_0223DF60(v0->unk_00, v6); v3++) {
for (v3 = 0; v3 < BattleSystem_PartyCount(v0->unk_00, v6); v3++) {
v9 = ov16_0223DFAC(v0->unk_00, v6, v0->unk_1C[v6][v3]);
v10 = Party_GetPokemonBySlotIndex(v0->unk_04->unk_00, v3 * 2);
Pokemon_Copy(v9, v10);
v0->unk_04->unk_2C[v3 * 2] = v0->unk_1C[v6][v3];
}
for (v3 = 0; v3 < ov16_0223DF60(v0->unk_00, v7); v3++) {
for (v3 = 0; v3 < BattleSystem_PartyCount(v0->unk_00, v7); v3++) {
v9 = ov16_0223DFAC(v0->unk_00, v7, v0->unk_1C[v7][v3]);
v10 = Party_GetPokemonBySlotIndex(v0->unk_04->unk_00, v3 * 2 + 1);
Pokemon_Copy(v9, v10);