mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-04 12:19:59 -04:00
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
This commit is contained in:
+5
-5
@@ -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);
|
||||
|
||||
+9
-2
@@ -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;
|
||||
|
||||
+16
-14
@@ -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,
|
||||
|
||||
+23
-8
@@ -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);
|
||||
|
||||
|
||||
+51
-16
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
|
||||
+54
-42
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) &&
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user