`En_Po_Sisters`: some changes requested by thar0.

As there are contradictory instructions on location of actor's flag enums, this will remain unchanged until a consensus is reached.
This commit is contained in:
blackgamma7 2025-12-10 15:35:03 -05:00
parent 6975d63a30
commit 758d8e4dcd
3 changed files with 321 additions and 318 deletions

View File

@ -355,7 +355,7 @@ void BgPoEvent_BlockIdle(BgPoEvent* this, PlayState* play) {
if ((this->type == 0) && (this->index == 0)) {
amy = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_PO_SISTERS, this->dyna.actor.world.pos.x + 30.0f,
this->dyna.actor.world.pos.y - 30.0f, this->dyna.actor.world.pos.z + 30.0f, 0,
this->dyna.actor.shape.rot.y, 0, this->dyna.actor.params + (EN_PO_SISTERS_PARAM(AMY)));
this->dyna.actor.shape.rot.y, 0, this->dyna.actor.params + EN_PO_SISTERS_PARAM(AMY));
if (amy != NULL) {
OnePointCutscene_Init(play, 3170, 30, amy, CAM_ID_MAIN);
}

File diff suppressed because it is too large Load Diff

View File

@ -18,18 +18,18 @@ typedef struct EnPoSisters {
/* 0x0196 */ u8 hoverPulse;
/* 0x0197 */ u8 vanishTimer;
/* 0x0198 */ u8 torchFlames; // number of torch flames to draw
/* 0x0199 */ u8 sisterFlags; // uses EnPoSisterFlags
/* 0x019A */ s16 sisterTimer; // timer used for various situations
/* 0x019C */ s16 megVar; // Meg and her decoys use it as a behaviour timer
/* 0x0199 */ u8 flags; // uses EnPoSisterFlags
/* 0x019A */ s16 timer; // timer used for various situations
/* 0x019C */ s16 sisterVar; // Used as a decoy counter for Meg, her sisters a reveal timer
/* 0x019E */ Vec3s jointTable[12];
/* 0x01E6 */ Vec3s morphTable[12];
/* 0x022E */ Color_RGBA8 sisterColor; // (rgb) for eyes, (a) for rest of body
/* 0x022E */ Color_RGBA8 color; // (rgb) for eyes, (a) for rest of body
/* 0x0234 */ Vec3f torchPos[8]; // positions of the torch flame and smaller circling flames
/* 0x0294 */ f32 circleDist; // distance of Meg when circling Link.
/* 0x0298 */ LightNode* lightNode;
/* 0x029C */ LightInfo lightInfo;
/* 0x02AC */ ColliderCylinder collider;
/* 0x02F8 */ MtxF torchMtx;
/* 0x02F8 */ MtxF torchMtxF;
} EnPoSisters; // size = 0x0338
typedef enum EnPoSisterNames {
@ -39,9 +39,13 @@ typedef enum EnPoSisterNames {
EN_PO_SISTERS_AMY, // green sister, hides in block puzzle
} EnPoSisterNames;
#define POE_SISTER_GET_ID(thisx) PARAMS_GET_U(thisx->params, 8, 2)
#define POE_SISTER_GET_DECOY(thisx) PARAMS_GET_U(thisx->params, 10, 2)
#define POE_SISTER_GET_INTRO(thisx) PARAMS_GET_U(thisx->params, 12, 1)
#define EN_PO_SISTERS_PARAM_N(n) (n << 8) // param for which sister by number
#define EN_PO_SISTERS_PARAM(name) (EN_PO_SISTERS_##name << 8) // param for which sister by name
#define EN_PO_SISTERS_DECOY_PARAM (1 << 10) // param for Meg's decoys
#define EN_PO_SISTERS_DECOY_PARAM(n) (n << 10) // param for Meg's decoys
#define EN_PO_SISTERS_INTRO_PARAM (1 << 12) // param for Poe Sisters when first entering foyer
#endif