ovl_En_Death and ovl_En_Minideath (#1645)

* En_Death new build system edition

* Fix merge

* Matched

* Fix merge

* Some names

* Suggested changes

* Further suggested changes

* Add value comments to MinideathAction
This commit is contained in:
Tharo
2024-06-21 02:36:11 +01:00
committed by GitHub
parent 2c680efa91
commit 384115d2a0
8 changed files with 2641 additions and 379 deletions
File diff suppressed because it is too large Load Diff
+48 -2
View File
@@ -2,6 +2,8 @@
#define Z_EN_DEATH_H
#include "global.h"
#include "overlays/actors/ovl_En_Minideath/z_en_minideath.h"
#include "objects/object_death/object_death.h"
struct EnDeath;
@@ -9,9 +11,53 @@ typedef void (*EnDeathActionFunc)(struct EnDeath*, PlayState*);
typedef struct EnDeath {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x44];
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ EnDeathActionFunc actionFunc;
/* 0x18C */ char unk_18C[0x7AC];
/* 0x18C */ u8 unk_18C;
/* 0x18D */ u8 coreGuarded;
/* 0x18E */ u8 holdsScythe;
/* 0x18F */ u8 dmgEffect;
/* 0x190 */ s8 numScytheAfterImages;
/* 0x191 */ u8 matAnimStep; // animated material color step?
/* 0x192 */ u8 inEarlyIntro;
/* 0x193 */ u8 noDrawLimbs[GOMESS_LIMB_MAX];
/* 0x1A9 */ u8 flameAlphas[56];
/* 0x1E2 */ Vec3s jointTable[GOMESS_LIMB_MAX];
/* 0x266 */ Vec3s morphTable[GOMESS_LIMB_MAX];
/* 0x2EA */ s16 floatTimer;
/* 0x2EC */ s16 weaponColliderLastUpdateTime;
/* 0x2EE */ s16 actionTimer;
/* 0x2F0 */ UNK_TYPE2 unk_2F0;
/* 0x2F2 */ s16 cloakUpperRotationModifier;
/* 0x2F4 */ s16 cloakLowerRotationModifier;
/* 0x2F6 */ s16 coreRotation;
/* 0x2F8 */ s16 explosiveDamageTimer;
/* 0x2FA */ s16 camId;
/* 0x2FC */ s16 lightArrowDamageTimer;
/* 0x300 */ s32 effectIndex;
/* 0x304 */ f32 scytheScale;
/* 0x308 */ f32 coreVelocity;
/* 0x30C */ f32 camEyeSpeed;
/* 0x310 */ f32 camAtSpeed;
/* 0x314 */ f32 dmgEffectScale;
/* 0x318 */ f32 dmgEffectSteamScale;
/* 0x31C */ f32 dmgEffectAlpha;
/* 0x320 */ Vec3f corePos;
/* 0x32C */ Vec3f scytheWorldPos;
/* 0x338 */ Vec3f scytheScreenPos;
/* 0x344 */ Vec3f camEyeTarget;
/* 0x350 */ Vec3f camAtTarget;
/* 0x35C */ Vec3f bodyPartsPos[14];
/* 0x404 */ Vec3f sparklePositions[56];
/* 0x6A4 */ MtxF scytheMtxF;
/* 0x6E4 */ EnMinideath* miniDeaths[20];
/* 0x734 */ AnimatedMaterial* bodyMatAnim;
/* 0x738 */ AnimatedMaterial* coreMatAnim;
/* 0x73C */ ColliderCylinder bodyCollider;
/* 0x788 */ ColliderQuad weaponCollider;
/* 0x808 */ ColliderSphere coreCollider;
/* 0x860 */ ColliderTris weaponSpinningCollider;
/* 0x880 */ ColliderTrisElement weaponSpinningColliderElements[2];
} EnDeath; // size = 0x938
#endif // Z_EN_DEATH_H
File diff suppressed because it is too large Load Diff
@@ -7,10 +7,47 @@ struct EnMinideath;
typedef void (*EnMinideathActionFunc)(struct EnMinideath*, PlayState*);
#define MINIDEATH_NUM_EFFECTS 3
// "animation" length
#define MINIDEATH_ANIM_LENGTH 9
typedef enum {
/* 0 */ MINIDEATH_ACTION_CONTINUE, // continue with current action until it is changed
/* 1 */ MINIDEATH_ACTION_SCATTER, // scatter after light arrows?
/* 2 */ MINIDEATH_ACTION_RETURN, // gomess damaged
/* 3 */ MINIDEATH_ACTION_START_SWARM,
/* 4 */ MINIDEATH_ACTION_SWARM, // chase player?
/* 5 */ MINIDEATH_ACTION_DEATH_2, // death cs part 3
/* 6 */ MINIDEATH_ACTION_DEATH_1, // death cs part 1
/* 7 */ MINIDEATH_ACTION_INTRO_1, // intro cs part 2
/* 8 */ MINIDEATH_ACTION_INTRO_2, // intro cs part 5 (1)
/* 9 */ MINIDEATH_ACTION_INTRO_3 // intro cs part 5 (2)
} MinideathAction;
typedef struct {
/* 0x00 */ u8 animFrame;
/* 0x01 */ u8 state;
/* 0x04 */ Vec3f pos;
/* 0x10 */ Vec3f vel;
/* 0x1C */ Vec3s angle;
/* 0x22 */ s16 timer;
} MiniDeathEffect; // size = 0x24
typedef struct EnMinideath {
/* 0x000 */ Actor actor;
/* 0x144 */ EnMinideathActionFunc actionFunc;
/* 0x148 */ char unk_148[0x164];
/* 0x148 */ u8 number;
/* 0x149 */ u8 crowdState;
/* 0x14A */ s16 timer;
/* 0x14C */ s16 spawnShapeYaw;
/* 0x14E */ s16 attackTimer;
/* 0x150 */ Vec3s moveDirection;
/* 0x158 */ f32 initialHeightDiffFromParent;
/* 0x15C */ Actor* targetActor;
/* 0x160 */ MiniDeathEffect effects[MINIDEATH_NUM_EFFECTS];
/* 0x1CC */ ColliderJntSph collider;
/* 0x1EC */ ColliderJntSphElement colliderElements[MINIDEATH_NUM_EFFECTS];
} EnMinideath; // size = 0x2AC
#endif // Z_EN_MINIDEATH_H