1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-02 22:14:33 +00:00

Document En_Rd (#1179)

* Port a ton of stuff from MM

* Damage effect enum

* Enum for type

* Enum for action

* Limb enum

* Match MM styling as much as possible

* Divide object into sections

* Document values in EnRdDamageEffect

* Respond to Dragorn's review

* Apply Dragorn's suggestion for the union

* Respond to Dragorn's second review

* Move all actions away from -ing

* Fix typos

* Respond to Fig and Roman's reviews

* Fix build error, whoops

* Bring back // fallthrough
This commit is contained in:
Tom Overton 2022-05-07 07:43:01 -07:00 committed by GitHub
parent 80186ec1ab
commit 74bed3ec9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 606 additions and 481 deletions

View file

@ -6,6 +6,7 @@
#include "z_bg_haka_huta.h"
#include "objects/object_hakach_objects/object_hakach_objects.h"
#include "overlays/actors/ovl_En_Rd/z_en_rd.h"
#define FLAGS ACTOR_FLAG_4
@ -132,7 +133,7 @@ void BgHakaHuta_SpawnEnemies(BgHakaHuta* this, GlobalContext* globalCtx) {
this->dyna.actor.home.pos.y - 40.0f,
(this->dyna.actor.home.pos.z - (-25.0f) * (Math_SinS(this->dyna.actor.shape.rot.y)) +
Math_CosS(this->dyna.actor.shape.rot.y) * 100.0f),
0, this->dyna.actor.shape.rot.y, 0, 0xFD);
0, this->dyna.actor.shape.rot.y, 0, (u8)REDEAD_TYPE_GIBDO_RISING_OUT_OF_COFFIN);
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -8,29 +8,71 @@ struct EnRd;
typedef void (*EnRdActionFunc)(struct EnRd*, GlobalContext*);
#define REDEAD_GET_FLAGS(thisx) (((thisx)->params & 0xFF00) >> 8)
typedef enum {
/* 0 */ REDEAD_GIBDO_LIMB_NONE,
/* 1 */ REDEAD_GIBDO_LIMB_ROOT,
/* 2 */ REDEAD_GIBDO_LIMB_LEFT_LEG_ROOT,
/* 3 */ REDEAD_GIBDO_LIMB_LEFT_THIGH,
/* 4 */ REDEAD_GIBDO_LIMB_LEFT_SHIN,
/* 5 */ REDEAD_GIBDO_LIMB_LEFT_FOOT_ROOT,
/* 6 */ REDEAD_GIBDO_LIMB_LEFT_FOOT,
/* 7 */ REDEAD_GIBDO_LIMB_RIGHT_LEG_ROOT,
/* 8 */ REDEAD_GIBDO_LIMB_RIGHT_THIGH,
/* 9 */ REDEAD_GIBDO_LIMB_RIGHT_SHIN,
/* 10 */ REDEAD_GIBDO_LIMB_RIGHT_FOOT_ROOT,
/* 11 */ REDEAD_GIBDO_LIMB_RIGHT_FOOT,
/* 12 */ REDEAD_GIBDO_LIMB_UPPER_BODY_ROOT,
/* 13 */ REDEAD_GIBDO_LIMB_TORSO_ROOT,
/* 14 */ REDEAD_GIBDO_LIMB_TORSO,
/* 15 */ REDEAD_GIBDO_LIMB_LEFT_ARM_ROOT,
/* 16 */ REDEAD_GIBDO_LIMB_LEFT_UPPER_ARM,
/* 17 */ REDEAD_GIBDO_LIMB_LEFT_FOREARM,
/* 18 */ REDEAD_GIBDO_LIMB_LEFT_HAND,
/* 19 */ REDEAD_GIBDO_LIMB_RIGHT_ARM_ROOT,
/* 20 */ REDEAD_GIBDO_LIMB_RIGHT_UPPER_ARM,
/* 21 */ REDEAD_GIBDO_LIMB_RIGHT_FOREARM,
/* 22 */ REDEAD_GIBDO_LIMB_RIGHT_HAND,
/* 23 */ REDEAD_GIBDO_LIMB_HEAD_ROOT,
/* 24 */ REDEAD_GIBDO_LIMB_HEAD,
/* 25 */ REDEAD_GIBDO_LIMB_PELVIS,
/* 26 */ REDEAD_GIBDO_LIMB_MAX
} RedeadGibdoLimb;
typedef enum {
/* -3 */ REDEAD_TYPE_GIBDO_RISING_OUT_OF_COFFIN = -3,
/* -2 */ REDEAD_TYPE_GIBDO,
/* -1 */ REDEAD_TYPE_DOES_NOT_MOURN,
/* 0 */ REDEAD_TYPE_DOES_NOT_MOURN_IF_WALKING,
/* 1 */ REDEAD_TYPE_REGULAR,
/* 2 */ REDEAD_TYPE_CRYING,
/* 3 */ REDEAD_TYPE_INVISIBLE
} EnRdType;
typedef struct EnRd {
/* 0x0000 */ Actor actor;
/* 0x014C */ Vec3s firePos[10];
/* 0x0188 */ SkelAnime skelAnime;
/* 0x01CC */ Vec3s jointTable[26];
/* 0x0268 */ Vec3s morphTable[26];
/* 0x0304 */ u8 unk_304;
/* 0x0305 */ u8 unk_305;
/* 0x0306 */ u8 unk_306;
/* 0x0307 */ u8 unk_307;
/* 0x01CC */ Vec3s jointTable[REDEAD_GIBDO_LIMB_MAX];
/* 0x0268 */ Vec3s morphTable[REDEAD_GIBDO_LIMB_MAX];
/* 0x0304 */ u8 grabState;
/* 0x0305 */ u8 isMourning;
/* 0x0306 */ u8 playerStunWaitTimer; // Cannot stun the player if this is non-zero
/* 0x0307 */ u8 grabWaitTimer; // Cannot grab the player if this is non-zero
/* 0x0308 */ EnRdActionFunc actionFunc;
/* 0x030C */ s16 unk_30C;
/* 0x030E */ s16 unk_30E;
/* 0x0310 */ s16 unk_310;
/* 0x0312 */ s16 unk_312;
/* 0x0314 */ s16 unk_314;
/* 0x0316 */ s16 unk_316;
/* 0x0318 */ u8 unk_318;
/* 0x0319 */ u8 unk_319;
/* 0x031A */ u8 unk_31A;
/* 0x031B */ u8 unk_31B;
/* 0x031C */ u8 unk_31C;
/* 0x031D */ u8 unk_31D;
/* 0x030C */ s16 timer;
/* 0x030E */ s16 headYRotation;
/* 0x0310 */ s16 upperBodyYRotation;
/* 0x0312 */ s16 rdFlags;
/* 0x0314 */ s16 alpha;
/* 0x0316 */ s16 sunsSongStunTimer;
/* 0x0318 */ u8 stunnedBySunsSong;
/* 0x0319 */ u8 grabDamageTimer;
/* 0x031A */ u8 fireTimer;
/* 0x031B */ u8 action;
/* 0x031C */ u8 damageEffect;
/* 0x031D */ u8 unk_31D; // related to player->unk_845
/* 0x0320 */ ColliderCylinder collider;
} EnRd; // size = 0x036C