Player Docs: Talking (#1738)

* player talk

* cleanup

* fix comment
This commit is contained in:
engineer124 2024-11-18 11:26:59 +11:00 committed by GitHub
parent a198b8556b
commit a957342583
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 279 additions and 234 deletions

View File

@ -1652,7 +1652,7 @@ s32 Camera_IsDbgCamEnabled(void);
Vec3f Camera_GetQuakeOffset(Camera* camera); Vec3f Camera_GetQuakeOffset(Camera* camera);
void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3); void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0, void* data1, s16 data2, s16 data3);
s32 Camera_GetNegOne(void); s32 Camera_GetNegOne(void);
s16 func_800E0238(Camera* camera); s16 Camera_SetFinishedFlag(Camera* camera);
void Camera_SetFocalActor(Camera* camera, struct Actor* actor); void Camera_SetFocalActor(Camera* camera, struct Actor* actor);
void Camera_SetTargetActor(Camera* camera, struct Actor* actor); void Camera_SetTargetActor(Camera* camera, struct Actor* actor);
f32 Camera_GetWaterYPos(Camera* camera); f32 Camera_GetWaterYPos(Camera* camera);

View File

@ -880,8 +880,8 @@ typedef enum PlayerCueId {
#define PLAYER_STATE1_10 (1 << 4) #define PLAYER_STATE1_10 (1 << 4)
// //
#define PLAYER_STATE1_20 (1 << 5) #define PLAYER_STATE1_20 (1 << 5)
// // Currently talking to an actor. This includes item exchanges.
#define PLAYER_STATE1_40 (1 << 6) #define PLAYER_STATE1_TALKING (1 << 6)
// Player has died. Note that this gets set when the death cutscene has started, after landing from the air. // Player has died. Note that this gets set when the death cutscene has started, after landing from the air.
// This also gets set when either deku/zora forms touches lava floor, or goron form enters water and the scene resets. // This also gets set when either deku/zora forms touches lava floor, or goron form enters water and the scene resets.
#define PLAYER_STATE1_DEAD (1 << 7) #define PLAYER_STATE1_DEAD (1 << 7)
@ -937,8 +937,8 @@ typedef enum PlayerCueId {
// //
#define PLAYER_STATE2_1 (1 << 0) #define PLAYER_STATE2_1 (1 << 0)
// // Can accept a talk offer. "Speak" or "Check" is shown on the A button.
#define PLAYER_STATE2_2 (1 << 1) #define PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER (1 << 1)
// //
#define PLAYER_STATE2_4 (1 << 2) #define PLAYER_STATE2_4 (1 << 2)
// //
@ -1287,7 +1287,7 @@ typedef struct Player {
/* 0xB58 */ f32 distToInteractWall; // xyz distance to the interact wall /* 0xB58 */ f32 distToInteractWall; // xyz distance to the interact wall
/* 0xB5C */ u8 ledgeClimbType; // see PlayerLedgeClimbType enum /* 0xB5C */ u8 ledgeClimbType; // see PlayerLedgeClimbType enum
/* 0xB5D */ u8 ledgeClimbDelayTimer; /* 0xB5D */ u8 ledgeClimbDelayTimer;
/* 0xB5E */ u8 unk_B5E; /* 0xB5E */ u8 textboxBtnCooldownTimer; // Prevents usage of A/B/C-up when counting down
/* 0xB5F */ u8 unk_B5F; /* 0xB5F */ u8 unk_B5F;
/* 0xB60 */ u16 blastMaskTimer; /* 0xB60 */ u16 blastMaskTimer;
/* 0xB62 */ s16 unk_B62; /* 0xB62 */ s16 unk_B62;

View File

@ -511,7 +511,7 @@ void Attention_Draw(Attention* attention, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
Actor* actor; // used for both the reticle actor and arrow hover actor Actor* actor; // used for both the reticle actor and arrow hover actor
if (player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | if (player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 |
PLAYER_STATE1_400 | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000)) { PLAYER_STATE1_400 | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000)) {
return; return;
} }
@ -574,7 +574,7 @@ void Attention_Draw(Attention* attention, PlayState* play) {
Attention_SetReticlePos(attention, attention->curReticle, projectedPos.x, projectedPos.y, projectedPos.z); Attention_SetReticlePos(attention, attention->curReticle, projectedPos.x, projectedPos.y, projectedPos.z);
if (!(player->stateFlags1 & PLAYER_STATE1_40) || (actor != player->focusActor)) { if (!(player->stateFlags1 & PLAYER_STATE1_TALKING) || (actor != player->focusActor)) {
OVERLAY_DISP = Gfx_SetupDL(OVERLAY_DISP, SETUPDL_57); OVERLAY_DISP = Gfx_SetupDL(OVERLAY_DISP, SETUPDL_57);
for (i = 0, curReticle = attention->curReticle; i < numReticles; for (i = 0, curReticle = attention->curReticle; i < numReticles;
@ -2626,33 +2626,33 @@ Actor* Actor_UpdateActor(UpdateActor_Params* params) {
u32 sCategoryFreezeMasks[ACTORCAT_MAX] = { u32 sCategoryFreezeMasks[ACTORCAT_MAX] = {
/* ACTORCAT_SWITCH */ /* ACTORCAT_SWITCH */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000, PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000,
/* ACTORCAT_BG */ /* ACTORCAT_BG */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000, PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000,
/* ACTORCAT_PLAYER */ /* ACTORCAT_PLAYER */
PLAYER_STATE1_200, PLAYER_STATE1_200,
/* ACTORCAT_EXPLOSIVES */ /* ACTORCAT_EXPLOSIVES */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_400 | PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_400 |
PLAYER_STATE1_10000000, PLAYER_STATE1_10000000,
/* ACTORCAT_NPC */ /* ACTORCAT_NPC */
PLAYER_STATE1_2 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200, PLAYER_STATE1_2 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200,
/* ACTORCAT_ENEMY */ /* ACTORCAT_ENEMY */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000 | PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000 |
PLAYER_STATE1_20000000, PLAYER_STATE1_20000000,
/* ACTORCAT_PROP */ /* ACTORCAT_PROP */
PLAYER_STATE1_2 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000, PLAYER_STATE1_2 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000,
/* ACTORCAT_ITEMACTION */ /* ACTORCAT_ITEMACTION */
PLAYER_STATE1_2, PLAYER_STATE1_2,
/* ACTORCAT_MISC */ /* ACTORCAT_MISC */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000 | PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000 |
PLAYER_STATE1_20000000, PLAYER_STATE1_20000000,
/* ACTORCAT_BOSS */ /* ACTORCAT_BOSS */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_400 | PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_400 |
PLAYER_STATE1_10000000, PLAYER_STATE1_10000000,
/* ACTORCAT_DOOR */ /* ACTORCAT_DOOR */
PLAYER_STATE1_2, PLAYER_STATE1_2,
/* ACTORCAT_CHEST */ /* ACTORCAT_CHEST */
PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000, PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | PLAYER_STATE1_10000000,
}; };
void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
@ -2688,7 +2688,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
params.freezeExceptionFlag = 0; params.freezeExceptionFlag = 0;
} }
if ((player->stateFlags1 & PLAYER_STATE1_40) && ((player->actor.textId & 0xFF00) != 0x1900)) { if ((player->stateFlags1 & PLAYER_STATE1_TALKING) && ((player->actor.textId & 0xFF00) != 0x1900)) {
params.talkActor = player->talkActor; params.talkActor = player->talkActor;
} else { } else {
params.talkActor = NULL; params.talkActor = NULL;

View File

@ -8094,7 +8094,7 @@ s32 Camera_GetNegOne(void) {
return sCameraNegOne; return sCameraNegOne;
} }
s16 func_800E0238(Camera* camera) { s16 Camera_SetFinishedFlag(Camera* camera) {
Camera_SetStateFlag(camera, CAM_STATE_3); Camera_SetStateFlag(camera, CAM_STATE_3);
if ((camera->camId == CAM_ID_MAIN) && (camera->play->activeCamId != CAM_ID_MAIN)) { if ((camera->camId == CAM_ID_MAIN) && (camera->play->activeCamId != CAM_ID_MAIN)) {
Camera_SetStateFlag(GET_ACTIVE_CAM(camera->play), CAM_STATE_3); Camera_SetStateFlag(GET_ACTIVE_CAM(camera->play), CAM_STATE_3);

View File

@ -65,8 +65,8 @@ void BgTobira01_Action(BgTobira01* this, PlayState* play) {
this->timer = 180; this->timer = 180;
} }
if (!(player->stateFlags1 & PLAYER_STATE1_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE) && if (!(player->stateFlags1 & PLAYER_STATE1_TALKING) &&
(DECR(this->timer) == 0)) { CHECK_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE) && (DECR(this->timer) == 0)) {
CLEAR_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE); CLEAR_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE);
} }
} }

View File

@ -646,7 +646,8 @@ void DoorShutter_Update(Actor* thisx, PlayState* play) {
DoorShutter* this = THIS; DoorShutter* this = THIS;
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if (!(player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_400 | PLAYER_STATE1_10000000)) || if (!(player->stateFlags1 &
(PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_400 | PLAYER_STATE1_10000000)) ||
(this->actionFunc == DoorShutter_SetupType)) { (this->actionFunc == DoorShutter_SetupType)) {
this->actionFunc(this, play); this->actionFunc(this, play);

View File

@ -233,7 +233,8 @@ void DoorSpiral_Update(Actor* thisx, PlayState* play) {
DoorSpiral* this = THIS; DoorSpiral* this = THIS;
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if (!(player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_400 | PLAYER_STATE1_10000000)) || if (!(player->stateFlags1 &
(PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_400 | PLAYER_STATE1_10000000)) ||
(this->actionFunc == func_809A2DB0)) { (this->actionFunc == func_809A2DB0)) {
this->actionFunc(this, play); this->actionFunc(this, play);
} }

View File

@ -329,7 +329,7 @@ s32 func_80BD3198(EnAh* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 temp = play->msgCtx.currentTextId; u16 temp = play->msgCtx.currentTextId;
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
if (this->unk_2DA != temp) { if (this->unk_2DA != temp) {
if (temp == 0x2954) { if (temp == 0x2954) {
this->unk_18C = func_80BD3118; this->unk_18C = func_80BD3118;

View File

@ -892,7 +892,7 @@ s32 func_80BDF064(EnAl* this, PlayState* play) {
Actor* sp1C = EnAl_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_GM); Actor* sp1C = EnAl_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_GM);
Actor* temp_v0 = EnAl_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO); Actor* temp_v0 = EnAl_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO);
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
this->unk_4C2 |= 0x400; this->unk_4C2 |= 0x400;
if (this->unk_4C4 != sp22) { if (this->unk_4C4 != sp22) {
switch (sp22) { switch (sp22) {

View File

@ -2030,7 +2030,7 @@ s32 EnAn_HandleDialogue(EnAn* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 textId = play->msgCtx.currentTextId; u16 textId = play->msgCtx.currentTextId;
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
this->stateFlags |= ENAN_STATE_TALKING; this->stateFlags |= ENAN_STATE_TALKING;
if (this->prevTextId != textId) { if (this->prevTextId != textId) {

View File

@ -376,7 +376,7 @@ s32 EnBjt_ChooseAnimation(EnBjt* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 curTextId = play->msgCtx.currentTextId; u16 curTextId = play->msgCtx.currentTextId;
if (player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_400)) { // Talking, show item? if (player->stateFlags1 & (PLAYER_STATE1_TALKING | PLAYER_STATE1_400)) { // Talking, show item?
this->stateFlags |= TOILET_HAND_STATE_TEXTBOX; this->stateFlags |= TOILET_HAND_STATE_TEXTBOX;
if (this->textId != curTextId) { if (this->textId != curTextId) {
switch (curTextId) { switch (curTextId) {

View File

@ -324,7 +324,7 @@ s32 func_80A52B68(EnDnq* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 textId = play->msgCtx.currentTextId; u16 textId = play->msgCtx.currentTextId;
if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->talkActor == &this->picto.actor)) { if ((player->stateFlags1 & PLAYER_STATE1_TALKING) && (player->talkActor == &this->picto.actor)) {
switch (textId) { switch (textId) {
case 0x89B: case 0x89B:
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_FOOT_STAMP_LOOP); EnDnq_ChangeAnim(this, DEKU_KING_ANIM_FOOT_STAMP_LOOP);

View File

@ -973,7 +973,7 @@ void func_8088E850(EnElf* this, PlayState* play) {
default: default:
tatlHoverActor = play->actorCtx.attention.tatlHoverActor; tatlHoverActor = play->actorCtx.attention.tatlHoverActor;
if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->talkActor != NULL)) { if ((player->stateFlags1 & PLAYER_STATE1_TALKING) && (player->talkActor != NULL)) {
Math_Vec3f_Copy(&nextPos, &player->talkActor->focus.pos); Math_Vec3f_Copy(&nextPos, &player->talkActor->focus.pos);
} else { } else {
Math_Vec3f_Copy(&nextPos, &play->actorCtx.attention.tatlHoverPos); Math_Vec3f_Copy(&nextPos, &play->actorCtx.attention.tatlHoverPos);
@ -1153,7 +1153,7 @@ void func_8088F214(EnElf* this, PlayState* play) {
if (this->unk_25C != 0) { if (this->unk_25C != 0) {
this->unk_25C--; this->unk_25C--;
sp34 = 0; sp34 = 0;
} else if (!(player->stateFlags1 & PLAYER_STATE1_40)) { } else if (!(player->stateFlags1 & PLAYER_STATE1_TALKING)) {
if (this->unk_269 == 0) { if (this->unk_269 == 0) {
Actor_PlaySfx(&this->actor, NA_SE_EV_NAVY_VANISH); Actor_PlaySfx(&this->actor, NA_SE_EV_NAVY_VANISH);
} }
@ -1216,7 +1216,7 @@ void func_8088F214(EnElf* this, PlayState* play) {
if (this->unk_269 == 0) { if (this->unk_269 == 0) {
Actor_PlaySfx(&this->actor, NA_SE_EV_BELL_DASH_NORMAL); Actor_PlaySfx(&this->actor, NA_SE_EV_BELL_DASH_NORMAL);
} }
} else if (player->stateFlags1 & PLAYER_STATE1_40) { } else if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
player->stateFlags2 |= PLAYER_STATE2_100000; player->stateFlags2 |= PLAYER_STATE2_100000;
sp34 = 0; sp34 = 0;
this->unk_25C = 0; this->unk_25C = 0;

View File

@ -1019,7 +1019,7 @@ s32 func_8094F53C(EnGm* this, PlayState* play) {
Actor* al = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_AL); Actor* al = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_AL);
Actor* toto = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO); Actor* toto = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO);
if (player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_400)) { if (player->stateFlags1 & (PLAYER_STATE1_TALKING | PLAYER_STATE1_400)) {
this->unk_3A4 |= 0x400; this->unk_3A4 |= 0x400;
if (this->unk_3A6 != sp32) { if (this->unk_3A6 != sp32) {
switch (sp32) { switch (sp32) {
@ -1543,7 +1543,7 @@ s32 func_80950690(EnGm* this, PlayState* play) {
al = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_AL); al = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_AL);
toto = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO); toto = EnGm_FindActor(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO);
if ((al != NULL) && (al->update != NULL) && (toto != NULL) && (toto->update != NULL) && if ((al != NULL) && (al->update != NULL) && (toto != NULL) && (toto->update != NULL) &&
!(player->stateFlags1 & PLAYER_STATE1_40)) { !(player->stateFlags1 & PLAYER_STATE1_TALKING)) {
if (DECR(this->unk_3B8) == 0) { if (DECR(this->unk_3B8) == 0) {
if (al == this->unk_268) { if (al == this->unk_268) {
this->unk_268 = toto; this->unk_268 = toto;

View File

@ -1486,7 +1486,7 @@ s32 EnGo_UpdateGraveyardAttentionTargetAndReactions(EnGo* this, PlayState* play)
return false; return false;
} }
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
if (this->lastTextId != textId) { if (this->lastTextId != textId) {
switch (textId) { switch (textId) {
case 0xE1A: // Awakening from frozen form, confused, turn to other Goron case 0xE1A: // Awakening from frozen form, confused, turn to other Goron

View File

@ -1438,7 +1438,7 @@ void EnGoroiwa_Update(Actor* thisx, PlayState* play) {
CollisionPoly* tmp; CollisionPoly* tmp;
if (!(player->stateFlags1 & if (!(player->stateFlags1 &
(PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) { (PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) {
if (this->unk_1CC > 0) { if (this->unk_1CC > 0) {
this->unk_1CC--; this->unk_1CC--;
} }

View File

@ -515,7 +515,7 @@ s32 func_80BF1B40(EnIg* this, PlayState* play) {
u16 temp = play->msgCtx.currentTextId; u16 temp = play->msgCtx.currentTextId;
s32 pad; s32 pad;
if (player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_400 | PLAYER_STATE1_CARRYING_ACTOR)) { if (player->stateFlags1 & (PLAYER_STATE1_TALKING | PLAYER_STATE1_400 | PLAYER_STATE1_CARRYING_ACTOR)) {
this->unk_3D0 |= 0x400; this->unk_3D0 |= 0x400;
if (this->unk_3D2 != temp) { if (this->unk_3D2 != temp) {
if ((this->animIndex == ENIG_ANIM_2) || (this->animIndex == ENIG_ANIM_3)) { if ((this->animIndex == ENIG_ANIM_2) || (this->animIndex == ENIG_ANIM_3)) {

View File

@ -622,7 +622,7 @@ s32 func_80BC0A18(EnNb* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 currentTextId = play->msgCtx.currentTextId; u16 currentTextId = play->msgCtx.currentTextId;
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
this->stateFlags |= EN_NB_FLAG_80; this->stateFlags |= EN_NB_FLAG_80;
if (this->textId != currentTextId) { if (this->textId != currentTextId) {

View File

@ -98,7 +98,7 @@ void EnNutsball_Update(Actor* thisx, PlayState* play2) {
CollisionPoly* poly; CollisionPoly* poly;
if (!(player->stateFlags1 & if (!(player->stateFlags1 &
(PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) { (PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) {
this->timer--; this->timer--;
if (this->timer < 0) { if (this->timer < 0) {
this->actor.velocity.y += this->actor.gravity; this->actor.velocity.y += this->actor.gravity;

View File

@ -946,7 +946,7 @@ void EnOkuta_Projectile_Update(Actor* thisx, PlayState* play) {
Vec3f prevPos; Vec3f prevPos;
s32 canRestorePrevPos = false; s32 canRestorePrevPos = false;
if (!(player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_40 | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 | if (!(player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_TALKING | PLAYER_STATE1_DEAD | PLAYER_STATE1_200 |
PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) { PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000))) {
this->actionFunc(this, play); this->actionFunc(this, play);
Actor_MoveWithoutGravity(&this->actor); Actor_MoveWithoutGravity(&this->actor);

View File

@ -1012,7 +1012,7 @@ s32 func_80AF8DD4(EnPm* this, PlayState* play) {
u16 textId = play->msgCtx.currentTextId; u16 textId = play->msgCtx.currentTextId;
s32 pad; s32 pad;
if (player->stateFlags1 & (PLAYER_STATE1_40 | PLAYER_STATE1_400)) { if (player->stateFlags1 & (PLAYER_STATE1_TALKING | PLAYER_STATE1_400)) {
this->unk_356 |= 0x400; this->unk_356 |= 0x400;
if (this->unk_358 != textId) { if (this->unk_358 != textId) {
if ((this->animIndex == ENPM_ANIM_0) || (this->animIndex == ENPM_ANIM_1)) { if ((this->animIndex == ENPM_ANIM_0) || (this->animIndex == ENPM_ANIM_1)) {

View File

@ -553,7 +553,7 @@ s32 func_80AE65F4(EnShn* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
u16 temp = play->msgCtx.currentTextId; u16 temp = play->msgCtx.currentTextId;
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
if (this->unk_1DA != temp) { if (this->unk_1DA != temp) {
if ((this->unk_1D8 & 0x80) || (this->unk_1D8 & 0x100)) { if ((this->unk_1D8 & 0x80) || (this->unk_1D8 & 0x100)) {
this->unk_1D8 |= 8; this->unk_1D8 |= 8;

View File

@ -1229,7 +1229,7 @@ void func_80BAD380(EnSuttari* this, PlayState* play) {
u8 talkState = Message_GetState(&play->msgCtx); u8 talkState = Message_GetState(&play->msgCtx);
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if ((player->stateFlags1 & PLAYER_STATE1_40) && (play->msgCtx.currentTextId != 0x2A31)) { if ((player->stateFlags1 & PLAYER_STATE1_TALKING) && (play->msgCtx.currentTextId != 0x2A31)) {
this->flags1 |= 0x8000; this->flags1 |= 0x8000;
this->actor.speed = 0.0f; this->actor.speed = 0.0f;
} else { } else {

View File

@ -569,7 +569,7 @@ s32 func_80BE10BC(EnTab* this, PlayState* play) {
switch (this->scheduleResult) { switch (this->scheduleResult) {
case 1: case 1:
if ((player->stateFlags1 & PLAYER_STATE1_40) && !(play->msgCtx.currentTextId <= 0x2B00) && if ((player->stateFlags1 & PLAYER_STATE1_TALKING) && !(play->msgCtx.currentTextId <= 0x2B00) &&
(play->msgCtx.currentTextId < 0x2B08)) { (play->msgCtx.currentTextId < 0x2B08)) {
this->actor.child = &this->unk_1E4->actor; this->actor.child = &this->unk_1E4->actor;
this->unk_2FC |= 8; this->unk_2FC |= 8;

View File

@ -694,7 +694,7 @@ s32 func_80A3FA58(EnTest3* this, PlayState* play) {
struct_80A41828 sp40; struct_80A41828 sp40;
ScheduleOutput scheduleOutput; ScheduleOutput scheduleOutput;
if (player->stateFlags1 & PLAYER_STATE1_40) { if (player->stateFlags1 & PLAYER_STATE1_TALKING) {
return false; return false;
} }
cond = func_80A40230(this, play); cond = func_80A40230(this, play);

View File

@ -244,8 +244,8 @@ void EnWallmas_WaitToDrop(EnWallmas* this, PlayState* play) {
} }
if ((player->stateFlags1 & (PLAYER_STATE1_100000 | PLAYER_STATE1_8000000)) || if ((player->stateFlags1 & (PLAYER_STATE1_100000 | PLAYER_STATE1_8000000)) ||
(player->stateFlags2 & PLAYER_STATE2_80) || (player->unk_B5E > 0) || (player->actor.freezeTimer > 0) || (player->stateFlags2 & PLAYER_STATE2_80) || (player->textboxBtnCooldownTimer > 0) ||
!(player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (player->actor.freezeTimer > 0) || !(player->actor.bgCheckFlags & BGCHECKFLAG_GROUND) ||
((WALLMASTER_GET_TYPE(&this->actor) == WALLMASTER_TYPE_PROXIMITY) && ((WALLMASTER_GET_TYPE(&this->actor) == WALLMASTER_TYPE_PROXIMITY) &&
(Math_Vec3f_DistXZ(&this->actor.home.pos, playerPos) > (120.f + this->detectionRadius)))) { (Math_Vec3f_DistXZ(&this->actor.home.pos, playerPos) > (120.f + this->detectionRadius)))) {
AudioSfx_StopById(NA_SE_EN_FALL_AIM); AudioSfx_StopById(NA_SE_EN_FALL_AIM);

View File

@ -58,7 +58,7 @@ s32 Player_GrabPlayer(PlayState* play, Player* this);
s32 Player_TryCsAction(PlayState* play, Player* this, PlayerCsAction csAction); s32 Player_TryCsAction(PlayState* play, Player* this, PlayerCsAction csAction);
void func_8085B384(Player* this, PlayState* play); void func_8085B384(Player* this, PlayState* play);
s32 Player_InflictDamage(PlayState* play, s32 damage); s32 Player_InflictDamage(PlayState* play, s32 damage);
void Player_TalkWithPlayer(PlayState* play, Actor* actor); void Player_StartTalking(PlayState* play, Actor* actor);
void func_8085B74C(PlayState* play); void func_8085B74C(PlayState* play);
void func_8085B820(PlayState* play, s16 arg1); void func_8085B820(PlayState* play, s16 arg1);
PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId); PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId);
@ -157,7 +157,7 @@ void Player_Action_40(Player* this, PlayState* play);
void Player_Action_41(Player* this, PlayState* play); void Player_Action_41(Player* this, PlayState* play);
void Player_Action_42(Player* this, PlayState* play); void Player_Action_42(Player* this, PlayState* play);
void Player_Action_43(Player* this, PlayState* play); void Player_Action_43(Player* this, PlayState* play);
void Player_Action_44(Player* this, PlayState* play); void Player_Action_Talk(Player* this, PlayState* play);
void Player_Action_45(Player* this, PlayState* play); void Player_Action_45(Player* this, PlayState* play);
void Player_Action_46(Player* this, PlayState* play); void Player_Action_46(Player* this, PlayState* play);
void Player_Action_47(Player* this, PlayState* play); void Player_Action_47(Player* this, PlayState* play);
@ -184,7 +184,7 @@ void Player_Action_67(Player* this, PlayState* play);
void Player_Action_68(Player* this, PlayState* play); void Player_Action_68(Player* this, PlayState* play);
void Player_Action_69(Player* this, PlayState* play); void Player_Action_69(Player* this, PlayState* play);
void Player_Action_70(Player* this, PlayState* play); void Player_Action_70(Player* this, PlayState* play);
void Player_Action_71(Player* this, PlayState* play); void Player_Action_ExchangeItem(Player* this, PlayState* play);
void Player_Action_72(Player* this, PlayState* play); void Player_Action_72(Player* this, PlayState* play);
void Player_Action_73(Player* this, PlayState* play); void Player_Action_73(Player* this, PlayState* play);
void Player_Action_74(Player* this, PlayState* play); void Player_Action_74(Player* this, PlayState* play);
@ -241,7 +241,7 @@ s32 Player_ActionHandler_0(Player* this, PlayState* play);
s32 Player_ActionHandler_1(Player* this, PlayState* play); s32 Player_ActionHandler_1(Player* this, PlayState* play);
s32 Player_ActionHandler_2(Player* this, PlayState* play); s32 Player_ActionHandler_2(Player* this, PlayState* play);
s32 Player_ActionHandler_3(Player* this, PlayState* play); s32 Player_ActionHandler_3(Player* this, PlayState* play);
s32 Player_ActionHandler_4(Player* this, PlayState* play); s32 Player_ActionHandler_Talk(Player* this, PlayState* play);
s32 Player_ActionHandler_5(Player* this, PlayState* play); s32 Player_ActionHandler_5(Player* this, PlayState* play);
s32 Player_ActionHandler_6(Player* this, PlayState* play); s32 Player_ActionHandler_6(Player* this, PlayState* play);
s32 Player_ActionHandler_7(Player* this, PlayState* play); s32 Player_ActionHandler_7(Player* this, PlayState* play);
@ -521,7 +521,7 @@ FloorProperty sPlayerPrevFloorProperty;
s32 sPlayerShapeYawToTouchedWall; s32 sPlayerShapeYawToTouchedWall;
s32 sPlayerWorldYawToTouchedWall; s32 sPlayerWorldYawToTouchedWall;
s16 sPlayerFloorPitchShape; s16 sPlayerFloorPitchShape;
s32 D_80862B2C; // D_80862B2C = player->currentMask; s32 sSavedCurrentMask;
Vec3f sPlayerInteractWallCheckResult; Vec3f sPlayerInteractWallCheckResult;
f32 D_80862B3C; f32 D_80862B3C;
FloorEffect sPlayerFloorEffect; FloorEffect sPlayerFloorEffect;
@ -545,7 +545,7 @@ void func_8082DAD4(Player* this) {
this->unk_AA5 = PLAYER_UNKAA5_0; this->unk_AA5 = PLAYER_UNKAA5_0;
} }
s32 func_8082DAFC(PlayState* play) { s32 Player_IsTalking(PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
return CHECK_FLAG_ALL(player->actor.flags, ACTOR_FLAG_TALK); return CHECK_FLAG_ALL(player->actor.flags, ACTOR_FLAG_TALK);
@ -624,7 +624,7 @@ void func_8082DD2C(PlayState* play, Player* this) {
func_8082DC38(this); func_8082DC38(this);
this->unk_AA5 = PLAYER_UNKAA5_0; this->unk_AA5 = PLAYER_UNKAA5_0;
func_8082DC64(play, this); func_8082DC64(play, this);
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
this->stateFlags1 &= this->stateFlags1 &=
~(PLAYER_STATE1_4 | PLAYER_STATE1_2000 | PLAYER_STATE1_4000 | PLAYER_STATE1_100000 | PLAYER_STATE1_200000); ~(PLAYER_STATE1_4 | PLAYER_STATE1_2000 | PLAYER_STATE1_4000 | PLAYER_STATE1_100000 | PLAYER_STATE1_200000);
this->stateFlags2 &= ~(PLAYER_STATE2_10 | PLAYER_STATE2_80); this->stateFlags2 &= ~(PLAYER_STATE2_10 | PLAYER_STATE2_80);
@ -4420,8 +4420,8 @@ s32 Player_SetAction(PlayState* play, Player* this, PlayerActionFunc actionFunc,
func_80831454(this); func_80831454(this);
Player_Anim_ResetMove(this); Player_Anim_ResetMove(this);
this->stateFlags1 &= ~(PLAYER_STATE1_40 | PLAYER_STATE1_4000000 | PLAYER_STATE1_10000000 | PLAYER_STATE1_20000000 | this->stateFlags1 &= ~(PLAYER_STATE1_TALKING | PLAYER_STATE1_4000000 | PLAYER_STATE1_10000000 |
PLAYER_STATE1_80000000); PLAYER_STATE1_20000000 | PLAYER_STATE1_80000000);
this->stateFlags2 &= ~(PLAYER_STATE2_80000 | PLAYER_STATE2_800000 | PLAYER_STATE2_2000000 | this->stateFlags2 &= ~(PLAYER_STATE2_80000 | PLAYER_STATE2_800000 | PLAYER_STATE2_2000000 |
PLAYER_STATE2_USING_OCARINA | PLAYER_STATE2_IDLE_FIDGET); PLAYER_STATE2_USING_OCARINA | PLAYER_STATE2_IDLE_FIDGET);
this->stateFlags3 &= this->stateFlags3 &=
@ -4964,7 +4964,7 @@ void Player_UpdateZTargeting(Player* this, PlayState* play) {
ignoreLeash = true; ignoreLeash = true;
} }
isTalking = func_8082DAFC(play); isTalking = Player_IsTalking(play);
if (isTalking || (this->zTargetActiveTimer != 0) || if (isTalking || (this->zTargetActiveTimer != 0) ||
(this->stateFlags1 & (PLAYER_STATE1_1000 | PLAYER_STATE1_2000000))) { (this->stateFlags1 & (PLAYER_STATE1_1000 | PLAYER_STATE1_2000000))) {
@ -5011,7 +5011,7 @@ void Player_UpdateZTargeting(Player* this, PlayState* play) {
this->focusActor = nextLockOnActor; this->focusActor = nextLockOnActor;
this->zTargetActiveTimer = 15; this->zTargetActiveTimer = 15;
this->stateFlags2 &= ~(PLAYER_STATE2_2 | PLAYER_STATE2_200000); this->stateFlags2 &= ~(PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER | PLAYER_STATE2_200000);
} else if (!usingHoldTargeting) { } else if (!usingHoldTargeting) {
Player_ReleaseLockOn(this); Player_ReleaseLockOn(this);
} }
@ -5200,7 +5200,7 @@ typedef enum ActionHandlerIndex {
/* 0x1 */ PLAYER_ACTION_HANDLER_1, /* 0x1 */ PLAYER_ACTION_HANDLER_1,
/* 0x2 */ PLAYER_ACTION_HANDLER_2, /* 0x2 */ PLAYER_ACTION_HANDLER_2,
/* 0x3 */ PLAYER_ACTION_HANDLER_3, /* 0x3 */ PLAYER_ACTION_HANDLER_3,
/* 0x4 */ PLAYER_ACTION_HANDLER_4, /* 0x4 */ PLAYER_ACTION_HANDLER_TALK,
/* 0x5 */ PLAYER_ACTION_HANDLER_5, /* 0x5 */ PLAYER_ACTION_HANDLER_5,
/* 0x6 */ PLAYER_ACTION_HANDLER_6, /* 0x6 */ PLAYER_ACTION_HANDLER_6,
/* 0x7 */ PLAYER_ACTION_HANDLER_7, /* 0x7 */ PLAYER_ACTION_HANDLER_7,
@ -5222,7 +5222,7 @@ typedef enum ActionHandlerIndex {
s8 sActionHandlerList1[] = { s8 sActionHandlerList1[] = {
/* 0 */ PLAYER_ACTION_HANDLER_13, /* 0 */ PLAYER_ACTION_HANDLER_13,
/* 1 */ PLAYER_ACTION_HANDLER_2, /* 1 */ PLAYER_ACTION_HANDLER_2,
/* 2 */ PLAYER_ACTION_HANDLER_4, /* 2 */ PLAYER_ACTION_HANDLER_TALK,
/* 3 */ PLAYER_ACTION_HANDLER_9, /* 3 */ PLAYER_ACTION_HANDLER_9,
/* 4 */ PLAYER_ACTION_HANDLER_10, /* 4 */ PLAYER_ACTION_HANDLER_10,
/* 5 */ PLAYER_ACTION_HANDLER_11, /* 5 */ PLAYER_ACTION_HANDLER_11,
@ -5236,7 +5236,7 @@ s8 sActionHandlerList2[] = {
/* 2 */ PLAYER_ACTION_HANDLER_2, /* 2 */ PLAYER_ACTION_HANDLER_2,
/* 3 */ PLAYER_ACTION_HANDLER_5, /* 3 */ PLAYER_ACTION_HANDLER_5,
/* 4 */ PLAYER_ACTION_HANDLER_3, /* 4 */ PLAYER_ACTION_HANDLER_3,
/* 5 */ PLAYER_ACTION_HANDLER_4, /* 5 */ PLAYER_ACTION_HANDLER_TALK,
/* 6 */ PLAYER_ACTION_HANDLER_9, /* 6 */ PLAYER_ACTION_HANDLER_9,
/* 7 */ PLAYER_ACTION_HANDLER_10, /* 7 */ PLAYER_ACTION_HANDLER_10,
/* 8 */ PLAYER_ACTION_HANDLER_11, /* 8 */ PLAYER_ACTION_HANDLER_11,
@ -5250,7 +5250,7 @@ s8 sActionHandlerList3[] = {
/* 1 */ PLAYER_ACTION_HANDLER_1, /* 1 */ PLAYER_ACTION_HANDLER_1,
/* 2 */ PLAYER_ACTION_HANDLER_2, /* 2 */ PLAYER_ACTION_HANDLER_2,
/* 3 */ PLAYER_ACTION_HANDLER_3, /* 3 */ PLAYER_ACTION_HANDLER_3,
/* 4 */ PLAYER_ACTION_HANDLER_4, /* 4 */ PLAYER_ACTION_HANDLER_TALK,
/* 5 */ PLAYER_ACTION_HANDLER_9, /* 5 */ PLAYER_ACTION_HANDLER_9,
/* 6 */ PLAYER_ACTION_HANDLER_10, /* 6 */ PLAYER_ACTION_HANDLER_10,
/* 7 */ PLAYER_ACTION_HANDLER_11, /* 7 */ PLAYER_ACTION_HANDLER_11,
@ -5262,7 +5262,7 @@ s8 sActionHandlerList3[] = {
s8 sActionHandlerList4[] = { s8 sActionHandlerList4[] = {
/* 0 */ PLAYER_ACTION_HANDLER_13, /* 0 */ PLAYER_ACTION_HANDLER_13,
/* 1 */ PLAYER_ACTION_HANDLER_2, /* 1 */ PLAYER_ACTION_HANDLER_2,
/* 2 */ PLAYER_ACTION_HANDLER_4, /* 2 */ PLAYER_ACTION_HANDLER_TALK,
/* 3 */ PLAYER_ACTION_HANDLER_9, /* 3 */ PLAYER_ACTION_HANDLER_9,
/* 4 */ PLAYER_ACTION_HANDLER_10, /* 4 */ PLAYER_ACTION_HANDLER_10,
/* 5 */ PLAYER_ACTION_HANDLER_11, /* 5 */ PLAYER_ACTION_HANDLER_11,
@ -5273,7 +5273,7 @@ s8 sActionHandlerList4[] = {
s8 sActionHandlerList5[] = { s8 sActionHandlerList5[] = {
/* 0 */ PLAYER_ACTION_HANDLER_13, /* 0 */ PLAYER_ACTION_HANDLER_13,
/* 1 */ PLAYER_ACTION_HANDLER_2, /* 1 */ PLAYER_ACTION_HANDLER_2,
/* 2 */ PLAYER_ACTION_HANDLER_4, /* 2 */ PLAYER_ACTION_HANDLER_TALK,
/* 3 */ PLAYER_ACTION_HANDLER_9, /* 3 */ PLAYER_ACTION_HANDLER_9,
/* 4 */ PLAYER_ACTION_HANDLER_10, /* 4 */ PLAYER_ACTION_HANDLER_10,
/* 5 */ PLAYER_ACTION_HANDLER_11, /* 5 */ PLAYER_ACTION_HANDLER_11,
@ -5293,7 +5293,7 @@ s8 sActionHandlerListIdle[] = {
/* 3 */ PLAYER_ACTION_HANDLER_2, /* 3 */ PLAYER_ACTION_HANDLER_2,
/* 4 */ PLAYER_ACTION_HANDLER_3, /* 4 */ PLAYER_ACTION_HANDLER_3,
/* 5 */ PLAYER_ACTION_HANDLER_5, /* 5 */ PLAYER_ACTION_HANDLER_5,
/* 6 */ PLAYER_ACTION_HANDLER_4, /* 6 */ PLAYER_ACTION_HANDLER_TALK,
/* 7 */ PLAYER_ACTION_HANDLER_9, /* 7 */ PLAYER_ACTION_HANDLER_9,
/* 8 */ PLAYER_ACTION_HANDLER_8, /* 8 */ PLAYER_ACTION_HANDLER_8,
/* 9 */ PLAYER_ACTION_HANDLER_7, /* 9 */ PLAYER_ACTION_HANDLER_7,
@ -5308,7 +5308,7 @@ s8 sActionHandlerList8[] = {
/* 4 */ PLAYER_ACTION_HANDLER_3, /* 4 */ PLAYER_ACTION_HANDLER_3,
/* 5 */ PLAYER_ACTION_HANDLER_12, /* 5 */ PLAYER_ACTION_HANDLER_12,
/* 6 */ PLAYER_ACTION_HANDLER_5, /* 6 */ PLAYER_ACTION_HANDLER_5,
/* 7 */ PLAYER_ACTION_HANDLER_4, /* 7 */ PLAYER_ACTION_HANDLER_TALK,
/* 8 */ PLAYER_ACTION_HANDLER_9, /* 8 */ PLAYER_ACTION_HANDLER_9,
/* 9 */ PLAYER_ACTION_HANDLER_8, /* 9 */ PLAYER_ACTION_HANDLER_8,
/* 10 */ PLAYER_ACTION_HANDLER_7, /* 10 */ PLAYER_ACTION_HANDLER_7,
@ -5322,7 +5322,7 @@ s8 sActionHandlerList9[] = {
/* 3 */ PLAYER_ACTION_HANDLER_3, /* 3 */ PLAYER_ACTION_HANDLER_3,
/* 4 */ PLAYER_ACTION_HANDLER_12, /* 4 */ PLAYER_ACTION_HANDLER_12,
/* 5 */ PLAYER_ACTION_HANDLER_5, /* 5 */ PLAYER_ACTION_HANDLER_5,
/* 6 */ PLAYER_ACTION_HANDLER_4, /* 6 */ PLAYER_ACTION_HANDLER_TALK,
/* 7 */ PLAYER_ACTION_HANDLER_9, /* 7 */ PLAYER_ACTION_HANDLER_9,
/* 8 */ PLAYER_ACTION_HANDLER_10, /* 8 */ PLAYER_ACTION_HANDLER_10,
/* 9 */ PLAYER_ACTION_HANDLER_11, /* 9 */ PLAYER_ACTION_HANDLER_11,
@ -5341,32 +5341,32 @@ s8 sActionHandlerList11[] = {
/* 0 */ PLAYER_ACTION_HANDLER_0, /* 0 */ PLAYER_ACTION_HANDLER_0,
/* 1 */ PLAYER_ACTION_HANDLER_12, /* 1 */ PLAYER_ACTION_HANDLER_12,
/* 2 */ PLAYER_ACTION_HANDLER_5, /* 2 */ PLAYER_ACTION_HANDLER_5,
/* 3 */ PLAYER_ACTION_HANDLER_4, /* 3 */ PLAYER_ACTION_HANDLER_TALK,
/* 4 */ -PLAYER_ACTION_HANDLER_14, /* 4 */ -PLAYER_ACTION_HANDLER_14,
}; };
s8 sActionHandlerList12[] = { s8 sActionHandlerList12[] = {
/* 0 */ PLAYER_ACTION_HANDLER_13, /* 0 */ PLAYER_ACTION_HANDLER_13,
/* 1 */ PLAYER_ACTION_HANDLER_2, /* 1 */ PLAYER_ACTION_HANDLER_2,
/* 2 */ -PLAYER_ACTION_HANDLER_4, /* 2 */ -PLAYER_ACTION_HANDLER_TALK,
}; };
s32 (*sActionHandlerFuncs[PLAYER_ACTION_HANDLER_MAX])(Player* this, PlayState* play) = { s32 (*sActionHandlerFuncs[PLAYER_ACTION_HANDLER_MAX])(Player* this, PlayState* play) = {
Player_ActionHandler_0, // PLAYER_ACTION_HANDLER_0 Player_ActionHandler_0, // PLAYER_ACTION_HANDLER_0
Player_ActionHandler_1, // PLAYER_ACTION_HANDLER_1 Player_ActionHandler_1, // PLAYER_ACTION_HANDLER_1
Player_ActionHandler_2, // PLAYER_ACTION_HANDLER_2 Player_ActionHandler_2, // PLAYER_ACTION_HANDLER_2
Player_ActionHandler_3, // PLAYER_ACTION_HANDLER_3 Player_ActionHandler_3, // PLAYER_ACTION_HANDLER_3
Player_ActionHandler_4, // PLAYER_ACTION_HANDLER_4 Player_ActionHandler_Talk, // PLAYER_ACTION_HANDLER_TALK
Player_ActionHandler_5, // PLAYER_ACTION_HANDLER_5 Player_ActionHandler_5, // PLAYER_ACTION_HANDLER_5
Player_ActionHandler_6, // PLAYER_ACTION_HANDLER_6 Player_ActionHandler_6, // PLAYER_ACTION_HANDLER_6
Player_ActionHandler_7, // PLAYER_ACTION_HANDLER_7 Player_ActionHandler_7, // PLAYER_ACTION_HANDLER_7
Player_ActionHandler_8, // PLAYER_ACTION_HANDLER_8 Player_ActionHandler_8, // PLAYER_ACTION_HANDLER_8
Player_ActionHandler_9, // PLAYER_ACTION_HANDLER_9 Player_ActionHandler_9, // PLAYER_ACTION_HANDLER_9
Player_ActionHandler_10, // PLAYER_ACTION_HANDLER_10 Player_ActionHandler_10, // PLAYER_ACTION_HANDLER_10
Player_ActionHandler_11, // PLAYER_ACTION_HANDLER_11 Player_ActionHandler_11, // PLAYER_ACTION_HANDLER_11
Player_ActionHandler_12, // PLAYER_ACTION_HANDLER_12 Player_ActionHandler_12, // PLAYER_ACTION_HANDLER_12
Player_ActionHandler_13, // PLAYER_ACTION_HANDLER_13 Player_ActionHandler_13, // PLAYER_ACTION_HANDLER_13
Player_ActionHandler_14, // PLAYER_ACTION_HANDLER_14 Player_ActionHandler_14, // PLAYER_ACTION_HANDLER_14
}; };
/** /**
@ -6817,7 +6817,7 @@ s32 Player_ActionHandler_1(Player* this, PlayState* play) {
Actor* var_v0_3; Actor* var_v0_3;
if (this->doorType <= PLAYER_DOORTYPE_TALKING) { if (this->doorType <= PLAYER_DOORTYPE_TALKING) {
Player_TalkWithPlayer(play, doorActor); Player_StartTalking(play, doorActor);
if (doorActor->textId == 0x1821) { if (doorActor->textId == 0x1821) {
doorActor->flags |= ACTOR_FLAG_TALK; doorActor->flags |= ACTOR_FLAG_TALK;
} }
@ -7311,11 +7311,11 @@ void func_808379C0(PlayState* play, Player* this) {
} }
} }
void func_80837B60(PlayState* play, Player* this) { void Player_SetupTalk(PlayState* play, Player* this) {
Player_SetAction_PreserveMoveFlags(play, this, Player_Action_44, 0); Player_SetAction_PreserveMoveFlags(play, this, Player_Action_Talk, 0);
this->exchangeItemAction = PLAYER_IA_NONE; this->exchangeItemAction = PLAYER_IA_NONE;
this->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); this->stateFlags1 |= (PLAYER_STATE1_TALKING | PLAYER_STATE1_20000000);
if (this->actor.textId != 0) { if (this->actor.textId != 0) {
Message_StartTextbox(play, this->actor.textId, this->talkActor); Message_StartTextbox(play, this->actor.textId, this->talkActor);
} }
@ -7850,7 +7850,7 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
Player_StopCutscene(this); Player_StopCutscene(this);
this->itemAction = PLAYER_IA_NONE; this->itemAction = PLAYER_IA_NONE;
Player_SetAction_PreserveItemAction(play, this, Player_Action_71, 0); Player_SetAction_PreserveItemAction(play, this, Player_Action_ExchangeItem, 0);
talkActor = this->talkActor; talkActor = this->talkActor;
this->itemAction = heldItemTemp; this->itemAction = heldItemTemp;
this->csId = CS_ID_NONE; this->csId = CS_ID_NONE;
@ -7859,7 +7859,7 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
(this->itemAction == PLAYER_IA_MAGIC_BEANS)) || (this->itemAction == PLAYER_IA_MAGIC_BEANS)) ||
((this->exchangeItemAction != PLAYER_IA_MAGIC_BEANS) && ((this->exchangeItemAction != PLAYER_IA_MAGIC_BEANS) &&
(this->exchangeItemAction > PLAYER_IA_NONE)))) { (this->exchangeItemAction > PLAYER_IA_NONE)))) {
this->stateFlags1 |= (PLAYER_STATE1_20000000 | PLAYER_STATE1_40); this->stateFlags1 |= (PLAYER_STATE1_20000000 | PLAYER_STATE1_TALKING);
if (this->exchangeItemAction == PLAYER_IA_MAGIC_BEANS) { if (this->exchangeItemAction == PLAYER_IA_MAGIC_BEANS) {
Inventory_ChangeAmmo(ITEM_MAGIC_BEANS, -1); Inventory_ChangeAmmo(ITEM_MAGIC_BEANS, -1);
Player_SetAction_PreserveItemAction(play, this, Player_Action_17, 0); Player_SetAction_PreserveItemAction(play, this, Player_Action_17, 0);
@ -7883,7 +7883,7 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
this->actor.textId = 0; this->actor.textId = 0;
this->focusActor = this->talkActor; this->focusActor = this->talkActor;
} else { } else {
this->stateFlags1 |= (PLAYER_STATE1_20000000 | PLAYER_STATE1_10000000 | PLAYER_STATE1_40); this->stateFlags1 |= (PLAYER_STATE1_20000000 | PLAYER_STATE1_10000000 | PLAYER_STATE1_TALKING);
this->csId = play->playerCsIds[PLAYER_CS_ID_ITEM_SHOW]; this->csId = play->playerCsIds[PLAYER_CS_ID_ITEM_SHOW];
this->av1.actionVar1 = 1; this->av1.actionVar1 = 1;
this->actor.textId = 0xFE; this->actor.textId = 0xFE;
@ -7970,89 +7970,120 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
return false; return false;
} }
s32 Player_ActionHandler_4(Player* this, PlayState* play) { s32 Player_ActionHandler_Talk(Player* this, PlayState* play) {
if (gSaveContext.save.saveInfo.playerData.health != 0) { if (gSaveContext.save.saveInfo.playerData.health != 0) {
Actor* talkActor = this->talkActor; Actor* talkOfferActor = this->talkActor;
Actor* lockOnActor = this->focusActor; Actor* lockOnActor = this->focusActor;
Actor* var_a1 = NULL; Actor* cUpTalkActor = NULL;
s32 var_t1 = false; s32 forceTalkToTatl = false;
s32 var_t2 = false; s32 canTalkToLockOnWithCUp = false;
if (this->tatlActor != NULL) { if (this->tatlActor != NULL) {
var_t2 = (lockOnActor != NULL) && canTalkToLockOnWithCUp =
(CHECK_FLAG_ALL(lockOnActor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_TALK_WITH_C_UP) || (lockOnActor != NULL) &&
(lockOnActor->hintId != TATL_HINT_ID_NONE)); (CHECK_FLAG_ALL(lockOnActor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_TALK_WITH_C_UP) ||
(lockOnActor->hintId != TATL_HINT_ID_NONE));
if (var_t2 || (this->tatlTextId != 0)) { if (canTalkToLockOnWithCUp || (this->tatlTextId != 0)) {
//! @bug The comparison `((ABS_ALT(this->tatlTextId) & 0xFF00) != 0x10000)` always evaluates to `true` //! @bug The comparison `((ABS_ALT(this->tatlTextId) & 0xFF00) != 0x10000)` always evaluates to `true`
var_t1 = (this->tatlTextId < 0) && ((ABS_ALT(this->tatlTextId) & 0xFF00) != 0x10000); // Likely changed 0x200 -> 0x10000 to disable this check from OoT
forceTalkToTatl = (this->tatlTextId < 0) && ((ABS_ALT(this->tatlTextId) & 0xFF00) != 0x10000);
if (var_t1 || !var_t2) { if (forceTalkToTatl || !canTalkToLockOnWithCUp) {
var_a1 = this->tatlActor; // If `lockOnActor` can't be talked to with c-up, the only option left is Tatl
if (var_t1) { cUpTalkActor = this->tatlActor;
if (forceTalkToTatl) {
// Clearing these pointers guarantees that `cUpTalkActor` will take priority
lockOnActor = NULL; lockOnActor = NULL;
talkActor = NULL; talkOfferActor = NULL;
} }
} else { } else {
var_a1 = lockOnActor; // Tatl is not the talk actor, so the only option left for talking with c-up is `lockOnActor`
// (though, `lockOnActor` may be NULL at this point).
cUpTalkActor = lockOnActor;
} }
} }
} }
if ((talkActor != NULL) || (var_a1 != NULL)) { if ((talkOfferActor != NULL) || (cUpTalkActor != NULL)) {
if ((lockOnActor == NULL) || (lockOnActor == talkActor) || (lockOnActor == var_a1)) { if ((lockOnActor != NULL) && (lockOnActor != talkOfferActor) && (lockOnActor != cUpTalkActor)) {
if (!(this->stateFlags1 & PLAYER_STATE1_CARRYING_ACTOR) || goto dont_talk;
((this->heldActor != NULL) && }
(var_t1 || (talkActor == this->heldActor) || (var_a1 == this->heldActor) ||
((talkActor != NULL) && (talkActor->flags & ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED))))) {
if (((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) ||
(this->stateFlags1 & PLAYER_STATE1_800000) || func_801242B4(this))) {
if (talkActor != NULL) {
if ((lockOnActor == NULL) || (lockOnActor == talkActor)) {
this->stateFlags2 |= PLAYER_STATE2_2;
}
if (!CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) { if (this->stateFlags1 & PLAYER_STATE1_CARRYING_ACTOR) {
return false; if ((this->heldActor == NULL) ||
} (!forceTalkToTatl && (talkOfferActor != this->heldActor) && (cUpTalkActor != this->heldActor) &&
((talkOfferActor == NULL) || !(talkOfferActor->flags & ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED)))) {
if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A) || goto dont_talk;
(talkActor->flags & ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED)) {
var_a1 = NULL;
} else if (var_a1 == NULL) {
return false;
}
}
if (var_a1 != NULL) {
if (!var_t1) {
this->stateFlags2 |= PLAYER_STATE2_200000;
if (!CutsceneManager_IsNext(CS_ID_GLOBAL_TALK) ||
!CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_CUP)) {
return false;
}
}
talkActor = var_a1;
this->talkActor = NULL;
if (var_t1 || !var_t2) {
var_a1->textId = ABS_ALT(this->tatlTextId);
} else if (var_a1->hintId != 0xFF) {
var_a1->textId = var_a1->hintId + 0x1900;
}
}
this->currentMask = D_80862B2C;
gSaveContext.save.equippedMask = this->currentMask;
Player_TalkWithPlayer(play, talkActor);
return true;
}
} }
} }
// FAKE: used to maintain matching using goto's. Goto's not required, but improves readability.
if (1) {}
if (1) {}
if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {
if (!(this->stateFlags1 & PLAYER_STATE1_800000) && !func_801242B4(this)) {
goto dont_talk;
}
}
if (talkOfferActor != NULL) {
// At this point the talk offer can be accepted.
// "Speak" or "Check" will appear on the A button in the HUD.
if ((lockOnActor == NULL) || (lockOnActor == talkOfferActor)) {
this->stateFlags2 |= PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER;
}
if (!CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) {
return false;
}
if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A) ||
(talkOfferActor->flags & ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED)) {
// Talk Offer has been accepted.
// Clearing `cUpTalkActor` guarantees that `talkOfferActor` is the actor that will be spoken to
cUpTalkActor = NULL;
} else if (cUpTalkActor == NULL) {
return false;
}
}
if (cUpTalkActor != NULL) {
if (!forceTalkToTatl) {
this->stateFlags2 |= PLAYER_STATE2_200000;
if (!CutsceneManager_IsNext(CS_ID_GLOBAL_TALK) ||
!CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_CUP)) {
return false;
}
}
talkOfferActor = cUpTalkActor;
this->talkActor = NULL;
if (forceTalkToTatl || !canTalkToLockOnWithCUp) {
cUpTalkActor->textId = ABS_ALT(this->tatlTextId);
} else if (cUpTalkActor->hintId != 0xFF) {
cUpTalkActor->textId = cUpTalkActor->hintId + 0x1900;
}
}
// `sSavedCurrentMask` saves the current mask just before the current action runs on this frame.
// This saved mask value is then restored just before starting a conversation.
//
// This handles an edge case where a conversation is started on the same frame that a mask was taken on or
// off. Because Player updates early before most actors, the text ID being offered comes from the previous
// frame. If a mask was taken on or off the same frame this function runs, the wrong text will be used.
this->currentMask = sSavedCurrentMask;
gSaveContext.save.equippedMask = this->currentMask;
Player_StartTalking(play, talkOfferActor);
return true;
} }
} }
dont_talk:
return false; return false;
} }
@ -8262,7 +8293,7 @@ void func_80839E74(Player* this, PlayState* play) {
void func_80839ED0(Player* this, PlayState* play) { void func_80839ED0(Player* this, PlayState* play) {
if (!(this->stateFlags3 & PLAYER_STATE3_80) && (Player_Action_64 != this->actionFunc) && !func_8083213C(this)) { if (!(this->stateFlags3 & PLAYER_STATE3_80) && (Player_Action_64 != this->actionFunc) && !func_8083213C(this)) {
func_80836D8C(this); func_80836D8C(this);
if (!(this->stateFlags1 & PLAYER_STATE1_40)) { if (!(this->stateFlags1 & PLAYER_STATE1_TALKING)) {
if (func_801242B4(this)) { if (func_801242B4(this)) {
func_808353DC(play, this); func_808353DC(play, this);
} else { } else {
@ -9255,7 +9286,7 @@ s32 Player_ActionHandler_3(Player* this, PlayState* play) {
if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A)) { if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A)) {
if (CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) { if (CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) {
rideActor->actor.textId = D_8085D254[this->transformation - 1]; rideActor->actor.textId = D_8085D254[this->transformation - 1];
Player_TalkWithPlayer(play, &rideActor->actor); Player_StartTalking(play, &rideActor->actor);
return true; return true;
} }
} }
@ -9265,7 +9296,7 @@ s32 Player_ActionHandler_3(Player* this, PlayState* play) {
if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A)) { if (CHECK_BTN_ALL(sPlayerControlInput->press.button, BTN_A)) {
if (CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) { if (CutsceneManager_IsNext(CS_ID_GLOBAL_TALK)) {
rideActor->actor.textId = D_8085D25C[this->transformation]; rideActor->actor.textId = D_8085D25C[this->transformation];
Player_TalkWithPlayer(play, &rideActor->actor); Player_StartTalking(play, &rideActor->actor);
return true; return true;
} }
} }
@ -10363,7 +10394,7 @@ s32 func_8083FD80(Player* this, PlayState* play) {
} }
bool func_8083FE38(Player* this, PlayState* play) { bool func_8083FE38(Player* this, PlayState* play) {
return Player_ActionHandler_13(this, play) || Player_ActionHandler_4(this, play) || return Player_ActionHandler_13(this, play) || Player_ActionHandler_Talk(this, play) ||
Player_ActionHandler_2(this, play); Player_ActionHandler_2(this, play);
} }
@ -11039,7 +11070,7 @@ void Player_Init(Actor* thisx, PlayState* play) {
play->tryPlayerCsAction = Player_TryCsAction; play->tryPlayerCsAction = Player_TryCsAction;
play->func_18780 = func_8085B384; play->func_18780 = func_8085B384;
play->damagePlayer = Player_InflictDamage; play->damagePlayer = Player_InflictDamage;
play->talkWithPlayer = Player_TalkWithPlayer; play->talkWithPlayer = Player_StartTalking;
play->unk_1878C = func_8085B74C; play->unk_1878C = func_8085B74C;
play->unk_18790 = func_8085B820; play->unk_18790 = func_8085B820;
play->unk_18794 = func_8085B854; play->unk_18794 = func_8085B854;
@ -11331,9 +11362,11 @@ void func_808425B4(Player* this) {
} }
/** /**
* Sets the DoAction for the interface A/B buttons, depending on a significant number of things * Updates the two main interface elements that player is responsible for:
* - Do Action label on the A/B buttons
* - Tatl C-up icon for hints
*/ */
void Player_SetDoAction(PlayState* play, Player* this) { void Player_UpdateInterface(PlayState* play, Player* this) {
DoAction doActionB; DoAction doActionB;
s32 sp38; s32 sp38;
@ -11425,7 +11458,7 @@ void Player_SetDoAction(PlayState* play, Player* this) {
doActionA = DO_ACTION_CLIMB; doActionA = DO_ACTION_CLIMB;
} else if ((this->stateFlags1 & PLAYER_STATE1_800000) && } else if ((this->stateFlags1 & PLAYER_STATE1_800000) &&
(!EN_HORSE_CHECK_4((EnHorse*)this->rideActor) && (Player_Action_53 != this->actionFunc))) { (!EN_HORSE_CHECK_4((EnHorse*)this->rideActor) && (Player_Action_53 != this->actionFunc))) {
if ((this->stateFlags2 & PLAYER_STATE2_2) && (this->talkActor != NULL)) { if ((this->stateFlags2 & PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER) && (this->talkActor != NULL)) {
if ((this->talkActor->category == ACTORCAT_NPC) || (this->talkActor->id == ACTOR_DM_CHAR08)) { if ((this->talkActor->category == ACTORCAT_NPC) || (this->talkActor->id == ACTOR_DM_CHAR08)) {
doActionA = DO_ACTION_SPEAK; doActionA = DO_ACTION_SPEAK;
} else { } else {
@ -11436,7 +11469,7 @@ void Player_SetDoAction(PlayState* play, Player* this) {
} else { } else {
doActionA = DO_ACTION_NONE; doActionA = DO_ACTION_NONE;
} }
} else if ((this->stateFlags2 & PLAYER_STATE2_2) && (this->talkActor != NULL)) { } else if ((this->stateFlags2 & PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER) && (this->talkActor != NULL)) {
if ((this->talkActor->category == ACTORCAT_NPC) || (this->talkActor->category == ACTORCAT_ENEMY) || if ((this->talkActor->category == ACTORCAT_NPC) || (this->talkActor->category == ACTORCAT_ENEMY) ||
(this->talkActor->id == ACTOR_DM_CHAR08)) { (this->talkActor->id == ACTOR_DM_CHAR08)) {
doActionA = DO_ACTION_SPEAK; doActionA = DO_ACTION_SPEAK;
@ -12342,8 +12375,8 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
this->unk_D57--; this->unk_D57--;
} }
if (this->unk_B5E != 0) { if (this->textboxBtnCooldownTimer != 0) {
this->unk_B5E--; this->textboxBtnCooldownTimer--;
} }
if (this->unk_D6B != 0) { if (this->unk_D6B != 0) {
@ -12586,7 +12619,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
if (((this->focusActor == NULL) || (this->focusActor == this->talkActor) || if (((this->focusActor == NULL) || (this->focusActor == this->talkActor) ||
(this->focusActor->hintId == TATL_HINT_ID_NONE)) && (this->focusActor->hintId == TATL_HINT_ID_NONE)) &&
(this->tatlTextId == 0)) { (this->tatlTextId == 0)) {
this->stateFlags2 &= ~(PLAYER_STATE2_2 | PLAYER_STATE2_200000); this->stateFlags2 &= ~(PLAYER_STATE2_CAN_ACCEPT_TALK_OFFER | PLAYER_STATE2_200000);
} }
this->stateFlags1 &= ~(PLAYER_STATE1_10 | PLAYER_STATE1_1000 | PLAYER_STATE1_400000); this->stateFlags1 &= ~(PLAYER_STATE1_10 | PLAYER_STATE1_1000 | PLAYER_STATE1_400000);
@ -12606,13 +12639,13 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
sPlayerUseHeldItem = sPlayerHeldItemButtonIsHeldDown = false; sPlayerUseHeldItem = sPlayerHeldItemButtonIsHeldDown = false;
var_v1 = Play_InCsMode(play); var_v1 = Play_InCsMode(play);
D_80862B2C = this->currentMask; sSavedCurrentMask = this->currentMask;
if (!(this->stateFlags3 & PLAYER_STATE3_4)) { if (!(this->stateFlags3 & PLAYER_STATE3_4)) {
this->actionFunc(this, play); this->actionFunc(this, play);
} }
if (!var_v1) { if (!var_v1) {
Player_SetDoAction(play, this); Player_UpdateInterface(play, this);
} }
Player_UpdateCamAndSeqModes(play, this); Player_UpdateCamAndSeqModes(play, this);
@ -12822,7 +12855,9 @@ void Player_Update(Actor* thisx, PlayState* play) {
this->fallStartHeight = this->actor.world.pos.y; this->fallStartHeight = this->actor.world.pos.y;
} else { } else {
input = *CONTROLLER1(&play->state); input = *CONTROLLER1(&play->state);
if (this->unk_B5E != 0) { if (this->textboxBtnCooldownTimer != 0) {
// Prevent the usage of A/B/C-up.
// Helps avoid accidental inputs when mashing to close the final textbox.
input.cur.button &= ~(BTN_CUP | BTN_B | BTN_A); input.cur.button &= ~(BTN_CUP | BTN_B | BTN_A);
input.press.button &= ~(BTN_CUP | BTN_B | BTN_A); input.press.button &= ~(BTN_CUP | BTN_B | BTN_A);
} }
@ -13538,7 +13573,7 @@ void func_80848250(PlayState* play, Player* this) {
this->getItemDrawIdPlusOne = GID_NONE + 1; this->getItemDrawIdPlusOne = GID_NONE + 1;
this->stateFlags1 &= ~(PLAYER_STATE1_400 | PLAYER_STATE1_CARRYING_ACTOR); this->stateFlags1 &= ~(PLAYER_STATE1_400 | PLAYER_STATE1_CARRYING_ACTOR);
this->getItemId = GI_NONE; this->getItemId = GI_NONE;
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
} }
void func_80848294(PlayState* play, Player* this) { void func_80848294(PlayState* play, Player* this) {
@ -14786,7 +14821,7 @@ void Player_Action_17(Player* this, PlayState* play) {
func_80836A98(this, D_8085BE84[PLAYER_ANIMGROUP_check_end][this->modelAnimType], play); func_80836A98(this, D_8085BE84[PLAYER_ANIMGROUP_check_end][this->modelAnimType], play);
} }
this->actor.flags &= ~ACTOR_FLAG_TALK; this->actor.flags &= ~ACTOR_FLAG_TALK;
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
} }
} }
@ -15731,7 +15766,7 @@ void Player_Action_35(Player* this, PlayState* play) {
} }
R_PLAY_FILL_SCREEN_ON = 0; R_PLAY_FILL_SCREEN_ON = 0;
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
Player_StopCutscene(this); Player_StopCutscene(this);
if (!(this->stateFlags3 & PLAYER_STATE3_20000)) { if (!(this->stateFlags3 & PLAYER_STATE3_20000)) {
func_801226E0(play, ((void)0, gSaveContext.respawn[RESPAWN_MODE_DOWN].data)); func_801226E0(play, ((void)0, gSaveContext.respawn[RESPAWN_MODE_DOWN].data));
@ -15743,7 +15778,7 @@ void Player_Action_35(Player* this, PlayState* play) {
if (play->sceneId == SCENE_20SICHITAI) { if (play->sceneId == SCENE_20SICHITAI) {
play->bButtonAmmoPlusOne = 0; play->bButtonAmmoPlusOne = 0;
} }
} else if (!Player_ActionHandler_4(this, play)) { } else if (!Player_ActionHandler_Talk(this, play)) {
func_8083B2E4(this, play); func_8083B2E4(this, play);
} }
} }
@ -15787,7 +15822,7 @@ void Player_Action_36(Player* this, PlayState* play) {
Room_FinishRoomChange(play, &play->roomCtx); Room_FinishRoomChange(play, &play->roomCtx);
} }
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
Play_SetupRespawnPoint(play, RESPAWN_MODE_DOWN, PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B)); Play_SetupRespawnPoint(play, RESPAWN_MODE_DOWN, PLAYER_PARAMS(0xFF, PLAYER_INITMODE_B));
} }
} }
@ -15944,7 +15979,7 @@ void Player_Action_43(Player* this, PlayState* play) {
((this->unk_AA5 == PLAYER_UNKAA5_1) && ((this->unk_AA5 == PLAYER_UNKAA5_1) &&
CHECK_BTN_ANY(sPlayerControlInput->press.button, CHECK_BTN_ANY(sPlayerControlInput->press.button,
BTN_CRIGHT | BTN_CLEFT | BTN_CDOWN | BTN_CUP | BTN_R | BTN_B | BTN_A))) || BTN_CRIGHT | BTN_CLEFT | BTN_CDOWN | BTN_CUP | BTN_R | BTN_B | BTN_A))) ||
Player_ActionHandler_4(this, play)))) { Player_ActionHandler_Talk(this, play)))) {
func_80839ED0(this, play); func_80839ED0(this, play);
Audio_PlaySfx(NA_SE_SY_CAMERA_ZOOM_UP); Audio_PlaySfx(NA_SE_SY_CAMERA_ZOOM_UP);
} else if ((DECR(this->av2.actionVar2) == 0) || (this->unk_AA5 != PLAYER_UNKAA5_3)) { } else if ((DECR(this->av2.actionVar2) == 0) || (this->unk_AA5 != PLAYER_UNKAA5_3)) {
@ -15958,19 +15993,21 @@ void Player_Action_43(Player* this, PlayState* play) {
this->yaw = this->actor.shape.rot.y; this->yaw = this->actor.shape.rot.y;
} }
void Player_Action_44(Player* this, PlayState* play) { void Player_Action_Talk(Player* this, PlayState* play) {
this->stateFlags2 |= PLAYER_STATE2_20; this->stateFlags2 |= PLAYER_STATE2_20;
func_8083249C(this); func_8083249C(this);
Player_UpdateUpperBody(this, play); Player_UpdateUpperBody(this, play);
if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) {
this->actor.flags &= ~ACTOR_FLAG_TALK; this->actor.flags &= ~ACTOR_FLAG_TALK;
if (!CHECK_FLAG_ALL(this->talkActor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE)) { if (!CHECK_FLAG_ALL(this->talkActor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE)) {
this->stateFlags2 &= ~PLAYER_STATE2_LOCK_ON_WITH_SWITCH; this->stateFlags2 &= ~PLAYER_STATE2_LOCK_ON_WITH_SWITCH;
} }
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
CutsceneManager_Stop(CS_ID_GLOBAL_TALK); CutsceneManager_Stop(CS_ID_GLOBAL_TALK);
if (this->stateFlags1 & PLAYER_STATE1_800000) { if (this->stateFlags1 & PLAYER_STATE1_800000) {
s32 sp44 = this->av2.actionVar2; s32 sp44 = this->av2.actionVar2;
@ -15985,7 +16022,7 @@ void Player_Action_44(Player* this, PlayState* play) {
} }
} }
this->unk_B5E = 0xA; this->textboxBtnCooldownTimer = 10;
return; return;
} }
@ -16555,7 +16592,7 @@ void Player_Action_52(Player* this, PlayState* play) {
} }
if (this->av2.actionVar2 == 1) { if (this->av2.actionVar2 == 1) {
if (sUpperBodyIsBusy || func_8082DAFC(play)) { if (sUpperBodyIsBusy || Player_IsTalking(play)) {
Player_Anim_PlayOnce(play, this, &gPlayerAnim_link_uma_wait_3); Player_Anim_PlayOnce(play, this, &gPlayerAnim_link_uma_wait_3);
} else if (PlayerAnimation_Update(play, &this->skelAnime)) { } else if (PlayerAnimation_Update(play, &this->skelAnime)) {
this->av2.actionVar2 = 0x63; this->av2.actionVar2 = 0x63;
@ -16635,7 +16672,8 @@ void Player_Action_52(Player* this, PlayState* play) {
func_8084FD7C(play, this, &rideActor->actor); func_8084FD7C(play, this, &rideActor->actor);
} }
} else if ((this->csAction != PLAYER_CSACTION_NONE) || } else if ((this->csAction != PLAYER_CSACTION_NONE) ||
(!func_8082DAFC(play) && ((rideActor->actor.speed != 0.0f) || !Player_ActionHandler_4(this, play)) && (!Player_IsTalking(play) &&
((rideActor->actor.speed != 0.0f) || !Player_ActionHandler_Talk(this, play)) &&
!func_80847BF0(this, play) && !Player_ActionHandler_13(this, play))) { !func_80847BF0(this, play) && !Player_ActionHandler_13(this, play))) {
if (this->focusActor != NULL) { if (this->focusActor != NULL) {
if (func_800B7128(this)) { if (func_800B7128(this)) {
@ -16749,7 +16787,7 @@ void Player_Action_54(Player* this, PlayState* play) {
this->av2.actionVar2 = 0; this->av2.actionVar2 = 0;
} }
if (!func_8082DAFC(play) && !Player_TryActionHandlerList(play, this, sActionHandlerList11, true) && if (!Player_IsTalking(play) && !Player_TryActionHandlerList(play, this, sActionHandlerList11, true) &&
!func_8083B3B4(play, this, sPlayerControlInput) && !func_8083B3B4(play, this, sPlayerControlInput) &&
((this->av2.actionVar2 != 0) || !func_80850734(play, this))) { ((this->av2.actionVar2 != 0) || !func_80850734(play, this))) {
speedTarget = 0.0f; speedTarget = 0.0f;
@ -17339,11 +17377,11 @@ void Player_Action_63(Player* this, PlayState* play) {
this->actor.flags &= ~ACTOR_FLAG_20000000; this->actor.flags &= ~ACTOR_FLAG_20000000;
if ((this->talkActor != NULL) && (this->talkActor == this->unk_A90) && (this->unk_A94 >= 0.0f)) { if ((this->talkActor != NULL) && (this->talkActor == this->unk_A90) && (this->unk_A94 >= 0.0f)) {
Player_TalkWithPlayer(play, this->talkActor); Player_StartTalking(play, this->talkActor);
} else if (this->tatlTextId < 0) { } else if (this->tatlTextId < 0) {
this->talkActor = this->tatlActor; this->talkActor = this->tatlActor;
this->tatlActor->textId = -this->tatlTextId; this->tatlActor->textId = -this->tatlTextId;
Player_TalkWithPlayer(play, this->talkActor); Player_StartTalking(play, this->talkActor);
} else if (!Player_ActionHandler_13(this, play)) { } else if (!Player_ActionHandler_13(this, play)) {
func_80836A5C(this, play); func_80836A5C(this, play);
Player_Anim_PlayOnceAdjustedReverse(play, this, D_8085D17C[this->transformation]); Player_Anim_PlayOnceAdjustedReverse(play, this, D_8085D17C[this->transformation]);
@ -17478,7 +17516,7 @@ void Player_Action_65(Player* this, PlayState* play) {
func_80848250(play, this); func_80848250(play, this);
this->exchangeItemAction = PLAYER_IA_NONE; this->exchangeItemAction = PLAYER_IA_NONE;
if (!func_80847994(play, this)) { if (!func_80847994(play, this)) {
Player_TalkWithPlayer(play, this->talkActor); Player_StartTalking(play, this->talkActor);
} }
} else { } else {
func_80848294(play, this); func_80848294(play, this);
@ -17714,11 +17752,11 @@ void Player_Action_68(Player* this, PlayState* play) {
this->av1.actionVar1 = 0; this->av1.actionVar1 = 0;
Player_StopCutscene(this); Player_StopCutscene(this);
func_800E0238(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
talkActor = this->talkActor; talkActor = this->talkActor;
if ((talkActor != NULL) && (this->exchangeItemAction <= PLAYER_IA_MINUS1)) { if ((talkActor != NULL) && (this->exchangeItemAction <= PLAYER_IA_MINUS1)) {
Player_TalkWithPlayer(play, talkActor); Player_StartTalking(play, talkActor);
} }
} }
} else { } else {
@ -17865,7 +17903,7 @@ AnimSfxEntry D_8085D840[] = {
ANIMSFX(ANIMSFX_TYPE_GENERAL, 30, NA_SE_PL_PUT_OUT_ITEM, STOP), ANIMSFX(ANIMSFX_TYPE_GENERAL, 30, NA_SE_PL_PUT_OUT_ITEM, STOP),
}; };
void Player_Action_71(Player* this, PlayState* play) { void Player_Action_ExchangeItem(Player* this, PlayState* play) {
this->stateFlags2 |= PLAYER_STATE2_20; this->stateFlags2 |= PLAYER_STATE2_20;
this->stateFlags3 |= PLAYER_STATE3_4000000; this->stateFlags3 |= PLAYER_STATE3_4000000;
@ -17881,7 +17919,7 @@ void Player_Action_71(Player* this, PlayState* play) {
if ((talkActor->textId != 0) && (talkActor->textId != 0xFFFF)) { if ((talkActor->textId != 0) && (talkActor->textId != 0xFFFF)) {
this->actor.flags |= ACTOR_FLAG_TALK; this->actor.flags |= ACTOR_FLAG_TALK;
} }
Player_TalkWithPlayer(play, talkActor); Player_StartTalking(play, talkActor);
} else { } else {
GetItemEntry* giEntry = &sGetItemTable[D_8085D1A4[this->exchangeItemAction] - 1]; GetItemEntry* giEntry = &sGetItemTable[D_8085D1A4[this->exchangeItemAction] - 1];
@ -17900,7 +17938,7 @@ void Player_Action_71(Player* this, PlayState* play) {
this->getItemDrawIdPlusOne = GID_NONE + 1; this->getItemDrawIdPlusOne = GID_NONE + 1;
this->actor.flags &= ~ACTOR_FLAG_TALK; this->actor.flags &= ~ACTOR_FLAG_TALK;
func_80839E74(this, play); func_80839E74(this, play);
this->unk_B5E = 0xA; this->textboxBtnCooldownTimer = 10;
} }
} }
} else if (this->av2.actionVar2 >= 0) { } else if (this->av2.actionVar2 >= 0) {
@ -20767,7 +20805,7 @@ void Player_CsAction_End(PlayState* play, Player* this, CsCmdActorCue* cue) {
func_8082DC64(play, this); func_8082DC64(play, this);
} else { } else {
func_80839ED0(this, play); func_80839ED0(this, play);
if (!Player_ActionHandler_4(this, play)) { if (!Player_ActionHandler_Talk(this, play)) {
Player_ActionHandler_2(this, play); Player_ActionHandler_2(this, play);
} }
} }
@ -20996,72 +21034,77 @@ s32 Player_InflictDamage(PlayState* play, s32 damage) {
return false; return false;
} }
// Start talking with the given actor /**
void Player_TalkWithPlayer(PlayState* play, Actor* actor) { * Start talking to the specified actor.
*/
void Player_StartTalking(PlayState* play, Actor* actor) {
s32 pad; s32 pad;
Player* player = GET_PLAYER(play); Player* this = GET_PLAYER(play);
func_808323C0(player, CS_ID_GLOBAL_TALK); func_808323C0(this, CS_ID_GLOBAL_TALK);
if ((player->talkActor != NULL) || (actor == player->tatlActor) ||
if ((this->talkActor != NULL) || (actor == this->tatlActor) ||
CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_TALK_WITH_C_UP)) { CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_TALK_WITH_C_UP)) {
actor->flags |= ACTOR_FLAG_TALK; actor->flags |= ACTOR_FLAG_TALK;
} }
player->talkActor = actor; this->talkActor = actor;
player->exchangeItemAction = PLAYER_IA_NONE; this->exchangeItemAction = PLAYER_IA_NONE;
player->focusActor = actor; this->focusActor = actor;
if (actor->textId == 0xFFFF) { if (actor->textId == 0xFFFF) {
// Player will stand and look at the actor with no text appearing.
// This can be used to delay text from appearing, for example.
Player_SetCsActionWithHaltedActors(play, actor, PLAYER_CSACTION_1); Player_SetCsActionWithHaltedActors(play, actor, PLAYER_CSACTION_1);
actor->flags |= ACTOR_FLAG_TALK; actor->flags |= ACTOR_FLAG_TALK;
Player_PutAwayHeldItem(play, player); Player_PutAwayHeldItem(play, this);
} else { } else {
if (player->actor.flags & ACTOR_FLAG_TALK) { if (this->actor.flags & ACTOR_FLAG_TALK) {
player->actor.textId = 0; this->actor.textId = 0;
} else { } else {
player->actor.flags |= ACTOR_FLAG_TALK; this->actor.flags |= ACTOR_FLAG_TALK;
player->actor.textId = actor->textId; this->actor.textId = actor->textId;
} }
if (player->stateFlags1 & PLAYER_STATE1_800000) { if (this->stateFlags1 & PLAYER_STATE1_800000) {
s32 sp24 = player->av2.actionVar2; s32 sp24 = this->av2.actionVar2;
Player_PutAwayHeldItem(play, player); Player_PutAwayHeldItem(play, this);
func_80837B60(play, player); Player_SetupTalk(play, this);
player->av2.actionVar2 = sp24; this->av2.actionVar2 = sp24;
} else { } else {
if (func_801242B4(player)) { if (func_801242B4(this)) {
Player_SetupWaitForPutAway(play, player, func_80837B60); Player_SetupWaitForPutAway(play, this, Player_SetupTalk);
Player_Anim_PlayLoopSlowMorph(play, player, &gPlayerAnim_link_swimer_swim_wait); Player_Anim_PlayLoopSlowMorph(play, this, &gPlayerAnim_link_swimer_swim_wait);
} else if ((actor->category != ACTORCAT_NPC) || (player->heldItemAction == PLAYER_IA_FISHING_ROD)) { } else if ((actor->category != ACTORCAT_NPC) || (this->heldItemAction == PLAYER_IA_FISHING_ROD)) {
func_80837B60(play, player); Player_SetupTalk(play, this);
if (!Player_CheckHostileLockOn(player)) { if (!Player_CheckHostileLockOn(this)) {
if ((actor != player->tatlActor) && (actor->xzDistToPlayer < (actor->colChkInfo.cylRadius + 40))) { if ((actor != this->tatlActor) && (actor->xzDistToPlayer < (actor->colChkInfo.cylRadius + 40))) {
Player_Anim_PlayOnceAdjusted(play, player, &gPlayerAnim_link_normal_backspace); Player_Anim_PlayOnceAdjusted(play, this, &gPlayerAnim_link_normal_backspace);
} else { } else {
Player_Anim_PlayLoop(play, player, Player_GetIdleAnim(player)); Player_Anim_PlayLoop(play, this, Player_GetIdleAnim(this));
} }
} }
} else { } else {
Player_SetupWaitForPutAway(play, player, func_80837B60); Player_SetupWaitForPutAway(play, this, Player_SetupTalk);
Player_Anim_PlayOnceAdjusted(play, player, Player_Anim_PlayOnceAdjusted(play, this,
(actor->xzDistToPlayer < (actor->colChkInfo.cylRadius + 40)) (actor->xzDistToPlayer < (actor->colChkInfo.cylRadius + 40))
? &gPlayerAnim_link_normal_backspace ? &gPlayerAnim_link_normal_backspace
: &gPlayerAnim_link_normal_talk_free); : &gPlayerAnim_link_normal_talk_free);
} }
if (player->skelAnime.animation == &gPlayerAnim_link_normal_backspace) { if (this->skelAnime.animation == &gPlayerAnim_link_normal_backspace) {
Player_AnimReplace_Setup(play, player, ANIM_FLAG_1 | ANIM_FLAG_8 | ANIM_FLAG_NOMOVE); Player_AnimReplace_Setup(play, this, ANIM_FLAG_1 | ANIM_FLAG_8 | ANIM_FLAG_NOMOVE);
} }
func_8082DAD4(player); func_8082DAD4(this);
} }
player->stateFlags1 |= PLAYER_STATE1_40 | PLAYER_STATE1_20000000; this->stateFlags1 |= PLAYER_STATE1_TALKING | PLAYER_STATE1_20000000;
} }
if ((player->tatlActor == player->talkActor) && ((player->talkActor->textId & 0xFF00) != 0x200)) { if ((this->tatlActor == this->talkActor) && ((this->talkActor->textId & 0xFF00) != 0x200)) {
player->tatlActor->flags |= ACTOR_FLAG_TALK; this->tatlActor->flags |= ACTOR_FLAG_TALK;
} }
} }
@ -21110,11 +21153,11 @@ PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId) {
this->itemAction = PLAYER_IA_NONE; this->itemAction = PLAYER_IA_NONE;
this->actionFunc = NULL; this->actionFunc = NULL;
Player_SetAction_PreserveItemAction(play, this, Player_Action_71, 0); Player_SetAction_PreserveItemAction(play, this, Player_Action_ExchangeItem, 0);
this->csId = CS_ID_GLOBAL_TALK; this->csId = CS_ID_GLOBAL_TALK;
this->itemAction = itemAction; this->itemAction = itemAction;
Player_Anim_PlayOnce(play, this, &gPlayerAnim_link_normal_give_other); Player_Anim_PlayOnce(play, this, &gPlayerAnim_link_normal_give_other);
this->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); this->stateFlags1 |= (PLAYER_STATE1_TALKING | PLAYER_STATE1_20000000);
this->getItemDrawIdPlusOne = GID_NONE + 1; this->getItemDrawIdPlusOne = GID_NONE + 1;
this->exchangeItemAction = itemAction; this->exchangeItemAction = itemAction;

View File

@ -1293,7 +1293,7 @@
0x800E01B8:("Camera_GetQuakeOffset",), 0x800E01B8:("Camera_GetQuakeOffset",),
0x800E01DC:("Camera_SetCameraData",), 0x800E01DC:("Camera_SetCameraData",),
0x800E0228:("Camera_GetNegOne",), 0x800E0228:("Camera_GetNegOne",),
0x800E0238:("func_800E0238",), 0x800E0238:("Camera_SetFinishedFlag",),
0x800E02AC:("Camera_SetFocalActor",), 0x800E02AC:("Camera_SetFocalActor",),
0x800E0308:("Camera_SetTargetActor",), 0x800E0308:("Camera_SetTargetActor",),
0x800E031C:("Camera_GetWaterYPos",), 0x800E031C:("Camera_GetWaterYPos",),
@ -4247,7 +4247,7 @@
0x8082DA90:("func_8082DA90",), 0x8082DA90:("func_8082DA90",),
0x8082DABC:("Player_StopHorizontalMovement",), 0x8082DABC:("Player_StopHorizontalMovement",),
0x8082DAD4:("func_8082DAD4",), 0x8082DAD4:("func_8082DAD4",),
0x8082DAFC:("func_8082DAFC",), 0x8082DAFC:("Player_IsTalking",),
0x8082DB18:("Player_Anim_PlayOnce",), 0x8082DB18:("Player_Anim_PlayOnce",),
0x8082DB3C:("Player_Anim_PlayLoop",), 0x8082DB3C:("Player_Anim_PlayLoop",),
0x8082DB60:("Player_Anim_PlayLoopAdjusted",), 0x8082DB60:("Player_Anim_PlayLoopAdjusted",),
@ -4453,7 +4453,7 @@
0x808378FC:("func_808378FC",), 0x808378FC:("func_808378FC",),
0x8083798C:("func_8083798C",), 0x8083798C:("func_8083798C",),
0x808379C0:("func_808379C0",), 0x808379C0:("func_808379C0",),
0x80837B60:("func_80837B60",), 0x80837B60:("Player_SetupTalk",),
0x80837BD0:("func_80837BD0",), 0x80837BD0:("func_80837BD0",),
0x80837BF8:("func_80837BF8",), 0x80837BF8:("func_80837BF8",),
0x80837C20:("func_80837C20",), 0x80837C20:("func_80837C20",),
@ -4471,7 +4471,7 @@
0x808389BC:("func_808389BC",), 0x808389BC:("func_808389BC",),
0x80838A20:("func_80838A20",), 0x80838A20:("func_80838A20",),
0x80838A90:("Player_ActionHandler_13",), 0x80838A90:("Player_ActionHandler_13",),
0x808391D8:("Player_ActionHandler_4",), 0x808391D8:("Player_ActionHandler_Talk",),
0x80839518:("Player_ActionHandler_0",), 0x80839518:("Player_ActionHandler_0",),
0x808395F0:("func_808395F0",), 0x808395F0:("func_808395F0",),
0x808396B8:("func_808396B8",), 0x808396B8:("func_808396B8",),
@ -4605,7 +4605,7 @@
0x80841AC4:("Player_Init",), 0x80841AC4:("Player_Init",),
0x80842510:("Player_ApproachZeroBinang",), 0x80842510:("Player_ApproachZeroBinang",),
0x808425B4:("func_808425B4",), 0x808425B4:("func_808425B4",),
0x808426F0:("Player_SetDoAction",), 0x808426F0:("Player_UpdateInterface",),
0x808430E0:("func_808430E0",), 0x808430E0:("func_808430E0",),
0x80843178:("Player_ProcessSceneCollision",), 0x80843178:("Player_ProcessSceneCollision",),
0x80843EC0:("Player_UpdateCamAndSeqModes",), 0x80843EC0:("Player_UpdateCamAndSeqModes",),
@ -4706,7 +4706,7 @@
0x8084E58C:("Player_Action_41",), 0x8084E58C:("Player_Action_41",),
0x8084E65C:("Player_Action_42",), 0x8084E65C:("Player_Action_42",),
0x8084E724:("Player_Action_43",), 0x8084E724:("Player_Action_43",),
0x8084E980:("Player_Action_44",), 0x8084E980:("Player_Action_Talk",),
0x8084ED9C:("Player_Action_45",), 0x8084ED9C:("Player_Action_45",),
0x8084EE50:("Player_Action_46",), 0x8084EE50:("Player_Action_46",),
0x8084EF9C:("Player_Action_47",), 0x8084EF9C:("Player_Action_47",),
@ -4750,7 +4750,7 @@
0x808534C0:("Player_Action_68",), 0x808534C0:("Player_Action_68",),
0x80853754:("Player_Action_69",), 0x80853754:("Player_Action_69",),
0x80853850:("Player_Action_70",), 0x80853850:("Player_Action_70",),
0x80853A5C:("Player_Action_71",), 0x80853A5C:("Player_Action_ExchangeItem",),
0x80853CC0:("Player_Action_72",), 0x80853CC0:("Player_Action_72",),
0x80853D68:("Player_Action_73",), 0x80853D68:("Player_Action_73",),
0x80854010:("Player_Action_74",), 0x80854010:("Player_Action_74",),
@ -4881,7 +4881,7 @@
0x8085B28C:("Player_TryCsAction",), 0x8085B28C:("Player_TryCsAction",),
0x8085B384:("func_8085B384",), 0x8085B384:("func_8085B384",),
0x8085B3E0:("Player_InflictDamage",), 0x8085B3E0:("Player_InflictDamage",),
0x8085B460:("Player_TalkWithPlayer",), 0x8085B460:("Player_StartTalking",),
0x8085B74C:("func_8085B74C",), 0x8085B74C:("func_8085B74C",),
0x8085B820:("func_8085B820",), 0x8085B820:("func_8085B820",),
0x8085B854:("func_8085B854",), 0x8085B854:("func_8085B854",),

View File

@ -5254,7 +5254,7 @@
0x80862B20:("sPlayerShapeYawToTouchedWall","UNK_TYPE1","",0x1), 0x80862B20:("sPlayerShapeYawToTouchedWall","UNK_TYPE1","",0x1),
0x80862B24:("sPlayerWorldYawToTouchedWall","UNK_TYPE1","",0x1), 0x80862B24:("sPlayerWorldYawToTouchedWall","UNK_TYPE1","",0x1),
0x80862B28:("sPlayerFloorPitchShape","UNK_TYPE1","",0x1), 0x80862B28:("sPlayerFloorPitchShape","UNK_TYPE1","",0x1),
0x80862B2C:("D_80862B2C","UNK_TYPE1","",0x1), 0x80862B2C:("sSavedCurrentMask","UNK_TYPE1","",0x1),
0x80862B30:("sPlayerInteractWallCheckResult","UNK_TYPE1","",0x1), 0x80862B30:("sPlayerInteractWallCheckResult","UNK_TYPE1","",0x1),
0x80862B3C:("D_80862B3C","f32","",0x4), 0x80862B3C:("D_80862B3C","f32","",0x4),
0x80862B40:("sPlayerFloorEffect","UNK_TYPE1","",0x1), 0x80862B40:("sPlayerFloorEffect","UNK_TYPE1","",0x1),

View File

@ -807,7 +807,7 @@ asm/non_matchings/code/z_camera/Camera_IsDbgCamEnabled.s,Camera_IsDbgCamEnabled,
asm/non_matchings/code/z_camera/Camera_GetQuakeOffset.s,Camera_GetQuakeOffset,0x800E01B8,0x9 asm/non_matchings/code/z_camera/Camera_GetQuakeOffset.s,Camera_GetQuakeOffset,0x800E01B8,0x9
asm/non_matchings/code/z_camera/Camera_SetCameraData.s,Camera_SetCameraData,0x800E01DC,0x13 asm/non_matchings/code/z_camera/Camera_SetCameraData.s,Camera_SetCameraData,0x800E01DC,0x13
asm/non_matchings/code/z_camera/Camera_GetNegOne.s,Camera_GetNegOne,0x800E0228,0x4 asm/non_matchings/code/z_camera/Camera_GetNegOne.s,Camera_GetNegOne,0x800E0228,0x4
asm/non_matchings/code/z_camera/func_800E0238.s,func_800E0238,0x800E0238,0x1D asm/non_matchings/code/z_camera/Camera_SetFinishedFlag.s,Camera_SetFinishedFlag,0x800E0238,0x1D
asm/non_matchings/code/z_camera/Camera_SetFocalActor.s,Camera_SetFocalActor,0x800E02AC,0x17 asm/non_matchings/code/z_camera/Camera_SetFocalActor.s,Camera_SetFocalActor,0x800E02AC,0x17
asm/non_matchings/code/z_camera/Camera_SetTargetActor.s,Camera_SetTargetActor,0x800E0308,0x5 asm/non_matchings/code/z_camera/Camera_SetTargetActor.s,Camera_SetTargetActor,0x800E0308,0x5
asm/non_matchings/code/z_camera/Camera_GetWaterYPos.s,Camera_GetWaterYPos,0x800E031C,0xB asm/non_matchings/code/z_camera/Camera_GetWaterYPos.s,Camera_GetWaterYPos,0x800E031C,0xB

1 asm/non_matchings/code/z_en_a_keep/EnAObj_Init.s EnAObj_Init 0x800A5AC0 0x2B
807 asm/non_matchings/code/z_camera/Camera_GetQuakeOffset.s Camera_GetQuakeOffset 0x800E01B8 0x9
808 asm/non_matchings/code/z_camera/Camera_SetCameraData.s Camera_SetCameraData 0x800E01DC 0x13
809 asm/non_matchings/code/z_camera/Camera_GetNegOne.s Camera_GetNegOne 0x800E0228 0x4
810 asm/non_matchings/code/z_camera/func_800E0238.s asm/non_matchings/code/z_camera/Camera_SetFinishedFlag.s func_800E0238 Camera_SetFinishedFlag 0x800E0238 0x1D
811 asm/non_matchings/code/z_camera/Camera_SetFocalActor.s Camera_SetFocalActor 0x800E02AC 0x17
812 asm/non_matchings/code/z_camera/Camera_SetTargetActor.s Camera_SetTargetActor 0x800E0308 0x5
813 asm/non_matchings/code/z_camera/Camera_GetWaterYPos.s Camera_GetWaterYPos 0x800E031C 0xB