summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorElijah Thomas <42302100+elijah-thomas774@users.noreply.github.com>2026-10-03 09:51:10 -0400
committerGitHub <noreply@github.com>2026-10-03 09:51:10 -0400
commit7c3e4e4a07aff38717d3c2b58c3836f1d62e43ed (patch)
treecbe177a19cfd3328d4cb728c6647959159a605c3 /include
parent98aba2c59b9bcd261d98cd8843bc40ae0b2d6877 (diff)
parent364cd71a1e71184999d481ded529033c7c38a1ff (diff)
Merge pull request #348 from elijah-thomas774/ghirahum-stuff
Ghirahim stuff
Diffstat (limited to 'include')
-rw-r--r--include/d/a/b/d_a_b_girahimu2.h6
-rw-r--r--include/d/a/d_a_girahimu_sword_beam.h66
-rw-r--r--include/d/a/e/d_a_en_base.h3
-rw-r--r--include/d/a/obj/d_a_obj_base.h5
-rw-r--r--include/d/a/obj/d_a_obj_girahimu_floor.h65
-rw-r--r--include/d/a/obj/d_a_obj_girahimu_knife.h86
-rw-r--r--include/d/a/obj/d_a_obj_girahimu_sword_link.h56
-rw-r--r--include/d/col/c/c_cc_d.h12
-rw-r--r--include/d/d_player_act.h9
-rw-r--r--include/m/m_angle.h3
-rw-r--r--include/toBeSorted/d_enemy_sword_mdl.h8
11 files changed, 307 insertions, 12 deletions
diff --git a/include/d/a/b/d_a_b_girahimu2.h b/include/d/a/b/d_a_b_girahimu2.h
index 67a39339..a825633c 100644
--- a/include/d/a/b/d_a_b_girahimu2.h
+++ b/include/d/a/b/d_a_b_girahimu2.h
@@ -9,8 +9,14 @@ public:
dAcGirahimu2_c() : mStateMgr(*this) {}
virtual ~dAcGirahimu2_c() {}
+ void setField_0xD52(u16 val) {
+ field_0xD52 = val;
+ }
+
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcGirahimu2_c);
+
+ /* 0xD52 */ u16 field_0xD52;
};
#endif
diff --git a/include/d/a/d_a_girahimu_sword_beam.h b/include/d/a/d_a_girahimu_sword_beam.h
index 7f81614c..f06b621d 100644
--- a/include/d/a/d_a_girahimu_sword_beam.h
+++ b/include/d/a/d_a_girahimu_sword_beam.h
@@ -1,19 +1,83 @@
#ifndef D_A_GIRAHIMU_SWORD_BEAM_H
#define D_A_GIRAHIMU_SWORD_BEAM_H
+#include "c/c_lib.h"
#include "d/a/obj/d_a_obj_base.h"
+#include "d/col/bg/d_bg_s_acch.h"
+#include "d/col/cc/d_cc_d.h"
+#include "d/d_cc.h"
+#include "d/d_shadow.h"
+#include "m/m_angle.h"
#include "s/s_State.hpp"
+#include "toBeSorted/d_emitter.h"
class dAcGirahimuSwordBeam_c : public dAcObjBase_c {
public:
dAcGirahimuSwordBeam_c() : mStateMgr(*this) {}
virtual ~dAcGirahimuSwordBeam_c() {}
+ virtual int create() override;
+ virtual int doDelete() override;
+ virtual int draw() override;
+ virtual bool createHeap() override;
+ virtual int actorExecute() override;
+
STATE_FUNC_DECLARE(dAcGirahimuSwordBeam_c, BulletMove);
STATE_FUNC_DECLARE(dAcGirahimuSwordBeam_c, Damage);
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcGirahimuSwordBeam_c);
+ STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcGirahimuSwordBeam_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dAcGirahimuSwordBeam_c);
+
+ void swordBeamReturn(s32);
+ void startMoveEmitters();
+ void startDisappearEmitter();
+ void transformMatrix();
+ void fn_240_11F0();
+ void fn_240_1380();
+ void fn_240_16C0();
+ void fn_240_1710();
+ void fn_240_17C0(s32);
+ void fn_240_1810(u32, mAng3_c &, const mAng &);
+
+ void setB00(s16 x, s16 y, s16 z) {
+ field_0xB00 = x;
+ field_0xB02 = y;
+ field_0xB04 = z;
+ }
+
+ mAng getLinkedAngle() const {
+ return (cLib::targetAngleY(mPosition, field_0xAF4.get()->mPosition));
+ }
+
private:
- /* 0x??? */ STATE_MGR_DECLARE(dAcGirahimuSwordBeam_c);
+ /* 0x330 */ dShadowCircle_c mShadow;
+ /* 0x338 */ dBgS_AcchCir mAcchCir;
+ /* 0x394 */ dBgS_ObjAcch mAcch;
+ /* 0x744 */ dCcD_Linked<dCcD_Cps> mCps0;
+ /* 0x8C4 */ dCcD_Linked<dCcD_Cps> mCps1;
+ /* 0xA40 */ dColliderLinkedList mCollider;
+ /* 0xA50 */ STATE_MGR_DECLARE(dAcGirahimuSwordBeam_c);
+ /* 0xA8C */ dEmitter_c mEmitter0;
+ /* 0xAC0 */ dEmitter_c mEmitter1;
+ /* 0xAF4 */ dAcObjRef_c field_0xAF4;
+ /* 0xB00 */ s16 field_0xB00;
+ /* 0xB02 */ s16 field_0xB02;
+ /* 0xB04 */ s16 field_0xB04;
+ /* 0xB06 */ s16 field_0xB06;
+ /* 0xB08 */ s16 field_0xB08;
+ /* 0xB0A */ s16 field_0xB0A;
+ /* 0xB0C */ f32 field_0xB0C;
+ /* 0xB10 */ s32 field_0xB10;
+ /* 0xB14 */ mAng field_0xB14;
+ /* 0xB16 */ s16 field_0xB16;
+ /* 0xB18 */ u16 field_0xB18;
+ /* 0xB1C */ s32 field_0xB1C;
+ /* 0xB20 */ s32 field_0xB20;
+ /* 0xB24 */ u8 field_0xB24;
+ /* 0xB25 */ u8 field_0xB25;
+ /* 0xB26 */ u8 field_0xB26;
+ /* 0xB27 */ u8 field_0xB27;
};
#endif
diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h
index ac03f2b2..88f78f97 100644
--- a/include/d/a/e/d_a_en_base.h
+++ b/include/d/a/e/d_a_en_base.h
@@ -100,6 +100,9 @@ public:
static dAcEnBase_c *GetNextEnemy(dAcEnBase_c *pParent) {
return static_cast<dAcEnBase_c *>(getNextObject(&sEnemyList, pParent));
}
+ static dAcEnBase_c *FindEnemy(fProfile::PROFILE_NAME_e profile, dAcEnBase_c *pParent = nullptr) {
+ return static_cast<dAcEnBase_c *>(findObject(profile, &sEnemyList, pParent));
+ }
protected:
// TODO: Make accessors for this list to auto-convert to dAcEnBase?
diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h
index a72d3ea6..393f38b0 100644
--- a/include/d/a/obj/d_a_obj_base.h
+++ b/include/d/a/obj/d_a_obj_base.h
@@ -203,16 +203,17 @@ public:
const mVec3_c *scale, u32 params2, u32 roomId
);
- static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiNdBa_c *refList, dAcObjBase_c *parent);
+ static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiMgBa_c *refList, dAcObjBase_c *parent);
static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent);
bool isPlayer();
- void calcVelocity(mVec3_c &pos, f32 speed);
+ void calcVelocity(const mVec3_c &pos, f32 speed);
void calcVelocity();
void updateMatrix();
void setDefaultCullDistance();
void fn_8002EA30(f32, f32, f32, f32, f32, void *);
void fn_8002EA60(void *);
void fn_8002EB30(void *);
+
void putInODesert(f32 depth, mVec3_c *position);
void fn_8002ECD0(m3d::smdl_c *smdl, UNKWORD);
// Disabling makes Items and Link Disappear
diff --git a/include/d/a/obj/d_a_obj_girahimu_floor.h b/include/d/a/obj/d_a_obj_girahimu_floor.h
index c1eee1c1..6d6def7b 100644
--- a/include/d/a/obj/d_a_obj_girahimu_floor.h
+++ b/include/d/a/obj/d_a_obj_girahimu_floor.h
@@ -1,22 +1,85 @@
#ifndef D_A_OBJ_GIRAHIMU_FLOOR_H
#define D_A_OBJ_GIRAHIMU_FLOOR_H
+#include "d/a/d_a_base.h"
#include "d/a/obj/d_a_obj_base.h"
+#include "d/col/bg/d_bg_w.h"
+#include "m/m3d/m_anmmatclr.h"
+#include "m/m3d/m_anmtexsrt.h"
+#include "m/m3d/m_smdl.h"
+#include "m/m_vec.h"
+#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
+class dAcGirahimu3First_c;
class dAcOGirahimuFloor_c : public dAcObjBase_c {
public:
dAcOGirahimuFloor_c() : mStateMgr(*this) {}
virtual ~dAcOGirahimuFloor_c() {}
+ enum Type_e {
+ TYPE_Normal,
+ TYPE_Generate,
+ TYPE_Max
+ };
+
+ virtual int doDelete() override;
+ virtual int draw() override;
+ virtual bool createHeap() override;
+ virtual int actorCreate() override;
+ virtual int actorPostCreate() override;
+ virtual int actorExecute() override;
+
STATE_FUNC_DECLARE(dAcOGirahimuFloor_c, Wait);
STATE_FUNC_DECLARE(dAcOGirahimuFloor_c, Return);
STATE_FUNC_DECLARE(dAcOGirahimuFloor_c, Generate);
STATE_FUNC_DECLARE(dAcOGirahimuFloor_c, Broken);
STATE_FUNC_DECLARE(dAcOGirahimuFloor_c, Move);
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcOGirahimuFloor_c);
+ STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcOGirahimuFloor_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dAcOGirahimuFloor_c);
+ STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcOGirahimuFloor_c);
+
+ // Used to request deletion upon both Player and Boss off the platform
+ bool isPlayerAndGhirahimOffFloor();
+
+ // If it is the generate type and there is no linked child
+ bool isGenerateNoChild();
+
+ // Checks if Link is in a final blow state and has connected
+ // with something other than the platform (like ghirahim)
+ bool isSuccessfulFinalBlow();
+
+ // Moves the position to the target destinaton
+ void movePosition();
+
+ // Breaks the platform, releases mBg and requests deletion
+ void doShatter();
+
private:
- /* 0x??? */ STATE_MGR_DECLARE(dAcOGirahimuFloor_c);
+ /* 0x330 */ nw4r::g3d::ResFile mRes;
+ /* 0x334 */ m3d::smdl_c mMdl;
+ /* 0x350 */ dBgW mBg[3];
+ /* 0x980 */ STATE_MGR_DECLARE(dAcOGirahimuFloor_c);
+ /* 0x9BC */ m3d::anmTexSrt_c mAnmTexSrt;
+ /* 0x9E8 */ m3d::anmMatClr_c mAnmMatClr[3];
+ /* 0xA6C */ dAcRef_c<dAcGirahimu3First_c> mGhirahimRef;
+ /* 0xA78 */ dAcRef_c<dAcOGirahimuFloor_c> mChild;
+ /* 0xA64 */ mVec3_c mHomePos;
+ /* 0xA90 */ mVec3_c mTargetPos;
+ /* 0xA9C */ mVec3_c mScaleBg0;
+ /* 0xAA8 */ mVec3_c mScaleBg1;
+ /* 0xAB4 */ f32 mMoveRate;
+ /* 0xAB4 */ f32 mGndHeight;
+ /* 0xABC */ u8 mType;
+ /* 0xABD */ u8 field_0xABD;
+ /* 0xABE */ u8 field_0xABE;
+ /* 0xAC0 */ s32 field_0xAC0;
+ /* 0xAC4 */ bool mbIsHome;
+ /* 0xAC5 */ bool mbMediumSize;
+ /* 0xAC6 */ bool mbRequestShatter;
+ /* 0xAC7 */ bool mbRequestMove;
};
#endif
diff --git a/include/d/a/obj/d_a_obj_girahimu_knife.h b/include/d/a/obj/d_a_obj_girahimu_knife.h
index a94ed7e9..9d6ddf8a 100644
--- a/include/d/a/obj/d_a_obj_girahimu_knife.h
+++ b/include/d/a/obj/d_a_obj_girahimu_knife.h
@@ -2,13 +2,28 @@
#define D_A_OBJ_GIRAHIMU_KNIFE_H
#include "d/a/e/d_a_en_base.h"
+#include "d/col/c/c_cc_d.h"
+#include "d/col/cc/d_cc_d.h"
+#include "d/d_cc.h"
+#include "d/d_shadow.h"
+#include "m/m3d/m_smdl.h"
+#include "m/m_angle.h"
+#include "m/m_mtx.h"
+#include "m/m_quat.h"
+#include "m/m_vec.h"
#include "s/s_State.hpp"
+#include "toBeSorted/d_emitter.h"
class dAcObjGirahimuKnife_c : public dAcEnBase_c {
public:
- dAcObjGirahimuKnife_c() : mStateMgr(*this) {}
+ dAcObjGirahimuKnife_c() : mGlowEmitter(this), mTrailEmitter(this), mStateMgr(*this) {}
virtual ~dAcObjGirahimuKnife_c() {}
+ virtual int create() override;
+ virtual int draw() override;
+ virtual bool createHeap() override;
+ virtual int actorExecute() override;
+
STATE_FUNC_DECLARE(dAcObjGirahimuKnife_c, Wait);
STATE_FUNC_DECLARE(dAcObjGirahimuKnife_c, SpinWait);
STATE_FUNC_DECLARE(dAcObjGirahimuKnife_c, SpinWaitPreAttack);
@@ -20,8 +35,75 @@ public:
STATE_FUNC_DECLARE(dAcObjGirahimuKnife_c, Hit);
STATE_FUNC_DECLARE(dAcObjGirahimuKnife_c, CircleWait);
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcObjGirahimuKnife_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dAcObjGirahimuKnife_c);
+ STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcObjGirahimuKnife_c);
+ STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcObjGirahimuKnife_c);
+
+ void init();
+
+ void fn_239_1C40();
+ void fn_239_1DB0(const mVec3_c &base, const mVec3_c &target);
+ void fn_239_1F50(const mVec3_c &target, f32 add);
+ void fn_239_2110(const mVec3_c &target, f32 add, s16 ang);
+ void setTarget(const mVec3_c &t);
+ void fn_239_2360(bool, bool, f32 zVel);
+ void fn_239_2460(bool, bool, f32 velMult);
+ bool isWaiting();
+ bool isCircleWait();
+ bool lineCheck();
+ void updateMdlMatrix();
+ void startEmitters();
+ void fn_239_2B10();
+ bool checkCutDir(s32 cutDir);
+ void setWait();
+ void setSpinWaitPreAttack();
+ void getReflectForce(cCcD_Obj &cc, f32 forceMult, mVec3_c &outforce);
+ void adjustVelocity(const mVec3_c &force, f32 yVel, f32 forwardVel);
+
private:
- /* 0x??? */ STATE_MGR_DECLARE(dAcObjGirahimuKnife_c);
+ /* 0x378 */ m3d::smdl_c mMdl;
+ /* 0x394 */ dShadowCircle_c mShadow;
+ /* 0x39C */ dEmitter_c mGlowEmitter;
+ /* 0x3D0 */ dEmitter_c mTrailEmitter;
+ /* 0x404 */ dCcD_Linked<dCcD_Sph> mSph0;
+ /* 0x564 */ dCcD_Linked<dCcD_Sph> mSph1;
+ /* 0x6C0 */ dColliderLinkedList mCollider;
+ /* 0x6D0 */ s16 field_0x6D0;
+ /* 0x6D2 */ u16 mGlowEmitterId;
+ /* 0x6D4 */ u16 mTrailEmitterId;
+ /* 0x6D6 */ u16 field_0x6D6;
+ /* 0x6D8 */ mVec3_c field_0x6D8;
+ /* 0x6E4 */ mVec3_c field_0x6E4;
+ /* 0x6F0 */ mAng3_c field_0x6F0;
+ /* 0x6F6 */ mAng3_c field_0x6F6;
+ /* 0x7FC */ u8 _0x6FC[0x704 - 0x6FC];
+ /* 0x704 */ mQuat_c field_0x704;
+ /* 0x714 */ mMtx_c field_0x714;
+ /* 0x744 */ mVec3_c field_0x744;
+ /* 0x750 */ mVec3_c field_0x750;
+ /* 0x75C */ mVec3_c field_0x75C;
+ /* 0x768 */ mVec3_c field_0x768;
+ /* 0x774 */ f32 field_0x774;
+ /* 0x778 */ s16 field_0x778;
+ /* 0x77C */ f32 field_0x77C;
+ /* 0x780 */ mAng field_0x780;
+ /* 0x784 */ s32 field_0x784;
+ /* 0x788 */ s32 mState;
+ /* 0x78C */ bool field_0x78C;
+ /* 0x78D */ bool field_0x78D;
+ /* 0x78E */ bool field_0x78E;
+ /* 0x78F */ bool field_0x78F;
+ /* 0x790 */ bool field_0x790;
+ /* 0x791 */ bool field_0x791;
+ /* 0x792 */ bool field_0x792;
+ /* 0x793 */ bool field_0x793;
+ /* 0x794 */ STATE_MGR_DECLARE(dAcObjGirahimuKnife_c);
+
+ static s32 sSomething0;
+ static s32 sSomething0_1;
+ static mAng sSomething1;
+ static s16 sSomething2;
};
#endif
diff --git a/include/d/a/obj/d_a_obj_girahimu_sword_link.h b/include/d/a/obj/d_a_obj_girahimu_sword_link.h
index b510f157..7dc57214 100644
--- a/include/d/a/obj/d_a_obj_girahimu_sword_link.h
+++ b/include/d/a/obj/d_a_obj_girahimu_sword_link.h
@@ -2,13 +2,41 @@
#define D_A_OBJ_GIRAHIMU_SWORD_LINK_H
#include "d/a/obj/d_a_obj_base.h"
+#include "d/col/bg/d_bg_s_acch.h"
+#include "d/d_shadow.h"
+#include "m/m_angle.h"
+#include "m/m_mtx.h"
+#include "m/m_quat.h"
+#include "m/m_vec.h"
#include "s/s_State.hpp"
+#include "toBeSorted/d_emitter.h"
+#include "toBeSorted/d_enemy_sword_mdl.h"
class dAcObjGirahimuSwordLink_c : public dAcObjBase_c {
public:
- dAcObjGirahimuSwordLink_c() : mStateMgr(*this) {}
+ dAcObjGirahimuSwordLink_c() : mEmitter(this), mStateMgr(*this) {}
virtual ~dAcObjGirahimuSwordLink_c() {}
+ virtual int create() override;
+ virtual int draw() override;
+ virtual bool createHeap() override;
+ virtual int actorExecute() override;
+
+ void init();
+
+ void setEquip();
+ void setGetSword();
+ void setHide();
+ void setThrow(const mVec3_c &force, mAng angle, f32 rate);
+ void setAtThrow(const mVec3_c &velocity);
+ void fn_238_19D0();
+ void updateModelMatrix();
+ void setTransform(const mMtx_c &mtx, const mVec3_c &pos);
+ bool isHide();
+ bool isStick();
+ void reflect(const mVec3_c &rot, f32 gravity, f32, f32 force);
+ bool lineCheck();
+
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Hide);
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Equip);
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, GetSword);
@@ -17,8 +45,32 @@ public:
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Stick);
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Reflect);
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcObjGirahimuSwordLink_c);
+ STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcObjGirahimuSwordLink_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dAcObjGirahimuSwordLink_c);
+ STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcObjGirahimuSwordLink_c);
+
private:
- /* 0x??? */ STATE_MGR_DECLARE(dAcObjGirahimuSwordLink_c);
+ /* 0x330 */ dEnemySwordMdl_c mMdl;
+ /* 0x86C */ dShadowCircle_c mShadow;
+ /* 0x874 */ dEmitter_c mEmitter;
+
+ /* 0x8A8 */ s16 field_0x8A8;
+ /* 0x8AA */ s16 field_0x8AA;
+ /* 0x8AC */ u16 mTrailEmitterID;
+ /* 0x8B0 */ mMtx_c field_0x8B0;
+ /* 0x8E0 */ dBgS_AcchCir mAcchCir;
+ /* 0x93C */ dBgS_ObjAcch mAcch;
+
+ /* 0xCEC */ mVec3_c mGhirahimPos;
+ /* 0xCF8 */ mAng3_c mAngleCopy;
+ /* 0xD00 */ mQuat_c field_0xD00;
+ /* 0xD10 */ mAng field_0xD10;
+ /* 0xD14 */ mVec3_c field_0xD14;
+ /* 0xD20 */ u8 field_0xD20[4];
+ /* 0xD24 */ mAng field_0xD24;
+ /* 0xD26 */ bool field_0xD26;
+ /* 0xD28 */ STATE_MGR_DECLARE(dAcObjGirahimuSwordLink_c);
};
#endif
diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h
index 1050ce14..b6d899ed 100644
--- a/include/d/col/c/c_cc_d.h
+++ b/include/d/col/c/c_cc_d.h
@@ -574,6 +574,9 @@ public:
void SetInfo_0x0(u8 val) {
mSrc.mInfo.field_0x0 = val;
}
+ void SetSrc_0xE(u8 val) {
+ mSrc.field_0xE = val;
+ }
const cCcD_SrcGObjAt &GetSrc() const {
return mSrc;
@@ -883,6 +886,10 @@ public:
void SetAtFlag(u32 flag) {
mAt.SetSPrm(flag);
}
+
+ void SetAtFlag2(u32 flag) {
+ mAt.SetAtFlag(flag);
+ }
void SetAtGrp(u32 grp) {
mAt.SetAtFlag(GetAtGrp() | grp);
}
@@ -1039,13 +1046,16 @@ public:
void SetAtInfo_0x0(u8 amount) {
mAt.SetInfo_0x0(amount);
}
+ void SetAt_0xE(u8 val) {
+ mAt.SetSrc_0xE(val);
+ }
void SetAtDamage(u8 amount) {
mAt.SetAtDamage(amount);
}
void SetAtModifier(u16 modifier) {
mAt.SetSrcModifer(modifier);
- }
+ }
// Tg
diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h
index 3506940c..4f614842 100644
--- a/include/d/d_player_act.h
+++ b/include/d/d_player_act.h
@@ -664,6 +664,12 @@ public:
bool isAttackingSpin() const {
return isAttackingSpinHorizontal() || isAttackingSpinVertical();
}
+ bool isAttackingHorizontal() const {
+ return isAttackingLeft() || isAttackingRight();
+ }
+ bool isAttackingVertical() const {
+ return isAttackingUp() || isAttackingDown();
+ }
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);
@@ -678,7 +684,8 @@ public:
static s32 getCurrentTunicType();
static s32 getCurrentSwordType();
- static const char *getSwordName(s32);
+
+ static const char *getSwordName(s32 = sCurrentSword);
static s32 getCurrentlyEquippedShieldType();
static const mColor &getEarringsColor();
diff --git a/include/m/m_angle.h b/include/m/m_angle.h
index 7282ac39..d5e01d4d 100644
--- a/include/m/m_angle.h
+++ b/include/m/m_angle.h
@@ -112,6 +112,9 @@ public:
f32 radian_c() const {
return mVal * sAngToRad;
}
+ f32 normal_c() const {
+ return mVal * sAngToNorm;
+ }
public:
static s16 d2s(f32 deg) {
diff --git a/include/toBeSorted/d_enemy_sword_mdl.h b/include/toBeSorted/d_enemy_sword_mdl.h
index 28fea0f0..b640de60 100644
--- a/include/toBeSorted/d_enemy_sword_mdl.h
+++ b/include/toBeSorted/d_enemy_sword_mdl.h
@@ -43,7 +43,7 @@ public:
cCcD_Stts &stts, EGG::ResTIMG *pImg, int nView, u32 *pSize
);
bool create(
- mAllocator_c *alloc, nw4r::g3d::ResFile resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
+ mAllocator_c *alloc, nw4r::g3d::ResFile &resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
const mVec3_c &v2, cCcD_Stts &stts, EGG::ResTIMG *pImg, int nView, u32 *pSize
);
@@ -60,14 +60,18 @@ public:
void setDamageMaybe(u8 damage);
void fn_8006B7A0(u32);
void fn_8006B800(u32);
+ void SetGrp(u32);
void enable() {
enableAttack();
mProc.setActive(true);
}
- void disable() {
+ void setInactive() {
mIsActive = false;
+ }
+ void disable() {
+ setInactive();
mProc.setActive(false);
}
};