Document unk_02048614.c, renamed to scrcmd_trainer.c (#685)

Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
Co-authored-by: notmyname <notanemail@gmail.com>
This commit is contained in:
Viperio 2025-08-17 06:06:26 +02:00 committed by GitHub
parent 4dbc761167
commit acd2b1dca3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 182 additions and 181 deletions

View File

@ -31,6 +31,7 @@
#include "constants/map_object.h"
#include "constants/savedata/vars_flags.h"
#include "constants/scrcmd.h"
#include "constants/battle.h"
#include "macros/movement.inc"
@ -1095,26 +1096,26 @@
.short 181
.endm
.macro ScrCmd_0B6 arg0
.macro ScrCmd_0B6 approachNum
.short 182
.short \arg0
.short \approachNum
.endm
.macro ScrCmd_0B7 arg0, arg1
.macro CheckIsApproachingTrainerTaskDone approachNum, destVar
.short 183
.short \arg0
.short \arg1
.short \approachNum
.short \destVar
.endm
.macro ScrCmd_0B8 arg0
.macro ScrCmd_0B8 destVar
.short 184
.short \arg0
.short \destVar
.endm
.macro ScrCmd_0B9 arg0, arg1
.macro GetApproachingTrainerID approachNum, destVar
.short 185
.short \arg0
.short \arg1
.short \approachNum
.short \destVar
.endm
.macro ScrCmd_Unused_0BA arg0
@ -1415,13 +1416,13 @@
.short 239
.endm
.macro ScrCmd_0F0
.macro SetTargetTrainerDefeated
.short 240
.endm
.macro ScrCmd_0F1 arg0
.macro GoToIfTargetTrainerDefeated offset
.short 241
.long \arg0-.-4
.long \offset-.-4
.endm
.macro ScrCmd_0F2 arg0, arg1, arg2, arg3
@ -4506,9 +4507,9 @@
CheckHeapMemory TRUE
.endm
.macro ScrCmd_314 arg0
.macro GetBattleResult destVar
.short 788
.short \arg0
.short \destVar
.endm
.macro ScrCmd_315 arg0

View File

@ -112,7 +112,7 @@ typedef struct ApproachingTrainer {
int direction;
int scriptID;
int trainerID;
int trainerType;
int unk_10;
MapObject *object;
SysTask *task;
} ApproachingTrainer;

View File

@ -3,10 +3,10 @@
#include "field_script_context.h"
BOOL ScrCmd_0B6(ScriptContext *param0);
BOOL ScrCmd_0B7(ScriptContext *param0);
BOOL ScrCmd_0B8(ScriptContext *param0);
BOOL ScrCmd_0B9(ScriptContext *param0);
BOOL ScrCmd_0B6(ScriptContext *ctx);
BOOL ScrCmd_CheckIsApproachingTrainerTaskDone(ScriptContext *ctx);
BOOL ScrCmd_0B8(ScriptContext *ctx);
BOOL ScrCmd_GetApproachingTrainerID(ScriptContext *ctx);
BOOL ScrCmd_GetTrainerID(ScriptContext *ctx);
BOOL ScrCmd_StartTrainerBattle(ScriptContext *ctx);
BOOL ScrCmd_StartTagBattle(ScriptContext *ctx);
@ -20,8 +20,8 @@ BOOL ScrCmd_CheckLostBattle(ScriptContext *ctx);
BOOL ScrCmd_CheckDidNotCapture(ScriptContext *ctx);
BOOL ScrCmd_CheckHasTwoAliveMons(ScriptContext *ctx);
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *ctx);
BOOL ScrCmd_0F0(ScriptContext *param0);
BOOL ScrCmd_0F1(ScriptContext *param0);
BOOL ScrCmd_314(ScriptContext *param0);
BOOL ScrCmd_SetTargetTrainerDefeated(ScriptContext *ctx);
BOOL ScrCmd_GoToIfTargetTrainerDefeated(ScriptContext *ctx);
BOOL ScrCmd_GetBattleResult(ScriptContext *ctx);
#endif // POKEPLATINUM_UNK_02048614_H

