Match some entity actors H-N (#1827)

This commit is contained in:
cadmic 2024-02-22 06:08:40 -08:00 committed by GitHub
parent 33d8044e45
commit 93295a842b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 219 additions and 179 deletions

View File

@ -17,7 +17,7 @@
void EnHeishi2_Init(Actor* thisx, PlayState* play);
void EnHeishi2_Destroy(Actor* thisx, PlayState* play);
void EnHeishi2_Update(Actor* thisx, PlayState* play);
void EnHeishi2_Draw(Actor* thisx, PlayState* play);
void EnHeishi2_Draw(Actor* thisx, PlayState* play2);
void EnHeishi2_DrawKingGuard(Actor* thisx, PlayState* play);
void EnHeishi2_DoNothing1(EnHeishi2* this, PlayState* play);
@ -389,7 +389,6 @@ void func_80A5399C(EnHeishi2* this, PlayState* play) {
void func_80A53AD4(EnHeishi2* this, PlayState* play) {
Player* player = GET_PLAYER(play);
s32 exchangeItemId;
s16 yawDiffTemp;
s16 yawDiff;
@ -400,8 +399,10 @@ void func_80A53AD4(EnHeishi2* this, PlayState* play) {
this->actor.textId = 0x200E;
}
this->unk_300 = TEXT_STATE_DONE;
if (Actor_TalkOfferAccepted(&this->actor, play)) {
exchangeItemId = func_8002F368(play);
s32 exchangeItemId = func_8002F368(play);
if (exchangeItemId == EXCH_ITEM_ZELDAS_LETTER) {
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
player->actor.textId = 0x2010;
@ -410,12 +411,14 @@ void func_80A53AD4(EnHeishi2* this, PlayState* play) {
} else if (exchangeItemId != EXCH_ITEM_NONE) {
player->actor.textId = 0x200F;
}
} else {
yawDiffTemp = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
yawDiff = ABS(yawDiffTemp);
if (!(120.0f < this->actor.xzDistToPlayer) && (yawDiff < 0x4300)) {
Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 100.0f, EXCH_ITEM_ZELDAS_LETTER);
}
return;
}
yawDiffTemp = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
yawDiff = ABS(yawDiffTemp);
if (!(120.0f < this->actor.xzDistToPlayer) && (yawDiff < 0x4300)) {
Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 100.0f, EXCH_ITEM_ZELDAS_LETTER);
}
}
@ -834,9 +837,9 @@ void EnHeishi2_DrawKingGuard(Actor* thisx, PlayState* play) {
CLOSE_DISPS(play->state.gfxCtx, "../z_en_heishi2.c", 1777);
}
void EnHeishi2_Draw(Actor* thisx, PlayState* play) {
void EnHeishi2_Draw(Actor* thisx, PlayState* play2) {
PlayState* play = (PlayState*)play2;
EnHeishi2* this = (EnHeishi2*)thisx;
Mtx* mtx;
s32 linkChildObjectSlot;
OPEN_DISPS(play->state.gfxCtx, "../z_en_heishi2.c", 1792);
@ -848,6 +851,8 @@ void EnHeishi2_Draw(Actor* thisx, PlayState* play) {
if ((this->type == 5) && GET_INFTABLE(INFTABLE_77)) {
linkChildObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_LINK_CHILD);
if (linkChildObjectSlot >= 0) {
Mtx* mtx;
Matrix_Put(&this->mtxf_330);
Matrix_Translate(-570.0f, 0.0f, 0.0f, MTXMODE_APPLY);
Matrix_RotateZ(DEG_TO_RAD(70), MTXMODE_APPLY);

View File

@ -211,6 +211,8 @@ void func_80A56614(EnHeishi4* this, PlayState* play) {
}
void func_80A5673C(EnHeishi4* this, PlayState* play) {
f32 frames;
if (GET_EVENTCHKINF(EVENTCHKINF_45)) {
PRINTF(VT_FGCOL(YELLOW) " ☆☆☆☆☆ マスターソード祝入手! ☆☆☆☆☆ \n" VT_RST);
Actor_Kill(&this->actor);
@ -219,7 +221,7 @@ void func_80A5673C(EnHeishi4* this, PlayState* play) {
this->unk_284 = 0;
if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
if (!GET_INFTABLE(INFTABLE_6C)) {
f32 frames = Animation_GetLastFrame(&gEnHeishiDyingGuardAnim_00C444);
frames = Animation_GetLastFrame(&gEnHeishiDyingGuardAnim_00C444);
Animation_Change(&this->skelAnime, &gEnHeishiDyingGuardAnim_00C444, 1.0f, 0.0f, (s16)frames, ANIMMODE_LOOP,
-10.0f);
this->actor.textId = 0x7007;

View File

@ -136,12 +136,14 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play)
Player* player = GET_PLAYER(play);
s32 i;
EnHorse* ingoHorse;
EnHorse* horse;
Player* player2 = player;
if ((this->startTimer > 50) && !(this->startFlags & INGORACE_SET_TIMER)) {
this->startFlags |= INGORACE_SET_TIMER;
Interface_SetTimer(0);
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->startFlags & INGORACE_PLAYER_MOVE)) {
EnHorse* horse;
this->startFlags |= INGORACE_PLAYER_MOVE;
horse = (EnHorse*)player->rideActor;
horse->inRace = 1;
@ -175,8 +177,6 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play)
}
if (this->result == INGORACE_NO_RESULT) {
Player* player2 = player;
if ((player2->rideActor != NULL) && (this->playerCheck[2] == 1) && AT_FINISH_LINE(player2->rideActor)) {
this->playerFinish++;
if (this->playerFinish > 0) {
@ -319,6 +319,8 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
s32 i;
Player* player = GET_PLAYER(play);
EnHorse* horse;
Player* player2 = player;
f32 dist;
if (!(this->raceFlags & MALONRACE_PLAYER_ON_MARK) && AT_FINISH_LINE(player->rideActor)) {
this->raceFlags |= MALONRACE_PLAYER_ON_MARK;
@ -330,10 +332,12 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
this->raceFlags |= MALONRACE_SET_TIMER;
Interface_SetTimer(0);
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->raceFlags & MALONRACE_PLAYER_MOVE)) {
this->raceFlags |= MALONRACE_PLAYER_MOVE;
horse = (EnHorse*)player->rideActor;
EnHorse* rideHorse;
horse->inRace = 1;
this->raceFlags |= MALONRACE_PLAYER_MOVE;
rideHorse = (EnHorse*)player->rideActor;
rideHorse->inRace = 1;
} else if ((this->startTimer > 81) && !(this->raceFlags & MALONRACE_START_SFX)) {
this->raceFlags |= MALONRACE_START_SFX;
Audio_PlaySfxGeneral(NA_SE_SY_START_SHOT, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@ -342,9 +346,6 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
this->startTimer++;
if (this->result == MALONRACE_NO_RESULT) {
Player* player2 = player;
f32 dist;
for (i = 0; i < 16; i++) {
if ((this->lapCount == 0) && (i >= 8)) {
break;

View File

@ -344,8 +344,6 @@ void func_80A6A068(EnHorseLinkChild* this, PlayState* play) {
f32 distFromLink;
s32 animationEnded;
s32 newAnimationIdx;
f32 distFromHome;
f32 distLinkFromHome;
func_80A69F5C(this, play);
player = GET_PLAYER(play);
@ -369,8 +367,9 @@ void func_80A6A068(EnHorseLinkChild* this, PlayState* play) {
animationEnded = SkelAnime_Update(&this->skin.skelAnime);
if (animationEnded || (this->animationIdx == 1) || (this->animationIdx == 0)) {
if (GET_EVENTCHKINF(EVENTCHKINF_TALKED_TO_CHILD_MALON_AT_RANCH)) {
distFromHome = Math3D_Vec3f_DistXYZ(&this->actor.world.pos, &this->actor.home.pos);
distLinkFromHome = Math3D_Vec3f_DistXYZ(&player->actor.world.pos, &this->actor.home.pos);
f32 distFromHome = Math3D_Vec3f_DistXYZ(&this->actor.world.pos, &this->actor.home.pos);
f32 distLinkFromHome = Math3D_Vec3f_DistXYZ(&player->actor.world.pos, &this->actor.home.pos);
if (distLinkFromHome > 250.0f) {
if (distFromHome >= 300.0f) {
newAnimationIdx = 4;

View File

@ -31,7 +31,7 @@ typedef enum {
void EnHorseNormal_Init(Actor* thisx, PlayState* play);
void EnHorseNormal_Destroy(Actor* thisx, PlayState* play);
void EnHorseNormal_Update(Actor* thisx, PlayState* play);
void EnHorseNormal_Draw(Actor* thisx, PlayState* play);
void EnHorseNormal_Draw(Actor* thisx, PlayState* play2);
void func_80A6B91C(EnHorseNormal* this, PlayState* play);
void func_80A6BC48(EnHorseNormal* this);
@ -333,10 +333,10 @@ void EnHorseNormal_CycleAnimations(EnHorseNormal* this, PlayState* play) {
void func_80A6BC48(EnHorseNormal* this) {
this->action = HORSE_WANDER;
this->animationIdx = 0;
this->unk_21C = 0;
this->unk_21E = 0;
this->actor.speed = 0.0f;
this->unk_218 = 0.0f;
this->unk_21C = 0;
this->unk_21E = 0;
Animation_Change(&this->skin.skelAnime, sAnimations[this->animationIdx], func_80A6B30C(this), 0.0f,
Animation_GetLastFrame(sAnimations[this->animationIdx]), ANIMMODE_ONCE, 0.0f);
}
@ -484,10 +484,10 @@ void EnHorseNormal_Wander(EnHorseNormal* this, PlayState* play) {
void func_80A6C4CC(EnHorseNormal* this) {
this->action = HORSE_WAIT;
this->animationIdx = 0;
this->unk_21C = 0;
this->unk_21E = 0;
this->actor.speed = 0.0f;
this->unk_218 = 0.0f;
this->unk_21C = 0;
this->unk_21E = 0;
Animation_Change(&this->skin.skelAnime, sAnimations[this->animationIdx], func_80A6B30C(this), 0.0f,
Animation_GetLastFrame(sAnimations[this->animationIdx]), ANIMMODE_ONCE, 0.0f);
}
@ -516,11 +516,11 @@ void EnHorseNormal_Wait(EnHorseNormal* this, PlayState* play) {
void func_80A6C6B0(EnHorseNormal* this) {
this->action = HORSE_WAIT_CLONE;
this->animationIdx = 0;
this->actor.speed = 0.0f;
this->unk_218 = 0.0f;
this->unk_21C = 0;
this->unk_21E = 0;
this->actor.flags |= ACTOR_FLAG_4 | ACTOR_FLAG_5;
this->actor.speed = 0.0f;
this->unk_218 = 0.0f;
Animation_Change(&this->skin.skelAnime, sAnimations[this->animationIdx], func_80A6B30C(this), 0.0f,
Animation_GetLastFrame(sAnimations[this->animationIdx]), ANIMMODE_ONCE, 0.0f);
}
@ -648,9 +648,9 @@ void func_80A6CC88(PlayState* play, EnHorseNormal* this, Vec3f* arg2) {
}
}
void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
void EnHorseNormal_Draw(Actor* thisx, PlayState* play2) {
EnHorseNormal* this = (EnHorseNormal*)thisx;
Mtx* mtx2;
PlayState* play = (PlayState*)play2;
OPEN_DISPS(play->state.gfxCtx, "../z_en_horse_normal.c", 2224);
@ -662,7 +662,7 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
if (this->action == HORSE_WAIT_CLONE) {
MtxF skinMtx;
Mtx* mtx1;
Mtx* mtx;
Vec3f clonePos = { 0.0f, 0.0f, 0.0f };
s16 cloneRotY;
f32 distFromGround = this->actor.world.pos.y - this->actor.floorHeight;
@ -702,12 +702,12 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
this->actor.shape.rot.x, cloneRotY, this->actor.shape.rot.z, clonePos.x,
(this->actor.shape.yOffset * this->actor.scale.y) + clonePos.y,
clonePos.z);
mtx1 = SkinMatrix_MtxFToNewMtx(play->state.gfxCtx, &skinMtx);
if (mtx1 == NULL) {
mtx = SkinMatrix_MtxFToNewMtx(play->state.gfxCtx, &skinMtx);
if (mtx == NULL) {
return;
}
gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(POLY_OPA_DISP++, mtx1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
func_800A63CC(&this->actor, play, &this->skin, NULL, NULL, true, 0,
SKIN_DRAW_FLAG_CUSTOM_TRANSFORMS | SKIN_DRAW_FLAG_CUSTOM_MATRIX);
this->cloneCollider.dim.pos.x = clonePos.x;
@ -720,9 +720,9 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play) {
temp_f0_4 = (1.0f - (distFromGround * 0.01f)) * this->actor.shape.shadowScale;
Matrix_Scale(this->actor.scale.x * temp_f0_4, 1.0f, this->actor.scale.z * temp_f0_4, MTXMODE_APPLY);
Matrix_RotateY(BINANG_TO_RAD(cloneRotY), MTXMODE_APPLY);
mtx2 = MATRIX_NEW(play->state.gfxCtx, "../z_en_horse_normal.c", 2329);
if (mtx2 != NULL) {
gSPMatrix(POLY_XLU_DISP++, mtx2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
mtx = MATRIX_NEW(play->state.gfxCtx, "../z_en_horse_normal.c", 2329);
if (mtx != NULL) {
gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, gHorseShadowDL);
}
}

View File

@ -1106,8 +1106,6 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
u8 i;
void* ptr;
if (1) {}
OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2170);
if (limbIndex == 15) {
@ -1143,6 +1141,8 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
rot->z += Math_CosS(this->unk_23C[limbIndex]) * 200.0f;
}
if (1) {}
CLOSE_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2228);
return false;

View File

@ -356,9 +356,13 @@ void EnIceHono_Update(Actor* thisx, PlayState* play) {
sin156 = Math_SinS(this->unk_156);
sin154 = Math_SinS(this->unk_154);
intensity = (Rand_ZeroOne() * 0.05f) + ((sin154 * 0.125f) + (sin156 * 0.1f)) + 0.425f;
#if OOT_DEBUG
if ((intensity > 0.7f) || (intensity < 0.2f)) {
PRINTF("ありえない値(ratio = %f)\n", intensity); // "impossible value(ratio = %f)"
}
#endif
Lights_PointNoGlowSetInfo(&this->lightInfo, this->actor.world.pos.x, (s16)this->actor.world.pos.y + 10,
this->actor.world.pos.z, (s32)(155.0f * intensity), (s32)(210.0f * intensity),
(s32)(255.0f * intensity), 1400);

View File

@ -708,18 +708,13 @@ void EnIk_Die(EnIk* this, PlayState* play) {
}
void EnIk_UpdateDamage(EnIk* this, PlayState* play) {
f32 frames;
s16 pad;
u8 prevHealth;
s32 damageEffect;
Vec3f sparksPos;
if ((this->unk_2F8 == 3) || (this->unk_2F8 == 2)) {
return;
}
if (this->shieldCollider.base.acFlags & AC_BOUNCED) {
frames = Animation_GetLastFrame(&gIronKnuckleBlockAnim) - 2.0f;
f32 frames = Animation_GetLastFrame(&gIronKnuckleBlockAnim) - 2.0f;
if (this->skelAnime.curFrame < frames) {
this->skelAnime.curFrame = frames;
@ -728,7 +723,11 @@ void EnIk_UpdateDamage(EnIk* this, PlayState* play) {
this->shieldCollider.base.acFlags &= ~AC_BOUNCED;
this->bodyCollider.base.acFlags &= ~AC_HIT;
} else if (this->bodyCollider.base.acFlags & AC_HIT) {
sparksPos = this->actor.world.pos;
s16 pad;
u8 prevHealth;
s32 damageEffect;
Vec3f sparksPos = this->actor.world.pos;
sparksPos.y += 50.0f;
Actor_SetDropFlag(&this->actor, &this->bodyCollider.elem, true);

View File

@ -88,8 +88,8 @@ void func_80A89A6C(EnJsjutan* this, PlayState* play) {
Vtx* phi_s0_2;
Vec3f sp108;
Vec3f spFC;
Actor* actorProfessor;
Actor* actorBeanGuy;
f32 rotX;
f32 rotZ;
f32 dxVtx;
f32 dyVtx;
f32 dzVtx;
@ -148,6 +148,9 @@ void func_80A89A6C(EnJsjutan* this, PlayState* play) {
// Credits scene. The magic carpet man is friends with the bean guy and the lakeside professor.
if ((gSaveContext.save.entranceIndex == ENTR_LON_LON_RANCH_0) && (gSaveContext.sceneLayer == 8)) {
Actor* actorProfessor;
Actor* actorBeanGuy;
isInCreditsScene = true;
actorProfessor = play->actorCtx.actorLists[ACTORCAT_NPC].head;
@ -320,10 +323,6 @@ void func_80A89A6C(EnJsjutan* this, PlayState* play) {
// Fancy math to smooth each part of the wave considering its neighborhood.
for (i = 0; i < ARRAY_COUNT(sCarpetOddVtx); i++, carpetVtx++) {
f32 rotX;
f32 rotZ;
s32 pad;
// Carpet size is 12x12.
if ((i % 12) == 11) { // Last column.
j = i - 1;

View File

@ -194,10 +194,14 @@ static u16 sCutFlags[] = {
};
void EnKanban_SetFloorRot(EnKanban* this) {
f32 nx;
f32 ny;
f32 nz;
if (this->actor.floorPoly != NULL) {
f32 nx = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.x);
f32 ny = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y);
f32 nz = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.z);
nx = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.x);
ny = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y);
nz = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.z);
this->floorRot.x = -Math_FAtan2F(-nz * ny, 1.0f);
this->floorRot.z = Math_FAtan2F(-nx * ny, 1.0f);
@ -437,7 +441,6 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) {
f32 tempY;
f32 tempZ;
f32 tempYDistToWater;
u8 onGround;
Actor_MoveXZGravity(&this->actor);
Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 30.0f, 50.0f,
@ -460,107 +463,112 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) {
this->actor.yDistToWater = tempYDistToWater;
PRINTF(VT_RST);
onGround = (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND);
if (this->spinXFlag) {
this->spinRot.x += this->spinVel.x;
this->spinVel.x -= 0x800;
if ((this->spinRot.x <= 0) && onGround) {
this->spinRot.x = 0;
this->spinVel.x = 0;
if (1) {
u8 onGround = (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND);
if (this->spinXFlag) {
this->spinRot.x += this->spinVel.x;
this->spinVel.x -= 0x800;
if ((this->spinRot.x <= 0) && onGround) {
this->spinRot.x = 0;
this->spinVel.x = 0;
}
} else {
this->spinRot.x -= this->spinVel.x;
this->spinVel.x -= 0x800;
if ((this->spinRot.x >= 0) && onGround) {
this->spinRot.x = 0;
this->spinVel.x = 0;
}
}
} else {
this->spinRot.x -= this->spinVel.x;
this->spinVel.x -= 0x800;
if ((this->spinRot.x >= 0) && onGround) {
this->spinRot.x = 0;
this->spinVel.x = 0;
if (this->spinVel.x < -0xC00) {
this->spinVel.x = -0xC00;
}
}
if (this->spinVel.x < -0xC00) {
this->spinVel.x = -0xC00;
}
if (this->spinZFlag) {
this->spinRot.z += this->spinVel.z;
this->spinVel.z -= 0x800;
if ((this->spinRot.z <= 0) && onGround) {
this->spinRot.z = 0;
this->spinVel.z = 0;
if (this->spinZFlag) {
this->spinRot.z += this->spinVel.z;
this->spinVel.z -= 0x800;
if ((this->spinRot.z <= 0) && onGround) {
this->spinRot.z = 0;
this->spinVel.z = 0;
}
} else {
this->spinRot.z -= this->spinVel.z;
this->spinVel.z -= 0x800;
if ((this->spinRot.z >= 0) && onGround) {
this->spinRot.z = 0;
this->spinVel.z = 0;
}
}
} else {
this->spinRot.z -= this->spinVel.z;
this->spinVel.z -= 0x800;
if ((this->spinRot.z >= 0) && onGround) {
this->spinRot.z = 0;
this->spinVel.z = 0;
if (this->spinVel.z < -0xC00) {
this->spinVel.z = -0xC00;
}
if (this->actor.bgCheckFlags & BGCHECKFLAG_WALL) {
this->actor.speed *= -0.5f;
Actor_PlaySfx(&this->actor, NA_SE_EV_WOODPLATE_BOUND);
}
if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER_TOUCH) {
this->actionState = ENKANBAN_WATER;
Actor_PlaySfx(&this->actor, NA_SE_EV_BOMB_DROP_WATER);
this->bounceX = this->bounceZ = 0;
this->actor.world.pos.y += this->actor.yDistToWater;
EffectSsGSplash_Spawn(play, &this->actor.world.pos, NULL, NULL, 0, (this->partCount * 20) + 300);
EffectSsGRipple_Spawn(play, &this->actor.world.pos, 150, 650, 0);
EffectSsGRipple_Spawn(play, &this->actor.world.pos, 300, 800, 5);
this->actor.velocity.y = 0.0f;
this->actor.gravity = 0.0f;
PRINTF(" WAT Y = %f\n", this->actor.yDistToWater);
PRINTF(" POS Y = %f\n", this->actor.world.pos.y);
PRINTF(" GROUND Y = %f\n", this->actor.floorHeight);
break;
}
if (onGround) {
if (this->bounceCount <= 0) {
this->bounceCount++;
this->actor.velocity.y *= -0.3f;
this->actor.world.rot.y += (s16)Rand_CenteredFloat(16384.0f);
} else {
this->actor.velocity.y = 0.0f;
}
this->actor.speed *= 0.7f;
if ((this->spinRot.x == 0) && (this->bounceX != 0)) {
this->spinVel.x = this->bounceX * 0x200;
if (this->bounceX != 0) {
this->bounceX -= 5;
if (this->bounceX <= 0) {
this->bounceX = 0;
}
}
if (Rand_ZeroOne() < 0.5f) {
this->spinXFlag = true;
} else {
this->spinXFlag = false;
}
bounced = true;
}
if ((this->spinRot.z == 0) && (this->bounceZ != 0)) {
this->spinVel.z = this->bounceZ * 0x200;
if (this->bounceZ != 0) {
this->bounceZ -= 5;
if (this->bounceZ <= 0) {
this->bounceZ = 0;
}
}
if (Rand_ZeroOne() < 0.5f) {
this->spinZFlag = true;
} else {
this->spinZFlag = false;
}
bounced = true;
}
Math_ApproachS(&this->actor.shape.rot.x, this->direction * 0x4000, 1, 0x2000);
} else {
this->actor.shape.rot.y += this->spinVel.y;
this->actor.shape.rot.x += this->direction * 0x7D0;
}
}
if (this->spinVel.z < -0xC00) {
this->spinVel.z = -0xC00;
}
if (this->actor.bgCheckFlags & BGCHECKFLAG_WALL) {
this->actor.speed *= -0.5f;
Actor_PlaySfx(&this->actor, NA_SE_EV_WOODPLATE_BOUND);
}
if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER_TOUCH) {
this->actionState = ENKANBAN_WATER;
Actor_PlaySfx(&this->actor, NA_SE_EV_BOMB_DROP_WATER);
this->bounceX = this->bounceZ = 0;
this->actor.world.pos.y += this->actor.yDistToWater;
EffectSsGSplash_Spawn(play, &this->actor.world.pos, NULL, NULL, 0, (this->partCount * 20) + 300);
EffectSsGRipple_Spawn(play, &this->actor.world.pos, 150, 650, 0);
EffectSsGRipple_Spawn(play, &this->actor.world.pos, 300, 800, 5);
this->actor.velocity.y = 0.0f;
this->actor.gravity = 0.0f;
PRINTF(" WAT Y = %f\n", this->actor.yDistToWater);
PRINTF(" POS Y = %f\n", this->actor.world.pos.y);
PRINTF(" GROUND Y = %f\n", this->actor.floorHeight);
break;
}
if (onGround) {
if (this->bounceCount <= 0) {
this->bounceCount++;
this->actor.velocity.y *= -0.3f;
this->actor.world.rot.y += (s16)Rand_CenteredFloat(16384.0f);
} else {
this->actor.velocity.y = 0.0f;
}
this->actor.speed *= 0.7f;
if ((this->spinRot.x == 0) && (this->bounceX != 0)) {
this->spinVel.x = this->bounceX * 0x200;
if (this->bounceX != 0) {
this->bounceX -= 5;
if (this->bounceX <= 0) {
this->bounceX = 0;
}
}
if (Rand_ZeroOne() < 0.5f) {
this->spinXFlag = true;
} else {
this->spinXFlag = false;
}
bounced = true;
}
if ((this->spinRot.z == 0) && (this->bounceZ != 0)) {
this->spinVel.z = this->bounceZ * 0x200;
if (this->bounceZ != 0) {
this->bounceZ -= 5;
if (this->bounceZ <= 0) {
this->bounceZ = 0;
}
}
if (Rand_ZeroOne() < 0.5f) {
this->spinZFlag = true;
} else {
this->spinZFlag = false;
}
bounced = true;
}
Math_ApproachS(&this->actor.shape.rot.x, this->direction * 0x4000, 1, 0x2000);
} else {
this->actor.shape.rot.y += this->spinVel.y;
this->actor.shape.rot.x += this->direction * 0x7D0;
}
if (bounced) {
s16 dustCount;
s16 j;

View File

@ -47,13 +47,6 @@ static ColliderCylinderInit D_80AA0420 = {
static u32 D_80AA044C[] = { DMG_SPIN_MASTER, DMG_SPIN_KOKIRI, DMG_SPIN_GIANT };
static u32 D_80AA0458[] = { DMG_JUMP_MASTER, DMG_JUMP_KOKIRI, DMG_JUMP_GIANT };
static u16 sSfxIds[] = {
NA_SE_IT_ROLLING_CUT_LV2,
NA_SE_IT_ROLLING_CUT_LV1,
NA_SE_IT_ROLLING_CUT_LV2,
NA_SE_IT_ROLLING_CUT_LV1,
};
// Setup action
void func_80A9EFE0(EnMThunder* this, EnMThunderActionFunc actionFunc) {
this->actionFunc = actionFunc;
@ -207,8 +200,19 @@ void func_80A9F408(EnMThunder* this, PlayState* play) {
func_80A9EFE0(this, func_80A9F9B4);
this->unk_1C4 = 8;
Audio_PlaySfxGeneral(sSfxIds[this->unk_1C6], &player->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
{
static u16 sSfxIds[] = {
NA_SE_IT_ROLLING_CUT_LV2,
NA_SE_IT_ROLLING_CUT_LV1,
NA_SE_IT_ROLLING_CUT_LV2,
NA_SE_IT_ROLLING_CUT_LV1,
};
Audio_PlaySfxGeneral(sSfxIds[this->unk_1C6], &player->actor.projectedPos, 4,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
this->unk_1AC = 1.0f;
return;
}

View File

@ -264,8 +264,8 @@ void func_80AA204C(EnMa2* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (player->stateFlags2 & PLAYER_STATE2_24) {
player->unk_6A8 = &this->actor;
player->stateFlags2 |= PLAYER_STATE2_25;
player->unk_6A8 = &this->actor;
Message_StartOcarina(play, OCARINA_ACTION_CHECK_EPONA);
this->actionFunc = func_80AA20E4;
} else if (this->actor.xzDistToPlayer < 30.0f + this->collider.dim.radius) {

View File

@ -1052,13 +1052,13 @@ void EnMb_ClubDamaged(EnMb* this, PlayState* play) {
}
void EnMb_ClubDamagedWhileKneeling(EnMb* this, PlayState* play) {
s32 pad;
if (SkelAnime_Update(&this->skelAnime)) {
if (this->timer3 != 0) {
this->timer3--;
if (this->timer3 == 0) {
if (this->timer1 == 0) {
s32 pad;
Animation_Change(&this->skelAnime, &gEnMbClubStandUpAnim, 3.0f, 0.0f,
Animation_GetLastFrame(&gEnMbClubStandUpAnim), ANIMMODE_ONCE_INTERP, 0.0f);
this->timer1 = 1;

View File

@ -512,8 +512,6 @@ void EnMm_Draw(Actor* thisx, PlayState* play) {
s32 pad;
EnMm* this = (EnMm*)thisx;
if (0) {}
OPEN_DISPS(play->state.gfxCtx, "../z_en_mm.c", 1065);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
@ -560,6 +558,8 @@ void EnMm_Draw(Actor* thisx, PlayState* play) {
}
}
if (1) {}
CLOSE_DISPS(play->state.gfxCtx, "../z_en_mm.c", 1141);
}

View File

@ -193,6 +193,7 @@ void EnNb_UpdateEyes(EnNb* this) {
}
}
#if OOT_DEBUG
void func_80AB11EC(EnNb* this) {
this->action = NB_ACTION_7;
this->drawMode = NB_DRAW_NOTHING;
@ -220,6 +221,7 @@ void func_80AB1210(EnNb* this, PlayState* play) {
}
}
}
#endif
void func_80AB1284(EnNb* this, PlayState* play) {
Actor_UpdateBgCheckInfo(play, &this->actor, 75.0f, 30.0f, 30.0f, UPDBGCHECKINFO_FLAG_2);
@ -530,7 +532,9 @@ void EnNb_SetupLightOrb(EnNb* this, PlayState* play) {
void EnNb_Hide(EnNb* this, PlayState* play) {
EnNb_SetupHide(this, play);
#if OOT_DEBUG
func_80AB1210(this, play);
#endif
}
void EnNb_Fade(EnNb* this, PlayState* play) {
@ -538,7 +542,9 @@ void EnNb_Fade(EnNb* this, PlayState* play) {
EnNb_UpdateSkelAnime(this);
EnNb_UpdateEyes(this);
EnNb_CheckToFade(this, play);
#if OOT_DEBUG
func_80AB1210(this, play);
#endif
}
void EnNb_CreateLightOrb(EnNb* this, PlayState* play) {
@ -546,7 +552,9 @@ void EnNb_CreateLightOrb(EnNb* this, PlayState* play) {
EnNb_UpdateSkelAnime(this);
EnNb_UpdateEyes(this);
EnNb_SetupLightOrb(this, play);
#if OOT_DEBUG
func_80AB1210(this, play);
#endif
}
void EnNb_DrawTransparency(EnNb* this, PlayState* play) {
@ -1121,6 +1129,8 @@ void EnNb_CrawlspaceSpawnCheck(EnNb* this, PlayState* play) {
this->action = NB_CROUCH_CRAWLSPACE;
this->drawMode = NB_DRAW_DEFAULT;
} else {
s32 pad;
EnNb_SetCurrentAnim(this, &gNabooruStandingHandsOnHipsAnim, 0, 0.0f, 0);
this->headTurnFlag = 1;
this->actor.flags |= ACTOR_FLAG_0 | ACTOR_FLAG_3;
@ -1210,6 +1220,8 @@ void EnNb_SetupIdleCrawlspace(EnNb* this, s32 animFinished) {
void func_80AB3838(EnNb* this, PlayState* play) {
if (Actor_TalkOfferAccepted(&this->actor, play)) {
s32 pad;
this->action = NB_IN_DIALOG;
} else {
this->actor.flags |= ACTOR_FLAG_0 | ACTOR_FLAG_3;
@ -1302,6 +1314,8 @@ void func_80AB3A7C(EnNb* this, PlayState* play, s32 animFinished) {
void func_80AB3B04(EnNb* this, PlayState* play) {
if (Actor_TalkOfferAccepted(&this->actor, play)) {
s32 pad;
this->action = NB_ACTION_30;
} else {
this->actor.flags |= ACTOR_FLAG_0 | ACTOR_FLAG_3;
@ -1472,6 +1486,8 @@ s32 EnNb_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
if (this->headTurnFlag != 0) {
if (limbIndex == NB_LIMB_TORSO) {
s32 pad;
rot->x += interactInfo->torsoRot.y;
rot->y -= interactInfo->torsoRot.x;
ret = false;

View File

@ -11,7 +11,7 @@ void EnNiwLady_Destroy(Actor* thisx, PlayState* play);
void EnNiwLady_Update(Actor* thisx, PlayState* play);
void func_80AB9F24(EnNiwLady* this, PlayState* play);
void EnNiwLady_Draw(Actor* thisx, PlayState* play);
void EnNiwLady_Draw(Actor* thisx, PlayState* play2);
void func_80ABA21C(EnNiwLady* this, PlayState* play);
void func_80ABAD38(EnNiwLady* this, PlayState* play);
void func_80ABA778(EnNiwLady* this, PlayState* play);
@ -199,6 +199,7 @@ void func_80ABA21C(EnNiwLady* this, PlayState* play) {
void func_80ABA244(EnNiwLady* this, PlayState* play) {
EnNiw* currentCucco;
s32 pad[2];
s32 phi_s1;
this->cuccosInPen = 0;
@ -223,7 +224,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
}
currentCucco = (EnNiw*)currentCucco->actor.next;
}
if (BREG(7) != 0) {
if (OOT_DEBUG && BREG(7) != 0) {
this->cuccosInPen = BREG(7) - 1;
}
phi_s1 = this->cuccosInPen;
@ -358,13 +359,13 @@ void func_80ABA778(EnNiwLady* this, PlayState* play) {
void func_80ABA878(EnNiwLady* this, PlayState* play) {
Player* player = GET_PLAYER(play);
s8 playerExchangeItemId;
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) || (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE)) {
this->unk_26E = 11;
}
if (Actor_TalkOfferAccepted(&this->actor, play)) {
playerExchangeItemId = func_8002F368(play);
s8 playerExchangeItemId = func_8002F368(play);
if ((playerExchangeItemId == EXCH_ITEM_POCKET_CUCCO) && GET_EVENTCHKINF(EVENTCHKINF_TALON_WOKEN_IN_KAKARIKO)) {
Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR);
player->actor.textId = sTradeItemTextIds[5];
@ -379,9 +380,10 @@ void func_80ABA878(EnNiwLady* this, PlayState* play) {
this->unk_26E = this->unk_27A + 21;
this->actionFunc = !this->unk_273 ? func_80ABA778 : func_80ABA9B8;
}
} else {
Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 50.0f, EXCH_ITEM_POCKET_CUCCO);
return;
}
Actor_OfferTalkExchangeEquiCylinder(&this->actor, play, 50.0f, EXCH_ITEM_POCKET_CUCCO);
}
void func_80ABA9B8(EnNiwLady* this, PlayState* play) {
@ -573,10 +575,10 @@ s32 EnNiwLady_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
return false;
}
void EnNiwLady_Draw(Actor* thisx, PlayState* play) {
void EnNiwLady_Draw(Actor* thisx, PlayState* play2) {
static void* sEyeTextures[] = { gCuccoLadyEyeOpenTex, gCuccoLadyEyeHalfTex, gCuccoLadyEyeClosedTex };
EnNiwLady* this = (EnNiwLady*)thisx;
s32 pad;
PlayState* play = (PlayState*)play2;
OPEN_DISPS(play->state.gfxCtx, "../z_en_niw_lady.c", 1347);
if (this->unk_27E != 0) {

View File

@ -139,8 +139,8 @@ void EnNy_Init(Actor* thisx, PlayState* play) {
PRINTF("ダミーニュウ イニシャル[ %d ] \n", this->actor.params);
PRINTF("En_Ny_actor_move2[ %x ] \n", EnNy_UpdateUnused);
this->actor.colChkInfo.mass = 0xFF;
this->collider.base.colType = COLTYPE_METAL;
this->actor.update = EnNy_UpdateUnused;
this->collider.base.colType = COLTYPE_METAL;
}
}
@ -368,7 +368,6 @@ void EnNy_Update(Actor* thisx, PlayState* play) {
EnNy* this = (EnNy*)thisx;
f32 temp_f20;
f32 temp_f22;
s32 i;
this->timer++;
temp_f20 = this->unk_1E0 - 0.25f;
@ -391,6 +390,8 @@ void EnNy_Update(Actor* thisx, PlayState* play) {
this->unk_1F0 = temp_f22;
this->actor.world.pos.y += temp_f22;
if (EnNy_CollisionCheck(this, play) != 0) {
s32 i;
for (i = 0; i < 8; i++) {
this->unk_1F8[i].x = (Rand_CenteredFloat(20.0f) + this->actor.world.pos.x);
this->unk_1F8[i].y = (Rand_CenteredFloat(20.0f) + this->actor.world.pos.y);