1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-13 11:24:40 +00:00

Document Player_Action_8084EFC0

This commit is contained in:
Pablo 2024-12-13 22:16:46 +01:00
parent fb60c5c978
commit 3a0ac4a1ff

View file

@ -49,11 +49,6 @@ typedef struct ExplosiveInfo {
/* 0x02 */ s16 actorId; /* 0x02 */ s16 actorId;
} ExplosiveInfo; // size = 0x04 } ExplosiveInfo; // size = 0x04
typedef struct BottleDropInfo {
/* 0x00 */ s16 actorId;
/* 0x02 */ s16 actorParams;
} BottleDropInfo; // size = 0x04
typedef struct FallImpactInfo { typedef struct FallImpactInfo {
/* 0x00 */ s8 damage; /* 0x00 */ s8 damage;
/* 0x01 */ u8 rumbleStrength; /* 0x01 */ u8 rumbleStrength;
@ -307,7 +302,7 @@ void Player_Action_TimeTravelEnd(Player* this, PlayState* play);
void Player_Action_DrinkFromBottle(Player* this, PlayState* play); void Player_Action_DrinkFromBottle(Player* this, PlayState* play);
void Player_Action_SwingBottle(Player* this, PlayState* play); void Player_Action_SwingBottle(Player* this, PlayState* play);
void Player_Action_8084EED8(Player* this, PlayState* play); void Player_Action_8084EED8(Player* this, PlayState* play);
void Player_Action_8084EFC0(Player* this, PlayState* play); void Player_Action_DropFromBottle(Player* this, PlayState* play);
void Player_Action_ExchangeItem(Player* this, PlayState* play); void Player_Action_ExchangeItem(Player* this, PlayState* play);
void Player_Action_SlideOnSlope(Player* this, PlayState* play); void Player_Action_SlideOnSlope(Player* this, PlayState* play);
void Player_Action_WaitForCutscene(Player* this, PlayState* play); void Player_Action_WaitForCutscene(Player* this, PlayState* play);
@ -6093,7 +6088,7 @@ s32 Player_ActionHandler_13(Player* this, PlayState* play) {
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_bug_out); Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_bug_out);
func_80835EA4(play, 3); func_80835EA4(play, 3);
} else if ((sp2C > 0) && (sp2C < 4)) { } else if ((sp2C > 0) && (sp2C < 4)) {
Player_SetupActionPreserveItemAction(play, this, Player_Action_8084EFC0, 0); Player_SetupActionPreserveItemAction(play, this, Player_Action_DropFromBottle, 0);
Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_fish_out); Player_AnimPlayOnceAdjusted(play, this, &gPlayerAnim_link_bottle_fish_out);
func_80835EA4(play, (sp2C == 1) ? 1 : 5); func_80835EA4(play, (sp2C == 1) ? 1 : 5);
} else { } else {
@ -14140,25 +14135,28 @@ void Player_Action_8084EED8(Player* this, PlayState* play) {
} }
} }
static BottleDropInfo D_80854A28[] = { typedef struct BottleDropInfo {
{ ACTOR_EN_FISH, FISH_DROPPED }, /* 0x00 */ s16 actorId;
{ ACTOR_EN_ICE_HONO, 0 }, /* 0x02 */ s16 actorParams;
{ ACTOR_EN_INSECT, INSECT_TYPE_FIRST_DROPPED }, } BottleDropInfo; // size = 0x04
};
static AnimSfxEntry D_80854A34[] = { /**
{ NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_VOICE, 38) }, * Drops an actor (fish, insects or blue fire) from a bottle.
{ NA_SE_EV_BOTTLE_CAP_OPEN, -ANIMSFX_DATA(ANIMSFX_TYPE_GENERAL, 40) }, */
}; void Player_Action_DropFromBottle(Player* this, PlayState* play) {
void Player_Action_8084EFC0(Player* this, PlayState* play) {
Player_DecelerateToZero(this); Player_DecelerateToZero(this);
if (LinkAnimation_Update(play, &this->skelAnime)) { if (LinkAnimation_Update(play, &this->skelAnime)) {
Player_SetupIdleAndPlayIdleAnim(this, play); Player_SetupIdleAndPlayIdleAnim(this, play);
Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN)); Camera_SetFinishedFlag(Play_GetCamera(play, CAM_ID_MAIN));
} else if (LinkAnimation_OnFrame(&this->skelAnime, 76.0f)) { } else if (LinkAnimation_OnFrame(&this->skelAnime, 76.0f)) {
BottleDropInfo* dropInfo = &D_80854A28[this->itemAction - PLAYER_IA_BOTTLE_FISH]; static BottleDropInfo sBottleDropInfos[] = {
/* PLAYER_IA_BOTTLE_FISH */ { ACTOR_EN_FISH, FISH_DROPPED },
/* PLAYER_IA_BOTTLE_FIRE */ { ACTOR_EN_ICE_HONO, 0 },
/* PLAYER_IA_BOTTLE_BUG */ { ACTOR_EN_INSECT, INSECT_TYPE_FIRST_DROPPED },
};
BottleDropInfo* dropInfo = &sBottleDropInfos[this->itemAction - PLAYER_IA_BOTTLE_FISH];
Actor_Spawn(&play->actorCtx, play, dropInfo->actorId, Actor_Spawn(&play->actorCtx, play, dropInfo->actorId,
(Math_SinS(this->actor.shape.rot.y) * 5.0f) + this->leftHandPos.x, this->leftHandPos.y, (Math_SinS(this->actor.shape.rot.y) * 5.0f) + this->leftHandPos.x, this->leftHandPos.y,
@ -14167,7 +14165,12 @@ void Player_Action_8084EFC0(Player* this, PlayState* play) {
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
} else { } else {
Player_ProcessAnimSfxList(this, D_80854A34); static AnimSfxEntry sBottleDropAnimSfx[] = {
{ NA_SE_VO_LI_AUTO_JUMP, ANIMSFX_DATA(ANIMSFX_TYPE_VOICE, 38) },
{ NA_SE_EV_BOTTLE_CAP_OPEN, -ANIMSFX_DATA(ANIMSFX_TYPE_GENERAL, 40) },
};
Player_ProcessAnimSfxList(this, sBottleDropAnimSfx);
} }
} }
@ -16067,7 +16070,7 @@ void Player_Action_CsAction(Player* this, PlayState* play) {
int Player_IsDroppingFish(PlayState* play) { int Player_IsDroppingFish(PlayState* play) {
Player* this = GET_PLAYER(play); Player* this = GET_PLAYER(play);
return (Player_Action_8084EFC0 == this->actionFunc) && (this->itemAction == PLAYER_IA_BOTTLE_FISH); return (Player_Action_DropFromBottle == this->actionFunc) && (this->itemAction == PLAYER_IA_BOTTLE_FISH);
} }
s32 Player_StartFishing(PlayState* play) { s32 Player_StartFishing(PlayState* play) {