mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
Document npc_trade.c
This commit is contained in:
parent
b4fc5c1a79
commit
f60f44f3cf
|
|
@ -6,6 +6,7 @@
|
|||
#include "generated/journal_online_events.h"
|
||||
#include "generated/map_headers.h"
|
||||
#include "generated/moves.h"
|
||||
#include "generated/npc_trades.h"
|
||||
#include "generated/poketch_apps.h"
|
||||
#include "generated/save_types.h"
|
||||
#include "generated/sdat.h"
|
||||
|
|
@ -2967,19 +2968,19 @@
|
|||
.short \arg0
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_226 arg0
|
||||
.macro StartNpcTrade npcTradeID
|
||||
.short 550
|
||||
.byte \arg0
|
||||
.byte \npcTradeID
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_227 arg0
|
||||
.macro GetNpcTradeSpecies destVar
|
||||
.short 551
|
||||
.short \arg0
|
||||
.short \destVar
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_228 arg0
|
||||
.macro GetNpcTradeRequestedSpecies destVar
|
||||
.short 552
|
||||
.short \arg0
|
||||
.short \destVar
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_229 arg0
|
||||
|
|
@ -2987,7 +2988,7 @@
|
|||
.short \arg0
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_22A
|
||||
.macro FinishNpcTrade
|
||||
.short 554
|
||||
.endm
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ metang_generators = {
|
|||
'move_ranges': { 'type': 'mask', 'tag': 'MoveRange', 'extra': ['--no-auto'] },
|
||||
'movement_actions': { 'type': 'enum', 'tag': 'MovementAction' },
|
||||
'moves': { 'type': 'enum', 'tag': 'Move' },
|
||||
'npc_trades': { 'type': 'enum', 'tag': 'NpcTradeID' },
|
||||
'pal_park_land_area': { 'type': 'enum', 'tag': 'PalParkLandArea' },
|
||||
'pal_park_water_area': { 'type': 'enum', 'tag': 'PalParkWaterArea' },
|
||||
'pokemon_body_shapes': { 'type': 'enum', 'tag': 'PokemonBodyShape' },
|
||||
|
|
|
|||
5
generated/npc_trades.txt
Normal file
5
generated/npc_trades.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
NPC_TRADE_KAZZA_ABRA
|
||||
NPC_TRADE_CHARAP_CHATOT
|
||||
NPC_TRADE_GASPAR_HAUNTER
|
||||
NPC_TRADE_FOOPA_MAGIKARP
|
||||
MAX_NPC_TRADES
|
||||
|
|
@ -368,7 +368,7 @@ TEXT_BANK_JOURNAL_ENTRIES
|
|||
TEXT_BANK_UNK_0367
|
||||
TEXT_BANK_BATTLE_STRINGS
|
||||
TEXT_BANK_UNK_0369
|
||||
TEXT_BANK_UNK_0370
|
||||
TEXT_BANK_NPC_TRADE_NAMES
|
||||
TEXT_BANK_FURNITURE_NAMES
|
||||
TEXT_BANK_UNK_0372
|
||||
TEXT_BANK_UNK_0373
|
||||
|
|
|
|||
47
include/overlay006/npc_trade.h
Normal file
47
include/overlay006/npc_trade.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef POKEPLATINUM_NPC_TRADE_H
|
||||
#define POKEPLATINUM_NPC_TRADE_H
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
#include "overlay006/struct_ov6_02246254.h"
|
||||
|
||||
#include "pokemon.h"
|
||||
|
||||
typedef struct NpcTradeMon {
|
||||
u32 species;
|
||||
u32 hpIV;
|
||||
u32 atkIV;
|
||||
u32 defIV;
|
||||
u32 speedIV;
|
||||
u32 spAtkIV;
|
||||
u32 spDefIV;
|
||||
u32 unused1;
|
||||
u32 otID;
|
||||
u32 cool;
|
||||
u32 beauty;
|
||||
u32 cute;
|
||||
u32 smart;
|
||||
u32 tough;
|
||||
u32 personality;
|
||||
u32 heldItem;
|
||||
u32 otGender;
|
||||
u32 unused2;
|
||||
u32 language;
|
||||
u32 requestedSpecies;
|
||||
} NpcTradeMon;
|
||||
|
||||
typedef struct NpcTradeData {
|
||||
NpcTradeMon *npcTradeMon;
|
||||
Pokemon *mon;
|
||||
TrainerInfo *trainerInfo;
|
||||
u32 npcTradeID;
|
||||
u32 heapID;
|
||||
} NpcTradeData;
|
||||
|
||||
NpcTradeData *NpcTrade_Init(u32 heapID, u32 entryID);
|
||||
void NpcTrade_Free(NpcTradeData *data);
|
||||
u32 NpcTrade_GetSpecies(const NpcTradeData *data);
|
||||
u32 NpcTrade_GetRequestedSpecies(const NpcTradeData *data);
|
||||
void ov6_02246234(FieldSystem *fieldSystem, NpcTradeData *data, int slot);
|
||||
void ov6_02246254(FieldSystem *fieldSystem, NpcTradeData *data, int slot, UnkStruct_ov6_02246254 *param3, Pokemon *givingMon, Pokemon *receivingMon);
|
||||
|
||||
#endif // POKEPLATINUM_NPC_TRADE_H
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV6_02246184_H
|
||||
#define POKEPLATINUM_OV6_02246184_H
|
||||
|
||||
#include "field/field_system_decl.h"
|
||||
#include "overlay006/struct_ov6_02246204_decl.h"
|
||||
#include "overlay006/struct_ov6_02246254.h"
|
||||
|
||||
#include "pokemon.h"
|
||||
|
||||
UnkStruct_ov6_02246204 *ov6_02246184(u32 param0, u32 param1);
|
||||
void ov6_02246204(UnkStruct_ov6_02246204 *param0);
|
||||
u32 ov6_02246224(const UnkStruct_ov6_02246204 *param0);
|
||||
u32 ov6_0224622C(const UnkStruct_ov6_02246204 *param0);
|
||||
void ov6_02246234(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int param2);
|
||||
void ov6_02246254(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int param2, UnkStruct_ov6_02246254 *param3, Pokemon *param4, Pokemon *param5);
|
||||
|
||||
#endif // POKEPLATINUM_OV6_02246184_H
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_OV6_02246204_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_OV6_02246204_DECL_H
|
||||
|
||||
typedef struct UnkStruct_ov6_02246204_t UnkStruct_ov6_02246204;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_OV6_02246204_DECL_H
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
#ifndef POKEPLATINUM_UNK_0206C660_H
|
||||
#define POKEPLATINUM_UNK_0206C660_H
|
||||
|
||||
#include "overlay006/struct_ov6_02246204_decl.h"
|
||||
#include "overlay006/npc_trade.h"
|
||||
|
||||
#include "field_task.h"
|
||||
|
||||
void sub_0206C740(FieldTask *param0, UnkStruct_ov6_02246204 *param1, int param2, u32 param3);
|
||||
void sub_0206C740(FieldTask *param0, NpcTradeData *data, int param2, u32 param3);
|
||||
|
||||
#endif // POKEPLATINUM_UNK_0206C660_H
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ Overlay overlay6
|
|||
Object main.nef.p/src_overlay006_swarm.c.o
|
||||
Object main.nef.p/src_overlay006_ov6_02243258.c.o
|
||||
Object main.nef.p/src_overlay006_roamer_after_battle.c.o
|
||||
Object main.nef.p/src_overlay006_ov6_02246184.c.o
|
||||
Object main.nef.p/src_overlay006_npc_trade.c.o
|
||||
Object main.nef.p/src_overlay006_ov6_02246444.c.o
|
||||
Object main.nef.p/src_overlay006_ov6_022465FC.c.o
|
||||
Object main.nef.p/src_overlay006_ov6_02246A30.c.o
|
||||
|
|
|
|||
|
|
@ -113,13 +113,13 @@ _0168:
|
|||
FadeScreen 6, 1, 1, 0
|
||||
WaitFadeScreen
|
||||
GoToIfEq 0x800C, 0xFF, _01D9
|
||||
ScrCmd_226 1
|
||||
StartNpcTrade NPC_TRADE_CHARAP_CHATOT
|
||||
SetVar 0x8004, 0x800C
|
||||
ScrCmd_198 0x8004, 0x8005
|
||||
ScrCmd_228 0x800C
|
||||
GetNpcTradeRequestedSpecies 0x800C
|
||||
GoToIfNe 0x8005, 0x800C, _01CC
|
||||
ScrCmd_229 0x8004
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
SetFlag 134
|
||||
Message 10
|
||||
WaitABXPadPress
|
||||
|
|
@ -128,7 +128,7 @@ _0168:
|
|||
End
|
||||
|
||||
_01CC:
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
Message 11
|
||||
WaitABXPadPress
|
||||
CloseMessage
|
||||
|
|
|
|||
|
|
@ -28,13 +28,13 @@ _003B:
|
|||
FadeScreen 6, 1, 1, 0
|
||||
WaitFadeScreen
|
||||
GoToIfEq 0x800C, 0xFF, _00AC
|
||||
ScrCmd_226 0
|
||||
StartNpcTrade NPC_TRADE_KAZZA_ABRA
|
||||
SetVar 0x8004, 0x800C
|
||||
ScrCmd_198 0x8004, 0x8005
|
||||
ScrCmd_228 0x800C
|
||||
GetNpcTradeRequestedSpecies 0x800C
|
||||
GoToIfNe 0x8005, 0x800C, _009F
|
||||
ScrCmd_229 0x8004
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
SetFlag 133
|
||||
Message 1
|
||||
WaitABXPadPress
|
||||
|
|
@ -43,7 +43,7 @@ _003B:
|
|||
End
|
||||
|
||||
_009F:
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
Message 2
|
||||
WaitABXPadPress
|
||||
CloseMessage
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ _0060:
|
|||
FadeScreen 6, 1, 1, 0
|
||||
WaitFadeScreen
|
||||
GoToIfEq 0x800C, 0xFF, _00D1
|
||||
ScrCmd_226 3
|
||||
StartNpcTrade NPC_TRADE_FOOPA_MAGIKARP
|
||||
SetVar 0x8004, 0x800C
|
||||
ScrCmd_198 0x8004, 0x8005
|
||||
ScrCmd_228 0x800C
|
||||
GetNpcTradeRequestedSpecies 0x800C
|
||||
GoToIfNe 0x8005, 0x800C, _00C4
|
||||
ScrCmd_229 0x8004
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
SetFlag 245
|
||||
Message 3
|
||||
WaitABXPadPress
|
||||
|
|
@ -58,7 +58,7 @@ _0060:
|
|||
End
|
||||
|
||||
_00C4:
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
Message 4
|
||||
WaitABXPadPress
|
||||
CloseMessage
|
||||
|
|
|
|||
|
|
@ -45,13 +45,13 @@ _0060:
|
|||
FadeScreen 6, 1, 1, 0
|
||||
WaitFadeScreen
|
||||
GoToIfEq 0x800C, 0xFF, _00D1
|
||||
ScrCmd_226 2
|
||||
StartNpcTrade NPC_TRADE_GASPAR_HAUNTER
|
||||
SetVar 0x8004, 0x800C
|
||||
ScrCmd_198 0x8004, 0x8005
|
||||
ScrCmd_228 0x800C
|
||||
GetNpcTradeRequestedSpecies 0x800C
|
||||
GoToIfNe 0x8005, 0x800C, _00C4
|
||||
ScrCmd_229 0x8004
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
SetFlag 244
|
||||
Message 3
|
||||
WaitABXPadPress
|
||||
|
|
@ -60,7 +60,7 @@ _0060:
|
|||
End
|
||||
|
||||
_00C4:
|
||||
ScrCmd_22A
|
||||
FinishNpcTrade
|
||||
Message 4
|
||||
WaitABXPadPress
|
||||
CloseMessage
|
||||
|
|
|
|||
|
|
@ -1,35 +1,35 @@
|
|||
<?xml version="1.0"?>
|
||||
<body language="English">
|
||||
<key value="4839" />
|
||||
<row id="pl_msg_00000370_00000" index="0">
|
||||
<row id="npc_trades_names_kazza" index="0">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Kazza</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00001" index="1">
|
||||
<row id="npc_trades_names_charap" index="1">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Charap</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00002" index="2">
|
||||
<row id="npc_trades_names_gaspar" index="2">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Gaspar</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00003" index="3">
|
||||
<row id="npc_trades_names_foppa" index="3">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Foppa</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00004" index="4">
|
||||
<row id="npc_trades_names_hilary" index="4">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Hilary</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00005" index="5">
|
||||
<row id="npc_trades_names_norton" index="5">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Norton</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00006" index="6">
|
||||
<row id="npc_trades_names_mindy" index="6">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Mindy</language>
|
||||
</row>
|
||||
<row id="pl_msg_00000370_00007" index="7">
|
||||
<row id="npc_trades_names_meister" index="7">
|
||||
<attribute name="window_context_name">used</attribute>
|
||||
<language name="English">Meister</language>
|
||||
</row>
|
||||
|
|
@ -463,7 +463,7 @@ pokeplatinum_c = files(
|
|||
'overlay006/swarm.c',
|
||||
'overlay006/ov6_02243258.c',
|
||||
'overlay006/roamer_after_battle.c',
|
||||
'overlay006/ov6_02246184.c',
|
||||
'overlay006/npc_trade.c',
|
||||
'overlay006/ov6_02246444.c',
|
||||
'overlay006/ov6_022465FC.c',
|
||||
'overlay006/ov6_02246A30.c',
|
||||
|
|
|
|||
152
src/overlay006/npc_trade.c
Normal file
152
src/overlay006/npc_trade.c
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
#include "overlay006/npc_trade.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "generated/npc_trades.h"
|
||||
#include "generated/text_banks.h"
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "overlay006/struct_ov6_02246254.h"
|
||||
|
||||
#include "graphics.h"
|
||||
#include "heap.h"
|
||||
#include "map_header.h"
|
||||
#include "message.h"
|
||||
#include "party.h"
|
||||
#include "pokemon.h"
|
||||
#include "save_player.h"
|
||||
#include "strbuf.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202F180.h"
|
||||
#include "unk_020559DC.h"
|
||||
#include "unk_02092494.h"
|
||||
|
||||
static inline Strbuf *NpcTrade_GetOtName(u32 heapID, u32 npcTradeID);
|
||||
static Strbuf *NpcTrade_GetNickname(u32 heapID, u32 npcTradeID);
|
||||
static void NpcTrade_CreateMon(Pokemon *mon, NpcTradeMon *npcTrade, u32 level, u32 npcTradeID, u32 heapID, u32 mapID);
|
||||
|
||||
NpcTradeData *NpcTrade_Init(u32 heapID, u32 npcTradeID)
|
||||
{
|
||||
GF_ASSERT(npcTradeID < MAX_NPC_TRADES);
|
||||
|
||||
NpcTradeData *data = Heap_AllocFromHeap(heapID, sizeof(NpcTradeData));
|
||||
memset(data, 0, sizeof(NpcTradeData));
|
||||
|
||||
data->npcTradeMon = LoadMemberFromNARC(NARC_INDEX_FIELDDATA__POKEMON_TRADE__FLD_TRADE, npcTradeID, FALSE, heapID, FALSE);
|
||||
data->heapID = heapID;
|
||||
data->npcTradeID = npcTradeID;
|
||||
data->mon = Pokemon_New(heapID);
|
||||
data->trainerInfo = TrainerInfo_New(heapID);
|
||||
|
||||
TrainerInfo_Init(data->trainerInfo);
|
||||
Strbuf *strbuf = NpcTrade_GetOtName(heapID, npcTradeID);
|
||||
|
||||
u16 otName[128];
|
||||
Strbuf_ToChars(strbuf, otName, NELEMS(otName));
|
||||
Strbuf_Free(strbuf);
|
||||
TrainerInfo_SetName(data->trainerInfo, otName);
|
||||
TrainerInfo_SetGender(data->trainerInfo, data->npcTradeMon->otGender);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void NpcTrade_Free(NpcTradeData *data)
|
||||
{
|
||||
Heap_FreeToHeap(data->npcTradeMon);
|
||||
Heap_FreeToHeap(data->mon);
|
||||
Heap_FreeToHeap(data->trainerInfo);
|
||||
Heap_FreeToHeap(data);
|
||||
}
|
||||
|
||||
u32 NpcTrade_GetSpecies(const NpcTradeData *data)
|
||||
{
|
||||
return data->npcTradeMon->species;
|
||||
}
|
||||
|
||||
u32 NpcTrade_GetRequestedSpecies(const NpcTradeData *data)
|
||||
{
|
||||
return data->npcTradeMon->requestedSpecies;
|
||||
}
|
||||
|
||||
void ov6_02246234(FieldSystem *fieldSystem, NpcTradeData *data, int slot)
|
||||
{
|
||||
sub_0207A128(Party_GetFromSavedata(fieldSystem->saveData), slot, data->mon);
|
||||
sub_0202F180(fieldSystem->saveData, data->mon);
|
||||
}
|
||||
|
||||
void ov6_02246254(FieldSystem *fieldSystem, NpcTradeData *data, int slot, UnkStruct_ov6_02246254 *param3, Pokemon *givingMon, Pokemon *receivingMon)
|
||||
{
|
||||
Party *party = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Pokemon *partyMon = Party_GetPokemonBySlotIndex(party, slot);
|
||||
u32 level = Pokemon_GetValue(partyMon, MON_DATA_LEVEL, NULL);
|
||||
|
||||
NpcTrade_CreateMon(data->mon, data->npcTradeMon, level, data->npcTradeID, data->heapID, fieldSystem->location->mapId);
|
||||
|
||||
Pokemon_Copy(partyMon, givingMon);
|
||||
Pokemon_Copy(data->mon, receivingMon);
|
||||
|
||||
param3->unk_00 = Pokemon_GetBoxPokemon(givingMon);
|
||||
param3->unk_04 = Pokemon_GetBoxPokemon(receivingMon);
|
||||
param3->unk_08 = data->trainerInfo;
|
||||
param3->unk_10 = 1;
|
||||
param3->unk_14 = SaveData_Options(fieldSystem->saveData);
|
||||
|
||||
int timeOfDay = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
if (timeOfDay == TIMEOFDAY_MORNING || timeOfDay == TIMEOFDAY_DAY) {
|
||||
param3->unk_0C = 0;
|
||||
} else if (timeOfDay == TIMEOFDAY_TWILIGHT) {
|
||||
param3->unk_0C = 1;
|
||||
} else {
|
||||
param3->unk_0C = 2;
|
||||
}
|
||||
}
|
||||
|
||||
static inline Strbuf *NpcTrade_GetOtName(u32 heapID, u32 npcTradeID)
|
||||
{
|
||||
return NpcTrade_GetNickname(heapID, MAX_NPC_TRADES + npcTradeID);
|
||||
}
|
||||
|
||||
static Strbuf *NpcTrade_GetNickname(u32 heapID, u32 npcTradeID)
|
||||
{
|
||||
MessageLoader *loader = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_NPC_TRADE_NAMES, heapID);
|
||||
Strbuf *strbuf = MessageLoader_GetNewStrbuf(loader, npcTradeID);
|
||||
MessageLoader_Free(loader);
|
||||
return strbuf;
|
||||
}
|
||||
|
||||
static void NpcTrade_CreateMon(Pokemon *mon, NpcTradeMon *npcTradeMon, u32 level, u32 npcTradeID, u32 heapID, u32 mapID)
|
||||
{
|
||||
Pokemon_InitWith(mon, npcTradeMon->species, level, INIT_IVS_RANDOM, TRUE, npcTradeMon->personality, OTID_SET, npcTradeMon->otID);
|
||||
|
||||
Strbuf *strbuf = NpcTrade_GetNickname(heapID, npcTradeID);
|
||||
Pokemon_SetValue(mon, MON_DATA_NICKNAME_STRBUF, strbuf);
|
||||
Strbuf_Free(strbuf);
|
||||
|
||||
u8 hasNickname = TRUE;
|
||||
Pokemon_SetValue(mon, MON_DATA_HAS_NICKNAME, &hasNickname);
|
||||
Pokemon_SetValue(mon, MON_DATA_HP_IV, &npcTradeMon->hpIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_ATK_IV, &npcTradeMon->atkIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_DEF_IV, &npcTradeMon->defIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_SPEED_IV, &npcTradeMon->speedIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_SPATK_IV, &npcTradeMon->spAtkIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_SPDEF_IV, &npcTradeMon->spDefIV);
|
||||
Pokemon_SetValue(mon, MON_DATA_COOL, &npcTradeMon->cool);
|
||||
Pokemon_SetValue(mon, MON_DATA_BEAUTY, &npcTradeMon->beauty);
|
||||
Pokemon_SetValue(mon, MON_DATA_CUTE, &npcTradeMon->cute);
|
||||
Pokemon_SetValue(mon, MON_DATA_SMART, &npcTradeMon->smart);
|
||||
Pokemon_SetValue(mon, MON_DATA_TOUGH, &npcTradeMon->tough);
|
||||
Pokemon_SetValue(mon, MON_DATA_HELD_ITEM, &npcTradeMon->heldItem);
|
||||
|
||||
strbuf = NpcTrade_GetOtName(heapID, npcTradeID);
|
||||
Pokemon_SetValue(mon, MON_DATA_OTNAME_STRBUF, strbuf);
|
||||
Strbuf_Free(strbuf);
|
||||
|
||||
Pokemon_SetValue(mon, MON_DATA_OT_GENDER, &npcTradeMon->otGender);
|
||||
Pokemon_SetValue(mon, MON_DATA_LANGUAGE, &npcTradeMon->language);
|
||||
|
||||
sub_0209304C(mon, NULL, 1, MapHeader_GetMapLabelTextID(mapID), heapID);
|
||||
Pokemon_CalcLevelAndStats(mon);
|
||||
|
||||
GF_ASSERT(!Pokemon_IsShiny(mon));
|
||||
}
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
#include "overlay006/ov6_02246184.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "overlay006/struct_ov6_02246204_decl.h"
|
||||
#include "overlay006/struct_ov6_02246254.h"
|
||||
|
||||
#include "graphics.h"
|
||||
#include "heap.h"
|
||||
#include "map_header.h"
|
||||
#include "message.h"
|
||||
#include "party.h"
|
||||
#include "pokemon.h"
|
||||
#include "save_player.h"
|
||||
#include "strbuf.h"
|
||||
#include "trainer_info.h"
|
||||
#include "unk_0202F180.h"
|
||||
#include "unk_020559DC.h"
|
||||
#include "unk_02092494.h"
|
||||
|
||||
typedef struct {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
u32 unk_08;
|
||||
u32 unk_0C;
|
||||
u32 unk_10;
|
||||
u32 unk_14;
|
||||
u32 unk_18;
|
||||
u32 unk_1C;
|
||||
u32 unk_20;
|
||||
u32 unk_24;
|
||||
u32 unk_28;
|
||||
u32 unk_2C;
|
||||
u32 unk_30;
|
||||
u32 unk_34;
|
||||
u32 unk_38;
|
||||
u32 unk_3C;
|
||||
u32 unk_40;
|
||||
u32 unk_44;
|
||||
u32 unk_48;
|
||||
u32 unk_4C;
|
||||
} UnkStruct_ov6_0224630C;
|
||||
|
||||
typedef struct UnkStruct_ov6_02246204_t {
|
||||
UnkStruct_ov6_0224630C *unk_00;
|
||||
Pokemon *unk_04;
|
||||
TrainerInfo *unk_08;
|
||||
u32 unk_0C;
|
||||
u32 unk_10;
|
||||
};
|
||||
|
||||
static Strbuf *ov6_022462E4(u32 param0, u32 param1);
|
||||
static void ov6_0224630C(Pokemon *param0, UnkStruct_ov6_0224630C *param1, u32 param2, u32 param3, u32 param4, u32 param5);
|
||||
|
||||
UnkStruct_ov6_02246204 *ov6_02246184(u32 param0, u32 param1)
|
||||
{
|
||||
UnkStruct_ov6_02246204 *v0;
|
||||
Strbuf *v1;
|
||||
u16 v2[128];
|
||||
|
||||
GF_ASSERT(param1 < 4);
|
||||
|
||||
v0 = Heap_AllocFromHeap(param0, sizeof(UnkStruct_ov6_02246204));
|
||||
memset(v0, 0, sizeof(UnkStruct_ov6_02246204));
|
||||
|
||||
v0->unk_00 = LoadMemberFromNARC(115, param1, 0, param0, 0);
|
||||
v0->unk_10 = param0;
|
||||
v0->unk_0C = param1;
|
||||
v0->unk_04 = Pokemon_New(param0);
|
||||
v0->unk_08 = TrainerInfo_New(param0);
|
||||
|
||||
TrainerInfo_Init(v0->unk_08);
|
||||
v1 = ov6_022462E4(param0, 4 + param1);
|
||||
|
||||
Strbuf_ToChars(v1, v2, 128);
|
||||
Strbuf_Free(v1);
|
||||
TrainerInfo_SetName(v0->unk_08, v2);
|
||||
TrainerInfo_SetGender(v0->unk_08, v0->unk_00->unk_40);
|
||||
|
||||
return v0;
|
||||
}
|
||||
|
||||
void ov6_02246204(UnkStruct_ov6_02246204 *param0)
|
||||
{
|
||||
Heap_FreeToHeap(param0->unk_00);
|
||||
Heap_FreeToHeap(param0->unk_04);
|
||||
Heap_FreeToHeap(param0->unk_08);
|
||||
Heap_FreeToHeap(param0);
|
||||
}
|
||||
|
||||
u32 ov6_02246224(const UnkStruct_ov6_02246204 *param0)
|
||||
{
|
||||
return param0->unk_00->unk_00;
|
||||
}
|
||||
|
||||
u32 ov6_0224622C(const UnkStruct_ov6_02246204 *param0)
|
||||
{
|
||||
return param0->unk_00->unk_4C;
|
||||
}
|
||||
|
||||
void ov6_02246234(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int param2)
|
||||
{
|
||||
Party *v0 = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
|
||||
sub_0207A128(v0, param2, param1->unk_04);
|
||||
sub_0202F180(fieldSystem->saveData, param1->unk_04);
|
||||
}
|
||||
|
||||
void ov6_02246254(FieldSystem *fieldSystem, UnkStruct_ov6_02246204 *param1, int param2, UnkStruct_ov6_02246254 *param3, Pokemon *param4, Pokemon *param5)
|
||||
{
|
||||
Party *v0 = Party_GetFromSavedata(fieldSystem->saveData);
|
||||
Pokemon *v1;
|
||||
Strbuf *v2;
|
||||
u32 v3;
|
||||
int v4;
|
||||
|
||||
v1 = Party_GetPokemonBySlotIndex(v0, param2);
|
||||
v3 = Pokemon_GetValue(v1, MON_DATA_LEVEL, NULL);
|
||||
|
||||
ov6_0224630C(param1->unk_04, param1->unk_00, v3, param1->unk_0C, param1->unk_10, fieldSystem->location->mapId);
|
||||
|
||||
Pokemon_Copy(v1, param4);
|
||||
Pokemon_Copy(param1->unk_04, param5);
|
||||
|
||||
param3->unk_00 = Pokemon_GetBoxPokemon(param4);
|
||||
param3->unk_04 = Pokemon_GetBoxPokemon(param5);
|
||||
param3->unk_08 = param1->unk_08;
|
||||
param3->unk_10 = 1;
|
||||
param3->unk_14 = SaveData_Options(fieldSystem->saveData);
|
||||
|
||||
v4 = FieldSystem_GetTimeOfDay(fieldSystem);
|
||||
|
||||
if ((v4 == 0) || (v4 == 1)) {
|
||||
param3->unk_0C = 0;
|
||||
} else if (v4 == 2) {
|
||||
param3->unk_0C = 1;
|
||||
} else {
|
||||
param3->unk_0C = 2;
|
||||
}
|
||||
}
|
||||
|
||||
static Strbuf *ov6_022462E4(u32 fieldSystem, u32 param1)
|
||||
{
|
||||
Strbuf *v0;
|
||||
MessageLoader *v1 = MessageLoader_Init(0, 26, 370, fieldSystem);
|
||||
|
||||
v0 = MessageLoader_GetNewStrbuf(v1, param1);
|
||||
MessageLoader_Free(v1);
|
||||
return v0;
|
||||
}
|
||||
|
||||
static void ov6_0224630C(Pokemon *param0, UnkStruct_ov6_0224630C *param1, u32 param2, u32 param3, u32 param4, u32 param5)
|
||||
{
|
||||
Strbuf *v0;
|
||||
u8 v1;
|
||||
u32 v2;
|
||||
|
||||
Pokemon_InitWith(param0, param1->unk_00, param2, INIT_IVS_RANDOM, TRUE, param1->unk_38, OTID_SET, param1->unk_20);
|
||||
|
||||
v0 = ov6_022462E4(param4, param3);
|
||||
|
||||
Pokemon_SetValue(param0, MON_DATA_NICKNAME_STRBUF, v0);
|
||||
Strbuf_Free(v0);
|
||||
|
||||
v1 = 1;
|
||||
|
||||
Pokemon_SetValue(param0, MON_DATA_HAS_NICKNAME, &v1);
|
||||
Pokemon_SetValue(param0, MON_DATA_HP_IV, ¶m1->unk_04);
|
||||
Pokemon_SetValue(param0, MON_DATA_ATK_IV, ¶m1->unk_08);
|
||||
Pokemon_SetValue(param0, MON_DATA_DEF_IV, ¶m1->unk_0C);
|
||||
Pokemon_SetValue(param0, MON_DATA_SPEED_IV, ¶m1->unk_10);
|
||||
Pokemon_SetValue(param0, MON_DATA_SPATK_IV, ¶m1->unk_14);
|
||||
Pokemon_SetValue(param0, MON_DATA_SPDEF_IV, ¶m1->unk_18);
|
||||
Pokemon_SetValue(param0, MON_DATA_COOL, ¶m1->unk_24);
|
||||
Pokemon_SetValue(param0, MON_DATA_BEAUTY, ¶m1->unk_28);
|
||||
Pokemon_SetValue(param0, MON_DATA_CUTE, ¶m1->unk_2C);
|
||||
Pokemon_SetValue(param0, MON_DATA_SMART, ¶m1->unk_30);
|
||||
Pokemon_SetValue(param0, MON_DATA_TOUGH, ¶m1->unk_34);
|
||||
Pokemon_SetValue(param0, MON_DATA_HELD_ITEM, ¶m1->unk_3C);
|
||||
|
||||
v0 = ov6_022462E4(param4, 4 + param3);
|
||||
|
||||
Pokemon_SetValue(param0, MON_DATA_OTNAME_STRBUF, v0);
|
||||
Strbuf_Free(v0);
|
||||
Pokemon_SetValue(param0, MON_DATA_OT_GENDER, ¶m1->unk_40);
|
||||
Pokemon_SetValue(param0, MON_DATA_LANGUAGE, ¶m1->unk_48);
|
||||
|
||||
v2 = MapHeader_GetMapLabelTextID(param5);
|
||||
|
||||
sub_0209304C(param0, NULL, 1, v2, param4);
|
||||
Pokemon_CalcLevelAndStats(param0);
|
||||
|
||||
GF_ASSERT(Pokemon_IsShiny(param0) == 0);
|
||||
}
|
||||
68
src/scrcmd.c
68
src/scrcmd.c
|
|
@ -63,11 +63,11 @@
|
|||
#include "overlay005/struct_ov5_021DC1A4_decl.h"
|
||||
#include "overlay005/struct_ov5_021DD42C.h"
|
||||
#include "overlay005/vs_seeker.h"
|
||||
#include "overlay006/npc_trade.h"
|
||||
#include "overlay006/ov6_0223E140.h"
|
||||
#include "overlay006/ov6_02242AF0.h"
|
||||
#include "overlay006/ov6_02243004.h"
|
||||
#include "overlay006/ov6_02243258.h"
|
||||
#include "overlay006/ov6_02246184.h"
|
||||
#include "overlay006/ov6_02246C24.h"
|
||||
#include "overlay006/ov6_02246F00.h"
|
||||
#include "overlay006/ov6_02247078.h"
|
||||
|
|
@ -75,7 +75,6 @@
|
|||
#include "overlay006/ov6_02247D30.h"
|
||||
#include "overlay006/ov6_02247F5C.h"
|
||||
#include "overlay006/ov6_02248948.h"
|
||||
#include "overlay006/struct_ov6_02246204_decl.h"
|
||||
#include "overlay006/swarm.h"
|
||||
#include "overlay006/trophy_garden_daily_encounters.h"
|
||||
#include "overlay007/communication_club.h"
|
||||
|
|
@ -601,11 +600,11 @@ static BOOL ScrCmd_219(ScriptContext *ctx);
|
|||
static BOOL ScrCmd_21A(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_EnableSwarms(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_21C(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_226(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_227(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_228(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_StartNpcTrade(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_GetNpcTradeSpecies(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_GetNpcTradeRequestedSpecies(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_229(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_22A(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_FinishNpcTrade(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_22B(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_22C(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_22D(ScriptContext *ctx);
|
||||
|
|
@ -1313,11 +1312,11 @@ const ScrCmdFunc Unk_020EAC58[] = {
|
|||
ScrCmd_223,
|
||||
ScrCmd_224,
|
||||
ScrCmd_225,
|
||||
ScrCmd_226,
|
||||
ScrCmd_227,
|
||||
ScrCmd_228,
|
||||
ScrCmd_StartNpcTrade,
|
||||
ScrCmd_GetNpcTradeSpecies,
|
||||
ScrCmd_GetNpcTradeRequestedSpecies,
|
||||
ScrCmd_229,
|
||||
ScrCmd_22A,
|
||||
ScrCmd_FinishNpcTrade,
|
||||
ScrCmd_22B,
|
||||
ScrCmd_22C,
|
||||
ScrCmd_22D,
|
||||
|
|
@ -6516,48 +6515,41 @@ static BOOL ScrCmd_21C(ScriptContext *ctx)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_226(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_StartNpcTrade(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u8 v1 = ScriptContext_ReadByte(ctx);
|
||||
|
||||
*v0 = ov6_02246184(11, v1);
|
||||
return 0;
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
*data = NpcTrade_Init(HEAP_ID_FIELDMAP, ScriptContext_ReadByte(ctx));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_227(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_GetNpcTradeSpecies(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u16 *v1 = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*v1 = ov6_02246224((UnkStruct_ov6_02246204 *)*v0);
|
||||
return 0;
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u16 *destVar = ScriptContext_GetVarPointer(ctx);
|
||||
*destVar = NpcTrade_GetSpecies((NpcTradeData *)*data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_228(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_GetNpcTradeRequestedSpecies(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u16 *v1 = ScriptContext_GetVarPointer(ctx);
|
||||
|
||||
*v1 = ov6_0224622C((UnkStruct_ov6_02246204 *)*v0);
|
||||
return 0;
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u16 *destVar = ScriptContext_GetVarPointer(ctx);
|
||||
*destVar = NpcTrade_GetRequestedSpecies((NpcTradeData *)*data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_229(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
u16 v1 = ScriptContext_GetVar(ctx);
|
||||
|
||||
sub_0206C740(ctx->task, (UnkStruct_ov6_02246204 *)*v0, v1, 11);
|
||||
return 1;
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
sub_0206C740(ctx->task, (NpcTradeData *)*data, ScriptContext_GetVar(ctx), HEAP_ID_FIELDMAP);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_22A(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_FinishNpcTrade(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
|
||||
ov6_02246204((UnkStruct_ov6_02246204 *)*v0);
|
||||
return 0;
|
||||
void **data = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR);
|
||||
NpcTrade_Free((NpcTradeData *)*data);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_22B(ScriptContext *ctx)
|
||||
|
|
|
|||
|
|
@ -4,8 +4,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "field/field_system.h"
|
||||
#include "overlay006/ov6_02246184.h"
|
||||
#include "overlay006/struct_ov6_02246204_decl.h"
|
||||
#include "overlay006/npc_trade.h"
|
||||
#include "overlay006/struct_ov6_02246254.h"
|
||||
#include "overlay095/ov95_02246C20.h"
|
||||
|
||||
|
|
@ -17,7 +16,7 @@
|
|||
FS_EXTERN_OVERLAY(overlay95);
|
||||
|
||||
typedef struct {
|
||||
UnkStruct_ov6_02246204 *unk_00;
|
||||
NpcTradeData *unk_00;
|
||||
u32 unk_04;
|
||||
int unk_08;
|
||||
UnkStruct_ov6_02246254 unk_0C;
|
||||
|
|
@ -88,7 +87,7 @@ static BOOL sub_0206C680(FieldTask *param0)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void sub_0206C740(FieldTask *param0, UnkStruct_ov6_02246204 *param1, int param2, u32 param3)
|
||||
void sub_0206C740(FieldTask *param0, NpcTradeData *param1, int param2, u32 param3)
|
||||
{
|
||||
UnkStruct_0206C660 *v0 = Heap_AllocFromHeap(param3, sizeof(UnkStruct_0206C660));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user