mirror of
https://github.com/zeldaret/mm.git
synced 2026-08-21 22:10:51 -04:00
Animation Cleanup: En_L* and some En_M* (#1493)
* cleanup L, some M * small fix * typo * brackets * more brackets
This commit is contained in:
+1
-1
@@ -3526,7 +3526,7 @@ s32 Target_InTargetableScreenRegion(PlayState* play, Actor* actor) {
|
||||
* - Must not be blocked by a surface (?)
|
||||
*
|
||||
* This function also checks for the nearest enemy actor, which allows determining if enemy background music should be
|
||||
* played. This actor is stored in `targetContext.bgmEnemy` and its distance is stored in `sBgmEnemyDistSq`
|
||||
* played. This actor is stored in `targetCtx.bgmEnemy` and its distance is stored in `sBgmEnemyDistSq`
|
||||
*
|
||||
* This function is expected to be called with almost every actor category in each cycle. On a new cycle its global
|
||||
* variables must be reset by the caller, otherwise the information of the previous cycle will be retained on this one.
|
||||
|
||||
+1
-1
@@ -7484,7 +7484,7 @@ Vec3s Camera_Update(Camera* camera) {
|
||||
|
||||
bgCamIndex = Camera_GetBgCamIndex(camera, &bgId, sp90);
|
||||
if ((bgCamIndex != -1) && (camera->bgId == BGCHECK_SCENE)) {
|
||||
if (Camera_IsUsingZoraFins(camera) == 0) {
|
||||
if (!Camera_IsUsingZoraFins(camera)) {
|
||||
camera->nextCamSceneDataId = bgCamIndex | CAM_DATA_IS_BG;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -405,7 +405,7 @@ void BgNumaHana_Draw(Actor* thisx, PlayState* play2) {
|
||||
}
|
||||
|
||||
objectSlot = Object_GetSlot(&play->objectCtx, OBJECT_SYOKUDAI);
|
||||
if ((objectSlot > OBJECT_SLOT_NONE) && (Object_IsLoaded(&play->objectCtx, objectSlot))) {
|
||||
if ((objectSlot > OBJECT_SLOT_NONE) && Object_IsLoaded(&play->objectCtx, objectSlot)) {
|
||||
Matrix_SetTranslateRotateYXZ(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y - 64.5f,
|
||||
this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot);
|
||||
Matrix_Scale(1.5f, 1.5f, 1.5f, MTXMODE_APPLY);
|
||||
|
||||
@@ -474,7 +474,7 @@ void EnBomChu_Update(Actor* thisx, PlayState* play) {
|
||||
this->actionFunc(this, play);
|
||||
|
||||
if ((this->actionFunc != EnBomChu_WaitForDeath) &&
|
||||
(SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId))) {
|
||||
SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId)) {
|
||||
EnBomChu_Explode(this, play);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -84,26 +84,27 @@ typedef enum {
|
||||
/* 19 */ ENLIFTNUTS_ANIM_MAX
|
||||
} EnLiftNutsAnimation;
|
||||
|
||||
static AnimationInfo sAnimations[ENLIFTNUTS_ANIM_MAX] = {
|
||||
{ &gBusinessScrubStandingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubWalkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubRiseUpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubExcitedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gBusinessScrubExcitedLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubExcitedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gBusinessScrubTakeOffHatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubFlyStartAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubFlyLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubShockedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -2.0f },
|
||||
static AnimationInfo sAnimationInfo[ENLIFTNUTS_ANIM_MAX] = {
|
||||
{ &gBusinessScrubStandingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_STANDING
|
||||
{ &gBusinessScrubWalkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_WALK
|
||||
{ &gBusinessScrubRiseUpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_RISE_UP
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_BURROW_LONG
|
||||
{ &gBusinessScrubExcitedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_EXCITED_START
|
||||
{ &gBusinessScrubExcitedLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_EXCITED_LOOP
|
||||
{ &gBusinessScrubExcitedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_EXCITED_END
|
||||
{ &gBusinessScrubTakeOffHatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_TAKE_OFF_HAT
|
||||
{ &gBusinessScrubFlyStartAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_FLY_START
|
||||
{ &gBusinessScrubFlyLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_FLY_LOOP
|
||||
{ &gBusinessScrubShockedStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -2.0f }, // ENLIFTNUTS_ANIM_SHOCKED_START
|
||||
// ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD
|
||||
{ &gBusinessScrubShockedShakeHeadAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubShockedPoundAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubShockedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gBusinessScrubThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubBobAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f },
|
||||
{ &gBusinessScrubJumpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 4.0f, 0.0f, ANIMMODE_ONCE, -4.0f },
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 8.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gBusinessScrubShockedPoundAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_SHOCKED_POUND
|
||||
{ &gBusinessScrubShockedEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f }, // ENLIFTNUTS_ANIM_SHOCKED_END
|
||||
{ &gBusinessScrubThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_THINK
|
||||
{ &gBusinessScrubBobAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, // ENLIFTNUTS_ANIM_BOB
|
||||
{ &gBusinessScrubJumpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_JUMP
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 4.0f, 0.0f, ANIMMODE_ONCE, -4.0f }, // ENLIFTNUTS_ANIM_BURROW_HALF
|
||||
{ &gBusinessScrubBurrowAnim, 1.0f, 8.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // ENLIFTNUTS_ANIM_BURROW_SHORT
|
||||
};
|
||||
|
||||
Gfx* sEyeTextures[] = { gBusinessScrubEyesDL, gBusinessScrubEyesWideDL, gBusinessScrubEyesSquintDL };
|
||||
@@ -323,7 +324,7 @@ void EnLiftNuts_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnLiftNuts_SetupIdleHidden(EnLiftNuts* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_SHORT);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_SHORT);
|
||||
this->actionFunc = EnLiftNuts_IdleHidden;
|
||||
this->timer = 0;
|
||||
}
|
||||
@@ -338,9 +339,9 @@ void EnLiftNuts_IdleHidden(EnLiftNuts* this, PlayState* play) {
|
||||
|
||||
void EnLiftNuts_SetupBurrow(EnLiftNuts* this) {
|
||||
if (this->actionFunc == EnLiftNuts_Idle) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_HALF);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_HALF);
|
||||
} else {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_LONG);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_LONG);
|
||||
}
|
||||
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE);
|
||||
@@ -359,7 +360,7 @@ void EnLiftNuts_SetupIdle(EnLiftNuts* this) {
|
||||
if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK, ENLIFTNUTS_MINIGAME_STATE_STARTING)) {
|
||||
this->actionFunc = EnLiftNuts_Idle;
|
||||
} else {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_RISE_UP);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_RISE_UP);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE);
|
||||
this->actionFunc = EnLiftNuts_RiseUp;
|
||||
}
|
||||
@@ -367,7 +368,7 @@ void EnLiftNuts_SetupIdle(EnLiftNuts* this) {
|
||||
|
||||
void EnLiftNuts_RiseUp(EnLiftNuts* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BOB);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BOB);
|
||||
this->actionFunc = EnLiftNuts_Idle;
|
||||
} else if (Animation_OnFrame(&this->skelAnime, 8.0f)) {
|
||||
EnLiftNuts_SpawnDust(this, play);
|
||||
@@ -441,12 +442,15 @@ void EnLiftNuts_Idle(EnLiftNuts* this, PlayState* play) {
|
||||
this->textId = 0x27E1;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK,
|
||||
ENLIFTNUTS_MINIGAME_STATE_AFTER)) {
|
||||
if (Flags_GetSwitch(play, 0x40)) {
|
||||
Flags_UnsetSwitch(play, 0x40);
|
||||
Inventory_SaveDekuPlaygroundHighScore(4);
|
||||
Inventory_SaveDekuPlaygroundHighScore(TIMER_ID_MINIGAME_2);
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_1) &&
|
||||
CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_2) && (CURRENT_DAY == 3)) {
|
||||
this->timer = 0;
|
||||
@@ -527,13 +531,13 @@ void EnLiftNuts_HandleConversationChoice(EnLiftNuts* this, PlayState* play) {
|
||||
Rupees_ChangeBy(-10);
|
||||
} else {
|
||||
Audio_PlaySfx(NA_SE_SY_ERROR);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
Message_StartTextbox(play, 0x27E4, &this->actor);
|
||||
this->textId = 0x27E4;
|
||||
}
|
||||
} else {
|
||||
Audio_PlaySfx_MessageCancel();
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
Message_StartTextbox(play, 0x27E3, &this->actor);
|
||||
this->textId = 0x27E3;
|
||||
}
|
||||
@@ -586,7 +590,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x27E6:
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
switch (CURRENT_DAY) {
|
||||
case 1:
|
||||
Message_StartTextbox(play, 0x27E7, &this->actor);
|
||||
@@ -622,7 +626,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x27EE:
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_JUMP);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_JUMP);
|
||||
Message_StartTextbox(play, 0x27EF, &this->actor);
|
||||
this->textId = 0x27EF;
|
||||
break;
|
||||
@@ -639,7 +643,7 @@ void EnLiftNuts_HandleConversation5(EnLiftNuts* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x27F2:
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
Message_StartTextbox(play, 0x27F3, &this->actor);
|
||||
this->textId = 0x27F3;
|
||||
break;
|
||||
@@ -675,7 +679,7 @@ void EnLiftNuts_SetupStartConversation(EnLiftNuts* this) {
|
||||
if (EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_CHECK, ENLIFTNUTS_MINIGAME_STATE_NONE)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_AKINDONUTS_HIDE);
|
||||
}
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_JUMP);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_JUMP);
|
||||
}
|
||||
this->actionFunc = EnLiftNuts_StartConversation;
|
||||
}
|
||||
@@ -683,9 +687,9 @@ void EnLiftNuts_SetupStartConversation(EnLiftNuts* this) {
|
||||
void EnLiftNuts_StartConversation(EnLiftNuts* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if ((this->textId == 0x27EE) || (this->textId == 0x27F4) || (this->textId == 0x27F5)) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_START);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_START);
|
||||
} else {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_STANDING);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_STANDING);
|
||||
}
|
||||
this->actionFunc = EnLiftNuts_HandleConversation;
|
||||
}
|
||||
@@ -728,19 +732,19 @@ void EnLiftNuts_HandleConversation(EnLiftNuts* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
switch (this->textId) {
|
||||
case 0x27EE:
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD);
|
||||
break;
|
||||
|
||||
case 0x27EF:
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
break;
|
||||
|
||||
case 0x27F4:
|
||||
if (this->timer == 0) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_SHAKE_HEAD);
|
||||
this->timer++;
|
||||
} else if (this->timer == 4) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_POUND);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_POUND);
|
||||
this->timer = 0;
|
||||
} else {
|
||||
this->timer++;
|
||||
@@ -756,7 +760,7 @@ void EnLiftNuts_HandleConversation(EnLiftNuts* this, PlayState* play) {
|
||||
|
||||
void EnLiftNuts_SetupMove(EnLiftNuts* this) {
|
||||
this->actor.speed = 2.0f;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
EnLiftNuts_Autotalk(this, ENLIFTNUTS_AUTOTALK_MODE_SET_ON);
|
||||
EnLiftNuts_MinigameState(ENLIFTNUTS_MINIGAME_STATE_MODE_SET, ENLIFTNUTS_MINIGAME_STATE_STARTING);
|
||||
this->actionFunc = EnLiftNuts_Move;
|
||||
@@ -943,11 +947,11 @@ void EnLiftNuts_ResumeConversation(EnLiftNuts* this, PlayState* play) {
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_1) &&
|
||||
CHECK_WEEKEVENTREG(WEEKEVENTREG_WON_DEKU_PLAYGROUND_DAY_2) && (CURRENT_DAY == 3)) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_SHOCKED_END);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_SHOCKED_END);
|
||||
Message_StartTextbox(play, 0x27F5, &this->actor);
|
||||
this->textId = 0x27F5;
|
||||
} else if (EnLiftNuts_GetNumDaysWon() > 0) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_WALK);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_WALK);
|
||||
Message_StartTextbox(play, 0x27F0, &this->actor);
|
||||
this->textId = 0x27F0;
|
||||
} else {
|
||||
@@ -983,7 +987,7 @@ void EnLiftNuts_SetupStartHiding(EnLiftNuts* this) {
|
||||
this->isFirstTimeHiding = true;
|
||||
}
|
||||
if (this->actionFunc == EnLiftNuts_IdleHidden) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BOB);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BOB);
|
||||
}
|
||||
this->timer = 0;
|
||||
this->actionFunc = EnLiftNuts_StartHiding;
|
||||
@@ -995,7 +999,7 @@ void EnLiftNuts_StartHiding(EnLiftNuts* this, PlayState* play) {
|
||||
Message_StartTextbox(play, 0x27F6, &this->actor);
|
||||
this->textId = 0x27F6;
|
||||
}
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, ENLIFTNUTS_ANIM_BURROW_HALF);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENLIFTNUTS_ANIM_BURROW_HALF);
|
||||
this->actionFunc = EnLiftNuts_Hide;
|
||||
}
|
||||
this->timer++;
|
||||
|
||||
@@ -219,12 +219,14 @@ void EnLookNuts_StandAndWait(EnLookNuts* this, PlayState* play) {
|
||||
this->waitTimer++;
|
||||
this->headRotTarget.y *= -1.0f;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
this->headRotTarget.y = 0.0f;
|
||||
randOffset = Rand_S16Offset(1, 2);
|
||||
this->eventTimer = 0;
|
||||
this->waitTimer += randOffset;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (fabsf(this->headRotTarget.y - this->headRotation.y) < 10.0f) {
|
||||
this->waitTimer = 10;
|
||||
@@ -232,27 +234,34 @@ void EnLookNuts_StandAndWait(EnLookNuts* this, PlayState* play) {
|
||||
this->eventTimer = 5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (fabsf(this->headRotTarget.y - this->headRotation.y) < 10.0f) {
|
||||
this->headRotTarget.z = 4000.0f;
|
||||
this->waitTimer++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 8:
|
||||
this->waitTimer = 10;
|
||||
this->eventTimer = 20;
|
||||
this->headRotTarget.z = -8000.0f;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
Math_Vec3f_Copy(&this->headRotTarget, &gZeroVec3f);
|
||||
this->waitTimer = 11;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
if ((fabsf(this->headRotation.x) < 30.0f) && (fabsf(this->headRotation.y) < 30.0f) &&
|
||||
(fabsf(this->headRotation.z) < 30.0f)) {
|
||||
this->waitTimer = 12;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (this->waitTimer == 12) {
|
||||
this->waitTimer = 0;
|
||||
|
||||
@@ -66,7 +66,15 @@ static u8 sDamages[] = {
|
||||
1, 2, 3, 4, // Great Spin
|
||||
};
|
||||
|
||||
static u16 sChargingSfxIds[] = {
|
||||
typedef enum {
|
||||
/* 0 */ ENMTHUNDER_SUBTYPE_SPIN_GREAT,
|
||||
/* 1 */ ENMTHUNDER_SUBTYPE_SPIN_REGULAR,
|
||||
/* 2 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT,
|
||||
/* 3 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_REGULAR,
|
||||
/* 4 */ ENMTHUNDER_SUBTYPE_MAX
|
||||
} EnMThunderSubType;
|
||||
|
||||
static u16 sChargingSfxIds[ENMTHUNDER_SUBTYPE_MAX] = {
|
||||
NA_SE_IT_ROLLING_CUT_LV2, // ENMTHUNDER_SUBTYPE_SPIN_GREAT
|
||||
NA_SE_IT_ROLLING_CUT_LV1, // ENMTHUNDER_SUBTYPE_SPIN_REGULAR
|
||||
NA_SE_IT_ROLLING_CUT_LV2, // ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT
|
||||
@@ -75,13 +83,6 @@ static u16 sChargingSfxIds[] = {
|
||||
|
||||
static f32 sScales[] = { 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.25f, 0.2f, 0.15f, 0.0f };
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ ENMTHUNDER_SUBTYPE_SPIN_GREAT,
|
||||
/* 1 */ ENMTHUNDER_SUBTYPE_SPIN_REGULAR,
|
||||
/* 2 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_GREAT,
|
||||
/* 3 */ ENMTHUNDER_SUBTYPE_SWORDBEAM_REGULAR
|
||||
} EnMThunderSubType;
|
||||
|
||||
void EnMThunder_UnkType_Setup(EnMThunder* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
|
||||
@@ -111,33 +111,58 @@ void EnMa4_UpdateEyes(EnMa4* this) {
|
||||
}
|
||||
}
|
||||
|
||||
static AnimationSpeedInfo sAnimationInfo[] = {
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f },
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, -6.0f },
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
typedef enum EnMa4Animation {
|
||||
/* -1 */ ENMA4_ANIM_NONE = -1,
|
||||
/* 0 */ ENMA4_ANIM_0,
|
||||
/* 1 */ ENMA4_ANIM_1,
|
||||
/* 2 */ ENMA4_ANIM_2,
|
||||
/* 3 */ ENMA4_ANIM_3,
|
||||
/* 4 */ ENMA4_ANIM_4,
|
||||
/* 5 */ ENMA4_ANIM_5,
|
||||
/* 6 */ ENMA4_ANIM_6,
|
||||
/* 7 */ ENMA4_ANIM_7,
|
||||
/* 8 */ ENMA4_ANIM_8,
|
||||
/* 9 */ ENMA4_ANIM_9,
|
||||
/* 10 */ ENMA4_ANIM_10,
|
||||
/* 11 */ ENMA4_ANIM_11,
|
||||
/* 12 */ ENMA4_ANIM_12,
|
||||
/* 13 */ ENMA4_ANIM_13,
|
||||
/* 14 */ ENMA4_ANIM_14,
|
||||
/* 15 */ ENMA4_ANIM_15,
|
||||
/* 16 */ ENMA4_ANIM_16,
|
||||
/* 17 */ ENMA4_ANIM_17,
|
||||
/* 18 */ ENMA4_ANIM_18,
|
||||
/* 19 */ ENMA4_ANIM_19,
|
||||
/* 20 */ ENMA4_ANIM_MAX
|
||||
} EnMa4Animation;
|
||||
|
||||
static AnimationSpeedInfo sAnimationSpeedInfo[ENMA4_ANIM_MAX] = {
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_0
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_1
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_2
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_3
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMA4_ANIM_4
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMA4_ANIM_5
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_6
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_7
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_8
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_9
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_10
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_11
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMA4_ANIM_12
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMA4_ANIM_13
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_14
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_15
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_16
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_17
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMA4_ANIM_18
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMA4_ANIM_19
|
||||
};
|
||||
|
||||
void EnMa4_ChangeAnim(EnMa4* this, s32 animIndex) {
|
||||
Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation),
|
||||
sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames);
|
||||
}
|
||||
|
||||
void func_80ABDD9C(EnMa4* this, PlayState* play) {
|
||||
@@ -210,24 +235,24 @@ void EnMa4_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
if (Cutscene_GetSceneLayer(play) != 0) {
|
||||
EnMa4_ChangeAnim(this, 0);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_0);
|
||||
this->state = MA4_STATE_HORSEBACKGAME;
|
||||
EnMa4_InitHorsebackGame(this, play);
|
||||
} else {
|
||||
EnMa4_InitPath(this, play);
|
||||
|
||||
if (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 1)) {
|
||||
EnMa4_ChangeAnim(this, 0);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_0);
|
||||
this->state = MA4_STATE_AFTERHORSEBACKGAME;
|
||||
} else if (gSaveContext.save.entrance == ENTRANCE(ROMANI_RANCH, 10)) {
|
||||
EnMa4_ChangeAnim(this, 0);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_0);
|
||||
this->state = MA4_STATE_AFTERDESCRIBETHEMCS;
|
||||
} else {
|
||||
if (this->type == MA4_TYPE_ALIENS_WON) {
|
||||
EnMa4_ChangeAnim(this, 14);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_14);
|
||||
this->actor.shape.shadowScale = 0.0f;
|
||||
} else {
|
||||
EnMa4_ChangeAnim(this, 8);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_8);
|
||||
}
|
||||
this->state = MA4_STATE_DEFAULT;
|
||||
}
|
||||
@@ -245,30 +270,30 @@ void EnMa4_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
||||
// Running in circles in the ranch
|
||||
void EnMa4_RunInCircles(EnMa4* this, PlayState* play) {
|
||||
static s32 sAnimIndex = 9;
|
||||
static s32 sAnimIndex = ENMA4_ANIM_9;
|
||||
static s32 D_80AC0250 = 0;
|
||||
static s16 D_80AC0254 = 10;
|
||||
Vec3f sp34;
|
||||
s32 pad;
|
||||
s16 sp2E;
|
||||
|
||||
if ((sAnimIndex != 9) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if (sAnimIndex == 3) {
|
||||
if ((sAnimIndex != ENMA4_ANIM_9) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if (sAnimIndex == ENMA4_ANIM_3) {
|
||||
if (D_80AC0250 < 3) {
|
||||
D_80AC0250++;
|
||||
} else {
|
||||
D_80AC0250 = 0;
|
||||
EnMa4_ChangeAnim(this, 13);
|
||||
sAnimIndex = 13;
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_13);
|
||||
sAnimIndex = ENMA4_ANIM_13;
|
||||
}
|
||||
} else {
|
||||
this->actor.speed = 2.7f;
|
||||
EnMa4_ChangeAnim(this, 9);
|
||||
sAnimIndex = 9;
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_9);
|
||||
sAnimIndex = ENMA4_ANIM_9;
|
||||
}
|
||||
}
|
||||
|
||||
if ((sAnimIndex == 13) && Animation_OnFrame(&this->skelAnime, 37.0f)) {
|
||||
if ((sAnimIndex == ENMA4_ANIM_13) && Animation_OnFrame(&this->skelAnime, 37.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_ROMANI_BOW_FLICK);
|
||||
}
|
||||
|
||||
@@ -283,8 +308,8 @@ void EnMa4_RunInCircles(EnMa4* this, PlayState* play) {
|
||||
if ((D_80AC0254 == 0) && ((Rand_Next() % 4) == 0)) {
|
||||
this->actor.speed = 0.0f;
|
||||
D_80AC0254 = 2;
|
||||
EnMa4_ChangeAnim(this, 3);
|
||||
sAnimIndex = 3;
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_3);
|
||||
sAnimIndex = ENMA4_ANIM_3;
|
||||
} else {
|
||||
if (D_80AC0254 > 0) {
|
||||
D_80AC0254--;
|
||||
@@ -310,14 +335,14 @@ void EnMa4_RunInCircles(EnMa4* this, PlayState* play) {
|
||||
void EnMa4_SetupWait(EnMa4* this) {
|
||||
if ((this->state != MA4_STATE_AFTERHORSEBACKGAME) && (this->state != MA4_STATE_AFTERDESCRIBETHEMCS)) {
|
||||
if (this->type != MA4_TYPE_ALIENS_WON) {
|
||||
EnMa4_ChangeAnim(this, 9);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_9);
|
||||
this->actor.speed = 2.7f;
|
||||
} else {
|
||||
EnMa4_ChangeAnim(this, 15);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_15);
|
||||
this->actor.speed = 0.0f;
|
||||
}
|
||||
} else {
|
||||
EnMa4_ChangeAnim(this, 1);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_1);
|
||||
this->actor.speed = 0.0f;
|
||||
}
|
||||
|
||||
@@ -338,10 +363,10 @@ void EnMa4_Wait(EnMa4* this, PlayState* play) {
|
||||
} else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->animTimer++;
|
||||
if (this->animTimer == 5) {
|
||||
EnMa4_ChangeAnim(this, 17); // Traumatized anim
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_17); // Traumatized anim
|
||||
} else if (this->animTimer == 8) {
|
||||
this->animTimer = 0;
|
||||
EnMa4_ChangeAnim(this, 15); // Sitting anim
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_15); // Sitting anim
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,9 +651,9 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, PlayState* play) {
|
||||
|
||||
void EnMa4_SetupDialogueHandler(EnMa4* this) {
|
||||
if (this->type != MA4_TYPE_ALIENS_WON) {
|
||||
EnMa4_ChangeAnim(this, 1);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_1);
|
||||
} else {
|
||||
EnMa4_ChangeAnim(this, 15);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_15);
|
||||
}
|
||||
this->actionFunc = EnMa4_DialogueHandler;
|
||||
}
|
||||
@@ -720,7 +745,7 @@ void EnMa4_HorsebackGameWait(EnMa4* this, PlayState* play) {
|
||||
player->stateFlags3 |= PLAYER_STATE3_400;
|
||||
EnMa4_HorsebackGameCheckPlayerInteractions(this, play);
|
||||
|
||||
if (this->poppedBalloonCounter != D_80AC0258) {
|
||||
if (D_80AC0258 != this->poppedBalloonCounter) {
|
||||
D_80AC0258 = this->poppedBalloonCounter;
|
||||
play->interfaceCtx.minigamePoints = 1;
|
||||
}
|
||||
@@ -805,6 +830,7 @@ void EnMa4_SetupEponasSongCs(EnMa4* this) {
|
||||
}
|
||||
|
||||
static u16 sCueId = 99;
|
||||
|
||||
void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) {
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_120)) {
|
||||
s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_120);
|
||||
@@ -817,12 +843,12 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) {
|
||||
switch (play->csCtx.actorCues[cueChannel]->id) {
|
||||
case 1:
|
||||
this->hasBow = true;
|
||||
EnMa4_ChangeAnim(this, 1);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this->hasBow = false;
|
||||
EnMa4_ChangeAnim(this, 4);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_4);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -833,7 +859,7 @@ void EnMa4_EponasSongCs(EnMa4* this, PlayState* play) {
|
||||
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel);
|
||||
if ((sCueId == 2) && (this->animTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
EnMa4_ChangeAnim(this, 7);
|
||||
EnMa4_ChangeAnim(this, ENMA4_ANIM_7);
|
||||
}
|
||||
} else {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
@@ -105,31 +105,60 @@ static CollisionCheckInfoInit2 sColChkInfoInit2 = {
|
||||
0, 0, 0, 0, MASS_IMMOVABLE,
|
||||
};
|
||||
|
||||
static AnimationSpeedInfo sAnimationInfo[] = {
|
||||
{ &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f },
|
||||
{ &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, -10.0f },
|
||||
{ &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, -8.0f },
|
||||
typedef enum CremiaAnimation {
|
||||
/* -1 */ CREMIA_ANIM_NONE = -1,
|
||||
/* 0 */ CREMIA_ANIM_0,
|
||||
/* 1 */ CREMIA_ANIM_1,
|
||||
/* 2 */ CREMIA_ANIM_2,
|
||||
/* 3 */ CREMIA_ANIM_3,
|
||||
/* 4 */ CREMIA_ANIM_4,
|
||||
/* 5 */ CREMIA_ANIM_5,
|
||||
/* 6 */ CREMIA_ANIM_6,
|
||||
/* 7 */ CREMIA_ANIM_7,
|
||||
/* 8 */ CREMIA_ANIM_8,
|
||||
/* 9 */ CREMIA_ANIM_9,
|
||||
/* 10 */ CREMIA_ANIM_10,
|
||||
/* 11 */ CREMIA_ANIM_11,
|
||||
/* 12 */ CREMIA_ANIM_12,
|
||||
/* 13 */ CREMIA_ANIM_13,
|
||||
/* 14 */ CREMIA_ANIM_14,
|
||||
/* 15 */ CREMIA_ANIM_15,
|
||||
/* 16 */ CREMIA_ANIM_16,
|
||||
/* 17 */ CREMIA_ANIM_17,
|
||||
/* 18 */ CREMIA_ANIM_18,
|
||||
/* 19 */ CREMIA_ANIM_19,
|
||||
/* 20 */ CREMIA_ANIM_20,
|
||||
/* 21 */ CREMIA_ANIM_21,
|
||||
/* 22 */ CREMIA_ANIM_22,
|
||||
/* 23 */ CREMIA_ANIM_23,
|
||||
/* 24 */ CREMIA_ANIM_MAX
|
||||
} CremiaAnimation;
|
||||
|
||||
static AnimationSpeedInfo sAnimationSpeedInfo[CREMIA_ANIM_MAX] = {
|
||||
{ &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_0
|
||||
{ &gCremiaIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // CREMIA_ANIM_1
|
||||
{ &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // CREMIA_ANIM_2
|
||||
{ &gCremiaSpreadArmsStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // CREMIA_ANIM_3
|
||||
{ &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_4
|
||||
{ &gCremiaSpreadArmsLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // CREMIA_ANIM_5
|
||||
{ &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_6
|
||||
{ &gCremiaWalkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_7
|
||||
{ &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_8
|
||||
{ &gCremiaThinkAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_9
|
||||
{ &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_10
|
||||
{ &gCremiaPetCowAnim, 1.0f, ANIMMODE_LOOP, -10.0f }, // CREMIA_ANIM_11
|
||||
{ &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_12
|
||||
{ &gCremiaSittingPetCowAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_13
|
||||
{ &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_14
|
||||
{ &gCremiaSittingAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_15
|
||||
{ &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_16
|
||||
{ &gCremiaSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_17
|
||||
{ &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_18
|
||||
{ &gCremiaHugStartAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_19
|
||||
{ &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_20
|
||||
{ &gCremiaHugLoopAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_21
|
||||
{ &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // CREMIA_ANIM_22
|
||||
{ &gCremiaClapAnim, 1.0f, ANIMMODE_LOOP, -8.0f }, // CREMIA_ANIM_23
|
||||
};
|
||||
|
||||
static TexturePtr sMouthTextures[] = {
|
||||
@@ -228,35 +257,35 @@ s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) {
|
||||
void EnMaYto_InitAnimation(EnMaYto* this, PlayState* play) {
|
||||
switch (this->type) {
|
||||
case MA_YTO_TYPE_DEFAULT:
|
||||
EnMaYto_ChangeAnim(this, 10);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_10);
|
||||
break;
|
||||
|
||||
case MA_YTO_TYPE_DINNER:
|
||||
if (CURRENT_DAY == 1) {
|
||||
EnMaYto_ChangeAnim(this, 14);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_14);
|
||||
} else {
|
||||
EnMaYto_ChangeAnim(this, 16);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_16);
|
||||
}
|
||||
break;
|
||||
|
||||
case MA_YTO_TYPE_BARN:
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) {
|
||||
EnMaYto_ChangeAnim(this, 12);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_12);
|
||||
} else {
|
||||
EnMaYto_ChangeAnim(this, 8);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_8);
|
||||
}
|
||||
break;
|
||||
|
||||
case MA_YTO_TYPE_AFTERMILKRUN:
|
||||
EnMaYto_ChangeAnim(this, 0);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_0);
|
||||
break;
|
||||
|
||||
case MA_YTO_TYPE_4:
|
||||
EnMaYto_ChangeAnim(this, 0);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_0);
|
||||
break;
|
||||
|
||||
default:
|
||||
EnMaYto_ChangeAnim(this, 0);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -310,10 +339,10 @@ s32 EnMaYto_SearchRomani(EnMaYto* this, PlayState* play) {
|
||||
this->actor.child = &romani->actor;
|
||||
romani->actor.parent = &this->actor;
|
||||
return true;
|
||||
} else {
|
||||
npcActor = npcActor->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
npcActor = npcActor->next;
|
||||
continue;
|
||||
}
|
||||
npcActor = npcActor->next;
|
||||
}
|
||||
@@ -355,9 +384,10 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) {
|
||||
|
||||
case MA_YTO_TYPE_4:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void EnMaYto_Destroy(Actor* thisx, PlayState* play) {
|
||||
@@ -378,11 +408,11 @@ void EnMaYto_KeepLookingForRomani(EnMaYto* this, PlayState* play) {
|
||||
|
||||
void EnMaYto_SetupDefaultWait(EnMaYto* this) {
|
||||
if (this->actor.shape.rot.y == this->actor.home.rot.y) {
|
||||
this->animIndex = 11;
|
||||
EnMaYto_ChangeAnim(this, 11);
|
||||
this->animIndex = CREMIA_ANIM_11;
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_11);
|
||||
} else {
|
||||
this->animIndex = 1;
|
||||
EnMaYto_ChangeAnim(this, 1);
|
||||
this->animIndex = CREMIA_ANIM_1;
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_1);
|
||||
}
|
||||
|
||||
EnMaYto_InitFaceExpression(this);
|
||||
@@ -396,9 +426,9 @@ void EnMaYto_DefaultWait(EnMaYto* this, PlayState* play) {
|
||||
|
||||
direction = rotY - this->actor.yawTowardsPlayer;
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 5, 0x3000, 0x100) &&
|
||||
(this->animIndex == 1)) {
|
||||
this->animIndex = 11;
|
||||
EnMaYto_ChangeAnim(this, 11);
|
||||
(this->animIndex == CREMIA_ANIM_1)) {
|
||||
this->animIndex = CREMIA_ANIM_11;
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_11);
|
||||
}
|
||||
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
@@ -410,7 +440,7 @@ void EnMaYto_DefaultWait(EnMaYto* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnMaYto_SetupDefaultDialogueHandler(EnMaYto* this) {
|
||||
EnMaYto_ChangeAnim(this, 1);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_1);
|
||||
this->unk31E = 2;
|
||||
this->actionFunc = EnMaYto_DefaultDialogueHandler;
|
||||
}
|
||||
@@ -436,13 +466,14 @@ void EnMaYto_DefaultDialogueHandler(EnMaYto* this, PlayState* play) {
|
||||
case TEXT_STATE_1:
|
||||
case TEXT_STATE_CLOSING:
|
||||
case TEXT_STATE_3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x3000, 0x100);
|
||||
if ((this->textId == 0x3395) && (this->skelAnime.animation == &gCremiaSpreadArmsStartAnim) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
EnMaYto_ChangeAnim(this, 4);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,12 +482,10 @@ void EnMaYto_DefaultHandlePlayerChoice(EnMaYto* this, PlayState* play) {
|
||||
if (play->msgCtx.choiceIndex == 0) { // Yes
|
||||
Audio_PlaySfx_MessageDecide();
|
||||
EnMaYto_SetFaceExpression(this, 0, 3);
|
||||
// "Milk Road is fixed!"
|
||||
Message_StartTextbox(play, 0x3392, &this->actor);
|
||||
this->textId = 0x3392;
|
||||
} else { // No
|
||||
Audio_PlaySfx_MessageCancel();
|
||||
// "Don't lie!"
|
||||
Message_StartTextbox(play, 0x3391, &this->actor);
|
||||
this->textId = 0x3391;
|
||||
}
|
||||
@@ -480,13 +509,13 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) {
|
||||
break;
|
||||
|
||||
case 0x3394:
|
||||
EnMaYto_ChangeAnim(this, 2);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_2);
|
||||
Message_StartTextbox(play, 0x3395, &this->actor);
|
||||
this->textId = 0x3395;
|
||||
break;
|
||||
|
||||
case 0x3395:
|
||||
EnMaYto_ChangeAnim(this, 1);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_1);
|
||||
Message_StartTextbox(play, 0x3396, &this->actor);
|
||||
this->textId = 0x3396;
|
||||
Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA);
|
||||
@@ -570,6 +599,7 @@ void EnMaYto_DinnerDialogueHandler(EnMaYto* this, PlayState* play) {
|
||||
case TEXT_STATE_1:
|
||||
case TEXT_STATE_CLOSING:
|
||||
case TEXT_STATE_3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -579,12 +609,10 @@ void EnMaYto_DinnerHandlePlayerChoice(EnMaYto* this, PlayState* play) {
|
||||
if (play->msgCtx.choiceIndex == 0) { // Yes
|
||||
Audio_PlaySfx_MessageDecide();
|
||||
EnMaYto_SetFaceExpression(this, 0, 3);
|
||||
// "Milk Road is fixed!"
|
||||
Message_StartTextbox(play, 0x3399, &this->actor);
|
||||
this->textId = 0x3399;
|
||||
} else { // No
|
||||
Audio_PlaySfx_MessageCancel();
|
||||
// "Don't lie!"
|
||||
Message_StartTextbox(play, 0x3398, &this->actor);
|
||||
this->textId = 0x3398;
|
||||
}
|
||||
@@ -695,12 +723,12 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) {
|
||||
|
||||
void EnMaYto_SetupBarnWait(EnMaYto* this) {
|
||||
if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) {
|
||||
EnMaYto_ChangeAnim(this, 13);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_13);
|
||||
func_80B90E50(this, 0);
|
||||
this->unk31E = 0;
|
||||
} else {
|
||||
this->unk320 = 0;
|
||||
EnMaYto_ChangeAnim(this, 9);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_9);
|
||||
func_80B90E50(this, 2);
|
||||
this->unk31E = 2;
|
||||
}
|
||||
@@ -761,6 +789,7 @@ void EnMaYto_BarnDialogueHandler(EnMaYto* this, PlayState* play) {
|
||||
case TEXT_STATE_CLOSING:
|
||||
case TEXT_STATE_3:
|
||||
case TEXT_STATE_CHOICE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -821,7 +850,6 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) {
|
||||
case 0x33B1:
|
||||
this->unk31E = 2;
|
||||
EnMaYto_SetFaceExpression(this, 5, 3);
|
||||
// "I should had believed what Romani said"
|
||||
Message_StartTextbox(play, 0x33B2, &this->actor);
|
||||
this->textId = 0x33B2;
|
||||
Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA);
|
||||
@@ -935,6 +963,9 @@ void EnMaYto_AfterMilkRunDialogueHandler(EnMaYto* this, PlayState* play) {
|
||||
case TEXT_STATE_5:
|
||||
EnMaYto_AfterMilkRunChooseNextDialogue(this, play);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x71C, 0xB6);
|
||||
@@ -945,7 +976,6 @@ void EnMaYto_AfterMilkRunChooseNextDialogue(EnMaYto* this, PlayState* play) {
|
||||
switch (this->textId) {
|
||||
case 0x33C1:
|
||||
EnMaYto_SetFaceExpression(this, 3, 1);
|
||||
// "Thank you. You were cool back there."
|
||||
Message_StartTextbox(play, 0x33C2, &this->actor);
|
||||
this->textId = 0x33C2;
|
||||
break;
|
||||
@@ -1040,22 +1070,23 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, PlayState* play) {
|
||||
if (play->csCtx.curFrame == play->csCtx.actorCues[cueChannel]->startFrame) {
|
||||
u16 cueId = play->csCtx.actorCues[cueChannel]->id;
|
||||
|
||||
//! FAKE:
|
||||
if (1) {}
|
||||
|
||||
if (cueId != sCueId) {
|
||||
sCueId = cueId;
|
||||
switch (cueId) {
|
||||
case 1:
|
||||
EnMaYto_ChangeAnim(this, 0);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_0);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_14_01);
|
||||
EnMaYto_ChangeAnim(this, 18);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_18);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
EnMaYto_ChangeAnim(this, 22);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_22);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1067,7 +1098,7 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, PlayState* play) {
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel);
|
||||
if ((sCueId == 2) && (this->skelAnime.animation == &gCremiaHugStartAnim) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
EnMaYto_ChangeAnim(this, 20);
|
||||
EnMaYto_ChangeAnim(this, CREMIA_ANIM_20);
|
||||
}
|
||||
} else {
|
||||
sCueId = 99;
|
||||
@@ -1277,9 +1308,9 @@ void EnMaYto_BarnStartDialogue(EnMaYto* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnMaYto_ChangeAnim(EnMaYto* this, s32 animIndex) {
|
||||
Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation),
|
||||
sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames);
|
||||
}
|
||||
|
||||
void func_80B90C78(EnMaYto* this, PlayState* play) {
|
||||
|
||||
@@ -77,29 +77,56 @@ static CollisionCheckInfoInit2 sColChkInfoInit2 = {
|
||||
0, 0, 0, 0, MASS_IMMOVABLE,
|
||||
};
|
||||
|
||||
static AnimationSpeedInfo sAnimationInfo[] = {
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f },
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f },
|
||||
{ &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, -6.0f },
|
||||
typedef enum EnMaYtsAnimation {
|
||||
/* -1 */ ENMATYS_ANIM_NONE = -1,
|
||||
/* 0 */ ENMATYS_ANIM_0,
|
||||
/* 1 */ ENMATYS_ANIM_1,
|
||||
/* 2 */ ENMATYS_ANIM_2,
|
||||
/* 3 */ ENMATYS_ANIM_3,
|
||||
/* 4 */ ENMATYS_ANIM_4,
|
||||
/* 5 */ ENMATYS_ANIM_5,
|
||||
/* 6 */ ENMATYS_ANIM_6,
|
||||
/* 7 */ ENMATYS_ANIM_7,
|
||||
/* 8 */ ENMATYS_ANIM_8,
|
||||
/* 9 */ ENMATYS_ANIM_9,
|
||||
/* 10 */ ENMATYS_ANIM_10,
|
||||
/* 11 */ ENMATYS_ANIM_11,
|
||||
/* 12 */ ENMATYS_ANIM_12,
|
||||
/* 13 */ ENMATYS_ANIM_13,
|
||||
/* 14 */ ENMATYS_ANIM_14,
|
||||
/* 15 */ ENMATYS_ANIM_15,
|
||||
/* 16 */ ENMATYS_ANIM_16,
|
||||
/* 17 */ ENMATYS_ANIM_17,
|
||||
/* 18 */ ENMATYS_ANIM_18,
|
||||
/* 19 */ ENMATYS_ANIM_19,
|
||||
/* 20 */ ENMATYS_ANIM_20,
|
||||
/* 21 */ ENMATYS_ANIM_21,
|
||||
/* 22 */ ENMATYS_ANIM_MAX
|
||||
} EnMaYtsAnimation;
|
||||
|
||||
static AnimationSpeedInfo sAnimationSpeedInfo[ENMATYS_ANIM_MAX] = {
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_0
|
||||
{ &gRomaniIdleAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_1
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMATYS_ANIM_2
|
||||
{ &gRomaniSingStartAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMATYS_ANIM_3
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_4
|
||||
{ &gRomaniSingLoopAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_5
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_6
|
||||
{ &gRomaniRunAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_7
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_8
|
||||
{ &gRomaniWalkAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_9
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_10
|
||||
{ &gRomaniLookAroundAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_11
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_12
|
||||
{ &gRomaniShootBowAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_13
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_14
|
||||
{ &gRomaniSittingAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_15
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_16
|
||||
{ &gRomaniSittingHeadShakeAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_17
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // ENMATYS_ANIM_18
|
||||
{ &gRomaniSittingLookDownAnim, 1.0f, ANIMMODE_LOOP, -6.0f }, // ENMATYS_ANIM_19
|
||||
{ &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // ENMATYS_ANIM_20
|
||||
{ &gRomaniTurnAroundAndFlickHairAnim, 1.0f, ANIMMODE_ONCE, -6.0f }, // ENMATYS_ANIM_21
|
||||
};
|
||||
|
||||
static TexturePtr sMouthTextures[] = {
|
||||
@@ -114,9 +141,9 @@ static TexturePtr sEyeTextures[] = {
|
||||
};
|
||||
|
||||
void EnMaYts_ChangeAnim(EnMaYts* this, s32 animIndex) {
|
||||
Animation_Change(&this->skelAnime, sAnimationInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationInfo[animIndex].animation), sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
Animation_Change(&this->skelAnime, sAnimationSpeedInfo[animIndex].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationSpeedInfo[animIndex].animation),
|
||||
sAnimationSpeedInfo[animIndex].mode, sAnimationSpeedInfo[animIndex].morphFrames);
|
||||
}
|
||||
|
||||
void func_80B8D12C(EnMaYts* this, PlayState* play) {
|
||||
@@ -138,32 +165,32 @@ void EnMaYts_InitAnimation(EnMaYts* this, PlayState* play) {
|
||||
switch (this->type) {
|
||||
case MA_YTS_TYPE_BARN:
|
||||
this->actor.targetMode = TARGET_MODE_0;
|
||||
EnMaYts_ChangeAnim(this, 0);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0);
|
||||
break;
|
||||
|
||||
case MA_YTS_TYPE_SITTING:
|
||||
this->actor.targetMode = TARGET_MODE_6;
|
||||
// Day 1 or "Winning" the alien invasion
|
||||
if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) {
|
||||
EnMaYts_ChangeAnim(this, 14);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_14);
|
||||
} else {
|
||||
EnMaYts_ChangeAnim(this, 18);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_18);
|
||||
}
|
||||
break;
|
||||
|
||||
case MA_YTS_TYPE_SLEEPING:
|
||||
this->actor.targetMode = TARGET_MODE_0;
|
||||
this->actor.draw = EnMaYts_DrawSleeping;
|
||||
EnMaYts_ChangeAnim(this, 0);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0);
|
||||
break;
|
||||
|
||||
case MA_YTS_TYPE_ENDCREDITS:
|
||||
this->actor.targetMode = TARGET_MODE_0;
|
||||
EnMaYts_ChangeAnim(this, 0);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0);
|
||||
break;
|
||||
|
||||
default:
|
||||
EnMaYts_ChangeAnim(this, 0);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -374,6 +401,7 @@ void EnMaYts_DialogueHandler(EnMaYts* this, PlayState* play) {
|
||||
case TEXT_STATE_CLOSING:
|
||||
case TEXT_STATE_3:
|
||||
case TEXT_STATE_CHOICE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -385,6 +413,7 @@ void EnMaYts_SetupEndCreditsHandler(EnMaYts* this) {
|
||||
}
|
||||
|
||||
static u16 sCueId = 99;
|
||||
|
||||
void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) {
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_120)) {
|
||||
s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_120);
|
||||
@@ -396,22 +425,22 @@ void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) {
|
||||
switch (play->csCtx.actorCues[cueChannel]->id) {
|
||||
case 1:
|
||||
this->hasBow = true;
|
||||
EnMaYts_ChangeAnim(this, 0);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_0);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this->hasBow = false;
|
||||
EnMaYts_ChangeAnim(this, 2);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_2);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
this->hasBow = true;
|
||||
EnMaYts_ChangeAnim(this, 12);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_12);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
this->hasBow = true;
|
||||
EnMaYts_ChangeAnim(this, 20);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_20);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -424,7 +453,7 @@ void EnMaYts_EndCreditsHandler(EnMaYts* this, PlayState* play) {
|
||||
if ((sCueId == 2) && (this->endCreditsFlag == 0) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->endCreditsFlag++;
|
||||
EnMaYts_ChangeAnim(this, 5);
|
||||
EnMaYts_ChangeAnim(this, ENMATYS_ANIM_5);
|
||||
}
|
||||
} else {
|
||||
sCueId = 99;
|
||||
|
||||
@@ -281,7 +281,7 @@ void func_80A4E2E8(EnMkk* this, PlayState* play) {
|
||||
func_80A4E190(this);
|
||||
} else if ((this->unk_149 == 0) && (!(player->stateFlags3 & PLAYER_STATE3_100)) &&
|
||||
(Player_GetMask(play) != PLAYER_MASK_STONE) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) &&
|
||||
(Actor_IsFacingPlayer(&this->actor, 0x1800)) && (this->actor.xzDistToPlayer < 120.0f) &&
|
||||
Actor_IsFacingPlayer(&this->actor, 0x1800) && (this->actor.xzDistToPlayer < 120.0f) &&
|
||||
(fabsf(this->actor.playerHeightRel) < 100.0f)) {
|
||||
func_80A4E58C(this);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ void EnMm2_WaitForRead(EnMm2* this, PlayState* play) {
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &play->state)) {
|
||||
Message_StartTextbox(play, 0x277B, &this->actor);
|
||||
this->actionFunc = EnMm2_Reading;
|
||||
} else if ((this->actor.xzDistToPlayer < 60.0f) && (Player_IsFacingActor(&this->actor, 0x3000, play))) {
|
||||
} else if ((this->actor.xzDistToPlayer < 60.0f) && Player_IsFacingActor(&this->actor, 0x3000, play)) {
|
||||
Actor_OfferTalk(&this->actor, play, 110.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ void func_80A44F40(EnSekihi* this, PlayState* play) {
|
||||
void func_80A450B0(EnSekihi* this, PlayState* play) {
|
||||
if (Actor_ProcessTalkRequest(&this->dyna.actor, &play->state)) {
|
||||
this->actionFunc = func_80A44F40;
|
||||
} else if ((this->dyna.actor.xzDistToPlayer < 100.0f) && (Player_IsFacingActor(&this->dyna.actor, 0x2600, play))) {
|
||||
} else if ((this->dyna.actor.xzDistToPlayer < 100.0f) && Player_IsFacingActor(&this->dyna.actor, 0x2600, play)) {
|
||||
Actor_OfferTalk(&this->dyna.actor, play, 120.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,7 +407,7 @@ void EnSlime_MoveInDirection(EnSlime* this, PlayState* play) {
|
||||
// If actor is too far from home, start return home cycle
|
||||
EnSlime_SetupMoveToHome(this);
|
||||
} else if ((Player_GetMask(play) != PLAYER_MASK_STONE) && (this->actor.xzDistToPlayer < 280.0f) &&
|
||||
(Actor_IsFacingPlayer(&this->actor, 0x5000))) {
|
||||
Actor_IsFacingPlayer(&this->actor, 0x5000)) {
|
||||
// If player is close enough to chuchu while not wearing the stone mask, and the chuchu is facing player,
|
||||
// initialize attack cycle
|
||||
EnSlime_SetupTurnToPlayer(this);
|
||||
|
||||
@@ -4074,7 +4074,7 @@ s32 func_80830E30(Player* this, PlayState* play) {
|
||||
}
|
||||
|
||||
PlayerAnimation_PlayOnce(play, &this->skelAnimeUpper,
|
||||
(Player_IsHoldingHookshot(this))
|
||||
Player_IsHoldingHookshot(this)
|
||||
? &gPlayerAnim_link_hook_shot_ready
|
||||
: ((this->transformation == PLAYER_FORM_DEKU) ? &gPlayerAnim_pn_tamahakidf
|
||||
: &gPlayerAnim_link_bow_bow_ready));
|
||||
|
||||
Reference in New Issue
Block a user