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

Actor struct cleanup (#208)

* cleanup a few things

* fix mistake

* yawTowardsLink

* run format

* pr suggestion
This commit is contained in:
fig02 2020-06-14 00:09:51 -04:00 committed by GitHub
parent 06fc61c83d
commit 1c98ac27eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 292 additions and 303 deletions

View file

@ -8,7 +8,8 @@ u16 sMempakCompanyCode = 1;
u32 sMempakGameCode = 1;
// "ZELDA DEMO TOOL "
u8 sMempakGameName[0x10] = { 0x33, 0x1E, 0x25, 0x1D, 0x1A, 0x0F, 0x1D, 0x1E, 0x26, 0x28, 0x0F, 0x2D, 0x28, 0x28, 0x25, 0x0F };
u8 sMempakGameName[0x10] = { 0x33, 0x1E, 0x25, 0x1D, 0x1A, 0x0F, 0x1D, 0x1E,
0x26, 0x28, 0x0F, 0x2D, 0x28, 0x28, 0x25, 0x0F };
u8 sMempakExtName[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
s32 Mempak_Init(s32 controllerNb) {

View file

@ -19,7 +19,7 @@ void func_8002B200(Actor* actor, LightMapper* lightMapper, GlobalContext* global
Gfx* dispRefs[4];
if (actor->floorPoly != NULL) {
temp1 = actor->posRot.pos.y - actor->unk_80;
temp1 = actor->posRot.pos.y - actor->groundY;
if (temp1 >= -50.0f && temp1 < 500.0f) {
gfxCtx = globalCtx->state.gfxCtx;
@ -40,7 +40,7 @@ void func_8002B200(Actor* actor, LightMapper* lightMapper, GlobalContext* global
gDPSetPrimColor(gfxCtx->polyOpa.p++, 0, 0, 0, 0, 0, (u32)(actor->shape.unk_14 * temp2) & 0xFF);
}
func_80038A28(actor->floorPoly, actor->posRot.pos.x, actor->unk_80, actor->posRot.pos.z, &sp60);
func_80038A28(actor->floorPoly, actor->posRot.pos.x, actor->groundY, actor->posRot.pos.z, &sp60);
Matrix_Put(&sp60);
if (dlist != D_04049210) {
@ -122,7 +122,7 @@ void ActorShadow_DrawFunc_Teardrop(Actor* actor, LightMapper* lightMapper, Globa
s32 phi_s1;
s32 phi_s2;
temp_f20 = actor->posRot.pos.y - actor->unk_80;
temp_f20 = actor->posRot.pos.y - actor->groundY;
if (temp_f20 > 20.0f) {
temp_10 = actor->shape.unk_10;
@ -839,7 +839,7 @@ void Actor_Init(Actor* actor, GlobalContext* globalCtx) {
Actor_SetScale(actor, 0.01f);
actor->unk_1F = 3;
actor->minVelocityY = -20.0f;
actor->waterSurfaceDist = FLT_MAX;
actor->xyzDistFromLinkSq = FLT_MAX;
actor->naviEnemyId = 0xFF;
actor->unk_F4 = 1000.0f;
actor->unk_F8 = 350.0f;
@ -1091,7 +1091,7 @@ void func_8002DFA4(DynaPolyActor* dynaActor, f32 arg1, s16 arg2) {
s32 func_8002DFC8(Actor* actor, s16 arg1, GlobalContext* globalCtx) {
Player* player = PLAYER;
s16 var = (s16)(actor->rotTowardsLinkY + 0x8000) - player->actor.shape.rot.y;
s16 var = (s16)(actor->yawTowardsLink + 0x8000) - player->actor.shape.rot.y;
if (ABS(var) < arg1) {
return 1;
@ -1111,7 +1111,7 @@ s32 func_8002E020(Actor* actorA, Actor* actorB, s16 arg2) {
}
s32 func_8002E084(Actor* actor, s16 arg1) {
s16 var = actor->rotTowardsLinkY - actor->shape.rot.y;
s16 var = actor->yawTowardsLink - actor->shape.rot.y;
if (ABS(var) < arg1) {
return 1;
@ -1131,10 +1131,10 @@ s32 func_8002E0D0(Actor* actorA, Actor* actorB, s16 arg2) {
}
s32 func_8002E12C(Actor* actor, f32 arg1, s16 arg2) {
s16 var = actor->rotTowardsLinkY - actor->shape.rot.y;
s16 var = actor->yawTowardsLink - actor->shape.rot.y;
if (ABS(var) < arg2) {
f32 xyzDistanceFromLink = sqrtf(SQ(actor->xzDistanceFromLink) + SQ(actor->yDistanceFromLink));
f32 xyzDistanceFromLink = sqrtf(SQ(actor->xzDistFromLink) + SQ(actor->yDistFromLink));
if (xyzDistanceFromLink < arg1) {
return 1;
@ -1180,14 +1180,14 @@ s32 func_8002E2AC(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, s32 arg3)
arg2->y += 50.0f;
actor->unk_80 = func_8003CA0C(globalCtx, &globalCtx->colCtx, &actor->floorPoly, &sp30, actor, arg2);
actor->groundY = func_8003CA0C(globalCtx, &globalCtx->colCtx, &actor->floorPoly, &sp30, actor, arg2);
actor->bgCheckFlags &= ~0x0086;
if (actor->unk_80 <= -32000.0f) {
if (actor->groundY <= -32000.0f) {
return func_8002E234(actor, -32000.0f, arg3);
}
sp34 = actor->unk_80 - actor->posRot.pos.y;
sp34 = actor->groundY - actor->posRot.pos.y;
actor->floorPolySource = sp30;
if (sp34 >= 0.0f) {
@ -1204,7 +1204,7 @@ s32 func_8002E2AC(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, s32 arg3)
}
}
actor->posRot.pos.y = actor->unk_80;
actor->posRot.pos.y = actor->groundY;
if (actor->velocity.y <= 0.0f) {
if (!(actor->bgCheckFlags & 0x1)) {
@ -1279,8 +1279,8 @@ void func_8002E4B4(GlobalContext* globalCtx, Actor* actor, f32 arg2, f32 arg3, f
func_8002E2AC(globalCtx, actor, &sp64, arg5);
sp50 = actor->posRot.pos.y;
if (func_8004213C(globalCtx, &globalCtx->colCtx, actor->posRot.pos.x, actor->posRot.pos.z, &sp50, &sp54)) {
actor->unk_84 = sp50 - actor->posRot.pos.y;
if (actor->unk_84 < 0.0f) {
actor->waterY = sp50 - actor->posRot.pos.y;
if (actor->waterY < 0.0f) {
actor->bgCheckFlags &= ~0x60;
} else {
if (!(actor->bgCheckFlags & 0x20)) {
@ -1298,7 +1298,7 @@ void func_8002E4B4(GlobalContext* globalCtx, Actor* actor, f32 arg2, f32 arg3, f
}
} else {
actor->bgCheckFlags &= ~0x60;
actor->unk_84 = -32000.0f;
actor->waterY = -32000.0f;
}
}
}
@ -1445,14 +1445,15 @@ f32 func_8002EFC0(Actor* actor, Player* player, s16 arg2) {
s16 var;
s16 abs_var;
var = (s16)(actor->rotTowardsLinkY - 0x8000) - arg2;
var = (s16)(actor->yawTowardsLink - 0x8000) - arg2;
abs_var = ABS(var);
if (player->unk_664 != NULL) {
if ((abs_var > 0x4000) || (actor->flags & 0x8000000)) {
return FLT_MAX;
} else {
return actor->waterSurfaceDist - actor->waterSurfaceDist * 0.8f * ((0x4000 - abs_var) * 3.0517578125e-05f);
return actor->xyzDistFromLinkSq -
actor->xyzDistFromLinkSq * 0.8f * ((0x4000 - abs_var) * 3.0517578125e-05f);
}
}
@ -1460,7 +1461,7 @@ f32 func_8002EFC0(Actor* actor, Player* player, s16 arg2) {
return FLT_MAX;
}
return actor->waterSurfaceDist;
return actor->xyzDistFromLinkSq;
}
#else
extern f32 func_8002EFC0(Actor* actor, Player* player, s16 arg2);
@ -1491,13 +1492,13 @@ s32 func_8002F0C8(Actor* actor, Player* player, s32 flag) {
}
if (!flag) {
var = (s16)(actor->rotTowardsLinkY - 0x8000) - player->actor.shape.rot.y;
var = (s16)(actor->yawTowardsLink - 0x8000) - player->actor.shape.rot.y;
abs_var = ABS(var);
if ((player->unk_664 == NULL) && (abs_var > 0x2AAA)) {
dist = FLT_MAX;
} else {
dist = actor->waterSurfaceDist;
dist = actor->xyzDistFromLinkSq;
}
return !func_8002F090(actor, D_80115FF8[actor->unk_1F].unk_4 * dist);
@ -1521,13 +1522,13 @@ s32 func_8002F1C4(Actor* actor, GlobalContext* globalCtx, f32 arg2, f32 arg3, u3
// This is convoluted but it seems like it must be a single if statement to match
if ((player->actor.flags & 0x100) || ((arg4 != 0) && func_8008E988(globalCtx)) ||
((actor->unk_10C == 0) &&
((arg3 < fabsf(actor->yDistanceFromLink)) || (player->targetActorDistance < actor->xzDistanceFromLink) ||
(arg2 < actor->xzDistanceFromLink)))) {
((arg3 < fabsf(actor->yDistFromLink)) || (player->targetActorDistance < actor->xzDistFromLink) ||
(arg2 < actor->xzDistFromLink)))) {
return 0;
}
player->naviTargetActor = actor;
player->targetActorDistance = actor->xzDistanceFromLink;
player->targetActorDistance = actor->xzDistFromLink;
player->exchangeItemId = arg4;
return 1;
@ -1585,8 +1586,8 @@ s32 func_8002F434(Actor* actor, GlobalContext* globalCtx, s32 getItemId, f32 xzR
if ((((player->heldActor != NULL) || (actor == player->naviTargetActor)) && (getItemId > 0) &&
(getItemId < 0x7E)) ||
(!(player->stateFlags1 & 0x20000800))) {
if ((actor->xzDistanceFromLink < xzRange) && (fabsf(actor->yDistanceFromLink) < yRange)) {
var = actor->rotTowardsLinkY - player->actor.shape.rot.y;
if ((actor->xzDistFromLink < xzRange) && (fabsf(actor->yDistFromLink) < yRange)) {
var = actor->yawTowardsLink - player->actor.shape.rot.y;
abs_var = ABS(var);
if ((getItemId != 0) || (player->getItemDirection < abs_var)) {
player->getItemId = getItemId;
@ -1634,8 +1635,8 @@ void func_8002F5C4(Actor* actorA, Actor* actorB, GlobalContext* globalCtx) {
void func_8002F5F0(Actor* actor, GlobalContext* globalCtx) {
Player* player = PLAYER;
if (actor->waterSurfaceDist < player->unk_6A4) {
player->unk_6A4 = actor->waterSurfaceDist;
if (actor->xyzDistFromLinkSq < player->unk_6A4) {
player->unk_6A4 = actor->xyzDistFromLinkSq;
}
}
@ -1704,7 +1705,7 @@ void func_8002F850(GlobalContext* globalCtx, Actor* actor) {
s32 sfxId;
if (actor->bgCheckFlags & 0x20) {
if (actor->unk_84 < 20.0f) {
if (actor->waterY < 20.0f) {
sfxId = NA_SE_PL_WALK_WATER0;
} else {
sfxId = NA_SE_PL_WALK_WATER1;
@ -1718,37 +1719,37 @@ void func_8002F850(GlobalContext* globalCtx, Actor* actor) {
}
void func_8002F8F0(Actor* actor, u16 sfxId) {
actor->soundEffect = sfxId;
actor->sfx = sfxId;
actor->flags |= 0x80000;
actor->flags &= ~0x10300000;
}
void func_8002F91C(Actor* actor, u16 sfxId) {
actor->soundEffect = sfxId;
actor->sfx = sfxId;
actor->flags |= 0x100000;
actor->flags &= ~0x10280000;
}
void func_8002F948(Actor* actor, u16 sfxId) {
actor->soundEffect = sfxId;
actor->sfx = sfxId;
actor->flags |= 0x200000;
actor->flags &= ~0x10180000;
}
void func_8002F974(Actor* actor, u16 sfxId) {
actor->flags &= ~0x10380000;
actor->soundEffect = sfxId;
actor->sfx = sfxId;
}
void func_8002F994(Actor* actor, s32 sfxId) {
actor->flags |= 0x10000000;
actor->flags &= ~0x00380000;
if (sfxId < NA_SE_PL_LAND_GRASS) {
actor->soundEffect = NA_SE_PL_WALK_DIRT;
actor->sfx = NA_SE_PL_WALK_DIRT;
} else if (sfxId < NA_SE_PL_DIVE_BUBBLE) {
actor->soundEffect = NA_SE_PL_WALK_CONCRETE;
actor->sfx = NA_SE_PL_WALK_CONCRETE;
} else {
actor->soundEffect = NA_SE_PL_WALK_SAND;
actor->sfx = NA_SE_PL_WALK_SAND;
}
}
@ -2085,7 +2086,7 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
actor->posRot.pos.y = -25000.0f;
}
actor->soundEffect = 0;
actor->sfx = 0;
if (actor->init != NULL) {
if (Object_IsLoaded(&globalCtx->objectCtx, actor->objBankIndex)) {
@ -2111,11 +2112,11 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
}
} else {
Math_Vec3f_Copy(&actor->pos4, &actor->posRot.pos);
actor->xzDistanceFromLink = func_8002DB8C(actor, &player->actor);
actor->yDistanceFromLink = Actor_HeightDiff(actor, &player->actor);
actor->waterSurfaceDist = SQ(actor->xzDistanceFromLink) + SQ(actor->yDistanceFromLink);
actor->xzDistFromLink = func_8002DB8C(actor, &player->actor);
actor->yDistFromLink = Actor_HeightDiff(actor, &player->actor);
actor->xyzDistFromLinkSq = SQ(actor->xzDistFromLink) + SQ(actor->yDistFromLink);
actor->rotTowardsLinkY = func_8002DA78(actor, &player->actor);
actor->yawTowardsLink = func_8002DA78(actor, &player->actor);
actor->flags &= ~0x1000000;
if ((DECR(actor->freeze) == 0) && (actor->flags & 0x50)) {
@ -2130,8 +2131,8 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
}
Actor_SetObjectDependency(globalCtx, actor);
if (actor->unk_114 != 0) {
actor->unk_114--;
if (actor->dmgEffectTimer != 0) {
actor->dmgEffectTimer--;
}
actor->update(actor, globalCtx);
func_8003F8EC(globalCtx, &globalCtx->colCtx.dyna, actor);
@ -2226,28 +2227,28 @@ void Actor_Draw(GlobalContext* globalCtx, Actor* actor) {
gSPSegment(gfxCtx->polyOpa.p++, 0x06, globalCtx->objectCtx.status[actor->objBankIndex].segment);
gSPSegment(gfxCtx->polyXlu.p++, 0x06, globalCtx->objectCtx.status[actor->objBankIndex].segment);
if (actor->unk_114 != 0) {
if (actor->dmgEffectTimer != 0) {
// Must be inline data to match
Color_RGBA8 sp2C = { 0x00, 0x00, 0x00, 0xFF };
if (actor->unk_112 & 0x8000) {
sp2C.r = sp2C.g = sp2C.b = ((actor->unk_112 & 0x1F00) >> 5) | 7;
} else if (actor->unk_112 & 0x4000) {
sp2C.r = ((actor->unk_112 & 0x1F00) >> 5) | 7;
if (actor->dmgEffectParams & 0x8000) {
sp2C.r = sp2C.g = sp2C.b = ((actor->dmgEffectParams & 0x1F00) >> 5) | 7;
} else if (actor->dmgEffectParams & 0x4000) {
sp2C.r = ((actor->dmgEffectParams & 0x1F00) >> 5) | 7;
} else {
sp2C.b = ((actor->unk_112 & 0x1F00) >> 5) | 7;
sp2C.b = ((actor->dmgEffectParams & 0x1F00) >> 5) | 7;
}
if (actor->unk_112 & 0x2000) {
func_80026860(globalCtx, &sp2C, actor->unk_114, actor->unk_112 & 0xFF);
if (actor->dmgEffectParams & 0x2000) {
func_80026860(globalCtx, &sp2C, actor->dmgEffectTimer, actor->dmgEffectParams & 0xFF);
} else {
func_80026400(globalCtx, &sp2C, actor->unk_114, actor->unk_112 & 0xFF);
func_80026400(globalCtx, &sp2C, actor->dmgEffectTimer, actor->dmgEffectParams & 0xFF);
}
}
actor->draw(actor, globalCtx);
if (actor->unk_114 != 0) {
if (actor->unk_112 & 0x2000) {
if (actor->dmgEffectTimer != 0) {
if (actor->dmgEffectParams & 0x2000) {
func_80026A6C(globalCtx);
} else {
func_80026608(globalCtx);
@ -2265,15 +2266,15 @@ void Actor_Draw(GlobalContext* globalCtx, Actor* actor) {
void func_80030ED8(Actor* actor) {
if (actor->flags & 0x80000) {
Audio_PlaySoundGeneral(actor->soundEffect, &actor->unk_E4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
Audio_PlaySoundGeneral(actor->sfx, &actor->unk_E4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
} else if (actor->flags & 0x100000) {
func_80078884(actor->soundEffect);
func_80078884(actor->sfx);
} else if (actor->flags & 0x200000) {
func_800788CC(actor->soundEffect);
func_800788CC(actor->sfx);
} else if (actor->flags & 0x10000000) {
func_800F4C58(&D_801333D4, 0x2021, (s8)(actor->soundEffect - 1));
func_800F4C58(&D_801333D4, 0x2021, (s8)(actor->sfx - 1));
} else {
func_80078914(&actor->unk_E4, actor->soundEffect);
func_80078914(&actor->unk_E4, actor->sfx);
}
}
@ -2421,7 +2422,7 @@ void func_800315AC(GlobalContext* globalCtx, ActorContext* actorCtx) {
}
if ((HREG(64) != 1) || ((HREG(65) != -1) && (HREG(65) != HREG(66))) || (HREG(69) == 0)) {
if (actor->soundEffect != 0) {
if (actor->sfx != 0) {
func_80030ED8(actor);
}
}
@ -2968,10 +2969,10 @@ void func_800328D4(GlobalContext* globalCtx, ActorContext* actorCtx, Player* pla
while (actor != NULL) {
if ((actor->update != NULL) && ((Player*)actor != player) && ((actor->flags & 1) == 1)) {
if ((actorType == ACTORTYPE_ENEMY) && ((actor->flags & 5) == 5) && (actor->waterSurfaceDist < 250000.0f) &&
(actor->waterSurfaceDist < D_8015BBF4)) {
if ((actorType == ACTORTYPE_ENEMY) && ((actor->flags & 5) == 5) && (actor->xyzDistFromLinkSq < 250000.0f) &&
(actor->xyzDistFromLinkSq < D_8015BBF4)) {
actorCtx->targetCtx.unk_90 = actor;
D_8015BBF4 = actor->waterSurfaceDist;
D_8015BBF4 = actor->xyzDistFromLinkSq;
}
if (actor != sp84) {
@ -3199,7 +3200,7 @@ void func_80033260(GlobalContext* globalCtx, Actor* actor, Vec3f* arg2, f32 arg3
s32 i;
var = (Math_Rand_ZeroOne() - 0.5f) * 6.28f;
sp9C.y = actor->unk_80;
sp9C.y = actor->groundY;
sp84.y += (Math_Rand_ZeroOne() - 0.5f) * 0.2f;
for (i = arg4; i >= 0; i--) {
@ -3517,9 +3518,9 @@ void func_80033E1C(GlobalContext* globalCtx, s16 arg1, s16 arg2, s16 arg3) {
void func_80033E88(Actor* actor, GlobalContext* globalCtx, s16 arg2, s16 arg3) {
if (arg2 >= 5) {
func_800AA000(actor->waterSurfaceDist, 0xFF, 0x14, 0x96);
func_800AA000(actor->xyzDistFromLinkSq, 0xFF, 0x14, 0x96);
} else {
func_800AA000(actor->waterSurfaceDist, 0xB4, 0x14, 0x64);
func_800AA000(actor->xyzDistFromLinkSq, 0xB4, 0x14, 0x64);
}
func_80033DB8(globalCtx, arg2, arg3);
@ -3613,8 +3614,8 @@ void func_8003426C(Actor* actor, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
Audio_PlayActorSound2(actor, NA_SE_EN_LIGHT_ARROW_HIT);
}
actor->unk_112 = arg1 | arg3 | ((arg2 & 0xF8) << 5) | arg4;
actor->unk_114 = arg4;
actor->dmgEffectParams = arg1 | arg3 | ((arg2 & 0xF8) << 5) | arg4;
actor->dmgEffectTimer = arg4;
}
Hilite* func_800342EC(Vec3f* object, GlobalContext* globalCtx) {
@ -4004,11 +4005,10 @@ s32 func_800354B4(GlobalContext* globalCtx, Actor* actor, f32 range, s16 arg3, s
s16 var1;
s16 var2;
var1 = (s16)(actor->rotTowardsLinkY + 0x8000) - player->actor.shape.rot.y;
var2 = actor->rotTowardsLinkY - arg5;
var1 = (s16)(actor->yawTowardsLink + 0x8000) - player->actor.shape.rot.y;
var2 = actor->yawTowardsLink - arg5;
if ((actor->xzDistanceFromLink <= range) && (player->swordState != 0) && (arg4 >= ABS(var1)) &&
(arg3 >= ABS(var2))) {
if ((actor->xzDistFromLink <= range) && (player->swordState != 0) && (arg4 >= ABS(var1)) && (arg3 >= ABS(var2))) {
return 1;
} else {
return 0;
@ -5473,18 +5473,18 @@ s32 func_80037D98(GlobalContext* globalCtx, Actor* actor, s16 arg2, s32* arg3) {
return 0;
}
var = actor->rotTowardsLinkY - actor->shape.rot.y;
var = actor->yawTowardsLink - actor->shape.rot.y;
abs_var = ABS(var);
if (abs_var >= 0x4300) {
return 0;
}
if ((actor->waterSurfaceDist > 25600.0f) && (actor->unk_10C == 0)) {
if ((actor->xyzDistFromLinkSq > 25600.0f) && (actor->unk_10C == 0)) {
return 0;
}
if (actor->waterSurfaceDist <= 6400.0f) {
if (actor->xyzDistFromLinkSq <= 6400.0f) {
if (func_8002F2CC(actor, globalCtx, 80.0f)) {
actor->textId = func_80037C30(globalCtx, arg2);
}
@ -5540,7 +5540,7 @@ s32 func_80038154(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
actor->posRot2.pos.y += arg4;
if (!(((globalCtx->csCtx.state != 0) || (D_8011D394 != 0)) && (gSaveContext.entranceIndex == 0x00EE))) {
var = actor->rotTowardsLinkY - actor->shape.rot.y;
var = actor->yawTowardsLink - actor->shape.rot.y;
abs_var = ABS(var);
if (abs_var >= 0x4300) {
func_80037F30(arg2, arg3);
@ -5569,7 +5569,7 @@ s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* ar
actor->posRot2.pos = arg4;
if (!(((globalCtx->csCtx.state != 0) || (D_8011D394 != 0)) && (gSaveContext.entranceIndex == 0x00EE))) {
var = actor->rotTowardsLinkY - actor->shape.rot.y;
var = actor->yawTowardsLink - actor->shape.rot.y;
abs_var = ABS(var);
if (abs_var >= 0x4300) {
func_80037F30(arg2, arg3);

View file

@ -213,7 +213,7 @@ void func_8001D25C(EnAObj* this, GlobalContext* globalCtx) {
s16 var;
if (this->dyna.actor.textId != 0) {
var = this->dyna.actor.rotTowardsLinkY - this->dyna.actor.shape.rot.y;
var = this->dyna.actor.yawTowardsLink - this->dyna.actor.shape.rot.y;
if ((ABS(var) < 0x2800) || ((this->dyna.actor.params == 0xA) && (ABS(var) > 0x5800))) {
if (func_8002F194(&this->dyna.actor, globalCtx)) {
EnAObj_SetupAction(this, func_8001D204);
@ -238,13 +238,13 @@ void func_8001D360(EnAObj* this, GlobalContext* globalCtx) {
this->unk_16E++;
this->unk_170 = 20;
if ((s16)(this->dyna.actor.rotTowardsLinkY + 0x4000) < 0) {
if ((s16)(this->dyna.actor.yawTowardsLink + 0x4000) < 0) {
this->unk_174 = -1000;
} else {
this->unk_174 = 1000;
}
if (this->dyna.actor.rotTowardsLinkY < 0) {
if (this->dyna.actor.yawTowardsLink < 0) {
this->unk_172 = -this->unk_174;
} else {
this->unk_172 = this->unk_174;

View file

@ -413,9 +413,9 @@ void func_8001E304(EnItem00* this, GlobalContext* globalCtx) {
}
this->actor.initPosRot.rot.z += (s16)((this->actor.velocity.y + 3.0f) * 1000.0f);
this->actor.posRot.pos.x +=
Math_Coss(this->actor.rotTowardsLinkY) * (-3.0f * Math_Coss(this->actor.initPosRot.rot.z));
Math_Coss(this->actor.yawTowardsLink) * (-3.0f * Math_Coss(this->actor.initPosRot.rot.z));
this->actor.posRot.pos.z +=
Math_Sins(this->actor.rotTowardsLinkY) * (-3.0f * Math_Coss(this->actor.initPosRot.rot.z));
Math_Sins(this->actor.yawTowardsLink) * (-3.0f * Math_Coss(this->actor.initPosRot.rot.z));
}
}
@ -539,7 +539,7 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
if (sp3A || D_80157D94) {
func_8002E4B4(globalCtx, &this->actor, 10.0f, 15.0f, 15.0f, 0x1D);
if (this->actor.unk_80 <= -10000.0f) {
if (this->actor.groundY <= -10000.0f) {
Actor_Kill(&this->actor);
return;
}
@ -564,8 +564,8 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
return;
}
if (!((this->actor.xzDistanceFromLink <= 30.0f) && (this->actor.yDistanceFromLink >= -50.0f) &&
(this->actor.yDistanceFromLink <= 50.0f))) {
if (!((this->actor.xzDistFromLink <= 30.0f) && (this->actor.yDistFromLink >= -50.0f) &&
(this->actor.yDistFromLink <= 50.0f))) {
if (!func_8002F410(&this->actor, globalCtx)) {
return;
}

View file

@ -225,7 +225,7 @@ void func_8008EDF0(Player* player) {
void func_8008EE08(Player* player) {
if ((player->actor.bgCheckFlags & 1) || (player->stateFlags1 & 0x8A00000) ||
((player->stateFlags1 & 0xC0000) == 0 && (player->actor.posRot.pos.y - player->actor.unk_80) < 100.0f)) {
((player->stateFlags1 & 0xC0000) == 0 && (player->actor.posRot.pos.y - player->actor.groundY) < 100.0f)) {
player->stateFlags1 &= 0xBFF07FFF;
} else if ((player->stateFlags1 & 0x2C0000) == 0) {
player->stateFlags1 |= 0x80000;