This commit is contained in:
robojumper
2025-12-31 00:44:11 +01:00
parent dcb16363e5
commit f6ac925487
9 changed files with 598 additions and 74 deletions
+14 -6
View File
@@ -202,12 +202,18 @@ class dAcBlastboss_c : public dAcEnBase_c {
B_LAST_BOSS_NODE_skirtHU1 = 134,
};
// TODO: mFightState probably means different things in
// different states, so maybe we need to either remove
// this again or split this up further.
enum FightState_e {
FIGHT_STATE_0,
FIGHT_STATE_0 = 0,
FIGHT_STATE_1,
FIGHT_STATE_2,
FIGHT_STATE_3,
FIGHT_STATE_4,
FIGHT_STATE_10 = 10,
FIGHT_STATE_11,
};
public:
@@ -246,6 +252,7 @@ private:
bool fn_143_77C0();
void fn_143_7B00();
void fn_143_7F80();
bool fn_143_9420();
void fn_143_9610();
void fn_143_A110(s32);
@@ -284,7 +291,7 @@ private:
/* 0x1141 */ u8 field_0x1141;
/* 0x1142 */ u8 field_0x1142;
/* 0x1143 */ u8 field_0x1143;
/* 0x1144 */ u8 field_0x1144;
/* 0x1144 */ s8 field_0x1144;
/* 0x1145 */ u8 field_0x1145;
/* 0x1146 */ bool mIsSwordEmpowered;
/* 0x1147 */ u8 field_0x1147;
@@ -297,9 +304,8 @@ private:
/* 0x114E */ u8 field_0x114E;
/* 0x114F */ u8 field_0x114F;
/* 0x1150 */ u8 field_0x1150;
/* 0x1151 */ u8 _0x1151[0x1156 - 0x1151];
/* 0x1152 */ u16 field_0x1152;
/* 0x1154 */ u16 field_0x1154;
/* 0x1156 */ u16 field_0x1156[6];
/* 0x1162 */ u8 _0x1162[0x1164 - 0x1162];
@@ -346,7 +352,9 @@ private:
/* 0x11B0 */ f32 field_0x11B0;
/* 0x11B4 */ u8 _0x11B4[0x11BC - 0x11B4];
/* 0x11B4 */ u8 _0x11B4[0x11B8 - 0x11B4];
/* 0x11B8 */ f32 field_0x11B8;
/* 0x11BC */ f32 field_0x11BC;
/* 0x11C0 */ f32 field_0x11C0;
+3
View File
@@ -992,6 +992,9 @@ public:
void ClrTg_0x10000() {
return mTg.OffSPrm(0x10000);
}
void ClrTg_0x8000000() {
return mTg.OffSPrm(0x8000000);
}
u32 ChkTgBonk() const {
return mTg.MskSPrm(0x200000);
}
+2 -1
View File
@@ -84,7 +84,8 @@ public:
// a ptmf. It's not immediately clear how this works,
// does every actor subclass the LinkedCollider___,
// or are the functions all added here for the other
// files to implement?
// files to implement? d_a_b_lastboss commits a typing crime here
// to make it work...
typedef bool (cCcD_Obj::*ccPtmf)();
cCcD_Obj *find(ccPtmf f) const;
+26 -1
View File
@@ -463,6 +463,19 @@ public:
ATTACK_FINAL_BLOW = 11,
};
enum SpecificPlayerAttackDirection_e {
/* 0x000 */ ATTACK_DIRECTION_NONE = 0,
/* 0x001 */ ATTACK_DIRECTION_DOWN = 1 << 0,
/* 0x002 */ ATTACK_DIRECTION_DOWNRIGHT = 1 << 1,
/* 0x004 */ ATTACK_DIRECTION_RIGHT = 1 << 2,
/* 0x008 */ ATTACK_DIRECTION_UPRIGHT = 1 << 3,
/* 0x010 */ ATTACK_DIRECTION_UP = 1 << 4,
/* 0x020 */ ATTACK_DIRECTION_UPLEFT = 1 << 5,
/* 0x040 */ ATTACK_DIRECTION_LEFT = 1 << 6,
/* 0x080 */ ATTACK_DIRECTION_DOWNLEFT = 1 << 7,
/* 0x100 */ ATTACK_DIRECTION_STAB = 1 << 8,
};
enum ModelUpdateFlags_e {
UPDATE_MODEL_SWORD = 0x20,
UPDATE_MODEL_SHIELD = 0x40,
@@ -625,6 +638,14 @@ public:
return mAttackDirection != ATTACK_NONE;
}
bool isAttackingJumpSlash() const {
return mAttackDirection == ATTACK_JUMP_SLASH;
}
u16 getSpecificAttackDirection() const {
return mSpecificAttackDirection;
}
inline bool hasvt_0x1C0() const {
return vt_0x1C0() != nullptr;
}
@@ -637,6 +658,9 @@ public:
bool isAttackingStab() const;
bool isAttackingSpinHorizontal() const;
bool isAttackingSpinVertical() const;
bool isAttackingSpin() const {
return isAttackingSpinHorizontal() || isAttackingSpinVertical();
}
void setBonkRelatedAnimFlag(bool b);
void setPosYRot(const mVec3_c &pos, mAng rot, bool force = false, UNKWORD = 0, UNKWORD = 0);
void setTransform(const mMtx_c &mtx, bool force, UNKWORD, UNKWORD);
@@ -668,7 +692,8 @@ protected:
/* 0x334 */ f32 field_0x334;
/* 0x338 */ u8 mAttackDirection;
/* 0x339 */ u8 mRidingActorType;
/* 0x33A */ u8 unk_0x33A[0x340 - 0x33A];
/* 0x33A */ u16 mSpecificAttackDirection;
/* 0x33C */ u8 unk_0x33C[0x340 - 0x33C];
/* 0x340 */ u32 someFlags_0x340;
/* 0x344 */ u32 mFaceUpdateFlags;
/* 0x348 */ u32 mSwordAndMoreStates;