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;
+15 -5
View File
@@ -21,8 +21,8 @@ public:
/* 0x01C */ dSwordSwingEffectProcMgr_c mProc;
private:
/* 0x070 */ bool field_0x070;
/* 0x071 */ bool field_0x071;
/* 0x070 */ bool mIsActive;
/* 0x071 */ bool mFirstFramePassed;
/* 0x074 */ mVec3_c field_0x074;
/* 0x080 */ mVec3_c field_0x080;
/* 0x08C */ mVec3_c field_0x08C;
@@ -30,6 +30,8 @@ private:
/* 0x0A4 */ f32 field_0x0A4;
/* 0x0A8 */ f32 field_0x0A8;
/* 0x0AC */ dCcD_Linked_Cps mCcs[3];
public:
/* 0x52C */ dColliderLinkedList mCcList;
public:
@@ -53,11 +55,19 @@ public:
}
bool entry(dAcObjBase_c *obj, dShadowCircle_c *shadow, mQuat_c *quat);
void fn_8006B640();
void enableAttack();
void fn_8006B660(UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, f32);
void setDamageMaybe(u8 damage);
void fn_8006B7A0(u32);
void fn_8006B800(u32);
void setAttackActive(bool b) {
field_0x070 = b;
void enable() {
enableAttack();
mProc.setActive(true);
}
void disable() {
mIsActive = false;
mProc.setActive(false);
}
};