summaryrefslogtreecommitdiff
path: root/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/overlays/actors/ovl_En_Bombers/z_en_bombers.c')
-rw-r--r--src/overlays/actors/ovl_En_Bombers/z_en_bombers.c289
1 files changed, 147 insertions, 142 deletions
diff --git a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c
index b7e8ce7c0..fc3b2ed0e 100644
--- a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c
+++ b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c
@@ -14,13 +14,13 @@ void EnBombers_Destroy(Actor* thisx, PlayState* play);
void EnBombers_Update(Actor* thisx, PlayState* play);
void EnBombers_Draw(Actor* thisx, PlayState* play);
-void func_80C03ACC(EnBombers* this);
-void func_80C03AF4(EnBombers* this, PlayState* play);
-void func_80C03F64(EnBombers* this);
-void func_80C03FAC(EnBombers* this, PlayState* play);
-void func_80C042F8(EnBombers* this);
-void func_80C04354(EnBombers* this, PlayState* play);
-void func_80C043C8(EnBombers* this, PlayState* play);
+void EnBombers_SetupNpcBehavior(EnBombers* this);
+void EnBombers_NpcBehavior(EnBombers* this, PlayState* play);
+void EnBombers_StartTalking(EnBombers* this);
+void EnBombers_UpdateTalk(EnBombers* this, PlayState* play);
+void EnBombers_SetupSitting(EnBombers* this);
+void EnBombers_Sitting(EnBombers* this, PlayState* play);
+void EnBombers_TalkWhileSitting(EnBombers* this, PlayState* play);
ActorProfile En_Bombers_Profile = {
/**/ ACTOR_EN_BOMBERS,
@@ -55,6 +55,11 @@ static ColliderCylinderInit sCylinderInit = {
};
typedef enum {
+ /* 0 */ ENBOMBERS_NPC_WALKING,
+ /* 1 */ ENBOMBERS_NPC_STANDING
+} EnBombersNpcState;
+
+typedef enum {
/* -1 */ ENBOMBERS_ANIM_NONE = -1,
/* 0x00 */ ENBOMBERS_ANIM_IDLE,
/* 0x01 */ ENBOMBERS_ANIM_TALK_HANDS_ON_HIPS,
@@ -144,25 +149,25 @@ void EnBombers_Init(Actor* thisx, PlayState* play) {
this->actor.attentionRangeType = ATTENTION_RANGE_0;
Actor_SetScale(&this->actor, 0.01f);
- this->unk_2BC = ENBOMBERS_GET_F0(&this->actor);
- this->unk_2BE = ENBOMBERS_GET_F(&this->actor);
+ this->type = ENBOMBERS_GET_TYPE(&this->actor);
+ this->number = ENBOMBERS_GET_NUMBER(&this->actor);
- if (this->unk_2BC == ENBOMBERS_F0_0) {
+ if (this->type == ENBOMBERS_TYPE_NPC) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) {
Actor_Kill(&this->actor);
return;
}
- this->unk_2BE++;
- func_80C03ACC(this);
+ this->number++;
+ EnBombers_SetupNpcBehavior(this);
} else if ((CHECK_WEEKEVENTREG(WEEKEVENTREG_73_10) || CHECK_WEEKEVENTREG(WEEKEVENTREG_85_02)) &&
- (((this->unk_2BE == ENBOMBERS_F_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_01)) ||
- ((this->unk_2BE == ENBOMBERS_F_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_02)) ||
- ((this->unk_2BE == ENBOMBERS_F_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_04)) ||
- ((this->unk_2BE == ENBOMBERS_F_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_08)) ||
- ((this->unk_2BE == ENBOMBERS_F_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_10)))) {
+ (((this->number == ENBOMBERS_NO_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_01)) ||
+ ((this->number == ENBOMBERS_NO_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_02)) ||
+ ((this->number == ENBOMBERS_NO_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_04)) ||
+ ((this->number == ENBOMBERS_NO_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_08)) ||
+ ((this->number == ENBOMBERS_NO_5) && CHECK_WEEKEVENTREG(WEEKEVENTREG_76_10)))) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_40)) {
- if (this->unk_2BE == ENBOMBERS_F_0) {
+ if (this->number == ENBOMBERS_NO_1) {
EnBomBowlMan* bomBowlMan = (EnBomBowlMan*)Actor_Spawn(
&play->actorCtx, play, ACTOR_EN_BOM_BOWL_MAN, this->actor.world.pos.x, this->actor.world.pos.y,
this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, 0);
@@ -186,7 +191,7 @@ void EnBombers_Init(Actor* thisx, PlayState* play) {
return;
}
- func_80C042F8(this);
+ EnBombers_SetupSitting(this);
} else {
Actor_Kill(&this->actor);
}
@@ -205,7 +210,7 @@ void EnBombers_ChangeAnim(EnBombers* this, s32 animIndex, f32 playSpeed) {
sAnimationModes[this->animIndex], -10.0f);
}
-void func_80C038B4(EnBombers* this) {
+void EnBombers_PlaySfx(EnBombers* this) {
if ((this->animIndex == ENBOMBERS_ANIM_WALK) &&
(Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 10.0f) ||
Animation_OnFrame(&this->skelAnime, 17.0f) || Animation_OnFrame(&this->skelAnime, 18.0f))) {
@@ -219,9 +224,9 @@ void func_80C038B4(EnBombers* this) {
}
}
-void func_80C039A8(EnBombers* this, PlayState* play) {
+void EnBombers_UpdateRegularTextId(EnBombers* this, PlayState* play) {
Player* player = GET_PLAYER(play);
- this->unk_2A6 = TEXT_STATE_EVENT;
+ this->talkState = TEXT_STATE_EVENT;
switch (player->transformation) {
case PLAYER_FORM_HUMAN:
@@ -242,12 +247,12 @@ void func_80C039A8(EnBombers* this, PlayState* play) {
case PLAYER_FORM_DEKU:
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_20)) {
this->actor.textId = 0x75A;
- } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_73_40)) {
+ } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEKU_LEARNED_WHERE_BOMBER_JIM_IS)) {
this->actor.textId = 0x749;
- if (((this->unk_2BE == ENBOMBERS_F_1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_01)) ||
- ((this->unk_2BE == ENBOMBERS_F_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_02)) ||
- ((this->unk_2BE == ENBOMBERS_F_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_04)) ||
- ((this->unk_2BE == ENBOMBERS_F_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_74_08))) {
+ if (((this->number == ENBOMBERS_NO_2) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_2)) ||
+ ((this->number == ENBOMBERS_NO_3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_3)) ||
+ ((this->number == ENBOMBERS_NO_4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_4)) ||
+ ((this->number == ENBOMBERS_NO_5) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_5))) {
this->actor.textId = 0x74A;
}
} else {
@@ -260,84 +265,84 @@ void func_80C039A8(EnBombers* this, PlayState* play) {
}
}
-void func_80C03ACC(EnBombers* this) {
+void EnBombers_SetupNpcBehavior(EnBombers* this) {
this->collider.dim.radius = 10;
this->collider.dim.height = 30;
- this->unk_2C0 = 0;
- this->actionFunc = func_80C03AF4;
+ this->action = 0;
+ this->actionFunc = EnBombers_NpcBehavior;
}
-void func_80C03AF4(EnBombers* this, PlayState* play) {
+void EnBombers_NpcBehavior(EnBombers* this, PlayState* play) {
CollisionPoly* colPoly;
f32 curFrame = this->skelAnime.curFrame;
- Vec3f sp6C;
- Vec3f sp60;
- Vec3f sp54;
+ Vec3f endPoint;
+ Vec3f walkTarget;
+ Vec3f walkVec;
f32 x;
f32 z;
s32 bgId;
s16 abs;
- switch (this->unk_2A0) {
- case 0:
- if (this->unk_2A8 == 0) {
- Math_Vec3f_Copy(&sp60, &this->actor.home.pos);
+ switch (this->npcState) {
+ case ENBOMBERS_NPC_WALKING:
+ if (this->idleTimer == 0) {
+ Math_Vec3f_Copy(&walkTarget, &this->actor.home.pos);
- sp60.x += Rand_CenteredFloat(150.0f);
- sp60.z += Rand_CenteredFloat(150.0f);
+ walkTarget.x += Rand_CenteredFloat(150.0f);
+ walkTarget.z += Rand_CenteredFloat(150.0f);
- abs = ABS_ALT(BINANG_SUB(this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &sp60)));
- if ((abs < 0x4000) && !BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp60, &sp6C,
- &colPoly, true, false, false, true, &bgId)) {
+ abs = ABS_ALT(BINANG_SUB(this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &walkTarget)));
+ if ((abs < 0x4000) && !BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &walkTarget,
+ &endPoint, &colPoly, true, false, false, true, &bgId)) {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_WALK, 1.0f);
- Math_Vec3f_Copy(&this->unk_294, &sp60);
- this->unk_2AA = Rand_S16Offset(30, 50);
- this->unk_2A0++;
+ Math_Vec3f_Copy(&this->walkTarget, &walkTarget);
+ this->walkTimer = Rand_S16Offset(30, 50);
+ this->npcState++;
}
}
break;
- case 1:
+ case ENBOMBERS_NPC_STANDING:
if (curFrame >= 0.0f) {
- this->unk_2A4 = Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk_294);
- Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_2A4, 0xA, 0x7D0, 0x14);
+ this->targetYaw = Math_Vec3f_Yaw(&this->actor.world.pos, &this->walkTarget);
+ Math_SmoothStepToS(&this->actor.world.rot.y, this->targetYaw, 0xA, 0x7D0, 0x14);
}
- if ((s16)ABS_ALT(BINANG_SUB(this->actor.world.rot.y, this->unk_2A4)) < 0x100) {
- Math_Vec3f_Copy(&sp54, &this->actor.world.pos);
- sp54.x += Math_SinS(this->actor.world.rot.y) * 60.0f;
- sp54.z += Math_CosS(this->actor.world.rot.y) * 60.0f;
+ if ((s16)ABS_ALT(BINANG_SUB(this->actor.world.rot.y, this->targetYaw)) < 0x100) {
+ Math_Vec3f_Copy(&walkVec, &this->actor.world.pos);
+ walkVec.x += Math_SinS(this->actor.world.rot.y) * 60.0f;
+ walkVec.z += Math_CosS(this->actor.world.rot.y) * 60.0f;
- if (BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp54, &sp6C, &colPoly, true, false,
- false, true, &bgId)) {
- this->unk_2A8 = 0;
+ if (BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &walkVec, &endPoint, &colPoly, true,
+ false, false, true, &bgId)) {
+ this->idleTimer = 0;
if (Rand_ZeroOne() < 0.5f) {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_LOOK_AROUND, 1.0f);
} else {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_IDLE, 1.0f);
}
- this->unk_2A0 = 0;
- this->unk_2B4 = 0.0f;
+ this->npcState = ENBOMBERS_NPC_WALKING;
+ this->walkMaxStep = 0.0f;
break;
}
}
- x = this->unk_294.x - this->actor.world.pos.x;
- z = this->unk_294.z - this->actor.world.pos.z;
+ x = this->walkTarget.x - this->actor.world.pos.x;
+ z = this->walkTarget.z - this->actor.world.pos.z;
- if ((this->unk_2AA == 0) || (sqrtf(SQ(x) + SQ(z)) < 4.0f)) {
- this->unk_2A8 = Rand_S16Offset(20, 20);
- if (!(this->unk_2A8 & 1)) {
+ if ((this->walkTimer == 0) || (sqrtf(SQ(x) + SQ(z)) < 4.0f)) {
+ this->idleTimer = Rand_S16Offset(20, 20);
+ if (!(this->idleTimer & 1)) {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_LOOK_AROUND, 1.0f);
} else {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_IDLE, 1.0f);
}
- this->unk_2A0 = 0;
- this->unk_2B4 = 0.0f;
+ this->npcState = 0;
+ this->walkMaxStep = 0.0f;
} else if (curFrame >= 0.0f) {
- Math_ApproachF(&this->actor.world.pos.x, this->unk_294.x, 0.3f, this->unk_2B4);
- Math_ApproachF(&this->actor.world.pos.z, this->unk_294.z, 0.3f, this->unk_2B4);
- Math_ApproachF(&this->unk_2B4, 1.0f, 0.3f, 0.5f);
+ Math_ApproachF(&this->actor.world.pos.x, this->walkTarget.x, 0.3f, this->walkMaxStep);
+ Math_ApproachF(&this->actor.world.pos.z, this->walkTarget.z, 0.3f, this->walkMaxStep);
+ Math_ApproachF(&this->walkMaxStep, 1.0f, 0.3f, 0.5f);
}
break;
@@ -346,136 +351,136 @@ void func_80C03AF4(EnBombers* this, PlayState* play) {
}
if (Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS) == 0) {
- func_80C039A8(this, play);
+ EnBombers_UpdateRegularTextId(this, play);
} else {
- this->unk_2A6 = TEXT_STATE_EVENT;
+ this->talkState = TEXT_STATE_EVENT;
this->actor.textId = Text_GetFaceReaction(play, FACE_REACTION_SET_BOMBERS);
}
if (Actor_TalkOfferAccepted(&this->actor, &play->state)) {
- this->unk_2A4 = this->actor.yawTowardsPlayer;
+ this->targetYaw = this->actor.yawTowardsPlayer;
this->collider.dim.radius = 20;
this->collider.dim.height = 60;
- func_80C03F64(this);
+ EnBombers_StartTalking(this);
} else {
Actor_OfferTalk(&this->actor, play, 70.0f);
}
}
-void func_80C03F64(EnBombers* this) {
- this->unk_2A4 = this->actor.yawTowardsPlayer;
+void EnBombers_StartTalking(EnBombers* this) {
+ this->targetYaw = this->actor.yawTowardsPlayer;
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_TALK_HANDS_ON_HIPS, 1.0f);
- this->unk_2C0 = 1;
- this->actionFunc = func_80C03FAC;
+ this->action = 1;
+ this->actionFunc = EnBombers_UpdateTalk;
}
-void func_80C03FAC(EnBombers* this, PlayState* play) {
+void EnBombers_UpdateTalk(EnBombers* this, PlayState* play) {
Player* player = GET_PLAYER(play);
- s16 sp2A;
+ s16 hasMoreText;
- Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_2A4, 1, 0x1388, 0);
+ Math_SmoothStepToS(&this->actor.world.rot.y, this->targetYaw, 1, 0x1388, 0);
switch (player->transformation) {
case PLAYER_FORM_HUMAN:
- this->unk_28E = -0xFA0;
+ this->headRotTargetZ = -0xFA0;
break;
case PLAYER_FORM_GORON:
case PLAYER_FORM_ZORA:
- this->unk_28E = -0x1770;
+ this->headRotTargetZ = -0x1770;
break;
default:
break;
}
- if ((this->unk_2A6 == Message_GetState(&play->msgCtx)) && Message_ShouldAdvance(play)) {
- sp2A = 0;
+ if ((this->talkState == Message_GetState(&play->msgCtx)) && Message_ShouldAdvance(play)) {
+ hasMoreText = false;
Message_CloseTextbox(play);
- this->unk_2A6 = TEXT_STATE_EVENT;
+ this->talkState = TEXT_STATE_EVENT;
if ((this->actor.textId == 0x73D) || (this->actor.textId == 0x73E) || (this->actor.textId == 0x73F)) {
this->actor.textId = 0x740;
- this->unk_2A6 = TEXT_STATE_CHOICE;
- sp2A = 1;
+ this->talkState = TEXT_STATE_CHOICE;
+ hasMoreText = true;
} else if (this->actor.textId == 0x740) {
if (play->msgCtx.choiceIndex == 0) {
Audio_PlaySfx_MessageDecide();
this->actor.textId = 0x742;
- sp2A = 1;
+ hasMoreText = true;
} else {
Audio_PlaySfx_MessageCancel();
this->actor.textId = 0x741;
- sp2A = 1;
+ hasMoreText = true;
}
} else if (this->actor.textId == 0x742) {
this->actor.textId = 0x737;
- sp2A = 1;
+ hasMoreText = true;
} else if (this->actor.textId == 0x737) {
this->actor.textId = 0x743;
- sp2A = 1;
+ hasMoreText = true;
} else if (this->actor.textId == 0x74B) {
this->actor.textId = 0x74C;
- this->unk_2A6 = TEXT_STATE_CHOICE;
- sp2A = 1;
+ this->talkState = TEXT_STATE_CHOICE;
+ hasMoreText = true;
} else if (this->actor.textId == 0x74C) {
if (play->msgCtx.choiceIndex == 1) {
Audio_PlaySfx_MessageCancel();
this->actor.textId = 0x737;
- sp2A = 1;
+ hasMoreText = true;
} else {
Audio_PlaySfx_MessageDecide();
this->actor.textId = 0x74D;
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_SALUTE, 1.0f);
- sp2A = 1;
+ hasMoreText = true;
}
} else if (this->actor.textId == 0x744) {
s32 day = gSaveContext.save.day - 1;
if (day == 2) {
this->actor.textId = 0x746;
- sp2A = 1;
+ hasMoreText = true;
} else {
this->actor.textId = 0x745;
- sp2A = 1;
+ hasMoreText = true;
}
} else if ((this->actor.textId == 0x745) || (this->actor.textId == 0x746)) {
this->actor.textId = 0x747;
- sp2A = 1;
+ hasMoreText = true;
} else if (this->actor.textId == 0x747) {
this->actor.textId = 0x748;
- sp2A = 1;
+ hasMoreText = true;
} else if (this->actor.textId == 0x748) {
- switch (this->unk_2BE) {
- case ENBOMBERS_F_1:
- SET_WEEKEVENTREG(WEEKEVENTREG_74_01);
+ switch (this->number) {
+ case ENBOMBERS_NO_2:
+ SET_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_2);
break;
- case ENBOMBERS_F_2:
- SET_WEEKEVENTREG(WEEKEVENTREG_74_02);
+ case ENBOMBERS_NO_3:
+ SET_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_3);
break;
- case ENBOMBERS_F_3:
- SET_WEEKEVENTREG(WEEKEVENTREG_74_04);
+ case ENBOMBERS_NO_4:
+ SET_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_4);
break;
- case ENBOMBERS_F_4:
- SET_WEEKEVENTREG(WEEKEVENTREG_74_08);
+ case ENBOMBERS_NO_5:
+ SET_WEEKEVENTREG(WEEKEVENTREG_DEKU_TALKED_TO_BOMBER_5);
break;
default:
break;
}
- SET_WEEKEVENTREG(WEEKEVENTREG_73_40);
+ SET_WEEKEVENTREG(WEEKEVENTREG_DEKU_LEARNED_WHERE_BOMBER_JIM_IS);
}
- switch (sp2A) {
- case 0:
- this->unk_28E = 0;
- func_80C03ACC(this);
+ switch (hasMoreText) {
+ case false:
+ this->headRotTargetZ = 0;
+ EnBombers_SetupNpcBehavior(this);
break;
- case 1:
+ case true:
Message_ContinueTextbox(play, this->actor.textId);
break;
@@ -485,31 +490,31 @@ void func_80C03FAC(EnBombers* this, PlayState* play) {
}
}
-void func_80C042F8(EnBombers* this) {
+void EnBombers_SetupSitting(EnBombers* this) {
if (this->animIndex != ENBOMBERS_ANIM_SIT) {
EnBombers_ChangeAnim(this, ENBOMBERS_ANIM_SIT, 1.0f);
}
this->actor.textId = 0x72D;
- this->unk_28E = 0x1F40;
- this->unk_2C0 = 2;
- this->actionFunc = func_80C04354;
+ this->headRotTargetZ = 0x1F40;
+ this->action = 2;
+ this->actionFunc = EnBombers_Sitting;
}
-void func_80C04354(EnBombers* this, PlayState* play) {
- Math_SmoothStepToS(&this->unk_288, this->unk_28E, 1, 0x3E8, 0);
+void EnBombers_Sitting(EnBombers* this, PlayState* play) {
+ Math_SmoothStepToS(&this->headRotZ, this->headRotTargetZ, 1, 0x3E8, 0);
if (Actor_TalkOfferAccepted(&this->actor, &play->state)) {
- this->unk_28E = 0;
- this->actionFunc = func_80C043C8;
+ this->headRotTargetZ = 0;
+ this->actionFunc = EnBombers_TalkWhileSitting;
} else {
Actor_OfferTalk(&this->actor, play, 70.0f);
}
}
-void func_80C043C8(EnBombers* this, PlayState* play) {
- Math_SmoothStepToS(&this->unk_288, this->unk_28E, 1, 0x3E8, 0);
+void EnBombers_TalkWhileSitting(EnBombers* this, PlayState* play) {
+ Math_SmoothStepToS(&this->headRotZ, this->headRotTargetZ, 1, 0x3E8, 0);
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play);
- func_80C042F8(this);
+ EnBombers_SetupSitting(this);
}
}
@@ -517,12 +522,12 @@ void EnBombers_Update(Actor* thisx, PlayState* play) {
s32 pad;
EnBombers* this = (EnBombers*)thisx;
- if (this->unk_2AA != 0) {
- this->unk_2AA--;
+ if (this->walkTimer != 0) {
+ this->walkTimer--;
}
- if (this->unk_2A8 != 0) {
- this->unk_2A8--;
+ if (this->idleTimer != 0) {
+ this->idleTimer--;
}
if (this->unk_2AC != 0) {
@@ -531,18 +536,18 @@ void EnBombers_Update(Actor* thisx, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
this->actor.shape.rot.y = this->actor.world.rot.y;
- func_80C038B4(this);
+ EnBombers_PlaySfx(this);
Actor_SetFocus(&this->actor, 20.0f);
this->actionFunc(this, play);
Actor_MoveWithGravity(&this->actor);
- Math_SmoothStepToS(&this->unk_28A, this->unk_290, 1, 0x1388, 0);
- Math_SmoothStepToS(&this->unk_288, this->unk_28E, 1, 0x1388, 0);
-
- if (this->unk_2BA == 0) {
- this->unk_2B8++;
- if (this->unk_2B8 >= 3) {
- this->unk_2B8 = 0;
- this->unk_2BA = TRUNCF_BINANG(Rand_ZeroFloat(60.0f)) + 20;
+ Math_SmoothStepToS(&this->headRotX, this->headRotTargetX, 1, 0x1388, 0);
+ Math_SmoothStepToS(&this->headRotZ, this->headRotTargetZ, 1, 0x1388, 0);
+
+ if (this->blinkTimer == 0) {
+ this->eyeIndex++;
+ if (this->eyeIndex >= 3) {
+ this->eyeIndex = 0;
+ this->blinkTimer = TRUNCF_BINANG(Rand_ZeroFloat(60.0f)) + 20;
}
}
@@ -562,8 +567,8 @@ s32 EnBombers_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
}
if (limbIndex == OBJECT_CS_LIMB_11) {
- rot->x += this->unk_28A;
- rot->z += this->unk_288;
+ rot->x += this->headRotX;
+ rot->z += this->headRotZ;
}
if (limbIndex == OBJECT_CS_LIMB_13) {
@@ -581,9 +586,9 @@ void EnBombers_Draw(Actor* thisx, PlayState* play) {
Gfx_SetupDL25_Opa(play->state.gfxCtx);
Gfx_SetupDL25_Xlu(play->state.gfxCtx);
- gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->unk_2B8]));
- gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sNumberTextures[this->unk_2BE]));
- gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(sBomberDisplayLists[this->unk_2BE]));
+ gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
+ gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sNumberTextures[this->number]));
+ gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(sBomberDisplayLists[this->number]));
Scene_SetRenderModeXlu(play, 0, 1);
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,