diff options
| author | Prakxo <87568477+Prakxo@users.noreply.github.com> | 2023-11-23 18:03:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-23 10:03:30 -0700 |
| commit | e1fcb33cef0b8e58ce3cecc2977921e685f129ba (patch) | |
| tree | 2bdf6a246b02e0863efb24925293d916174e58bc /include/m_npc.h | |
| parent | bd8169465a20a324436c4ead9a750d869a17131b (diff) | |
The NPC PR 3/3 OK (#119)
* npc werk
* atleast it builds
* m_npc OK
* forgor format
* review
* format
* fix warns?
Diffstat (limited to 'include/m_npc.h')
| -rw-r--r-- | include/m_npc.h | 577 |
1 files changed, 355 insertions, 222 deletions
diff --git a/include/m_npc.h b/include/m_npc.h index 4fb1303..9ce0bad 100644 --- a/include/m_npc.h +++ b/include/m_npc.h @@ -5,243 +5,376 @@ #include "m_actor.h" #include "unk.h" #include "m_land.h" -#include "6DB420.h" +#include "lb_rtc.h" +#include "libu64/gfxprint.h" +#include "m_quest.h" #include "m_mail.h" +#include "m_private_internals.h" +#include "overlays/actors/ovl_Npc/ac_npc.h" +#include "m_field_make.h" +#include "m_npc_base.h" -#define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */ +#define ANIMAL_NUM_MIN 5 +#define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */ + +#define ANIMAL_MEMORY_NUM 7 +#define ANIMAL_CATCHPHRASE_LEN 4 +#define ANIMAL_NAME_LEN PLAYER_NAME_LEN + +#define NPC_NUM 216 + +struct Game; +struct PrivateInfo; + +typedef struct NpcHouseData { + /* 0x00 */ u8 type; + /* 0x01 */ u8 palette; + /* 0x02 */ u8 wallId; + /* 0x03 */ u8 floorId; + /* 0x04 */ u16 mainLayerId; + /* 0x06 */ u16 secondaryLayerId; +} NpcHouseData; // size = 0x8 + +typedef struct NpcListFlags { + /* 0x00 */ u8 beeSting:1; // [8] + /* 0x00 */ u8 fishComplete:1; // [7] + /* 0x00 */ u8 insectComplete:1; // [6] + /* 0x00 */ u8 unk3:6; // [5:0] +} NpcListFlags; //size = 0x1 typedef struct NpcList { - /* 0x00 */ char unk00[0x10]; + /* 0x00 */ u16 name; + /* 0x02 */ u16 fieldName; + /* 0x04 */ xyz_t homePosition; /* 0x10 */ xyz_t position; - /* 0x14 */ char unk14[0x1C]; + /* 0x1C */ u8 appearFlag; + /* 0x1D */ NpcListFlags flags; + /* 0x1F */ u8 unk1F; + /* 0x20 */ QuestBase questInfo; + /* 0x2C */ NpcHouseData houseData; + /* 0x34 */ u16 rewardFurniture; } NpcList; // size = 0x38 -typedef struct AnmHome_c { +typedef struct Anmland { + /* 0x00 */ char name[LAND_NAME_SIZE]; + /* 0x08 */ u16 id; +} Anmland; // size = 0x10 + +typedef struct Anmhome_c { /* 0x00 */ u8 typeUnused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */ /* 0x01 */ u8 blockX; /* acre x position */ /* 0x02 */ u8 blockZ; /* acre y position */ /* 0x03 */ u8 utX; /* unit x position */ /* 0x04 */ u8 utZ; /* unit z position */ -} AnmHome_c; // size = 0x5 - -typedef struct AnmPersonalId_c { - /* 0x00 */ u16 npcId; /* id */ - /* 0x02 */ u16 landId; /* town id */ - /* 0x04 */ u8 landName[LAND_NAME_SIZE]; /* town name */ - /* 0x0A */ u8 nameId; /* lower byte of the id */ - /* 0x0B */ u8 looks; /* internal name for personality */ -} AnmPersonalID_c; // size = 0xC - -typedef struct Animal_c { - /* 0x000 */ AnmPersonalID_c id; - /* 0x00C */ char unk00C[0x4D4]; - /* 0x4E0 */ AnmHome_c homeInfo; - /* 0x4E5 */ char unk4E5[0x43]; -} Animal_c; - -typedef enum NpcLooks{ - /* 0 */ NPC_LOOKS_GIRL, - /* 1 */ NPC_LOOKS_KO_GIRL, - /* 2 */ NPC_LOOKS_BOY, - /* 3 */ NPC_LOOKS_SPORT_MAN, - /* 4 */ NPC_LOOKS_GRIM_MAN, - /* 5 */ NPC_LOOKS_NANIWA_LADY, - - /* 6 */ NPC_LOOKS_NUM -}NpcLooks; - -// void func_800A6920_jp(); -// void func_800A6940_jp(); -// void func_800A695C_jp(); -void mNpc_ClearAnimalPersonalID(AnmPersonalID_c*); -s32 mNpc_CheckFreeAnimalPersonalID(AnmPersonalID_c*); -void mNpc_CopyAnimalPersonalID(AnmPersonalID_c*, AnmPersonalID_c*); -s32 mNpc_CheckCmpAnimalPersonalID(AnmPersonalID_c*, AnmPersonalID_c*); -// void func_800A6AF0_jp(); -// void func_800A6B58_jp(); -// void func_800A6B6C_jp(); -// void func_800A6B7C_jp(); -// void func_800A6B9C_jp(); -// void func_800A6BC8_jp(); -// void func_800A6C1C_jp(); -// void func_800A6C84_jp(); -// void func_800A6CE4_jp(); -// void func_800A6D04_jp(); -// void func_800A6DB0_jp(); -// void func_800A6DD0_jp(); -// void func_800A6E0C_jp(); +} Anmhome_c; // size = 0x5 + +typedef struct Anmlet { + /* 0x00 */ u8 exists:1; /* letter received by villager and exists */ + /* 0x00 */ u8 cond:1; /* mNpc_LETTER_RANK_* */ + /* 0x00 */ u8 sendReply:1; /* set when the villager should reply */ + /* 0x00 */ u8 hasPresentCloth:1; /* set when the villager's held present shirt is from this letter */ + /* 0x00 */ u8 wearingPresentCloth:1; /* set when a villager is wearing the shirt sent with the saved letter */ + /* 0x00 */ u8 unk5:3; /* seemingly unused */ +} Anmlet; // size = 0x1 + +typedef struct AnmRemailFlags { + /* 0x00 */ u8 cond:1; + /* 0x00 */ u8 looks:7; +} AnmremailFlags; // size 0x1 + +typedef struct Anmremail { + /* 0x00 */ lbRTC_ymd_t date; /* date sent */ + /* 0x04 */ char name[ANIMAL_NAME_LEN]; /* villager name */ + /* 0x0A */ char landName[LAND_NAME_SIZE]; /* town name */ + /* 0x10 */ AnmremailFlags flags; +} Anmremail; // size = 0x12 + +typedef struct Anmplmail_c { + /* 0x000 */ u8 font; /* 'font' to use for letter info */ + /* 0x001 */ u8 paperType; + /* 0x002 */ u16 present; + /* 0x004 */ u8 headerBackStart; /* position for name insertion in header */ + /* 0x005 */ u8 header[MAIL_HEADER_LEN]; + /* 0x00F */ u8 body[MAIL_BODY_LEN]; + /* 0x06F */ u8 footer[MAIL_FOOTER_LEN]; + /* 0x07F */ u8 unk7F; /* likely pad */ + /* 0x080 */ lbRTC_ymd_t date; /* sent date */ +} Anmplmail_c; // size = 0x84 + +typedef struct AnmGoodbyeMail { + /* 0x000 */ AnmPersonalID_c id; + /* 0x00C */ u8 deliverTo; +} AnmGoodbyeMail; // size = 0xE + +typedef struct Anmmem_c { + /* 0x000 */ PersonalID_c memoryPlayerId; /* personal id of the player memory belongs to */ + /* 0x014 */ lbRTC_time_c lastSpeakTime; /* time the player last spoke to this villager */ + /* 0x01C */ Anmland land; /* union between town NPC land memory & islander player action memory */ + /* 0x028 */ u64 savedTownTune; /* memory origin town tune */ + /* 0x030 */ s8 friendship; /* friendship with the player */ + /* 0x031 */ Anmlet letterInfo; /* saved letter flags */ + /* 0x032 */ Anmplmail_c letter; /* saved letter */ +} Anmmem_c; // size 0xB0 + +typedef struct Animal_c { + /* 0x000 */ AnmPersonalID_c id; + /* 0x00C */ Anmmem_c memories[ANIMAL_MEMORY_NUM]; + /* 0x4E0 */ Anmhome_c homeInfo; + /* 0x4E5 */ char catchphrase[ANIMAL_CATCHPHRASE_LEN]; + /* 0x4E9 */ char unk4E9[0x3]; + /* 0x4EC */ QuestContest contestQuest; + /* 0x4E9 */ char previousLandName[LAND_NAME_SIZE]; + /* 0x4E9 */ char parentName[ANIMAL_NAME_LEN]; + /* 0x51C */ u16 previousLandId; + /* 0x51E */ u8 mood; + /* 0x51F */ u8 moodTime; + /* 0x520 */ u16 cloth; + /* 0x522 */ u16 removeInfo; + /* 0x524 */ u8 isHome; + /* 0x525 */ u8 movedIn; + /* 0x526 */ u8 isMoving; +} Animal_c; // size = 0x528 + +typedef struct SpecialNpcData { + /* 0x00 */ u16 specialNpcId; + /* 0x02 */ u16 sex; + /* 0x04 */ s32 nameStringNumber; + /* 0x08 */ s32 soundId; +} SpecialNpcData; // size = 0xC + +typedef struct NpcDefaultData { + /* 0x00 */ u16 cloth; + /* 0x02 */ u16 catchphraseIdx; + /* 0x04 */ s8 umbrella; +} NpcDefaultData; // size = 0x5 + +typedef struct NpcTalkInfo { + /* 0x00 */ u16 timer; + /* 0x02 */ u8 talkNum; + /* 0x03 */ u8 questRequest; + /* 0x04 */ u16 unlockTimer; + /* 0x06 */ u16 resetTimer; +} NpcTalkInfo; // size = 0x8 + +typedef struct NpcTemper { + /* 0x0 */ u16 unlockTimer; + /* 0x2 */ u8 overImpatientNum; + /* 0x3 */ u8 talkNumMax; +} NpcTemper; // size = 0x4 + +typedef struct NpcEvent { + /* 0x0 */ u16 eventId; + /* 0x2 */ u16 textureId; + /* 0x4 */ u16 npcId; + /* 0x6 */ u16 clothId; + /* 0x8 */ u8 exists; + /* 0x9 */ u8 use; + /* 0xA */ u16 unkA; +} NpcEvent; // size = 0xC + +typedef struct DemoNpc { + /* 0x00 */ u16 npcName; /* villager id */ + /* 0x04 */ u32 blockX; // spawn acre x + /* 0x08 */ u32 blockZ; // spawn acre z + /* 0x0C */ u32 utX; // spawn unit x in acre + /* 0x10 */ u32 utZ; // spawn unit z in acre +} DemoNpc; // size = 0x14 + + +void mNpc_MakeRandTable(s32* table, s32 count, s32 swapNum); +void mNpc_ClearBufSpace1(u8* buf, s32 size); +void mNpc_AddNowNpcMax(u8* npcMax); +void mNpc_SubNowNpcMax(u8* npcMax); +void mNpc_ClearAnimalPersonalID(AnmPersonalID_c* pid); +s32 mNpc_CheckFreeAnimalPersonalID(AnmPersonalID_c* pid); +void mNpc_CopyAnimalPersonalID(AnmPersonalID_c* dst, AnmPersonalID_c* src); +s32 mNpc_CheckCmpAnimalPersonalID(AnmPersonalID_c* id0, AnmPersonalID_c* id1); +s32 mNpc_GetAnimalNum(void); +s32 mNpc_CheckRemoveExp(Animal_c* animal); +s32 mNpc_GetRemoveTime(Animal_c* animal); +void mNpc_AddRemoveTime(Animal_c* animal); +void mNpc_SetRemoveExp(Animal_c* animal, u16 removeExp); +void mNpc_SetParentName(Animal_c* animal, PersonalID_c* parentId); +void mNpc_SetParentNameAllAnimal(void); +void mNpc_ClearAnimalMail(Anmplmail_c* mail); +void mNpc_CopyAnimalMail(Anmplmail_c* dst, Anmplmail_c* src); +void mNpc_ClearAnimalMemory(Anmmem_c* memory, s32 num); +void mNpc_CopyAnimalMemory(Anmmem_c* dst, Anmmem_c* src); +void mNpc_AddFriendship(Anmmem_c* memory, s32 amount); +s32 mNpc_CheckFreeAnimalMemory(Anmmem_c* memory); void mNpc_RenewalAnimalMemory(void); -// void func_800A6F48_jp(); -// void func_800A6FF4_jp(); -// void func_800A706C_jp(); -// void func_800A71AC_jp(); -// void func_800A71F8_jp(); -// void func_800A7238_jp(); -// void func_800A72C0_jp(); -// void func_800A73D8_jp(); -// void func_800A74A0_jp(); -// void func_800A7530_jp(); -// void func_800A75FC_jp(); -// void func_800A76E4_jp(); -// void func_800A77F0_jp(); -// void func_800A7858_jp(); -// void func_800A78DC_jp(); -// void mNpc_ClearAnimalInfo(); -// void mNpc_ClearAnyAnimalInfo(); -s32 mNpc_CheckFreeAnimalInfo(Animal_c*); -// void mNpc_GetFreeAnimalInfo(); -// void mNpc_UseFreeAnimalInfo(); -// void mNpc_CopyAnimalInfo(); -// void mNpc_SearchAnimalinfo(); -// void func_800A7C94_jp(); -// void func_800A7D08_jp(); -// void func_800A7DA0_jp(); -// void mNpc_GetOtherAnimalPersonalID(); -// void func_800A80D8_jp(); -// void func_800A8148_jp(); -// void func_800A820C_jp(); -// void func_800A82C8_jp(); -// void func_800A8344_jp(); -// void func_800A83F0_jp(); -// void func_800A845C_jp(); -// void func_800A8614_jp(); -// void func_800A86C4_jp(); -// void func_800A86E8_jp(); -// void func_800A8764_jp(); -// void func_800A8814_jp(); -// void func_800A8868_jp(); -// void func_800A8AB4_jp(); -// void func_800A8B10_jp(); -// void func_800A8B84_jp(); -// void func_800A8C48_jp(); -// void func_800A8DB4_jp(); -// void func_800A8F30_jp(); -// void func_800A9028_jp(); -// void func_800A9110_jp(); -// void func_800A918C_jp(); -void func_800A91DC_jp(void); -// void func_800A9364_jp(); -// void func_800A93AC_jp(); -// void func_800A9468_jp(); -// void func_800A94C8_jp(); -// void func_800A956C_jp(); -// void func_800A96B0_jp(); -// void func_800A9780_jp(); -// void func_800A992C_jp(); -// void func_800A99B8_jp(); -// void func_800A9A98_jp(); -// void func_800A9BC4_jp(); -// void func_800A9BD4_jp(); -// void func_800A9CD4_jp(); -// void func_800A9D68_jp(); -// void func_800A9E54_jp(); -// void func_800A9E7C_jp(); -// void func_800A9EC8_jp(); -// void func_800A9F9C_jp(); -// void func_800AA028_jp(); -// void func_800AA0B8_jp(); -void func_800AA124_jp(void); -// void func_800AA14C_jp(); -s32 mNpc_GetLooks(u16 arg0); -// void func_800AA218_jp(); -// void func_800AA29C_jp(); -// void func_800AA2F8_jp(); -// void func_800AA35C_jp(); -// void func_800AA3A4_jp(); -// void func_800AA438_jp(); -// void func_800AA49C_jp(); -// void func_800AA4FC_jp(); -// void func_800AA51C_jp(); -// void mNpc_SetAnimalTitleDemo(); -// void func_800AA8C4_jp(); -// void func_800AA9F4_jp(); -// void func_800AAA40_jp(); -// void func_800AAB48_jp(); -// void func_800AAC88_jp(); -// void func_800AADE8_jp(); -// void func_800AAEFC_jp(); -void func_800AB054_jp(void); -void func_800AB09C_jp(void); -void mNpc_SetNpcList(NpcList* npclist, Animal_c* animals, s32 count, s32 malloc_flag); -void mNpc_SetNpcinfo(struct Actor* actor, s8 arg1); -// void func_800AB498_jp(); -// void func_800AB62C_jp(); -// void func_800AB6C8_jp(); -// void func_800AB734_jp(); -// void func_800AB7D0_jp(); -// void func_800AB80C_jp(); -// void func_800AB8A0_jp(); -// void func_800ABA14_jp(); -// void func_800ABAA8_jp(); -// void func_800ABAF0_jp(); -s32 mNpc_GetInAnimalP(void); -// void func_800ABB24_jp(); -// void func_800ABCF8_jp(); +s32 mNpc_GetOldAnimalMemoryIdx(Anmmem_c* memory, s32 num); +s32 mNpc_GetFreeAnimalMemoryIdx(Anmmem_c* memory, s32 num); +s32 mNpc_ForceGetFreeAnimalMemoryIdx(Anmmem_c* memory, s32 num); +void mNpc_SetAnimalMemory_NotSetDay(PersonalID_c* pid, Anmmem_c* memory); +void mNpc_SetAnimalMemory(PersonalID_c* pid, Anmmem_c* memory); +s32 mNpc_GetAnimalMemoryIdx(PersonalID_c* pid, Anmmem_c* memory, s32 num); +void mNpc_SetAnimalLastTalk(Animal_c* animal); +void mNpc_SetAnimalPersonalID2Memory(AnmPersonalID_c* anmId); +s32 mNpc_GetHighestFriendshipIdx(Anmmem_c* memory, s32 num); +s32 mNpc_SelectBestFriend(Anmmem_c** bestFriendMem, Anmmem_c* memory, s8* bestFriendFriendShip); +s32 mNpc_GetAnimalMemoryBestFriend(Anmmem_c* memory, s32 num); +s32 mNpc_GetAnimalMemoryFriend_Land_Sex(Anmmem_c* memory, s32 num, s32 sex); +s32 mNpc_GetAnimalMemoryNum(Anmmem_c* memory, s32 count); +s32 mNpc_GetAnimalMemoryLetterNum(Anmmem_c* memory, s32 count); +s32 mNpc_GetAnimalMemoryLandKindNum(Anmmem_c* memory, s32 count); +void mNpc_ClearAnimalInfo(Animal_c* animal); +void mNpc_ClearAnyAnimalInfo(Animal_c* animals, s32 count); +s32 mNpc_CheckFreeAnimalInfo(Animal_c* animal); +s32 mNpc_GetFreeAnimalInfo(Animal_c* animal, s32 count); +s32 mNpc_UseFreeAnimalInfo(Animal_c* animal, s32 count); +void mNpc_CopyAnimalInfo(Animal_c* dst, Animal_c* src); +s32 mNpc_SearchAnimalinfo(Animal_c* animal, u16 npcName, s32 count); +Animal_c* mNpc_GetAnimalInfoP(u16 id); +s32 mNpc_SearchAnimalPersonalID(AnmPersonalID_c* id); +AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* pids, s32 count, s32 blockX, s32 blockY, s32 flag); +AnmPersonalID_c* mNpc_GetOtherAnimalPersonalID(AnmPersonalID_c* pids, s32 count); +void mNpc_SetAnimalThisLand(Animal_c* animal, s32 count); +s32 mNpc_GetSameLooksNum(u8 looks); +s32 mNpc_CheckNpcExistBlock(s32 idx, s32 checkBx, s32 checkBz); +void mNpc_Mail2AnimalMail(Anmplmail_c* animalMail, Mail_c* mail); +void mNpc_AnimalMail2Mail(Mail_c* mail, Anmplmail_c* animal_mail, PersonalID_c* pid, AnmPersonalID_c* anmId); +s32 mNpc_CheckMailChar(u8 c); +s32 mNpc_CheckNormalMail_sub(s32* num, u8* body); +u8 mNpc_CheckNormalMail_length(s32* len, u8* body); +u8 mNpc_CheckNormalMail(u8* body); +s32 mNpc_SetMailCondThisLand(Anmmem_c* memory, u8* body); +s32 mNpc_SetMailCondOtherLand(Animal_c* animal, u8* body); +s32 mNpc_SetRemailCond(Animal_c* animal, Anmmem_c* memory, u8* body); +s32 mNpc_SendMailtoNpc(Mail_c* mail); +void mNpc_ClearRemail(Anmremail* remail); +void mNpc_GetRemailPresent(u16* present); +s32 mNpc_GetHandbillz(Mail_c* mail, s32 superNum, s32 mailANum, s32 mailBNum, s32 mailCNum, s32 psNum); +void mNpc_SetRemailFreeString(PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail); +void mNpc_GetRemailGoodData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, u8 foreign); +void mNpc_GetRemailWrongData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, u8 foreign); +void mNpc_GetRemailData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, s32 cond, u8 foreign); +s32 mNpc_SendRemailPostOffice(PersonalID_c* pid, AnmPersonalID_c* anmId, Anmremail* remail, s32 cond, u8 foreign); +s32 mNpc_CheckLetterTime(lbRTC_ymd_t* letterDate, lbRTC_time_c* rtcTime); +void mNpc_Remail(void); +u8 mNpc_GetPaperType(void); +void mNpc_LoadMailDataCommon2(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* amnId, u16 present, u8 paperType, s32 mailNo); +void mNpc_GetEventPresent(u16* present, s32 type); +void mNpc_GetEventMail(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId, s32 type, s32 looks); +s32 mNpc_SendEventPresentMail(PersonalID_c* pid, s32 playerNo, AnmPersonalID_c* anmId, s32 type); +void mNpc_SendEventPresentMailSex(s32* selected, u8* type, Animal_c* animal, NpcSex sex); +s32 mNpc_SendEventPresentMail_common(NpcSex sexType); +void mNpc_GetBirthdayPresent(u16* present); +void mNpc_GetBirthdayCard(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anmId); +s32 mNpc_SendBirthdayCard(PersonalID_c* pid, s32 playerNo, AnmPersonalID_c* anm_id); +s32 mNpc_SendEventBirthdayCard(PersonalID_c* pid); +s32 mNpc_SendEventBirthdayCard2(PersonalID_c* pid, s32 playerNo); +void mNpc_GetXmasCardData(Mail_c* mail, PersonalID_c* pid); +s32 mNpc_SendEventXmasCard(PersonalID_c* pid, s32 playerNo); +void mNpc_SetWordEnding(Animal_c* animal, char* catchphrase); +char* mNpc_GetWordEnding(Actor* actor); +void mNpc_ResetWordEnding(Actor* actor); +s32 mNpc_GetFreeEventNpcIdx(void); +s32 mNpc_RegistEventNpc(u16 eventId, u16 textureId, u16 npcId, u16 clothId); +void mNpc_UnRegistEventNpc(u16 eventId); +void mNpc_ClearEventNpc(void); +NpcEvent* mNpc_GetSameEventNpc(u16 eventId); +u8 mNpc_GetLooks(u16 npcId); +void mNpc_SetDefAnimalInfo(Animal_c* animal, u16 npcId, u8 looks, NpcDefaultData* defaultData); +void mNpc_SetDefAnimal(Animal_c* animal, u16 npcId, NpcDefaultData* defaultData); +void mNpc_SetHaveAppeared(u16 npcId); +s32 mNpc_GetHaveAppeared_idx(s32 idx); +s32 mNpc_GetLooks2NotHaveAppearedNum(u8 id); +void mNpc_ResetHaveAppeared_common(u8* npcUsedTable, Animal_c* animal); +void mNpc_ResetHaveAppeared(void); +s32 mNpc_GetDefGrowPermission(s32 idx, s8* growList, s32 count); +void mNpc_DecideLivingNpcMax(Animal_c* animal, u8 count, s32 mallocFlag); +void mNpc_SetAnimalTitleDemo(DemoNpc* demo, Animal_c* animal, struct Game* game); +s32 mNpc_GetReservedUtNum(s32* utX, s32* utZ, u16* item); +s32 mNpc_BlockNum2ReservedUtNum(s32* utX, s32* utZ, s32 bx, s32 bz); +void mNpc_MakeReservedListBeforeFieldct(Anmhome_c* reserved, s32 reservedNum, u8* reservedCount); +void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, s32 reservedNum, u8* reserved_count, u8 bxMax, u8 bzMax); +void mNpc_BuildHouseBeforeFieldct(u16 npcId, s32 bx, s32 bz, s32 utX, s32 utZ); +void mNpc_DestroyHouse(Anmhome_c* home); +void mNpc_SetNpcHome(Animal_c* animal, Anmhome_c* reserved, u8 reserved_num); +void mNpc_InitNpcData(void); +void mNpc_InitNpcList(void); +void mNpc_SetNpcList(NpcList* npclist, Animal_c* animal, s32 count, s32 mallocFlag); +void mNpc_SetNpcinfo(Actor* actor, s8 npcInfoIdx); +void mNpc_AddNpc_inNpcRoom(FieldMakeMoveActor* moveActor, u8 bx, u8 bz); +void mNpc_RenewalNpcRoom(s16* wallFloor); +void mNpc_RenewalSetNpc(Actor* actor); +s32 mNpc_GetFriendAnimalNum(PersonalID_c* pid); +s32 mNpc_CheckFriendAllAnimal(PersonalID_c* pid); +s32 mNpc_CheckSelectFurniture(u16 item); +u16 func_800AB8A0_jp(FieldMakeFGData**, NpcList*, s32); +void mNpc_SetNpcFurnitureRandom(FieldMakeFGData** data, s32 base); +u16 mNpc_GetNpcFurniture(AnmPersonalID_c* anmId); +void mNpc_ClearInAnimal(void); +Animal_c* mNpc_GetInAnimalP(void); +u8 mNpc_DecideRemoveAnimalNo(Animal_c* animal, s32 max); + void mNpc_SetRemoveAnimalNo(Animal_c* animal); -// void func_800ABE30_jp(); -// void func_800ABF40_jp(); -// void func_800AC1A0_jp(); -// void func_800AC1C8_jp(); -// void func_800AC1EC_jp(); -// void func_800AC284_jp(); -// void func_800AC358_jp(); -// void func_800AC488_jp(); +s32 mNpc_CheckGoodbyAnimalMemoryNum(Animal_c* a0, Animal_c* a1); +s32 mNpc_GetGoodbyAnimalIdx(void); +void mNpc_ClearGoodbyMail(AnmGoodbyeMail* mail); +void mNpc_FirstClearGoodbyMail(void); +void mNpc_SetGoodbyAnimalMail(AnmGoodbyeMail* mail, Animal_c* animal); +s32 mNpc_SetGoodbyMailData(Mail_c* mail, PersonalID_c* pid, AnmPersonalID_c* anm_id); +s32 mNpc_SendGoodbyAnimalMailOne(Mail_c* mail, struct PrivateInfo* priv, s32 playerNo, AnmPersonalID_c* anmId); +void mNpc_SendGoodbyAnimalMail(AnmGoodbyeMail* mail); void mNpc_SendRegisteredGoodbyMail(void); -// void func_800AC57C_jp(); -// void func_800AC804_jp(); -void mNpc_SetReturnAnimal(s32 arg0); -// void func_800ACB24_jp(); -// void func_800ACB54_jp(); -// void func_800ACC38_jp(); -// void func_800ACCAC_jp(); -void mNpc_GetNpcWorldNameAnm(PlayerName* arg0, struct mMl_get_npcinfo_from_mail_name_arg0* arg1); -// void func_800ACD74_jp(); -// void func_800ACDF8_jp(); -// void func_800ACE90_jp(); -void mNpc_GetAnimalPlateName(char* arg0, xyz_t arg1); -// void func_800AD084_jp(); -// void func_800AD0B8_jp(); -// void func_800AD104_jp(); -// void func_800AD154_jp(); -// void func_800AD188_jp(); -// void func_800AD1E0_jp(); -// void func_800AD22C_jp(); -// void func_800AD2B8_jp(); -void mNpc_InitNpcAllInfo(s32 arg0); -// void func_800AD338_jp(); -// void func_800AD3BC_jp(); -// void func_800AD4B8_jp(); -// void func_800AD614_jp(); -// void func_800AD6D4_jp(); -// void func_800AD8C4_jp(); -// void func_800AD954_jp(); -void func_800AD9FC_jp(void); -// void func_800ADBE4_jp(); -// void func_800ADC28_jp(); -// void func_800ADC8C_jp(); -// void func_800ADD20_jp(); -// void func_800ADEFC_jp(); -// void func_800AE110_jp(); +void mNpc_GetRemoveAnimal(Animal_c* transferAnimal, s32 movingOut); +s32 mNpc_CheckBuildHouse(s32 blockX, s32 blockZ, u8 utX, u8 utZ); +void mNpc_SetReturnAnimal(Animal_c* returnAnimal); +void mNpc_AddActor_inBlock(FieldMakeMoveActor* moveActor, u8 bx, u8 bz); +void mNpc_SetNpcNameID(Animal_c* animal, s32 count); +void mNpc_LoadNpcNameString(char* name, u8 npcId); +void mNpc_GetNpcWorldNameTableNo(char* name, u16 npcId); +void mNpc_GetNpcWorldNameAnm(char* name, AnmPersonalID_c* anmId); +void mNpc_GetNpcWorldNameP(char* name, u16 npcId); +void mNpc_GetNpcWorldName(char* name,Npc* npc); +void mNpc_GetRandomAnimalName(char* dst); +void mNpc_GetAnimalPlateName(char* dst, xyz_t wpos); +NpcLooks mNpc_GetNpcLooks(Actor* actor); +NpcSex mNpc_GetActorSex(u16 npcId); +NpcSex mNpc_GetLooks2Sex(NpcLooks looks); +NpcSex mNpc_GetAnimalSex(Animal_c* animal); +NpcSex mNpc_GetNpcSex(Actor* actor); +s32 mNpc_GetNpcSoundSpecNotAnimal(u16 npcId); +s32 mNpc_GetNpcSoundSpec(Actor* actor); +void mNpc_GetMsg(s32 arg); +void mNpc_InitNpcAllInfo(s32 mallocFlag); +s32 mNpc_CheckGrowFieldRank(void); +s32 mNpc_CheckGrow(void); +u8 mNpc_GetMinLooks(u8* bitfield, s32* minLooksNum); +NpcSex mNpc_GetMinSex(void); +s32 mNpc_GrowLooksNpcIdx(u8 looks); +void mNpc_SetAnimalInfoNpcIdx(Animal_c* animal, s32 idx); +s32 mNpc_SetGrowNpc(u8 looks); +void mNpc_Grow(void); +s32 mNpc_CheckNpcSet_fgcol(u16 arg0, u32 arg1); +s32 mNpc_CheckNpcSet_fgcol_hard(u16 arg0, u32 arg1); +s32 mNpc_CheckNpcSet(s32 bx, s32 bz, s32 ut_x, s32 ut_z); +s32 mNpc_GetMakeUtNuminBlock_hard_area(s32* utX, s32* utZ, s32 bx, s32 bz, s32 restrictArea); +s32 mNpc_GetMakeUtNuminBlock_area(s32* utX, s32* utZ, s32 bx, s32 bz, s32 restrictArea); +s32 mNpc_GetMakeUtNuminBlock(s32* utX, s32* utZ, s32 bx, s32 bz); void mNpc_ClearTalkInfo(void); -// void func_800AE1A0_jp(); -// void func_800AE1B8_jp(); -// void func_800AE1D8_jp(); -// void func_800AE23C_jp(); -// void func_800AE284_jp(); -// void func_800AE2E8_jp(); -// void func_800AE320_jp(); -// void func_800AE37C_jp(); -// void func_800AE3B4_jp(); -// void func_800AE4B4_jp(); -// void func_800AE558_jp(); -// void func_800AE5C8_jp(); -// void func_800AE64C_jp(); -// void func_800AE670_jp(); -// void func_800AE694_jp(); -// void func_800AE6B0_jp(); -// void func_800AE6CC_jp(); -// void func_800AE76C_jp(); -// void func_800AE898_jp(); -// void mNpc_PrintFriendship_fdebug(); +void mNpc_TimerCountDown(NpcTalkInfo* talkInfo); +void mNpc_SetUnlockTimer(u16* unlockTimer, u16* resetTimer, s32 feel); +s32 mNpc_CountTalkNum(s32 animalIdx, s32 feel); +s32 mNpc_CheckOverImpatient(s32 animalIdx, s32 feel); +s32 mNpc_GetOverImpatient(s32 animalIdx, s32 feel); +s32 mNpc_CheckQuestRequest(s32 animalIdx); +void mNpc_SetQuestRequestOFF(s32 animalIdx, s32 feel); +void mNpc_UnlockTimerCountDown(NpcTalkInfo* talkInfo); +void mNpc_TalkInfoMove(void); +void mNpc_TalkEndMove(s32 animalIdx, s32 feel); +s32 mNpc_GetNpcFloorNo(void); +void mNpc_SetTalkBee(void); +u8 mNpc_GetFishCompleteTalk(NpcList* npclist); +u8 mNpc_GetInsectCompleteTalk(NpcList* npclist); +void mNpc_SetFishCompleteTalk(NpcList* npclist); +void mNpc_SetInsectCompleteTalk(NpcList* npclist); +void mNpc_SetNpcHomeYpos(void); +void mNpc_PrintRemoveInfo(gfxprint* gfxprint); +void mNpc_SetTalkAnimalIdx_fdebug(AnmPersonalID_c* anm_id); +void mNpc_PrintFriendship_fdebug(gfxprint* gfxprint); + #endif |