View File

@ -189,7 +189,7 @@ Static main
Object main.nef.p/src_unk_020474B8.c.o
Object main.nef.p/src_scrcmd_jubilife_lottery.c.o
Object main.nef.p/src_scrcmd_sound.c.o
Object main.nef.p/src_unk_02048614.c.o
Object main.nef.p/src_scrcmd_trainer.c.o
Object main.nef.p/src_unk_02048BD0.c.o
Object main.nef.p/src_unk_02048DD8.c.o
Object main.nef.p/src_unk_020494DC.c.o

View File

@ -70,12 +70,12 @@ _00C4:
StartGiratinaOriginBattle SPECIES_GIRATINA, 47
ClearFlag FLAG_UNK_0x008E
CheckWonBattle VAR_RESULT
ScrCmd_314 VAR_RESULT
GoToIfEq VAR_RESULT, 2, _0204
GoToIfEq VAR_RESULT, 3, _0204
GoToIfEq VAR_RESULT, 5, _014E
GoToIfEq VAR_RESULT, 6, _014E
GoToIfEq VAR_RESULT, 4, _016E
GetBattleResult VAR_RESULT
GoToIfEq VAR_RESULT, BATTLE_RESULT_LOSE, _0204
GoToIfEq VAR_RESULT, BATTLE_RESULT_DRAW, _0204
GoToIfEq VAR_RESULT, BATTLE_RESULT_PLAYER_FLED, _014E
GoToIfEq VAR_RESULT, BATTLE_RESULT_ENEMY_FLED, _014E
GoToIfEq VAR_RESULT, BATTLE_RESULT_CAPTURED_MON, _016E
ScrCmd_311 130
ScrCmd_311 129
ApplyMovement 129, _0250

View File

@ -1058,12 +1058,12 @@ _1054:
End
_1083:
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
PlayTrainerEncounterBGM VAR_0x8004
ScrCmd_0B6 0
Call _10DE
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
OpenMessage
PrintTrainerDialogue VAR_0x8004, TRMSG_PRE_BATTLE
@ -1071,30 +1071,30 @@ _1083:
StartTrainerBattle VAR_0x8004
CheckWonBattle VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _0FC5
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
SetTrainerFlag VAR_0x8004
ReleaseAll
End
_10DE:
ScrCmd_0B7 0, VAR_RESULT
GoToIfEq VAR_RESULT, 0, _10DE
CheckIsApproachingTrainerTaskDone 0, VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _10DE
Return
_10F3:
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
PlayTrainerEncounterBGM VAR_0x8004
ScrCmd_0B6 0
ScrCmd_0B6 1
Call _1178
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
OpenMessage
PrintTrainerDialogue VAR_0x8004, TRMSG_PRE_DOUBLE_BATTLE_1
CloseMessage
ScrCmd_0B9 1, VAR_RESULT
GetApproachingTrainerID 1, VAR_RESULT
SetVar VAR_0x8005, VAR_RESULT
OpenMessage
PrintTrainerDialogue VAR_0x8005, TRMSG_PRE_DOUBLE_BATTLE_2
@ -1102,39 +1102,39 @@ _10F3:
StartTrainerBattle VAR_0x8004, VAR_0x8005
CheckWonBattle VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _0FC5
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
SetTrainerFlag VAR_0x8004
ScrCmd_0B9 1, VAR_RESULT
GetApproachingTrainerID 1, VAR_RESULT
SetVar VAR_0x8005, VAR_RESULT
SetTrainerFlag VAR_0x8005
ReleaseAll
End
_1178:
ScrCmd_0B7 0, VAR_RESULT
GoToIfEq VAR_RESULT, 0, _1178
ScrCmd_0B7 1, VAR_RESULT
GoToIfEq VAR_RESULT, 0, _1178
CheckIsApproachingTrainerTaskDone 0, VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _1178
CheckIsApproachingTrainerTaskDone 1, VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _1178
Return
_11A0:
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
PlayTrainerEncounterBGM VAR_0x8004
ScrCmd_0B6 0
Call _123B
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
OpenMessage
PrintTrainerDialogue VAR_0x8004, TRMSG_PRE_BATTLE
CloseMessage
ScrCmd_0B9 1, VAR_RESULT
GetApproachingTrainerID 1, VAR_RESULT
SetVar VAR_0x8005, VAR_RESULT
PlayTrainerEncounterBGM VAR_0x8005
ScrCmd_0B6 1
Call _1250
ScrCmd_0B9 1, VAR_RESULT
GetApproachingTrainerID 1, VAR_RESULT
SetVar VAR_0x8005, VAR_RESULT
OpenMessage
PrintTrainerDialogue VAR_0x8005, TRMSG_PRE_BATTLE
@ -1142,23 +1142,23 @@ _11A0:
StartTrainerBattle VAR_0x8004, VAR_0x8005
CheckWonBattle VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _0FC5
ScrCmd_0B9 0, VAR_RESULT
GetApproachingTrainerID 0, VAR_RESULT
SetVar VAR_0x8004, VAR_RESULT
SetTrainerFlag VAR_0x8004
ScrCmd_0B9 1, VAR_RESULT
GetApproachingTrainerID 1, VAR_RESULT
SetVar VAR_0x8005, VAR_RESULT
SetTrainerFlag VAR_0x8005
ReleaseAll
End
_123B:
ScrCmd_0B7 0, VAR_RESULT
GoToIfEq VAR_RESULT, 0, _123B
CheckIsApproachingTrainerTaskDone 0, VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _123B
Return
_1250:
ScrCmd_0B7 1, VAR_RESULT
GoToIfEq VAR_RESULT, 0, _1250
CheckIsApproachingTrainerTaskDone 1, VAR_RESULT
GoToIfEq VAR_RESULT, FALSE, _1250
Return
.balign 4, 0

