From 410d412d0a89aa89cf03f538134f05f4657cdd7e Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Mon, 31 Jul 2023 16:40:12 -0700 Subject: [PATCH] Talk Exchange System Docs (#1312) * Fix typo * PLAYER_IA_HELD * Actor offer exchange item functions * SubS_OfferExchangeItemCustom * SubS_OfferItem + enum * Actors that use Subs_OfferItem * SubS_OfferExchangeItemFacing * Comments * Format * Better comment * EnRg * function names and comments * Split enum * exchangeItemId -> exchangeItemAction * namefixer * PR comments * Missed a comment * Max -> Mask * SubS_SetOfferMode * Some more comments updating * rg comment * PLAYER_IA_CONTINUE * Revert back to PLAYER_IA_MINUS1 * Comment typos/grammar * Verify functions * yawRange * Actor_OfferTalkNearby * Actor_OfferTalkExchangeEquiCylinder * format * Actor_OfferTalkNearColChkInfoCylinder * OfferTalk comments * Actor_OfferTalkExchange comment enum * format --- include/functions.h | 10 +- include/z64player.h | 11 ++- include/z64save.h | 30 +++--- include/z64subs.h | 31 ++++-- src/code/z_actor.c | 67 +++++++++---- src/code/z_en_a_keep.c | 2 +- src/code/z_player_lib.c | 6 +- src/code/z_sub_s.c | 96 +++++++++++-------- .../actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c | 2 +- .../actors/ovl_Dm_Char08/z_dm_char08.c | 2 +- src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c | 22 ++--- src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c | 2 +- src/overlays/actors/ovl_En_Ah/z_en_ah.c | 31 +++--- .../ovl_En_Akindonuts/z_en_akindonuts.c | 14 +-- src/overlays/actors/ovl_En_Al/z_en_al.c | 25 ++--- src/overlays/actors/ovl_En_Ani/z_en_ani.c | 2 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 10 +- src/overlays/actors/ovl_En_Az/z_en_az.c | 6 +- src/overlays/actors/ovl_En_Baba/z_en_baba.c | 6 +- .../actors/ovl_En_Baisen/z_en_baisen.c | 2 +- .../actors/ovl_En_Bba_01/z_en_bba_01.c | 2 +- .../actors/ovl_En_Bji_01/z_en_bji_01.c | 6 +- src/overlays/actors/ovl_En_Bjt/z_en_bjt.c | 19 ++-- .../ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c | 4 +- .../actors/ovl_En_Bombers/z_en_bombers.c | 4 +- .../actors/ovl_En_Bombers2/z_en_bombers2.c | 2 +- .../actors/ovl_En_Bomjima/z_en_bomjima.c | 6 +- .../actors/ovl_En_Bomjimb/z_en_bomjimb.c | 2 +- .../actors/ovl_En_Cne_01/z_en_cne_01.c | 2 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 6 +- src/overlays/actors/ovl_En_Dai/z_en_dai.c | 17 ++-- src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 2 +- .../actors/ovl_En_Daiku2/z_en_daiku2.c | 6 +- .../ovl_En_Demo_heishi/z_en_demo_heishi.c | 2 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 4 +- src/overlays/actors/ovl_En_Dnh/z_en_dnh.c | 13 +-- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 7 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 23 ++--- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 21 ++-- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 39 ++++---- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 4 +- src/overlays/actors/ovl_En_Fish2/z_en_fish2.c | 2 +- .../actors/ovl_En_Fishing/z_en_fishing.c | 4 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 14 +-- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 6 +- src/overlays/actors/ovl_En_Gb2/z_en_gb2.c | 12 +-- src/overlays/actors/ovl_En_Geg/z_en_geg.c | 10 +- src/overlays/actors/ovl_En_Gg/z_en_gg.c | 4 +- src/overlays/actors/ovl_En_Gg2/z_en_gg2.c | 2 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 4 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 8 +- src/overlays/actors/ovl_En_Gm/z_en_gm.c | 63 ++++++------ src/overlays/actors/ovl_En_Go/z_en_go.c | 41 ++++---- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 4 +- .../ovl_En_Guard_Nuts/z_en_guard_nuts.c | 2 +- .../actors/ovl_En_Guruguru/z_en_guruguru.c | 6 +- src/overlays/actors/ovl_En_Hg/z_en_hg.c | 2 +- src/overlays/actors/ovl_En_Hgo/z_en_hgo.c | 2 +- .../ovl_En_Hidden_Nuts/z_en_hidden_nuts.c | 2 +- .../actors/ovl_En_Hint_Skb/z_en_hint_skb.c | 2 +- src/overlays/actors/ovl_En_Hs/z_en_hs.c | 6 +- src/overlays/actors/ovl_En_Ig/z_en_ig.c | 37 ++++--- src/overlays/actors/ovl_En_In/z_en_in.c | 12 +-- src/overlays/actors/ovl_En_Ja/z_en_ja.c | 15 +-- src/overlays/actors/ovl_En_Jg/z_en_jg.c | 6 +- .../actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c | 8 +- src/overlays/actors/ovl_En_Js/z_en_js.c | 16 ++-- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 6 +- .../actors/ovl_En_Kanban/z_en_kanban.c | 2 +- src/overlays/actors/ovl_En_Kbt/z_en_kbt.c | 2 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 6 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 14 +-- .../actors/ovl_En_Kujiya/z_en_kujiya.c | 2 +- .../actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c | 6 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 8 +- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.c | 14 +-- .../actors/ovl_En_Ma_Yts/z_en_ma_yts.c | 2 +- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 8 +- src/overlays/actors/ovl_En_Mk/z_en_mk.c | 6 +- src/overlays/actors/ovl_En_Mm2/z_en_mm2.c | 2 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 6 +- src/overlays/actors/ovl_En_Ms/z_en_ms.c | 8 +- src/overlays/actors/ovl_En_Muto/z_en_muto.c | 2 +- src/overlays/actors/ovl_En_Nb/z_en_nb.c | 40 ++++---- src/overlays/actors/ovl_En_Nnh/z_en_nnh.c | 2 +- .../actors/ovl_En_Onpuman/z_en_onpuman.c | 2 +- src/overlays/actors/ovl_En_Osn/z_en_osn.c | 4 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 10 +- src/overlays/actors/ovl_En_Ot/z_en_ot.c | 13 ++- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 10 +- .../actors/ovl_En_Pamera/z_en_pamera.c | 2 +- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 27 +++--- src/overlays/actors/ovl_En_Pst/z_en_pst.c | 56 +++++------ src/overlays/actors/ovl_En_Pst/z_en_pst.h | 2 +- .../actors/ovl_En_Rail_Skb/z_en_rail_skb.c | 2 +- .../actors/ovl_En_Railgibud/z_en_railgibud.c | 2 +- .../actors/ovl_En_Recepgirl/z_en_recepgirl.c | 2 +- src/overlays/actors/ovl_En_Rg/z_en_rg.c | 7 +- src/overlays/actors/ovl_En_Rz/z_en_rz.c | 10 +- .../actors/ovl_En_S_Goro/z_en_s_goro.c | 10 +- .../actors/ovl_En_Scopenuts/z_en_scopenuts.c | 6 +- .../actors/ovl_En_Sekihi/z_en_sekihi.c | 2 +- .../actors/ovl_En_Sellnuts/z_en_sellnuts.c | 14 +-- src/overlays/actors/ovl_En_Shn/z_en_shn.c | 43 ++++----- src/overlays/actors/ovl_En_Skb/z_en_skb.c | 4 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 10 +- src/overlays/actors/ovl_En_Ssh/z_en_ssh.c | 2 +- src/overlays/actors/ovl_En_Sth/z_en_sth.c | 16 ++-- .../ovl_En_Stone_heishi/z_en_stone_heishi.c | 8 +- .../ovl_En_Stop_heishi/z_en_stop_heishi.c | 2 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 12 +-- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 8 +- src/overlays/actors/ovl_En_Tab/z_en_tab.c | 26 +++-- src/overlays/actors/ovl_En_Talk/z_en_talk.c | 2 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 2 +- src/overlays/actors/ovl_En_Test3/z_en_test3.c | 4 +- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 4 +- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 9 +- src/overlays/actors/ovl_En_Toto/z_en_toto.c | 4 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 16 ++-- src/overlays/actors/ovl_En_Trt2/z_en_trt2.c | 6 +- src/overlays/actors/ovl_En_Tru/z_en_tru.c | 65 +++++++------ src/overlays/actors/ovl_En_Tsn/z_en_tsn.c | 10 +- .../actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c | 2 +- src/overlays/actors/ovl_En_Yb/z_en_yb.c | 10 +- src/overlays/actors/ovl_En_Zob/z_en_zob.c | 6 +- src/overlays/actors/ovl_En_Zod/z_en_zod.c | 4 +- src/overlays/actors/ovl_En_Zog/z_en_zog.c | 8 +- .../actors/ovl_En_Zoraegg/z_en_zoraegg.c | 2 +- src/overlays/actors/ovl_En_Zos/z_en_zos.c | 20 ++-- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 28 +++--- src/overlays/actors/ovl_En_Zov/z_en_zov.c | 4 +- src/overlays/actors/ovl_En_Zow/z_en_zow.c | 2 +- src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c | 4 +- .../actors/ovl_Obj_Ghaka/z_obj_ghaka.c | 2 +- .../actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c | 2 +- .../ovl_Obj_Moon_Stone/z_obj_moon_stone.c | 2 +- .../actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c | 2 +- .../actors/ovl_Obj_Nozoki/z_obj_nozoki.c | 2 +- .../actors/ovl_Obj_Snowball/z_obj_snowball.c | 2 +- src/overlays/actors/ovl_Obj_Um/z_obj_um.c | 4 +- .../ovl_Obj_Warpstone/z_obj_warpstone.c | 2 +- .../actors/ovl_player_actor/z_player.c | 36 +++---- tools/disasm/functions.txt | 18 ++-- tools/namefixer.py | 16 +++- tools/sizes/code_functions.csv | 16 ++-- 146 files changed, 853 insertions(+), 769 deletions(-) diff --git a/include/functions.h b/include/functions.h index 66265e454c..6228302465 100644 --- a/include/functions.h +++ b/include/functions.h @@ -560,13 +560,13 @@ PosRot* Actor_GetWorldPosShapeRot(PosRot* dest, Actor* actor); s32 func_800B83F8(Actor* actor, Player* player, s32 flag); s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState); -s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemId); -s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemId); -s32 func_800B8614(Actor* actor, PlayState* play, f32 radius); -s32 func_800B863C(Actor* actor, PlayState* play); +s32 Actor_OfferTalkExchange(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemAction); +s32 Actor_OfferTalkExchangeEquiCylinder(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemAction); +s32 Actor_OfferTalk(Actor* actor, PlayState* play, f32 radius); +s32 Actor_OfferTalkNearColChkInfoCylinder(Actor* actor, PlayState* play); s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play); s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2); -PlayerItemAction Player_GetExchangeItemId(PlayState* play); +PlayerItemAction Player_GetExchangeItemAction(PlayState* play); s32 func_800B8718(Actor* actor, GameState* gameState); s32 func_800B874C(Actor* actor, PlayState* play, f32 xzRange, f32 yRange); s32 func_800B8804(Actor* actor, PlayState* play, f32 xzRange); diff --git a/include/z64player.h b/include/z64player.h index b74b5846ac..5974defc5f 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -51,8 +51,15 @@ typedef enum { /* 4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE } PlayerEnvHazard; +/* + * Current known usages for PLAYER_IA_MINUS1: + * 1. With TalkExchange requests, used to continue a current conversation after a textbox is closed + * 2. In `func_80123810` as a return value representing the offer is declined or invalid + * 3. Used as an item action to return the previously held item after player is done shielding + */ + typedef enum PlayerItemAction { - /* -1 */ PLAYER_IA_MINUS1 = -1, + /* -1 */ PLAYER_IA_MINUS1 = -1, // TODO: determine usages with more player docs, possibly split into seperate values (see known usages above) /* 0x00 */ PLAYER_IA_NONE, /* 0x01 */ PLAYER_IA_LAST_USED, /* 0x02 */ PLAYER_IA_FISHING_ROD, @@ -1180,7 +1187,7 @@ typedef struct Player { /* 0xA80 */ Actor* tatlActor; /* 0xA84 */ s16 tatlTextId; /* 0xA86 */ s8 csId; - /* 0xA87 */ s8 exchangeItemId; // PlayerItemAction enum + /* 0xA87 */ s8 exchangeItemAction; // PlayerItemAction enum /* 0xA88 */ Actor* talkActor; /* 0xA8C */ f32 talkActorDistance; /* 0xA90 */ Actor* unk_A90; diff --git a/include/z64save.h b/include/z64save.h index d969ff7bf6..85a2a62e32 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -1447,16 +1447,17 @@ typedef enum { /* 1 */ WEEKEVENTREG_HORSE_RACE_STATE_START, /* 2 */ WEEKEVENTREG_HORSE_RACE_STATE_2, /* 3 */ WEEKEVENTREG_HORSE_RACE_STATE_3, - /* 4 */ WEEKEVENTREG_HORSE_RACE_STATE_4, - /* 7 */ WEEKEVENTREG_HORSE_RACE_STATE_MAX = 7 + /* 4 */ WEEKEVENTREG_HORSE_RACE_STATE_4 } WeekEventRegHorseRaceState; -#define GET_WEEKEVENTREG_HORSE_RACE_STATE (WEEKEVENTREG(92) & WEEKEVENTREG_HORSE_RACE_STATE_MAX) +#define WEEKEVENTREG_HORSE_RACE_STATE_MASK 7 + +#define GET_WEEKEVENTREG_HORSE_RACE_STATE (WEEKEVENTREG(92) & WEEKEVENTREG_HORSE_RACE_STATE_MASK) #define SET_WEEKEVENTREG_HORSE_RACE_STATE(state) \ { \ - WEEKEVENTREG(92) &= (u8)~WEEKEVENTREG_HORSE_RACE_STATE_MAX; \ - WEEKEVENTREG(92) = WEEKEVENTREG(92) | (u8)((WEEKEVENTREG(92) & ~WEEKEVENTREG_HORSE_RACE_STATE_MAX) | (state)); \ + WEEKEVENTREG(92) &= (u8)~WEEKEVENTREG_HORSE_RACE_STATE_MASK; \ + WEEKEVENTREG(92) = WEEKEVENTREG(92) | (u8)((WEEKEVENTREG(92) & ~WEEKEVENTREG_HORSE_RACE_STATE_MASK) | (state)); \ } \ (void)0 @@ -1561,22 +1562,23 @@ typedef enum { typedef enum { /* 0 */ EVENTINF_DOG_RACE_STATE_NOT_STARTED, /* 2 */ EVENTINF_DOG_RACE_STATE_STARTED = 2, - /* 3 */ EVENTINF_DOG_RACE_STATE_ENDED, - /* 7 */ EVENTINF_DOG_RACE_STATE_MAX = 7 + /* 3 */ EVENTINF_DOG_RACE_STATE_ENDED } EventInfDogRaceState; -#define GET_EVENTINF_DOG_RACE_STATE (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MAX) -#define SET_EVENTINF_DOG_RACE_STATE(state) \ - (gSaveContext.eventInf[0] = ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MAX) | (state))) +#define EVENTINF_DOG_RACE_STATE_MASK 7 -#define GET_EVENTINF_DOG_RACE_SELECTED_DOG_INDEX ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MAX) >> 3) +#define GET_EVENTINF_DOG_RACE_STATE (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MASK) +#define SET_EVENTINF_DOG_RACE_STATE(state) \ + (gSaveContext.eventInf[0] = ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MASK) | (state))) + +#define GET_EVENTINF_DOG_RACE_SELECTED_DOG_INDEX ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MASK) >> 3) #define SET_EVENTINF_DOG_RACE_SELECTED_DOG_INDEX(selectedDogIndex) \ - (gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MAX) | (selectedDogIndex << 3)) + (gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MASK) | (selectedDogIndex << 3)) // This is exactly the same as the selected dog index; they never need both of them at the same time. -#define GET_EVENTINF_DOG_RACE_RACE_STANDING ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MAX) >> 3) +#define GET_EVENTINF_DOG_RACE_RACE_STANDING ((gSaveContext.eventInf[0] & (u8)~EVENTINF_DOG_RACE_STATE_MASK) >> 3) #define SET_EVENTINF_DOG_RACE_RACE_STANDING(raceStanding) \ - (gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MAX) | (raceStanding << 3)) + (gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & EVENTINF_DOG_RACE_STATE_MASK) | (raceStanding << 3)) typedef enum { /* 0 */ DUNGEON_INDEX_WOODFALL_TEMPLE, diff --git a/include/z64subs.h b/include/z64subs.h index 0aaf9bcd2a..4d365dd148 100644 --- a/include/z64subs.h +++ b/include/z64subs.h @@ -10,16 +10,31 @@ extern Vec3f gOneVec3f; #define SUBS_TIME_PATHING_ORDER 3 +// NOTE: all on screen checks are bugged, and always evaluate to true, even if the target is off screen +typedef enum { + /* 0 */ SUBS_OFFER_MODE_NONE, + /* 1 */ SUBS_OFFER_MODE_GET_ITEM, + // Further modes all deal with offering talk exchange requests + /* 2 */ SUBS_OFFER_MODE_NEARBY, + /* 3 */ SUBS_OFFER_MODE_ONSCREEN, + /* 4 */ SUBS_OFFER_MODE_AUTO, + /* 5 */ SUBS_OFFER_MODE_AUTO_TARGETED, // Also checks nearby and on screen + /* 6 */ SUBS_OFFER_MODE_AUTO_NEARBY_ONSCREEN +} SubSOfferMode; + +#define SUBS_OFFER_MODE_MASK \ + (SUBS_OFFER_MODE_GET_ITEM | SUBS_OFFER_MODE_NEARBY | SUBS_OFFER_MODE_ONSCREEN | SUBS_OFFER_MODE_AUTO | \ + SUBS_OFFER_MODE_AUTO_TARGETED | SUBS_OFFER_MODE_AUTO_NEARBY_ONSCREEN) + typedef enum { /* 0 */ SUBS_CUTSCENE_WITH_PLAYER, /* 1 */ SUBS_CUTSCENE_NORMAL, /* 2 */ SUBS_CUTSCENE_WITH_PLAYER_SET_FLAG } SubSCutsceneType; -//! TODO: rename based on func_8013E748 and func_800B8500 -typedef s32 (*func_8013E748_VerifyFunc)(struct PlayState*, Actor*, void*); +typedef s32 (*VerifyTalkExchangeActorFunc)(struct PlayState*, Actor*, void*); -typedef s32 (*VerifyActor)(struct PlayState*, Actor*, Actor*, void*); +typedef s32 (*VerifyFindActorFunc)(struct PlayState*, Actor*, Actor*, void*); #define SUBS_SHADOW_TEX_WIDTH 64 #define SUBS_SHADOW_TEX_HEIGHT 64 @@ -91,7 +106,7 @@ s32 SubS_InCsMode(struct PlayState* play); s32 SubS_UpdateLimb(s16 newRotZ, s16 newRotY, Vec3f* pos, Vec3s* rot, s32 stepRot, s32 overrideRot); -void SubS_UpdateFlags(u16* flags, u16 setBits, u16 unsetBits); +void SubS_SetOfferMode(u16* flags, u16 offerMode, u16 mask); void SubS_TimePathing_FillKnots(f32 knots[], s32 order, s32 numPoints); s32 SubS_TimePathing_ComputeProgress(f32* progress, s32 elapsedTime, s32 waypointTime, s32 totalTime, s32 pathCount, s32 order, f32 knots[]); @@ -115,7 +130,7 @@ s32 SubS_WeightPathing_Move(Actor* actor, Path* path, s32* waypoint, f32* progre s32 SubS_CopyPointFromPathCheckBounds(Path* path, s32 pointIndex, Vec3f* dst); -s32 func_8013C964(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 itemId, s32 type); +s32 SubS_Offer(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 itemId, SubSOfferMode mode); void SubS_FillShadowTex(s32 startCol, s32 startRow, u8* tex, s32 size); void SubS_GenShadowTex(Vec3f bodyPartsPos[], Vec3f* worldPos, u8* tex, f32 tween, u8 bodyPartsNum, u8 sizes[], s8 parentBodyParts[]); @@ -159,11 +174,11 @@ s32 SubS_FillCutscenesList(Actor* actor, s16 csIdList[], s16 numCutscenes); void SubS_ConstructPlane(Vec3f* point, Vec3f* unitVec, Vec3s* rot, Plane* plane); s32 SubS_LineSegVsPlane(Vec3f* point, Vec3s* rot, Vec3f* unitVec, Vec3f* linePointA, Vec3f* linePointB, Vec3f* intersect); -Actor* SubS_FindActorCustom(struct PlayState* play, Actor* actor, Actor* actorListStart, u8 actorCategory, s16 actorId, void* verifyData, VerifyActor verifyActor); +Actor* SubS_FindActorCustom(struct PlayState* play, Actor* actor, Actor* actorListStart, u8 actorCategory, s16 actorId, void* verifyData, VerifyFindActorFunc verifyActorFunc); -s32 func_8013E748(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemId, void* data, func_8013E748_VerifyFunc verifyFunc); +s32 SubS_OfferTalkExchangeCustom(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemAction, void* data, VerifyTalkExchangeActorFunc verifyActorFunc); s32 SubS_ActorAndPlayerFaceEachOther(struct PlayState* play, Actor* actor, void* data); -s32 func_8013E8F8(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 exhangeItemId, s16 playerYawTol, s16 actorYawTol); +s32 SubS_OfferTalkExchangeFacing(Actor* actor, struct PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemAction, s16 playerYawRange, s16 actorYawRange); s32 SubS_TrackPointStep(Vec3f* worldPos, Vec3f* focusPos, s16 shapeYRot, Vec3f* yawTarget, Vec3f* pitchTarget, s16* headZRotStep, s16* headXRotStep, s16* torsoZRotStep, s16* torsoXRotStep, u16 headZRotStepMax, u16 headXRotStepMax, u16 torsoZRotStepMax, u16 torsoXRotStepMax); diff --git a/src/code/z_actor.c b/src/code/z_actor.c index a85c2f31b6..1579c1ff96 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1878,14 +1878,38 @@ s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState) { return false; } -// Actor_OfferTalk / Actor_OfferGetItemExchange? Seems to be called with PLAYER_IA_MINUS1 if the same actor used -// Actor_OfferGetItem. -// This function is also used to toggle the "Speak" action on the A button -s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, PlayerItemAction exchangeItemId) { +/** + * This function covers offering the ability to `Talk` with the player. + * Passing an exchangeItemAction (see `PlayerItemAction`) allows the player to also use the item to initiate the + * conversation. + * + * This function carries a talk exchange request to the player actor if context allows it (e.g. the player is in range + * and not busy with certain things). The player actor performs the requested action itself. + * + * The following description of what the `exchangeItemAction` values can do is provided here for completeness, but these + * behaviors are entirely out of the scope of this function. All behavior is defined by the player actor. + * + * - Positive values (`PLAYER_IA_NONE < exchangeItemAction < PLAYER_IA_MAX`): + * Offers the ability to initiate the conversation with an item from the player. + * Not all positive values are implemented properly for this to work. + * Working ones are PLAYER_IA_PICTO_BOX and PLAYER_IA_BOTTLE_MIN <= exchangeItemAction < PLAYER_IA_MASK_MIN + * Note: While PLAYER_IA_BEANS works, it is special cased to just plant the bean with no talking. + * - `PLAYER_IA_NONE`: + * Allows the player to speak to or check the actor (by pressing A). + * - `PLAYER_IA_MINUS1`: + * Used by actors/player to continue the current conversation after a textbox is closed. + * + * @return true If the player actor is capable of accepting the offer. + * + * Note: There is only one instance of using this for actually using an item to start the conversation with the player. + * Every other instance is to either offer to speak, or continue the current conversation. + */ +s32 Actor_OfferTalkExchange(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, + PlayerItemAction exchangeItemAction) { Player* player = GET_PLAYER(play); if ((player->actor.flags & ACTOR_FLAG_TALK_REQUESTED) || - ((exchangeItemId > PLAYER_IA_NONE) && Player_InCsMode(play)) || + ((exchangeItemAction > PLAYER_IA_NONE) && Player_InCsMode(play)) || (!actor->isTargeted && ((fabsf(actor->playerHeightRel) > fabsf(yRange)) || (actor->xzDistToPlayer > player->talkActorDistance) || (xzRange < actor->xzDistToPlayer)))) { @@ -1894,24 +1918,35 @@ s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, Player player->talkActor = actor; player->talkActorDistance = actor->xzDistToPlayer; - player->exchangeItemId = exchangeItemId; + player->exchangeItemAction = exchangeItemAction; CutsceneManager_Queue(CS_ID_GLOBAL_TALK); return true; } -s32 func_800B85E0(Actor* actor, PlayState* play, f32 radius, PlayerItemAction exchangeItemId) { - return func_800B8500(actor, play, radius, radius, exchangeItemId); +/** + * Offers a talk exchange request within an equilateral cylinder with the radius specified. + */ +s32 Actor_OfferTalkExchangeEquiCylinder(Actor* actor, PlayState* play, f32 radius, + PlayerItemAction exchangeItemAction) { + return Actor_OfferTalkExchange(actor, play, radius, radius, exchangeItemAction); } -s32 func_800B8614(Actor* actor, PlayState* play, f32 radius) { - return func_800B85E0(actor, play, radius, PLAYER_IA_NONE); +/** + * Offers a talk request within an equilateral cylinder with the radius specified. + */ +s32 Actor_OfferTalk(Actor* actor, PlayState* play, f32 radius) { + return Actor_OfferTalkExchangeEquiCylinder(actor, play, radius, PLAYER_IA_NONE); } -s32 func_800B863C(Actor* actor, PlayState* play) { +/** + * Offers a talk request within an equilateral cylinder whose radius is determined by the actor's collision check + * cylinder's radius. + */ +s32 Actor_OfferTalkNearColChkInfoCylinder(Actor* actor, PlayState* play) { f32 cylRadius = actor->colChkInfo.cylRadius + 50.0f; - return func_800B8614(actor, play, cylRadius); + return Actor_OfferTalk(actor, play, cylRadius); } s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play) { @@ -1942,10 +1977,10 @@ s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2) { return false; } -PlayerItemAction Player_GetExchangeItemId(PlayState* play) { +PlayerItemAction Player_GetExchangeItemAction(PlayState* play) { Player* player = GET_PLAYER(play); - return player->exchangeItemId; + return player->exchangeItemAction; } s32 func_800B8718(Actor* actor, GameState* gameState) { @@ -1957,7 +1992,7 @@ s32 func_800B8718(Actor* actor, GameState* gameState) { return false; } -// Similar to func_800B8500 +// Similar to Actor_OfferTalkExchange s32 func_800B874C(Actor* actor, PlayState* play, f32 xzRange, f32 yRange) { Player* player = GET_PLAYER(play); @@ -4127,7 +4162,7 @@ s32 Npc_UpdateTalking(PlayState* play, Actor* actor, s16* talkState, f32 interac return false; } - if (!func_800B8614(actor, play, interactRange)) { + if (!Actor_OfferTalk(actor, play, interactRange)) { return false; } diff --git a/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c index a9bd49f6ff..3f9f6b90e3 100644 --- a/src/code/z_en_a_keep.c +++ b/src/code/z_en_a_keep.c @@ -77,7 +77,7 @@ void EnAObj_Idle(EnAObj* this, PlayState* play) { yawDiff = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); if ((yawDiff < 0x2800) || ((this->actor.params == AOBJ_SIGNPOST_ARROW) && (yawDiff > 0x5800))) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } } diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index bd8a5b94ea..cd91ee42d1 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1286,7 +1286,7 @@ void Player_SetModelGroup(Player* player, PlayerModelGroup modelGroup) { void func_80123C58(Player* player) { player->itemAction = player->heldItemAction; Player_SetModelGroup(player, Player_ActionToModelGroup(player, player->heldItemAction)); - player->unk_AA5 = 0; + player->unk_AA5 = PLAYER_UNKAA5_0; } void Player_SetEquipmentData(PlayState* play, Player* player) { @@ -2313,7 +2313,7 @@ s32 Player_OverrideLimbDrawGameplayFirstPerson(PlayState* play, s32 limbIndex, G Player* player = (Player*)actor; if (!Player_OverrideLimbDrawGameplayCommon(play, limbIndex, dList, pos, rot, actor)) { - if (player->unk_AA5 != 3) { + if (player->unk_AA5 != PLAYER_UNKAA5_3) { *dList = NULL; } else if (limbIndex == PLAYER_LIMB_LEFT_FOREARM) { *dList = sPlayerFirstPersonLeftForearmDLs[player->transformation]; @@ -3526,7 +3526,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList1, G if ((player->getItemDrawIdPlusOne != (GID_NONE + 1)) || ((func_800B7118(player) == 0) && (heldActor != NULL))) { if (!(player->stateFlags1 & PLAYER_STATE1_400) && (player->getItemDrawIdPlusOne != (GID_NONE + 1)) && - (player->exchangeItemId != PLAYER_IA_NONE)) { + (player->exchangeItemAction != PLAYER_IA_NONE)) { Math_Vec3f_Copy(&sPlayerGetItemRefPos, &player->leftHandWorld.pos); } else { sPlayerGetItemRefPos.x = diff --git a/src/code/z_sub_s.c b/src/code/z_sub_s.c index 0f09f59123..4060c3361d 100644 --- a/src/code/z_sub_s.c +++ b/src/code/z_sub_s.c @@ -209,8 +209,8 @@ s32 SubS_UpdateLimb(s16 newRotZ, s16 newRotY, Vec3f* pos, Vec3s* rot, s32 stepRo return true; } -void SubS_UpdateFlags(u16* flags, u16 setBits, u16 unsetBits) { - *flags = (*flags & ~unsetBits) | setBits; +void SubS_SetOfferMode(u16* flags, u16 offerMode, u16 mask) { + *flags = (*flags & ~mask) | offerMode; } /** @@ -815,60 +815,68 @@ s32 SubS_CopyPointFromPathCheckBounds(Path* path, s32 pointIndex, Vec3f* dst) { return true; } -//! TODO: Needs docs with func_800B8500 -s32 func_8013C964(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemId, s32 type) { - s32 ret = false; +/** + * Attempt to extend different offers to the player based on different checks + * and on the provided mode (see SubSOfferMode). + * + * The offer types are either GetItem (see Actor_OfferGetItem) or TalkExchange (see Actor_OfferTalkExchange), + * with more check variants provided for TalkExchange offers. + * + * @return `true` if offer was extended and the player can accept it + */ +s32 SubS_Offer(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 itemId, SubSOfferMode mode) { + s32 canAccept = false; s16 x; s16 y; f32 xzDistToPlayerTemp; Actor_GetScreenPos(play, actor, &x, &y); - switch (type) { - case 1: + switch (mode) { + case SUBS_OFFER_MODE_GET_ITEM: yRange = fabsf(actor->playerHeightRel) + 1.0f; xzRange = actor->xzDistToPlayer + 1.0f; - ret = Actor_OfferGetItem(actor, play, itemId, xzRange, yRange); + canAccept = Actor_OfferGetItem(actor, play, itemId, xzRange, yRange); break; - case 2: + case SUBS_OFFER_MODE_NEARBY: if ((fabsf(actor->playerHeightRel) <= yRange) && (actor->xzDistToPlayer <= xzRange)) { - ret = func_800B8500(actor, play, xzRange, yRange, itemId); + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId); } break; - case 3: + case SUBS_OFFER_MODE_ONSCREEN: //! @bug: Both x and y conditionals are always true, || should be an && if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) { - ret = func_800B8500(actor, play, xzRange, yRange, itemId); + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId); } break; - case 4: + case SUBS_OFFER_MODE_AUTO: yRange = fabsf(actor->playerHeightRel) + 1.0f; xzRange = actor->xzDistToPlayer + 1.0f; xzDistToPlayerTemp = actor->xzDistToPlayer; actor->xzDistToPlayer = 0.0f; actor->flags |= ACTOR_FLAG_10000; - ret = func_800B8500(actor, play, xzRange, yRange, itemId); + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId); actor->xzDistToPlayer = xzDistToPlayerTemp; break; - case 5: + case SUBS_OFFER_MODE_AUTO_TARGETED: //! @bug: Both x and y conditionals are always true, || should be an && if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT)) && (fabsf(actor->playerHeightRel) <= yRange) && (actor->xzDistToPlayer <= xzRange) && actor->isTargeted) { actor->flags |= ACTOR_FLAG_10000; - ret = func_800B8500(actor, play, xzRange, yRange, itemId); + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId); } break; - case 6: + case SUBS_OFFER_MODE_AUTO_NEARBY_ONSCREEN: //! @bug: Both x and y conditionals are always true, || should be an && if (((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT)) && (fabsf(actor->playerHeightRel) <= yRange) && (actor->xzDistToPlayer <= xzRange)) { actor->flags |= ACTOR_FLAG_10000; - ret = func_800B8500(actor, play, xzRange, yRange, itemId); + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, itemId); } break; @@ -876,7 +884,7 @@ s32 func_8013C964(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 it break; } - return ret; + return canAccept; } const u8 sShadowMaps[4][12][12] = { @@ -1504,10 +1512,10 @@ s32 SubS_LineSegVsPlane(Vec3f* point, Vec3s* rot, Vec3f* unitVec, Vec3f* linePoi /** * Finds the first actor instance of a specified Id and category verified with a custom callback. - * The callback should return `true` when the actor is succesfully verified. + * The callback should return `true` when the actor is successfully verified. */ Actor* SubS_FindActorCustom(PlayState* play, Actor* actor, Actor* actorListStart, u8 actorCategory, s16 actorId, - void* verifyData, VerifyActor verifyActor) { + void* verifyData, VerifyFindActorFunc verifyActorFunc) { Actor* actorIter = actorListStart; if (actorListStart == NULL) { @@ -1517,36 +1525,40 @@ Actor* SubS_FindActorCustom(PlayState* play, Actor* actor, Actor* actorListStart while ((actorIter != NULL) && ((actorId != actorIter->id) || ((actorId == actorIter->id) && - ((verifyActor == NULL) || ((verifyActor != NULL) && !verifyActor(play, actor, actorIter, verifyData)))))) { + ((verifyActorFunc == NULL) || + ((verifyActorFunc != NULL) && !verifyActorFunc(play, actor, actorIter, verifyData)))))) { actorIter = actorIter->next; } return actorIter; } -//! TODO: Needs docs with func_800B8500 -s32 func_8013E748(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemId, void* data, - func_8013E748_VerifyFunc verifyFunc) { - s32 ret = false; +/** + * Will extend a TalkExchange offer to the player if the actor is verified with a custom callback. + * The callback should return `true` when the actor is successfully verified. + */ +s32 SubS_OfferTalkExchangeCustom(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemAction, + void* data, VerifyTalkExchangeActorFunc verifyActorFunc) { + s32 canAccept = false; - if ((verifyFunc == NULL) || ((verifyFunc != NULL) && verifyFunc(play, actor, data))) { - ret = func_800B8500(actor, play, xzRange, yRange, exchangeItemId); + if ((verifyActorFunc == NULL) || ((verifyActorFunc != NULL) && verifyActorFunc(play, actor, data))) { + canAccept = Actor_OfferTalkExchange(actor, play, xzRange, yRange, exchangeItemAction); } - return ret; + return canAccept; } s32 SubS_ActorAndPlayerFaceEachOther(PlayState* play, Actor* actor, void* data) { Player* player = GET_PLAYER(play); - Vec3s* yawTols = (Vec3s*)data; + Vec3s* yawRanges = (Vec3s*)data; s16 playerYaw = ABS(BINANG_SUB(Actor_WorldYawTowardActor(&player->actor, actor), player->actor.shape.rot.y)); s16 actorYaw = ABS(BINANG_SUB(actor->yawTowardsPlayer, actor->shape.rot.y)); s32 areFacing = false; - s32 actorYawTol = ABS(yawTols->y); - s32 playerYawTol; + s32 actorYawRange = ABS(yawRanges->y); + s32 playerYawRange; - if (actorYaw < (s16)actorYawTol) { - playerYawTol = ABS(yawTols->x); - if (playerYaw < (s16)playerYawTol) { + if (actorYaw < (s16)actorYawRange) { + playerYawRange = ABS(yawRanges->x); + if (playerYaw < (s16)playerYawRange) { areFacing = true; } } @@ -1554,14 +1566,14 @@ s32 SubS_ActorAndPlayerFaceEachOther(PlayState* play, Actor* actor, void* data) return areFacing; } -//! TODO: Needs docs with func_800B8500 -s32 func_8013E8F8(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 exhangeItemId, s16 playerYawTol, - s16 actorYawTol) { - Vec3s yawTols; +s32 SubS_OfferTalkExchangeFacing(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, s32 exchangeItemAction, + s16 playerYawRange, s16 actorYawRange) { + Vec3s yawRanges; - yawTols.x = playerYawTol; - yawTols.y = actorYawTol; - return func_8013E748(actor, play, xzRange, yRange, exhangeItemId, &yawTols, SubS_ActorAndPlayerFaceEachOther); + yawRanges.x = playerYawRange; + yawRanges.y = actorYawRange; + return SubS_OfferTalkExchangeCustom(actor, play, xzRange, yRange, exchangeItemAction, &yawRanges, + SubS_ActorAndPlayerFaceEachOther); } /** diff --git a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c index 11db327fab..93c0214dfd 100644 --- a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c +++ b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.c @@ -77,7 +77,7 @@ static InitChainEntry sInitChain[] = { /** * Spawns another wooden flower instance that handles the opened flower's collision. - * Returns true if this wooden flower instance was succesfully spawned. + * Returns true if this wooden flower instance was successfully spawned. */ s32 BgNumaHana_SpawnOpenFlowerCollisionChild(BgNumaHana* this, PlayState* play) { Actor* child; diff --git a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c index 5d5009877b..a3b8bc1a29 100644 --- a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c +++ b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c @@ -1039,7 +1039,7 @@ void DmChar08_Update(Actor* thisx, PlayState* play) { } if (this->unk_1FF != 0) { func_80AAFCCC(this, play); - func_800B8614(&this->dyna.actor, play, 400.0f); + Actor_OfferTalk(&this->dyna.actor, play, 400.0f); } func_80AB096C(this, play); DmChar08_UpdateCollision(this, play); diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c index 584edd42ed..3c12f1bbba 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c @@ -207,20 +207,19 @@ s32* func_80C22880(DmTag* this, PlayState* play) { s32 func_80C2291C(DmTag* this, PlayState* play) { s32 ret = false; - if (this->unk_18C & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - this->unk_18C |= 8; - SubS_UpdateFlags(&this->unk_18C, 0, 7); - this->msgEventScript = func_80C22880(this, play); - this->actionFunc = func_80C229FC; - ret = true; - } + if (((this->unk_18C & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + this->unk_18C |= 8; + SubS_SetOfferMode(&this->unk_18C, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->msgEventScript = func_80C22880(this, play); + this->actionFunc = func_80C229FC; + ret = true; } return ret; } void func_80C229AC(DmTag* this, PlayState* play) { - SubS_UpdateFlags(&this->unk_18C, 3, 7); + SubS_SetOfferMode(&this->unk_18C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->actor.flags |= ACTOR_FLAG_1; } @@ -246,7 +245,7 @@ void DmTag_Init(Actor* thisx, PlayState* play) { player->stateFlags1 |= PLAYER_STATE1_20; this->unk_18E = 2; this->unk_18C = 0; - SubS_UpdateFlags(&this->unk_18C, 4, 7); + SubS_SetOfferMode(&this->unk_18C, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); this->actor.flags &= ~ACTOR_FLAG_1; this->actionFunc = DmTag_DoNothing; } else if (this->actor.room == 2) { @@ -267,6 +266,7 @@ void DmTag_Update(Actor* thisx, PlayState* play) { func_80C2291C(this, play); this->actionFunc(this, play); - func_8013C964(&this->actor, play, 40.0f, fabsf(this->actor.playerHeightRel) + 1.0f, 0, this->unk_18C & 7); + SubS_Offer(&this->actor, play, 40.0f, fabsf(this->actor.playerHeightRel) + 1.0f, PLAYER_IA_NONE, + this->unk_18C & SUBS_OFFER_MODE_MASK); Actor_SetFocus(&this->actor, 0.0f); } diff --git a/src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c b/src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c index c917f01a77..c85db8ef0c 100644 --- a/src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c +++ b/src/overlays/actors/ovl_Elf_Msg4/z_elf_msg4.c @@ -160,7 +160,7 @@ void ElfMsg4_Update(Actor* thisx, PlayState* play) { return; } - if ((bgActor != NULL) && (Actor_ProcessTalkRequest(bgActor, &play->state))) { + if ((bgActor != NULL) && Actor_ProcessTalkRequest(bgActor, &play->state)) { if (ELFMSG4_GET_SWITCHFLAG(thisx) != 0x7F) { Flags_SetSwitch(play, ELFMSG4_GET_SWITCHFLAG(thisx)); } diff --git a/src/overlays/actors/ovl_En_Ah/z_en_ah.c b/src/overlays/actors/ovl_En_Ah/z_en_ah.c index b199d97160..71da776acc 100644 --- a/src/overlays/actors/ovl_En_Ah/z_en_ah.c +++ b/src/overlays/actors/ovl_En_Ah/z_en_ah.c @@ -171,13 +171,12 @@ void func_80BD2BA4(EnAh* this, PlayState* play) { s32 func_80BD2BE8(EnAh* this, PlayState* play) { s32 ret = false; - if (this->unk_2D8 & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_2D8, 0, 7); - ret = true; - this->unk_2D8 |= 8; - this->actionFunc = func_80BD3768; - } + if (((this->unk_2D8 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + ret = true; + this->unk_2D8 |= 8; + this->actionFunc = func_80BD3768; } return ret; @@ -406,7 +405,7 @@ s32 func_80BD3374(EnAh* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3s_Copy(&this->actor.world.rot, &D_80BD3EC4.rot); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); EnAh_ChangeAnim(this, ENAH_ANIM_0); - SubS_UpdateFlags(&this->unk_2D8, 3, 7); + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2D8 |= 0x40; return true; @@ -419,7 +418,7 @@ s32 func_80BD33FC(EnAh* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3s_Copy(&this->actor.world.rot, &D_80BD3ED8.rot); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); EnAh_ChangeAnim(this, ENAH_ANIM_4); - SubS_UpdateFlags(&this->unk_2D8, 3, 7); + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2D8 |= (0x40 | 0x10); return true; @@ -471,19 +470,17 @@ s32 func_80BD3548(EnAh* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 func_80BD35BC(EnAh* this, PlayState* play) { s16 temp; - s16 temp2; switch (this->unk_1DC) { default: return false; case 2: - temp = BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.shape.rot.y); - temp2 = ABS_ALT(temp); - if (temp2 < 0x3800) { - SubS_UpdateFlags(&this->unk_2D8, 3, 7); + temp = ABS_ALT(BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.shape.rot.y)); + if (temp < 0x3800) { + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_2D8, 0, 7); + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } return false; } @@ -518,7 +515,7 @@ void func_80BD3768(EnAh* this, PlayState* play) { Vec3f sp34; if (func_8010BF58(&this->actor, play, func_80BD3294(this, play), NULL, &this->unk_1E0)) { - SubS_UpdateFlags(&this->unk_2D8, 3, 7); + SubS_SetOfferMode(&this->unk_2D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2D8 &= ~8; this->unk_2D8 |= 0x80; this->unk_2F4 = 20; @@ -580,7 +577,7 @@ void EnAh_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + 60; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2D8 & 7); + SubS_Offer(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2D8 & SUBS_OFFER_MODE_MASK); if (!(this->unk_2D8 & 0x10)) { Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 15787c39ed..4447877eed 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -1133,7 +1133,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { player->actor.textId = D_80BF048C[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x15E4) { - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; @@ -1142,7 +1142,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { player->actor.textId = D_80BF0494[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x15F9) { - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; @@ -1151,7 +1151,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { player->actor.textId = D_80BF049C[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x160C) { - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; @@ -1160,7 +1160,7 @@ void func_80BEE73C(EnAkindonuts* this, PlayState* play) { player->actor.textId = D_80BF04A4[params]; this->unk_33C = player->actor.textId; if (this->unk_33C == 0x1621) { - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = func_80BEF20C; } else { this->actionFunc = func_80BEF18C; @@ -1319,7 +1319,7 @@ void func_80BEEE10(EnAkindonuts* this, PlayState* play) { } else if (((this->actor.xzDistToPlayer < 100.0f) && (((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false)) || this->actor.isTargeted) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } else if (!(((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false) || !((this->actor.xzDistToPlayer < 200.0f) ? true : false)) { this->animIndex = ENAKINDONUTS_ANIM_4; @@ -1434,7 +1434,7 @@ void func_80BEF360(EnAkindonuts* this, PlayState* play) { void func_80BEF450(EnAkindonuts* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_80BEF4B8; } } @@ -1444,7 +1444,7 @@ void func_80BEF4B8(EnAkindonuts* this, PlayState* play) { this->unk_2DC(this, play); this->actionFunc = func_80BEEFA8; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c index 02a2004a46..b0b8822f6d 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -502,16 +502,17 @@ s32 func_80BDEC2C(EnAl* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 ret = false; - if ((this->unk_4C2 & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (((this->unk_4C2 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->unk_4C2 &= ~0x1800; - if (player->exchangeItemId == PLAYER_IA_LETTER_MAMA) { + if (player->exchangeItemAction == PLAYER_IA_LETTER_MAMA) { this->unk_4C2 |= 0x800; - this->unk_4F4 = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_IA_NONE) { + this->unk_4F4 = player->exchangeItemAction; + } else if (player->exchangeItemAction != PLAYER_IA_NONE) { this->unk_4C2 |= 0x1000; - this->unk_4F4 = player->exchangeItemId; + this->unk_4F4 = player->exchangeItemAction; } - SubS_UpdateFlags(&this->unk_4C2, 0, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_4E6 = 0; this->unk_4EC = 0; this->actor.child = this->unk_368; @@ -670,7 +671,7 @@ s32 func_80BDF244(EnAl* this, PlayState* play, ScheduleOutput* scheduleOutput) { if ((sp20 != NULL) && (sp20->update != NULL) && (temp_v0 != NULL) && (temp_v0->update != NULL)) { EnAl_ChangeAnim(this, ENAL_ANIM_0); - SubS_UpdateFlags(&this->unk_4C2, 3, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_368 = sp20; this->unk_4C2 |= 0x20; ret = true; @@ -679,7 +680,7 @@ s32 func_80BDF244(EnAl* this, PlayState* play, ScheduleOutput* scheduleOutput) { } s32 func_80BDF308(EnAl* this, PlayState* play, ScheduleOutput* scheduleOutput) { - SubS_UpdateFlags(&this->unk_4C2, 3, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); switch (scheduleOutput->result) { case 1: @@ -752,9 +753,9 @@ void func_80BDF414(EnAl* this, PlayState* play) { temp_v0 = this->actor.world.rot.y - this->actor.yawTowardsPlayer; if (((this->unk_4EA == 0) && (ABS_ALT(temp_v0) >= 0x5800)) || ((this->unk_4EA == 5) && (ABS_ALT(temp_v0) >= 0x5800)) || (this->unk_4EA == 2)) { - SubS_UpdateFlags(&this->unk_4C2, 3, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_4C2, 0, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } } @@ -799,7 +800,7 @@ void func_80BDF5E8(EnAl* this, PlayState* play) { void func_80BDF6C4(EnAl* this, PlayState* play) { if (func_8010BF58(&this->actor, play, this->unk_360, this->unk_4EC, &this->unk_364)) { - SubS_UpdateFlags(&this->unk_4C2, 3, 7); + SubS_SetOfferMode(&this->unk_4C2, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_4C2 &= ~0x20; this->unk_4C2 |= 0x200; this->actor.child = NULL; @@ -846,7 +847,7 @@ void EnAl_Update(Actor* thisx, PlayState* play) { if (this->unk_35C != 0) { EnAl_UpdateSkelAnime(this); func_80BDEE5C(this); - func_8013C964(&this->actor, play, this->unk_4D4, 30.0f, this->unk_4F0, this->unk_4C2 & 7); + SubS_Offer(&this->actor, play, this->unk_4D4, 30.0f, this->unk_4F0, this->unk_4C2 & SUBS_OFFER_MODE_MASK); func_80BDE318(this, play); } } diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/src/overlays/actors/ovl_En_Ani/z_en_ani.c index 90d31b6018..3adc9ad12a 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.c +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.c @@ -164,7 +164,7 @@ void EnAni_SetText(EnAni* this, PlayState* play, u16 textId) { this->actor.textId = textId; if ((this->stateFlags & ANI_STATE_WRITHING) || ABS_ALT(diffAngle) <= 0x4300) { if (this->actor.xzDistToPlayer < 100.0f) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 47372da433..bfc0e6e5ac 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -576,7 +576,7 @@ void EnAob01_BeforeRace_Idle(EnAob01* this, PlayState* play) { if (EnAob01_PlayerIsHoldingDog(this, play) && !(this->stateFlags & ENAOB01_FLAG_PLAYER_CAN_TALK)) { if (this->collider.base.ocFlags2 & OC2_HIT_PLAYER) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); this->stateFlags |= ENAOB01_FLAG_TALKING_TO_PLAYER_HOLDING_DOG; this->actionFunc = EnAob01_BeforeRace_Talk; } @@ -592,7 +592,7 @@ void EnAob01_BeforeRace_Idle(EnAob01* this, PlayState* play) { this->stateFlags &= ~ENAOB01_FLAG_PLAYER_CAN_TALK; if ((this->actor.xzDistToPlayer < 100.0f) && !(this->collider.base.ocFlags2 & OC2_HIT_PLAYER)) { this->stateFlags |= ENAOB01_FLAG_PLAYER_CAN_TALK; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } } @@ -883,7 +883,7 @@ void EnAob01_AfterRace_GiveRaceResult(EnAob01* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnAob01_AfterRace_Talk; } else if (this->actor.xzDistToPlayer < 100.0f) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -940,7 +940,7 @@ void EnAob01_AfterRace_AfterGivingReward(EnAob01* this, PlayState* play) { } this->textId = 0; - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); SET_EVENTINF_DOG_RACE_STATE(EVENTINF_DOG_RACE_STATE_NOT_STARTED); this->actionFunc = EnAob01_AfterRace_AskToPlayAgain; } @@ -956,7 +956,7 @@ void EnAob01_AfterRace_AskToPlayAgain(EnAob01* this, PlayState* play) { Message_ContinueTextbox(play, this->textId); this->actionFunc = EnAob01_BeforeRace_RespondToPlayAgainQuestion; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index b4ce21b6c7..6bede4ab42 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -1433,8 +1433,8 @@ void func_80A97410(EnAz* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { func_80A97114(this, play); this->unk_378 = 2; - } else if (func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, - PLAYER_IA_MINUS1)) { + } else if (Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, + this->actor.playerHeightRel, PLAYER_IA_MINUS1)) { this->actor.textId = func_80A973B4(this, play); } } else { @@ -1467,7 +1467,7 @@ void func_80A97410(EnAz* this, PlayState* play) { } else { Actor_GetScreenPos(play, &this->actor, &sp56, &sp54); if ((sp56 >= 0) && (sp56 <= SCREEN_WIDTH) && (sp54 >= 0) && (sp54 <= SCREEN_HEIGHT) && - func_800B8500(&this->actor, play, 120.0f, 120.0f, PLAYER_IA_NONE)) { + Actor_OfferTalkExchange(&this->actor, play, 120.0f, 120.0f, PLAYER_IA_NONE)) { this->unk_3D2 = func_80A97274(this, play); if ((this->unk_3D2 == 0x10CE) || (this->unk_3D2 == 0x10D4)) { this->actor.textId = 0; diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index 671a444c0d..b2d64c3860 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -587,7 +587,7 @@ void EnBaba_Idle(EnBaba* this, PlayState* play) { if (this->stateFlags & BOMB_SHOP_LADY_STATE_AUTOTALK) { this->actor.flags |= ACTOR_FLAG_10000; } - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } } @@ -659,7 +659,7 @@ void EnBaba_GaveBlastMask(EnBaba* this, PlayState* play) { EnBaba_HandleConversation(this, play); this->actionFunc = EnBaba_Talk; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -687,7 +687,7 @@ void EnBaba_FollowSchedule(EnBaba* this, PlayState* play) { Message_StartTextbox(play, 0x2A39, &this->actor); // "I'm sorry" this->actionFunc = EnBaba_FollowSchedule_Talk; } else if ((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } Actor_MoveWithGravity(&this->actor); diff --git a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c index 606c880d3e..0bd7dfc0bf 100644 --- a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c +++ b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c @@ -180,7 +180,7 @@ void func_80BE887C(EnBaisen* this, PlayState* play) { } } this->actor.textId = sTextIds[this->textIdIndex]; - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c index b8e42ff66c..ebd4b50001 100644 --- a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c +++ b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c @@ -149,7 +149,7 @@ s32 func_809CC270(EnBba01* this, PlayState* play) { Actor_GetScreenPos(play, &this->enHy.actor, &x, &y); //! @bug: Both x and y conditionals are always true, || should be an && if (!this->enHy.waitingOnInit && ((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) { - func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); + Actor_OfferTalkExchangeEquiCylinder(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); } return true; } diff --git a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c index 8eb598c043..0f2850266c 100644 --- a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c +++ b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c @@ -113,7 +113,7 @@ void func_809CCEE8(EnBji01* this, PlayState* play) { } else { this->moonsTear = (ObjMoonStone*)SubS_FindActor(play, NULL, ACTORCAT_PROP, ACTOR_OBJ_MOON_STONE); } - func_800B8500(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE); } } @@ -171,8 +171,8 @@ void func_809CD028(EnBji01* this, PlayState* play) { } else { this->textId = 0x5F1; } - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, - PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); break; case PLAYER_FORM_HUMAN: diff --git a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c index 09f70d0690..d21340d156 100644 --- a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c +++ b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c @@ -276,9 +276,9 @@ s32 EnBjt_ChooseBehaviour(Actor* thisx, PlayState* play) { break; case TOILET_HAND_BEHAVIOUR_TAKE_ITEM: - if (player->exchangeItemId != PLAYER_IA_NONE) { - EnBjt_TakeItem(player->exchangeItemId); - player->exchangeItemId = PLAYER_IA_NONE; + if (player->exchangeItemAction != PLAYER_IA_NONE) { + EnBjt_TakeItem(player->exchangeItemAction); + player->exchangeItemAction = PLAYER_IA_NONE; } if (EnBjt_Vanish(this)) { this->timer = 60; @@ -320,9 +320,10 @@ s32 EnBjt_ChooseBehaviour(Actor* thisx, PlayState* play) { s32 EnBjt_CheckTalk(EnBjt* this, PlayState* play) { s32 ret = false; - if ((this->stateFlags & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (((this->stateFlags & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->stateFlags |= TOILET_HAND_STATE_TALKING; - SubS_UpdateFlags(&this->stateFlags, 0, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->msgEventCallback = EnBjt_ChooseBehaviour; this->behaviour = 0; this->actionFunc = EnBjt_Talk; @@ -365,7 +366,7 @@ void EnBjt_Talk(EnBjt* this, PlayState* play) { if (func_8010BF58(&this->actor, play, sMsgEventScript, this->msgEventCallback, &this->msgEventArg4)) { this->actor.flags &= ~ACTOR_FLAG_TALK_REQUESTED; - SubS_UpdateFlags(&this->stateFlags, 3, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->stateFlags &= ~TOILET_HAND_STATE_TALKING; this->msgEventArg4 = 0; this->actionFunc = EnBjt_FollowSchedule; @@ -384,7 +385,7 @@ void EnBjt_FollowSchedule(EnBjt* this, PlayState* play) { if (scheduleOutput.result == TOILET_HAND_SCH_AVAILABLE) { if (this->stateFlags & TOILET_HAND_STATE_APPEARING) { if (EnBjt_Appear(this)) { - SubS_UpdateFlags(&this->stateFlags, 3, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } } else if (this->stateFlags & TOILET_HAND_STATE_VANISHING) { EnBjt_Vanish(this); @@ -392,7 +393,7 @@ void EnBjt_FollowSchedule(EnBjt* this, PlayState* play) { // Vanish if player goes too far away or heart piece given if ((fabsf(this->actor.playerHeightRel) > 70.0f) || (this->actor.xzDistToPlayer > 140.0f) || CHECK_WEEKEVENTREG(WEEKEVENTREG_90_80)) { - SubS_UpdateFlags(&this->stateFlags, 0, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->playedSfx = false; this->stateFlags &= ~TOILET_HAND_STATE_VISIBLE; this->stateFlags |= TOILET_HAND_STATE_VANISHING; @@ -447,7 +448,7 @@ void EnBjt_Update(Actor* thisx, PlayState* play) { if (this->scheduleResult != TOILET_HAND_SCH_NONE) { EnBjt_UpdateSkelAnime(this); - func_8013C964(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE, this->stateFlags & 7); + SubS_Offer(&this->actor, play, 60.0f, 10.0f, PLAYER_IA_NONE, this->stateFlags & SUBS_OFFER_MODE_MASK); Actor_SetFocus(&this->actor, 26.0f); EnBjt_UpdateCollision(this, play); } diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 5c98a27630..b40f1c7744 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -572,7 +572,7 @@ void func_809C59F0(EnBomBowlMan* this, PlayState* play) { } else { this->actor.textId = 0x716; } - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_809C5AA4; } else { Actor_OfferGetItem(&this->actor, play, GI_BOMBERS_NOTEBOOK, 300.0f, 300.0f); @@ -587,7 +587,7 @@ void func_809C5AA4(EnBomBowlMan* this, PlayState* play) { this->actionFunc = func_809C5598; } } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c index 88ce2bf92e..f3baf9341e 100644 --- a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c +++ b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c @@ -361,7 +361,7 @@ void func_80C03AF4(EnBombers* this, PlayState* play) { this->collider.dim.height = 60; func_80C03F64(this); } else { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } @@ -504,7 +504,7 @@ void func_80C04354(EnBombers* this, PlayState* play) { this->unk_28E = 0; this->actionFunc = func_80C043C8; } else { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c index ae7cacff7b..390eca9f13 100644 --- a/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c +++ b/src/overlays/actors/ovl_En_Bombers2/z_en_bombers2.c @@ -196,7 +196,7 @@ void func_80C04BA0(EnBombers2* this, PlayState* play) { return; } if (yawDiffAbs < 0x3BB5) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 21103d464a..9218016e38 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -449,7 +449,7 @@ void func_80BFEB64(EnBomjima* this, PlayState* play) { } if (CutsceneManager_GetCurrentCsId() == CS_ID_NONE) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } if ((this->bombal->actor.update == NULL) || (this->bombal->actor.colChkInfo.health == 0)) { @@ -616,7 +616,7 @@ void func_80BFF174(EnBomjima* this, PlayState* play) { if (this->unk_2BC >= 5) { func_80BFE67C(this, play); } - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } @@ -948,7 +948,7 @@ void func_80C00168(EnBomjima* this, PlayState* play) { this->unk_2DC = this->actor.yawTowardsPlayer; func_80C00234(this); } else { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index 84b548f996..e52c49a828 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -575,7 +575,7 @@ void func_80C0201C(EnBomjimb* this, PlayState* play) { this->unk_2CA = 10; this->actionFunc = func_80C02A14; } else { - func_800B8614(&this->actor, play, 40.0f); + Actor_OfferTalk(&this->actor, play, 40.0f); } } diff --git a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c index 6df2e490a3..6416f3325c 100644 --- a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c +++ b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c @@ -141,7 +141,7 @@ s32 func_809CB4A0(EnCne01* this, PlayState* play) { Actor_GetScreenPos(play, &this->enHy.actor, &x, &y); //! @bug: Both x and y conditionals are always true, || should be an && if (!this->enHy.waitingOnInit && ((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) { - func_800B85E0(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); + Actor_OfferTalkExchangeEquiCylinder(&this->enHy.actor, play, 30.0f, PLAYER_IA_MAGIC_BEANS); } return true; } diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index aa74c5007d..feb0a8e549 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -256,7 +256,7 @@ void EnCow_Talk(EnCow* this, PlayState* play) { } } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 170.0f); + Actor_OfferTalk(&this->actor, play, 170.0f); this->actor.textId = 0x32C8; //! @bug textId is reset to this no matter the intial value } @@ -274,7 +274,7 @@ void EnCow_Idle(EnCow* this, PlayState* play) { gHorsePlayedEponasSong = false; this->actionFunc = EnCow_Talk; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 170.0f); + Actor_OfferTalk(&this->actor, play, 170.0f); this->actor.textId = 0x32C8; // Text to give milk after playing Epona's Song. EnCow_UpdateAnimation(this, play); @@ -298,7 +298,7 @@ void EnCow_Idle(EnCow* this, PlayState* play) { this->actor.textId = 0x32CA; // Text if you don't have an empty bottle. } this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 170.0f); + Actor_OfferTalk(&this->actor, play, 170.0f); this->actionFunc = EnCow_Talk; } } else { diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 434cb07cf9..afe72d120c 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -202,12 +202,11 @@ s32 func_80B3E69C(EnDai* this, PlayState* play) { s32 func_80B3E7C8(EnDai* this, PlayState* play) { s32 ret = false; - if (this->unk_1CE & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_1CE, 0, 7); - this->actionFunc = func_80B3EF90; - ret = true; - } + if (((this->unk_1CE & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_1CE, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->actionFunc = func_80B3EF90; + ret = true; } return ret; @@ -429,7 +428,7 @@ void func_80B3EEDC(EnDai* this, PlayState* play) { void func_80B3EF90(EnDai* this, PlayState* play) { if (func_8010BF58(&this->actor, play, D_80B3FC8C, NULL, &this->unk_1D0)) { - SubS_UpdateFlags(&this->unk_1CE, 3, 7); + SubS_SetOfferMode(&this->unk_1CE, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_1D0 = 0; this->actionFunc = func_80B3F00C; } else { @@ -526,7 +525,7 @@ void EnDai_Init(Actor* thisx, PlayState* play) { this->unk_1D6 = 0; if (CHECK_WEEKEVENTREG(WEEKEVENTREG_CLEARED_SNOWHEAD_TEMPLE)) { - SubS_UpdateFlags(&this->unk_1CE, 3, 7); + SubS_SetOfferMode(&this->unk_1CE, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_1CE |= 0x80; this->unk_1CD = 0xFF; this->actionFunc = func_80B3F00C; @@ -564,7 +563,7 @@ void EnDai_Update(Actor* thisx, PlayState* play) { SkelAnime_Update(&this->skelAnime); func_80B3E834(this); if (!(this->unk_1CE & 0x200)) { - func_8013C964(&this->actor, play, 0.0f, 0.0f, PLAYER_IA_NONE, this->unk_1CE & 7); + SubS_Offer(&this->actor, play, 0.0f, 0.0f, PLAYER_IA_NONE, this->unk_1CE & SUBS_OFFER_MODE_MASK); } func_80B3E460(this); } diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 2c232f096f..00a912adc4 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -224,7 +224,7 @@ void func_809438F8(EnDaiku* this, PlayState* play) { this->unk_280 = this->actor.yawTowardsPlayer; if ((this->unk_278 == ENDAIKU_PARAM_FF_1) || (this->unk_278 == ENDAIKU_PARAM_FF_2) || (angle <= 0x2890)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } } diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c index 311b6d216d..bdb959b64a 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c @@ -232,7 +232,7 @@ void func_80BE66E4(EnDaiku2* this, PlayState* play) { return; } - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); if ((this->unk_276 == 8) && Animation_OnFrame(&this->skelAnime, 6.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EV_ROCK_BROKEN); @@ -350,7 +350,7 @@ void func_80BE6D40(EnDaiku2* this, PlayState* play) { } func_80BE61D0(this); } - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } void func_80BE6EB0(EnDaiku2* this) { @@ -421,7 +421,7 @@ void func_80BE6EF0(EnDaiku2* this, PlayState* play) { Math_Vec3f_Copy(&this->unk_268, &sp40); } } - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } void func_80BE71A0(EnDaiku2* this) { diff --git a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c index faacd75101..3a6302411c 100644 --- a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c +++ b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c @@ -132,7 +132,7 @@ void EnDemoheishi_Idle(EnDemoheishi* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { EnDemoheishi_SetupTalk(this); } else if (absYawDiff <= 0x4BB8) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index 46c6de9791..1e6af02ac1 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -487,7 +487,7 @@ void EnDg_TryPickUp(EnDg* this, PlayState* play) { this->actor.speed = 0.0f; if (Player_GetMask(play) == PLAYER_MASK_TRUTH) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); this->actionFunc = EnDg_SetupTalk; } else { this->actionFunc = EnDg_Held; @@ -1280,7 +1280,7 @@ void EnDg_SetupTalk(EnDg* this, PlayState* play) { EnDg_StartTextBox(this, play); this->actionFunc = EnDg_Talk; } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c index 5b7ba17257..47c6c2567b 100644 --- a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c +++ b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c @@ -95,10 +95,11 @@ void* func_80A50DF8(EnDnh* this, PlayState* play) { } s32 func_80A50E40(EnDnh* this, PlayState* play) { - if (!(this->unk18C & 7) || !Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (((this->unk18C & SUBS_OFFER_MODE_MASK) == SUBS_OFFER_MODE_NONE) || + !Actor_ProcessTalkRequest(&this->actor, &play->state)) { return 0; } - SubS_UpdateFlags(&this->unk18C, 0, 7); + SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->msgEventScript = func_80A50DF8(this, play); this->actionFunc = func_80A50F38; return 1; @@ -116,7 +117,7 @@ s32 func_80A50EC0(EnDnh* this) { void func_80A50F38(EnDnh* this, PlayState* play) { if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->unk194)) { - SubS_UpdateFlags(&this->unk18C, 3, 7); + SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk194 = 0; this->unk198 = 0; this->actionFunc = EnDnh_DoNothing; @@ -135,10 +136,10 @@ void EnDnh_Init(Actor* thisx, PlayState* play) { SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, 0); this->actor.shape.yOffset = 1100.0f; if (gSaveContext.save.entrance != ENTRANCE(TOURIST_INFORMATION, 1)) { - SubS_UpdateFlags(&this->unk18C, 3, 7); + SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk198 = 0; } else { - SubS_UpdateFlags(&this->unk18C, 4, 7); + SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); this->unk198 = CHECK_EVENTINF(EVENTINF_35) ? 2 : 1; } if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_SAVED_KOUME)) { @@ -159,7 +160,7 @@ void EnDnh_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); func_80A50EC0(this); SkelAnime_Update(&this->skelAnime); - func_8013C964(&this->actor, play, 60.0f, 30.0f, 0, this->unk18C & 7); + SubS_Offer(&this->actor, play, 60.0f, 30.0f, PLAYER_IA_NONE, this->unk18C & SUBS_OFFER_MODE_MASK); Actor_SetFocus(&this->actor, 26.0f); } diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index 56a2b93790..bfe4c7e161 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -368,7 +368,7 @@ void func_80A71C3C(EnDno* this, PlayState* play) { play->msgCtx.msgLength = 0; func_80A71E54(this, play); } else if (this->actor.xzDistToPlayer < 60.0f) { - func_800B8614(&this->actor, play, 60.0f); + Actor_OfferTalk(&this->actor, play, 60.0f); } } @@ -568,12 +568,13 @@ void func_80A724B8(EnDno* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { func_80A725E0(this, play); } else if (this->actor.xzDistToPlayer < 60.0f) { - func_800B8614(&this->actor, play, 60.0f); + Actor_OfferTalk(&this->actor, play, 60.0f); } } void func_80A7256C(EnDno* this, PlayState* play) { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_MINUS1); } void func_80A72598(EnDno* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 1dd5dac34d..8263001aa1 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -245,13 +245,14 @@ s32 func_80B3CEC0(EnDnp* this, PlayState* play) { s32 func_80B3CF60(EnDnp* this, PlayState* play) { s32 ret = false; - if ((this->unk_322 & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_322, 0, 7); + if (((this->unk_322 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_322 |= 8; this->actionFunc = func_80B3D3F8; ret = true; } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) && Actor_HasParent(&this->actor, play)) { - SubS_UpdateFlags(&this->unk_322, 0, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_322 &= ~0x500; this->actor.parent = NULL; this->unk_32E = 0; @@ -271,12 +272,12 @@ s32 func_80B3D044(EnDnp* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_1; this->cueId = 255; } - SubS_UpdateFlags(&this->unk_322, 0, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->actionFunc = func_80B3D11C; ret = true; } else if (this->unk_322 & 0x200) { this->actor.flags |= ACTOR_FLAG_1; - SubS_UpdateFlags(&this->unk_322, 3, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_322 &= ~(0x200 | 0x10); this->actionFunc = func_80B3D2D4; } @@ -355,14 +356,14 @@ void func_80B3D338(EnDnp* this, PlayState* play) { } else { this->actor.textId = 0x971; player->actor.textId = this->actor.textId; - func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); } } } void func_80B3D3F8(EnDnp* this, PlayState* play) { if (func_8010BF58(&this->actor, play, D_80B3DE58, NULL, &this->unk_328)) { - SubS_UpdateFlags(&this->unk_322, 3, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_322 &= ~8; this->actionFunc = func_80B3D2D4; } else { @@ -375,7 +376,7 @@ void func_80B3D47C(EnDnp* this, PlayState* play) { Math_SmoothStepToF(&this->actor.scale.x, 0.0085f, 0.1f, 0.01f, 0.001f); if ((s32)(this->actor.scale.x * 10000.0f) >= 85) { this->actor.flags |= ACTOR_FLAG_1; - SubS_UpdateFlags(&this->unk_322, 3, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_322 &= ~0x10; this->unk_322 |= 0x400; this->actor.scale.x = 0.0085f; @@ -411,7 +412,7 @@ void EnDnp_Init(Actor* thisx, PlayState* play) { if (EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_RELEASED_FROM_BOTTLE) { this->actor.flags &= ~ACTOR_FLAG_1; Actor_SetScale(&this->actor, 0.00085000007f); - SubS_UpdateFlags(&this->unk_322, 0, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->actor.shape.rot.x = 0; this->actor.world.rot.x = this->actor.shape.rot.x; this->actor.csId = 16; @@ -421,7 +422,7 @@ void EnDnp_Init(Actor* thisx, PlayState* play) { ((EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_DEKU_KINGS_CHAMBER) && CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20))) { Actor_SetScale(&this->actor, 0.0085f); - SubS_UpdateFlags(&this->unk_322, 3, 7); + SubS_SetOfferMode(&this->unk_322, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_322 |= 0x400; if ((play->sceneId == SCENE_MITURIN) && CHECK_WEEKEVENTREG(WEEKEVENTREG_29_40)) { this->unk_322 |= 0x20; @@ -462,7 +463,7 @@ void EnDnp_Update(Actor* thisx, PlayState* play) { if ((this->unk_322 & 0x400) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { Actor_OfferGetItem(&this->actor, play, GI_MAX, sp2C, sp28); } - func_8013C964(&this->actor, play, sp2C, sp28, PLAYER_IA_NONE, this->unk_322 & 7); + SubS_Offer(&this->actor, play, sp2C, sp28, PLAYER_IA_NONE, this->unk_322 & SUBS_OFFER_MODE_MASK); Actor_SetFocus(&this->actor, 30.0f); func_80B3CC80(this, play); } diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 667f1eafbe..4e47902f7f 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -127,14 +127,14 @@ s32 func_80A52648(EnDnq* this, PlayState* play) { this->cueId = 255; this->unk_37C |= 0x20; } - SubS_UpdateFlags(&this->unk_37C, 0, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); ret = true; } else { if (this->unk_37C & 0x20) { this->picto.actor.flags |= ACTOR_FLAG_1; this->cueId = 255; this->unk_37C &= ~0x20; - SubS_UpdateFlags(&this->unk_37C, 3, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } } @@ -323,8 +323,9 @@ s32* func_80A52CF8(EnDnq* this, PlayState* play) { s32 func_80A52D44(EnDnq* this, PlayState* play) { s32 ret = false; - if ((this->unk_37C & 7) && Actor_ProcessTalkRequest(&this->picto.actor, &play->state)) { - SubS_UpdateFlags(&this->unk_37C, 0, 7); + if (((this->unk_37C & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->picto.actor, &play->state)) { + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_380 = func_80A52CF8(this, play); this->actionFunc = func_80A52FB8; ret = true; @@ -338,9 +339,9 @@ void func_80A52DC8(EnDnq* this, PlayState* play) { s16 yaw = this->picto.actor.yawTowardsPlayer - this->picto.actor.world.rot.y; if (yaw <= 0x3800) { - SubS_UpdateFlags(&this->unk_37C, 3, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_37C, 0, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { @@ -379,7 +380,7 @@ void func_80A52FB8(EnDnq* this, PlayState* play) { s16 sp2E = this->picto.actor.yawTowardsPlayer; if (func_8010BF58(&this->picto.actor, play, this->unk_380, NULL, &this->unk_1E0)) { - SubS_UpdateFlags(&this->unk_37C, 3, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_386 = 0; this->actionFunc = func_80A52DC8; } else { @@ -429,7 +430,7 @@ void EnDnq_Init(Actor* thisx, PlayState* play) { this->picto.actor.targetMode = 1; this->unk_386 = 0; this->unk_37C = 0; - SubS_UpdateFlags(&this->unk_37C, 3, 7); + SubS_SetOfferMode(&this->unk_37C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80)) { this->unk_3A4 = 1; } else { @@ -458,8 +459,8 @@ void EnDnq_Update(Actor* thisx, PlayState* play) { Actor_UpdateBgCheckInfo(play, &this->picto.actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); this->unk_394 = this->picto.actor.xzDistToPlayer; func_80A52C6C(this, play); - func_8013C964(&this->picto.actor, play, this->unk_390, fabsf(this->picto.actor.playerHeightRel) + 1.0f, - PLAYER_IA_NONE, this->unk_37C & 7); + SubS_Offer(&this->picto.actor, play, this->unk_390, fabsf(this->picto.actor.playerHeightRel) + 1.0f, + PLAYER_IA_NONE, this->unk_37C & SUBS_OFFER_MODE_MASK); this->picto.actor.xzDistToPlayer = this->unk_394; Actor_SetFocus(&this->picto.actor, 46.0f); func_80A52604(this, play); diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index a9552c73eb..9d5c6ae489 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -226,22 +226,21 @@ s32 EnDns_GetCueType(EnDns* this) { s32 func_8092CAD0(EnDns* this, PlayState* play) { s32 ret = false; - if (this->unk_2C6 & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_2C6, 0, 7); - this->unk_2C6 &= ~0x10; - if (ENDNS_GET_4000(&this->actor)) { - this->unk_2F0 = 0.0f; - if (this->unk_2D2 != 0) { - this->unk_2F0 = this->skelAnime.curFrame; - func_8092C63C(this, EN_DNS_ANIM_WALK_1); - } - this->unk_2DA = this->actor.world.rot.y; + if (((this->unk_2C6 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->unk_2C6 &= ~0x10; + if (ENDNS_GET_4000(&this->actor)) { + this->unk_2F0 = 0.0f; + if (this->unk_2D2 != 0) { + this->unk_2F0 = this->skelAnime.curFrame; + func_8092C63C(this, EN_DNS_ANIM_WALK_1); } - this->unk_1E0 = func_8092C9BC(this, play); - this->actionFunc = func_8092D4D8; - ret = true; + this->unk_2DA = this->actor.world.rot.y; } + this->unk_1E0 = func_8092C9BC(this, play); + this->actionFunc = func_8092D4D8; + ret = true; } return ret; } @@ -253,14 +252,14 @@ s32 func_8092CB98(EnDns* this, PlayState* play) { if (!(this->unk_2C6 & 0x80)) { this->cueType = EnDns_GetCueType(this); this->actor.flags &= ~ACTOR_FLAG_1; - SubS_UpdateFlags(&this->unk_2C6, 0, 7); + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_2C6 |= 0x80; this->cueId = 255; } phi_v1 = 1; } else if (this->unk_2C6 & 0x80) { this->actor.flags |= ACTOR_FLAG_1; - SubS_UpdateFlags(&this->unk_2C6, 3, 7); + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2C6 &= ~0x80; } return phi_v1; @@ -401,7 +400,7 @@ void func_8092D1B8(EnDns* this, PlayState* play) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) && !CHECK_EVENTINF(EVENTINF_15) && func_8092CC68(play)) { player->stateFlags1 |= PLAYER_STATE1_20; this->unk_2C6 |= 0x100; - SubS_UpdateFlags(&this->unk_2C6, 4, 7); + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); Audio_PlaySfx(NA_SE_SY_FOUND); SET_EVENTINF(EVENTINF_15); this->unk_2F4 = func_8092CCEC; @@ -454,7 +453,7 @@ void func_8092D4D8(EnDns* this, PlayState* play) { func_8092C63C(this, EN_DNS_ANIM_WALK_1); } } else if (func_8010BF58(&this->actor, play, this->unk_1E0, this->unk_2F4, &this->unk_1DC)) { - SubS_UpdateFlags(&this->unk_2C6, 3, 7); + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2F4 = NULL; if (ENDNS_GET_4000(&this->actor)) { if (!CHECK_EVENTINF(EVENTINF_15)) { @@ -519,7 +518,7 @@ void EnDns_Init(Actor* thisx, PlayState* play) { this->actor.gravity = -0.8f; this->unk_2D2 = 0; this->unk_2C6 = 0; - SubS_UpdateFlags(&this->unk_2C6, 3, 7); + SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2C6 |= (0x40 | 0x10); this->unk_2C6 |= 0x200; if (CHECK_WEEKEVENTREG(WEEKEVENTREG_09_80)) { @@ -551,7 +550,7 @@ void EnDns_Update(Actor* thisx, PlayState* play) { func_8092C934(this); func_8092C86C(this, play); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); - func_8013C964(&this->actor, play, 80.0f, 40.0f, PLAYER_IA_NONE, this->unk_2C6 & 7); + SubS_Offer(&this->actor, play, 80.0f, 40.0f, PLAYER_IA_NONE, this->unk_2C6 & SUBS_OFFER_MODE_MASK); Actor_SetFocus(&this->actor, 34.0f); func_8092C6FC(this, play); func_8092C5C0(this); diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index 2753650a5f..719940b148 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -536,7 +536,7 @@ void func_80A3A7FC(EnElfgrp* this, PlayState* play) { func_80A39CD4(play, this->unk_147, temp_s0); } else if (this->actor.xzDistToPlayer < 280.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } @@ -567,7 +567,7 @@ void func_80A3A8F8(EnElfgrp* this, PlayState* play) { gSaveContext.save.saveInfo.weekEventReg[9] |= this->unk_146; } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } else { this->actor.flags &= ~ACTOR_FLAG_10000; diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c index 923cfeef24..6202072cbb 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c @@ -426,7 +426,7 @@ void func_80B28C14(EnFish2* this, PlayState* play) { itemAction = itemAction->next; } - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 02b1178c2d..dcf2db26db 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -2822,7 +2822,7 @@ void EnFishing_HandleAquariumDialog(EnFishing* this, PlayState* play) { D_8090CCF8 = D_809171CC; this->unk_1CB = 1; } else { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } else { this->unk_1CC--; @@ -4711,7 +4711,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, PlayState* play) { this->unk_154 = 10; } } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } break; diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index ae04bb3327..088b504c68 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -224,7 +224,7 @@ void EnFsn_HandleSetupResumeInteraction(EnFsn* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play) && (this->cutsceneState == ENFSN_CUTSCENESTATE_STOPPED)) { Actor_ProcessTalkRequest(&this->actor, &play->state); - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); if (ENFSN_IS_SHOP(&this->actor)) { this->actor.textId = 0; } @@ -775,7 +775,7 @@ void EnFsn_Idle(EnFsn* this, PlayState* play) { } else if (((player->actor.world.pos.x >= -50.0f) && (player->actor.world.pos.x <= 15.0f)) && (player->actor.world.pos.y > 0.0f) && ((player->actor.world.pos.z >= -35.0f) && (player->actor.world.pos.z <= -20.0f))) { - func_800B8614(&this->actor, play, 400.0f); + Actor_OfferTalk(&this->actor, play, 400.0f); } } @@ -865,7 +865,7 @@ void EnFsn_StartBuying(EnFsn* this, PlayState* play) { break; case 0x29CF: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; this->actionFunc = EnFsn_SetupDeterminePrice; break; @@ -965,7 +965,7 @@ void EnFsn_DeterminePrice(EnFsn* this, PlayState* play) { this->price = (buttonItem < ITEM_MOONS_TEAR) ? gItemPrices[buttonItem] : 0; if (this->price > 0) { player->actor.textId = 0x29EF; - player->exchangeItemId = buttonItem; + player->exchangeItemAction = buttonItem; this->actionFunc = EnFsn_MakeOffer; } else { player->actor.textId = 0x29CF; @@ -1029,7 +1029,7 @@ void EnFsn_MakeOffer(EnFsn* this, PlayState* play) { case 1: Audio_PlaySfx_MessageCancel(); - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; this->actionFunc = EnFsn_SetupDeterminePrice; break; } @@ -1085,7 +1085,7 @@ void EnFsn_ResumeInteraction(EnFsn* this, PlayState* play) { this->actionFunc = EnFsn_ConverseBackroom; } } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1424,7 +1424,7 @@ void EnFsn_IdleBackroom(EnFsn* this, PlayState* play) { EnFsn_HandleConversationBackroom(this, play); this->actionFunc = EnFsn_ConverseBackroom; } else if (this->actor.xzDistToPlayer < 100.0f || this->actor.isTargeted) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index a07bede526..c0f3e1cc50 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -418,9 +418,9 @@ void func_80962340(EnFu* this, PlayState* play) { } func_809628BC(this); } else if (this->unk_54A == 2) { - func_800B8614(&this->actor, play, 500.0f); + Actor_OfferTalk(&this->actor, play, 500.0f); } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } Math_SmoothStepToS(&this->actor.shape.rot.y, BINANG_SUB(this->actor.child->shape.rot.y, 0x4000), 10, 3000, 100); } @@ -936,7 +936,7 @@ void func_80963630(EnFu* this, PlayState* play) { player->stateFlags1 &= ~PLAYER_STATE1_20; } else { this->actor.child->freezeTimer = 10; - func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 11ba7a8b0a..63f5a6736a 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -381,7 +381,7 @@ void func_80B0FEBC(EnGb2* this, PlayState* play) { Message_StartTextbox(play, this->unk_26E, &this->actor); this->actionFunc = func_80B0FFA8; } else if ((this->actor.xzDistToPlayer < 300.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } @@ -543,7 +543,7 @@ void func_80B10584(EnGb2* this, PlayState* play) { this->actionFunc = func_80B10634; } else if (this->actor.xzDistToPlayer < 300.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } @@ -641,7 +641,7 @@ void func_80B109DC(EnGb2* this, PlayState* play) { Message_StartTextbox(play, this->unk_26E, &this->actor); this->actionFunc = func_80B10634; } else { - func_800B85E0(&this->actor, play, 300.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 300.0f, PLAYER_IA_MINUS1); } } @@ -699,7 +699,7 @@ void func_80B10B5C(EnGb2* this, PlayState* play) { this->actionFunc = func_80B10DAC; } else if ((this->actor.xzDistToPlayer < 300.0f) && this->actor.isTargeted) { this->unk_26C |= 0x40; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } else { this->unk_26C &= ~0x40; @@ -719,7 +719,7 @@ void func_80B10B5C(EnGb2* this, PlayState* play) { if (!(this->unk_26C & 0x80)) { this->actor.flags |= ACTOR_FLAG_10000; this->unk_26C |= 0x20; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } } @@ -786,7 +786,7 @@ void func_80B11048(EnGb2* this, PlayState* play) { this->actionFunc = func_80B10DAC; } else if (this->actor.xzDistToPlayer < 300.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } } diff --git a/src/overlays/actors/ovl_En_Geg/z_en_geg.c b/src/overlays/actors/ovl_En_Geg/z_en_geg.c index 909cc76bf3..ced79c782e 100644 --- a/src/overlays/actors/ovl_En_Geg/z_en_geg.c +++ b/src/overlays/actors/ovl_En_Geg/z_en_geg.c @@ -449,7 +449,7 @@ void func_80BB221C(EnGeg* this, PlayState* play) { } else if (this->actor.xzDistToPlayer < 300.0f) { this->unk_230 |= 4; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } else { this->unk_230 &= ~4; @@ -460,7 +460,7 @@ void func_80BB221C(EnGeg* this, PlayState* play) { this->unk_230 &= ~8; this->actionFunc = func_80BB27D4; } else if ((this->actor.xzDistToPlayer < 300.0f) && this->actor.isTargeted) { - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); this->unk_230 |= 8; } } else if (Actor_ProcessTalkRequest(&this->actor, &play->state) && (this->unk_230 & 8)) { @@ -473,7 +473,7 @@ void func_80BB221C(EnGeg* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; } else if (this->actor.xzDistToPlayer < 300.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); this->unk_230 |= 8; } } @@ -777,7 +777,7 @@ void func_80BB30B4(EnGeg* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; } else if (this->actor.xzDistToPlayer < 150.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); } } @@ -813,7 +813,7 @@ void func_80BB32AC(EnGeg* this, PlayState* play) { Message_StartTextbox(play, this->unk_496, &this->actor); this->actionFunc = func_80BB27D4; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Gg/z_en_gg.c b/src/overlays/actors/ovl_En_Gg/z_en_gg.c index ac09c3714d..fe7d0198fe 100644 --- a/src/overlays/actors/ovl_En_Gg/z_en_gg.c +++ b/src/overlays/actors/ovl_En_Gg/z_en_gg.c @@ -238,10 +238,10 @@ void func_80B35450(EnGg* this, PlayState* play) { this->actionFunc = func_80B352A4; } else if ((this->actor.xzDistToPlayer < 200.0f) && (this->actor.xzDistToPlayer > 50.0f)) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_19_80)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); this->actor.textId = 0xCEE; } else if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_REACT_TO_LENS)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); this->actor.textId = 0xCE5; } } diff --git a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c index eb0e5bfd47..c933d4e39a 100644 --- a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c +++ b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c @@ -160,7 +160,7 @@ void func_80B3AFB0(EnGg2* this, PlayState* play) { this->actionFunc = func_80B3AE60; } else if ((this->actor.xzDistToPlayer < 100.0f) && (this->actor.xzDistToPlayer > 50.0f) && CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_REACT_TO_LENS)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); this->actor.textId = 0xCE4; } } diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 5a6ab4aba2..974bf929f4 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -105,7 +105,7 @@ void EnGinkoMan_Idle(EnGinkoMan* this, PlayState* play) { } EnGinkoMan_SetupDialogue(this); } else if (ABS_ALT(yaw) < 0x1555) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -591,7 +591,7 @@ void EnGinkoMan_BankAward2(EnGinkoMan* this, PlayState* play) { EnGinkoMan_SetupIdle(this); } } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 8fc4c98527..16b4c2993b 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -648,7 +648,7 @@ void func_80B51760(EnGk* this, PlayState* play) { } } else if (((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) && (gSaveContext.save.entrance != ENTRANCE(GORON_RACETRACK, 1))) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } if (this->unk_1E4 & 4) { @@ -852,7 +852,7 @@ void func_80B5202C(EnGk* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_24_80); this->actionFunc = func_80B51698; } else if ((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); if (player->transformation == PLAYER_FORM_GORON) { this->actor.textId = 0xE74; } else { @@ -920,7 +920,7 @@ void func_80B52340(EnGk* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x1000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -981,7 +981,7 @@ void func_80B525E0(EnGk* this, PlayState* play) { Message_StartTextbox(play, this->unk_31C, &this->actor); this->actionFunc = func_80B52430; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c index ab0afe8445..f4abc9e914 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -732,28 +732,27 @@ s32* func_8094EDBC(EnGm* this, PlayState* play) { s32 func_8094EE84(EnGm* this, PlayState* play) { s32 ret = false; - if (this->unk_3A4 & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_3A4, 0, 7); - this->unk_3E0 = 0; - this->unk_3E4 = NULL; - this->actor.child = this->unk_268; - this->unk_264 = func_8094EDBC(this, play); + if (((this->unk_3A4 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->unk_3E0 = 0; + this->unk_3E4 = NULL; + this->actor.child = this->unk_268; + this->unk_264 = func_8094EDBC(this, play); - if ((this->unk_258 == 5) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) && - !CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_75_02)) { - this->unk_3A4 |= 0x20; - } else if ((this->unk_258 != 1) && (this->unk_258 != 5) && (this->unk_258 != 7)) { - this->unk_3A4 |= 0x20; - } - - if ((this->unk_258 == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_75_01)) { - this->unk_3A4 &= ~0x20; - } - - this->actionFunc = func_80950DB8; - ret = true; + if ((this->unk_258 == 5) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_50_01) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_51_80) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_75_02)) { + this->unk_3A4 |= 0x20; + } else if ((this->unk_258 != 1) && (this->unk_258 != 5) && (this->unk_258 != 7)) { + this->unk_3A4 |= 0x20; } + + if ((this->unk_258 == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_75_01)) { + this->unk_3A4 &= ~0x20; + } + + this->actionFunc = func_80950DB8; + ret = true; } return ret; } @@ -1085,7 +1084,7 @@ s32 func_8094FAC4(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { (this->timePathElapsedTime / this->timePathWaypointTime) + (SUBS_TIME_PATHING_ORDER - 1); this->unk_3A4 &= ~0x8; this->unk_3A4 &= ~0x10; - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3A4 |= 0x100; this->unk_3A4 |= 0x200; func_8094E054(this, play, 7); @@ -1102,7 +1101,7 @@ s32 func_8094FCC4(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (func_8094F7D0(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_TAB)) { if (this->unk_258 == 0) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80951D90); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); func_8094E054(this, play, 0); } else { func_8094E054(this, play, 9); @@ -1120,7 +1119,7 @@ s32 func_8094FD88(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (func_8094F7D0(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_RECEPGIRL)) { func_8094E054(this, play, 11); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3A4 |= 0x100; this->unk_3A4 |= 0x200; ret = true; @@ -1136,7 +1135,7 @@ s32 func_8094FE10(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (func_8094F7D0(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_TOTO) && (al != NULL) && (al->update != NULL)) { func_8094E054(this, play, 11); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_268 = al; if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_86_20)) { this->unk_3C8 = 2; @@ -1173,7 +1172,7 @@ s32 func_8094FF04(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { this->actor.world.rot.y = Math_Vec3f_Yaw(&sp3C, &sp30); if (this->unk_258 == 0) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80951D9C); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3C8 = 4; this->unk_3CA = 4; this->unk_3CC = 8; @@ -1200,7 +1199,7 @@ s32 func_80950088(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80951DA8); Math_Vec3s_Copy(&this->actor.world.rot, &D_80951DB4); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3A4 |= (0x2000 | 0x100); this->unk_3A4 |= 0x200; func_8094E054(this, play, 12); @@ -1215,7 +1214,7 @@ s32 func_80950120(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80951DBC); Math_Vec3s_Copy(&this->actor.world.rot, &D_80951DC8); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3A4 |= (0x800 | 0x100); this->unk_3A4 |= 0x200; func_8094E054(this, play, 4); @@ -1231,7 +1230,7 @@ s32 func_809501B8(EnGm* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3s_Copy(&this->actor.world.rot, &D_80951DDC); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); this->actor.targetMode = 6; - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3A4 |= (0x1000 | 0x100); this->unk_3A4 |= 0x200; this->unk_3C8 = 3; @@ -1338,7 +1337,7 @@ s32 func_809503F8(EnGm* this, PlayState* play) { if (this->unk_3E8 == 9) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->actor.shape.shadowDraw = ActorShadow_DrawCircle; - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); func_8094E054(this, play, 0); } else { AnimationContext_SetMoveActor(play, &this->actor, &this->skelAnime, 1.0f); @@ -1370,7 +1369,7 @@ s32 func_80950490(EnGm* this, PlayState* play) { case 9: if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->actor.shape.shadowDraw = ActorShadow_DrawCircle; - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3C8 = 4; this->unk_3CA = 4; this->unk_3CC = 8; @@ -1606,7 +1605,7 @@ void func_80950DB8(EnGm* this, PlayState* play) { Actor* al; if (func_8010BF58(&this->actor, play, this->unk_264, this->unk_3E4, &this->unk_25C)) { - SubS_UpdateFlags(&this->unk_3A4, 3, 7); + SubS_SetOfferMode(&this->unk_3A4, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); al = func_8094DEE0(this, play, ACTORCAT_NPC, ACTOR_EN_AL); if ((this->unk_258 == 2) && (al != NULL) && (al->update != NULL)) { this->unk_268 = al; @@ -1712,7 +1711,7 @@ void EnGm_Update(Actor* thisx, PlayState* play) { func_8094DFF8(this, play); func_8094E2D0(this); func_8094F2E8(this); - func_8013C964(&this->actor, play, this->unk_3B4, 30.0f, PLAYER_IA_NONE, this->unk_3A4 & 7); + SubS_Offer(&this->actor, play, this->unk_3B4, 30.0f, PLAYER_IA_NONE, this->unk_3A4 & SUBS_OFFER_MODE_MASK); if ((this->unk_258 != 3) && (this->unk_258 != 5) && (this->unk_258 != 8)) { Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 346753059f..2659c042ff 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -889,7 +889,8 @@ void EnGo_UpdateCollider(EnGo* this, PlayState* play) { * @return True if talking */ s32 EnGo_UpdateTalking(EnGo* this, PlayState* play) { - if (!(this->actionFlags & 7) || !Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (((this->actionFlags & SUBS_OFFER_MODE_MASK) == SUBS_OFFER_MODE_NONE) || + !Actor_ProcessTalkRequest(&this->actor, &play->state)) { return false; } @@ -906,7 +907,7 @@ s32 EnGo_UpdateTalking(EnGo* this, PlayState* play) { this->actionFlags |= ENGO_FLAG_EYES_OPEN; } - SubS_UpdateFlags(&this->actionFlags, 0, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->cutsceneState = 0; this->gatekeeperAnimState = 0; this->interruptedActionFunc = this->actionFunc; @@ -957,13 +958,13 @@ s32 EnGo_UpdateSpringArrivalCutscene(EnGo* this, PlayState* play) { this->springArrivalCutsceneActive = true; this->interruptedActionFunc = this->actionFunc; } - SubS_UpdateFlags(&this->actionFlags, 0, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->actionFunc = EnGo_HandleSpringArrivalCutscene; } else if (this->springArrivalCutsceneActive) { this->actor.flags |= ACTOR_FLAG_1; this->springArrivalCueId = 255; this->springArrivalCutsceneActive = false; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->actionFunc = this->interruptedActionFunc; } @@ -1224,13 +1225,13 @@ void EnGo_GravemakerIdle(EnGo* this, PlayState* play) { s16 deltaYaw = BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.shape.rot.y); if ((fabsf(this->actor.playerHeightRel) > 20.0f) || (this->actor.xzDistToPlayer > 300.0f)) { - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else if ((player->transformation != PLAYER_FORM_GORON) || (ABS_ALT(deltaYaw) >= 0x1C70) || CHECK_WEEKEVENTREG(WEEKEVENTREG_TALKED_GORON_GRAVEMAKER_AS_GORON) || CHECK_WEEKEVENTREG(WEEKEVENTREG_TALKED_THAWED_GRAVEYARD_GORON)) { - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->actionFlags, 4, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); } } @@ -1239,9 +1240,9 @@ void EnGo_GravemakerIdle(EnGo* this, PlayState* play) { */ void EnGo_FrozenIdle(EnGo* this, PlayState* play) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_TALKED_THAWED_GRAVEYARD_GORON)) { - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->actionFlags, 4, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); } } @@ -1744,7 +1745,7 @@ void EnGo_ChangeToCoveringEarsAnimation(EnGo* this, PlayState* play) { Actor_SetScale(&this->actor, this->scaleFactor); this->actionFlags = 0; this->actor.gravity = -1.0f; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->sleepState = ENGO_AWAKE; this->actionFlags |= ENGO_FLAG_LOST_ATTENTION; this->blinkTimer = 0; @@ -1763,7 +1764,7 @@ void EnGo_ChangeToShiveringAnimation(EnGo* this, PlayState* play) { Actor_SetScale(&this->actor, this->scaleFactor); this->actionFlags = 0; this->actor.gravity = -1.0f; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->sleepState = ENGO_AWAKE; this->actionFlags |= ENGO_FLAG_LOST_ATTENTION; this->actionFlags |= ENGO_FLAG_EYES_OPEN; @@ -1878,7 +1879,7 @@ void EnGo_SetupMedigoron(EnGo* this, PlayState* play) { this->actor.targetMode = 3; this->actionFlags = 0; this->actor.gravity = -1.0f; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->actionFlags |= ENGO_FLAG_LOST_ATTENTION; this->actionFlags |= ENGO_FLAG_EYES_OPEN; this->msgEventFunc = EnGo_HandleGivePowderKegCutscene; @@ -1964,7 +1965,7 @@ void EnGo_Idle(EnGo* this, PlayState* play) { } else if (ENGO_GET_TYPE(&this->actor) != ENGO_MEDIGORON) { // All others besides the Medigoron in the Powder Keg Shop can fall asleep if (EnGo_IsFallingAsleep(this, play)) { - SubS_UpdateFlags(&this->actionFlags, 0, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->sleepState = ENGO_ASLEEP_POS; this->actionFunc = EnGo_Sleep; } else if (ENGO_GET_TYPE(&this->actor) == ENGO_GRAVEYARD) { @@ -1982,9 +1983,9 @@ void EnGo_Idle(EnGo* this, PlayState* play) { } } else if (ENGO_GET_TYPE(&this->actor) == ENGO_ATHLETIC) { if (ABS_ALT(BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.shape.rot.y)) < 0x3FFC) { - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->actionFlags, 0, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } } } @@ -2037,7 +2038,7 @@ void EnGo_Sleep(EnGo* this, PlayState* play) { } this->snorePhase += 0x400; this->actor.shape.yOffset = (this->actor.scale.y / this->scaleFactor) * ENGO_ROLLEDUP_Y_OFFSET; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } } else if ((this->actor.xzDistToPlayer >= 240.0f) || (this->actor.playerHeightRel >= 20.0f) || (this->sleepState != ENGO_AWAKE)) { @@ -2092,7 +2093,7 @@ void EnGo_Thaw(EnGo* this, PlayState* play) { EnGo_ChangeToShiveringAnimation(this, play); if ((ENGO_GET_TYPE(&this->actor) == ENGO_GRAVEYARD) && (ENGO_GET_SUBTYPE(&this->actor) == ENGO_GRAVEYARD_FROZEN)) { - SubS_UpdateFlags(&this->actionFlags, 4, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); EnGo_ChangeToShiveringAnimation(otherGoron, play); otherGoron->actionFunc = EnGo_Idle; } @@ -2400,7 +2401,7 @@ void EnGo_Talk(EnGo* this, PlayState* play) { } this->actionFlags &= ~ENGO_FLAG_ENGAGED; - SubS_UpdateFlags(&this->actionFlags, 3, 7); + SubS_SetOfferMode(&this->actionFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->msgScriptResumePos = 0; this->actionFlags |= ENGO_FLAG_LOST_ATTENTION; this->actionFunc = this->interruptedActionFunc; @@ -2448,10 +2449,10 @@ void EnGo_Update(Actor* thisx, PlayState* play) { } else { xzRange = this->colliderCylinder.dim.radius + 40; } - func_8013C964(&this->actor, play, xzRange, 20.0f, PLAYER_IA_NONE, this->actionFlags & 7); + SubS_Offer(&this->actor, play, xzRange, 20.0f, PLAYER_IA_NONE, this->actionFlags & SUBS_OFFER_MODE_MASK); } else if ((this->actionFlags & ENGO_FLAG_ROLLED_UP) && (this->sleepState != ENGO_AWAKE)) { xzRange = this->colliderCylinder.dim.radius + 40; - func_8013C964(&this->actor, play, xzRange, 20.0f, PLAYER_IA_NONE, this->actionFlags & 7); + SubS_Offer(&this->actor, play, xzRange, 20.0f, PLAYER_IA_NONE, this->actionFlags & SUBS_OFFER_MODE_MASK); } if ((ENGO_GET_TYPE(&this->actor) != ENGO_MEDIGORON) && (ENGO_GET_TYPE(&this->actor) != ENGO_SPECTATOR) && diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index e5ae695ed9..2b98ba7c61 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -184,8 +184,8 @@ void func_80997D38(EnGs* this, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) { if (this->actor.xzDistToPlayer <= D_8099A408[this->actor.params]) { - func_8013E8F8(&this->actor, play, D_8099A408[this->actor.params], D_8099A408[this->actor.params], - PLAYER_IA_NONE, 0x2000, 0x2000); + SubS_OfferTalkExchangeFacing(&this->actor, play, D_8099A408[this->actor.params], + D_8099A408[this->actor.params], PLAYER_IA_NONE, 0x2000, 0x2000); } } diff --git a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c index e9ba720030..48b08c7ffc 100644 --- a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c +++ b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c @@ -195,7 +195,7 @@ void EnGuardNuts_Wait(EnGuardNuts* this, PlayState* play) { this->targetHeadPos.y = -this->targetHeadPos.y; } } - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } void func_80ABB540(EnGuardNuts* this) { diff --git a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c index bee2ffda8f..bdcf620efa 100644 --- a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c +++ b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c @@ -167,7 +167,7 @@ void func_80BC6F14(EnGuruguru* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { func_80BC701C(this, play); } else if (yaw <= 0x2890) { - func_800B8614(&this->actor, play, 60.0f); + Actor_OfferTalk(&this->actor, play, 60.0f); } } @@ -295,7 +295,7 @@ void func_80BC7440(EnGuruguru* this, PlayState* play) { this->textIdIndex++; this->actor.textId = textIDs[this->textIdIndex]; func_801A3B48(1); - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->unk268 = 0; SET_WEEKEVENTREG(WEEKEVENTREG_38_40); this->actionFunc = func_80BC7520; @@ -309,7 +309,7 @@ void func_80BC7520(EnGuruguru* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80BC7068; } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index aa4e0b8913..6b0124b00a 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -236,7 +236,7 @@ void EnHg_HandleTatlDialog(EnHg* this, PlayState* play) { // "...Sort of looks different..." Message_StartTextbox(play, 0x24F, &this->actor); } else { - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } } } diff --git a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c index 4ff47c7812..bbdb2c387f 100644 --- a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c +++ b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c @@ -180,7 +180,7 @@ void EnHgo_Talk(EnHgo* this, PlayState* play) { } EnHgo_SetupDialogueHandler(this); } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c b/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c index d0e965936a..2bb10c3514 100644 --- a/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c +++ b/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c @@ -189,7 +189,7 @@ void func_80BDB2B8(EnHiddenNuts* this, PlayState* play) { } else if (func_801A5100() == 2) { func_80BDB788(this); } else { - func_800B8614(&this->actor, play, BREG(13) + 100.0f); + Actor_OfferTalk(&this->actor, play, BREG(13) + 100.0f); } } } diff --git a/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c b/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c index 9ce9e8eac5..c38d6070d2 100644 --- a/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c +++ b/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c @@ -414,7 +414,7 @@ void func_80C2077C(EnHintSkb* this, PlayState* play) { } func_80C208BC(this); } else if ((this->actor.xzDistToPlayer < 100.0f) && !(this->collider.base.acFlags & AC_HIT)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c index 648a13d46d..e4026dfe5e 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -162,7 +162,7 @@ void func_80953098(EnHs* this, PlayState* play) { this->actionFunc = func_8095345C; this->actor.flags |= ACTOR_FLAG_10000; this->stateFlags |= 0x10; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->stateFlags |= 8; if (INV_CONTENT(ITEM_MASK_BUNNY) == ITEM_MASK_BUNNY) { @@ -264,10 +264,10 @@ void func_8095345C(EnHs* this, PlayState* play) { this->actionFunc = func_80953354; this->stateTimer = 40; } else if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_10000)) { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); this->stateFlags |= 1; } else if ((this->actor.xzDistToPlayer < 120.0f) && Player_IsFacingActor(&this->actor, 0x2000, play)) { - func_800B8614(&this->actor, play, 130.0f); + Actor_OfferTalk(&this->actor, play, 130.0f); this->stateFlags |= 1; } else { this->stateFlags &= ~1; diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c index abdf870b97..e7473e7d32 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -420,19 +420,18 @@ s32* func_80BF1920(EnIg* this, PlayState* play) { s32 func_80BF19A0(EnIg* this, PlayState* play) { s32 ret = false; - if (this->unk_3D0 & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_3D0, 0, 7); - this->unk_3F6 = 0; - this->unk_3F8 = NULL; - this->actor.child = this->unk_2A8; - this->unk_29C = func_80BF1920(this, play); - if ((this->scheduleResult != 2) && (this->scheduleResult != 3) && (this->scheduleResult != 4)) { - this->unk_3D0 |= 0x20; - } - this->actionFunc = func_80BF2BD4; - ret = true; + if (((this->unk_3D0 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->unk_3F6 = 0; + this->unk_3F8 = NULL; + this->actor.child = this->unk_2A8; + this->unk_29C = func_80BF1920(this, play); + if ((this->scheduleResult != 2) && (this->scheduleResult != 3) && (this->scheduleResult != 4)) { + this->unk_3D0 |= 0x20; } + this->actionFunc = func_80BF2BD4; + ret = true; } return ret; } @@ -531,7 +530,7 @@ s32 func_80BF1D78(EnIg* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (func_80BF1C44(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_AN)) { func_80BF1284(this, 0); - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3D0 |= 0x20; this->unk_3D0 |= 0x100; sp2C = true; @@ -625,7 +624,7 @@ s32 func_80BF1FA8(EnIg* this, PlayState* play, ScheduleOutput* scheduleOutput) { this->unk_3D0 &= ~0x8; this->unk_3D0 &= ~0x10; - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3D0 |= 0x100; func_80BF1284(this, 2); this->actor.gravity = -1.0f; @@ -661,7 +660,7 @@ s32 func_80BF219C(EnIg* this, PlayState* play, ScheduleOutput* scheduleOutput) { case 2: this->actor.home.rot.y = this->actor.world.rot.y; this->actor.home.rot.y += 0x8000; - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3D0 |= 0x100; func_80BF1284(this, 1); break; @@ -669,7 +668,7 @@ s32 func_80BF219C(EnIg* this, PlayState* play, ScheduleOutput* scheduleOutput) { case 4: this->actor.world.rot.y += 0x8000; this->actor.shape.rot.y = this->actor.world.rot.y; - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3D0 |= 0x100; func_80BF1284(this, 8); break; @@ -834,7 +833,7 @@ s32 func_80BF293C(EnIg* this, PlayState* play) { func_80BF1284(this, 7); } } else if ((this->unk_3FC == 7) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); func_80BF1284(this, 9); } return true; @@ -898,7 +897,7 @@ void func_80BF2BD4(EnIg* this, PlayState* play) { Vec3f sp2C; if (func_8010BF58(&this->actor, play, this->unk_29C, this->unk_3F8, &this->unk_2A0)) { - SubS_UpdateFlags(&this->unk_3D0, 3, 7); + SubS_SetOfferMode(&this->unk_3D0, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_3D0 &= ~0x20; this->unk_3D0 |= 0x200; this->unk_3EE = 20; @@ -950,7 +949,7 @@ void EnIg_Update(Actor* thisx, PlayState* play) { func_80BF1258(this); func_80BF13E4(this); func_80BF15EC(this); - func_8013C964(&this->actor, play, 60.0f, 30.0f, PLAYER_IA_NONE, this->unk_3D0 & 7); + SubS_Offer(&this->actor, play, 60.0f, 30.0f, PLAYER_IA_NONE, this->unk_3D0 & SUBS_OFFER_MODE_MASK); Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); func_80BF1354(this, play); diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 7ab1f48065..2631d3a89a 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -344,7 +344,7 @@ void func_808F395C(EnIn* this, PlayState* play) { this->actionFunc = func_808F5A34; this->unk48C = 1; } else { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } } @@ -396,7 +396,7 @@ void func_808F3AD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -420,7 +420,7 @@ void func_808F3BD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -444,7 +444,7 @@ void func_808F3CD4(EnIn* this, PlayState* play) { this->unk48C = 1; this->actionFunc = func_808F5A94; } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } @@ -1378,10 +1378,10 @@ s32 func_808F5728(PlayState* play, EnIn* this, s32 arg2, s32* arg3) { return 0; } if (this->actor.xyzDistToPlayerSq <= SQ(80.0f)) { - if (func_800B8614(&this->actor, play, 80.0f)) { + if (Actor_OfferTalk(&this->actor, play, 80.0f)) { this->actor.textId = func_808F3DD4(play, this, arg2); } - } else if (func_800B863C(&this->actor, play)) { + } else if (Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play)) { this->actor.textId = func_808F3DD4(play, this, arg2); } return 0; diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c index fcbd26b2f5..fe3ca06c80 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -123,8 +123,9 @@ void func_80BC1984(EnJa* this, PlayState* play) { s32 func_80BC19FC(EnJa* this, PlayState* play) { s32 ret = false; - if ((this->unk_340 & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_340, 0, 7); + if (((this->unk_340 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->actionFunc = func_80BC22F4; ret = true; } @@ -243,7 +244,7 @@ s32 func_80BC1FC8(EnJa* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; if (func_80BC1AE0(this, play)) { - SubS_UpdateFlags(&this->unk_340, 3, 7); + SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_340 |= 0x10; func_80BC192C(this, 5); func_80BC2EA4(this); @@ -261,7 +262,7 @@ s32 func_80BC203C(EnJa* this, PlayState* play, ScheduleOutput* scheduleOutput) { } else { func_80BC192C(this, 4); } - SubS_UpdateFlags(&this->unk_340, 3, 7); + SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->actor.shape.shadowDraw = NULL; this->unk_340 |= 0x50; ret = true; @@ -335,7 +336,7 @@ s32* func_80BC2274(EnJa* this, PlayState* play) { void func_80BC22F4(EnJa* this, PlayState* play) { if (func_8010BF58(&this->actor, play, func_80BC2274(this, play), this->unk_368, &this->unk_1D8.unk_04)) { this->unk_340 &= ~8; - SubS_UpdateFlags(&this->unk_340, 3, 7); + SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_1D8.unk_04 = 0; this->unk_340 |= 0x10; this->actor.shape.rot.y = this->actor.world.rot.y; @@ -356,7 +357,7 @@ void EnJa_Init(Actor* thisx, PlayState* play) { this->actor.targetMode = 0; this->actor.uncullZoneForward = 800.0f; this->actor.gravity = 0.0f; - SubS_UpdateFlags(&this->unk_340, 0, 7); + SubS_SetOfferMode(&this->unk_340, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_340 |= 0x10; this->unk_1D8.unk_00 = 0; this->unk_368 = NULL; @@ -385,7 +386,7 @@ void EnJa_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + 30; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_340 & 7); + SubS_Offer(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_340 & SUBS_OFFER_MODE_MASK); if (this->unk_1D8.unk_00 != 2) { Actor_MoveWithGravity(&this->actor); diff --git a/src/overlays/actors/ovl_En_Jg/z_en_jg.c b/src/overlays/actors/ovl_En_Jg/z_en_jg.c index 19836174c6..dae36a0351 100644 --- a/src/overlays/actors/ovl_En_Jg/z_en_jg.c +++ b/src/overlays/actors/ovl_En_Jg/z_en_jg.c @@ -353,7 +353,7 @@ void EnJg_GoronShrineIdle(EnJg* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnJg_GoronShrineTalk; } else if ((this->actor.xzDistToPlayer < 100.0f) || (this->actor.isTargeted)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); this->textId = EnJg_GetStartingConversationTextId(this, play); } } @@ -595,7 +595,7 @@ void EnJg_FrozenIdle(EnJg* this, PlayState* play) { Message_StartTextbox(play, 0x236, &this->actor); // The old Goron is frozen solid! this->actionFunc = EnJg_EndFrozenInteraction; } else if (this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } } @@ -918,7 +918,7 @@ void EnJg_CheckIfTalkingToPlayerAndHandleFreezeTimer(EnJg* this, PlayState* play this->actionFunc = EnJg_SetupTalk; } else { if ((this->actor.xzDistToPlayer < 100.0f) || (this->actor.isTargeted)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); if (this->action == EN_JG_ACTION_FIRST_THAW) { this->textId = EnJg_GetStartingConversationTextId(this, play); } diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 551b75eb51..2674c8dfb7 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -184,9 +184,9 @@ void func_80C13BB8(EnJgameTsn* this, PlayState* play) { } func_80C14030(this); } else if (this->actor.flags & ACTOR_FLAG_10000) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } else { - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } if ((player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && !(player->stateFlags1 & PLAYER_STATE1_2000) && @@ -221,7 +221,7 @@ void func_80C13E90(EnJgameTsn* this, PlayState* play) { } func_80C14030(this); } else { - func_800B8614(&this->actor, play, 1000.0f); + Actor_OfferTalk(&this->actor, play, 1000.0f); } } @@ -401,7 +401,7 @@ void func_80C14610(EnJgameTsn* this, PlayState* play) { this->unk_300 = 0x10A4; func_80C14030(this); } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Js/z_en_js.c b/src/overlays/actors/ovl_En_Js/z_en_js.c index ea5352a7e3..6045da07b2 100644 --- a/src/overlays/actors/ovl_En_Js/z_en_js.c +++ b/src/overlays/actors/ovl_En_Js/z_en_js.c @@ -608,7 +608,7 @@ void func_80969898(EnJs* this, PlayState* play) { case 0x2210: case 0x2211: case 0x2212: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; Message_ContinueTextbox(play, 0xFF); this->actionFunc = func_80969748; break; @@ -671,7 +671,7 @@ void func_80969B5C(EnJs* this, PlayState* play) { this->unk_2B4 = 0.0f; func_80969AA0(this, play); } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } func_80968CB8(this); } @@ -765,7 +765,7 @@ void func_80969DA4(EnJs* this, PlayState* play) { } break; case 0x2222: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); break; case 0x2223: @@ -791,7 +791,7 @@ void func_80969DA4(EnJs* this, PlayState* play) { case 0x221D: case 0x2220: case 0x2221: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; Message_ContinueTextbox(play, 0xFF); this->actionFunc = func_80969C54; break; @@ -830,7 +830,7 @@ void func_8096A104(EnJs* this, PlayState* play) { this->actionFunc = func_80969DA4; func_8096A080(this, play); } else if (func_80968DD0(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -858,7 +858,7 @@ void func_8096A1E8(EnJs* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_84_20); func_809696EC(this, 0); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -870,7 +870,7 @@ void func_8096A2C0(EnJs* this, PlayState* play) { this->actor.parent = NULL; this->actor.flags |= ACTOR_FLAG_10000; this->actionFunc = func_8096A1E8; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_OfferGetItem(&this->actor, play, GI_MASK_FIERCE_DEITY, 10000.0f, 1000.0f); } @@ -1003,7 +1003,7 @@ void func_8096A6F4(EnJs* this, PlayState* play) { } if (!(this->unk_2B8 & 8) && (this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && Actor_IsFacingPlayer(&this->actor, 0x1000)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 99a255ec2c..9e3e568282 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -318,7 +318,7 @@ void EnKakasi_TimeSkipDialogue(EnKakasi* this, PlayState* play) { this->picto.actor.flags &= ~ACTOR_FLAG_10000; this->actionFunc = EnKakasi_RegularDialogue; } else { - func_800B8500(&this->picto.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->picto.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); } } } @@ -368,7 +368,7 @@ void EnKakasi_IdleStanding(EnKakasi* this, PlayState* play) { EnKakasi_ChangeAnim(this, ENKAKASI_ANIM_IDLE); } if (this->picto.actor.xzDistToPlayer < 120.0f) { - func_800B8614(&this->picto.actor, play, 100.0f); + Actor_OfferTalk(&this->picto.actor, play, 100.0f); func_800B874C(&this->picto.actor, play, 100.0f, 80.0f); } } @@ -1098,7 +1098,7 @@ void EnKakasi_IdleRisen(EnKakasi* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->picto.actor, &play->state)) { this->actionFunc = EnKakasi_RisenDialogue; } else { - func_800B8614(&this->picto.actor, play, 70.0f); + Actor_OfferTalk(&this->picto.actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c index 07892f9f08..4decf9ee62 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c @@ -186,7 +186,7 @@ void func_80954BE8(EnKanban* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->msgFlag = true; } else { - func_800B8614(&this->actor, play, 68.0f); + Actor_OfferTalk(&this->actor, play, 68.0f); } } } else { diff --git a/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c b/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c index 6e4d55d28d..da83290a98 100644 --- a/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c +++ b/src/overlays/actors/ovl_En_Kbt/z_en_kbt.c @@ -283,7 +283,7 @@ void func_80B34314(EnKbt* this, PlayState* play) { default: break; } - func_800B8614(&this->actor, play, 260.0f); + Actor_OfferTalk(&this->actor, play, 260.0f); } } func_80B3415C(this); diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index 77ad3e4c58..0b4fe5e686 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -211,7 +211,7 @@ void func_80B2654C(EnKendoJs* this, PlayState* play) { func_80B26AE8(this); } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -500,7 +500,7 @@ void func_80B27030(EnKendoJs* this, PlayState* play) { this->unk_288 = 0x271A; func_80B26AE8(this); } else { - func_800B8614(&this->actor, play, 800.0f); + Actor_OfferTalk(&this->actor, play, 800.0f); } } } @@ -676,7 +676,7 @@ void func_80B27774(EnKendoJs* this, PlayState* play) { func_80B26AE8(this); player->stateFlags1 &= ~PLAYER_STATE1_20; } else { - func_800B85E0(&this->actor, play, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 1000.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index fb87c35465..f015ddc5f4 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -587,7 +587,7 @@ void func_80B41CBC(EnKgy* this, PlayState* play) { this->actionFunc = func_80B41E18; func_80B411DC(this, play, 4); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -596,7 +596,7 @@ void func_80B41D64(EnKgy* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actionFunc = func_80B41CBC; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_OfferGetItem(&this->actor, play, this->getItemId, 2000.0f, 1000.0f); } @@ -745,7 +745,7 @@ void func_80B41E18(EnKgy* this, PlayState* play) { case 0xC46: case 0xC55: Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE_EMPTY); - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; this->unk_29C &= ~0x8; play->msgCtx.msgLength = 0; func_80B41368(this, play, 4); @@ -760,7 +760,7 @@ void func_80B41E18(EnKgy* this, PlayState* play) { case 0xC47: func_80B40BC0(this, 1); if (this->unk_29C & 8) { - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; this->unk_29C &= ~8; } func_80B40EBC(this, play, textId); @@ -848,7 +848,7 @@ void func_80B425A0(EnKgy* this, PlayState* play) { func_80B411DC(this, play, 0); func_80B40E18(this, this->actor.textId); } else if (this->actor.xzDistToPlayer < 200.0f) { - func_800B8614(&this->actor, play, 210.0f); + Actor_OfferTalk(&this->actor, play, 210.0f); } } @@ -949,7 +949,7 @@ void func_80B4296C(EnKgy* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); } } @@ -1070,7 +1070,7 @@ void func_80B42D28(EnKgy* this, PlayState* play) { } else { this->actor.textId = 0xC1D; } - func_800B8614(&this->actor, play, 210.0f); + Actor_OfferTalk(&this->actor, play, 210.0f); } if ((this->unk_2D2 == 0) && (this->actor.xzDistToPlayer < 200.0f)) { diff --git a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c index 1800a30429..2700aa1f85 100644 --- a/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c +++ b/src/overlays/actors/ovl_En_Kujiya/z_en_kujiya.c @@ -104,7 +104,7 @@ void EnKujiya_Wait(EnKujiya* this, PlayState* play) { (this->actor.shape.rot.y == 0)) { EnKujiya_SetupTurnToOpen(this); } else if (this->actor.xzDistToPlayer < 100.0f) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c index 5755d9f9b7..e61db843a1 100644 --- a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c +++ b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c @@ -505,9 +505,9 @@ void EnLiftNuts_Idle(EnLiftNuts* this, PlayState* play) { EnLiftNuts_SetupStartConversation(this); } else if (EnLiftNuts_Autotalk(this, ENLIFTNUTS_AUTOTALK_MODE_CHECK_OFF) || (this->autotalk == true)) { if (this->autotalk == true) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } else if (this->actor.playerHeightRel >= -13.0f) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0x1000, 0x500); @@ -973,7 +973,7 @@ void EnLiftNuts_ResumeConversation(EnLiftNuts* this, PlayState* play) { break; } } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 8809fbff57..be08288b29 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -350,7 +350,7 @@ void EnMa4_Wait(EnMa4* this, PlayState* play) { EnMa4_SetupDialogueHandler(this); } else if (this->type != MA4_TYPE_ALIENS_WON || ABS_ALT(yaw) < 0x4000) { if (!(player->stateFlags1 & PLAYER_STATE1_800000)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } } @@ -683,7 +683,7 @@ void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x336E, &this->actor); this->actionFunc = EnMa4_HorsebackGameTalking; } else if (gSaveContext.timerCurTimes[TIMER_ID_MINIGAME_2] < SECONDS_TO_TIMER(115)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -839,7 +839,7 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) { Player* player = GET_PLAYER(play); player->stateFlags1 |= PLAYER_STATE1_20; - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); sCueId = 99; this->hasBow = true; EnMa4_SetupEndEponasSongCs(this); @@ -861,7 +861,7 @@ void EnMa4_EndEponasSongCs(EnMa4* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; EnMa4_SetupDialogueHandler(this); } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index 008507f9bb..fe552a124e 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -405,7 +405,7 @@ void EnMaYto_DefaultWait(EnMaYto* this, PlayState* play) { EnMaYto_DefaultStartDialogue(this, play); EnMaYto_SetupDefaultDialogueHandler(this); } else if (ABS_ALT(direction) < 0x1555) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -525,14 +525,14 @@ void EnMaYto_DinnerWait(EnMaYto* this, PlayState* play) { EnMaYto_DinnerStartDialogue(this, play); EnMaYto_SetupDinnerDialogueHandler(this); } else if (ABS_ALT(direction) < 0x4000) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); child = this->actor.child; if ((child != NULL) && (CURRENT_DAY != 2)) { s16 childDirection = child->shape.rot.y - child->yawTowardsPlayer; if (ABS_ALT(childDirection) < 0x4000) { - func_800B8614(child, play, 120.0f); + Actor_OfferTalk(child, play, 120.0f); } } } @@ -723,11 +723,11 @@ void EnMaYto_BarnWait(EnMaYto* this, PlayState* play) { EnMaYto_BarnStartDialogue(this, play); EnMaYto_SetupBarnDialogueHandler(this); } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) || (ABS_ALT(direction) < 0x2000)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); child = this->actor.child; if (child != NULL) { - func_800B8614(child, play, 100.0f); + Actor_OfferTalk(child, play, 100.0f); } } } @@ -914,7 +914,7 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, PlayState* play) { EnMaYto_SetupAfterMilkRunDialogueHandler(this); } else { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } } @@ -1006,7 +1006,7 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, PlayState* play) { EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); } } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index faa78983fc..8bded501d9 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -349,7 +349,7 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { } EnMaYts_SetupDialogueHandler(this); } else if (ABS_ALT(sp26) < 0x4000) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 339fe91e41..3ffaa16350 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -324,7 +324,7 @@ void EnMinifrog_Idle(EnMinifrog* this, PlayState* play) { } } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && (Player_GetMask(play) == PLAYER_MASK_DON_GERO)) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } @@ -464,7 +464,7 @@ void EnMinifrog_EndChoir(EnMinifrog* this, PlayState* play) { Message_StartTextbox(play, 0xD7E, &this->actor); this->actionFunc = EnMinifrog_YellowFrogDialog; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -475,7 +475,7 @@ void EnMinifrog_GetFrogHP(EnMinifrog* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnMinifrog_EndChoir; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_NONE); } else { Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 10000.0f, 50.0f); } @@ -563,7 +563,7 @@ void EnMinifrog_SetupYellowFrogDialog(EnMinifrog* this, PlayState* play) { (Player_IsFacingActor(&this->actor, 0x3000, play) || CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_10000)) && Player_GetMask(play) == PLAYER_MASK_DON_GERO) { - func_800B8614(&this->actor, play, 160.0f); + Actor_OfferTalk(&this->actor, play, 160.0f); } } diff --git a/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/src/overlays/actors/ovl_En_Mk/z_en_mk.c index 17396969a4..23f28262c6 100644 --- a/src/overlays/actors/ovl_En_Mk/z_en_mk.c +++ b/src/overlays/actors/ovl_En_Mk/z_en_mk.c @@ -194,7 +194,7 @@ void func_80959774(EnMk* this, PlayState* play) { func_80959624(this, play); this->actionFunc = func_809596A0; } else if ((this->actor.xzDistToPlayer < 120.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 130.0f); + Actor_OfferTalk(&this->actor, play, 130.0f); } func_8095954C(this, play); @@ -368,7 +368,7 @@ void func_80959C94(EnMk* this, PlayState* play) { Message_StartTextbox(play, 0xFB3, &this->actor); } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -430,7 +430,7 @@ void func_80959E18(EnMk* this, PlayState* play) { this->actionFunc = func_80959C94; } else if ((this->actor.xzDistToPlayer < 120.0f) && (ABS_ALT(sp22) <= 0x4300)) { this->unk_27A |= 1; - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_20_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_19_40)) { func_800B874C(&this->actor, play, 200.0f, 100.0f); } diff --git a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c index 5c6adcd8a5..64cc47ad81 100644 --- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c +++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c @@ -69,7 +69,7 @@ void EnMm2_WaitForRead(EnMm2* this, PlayState* play) { Message_StartTextbox(play, 0x277B, &this->actor); this->actionFunc = EnMm2_Reading; } else if ((this->actor.xzDistToPlayer < 60.0f) && (Player_IsFacingActor(&this->actor, 0x3000, play))) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index de2896c286..7065985e80 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -133,7 +133,7 @@ void func_80A6F2C8(EnMm3* this, PlayState* play) { this->unk_2B4 = 0x278A; func_80A6F9C8(this); } else if (func_80A6F22C(this)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } Math_SmoothStepToS(&this->unk_2A0.x, 0, 5, 0x1000, 0x100); @@ -409,7 +409,7 @@ void func_80A6FBFC(EnMm3* this, PlayState* play) { Audio_PlaySfx(NA_SE_SY_START_SHOT); func_80A6F9C8(this); } else { - func_800B8614(&this->actor, play, this->actor.xzDistToPlayer + 10.0f); + Actor_OfferTalk(&this->actor, play, this->actor.xzDistToPlayer + 10.0f); func_80123E90(play, &this->actor); if (Player_GetMask(play) == PLAYER_MASK_BUNNY) { Audio_PlaySfx(NA_SE_SY_STOPWATCH_TIMER_INF - SFX_FLAG); @@ -453,7 +453,7 @@ void func_80A6FEEC(EnMm3* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; func_80A6F9C8(this); } else { - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 41334cc7e9..1e3a3d8bde 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -92,7 +92,7 @@ void EnMs_Wait(EnMs* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = EnMs_Talk; } else if ((this->actor.xzDistToPlayer < 90.0f) && (ABS_ALT(yawDiff) < 0x2000)) { - func_800B8614(&this->actor, play, 90.0f); + Actor_OfferTalk(&this->actor, play, 90.0f); } } @@ -149,7 +149,8 @@ void EnMs_Talk(EnMs* this, PlayState* play) { void EnMs_Sell(EnMs* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actor.textId = 0; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); this->actionFunc = EnMs_TalkAfterPurchase; } else { Actor_OfferGetItem(&this->actor, play, GI_MAGIC_BEANS, this->actor.xzDistToPlayer, this->actor.playerHeightRel); @@ -161,7 +162,8 @@ void EnMs_TalkAfterPurchase(EnMs* this, PlayState* play) { Message_ContinueTextbox(play, 0x936); // "You can plant 'em whenever you want [...]" this->actionFunc = EnMs_Talk; } else { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Muto/z_en_muto.c b/src/overlays/actors/ovl_En_Muto/z_en_muto.c index 6eceb89d61..f86530ed97 100644 --- a/src/overlays/actors/ovl_En_Muto/z_en_muto.c +++ b/src/overlays/actors/ovl_En_Muto/z_en_muto.c @@ -177,7 +177,7 @@ void EnMuto_Idle(EnMuto* this, PlayState* play) { } } - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } void EnMuto_SetupDialogue(EnMuto* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 133624f0f5..21146f3797 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -26,9 +26,6 @@ s32 func_80BC00AC(Actor* thisx, PlayState* play); s32 func_80BC01DC(Actor* thisx, PlayState* play); #define EN_NB_FLAG_NONE (0) -#define EN_NB_FLAG_1 (1 << 0) -#define EN_NB_FLAG_2 (1 << 1) -#define EN_NB_FLAG_4 (1 << 2) #define EN_NB_FLAG_8 (1 << 3) #define EN_NB_FLAG_10 (1 << 4) #define EN_NB_FLAG_20 (1 << 5) @@ -403,18 +400,17 @@ u8* func_80BC045C(EnNb* this, PlayState* play) { s32 func_80BC04FC(EnNb* this, PlayState* play) { s32 ret = false; - if (this->stateFlags & (EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4)) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - this->stateFlags |= EN_NB_FLAG_20; - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_NONE, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); - this->behaviour = ENNB_BEHAVIOUR_0; - this->msgEventCallback = NULL; - this->actor.child = this->unk_1E8; - this->msgEventScript = func_80BC045C(this, play); - this->stateFlags |= EN_NB_FLAG_20; - this->actionFunc = func_80BC0EAC; - ret = true; - } + if (((this->stateFlags & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + this->stateFlags |= EN_NB_FLAG_20; + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->behaviour = ENNB_BEHAVIOUR_0; + this->msgEventCallback = NULL; + this->actor.child = this->unk_1E8; + this->msgEventScript = func_80BC045C(this, play); + this->stateFlags |= EN_NB_FLAG_20; + this->actionFunc = func_80BC0EAC; + ret = true; } return ret; } @@ -576,7 +572,7 @@ s32 func_80BC0B98(EnNb* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 success = false; if (EnNb_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_AN) != NULL) { - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_1 | EN_NB_FLAG_2, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->stateFlags |= EN_NB_FLAG_20; EnNb_ChangeAnim(this, EN_NB_ANIM_0); success = true; @@ -587,9 +583,9 @@ s32 func_80BC0B98(EnNb* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 func_80BC0C0C(EnNb* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (!CHECK_EVENTINF(EVENTINF_43)) { - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_1 | EN_NB_FLAG_2, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_4, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); } EnNb_ChangeAnim(this, EN_NB_ANIM_0); @@ -668,7 +664,7 @@ void func_80BC0EAC(EnNb* this, PlayState* play) { CLEAR_EVENTINF(EVENTINF_43); } - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_1 | EN_NB_FLAG_2, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); if (this->scheduleResult != EN_NB_SCH_2) { this->stateFlags &= ~EN_NB_FLAG_20; } @@ -696,7 +692,7 @@ void EnNb_Init(Actor* thisx, PlayState* play) { this->stateFlags = EN_NB_FLAG_NONE; if (CHECK_EVENTINF(EVENTINF_43)) { - SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_4, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); } else { CLEAR_EVENTINF(EVENTINF_42); CLEAR_EVENTINF(EVENTINF_43); @@ -724,8 +720,8 @@ void EnNb_Update(Actor* thisx, PlayState* play) { EnNb_UpdateSkelAnime(this); func_80BC0800(this); if (Actor_IsFacingPlayer(&this->actor, 0x38E0)) { - func_8013C964(&this->actor, play, this->unk_274, 30.0f, ITEM_OCARINA_OF_TIME, - this->stateFlags & (EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4)); + SubS_Offer(&this->actor, play, this->unk_274, 30.0f, PLAYER_IA_NONE, + this->stateFlags & SUBS_OFFER_MODE_MASK); } func_80BBFF24(this, play); } diff --git a/src/overlays/actors/ovl_En_Nnh/z_en_nnh.c b/src/overlays/actors/ovl_En_Nnh/z_en_nnh.c index 3b2659d1ee..f0d84366ca 100644 --- a/src/overlays/actors/ovl_En_Nnh/z_en_nnh.c +++ b/src/overlays/actors/ovl_En_Nnh/z_en_nnh.c @@ -80,7 +80,7 @@ void EnNnh_WaitForDialogue(EnNnh* this, PlayState* play) { Message_StartTextbox(play, 0x228, &this->actor); EnNnh_SetupDialogue(this); } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Onpuman/z_en_onpuman.c b/src/overlays/actors/ovl_En_Onpuman/z_en_onpuman.c index 58b9dc88f1..dbc42f0d83 100644 --- a/src/overlays/actors/ovl_En_Onpuman/z_en_onpuman.c +++ b/src/overlays/actors/ovl_En_Onpuman/z_en_onpuman.c @@ -158,7 +158,7 @@ void func_80B121D8(EnOnpuman* this, PlayState* play) { if (this->actor.xzDistToPlayer < 200.0f) { if (ABS_ALT(yaw) <= 0x4300) { this->actor.textId = 0x8D3; - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); func_800B874C(&this->actor, play, 100.0f, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Osn/z_en_osn.c b/src/overlays/actors/ovl_En_Osn/z_en_osn.c index f209caa1c9..72c71f878b 100644 --- a/src/overlays/actors/ovl_En_Osn/z_en_osn.c +++ b/src/overlays/actors/ovl_En_Osn/z_en_osn.c @@ -726,7 +726,7 @@ void EnOsn_Idle(EnOsn* this, PlayState* play) { this->actionFunc = EnOsn_StartCutscene; } else if (((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) && (yaw < 0x4000) && (yaw > -0x4000)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); this->actor.textId = 0xFFFF; } } else if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { @@ -734,7 +734,7 @@ void EnOsn_Idle(EnOsn* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnOsn_Talk; } else if (((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) && (yaw < 0x4000) && (yaw > -0x4000)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 0b6c36d4ba..21d80e177d 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -384,7 +384,7 @@ void EnOssan_Idle(EnOssan* this, PlayState* play) { if ((this->actor.xzDistToPlayer < 100.0f) && (player->actor.world.pos.x >= -40.0f) && (player->actor.world.pos.x <= 40.0f) && (player->actor.world.pos.z >= -91.0f) && (player->actor.world.pos.z <= -60.0f)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } if (this->actor.params == ENOSSAN_PART_TIME_WORKER) { Math_SmoothStepToS(&this->partTimerHeadRot.y, 8000, 3, 2000, 0); @@ -1134,7 +1134,7 @@ void EnOssan_SetupItemPurchased(EnOssan* this, PlayState* play) { this->csId = this->lookToShopkeeperCsId; CutsceneManager_Queue(this->csId); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1157,7 +1157,7 @@ void EnOssan_ContinueShopping(EnOssan* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnOssan_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); break; case 1: @@ -1176,7 +1176,7 @@ void EnOssan_ContinueShopping(EnOssan* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnOssan_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 100.0f, PLAYER_IA_MINUS1); } } @@ -1200,7 +1200,7 @@ void EnOssan_ItemPurchased(EnOssan* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { Message_ContinueTextbox(play, 0x642); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ot/z_en_ot.c b/src/overlays/actors/ovl_En_Ot/z_en_ot.c index 8dd771bd81..ab2e30cee1 100644 --- a/src/overlays/actors/ovl_En_Ot/z_en_ot.c +++ b/src/overlays/actors/ovl_En_Ot/z_en_ot.c @@ -537,7 +537,7 @@ void func_80B5C6DC(EnOt* this, PlayState* play) { func_80B5D114(this, play); } else if ((player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && !func_801242B4(player) && (this->actor.xzDistToPlayer < 130.0f)) { - func_800B8614(&this->actor, play, 130.0f); + Actor_OfferTalk(&this->actor, play, 130.0f); } } } @@ -606,7 +606,8 @@ void func_80B5CB0C(EnOt* this, PlayState* play) { void func_80B5CBA0(EnOt* this, PlayState* play) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); this->actionFunc = func_80B5CBEC; } @@ -617,7 +618,8 @@ void func_80B5CBEC(EnOt* this, PlayState* play) { } else { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); this->actor.world.rot.y = this->actor.shape.rot.y; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); } } @@ -696,12 +698,13 @@ void func_80B5CEC8(EnOt* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E); if (this->unk_32C & 0x800) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; if ((player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && !func_801242B4(player) && (this->actor.xzDistToPlayer < 130.0f)) { - func_800B8614(&this->actor, play, 130.0f); + Actor_OfferTalk(&this->actor, play, 130.0f); } } diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index e53d94b945..be751400f5 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -232,7 +232,7 @@ s32 func_8095A978(EnOwl* this, PlayState* play, u16 textId, f32 targetDist, f32 this->actor.textId = textId; if (this->actor.xzDistToPlayer < targetDist) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, targetDist, arg4, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, targetDist, arg4, PLAYER_IA_NONE); } return false; @@ -245,7 +245,7 @@ s32 func_8095A9FC(EnOwl* this, PlayState* play, u16 textId) { this->actor.textId = textId; if (this->actor.xzDistToPlayer < 120.0f) { - func_800B8500(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 350.0f, 1000.0f, PLAYER_IA_NONE); } return false; @@ -514,7 +514,7 @@ void func_8095B574(EnOwl* this, PlayState* play) { this->csIdIndex = 2; } else if (this->actor.xzDistToPlayer < 200.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 200.0f, 400.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 200.0f, 400.0f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; } @@ -742,11 +742,11 @@ void func_8095BE0C(EnOwl* this, PlayState* play) { this->actionFlags |= 0x40; } else if (this->actor.textId == 0xBF0) { if (this->actor.isTargeted) { - func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); } } else if (this->actor.xzDistToPlayer < 200.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 200.0f, 200.0f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; } diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 989f1e84fa..5b42b2bfdd 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -621,7 +621,7 @@ void func_80BD994C(EnPamera* this, PlayState* play) { } func_80BD9A9C(this); } else { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 072f6d6acf..b6b7c88661 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -999,8 +999,9 @@ UNK_TYPE* func_80AF8540(EnPm* this, PlayState* play) { s32 func_80AF86F0(EnPm* this, PlayState* play) { s32 ret = false; - if ((this->unk_356 & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_356, 0, 7); + if (((this->unk_356 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_398 = 0; this->unk_378 = 0; this->unk_37C = NULL; @@ -1343,7 +1344,7 @@ s32 func_80AF91E8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { break; default: - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); func_80AF7E98(this, 0); if (CHECK_WEEKEVENTREG(WEEKEVENTREG_90_08)) { this->unk_356 |= 0x800; @@ -1440,7 +1441,7 @@ s32 func_80AF95E8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { Actor_PlaySfx(&this->actor, NA_SE_EV_ROOM_CARTAIN); Flags_SetSwitch(play, 0); this->unk_36C = 20; - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); func_80AF7E98(this, 3); break; @@ -1470,7 +1471,7 @@ s32 func_80AF95E8(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { if (scheduleOutput->result == 29) { this->actor.world.rot.y = BINANG_ROT180(this->actor.world.rot.y); } - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_356 |= 0x9000; func_80AF7E98(this, 3); break; @@ -1499,7 +1500,7 @@ s32 func_80AF992C(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { Math_Vec3f_Copy(&this->actor.world.pos, &D_80AFB8EC); Math_Vec3s_Copy(&this->actor.world.rot, &D_80AFB8F8); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->actor.targetMode = 6; this->actor.gravity = -1.0f; this->unk_368 = 80.0f; @@ -1517,7 +1518,7 @@ s32 func_80AF9A0C(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; if (func_80AF8ED4(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_AN)) { - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_356 |= 0x20; this->unk_356 |= 0x9000; if (this->unk_258 != 0) { @@ -1535,7 +1536,7 @@ s32 func_80AF9AB0(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; if (func_80AF8ED4(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_TEST3)) { - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_356 |= 0x20; this->unk_356 |= 0x9000; if (this->unk_258 != 0) { @@ -1553,7 +1554,7 @@ s32 func_80AF9B54(EnPm* this, PlayState* play, ScheduleOutput* scheduleOutput) { s32 ret = false; if (func_80AF8ED4(this, play, scheduleOutput, ACTORCAT_NPC, ACTOR_EN_AL)) { - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_356 |= 0x9000; this->unk_356 |= 0x20; if (this->unk_258 != 0) { @@ -1854,9 +1855,9 @@ s32 func_80AFA334(EnPm* this, PlayState* play) { case 24: temp_v0 = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; if (ABS_ALT(temp_v0) < 0x4000) { - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_356, 0, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } break; @@ -2024,7 +2025,7 @@ void func_80AFA5FC(EnPm* this, PlayState* play) { Vec3f sp2C; if (func_8010BF58(&this->actor, play, this->unk_25C, this->unk_37C, &this->unk_264)) { - SubS_UpdateFlags(&this->unk_356, 3, 7); + SubS_SetOfferMode(&this->unk_356, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_356 &= ~0x20; this->unk_356 |= 0x200; this->actor.child = NULL; @@ -2093,7 +2094,7 @@ void EnPm_Update(Actor* thisx, PlayState* play) { func_80AF8DD4(this, play); func_80AF7E6C(this); func_80AF8AC8(this); - func_8013C964(&this->actor, play, this->unk_368, 30.0f, this->unk_394, this->unk_356 & 7); + SubS_Offer(&this->actor, play, this->unk_368, 30.0f, this->unk_394, this->unk_356 & SUBS_OFFER_MODE_MASK); Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); func_80AF7F68(this, play); diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.c b/src/overlays/actors/ovl_En_Pst/z_en_pst.c index 7a507e0efd..92edec67ac 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.c +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.c @@ -208,7 +208,7 @@ s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { itemAction = func_80123810(play); scriptBranch = 0; if ((itemAction == PLAYER_IA_LETTER_TO_KAFEI) || (itemAction == PLAYER_IA_LETTER_MAMA)) { - this->exchangeItemId = itemAction; + this->exchangeItemAction = itemAction; this->behaviour++; scriptBranch = 1; } else if (itemAction <= PLAYER_IA_MINUS1) { @@ -223,7 +223,7 @@ s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { } break; case POSTBOX_BEHAVIOUR_TAKE_ITEM: - if (this->exchangeItemId == PLAYER_IA_LETTER_TO_KAFEI) { + if (this->exchangeItemAction == PLAYER_IA_LETTER_TO_KAFEI) { scriptBranch = 1; } break; @@ -252,7 +252,7 @@ s32* EnPst_GetMsgEventScript(EnPst* this, PlayState* play) { return NULL; } } else if (this->stateFlags & 0x20) { - if (this->exchangeItemId == PLAYER_IA_LETTER_MAMA) { + if (this->exchangeItemAction == PLAYER_IA_LETTER_MAMA) { return D_80B2C488; } else { return D_80B2C490; @@ -280,32 +280,31 @@ s32 EnPst_CheckTalk(EnPst* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 ret = false; - if (this->stateFlags & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - this->stateFlags &= ~0x30; - if (player->exchangeItemId == PLAYER_IA_LETTER_TO_KAFEI) { - this->stateFlags |= 0x10; - this->exchangeItemId = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_IA_NONE) { - this->stateFlags |= 0x20; - this->exchangeItemId = player->exchangeItemId; - } - // If Letter to Kafei is deposited, value is set to 2 - this->isLetterToKafeiDeposited = EnPst_HandleLetterDay1(this); - SubS_UpdateFlags(&this->stateFlags, 0, 7); - this->behaviour = 0; - this->msgEventCallback = NULL; - this->stateFlags |= 0x40; - this->msgEventScript = EnPst_GetMsgEventScript(this, play); - this->actionFunc = EnPst_Talk; - ret = true; + if (((this->stateFlags & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + this->stateFlags &= ~0x30; + if (player->exchangeItemAction == PLAYER_IA_LETTER_TO_KAFEI) { + this->stateFlags |= 0x10; + this->exchangeItemAction = player->exchangeItemAction; + } else if (player->exchangeItemAction != PLAYER_IA_NONE) { + this->stateFlags |= 0x20; + this->exchangeItemAction = player->exchangeItemAction; } + // If Letter to Kafei is deposited, value is set to 2 + this->isLetterToKafeiDeposited = EnPst_HandleLetterDay1(this); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->behaviour = 0; + this->msgEventCallback = NULL; + this->stateFlags |= 0x40; + this->msgEventScript = EnPst_GetMsgEventScript(this, play); + this->actionFunc = EnPst_Talk; + ret = true; } return ret; } -s32 EnPst_UpdateFlagsSubs(EnPst* this, PlayState* play, ScheduleOutput* scheduleOutput) { - SubS_UpdateFlags(&this->stateFlags, 3, 7); +s32 EnPst_SetOfferItemModeOnScreen(EnPst* this, PlayState* play, ScheduleOutput* scheduleOutput) { + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); return true; } @@ -316,8 +315,9 @@ s32 EnPst_ProcessScheduleOutput(EnPst* this, PlayState* play, ScheduleOutput* sc switch (scheduleOutput->result) { case POSTBOX_SCH_AVAILABLE: - ret = EnPst_UpdateFlagsSubs(this, play, scheduleOutput); + ret = EnPst_SetOfferItemModeOnScreen(this, play, scheduleOutput); break; + case POSTBOX_SCH_CHECKED_BY_POSTMAN: ret = true; break; @@ -373,7 +373,7 @@ void EnPst_Talk(EnPst* this, PlayState* play) { break; } } - SubS_UpdateFlags(&this->stateFlags, 3, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->msgEventArg4 = 0; this->actionFunc = EnPst_FollowSchedule; } @@ -388,7 +388,7 @@ void EnPst_Init(Actor* thisx, PlayState* play) { POSTBOX_LIMB_MAX); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit); - SubS_UpdateFlags(&this->stateFlags, 3, 7); + SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, 0); this->actor.targetMode = 0; Actor_SetScale(&this->actor, 0.02f); @@ -410,7 +410,7 @@ void EnPst_Update(Actor* thisx, PlayState* play) { if (this->scheduleResult != POSTBOX_SCH_NONE) { if (Actor_IsFacingPlayer(&this->actor, 0x1FFE)) { this->unk214 = 0; - func_8013C964(&this->actor, play, 60.0f, 20.0f, 0, this->stateFlags & 7); + SubS_Offer(&this->actor, play, 60.0f, 20.0f, PLAYER_IA_NONE, this->stateFlags & SUBS_OFFER_MODE_MASK); } Actor_SetFocus(&this->actor, 20.0f); EnPst_UpdateCollision(this, play); diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.h b/src/overlays/actors/ovl_En_Pst/z_en_pst.h index c3ebd58a8b..9a47181e8e 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.h +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.h @@ -32,7 +32,7 @@ typedef struct EnPst { /* 0x20E */ s16 behaviour; /* 0x210 */ MsgEventFunc msgEventCallback; /* 0x214 */ s32 unk214; // Set and not used - /* 0x218 */ s32 exchangeItemId; + /* 0x218 */ s32 exchangeItemAction; /* 0x21C */ s32 isLetterToKafeiDeposited; } EnPst; // size = 0x220 diff --git a/src/overlays/actors/ovl_En_Rail_Skb/z_en_rail_skb.c b/src/overlays/actors/ovl_En_Rail_Skb/z_en_rail_skb.c index bb8f9b9cf0..b2ada549fe 100644 --- a/src/overlays/actors/ovl_En_Rail_Skb/z_en_rail_skb.c +++ b/src/overlays/actors/ovl_En_Rail_Skb/z_en_rail_skb.c @@ -499,7 +499,7 @@ void func_80B716A8(EnRailSkb* this, PlayState* play) { Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 12); func_80B717C8(this); } else if ((this->actor.xzDistToPlayer < 100.0f) && !(this->collider.base.acFlags & AC_HIT)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.world.rot.y, 1, 0x71C, 0xB6); } diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index 3cc86dfe33..30dd6ced2b 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -966,7 +966,7 @@ void EnRailgibud_CheckIfTalkingToPlayer(EnRailgibud* this, PlayState* play) { this->actor.speed = 0.0f; } else if (CHECK_FLAG_ALL(this->actor.flags, (ACTOR_FLAG_1 | ACTOR_FLAG_8)) && !(this->collider.base.acFlags & AC_HIT)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } else { switch (Message_GetState(&play->msgCtx)) { diff --git a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c index 3632efa2af..6b2f86f535 100644 --- a/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c +++ b/src/overlays/actors/ovl_En_Recepgirl/z_en_recepgirl.c @@ -103,7 +103,7 @@ void EnRecepgirl_Wait(EnRecepgirl* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { EnRecepgirl_SetupTalk(this); } else if (Actor_IsFacingPlayer(&this->actor, 0x2000)) { - func_800B8614(&this->actor, play, 60.0f); + Actor_OfferTalk(&this->actor, play, 60.0f); if (Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK) { this->actor.textId = 0x2367; // "... doesn't Kafei want to break off his engagement ... ?" } else if (Flags_GetSwitch(play, this->actor.params)) { diff --git a/src/overlays/actors/ovl_En_Rg/z_en_rg.c b/src/overlays/actors/ovl_En_Rg/z_en_rg.c index 582ea3a62c..cb22f557ac 100644 --- a/src/overlays/actors/ovl_En_Rg/z_en_rg.c +++ b/src/overlays/actors/ovl_En_Rg/z_en_rg.c @@ -750,7 +750,10 @@ void EnRg_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_1; this->unk_310 = 8; this->actor.gravity = -1.0f; - SubS_UpdateFlags(&this->unk_310, 3, 7); + + // This is the only usage of this function whose actor does not use `SubS_Offer`. + // Since these bits go unused, it seems like a copy paste that still used `SubSOfferMode` + SubS_SetOfferMode(&this->unk_310, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_12_02)) { this->unk_318 = Rand_S16Offset(30, 30); @@ -843,7 +846,7 @@ s32 func_80BF5588(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s break; } - if (((this->unk_310 & 8) != 0) && (fidgetIndex < 9)) { + if ((this->unk_310 & 8) && (fidgetIndex < 9)) { rot->y += (s16)(Math_SinS(this->fidgetTableY[fidgetIndex]) * 200.0f); rot->z += (s16)(Math_CosS(this->fidgetTableZ[fidgetIndex]) * 200.0f); } diff --git a/src/overlays/actors/ovl_En_Rz/z_en_rz.c b/src/overlays/actors/ovl_En_Rz/z_en_rz.c index 52b2ac2965..520a01f828 100644 --- a/src/overlays/actors/ovl_En_Rz/z_en_rz.c +++ b/src/overlays/actors/ovl_En_Rz/z_en_rz.c @@ -536,10 +536,10 @@ void func_80BFC3F8(EnRz* this, PlayState* play) { } else if (EnRz_CanTalk(this, play)) { if (func_80BFBCEC(this, play) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_77_04) && this->sister != NULL) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->actor.flags &= ~ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -572,7 +572,7 @@ void func_80BFC674(EnRz* this, PlayState* play) { Message_StartTextbox(play, 0x2924, &this->actor); } } else if (EnRz_CanTalk(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -609,7 +609,7 @@ void func_80BFC7E0(EnRz* this, PlayState* play) { this->actor.speed = 0.0f; func_80BFBDFC(play); } else if (EnRz_CanTalk(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -644,7 +644,7 @@ void EnRz_Walk(EnRz* this, PlayState* play) { this->actor.speed = 0.0f; func_80BFBDFC(play); } else if (EnRz_CanTalk(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c index 96b4edea07..ecc9017c5b 100644 --- a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c +++ b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c @@ -1114,7 +1114,7 @@ void EnSGoro_WinterShrineGoron_Idle(EnSGoro* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnSGoro_WinterShrineGoron_Talk; } else if ((this->actor.xzDistToPlayer < 250.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0x1000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -1145,7 +1145,7 @@ void EnSGoro_SpringShrineGoron_Idle(EnSGoro* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnSGoro_SpringShrineGoron_Talk; } else if ((this->actor.xzDistToPlayer < 250.0f) || (this->actor.isTargeted)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0x1000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -1186,7 +1186,7 @@ void EnSGoro_ShopGoron_Idle(EnSGoro* this, PlayState* play) { this->actionFunc = EnSGoro_ShopGoron_Talk; } } else if ((this->actor.xzDistToPlayer < 250.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0x1000, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -1271,7 +1271,7 @@ void EnSGoro_ShopGoron_FinishTransaction(EnSGoro* this, PlayState* play) { Message_StartTextbox(play, this->textId, &this->actor); this->actionFunc = EnSGoro_ShopGoron_Talk; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1280,7 +1280,7 @@ void EnSGoro_Sleep(EnSGoro* this, PlayState* play) { Message_StartTextbox(play, 0x23A, &this->actor); this->actionFunc = EnSGoro_SleepTalk; } else if (this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } EnSGoro_UpdateSleeping(this, play); } diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index 085610542d..fdab2ca4f8 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -302,7 +302,7 @@ void func_80BCB52C(EnScopenuts* this, PlayState* play) { } else if (((this->actor.xzDistToPlayer < 100.0f) && (((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false)) || this->actor.isTargeted) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } else if (!(((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false) || !((this->actor.xzDistToPlayer < 200.0f) ? true : false)) { this->unk_348 = 4; @@ -360,7 +360,7 @@ void func_80BCB6D0(EnScopenuts* this, PlayState* play) { } } } else if (talkState == TEXT_STATE_DONE) { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_80BCB980; } } @@ -382,7 +382,7 @@ void func_80BCB980(EnScopenuts* this, PlayState* play) { Message_StartTextbox(play, this->unk_33C, &this->actor); this->actionFunc = func_80BCB6D0; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c index e26c1769ed..885ab2717d 100644 --- a/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c +++ b/src/overlays/actors/ovl_En_Sekihi/z_en_sekihi.c @@ -162,7 +162,7 @@ void func_80A450B0(EnSekihi* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { this->actionFunc = func_80A44F40; } else if ((this->dyna.actor.xzDistToPlayer < 100.0f) && (Player_IsFacingActor(&this->dyna.actor, 0x2600, play))) { - func_800B8614(&this->dyna.actor, play, 120.0f); + Actor_OfferTalk(&this->dyna.actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index 6e54b9be67..d03f411cfc 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -341,7 +341,7 @@ void func_80ADB544(EnSellnuts* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0x7D0, 0); this->actor.world.rot.y = this->actor.shape.rot.y; if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if (Player_GetExchangeItemId(play) == PLAYER_IA_MOONS_TEAR) { + if (Player_GetExchangeItemAction(play) == PLAYER_IA_MOONS_TEAR) { player->actor.textId = D_80ADD928[this->unk_33A]; this->unk_340 = player->actor.textId; this->actionFunc = func_80ADBAB8; @@ -382,7 +382,7 @@ void func_80ADB544(EnSellnuts* this, PlayState* play) { } else if (((this->actor.xzDistToPlayer < 80.0f) && (((this->actor.playerHeightRel < 50.0f) && (this->actor.playerHeightRel > -50.0f)) ? true : false)) || this->actor.isTargeted) { - func_800B85E0(&this->actor, play, 80.0f, PLAYER_IA_MOONS_TEAR); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 80.0f, PLAYER_IA_MOONS_TEAR); if (player->transformation == PLAYER_FORM_DEKU) { if (gSaveContext.save.day == 3) { this->unk_33A = 2; @@ -426,7 +426,7 @@ void func_80ADB924(EnSellnuts* this, PlayState* play) { if (itemAction == PLAYER_IA_MOONS_TEAR) { player->actor.textId = D_80ADD928[this->unk_33A]; this->unk_340 = player->actor.textId; - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = func_80ADBAB8; } else { player->actor.textId = D_80ADD920[this->unk_33A]; @@ -492,14 +492,14 @@ void func_80ADBC60(EnSellnuts* this, PlayState* play) { Message_StartTextbox(play, this->unk_340, &this->actor); this->actionFunc = func_80ADB0D8; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->unk_340 = D_80ADD930[this->unk_33A]; } } void func_80ADBCE4(EnSellnuts* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->unk_340 = D_80ADD930[this->unk_33A]; this->actionFunc = func_80ADBC60; } @@ -713,7 +713,7 @@ void func_80ADC5A4(EnSellnuts* this, PlayState* play) { } } else if (func_80ADB08C(play) < 80.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, this->actor.xzDistToPlayer); + Actor_OfferTalk(&this->actor, play, this->actor.xzDistToPlayer); } } @@ -860,7 +860,7 @@ void func_80ADCC04(EnSellnuts* this, PlayState* play) { if (currentFrame == 0) { if (func_80ADB08C(play) < 9999.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 9999.0f); + Actor_OfferTalk(&this->actor, play, 9999.0f); } this->unk_340 = 0x626; this->unk_34C = 0; diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index 93a663838d..06491bba5a 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -290,25 +290,24 @@ s32 func_80AE68F0(EnShn* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 ret = false; - if (this->unk_1D8 & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - this->unk_1D8 &= ~0x180; - if (player->exchangeItemId == PLAYER_IA_PICTOGRAPH_BOX) { - this->unk_1D8 |= 0x80; - this->unk_2E4 = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_IA_NONE) { - this->unk_1D8 |= 0x100; - this->unk_2E4 = player->exchangeItemId; - } - SubS_UpdateFlags(&this->unk_1D8, 0, 7); - this->unk_1DC = func_80AE6880(this, play); - this->unk_2C6 = 0; - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08)) { - this->unk_1D8 |= 8; - } - this->actionFunc = func_80AE6A64; - ret = true; + if (((this->unk_1D8 & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + this->unk_1D8 &= ~0x180; + if (player->exchangeItemAction == PLAYER_IA_PICTOGRAPH_BOX) { + this->unk_1D8 |= 0x80; + this->unk_2E4 = player->exchangeItemAction; + } else if (player->exchangeItemAction != PLAYER_IA_NONE) { + this->unk_1D8 |= 0x100; + this->unk_2E4 = player->exchangeItemAction; } + SubS_SetOfferMode(&this->unk_1D8, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->unk_1DC = func_80AE6880(this, play); + this->unk_2C6 = 0; + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_08)) { + this->unk_1D8 |= 8; + } + this->actionFunc = func_80AE6A64; + ret = true; } return ret; } @@ -328,7 +327,7 @@ void func_80AE6A64(EnShn* this, PlayState* play) { Vec3f shnPos; if (func_8010BF58(&this->actor, play, this->unk_1DC, this->unk_2D8, &this->unk_1E0)) { - SubS_UpdateFlags(&this->unk_1D8, 3, 7); + SubS_SetOfferMode(&this->unk_1D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_1D8 &= ~8; this->unk_1D8 |= 0x20; this->unk_2CA = 20; @@ -361,10 +360,10 @@ void EnShn_Init(Actor* thisx, PlayState* play) { this->unk_2D8 = 0; this->unk_1D8 = 0; if (gSaveContext.save.entrance != ENTRANCE(TOURIST_INFORMATION, 2)) { - SubS_UpdateFlags(&this->unk_1D8, 3, 7); + SubS_SetOfferMode(&this->unk_1D8, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2BE = 0; } else { - SubS_UpdateFlags(&this->unk_1D8, 4, 7); + SubS_SetOfferMode(&this->unk_1D8, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); this->unk_2BE = 1; } this->actionFunc = func_80AE69E8; @@ -382,7 +381,7 @@ void EnShn_Update(Actor* thisx, PlayState* play) { func_80AE6130(this); func_80AE63A8(this, play); this->unk_2E0 = 0; - func_8013C964(&this->actor, play, 120.0f, 40.0f, PLAYER_IA_NONE, this->unk_1D8 & 7); + SubS_Offer(&this->actor, play, 120.0f, 40.0f, PLAYER_IA_NONE, this->unk_1D8 & SUBS_OFFER_MODE_MASK); } s32 EnShn_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index a8167009cf..1df91a4f02 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -327,7 +327,7 @@ void func_80994F7C(EnSkb* this, PlayState* play) { this->actionFunc = func_80995190; this->actor.speed = 0.0f; } else if (Actor_IsFacingPlayer(&this->actor, 0x2AAA) && !(this->collider.base.acFlags & AC_HIT)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -357,7 +357,7 @@ void func_80995068(EnSkb* this, PlayState* play) { this->actor.colChkInfo.mass = MASS_HEAVY; func_80995A30(this); } else if (!(this->collider.base.acFlags & AC_HIT)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index cf51ba7d63..ebe1589c3e 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -571,7 +571,7 @@ void EnSob1_Idle(EnSob1* this, PlayState* play) { player->actor.world.pos.x <= this->posXZRange.xMax) && (player->actor.world.pos.z >= this->posXZRange.zMin && player->actor.world.pos.z <= this->posXZRange.zMax)) { - func_800B8614(&this->actor, play, 400.0f); + Actor_OfferTalk(&this->actor, play, 400.0f); } if (this->wasTalkedToWhileWalking == true) { this->wasTalkedToWhileWalking = false; @@ -826,7 +826,7 @@ void EnSob1_Walking(EnSob1* this, PlayState* play) { player->actor.world.pos.x <= this->posXZRange.xMax) && (player->actor.world.pos.z >= this->posXZRange.zMin && player->actor.world.pos.z <= this->posXZRange.zMax)) { - func_800B8614(&this->actor, play, 400.0f); + Actor_OfferTalk(&this->actor, play, 400.0f); } } } @@ -851,7 +851,7 @@ void EnSob1_ItemPurchased(EnSob1* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { Message_ContinueTextbox(play, 0x647); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1120,7 +1120,7 @@ void EnSob1_SetupItemPurchased(EnSob1* this, PlayState* play) { this->csId = this->lookToShopkeeperCsId; CutsceneManager_Queue(this->csId); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1136,7 +1136,7 @@ void EnSob1_ContinueShopping(EnSob1* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->welcomeTextId, &this->actor); EnSob1_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 200.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c index 9bc9dc78c9..7c5fdce365 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c @@ -750,7 +750,7 @@ void EnSsh_Idle(EnSsh* this, PlayState* play) { if ((this->unkTimer == 0) && (this->animTimer == 0) && (this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 7e3b9ead6c..c19dc5b36d 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -247,7 +247,7 @@ void EnSth_PanicIdle(EnSth* this, PlayState* play) { EnSth_GetInitialPanicText(this, play); this->actionFunc = EnSth_HandlePanicConversation; } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } @@ -310,7 +310,7 @@ void EnSth_PostOceanspiderhouseReward(EnSth* this, PlayState* play) { } Message_StartTextbox(play, nextTextId, &this->actor); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -321,7 +321,7 @@ void EnSth_GiveOceansideSpiderHouseReward(EnSth* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnSth_PostOceanspiderhouseReward; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); if (CURRENT_DAY == 3) { EnSth_ChangeAnim(this, STH_ANIM_PLEAD); } else { @@ -434,7 +434,7 @@ void EnSth_OceansideSpiderHouseIdle(EnSth* this, PlayState* play) { EnSth_GetInitialOceansideSpiderHouseText(this, play); this->actionFunc = EnSth_HandleOceansideSpiderHouseConversation; } else if (EnSth_CanSpeakToPlayer(this, play)) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } @@ -459,7 +459,7 @@ void EnSth_MoonLookingIdle(EnSth* this, PlayState* play) { } else { this->actor.textId = 0x1131; // (The Moon) gotten bigger again } - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } this->headRot.x = -0x1388; } @@ -510,7 +510,7 @@ void EnSth_TalkAfterSwampSpiderHouseGiveMask(EnSth* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_MASK_OF_TRUTH); Message_StartTextbox(play, 0x918, &this->actor); // I've had enough of this, going home } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -521,7 +521,7 @@ void EnSth_SwampSpiderHouseGiveMask(EnSth* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnSth_TalkAfterSwampSpiderHouseGiveMask; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { this->sthFlags &= ~STH_FLAG_DRAW_MASK_OF_TRUTH; // This flag is used to keep track if the player has already spoken to the actor, triggering secondary dialogue. @@ -593,7 +593,7 @@ void EnSth_SwampSpiderHouseIdle(EnSth* this, PlayState* play) { this->actionFunc = EnSth_HandleSwampSpiderHouseConversation; } else if (EnSth_CanSpeakToPlayer(this, play)) { this->actor.textId = 0; - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } diff --git a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c index 3a32031d36..534f77cb40 100644 --- a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c +++ b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c @@ -197,7 +197,7 @@ void func_80BC9560(EnStoneheishi* this, PlayState* play) { yawDiff = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.world.rot.y)); if ((yawDiff <= 0x18F0) && !(player->stateFlags1 & PLAYER_STATE1_800000)) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } @@ -328,7 +328,7 @@ void EnStoneheishi_DrinkBottleProcess(EnStoneheishi* this, PlayState* play) { play->msgCtx.msgLength = 0; player->actor.textId = 0; - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; this->bottleDisplay = EN_STONE_BOTTLE_RED_POTION; if (this->playerGivesBluePotion) { @@ -398,7 +398,7 @@ void func_80BC9D28(EnStoneheishi* this, PlayState* play) { this->actor.textId = sEnStoneHeishiTextIds[this->textIdIndex]; SET_WEEKEVENTREG(WEEKEVENTREG_41_40); Actor_ProcessTalkRequest(&this->actor, &play->state); - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = func_80BC9E50; } else if (INV_CONTENT(ITEM_MASK_STONE) == ITEM_MASK_STONE) { Actor_OfferGetItem(&this->actor, play, GI_RUPEE_BLUE, 300.0f, 300.0f); @@ -416,7 +416,7 @@ void func_80BC9E50(EnStoneheishi* this, PlayState* play) { this->action = EN_STONE_ACTION_1; this->actionFunc = func_80BC9680; } else { - func_800B8500(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 400.0f, 400.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c b/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c index cfb0730296..fae0a12467 100644 --- a/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c +++ b/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c @@ -500,7 +500,7 @@ void func_80AE7F34(EnStopheishi* this, PlayState* play) { this->skelAnime.playSpeed = 1.0f; func_80AE854C(this, play); } else if (yawDiffAbs < 0x4BB9) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index c1d833c716..b88f7f6c6e 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -1079,7 +1079,7 @@ void func_80BACA14(EnSuttari* this, PlayState* play) { func_80BAAB78(this, play); this->actionFunc = func_80BADA9C; } else if (this->actor.xzDistToPlayer < 200.0f) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } } Math_ApproachF(&this->actor.speed, 5.0f, 0.2f, 0.1f); @@ -1192,7 +1192,7 @@ void func_80BAD004(EnSuttari* this, PlayState* play) { Message_StartTextbox(play, 0x2A3A, &this->actor); this->actionFunc = func_80BAD130; } else if ((this->actor.xzDistToPlayer < 200.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } Actor_MoveWithGravity(&this->actor); } @@ -1325,7 +1325,7 @@ void func_80BAD5F8(EnSuttari* this, PlayState* play) { Message_StartTextbox(play, 0x2A02, &this->actor); this->actionFunc = func_80BAD130; } else if ((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } Actor_MoveWithGravity(&this->actor); @@ -1362,7 +1362,7 @@ void func_80BAD7F8(EnSuttari* this, PlayState* play) { Message_StartTextbox(play, 0x2A02, &this->actor); this->actionFunc = func_80BAD130; } else if ((this->actor.xzDistToPlayer < 100.0f) || this->actor.isTargeted) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } } Actor_MoveWithGravity(&this->actor); @@ -1376,7 +1376,7 @@ void func_80BADA08(EnSuttari* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_81_04); } else if (this->actor.xzDistToPlayer < 500.0f) { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 500.0f); + Actor_OfferTalk(&this->actor, play, 500.0f); } } @@ -1481,7 +1481,7 @@ void func_80BADE8C(EnSuttari* this, PlayState* play) { this->actionFunc = func_80BAD130; } else { this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 500.0f); + Actor_OfferTalk(&this->actor, play, 500.0f); } } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 61f46966d2..bfb3081de9 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -327,7 +327,7 @@ void EnSyatekiMan_Swamp_Idle(EnSyatekiMan* this, PlayState* play) { } this->actionFunc = EnSyatekiMan_Swamp_Talk; } else { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } if (player->actor.world.pos.z < 135.0f) { @@ -629,7 +629,7 @@ void EnSyatekiMan_Town_Idle(EnSyatekiMan* this, PlayState* play) { this->actionFunc = EnSyatekiMan_Town_Talk; } else { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -932,7 +932,7 @@ void EnSyatekiMan_Swamp_GiveReward(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Swamp_Talk; } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } @@ -997,7 +997,7 @@ void EnSyatekiMan_Town_GiveReward(EnSyatekiMan* this, PlayState* play) { this->shootingGameState = SG_GAME_STATE_NONE; this->actionFunc = EnSyatekiMan_Town_Talk; } else { - func_800B85E0(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 500.0f, PLAYER_IA_MINUS1); } } diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c index 1f97e5c57f..47500edf0b 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -184,16 +184,14 @@ void func_80BE0664(EnTab* this) { s32 func_80BE06DC(EnTab* this, PlayState* play) { s32 ret = false; - if (this->unk_2FC & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - SubS_UpdateFlags(&this->unk_2FC, 0, 7); - ret = true; - this->unk_320 = 0; - this->unk_328 = NULL; - this->actor.child = &GET_PLAYER(play)->actor; - this->unk_2FC |= 8; - this->actionFunc = func_80BE1348; - } + if (((this->unk_2FC & 7) != SUBS_OFFER_MODE_NONE) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { + SubS_SetOfferMode(&this->unk_2FC, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + ret = true; + this->unk_320 = 0; + this->unk_328 = NULL; + this->actor.child = &GET_PLAYER(play)->actor; + this->unk_2FC |= 8; + this->actionFunc = func_80BE1348; } return ret; } @@ -375,7 +373,7 @@ s32 func_80BE0F04(EnTab* this, PlayState* play, ScheduleOutput* scheduleOutput) Math_Vec3s_Copy(&this->actor.world.rot, &D_80BE1AFC); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); this->actor.targetMode = 0; - SubS_UpdateFlags(&this->unk_2FC, 3, 7); + SubS_SetOfferMode(&this->unk_2FC, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2FC |= (0x40 | 0x20); this->unk_30C = 30; this->unk_1E4 = sp28; @@ -392,7 +390,7 @@ s32 func_80BE0FC4(EnTab* this, PlayState* play, ScheduleOutput* scheduleOutput) Math_Vec3s_Copy(&this->actor.world.rot, &D_80BE1B10); Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot); this->actor.targetMode = 6; - SubS_UpdateFlags(&this->unk_2FC, 3, 7); + SubS_SetOfferMode(&this->unk_2FC, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2FC |= (0x40 | 0x20); this->unk_30C = 0x50; func_80BE05BC(this, 1); @@ -494,7 +492,7 @@ void func_80BE1348(EnTab* this, PlayState* play) { Vec3f sp34; if (func_8010BF58(&this->actor, play, func_80BE0E04(this, play), this->unk_328, &this->unk_1DC)) { - SubS_UpdateFlags(&this->unk_2FC, 3, 7); + SubS_SetOfferMode(&this->unk_2FC, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->unk_2FC &= ~8; this->unk_2FC |= 0x40; this->unk_324 = 20; @@ -551,7 +549,7 @@ void EnTab_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.radius + this->unk_30C; height = this->collider.dim.height + 10; - func_8013C964(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2FC & 7); + SubS_Offer(&this->actor, play, radius, height, PLAYER_IA_NONE, this->unk_2FC & SUBS_OFFER_MODE_MASK); Actor_MoveWithGravity(&this->actor); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, UPDBGCHECKINFO_FLAG_4); func_80BE0620(this, play); diff --git a/src/overlays/actors/ovl_En_Talk/z_en_talk.c b/src/overlays/actors/ovl_En_Talk/z_en_talk.c index 7c639c44ad..1dac7592b9 100644 --- a/src/overlays/actors/ovl_En_Talk/z_en_talk.c +++ b/src/overlays/actors/ovl_En_Talk/z_en_talk.c @@ -58,7 +58,7 @@ void func_80BDE090(EnTalk* this, PlayState* play) { if (((this->actor.xzDistToPlayer < 40.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) || this->actor.isTargeted) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index d1a95988f5..37ab26196e 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -788,7 +788,7 @@ void EnTalkGibud_PassiveIdle(EnTalkGibud* this, PlayState* play) { EnTalkGibud_SetupTalk(this); } else if (this->actor.xzDistToPlayer < 100.0f && !(this->collider.base.acFlags & AC_HIT)) { Actor_TrackPlayer(play, &this->actor, &this->headRotation, &this->upperBodyRotation, this->actor.focus.pos); - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } else { Math_SmoothStepToS(&this->headRotation.y, 0, 1, 100, 0); Math_SmoothStepToS(&this->upperBodyRotation.y, 0, 1, 100, 0); diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index 65f006401b..12dc134aac 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -671,7 +671,7 @@ s32 func_80A3F73C(EnTest3* this, PlayState* play) { CutsceneManager_SetReturnCamera(this->subCamId); play->startPlayerCutscene(play, &this->player, PLAYER_CSMODE_WAIT); } - func_800B863C(&this->player.actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->player.actor, play); if (this->unk_D88 == 3) { func_80A3F534(this, play); } else if (this->unk_D88 == 5) { @@ -1023,7 +1023,7 @@ void func_80A40908(EnTest3* this, PlayState* play) { Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES); Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI); } else { - func_800B8500(&this->player.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->player.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); this->unk_D78 = &D_80A41854[6]; this->player.actor.textId = this->unk_D78->textId; this->player.actor.flags |= (ACTOR_FLAG_1 | ACTOR_FLAG_8); diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index 007673dbef..5243b5c47e 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -164,7 +164,7 @@ void EnTimeTag_SoaringEngraving_Wait(EnTimeTag* this, PlayState* play) { (Flags_GetSwitch(play, TIMETAG_SOARING_GET_SWITCHFLAG(&this->actor)) || CHECK_QUEST_ITEM(QUEST_SONG_SOARING))) { this->actor.flags |= ACTOR_FLAG_1; - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } @@ -277,7 +277,7 @@ void EnTimeTag_Diary_Wait(EnTimeTag* this, PlayState* play) { } this->actionFunc = EnTimeTag_Diary_Cutscene; } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 71e3446834..ccc5e4489e 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -294,7 +294,7 @@ void func_80AECA90(EnTk* this, PlayState* play) { play->msgCtx.msgLength = 0; func_80AEDE10(this, play); } else if (this->actor.xzDistToPlayer < 100.0f) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } } @@ -486,7 +486,7 @@ s32 func_80AECE60(EnTk* this, PlayState* play) { } if (!(this->unk_3CE & 8) && !(this->unk_2CA & 0x10) && (this->actor.xzDistToPlayer < 100.0f)) { - func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); + SubS_OfferTalkExchangeFacing(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); } return false; @@ -696,10 +696,11 @@ void func_80AED940(EnTk* this, PlayState* play) { func_80AEDE10(this, play); } else if (!(this->unk_2CA & 0x80)) { if (this->actor.xzDistToPlayer < 100.0f) { - func_8013E8F8(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); + SubS_OfferTalkExchangeFacing(&this->actor, play, 100.0f, 100.0f, PLAYER_IA_NONE, 0x4000, 0x4000); } } else { - func_800B8500(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel, + PLAYER_IA_NONE); } } diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index b9cb09326f..39ac19dba4 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -257,10 +257,10 @@ void func_80BA39C8(EnToto* this, PlayState* play) { if (this->unk2B6 != 0) { this->text = D_80BA5044; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 9999.9f, 9999.9f, PLAYER_IA_NONE); } else { this->actor.flags &= ~ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 50.0f); + Actor_OfferTalk(&this->actor, play, 50.0f); if (play->sceneId == SCENE_SONCHONOIE) { if (player->transformation == PLAYER_FORM_DEKU) { if (!Flags_GetSwitch(play, this->actor.home.rot.x)) { diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 7984b26fa1..d61786e6f0 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -486,7 +486,7 @@ void EnTrt_GivenRedPotionForKoume(EnTrt* this, PlayState* play) { CutsceneManager_Queue(this->csId); } } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->actionFunc = EnTrt_ItemGiven; } } @@ -817,7 +817,7 @@ void EnTrt_IdleSleeping(EnTrt* this, PlayState* play) { this->actionFunc = EnTrt_BeginInteraction; } else if (((player->actor.world.pos.x >= -50.0f) && (player->actor.world.pos.x <= -25.0f)) && ((player->actor.world.pos.z >= -19.0f) && (player->actor.world.pos.z <= 30.0f))) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } if (DECR(this->timer) == 0) { this->timer = 40; @@ -863,7 +863,7 @@ void EnTrt_IdleAwake(EnTrt* this, PlayState* play) { this->actionFunc = EnTrt_BeginInteraction; } else if ((player->actor.world.pos.x >= -50.0f && player->actor.world.pos.x <= -25.0f) && (player->actor.world.pos.z >= -19.0f && player->actor.world.pos.z <= 30.0f)) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } if (DECR(this->timer) == 0) { this->timer = Rand_S16Offset(150, 100); @@ -1058,7 +1058,7 @@ void EnTrt_ItemGiven(EnTrt* this, PlayState* play) { } Message_ContinueTextbox(play, this->textId); } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1077,7 +1077,7 @@ void EnTrt_ShopkeeperGone(EnTrt* this, PlayState* play) { } else { if ((player->actor.world.pos.x >= -50.0f) && (player->actor.world.pos.x <= 50.0f) && (player->actor.world.pos.z >= -19.0f) && (player->actor.world.pos.z <= 30.0f)) { - func_800B8614(&this->actor, play, 200.0f); + Actor_OfferTalk(&this->actor, play, 200.0f); } } if ((talkState == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { @@ -1131,7 +1131,7 @@ void EnTrt_SetupItemGiven(EnTrt* this, PlayState* play) { this->csId = this->lookToShopkeeperCsId; CutsceneManager_Queue(this->csId); } - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -1154,7 +1154,7 @@ void EnTrt_ContinueShopping(EnTrt* this, PlayState* play) { player->stateFlags2 |= PLAYER_STATE2_20000000; Message_StartTextbox(play, this->textId, &this->actor); EnTrt_SetupStartShopping(play, this, true); - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); break; case 1: @@ -1428,7 +1428,7 @@ void EnTrt_TalkToShopkeeper(EnTrt* this, PlayState* play) { player->actor.textId = 0x883; } this->textId = player->actor.textId; - player->exchangeItemId = itemAction; + player->exchangeItemAction = itemAction; this->actionFunc = EnTrt_GetMushroom; } else { if (this->flags & ENTRT_GIVEN_MUSHROOM) { diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c index 9c24088db9..e56369ce42 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -426,7 +426,7 @@ void func_80AD3FF4(EnTrt2* this, PlayState* play) { void func_80AD40AC(EnTrt2* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); this->unk_3B2 = 13; } } @@ -437,7 +437,7 @@ void func_80AD4110(EnTrt2* this, PlayState* play) { Message_ContinueTextbox(play, this->unk_3A8); this->unk_3B2 = 10; } else { - func_800B85E0(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 400.0f, PLAYER_IA_MINUS1); } } @@ -711,7 +711,7 @@ s32 func_80AD4CCC(EnTrt2* this, PlayState* play) { } if (func_80AD4C4C(this) && this->actor.isTargeted && (sp1E < 0x4000) && (sp1E > -0x4000)) { - func_800B863C(&this->actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } return true; diff --git a/src/overlays/actors/ovl_En_Tru/z_en_tru.c b/src/overlays/actors/ovl_En_Tru/z_en_tru.c index fd627b9a65..ba1a8c9833 100644 --- a/src/overlays/actors/ovl_En_Tru/z_en_tru.c +++ b/src/overlays/actors/ovl_En_Tru/z_en_tru.c @@ -685,29 +685,28 @@ s32 func_80A872AC(EnTru* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 ret = false; - if (this->unk_34E & 7) { - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - if (player->transformation == PLAYER_FORM_HUMAN) { - this->unk_34E &= ~0x80; - } - this->unk_34E &= ~(0x4000 | 0x2000); - - if ((player->exchangeItemId == PLAYER_IA_BOTTLE_POTION_RED) || - (player->exchangeItemId == PLAYER_IA_BOTTLE_POTION_BLUE)) { - this->unk_34E |= 0x2000; - this->unk_38C = player->exchangeItemId; - } else if (player->exchangeItemId != PLAYER_IA_NONE) { - this->unk_34E |= 0x4000; - } - - this->unk_378 = func_80A875AC; - this->unk_390 = 0; - this->unk_364 = 0; - this->unk_354 = func_80A871E0(this, play); - SubS_UpdateFlags(&this->unk_34E, 0, 7); - this->actionFunc = func_80A881E0; - ret = true; + if (((this->unk_34E & SUBS_OFFER_MODE_MASK) != SUBS_OFFER_MODE_NONE) && + Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (player->transformation == PLAYER_FORM_HUMAN) { + this->unk_34E &= ~0x80; } + this->unk_34E &= ~(0x4000 | 0x2000); + + if ((player->exchangeItemAction == PLAYER_IA_BOTTLE_POTION_RED) || + (player->exchangeItemAction == PLAYER_IA_BOTTLE_POTION_BLUE)) { + this->unk_34E |= 0x2000; + this->unk_38C = player->exchangeItemAction; + } else if (player->exchangeItemAction != PLAYER_IA_NONE) { + this->unk_34E |= 0x4000; + } + + this->unk_378 = func_80A875AC; + this->unk_390 = 0; + this->unk_364 = 0; + this->unk_354 = func_80A871E0(this, play); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); + this->actionFunc = func_80A881E0; + ret = true; } return ret; @@ -973,8 +972,8 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) { this->actor.shape.shadowDraw = NULL; this->unk_34E |= (0x200 | 0x8); this->unk_34E &= ~0x800; - if (player->exchangeItemId != PLAYER_IA_NONE) { - player->exchangeItemId = PLAYER_IA_NONE; + if (player->exchangeItemAction != PLAYER_IA_NONE) { + player->exchangeItemAction = PLAYER_IA_NONE; } EnTru_ChangeAnim(this, KOUME_ANIM_HOVER1); } @@ -1060,15 +1059,15 @@ void func_80A87FD0(EnTru* this, PlayState* play) { if (this->actor.draw != NULL) { if ((this->unk_34E & 0x80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_TALKED_KOUME_INJURED)) { if (func_80A873B8(this)) { - SubS_UpdateFlags(&this->unk_34E, 3, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_34E, 0, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } } else if (this->unk_34E & 0x40) { if (func_80A873B8(this)) { - SubS_UpdateFlags(&this->unk_34E, 3, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_34E, 0, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } if ((this->animIndex == KOUME_ANIM_TRY_GET_UP) && @@ -1083,13 +1082,13 @@ void func_80A87FD0(EnTru* this, PlayState* play) { } } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_TALKED_KOUME_INJURED) && (fabsf(this->actor.playerHeightRel) < 10.0f) && (this->actor.xzDistToPlayer < 140.0f)) { - SubS_UpdateFlags(&this->unk_34E, 4, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK); this->unk_34E |= 0x1040; this->unk_362 = Rand_S16Offset(40, 20); } else if (func_80A873B8(this)) { - SubS_UpdateFlags(&this->unk_34E, 3, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); } else { - SubS_UpdateFlags(&this->unk_34E, 0, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); } } } @@ -1115,7 +1114,7 @@ void func_80A881E0(EnTru* this, PlayState* play) { EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_HEAD_UP_MORPH); } - SubS_UpdateFlags(&this->unk_34E, 0, 7); + SubS_SetOfferMode(&this->unk_34E, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK); this->unk_34E &= ~(0x1000 | 0x8); this->unk_34E |= 0x10; this->actor.shape.rot.y = this->actor.world.rot.y; @@ -1180,7 +1179,7 @@ void EnTru_Update(Actor* thisx, PlayState* play) { radius = this->collider.dim.worldSphere.radius + 30; this->unk_388 = !(this->unk_34E & 0x80) ? PLAYER_IA_NONE : PLAYER_IA_NONE; - func_8013C964(&this->actor, play, radius, 20.0f, this->unk_388, this->unk_34E & 7); + SubS_Offer(&this->actor, play, radius, 20.0f, this->unk_388, this->unk_34E & SUBS_OFFER_MODE_MASK); func_80A8697C(this, play); func_80A86384(this->unk_394, &this->unk_1F8); } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index da0bfed862..6f27da8238 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -275,7 +275,7 @@ void func_80AE0304(EnTsn* this, PlayState* play) { func_80ADFF84(this, play); } } else if ((this->actor.xzDistToPlayer < 150.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 160.0f); + Actor_OfferTalk(&this->actor, play, 160.0f); this->unk_220 |= 1; } else { this->unk_220 &= ~1; @@ -420,7 +420,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { case 0x1075: case 0x1078: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); Animation_MorphToLoop(&this->unk_1D8->skelAnime, &object_tsn_Anim_0092FC, -10.0f); break; @@ -448,7 +448,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { break; case 0x107B: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); Animation_MorphToLoop(&this->unk_1D8->skelAnime, &object_tsn_Anim_0092FC, -10.0f); break; @@ -537,7 +537,7 @@ void func_80AE0C88(EnTsn* this, PlayState* play) { ENTSN_SET_Z(&this->unk_1D8->actor, true); } } else if (this->actor.isTargeted) { - func_800B8614(&this->actor, play, 1000.0f); + Actor_OfferTalk(&this->actor, play, 1000.0f); } } @@ -554,7 +554,7 @@ void func_80AE0D78(EnTsn* this, PlayState* play) { this->actionFunc = func_80AE0D10; this->unk_220 |= 4; } else if (this->actor.isTargeted) { - func_800B8614(&this->actor, play, 1000.0f); + Actor_OfferTalk(&this->actor, play, 1000.0f); } } diff --git a/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c b/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c index 3cfc1eba73..fd68a22ce4 100644 --- a/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c +++ b/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c @@ -103,7 +103,7 @@ void func_80A66278(EnWarpUzu* this, PlayState* play) { phi_v1 = ABS(temp_v0); if (phi_a0 >= 0x2AAB) { if (phi_v1 < 0x238E) { - func_800B8614(&this->actor, play, 70.0f); + Actor_OfferTalk(&this->actor, play, 70.0f); } } } diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 78b32120d7..037ca93d6e 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -267,7 +267,7 @@ void EnYb_SetupLeaving(EnYb* this, PlayState* play) { Message_StartTextbox(play, 0x147D, &this->actor); func_80BFA2FC(play); } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } @@ -279,7 +279,7 @@ void EnYb_ReceiveMask(EnYb* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = EnYb_SetupLeaving; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_OfferGetItem(&this->actor, play, GI_MASK_KAMARO, 10000.0f, 100.0f); } @@ -332,7 +332,7 @@ void EnYb_TeachingDanceFinish(EnYb* this, PlayState* play) { Message_StartTextbox(play, 0x147C, &this->actor); this->actor.flags &= ~ACTOR_FLAG_10000; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } @@ -347,7 +347,7 @@ void EnYb_TeachingDance(EnYb* this, PlayState* play) { EnYb_FinishTeachingCutscene(this); this->actionFunc = EnYb_TeachingDanceFinish; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } EnYb_EnableProximityMusic(this); } @@ -374,7 +374,7 @@ void EnYb_Idle(EnYb* this, PlayState* play) { Message_StartTextbox(play, 0x147B, &this->actor); } } else if (EnYb_CanTalk(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } if (this->playerOcarinaOut & 1) { diff --git a/src/overlays/actors/ovl_En_Zob/z_en_zob.c b/src/overlays/actors/ovl_En_Zob/z_en_zob.c index 3e606e19ef..c963df55be 100644 --- a/src/overlays/actors/ovl_En_Zob/z_en_zob.c +++ b/src/overlays/actors/ovl_En_Zob/z_en_zob.c @@ -543,7 +543,7 @@ void func_80BA0610(EnZob* this, PlayState* play) { func_80B9FC70(this, 0); this->actionFunc = func_80BA00BC; } else { - func_800B8614(&this->actor, play, 500.0f); + Actor_OfferTalk(&this->actor, play, 500.0f); } } @@ -581,7 +581,7 @@ void func_80BA0728(EnZob* this, PlayState* play) { this->actionFunc = func_80BA06BC; } else if ((this->actor.xzDistToPlayer < 180.0f) && (this->actor.xzDistToPlayer > 60.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && Actor_IsFacingPlayer(&this->actor, 0x3000)) { - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); func_800B874C(&this->actor, play, 200.0f, 150.0f); } @@ -658,7 +658,7 @@ void func_80BA0AD8(EnZob* this, PlayState* play) { func_80BA08E8(this, play); } else if ((this->actor.xzDistToPlayer < 120.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && Actor_IsFacingPlayer(&this->actor, 0x3000)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.c b/src/overlays/actors/ovl_En_Zod/z_en_zod.c index 4c21502fe7..df67493d64 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.c +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.c @@ -380,7 +380,7 @@ void EnZod_PlayDrumsSequence(EnZod* this, PlayState* play) { EnZod_HandleRoomConversation(this, play); this->actionFunc = func_80BAF7CC; } else if (EnZod_PlayerIsFacingTijo(this, play)) { - func_800B8614(&this->actor, play, 210.0f); + Actor_OfferTalk(&this->actor, play, 210.0f); } seqPos.x = this->actor.projectedPos.x; @@ -436,7 +436,7 @@ void func_80BAFB84(EnZod* this, PlayState* play) { func_80BAFA44(this, play); this->actionFunc = func_80BAFADC; } else if (EnZod_PlayerIsFacingTijo(this, play)) { - func_800B8614(&this->actor, play, 210.0f); + Actor_OfferTalk(&this->actor, play, 210.0f); } } diff --git a/src/overlays/actors/ovl_En_Zog/z_en_zog.c b/src/overlays/actors/ovl_En_Zog/z_en_zog.c index d4605d47d8..15c8a0017e 100644 --- a/src/overlays/actors/ovl_En_Zog/z_en_zog.c +++ b/src/overlays/actors/ovl_En_Zog/z_en_zog.c @@ -634,7 +634,7 @@ void func_80B9451C(EnZog* this, PlayState* play) { this->actor.shape.shadowDraw = NULL; } } else if (this->actor.xzDistToPlayer < 120.0f) { - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); } func_80B943EC(this, play); } @@ -732,7 +732,7 @@ void func_80B948A8(EnZog* this, PlayState* play) { } if ((this->unk_302 == 0) && (this->actor.xzDistToPlayer < 120.0f)) { - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); } } func_80B93A48(this, play); @@ -906,7 +906,7 @@ void func_80B94E34(EnZog* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_88_10); } else if ((this->actor.yawTowardsPlayer > 16000) && (this->actor.yawTowardsPlayer < 32000) && (this->unk_302 == 0)) { - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); } this->actor.shape.rot.y = this->actor.world.rot.y; @@ -939,7 +939,7 @@ void func_80B95128(EnZog* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_10000; SET_WEEKEVENTREG(WEEKEVENTREG_91_01); } else { - func_800B8614(&this->actor, play, 150.0f); + Actor_OfferTalk(&this->actor, play, 150.0f); } this->actor.shape.rot.y = this->actor.world.rot.y; func_80B93A48(this, play); diff --git a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c index 0bfc986dc2..e45026d5b9 100644 --- a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c +++ b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.c @@ -345,7 +345,7 @@ void func_80B320E0(EnZoraegg* this, PlayState* play) { } else { Actor_OfferGetItem(&this->actor, play, GI_MAX, 80.0f, 60.0f); if (this->actor.isTargeted) { - func_800B8614(&this->actor, play, 110.0f); + Actor_OfferTalk(&this->actor, play, 110.0f); } } diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index 10def20cf5..19ecd207f7 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -254,7 +254,7 @@ void func_80BBB2C4(EnZos* this, PlayState* play) { this->actionFunc = func_80BBB8AC; this->actor.flags &= ~ACTOR_FLAG_10000; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -266,7 +266,7 @@ void func_80BBB354(EnZos* this, PlayState* play) { this->actionFunc = func_80BBB2C4; SET_WEEKEVENTREG(WEEKEVENTREG_39_20); this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_39_20)) { getItemId = GI_RUPEE_PURPLE; @@ -420,7 +420,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { switch (play->msgCtx.currentTextId) { case 0x1237: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; // fallthrough case 0x1238: case 0x123A: @@ -439,7 +439,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1232: case 0x1241: - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; // fallthrough case 0x1239: case 0x1246: @@ -516,7 +516,7 @@ void func_80BBBB84(EnZos* this, PlayState* play) { this->unk_2B6 |= 0x10; } } else { - func_800B8614(&this->actor, play, 300.0f); + Actor_OfferTalk(&this->actor, play, 300.0f); } } @@ -527,7 +527,7 @@ void func_80BBBCBC(EnZos* this, PlayState* play) { Message_StartTextbox(play, 0x124D, &this->actor); this->actionFunc = func_80BBB574; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -536,7 +536,7 @@ void func_80BBBD5C(EnZos* this, PlayState* play) { if (!Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_501)) { this->actionFunc = func_80BBBCBC; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -559,7 +559,7 @@ void func_80BBBDE0(EnZos* this, PlayState* play) { play->msgCtx.ocarinaMode = 4; this->actionFunc = func_80BBBB84; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); return; } @@ -569,7 +569,7 @@ void func_80BBBDE0(EnZos* this, PlayState* play) { } else if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_501)) { this->actionFunc = func_80BBBD5C; } else if (func_80BBAF5C(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } if (!Actor_IsFacingPlayer(&this->actor, 0x4000) && (this->actor.xzDistToPlayer < 100.0f)) { @@ -645,7 +645,7 @@ void func_80BBC14C(EnZos* this, PlayState* play) { this->actionFunc = func_80BBC070; func_80BBBFBC(this, play); } else if (func_80BBAF5C(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 0598d5cf90..8a02b3b8c3 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -404,7 +404,7 @@ void func_80B97240(EnZot* this, PlayState* play) { func_80B97110(this, play); } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && Actor_IsFacingPlayer(&this->actor, 0x3000)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -517,7 +517,7 @@ void func_80B975F8(EnZot* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80B973BC; } else { - func_800B8500(&this->actor, play, 10000.0f, 1000.0f, PLAYER_IA_NONE); + Actor_OfferTalkExchange(&this->actor, play, 10000.0f, 1000.0f, PLAYER_IA_NONE); } } @@ -579,7 +579,7 @@ void func_80B97708(EnZot* this, PlayState* play) { func_80B975F8(this, play); this->actionFunc = func_80B975F8; } else if (func_80B96DF0(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -703,7 +703,7 @@ void func_80B97B5C(EnZot* this, PlayState* play) { this->actionFunc = func_80B97A44; func_80B9787C(this, play); } else if (func_80B96DF0(this, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -732,7 +732,7 @@ void func_80B97CC8(EnZot* this, PlayState* play) { this->actionFunc = func_80B97C40; Message_StartTextbox(play, 0x128B, &this->actor); } else if (Player_IsFacingActor(&this->actor, 0x3000, play) && (this->actor.xzDistToPlayer < 100.0f)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -815,7 +815,7 @@ void func_80B97FD0(EnZot* this, PlayState* play) { func_80B96BEC(this, 6, ANIMMODE_ONCE); } } else if (Player_IsFacingActor(&this->actor, 0x3000, play) && (this->actor.xzDistToPlayer < 100.0f)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -936,7 +936,7 @@ void func_80B9849C(EnZot* this, PlayState* play) { } this->actionFunc = func_80B98728; } else { - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } } @@ -946,7 +946,7 @@ void func_80B9854C(EnZot* this, PlayState* play) { this->actor.parent = NULL; this->actionFunc = func_80B9849C; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8500(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); + Actor_OfferTalkExchange(&this->actor, play, 1000.0f, 1000.0f, PLAYER_IA_MINUS1); } else { Actor_OfferGetItem(&this->actor, play, this->unk_2D4, 10000.0f, 50.0f); } @@ -1074,7 +1074,7 @@ void func_80B98998(EnZot* this, PlayState* play) { func_80B98178(this, play); } else if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play) && Actor_IsFacingPlayer(&this->actor, 0x7000)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -1140,7 +1140,7 @@ void func_80B98BF4(EnZot* this, PlayState* play) { this->actionFunc = func_80B98AD0; } } else { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -1150,13 +1150,13 @@ void func_80B98CA8(EnZot* this, PlayState* play) { AudioOcarina_StartDefault(0xFFFF); this->actionFunc = func_80B98BF4; this->actor.flags |= ACTOR_FLAG_10000; - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } else if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actionFunc = func_80B98AD0; func_80B98A4C(this, play); } else { if ((this->actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } if ((GET_PLAYER_FORM == PLAYER_FORM_ZORA) || (this->actor.xzDistToPlayer < 100.0f)) { @@ -1252,7 +1252,7 @@ void func_80B990A4(EnZot* this, PlayState* play) { this->actionFunc = func_80B98F94; func_80B98E10(this, play); } else if (Player_IsFacingActor(&this->actor, 0x3000, play) && (this->actor.xzDistToPlayer < 100.0f)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } } @@ -1303,7 +1303,7 @@ void func_80B992C0(EnZot* this, PlayState* play) { func_80B96BEC(this, 0, ANIMMODE_LOOP); } else { if (Player_IsFacingActor(&this->actor, 0x3000, play) && (this->actor.xzDistToPlayer < 100.0f)) { - func_800B8614(&this->actor, play, 120.0f); + Actor_OfferTalk(&this->actor, play, 120.0f); } this->actor.speed = 1.5f; func_80B96FB0(this); diff --git a/src/overlays/actors/ovl_En_Zov/z_en_zov.c b/src/overlays/actors/ovl_En_Zov/z_en_zov.c index d3e8332669..cf8c30dc73 100644 --- a/src/overlays/actors/ovl_En_Zov/z_en_zov.c +++ b/src/overlays/actors/ovl_En_Zov/z_en_zov.c @@ -378,7 +378,7 @@ void func_80BD1C84(EnZov* this, PlayState* play) { this->actionFunc = func_80BD187C; func_80BD160C(this, play); } else if (func_80BD15A4(this, play)) { - func_800B8614(&this->picto.actor, play, 120.0f); + Actor_OfferTalk(&this->picto.actor, play, 120.0f); } if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_504)) { @@ -452,7 +452,7 @@ void func_80BD1F1C(EnZov* this, PlayState* play) { this->actionFunc = func_80BD1DB8; func_80BD1D30(this, play); } else if (func_80BD15A4(this, play)) { - func_800B8614(&this->picto.actor, play, 120.0f); + Actor_OfferTalk(&this->picto.actor, play, 120.0f); } } diff --git a/src/overlays/actors/ovl_En_Zow/z_en_zow.c b/src/overlays/actors/ovl_En_Zow/z_en_zow.c index 2885e965bc..c6f8f25602 100644 --- a/src/overlays/actors/ovl_En_Zow/z_en_zow.c +++ b/src/overlays/actors/ovl_En_Zow/z_en_zow.c @@ -502,7 +502,7 @@ void func_80BDD634(EnZow* this, PlayState* play) { this->actionFunc = func_80BDD570; func_80BDD1E0(this, play); } else if (func_80BDD154(this, play)) { - func_800B8614(&this->actor, play, 180.0f); + Actor_OfferTalk(&this->actor, play, 180.0f); } } diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index 7d1f748f33..0ad12d3f37 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -546,7 +546,7 @@ void func_80937FC8(ObjBean* this, PlayState* play) { this->unk_1E8(this); if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { - if (Player_GetExchangeItemId(play) == PLAYER_IA_MAGIC_BEANS) { + if (Player_GetExchangeItemAction(play) == PLAYER_IA_MAGIC_BEANS) { func_809383B4(this); Flags_SetSwitch(play, OBJBEAN_GET_3F80(&this->dyna.actor, 0)); } @@ -576,7 +576,7 @@ void func_80937FC8(ObjBean* this, PlayState* play) { CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); } } else { - func_800B85E0(&this->dyna.actor, play, 28.0f, PLAYER_IA_MAGIC_BEANS); + Actor_OfferTalkExchangeEquiCylinder(&this->dyna.actor, play, 28.0f, PLAYER_IA_MAGIC_BEANS); } } } diff --git a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c index b7fc601e34..02d7f29736 100644 --- a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c +++ b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c @@ -76,7 +76,7 @@ void func_80B3C39C(ObjGhaka* this, PlayState* play) { func_80B3C29C(this); } else if (this->dyna.actor.xzDistToPlayer < 100.0f || this->dyna.actor.isTargeted) { if (distDiff <= -0x5556 || distDiff >= 0x5556) { - func_800B863C(&this->dyna.actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->dyna.actor, play); if (player->transformation == PLAYER_FORM_GORON) { this->dyna.actor.textId = 0xCF3; } else { diff --git a/src/overlays/actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c b/src/overlays/actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c index 40db98b1f2..5201c1de82 100644 --- a/src/overlays/actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c +++ b/src/overlays/actors/ovl_Obj_Hakaisi/z_obj_hakaisi.c @@ -168,7 +168,7 @@ void func_80B14460(ObjHakaisi* this, PlayState* play) { func_80B14510(this); } else if (this->dyna.actor.textId != 0) { if (ABS_ALT(sp26) < 0x2000) { - func_800B8614(&this->dyna.actor, play, 100.0f); + Actor_OfferTalk(&this->dyna.actor, play, 100.0f); } } diff --git a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c index 7a05542d22..c40d03f6ad 100644 --- a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c +++ b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c @@ -80,7 +80,7 @@ void func_80C06640(ObjMoonStone* this, PlayState* play) { } else { s32 phi_v0 = ABS_ALT(sp1A); if (phi_v0 < 0x1555) { - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } } } diff --git a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c index d08f2d6380..3e93f15bc6 100644 --- a/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c +++ b/src/overlays/actors/ovl_Obj_Mu_Pict/z_obj_mu_pict.c @@ -76,7 +76,7 @@ void func_80C06B70(ObjMuPict* this, PlayState* play) { func_80C06C54(this); } } else if (ABS_ALT(yawDiff) < 0x2AAA) { - func_800B8614(&this->actor, play, 80.0f); + Actor_OfferTalk(&this->actor, play, 80.0f); } } diff --git a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c index 81bbb8ebbe..fc4d2ecf52 100644 --- a/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c +++ b/src/overlays/actors/ovl_Obj_Nozoki/z_obj_nozoki.c @@ -427,7 +427,7 @@ void func_80BA3230(ObjNozoki* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { ObjNozoki_SetupAction(this, func_80BA3344); } else { - func_800B8614(&this->dyna.actor, play, 50.0f); + Actor_OfferTalk(&this->dyna.actor, play, 50.0f); } } } diff --git a/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c b/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c index 92ac9ad858..281c813e27 100644 --- a/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c +++ b/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c @@ -771,7 +771,7 @@ void ObjSnowball_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); if (sp24 && (this->actionFunc == func_80B04350)) { - func_800B8614(&this->actor, play, 100.0f); + Actor_OfferTalk(&this->actor, play, 100.0f); } if ((this->actor.floorPoly != NULL) && (this->actor.projectedPos.z < 920.0f)) { diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index 41ed1e9d56..e860d381ab 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -970,10 +970,10 @@ s32 func_80B7984C(PlayState* play, ObjUm* this, s32 arg2, s32* arg3) { } if (this->dyna.actor.xyzDistToPlayerSq <= SQ(50.0f)) { - if (func_800B8614(&this->dyna.actor, play, 50.0f)) { + if (Actor_OfferTalk(&this->dyna.actor, play, 50.0f)) { this->dyna.actor.textId = ObjUm_RanchGetDialogue(play, this, arg2); } - } else if (func_800B863C(&this->dyna.actor, play)) { + } else if (Actor_OfferTalkNearColChkInfoCylinder(&this->dyna.actor, play)) { this->dyna.actor.textId = ObjUm_RanchGetDialogue(play, this, arg2); } diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c index 5a67aa663e..4ae133dd31 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c @@ -152,7 +152,7 @@ void ObjWarpstone_Update(Actor* thisx, PlayState* play) { } else if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) { this->isTalking = true; } else if (!this->actionFunc(this, play)) { - func_800B863C(&this->dyna.actor, play); + Actor_OfferTalkNearColChkInfoCylinder(&this->dyna.actor, play); } Collider_ResetCylinderAC(play, &this->collider.base); diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index acb5d28bee..27192e894d 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -4290,7 +4290,7 @@ void func_80831990(PlayState* play, Player* this, ItemId item) { (itemAction == PLAYER_IA_OCARINA) || ((itemAction > PLAYER_IA_BOTTLE_MIN) && itemAction < PLAYER_IA_MASK_MIN) || ((itemAction == PLAYER_IA_PICTOGRAPH_BOX) && (this->talkActor != NULL) && - (this->exchangeItemId > PLAYER_IA_NONE))) { + (this->exchangeItemAction > PLAYER_IA_NONE))) { if (var_v1) { PlayerTransformation playerForm = (itemAction < PLAYER_IA_MASK_FIERCE_DEITY) ? PLAYER_FORM_HUMAN @@ -6662,7 +6662,7 @@ void func_808379C0(PlayState* play, Player* this) { void func_80837B60(PlayState* play, Player* this) { Player_SetAction_PreserveMoveFlags(play, this, Player_Action_44, 0); - this->exchangeItemId = PLAYER_IA_NONE; + this->exchangeItemAction = PLAYER_IA_NONE; this->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); if (this->actor.textId != 0) { Message_StartTextbox(play, this->actor.textId, this->talkActor); @@ -7182,10 +7182,10 @@ s32 func_80838A90(Player* this, PlayState* play) { ((this->itemAction >= PLAYER_IA_BOTTLE_ZORA_EGG) && (this->itemAction <= PLAYER_IA_BOTTLE_HYLIAN_LOACH)) || (this->itemAction > PLAYER_IA_BOTTLE_FAIRY) || - ((this->talkActor != NULL) && (this->exchangeItemId > PLAYER_IA_NONE) && - (((this->exchangeItemId == PLAYER_IA_MAGIC_BEANS) && + ((this->talkActor != NULL) && (this->exchangeItemAction > PLAYER_IA_NONE) && + (((this->exchangeItemAction == PLAYER_IA_MAGIC_BEANS) && (this->itemAction == PLAYER_IA_MAGIC_BEANS)) || - ((this->exchangeItemId != PLAYER_IA_MAGIC_BEANS) && + ((this->exchangeItemAction != PLAYER_IA_MAGIC_BEANS) && (Player_BottleFromIA(this, this->itemAction) > PLAYER_BOTTLE_NONE))))))) { Actor* talkActor; s32 heldItemTemp = this->itemAction; @@ -7197,12 +7197,12 @@ s32 func_80838A90(Player* this, PlayState* play) { this->itemAction = heldItemTemp; this->csId = CS_ID_NONE; - if ((talkActor != NULL) && (((this->exchangeItemId == PLAYER_IA_MAGIC_BEANS) && + if ((talkActor != NULL) && (((this->exchangeItemAction == PLAYER_IA_MAGIC_BEANS) && (this->itemAction == PLAYER_IA_MAGIC_BEANS)) || - ((this->exchangeItemId != PLAYER_IA_MAGIC_BEANS) && - (this->exchangeItemId > PLAYER_IA_NONE)))) { + ((this->exchangeItemAction != PLAYER_IA_MAGIC_BEANS) && + (this->exchangeItemAction > PLAYER_IA_NONE)))) { this->stateFlags1 |= (PLAYER_STATE1_20000000 | PLAYER_STATE1_40); - if (this->exchangeItemId == PLAYER_IA_MAGIC_BEANS) { + if (this->exchangeItemAction == PLAYER_IA_MAGIC_BEANS) { Inventory_ChangeAmmo(ITEM_MAGIC_BEANS, -1); Player_SetAction_PreserveItemAction(play, this, Player_Action_17, 0); this->currentYaw = talkActor->yawTowardsPlayer + 0x8000; @@ -7231,7 +7231,7 @@ s32 func_80838A90(Player* this, PlayState* play) { this->actor.textId = 0xFE; } this->actor.flags |= ACTOR_FLAG_TALK_REQUESTED; - this->exchangeItemId = this->itemAction; + this->exchangeItemAction = this->itemAction; if (this->unk_AE7 >= 0) { Player_AnimationPlayOnce(play, this, D_8085D1F8[this->unk_AE7]); } @@ -11898,7 +11898,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) { this->talkActorDistance = 0.0f; } else { this->talkActor = NULL; - this->exchangeItemId = PLAYER_IA_NONE; + this->exchangeItemAction = PLAYER_IA_NONE; this->talkActorDistance = FLT_MAX; } if (!(this->actor.flags & ACTOR_FLAG_20000000) && (this->unk_AA5 != PLAYER_UNKAA5_5)) { @@ -16632,14 +16632,14 @@ void Player_Action_65(Player* this, PlayState* play) { this->stateFlags1 &= ~PLAYER_STATE1_20000000; func_8085B28C(play, NULL, PLAYER_CSMODE_93); } else { - s32 var_a2 = ((this->talkActor != NULL) && (this->exchangeItemId <= PLAYER_IA_MINUS1)) || + s32 var_a2 = ((this->talkActor != NULL) && (this->exchangeItemAction <= PLAYER_IA_MINUS1)) || (this->stateFlags3 & PLAYER_STATE3_20); if (var_a2 || (gSaveContext.healthAccumulator == 0)) { Player_StopCutscene(this); if (var_a2) { func_80848250(play, this); - this->exchangeItemId = PLAYER_IA_NONE; + this->exchangeItemAction = PLAYER_IA_NONE; if (!func_80847994(play, this)) { Player_TalkWithPlayer(play, this->talkActor); } @@ -16875,7 +16875,7 @@ void Player_Action_68(Player* this, PlayState* play) { func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); talkActor = this->talkActor; - if ((talkActor != NULL) && (this->exchangeItemId <= PLAYER_IA_MINUS1)) { + if ((talkActor != NULL) && (this->exchangeItemAction <= PLAYER_IA_MINUS1)) { Player_TalkWithPlayer(play, talkActor); } } @@ -17029,7 +17029,7 @@ void Player_Action_71(Player* this, PlayState* play) { func_8083249C(this); if (PlayerAnimation_Update(play, &this->skelAnime)) { - if (this->exchangeItemId == PLAYER_IA_NONE) { + if (this->exchangeItemAction == PLAYER_IA_NONE) { Actor* talkActor = this->talkActor; Player_StopCutscene(this); @@ -17040,7 +17040,7 @@ void Player_Action_71(Player* this, PlayState* play) { } Player_TalkWithPlayer(play, talkActor); } else { - GetItemEntry* giEntry = &sGetItemTable[D_8085D1A4[this->exchangeItemId] - 1]; + GetItemEntry* giEntry = &sGetItemTable[D_8085D1A4[this->exchangeItemAction] - 1]; if (Player_BottleFromIA(this, this->itemAction) <= PLAYER_BOTTLE_NONE) { this->getItemDrawIdPlusOne = ABS_ALT(giEntry->gid); @@ -20159,7 +20159,7 @@ void Player_TalkWithPlayer(PlayState* play, Actor* actor) { } player->talkActor = actor; - player->exchangeItemId = PLAYER_IA_NONE; + player->exchangeItemAction = PLAYER_IA_NONE; player->targetedActor = actor; if (actor->textId == 0xFFFF) { @@ -20267,7 +20267,7 @@ PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId) { Player_AnimationPlayOnce(play, this, &gPlayerAnim_link_normal_give_other); this->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); this->getItemDrawIdPlusOne = GID_NONE + 1; - this->exchangeItemId = itemAction; + this->exchangeItemAction = itemAction; return itemAction; } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index c3ce2833f1..4db192c4bc 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -770,10 +770,10 @@ 0x800B83BC:("func_800B83BC",), 0x800B83F8:("func_800B83F8",), 0x800B84D0:("Actor_ProcessTalkRequest",), - 0x800B8500:("func_800B8500",), - 0x800B85E0:("func_800B85E0",), - 0x800B8614:("func_800B8614",), - 0x800B863C:("func_800B863C",), + 0x800B8500:("Actor_OfferTalkExchange",), + 0x800B85E0:("Actor_OfferTalkExchangeEquiCylinder",), + 0x800B8614:("Actor_OfferTalk",), + 0x800B863C:("Actor_OfferTalkNearColChkInfoCylinder",), 0x800B867C:("Actor_TextboxIsClosing",), 0x800B86C8:("Actor_ChangeFocus",), 0x800B8708:("Player_GetExchangeItemId",), @@ -2660,7 +2660,7 @@ 0x8013AB00:("SubS_DrawTransformFlex",), 0x8013AD6C:("SubS_InCsMode",), 0x8013AD9C:("SubS_UpdateLimb",), - 0x8013AED4:("SubS_UpdateFlags",), + 0x8013AED4:("SubS_SetOfferMode",), 0x8013AF00:("SubS_TimePathing_FillKnots",), 0x8013B010:("SubS_TimePathing_ComputeProgress",), 0x8013B0C8:("SubS_TimePathing_ComputeWeights",), @@ -2675,7 +2675,7 @@ 0x8013C068:("SubS_WeightPathing_ComputePoint",), 0x8013C624:("SubS_WeightPathing_Move",), 0x8013C8B8:("SubS_CopyPointFromPathCheckBounds",), - 0x8013C964:("func_8013C964",), + 0x8013C964:("SubS_Offer",), 0x8013CC2C:("SubS_FillShadowTex",), 0x8013CD64:("SubS_GenShadowTex",), 0x8013CF04:("SubS_DrawShadowTex",), @@ -2706,9 +2706,9 @@ 0x8013E4B0:("SubS_ConstructPlane",), 0x8013E5CC:("SubS_LineSegVsPlane",), 0x8013E640:("SubS_FindActorCustom",), - 0x8013E748:("func_8013E748",), + 0x8013E748:("SubS_OfferTalkExchangeCustom",), 0x8013E7C0:("SubS_ActorAndPlayerFaceEachOther",), - 0x8013E8F8:("func_8013E8F8",), + 0x8013E8F8:("SubS_OfferTalkExchangeFacing",), 0x8013E950:("SubS_TrackPointStep",), 0x8013EC10:("Rumble_Update",), 0x8013EC44:("Rumble_Override",), @@ -13378,7 +13378,7 @@ 0x80B2B974:("EnPst_ChooseBehaviour",), 0x80B2BAA4:("EnPst_GetMsgEventScript",), 0x80B2BBFC:("EnPst_CheckTalk",), - 0x80B2BCF8:("EnPst_UpdateFlagsSubs",), + 0x80B2BCF8:("EnPst_SetOfferItemModeOnScreen",), 0x80B2BD30:("EnPst_ProcessScheduleOutput",), 0x80B2BD88:("EnPst_Idle",), 0x80B2BD98:("EnPst_FollowSchedule",), diff --git a/tools/namefixer.py b/tools/namefixer.py index 0a809f8042..c4f4552c92 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -174,6 +174,10 @@ wordReplace = { "func_800B6474": "Actor_UpdatePlayerImpact", "func_800B648C": "Actor_SetPlayerImpact", "func_800B64FC": "Actor_GetPlayerImpact", + "func_800B8500": "Actor_OfferTalkExchange", + "func_800B85E0": "Actor_OfferTalkExchangeRadius", + "func_800B8614": "Actor_OfferTalk", + "func_800B863C": "Actor_OfferTalkNearColChkInfoCylinder", "Audio_PlaySoundAtPosition": "SoundSource_PlaySfxAtFixedWorldPos", "func_800F0590": "SoundSource_PlaySfxEachFrameAtFixedWorldPos", "func_8016970C": "Play_SetCameraAtEye", @@ -344,7 +348,8 @@ wordReplace = { "Audio_PlaySfxGeneral": "AudioSfx_PlaySfx", "func_800B8C50": "Actor_SetClosestSecretDistance", "func_800BBDAC": "Actor_SpawnFloorDustRing", - "func_800B8708": "Player_GetExchangeItemId", + "func_800B8708": "Player_GetExchangeItemAction", + "Player_GetExchangeItemId": "Player_GetExchangeItemAction" "func_801233E4": "Player_InCsMode", "func_800BC4EC": "Actor_TestFloorInDirection", "func_800BC5B8": "Actor_IsTargeted", @@ -718,7 +723,8 @@ wordReplace = { "func_8013E2D4": "SubS_StartCutscene", "SubS_StartActorCutscene": "SubS_StartCutscene", "func_8013E3B8": "SubS_FillCutscenesList", - "func_8013AED4": "SubS_UpdateFlags", + "func_8013AED4": "SubS_SetOfferMode", + "SubS_UpdateFlags": "SubS_SetOfferMode" "func_8013D8DC": "SubS_IsObjectLoaded", "func_8013D924": "SubS_GetObjectIndex", "func_8013D5E8": "SubS_AngleDiffLessEqual", @@ -742,6 +748,9 @@ wordReplace = { "func_8013DCCC": "SubS_GetPathCount", "func_8013AD9C": "SubS_UpdateLimb", "func_8013D2E0": "SubS_TurnToPoint", + "func_8013C964": "SubS_Offer", + "func_8013E748": "SubS_OfferTalkExchangeCustom", + "func_8013E8F8": "SubS_OfferTalkExchangeFacing", "func_80147624": "Message_ShouldAdvance", "func_80147734": "Message_ShouldAdvanceSilent", @@ -1009,7 +1018,8 @@ wordReplace = { "gSaveContext.save.horseData": "gSaveContext.save.saveInfo.horseData", "gSaveContext.save.checksum": "gSaveContext.save.saveInfo.checksum", - "player->unk_A87": "player->exchangeItemId", + "player->unk_A87": "player->exchangeItemAction", + "player->exchangeItemId": "player->exchangeItemAction", "player->leftHandActor": "player->heldActor", "player->unk_384": "player->getItemId", "player->unk_386": "player->getItemDirection", diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 25d7f3b61a..5e2e9ce14a 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -284,10 +284,10 @@ asm/non_matchings/code/z_actor/func_800B82EC.s,func_800B82EC,0x800B82EC,0x34 asm/non_matchings/code/z_actor/func_800B83BC.s,func_800B83BC,0x800B83BC,0xF asm/non_matchings/code/z_actor/func_800B83F8.s,func_800B83F8,0x800B83F8,0x36 asm/non_matchings/code/z_actor/Actor_ProcessTalkRequest.s,Actor_ProcessTalkRequest,0x800B84D0,0xC -asm/non_matchings/code/z_actor/func_800B8500.s,func_800B8500,0x800B8500,0x38 -asm/non_matchings/code/z_actor/func_800B85E0.s,func_800B85E0,0x800B85E0,0xD -asm/non_matchings/code/z_actor/func_800B8614.s,func_800B8614,0x800B8614,0xA -asm/non_matchings/code/z_actor/func_800B863C.s,func_800B863C,0x800B863C,0x10 +asm/non_matchings/code/z_actor/Actor_OfferTalkExchange.s,Actor_OfferTalkExchange,0x800B8500,0x38 +asm/non_matchings/code/z_actor/Actor_OfferTalkExchangeEquiCylinder.s,Actor_OfferTalkExchangeEquiCylinder,0x800B85E0,0xD +asm/non_matchings/code/z_actor/Actor_OfferTalk.s,Actor_OfferTalk,0x800B8614,0xA +asm/non_matchings/code/z_actor/Actor_OfferTalkNearColChkInfoCylinder.s,Actor_OfferTalkNearColChkInfoCylinder,0x800B863C,0x10 asm/non_matchings/code/z_actor/Actor_TextboxIsClosing.s,Actor_TextboxIsClosing,0x800B867C,0x13 asm/non_matchings/code/z_actor/Actor_ChangeFocus.s,Actor_ChangeFocus,0x800B86C8,0x10 asm/non_matchings/code/z_actor/Player_GetExchangeItemId.s,Player_GetExchangeItemId,0x800B8708,0x4 @@ -2174,7 +2174,7 @@ asm/non_matchings/code/z_sub_s/SubS_DrawTransformFlexLimb.s,SubS_DrawTransformFl asm/non_matchings/code/z_sub_s/SubS_DrawTransformFlex.s,SubS_DrawTransformFlex,0x8013AB00,0x9B asm/non_matchings/code/z_sub_s/SubS_InCsMode.s,SubS_InCsMode,0x8013AD6C,0xC asm/non_matchings/code/z_sub_s/SubS_UpdateLimb.s,SubS_UpdateLimb,0x8013AD9C,0x4E -asm/non_matchings/code/z_sub_s/SubS_UpdateFlags.s,SubS_UpdateFlags,0x8013AED4,0xB +asm/non_matchings/code/z_sub_s/SubS_SetOfferMode.s,SubS_SetOfferMode,0x8013AED4,0xB asm/non_matchings/code/z_sub_s/SubS_TimePathing_FillKnots.s,SubS_TimePathing_FillKnots,0x8013AF00,0x44 asm/non_matchings/code/z_sub_s/SubS_TimePathing_ComputeProgress.s,SubS_TimePathing_ComputeProgress,0x8013B010,0x2E asm/non_matchings/code/z_sub_s/SubS_TimePathing_ComputeWeights.s,SubS_TimePathing_ComputeWeights,0x8013B0C8,0xA2 @@ -2189,7 +2189,7 @@ asm/non_matchings/code/z_sub_s/SubS_GetDayDependentPath.s,SubS_GetDayDependentPa asm/non_matchings/code/z_sub_s/SubS_WeightPathing_ComputePoint.s,SubS_WeightPathing_ComputePoint,0x8013C068,0x16F asm/non_matchings/code/z_sub_s/SubS_WeightPathing_Move.s,SubS_WeightPathing_Move,0x8013C624,0xA5 asm/non_matchings/code/z_sub_s/SubS_CopyPointFromPathCheckBounds.s,SubS_CopyPointFromPathCheckBounds,0x8013C8B8,0x2B -asm/non_matchings/code/z_sub_s/func_8013C964.s,func_8013C964,0x8013C964,0xB2 +asm/non_matchings/code/z_sub_s/SubS_Offer.s,SubS_Offer,0x8013C964,0xB2 asm/non_matchings/code/z_sub_s/SubS_FillShadowTex.s,SubS_FillShadowTex,0x8013CC2C,0x4E asm/non_matchings/code/z_sub_s/SubS_GenShadowTex.s,SubS_GenShadowTex,0x8013CD64,0x68 asm/non_matchings/code/z_sub_s/SubS_DrawShadowTex.s,SubS_DrawShadowTex,0x8013CF04,0x77 @@ -2220,9 +2220,9 @@ asm/non_matchings/code/z_sub_s/SubS_FillCutscenesList.s,SubS_FillCutscenesList,0 asm/non_matchings/code/z_sub_s/SubS_ConstructPlane.s,SubS_ConstructPlane,0x8013E4B0,0x47 asm/non_matchings/code/z_sub_s/SubS_LineSegVsPlane.s,SubS_LineSegVsPlane,0x8013E5CC,0x1D asm/non_matchings/code/z_sub_s/SubS_FindActorCustom.s,SubS_FindActorCustom,0x8013E640,0x42 -asm/non_matchings/code/z_sub_s/func_8013E748.s,func_8013E748,0x8013E748,0x1E +asm/non_matchings/code/z_sub_s/SubS_OfferTalkExchangeCustom.s,SubS_OfferTalkExchangeCustom,0x8013E748,0x1E asm/non_matchings/code/z_sub_s/SubS_ActorAndPlayerFaceEachOther.s,SubS_ActorAndPlayerFaceEachOther,0x8013E7C0,0x4E -asm/non_matchings/code/z_sub_s/func_8013E8F8.s,func_8013E8F8,0x8013E8F8,0x16 +asm/non_matchings/code/z_sub_s/SubS_OfferTalkExchangeFacing.s,SubS_OfferTalkExchangeFacing,0x8013E8F8,0x16 asm/non_matchings/code/z_sub_s/SubS_TrackPointStep.s,SubS_TrackPointStep,0x8013E950,0xB0 asm/non_matchings/code/code_8013EC10/Rumble_Update.s,Rumble_Update,0x8013EC10,0xD asm/non_matchings/code/code_8013EC10/Rumble_Override.s,Rumble_Override,0x8013EC44,0x27