Document extern functions in encounter.c and associated script commands

This commit is contained in:
Rachel 2024-11-16 13:01:15 -08:00
parent 5d149b4116
commit 756c5b0087
82 changed files with 481 additions and 523 deletions

View File

@ -7,6 +7,7 @@
.include "consts/poketch.inc"
.include "consts/scrcmd.inc"
.include "consts/sdat.inc"
.include "consts/species.inc"
.macro Noop
.short 0
@ -1262,10 +1263,10 @@
.short \arg0
.endm
.macro ScrCmd_0E5 arg0, arg1
.macro StartTrainerBattle enemyTrainer1, enemyTrainer2
.short 229
.short \arg0
.short \arg1
.short \enemyTrainer1
.short \enemyTrainer2
.endm
.macro ScrCmd_0E6 arg0, arg1
@ -1317,7 +1318,7 @@
.short \arg0
.endm
.macro ScrCmd_0EF
.macro StartDummyTrainerBattle
.short 239
.endm
@ -1356,7 +1357,7 @@
.short \arg0
.endm
.macro ScrCmd_0F6
.macro StartLinkBattle
.short 246
.endm
@ -1596,18 +1597,18 @@
.short \arg1
.endm
.macro ScrCmd_124 arg0, arg1
.macro StartWildBattle species, level
.short 292
.short \arg0
.short \arg1
.short \species
.short \level
.endm
.macro ScrCmd_125 arg0
.macro StartFirstBattle trainerID
.short 293
.short \arg0
.short \trainerID
.endm
.macro ScrCmd_126
.macro StartCatchingTutorial
.short 294
.endm
@ -1620,7 +1621,7 @@
.short \arg0
.endm
.macro ScrCmd_129
.macro StartHoneyTreeBattle
.short 297
.endm
@ -3642,11 +3643,11 @@
.short \arg0
.endm
.macro ScrCmd_2A0 arg0, arg1, arg2
.macro StartTagBattle partnerTrainer, enemyTrainer1, enemyTrainer2
.short 672
.short \arg0
.short \arg1
.short \arg2
.short \partnerTrainer
.short \enemyTrainer1
.short \enemyTrainer2
.endm
.macro ScrCmd_2A1 arg0, arg1, arg2
@ -3798,10 +3799,10 @@
.short \destVarID
.endm
.macro ScrCmd_2BD arg0, arg1
.macro StartLegendaryBattle species, level
.short 701
.short \arg0
.short \arg1
.short \species
.short \level
.endm
.macro ScrCmd_2BE arg0
@ -4305,16 +4306,16 @@
.short \destVarIDZ
.endm
.macro ScrCmd_318 arg0, arg1
.macro StartFatefulEncounter species, level
.short 792
.short \arg0
.short \arg1
.short \species
.short \level
.endm
.macro ScrCmd_319 arg0, arg1
.macro StartGiratinaOriginBattle species, level
.short 793
.short \arg0
.short \arg1
.short \species
.short \level
.endm
.macro ScrCmd_31A arg0

View File