View File

@ -177,7 +177,7 @@ pokeplatinum_c = files(
'unk_020474B8.c',
'scrcmd_jubilife_lottery.c',
'scrcmd_sound.c',
'unk_02048614.c',
'scrcmd_trainer.c',
'unk_02048BD0.c',
'unk_02048DD8.c',
'unk_020494DC.c',

View File

@ -953,9 +953,9 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_StartChooseStarterScene,
ScrCmd_SaveChosenStarter,
ScrCmd_0B6,
ScrCmd_0B7,
ScrCmd_CheckIsApproachingTrainerTaskDone,
ScrCmd_0B8,
ScrCmd_0B9,
ScrCmd_GetApproachingTrainerID,
ScrCmd_Unused_0BA,
ScrCmd_0BB,
ScrCmd_FadeScreen,
@ -1010,8 +1010,8 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_CheckLostBattle,
ScrCmd_CheckHasTwoAliveMons,
ScrCmd_StartDummyTrainerBattle,
ScrCmd_0F0,
ScrCmd_0F1,
ScrCmd_SetTargetTrainerDefeated,
ScrCmd_GoToIfTargetTrainerDefeated,
ScrCmd_0F2,
ScrCmd_0F3,
ScrCmd_Unused_0F4,
@ -1558,7 +1558,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
ScrCmd_311,
ScrCmd_312,
ScrCmd_CheckHeapMemory,
ScrCmd_314,
ScrCmd_GetBattleResult,
ScrCmd_315,
ScrCmd_316,
ScrCmd_GetPlayer3DPos,

View File

@ -26,89 +26,89 @@
#include "unk_02067A84.h"
#include "vars_flags.h"
BOOL ScrCmd_0B6(ScriptContext *param0)
BOOL ScrCmd_0B6(ScriptContext *ctx)
{
int *v0;
int *v1;
int *v2;
int *sightRange;
int *scriptID;
int *trainerID;
int *v3;
int *v4;
SysTask **v5;
MapObject **v6;
int *direction;
SysTask **task;
MapObject **mapObj;
PlayerAvatar *playerAvatar;
FieldSystem *fieldSystem = param0->fieldSystem;
u16 v9 = ScriptContext_GetVar(param0);
FieldSystem *fieldSystem = ctx->fieldSystem;
u16 approachNum = ScriptContext_GetVar(ctx);
if (v9 == 0) {
v0 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_SIGHT_RANGE);
v4 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_DIRECTION);
v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_SCRIPT_ID);
v2 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_ID);
if (approachNum == 0) {
sightRange = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_SIGHT_RANGE);
direction = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_DIRECTION);
scriptID = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_SCRIPT_ID);
trainerID = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_ID);
v3 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_TYPE);
v6 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_MAP_OBJECT);
v5 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_TASK);
mapObj = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_MAP_OBJECT);
task = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_0_TASK);
} else {
v0 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_SIGHT_RANGE);
v4 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_DIRECTION);
v1 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_SCRIPT_ID);
v2 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_ID);
sightRange = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_SIGHT_RANGE);
direction = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_DIRECTION);
scriptID = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_SCRIPT_ID);
trainerID = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_ID);
v3 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_TYPE);
v6 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_MAP_OBJECT);
v5 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_TASK);
mapObj = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_MAP_OBJECT);
task = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TRAINER_1_TASK);
}
playerAvatar = fieldSystem->playerAvatar;
*v5 = sub_02067FB8(fieldSystem, *v6, playerAvatar, *v4, *v0, 0, *v3, v9);
*task = sub_02067FB8(fieldSystem, *mapObj, playerAvatar, *direction, *sightRange, 0, *v3, approachNum);
return 0;
return FALSE;
}
BOOL ScrCmd_0B7(ScriptContext *param0)
BOOL ScrCmd_CheckIsApproachingTrainerTaskDone(ScriptContext *ctx)
{
SysTask **v0;
u16 v1 = ScriptContext_GetVar(param0);
u16 *v2 = ScriptContext_GetVarPointer(param0);
SysTask **task;
u16 approachNum = ScriptContext_GetVar(ctx);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
*v2 = 0;
*destVar = FALSE;
if (v1 == 0) {
v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_TRAINER_0_TASK);
if (approachNum == 0) {
task = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_TRAINER_0_TASK);
} else {
v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_TRAINER_1_TASK);
task = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_TRAINER_1_TASK);
}
if (*v0 == NULL) {
*v2 = 1;
return 1;
if (*task == NULL) {
*destVar = TRUE;
return TRUE;
}
if (sub_02067FD4(*v0) == 1) {
sub_02067FE8(*v0);
*v0 = NULL;
*v2 = 1;
if (sub_02067FD4(*task) == 1) {
sub_02067FE8(*task);
*task = NULL;
*destVar = TRUE;
}
return 1;
return TRUE;
}
BOOL ScrCmd_0B8(ScriptContext *param0)
BOOL ScrCmd_0B8(ScriptContext *ctx)
{
u16 *v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_TRAINER_0_TYPE);
u16 *v1 = ScriptContext_GetVarPointer(param0);
u16 *v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_TRAINER_0_TYPE);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
*v1 = *v0;
return 0;
*destVar = *v0;
return FALSE;
}
BOOL ScrCmd_0B9(ScriptContext *param0)
BOOL ScrCmd_GetApproachingTrainerID(ScriptContext *ctx)
{
u16 *v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_TRAINER_0_ID);
u16 *v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_TRAINER_1_ID);
u16 v2 = ScriptContext_GetVar(param0);
u16 *v3 = ScriptContext_GetVarPointer(param0);
u16 *trainer0ID = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_TRAINER_0_ID);
u16 *trainer1ID = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_TRAINER_1_ID);
u16 approachNum = ScriptContext_GetVar(ctx);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
*v3 = (v2 == 0) ? (*v0) : (*v1);
return 0;
*destVar = approachNum == 0 ? *trainer0ID : *trainer1ID;
return FALSE;
}
BOOL ScrCmd_GetTrainerID(ScriptContext *ctx)
@ -128,7 +128,7 @@ BOOL ScrCmd_StartTrainerBattle(ScriptContext *ctx)
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 enemyTrainer1 = ScriptContext_GetVar(ctx);
u16 enemyTrainer2 = ScriptContext_GetVar(ctx);
u16 partnerTrainer = 0;
u16 partnerTrainer = TRAINER_NONE;
if (SystemFlag_CheckHasPartner(SaveData_GetVarsFlags(ctx->fieldSystem->saveData)) == TRUE) {
partnerTrainer = SystemVars_GetPartnerTrainerID(SaveData_GetVarsFlags(fieldSystem->saveData));
@ -288,49 +288,49 @@ BOOL ScrCmd_CheckHasTwoAliveMons(ScriptContext *ctx)
return FALSE;
}
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *param0)
BOOL ScrCmd_StartDummyTrainerBattle(ScriptContext *ctx)
{
FieldSystem *fieldSystem = param0->fieldSystem;
FieldSystem *fieldSystem = ctx->fieldSystem;
int *battleResultMaskPtr = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
Encounter_NewVsTrainer(param0->task, 1, 0, 0, HEAP_ID_FIELDMAP, battleResultMaskPtr);
Encounter_NewVsTrainer(ctx->task, TRAINER_YOUNGSTER_TRISTAN, TRAINER_NONE, TRAINER_NONE, HEAP_ID_FIELDMAP, battleResultMaskPtr);
return TRUE;
}
BOOL ScrCmd_0F0(ScriptContext *param0)
BOOL ScrCmd_SetTargetTrainerDefeated(ScriptContext *ctx)
{
MapObject **v0;
FieldSystem *fieldSystem = param0->fieldSystem;
MapObject **mapObj;
FieldSystem *fieldSystem = ctx->fieldSystem;
v0 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TARGET_OBJECT);
Script_SetTrainerDefeated(MapObject_FieldSystem(*v0), MapObject_GetLocalID(*v0));
mapObj = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TARGET_OBJECT);
Script_SetTrainerDefeated(MapObject_FieldSystem(*mapObj), MapObject_GetLocalID(*mapObj));
return 0;
return FALSE;
}
BOOL ScrCmd_0F1(ScriptContext *param0)
BOOL ScrCmd_GoToIfTargetTrainerDefeated(ScriptContext *ctx)
{
int v0;
s32 v1;
MapObject **v2;
FieldSystem *fieldSystem = param0->fieldSystem;
int isTrainerDefeated;
s32 offset;
MapObject **mapObj;
FieldSystem *fieldSystem = ctx->fieldSystem;
v2 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TARGET_OBJECT);
v1 = (s32)ScriptContext_ReadWord(param0);
v0 = Script_IsTrainerDefeated(MapObject_FieldSystem(*v2), MapObject_GetLocalID(*v2));
mapObj = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_TARGET_OBJECT);
offset = (s32)ScriptContext_ReadWord(ctx);
isTrainerDefeated = Script_IsTrainerDefeated(MapObject_FieldSystem(*mapObj), MapObject_GetLocalID(*mapObj));
if (v0 == 1) {
ScriptContext_Jump(param0, (u8 *)(param0->scriptPtr + v1));
return 1;
if (isTrainerDefeated == TRUE) {
ScriptContext_Jump(ctx, (u8 *)(ctx->scriptPtr + offset));
return TRUE;
}
return 0;
return FALSE;
}
BOOL ScrCmd_314(ScriptContext *param0)
BOOL ScrCmd_GetBattleResult(ScriptContext *ctx)
{
BOOL *v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 *v1 = ScriptContext_GetVarPointer(param0);
BOOL *battleResult = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_BATTLE_RESULT);
u16 *destVar = ScriptContext_GetVarPointer(ctx);
*v1 = *v0;
return 1;
*destVar = *battleResult;
return TRUE;
}

