Document BtlCmd_CalcExpGain

This commit is contained in:
lhearachel
2023-10-12 17:23:02 -07:00
parent 5d7407fd73
commit f2365bf596
7 changed files with 194 additions and 184 deletions

View File

@@ -28,6 +28,7 @@
#define BATTLE_TYPE_FORCED_SET_MODE (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_NO_AI_ITEMS (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_AI | BATTLE_TYPE_PAL_PARK)
#define BATTLE_TYPE_NO_MOVES (BATTLE_TYPE_SAFARI | BATTLE_TYPE_PAL_PARK)
#define BATTLE_TYPE_NO_EXPERIENCE (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_PAL_PARK)
#define MAX_LINK_BATTLERS 4
#define MAX_BATTLERS 4

View File

@@ -25,7 +25,7 @@ struct BattlerData {
void * unk_8C;
u8 unk_90[256];
u8 unk_190;
u8 unk_191;
u8 battlerType;
u8 bootState;
u8 unk_193;
UnkStruct_0201CD38 * unk_194;

View File

@@ -141,7 +141,7 @@ static BOOL BtlCmd_JumpToSub(BattleSystem *battleSys, BattleContext *battleCtx);
static BOOL BtlCmd_JumpToBattleEffect(BattleSystem *battleSys, BattleContext *battleCtx);
static BOOL BtlCmd_JumpToMove(BattleSystem *battleSys, BattleContext *battleCtx);
static BOOL BtlCmd_CheckCritical(BattleSystem *battleSys, BattleContext *battleCtx);
static BOOL ov16_02241D34(BattleSystem * param0, BattleContext * param1);
static BOOL BtlCmd_CalcExpGain(BattleSystem *battleSys, BattleContext *battleCtx);
static BOOL ov16_02241EB0(BattleSystem * param0, BattleContext * param1);
static BOOL ov16_02241EF0(BattleSystem * param0, BattleContext * param1);
static BOOL ov16_02241F1C(BattleSystem * param0, BattleContext * param1);
@@ -401,7 +401,7 @@ static const BtlCmd sBattleCommands[] = {
BtlCmd_JumpToBattleEffect,
BtlCmd_JumpToMove,
BtlCmd_CheckCritical,
ov16_02241D34,
BtlCmd_CalcExpGain,
ov16_02241EB0,
ov16_02241EF0,
ov16_02241F1C,
@@ -651,7 +651,7 @@ static BOOL BtlCmd_SetEncounter(BattleSystem *battleSys, BattleContext *battleCt
for (i = 0; i < maxBattlers; i++) {
BattlerData *battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SetEncounter(battleSys, i);
BattleSystem_DexFlagSeen(battleSys, i);
}
@@ -696,7 +696,7 @@ static BOOL BtlCmd_ShowEncounter(BattleSystem *battleSys, BattleContext *battleC
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_ShowEncounter(battleSys, i);
BattleSystem_DexFlagSeen(battleSys, i);
}
@@ -710,7 +710,7 @@ static BOOL BtlCmd_ShowEncounter(BattleSystem *battleSys, BattleContext *battleC
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleSystem_NoExpGain(battleCtx, i);
BattleSystem_FlagExpGain(battleSys, battleCtx, i);
BattleIO_ShowEncounter(battleSys, i);
@@ -722,7 +722,7 @@ static BOOL BtlCmd_ShowEncounter(BattleSystem *battleSys, BattleContext *battleC
case BTLSCR_ATTACKER:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->attacker);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -737,7 +737,7 @@ static BOOL BtlCmd_ShowEncounter(BattleSystem *battleSys, BattleContext *battleC
case BTLSCR_DEFENDER:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->defender);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -752,7 +752,7 @@ static BOOL BtlCmd_ShowEncounter(BattleSystem *battleSys, BattleContext *battleC
case BTLSCR_SWITCHED_MON:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->switchedMon);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -802,7 +802,7 @@ static BOOL BtlCmd_ShowPokemon(BattleSystem *battleSys, BattleContext *battleCtx
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & 0x1) == 0) {
if ((battlerData->battlerType & 0x1) == 0) {
BattleIO_ShowPokemon(battleSys, i, NULL, 0);
BattleSystem_DexFlagSeen(battleSys, i);
}
@@ -816,7 +816,7 @@ static BOOL BtlCmd_ShowPokemon(BattleSystem *battleSys, BattleContext *battleCtx
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & 0x1) {
if (battlerData->battlerType & 0x1) {
BattleSystem_NoExpGain(battleCtx, i);
BattleSystem_FlagExpGain(battleSys, battleCtx, i);
BattleIO_ShowPokemon(battleSys, i, NULL, 0);
@@ -828,7 +828,7 @@ static BOOL BtlCmd_ShowPokemon(BattleSystem *battleSys, BattleContext *battleCtx
case BTLSCR_ATTACKER:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->attacker);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -843,7 +843,7 @@ static BOOL BtlCmd_ShowPokemon(BattleSystem *battleSys, BattleContext *battleCtx
case BTLSCR_DEFENDER:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->defender);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -858,7 +858,7 @@ static BOOL BtlCmd_ShowPokemon(BattleSystem *battleSys, BattleContext *battleCtx
case BTLSCR_SWITCHED_MON:
battlerData = BattleSystem_BattlerData(battleSys, battleCtx->switchedMon);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_1);
BattleSystem_FlagExpGain(battleSys, battleCtx, BATTLER_ENEMY_SLOT_2);
} else {
@@ -904,7 +904,7 @@ static BOOL BtlCmd_ReturnPokemon(BattleSystem *battleSys, BattleContext *battleC
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_ReturnPokemon(battleSys, battleCtx, i);
}
}
@@ -914,7 +914,7 @@ static BOOL BtlCmd_ReturnPokemon(BattleSystem *battleSys, BattleContext *battleC
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) &&
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) &&
(battleCtx->battlersSwitchingMask & FlagIndex(i)) == FALSE) {
BattleIO_ReturnPokemon(battleSys, battleCtx, i);
}
@@ -978,7 +978,7 @@ static BOOL BtlCmd_SetTrainerEncounter(BattleSystem *battleSys, BattleContext *b
if (BattleSystem_BattleType(battleSys) & 0x10) {
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 != BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
if (battlerData->battlerType != BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
BattleIO_SetTrainerEncounter(battleSys, i);
}
}
@@ -999,7 +999,7 @@ static BOOL BtlCmd_SetTrainerEncounter(BattleSystem *battleSys, BattleContext *b
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_SetTrainerEncounter(battleSys, i);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1014,7 +1014,7 @@ static BOOL BtlCmd_SetTrainerEncounter(BattleSystem *battleSys, BattleContext *b
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SetTrainerEncounter(battleSys, i);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1070,7 +1070,7 @@ static BOOL BtlCmd_ThrowTrainerBall(BattleSystem *battleSys, BattleContext *batt
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_ThrowTrainerBall(battleSys, i, ballTypeIn);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1085,7 +1085,7 @@ static BOOL BtlCmd_ThrowTrainerBall(BattleSystem *battleSys, BattleContext *batt
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_ThrowTrainerBall(battleSys, i, ballTypeIn);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1140,7 +1140,7 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_SlideTrainerOut(battleSys, i);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1155,7 +1155,7 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SlideTrainerOut(battleSys, i);
if ((BattleSystem_BattleType(battleSys) & BATTLE_TYPE_2vs2) == FALSE
@@ -1171,8 +1171,8 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_SOLO_PLAYER
|| battlerData->unk_191 == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) {
if (battlerData->battlerType == BATTLER_TYPE_SOLO_PLAYER
|| battlerData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) {
BattleIO_SlideTrainerOut(battleSys, i);
break;
}
@@ -1183,8 +1183,8 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_SOLO_ENEMY
|| battlerData->unk_191 == BATTLER_TYPE_ENEMY_SIDE_SLOT_1) {
if (battlerData->battlerType == BATTLER_TYPE_SOLO_ENEMY
|| battlerData->battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_1) {
BattleIO_SlideTrainerOut(battleSys, i);
break;
}
@@ -1195,7 +1195,7 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
if (battlerData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
BattleIO_SlideTrainerOut(battleSys, i);
break;
}
@@ -1206,7 +1206,7 @@ static BOOL BtlCmd_SlideTrainerOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_ENEMY_SIDE_SLOT_2) {
if (battlerData->battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_2) {
BattleIO_SlideTrainerOut(battleSys, i);
break;
}
@@ -1257,7 +1257,7 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
if (BattleSystem_BattleType(battleSys) & BATTLE_TYPE_DOUBLES) {
@@ -1271,7 +1271,7 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
if (BattleSystem_BattleType(battleSys) & BATTLE_TYPE_DOUBLES) {
@@ -1285,8 +1285,8 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_SOLO_PLAYER
|| battlerData->unk_191 == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) {
if (battlerData->battlerType == BATTLER_TYPE_SOLO_PLAYER
|| battlerData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_1) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
break;
}
@@ -1297,8 +1297,8 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_SOLO_ENEMY
|| battlerData->unk_191 == BATTLER_TYPE_ENEMY_SIDE_SLOT_1) {
if (battlerData->battlerType == BATTLER_TYPE_SOLO_ENEMY
|| battlerData->battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_1) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
break;
}
@@ -1309,7 +1309,7 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
if (battlerData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_2) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
break;
}
@@ -1320,7 +1320,7 @@ static BOOL BtlCmd_SlideTrainerIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 == BATTLER_TYPE_ENEMY_SIDE_SLOT_2) {
if (battlerData->battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_2) {
BattleIO_SlideTrainerIn(battleSys, i, posIn);
break;
}
@@ -1376,7 +1376,7 @@ static BOOL BtlCmd_SlideHPGaugeIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_SlideHPGaugeIn(battleSys, battleCtx, i, 0);
}
}
@@ -1386,7 +1386,7 @@ static BOOL BtlCmd_SlideHPGaugeIn(BattleSystem *battleSys, BattleContext *battle
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SlideHPGaugeIn(battleSys, battleCtx, i, 0);
}
}
@@ -1434,7 +1434,7 @@ static BOOL BtlCmd_SlideHPGaugeInWait(BattleSystem *battleSys, BattleContext *ba
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
BattleIO_SlideHPGaugeIn(battleSys, battleCtx, i, wait);
wait += 4;
}
@@ -1445,7 +1445,7 @@ static BOOL BtlCmd_SlideHPGaugeInWait(BattleSystem *battleSys, BattleContext *ba
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SlideHPGaugeIn(battleSys, battleCtx, i, wait);
wait += 4;
}
@@ -1492,7 +1492,7 @@ static BOOL BtlCmd_SlideHPGaugeOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE
&& (battleCtx->battlersSwitchingMask & FlagIndex(i)) == FALSE) {
BattleIO_SlideHPGaugeOut(battleSys, i);
}
@@ -1503,7 +1503,7 @@ static BOOL BtlCmd_SlideHPGaugeOut(BattleSystem *battleSys, BattleContext *battl
for (i = 0; i < maxBattlers; i++) {
battlerData = BattleSystem_BattlerData(battleSys, i);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
BattleIO_SlideHPGaugeOut(battleSys, i);
}
}
@@ -2398,73 +2398,82 @@ static BOOL BtlCmd_CheckCritical(BattleSystem *battleSys, BattleContext *battleC
return FALSE;
}
static BOOL ov16_02241D34 (BattleSystem * param0, BattleContext * param1)
/**
* @brief Calculate the amount of experience to be given to each participating
* battler.
*
* Inputs:
* 1. The jump distance if no experience is to be given. i.e., the defeated
* battler is an ally, or the battle type explicitly forbids experience gain.
*
* Side effects:
* - battleCtx->gainedExp will be updated with the amount of experience to be
* given to each participating battler.
* - battleCtx->sharedExp will be updated with the amount of experience to be
* given to each participating battler which was holding an Exp Share.
*
* @param battleSys
* @param battleCtx
* @return FALSE
*/
static BOOL BtlCmd_CalcExpGain(BattleSystem *battleSys, BattleContext *battleCtx)
{
int v0;
u32 v1 = BattleSystem_BattleType(param0);
BattlerData * v2 = BattleSystem_BattlerData(param0, param1->faintedMon);
int jump;
u32 battleType = BattleSystem_BattleType(battleSys);
BattlerData *battlerData = BattleSystem_BattlerData(battleSys, battleCtx->faintedMon);
BattleScript_Iter(param1, 1);
v0 = BattleScript_Read(param1);
BattleScript_Iter(battleCtx, 1);
jump = BattleScript_Read(battleCtx);
if ((v2->unk_191 & 0x1) && ((v1 & (0x4 | 0x20 | 0x80 | 0x200)) == 0)) {
{
int v3;
int v4;
int v5 = 0;
int v6 = 0;
u16 v7;
u16 v8;
int v9;
Pokemon * v10;
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) && (battleType & BATTLE_TYPE_NO_EXPERIENCE) == FALSE) {
int i;
int totalMonsGainingExp = 0;
int totalMonsWithExpShare = 0;
for (v3 = 0; v3 < Party_GetCurrentCount(BattleSystem_Party(param0, 0)); v3++) {
v10 = BattleSystem_PartyPokemon(param0, 0, v3);
for (i = 0; i < Party_GetCurrentCount(BattleSystem_Party(battleSys, BATTLER_US)); i++) {
Pokemon *mon = BattleSystem_PartyPokemon(battleSys, BATTLER_US, i);
if ((Pokemon_GetValue(v10, MON_DATA_SPECIES, NULL)) && (Pokemon_GetValue(v10, MON_DATA_CURRENT_HP, NULL))) {
if (param1->monsGainingExp[(param1->faintedMon >> 1) & 1] & FlagIndex(v3)) {
v5++;
}
v7 = Pokemon_GetValue(v10, MON_DATA_HELD_ITEM, NULL);
v9 = BattleSystem_GetItemData(param1, v7, 1);
if (v9 == 51) {
v6++;
}
}
}
v8 = PokemonPersonalData_GetSpeciesValue(param1->battleMons[param1->faintedMon].species, 9);
v8 = (v8 * param1->battleMons[param1->faintedMon].level) / 7;
if (v6) {
param1->gainedExp = (v8 / 2) / v5;
if (param1->gainedExp == 0) {
param1->gainedExp = 1;
if (Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL) && Pokemon_GetValue(mon, MON_DATA_CURRENT_HP, NULL)) {
if (battleCtx->monsGainingExp[(battleCtx->faintedMon >> 1) & 1] & FlagIndex(i)) {
totalMonsGainingExp++;
}
param1->sharedExp = (v8 / 2) / v6;
if (param1->sharedExp == 0) {
param1->sharedExp = 1;
u16 item = Pokemon_GetValue(mon, MON_DATA_HELD_ITEM, NULL);
if (BattleSystem_GetItemData(battleCtx, item, ITEM_PARAM_HOLD_EFFECT) == HOLD_EFFECT_EXP_SHARE) {
totalMonsWithExpShare++;
}
} else {
param1->gainedExp = v8 / v5;
if (param1->gainedExp == 0) {
param1->gainedExp = 1;
}
param1->sharedExp = 0;
}
}
u16 exp = PokemonPersonalData_GetSpeciesValue(battleCtx->battleMons[battleCtx->faintedMon].species, MON_DATA_PERSONAL_BASE_EXP);
exp = (exp * battleCtx->battleMons[battleCtx->faintedMon].level) / 7;
if (totalMonsWithExpShare) {
battleCtx->gainedExp = (exp / 2) / totalMonsGainingExp;
if (battleCtx->gainedExp == 0) {
battleCtx->gainedExp = 1;
}
battleCtx->sharedExp = (exp / 2) / totalMonsWithExpShare;
if (battleCtx->sharedExp == 0) {
battleCtx->sharedExp = 1;
}
} else {
battleCtx->gainedExp = exp / totalMonsGainingExp;
if (battleCtx->gainedExp == 0) {
battleCtx->gainedExp = 1;
}
battleCtx->sharedExp = 0;
}
} else {
BattleScript_Iter(param1, v0);
BattleScript_Iter(battleCtx, jump);
}
return 0;
return FALSE;
}
static BOOL ov16_02241EB0 (BattleSystem * param0, BattleContext * param1)
@@ -7455,7 +7464,7 @@ static BOOL ov16_02248204 (BattleSystem * param0, BattleContext * param1)
for (v1 = 0; v1 < v3; v1++) {
v2 = BattleSystem_BattlerData(param0, v1);
if ((v2->unk_191 & 0x1) == 0) {
if ((v2->battlerType & 0x1) == 0) {
ov16_022667E8(param0, v1);
}
}
@@ -7464,7 +7473,7 @@ static BOOL ov16_02248204 (BattleSystem * param0, BattleContext * param1)
for (v1 = 0; v1 < v3; v1++) {
v2 = BattleSystem_BattlerData(param0, v1);
if (v2->unk_191 & 0x1) {
if (v2->battlerType & 0x1) {
ov16_022667E8(param0, v1);
}
}
@@ -7494,7 +7503,7 @@ static BOOL ov16_02248294 (BattleSystem * param0, BattleContext * param1)
for (v1 = 0; v1 < v3; v1++) {
v2 = BattleSystem_BattlerData(param0, v1);
if ((v2->unk_191 & 0x1) == 0) {
if ((v2->battlerType & 0x1) == 0) {
ov16_02266804(param0, v1);
}
}
@@ -7503,7 +7512,7 @@ static BOOL ov16_02248294 (BattleSystem * param0, BattleContext * param1)
for (v1 = 0; v1 < v3; v1++) {
v2 = BattleSystem_BattlerData(param0, v1);
if (v2->unk_191 & 0x1) {
if (v2->battlerType & 0x1) {
ov16_02266804(param0, v1);
}
}
@@ -9500,7 +9509,7 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if (battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) {
break;
}
}
@@ -9510,7 +9519,7 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if (battlerData->unk_191 == BATTLER_TYPE_ENEMY_SIDE_SLOT_1 || battlerData->unk_191 == BATTLER_TYPE_SOLO_ENEMY) {
if (battlerData->battlerType == BATTLER_TYPE_ENEMY_SIDE_SLOT_1 || battlerData->battlerType == BATTLER_TYPE_SOLO_ENEMY) {
break;
}
}
@@ -9526,7 +9535,7 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if (battlerData->unk_191 == expectedBattlerType) {
if (battlerData->battlerType == expectedBattlerType) {
break;
}
}
@@ -9536,7 +9545,7 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if ((battlerData->unk_191 & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
if ((battlerData->battlerType & BATTLER_TYPE_SOLO_ENEMY) == FALSE) {
break;
}
}
@@ -9546,8 +9555,8 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if (battlerData->unk_191 == BATTLER_TYPE_PLAYER_SIDE_SLOT_1
|| battlerData->unk_191 == BATTLER_TYPE_SOLO_PLAYER) {
if (battlerData->battlerType == BATTLER_TYPE_PLAYER_SIDE_SLOT_1
|| battlerData->battlerType == BATTLER_TYPE_SOLO_PLAYER) {
break;
}
}
@@ -9563,7 +9572,7 @@ static int BattleScript_Battler(BattleSystem *battleSys, BattleContext *battleCt
maxBattlers = BattleSystem_MaxBattlers(battleSys);
for (battlerOut = 0; battlerOut < maxBattlers; battlerOut++) {
battlerData = BattleSystem_BattlerData(battleSys, battlerOut);
if (battlerData->unk_191 == expectedBattlerType) {
if (battlerData->battlerType == expectedBattlerType) {
break;
}
}

View File

@@ -167,7 +167,7 @@ BattlerData * ov16_0225BFFC (BattleSystem * param0, UnkStruct_ov16_0223C2C0 * pa
MI_CpuClearFast(v0, sizeof(BattlerData));
v0->unk_190 = param1->unk_00;
v0->unk_191 = param1->unk_01;
v0->battlerType = param1->unk_01;
v0->unk_1A0 = NARC_ctor(NARC_INDEX_POKETOOL__POKE_EDIT__PL_POKE_DATA, 5);
return v0;
@@ -182,11 +182,11 @@ void ov16_0225C038 (BattleSystem * param0, BattlerData * param1, int param2, int
return;
}
if ((param1->unk_191 & 0x1) && ((BattleSystem_BattleType(param0) & 0x1) == 0)) {
if ((param1->battlerType & 0x1) && ((BattleSystem_BattleType(param0) & 0x1) == 0)) {
return;
}
v0.unk_00 = Unk_ov16_0226F174[param1->unk_191];
v0.unk_00 = Unk_ov16_0226F174[param1->battlerType];
v0.unk_04 = 5;
v0.unk_08 = 4;
v0.unk_0C = param1->unk_190;
@@ -648,7 +648,7 @@ static void ov16_0225C558 (BattleSystem * param0, BattlerData * param1)
v1 = ov16_0223E02C(param0);
if (param1->bootState == 0x0) {
if ((v0 & 0x8) || (((v0 & 0x8) == 0) && (param1->unk_191 != 4))) {
if ((v0 & 0x8) || (((v0 & 0x8) == 0) && (param1->battlerType != 4))) {
ov16_0226947C(v1, -0xd00, 0);
}
}
@@ -717,7 +717,7 @@ static void ov16_0225C684 (BattleSystem * param0, BattlerData * param1)
int v3;
int v4;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v4 = 2;
} else {
v4 = 0;
@@ -737,7 +737,7 @@ static void ov16_0225C684 (BattleSystem * param0, BattlerData * param1)
v3 = sub_02076648(v0->unk_02, v0->unk_04, v4, v0->unk_01, v0->unk_08);
ov16_0223F2FC(ov16_0223E0C8(param0), param1->unk_190, v3);
v3 = ov12_022384CC(param1->unk_191, 1) + v3;
v3 = ov12_022384CC(param1->battlerType, 1) + v3;
sub_02007DEC(param1->unk_20, 1, v3);
ov16_02266ABC(param0, param1->unk_190, v0->unk_00);

View File

@@ -341,14 +341,14 @@ void ov16_0225CBDC (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v4->unk_12 = 0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v4->unk_13 = 2;
v4->unk_0C = ov16_0223E020(param0, 1);
sub_0200D4C4(v4->unk_0C->unk_00, Unk_ov12_0223B0B8[param1->unk_191 & 1][0], (8 * 11));
sub_0200D4C4(v4->unk_0C->unk_00, Unk_ov12_0223B0B8[param1->battlerType & 1][0], (8 * 11));
} else {
v4->unk_13 = 0;
v4->unk_0C = ov16_0223E020(param0, 0);
sub_0200D4C4(v4->unk_0C->unk_00, Unk_ov12_0223B0B8[param1->unk_191 & 1][0], (128 + 8));
sub_0200D4C4(v4->unk_0C->unk_00, Unk_ov12_0223B0B8[param1->battlerType & 1][0], (128 + 8));
}
if (param2->unk_01_2) {
@@ -364,9 +364,9 @@ void ov16_0225CBDC (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
sub_02078A80(param1->unk_1A0, &v7, param2->unk_02);
sub_02078AA4(param1->unk_1A0, &v8, param2->unk_02);
sub_02078AC8(param1->unk_1A0, &v9, param2->unk_02);
sub_020789BC(param1->unk_1A0, &v3[0], param2->unk_02, param1->unk_191);
sub_020789BC(param1->unk_1A0, &v3[0], param2->unk_02, param1->battlerType);
v4->unk_08 = param1->unk_20 = ov16_02263B30(param0, v2, &v1, Unk_ov12_0223B0B8[param1->unk_191][0], Unk_ov12_0223B0B8[param1->unk_191][1], Unk_ov12_0223B0B8[param1->unk_191][2], v6, v7, v8, v9, param1->unk_190, &v3[0], NULL);
v4->unk_08 = param1->unk_20 = ov16_02263B30(param0, v2, &v1, Unk_ov12_0223B0B8[param1->battlerType][0], Unk_ov12_0223B0B8[param1->battlerType][1], Unk_ov12_0223B0B8[param1->battlerType][2], v6, v7, v8, v9, param1->unk_190, &v3[0], NULL);
if (v4->unk_13 == 2) {
sub_020086FC(v4->unk_08, 8, 8, 0, 0x0);
@@ -384,7 +384,7 @@ void ov16_0225CBDC (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v4->unk_14 = v11;
} else {
v4->unk_14 = Unk_ov12_0223B0A0[param1->unk_191][0];
v4->unk_14 = Unk_ov12_0223B0A0[param1->battlerType][0];
}
v4->unk_00 = param0;
@@ -394,7 +394,7 @@ void ov16_0225CBDC (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v4->unk_16 = param2->unk_02;
v4->unk_2C = param2->unk_01_3;
v4->unk_18 = param2->unk_08;
v4->unk_1C = param1->unk_191;
v4->unk_1C = param1->battlerType;
v4->unk_24 = Pokemon_GetNatureOf(param2->unk_04);
v4->unk_28 = param2->unk_01_2;
@@ -416,7 +416,7 @@ void ov16_0225CE1C (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v2 = BattleSystem_BattleType(param0);
v1 = (UnkStruct_ov16_0225EA80 *)Heap_AllocFromHeap(5, sizeof(UnkStruct_ov16_0225EA80));
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v1->unk_84 = 2;
} else {
v1->unk_84 = 0;
@@ -445,7 +445,7 @@ void ov16_0225CE1C (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v1->unk_81 = param1->unk_190;
v1->unk_86 = param2->unk_02;
v1->unk_97 = param2->unk_01_3;
v1->unk_82 = param1->unk_191;
v1->unk_82 = param1->battlerType;
v1->unk_88 = param2->unk_08;
v1->unk_8C = param2->unk_0C;
v1->unk_8D = Pokemon_GetNatureOf(param2->unk_04);
@@ -468,7 +468,7 @@ void ov16_0225CF70 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v2 = (UnkStruct_ov16_0225EA80 *)Heap_AllocFromHeap(5, sizeof(UnkStruct_ov16_0225EA80));
v2->unk_83 = 0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v2->unk_84 = 2;
} else {
v2->unk_84 = 0;
@@ -495,7 +495,7 @@ void ov16_0225CF70 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v2->unk_81 = param1->unk_190;
v2->unk_86 = param2->unk_02;
v2->unk_97 = param2->unk_01_3;
v2->unk_82 = param1->unk_191;
v2->unk_82 = param1->battlerType;
v2->unk_88 = param2->unk_08;
v2->unk_8C = param2->unk_0C;
v2->unk_8D = Pokemon_GetNatureOf(param2->unk_04);
@@ -527,7 +527,7 @@ void ov16_0225D118 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v1->unk_08 = param1->unk_20;
v1->unk_68 = param2->unk_00;
v1->unk_69 = param1->unk_190;
v1->unk_6A = param1->unk_191;
v1->unk_6A = param1->battlerType;
v1->unk_6B = 0;
v1->unk_6C = param2->unk_01;
v1->unk_6E = param2->unk_02;
@@ -554,7 +554,7 @@ void ov16_0225D1C4 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_04 = param1->unk_20;
v0->unk_08 = param2->unk_00;
v0->unk_09 = param1->unk_190;
v0->unk_0A = param1->unk_191;
v0->unk_0A = param1->battlerType;
v0->unk_0B = 0;
v0->unk_0C = param2->unk_01;
@@ -572,30 +572,30 @@ void ov16_0225D228 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v1 = (UnkStruct_ov16_02264650_1 *)Heap_AllocFromHeap(5, sizeof(UnkStruct_ov16_02264650_1));
v1->unk_0E = 0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v1->unk_0F = 2;
v1->unk_04 = ov16_0223E020(param0, 1);
sub_0200D4C4(v1->unk_04->unk_00, Unk_ov12_0223B0B8[param1->unk_191 & 1][0], (8 * 11));
sub_0200D4C4(v1->unk_04->unk_00, Unk_ov12_0223B0B8[param1->battlerType & 1][0], (8 * 11));
} else {
v1->unk_0F = 0;
v1->unk_04 = ov16_0223E020(param0, 0);
sub_0200D4C4(v1->unk_04->unk_00, Unk_ov12_0223B0B8[param1->unk_191 & 1][0], (128 + 8));
sub_0200D4C4(v1->unk_04->unk_00, Unk_ov12_0223B0B8[param1->battlerType & 1][0], (128 + 8));
}
if ((BattleSystem_BattleType(param0) & 0x8) || ((BattleSystem_BattleType(param0) & 0x10) && (param1->unk_191 & 0x1))) {
v2 = param1->unk_191;
if ((BattleSystem_BattleType(param0) & 0x8) || ((BattleSystem_BattleType(param0) & 0x10) && (param1->battlerType & 0x1))) {
v2 = param1->battlerType;
} else {
v2 = param1->unk_191 & 1;
v2 = param1->battlerType & 1;
}
param2->unk_02 = ov16_02264768(param0, param1->unk_190, param2->unk_02);
v1->unk_08 = param1->unk_18 = ov16_022643B8(param0, v2, param2->unk_02, param1->unk_191, Unk_ov12_0223B0B8[v2][0], Unk_ov12_0223B0B8[v2][1]);
v1->unk_08 = param1->unk_18 = ov16_022643B8(param0, v2, param2->unk_02, param1->battlerType, Unk_ov12_0223B0B8[v2][0], Unk_ov12_0223B0B8[v2][1]);
v1->unk_10 = Unk_ov12_0223B0A0[v2][0];
v1->unk_00 = param0;
v1->unk_0C = param2->unk_00;
v1->unk_0D = param1->unk_190;
v1->unk_14 = param1->unk_191;
v1->unk_14 = param1->battlerType;
v1->unk_1C = 0;
if ((v1->unk_14 == 0) || (v1->unk_14 == 2)) {
@@ -618,7 +618,7 @@ void ov16_0225D360 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_09 = param1->unk_190;
v0->unk_04 = param1;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v0->unk_0B = 2;
v0->unk_0C = 0;
} else {
@@ -646,7 +646,7 @@ void ov16_0225D3CC (BattleSystem * param0, BattlerData * param1)
v0->unk_09 = param1->unk_190;
v0->unk_04 = param1;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v0->unk_0B = 2;
} else {
v0->unk_0B = 0;
@@ -667,14 +667,14 @@ void ov16_0225D414 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v3 = (UnkStruct_ov16_02260384 *)Heap_AllocFromHeap(5, sizeof(UnkStruct_ov16_02260384));
v3->unk_0A = 0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v3->unk_0B = 2;
} else {
v3->unk_0B = 0;
}
v3->unk_04 = param1->unk_18 = ov16_022643B8(param0, param1->unk_191 & 1, param2->unk_02, param1->unk_191, Unk_ov12_0223B0DC[param1->unk_191 & 1][0], Unk_ov12_0223B0DC[param1->unk_191 & 1][1]);
v3->unk_0C = Unk_ov12_0223B0A0[param1->unk_191 & 1][param2->unk_04];
v3->unk_04 = param1->unk_18 = ov16_022643B8(param0, param1->battlerType & 1, param2->unk_02, param1->battlerType, Unk_ov12_0223B0DC[param1->battlerType & 1][0], Unk_ov12_0223B0DC[param1->battlerType & 1][1]);
v3->unk_0C = Unk_ov12_0223B0A0[param1->battlerType & 1][param2->unk_04];
v3->unk_00 = param0;
v3->unk_08 = param2->unk_00;
v3->unk_09 = param1->unk_190;
@@ -691,7 +691,7 @@ void ov16_0225D4A8 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_0C = param0;
v0->unk_24 = param1->unk_190;
v0->unk_25 = ov16_0226825C(param1->unk_191, BattleSystem_BattleType(param0));
v0->unk_25 = ov16_0226825C(param1->battlerType, BattleSystem_BattleType(param0));
v0->unk_4C = param2->unk_00;
v0->unk_28 = param2->unk_02;
v0->unk_2C = param2->unk_04;
@@ -739,7 +739,7 @@ void ov16_0225D5B8 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_08 = param2->unk_00;
v0->unk_09 = param1->unk_190;
v0->unk_34 = param1->unk_191;
v0->unk_34 = param1->battlerType;
v0->unk_04 = &param1->unk_28;
v0->unk_23 = param2->unk_01;
v0->unk_36 = param2->unk_24;
@@ -785,7 +785,7 @@ void ov16_0225D698 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_1C = param1->unk_90[0];
v0->unk_1D = param1->unk_190;
v0->unk_1E = param1->unk_191;
v0->unk_1E = param1->battlerType;
v0->unk_04 = &param1->unk_28;
v0->unk_1F = param2->unk_01;
@@ -813,7 +813,7 @@ void ov16_0225D708 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_0C = param1->unk_90[0];
v0->unk_0D = param1->unk_190;
v0->unk_0E = param1->unk_191;
v0->unk_0E = param1->battlerType;
v0->unk_30 = param2->unk_02;
v0->unk_04 = &param1->unk_28;
v0->unk_32 = param2->unk_01;
@@ -844,7 +844,7 @@ void ov16_0225D794 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_0C = param2->unk_00;
v0->unk_0D = param1->unk_190;
v0->unk_0F = param1->unk_191;
v0->unk_0F = param1->battlerType;
v0->unk_14 = param2->unk_01;
v0->unk_15 = param2->unk_02;
v0->unk_16 = param2->unk_03;
@@ -1001,7 +1001,7 @@ void ov16_0225DA74 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_0C = param0;
v0->unk_4C = param2->unk_00;
v0->unk_24 = param1->unk_190;
v0->unk_25 = ov16_0226825C(param1->unk_191, BattleSystem_BattleType(param0));
v0->unk_25 = ov16_0226825C(param1->battlerType, BattleSystem_BattleType(param0));
v0->unk_28 = param2->unk_02;
v0->unk_2C = param2->unk_04;
v0->unk_30 = param2->unk_08;
@@ -1032,7 +1032,7 @@ void ov16_0225DB00 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov
v0->unk_3C = param2->unk_0C;
v0->unk_40 = param2->unk_08 - v0->unk_38;
if (param1->unk_191 == 0) {
if (param1->battlerType == 0) {
v0->unk_10 = sub_0200D9E8(ov16_022629DC, v0, 1000);
return;
} else {
@@ -1047,7 +1047,7 @@ void ov16_0225DB74 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0 = (UnkStruct_ov16_0225DB74 *)Heap_AllocFromHeap(5, sizeof(UnkStruct_ov16_0225DB74));
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v0->unk_67 = 2;
} else {
v0->unk_67 = 0;
@@ -1081,7 +1081,7 @@ void ov16_0225DC4C (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
{
int v0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v0 = 117;
} else {
v0 = -117;
@@ -1286,7 +1286,7 @@ void ov16_0225E008 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_0C = param0;
v0->unk_24 = param1->unk_190;
v0->unk_25 = ov16_0226825C(param1->unk_191, BattleSystem_BattleType(param0));
v0->unk_25 = ov16_0226825C(param1->battlerType, BattleSystem_BattleType(param0));
v0->unk_4C = param2->unk_00;
v0->unk_28 = param2->unk_02;
v0->unk_2C = param2->unk_04;
@@ -1349,7 +1349,7 @@ void ov16_0225E134 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_04 = param2->unk_00;
v0->unk_05 = param1->unk_190;
v0->unk_06 = param1->unk_191;
v0->unk_06 = param1->battlerType;
for (v1 = 0; v1 < 6; v1++) {
v0->unk_08[v1] = param2->unk_02[v1];
@@ -1370,7 +1370,7 @@ void ov16_0225E17C (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_04 = param2->unk_00;
v0->unk_05 = param1->unk_190;
v0->unk_06 = param1->unk_191;
v0->unk_06 = param1->battlerType;
v0->unk_0E = 0;
sub_0200D9E8(ov16_02263604, v0, 0);
@@ -1387,7 +1387,7 @@ void ov16_0225E1B4 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_04 = param2->unk_00;
v0->unk_05 = param1->unk_190;
v0->unk_06 = param1->unk_191;
v0->unk_06 = param1->battlerType;
for (v1 = 0; v1 < 6; v1++) {
v0->unk_08[v1] = param2->unk_02[v1];
@@ -1409,7 +1409,7 @@ void ov16_0225E200 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
v0->unk_00 = param0;
v0->unk_04 = param2->unk_00;
v0->unk_05 = param1->unk_190;
v0->unk_06 = param1->unk_191;
v0->unk_06 = param1->battlerType;
v0->unk_0E = 1;
sub_0200D9E8(ov16_02263604, v0, 0);
@@ -1544,7 +1544,7 @@ void ov16_0225E468 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_
{
int v0;
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
v0 = 117;
} else {
v0 = -117;
@@ -2681,10 +2681,10 @@ static void ov16_0225FD5C (UnkStruct_0201CD38 * param0, void * param1)
sub_0200D0F4(v0->unk_04->unk_18);
v0->unk_04->unk_18 = NULL;
sub_0200D070(v8, 20015 + v0->unk_04->unk_191);
sub_0200D080(v8, 20010 + v0->unk_04->unk_191);
sub_0200D090(v8, 20007 + v0->unk_04->unk_191);
sub_0200D0A0(v8, 20007 + v0->unk_04->unk_191);
sub_0200D070(v8, 20015 + v0->unk_04->battlerType);
sub_0200D080(v8, 20010 + v0->unk_04->battlerType);
sub_0200D090(v8, 20007 + v0->unk_04->battlerType);
sub_0200D0A0(v8, 20007 + v0->unk_04->battlerType);
}
v0->unk_0A = 6;
}
@@ -2735,10 +2735,10 @@ static void ov16_0225FD5C (UnkStruct_0201CD38 * param0, void * param1)
sub_0200D0F4(v0->unk_04->unk_18);
v0->unk_04->unk_18 = NULL;
sub_0200D070(v10, 20015 + v0->unk_04->unk_191);
sub_0200D080(v10, 20010 + v0->unk_04->unk_191);
sub_0200D090(v10, 20007 + v0->unk_04->unk_191);
sub_0200D0A0(v10, 20007 + v0->unk_04->unk_191);
sub_0200D070(v10, 20015 + v0->unk_04->battlerType);
sub_0200D080(v10, 20010 + v0->unk_04->battlerType);
sub_0200D090(v10, 20007 + v0->unk_04->battlerType);
sub_0200D0A0(v10, 20007 + v0->unk_04->battlerType);
}
v0->unk_0A = 6;
}
@@ -2825,10 +2825,10 @@ static void ov16_02260284 (UnkStruct_0201CD38 * param0, void * param1)
sub_0200D0F4(v0->unk_04->unk_18);
v0->unk_04->unk_18 = NULL;
sub_0200D070(v3, 20015 + v0->unk_04->unk_191);
sub_0200D080(v3, 20010 + v0->unk_04->unk_191);
sub_0200D090(v3, 20007 + v0->unk_04->unk_191);
sub_0200D0A0(v3, 20007 + v0->unk_04->unk_191);
sub_0200D070(v3, 20015 + v0->unk_04->battlerType);
sub_0200D080(v3, 20010 + v0->unk_04->battlerType);
sub_0200D090(v3, 20007 + v0->unk_04->battlerType);
sub_0200D0A0(v3, 20007 + v0->unk_04->battlerType);
}
ov16_02266ABC(v0->unk_00, v0->unk_09, v0->unk_08);
Heap_FreeToHeap(param1);
@@ -5580,7 +5580,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
}
}
} else if ((v0 & (0x8 | 0x80)) == (0x8 | 0x80)) {
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
if (ov16_0223ED60(param0)) {
param1->unk_00.unk_00 = &ov16_02260AB4;
param1->unk_00.unk_04 = &ov16_02260DB0;
@@ -5606,7 +5606,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->unk_00.unk_10 = &ov16_0226232C;
param1->unk_00.unk_14 = &ov16_0226266C;
param1->bootState = 0x0;
} else if (param1->unk_191 != BattleSystem_BattlerSlot(param0, ov16_0223F6E4(param0) * 2)) {
} else if (param1->battlerType != BattleSystem_BattlerSlot(param0, ov16_0223F6E4(param0) * 2)) {
param1->unk_00.unk_00 = &ov16_02260AE4;
param1->unk_00.unk_04 = &ov16_02260E78;
param1->unk_00.unk_08 = &ov16_022610EC;
@@ -5632,7 +5632,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->unk_00.unk_10 = &ov16_0226232C;
param1->unk_00.unk_14 = &ov16_0226266C;
param1->bootState = 0x0;
} else if (param1->unk_191 != BattleSystem_BattlerSlot(param0, ov16_0223F6E4(param0))) {
} else if (param1->battlerType != BattleSystem_BattlerSlot(param0, ov16_0223F6E4(param0))) {
param1->unk_00.unk_00 = &ov16_02260AE4;
param1->unk_00.unk_04 = &ov16_02260E78;
param1->unk_00.unk_08 = &ov16_022610EC;
@@ -5658,7 +5658,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->unk_00.unk_10 = &ov16_0226232C;
param1->unk_00.unk_14 = &ov16_0226266C;
param1->bootState = 0x0;
} else if (param1->unk_191 & 0x1) {
} else if (param1->battlerType & 0x1) {
param1->unk_00.unk_00 = &ov16_02260AE4;
param1->unk_00.unk_04 = &ov16_02260E78;
param1->unk_00.unk_08 = &ov16_022610EC;
@@ -5676,7 +5676,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->bootState = 0x0;
}
} else if (v0 & 0x200) {
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
param1->unk_00.unk_00 = &ov16_02260B84;
param1->unk_00.unk_04 = NULL;
param1->unk_00.unk_08 = NULL;
@@ -5694,7 +5694,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->bootState = 0x0;
}
} else if (v0 & 0x20) {
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
param1->unk_00.unk_00 = &ov16_02260B04;
param1->unk_00.unk_04 = NULL;
param1->unk_00.unk_08 = NULL;
@@ -5712,7 +5712,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
param1->bootState = 0x0;
}
} else {
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
param1->unk_00.unk_00 = &ov16_02260AB4;
param1->unk_00.unk_04 = &ov16_02260DB0;
param1->unk_00.unk_08 = &ov16_022610A8;
@@ -5744,7 +5744,7 @@ void ov16_02263730 (BattleSystem * param0, BattlerData * param1)
u8 Battler_Type (BattlerData * param0)
{
return param0->unk_191;
return param0->battlerType;
}
u8 Battler_BootState (BattlerData *battler)
@@ -5825,7 +5825,7 @@ static UnkStruct_02007C7C * ov16_02263B30 (BattleSystem * param0, UnkStruct_0200
static void ov16_02263C1C (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_0225C3F8 * param2, BattleMessage * param3)
{
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
if (BattleSystem_BattleType(param0) & 0x4) {
param3->id = 990;
param3->tags = 27;
@@ -5862,7 +5862,7 @@ static void ov16_02263C1C (BattleSystem * param0, BattlerData * param1, UnkStruc
static void ov16_02263CF0 (BattleSystem * param0, BattlerData * param1, UnkStruct_ov16_0225C40C * param2, BattleMessage * param3)
{
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
if ((BattleSystem_BattleType(param0) & 0x4) == 0) {
param3->id = 972;
param3->tags = 50;
@@ -5956,7 +5956,7 @@ static void ov16_02263E7C (BattleSystem * param0, BattlerData * param1, UnkStruc
v0 = BattleSystem_BattleType(param0);
if (param1->unk_191 & 0x1) {
if (param1->battlerType & 0x1) {
if (v0 & 0x2) {
v1 = param1->unk_190;
v2 = BattleSystem_Partner(param0, param1->unk_190);

View File

@@ -431,7 +431,7 @@ void BattleIO_ReturnPokemon (BattleSystem * param0, BattleContext * param1, int
int v2;
int v3;
if (param0->battlers[param2]->unk_191 & 0x1) {
if (param0->battlers[param2]->battlerType & 0x1) {
v1 = 2;
} else {
v1 = 0;
@@ -472,7 +472,7 @@ void ov16_02265050 (BattleSystem * param0, int param1, int param2)
int v1;
int v2;
if (param0->battlers[param1]->unk_191 & 0x1) {
if (param0->battlers[param1]->battlerType & 0x1) {
v1 = 2;
} else {
v1 = 0;

View File

@@ -258,7 +258,7 @@ typedef struct {
u8 unk_0C[2][192];
UnkStruct_0201CD38 * unk_18C;
GXWndPlane unk_190;
GXWndPlane unk_191;
GXWndPlane battlerType;
int unk_194;
} UnkStruct_ov114_0225FAB8;
@@ -3681,8 +3681,8 @@ static void ov114_0225F9B8 (UnkStruct_ov114_0225FAB8 * param0, UnkStruct_ov114_0
param0->unk_190 = G2_GetWndOutsidePlane();
param0->unk_194 = GX_GetVisibleWnd() & GX_WNDMASK_W1;
param0->unk_191.planeMask = GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3;
param0->unk_191.effect = 1;
param0->battlerType.planeMask = GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3;
param0->battlerType.effect = 1;
sub_020177BC(ov114_0225FCF0, param0);
sub_02021D0C(param0->unk_00[1], 2);
@@ -3819,7 +3819,7 @@ static void ov114_0225FCF0 (void * param0)
G2_SetWndOutsidePlane(v0->unk_190.planeMask, v0->unk_190.effect);
v2 |= v0->unk_194;
} else {
G2_SetWndOutsidePlane(v0->unk_191.planeMask, v0->unk_191.effect);
G2_SetWndOutsidePlane(v0->battlerType.planeMask, v0->battlerType.effect);
v2 &= ~(GX_WNDMASK_W1 | v0->unk_194);
}