diff --git a/include/z64actor.h b/include/z64actor.h index ce6f6a52cb..228de4bcd6 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -156,11 +156,11 @@ typedef struct ActorShape { // #define ACTOR_FLAG_13 (1 << 13) -// -#define ACTOR_FLAG_14 (1 << 14) +// When hit by an arrow, the actor will be able to attach to the arrow and fly with it in the air +#define ACTOR_FLAG_CAN_ATTACH_TO_ARROW (1 << 14) -// -#define ACTOR_FLAG_15 (1 << 15) +// Actor is currently attached to an arrow and flying with it in the air +#define ACTOR_FLAG_ATTACHED_TO_ARROW (1 << 15) // Player automatically accepts a Talk Offer without needing to press the A button. // Player still has to meet all conditions to be able to receive a talk offer (for example, being in range). diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index 34bc646bd6..3cec8313e6 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -149,7 +149,7 @@ void EnArrow_Destroy(Actor* thisx, PlayState* play) { Collider_DestroyQuad(play, &this->collider); if ((this->hitActor != NULL) && (this->hitActor->update != NULL)) { - this->hitActor->flags &= ~ACTOR_FLAG_15; + this->hitActor->flags &= ~ACTOR_FLAG_ATTACHED_TO_ARROW; } } @@ -287,11 +287,11 @@ void EnArrow_Fly(EnArrow* this, PlayState* play) { hitActor = this->collider.base.at; if ((hitActor->update != NULL) && !(this->collider.base.atFlags & AT_BOUNCED) && - (hitActor->flags & ACTOR_FLAG_14)) { + (hitActor->flags & ACTOR_FLAG_CAN_ATTACH_TO_ARROW)) { this->hitActor = hitActor; EnArrow_CarryActor(this, play); Math_Vec3f_Diff(&hitActor->world.pos, &this->actor.world.pos, &this->unk_250); - hitActor->flags |= ACTOR_FLAG_15; + hitActor->flags |= ACTOR_FLAG_ATTACHED_TO_ARROW; this->collider.base.atFlags &= ~AT_HIT; this->actor.speed /= 2.0f; this->actor.velocity.y /= 2.0f; @@ -353,14 +353,14 @@ void EnArrow_Fly(EnArrow* this, PlayState* play) { this->hitActor->world.pos.y = hitPoint.y + ((sp54.y <= hitPoint.y) ? 1.0f : -1.0f); this->hitActor->world.pos.z = hitPoint.z + ((sp54.z <= hitPoint.z) ? 1.0f : -1.0f); Math_Vec3f_Diff(&this->hitActor->world.pos, &this->actor.world.pos, &this->unk_250); - this->hitActor->flags &= ~ACTOR_FLAG_15; + this->hitActor->flags &= ~ACTOR_FLAG_ATTACHED_TO_ARROW; this->hitActor = NULL; } else { Math_Vec3f_Sum(&this->actor.world.pos, &this->unk_250, &this->hitActor->world.pos); } if (this->touchedPoly && (this->hitActor != NULL)) { - this->hitActor->flags &= ~ACTOR_FLAG_15; + this->hitActor->flags &= ~ACTOR_FLAG_ATTACHED_TO_ARROW; this->hitActor = NULL; } } else { diff --git a/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/src/overlays/actors/ovl_En_Bb/z_en_bb.c index 1373821f66..3b26ad61d2 100644 --- a/src/overlays/actors/ovl_En_Bb/z_en_bb.c +++ b/src/overlays/actors/ovl_En_Bb/z_en_bb.c @@ -345,7 +345,7 @@ void EnBb_Init(Actor* thisx, PlayState* play) { this->flamePrimBlue = this->flameEnvColor.b = 255; thisx->world.pos.y += 50.0f; EnBb_SetupBlue(this); - thisx->flags |= ACTOR_FLAG_14; + thisx->flags |= ACTOR_FLAG_CAN_ATTACH_TO_ARROW; break; case ENBB_RED: thisx->naviEnemyId = NAVI_ENEMY_RED_BUBBLE; @@ -374,7 +374,7 @@ void EnBb_Init(Actor* thisx, PlayState* play) { EnBb_SetupWhite(play, this); EnBb_SetWaypoint(this, play); EnBb_FaceWaypoint(this); - thisx->flags |= ACTOR_FLAG_14; + thisx->flags |= ACTOR_FLAG_CAN_ATTACH_TO_ARROW; break; case ENBB_GREEN_BIG: this->path = this->actionState >> 4; @@ -1237,7 +1237,7 @@ void EnBb_Update(Actor* thisx, PlayState* play2) { if (this->actor.colChkInfo.damageEffect != 0xD) { this->actionFunc(this, play); if ((this->actor.params <= ENBB_BLUE) && (this->actor.speed >= -6.0f) && - ((this->actor.flags & ACTOR_FLAG_15) == 0)) { + !(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { Actor_MoveXZGravity(&this->actor); } if (this->moveMode == BBMOVE_NORMAL) { diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.c b/src/overlays/actors/ovl_En_Bili/z_en_bili.c index f7bbd05f0c..73a8addd8f 100644 --- a/src/overlays/actors/ovl_En_Bili/z_en_bili.c +++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.c @@ -8,7 +8,8 @@ #include "versions.h" #include "assets/objects/object_bl/object_bl.h" -#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_14) +#define FLAGS \ + (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_CAN_ATTACH_TO_ARROW) void EnBili_Init(Actor* thisx, PlayState* play); void EnBili_Destroy(Actor* thisx, PlayState* play); @@ -251,7 +252,7 @@ void EnBili_SetupFrozen(EnBili* this, PlayState* play) { s32 i; Vec3f effectPos; - if (!(this->actor.flags & ACTOR_FLAG_15)) { + if (!(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { this->actor.gravity = -1.0f; } @@ -456,7 +457,7 @@ void EnBili_Recoil(EnBili* this, PlayState* play) { void EnBili_Burnt(EnBili* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); - if (this->actor.flags & ACTOR_FLAG_15) { + if (this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW) { this->actor.colorFilterTimer = 20; } else { if (this->timer != 0) { @@ -477,7 +478,7 @@ void EnBili_Die(EnBili* this, PlayState* play) { s32 i; if (this->actor.draw != NULL) { - if (this->actor.flags & ACTOR_FLAG_15) { + if (this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW) { return; } this->actor.draw = NULL; @@ -533,7 +534,7 @@ void EnBili_Frozen(EnBili* this, PlayState* play) { this->timer--; } - if (!(this->actor.flags & ACTOR_FLAG_15)) { + if (!(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { this->actor.gravity = -1.0f; } diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/src/overlays/actors/ovl_En_Crow/z_en_crow.c index 54c261ccd9..c8319a7e79 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.c +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.c @@ -1,7 +1,8 @@ #include "z_en_crow.h" #include "assets/objects/object_crow/object_crow.h" -#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_14) +#define FLAGS \ + (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_CAN_ATTACH_TO_ARROW) void EnCrow_Init(Actor* thisx, PlayState* play); void EnCrow_Destroy(Actor* thisx, PlayState* play); @@ -175,7 +176,7 @@ void EnCrow_SetupDamaged(EnCrow* this, PlayState* play) { Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 40); } - if (this->actor.flags & ACTOR_FLAG_15) { + if (this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW) { this->actor.speed = 0.0f; } @@ -329,7 +330,7 @@ void EnCrow_Damaged(EnCrow* this, PlayState* play) { Math_StepToF(&this->actor.speed, 0.0f, 0.5f); this->actor.colorFilterTimer = 40; - if (!(this->actor.flags & ACTOR_FLAG_15)) { + if (!(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { if (this->actor.colorFilterParams & 0x4000) { Math_ScaledStepToS(&this->actor.shape.rot.x, 0x4000, 0x200); this->actor.shape.rot.z += 0x1780; diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c index e1d31a3213..eb1be1b9cf 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c @@ -9,7 +9,8 @@ #include "assets/objects/object_firefly/object_firefly.h" #include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h" -#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_14) +#define FLAGS \ + (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_CAN_ATTACH_TO_ARROW) void EnFirefly_Init(Actor* thisx, PlayState* play); void EnFirefly_Destroy(Actor* thisx, PlayState* play); @@ -423,7 +424,7 @@ void EnFirefly_Fall(EnFirefly* this, PlayState* play) { this->actor.colorFilterTimer = 40; SkelAnime_Update(&this->skelAnime); Math_StepToF(&this->actor.speed, 0.0f, 0.5f); - if (this->actor.flags & ACTOR_FLAG_15) { + if (this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW) { this->actor.colorFilterTimer = 40; } else { Math_ScaledStepToS(&this->actor.shape.rot.x, 0x6800, 0x200); @@ -687,7 +688,7 @@ void EnFirefly_Update(Actor* thisx, PlayState* play2) { this->actionFunc(this, play); - if (!(this->actor.flags & ACTOR_FLAG_15)) { + if (!(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { if ((this->actor.colChkInfo.health == 0) || (this->actionFunc == EnFirefly_Stunned)) { Actor_MoveXZGravity(&this->actor); } else { diff --git a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c index 6825c9bc68..c9e1bca7c6 100644 --- a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c +++ b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c @@ -10,7 +10,7 @@ #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_9 | ACTOR_FLAG_IGNORE_QUAKE | \ - ACTOR_FLAG_14) + ACTOR_FLAG_CAN_ATTACH_TO_ARROW) void EnPoSisters_Init(Actor* thisx, PlayState* play); void EnPoSisters_Destroy(Actor* thisx, PlayState* play); @@ -210,7 +210,7 @@ void EnPoSisters_Init(Actor* thisx, PlayState* play) { this->collider.base.ocFlags1 = OC1_ON | OC1_TYPE_PLAYER; func_80AD9AA8(this, play); } else { - this->actor.flags &= ~(ACTOR_FLAG_9 | ACTOR_FLAG_14); + this->actor.flags &= ~(ACTOR_FLAG_9 | ACTOR_FLAG_CAN_ATTACH_TO_ARROW); this->collider.elem.elemMaterial = ELEM_MATERIAL_UNK4; this->collider.elem.acDmgInfo.dmgFlags |= DMG_DEKU_NUT; this->collider.base.ocFlags1 = OC1_NONE; @@ -701,7 +701,7 @@ void func_80ADA9E8(EnPoSisters* this, PlayState* play) { } void func_80ADAAA4(EnPoSisters* this, PlayState* play) { - if (SkelAnime_Update(&this->skelAnime) && !(this->actor.flags & ACTOR_FLAG_15)) { + if (SkelAnime_Update(&this->skelAnime) && !(this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW)) { if (this->actor.colChkInfo.health != 0) { if (this->unk_194 != 0) { func_80AD96A4(this); diff --git a/src/overlays/actors/ovl_En_St/z_en_st.c b/src/overlays/actors/ovl_En_St/z_en_st.c index 89050a2ed3..e6d9fd670d 100644 --- a/src/overlays/actors/ovl_En_St/z_en_st.c +++ b/src/overlays/actors/ovl_En_St/z_en_st.c @@ -798,7 +798,7 @@ void EnSt_Init(Actor* thisx, PlayState* play) { this->actor.naviEnemyId = NAVI_ENEMY_SKULLTULA; } EnSt_CheckCeilingPos(this, play); - this->actor.flags |= ACTOR_FLAG_14; + this->actor.flags |= ACTOR_FLAG_CAN_ATTACH_TO_ARROW; this->actor.flags |= ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT; EnSt_SetColliderScale(this); this->actor.gravity = 0.0f; @@ -1013,7 +1013,7 @@ void EnSt_Update(Actor* thisx, PlayState* play) { s32 pad; Color_RGBA8 color = { 0, 0, 0, 0 }; - if (this->actor.flags & ACTOR_FLAG_15) { + if (this->actor.flags & ACTOR_FLAG_ATTACHED_TO_ARROW) { SkelAnime_Update(&this->skelAnime); } else if (!EnSt_CheckColliders(this, play)) { // no collision has been detected.