View File

@ -51,7 +51,7 @@ void ScriptManager_Set(FieldSystem *fieldSystem, u16 scriptID, MapObject *object
FieldSystem_CreateTask(fieldSystem, FieldTask_RunScript, scriptManager);
}
void ScriptManager_SetApproachingTrainer(FieldSystem *fieldSystem, MapObject *object, int sightRange, int direction, int scriptID, int trainerID, int trainerType, int approachNum)
void ScriptManager_SetApproachingTrainer(FieldSystem *fieldSystem, MapObject *object, int sightRange, int direction, int scriptID, int trainerID, int param6, int approachNum)
{
ScriptManager *scriptManager = FieldTask_GetEnv(fieldSystem->task);
ApproachingTrainer *trainer = &scriptManager->trainers[approachNum];
@ -60,7 +60,7 @@ void ScriptManager_SetApproachingTrainer(FieldSystem *fieldSystem, MapObject *ob
trainer->direction = direction;
trainer->scriptID = scriptID;
trainer->trainerID = trainerID;
trainer->trainerType = trainerType;
trainer->unk_10 = param6;
trainer->object = object;
}
@ -377,7 +377,7 @@ void *ScriptManager_GetMemberPtr(ScriptManager *scriptManager, u32 member)
return &trainer->trainerID;
case SCRIPT_MANAGER_TRAINER_0_TYPE:
trainer = &scriptManager->trainers[0];
return &trainer->trainerType;
return &trainer->unk_10;
case SCRIPT_MANAGER_TRAINER_0_MAP_OBJECT:
trainer = &scriptManager->trainers[0];
return &trainer->object;
@ -398,7 +398,7 @@ void *ScriptManager_GetMemberPtr(ScriptManager *scriptManager, u32 member)
return &trainer->trainerID;
case SCRIPT_MANAGER_TRAINER_1_TYPE:
trainer = &scriptManager->trainers[1];
return &trainer->trainerType;
return &trainer->unk_10;
case SCRIPT_MANAGER_TRAINER_1_MAP_OBJECT:
trainer = &scriptManager->trainers[1];
return &trainer->object;

View File

@ -40,14 +40,14 @@ typedef struct {
typedef struct {
int unk_00;
int unk_04;
int unk_08;
int unk_0C;
int direction;
int sightRange;
int unk_10;
int unk_14;
int unk_18;
int approachNum;
int unk_1C;
UnkStruct_ov101_021D5D90 *unk_20;
MapObject *unk_24;
MapObject *mapObj;
PlayerAvatar *playerAvatar;
FieldSystem *fieldSystem;
} UnkStruct_020EF6D0;
@ -395,9 +395,9 @@ int sub_02067F88(FieldSystem *fieldSystem, MapObject *param1)
return 0;
}
SysTask *sub_02067FB8(FieldSystem *fieldSystem, MapObject *param1, PlayerAvatar *playerAvatar, int param3, int param4, int param5, int param6, int param7)
SysTask *sub_02067FB8(FieldSystem *fieldSystem, MapObject *mapObj, PlayerAvatar *playerAvatar, int direction, int sightRange, int param5, int param6, int approachNum)
{
return sub_02067FF0(fieldSystem, param1, playerAvatar, param3, param4, param5, param6, param7);
return sub_02067FF0(fieldSystem, mapObj, playerAvatar, direction, sightRange, param5, param6, approachNum);
}
int sub_02067FD4(SysTask *task)
@ -411,27 +411,27 @@ void sub_02067FE8(SysTask *task)
sub_02068054(task);
}
static SysTask *sub_02067FF0(FieldSystem *fieldSystem, MapObject *param1, PlayerAvatar *playerAvatar, int param3, int param4, int param5, int param6, int param7)
static SysTask *sub_02067FF0(FieldSystem *fieldSystem, MapObject *mapObj, PlayerAvatar *playerAvatar, int direction, int sightRange, int param5, int param6, int approachNum)
{
SysTask *v0;
SysTask *task;
UnkStruct_020EF6D0 *v1 = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELD, (sizeof(UnkStruct_020EF6D0)));
GF_ASSERT(v1 != NULL);
memset(v1, 0, (sizeof(UnkStruct_020EF6D0)));
v1->unk_08 = param3;
v1->unk_0C = param4;
v1->direction = direction;
v1->sightRange = sightRange;
v1->unk_10 = param5;
v1->unk_14 = param6;
v1->unk_18 = param7;
v1->approachNum = approachNum;
v1->fieldSystem = fieldSystem;
v1->unk_24 = param1;
v1->mapObj = mapObj;
v1->playerAvatar = playerAvatar;
v0 = SysTask_Start(sub_0206806C, v1, 0xff);
GF_ASSERT(v0 != NULL);
task = SysTask_Start(sub_0206806C, v1, 0xff);
GF_ASSERT(task != NULL);
return v0;
return task;
}
static int sub_02068048(SysTask *task)
@ -459,7 +459,7 @@ static void sub_0206806C(SysTask *task, void *param1)
static int sub_02068088(UnkStruct_020EF6D0 *param0)
{
MapObject *v0 = param0->unk_24;
MapObject *v0 = param0->mapObj;
if (MapObject_IsMoving(v0) == 1) {
MapObject_SetPauseMovementOff(v0);
@ -471,13 +471,13 @@ static int sub_02068088(UnkStruct_020EF6D0 *param0)
static int sub_020680A4(UnkStruct_020EF6D0 *param0)
{
MapObject *v0 = param0->unk_24;
MapObject *v0 = param0->mapObj;
if (MapObject_IsMoving(v0) == 1) {
return 0;
}
ov5_021ECDFC(param0->unk_24, param0->unk_08);
ov5_021ECDFC(param0->mapObj, param0->direction);
MapObject_SetStatusFlagOn(v0, MAP_OBJ_STATUS_PAUSE_MOVEMENT);
param0->unk_00 = 2;
@ -493,7 +493,7 @@ static int sub_020680D0(UnkStruct_020EF6D0 *param0)
}
{
u32 v1 = MapObject_GetMovementType(param0->unk_24);
u32 v1 = MapObject_GetMovementType(param0->mapObj);
switch (v1) {
case 0x33:
@ -513,14 +513,14 @@ static int sub_02068118(UnkStruct_020EF6D0 *param0)
{
int v0;
if (LocalMapObj_IsAnimationSet(param0->unk_24) == 0) {
if (LocalMapObj_IsAnimationSet(param0->mapObj) == 0) {
return 0;
}
GF_ASSERT(param0->unk_08 != -1);
GF_ASSERT(param0->direction != -1);
v0 = MovementAction_TurnActionTowardsDir(param0->unk_08, MOVEMENT_ACTION_FACE_NORTH);
LocalMapObj_SetAnimationCode(param0->unk_24, v0);
v0 = MovementAction_TurnActionTowardsDir(param0->direction, MOVEMENT_ACTION_FACE_NORTH);
LocalMapObj_SetAnimationCode(param0->mapObj, v0);
param0->unk_00 = 4;
return 0;
@ -528,7 +528,7 @@ static int sub_02068118(UnkStruct_020EF6D0 *param0)
static int sub_02068150(UnkStruct_020EF6D0 *param0)
{
if (LocalMapObj_CheckAnimationFinished(param0->unk_24) == 0) {
if (LocalMapObj_CheckAnimationFinished(param0->mapObj) == 0) {
return 0;
}
@ -538,7 +538,7 @@ static int sub_02068150(UnkStruct_020EF6D0 *param0)
static int sub_0206816C(UnkStruct_020EF6D0 *param0)
{
param0->unk_20 = ov5_021F5D8C(param0->unk_24, 0, 0, 0);
param0->unk_20 = ov5_021F5D8C(param0->mapObj, 0, 0, 0);
param0->unk_00 = 6;
return 0;
@ -556,7 +556,7 @@ static int sub_02068188(UnkStruct_020EF6D0 *param0)
static int sub_020681A4(UnkStruct_020EF6D0 *param0)
{
LocalMapObj_SetAnimationCode(param0->unk_24, MOVEMENT_ACTION_REVEAL_TRAINER);
LocalMapObj_SetAnimationCode(param0->mapObj, MOVEMENT_ACTION_REVEAL_TRAINER);
param0->unk_00 = 8;
return 0;
@ -564,7 +564,7 @@ static int sub_020681A4(UnkStruct_020EF6D0 *param0)
static int sub_020681B8(UnkStruct_020EF6D0 *param0)
{
if (LocalMapObj_CheckAnimationFinished(param0->unk_24) == 1) {
if (LocalMapObj_CheckAnimationFinished(param0->mapObj) == 1) {
param0->unk_00 = 9;
}
@ -585,7 +585,7 @@ static int sub_020681D0(UnkStruct_020EF6D0 *param0)
static int sub_020681E8(UnkStruct_020EF6D0 *param0)
{
if (param0->unk_0C <= 1) {
if (param0->sightRange <= 1) {
param0->unk_00 = 13;
return 1;
}
@ -598,9 +598,9 @@ static int sub_02068200(UnkStruct_020EF6D0 *param0)
{
int v0;
if (LocalMapObj_IsAnimationSet(param0->unk_24) == 1) {
v0 = MovementAction_TurnActionTowardsDir(param0->unk_08, MOVEMENT_ACTION_WALK_NORMAL_NORTH);
LocalMapObj_SetAnimationCode(param0->unk_24, v0);
if (LocalMapObj_IsAnimationSet(param0->mapObj) == 1) {
v0 = MovementAction_TurnActionTowardsDir(param0->direction, MOVEMENT_ACTION_WALK_NORMAL_NORTH);
LocalMapObj_SetAnimationCode(param0->mapObj, v0);
param0->unk_00 = 12;
}
@ -609,11 +609,11 @@ static int sub_02068200(UnkStruct_020EF6D0 *param0)
static int sub_02068228(UnkStruct_020EF6D0 *param0)
{
if (LocalMapObj_CheckAnimationFinished(param0->unk_24) == 0) {
if (LocalMapObj_CheckAnimationFinished(param0->mapObj) == 0) {
return 0;
}
param0->unk_0C--;
param0->sightRange--;
param0->unk_00 = 10;
return 1;
@ -637,9 +637,9 @@ static int sub_02068264(UnkStruct_020EF6D0 *param0)
{
int v0, v1;
MapObject *v2 = Player_MapObject(param0->playerAvatar);
v1 = sub_02064488(MapObject_GetX(v2), MapObject_GetZ(v2), MapObject_GetX(param0->unk_24), MapObject_GetZ(param0->unk_24));
v1 = sub_02064488(MapObject_GetX(v2), MapObject_GetZ(v2), MapObject_GetX(param0->mapObj), MapObject_GetZ(param0->mapObj));
if ((PlayerAvatar_GetDir(param0->playerAvatar) != v1) && ((param0->unk_18 == 0) || (param0->unk_14 == 2))) {
if ((PlayerAvatar_GetDir(param0->playerAvatar) != v1) && ((param0->approachNum == 0) || (param0->unk_14 == 2))) {
if (LocalMapObj_IsAnimationSet(v2) == 1) {
MapObject_SetStatusFlagOff(v2, MAP_OBJ_STATUS_LOCK_DIR);
v0 = MovementAction_TurnActionTowardsDir(v1, MOVEMENT_ACTION_FACE_NORTH);
@ -669,10 +669,10 @@ static int sub_020682E0(UnkStruct_020EF6D0 *param0)
static int sub_02068308(UnkStruct_020EF6D0 *param0)
{
sub_020656AC(param0->unk_24);
sub_020656AC(param0->mapObj);
if ((PersistedMapFeatures_IsCurrentDynamicMap(param0->fieldSystem, DYNAMIC_MAP_FEATURES_HEARTHOME_GYM) == 0) || (ov8_0224C5DC(param0->fieldSystem, param0->unk_24) == 0)) {
MapObject_SetMoveCode(param0->unk_24, MOVEMENT_TYPE_NONE);
if ((PersistedMapFeatures_IsCurrentDynamicMap(param0->fieldSystem, DYNAMIC_MAP_FEATURES_HEARTHOME_GYM) == 0) || (ov8_0224C5DC(param0->fieldSystem, param0->mapObj) == 0)) {
MapObject_SetMoveCode(param0->mapObj, MOVEMENT_TYPE_NONE);
}
param0->unk_00 = 17;