mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-09-08 09:45:56 -05:00
Document and clean up field_battle_data_transfer.c
This commit is contained in:
@@ -541,6 +541,35 @@
|
||||
"TERRAIN_MAX"
|
||||
]
|
||||
},
|
||||
"@BattleBackground": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
"BACKGROUND_PLAIN",
|
||||
"BACKGROUND_WATER",
|
||||
"BACKGROUND_CITY",
|
||||
"BACKGROUND_FOREST",
|
||||
"BACKGROUND_MOUNTAIN",
|
||||
"BACKGROUND_SNOW",
|
||||
"BACKGROUND_INDOORS_1",
|
||||
"BACKGROUND_INDOORS_2",
|
||||
"BACKGROUND_INDOORS_3",
|
||||
"BACKGROUND_CAVE_1",
|
||||
"BACKGROUND_CAVE_2",
|
||||
"BACKGROUND_CAVE_3",
|
||||
"BACKGROUND_AARON",
|
||||
"BACKGROUND_BERTHA",
|
||||
"BACKGROUND_FLINT",
|
||||
"BACKGROUND_LUCIAN",
|
||||
"BACKGROUND_CYNTHIA",
|
||||
"BACKGROUND_DISTORTION_WORLD",
|
||||
"BACKGROUND_BATTLE_TOWER",
|
||||
"BACKGROUND_BATTLE_FACTORY",
|
||||
"BACKGROUND_BATTLE_ARCADE",
|
||||
"BACKGROUND_BATTLE_CASTLE",
|
||||
"BACKGROUND_BATTLE_HALL",
|
||||
"BACKGROUND_MAX"
|
||||
]
|
||||
},
|
||||
"@BattleAnimation": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define POKEPLATINUM_FIELD_BATTLE_DATA_TRANSFER_H
|
||||
|
||||
#include "constants/battle.h"
|
||||
#include "consts/map.h"
|
||||
|
||||
#include "struct_decls/pokedexdata_decl.h"
|
||||
#include "struct_decls/struct_02027F8C_decl.h"
|
||||
@@ -77,25 +78,26 @@ typedef struct FieldBattleDTO {
|
||||
u32 unk_19C;
|
||||
} FieldBattleDTO;
|
||||
|
||||
FieldBattleDTO *sub_02051D8C(int param0, u32 param1);
|
||||
FieldBattleDTO *sub_02051F24(int param0, int param1);
|
||||
FieldBattleDTO *sub_02051F38(int param0, int param1);
|
||||
FieldBattleDTO *sub_02051F4C(int param0, const FieldSystem *fieldSystem);
|
||||
void sub_020520A4(FieldBattleDTO *param0);
|
||||
void sub_0205213C(FieldBattleDTO *param0, Pokemon *param1, int param2);
|
||||
void sub_02052164(FieldBattleDTO *param0, const Party *param1, int param2);
|
||||
void sub_02052184(FieldBattleDTO *param0, const TrainerInfo *param1, int param2);
|
||||
void sub_020521A4(FieldBattleDTO *param0, const ChatotCry *param1, int param2);
|
||||
void sub_020521B8(FieldBattleDTO *param0, const FieldSystem *fieldSystem, SaveData *param2, int param3, Journal *param4, BagCursor *param5, u8 *param6);
|
||||
void sub_02052314(FieldBattleDTO *param0, const FieldSystem *fieldSystem);
|
||||
void sub_02052348(FieldBattleDTO *param0, const FieldSystem *fieldSystem, int param2);
|
||||
void sub_020524E4(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const Party *param2, const u8 *param3);
|
||||
void sub_020526CC(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const u8 *param2);
|
||||
void sub_020526E8(const FieldBattleDTO *param0, FieldSystem *fieldSystem);
|
||||
void sub_02052754(const FieldBattleDTO *param0, FieldSystem *fieldSystem);
|
||||
void sub_0205285C(FieldBattleDTO *param0);
|
||||
BOOL FieldBattleDTO_PlayerWon(u32 battleResult);
|
||||
BOOL FieldBattleDTO_PlayerLost(u32 battleResult);
|
||||
BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult);
|
||||
FieldBattleDTO *FieldBattleDTO_New(enum HeapId heapID, u32 battleType);
|
||||
FieldBattleDTO *FieldBattleDTO_NewSafari(enum HeapId heapID, int countSafariBalls);
|
||||
FieldBattleDTO *FieldBattleDTO_NewPalPark(enum HeapId heapID, int countParkBalls);
|
||||
FieldBattleDTO *FieldBattleDTO_NewCatchingTutorial(enum HeapId heapID, const FieldSystem *fieldSystem);
|
||||
void FieldBattleDTO_Free(FieldBattleDTO *dto);
|
||||
void FieldBattleDTO_AddPokemonToBattler(FieldBattleDTO *dto, Pokemon *src, int battler);
|
||||
void FieldBattleDTO_CopyPartyToBattler(FieldBattleDTO *dto, const Party *src, int battler);
|
||||
void FieldBattleDTO_CopyTrainerInfoToBattler(FieldBattleDTO *dto, const TrainerInfo *src, int battler);
|
||||
void FieldBattleDTO_CopyChatotCryToBattler(FieldBattleDTO *dto, const ChatotCry *src, int battler);
|
||||
void FieldBattleDTO_InitFromGameState(FieldBattleDTO *dto, const FieldSystem *fieldSystem, SaveData *save, enum MapHeader mapHeaderID, Journal *journal, BagCursor *bagCursor, u8 *subscreenCursorOn);
|
||||
void FieldBattleDTO_Init(FieldBattleDTO *dto, const FieldSystem *fieldSystem);
|
||||
void FieldBattleDTO_InitWithNormalizedMonLevels(FieldBattleDTO *dto, const FieldSystem *fieldSystem, int level);
|
||||
void FieldBattleDTO_InitWithPartyOrder(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const Party *party, const u8 *partyOrder);
|
||||
void FieldBattleDTO_InitWithPartyOrderFromSave(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const u8 *partyOrder);
|
||||
void FieldBattleDTO_UpdateFieldSystem(const FieldBattleDTO *dto, FieldSystem *fieldSystem);
|
||||
void FieldBattleDTO_UpdatePokedex(const FieldBattleDTO *dto, FieldSystem *fieldSystem);
|
||||
void FieldBattleDTO_SetWaterTerrain(FieldBattleDTO *dto);
|
||||
BOOL CheckPlayerWonBattle(u32 battleResult);
|
||||
BOOL CheckPlayerLostBattle(u32 battleResult);
|
||||
BOOL CheckPlayerDidNotCaptureWildMon(u32 battleResult);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto);
|
||||
|
||||
#endif // POKEPLATINUM_FIELD_BATTLE_DATA_TRANSFER_H
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
#include "field/field_system_decl.h"
|
||||
#include "overlay101/struct_ov101_021D5D90_decl.h"
|
||||
|
||||
enum PlayerAvatarForm {
|
||||
PLAYER_AVATAR_WALKING = 0,
|
||||
PLAYER_AVATAR_BIKING,
|
||||
PLAYER_AVATAR_SURFING,
|
||||
};
|
||||
|
||||
PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *param0, int param1, int param2, int param3, int param4, int param5, int param6, PlayerData *param7);
|
||||
PlayerAvatar *sub_0205E820(const MapObjectManager *param0, PlayerData *param1, int gender);
|
||||
void PlayerAvatar_InitDraw(PlayerAvatar *playerAvatar, int param1);
|
||||
@@ -68,9 +74,6 @@ int PlayerData_CyclingGear(PlayerData *param0);
|
||||
void PlayerData_SetCyclingGear(PlayerData *param0, int param1);
|
||||
void PlayerAvatar_SetCyclingGear(PlayerAvatar *playerAvatar, int param1);
|
||||
int PlayerAvatar_CyclingGear(PlayerAvatar *playerAvatar);
|
||||
u32 sub_0205EC94(PlayerData *param0);
|
||||
void sub_0205ECA0(PlayerData *param0, u32 param1);
|
||||
void sub_0205ECA8(PlayerAvatar *playerAvatar, u32 param1);
|
||||
void sub_0205ECB8(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2);
|
||||
void sub_0205ECE0(PlayerAvatar *playerAvatar, int param1, int param2, int param3);
|
||||
void sub_0205ED0C(PlayerAvatar *playerAvatar, fx32 param1);
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
typedef struct {
|
||||
u16 unk_00;
|
||||
u16 runningShoes;
|
||||
u32 unk_04;
|
||||
u32 form;
|
||||
} PlayerData;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0205EC34_H
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
int Pokedex_SaveSize(void);
|
||||
PokedexData *sub_02026324(u32 param0);
|
||||
void sub_02026338(const PokedexData *param0, PokedexData *param1);
|
||||
void Pokedex_Copy(const PokedexData *src, PokedexData *dest);
|
||||
void Pokedex_Init(PokedexData *param0);
|
||||
u16 sub_02026DD0(const PokedexData *param0);
|
||||
u16 Pokedex_CountSeenNational(const PokedexData *pokedex);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
void sub_02054F44(const TerrainCollisionManager **param0, int param1);
|
||||
BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1, const int param2);
|
||||
u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int param2);
|
||||
u8 FieldSystem_GetTileAttributes(const FieldSystem *fieldSystem, const int x, const int z);
|
||||
const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4);
|
||||
BOOL sub_02055024(const FieldSystem *fieldSystem, const VecFx32 *param1, const int param2, const int param3, s8 *param4);
|
||||
BOOL sub_0205507C(FieldSystem *fieldSystem, const VecFx32 *param1, const int param2, const int param3, s8 *param4);
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
|
||||
#include "rtc.h"
|
||||
|
||||
void sub_020559DC(FieldSystem *fieldSystem);
|
||||
int sub_02055BA8(const FieldSystem *fieldSystem);
|
||||
enum TimeOfDay FieldSystem_GetTimeOfDay(const FieldSystem *fieldSystem);
|
||||
int sub_02055BB8(const FieldSystem *fieldSystem);
|
||||
int sub_02055BC4(const FieldSystem *fieldSystem);
|
||||
int sub_02055BD0(const FieldSystem *fieldSystem);
|
||||
|
||||
@@ -731,7 +731,7 @@ static void ov16_0223BCB4(OverlayManager *param0)
|
||||
sub_02015760(v0->unk_1AC);
|
||||
Bag_Copy(v0->unk_58, v1->bag);
|
||||
Heap_FreeToHeap(v0->unk_58);
|
||||
sub_02026338(v0->pokedex, v1->pokedex);
|
||||
Pokedex_Copy(v0->pokedex, v1->pokedex);
|
||||
Heap_FreeToHeap(v0->pokedex);
|
||||
|
||||
v1->pcBoxes = v0->pcBoxes;
|
||||
@@ -1085,7 +1085,7 @@ static void ov16_0223C2C0(BattleSystem *param0, FieldBattleDTO *param1)
|
||||
|
||||
Bag_Copy(param1->bag, param0->unk_58);
|
||||
param0->pokedex = sub_02026324(5);
|
||||
sub_02026338(param1->pokedex, param0->pokedex);
|
||||
Pokedex_Copy(param1->pokedex, param0->pokedex);
|
||||
|
||||
param0->pcBoxes = param1->pcBoxes;
|
||||
param0->unk_1B0 = param1->options;
|
||||
|
||||
@@ -122,7 +122,7 @@ static UnkStruct_02050ACC *sub_02050ACC(FieldBattleDTO *param0, int param1, int
|
||||
|
||||
static void sub_02050AF0(UnkStruct_02050ACC *param0)
|
||||
{
|
||||
sub_020520A4(param0->unk_10);
|
||||
FieldBattleDTO_Free(param0->unk_10);
|
||||
Heap_FreeToHeap(param0);
|
||||
}
|
||||
|
||||
@@ -134,7 +134,7 @@ static BOOL sub_02050B04(UnkStruct_02050ACC *param0)
|
||||
*(param0->unk_00) = param0->unk_10->resultMask;
|
||||
}
|
||||
|
||||
v0 = FieldBattleDTO_PlayerWon(param0->unk_10->resultMask);
|
||||
v0 = CheckPlayerWonBattle(param0->unk_10->resultMask);
|
||||
return v0;
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ static void sub_02050B1C(const FieldBattleDTO *param0, FieldSystem *fieldSystem)
|
||||
return;
|
||||
}
|
||||
|
||||
sub_020526E8(param0, fieldSystem);
|
||||
FieldBattleDTO_UpdateFieldSystem(param0, fieldSystem);
|
||||
}
|
||||
|
||||
static BOOL sub_02050B30(FieldTask *taskMan)
|
||||
@@ -256,7 +256,7 @@ static BOOL sub_02050CA8(FieldTask *taskMan)
|
||||
break;
|
||||
case 3:
|
||||
sub_02050C6C(v1->unk_10->resultMask, fieldSystem);
|
||||
sub_02052754(v1->unk_10, fieldSystem);
|
||||
FieldBattleDTO_UpdatePokedex(v1->unk_10, fieldSystem);
|
||||
|
||||
{
|
||||
GameRecords *v3 = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
@@ -295,7 +295,7 @@ static BOOL sub_02050D4C(FieldTask *taskMan)
|
||||
break;
|
||||
case 1: {
|
||||
sub_02050C6C(v1->unk_10->resultMask, fieldSystem);
|
||||
sub_02052754(v1->unk_10, fieldSystem);
|
||||
FieldBattleDTO_UpdatePokedex(v1->unk_10, fieldSystem);
|
||||
}
|
||||
{
|
||||
GameRecords *v3 = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
@@ -334,7 +334,7 @@ static UnkStruct_02050DD4 *sub_02050DD4(FieldBattleDTO *param0, int param1, int
|
||||
|
||||
static void sub_02050DFC(UnkStruct_02050DD4 *param0)
|
||||
{
|
||||
sub_020520A4(param0->unk_10);
|
||||
FieldBattleDTO_Free(param0->unk_10);
|
||||
Heap_FreeToHeap(param0);
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ static BOOL sub_02050EE0(FieldTask *taskMan)
|
||||
sub_02050B1C(v1->unk_10, fieldSystem);
|
||||
sub_0206D1B8(fieldSystem, v1->unk_10->unk_10C, v1->unk_10->resultMask);
|
||||
|
||||
if (FieldBattleDTO_PlayerWon(v1->unk_10->resultMask) == 0) {
|
||||
if (CheckPlayerWonBattle(v1->unk_10->resultMask) == 0) {
|
||||
sub_02050DFC(v1);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
FieldTask_InitJump(taskMan, sub_02052B2C, NULL);
|
||||
@@ -541,8 +541,8 @@ void sub_0205120C(FieldTask *taskMan, int *param1)
|
||||
fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
|
||||
v1 = sub_02051D8C(11, (0x0 | 0x0));
|
||||
sub_02052314(v1, fieldSystem);
|
||||
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
|
||||
FieldBattleDTO_Init(v1, fieldSystem);
|
||||
|
||||
v1->background = 0;
|
||||
v1->terrain = TERRAIN_PLAIN;
|
||||
@@ -562,8 +562,8 @@ void sub_02051270(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p
|
||||
fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
|
||||
v1 = sub_02051D8C(11, (0x0 | 0x0));
|
||||
sub_02052314(v1, fieldSystem);
|
||||
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
|
||||
FieldBattleDTO_Init(v1, fieldSystem);
|
||||
|
||||
ov6_022420D4(fieldSystem, param1, param2, v1);
|
||||
|
||||
@@ -586,8 +586,8 @@ void sub_020512E4(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p
|
||||
fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
|
||||
v1 = sub_02051D8C(11, (0x0 | 0x0));
|
||||
sub_02052314(v1, fieldSystem);
|
||||
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
|
||||
FieldBattleDTO_Init(v1, fieldSystem);
|
||||
|
||||
ov6_022420D4(fieldSystem, param1, param2, v1);
|
||||
|
||||
@@ -674,9 +674,9 @@ void sub_02051480(FieldTask *taskMan, int param1, int param2, int *param3)
|
||||
FieldSystem *fieldSystem;
|
||||
|
||||
fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
v1 = sub_02051D8C(11, 0x1);
|
||||
v1 = FieldBattleDTO_New(11, 0x1);
|
||||
|
||||
sub_02052314(v1, fieldSystem);
|
||||
FieldBattleDTO_Init(v1, fieldSystem);
|
||||
|
||||
v1->battleStatusMask = BATTLE_STATUS_FIRST_BATTLE;
|
||||
v1->trainerIDs[1] = param1;
|
||||
@@ -735,7 +735,7 @@ void sub_02051590(FieldTask *taskMan)
|
||||
FieldBattleDTO *v1;
|
||||
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
|
||||
v1 = sub_02051F4C(11, fieldSystem);
|
||||
v1 = FieldBattleDTO_NewCatchingTutorial(11, fieldSystem);
|
||||
v0 = sub_02050ACC(v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), NULL);
|
||||
|
||||
FieldTask_InitCall(taskMan, sub_020514E8, v0);
|
||||
@@ -763,8 +763,8 @@ void sub_020515CC(FieldTask *taskMan, int param1, int param2, int param3, int pa
|
||||
}
|
||||
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
v2 = sub_02051D8C(11, v0);
|
||||
sub_02052314(v2, fieldSystem);
|
||||
v2 = FieldBattleDTO_New(11, v0);
|
||||
FieldBattleDTO_Init(v2, fieldSystem);
|
||||
|
||||
if ((fieldSystem->location->mapId >= MAP_HEADER_DISTORTION_WORLD_1F) && (fieldSystem->location->mapId <= MAP_HEADER_DISTORTION_WORLD_TURNBACK_CAVE_ROOM)) {
|
||||
v2->battleStatusMask |= BATTLE_STATUS_DISTORTION;
|
||||
@@ -785,8 +785,8 @@ void sub_0205167C(FieldTask *taskMan, const u8 *param1, int param2)
|
||||
UnkStruct_02050ACC *v1;
|
||||
FieldBattleDTO *v2;
|
||||
|
||||
v2 = sub_02051D8C(11, param2);
|
||||
sub_020526CC(v2, fieldSystem, param1);
|
||||
v2 = FieldBattleDTO_New(11, param2);
|
||||
FieldBattleDTO_InitWithPartyOrderFromSave(v2, fieldSystem, param1);
|
||||
|
||||
v1 = sub_02050ACC(v2, EncEffects_CutInEffect(v2), EncEffects_BGM(v2), NULL);
|
||||
FieldTask_InitCall(taskMan, sub_02050CA8, v1);
|
||||
@@ -823,15 +823,15 @@ void sub_020516F4(FieldTask *taskMan, int param1, int param2, int param3)
|
||||
|
||||
if (param3 == 0) {
|
||||
v4 = (0x4 | 0x1);
|
||||
v2 = sub_02051D8C(11, (0x4 | 0x1));
|
||||
v2 = FieldBattleDTO_New(11, (0x4 | 0x1));
|
||||
v5 = (UnkEnum_0202F510_00);
|
||||
} else if (param3 == 1) {
|
||||
v4 = ((0x4 | 0x1) | 0x2);
|
||||
v2 = sub_02051D8C(11, ((0x4 | 0x1) | 0x2));
|
||||
v2 = FieldBattleDTO_New(11, ((0x4 | 0x1) | 0x2));
|
||||
v5 = (UnkEnum_0202F510_07);
|
||||
} else {
|
||||
v4 = ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80);
|
||||
v2 = sub_02051D8C(11, ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80));
|
||||
v2 = FieldBattleDTO_New(11, ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80));
|
||||
|
||||
v2->trainerIDs[1] = 1;
|
||||
v2->trainerIDs[3] = 2;
|
||||
@@ -841,7 +841,7 @@ void sub_020516F4(FieldTask *taskMan, int param1, int param2, int param3)
|
||||
v5 = (UnkEnum_0202F510_14);
|
||||
}
|
||||
|
||||
sub_02052348(v2, fieldSystem, param2);
|
||||
FieldBattleDTO_InitWithNormalizedMonLevels(v2, fieldSystem, param2);
|
||||
sub_0202F1F8(fieldSystem->saveData, 11, &v3);
|
||||
|
||||
v2->unk_18A = v5;
|
||||
@@ -881,9 +881,9 @@ void sub_020517E8(FieldSystem *fieldSystem, const u8 *param1, int param2)
|
||||
FieldBattleDTO *v1;
|
||||
int v2;
|
||||
|
||||
v1 = sub_02051D8C(11, param2);
|
||||
v1 = FieldBattleDTO_New(11, param2);
|
||||
|
||||
sub_020526CC(v1, fieldSystem, param1);
|
||||
FieldBattleDTO_InitWithPartyOrderFromSave(v1, fieldSystem, param1);
|
||||
sub_0202F1F8(fieldSystem->saveData, 11, &v2);
|
||||
|
||||
v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2);
|
||||
@@ -898,9 +898,9 @@ void sub_0205184C(FieldSystem *fieldSystem, const Party *param1, int param2)
|
||||
FieldBattleDTO *v1;
|
||||
int v2;
|
||||
|
||||
v1 = sub_02051D8C(11, param2);
|
||||
v1 = FieldBattleDTO_New(11, param2);
|
||||
|
||||
sub_020524E4(v1, fieldSystem, param1, NULL);
|
||||
FieldBattleDTO_InitWithPartyOrder(v1, fieldSystem, param1, NULL);
|
||||
sub_0202F1F8(fieldSystem->saveData, 11, &v2);
|
||||
|
||||
v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2);
|
||||
@@ -1011,8 +1011,8 @@ void sub_02051ABC(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL p
|
||||
fieldSystem = FieldTask_GetFieldSystem(taskMan);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
|
||||
v1 = sub_02051D8C(11, (0x0 | 0x0));
|
||||
sub_02052314(v1, fieldSystem);
|
||||
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
|
||||
FieldBattleDTO_Init(v1, fieldSystem);
|
||||
|
||||
ov6_022420D4(fieldSystem, param1, param2, v1);
|
||||
|
||||
|
||||
@@ -4,8 +4,13 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/battle.h"
|
||||
#include "constants/heap.h"
|
||||
#include "constants/narc.h"
|
||||
#include "constants/overworld_weather.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/string.h"
|
||||
#include "consts/battle.h"
|
||||
#include "consts/items.h"
|
||||
#include "consts/species.h"
|
||||
|
||||
#include "struct_decls/pokedexdata_decl.h"
|
||||
@@ -32,6 +37,7 @@
|
||||
#include "map_header.h"
|
||||
#include "message.h"
|
||||
#include "party.h"
|
||||
#include "player_avatar.h"
|
||||
#include "pokemon.h"
|
||||
#include "poketch_data.h"
|
||||
#include "rtc.h"
|
||||
@@ -57,485 +63,464 @@
|
||||
#include "vars_flags.h"
|
||||
|
||||
#include "res/text/gmm/message_bank_location_names.h"
|
||||
#include "res/text/pl_msg.naix"
|
||||
|
||||
static void sub_0205281C(FieldBattleDTO *param0, const FieldSystem *fieldSystem);
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
static int CalcTerrain(const FieldSystem *fieldSystem, enum BattleBackground background);
|
||||
static void SetBackgroundAndTerrain(FieldBattleDTO *dto, const FieldSystem *fieldSystem);
|
||||
|
||||
FieldBattleDTO *sub_02051D8C(int param0, u32 param1)
|
||||
FieldBattleDTO *FieldBattleDTO_New(enum HeapId heapID, u32 battleType)
|
||||
{
|
||||
int v0;
|
||||
FieldBattleDTO *v1;
|
||||
int i;
|
||||
FieldBattleDTO *dto = Heap_AllocFromHeap(heapID, sizeof(FieldBattleDTO));
|
||||
MI_CpuClear8(dto, sizeof(FieldBattleDTO));
|
||||
|
||||
v1 = Heap_AllocFromHeap(param0, sizeof(FieldBattleDTO));
|
||||
MI_CpuClear8(v1, sizeof(FieldBattleDTO));
|
||||
dto->battleType = battleType;
|
||||
dto->battleStatusMask = 0;
|
||||
dto->resultMask = 0;
|
||||
|
||||
v1->battleType = param1;
|
||||
v1->battleStatusMask = 0;
|
||||
v1->resultMask = 0;
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v1->trainerIDs[v0] = 0;
|
||||
MI_CpuClear32(&v1->trainerData[v0], sizeof(TrainerData));
|
||||
for (i = 0; i < MAX_BATTLERS; i++) {
|
||||
dto->trainerIDs[i] = 0;
|
||||
MI_CpuClear32(&dto->trainerData[i], sizeof(TrainerData));
|
||||
}
|
||||
|
||||
v1->background = 0;
|
||||
v1->terrain = TERRAIN_MAX;
|
||||
v1->mapLabelTextID = pl_msg_00000433_00000;
|
||||
v1->timeOfDay = TOD_MORNING;
|
||||
v1->mapEvolutionMethod = 0;
|
||||
v1->visitedContestHall = 1;
|
||||
v1->metBebe = 1;
|
||||
v1->fieldWeather = 0;
|
||||
dto->background = BACKGROUND_PLAIN;
|
||||
dto->terrain = TERRAIN_MAX;
|
||||
dto->mapLabelTextID = pl_msg_00000433_00000;
|
||||
dto->timeOfDay = TOD_MORNING;
|
||||
dto->mapEvolutionMethod = 0;
|
||||
dto->visitedContestHall = TRUE;
|
||||
dto->metBebe = TRUE;
|
||||
dto->fieldWeather = OVERWORLD_WEATHER_CLEAR;
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v1->parties[v0] = Party_New(param0);
|
||||
for (i = 0; i < MAX_BATTLERS; i++) {
|
||||
dto->parties[i] = Party_New(heapID);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v1->trainerInfo[v0] = TrainerInfo_New(param0);
|
||||
for (i = 0; i < MAX_BATTLERS; i++) {
|
||||
dto->trainerInfo[i] = TrainerInfo_New(heapID);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v1->chatotCries[v0] = AllocateAndInitializeChatotCryData(param0);
|
||||
for (i = 0; i < MAX_BATTLERS; i++) {
|
||||
dto->chatotCries[i] = AllocateAndInitializeChatotCryData(heapID);
|
||||
}
|
||||
|
||||
v1->bag = Bag_New(param0);
|
||||
v1->pokedex = sub_02026324(param0);
|
||||
v1->options = Options_New(param0);
|
||||
v1->unk_10C = sub_0206D140(param0);
|
||||
v1->bagCursor = NULL;
|
||||
v1->subscreenCursorOn = NULL;
|
||||
v1->countSafariBalls = 0;
|
||||
v1->unk_104 = NULL;
|
||||
v1->records = NULL;
|
||||
v1->journal = NULL;
|
||||
v1->rulesetMask = 0;
|
||||
dto->bag = Bag_New(heapID);
|
||||
dto->pokedex = sub_02026324(heapID);
|
||||
dto->options = Options_New(heapID);
|
||||
dto->unk_10C = sub_0206D140(heapID);
|
||||
dto->bagCursor = NULL;
|
||||
dto->subscreenCursorOn = NULL;
|
||||
dto->countSafariBalls = 0;
|
||||
dto->unk_104 = NULL;
|
||||
dto->records = NULL;
|
||||
dto->journal = NULL;
|
||||
dto->rulesetMask = 0;
|
||||
|
||||
{
|
||||
RTCDate v2;
|
||||
RTCTime v3;
|
||||
RTCDate date;
|
||||
RTCTime time;
|
||||
GetCurrentDateTime(&date, &time);
|
||||
dto->seed = date.year
|
||||
+ date.month * 0x100 * date.day * 0x10000
|
||||
+ time.hour * 0x10000
|
||||
+ (time.minute + time.second) * 0x1000000
|
||||
+ gCoreSys.vblankCounter;
|
||||
|
||||
GetCurrentDateTime(&v2, &v3);
|
||||
v1->seed = v2.year + v2.month * 0x100 * v2.day * 0x10000 + v3.hour * 0x10000 + (v3.minute + v3.second) * 0x1000000 + gCoreSys.vblankCounter;
|
||||
}
|
||||
|
||||
if (CommSys_IsInitialized() == 1) {
|
||||
for (v0 = 0; v0 < CommSys_ConnectedCount(); v0++) {
|
||||
v1->unk_178[v0] = sub_020362F4(v0);
|
||||
if (CommSys_IsInitialized() == TRUE) {
|
||||
for (i = 0; i < CommSys_ConnectedCount(); i++) {
|
||||
dto->unk_178[i] = sub_020362F4(i);
|
||||
}
|
||||
|
||||
v1->networkID = CommSys_CurNetId();
|
||||
dto->networkID = CommSys_CurNetId();
|
||||
}
|
||||
|
||||
MI_CpuClear8(&(v1->battleRecords), sizeof(BattleRecords));
|
||||
return v1;
|
||||
MI_CpuClear8(&(dto->battleRecords), sizeof(BattleRecords));
|
||||
return dto;
|
||||
}
|
||||
|
||||
FieldBattleDTO *sub_02051F24(int param0, int param1)
|
||||
FieldBattleDTO *FieldBattleDTO_NewSafari(enum HeapId heapID, int countSafariBalls)
|
||||
{
|
||||
FieldBattleDTO *v0;
|
||||
|
||||
v0 = sub_02051D8C(param0, 0x20);
|
||||
v0->countSafariBalls = param1;
|
||||
|
||||
return v0;
|
||||
FieldBattleDTO *dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_SAFARI);
|
||||
dto->countSafariBalls = countSafariBalls;
|
||||
return dto;
|
||||
}
|
||||
|
||||
FieldBattleDTO *sub_02051F38(int param0, int param1)
|
||||
FieldBattleDTO *FieldBattleDTO_NewPalPark(enum HeapId heapID, int countParkBalls)
|
||||
{
|
||||
FieldBattleDTO *v0;
|
||||
|
||||
v0 = sub_02051D8C(param0, 0x200);
|
||||
v0->countSafariBalls = param1;
|
||||
|
||||
return v0;
|
||||
FieldBattleDTO *dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_PAL_PARK);
|
||||
dto->countSafariBalls = countParkBalls;
|
||||
return dto;
|
||||
}
|
||||
|
||||
FieldBattleDTO *sub_02051F4C(int param0, const FieldSystem *fieldSystem)
|
||||
FieldBattleDTO *FieldBattleDTO_NewCatchingTutorial(enum HeapId heapID, const FieldSystem *fieldSystem)
|
||||
{
|
||||
TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Options *v1 = SaveData_Options(fieldSystem->saveData);
|
||||
MessageLoader *v2;
|
||||
Strbuf *v3;
|
||||
FieldBattleDTO *v4;
|
||||
Pokemon *v5;
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Options *options = SaveData_Options(fieldSystem->saveData);
|
||||
MessageLoader *msgLoader;
|
||||
Strbuf *strbuf;
|
||||
FieldBattleDTO *dto;
|
||||
Pokemon *mon;
|
||||
|
||||
v4 = sub_02051D8C(param0, 0x400);
|
||||
v2 = MessageLoader_Init(1, 26, 553, param0);
|
||||
v3 = Strbuf_Init(8, param0);
|
||||
dto = FieldBattleDTO_New(heapID, BATTLE_TYPE_CATCH_TUTORIAL);
|
||||
msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, message_bank_counterpart_names, heapID);
|
||||
strbuf = Strbuf_Init(TRAINER_NAME_LEN + 1, heapID);
|
||||
|
||||
MessageLoader_GetStrbuf(v2, TrainerInfo_Gender(v0) ^ 1, v3);
|
||||
TrainerInfo_SetName(v4->trainerInfo[0], Strbuf_GetData(v3));
|
||||
Strbuf_Free(v3);
|
||||
MessageLoader_Free(v2);
|
||||
TrainerInfo_SetGender(v4->trainerInfo[0], TrainerInfo_Gender(v0) ^ 1);
|
||||
sub_0205281C(v4, fieldSystem);
|
||||
Options_Copy(v1, v4->options);
|
||||
MessageLoader_GetStrbuf(msgLoader, TrainerInfo_Gender(trainerInfo) ^ 1, strbuf);
|
||||
TrainerInfo_SetName(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], Strbuf_GetData(strbuf));
|
||||
Strbuf_Free(strbuf);
|
||||
MessageLoader_Free(msgLoader);
|
||||
|
||||
v4->timeOfDay = sub_02055BA8(fieldSystem);
|
||||
Bag_TryAddItem(v4->bag, 4, 20, param0);
|
||||
v5 = Pokemon_New(param0);
|
||||
TrainerInfo_SetGender(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], TrainerInfo_Gender(trainerInfo) ^ 1);
|
||||
SetBackgroundAndTerrain(dto, fieldSystem);
|
||||
Options_Copy(options, dto->options);
|
||||
dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
Bag_TryAddItem(dto->bag, ITEM_POKE_BALL, 20, heapID);
|
||||
|
||||
Pokemon_InitWith(v5, sub_0206B08C(SaveData_GetVarsFlags(fieldSystem->saveData)), 5, 32, FALSE, 0, OTID_NOT_SHINY, 0);
|
||||
Party_AddPokemon(v4->parties[0], v5);
|
||||
Pokemon_InitWith(v5, SPECIES_BIDOOF, 2, 32, FALSE, 0, OTID_NOT_SHINY, 0);
|
||||
Party_AddPokemon(v4->parties[1], v5);
|
||||
Heap_FreeToHeap(v5);
|
||||
mon = Pokemon_New(heapID);
|
||||
Pokemon_InitWith(mon, sub_0206B08C(SaveData_GetVarsFlags(fieldSystem->saveData)), 5, 32, FALSE, 0, OTID_NOT_SHINY, 0);
|
||||
Party_AddPokemon(dto->parties[BATTLER_PLAYER_SLOT_1], mon);
|
||||
Pokemon_InitWith(mon, SPECIES_BIDOOF, 2, 32, FALSE, 0, OTID_NOT_SHINY, 0);
|
||||
Party_AddPokemon(dto->parties[BATTLER_ENEMY_SLOT_1], mon);
|
||||
Heap_FreeToHeap(mon);
|
||||
|
||||
v4->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
v4->bagCursor = fieldSystem->unk_98;
|
||||
v4->subscreenCursorOn = NULL;
|
||||
v4->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
v4->journal = fieldSystem->journal;
|
||||
v4->mapHeaderID = fieldSystem->location->mapId;
|
||||
dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
dto->bagCursor = fieldSystem->unk_98;
|
||||
dto->subscreenCursorOn = NULL;
|
||||
dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
dto->journal = fieldSystem->journal;
|
||||
dto->mapHeaderID = fieldSystem->location->mapId;
|
||||
|
||||
sub_02052894(v4);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(dto);
|
||||
|
||||
return v4;
|
||||
return dto;
|
||||
}
|
||||
|
||||
void sub_020520A4(FieldBattleDTO *param0)
|
||||
void FieldBattleDTO_Free(FieldBattleDTO *dto)
|
||||
{
|
||||
int v0;
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
GF_ASSERT(param0->parties[v0] != NULL);
|
||||
Heap_FreeToHeap(param0->parties[v0]);
|
||||
int i;
|
||||
for (i = 0; i < 4; i++) {
|
||||
GF_ASSERT(dto->parties[i] != NULL);
|
||||
Heap_FreeToHeap(dto->parties[i]);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
GF_ASSERT(param0->trainerInfo[v0] != NULL);
|
||||
Heap_FreeToHeap(param0->trainerInfo[v0]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
GF_ASSERT(dto->trainerInfo[i] != NULL);
|
||||
Heap_FreeToHeap(dto->trainerInfo[i]);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
GF_ASSERT(param0->chatotCries[v0] != NULL);
|
||||
Heap_FreeToHeap(param0->chatotCries[v0]);
|
||||
for (i = 0; i < 4; i++) {
|
||||
GF_ASSERT(dto->chatotCries[i] != NULL);
|
||||
Heap_FreeToHeap(dto->chatotCries[i]);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(param0->bag);
|
||||
Heap_FreeToHeap(param0->pokedex);
|
||||
Heap_FreeToHeap(param0->options);
|
||||
sub_0206D158(param0->unk_10C);
|
||||
Heap_FreeToHeap(param0);
|
||||
Heap_FreeToHeap(dto->bag);
|
||||
Heap_FreeToHeap(dto->pokedex);
|
||||
Heap_FreeToHeap(dto->options);
|
||||
sub_0206D158(dto->unk_10C);
|
||||
Heap_FreeToHeap(dto);
|
||||
}
|
||||
|
||||
void sub_0205213C(FieldBattleDTO *param0, Pokemon *param1, int param2)
|
||||
void FieldBattleDTO_AddPokemonToBattler(FieldBattleDTO *dto, Pokemon *src, int battler)
|
||||
{
|
||||
int v0;
|
||||
|
||||
GF_ASSERT(param2 < 4);
|
||||
v0 = Party_AddPokemon(param0->parties[param2], param1);
|
||||
GF_ASSERT(v0);
|
||||
GF_ASSERT(battler < MAX_BATTLERS);
|
||||
BOOL success = Party_AddPokemon(dto->parties[battler], src);
|
||||
GF_ASSERT(success);
|
||||
}
|
||||
|
||||
void sub_02052164(FieldBattleDTO *param0, const Party *param1, int param2)
|
||||
void FieldBattleDTO_CopyPartyToBattler(FieldBattleDTO *dto, const Party *src, int battler)
|
||||
{
|
||||
GF_ASSERT(param2 < 4);
|
||||
Party_cpy(param1, param0->parties[param2]);
|
||||
GF_ASSERT(battler < MAX_BATTLERS);
|
||||
Party_cpy(src, dto->parties[battler]);
|
||||
}
|
||||
|
||||
void sub_02052184(FieldBattleDTO *param0, const TrainerInfo *param1, int param2)
|
||||
void FieldBattleDTO_CopyTrainerInfoToBattler(FieldBattleDTO *dto, const TrainerInfo *src, int battler)
|
||||
{
|
||||
GF_ASSERT(param2 < 4);
|
||||
TrainerInfo_Copy(param1, param0->trainerInfo[param2]);
|
||||
GF_ASSERT(battler < MAX_BATTLERS);
|
||||
TrainerInfo_Copy(src, dto->trainerInfo[battler]);
|
||||
}
|
||||
|
||||
void sub_020521A4(FieldBattleDTO *param0, const ChatotCry *param1, int param2)
|
||||
void FieldBattleDTO_CopyChatotCryToBattler(FieldBattleDTO *dto, const ChatotCry *src, int battler)
|
||||
{
|
||||
CopyChatotCryData(param0->chatotCries[param2], param1);
|
||||
CopyChatotCryData(dto->chatotCries[battler], src);
|
||||
}
|
||||
|
||||
void sub_020521B8(FieldBattleDTO *param0, const FieldSystem *fieldSystem, SaveData *param2, int param3, Journal *param4, BagCursor *param5, u8 *param6)
|
||||
void FieldBattleDTO_InitFromGameState(FieldBattleDTO *dto, const FieldSystem *fieldSystem, SaveData *save, enum MapHeader mapHeaderID, Journal *journal, BagCursor *bagCursor, u8 *subscreenCursorOn)
|
||||
{
|
||||
TrainerInfo *v0 = SaveData_GetTrainerInfo(param2);
|
||||
Party *v1 = Party_GetFromSavedata(param2);
|
||||
Bag *v2 = SaveData_GetBag(param2);
|
||||
PokedexData *v3 = SaveData_Pokedex(param2);
|
||||
ChatotCry *v4 = GetChatotCryDataFromSave(param2);
|
||||
Options *v5 = SaveData_Options(param2);
|
||||
FieldOverworldState *v6 = SaveData_GetFieldOverworldState(param2);
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(save);
|
||||
Party *party = Party_GetFromSavedata(save);
|
||||
Bag *bag = SaveData_GetBag(save);
|
||||
PokedexData *pokedex = SaveData_Pokedex(save);
|
||||
ChatotCry *chatotCry = GetChatotCryDataFromSave(save);
|
||||
Options *options = SaveData_Options(save);
|
||||
FieldOverworldState *fieldOverworldState = SaveData_GetFieldOverworldState(save);
|
||||
|
||||
if (fieldSystem != NULL) {
|
||||
sub_0205281C(param0, fieldSystem);
|
||||
param0->timeOfDay = sub_02055BA8(fieldSystem);
|
||||
SetBackgroundAndTerrain(dto, fieldSystem);
|
||||
dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
} else {
|
||||
param0->background = MapHeader_GetBattleBG(param3);
|
||||
param0->terrain = TERRAIN_BUILDING;
|
||||
{
|
||||
GameTime *v7 = SaveData_GetGameTime(param2);
|
||||
dto->background = MapHeader_GetBattleBG(mapHeaderID);
|
||||
dto->terrain = TERRAIN_BUILDING;
|
||||
|
||||
param0->timeOfDay = TimeOfDayForHour(v7->time.hour);
|
||||
}
|
||||
GameTime *gameTime = SaveData_GetGameTime(save);
|
||||
dto->timeOfDay = TimeOfDayForHour(gameTime->time.hour);
|
||||
}
|
||||
|
||||
sub_02052184(param0, v0, 0);
|
||||
sub_02052164(param0, v1, 0);
|
||||
Bag_Copy(v2, param0->bag);
|
||||
sub_02026338(v3, param0->pokedex);
|
||||
Options_Copy(v5, param0->options);
|
||||
sub_020521A4(param0, v4, 0);
|
||||
FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1);
|
||||
FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1);
|
||||
Bag_Copy(bag, dto->bag);
|
||||
Pokedex_Copy(pokedex, dto->pokedex);
|
||||
Options_Copy(options, dto->options);
|
||||
FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1);
|
||||
|
||||
param0->pcBoxes = SaveData_PCBoxes(param2);
|
||||
param0->mapLabelTextID = MapHeader_GetMapLabelTextID(param3);
|
||||
param0->mapEvolutionMethod = MapHeader_GetMapEvolutionMethod(param3);
|
||||
param0->visitedContestHall = PokemonSummaryScreen_ShowContestData(param2);
|
||||
param0->metBebe = SystemFlag_CheckMetBebe(SaveData_GetVarsFlags(param2));
|
||||
param0->fieldWeather = FieldOverworldState_GetWeather(v6);
|
||||
param0->bagCursor = param5;
|
||||
param0->subscreenCursorOn = param6;
|
||||
param0->poketchData = SaveData_PoketchData(param2);
|
||||
param0->unk_104 = sub_0202C878(param2);
|
||||
param0->records = SaveData_GetGameRecordsPtr(param2);
|
||||
param0->journal = param4;
|
||||
param0->unk_124 = sub_02027F8C(param2);
|
||||
param0->mapHeaderID = param3;
|
||||
param0->saveData = param2;
|
||||
dto->pcBoxes = SaveData_PCBoxes(save);
|
||||
dto->mapLabelTextID = MapHeader_GetMapLabelTextID(mapHeaderID);
|
||||
dto->mapEvolutionMethod = MapHeader_GetMapEvolutionMethod(mapHeaderID);
|
||||
dto->visitedContestHall = PokemonSummaryScreen_ShowContestData(save);
|
||||
dto->metBebe = SystemFlag_CheckMetBebe(SaveData_GetVarsFlags(save));
|
||||
dto->fieldWeather = FieldOverworldState_GetWeather(fieldOverworldState);
|
||||
dto->bagCursor = bagCursor;
|
||||
dto->subscreenCursorOn = subscreenCursorOn;
|
||||
dto->poketchData = SaveData_PoketchData(save);
|
||||
dto->unk_104 = sub_0202C878(save);
|
||||
dto->records = SaveData_GetGameRecordsPtr(save);
|
||||
dto->journal = journal;
|
||||
dto->unk_124 = sub_02027F8C(save);
|
||||
dto->mapHeaderID = mapHeaderID;
|
||||
dto->saveData = save;
|
||||
}
|
||||
|
||||
void sub_02052314(FieldBattleDTO *battleParams, const FieldSystem *fieldSystem)
|
||||
void FieldBattleDTO_Init(FieldBattleDTO *dto, const FieldSystem *fieldSystem)
|
||||
{
|
||||
sub_020521B8(battleParams, fieldSystem, fieldSystem->saveData, fieldSystem->location->mapId, fieldSystem->journal, fieldSystem->unk_98, fieldSystem->battleSubscreenCursorOn);
|
||||
sub_02052894(battleParams);
|
||||
FieldBattleDTO_InitFromGameState(dto, fieldSystem, fieldSystem->saveData, fieldSystem->location->mapId, fieldSystem->journal, fieldSystem->unk_98, fieldSystem->battleSubscreenCursorOn);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(dto);
|
||||
}
|
||||
|
||||
void sub_02052348(FieldBattleDTO *param0, const FieldSystem *fieldSystem, int param2)
|
||||
void FieldBattleDTO_InitWithNormalizedMonLevels(FieldBattleDTO *dto, const FieldSystem *fieldSystem, int level)
|
||||
{
|
||||
int v0;
|
||||
u32 v1;
|
||||
TrainerInfo *v2 = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *v3 = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *v4 = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *v5 = SaveData_Pokedex(fieldSystem->saveData);
|
||||
ChatotCry *v6 = GetChatotCryDataFromSave(fieldSystem->saveData);
|
||||
Options *v7 = SaveData_Options(fieldSystem->saveData);
|
||||
Pokemon *v8;
|
||||
int i;
|
||||
u32 levelBaseExp;
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *party = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *bag = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData);
|
||||
ChatotCry *chatotCry = GetChatotCryDataFromSave(fieldSystem->saveData);
|
||||
Options *options = SaveData_Options(fieldSystem->saveData);
|
||||
|
||||
param0->background = 6;
|
||||
param0->terrain = TERRAIN_BUILDING;
|
||||
dto->background = BACKGROUND_INDOORS_1;
|
||||
dto->terrain = TERRAIN_BUILDING;
|
||||
|
||||
sub_02052184(param0, v2, 0);
|
||||
v8 = Pokemon_New(11);
|
||||
Party_InitWithCapacity(param0->parties[0], Party_GetCurrentCount(v3));
|
||||
FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1);
|
||||
|
||||
for (v0 = 0; v0 < Party_GetCurrentCount(v3); v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(v3, v0), v8);
|
||||
Pokemon *mon = Pokemon_New(HEAP_ID_FIELDMAP);
|
||||
Party_InitWithCapacity(dto->parties[BATTLER_PLAYER_SLOT_1], Party_GetCurrentCount(party));
|
||||
for (i = 0; i < Party_GetCurrentCount(party); i++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(party, i), mon);
|
||||
|
||||
if ((Pokemon_GetValue(v8, MON_DATA_LEVEL, NULL) != param2) && (param2 != 0)) {
|
||||
v1 = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(v8, MON_DATA_SPECIES, NULL), param2);
|
||||
|
||||
Pokemon_SetValue(v8, MON_DATA_EXP, &v1);
|
||||
Pokemon_CalcLevelAndStats(v8);
|
||||
if (Pokemon_GetValue(mon, MON_DATA_LEVEL, NULL) != level && level != 0) {
|
||||
levelBaseExp = Pokemon_GetSpeciesBaseExpAt(Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL), level);
|
||||
Pokemon_SetValue(mon, MON_DATA_EXP, &levelBaseExp);
|
||||
Pokemon_CalcLevelAndStats(mon);
|
||||
}
|
||||
|
||||
sub_0205213C(param0, v8, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(dto, mon, BATTLER_PLAYER_SLOT_1);
|
||||
}
|
||||
Heap_FreeToHeap(mon);
|
||||
|
||||
Heap_FreeToHeap(v8);
|
||||
Bag_Copy(v4, param0->bag);
|
||||
sub_02026338(v5, param0->pokedex);
|
||||
Options_Copy(v7, param0->options);
|
||||
sub_020521A4(param0, v6, 0);
|
||||
Bag_Copy(bag, dto->bag);
|
||||
Pokedex_Copy(pokedex, dto->pokedex);
|
||||
Options_Copy(options, dto->options);
|
||||
FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1);
|
||||
|
||||
param0->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
param0->timeOfDay = sub_02055BA8(fieldSystem);
|
||||
param0->bagCursor = fieldSystem->unk_98;
|
||||
param0->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn;
|
||||
param0->poketchData = SaveData_PoketchData(fieldSystem->saveData);
|
||||
param0->unk_104 = sub_0202C878(fieldSystem->saveData);
|
||||
param0->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
param0->journal = fieldSystem->journal;
|
||||
param0->unk_124 = sub_02027F8C(fieldSystem->saveData);
|
||||
param0->mapHeaderID = fieldSystem->location->mapId;
|
||||
param0->saveData = fieldSystem->saveData;
|
||||
dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
dto->bagCursor = fieldSystem->unk_98;
|
||||
dto->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn;
|
||||
dto->poketchData = SaveData_PoketchData(fieldSystem->saveData);
|
||||
dto->unk_104 = sub_0202C878(fieldSystem->saveData);
|
||||
dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
dto->journal = fieldSystem->journal;
|
||||
dto->unk_124 = sub_02027F8C(fieldSystem->saveData);
|
||||
dto->mapHeaderID = fieldSystem->location->mapId;
|
||||
dto->saveData = fieldSystem->saveData;
|
||||
|
||||
sub_02052894(param0);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(dto);
|
||||
}
|
||||
|
||||
void sub_020524E4(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const Party *param2, const u8 *param3)
|
||||
void FieldBattleDTO_InitWithPartyOrder(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const Party *party, const u8 *partyOrder)
|
||||
{
|
||||
TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Bag *v1 = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *v2 = SaveData_Pokedex(fieldSystem->saveData);
|
||||
ChatotCry *v3 = GetChatotCryDataFromSave(fieldSystem->saveData);
|
||||
Options *v4 = SaveData_Options(fieldSystem->saveData);
|
||||
const BattleRegulation *v5 = fieldSystem->unk_B0;
|
||||
int v6, v7, v8;
|
||||
Pokemon *v9;
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Bag *bag = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData);
|
||||
ChatotCry *chatotCry = GetChatotCryDataFromSave(fieldSystem->saveData);
|
||||
Options *options = SaveData_Options(fieldSystem->saveData);
|
||||
const BattleRegulation *regulation = fieldSystem->unk_B0;
|
||||
int i;
|
||||
Pokemon *mon;
|
||||
|
||||
param0->background = 6;
|
||||
param0->terrain = TERRAIN_BUILDING;
|
||||
dto->background = BACKGROUND_INDOORS_1;
|
||||
dto->terrain = TERRAIN_BUILDING;
|
||||
|
||||
sub_02052184(param0, v0, 0);
|
||||
FieldBattleDTO_CopyTrainerInfoToBattler(dto, trainerInfo, BATTLER_PLAYER_SLOT_1);
|
||||
|
||||
if (param3 == NULL) {
|
||||
sub_02052164(param0, param2, 0);
|
||||
if (partyOrder == NULL) {
|
||||
FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1);
|
||||
} else {
|
||||
int v10;
|
||||
|
||||
v10 = 0;
|
||||
|
||||
for (v8 = 0; v8 < 6; v8++) {
|
||||
if (param3[v8] != 0) {
|
||||
v10++;
|
||||
int numToCopy = 0;
|
||||
for (i = 0; i < MAX_PARTY_SIZE; i++) {
|
||||
if (partyOrder[i] != 0) {
|
||||
numToCopy++;
|
||||
}
|
||||
}
|
||||
|
||||
if (v10 == 0) {
|
||||
sub_02052164(param0, param2, 0);
|
||||
if (numToCopy == 0) {
|
||||
FieldBattleDTO_CopyPartyToBattler(dto, party, BATTLER_PLAYER_SLOT_1);
|
||||
} else {
|
||||
v9 = Pokemon_New(11);
|
||||
Party_InitWithCapacity(param0->parties[0], v10);
|
||||
|
||||
for (v8 = 0; v8 < v10; v8++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param2, param3[v8] - 1), v9);
|
||||
sub_0205213C(param0, v9, 0);
|
||||
mon = Pokemon_New(HEAP_ID_FIELDMAP);
|
||||
Party_InitWithCapacity(dto->parties[BATTLER_PLAYER_SLOT_1], numToCopy);
|
||||
for (i = 0; i < numToCopy; i++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(party, partyOrder[i] - 1), mon);
|
||||
FieldBattleDTO_AddPokemonToBattler(dto, mon, BATTLER_PLAYER_SLOT_1);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v9);
|
||||
Heap_FreeToHeap(mon);
|
||||
}
|
||||
}
|
||||
|
||||
if (v5) {
|
||||
if (sub_02026074(v5, 12)) {
|
||||
param0->rulesetMask = 1;
|
||||
if (regulation) {
|
||||
if (sub_02026074(regulation, 12)) {
|
||||
dto->rulesetMask = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Bag_Copy(v1, param0->bag);
|
||||
sub_02026338(v2, param0->pokedex);
|
||||
Options_Copy(v4, param0->options);
|
||||
sub_020521A4(param0, v3, 0);
|
||||
Bag_Copy(bag, dto->bag);
|
||||
Pokedex_Copy(pokedex, dto->pokedex);
|
||||
Options_Copy(options, dto->options);
|
||||
FieldBattleDTO_CopyChatotCryToBattler(dto, chatotCry, BATTLER_PLAYER_SLOT_1);
|
||||
|
||||
param0->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
param0->timeOfDay = sub_02055BA8(fieldSystem);
|
||||
param0->bagCursor = fieldSystem->unk_98;
|
||||
param0->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn;
|
||||
param0->unk_104 = sub_0202C878(fieldSystem->saveData);
|
||||
param0->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
param0->journal = fieldSystem->journal;
|
||||
param0->mapHeaderID = fieldSystem->location->mapId;
|
||||
param0->unk_124 = sub_02027F8C(fieldSystem->saveData);
|
||||
param0->saveData = fieldSystem->saveData;
|
||||
dto->pcBoxes = SaveData_PCBoxes(fieldSystem->saveData);
|
||||
dto->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
dto->bagCursor = fieldSystem->unk_98;
|
||||
dto->subscreenCursorOn = fieldSystem->battleSubscreenCursorOn;
|
||||
dto->unk_104 = sub_0202C878(fieldSystem->saveData);
|
||||
dto->records = SaveData_GetGameRecordsPtr(fieldSystem->saveData);
|
||||
dto->journal = fieldSystem->journal;
|
||||
dto->mapHeaderID = fieldSystem->location->mapId;
|
||||
dto->unk_124 = sub_02027F8C(fieldSystem->saveData);
|
||||
dto->saveData = fieldSystem->saveData;
|
||||
|
||||
if (sub_020326C4(sub_0203895C())) {
|
||||
int v11 = TrainerInfo_Appearance(v0);
|
||||
int v12 = TrainerInfo_Gender(v0);
|
||||
int unionAppearance = TrainerInfo_Appearance(trainerInfo);
|
||||
int unionGender = TrainerInfo_Gender(trainerInfo);
|
||||
|
||||
param0->trainerData[0].class = sub_0205CA14(v12, v11, 1);
|
||||
CharCode_Copy(¶m0->trainerData[0].name[0], TrainerInfo_Name(param0->trainerInfo[0]));
|
||||
param0->trainerData[2] = param0->trainerData[0];
|
||||
dto->trainerData[BATTLER_PLAYER_SLOT_1].class = sub_0205CA14(unionGender, unionAppearance, 1);
|
||||
CharCode_Copy(dto->trainerData[BATTLER_PLAYER_SLOT_1].name, TrainerInfo_Name(dto->trainerInfo[BATTLER_PLAYER_SLOT_1]));
|
||||
dto->trainerData[BATTLER_PLAYER_SLOT_2] = dto->trainerData[BATTLER_PLAYER_SLOT_1];
|
||||
} else {
|
||||
sub_02052894(param0);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(dto);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_020526CC(FieldBattleDTO *param0, const FieldSystem *fieldSystem, const u8 *param2)
|
||||
void FieldBattleDTO_InitWithPartyOrderFromSave(FieldBattleDTO *dto, const FieldSystem *fieldSystem, const u8 *partyOrder)
|
||||
{
|
||||
sub_020524E4(param0, fieldSystem, Party_GetFromSavedata(fieldSystem->saveData), param2);
|
||||
FieldBattleDTO_InitWithPartyOrder(dto, fieldSystem, Party_GetFromSavedata(fieldSystem->saveData), partyOrder);
|
||||
}
|
||||
|
||||
void sub_020526E8(const FieldBattleDTO *param0, FieldSystem *fieldSystem)
|
||||
void FieldBattleDTO_UpdateFieldSystem(const FieldBattleDTO *dto, FieldSystem *fieldSystem)
|
||||
{
|
||||
TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *v1 = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *v2 = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *v3 = SaveData_Pokedex(fieldSystem->saveData);
|
||||
u16 *v4 = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *party = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *bag = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData);
|
||||
u16 *fieldSysSafariBalls = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
TrainerInfo_Copy(param0->trainerInfo[0], v0);
|
||||
Party_cpy(param0->parties[0], v1);
|
||||
Bag_Copy(param0->bag, v2);
|
||||
sub_02026338(param0->pokedex, v3);
|
||||
TrainerInfo_Copy(dto->trainerInfo[BATTLER_PLAYER_SLOT_1], trainerInfo);
|
||||
Party_cpy(dto->parties[BATTLER_PLAYER_SLOT_1], party);
|
||||
Bag_Copy(dto->bag, bag);
|
||||
Pokedex_Copy(dto->pokedex, pokedex);
|
||||
|
||||
*v4 = param0->countSafariBalls;
|
||||
*fieldSysSafariBalls = dto->countSafariBalls;
|
||||
}
|
||||
|
||||
void sub_02052754(const FieldBattleDTO *param0, FieldSystem *fieldSystem)
|
||||
void FieldBattleDTO_UpdatePokedex(const FieldBattleDTO *dto, FieldSystem *fieldSystem)
|
||||
{
|
||||
TrainerInfo *v0 = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *v1 = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *v2 = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *v3 = SaveData_Pokedex(fieldSystem->saveData);
|
||||
TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(fieldSystem->saveData);
|
||||
Party *party = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Bag *bag = SaveData_GetBag(fieldSystem->saveData);
|
||||
PokedexData *pokedex = SaveData_Pokedex(fieldSystem->saveData);
|
||||
|
||||
sub_02026338(param0->pokedex, v3);
|
||||
Pokedex_Copy(dto->pokedex, pokedex);
|
||||
}
|
||||
|
||||
static int sub_02052780(const FieldSystem *fieldSystem, int param1)
|
||||
{
|
||||
u8 v0 = sub_02054F94(fieldSystem, fieldSystem->location->x, fieldSystem->location->z);
|
||||
static const v1[] = {
|
||||
0,
|
||||
7,
|
||||
9,
|
||||
2,
|
||||
4,
|
||||
6,
|
||||
9,
|
||||
9,
|
||||
9,
|
||||
5,
|
||||
5,
|
||||
5,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22
|
||||
};
|
||||
static const enum Terrain sTerrainForBackground[] = {
|
||||
[BACKGROUND_PLAIN] = TERRAIN_PLAIN,
|
||||
[BACKGROUND_WATER] = TERRAIN_WATER,
|
||||
[BACKGROUND_CITY] = TERRAIN_BUILDING,
|
||||
[BACKGROUND_FOREST] = TERRAIN_GRASS,
|
||||
[BACKGROUND_MOUNTAIN] = TERRAIN_MOUNTAIN,
|
||||
[BACKGROUND_SNOW] = TERRAIN_SNOW,
|
||||
[BACKGROUND_INDOORS_1] = TERRAIN_BUILDING,
|
||||
[BACKGROUND_INDOORS_2] = TERRAIN_BUILDING,
|
||||
[BACKGROUND_INDOORS_3] = TERRAIN_BUILDING,
|
||||
[BACKGROUND_CAVE_1] = TERRAIN_CAVE,
|
||||
[BACKGROUND_CAVE_2] = TERRAIN_CAVE,
|
||||
[BACKGROUND_CAVE_3] = TERRAIN_CAVE,
|
||||
[BACKGROUND_AARON] = TERRAIN_AARON,
|
||||
[BACKGROUND_BERTHA] = TERRAIN_BERTHA,
|
||||
[BACKGROUND_FLINT] = TERRAIN_FLINT,
|
||||
[BACKGROUND_LUCIAN] = TERRAIN_LUCIAN,
|
||||
[BACKGROUND_CYNTHIA] = TERRAIN_CYNTHIA,
|
||||
[BACKGROUND_DISTORTION_WORLD] = TERRAIN_DISTORTION_WORLD,
|
||||
[BACKGROUND_BATTLE_TOWER] = TERRAIN_BATTLE_TOWER,
|
||||
[BACKGROUND_BATTLE_FACTORY] = TERRAIN_BATTLE_FACTORY,
|
||||
[BACKGROUND_BATTLE_ARCADE] = TERRAIN_BATTLE_ARCADE,
|
||||
[BACKGROUND_BATTLE_CASTLE] = TERRAIN_BATTLE_CASTLE,
|
||||
[BACKGROUND_BATTLE_HALL] = TERRAIN_BATTLE_HALL,
|
||||
};
|
||||
|
||||
if (sub_0205DC5C(v0)) {
|
||||
return 8;
|
||||
} else if (sub_0205DAC8(v0) || sub_0205DAD4(v0)) {
|
||||
return 2;
|
||||
} else if (sub_0205DB6C(v0)) {
|
||||
return 1;
|
||||
} else if (sub_0205DD18(v0)) {
|
||||
return 6;
|
||||
} else if (sub_0205DCE0(v0) || sub_0205DCFC(v0)) {
|
||||
return 10;
|
||||
} else if (sub_0205DDA8(v0)) {
|
||||
return 5;
|
||||
static int CalcTerrain(const FieldSystem *fieldSystem, enum BattleBackground background)
|
||||
{
|
||||
u8 tileAttr = FieldSystem_GetTileAttributes(fieldSystem, fieldSystem->location->x, fieldSystem->location->z);
|
||||
if (sub_0205DC5C(tileAttr)) {
|
||||
return TERRAIN_ICE;
|
||||
} else if (sub_0205DAC8(tileAttr) || sub_0205DAD4(tileAttr)) {
|
||||
return TERRAIN_GRASS;
|
||||
} else if (sub_0205DB6C(tileAttr)) {
|
||||
return TERRAIN_SAND;
|
||||
} else if (sub_0205DD18(tileAttr)) {
|
||||
return TERRAIN_SNOW;
|
||||
} else if (sub_0205DCE0(tileAttr) || sub_0205DCFC(tileAttr)) {
|
||||
return TERRAIN_GREAT_MARSH;
|
||||
} else if (sub_0205DDA8(tileAttr)) {
|
||||
return TERRAIN_CAVE;
|
||||
}
|
||||
|
||||
if (sub_0205DB58(v0)) {
|
||||
return 7;
|
||||
if (sub_0205DB58(tileAttr)) {
|
||||
return TERRAIN_WATER;
|
||||
}
|
||||
|
||||
if (param1 < NELEMS(v1)) {
|
||||
return v1[param1];
|
||||
if (background < NELEMS(sTerrainForBackground)) {
|
||||
return sTerrainForBackground[background];
|
||||
}
|
||||
|
||||
GF_ASSERT(0);
|
||||
|
||||
return 24;
|
||||
GF_ASSERT(FALSE);
|
||||
return TERRAIN_MAX;
|
||||
}
|
||||
|
||||
static void sub_0205281C(FieldBattleDTO *param0, const FieldSystem *fieldSystem)
|
||||
static void SetBackgroundAndTerrain(FieldBattleDTO *dto, const FieldSystem *fieldSystem)
|
||||
{
|
||||
PlayerData *v0 = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
param0->background = MapHeader_GetBattleBG(fieldSystem->location->mapId);
|
||||
|
||||
if (v0->unk_04 == 0x2) {
|
||||
param0->background = 1;
|
||||
PlayerData *player = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
dto->background = MapHeader_GetBattleBG(fieldSystem->location->mapId);
|
||||
if (player->form == PLAYER_AVATAR_SURFING) {
|
||||
dto->background = BACKGROUND_WATER;
|
||||
}
|
||||
|
||||
param0->terrain = sub_02052780(fieldSystem, param0->background);
|
||||
dto->terrain = CalcTerrain(fieldSystem, dto->background);
|
||||
}
|
||||
|
||||
void sub_0205285C(FieldBattleDTO *param0)
|
||||
void FieldBattleDTO_SetWaterTerrain(FieldBattleDTO *dto)
|
||||
{
|
||||
param0->terrain = TERRAIN_WATER;
|
||||
dto->terrain = TERRAIN_WATER;
|
||||
}
|
||||
|
||||
BOOL FieldBattleDTO_PlayerWon(u32 battleResult)
|
||||
BOOL CheckPlayerWonBattle(u32 battleResult)
|
||||
{
|
||||
switch (battleResult) {
|
||||
case BATTLE_RESULT_LOSE:
|
||||
@@ -546,7 +531,7 @@ BOOL FieldBattleDTO_PlayerWon(u32 battleResult)
|
||||
}
|
||||
}
|
||||
|
||||
BOOL FieldBattleDTO_PlayerLost(u32 battleResult)
|
||||
BOOL CheckPlayerLostBattle(u32 battleResult)
|
||||
{
|
||||
switch (battleResult) {
|
||||
case BATTLE_RESULT_WIN:
|
||||
@@ -557,7 +542,7 @@ BOOL FieldBattleDTO_PlayerLost(u32 battleResult)
|
||||
}
|
||||
}
|
||||
|
||||
BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult)
|
||||
BOOL CheckPlayerDidNotCaptureWildMon(u32 battleResult)
|
||||
{
|
||||
switch (battleResult) {
|
||||
case BATTLE_RESULT_CAPTURED_MON:
|
||||
@@ -567,9 +552,9 @@ BOOL FieldBattleDTO_PlayerDidNotCapture(u32 battleResult)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_02052894(FieldBattleDTO *param0)
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto)
|
||||
{
|
||||
param0->trainerData[0].class = TrainerInfo_Gender(param0->trainerInfo[0]);
|
||||
CharCode_Copy(¶m0->trainerData[0].name[0], TrainerInfo_Name(param0->trainerInfo[0]));
|
||||
param0->trainerData[2] = param0->trainerData[0];
|
||||
dto->trainerData[BATTLER_PLAYER_SLOT_1].class = TrainerInfo_Gender(dto->trainerInfo[BATTLER_PLAYER_SLOT_1]);
|
||||
CharCode_Copy(dto->trainerData[BATTLER_PLAYER_SLOT_1].name, TrainerInfo_Name(dto->trainerInfo[BATTLER_PLAYER_SLOT_1]));
|
||||
dto->trainerData[BATTLER_PLAYER_SLOT_2] = dto->trainerData[BATTLER_PLAYER_SLOT_1];
|
||||
}
|
||||
|
||||
@@ -339,7 +339,7 @@ static void FieldMapChange_CreateObjects(FieldSystem *fieldSystem)
|
||||
fieldState = SaveData_GetFieldOverworldState(fieldSystem->saveData);
|
||||
playerData = FieldOverworldState_GetPlayerData(fieldState);
|
||||
|
||||
fieldSystem->playerAvatar = PlayerAvatar_Init(fieldSystem->mapObjMan, fieldSystem->location->x, fieldSystem->location->z, fieldSystem->location->faceDirection, playerData->unk_04, gender, 0, playerData);
|
||||
fieldSystem->playerAvatar = PlayerAvatar_Init(fieldSystem->mapObjMan, fieldSystem->location->x, fieldSystem->location->z, fieldSystem->location->faceDirection, playerData->form, gender, 0, playerData);
|
||||
|
||||
sub_0203A418(fieldSystem);
|
||||
MapObjectMan_StopAllMovement(fieldSystem->mapObjMan);
|
||||
|
||||
@@ -954,7 +954,7 @@ static BOOL FieldMenu_Pokedex(FieldTask *taskMan)
|
||||
|
||||
v2->unk_00 = v3;
|
||||
v2->unk_04 = v4;
|
||||
v2->timeOfDay = sub_02055BA8(fieldSystem);
|
||||
v2->timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
v2->fullmoonIslandVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_FULLMOONISLAND);
|
||||
v2->newmoonIslandVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_NEWMOONISLAND);
|
||||
v2->springPathVisible = VarFlags_HiddenLocationsUnlocked(v5, HL_SPRINGPATH);
|
||||
|
||||
@@ -688,7 +688,7 @@ int sub_02064004(const MapObject *mapObj, int param1, int param2, int param3)
|
||||
if (sub_02062FDC(mapObj) == 0) {
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
u8 v1 = sub_02062BE8(mapObj);
|
||||
u8 v2 = sub_02054F94(fieldSystem, param1, param2);
|
||||
u8 v2 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2);
|
||||
|
||||
if (v2 == sub_0205DF98()) {
|
||||
return 1;
|
||||
@@ -855,7 +855,7 @@ u32 sub_02064238(MapObject *mapObj, int param1)
|
||||
int v0 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param1);
|
||||
int v1 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param1);
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v0, v1);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
|
||||
return v3;
|
||||
}
|
||||
@@ -937,10 +937,10 @@ int sub_02064390(MapObject *mapObj)
|
||||
int z = MapObject_ZPosPrev(mapObj);
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
|
||||
v0 = sub_02054F94(fieldSystem, v2, z);
|
||||
v0 = FieldSystem_GetTileAttributes(fieldSystem, v2, z);
|
||||
v2 = MapObject_GetXPos(mapObj);
|
||||
z = MapObject_GetZPos(mapObj);
|
||||
v1 = sub_02054F94(fieldSystem, v2, z);
|
||||
v1 = FieldSystem_GetTileAttributes(fieldSystem, v2, z);
|
||||
}
|
||||
|
||||
sub_02062BF0(mapObj, v0);
|
||||
|
||||
@@ -579,7 +579,7 @@ static BOOL Field_CheckMapTransition(FieldSystem *fieldSystem, const FieldInput
|
||||
Location nextMap;
|
||||
|
||||
if (Field_MapConnection(fieldSystem, playerX, playerZ, &nextMap) && input->transitionDir != DIR_NONE) {
|
||||
tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
if (sub_0205DAEC(tileBehavior)) {
|
||||
int v6 = input->transitionDir;
|
||||
@@ -596,7 +596,7 @@ static BOOL Field_CheckMapTransition(FieldSystem *fieldSystem, const FieldInput
|
||||
|
||||
Field_GetPlayerPos(fieldSystem, &playerX, &playerZ);
|
||||
|
||||
tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
if (sub_0205DAF8(tileBehavior) || sub_0205DB28(tileBehavior)) {
|
||||
if (input->transitionDir != DIR_EAST) {
|
||||
@@ -715,7 +715,7 @@ static BOOL Field_ProcessStep(FieldSystem *fieldSystem)
|
||||
|
||||
int playerX = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
int playerZ = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
u8 tileBehavior = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
u8 tileBehavior = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
if (Field_CheckCoordEvent(fieldSystem) == TRUE) {
|
||||
return TRUE;
|
||||
@@ -982,14 +982,14 @@ static u8 Field_CurrentTileBehavior(const FieldSystem *fieldSystem)
|
||||
{
|
||||
int playerX, playerZ;
|
||||
Field_GetPlayerPos(fieldSystem, &playerX, &playerZ);
|
||||
return sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
return FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
}
|
||||
|
||||
static u8 Field_NextTileBehavior(const FieldSystem *fieldSystem)
|
||||
{
|
||||
int playerX, playerZ;
|
||||
Field_Step(fieldSystem, &playerX, &playerZ);
|
||||
return sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
return FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
}
|
||||
|
||||
static BOOL Field_MapConnection(const FieldSystem *fieldSystem, int playerX, int playerZ, Location *nextMap)
|
||||
|
||||
@@ -49,7 +49,7 @@ static void ov5_021EE768(UnkStruct_ov5_021D1BEC *param0, FieldSystem *fieldSyste
|
||||
v4->unk_00 = v1;
|
||||
v4->unk_04 = v2;
|
||||
|
||||
v0 = sub_02054F94(fieldSystem, v1, v2);
|
||||
v0 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (sub_0205DD84(v0)) {
|
||||
v3 = 0;
|
||||
|
||||
@@ -485,7 +485,7 @@ BOOL ov5_021F0488(FieldTask *param0)
|
||||
|
||||
v4 = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
v5 = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
v3 = (u8)sub_02054F94(fieldSystem, v4, v5);
|
||||
v3 = (u8)FieldSystem_GetTileAttributes(fieldSystem, v4, v5);
|
||||
|
||||
if (ov6_02242110(fieldSystem, v3)) {
|
||||
v1->unk_0C = 6;
|
||||
|
||||
@@ -130,7 +130,7 @@ BOOL ov5_021F08F8(FieldTask *taskMan)
|
||||
}
|
||||
|
||||
if (v1->unk_10 != NULL) {
|
||||
sub_020520A4(v1->unk_10);
|
||||
FieldBattleDTO_Free(v1->unk_10);
|
||||
}
|
||||
|
||||
MapObjectMan_UnpauseAllMovement(fieldSystem->mapObjMan);
|
||||
|
||||
@@ -241,7 +241,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
|
||||
|
||||
int playerX = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
int playerZ = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
v4 = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
v4 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
u8 encounterRate = ov6_02241874(fieldSystem, v4, &encounterType);
|
||||
|
||||
@@ -296,9 +296,9 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
|
||||
|
||||
if (ov6_02242440(fieldSystem, &v17)) {
|
||||
if (!ov6_02242388(sub_0202D93C(v17, 6), &encounterFieldParams)) {
|
||||
battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER);
|
||||
battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER);
|
||||
|
||||
sub_02052314(battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(battleParams, fieldSystem);
|
||||
ov6_0224239C(encounterFieldParams.trainerID, v17, battleParams);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
sub_02050E10(fieldSystem, battleParams);
|
||||
@@ -313,10 +313,10 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
|
||||
v9 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData));
|
||||
ov6_02242328(fieldSystem, v9, &battleParams);
|
||||
} else {
|
||||
battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER);
|
||||
battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER);
|
||||
}
|
||||
|
||||
sub_02052314(battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(battleParams, fieldSystem);
|
||||
|
||||
if (encounterType == ENCOUNTER_TYPE_GRASS) {
|
||||
for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) {
|
||||
@@ -353,7 +353,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
|
||||
v7 = ov6_02241790(fieldSystem, firstPartyMon, battleParams, v13, &encounterFieldParams);
|
||||
} else {
|
||||
GF_ASSERT(FALSE);
|
||||
sub_020520A4(battleParams);
|
||||
FieldBattleDTO_Free(battleParams);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
|
||||
GF_ASSERT(GF_heap_c_dummy_return_true(11));
|
||||
|
||||
if (!v6) {
|
||||
sub_020520A4(battleParams);
|
||||
FieldBattleDTO_Free(battleParams);
|
||||
}
|
||||
|
||||
fieldSystem->unk_78.unk_00 = 0;
|
||||
@@ -399,8 +399,8 @@ BOOL ov6_0224106C(FieldSystem *fieldSystem, const int fishingRodType, FieldBattl
|
||||
|
||||
ov6_02242328(fieldSystem, v2, battleParams);
|
||||
|
||||
sub_02052314(*battleParams, fieldSystem);
|
||||
sub_0205285C(*battleParams);
|
||||
FieldBattleDTO_Init(*battleParams, fieldSystem);
|
||||
FieldBattleDTO_SetWaterTerrain(*battleParams);
|
||||
|
||||
if (MapHeader_HasFeebasTiles(fieldSystem->location->mapId) && ov6_02247660(fieldSystem)) {
|
||||
int species;
|
||||
@@ -458,7 +458,7 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1)
|
||||
|
||||
int playerX = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
int playerZ = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
u8 v4 = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
u8 encounterRate = ov6_02241874(fieldSystem, v4, &encounterType);
|
||||
|
||||
@@ -487,9 +487,9 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1)
|
||||
UnkStruct_0206C638 *v15;
|
||||
|
||||
if (ov6_02242440(fieldSystem, &v15)) {
|
||||
battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER);
|
||||
battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER);
|
||||
|
||||
sub_02052314(battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(battleParams, fieldSystem);
|
||||
ov6_0224239C(encounterFieldParams.trainerID, v15, battleParams);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
sub_02050E78(fieldSystem, param1, battleParams);
|
||||
@@ -501,10 +501,10 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1)
|
||||
v7 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData));
|
||||
ov6_02242328(fieldSystem, v7, &battleParams);
|
||||
} else {
|
||||
battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER);
|
||||
battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER);
|
||||
}
|
||||
|
||||
sub_02052314(battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(battleParams, fieldSystem);
|
||||
|
||||
if (encounterType == ENCOUNTER_TYPE_GRASS) {
|
||||
for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) {
|
||||
@@ -568,7 +568,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams)
|
||||
|
||||
int playerX = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
int playerZ = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
u8 v3 = sub_02054F94(fieldSystem, playerX, playerZ);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, playerX, playerZ);
|
||||
|
||||
u8 encounterRate = ov6_02241874(fieldSystem, v3, &encounterType);
|
||||
|
||||
@@ -614,9 +614,9 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams)
|
||||
|
||||
if (ov6_02242440(fieldSystem, &v16)) {
|
||||
if (!ov6_02242388(sub_0202D93C(v16, 6), &encounterFieldParams)) {
|
||||
*battleParams = sub_02051D8C(11, BATTLE_TYPE_ROAMER);
|
||||
*battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_ROAMER);
|
||||
|
||||
sub_02052314(*battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(*battleParams, fieldSystem);
|
||||
ov6_0224239C(encounterFieldParams.trainerID, v16, *battleParams);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
return TRUE;
|
||||
@@ -630,10 +630,10 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams)
|
||||
v8 = SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData));
|
||||
ov6_02242328(fieldSystem, v8, battleParams);
|
||||
} else {
|
||||
*battleParams = sub_02051D8C(11, BATTLE_TYPE_AI_PARTNER);
|
||||
*battleParams = FieldBattleDTO_New(11, BATTLE_TYPE_AI_PARTNER);
|
||||
}
|
||||
|
||||
sub_02052314(*battleParams, fieldSystem);
|
||||
FieldBattleDTO_Init(*battleParams, fieldSystem);
|
||||
|
||||
if (encounterType == ENCOUNTER_TYPE_GRASS) {
|
||||
for (int i = 0; i < MAX_GRASS_ENCOUNTERS; i++) {
|
||||
@@ -662,7 +662,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams)
|
||||
}
|
||||
} else {
|
||||
GF_ASSERT(FALSE);
|
||||
sub_020520A4(*battleParams);
|
||||
FieldBattleDTO_Free(*battleParams);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -674,7 +674,7 @@ BOOL ov6_022413E4(FieldSystem *fieldSystem, FieldBattleDTO **battleParams)
|
||||
GF_ASSERT(GF_heap_c_dummy_return_true(11));
|
||||
|
||||
if (!v5) {
|
||||
sub_020520A4(*battleParams);
|
||||
FieldBattleDTO_Free(*battleParams);
|
||||
} else {
|
||||
fieldSystem->unk_78.unk_00 = 0;
|
||||
}
|
||||
@@ -1387,10 +1387,10 @@ static BOOL ov6_022422D0(const WildEncounters_FieldParams *encounterFieldParams,
|
||||
static void ov6_02242328(FieldSystem *fieldSystem, const BOOL param1, FieldBattleDTO **param2)
|
||||
{
|
||||
if (!param1) {
|
||||
*param2 = sub_02051D8C(11, (0x0 | 0x0));
|
||||
*param2 = FieldBattleDTO_New(11, (0x0 | 0x0));
|
||||
} else {
|
||||
u16 *v0 = sub_0203A784(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
*param2 = sub_02051F24(11, *v0);
|
||||
*param2 = FieldBattleDTO_NewSafari(11, *v0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ void ov6_02246254(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int
|
||||
param3->unk_10 = 1;
|
||||
param3->unk_14 = SaveData_Options(fieldSystem->saveData);
|
||||
|
||||
v4 = sub_02055BA8(fieldSystem);
|
||||
v4 = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
|
||||
if ((v4 == 0) || (v4 == 1)) {
|
||||
param3->unk_0C = 0;
|
||||
|
||||
@@ -384,7 +384,7 @@ BOOL ov8_02249A40(FieldSystem *fieldSystem, const int param1, const int param2,
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
v0 = sub_02054F94(fieldSystem, param1, param2);
|
||||
v0 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2);
|
||||
|
||||
if (sub_0205DBFC(v0)) {
|
||||
if (param3 != 0) {
|
||||
|
||||
@@ -134,9 +134,9 @@ BOOL ov104_0223338C(UnkStruct_ov104_0222E930 *param0)
|
||||
v0 = sub_0209B978(param0->unk_00->unk_00);
|
||||
v1 = v0->unk_4FC;
|
||||
|
||||
v0->unk_14 = FieldBattleDTO_PlayerWon(v1->resultMask);
|
||||
v0->unk_14 = CheckPlayerWonBattle(v1->resultMask);
|
||||
|
||||
sub_020520A4(v1);
|
||||
FieldBattleDTO_Free(v1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -148,8 +148,8 @@ BOOL ov104_02234994(UnkStruct_ov104_0222E930 *param0)
|
||||
v0 = sub_0209B978(param0->unk_00->unk_00);
|
||||
v1 = v0->unk_700;
|
||||
|
||||
v0->unk_14 = FieldBattleDTO_PlayerWon(v1->resultMask);
|
||||
sub_020520A4(v1);
|
||||
v0->unk_14 = CheckPlayerWonBattle(v1->resultMask);
|
||||
FieldBattleDTO_Free(v1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -188,8 +188,8 @@ BOOL ov104_02235A24(UnkStruct_ov104_0222E930 *param0)
|
||||
sub_0207A128(v1->unk_28, 3, v3);
|
||||
}
|
||||
|
||||
v1->unk_1C = FieldBattleDTO_PlayerWon(v2->resultMask);
|
||||
sub_020520A4(v2);
|
||||
v1->unk_1C = CheckPlayerWonBattle(v2->resultMask);
|
||||
FieldBattleDTO_Free(v2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -156,7 +156,7 @@ BOOL ov104_02237460(UnkStruct_ov104_0222E930 *param0)
|
||||
v10 = v9->unk_0C;
|
||||
|
||||
v9->unk_1D = ov104_02238538(v9, v10->parties[0], v10->parties[2], v10->totalTurnsElapsed);
|
||||
v9->unk_28 = FieldBattleDTO_PlayerWon(v10->resultMask);
|
||||
v9->unk_28 = CheckPlayerWonBattle(v10->resultMask);
|
||||
|
||||
if (v9->unk_13 == 27) {
|
||||
v2 = 1;
|
||||
@@ -215,7 +215,7 @@ BOOL ov104_02237460(UnkStruct_ov104_0222E930 *param0)
|
||||
Pokemon_SetValue(v11, MON_DATA_SP_DEF, &v5);
|
||||
}
|
||||
|
||||
sub_020520A4(v10);
|
||||
FieldBattleDTO_Free(v10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -214,10 +214,10 @@ BOOL ov104_02239364(UnkStruct_ov104_0222E930 *param0)
|
||||
v2 = ov104_0222FBE4(param0);
|
||||
v1 = v0->unk_8D0;
|
||||
|
||||
v0->unk_8CC = FieldBattleDTO_PlayerWon(v1->resultMask);
|
||||
v0->unk_8CC = CheckPlayerWonBattle(v1->resultMask);
|
||||
*v2 = v0->unk_8CC;
|
||||
|
||||
sub_020520A4(v1);
|
||||
FieldBattleDTO_Free(v1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -628,7 +628,7 @@ static const UnkStruct_ov104_0223FCB4 Unk_ov104_0223FCB4[] = {
|
||||
},
|
||||
};
|
||||
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
BOOL ov104_0223A0C4(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_0223A348 *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int param7);
|
||||
void ov104_0223A30C(SaveData *param0, UnkStruct_ov104_0223A348 *param1, const u8 param2);
|
||||
FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230BE4 *param1);
|
||||
@@ -912,11 +912,11 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230
|
||||
Party *v5;
|
||||
Pokemon *v6;
|
||||
|
||||
v3 = sub_02051D8C(param0->unk_04, ov104_0223A700(param0->unk_0F));
|
||||
v3 = FieldBattleDTO_New(param0->unk_04, ov104_0223A700(param0->unk_0F));
|
||||
v4 = param1->unk_08;
|
||||
v5 = Party_GetFromSavedata(v4);
|
||||
|
||||
sub_020521B8(v3, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
FieldBattleDTO_InitFromGameState(v3, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
|
||||
v3->background = 18;
|
||||
v3->terrain = TERRAIN_BATTLE_TOWER;
|
||||
@@ -936,11 +936,11 @@ FieldBattleDTO *ov104_0223A580(UnkStruct_0204AFC4 *param0, UnkStruct_ov104_02230
|
||||
Pokemon_CalcLevelAndStats(v6);
|
||||
}
|
||||
|
||||
sub_0205213C(v3, v6, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(v3, v6, 0);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
sub_02052894(v3);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v3);
|
||||
|
||||
ov104_0223A6AC(v3, &(param0->unk_78[0]), param0->unk_0E, 1, param0->unk_04);
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ void ov104_0223AE30(UnkStruct_ov104_0223ADA0 *param0);
|
||||
BOOL ov104_0223AED4(u8 param0);
|
||||
static u16 ov104_0223AEE4(UnkStruct_ov104_0223ADA0 *param0);
|
||||
u16 ov104_0223AF34(UnkStruct_ov104_0223ADA0 *param0);
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
|
||||
static int ov104_0223A7F4(u8 param0, int param1, int param2)
|
||||
{
|
||||
@@ -359,8 +359,8 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
||||
HealAllPokemonInParty(param0->unk_4D4);
|
||||
HealAllPokemonInParty(param0->unk_4D8);
|
||||
|
||||
v4 = sub_02051D8C(11, ov104_0223AD74(param0->unk_04));
|
||||
sub_020521B8(v4, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
v4 = FieldBattleDTO_New(11, ov104_0223AD74(param0->unk_04));
|
||||
FieldBattleDTO_InitFromGameState(v4, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
|
||||
v4->background = 19;
|
||||
v4->terrain = TERRAIN_BATTLE_FACTORY;
|
||||
@@ -370,11 +370,11 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v2; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D4, v0), v5);
|
||||
sub_0205213C(v4, v5, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(v4, v5, 0);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v5);
|
||||
sub_02052894(v4);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v4);
|
||||
|
||||
v7 = ov104_0222DD04(&v6, param0->unk_18[param0->unk_06], 11, 178);
|
||||
Heap_FreeToHeap(v7);
|
||||
@@ -390,7 +390,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, v0), v5);
|
||||
sub_0205213C(v4, v5, 1);
|
||||
FieldBattleDTO_AddPokemonToBattler(v4, v5, 1);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v5);
|
||||
@@ -398,7 +398,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
||||
switch (param0->unk_04) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_02052894(v4);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v4);
|
||||
|
||||
v10 = CommInfo_TrainerInfo(1 - CommSys_CurNetId());
|
||||
TrainerInfo_Copy(v10, v4->trainerInfo[2]);
|
||||
@@ -413,7 +413,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_4D8, (v3 + v0)), v5);
|
||||
sub_0205213C(v4, v5, 3);
|
||||
FieldBattleDTO_AddPokemonToBattler(v4, v5, 3);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v5);
|
||||
|
||||
@@ -36,7 +36,7 @@ typedef struct {
|
||||
u16 unk_02;
|
||||
} UnkStruct_ov104_02240364;
|
||||
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
void ov104_0223AF58(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4[]);
|
||||
void ov104_0223AFB4(u8 param0, u8 param1, int param2, u8 param3, u8 param4, u16 param5[]);
|
||||
void ov104_0223B0C8(u8 param0, u8 param1, u8 param2, u8 param3, u16 param4, u16 param5[], u8 param6);
|
||||
@@ -1590,8 +1590,8 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
||||
|
||||
HealAllPokemonInParty(v13);
|
||||
|
||||
v8 = sub_02051D8C(11, ov104_0223B4D4(param0->unk_04));
|
||||
sub_020521B8(v8, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
v8 = FieldBattleDTO_New(11, ov104_0223B4D4(param0->unk_04));
|
||||
FieldBattleDTO_InitFromGameState(v8, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
|
||||
v8->background = 22;
|
||||
v8->terrain = TERRAIN_BATTLE_HALL;
|
||||
@@ -1601,11 +1601,11 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
||||
|
||||
for (v1 = 0; v1 < v4; v1++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, param0->unk_260[v1]), v9);
|
||||
sub_0205213C(v8, v9, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(v8, v9, 0);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v9);
|
||||
sub_02052894(v8);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v8);
|
||||
|
||||
v11 = ov104_0222DD04(&v10, param0->unk_18[v6], 11, 178);
|
||||
|
||||
@@ -1639,7 +1639,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
||||
ov104_0222DF40(¶m0->unk_290[v6], v9, ov104_0223B57C(param0, v7));
|
||||
|
||||
Pokemon_CalcAbility(v9);
|
||||
sub_0205213C(v8, v9, 1);
|
||||
FieldBattleDTO_AddPokemonToBattler(v8, v9, 1);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v9);
|
||||
@@ -1647,7 +1647,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
||||
switch (param0->unk_04) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_02052894(v8);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v8);
|
||||
|
||||
v12 = CommInfo_TrainerInfo(1 - CommSys_CurNetId());
|
||||
TrainerInfo_Copy(v12, v8->trainerInfo[2]);
|
||||
@@ -1669,7 +1669,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
||||
ov104_0222DF40(¶m0->unk_290[v6], v9, ov104_0223B57C(param0, v7));
|
||||
|
||||
Pokemon_CalcAbility(v9);
|
||||
sub_0205213C(v8, v9, 3);
|
||||
FieldBattleDTO_AddPokemonToBattler(v8, v9, 3);
|
||||
Heap_FreeToHeap(v9);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ void ov104_0223BAA0(UnkStruct_ov104_0223BA10 *param0, Party *param1, Pokemon *pa
|
||||
static u16 ov104_0223BB10(UnkStruct_ov104_0223BA10 *param0);
|
||||
u16 ov104_0223BB60(UnkStruct_ov104_0223BA10 *param0);
|
||||
u16 ov104_0223BC24(u16 param0);
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
void ov104_0223BB84(BgConfig *param0, UnkStruct_ov104_0223BA10 *param1, u32 param2);
|
||||
static void ov104_0223BBC4(u16 *param0, u16 param1);
|
||||
|
||||
@@ -174,8 +174,8 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
||||
v3 = ov104_0223B7DC(param0->unk_10, 0);
|
||||
|
||||
HealAllPokemonInParty(param0->unk_2C);
|
||||
v5 = sub_02051D8C(11, ov104_0223B9E4(param0->unk_10));
|
||||
sub_020521B8(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
v5 = FieldBattleDTO_New(11, ov104_0223B9E4(param0->unk_10));
|
||||
FieldBattleDTO_InitFromGameState(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
|
||||
v5->background = 21;
|
||||
v5->terrain = TERRAIN_BATTLE_CASTLE;
|
||||
@@ -193,11 +193,11 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
||||
for (v0 = 0; v0 < v2; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_28, (v4 + v0)), v6);
|
||||
|
||||
sub_0205213C(v5, v6, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 0);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
sub_02052894(v5);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
v8 = ov104_0222DD04(&v7, param0->unk_30[param0->unk_11], 11, 178);
|
||||
|
||||
@@ -213,7 +213,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, v0), v6);
|
||||
sub_0205213C(v5, v6, 1);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 1);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
@@ -221,7 +221,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
||||
switch (param0->unk_10) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_02052894(v5);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
v11 = CommInfo_TrainerInfo(1 - CommSys_CurNetId());
|
||||
TrainerInfo_Copy(v11, v5->trainerInfo[2]);
|
||||
@@ -236,7 +236,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(param0->unk_2C, (v3 + v0)), v6);
|
||||
sub_0205213C(v5, v6, 3);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 3);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
|
||||
@@ -37,7 +37,7 @@ u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1);
|
||||
static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0);
|
||||
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0);
|
||||
u8 ov104_0223C148(u8 param0);
|
||||
void sub_02052894(FieldBattleDTO *param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
static int ov104_0223BCBC(u8 param0, int param1, int param2);
|
||||
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
|
||||
|
||||
@@ -176,9 +176,9 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
||||
|
||||
v2 = ov104_0223BD70(param0->unk_10, 0);
|
||||
v3 = ov104_0223BDA4(param0->unk_10, 0);
|
||||
v5 = sub_02051D8C(11, ov104_0223BFD0(param0->unk_10));
|
||||
v5 = FieldBattleDTO_New(11, ov104_0223BFD0(param0->unk_10));
|
||||
|
||||
sub_020521B8(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
FieldBattleDTO_InitFromGameState(v5, NULL, param1->unk_08, param1->unk_1C, param1->unk_0C, param1->unk_10, param1->unk_20);
|
||||
|
||||
v5->background = 20;
|
||||
v5->terrain = TERRAIN_BATTLE_ARCADE;
|
||||
@@ -204,11 +204,11 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v2; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(v12, (v4 + v0)), v6);
|
||||
sub_0205213C(v5, v6, 0);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 0);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
sub_02052894(v5);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
v8 = ov104_0222DD04(&v7, param0->unk_78[param0->unk_11], 11, 178);
|
||||
|
||||
@@ -224,7 +224,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, v0), v6);
|
||||
sub_0205213C(v5, v6, 1);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 1);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
@@ -232,7 +232,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
||||
switch (param0->unk_10) {
|
||||
case 2:
|
||||
case 3:
|
||||
sub_02052894(v5);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
v11 = CommInfo_TrainerInfo(1 - CommSys_CurNetId());
|
||||
TrainerInfo_Copy(v11, v5->trainerInfo[2]);
|
||||
@@ -247,7 +247,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
||||
|
||||
for (v0 = 0; v0 < v3; v0++) {
|
||||
Pokemon_Copy(Party_GetPokemonBySlotIndex(v13, (v3 + v0)), v6);
|
||||
sub_0205213C(v5, v6, 3);
|
||||
FieldBattleDTO_AddPokemonToBattler(v5, v6, 3);
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(v6);
|
||||
|
||||
@@ -43,6 +43,9 @@ static void sub_0205EB9C(PlayerAvatar *playerAvatar, u32 param1);
|
||||
static void sub_0205EBA4(PlayerAvatar *playerAvatar, u32 param1);
|
||||
static u32 sub_0205EBB0(PlayerAvatar *playerAvatar, u32 param1);
|
||||
static void PlayerAvatar_SetPlayerData(PlayerAvatar *playerAvatar, PlayerData *param1);
|
||||
static u32 GetPlayerForm(PlayerData *player);
|
||||
static void SetPlayerForm(PlayerData *player, u32 form);
|
||||
static void SetAvatarForm(PlayerAvatar *playerAvatar, u32 form);
|
||||
|
||||
PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *mapObjMan, int x, int z, int dir, int param4, int param5, int param6, PlayerData *param7)
|
||||
{
|
||||
@@ -73,7 +76,7 @@ PlayerAvatar *sub_0205E820(const MapObjectManager *mapObjMan, PlayerData *param1
|
||||
MapObject *mapObj;
|
||||
|
||||
playerAvatar = PlayerAvatar_Alloc();
|
||||
v0 = sub_0205EC94(param1);
|
||||
v0 = GetPlayerForm(param1);
|
||||
|
||||
sub_0205E91C(playerAvatar, v0, gender, param1);
|
||||
mapObj = sub_0205EA64(mapObjMan);
|
||||
@@ -293,12 +296,12 @@ const MapObject *PlayerAvatar_ConstMapObject(const PlayerAvatar *playerAvatar)
|
||||
return playerAvatar->mapObject;
|
||||
}
|
||||
|
||||
void PlayerAvatar_SetPlayerState(PlayerAvatar *playerAvatar, int param1)
|
||||
void PlayerAvatar_SetPlayerState(PlayerAvatar *playerAvatar, int form)
|
||||
{
|
||||
GF_ASSERT(param1 < 0x6);
|
||||
playerAvatar->unk_1C = param1;
|
||||
GF_ASSERT(form < 0x6);
|
||||
playerAvatar->unk_1C = form;
|
||||
|
||||
sub_0205ECA8(playerAvatar, param1);
|
||||
SetAvatarForm(playerAvatar, form);
|
||||
}
|
||||
|
||||
int PlayerAvatar_GetPlayerState(PlayerAvatar *playerAvatar)
|
||||
@@ -450,7 +453,7 @@ void PlayerData_Init(PlayerData *playerData)
|
||||
{
|
||||
playerData->unk_00 = 0;
|
||||
playerData->runningShoes = FALSE;
|
||||
playerData->unk_04 = 0x0;
|
||||
playerData->form = 0x0;
|
||||
}
|
||||
|
||||
int PlayerData_HasRunningShoes(PlayerData *playerData)
|
||||
@@ -501,26 +504,26 @@ int PlayerAvatar_CyclingGear(PlayerAvatar *playerAvatar)
|
||||
return PlayerData_CyclingGear(player);
|
||||
}
|
||||
|
||||
u32 sub_0205EC94(PlayerData *player)
|
||||
u32 GetPlayerForm(PlayerData *player)
|
||||
{
|
||||
if (player != NULL) {
|
||||
return player->unk_04;
|
||||
return player->form;
|
||||
}
|
||||
|
||||
return 0x0;
|
||||
}
|
||||
|
||||
void sub_0205ECA0(PlayerData *player, u32 param1)
|
||||
void SetPlayerForm(PlayerData *player, u32 form)
|
||||
{
|
||||
if (player != NULL) {
|
||||
player->unk_04 = param1;
|
||||
player->form = form;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0205ECA8(PlayerAvatar *playerAvatar, u32 param1)
|
||||
void SetAvatarForm(PlayerAvatar *playerAvatar, u32 form)
|
||||
{
|
||||
PlayerData *player = PlayerAvatar_PlayerData(playerAvatar);
|
||||
sub_0205ECA0(player, param1);
|
||||
SetPlayerForm(player, form);
|
||||
}
|
||||
|
||||
void sub_0205ECB8(PlayerAvatar *playerAvatar, const VecFx32 *param1, int param2)
|
||||
|
||||
@@ -307,7 +307,7 @@ static BOOL CheckTileIsGrass(FieldSystem *fieldSystem, const fx32 param1, const
|
||||
int v1 = (param3 - (9 / 2)) + param5;
|
||||
patch->unk_00 = v0;
|
||||
patch->unk_04 = v1;
|
||||
u8 v2 = sub_02054F94(fieldSystem, v0, v1);
|
||||
u8 v2 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
|
||||
if (sub_0205DAC8(v2)) {
|
||||
u8 v3;
|
||||
|
||||
@@ -6020,7 +6020,7 @@ static BOOL ScrCmd_1B5(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_GetTimeOfDay(ScriptContext *ctx)
|
||||
{
|
||||
u16 *timeOfDay = ScriptContext_GetVarPointer(ctx);
|
||||
*timeOfDay = sub_02055BA8(ctx->fieldSystem);
|
||||
*timeOfDay = FieldSystem_GetTimeOfDay(ctx->fieldSystem);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,9 +55,9 @@ PokedexData *sub_02026324(u32 param0)
|
||||
return v0;
|
||||
}
|
||||
|
||||
void sub_02026338(const PokedexData *param0, PokedexData *param1)
|
||||
void Pokedex_Copy(const PokedexData *src, PokedexData *dest)
|
||||
{
|
||||
MI_CpuCopy8(param0, param1, sizeof(PokedexData));
|
||||
MI_CpuCopy8(src, dest, sizeof(PokedexData));
|
||||
}
|
||||
|
||||
static inline void CheckPokedexIntegrity(const PokedexData *param0)
|
||||
|
||||
@@ -561,7 +561,7 @@ void sub_0202FAFC(FieldBattleDTO *param0, SaveData *param1)
|
||||
param0->resultMask = BATTLE_IN_PROGRESS;
|
||||
param0->leveledUpMonsMask = 0;
|
||||
|
||||
sub_02026338(SaveData_Pokedex(param1), param0->pokedex);
|
||||
Pokedex_Copy(SaveData_Pokedex(param1), param0->pokedex);
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
param0->trainerIDs[v0] = v1->unk_00.unk_08[v0];
|
||||
|
||||
@@ -61,7 +61,7 @@ void sub_0203C9D4(FieldSystem *fieldSystem, MapObject **param1)
|
||||
u8 v3;
|
||||
|
||||
v2 = sub_0203C954(fieldSystem, &v0, &v1);
|
||||
v3 = sub_02054F94(fieldSystem, v0, v1);
|
||||
v3 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
|
||||
if (sub_0205DAE0(v3) == 1) {
|
||||
switch (v2) {
|
||||
|
||||
@@ -1046,7 +1046,7 @@ BOOL sub_0203DBF0(FieldTask *param0)
|
||||
v2->unk_48.unk_14 = SaveData_Options(fieldSystem->saveData);
|
||||
v2->unk_48.unk_10 = 1;
|
||||
|
||||
switch (sub_02055BA8(fieldSystem)) {
|
||||
switch (FieldSystem_GetTimeOfDay(fieldSystem)) {
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
|
||||
@@ -266,7 +266,7 @@ BOOL ScrCmd_CheckWonBattle(ScriptContext *ctx)
|
||||
BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
|
||||
u16 *destVar = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*destVar = FieldBattleDTO_PlayerWon(*battleResult);
|
||||
*destVar = CheckPlayerWonBattle(*battleResult);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -275,7 +275,7 @@ BOOL ScrCmd_CheckLostBattle(ScriptContext *ctx)
|
||||
BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
|
||||
u16 *destVar = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*destVar = FieldBattleDTO_PlayerLost(*battleResult);
|
||||
*destVar = CheckPlayerLostBattle(*battleResult);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -284,7 +284,7 @@ BOOL ScrCmd_CheckDidNotCapture(ScriptContext *ctx)
|
||||
BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
|
||||
u16 *destVar = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*destVar = FieldBattleDTO_PlayerDidNotCapture(*battleResult);
|
||||
*destVar = CheckPlayerDidNotCaptureWildMon(*battleResult);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -285,23 +285,18 @@ BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int param2)
|
||||
u8 FieldSystem_GetTileAttributes(const FieldSystem *fieldSystem, const int x, const int z)
|
||||
{
|
||||
BOOL v0;
|
||||
u16 v1;
|
||||
u16 metaAttributes;
|
||||
BOOL hasAttributes = fieldSystem->terrainCollisionMan->getAttrFunc(fieldSystem, x, z, &metaAttributes);
|
||||
|
||||
v0 = fieldSystem->terrainCollisionMan->getAttrFunc(fieldSystem, param1, param2, &v1);
|
||||
|
||||
if (v0) {
|
||||
u8 v2;
|
||||
|
||||
v2 = v1;
|
||||
v2 &= 0xff;
|
||||
|
||||
return v2;
|
||||
if (hasAttributes) {
|
||||
u8 attributes = metaAttributes;
|
||||
attributes &= 0xFF;
|
||||
return attributes;
|
||||
}
|
||||
|
||||
return 0xff;
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4)
|
||||
@@ -365,7 +360,7 @@ BOOL sub_02055024(const FieldSystem *fieldSystem, const VecFx32 *param1, const i
|
||||
v2 = FieldSystem_CheckCollision(fieldSystem, param2, param3);
|
||||
|
||||
if ((!v2) && (v1 == 2)) {
|
||||
u8 v3 = sub_02054F94(fieldSystem, param2, param3);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, param2, param3);
|
||||
|
||||
if (sub_0205DC20(v3)) {
|
||||
return 1;
|
||||
@@ -399,7 +394,7 @@ BOOL sub_0205507C(FieldSystem *fieldSystem, const VecFx32 *param1, const int par
|
||||
v2 = FieldSystem_CheckCollision(fieldSystem, param2, param3);
|
||||
|
||||
if ((!v2) && (v1 == 2)) {
|
||||
u8 v4 = sub_02054F94(fieldSystem, param2, param3);
|
||||
u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, param2, param3);
|
||||
|
||||
if (sub_0205DC20(v4)) {
|
||||
return 1;
|
||||
|
||||
@@ -149,7 +149,7 @@ static void sub_02055B64(FieldSystem *fieldSystem, s32 param1, const RTCTime *pa
|
||||
}
|
||||
}
|
||||
|
||||
int sub_02055BA8(const FieldSystem *fieldSystem)
|
||||
enum TimeOfDay FieldSystem_GetTimeOfDay(const FieldSystem *fieldSystem)
|
||||
{
|
||||
GameTime *v0 = SaveData_GetGameTime(fieldSystem->saveData);
|
||||
return TimeOfDayForHour(v0->time.hour);
|
||||
|
||||
@@ -201,7 +201,7 @@ static BOOL sub_020564F4(UnkStruct_020564B4 *param0)
|
||||
|
||||
static int sub_0205650C(FieldSystem *fieldSystem, int param1, int param2)
|
||||
{
|
||||
u16 v0 = sub_02054F94(fieldSystem, param1, param2);
|
||||
u16 v0 = FieldSystem_GetTileAttributes(fieldSystem, param1, param2);
|
||||
int v1;
|
||||
|
||||
v1 = (param1 < 32) ? 0 : 1;
|
||||
@@ -279,11 +279,11 @@ static FieldBattleDTO *sub_0205664C(FieldSystem *fieldSystem, UnkStruct_020564B4
|
||||
PalParkTransfer *v2 = SaveData_PalParkTransfer(fieldSystem->saveData);
|
||||
int v3 = sub_020563BC(fieldSystem);
|
||||
|
||||
v0 = sub_02051F38(11, v3);
|
||||
v0 = FieldBattleDTO_NewPalPark(11, v3);
|
||||
|
||||
sub_02052314(v0, fieldSystem);
|
||||
FieldBattleDTO_Init(v0, fieldSystem);
|
||||
sub_0202F000(v2, param1->unk_3C, v1);
|
||||
sub_0205213C(v0, v1, 1);
|
||||
FieldBattleDTO_AddPokemonToBattler(v0, v1, 1);
|
||||
Heap_FreeToHeap(v1);
|
||||
|
||||
return v0;
|
||||
|
||||
@@ -431,7 +431,7 @@ static BOOL sub_02057050(FieldTask *taskMan)
|
||||
u8 v4;
|
||||
MapObject *v5 = Player_MapObject(fieldSystem->playerAvatar);
|
||||
|
||||
v4 = sub_02054F94(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar));
|
||||
v4 = FieldSystem_GetTileAttributes(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar));
|
||||
|
||||
if (sub_0205DAEC(v4)) {
|
||||
MapObject_SetHidden(v5, 1);
|
||||
@@ -482,7 +482,7 @@ static BOOL sub_0205711C(FieldTask *taskMan)
|
||||
u8 v4;
|
||||
MapObject *v5 = Player_MapObject(fieldSystem->playerAvatar);
|
||||
|
||||
v4 = sub_02054F94(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar));
|
||||
v4 = FieldSystem_GetTileAttributes(fieldSystem, Player_GetXPos(fieldSystem->playerAvatar), Player_GetZPos(fieldSystem->playerAvatar));
|
||||
|
||||
if (sub_0205DAEC(v4)) {
|
||||
MapObject_SetHidden(v5, 1);
|
||||
@@ -634,7 +634,7 @@ static void sub_02057368(FieldSystem *fieldSystem)
|
||||
|
||||
v0 = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
v1 = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
v4 = sub_02054F94(fieldSystem, v0, v1);
|
||||
v4 = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
|
||||
if (sub_0205DC44(v4)) {
|
||||
v3.x += (FX32_ONE * 16);
|
||||
|
||||
@@ -1778,7 +1778,7 @@ static int sub_02060CE4(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
}
|
||||
|
||||
{
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
switch (param2) {
|
||||
case 0:
|
||||
@@ -1816,7 +1816,7 @@ static int sub_02060D98(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v2 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2);
|
||||
int v3 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2);
|
||||
u8 v4 = sub_02054F94(fieldSystem, v2, v3);
|
||||
u8 v4 = FieldSystem_GetTileAttributes(fieldSystem, v2, v3);
|
||||
|
||||
switch (param2) {
|
||||
case 0:
|
||||
@@ -1851,7 +1851,7 @@ static int sub_02060E40(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v1 = MapObject_GetXPos(mapObj);
|
||||
int v2 = MapObject_GetZPos(mapObj);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
switch (param2) {
|
||||
case 0:
|
||||
@@ -1878,7 +1878,7 @@ static int sub_02060E40(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
|
||||
v1 += MapObject_GetDxFromDir(param2);
|
||||
v2 += MapObject_GetDyFromDir(param2);
|
||||
v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (sub_0205DAEC(v3) == 1) {
|
||||
return 1;
|
||||
@@ -1894,7 +1894,7 @@ static int sub_02060EE4(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2);
|
||||
int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if ((param2 == 3) && sub_0205DD90(v3)) {
|
||||
return 1;
|
||||
@@ -1914,7 +1914,7 @@ static int sub_02060F4C(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2);
|
||||
int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (sub_0206406C(mapObj, v3)) {
|
||||
return 1;
|
||||
@@ -1930,7 +1930,7 @@ static int sub_02060FA8(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2);
|
||||
int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (PlayerAvatar_GetPlayerState(playerAvatar) == PLAYER_STATE_CYCLING) {
|
||||
if (sub_0206415C(mapObj, v3) == 1) {
|
||||
@@ -1964,7 +1964,7 @@ static int sub_02061058(PlayerAvatar *playerAvatar, MapObject *mapObj, int param
|
||||
FieldSystem *fieldSystem = MapObject_FieldSystem(mapObj);
|
||||
int v1 = MapObject_GetXPos(mapObj) + MapObject_GetDxFromDir(param2);
|
||||
int v2 = MapObject_GetZPos(mapObj) + MapObject_GetDyFromDir(param2);
|
||||
u8 v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
u8 v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (sub_0206406C(mapObj, v3)) {
|
||||
return 1;
|
||||
@@ -2468,7 +2468,7 @@ u32 sub_02061760(PlayerAvatar *playerAvatar)
|
||||
int z = MapObject_GetZPos(mapObj);
|
||||
|
||||
if (PlayerAvatar_DistortionGravityChanged(playerAvatar) == FALSE) {
|
||||
v0 = sub_02054F94(fieldSystem, x, z);
|
||||
v0 = FieldSystem_GetTileAttributes(fieldSystem, x, z);
|
||||
} else {
|
||||
ov9_02251044(fieldSystem, x, y, z, &v0);
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ void sub_0206842C(FieldSystem *fieldSystem, UnkStruct_020684D0 *param1)
|
||||
v0 = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
v1 = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
|
||||
param1->unk_0E = sub_02054F94(fieldSystem, v0, v1);
|
||||
param1->unk_0E = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
|
||||
v2 = PlayerAvatar_GetDir(fieldSystem->playerAvatar);
|
||||
|
||||
@@ -241,7 +241,7 @@ void sub_0206842C(FieldSystem *fieldSystem, UnkStruct_020684D0 *param1)
|
||||
break;
|
||||
}
|
||||
|
||||
param1->unk_0C = sub_02054F94(fieldSystem, v0, v1);
|
||||
param1->unk_0C = FieldSystem_GetTileAttributes(fieldSystem, v0, v1);
|
||||
sub_0203C9D4(fieldSystem, &v3);
|
||||
|
||||
param1->unk_10 = sub_02055FC8(fieldSystem, v3);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "journal.h"
|
||||
#include "location.h"
|
||||
#include "map_header.h"
|
||||
#include "player_avatar.h"
|
||||
#include "roaming_pokemon.h"
|
||||
#include "save_player.h"
|
||||
#include "system_flags.h"
|
||||
@@ -89,10 +90,10 @@ void FieldSystem_InitFlagsWarp(FieldSystem *fieldSystem)
|
||||
{
|
||||
PlayerData *v2 = FieldOverworldState_GetPlayerData(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
if ((v2->unk_04 == 0x1) && (MapHeader_IsBikeAllowed(fieldSystem->location->mapId) == 0)) {
|
||||
v2->unk_04 = 0x0;
|
||||
} else if (v2->unk_04 == 0x2) {
|
||||
v2->unk_04 = 0x0;
|
||||
if ((v2->form == PLAYER_AVATAR_BIKING) && (MapHeader_IsBikeAllowed(fieldSystem->location->mapId) == 0)) {
|
||||
v2->form = PLAYER_AVATAR_WALKING;
|
||||
} else if (v2->form == PLAYER_AVATAR_SURFING) {
|
||||
v2->form = PLAYER_AVATAR_WALKING;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -198,10 +198,10 @@ void sub_02070728(FieldSystem *fieldSystem, UnkStruct_02070950 *param1)
|
||||
|
||||
v1 = Player_GetXPos(fieldSystem->playerAvatar);
|
||||
v2 = Player_GetZPos(fieldSystem->playerAvatar);
|
||||
v4 = sub_02054F94(fieldSystem, v1, v2);
|
||||
v4 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
sub_020615AC(fieldSystem->playerAvatar, &v1, &v2);
|
||||
v3 = sub_02054F94(fieldSystem, v1, v2);
|
||||
v3 = FieldSystem_GetTileAttributes(fieldSystem, v1, v2);
|
||||
|
||||
if (ov5_021E0118(fieldSystem->playerAvatar, v4, v3)) {
|
||||
param1->unk_0C |= (1 << 2);
|
||||
|
||||
@@ -256,7 +256,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1)
|
||||
case 1: {
|
||||
int v0;
|
||||
|
||||
param0->unk_10 = sub_02051D8C(param1, 0x0);
|
||||
param0->unk_10 = FieldBattleDTO_New(param1, 0x0);
|
||||
|
||||
if (sub_0202F250() == 0) {
|
||||
sub_0202F298(param0->saveData, param1, &v0, param0->unk_10, param0->unk_14->unk_86C);
|
||||
@@ -277,7 +277,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1)
|
||||
|
||||
if (v0 != 1) {
|
||||
Heap_FreeToHeap(param0->unk_10->bagCursor);
|
||||
sub_020520A4(param0->unk_10);
|
||||
FieldBattleDTO_Free(param0->unk_10);
|
||||
param0->unk_00 = 0;
|
||||
return 1;
|
||||
} else {
|
||||
@@ -311,7 +311,7 @@ static BOOL sub_0208BC8C(UnkStruct_0208BC3C *param0, int param1)
|
||||
}
|
||||
|
||||
Heap_FreeToHeap(param0->unk_10->bagCursor);
|
||||
sub_020520A4(param0->unk_10);
|
||||
FieldBattleDTO_Free(param0->unk_10);
|
||||
OverlayManager_Free(param0->unk_08);
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user