@ -49,17 +49,17 @@ enum EncEffectCutIn {
* Get the cut-in effect ID applied as a transition from the overworld
* to the battle UI.
*
* @param battleParams
* @param dto
* @return Cut-in effect ID
*/
u32 EncEffects_CutInEffect(const FieldBattleDTO *battleParams);
u32 EncEffects_CutInEffect(const FieldBattleDTO *dto);
/**
* Get the SEQ ID pointing to this encounter's background music.
*
* @param battleParams
* @param dto
* @return SEQ ID
*/
u32 EncEffects_BGM(const FieldBattleDTO *battleParams);
u32 EncEffects_BGM(const FieldBattleDTO *dto);
#endif // POKEPLATINUM_ENC_EFFECTS_H

View File

@ -8,19 +8,19 @@
#include "field_battle_data_transfer.h"
#include "field_task.h"
void sub_02050E10(FieldSystem *fieldSystem, FieldBattleDTO *param1);
void sub_02050E78(FieldSystem *fieldSystem, FieldTask *param1, FieldBattleDTO *param2);
void sub_0205120C(FieldTask *param0, int *param1);
void sub_02051270(FieldTask *param0, u16 param1, u8 param2, int *param3, BOOL param4);
void sub_020512E4(FieldTask *param0, u16 param1, u8 param2, int *param3, BOOL param4);
void sub_02051450(FieldSystem *fieldSystem, FieldBattleDTO *param1);
void sub_02051480(FieldTask *param0, int param1, int param2, int *param3);
void sub_02051590(FieldTask *param0);
void sub_020515CC(FieldTask *param0, int param1, int param2, int param3, int param4, int *param5);
void sub_0205167C(FieldTask *param0, const u8 *param1, int param2);
void sub_020516F4(FieldTask *param0, int param1, int param2, int param3);
void sub_020517E8(FieldSystem *fieldSystem, const u8 *param1, int param2);
void sub_0205184C(FieldSystem *fieldSystem, const Party *param1, int param2);
void sub_02051ABC(FieldTask *param0, u16 param1, u8 param2, int *param3, BOOL param4);
void Encounter_NewVsWild(FieldSystem *fieldSystem, FieldBattleDTO *dto);
void Encounter_StartVsWild(FieldSystem *fieldSystem, FieldTask *task, FieldBattleDTO *dto);
void Encounter_NewVsHoneyTree(FieldTask *task, int *resultMaskPtr);
void Encounter_NewVsSpeciesAtLevel(FieldTask *task, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary);
void Encounter_NewFatefulVsSpeciesAtLevel(FieldTask *taskMan, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary);
void Encounter_NewVsPalParkTransfer(FieldSystem *fieldSystem, FieldBattleDTO *dto);
void Encounter_NewVsFirstBattle(FieldTask *task, int trainerID, int heapID, int *resultMaskPtr);
void Encounter_NewCatchingTutorial(FieldTask *task);
void Encounter_NewVsTrainer(FieldTask *taskMan, int enemyTrainer1ID, int enemyTrainer2ID, int partnerTrainerID, int heapID, int *resultMaskPtr);
void Encounter_NewVsLink(FieldTask *task, const u8 *partyOrder, int battleType);
void Encounter_NewVsWiFi(FieldTask *task, int param1, int normalizedLevel, int wifiBattleType);
void Encounter_NewVsLinkWithRecording(FieldSystem *fieldSystem, const u8 *partyOrder, int battleType);
void Encounter_NewVsLinkWithRecordingAndParty(FieldSystem *fieldSystem, const Party *party, int battleType);
void Encounter_NewVsGiratinaOrigin(FieldTask *task, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary);
#endif // POKEPLATINUM_ENCOUNTER_H

View File

@ -35,8 +35,8 @@ enum ScriptManagerMember {
SCRIPT_MANAGER_MESSAGE_BUF,
SCRIPT_MANAGER_TEMPORARY_BUF,
SCRIPT_MANAGER_SAVING_ICON,
SCRIPT_MANAGER_DATA_PTR = 20,
SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA,
SCRIPT_MANAGER_DATA_PTR,
SCRIPT_MANAGER_PLAYER_TASK = 22,
SCRIPT_MANAGER_BATTLE_RESULT,
@ -130,7 +130,7 @@ typedef struct ScriptManager {
ApproachingTrainer trainers[2];
u16 data[SCRIPT_DATA_MAX - SCRIPT_DATA_START];
FieldSysFunc function;
void *unk_A8;
void *partyManagementDataPtr;
void *dataPtr; // used as a generic pointer to data in many different script commands
UnkStruct_ov101_021D5D90 *unk_B0;
SysTask *playerTask; // used to set player sprite animations while saving

View File

@ -28,11 +28,11 @@ enum TrainerDataParam {
* This routine is responsible for loading the name of a trainer and building
* their party from the data archives.
*
* @param battleParams The parent FieldBattleDTO struct for the encounter.
* @param dto The parent FieldBattleDTO struct for the encounter.
* @param save Save data; used to pull out the rival's name, if needed.
* @param heapID Heap on which to allocate message bank access.
*/
void TrainerData_Encounter(FieldBattleDTO *battleParams, const SaveData *save, int heapID);
void TrainerData_Encounter(FieldBattleDTO *dto, const SaveData *save, int heapID);
/**
* @brief Get a parameter for the given trainer ID from the data archive.

View File

@ -8,8 +8,8 @@ BOOL ScrCmd_0B7(ScriptContext *param0);
BOOL ScrCmd_0B8(ScriptContext *param0);
BOOL ScrCmd_0B9(ScriptContext *param0);
BOOL ScrCmd_0E4(ScriptContext *param0);
BOOL ScrCmd_0E5(ScriptContext *param0);
BOOL ScrCmd_2A0(ScriptContext *param0);
BOOL ScrCmd_StartTrainerBattle(ScriptContext *param0);
BOOL ScrCmd_StartTagBattle(ScriptContext *param0);
BOOL ScrCmd_0E7(ScriptContext *param0);
BOOL ScrCmd_0E8(ScriptContext *param0);
BOOL ScrCmd_0E9(ScriptContext *param0);
@ -19,7 +19,7 @@ BOOL ScrCmd_CheckWonBattle(ScriptContext *ctx);
BOOL ScrCmd_CheckLostBattle(ScriptContext *ctx);
BOOL ScrCmd_CheckDidNotCapture(ScriptContext *ctx);
BOOL ScrCmd_0EE(ScriptContext *param0);
BOOL ScrCmd_0EF(ScriptContext *param0);
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *param0);
BOOL ScrCmd_0F0(ScriptContext *param0);
BOOL ScrCmd_0F1(ScriptContext *param0);
BOOL ScrCmd_314(ScriptContext *param0);

View File

@ -29,7 +29,7 @@ _002F:
Message 0
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1E0, 50
StartLegendaryBattle SPECIES_UXIE, 50
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0085

View File

@ -230,7 +230,7 @@ _032F:
CloseMessage
IncrementGameRecord RECORD_UNK_057
Call _0605
ScrCmd_0E5 0x4005, 0
StartTrainerBattle 0x4005, 0
CheckWonBattle 0x8000
Return

View File

@ -161,15 +161,15 @@ _028A:
GoTo _02DF
_02DF:
ScrCmd_0E5 0x1DC, 0
StartTrainerBattle 0x1DC, 0
GoTo _0303
_02EB:
ScrCmd_0E5 0x1DD, 0
StartTrainerBattle 0x1DD, 0
GoTo _0303
_02F7:
ScrCmd_0E5 0x1DE, 0
StartTrainerBattle 0x1DE, 0
GoTo _0303
_0303:

View File

@ -21,7 +21,7 @@ _0016:
ScrCmd_1CD 9, 35, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 250, 0
StartTrainerBattle 250, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0120
Message 1

View File

@ -40,7 +40,7 @@ _0063:
_006E:
Message 2
CloseMessage
ScrCmd_0E5 0x1A0, 0
StartTrainerBattle 0x1A0, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0191
Message 4

View File

@ -101,7 +101,7 @@ _0181:
_019D:
Message 8
CloseMessage
ScrCmd_0E5 0x391, 0
StartTrainerBattle 0x391, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0393
Call _01C3
@ -466,7 +466,7 @@ _0538:
GoToIfEq 0x800C, 1, _057A
Message 8
CloseMessage
ScrCmd_0E5 0x391, 0
StartTrainerBattle 0x391, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0393
Call _01C3

View File

@ -54,7 +54,7 @@ _0096:
FacePlayer
Message 5
CloseMessage
ScrCmd_0E5 0x194, 0
StartTrainerBattle 0x194, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01CE
SetVar 0x4055, 10

View File

@ -66,7 +66,7 @@ _00C4:
ScrCmd_04D
CloseMessage
SetFlag 142
ScrCmd_319 0x1E7, 47
StartGiratinaOriginBattle SPECIES_GIRATINA, 47
ClearFlag 142
CheckWonBattle 0x800C
ScrCmd_314 0x800C

View File

@ -67,7 +67,7 @@ _0094:
ScrCmd_1CD 9, 67, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x13B, 0
StartTrainerBattle 0x13B, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01C3
Message 1
@ -152,7 +152,7 @@ _01C9:
ScrCmd_0EA 0x144
Message 6
CloseMessage
ScrCmd_0E5 0x144, 0
StartTrainerBattle 0x144, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01C3
Message 7
@ -180,7 +180,7 @@ _021C:
Call _02DA
Message 8
CloseMessage
ScrCmd_0E5 0x103, 0
StartTrainerBattle 0x103, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01C3
Message 9
@ -208,7 +208,7 @@ _027B:
Call _02DA
Message 10
CloseMessage
ScrCmd_0E5 0x104, 0
StartTrainerBattle 0x104, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01C3
Message 11

View File

@ -145,7 +145,7 @@ _014E:
Message 8
CloseMessage
Call _030C
ScrCmd_2A0 0x8004, 0x399, 0x39A
StartTagBattle 0x8004, 0x399, 0x39A
CheckWonBattle 0x800C
Return

View File

@ -18,11 +18,11 @@ _001E:
_0024:
LockAll
Call _00CC
ScrCmd_0E5 0x128, 0
StartTrainerBattle 0x128, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _006E
Call _00EE
ScrCmd_0E5 0x129, 0
StartTrainerBattle 0x129, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _006E
Call _010E

View File

@ -41,7 +41,7 @@ _007D:
Message 0
CloseMessage
SetFlag 142
ScrCmd_318 0x1EC, 30
StartFatefulEncounter SPECIES_SHAYMIN, 30
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00D7

View File

@ -34,7 +34,7 @@ _0064:
GoTo _0074
_0074:
ScrCmd_0E5 0x193, 0
StartTrainerBattle 0x193, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00E1
Message 2

View File

@ -39,7 +39,7 @@ _0059:
GoToIfSet 173, _0114
Message 0
CloseMessage
ScrCmd_0E5 0x199, 0
StartTrainerBattle 0x199, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _011F
SetFlag 173

View File

@ -41,7 +41,7 @@ _0056:
Message 0
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1ED, 80
StartLegendaryBattle SPECIES_ARCEUS, 80
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00DF

View File

@ -45,7 +45,7 @@ _0096:
ScrCmd_1CD 9, 100, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x13E, 0
StartTrainerBattle 0x13E, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01DC
Message 1

View File

@ -59,7 +59,7 @@ _00BB:
Message 0
CloseMessage
SetFlag 142
ScrCmd_0E5 0x13E, 0
StartTrainerBattle 0x13E, 0
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0248

View File

@ -44,7 +44,7 @@ _00AE:
Message 2
ScrCmd_04D
CloseMessage
ScrCmd_2BD 0x17A, 30
StartLegendaryBattle SPECIES_REGICE, 30
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0109
CheckDidNotCapture 0x800C

View File

@ -172,7 +172,7 @@ _01AA:
Message 8
CloseMessage
SetHasPartner
ScrCmd_0E5 0x343, 0x344
StartTrainerBattle 0x343, 0x344
ClearHasPartner
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _037D

View File

@ -44,7 +44,7 @@ _00AE:
Message 2
ScrCmd_04D
CloseMessage
ScrCmd_2BD 0x17B, 30
StartLegendaryBattle SPECIES_REGISTEEL, 30
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0109
CheckDidNotCapture 0x800C

View File

@ -878,7 +878,7 @@ _0AFE:
ApplyMovement 0xFF, _0F30
WaitMovement
Call _0BAA
ScrCmd_2A0 0x8004, 0x19E, 0x19F
StartTagBattle 0x8004, 0x19E, 0x19F
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0DB7
ApplyMovement 18, _0EB4

View File

@ -194,7 +194,7 @@ _0230:
WaitMovement
Message 9
CloseMessage
ScrCmd_0E5 0x195, 0
StartTrainerBattle 0x195, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _02DB
Message 10

View File

@ -39,7 +39,7 @@ _0079:
Message 0
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1EB, 50
StartLegendaryBattle SPECIES_DARKRAI, 50
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _014C

View File

@ -21,7 +21,7 @@ _0006:
ScrCmd_04C 0x1DF, 0
ScrCmd_04D
SetFlag 0xAB0
ScrCmd_124 0x1DF, 20
StartWildBattle SPECIES_ROTOM, 20
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00A7
CheckDidNotCapture 0x800C

View File

@ -16,7 +16,7 @@ _000E:
ScrCmd_1CD 9, 47, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 246, 0
StartTrainerBattle 246, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0119
Message 1

View File

@ -581,15 +581,15 @@ _04C8:
GoTo _053F
_053F:
ScrCmd_0E5 0x1D9, 0
StartTrainerBattle 0x1D9, 0
GoTo _0563
_054B:
ScrCmd_0E5 0x1DA, 0
StartTrainerBattle 0x1DA, 0
GoTo _0563
_0557:
ScrCmd_0E5 0x1DB, 0
StartTrainerBattle 0x1DB, 0
GoTo _0563
_0563:

View File

@ -48,7 +48,7 @@ _0076:
ScrCmd_1CD 9, 122, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x13C, 0
StartTrainerBattle 0x13C, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _016B
Message 1

View File

@ -30,11 +30,11 @@ _000A:
End
_007A:
ScrCmd_0E5 0x105, 0
StartTrainerBattle 0x105, 0
Return
_0082:
ScrCmd_0E5 0x362, 0
StartTrainerBattle 0x362, 0
Return
_008A:

View File

@ -30,11 +30,11 @@ _000A:
End
_007A:
ScrCmd_0E5 0x106, 0
StartTrainerBattle 0x106, 0
Return
_0082:
ScrCmd_0E5 0x363, 0
StartTrainerBattle 0x363, 0
Return
_008A:

View File

@ -59,11 +59,11 @@ _00F0:
Return
_00F5:
ScrCmd_0E5 0x10B, 0
StartTrainerBattle 0x10B, 0
Return
_00FD:
ScrCmd_0E5 0x366, 0
StartTrainerBattle 0x366, 0
Return
_0105:

View File

@ -32,11 +32,11 @@ _000A:
End
_00A0:
ScrCmd_0E5 0x107, 0
StartTrainerBattle 0x107, 0
Return
_00A8:
ScrCmd_0E5 0x364, 0
StartTrainerBattle 0x364, 0
Return
_00B0:

View File

@ -30,11 +30,11 @@ _000A:
End
_007A:
ScrCmd_0E5 0x108, 0
StartTrainerBattle 0x108, 0
Return
_0082:
ScrCmd_0E5 0x365, 0
StartTrainerBattle 0x365, 0
Return
_008A:

View File

@ -154,15 +154,15 @@ _01C1:
GoTo _01F7
_01F7:
ScrCmd_0E5 0x1DF, 0
StartTrainerBattle 0x1DF, 0
GoTo _021B
_0203:
ScrCmd_0E5 0x1E0, 0
StartTrainerBattle 0x1E0, 0
GoTo _021B
_020F:
ScrCmd_0E5 0x1E1, 0
StartTrainerBattle 0x1E1, 0
GoTo _021B
_021B:

View File

@ -95,7 +95,7 @@ _00FF:
WaitMovement
Message 15
CloseMessage
ScrCmd_0E5 0x381, 0
StartTrainerBattle 0x381, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
AddVar 0x8005, 0x404D
@ -107,7 +107,7 @@ _00FF:
WaitMovement
Message 17
CloseMessage
ScrCmd_0E5 0x382, 0
StartTrainerBattle 0x382, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
AddVar 0x8005, 0x404D
@ -119,7 +119,7 @@ _00FF:
WaitMovement
Message 19
CloseMessage
ScrCmd_0E5 0x383, 0
StartTrainerBattle 0x383, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
AddVar 0x8005, 0x404D
@ -131,7 +131,7 @@ _00FF:
WaitMovement
Message 21
CloseMessage
ScrCmd_0E5 0x384, 0
StartTrainerBattle 0x384, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
AddVar 0x8005, 0x404D
@ -151,7 +151,7 @@ _00FF:
WaitMovement
Message 23
CloseMessage
ScrCmd_0E5 0x385, 0
StartTrainerBattle 0x385, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
AddVar 0x8005, 0x404D
@ -179,7 +179,7 @@ _00FF:
CallIfEq 0x8006, 0, _03CD
CallIfEq 0x8006, 1, _03D2
CloseMessage
ScrCmd_0E5 0x8007, 0
StartTrainerBattle 0x8007, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0484
SetTrainerFlag 0x37C

View File

@ -228,7 +228,7 @@ _03C8:
_03E7:
CloseMessage
ScrCmd_0E5 0x218, 0x227
StartTrainerBattle 0x218, 0x227
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x218
@ -350,7 +350,7 @@ _0572:
_0591:
CloseMessage
ScrCmd_0E5 0x218, 0x227
StartTrainerBattle 0x218, 0x227
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x218
@ -472,7 +472,7 @@ _071C:
_073B:
CloseMessage
ScrCmd_0E5 0x221, 0x222
StartTrainerBattle 0x221, 0x222
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x221
@ -594,7 +594,7 @@ _08C6:
_08E5:
CloseMessage
ScrCmd_0E5 0x221, 0x222
StartTrainerBattle 0x221, 0x222
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x221
@ -716,7 +716,7 @@ _0A70:
_0A8F:
CloseMessage
ScrCmd_0E5 0x21E, 0x21F
StartTrainerBattle 0x21E, 0x21F
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21E
@ -838,7 +838,7 @@ _0C1A:
_0C39:
CloseMessage
ScrCmd_0E5 0x21E, 0x21F
StartTrainerBattle 0x21E, 0x21F
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21E
@ -960,7 +960,7 @@ _0DC4:
_0DE3:
CloseMessage
ScrCmd_0E5 0x21B, 0x217
StartTrainerBattle 0x21B, 0x217
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21B
@ -1082,7 +1082,7 @@ _0F6E:
_0F8D:
CloseMessage
ScrCmd_0E5 0x21B, 0x217
StartTrainerBattle 0x21B, 0x217
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21B
@ -1204,7 +1204,7 @@ _1118:
_1137:
CloseMessage
ScrCmd_0E5 0x224, 0x21C
StartTrainerBattle 0x224, 0x21C
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x224
@ -1326,7 +1326,7 @@ _12C2:
_12E1:
CloseMessage
ScrCmd_0E5 0x224, 0x21C
StartTrainerBattle 0x224, 0x21C
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x224
@ -1448,7 +1448,7 @@ _146C:
_148B:
CloseMessage
ScrCmd_0E5 0x228, 0x220
StartTrainerBattle 0x228, 0x220
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x228
@ -1570,7 +1570,7 @@ _1616:
_1635:
CloseMessage
ScrCmd_0E5 0x228, 0x220
StartTrainerBattle 0x228, 0x220
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x228
@ -1692,7 +1692,7 @@ _17C0:
_17DF:
CloseMessage
ScrCmd_0E5 0x21A, 0x223
StartTrainerBattle 0x21A, 0x223
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21A
@ -1814,7 +1814,7 @@ _196A:
_1989:
CloseMessage
ScrCmd_0E5 0x21A, 0x223
StartTrainerBattle 0x21A, 0x223
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21A
@ -1936,7 +1936,7 @@ _1B14:
_1B33:
CloseMessage
ScrCmd_0E5 0x21D, 0x226
StartTrainerBattle 0x21D, 0x226
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21D
@ -2058,7 +2058,7 @@ _1CBE:
_1CDD:
CloseMessage
ScrCmd_0E5 0x21D, 0x226
StartTrainerBattle 0x21D, 0x226
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x21D
@ -2180,7 +2180,7 @@ _1E68:
_1E87:
CloseMessage
ScrCmd_0E5 0x225, 0x219
StartTrainerBattle 0x225, 0x219
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x225
@ -2302,7 +2302,7 @@ _2012:
_2031:
CloseMessage
ScrCmd_0E5 0x225, 0x219
StartTrainerBattle 0x225, 0x219
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _2125
SetTrainerFlag 0x225

View File

@ -44,7 +44,7 @@ _00AE:
Message 2
ScrCmd_04D
CloseMessage
ScrCmd_2BD 0x179, 30
StartLegendaryBattle SPECIES_REGIROCK, 30
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0109
CheckDidNotCapture 0x800C

View File

@ -364,15 +364,15 @@ _057A:
End
_05B1:
ScrCmd_125 0x352
StartFirstBattle 0x352
GoTo _05CF
_05BB:
ScrCmd_125 0x353
StartFirstBattle 0x353
GoTo _05CF
_05C5:
ScrCmd_125 0x354
StartFirstBattle 0x354
GoTo _05CF
_05CF:

View File

@ -130,7 +130,7 @@ _01C5:
ApplyMovement 3, _0488
ApplyMovement 0xFF, _04BC
WaitMovement
ScrCmd_126
StartCatchingTutorial
ApplyMovement 3, _0490
WaitMovement
GetPlayerGender 0x800C

View File

@ -95,15 +95,15 @@ _0111:
GoTo _0140
_0140:
ScrCmd_0E5 247, 0
StartTrainerBattle 247, 0
GoTo _0164
_014C:
ScrCmd_0E5 248, 0
StartTrainerBattle 248, 0
GoTo _0164
_0158:
ScrCmd_0E5 249, 0
StartTrainerBattle 249, 0
GoTo _0164
_0164:

View File

@ -84,7 +84,7 @@ _014D:
Message 9
ScrCmd_04D
CloseMessage
ScrCmd_124 0x1BA, 25
StartWildBattle SPECIES_SPIRITOMB, 25
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _017F
SetVar 0x408A, 0

View File

@ -38,17 +38,17 @@ _001D:
End
_00A5:
ScrCmd_0E5 0x1D6, 0
StartTrainerBattle 0x1D6, 0
GoTo _00CF
End
_00B3:
ScrCmd_0E5 0x1D7, 0
StartTrainerBattle 0x1D7, 0
GoTo _00CF
End
_00C1:
ScrCmd_0E5 0x1D8, 0
StartTrainerBattle 0x1D8, 0
GoTo _00CF
End

View File

@ -25,7 +25,7 @@ _0025:
ScrCmd_1CD 9, 167, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x13F, 0
StartTrainerBattle 0x13F, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _010E
Message 1

View File

@ -47,7 +47,7 @@ _0081:
ScrCmd_04C 0x1E6, 0
ScrCmd_04D
SetFlag 142
ScrCmd_2BD 0x1E6, 1
StartLegendaryBattle SPECIES_REGIGIGAS, 1
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00D1

View File

@ -136,7 +136,7 @@ _01A6:
_01CA:
Message 0
CloseMessage
ScrCmd_0E5 0x209, 0x20F
StartTrainerBattle 0x209, 0x20F
CheckWonBattle 0x800C
Return
@ -215,7 +215,7 @@ _0249:
Message 9
CloseMessage
Call _0424
ScrCmd_2A0 0x8004, 0x210, 0x197
StartTagBattle 0x8004, 0x210, 0x197
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _02D0
Call _0456

View File

@ -39,7 +39,7 @@ _0077:
Message 1
ScrCmd_04D
CloseMessage
ScrCmd_2BD 0x1E3, 70
StartLegendaryBattle SPECIES_DIALGA, 70
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00E8
SetVar 0x40C4, 1

View File

@ -39,7 +39,7 @@ _0077:
Message 1
ScrCmd_04D
CloseMessage
ScrCmd_2BD 0x1E4, 70
StartLegendaryBattle SPECIES_PALKIA, 70
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00E8
SetVar 0x40C5, 1

View File

@ -19,7 +19,7 @@ _0014:
CloseMessage
ApplyMovement 0, _0160
WaitMovement
ScrCmd_0E5 0x39E, 0
StartTrainerBattle 0x39E, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0150
Message 1
@ -32,7 +32,7 @@ _0014:
CloseMessage
ApplyMovement 4, _01CC
WaitMovement
ScrCmd_0E5 0x39F, 0
StartTrainerBattle 0x39F, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0150
Message 3

View File

@ -108,7 +108,7 @@ _00E6:
Message 15
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1E5, 50
StartLegendaryBattle SPECIES_HEATRAN, 50
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0168

View File

@ -30,7 +30,7 @@ _0027:
ScrCmd_1CD 9, 156, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x140, 0
StartTrainerBattle 0x140, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _011A
Message 1

View File

@ -183,12 +183,12 @@ _01FA:
End
_021A:
ScrCmd_0E5 0x345, 0
StartTrainerBattle 0x345, 0
GoTo _02AE
End
_0228:
ScrCmd_0E5 0x367, 0
StartTrainerBattle 0x367, 0
GoTo _02AE
End
@ -199,12 +199,12 @@ _0236:
End
_0256:
ScrCmd_0E5 0x346, 0
StartTrainerBattle 0x346, 0
GoTo _02AE
End
_0264:
ScrCmd_0E5 0x368, 0
StartTrainerBattle 0x368, 0
GoTo _02AE
End
@ -215,12 +215,12 @@ _0272:
End
_0292:
ScrCmd_0E5 0x347, 0
StartTrainerBattle 0x347, 0
GoTo _02AE
End
_02A0:
ScrCmd_0E5 0x369, 0
StartTrainerBattle 0x369, 0
GoTo _02AE
End

View File

@ -27,7 +27,7 @@ _0022:
WaitMovement
Message 0
CloseMessage
ScrCmd_0E5 0x196, 0
StartTrainerBattle 0x196, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0135
Message 1

View File

@ -175,17 +175,17 @@ _01E7:
End
_0212:
ScrCmd_0E5 0x156, 0
StartTrainerBattle 0x156, 0
GoTo _023C
End
_0220:
ScrCmd_0E5 0x156, 0
StartTrainerBattle 0x156, 0
GoTo _023C
End
_022E:
ScrCmd_0E5 0x156, 0
StartTrainerBattle 0x156, 0
GoTo _023C
End
@ -269,17 +269,17 @@ _031A:
End
_0345:
ScrCmd_0E5 0x159, 0
StartTrainerBattle 0x159, 0
GoTo _036F
End
_0353:
ScrCmd_0E5 0x159, 0
StartTrainerBattle 0x159, 0
GoTo _036F
End
_0361:
ScrCmd_0E5 0x159, 0
StartTrainerBattle 0x159, 0
GoTo _036F
End

View File

@ -31,7 +31,7 @@ _0037:
Message 0
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1E7, 47
StartLegendaryBattle SPECIES_GIRATINA, 47
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _009B

View File

@ -163,7 +163,7 @@ _02A4:
ScrCmd_2BA 0x800C
GoToIfEq 0x800C, 1, _0B63
GoToIfEq 0x800C, 2, _0B63
ScrCmd_0F6
StartLinkBattle
Call _0BB2
GoTo _00D0
End
@ -616,7 +616,7 @@ _095C:
ScrCmd_2BA 0x800C
GoToIfEq 0x800C, 1, _0B63
GoToIfEq 0x800C, 2, _0B63
ScrCmd_0F6
StartLinkBattle
ScrCmd_139 11
Call _0BB2
GoTo _07D4

View File

@ -529,7 +529,7 @@ _06D5:
_06F4:
IncrementGameRecord RECORD_UNK_117
ScrCmd_129
StartHoneyTreeBattle
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0713
ScrCmd_12A

View File

@ -399,7 +399,7 @@ _0513:
Return
_051E:
ScrCmd_0F6
StartLinkBattle
ScrCmd_151
End

View File

@ -251,7 +251,7 @@ _0631:
_0687:
CloseMessage
ScrCmd_0E5 0x8005, 0
StartTrainerBattle 0x8005, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0822
GoTo _06A8

View File

@ -962,7 +962,7 @@ _0F01:
_0F1D:
CloseMessage
ScrCmd_20B
ScrCmd_0E5 0x8004, 0
StartTrainerBattle 0x8004, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0FC5
SetTrainerFlag 0x8004
@ -1067,7 +1067,7 @@ _1083:
OpenMessage
ScrCmd_0E6 0x8004, 0
CloseMessage
ScrCmd_0E5 0x8004, 0
StartTrainerBattle 0x8004, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0FC5
ScrCmd_0B9 0, 0x800C
@ -1098,7 +1098,7 @@ _10F3:
OpenMessage
ScrCmd_0E6 0x8005, 7
CloseMessage
ScrCmd_0E5 0x8004, 0x8005
StartTrainerBattle 0x8004, 0x8005
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0FC5
ScrCmd_0B9 0, 0x800C
@ -1138,7 +1138,7 @@ _11A0:
OpenMessage
ScrCmd_0E6 0x8005, 0
CloseMessage
ScrCmd_0E5 0x8004, 0x8005
StartTrainerBattle 0x8004, 0x8005
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0FC5
ScrCmd_0B9 0, 0x800C

View File

@ -88,7 +88,7 @@ _00F5:
_0107:
Message 2
CloseMessage
ScrCmd_0E5 0x127, 0
StartTrainerBattle 0x127, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _02B9
Message 3

View File

@ -63,7 +63,7 @@ _00CF:
FacePlayer
Message 0
CloseMessage
ScrCmd_0E5 0x34B, 0
StartTrainerBattle 0x34B, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0133
Message 1
@ -146,7 +146,7 @@ _01BF:
CloseMessage
ScrCmd_04D
SetFlag 142
ScrCmd_2BD 0x1A9, 15
StartLegendaryBattle SPECIES_DRIFLOON, 15
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01FB

View File

@ -43,7 +43,7 @@ _0077:
Message 3
CloseMessage
SetFlag 142
ScrCmd_2BD 0x1E2, 50
StartLegendaryBattle SPECIES_AZELF, 50
ClearFlag 142
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _00CD
@ -76,7 +76,7 @@ _00D3:
WaitTime 30, 0x800C
Message 1
CloseMessage
ScrCmd_0E5 0x198, 0
StartTrainerBattle 0x198, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0144
Message 2

View File

@ -84,7 +84,7 @@ _013A:
FacePlayer
Message 2
CloseMessage
ScrCmd_0E5 0x34F, 0
StartTrainerBattle 0x34F, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _01D9
Message 3

View File

@ -507,7 +507,7 @@ _0656:
CallIfEq 0x800C, 1, _09B3
CallIfEq 0x800C, 0, _09C7
Call _0919
ScrCmd_2A0 0x8004, 0x350, 0x351
StartTagBattle 0x8004, 0x350, 0x351
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0A73
Message 16

View File

@ -24,7 +24,7 @@ _0022:
ScrCmd_1CD 9, 133, 0, 0, 0
Message 0
CloseMessage
ScrCmd_0E5 0x13D, 0
StartTrainerBattle 0x13D, 0
CheckWonBattle 0x800C
GoToIfEq 0x800C, 0, _0118
Message 1

View File

@ -109,9 +109,9 @@ static const EncEffectsPair sEncEffectsTable[35] = {
[ENCEFF_NORMAL_WILD] = { ENCEFF_CUTIN_USE_LOCAL, SEQ_BATTLE_WILD_POKEMON }
};
static u32 EncEffects_GetEffectPair(const FieldBattleDTO *battleParams);
static u32 EncEffects_CutInEffectForPair(u32 effectPairID, const FieldBattleDTO *battleParams);
static u32 EncEffects_BGMForPair(u32 effectPairID, const FieldBattleDTO *battleParams);
static u32 EncEffects_GetEffectPair(const FieldBattleDTO *dto);
static u32 EncEffects_CutInEffectForPair(u32 effectPairID, const FieldBattleDTO *dto);
static u32 EncEffects_BGMForPair(u32 effectPairID, const FieldBattleDTO *dto);
static u32 EncEffects_TrainerClassEffect(u32 trainerClass);
static u32 EncEffects_WildPokemonEffect(Party *wildParty, int mapHeaderID);
@ -122,12 +122,12 @@ inline BOOL EncEffects_Galactic(u32 effect)
|| (effect == ENCEFF_GALACTIC_CYRUS);
}
static u32 EncEffects_GetEffectPair(const FieldBattleDTO *battleParams)
static u32 EncEffects_GetEffectPair(const FieldBattleDTO *dto)
{
u32 battleType = battleParams->battleType;
u32 battleType = dto->battleType;
if (battleType & BATTLE_TYPE_TRAINER) {
u32 trainerEffect = EncEffects_TrainerClassEffect(battleParams->trainerData[1].class);
u32 trainerEffect = EncEffects_TrainerClassEffect(dto->trainerData[1].class);
if (battleType & BATTLE_TYPE_FRONTIER) {
if (trainerEffect == ENCEFF_FRONTIER_BRAIN) {
@ -164,7 +164,7 @@ static u32 EncEffects_GetEffectPair(const FieldBattleDTO *battleParams)
return trainerEffect;
}
u32 pokemonEffect = EncEffects_WildPokemonEffect(battleParams->parties[1], battleParams->mapHeaderID);
u32 pokemonEffect = EncEffects_WildPokemonEffect(dto->parties[1], dto->mapHeaderID);
if (pokemonEffect < ENCEFF_NORMAL_WILD) {
return pokemonEffect;
@ -177,34 +177,34 @@ static u32 EncEffects_GetEffectPair(const FieldBattleDTO *battleParams)
return pokemonEffect;
}
static u32 EncEffects_CutInEffectForPair(u32 effectPairID, const FieldBattleDTO *battleParams)
static u32 EncEffects_CutInEffectForPair(u32 effectPairID, const FieldBattleDTO *dto)
{
GF_ASSERT(effectPairID < ENCEFF_MAX);
// If the cut-in effect specifies, determine what effect to use
// based on the encounter locale.
if (sEncEffectsTable[effectPairID].cutInEffect == ENCEFF_CUTIN_USE_LOCAL) {
return CutInEffects_ForBattle(battleParams);
return CutInEffects_ForBattle(dto);
}
return sEncEffectsTable[effectPairID].cutInEffect;
}
static u32 EncEffects_BGMForPair(u32 effectPairID, const FieldBattleDTO *battleParams)
static u32 EncEffects_BGMForPair(u32 effectPairID, const FieldBattleDTO *dto)
{
GF_ASSERT(effectPairID < ENCEFF_MAX);
return sEncEffectsTable[effectPairID].sdatBGMusic;
}
u32 EncEffects_CutInEffect(const FieldBattleDTO *battleParams)
u32 EncEffects_CutInEffect(const FieldBattleDTO *dto)
{
return EncEffects_CutInEffectForPair(EncEffects_GetEffectPair(battleParams), battleParams);
return EncEffects_CutInEffectForPair(EncEffects_GetEffectPair(dto), dto);
}
u32 EncEffects_BGM(const FieldBattleDTO *battleParams)
u32 EncEffects_BGM(const FieldBattleDTO *dto)
{
return EncEffects_BGMForPair(EncEffects_GetEffectPair(battleParams), battleParams);
return EncEffects_BGMForPair(EncEffects_GetEffectPair(dto), dto);
}
static u32 EncEffects_TrainerClassEffect(u32 trainerClass)

View File

@ -92,7 +92,7 @@ static BOOL FieldTask_WiFiEncounter(FieldTask *task);
static BOOL FieldTask_SafariEncounter(FieldTask *task);
static BOOL FieldTask_PalParkEncounter(FieldTask *task);
static BOOL FieldTask_CatchingTutorialEncounter(FieldTask *task);
static BOOL FieldTask_UnionRoomEncounter(FieldTask *task);
static BOOL FieldTask_LinkEncounterWithRecording(FieldTask *task);
static BOOL FieldTask_WildEncounter(FieldTask *task);
static BOOL FieldTask_RunBattle(FieldTask *task)
@ -344,33 +344,25 @@ static void FreeWildEncounter(WildEncounter *encounter)
Heap_FreeToHeap(encounter);
}
void sub_02050E10(FieldSystem *fieldSystem, FieldBattleDTO *param1)
void Encounter_NewVsWild(FieldSystem *fieldSystem, FieldBattleDTO *dto)
{
if (SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData))) {
Encounter *v0;
v0 = NewEncounter(param1, EncEffects_CutInEffect(param1), EncEffects_BGM(param1), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_SafariEncounter, v0);
Encounter *encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_SafariEncounter, encounter);
} else {
WildEncounter *v1;
v1 = NewWildEncounter(param1, EncEffects_CutInEffect(param1), EncEffects_BGM(param1), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_WildEncounter, v1);
WildEncounter *encounter = NewWildEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_WildEncounter, encounter);
}
}
void sub_02050E78(FieldSystem *fieldSystem, FieldTask *param1, FieldBattleDTO *param2)
void Encounter_StartVsWild(FieldSystem *fieldSystem, FieldTask *task, FieldBattleDTO *dto)
{
if (SystemFlag_CheckSafariGameActive(SaveData_GetVarsFlags(fieldSystem->saveData))) {
Encounter *v0;
v0 = NewEncounter(param2, EncEffects_CutInEffect(param2), EncEffects_BGM(param2), NULL);
FieldTask_InitJump(param1, FieldTask_SafariEncounter, v0);
Encounter *encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldTask_InitJump(task, FieldTask_SafariEncounter, encounter);
} else {
WildEncounter *v1;
v1 = NewWildEncounter(param2, EncEffects_CutInEffect(param2), EncEffects_BGM(param2), NULL);
FieldTask_InitJump(param1, FieldTask_WildEncounter, v1);
WildEncounter *encounter = NewWildEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldTask_InitJump(task, FieldTask_WildEncounter, encounter);
}
}
@ -543,76 +535,64 @@ static BOOL FieldTask_SafariEncounter(FieldTask *task)
return FALSE;
}
void sub_0205120C(FieldTask *taskMan, int *param1)
void Encounter_NewVsHoneyTree(FieldTask *task, int *resultMaskPtr)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem;
fieldSystem = FieldTask_GetFieldSystem(taskMan);
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
RadarChain_Clear(fieldSystem->chain);
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
FieldBattleDTO_Init(v1, fieldSystem);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, BATTLE_TYPE_WILD_MON);
FieldBattleDTO_Init(dto, fieldSystem);
v1->background = 0;
v1->terrain = TERRAIN_PLAIN;
dto->background = BACKGROUND_PLAIN;
dto->terrain = TERRAIN_PLAIN;
ov6_02242034(fieldSystem, v1);
ov6_02242034(fieldSystem, dto);
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_007);
StartEncounter(taskMan, v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), param1);
StartEncounter(task, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}
void sub_02051270(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL param4)
void Encounter_NewVsSpeciesAtLevel(FieldTask *task, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem;
fieldSystem = FieldTask_GetFieldSystem(taskMan);
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
RadarChain_Clear(fieldSystem->chain);
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
FieldBattleDTO_Init(v1, fieldSystem);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, BATTLE_TYPE_WILD_MON);
FieldBattleDTO_Init(dto, fieldSystem);
ov6_022420D4(fieldSystem, param1, param2, v1);
ov6_022420D4(fieldSystem, species, level, dto);
if (param4) {
v1->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
if (isLegendary) {
dto->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
}
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_007);
StartEncounter(taskMan, v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), param3);
StartEncounter(task, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}
void sub_020512E4(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL param4)
void Encounter_NewFatefulVsSpeciesAtLevel(FieldTask *taskMan, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem;
Pokemon *v3;
int v4;
fieldSystem = FieldTask_GetFieldSystem(taskMan);
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
RadarChain_Clear(fieldSystem->chain);
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
FieldBattleDTO_Init(v1, fieldSystem);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, BATTLE_TYPE_WILD_MON);
FieldBattleDTO_Init(dto, fieldSystem);
ov6_022420D4(fieldSystem, param1, param2, v1);
ov6_022420D4(fieldSystem, species, level, dto);
v4 = 1;
v3 = Party_GetPokemonBySlotIndex(v1->parties[1], 0);
BOOL tmp = TRUE;
Pokemon *wildMon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_ENEMY_SLOT_1], 0);
Pokemon_SetValue(wildMon, MON_DATA_FATEFUL_ENCOUNTER, &tmp);
Pokemon_SetValue(v3, MON_DATA_FATEFUL_ENCOUNTER, &v4);
if (param4) {
v1->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
if (isLegendary) {
dto->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
}
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_007);
StartEncounter(taskMan, v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), param3);
StartEncounter(taskMan, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}
static BOOL FieldTask_PalParkEncounter(FieldTask *task)
@ -671,33 +651,28 @@ static BOOL FieldTask_PalParkEncounter(FieldTask *task)
return FALSE;
}
void sub_02051450(FieldSystem *fieldSystem, FieldBattleDTO *param1)
void Encounter_NewVsPalParkTransfer(FieldSystem *fieldSystem, FieldBattleDTO *dto)
{
Encounter *v0;
v0 = NewEncounter(param1, EncEffects_CutInEffect(param1), EncEffects_BGM(param1), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_PalParkEncounter, v0);
Encounter *encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_PalParkEncounter, encounter);
}
void sub_02051480(FieldTask *taskMan, int param1, int param2, int *param3)
void Encounter_NewVsFirstBattle(FieldTask *task, int trainerID, int heapID, int *resultMaskPtr)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem;
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
fieldSystem = FieldTask_GetFieldSystem(taskMan);
v1 = FieldBattleDTO_New(11, 0x1);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, BATTLE_TYPE_TRAINER);
FieldBattleDTO_Init(dto, fieldSystem);
FieldBattleDTO_Init(v1, fieldSystem);
dto->battleStatusMask = BATTLE_STATUS_FIRST_BATTLE;
dto->trainerIDs[BATTLER_ENEMY_SLOT_1] = trainerID;
dto->trainerIDs[BATTLER_ENEMY_SLOT_2] = 0;
dto->trainerIDs[BATTLER_PLAYER_SLOT_2] = 0;
v1->battleStatusMask = BATTLE_STATUS_FIRST_BATTLE;
v1->trainerIDs[1] = param1;
v1->trainerIDs[3] = 0;
v1->trainerIDs[2] = 0;
TrainerData_Encounter(v1, fieldSystem->saveData, param2);
TrainerData_Encounter(dto, fieldSystem->saveData, heapID);
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_008);
StartEncounter(taskMan, v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), param3);
StartEncounter(task, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}
static BOOL FieldTask_CatchingTutorialEncounter(FieldTask *task)
@ -746,67 +721,63 @@ static BOOL FieldTask_CatchingTutorialEncounter(FieldTask *task)
return FALSE;
}
void sub_02051590(FieldTask *taskMan)
void Encounter_NewCatchingTutorial(FieldTask *task)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
Encounter *encounter;
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
v1 = FieldBattleDTO_NewCatchingTutorial(11, fieldSystem);
v0 = NewEncounter(v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), NULL);
dto = FieldBattleDTO_NewCatchingTutorial(HEAP_ID_FIELDMAP, fieldSystem);
encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldTask_InitCall(taskMan, FieldTask_CatchingTutorialEncounter, v0);
FieldTask_InitCall(task, FieldTask_CatchingTutorialEncounter, encounter);
}
void sub_020515CC(FieldTask *taskMan, int param1, int param2, int param3, int param4, int *param5)
void Encounter_NewVsTrainer(FieldTask *taskMan, int enemyTrainer1ID, int enemyTrainer2ID, int partnerTrainerID, int heapID, int *resultMaskPtr)
{
u32 v0;
Encounter *v1;
FieldBattleDTO *v2;
FieldSystem *fieldSystem;
u32 battleType;
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
fieldSystem = FieldTask_GetFieldSystem(taskMan);
if ((param2 != 0) && (param1 != param2)) {
if (param3 == 0) {
v0 = ((0x2 | 0x1) | 0x10);
if (enemyTrainer2ID != 0 && enemyTrainer1ID != enemyTrainer2ID) {
if (partnerTrainerID == 0) {
battleType = BATTLE_TYPE_TAG_DOUBLES;
} else {
v0 = ((0x2 | 0x1) | 0x8 | 0x40);
battleType = BATTLE_TYPE_TRAINER_WITH_AI_PARTNER;
}
} else if (param1 == param2) {
v0 = (0x2 | 0x1);
} else if (enemyTrainer1ID == enemyTrainer2ID) {
battleType = BATTLE_TYPE_TRAINER_DOUBLES;
} else {
v0 = 0x1;
battleType = BATTLE_TYPE_TRAINER;
}
RadarChain_Clear(fieldSystem->chain);
v2 = FieldBattleDTO_New(11, v0);
FieldBattleDTO_Init(v2, fieldSystem);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
FieldBattleDTO_Init(dto, 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;
if (fieldSystem->location->mapId >= MAP_HEADER_DISTORTION_WORLD_1F
&& fieldSystem->location->mapId <= MAP_HEADER_DISTORTION_WORLD_TURNBACK_CAVE_ROOM) {
dto->battleStatusMask |= BATTLE_STATUS_DISTORTION;
}
v2->trainerIDs[1] = param1;
v2->trainerIDs[3] = param2;
v2->trainerIDs[2] = param3;
dto->trainerIDs[BATTLER_ENEMY_SLOT_1] = enemyTrainer1ID;
dto->trainerIDs[BATTLER_ENEMY_SLOT_2] = enemyTrainer2ID;
dto->trainerIDs[BATTLER_PLAYER_SLOT_2] = partnerTrainerID;
TrainerData_Encounter(v2, fieldSystem->saveData, param4);
TrainerData_Encounter(dto, fieldSystem->saveData, heapID);
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_008);
StartEncounter(taskMan, v2, EncEffects_CutInEffect(v2), EncEffects_BGM(v2), param5);
StartEncounter(taskMan, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}
void sub_0205167C(FieldTask *taskMan, const u8 *param1, int param2)
void Encounter_NewVsLink(FieldTask *task, const u8 *partyOrder, int battleType)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
Encounter *v1;
FieldBattleDTO *v2;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
Encounter *encounter;
FieldBattleDTO *dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
FieldBattleDTO_InitWithPartyOrderFromSave(dto, fieldSystem, partyOrder);
v2 = FieldBattleDTO_New(11, param2);
FieldBattleDTO_InitWithPartyOrderFromSave(v2, fieldSystem, param1);
v1 = NewEncounter(v2, EncEffects_CutInEffect(v2), EncEffects_BGM(v2), NULL);
FieldTask_InitCall(taskMan, FieldTask_LinkEncounter, v1);
encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldTask_InitCall(task, FieldTask_LinkEncounter, encounter);
}
static int sub_020516C8(const BattleRegulation *regulation, int battleType)
@ -829,46 +800,43 @@ static int sub_020516C8(const BattleRegulation *regulation, int battleType)
return v0;
}
void sub_020516F4(FieldTask *taskMan, int param1, int param2, int param3)
void Encounter_NewVsWiFi(FieldTask *task, int param1, int normalizedLevel, int wifiBattleType)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan);
Encounter *v1;
FieldBattleDTO *v2;
int v3;
int v4, v5;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
Encounter *encounter;
FieldBattleDTO *dto;
int battleType, recordingResultCode, v5;
if (param3 == 0) {
v4 = (0x4 | 0x1);
v2 = FieldBattleDTO_New(11, (0x4 | 0x1));
if (wifiBattleType == 0) {
battleType = BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
v5 = (UnkEnum_0202F510_00);
} else if (param3 == 1) {
v4 = ((0x4 | 0x1) | 0x2);
v2 = FieldBattleDTO_New(11, ((0x4 | 0x1) | 0x2));
} else if (wifiBattleType == 1) {
battleType = BATTLE_TYPE_LINK_DOUBLES;
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
v5 = (UnkEnum_0202F510_07);
} else {
v4 = ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80);
v2 = FieldBattleDTO_New(11, ((((0x4 | 0x1) | 0x2) | 0x8) | 0x80));
battleType = BATTLE_TYPE_FRONTIER_DOUBLES | BATTLE_TYPE_LINK | BATTLE_TYPE_2vs2;
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
dto->trainerIDs[BATTLER_ENEMY_SLOT_1] = 1;
dto->trainerIDs[BATTLER_ENEMY_SLOT_2] = 2;
v2->trainerIDs[1] = 1;
v2->trainerIDs[3] = 2;
TrainerData_Encounter(v2, fieldSystem->saveData, 11);
TrainerData_Encounter(dto, fieldSystem->saveData, HEAP_ID_FIELDMAP);
v5 = (UnkEnum_0202F510_14);
}
FieldBattleDTO_InitWithNormalizedMonLevels(v2, fieldSystem, param2);
sub_0202F1F8(fieldSystem->saveData, 11, &v3);
FieldBattleDTO_InitWithNormalizedMonLevels(dto, fieldSystem, normalizedLevel);
sub_0202F1F8(fieldSystem->saveData, HEAP_ID_FIELDMAP, &recordingResultCode);
dto->unk_18A = v5;
v2->unk_18A = v5;
encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
encounter->unk_0C = param1;
v1 = NewEncounter(v2, EncEffects_CutInEffect(v2), EncEffects_BGM(v2), NULL);
v1->unk_0C = param1;
FieldTask_InitCall(taskMan, FieldTask_WiFiEncounter, v1);
FieldTask_InitCall(task, FieldTask_WiFiEncounter, encounter);
}
static BOOL FieldTask_UnionRoomEncounter(FieldTask *task)
static BOOL FieldTask_LinkEncounterWithRecording(FieldTask *task)
{
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
Encounter *encounter = FieldTask_GetEnv(task);
@ -892,38 +860,30 @@ static BOOL FieldTask_UnionRoomEncounter(FieldTask *task)
return FALSE;
}
void sub_020517E8(FieldSystem *fieldSystem, const u8 *param1, int param2)
void Encounter_NewVsLinkWithRecording(FieldSystem *fieldSystem, const u8 *partyOrder, int battleType)
{
Encounter *v0;
FieldBattleDTO *v1;
int v2;
FieldBattleDTO *dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
FieldBattleDTO_InitWithPartyOrderFromSave(dto, fieldSystem, partyOrder);
v1 = FieldBattleDTO_New(11, param2);
int recordingResultCode;
sub_0202F1F8(fieldSystem->saveData, HEAP_ID_FIELDMAP, &recordingResultCode);
dto->unk_18A = sub_020516C8(fieldSystem->unk_B0, battleType);
FieldBattleDTO_InitWithPartyOrderFromSave(v1, fieldSystem, param1);
sub_0202F1F8(fieldSystem->saveData, 11, &v2);
v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2);
v0 = NewEncounter(v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_UnionRoomEncounter, v0);
Encounter *encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_LinkEncounterWithRecording, encounter);
}
void sub_0205184C(FieldSystem *fieldSystem, const Party *param1, int param2)
void Encounter_NewVsLinkWithRecordingAndParty(FieldSystem *fieldSystem, const Party *party, int battleType)
{
Encounter *v0;
FieldBattleDTO *v1;
int v2;
FieldBattleDTO *dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, battleType);
FieldBattleDTO_InitWithPartyOrder(dto, fieldSystem, party, NULL);
v1 = FieldBattleDTO_New(11, param2);
int recordingResultCode;
sub_0202F1F8(fieldSystem->saveData, HEAP_ID_FIELDMAP, &recordingResultCode);
dto->unk_18A = sub_020516C8(fieldSystem->unk_B0, battleType);
FieldBattleDTO_InitWithPartyOrder(v1, fieldSystem, param1, NULL);
sub_0202F1F8(fieldSystem->saveData, 11, &v2);
v1->unk_18A = sub_020516C8(fieldSystem->unk_B0, param2);
v0 = NewEncounter(v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_UnionRoomEncounter, v0);
Encounter *encounter = NewEncounter(dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), NULL);
FieldSystem_CreateTask(fieldSystem, FieldTask_LinkEncounterWithRecording, encounter);
}
static void UpdateGameRecords(FieldSystem *fieldSystem, FieldBattleDTO *dto)
@ -1017,34 +977,27 @@ static void UpdateJournal(FieldSystem *fieldSystem, FieldBattleDTO *dto)
}
}
void sub_02051ABC(FieldTask *taskMan, u16 param1, u8 param2, int *param3, BOOL param4)
void Encounter_NewVsGiratinaOrigin(FieldTask *task, u16 species, u8 level, int *resultMaskPtr, BOOL isLegendary)
{
Encounter *v0;
FieldBattleDTO *v1;
FieldSystem *fieldSystem;
fieldSystem = FieldTask_GetFieldSystem(taskMan);
FieldBattleDTO *dto;
FieldSystem *fieldSystem = FieldTask_GetFieldSystem(task);
RadarChain_Clear(fieldSystem->chain);
v1 = FieldBattleDTO_New(11, (0x0 | 0x0));
FieldBattleDTO_Init(v1, fieldSystem);
dto = FieldBattleDTO_New(HEAP_ID_FIELDMAP, BATTLE_TYPE_WILD_MON);
FieldBattleDTO_Init(dto, fieldSystem);
ov6_022420D4(fieldSystem, param1, param2, v1);
ov6_022420D4(fieldSystem, species, level, dto);
{
Pokemon *v3;
Pokemon *wildMon = Party_GetPokemonBySlotIndex(dto->parties[BATTLER_ENEMY_SLOT_1], 0);
Pokemon_SetGiratinaOriginForm(wildMon);
v3 = Party_GetPokemonBySlotIndex(v1->parties[1], 0);
Pokemon_SetGiratinaOriginForm(v3);
if (isLegendary) {
dto->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
}
if (param4) {
v1->battleStatusMask |= BATTLE_STATUS_LEGENDARY;
}
v1->battleStatusMask |= BATTLE_STATUS_GIRATINA | BATTLE_STATUS_DISTORTION;
v1->terrain = TERRAIN_GIRATINA;
dto->battleStatusMask |= BATTLE_STATUS_GIRATINA | BATTLE_STATUS_DISTORTION;
dto->terrain = TERRAIN_GIRATINA;
GameRecords_IncrementRecordValue(SaveData_GetGameRecordsPtr(fieldSystem->saveData), RECORD_UNK_007);
StartEncounter(taskMan, v1, EncEffects_CutInEffect(v1), EncEffects_BGM(v1), param3);
StartEncounter(task, dto, EncEffects_CutInEffect(dto), EncEffects_BGM(dto), resultMaskPtr);
}

View File

@ -536,9 +536,9 @@ static void sub_02059D58(void)
sub_020389A0(v2);
if (sFieldCommMan->party == NULL) {
sub_020517E8(sFieldCommMan->fieldSystem, v2, v1);
Encounter_NewVsLinkWithRecording(sFieldCommMan->fieldSystem, v2, v1);
} else {
sub_0205184C(sFieldCommMan->fieldSystem, sFieldCommMan->party, v1);
Encounter_NewVsLinkWithRecordingAndParty(sFieldCommMan->fieldSystem, sFieldCommMan->party, v1);
Heap_FreeToHeap(sFieldCommMan->party);
sFieldCommMan->party = NULL;
}

View File

@ -548,7 +548,7 @@ static BOOL Field_CheckWildEncounter(FieldSystem *fieldSystem)
if (SystemFlag_CheckInPalPark(SaveData_GetVarsFlags(fieldSystem->saveData)) == TRUE) {
if (sub_02056374(fieldSystem, playerX, playerZ) == TRUE) {
sub_02051450(fieldSystem, sub_0205639C(fieldSystem));
Encounter_NewVsPalParkTransfer(fieldSystem, sub_0205639C(fieldSystem));
return TRUE;
} else {
return FALSE;

View File

@ -892,7 +892,7 @@ static BOOL ov5_021E0560(FieldTask *param0)
if (ov6_022413E4(fieldSystem, &v9) == 1) {
PlayerAvatar_SetInDeepSwamp(v0->playerAvatar, 1);
ov5_021E1134(v0);
sub_02050E78(fieldSystem, param0, v9);
Encounter_StartVsWild(fieldSystem, param0, v9);
return 0;
}
}

View File

@ -123,7 +123,7 @@ BOOL ov5_021F08F8(FieldTask *taskMan)
GameRecords_IncrementRecordValue(v4, RECORD_UNK_010);
}
sub_02050E78(fieldSystem, taskMan, v1->unk_10);
Encounter_StartVsWild(fieldSystem, taskMan, v1->unk_10);
Heap_FreeToHeap(v1);
return 0;

View File

@ -301,7 +301,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
FieldBattleDTO_Init(battleParams, fieldSystem);
ov6_0224239C(encounterFieldParams.trainerID, v17, battleParams);
RadarChain_Clear(fieldSystem->chain);
sub_02050E10(fieldSystem, battleParams);
Encounter_NewVsWild(fieldSystem, battleParams);
return TRUE;
} else {
return FALSE;
@ -358,7 +358,7 @@ BOOL ov6_02240D5C(FieldSystem *fieldSystem)
}
if (v7) {
sub_02050E10(fieldSystem, battleParams);
Encounter_NewVsWild(fieldSystem, battleParams);
} else {
v6 = FALSE;
}
@ -492,7 +492,7 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1)
FieldBattleDTO_Init(battleParams, fieldSystem);
ov6_0224239C(encounterFieldParams.trainerID, v15, battleParams);
RadarChain_Clear(fieldSystem->chain);
sub_02050E78(fieldSystem, param1, battleParams);
Encounter_StartVsWild(fieldSystem, param1, battleParams);
return TRUE;
}
}
@ -543,7 +543,7 @@ BOOL ov6_022411C8(FieldSystem *fieldSystem, FieldTask *param1)
}
if (v8) {
sub_02050E78(fieldSystem, param1, battleParams);
Encounter_StartVsWild(fieldSystem, param1, battleParams);
} else {
GF_ASSERT(FALSE);
}

View File

@ -4,6 +4,8 @@
#include <nitro/code16.h>
#include <string.h>
#include "constants/battle.h"
#include "constants/heap.h"
#include "constants/overworld_weather.h"
#include "constants/species.h"
#include "consts/scrcmd.h"
@ -427,7 +429,7 @@ static BOOL ScrCmd_0F3(ScriptContext *ctx);
static BOOL sub_0204300C(ScriptContext *ctx);
static BOOL ScrCmd_0F4(ScriptContext *ctx);
static BOOL ScrCmd_0F5(ScriptContext *ctx);
static BOOL ScrCmd_0F6(ScriptContext *ctx);
static BOOL ScrCmd_StartLinkBattle(ScriptContext *ctx);
static BOOL ScrCmd_0F7(ScriptContext *ctx);
static BOOL ScrCmd_11B(ScriptContext *ctx);
static BOOL ScrCmd_11C(ScriptContext *ctx);
@ -438,14 +440,14 @@ static BOOL ScrCmd_120(ScriptContext *ctx);
static BOOL ScrCmd_121(ScriptContext *ctx);
static BOOL ScrCmd_122(ScriptContext *ctx);
static BOOL ScrCmd_123(ScriptContext *ctx);
static BOOL ScrCmd_124(ScriptContext *ctx);
static BOOL ScrCmd_2BD(ScriptContext *ctx);
static BOOL ScrCmd_318(ScriptContext *ctx);
static BOOL ScrCmd_125(ScriptContext *ctx);
static BOOL ScrCmd_126(ScriptContext *ctx);
static BOOL ScrCmd_StartWildBattle(ScriptContext *ctx);
static BOOL ScrCmd_StartLegendaryBattle(ScriptContext *ctx);
static BOOL ScrCmd_StartFatefulEncounter(ScriptContext *ctx);
static BOOL ScrCmd_StartFirstBattle(ScriptContext *ctx);
static BOOL ScrCmd_StartCatchingTutorial(ScriptContext *ctx);
static BOOL ScrCmd_127(ScriptContext *ctx);
static BOOL ScrCmd_128(ScriptContext *ctx);
static BOOL ScrCmd_129(ScriptContext *ctx);
static BOOL ScrCmd_StartHoneyTreeBattle(ScriptContext *ctx);
static BOOL ScrCmd_12A(ScriptContext *ctx);
static BOOL ScrCmd_12B(ScriptContext *ctx);
static BOOL ScrCmd_CheckSaveType(ScriptContext *ctx);
@ -729,7 +731,7 @@ static BOOL ScrCmd_311(ScriptContext *ctx);
static BOOL ScrCmd_312(ScriptContext *ctx);
static BOOL ScrCmd_31F(ScriptContext *ctx);
static BOOL ScrCmd_313(ScriptContext *ctx);
static BOOL ScrCmd_319(ScriptContext *ctx);
static BOOL ScrCmd_StartGiratinaOriginBattle(ScriptContext *ctx);
static BOOL ScrCmd_31A(ScriptContext *ctx);
static BOOL ScrCmd_320(ScriptContext *ctx);
static BOOL ScrCmd_321(ScriptContext *ctx);
@ -992,7 +994,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_0E2,
ScrCmd_0E3,
ScrCmd_0E4,
ScrCmd_0E5,
ScrCmd_StartTrainerBattle,
ScrCmd_0E6,
ScrCmd_0E7,
ScrCmd_0E8,
@ -1002,14 +1004,14 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_CheckWonBattle,
ScrCmd_CheckLostBattle,
ScrCmd_0EE,
ScrCmd_0EF,
ScrCmd_StartDummyTrainerBattle,
ScrCmd_0F0,
ScrCmd_0F1,
ScrCmd_0F2,
ScrCmd_0F3,
ScrCmd_0F4,
ScrCmd_0F5,
ScrCmd_0F6,
ScrCmd_StartLinkBattle,
ScrCmd_0F7,
ScrCmd_0F8,
ScrCmd_0F9,
@ -1055,12 +1057,12 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_121,
ScrCmd_122,
ScrCmd_123,
ScrCmd_124,
ScrCmd_125,
ScrCmd_126,
ScrCmd_StartWildBattle,
ScrCmd_StartFirstBattle,
ScrCmd_StartCatchingTutorial,
ScrCmd_127,
ScrCmd_128,
ScrCmd_129,
ScrCmd_StartHoneyTreeBattle,
ScrCmd_12A,
ScrCmd_12B,
ScrCmd_CheckSaveType,
@ -1435,7 +1437,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_29D,
ScrCmd_29E,
ScrCmd_29F,
ScrCmd_2A0,
ScrCmd_StartTagBattle,
ScrCmd_2A1,
ScrCmd_2A2,
ScrCmd_2A3,
@ -1464,7 +1466,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_2BA,
ScrCmd_2BB,
ScrCmd_CheckDidNotCapture,
ScrCmd_2BD,
ScrCmd_StartLegendaryBattle,
ScrCmd_2BE,
ScrCmd_2BF,
ScrCmd_2C0,
@ -1555,8 +1557,8 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_315,
ScrCmd_316,
ScrCmd_GetPlayer3DPos,
ScrCmd_318,
ScrCmd_319,
ScrCmd_StartFatefulEncounter,
ScrCmd_StartGiratinaOriginBattle,
ScrCmd_31A,
ScrCmd_31B,
ScrCmd_31C,
@ -4914,20 +4916,18 @@ static BOOL ScrCmd_0F5(ScriptContext *ctx)
return 1;
}
static BOOL ScrCmd_0F6(ScriptContext *ctx)
static BOOL ScrCmd_StartLinkBattle(ScriptContext *ctx)
{
PartyManagementData *v0;
void **v1;
PartyManagementData *partyManagementData;
void **partyManagementDataPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
partyManagementData = *partyManagementDataPtr;
v1 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, 19);
v0 = *v1;
Encounter_NewVsLink(ctx->fieldSystem->task, partyManagementData->unk_2C, BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER);
Heap_FreeToHeap(partyManagementData);
sub_0205167C(ctx->fieldSystem->task, v0->unk_2C, (0x4 | 0x1));
Heap_FreeToHeap(v0);
*partyManagementDataPtr = NULL;
*v1 = NULL;
return 1;
return TRUE;
}
static BOOL ScrCmd_0F7(ScriptContext *ctx)
@ -5035,62 +5035,60 @@ static BOOL ScrCmd_123(ScriptContext *ctx)
return 0;
}
static BOOL ScrCmd_124(ScriptContext *ctx)
static BOOL ScrCmd_StartWildBattle(ScriptContext *ctx)
{
BOOL *v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v1 = ScriptContext_GetVar(ctx);
u8 v2 = (u8)ScriptContext_GetVar(ctx);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 species = ScriptContext_GetVar(ctx);
u8 level = (u8)ScriptContext_GetVar(ctx);
sub_02051270(ctx->task, v1, v2, v0, 0);
return 1;
Encounter_NewVsSpeciesAtLevel(ctx->task, species, level, battleResultMaskPtr, FALSE);
return TRUE;
}
static BOOL ScrCmd_2BD(ScriptContext *ctx)
static BOOL ScrCmd_StartLegendaryBattle(ScriptContext *ctx)
{
BOOL *v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v1 = ScriptContext_GetVar(ctx);
u8 v2 = (u8)ScriptContext_GetVar(ctx);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 species = ScriptContext_GetVar(ctx);
u8 level = (u8)ScriptContext_GetVar(ctx);
sub_02051270(ctx->task, v1, v2, v0, 1);
return 1;
Encounter_NewVsSpeciesAtLevel(ctx->task, species, level, battleResultMaskPtr, TRUE);
return TRUE;
}
static BOOL ScrCmd_319(ScriptContext *ctx)
static BOOL ScrCmd_StartGiratinaOriginBattle(ScriptContext *ctx)
{
BOOL *v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v1 = ScriptContext_GetVar(ctx);
u8 v2 = (u8)ScriptContext_GetVar(ctx);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 species = ScriptContext_GetVar(ctx);
u8 level = (u8)ScriptContext_GetVar(ctx);
sub_02051ABC(ctx->task, v1, v2, v0, 1);
return 1;
Encounter_NewVsGiratinaOrigin(ctx->task, species, level, battleResultMaskPtr, TRUE);
return TRUE;
}
static BOOL ScrCmd_318(ScriptContext *ctx)
static BOOL ScrCmd_StartFatefulEncounter(ScriptContext *ctx)
{
BOOL *v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v1 = ScriptContext_GetVar(ctx);
u8 v2 = (u8)ScriptContext_GetVar(ctx);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 species = ScriptContext_GetVar(ctx);
u8 level = (u8)ScriptContext_GetVar(ctx);
sub_020512E4(ctx->task, v1, v2, v0, 1);
return 1;
Encounter_NewFatefulVsSpeciesAtLevel(ctx->task, species, level, battleResultMaskPtr, TRUE);
return TRUE;
}
static BOOL ScrCmd_125(ScriptContext *ctx)
static BOOL ScrCmd_StartFirstBattle(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
BOOL *v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v2 = ScriptContext_GetVar(ctx);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 trainerID = ScriptContext_GetVar(ctx);
sub_02051480(ctx->task, v2, 11, v1);
return 1;
Encounter_NewVsFirstBattle(ctx->task, trainerID, HEAP_ID_FIELDMAP, battleResultMaskPtr);
return TRUE;
}
static BOOL ScrCmd_126(ScriptContext *ctx)
static BOOL ScrCmd_StartCatchingTutorial(ScriptContext *ctx)
{
sub_02051590(ctx->task);
return 1;
Encounter_NewCatchingTutorial(ctx->task);
return TRUE;
}
static BOOL ScrCmd_127(ScriptContext *ctx)
@ -5110,13 +5108,12 @@ static BOOL ScrCmd_128(ScriptContext *ctx)
return 0;
}
static BOOL ScrCmd_129(ScriptContext *ctx)
static BOOL ScrCmd_StartHoneyTreeBattle(ScriptContext *ctx)
{
FieldSystem *fieldSystem = ctx->fieldSystem;
BOOL *v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
sub_0205120C(ctx->task, v1);
return 1;
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
Encounter_NewVsHoneyTree(ctx->task, battleResultMaskPtr);
return TRUE;
}
static BOOL ScrCmd_12A(ScriptContext *ctx)

View File

@ -352,8 +352,8 @@ void *ScriptManager_GetMemberPtr(ScriptManager *scriptManager, u32 member)
return &scriptManager->tmpBuf;
case SCRIPT_MANAGER_SAVING_ICON:
return &scriptManager->savingIcon;
case 19:
return &scriptManager->unk_A8;
case SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA:
return &scriptManager->partyManagementDataPtr;
case SCRIPT_MANAGER_DATA_PTR:
return &scriptManager->dataPtr;
case 21:

View File

@ -22,34 +22,34 @@
#include "trainer_data.h"
#include "unk_0201D15C.h"
static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, int heapID);
static void TrainerData_BuildParty(FieldBattleDTO *dto, int battler, int heapID);
void TrainerData_Encounter(FieldBattleDTO *battleParams, const SaveData *save, int heapID)
void TrainerData_Encounter(FieldBattleDTO *dto, const SaveData *save, int heapID)
{
TrainerData trdata;
MessageLoader *msgLoader = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, 618, heapID);
const charcode_t *rivalName = MiscSaveBlock_RivalName(SaveData_MiscSaveBlockConst(save));
for (int i = 0; i < MAX_BATTLERS; i++) {
if (!battleParams->trainerIDs[i]) {
if (!dto->trainerIDs[i]) {
continue;
}
TrainerData_Load(battleParams->trainerIDs[i], &trdata);
battleParams->trainerData[i] = trdata;
TrainerData_Load(dto->trainerIDs[i], &trdata);
dto->trainerData[i] = trdata;
if (trdata.class == TRAINER_CLASS_RIVAL) {
CharCode_Copy(battleParams->trainerData[i].name, rivalName);
CharCode_Copy(dto->trainerData[i].name, rivalName);
} else {
Strbuf *trainerName = MessageLoader_GetNewStrbuf(msgLoader, battleParams->trainerIDs[i]);
Strbuf_ToChars(trainerName, battleParams->trainerData[i].name, TRAINER_NAME_LEN + 1);
Strbuf *trainerName = MessageLoader_GetNewStrbuf(msgLoader, dto->trainerIDs[i]);
Strbuf_ToChars(trainerName, dto->trainerData[i].name, TRAINER_NAME_LEN + 1);
Strbuf_Free(trainerName);
}
TrainerData_BuildParty(battleParams, i, heapID);
TrainerData_BuildParty(dto, i, heapID);
}
battleParams->battleType |= trdata.battleType;
dto->battleType |= trdata.battleType;
MessageLoader_Free(msgLoader);
}
@ -170,11 +170,11 @@ u8 TrainerClass_Gender(int trclass)
/**
* @brief Build the party for a trainer as loaded in the FieldBattleDTO struct.
*
* @param battleParams The parent FieldBattleDTO struct containing trainer data.
* @param dto The parent FieldBattleDTO struct containing trainer data.
* @param battler Which battler's party is to be loaded.
* @param heapID Heap on which to perform any allocations.
*/
static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, int heapID)
static void TrainerData_BuildParty(FieldBattleDTO *dto, int battler, int heapID)
{
// must make declarations C89-style to match
void *buf;
@ -186,28 +186,28 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
oldSeed = LCRNG_GetSeed();
// alloc enough space to support the maximum possible data size
Party_InitWithCapacity(battleParams->parties[battler], MAX_PARTY_SIZE);
Party_InitWithCapacity(dto->parties[battler], MAX_PARTY_SIZE);
buf = Heap_AllocFromHeap(heapID, sizeof(TrainerMonWithMovesAndItem) * MAX_PARTY_SIZE);
mon = Pokemon_New(heapID);
TrainerData_LoadParty(battleParams->trainerIDs[battler], buf);
TrainerData_LoadParty(dto->trainerIDs[battler], buf);
// determine which magic gender-specific modifier to use for the RNG function
genderMod = TrainerClass_Gender(battleParams->trainerData[battler].class) == GENDER_FEMALE
genderMod = TrainerClass_Gender(dto->trainerData[battler].class) == GENDER_FEMALE
? 120
: 136;
switch (battleParams->trainerData[battler].type) {
switch (dto->trainerData[battler].type) {
case TRDATATYPE_BASE: {
TrainerMonBase *trmon = (TrainerMonBase *)buf;
for (i = 0; i < battleParams->trainerData[battler].partySize; i++) {
for (i = 0; i < dto->trainerData[battler].partySize; i++) {
u16 species = trmon[i].species & 0x3FF;
u8 form = (trmon[i].species & 0xFC00) >> 10;
rnd = trmon[i].dv + trmon[i].level + species + battleParams->trainerIDs[battler];
rnd = trmon[i].dv + trmon[i].level + species + dto->trainerIDs[battler];
LCRNG_SetSeed(rnd);
for (j = 0; j < battleParams->trainerData[battler].class; j++) {
for (j = 0; j < dto->trainerData[battler].class; j++) {
rnd = LCRNG_Next();
}
@ -217,7 +217,7 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
Pokemon_InitWith(mon, species, trmon[i].level, ivs, TRUE, rnd, OTID_NOT_SHINY, 0);
Pokemon_SetBallSeal(trmon[i].cbSeal, mon, heapID);
Pokemon_SetValue(mon, MON_DATA_FORM, &form);
Party_AddPokemon(battleParams->parties[battler], mon);
Party_AddPokemon(dto->parties[battler], mon);
}
break;
@ -225,14 +225,14 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
case TRDATATYPE_WITH_MOVES: {
TrainerMonWithMoves *trmon = (TrainerMonWithMoves *)buf;
for (i = 0; i < battleParams->trainerData[battler].partySize; i++) {
for (i = 0; i < dto->trainerData[battler].partySize; i++) {
u16 species = trmon[i].species & 0x3FF;
u8 form = (trmon[i].species & 0xFC00) >> 10;
rnd = trmon[i].dv + trmon[i].level + species + battleParams->trainerIDs[battler];
rnd = trmon[i].dv + trmon[i].level + species + dto->trainerIDs[battler];
LCRNG_SetSeed(rnd);
for (j = 0; j < battleParams->trainerData[battler].class; j++) {
for (j = 0; j < dto->trainerData[battler].class; j++) {
rnd = LCRNG_Next();
}
@ -247,7 +247,7 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
Pokemon_SetBallSeal(trmon[i].cbSeal, mon, heapID);
Pokemon_SetValue(mon, MON_DATA_FORM, &form);
Party_AddPokemon(battleParams->parties[battler], mon);
Party_AddPokemon(dto->parties[battler], mon);
}
break;
@ -255,14 +255,14 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
case TRDATATYPE_WITH_ITEM: {
TrainerMonWithItem *trmon = (TrainerMonWithItem *)buf;
for (i = 0; i < battleParams->trainerData[battler].partySize; i++) {
for (i = 0; i < dto->trainerData[battler].partySize; i++) {
u16 species = trmon[i].species & 0x3FF;
u8 form = (trmon[i].species & 0xFC00) >> 10;
rnd = trmon[i].dv + trmon[i].level + species + battleParams->trainerIDs[battler];
rnd = trmon[i].dv + trmon[i].level + species + dto->trainerIDs[battler];
LCRNG_SetSeed(rnd);
for (j = 0; j < battleParams->trainerData[battler].class; j++) {
for (j = 0; j < dto->trainerData[battler].class; j++) {
rnd = LCRNG_Next();
}
@ -273,7 +273,7 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
Pokemon_SetValue(mon, MON_DATA_HELD_ITEM, &trmon[i].item);
Pokemon_SetBallSeal(trmon[i].cbSeal, mon, heapID);
Pokemon_SetValue(mon, MON_DATA_FORM, &form);
Party_AddPokemon(battleParams->parties[battler], mon);
Party_AddPokemon(dto->parties[battler], mon);
}
break;
@ -281,14 +281,14 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
case TRDATATYPE_WITH_MOVES_AND_ITEM: {
TrainerMonWithMovesAndItem *trmon = (TrainerMonWithMovesAndItem *)buf;
for (i = 0; i < battleParams->trainerData[battler].partySize; i++) {
for (i = 0; i < dto->trainerData[battler].partySize; i++) {
u16 species = trmon[i].species & 0x3FF;
u8 form = (trmon[i].species & 0xFC00) >> 10;
rnd = trmon[i].dv + trmon[i].level + species + battleParams->trainerIDs[battler];
rnd = trmon[i].dv + trmon[i].level + species + dto->trainerIDs[battler];
LCRNG_SetSeed(rnd);
for (j = 0; j < battleParams->trainerData[battler].class; j++) {
for (j = 0; j < dto->trainerData[battler].class; j++) {
rnd = LCRNG_Next();
}
@ -304,7 +304,7 @@ static void TrainerData_BuildParty(FieldBattleDTO *battleParams, int battler, in
Pokemon_SetBallSeal(trmon[i].cbSeal, mon, heapID);
Pokemon_SetValue(mon, MON_DATA_FORM, &form);
Party_AddPokemon(battleParams->parties[battler], mon);
Party_AddPokemon(dto->parties[battler], mon);
}
break;

View File

@ -1,6 +1,8 @@
#include <nitro.h>
#include <string.h>
#include "constants/heap.h"
#include "struct_decls/struct_0205E884_decl.h"
#include "struct_decls/struct_02061AB4_decl.h"
@ -28,15 +30,15 @@ BOOL ScrCmd_0B7(ScriptContext *param0);
BOOL ScrCmd_0B8(ScriptContext *param0);
BOOL ScrCmd_0B9(ScriptContext *param0);
BOOL ScrCmd_0E4(ScriptContext *param0);
BOOL ScrCmd_0E5(ScriptContext *param0);
BOOL ScrCmd_2A0(ScriptContext *param0);
BOOL ScrCmd_StartTrainerBattle(ScriptContext *ctx);
BOOL ScrCmd_StartTagBattle(ScriptContext *ctx);
BOOL ScrCmd_0E7(ScriptContext *param0);
BOOL ScrCmd_0E8(ScriptContext *param0);
BOOL ScrCmd_0E9(ScriptContext *param0);
BOOL ScrCmd_0EA(ScriptContext *param0);
BOOL ScrCmd_0EB(ScriptContext *param0);
BOOL ScrCmd_0EE(ScriptContext *param0);
BOOL ScrCmd_0EF(ScriptContext *param0);
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *ctx);
BOOL ScrCmd_0F0(ScriptContext *param0);
BOOL ScrCmd_0F1(ScriptContext *param0);
BOOL ScrCmd_314(ScriptContext *param0);
@ -136,36 +138,43 @@ BOOL ScrCmd_0E4(ScriptContext *param0)
return 0;
}
BOOL ScrCmd_0E5(ScriptContext *param0)
BOOL ScrCmd_StartTrainerBattle(ScriptContext *ctx)
{
u32 v0;
FieldSystem *fieldSystem = param0->fieldSystem;
u16 *v2 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_SCRIPT_ID);
BOOL *v3 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v4 = ScriptContext_GetVar(param0);
u16 v5 = ScriptContext_GetVar(param0);
u16 v6;
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 *scriptIDPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_SCRIPT_ID);
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 enemyTrainer1 = ScriptContext_GetVar(ctx);
u16 enemyTrainer2 = ScriptContext_GetVar(ctx);
u16 partnerTrainer = 0;
v6 = 0;
if (SystemFlag_CheckHasPartner(SaveData_GetVarsFlags(param0->fieldSystem->saveData)) == 1) {
v6 = sub_0206B034(SaveData_GetVarsFlags(fieldSystem->saveData));
if (SystemFlag_CheckHasPartner(SaveData_GetVarsFlags(ctx->fieldSystem->saveData)) == TRUE) {
partnerTrainer = sub_0206B034(SaveData_GetVarsFlags(fieldSystem->saveData));
}
sub_020515CC(param0->task, v4, v5, v6, 11, v3);
return 1;
Encounter_NewVsTrainer(ctx->task,
enemyTrainer1,
enemyTrainer2,
partnerTrainer,
HEAP_ID_FIELDMAP,
battleResultMaskPtr);
return TRUE;
}
BOOL ScrCmd_2A0(ScriptContext *param0)
BOOL ScrCmd_StartTagBattle(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
BOOL *v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 v2 = ScriptContext_GetVar(param0);
u16 v3 = ScriptContext_GetVar(param0);
u16 v4 = ScriptContext_GetVar(param0);
FieldSystem *fieldSystem = ctx->fieldSystem;
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 partnerTrainer = ScriptContext_GetVar(ctx);
u16 enemyTrainer1 = ScriptContext_GetVar(ctx);
u16 enemyTrainer2 = ScriptContext_GetVar(ctx);
sub_020515CC(param0->task, v3, v4, v2, 11, v1);
return 1;
Encounter_NewVsTrainer(ctx->task,
enemyTrainer1,
enemyTrainer2,
partnerTrainer,
HEAP_ID_FIELDMAP,
battleResultMaskPtr);
return TRUE;
}
BOOL ScrCmd_0E7(ScriptContext *param0)
@ -296,14 +305,12 @@ BOOL ScrCmd_0EE(ScriptContext *param0)
return 0;
}
BOOL ScrCmd_0EF(ScriptContext *param0)
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *param0)
{
FieldSystem *fieldSystem = param0->fieldSystem;
BOOL *v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
sub_020515CC(param0->task, 1, 0, 0, 11, v1);
return 1;
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
Encounter_NewVsTrainer(param0->task, 1, 0, 0, HEAP_ID_FIELDMAP, battleResultMaskPtr);
return TRUE;
}
BOOL ScrCmd_0F0(ScriptContext *param0)

View File

@ -174,7 +174,7 @@ static BOOL sub_0207DA28(FieldTask *param0)
}
break;
case 4:
sub_020516F4(param0, v2->unk_00->unk_08, v2->unk_0C, v2->unk_0D);
Encounter_NewVsWiFi(param0, v2->unk_00->unk_08, v2->unk_0C, v2->unk_0D);
v2->unk_04++;
break;
case 5: