Files
tww/include/c/c_damagereaction.h
T
SuperDude88 925c338bd6 Most of c_damagereaction (#903)
* Most of c_damagereaction

Still planning to go back and finish dr_damage_anime

* Match dr_damage_anime

* Fix Last Instruction Issues
2025-12-05 09:12:14 -08:00

211 lines
6.0 KiB
C++

#ifndef C_DAMAGEREACTION_H
#define C_DAMAGEREACTION_H
#include "f_op/f_op_actor.h"
#include "d/d_cc_d.h"
#include "d/d_bg_s_acch.h"
#include "d/d_particle.h"
class mDoExt_McaMorf;
class JPABaseEmitter;
struct enemyice {
public:
/* 0x000 */ fopAc_ac_c* mpActor;
/* 0x004 */ s16 mFreezeDuration;
/* 0x006 */ s8 mLightShrinkTimer;
/* 0x007 */ u8 m007[0x008 - 0x007];
/* 0x008 */ f32 mYOffset;
/* 0x00C */ s8 m00C;
/* 0x00D */ s8 mMode;
/* 0x00E */ s16 mFreezeTimer;
/* 0x010 */ s16 mMoveDelayTimer;
/* 0x012 */ s16 mAngleY;
/* 0x014 */ s16 mAngularVelY;
/* 0x016 */ u8 m016[0x018 - 0x016];
/* 0x018 */ cXyz mSpeed;
/* 0x024 */ f32 mSpeedF;
/* 0x028 */ f32 m028;
/* 0x02C */ f32 m02C;
/* 0x030 */ dCcD_Stts mStts;
/* 0x06C */ dCcD_Cyl mCyl;
/* 0x19C */ f32 mCylHeight;
/* 0x1A0 */ f32 mWallRadius;
/* 0x1A4 */ f32 mScaleXZ;
/* 0x1A8 */ f32 mScaleY;
/* 0x1AC */ f32 mParticleScale;
/* 0x1B0 */ u8 m1B0;
/* 0x1B1 */ u8 mDeathSwitch;
/* 0x1B2 */ u8 m1B2[0x1B4 - 0x1B2];
/* 0x1B4 */ dBgS_AcchCir mBgAcchCir;
/* 0x1F4 */ dBgS_ObjAcch mBgAcch;
};
STATIC_ASSERT(sizeof(enemyice) == 0x3B8);
struct enemyfire {
public:
/* 0x000 */ fopAc_ac_c* mpActor;
/* 0x004 */ s16 mFireDuration;
/* 0x006 */ s8 mMode;
/* 0x007 */ u8 m007[0x008 - 0x007];
/* 0x008 */ s16 mFireTimer;
/* 0x00A */ u8 m00A[0x00C - 0x00A];
/* 0x00C */ mDoExt_McaMorf* mpMcaMorf;
/* 0x010 */ s8 mFlameJntIdxs[10];
/* 0x01A */ u8 m01A[0x01C - 0x01A];
/* 0x01C */ f32 mParticleScale[10];
/* 0x044 */ s16 mFlameTimers[10];
/* 0x058 */ JPABaseEmitter* mpFlameEmitters[10];
/* 0x080 */ cXyz mPrevPos;
/* 0x08C */ JGeometry::TVec3<f32> mDirection;
/* 0x098 */ f32 mFlameScaleY;
/* 0x09C */ u8 m09C[0x09D - 0x09C];
/* 0x09D */ u8 mHitboxFlameIdx;
/* 0x09E */ u8 m09E[0x0A0 - 0x09E];
/* 0x0A0 */ dCcD_Stts mStts;
/* 0x0DC */ dCcD_Sph mSph;
/* 0x208 */ LIGHT_INFLUENCE mLight;
};
STATIC_ASSERT(sizeof(enemyfire) == 0x228);
struct damagereaction {
public:
enum EnemyType {
TYPE_MOBLIN = 1,
TYPE_BOKOBLIN = 2,
TYPE_DARKNUT = 3,
};
/* 0x000 */ fopEn_enemy_c* mpEnemy;
/* 0x004 */ s16 mMode;
/* 0x006 */ s16 mAction;
/* 0x008 */ s16 mEnemyType;
/* 0x00A */ u8 m00A[0x00C - 0x00A];
/* 0x00C */ int mTimer;
/* 0x010 */ csXyz m010[20];
/* 0x088 */ csXyz m088[20];
/* 0x100 */ cXyz m100[20];
/* 0x1F0 */ cXyz m1F0[20];
/* 0x2E0 */ cXyz m2E0[20];
/* 0x3D0 */ int m3D0[14];
/* 0x408 */ int m408;
/* 0x40C */ int m40C;
/* 0x410 */ int m410;
/* 0x414 */ int m414;
/* 0x418 */ int m418;
/* 0x41C */ u8 m41C[0x420 - 0x41C];
/* 0x420 */ int m420;
/* 0x424 */ int m424;
/* 0x428 */ f32 m428;
/* 0x42C */ cXyz m42C;
/* 0x438 */ int m438;
/* 0x43C */ u8 m43C[0x440 - 0x43C];
/* 0x440 */ s16 m440;
/* 0x442 */ s16 m442;
/* 0x444 */ s16 m444;
/* 0x446 */ s16 m446;
/* 0x448 */ s16 m448;
/* 0x44A */ u8 m44A[0x44C - 0x44A];
/* 0x44C */ cXyz m44C;
/* 0x458 */ cXyz m458;
/* 0x464 */ u8 m464[0x468 - 0x464];
/* 0x468 */ f32 m468;
/* 0x46C */ f32 m46C;
/* 0x470 */ f32 m470;
/* 0x474 */ f32 m474;
/* 0x478 */ f32 m478;
/* 0x47C */ int m47C;
/* 0x480 */ s16 m480;
/* 0x482 */ s16 m482;
/* 0x484 */ s16 m484;
/* 0x486 */ s16 m486;
/* 0x488 */ s16 m488;
/* 0x48A */ s16 m48A;
/* 0x48C */ csXyz m48C;
/* 0x492 */ s16 m492;
/* 0x492 */ s16 m494;
/* 0x496 */ s16 m496;
/* 0x498 */ s16 m498;
/* 0x49A */ s16 m49A;
/* 0x49C */ s16 m49C;
/* 0x49E */ s16 m49E;
/* 0x4A0 */ s16 m4A0;
/* 0x4A2 */ s16 m4A2;
/* 0x4A4 */ s16 m4A4;
/* 0x4A6 */ s16 m4A6;
/* 0x4A8 */ s16 m4A8;
/* 0x4AA */ s16 m4AA;
/* 0x4AC */ s16 m4AC;
/* 0x4AE */ s16 m4AE;
/* 0x4B0 */ s16 m4B0;
/* 0x4B2 */ s16 m4B2;
/* 0x4B4 */ s16 m4B4;
/* 0x4B6 */ s16 m4B6;
/* 0x4B8 */ s16 m4B8;
/* 0x4BA */ s16 m4BA;
/* 0x4BC */ s16 m4BC;
/* 0x4BE */ s16 m4BE;
/* 0x4C0 */ s16 m4C0;
/* 0x4C2 */ u8 m4C2[0x4C8 - 0x4C2];
/* 0x4C8 */ s16 m4C8[3];
/* 0x4CE */ s16 mInvincibleTimer;
/* 0x4D0 */ s16 m4D0;
/* 0x4D2 */ u8 m4D2[0x4D4 - 0x4D2];
/* 0x4D4 */ f32 m4D4;
/* 0x4D8 */ u8 m4D8[0x4DC - 0x4D8];
/* 0x4DC */ dBgS_AcchCir mAcchCir;
/* 0x51C */ dBgS_ObjAcch mAcch;
/* 0x6E0 */ int m6E0;
/* 0x6E4 */ f32 mSpawnY;
/* 0x6E8 */ cXyz m6E8;
/* 0x6F4 */ cXyz m6F4[2];
/* 0x70C */ u8 m70C;
/* 0x70D */ u8 m70D;
/* 0x70E */ u8 m70E;
/* 0x70F */ u8 m70F[0x710 - 0x70F];
/* 0x710 */ u8 m710;
/* 0x711 */ u8 m711;
/* 0x712 */ u8 m712;
/* 0x713 */ u8 m713;
/* 0x714 */ fopAc_ac_c* m714;
/* 0x718 */ s16 m718;
/* 0x71A */ s16 m71A;
/* 0x71C */ u8 m71C[0x71E - 0x71C];
/* 0x71E */ s16 m71E;
/* 0x720 */ f32 mMaxFallDistance;
/* 0x724 */ dCcD_Stts mStts;
/* 0x760 */ cXyz mParticlePos;
/* 0x76C */ csXyz mParticleAngle;
/* 0x772 */ u8 m772[0x774 - 0x772];
/* 0x774 */ dPa_smokeEcallBack mParticleCallBack;
/* 0x794 */ s16 m794;
/* 0x796 */ u8 m796[0x798 - 0x796];
/* 0x798 */ f32 m798;
/* 0x79C */ cXyz* m79C;
/* 0x7A0 */ cXyz m7A0;
/* 0x7AC */ csXyz m7AC;
/* 0x7B2 */ s16 m7B2;
/* 0x7B4 */ s16 m7B4;
/* 0x7B6 */ u8 m7B6;
/* 0x7B7 */ u8 m7B7[0x7B8 - 0x7B7];
/* 0x7B8 */ fpc_ProcID m7B8;
}; // Size: 0x7BC
STATIC_ASSERT(sizeof(damagereaction) == 0x7BC);
BOOL ice_bg_check(enemyice*);
BOOL enemy_ice(enemyice*);
void enemy_fire(enemyfire*);
void enemy_fire_remove(enemyfire*);
void enemy_piyo_set(fopAc_ac_c*);
s16 wall_angle_get(fopAc_ac_c*, s16);
void dr_body_bg_check(damagereaction*);
int dr_joint_bg_check(damagereaction*);
int kado_check(damagereaction*);
s16 hang_ang_get(damagereaction*);
int dr_damage_set(damagereaction*);
void dr_damage_anime(damagereaction*);
void dr_matrix_set(damagereaction*);
int damage_reaction(damagereaction*);
#endif /* C_DAMAGEREACTION_H */