summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-05-14 17:50:49 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-05-24 20:34:42 -0400
commitd2d52cc88c6c4223d6eb892055c73bd937054e2f (patch)
treea02861cc489adfd897cb123d66b229947ecd32ac /include
parent5b6788804a0d401aba6b2cfb6dc90e137e6dc02a (diff)
dAcEKs_c + dTgKiesuTag_c progress
Diffstat (limited to 'include')
-rw-r--r--include/d/a/e/d_a_e_ks.h129
-rw-r--r--include/d/a/e/d_a_en_base.h7
-rw-r--r--include/d/a/obj/d_a_obj_base.h3
-rw-r--r--include/d/col/c/c_cc_d.h2
-rw-r--r--include/d/d_pouch.h2
-rw-r--r--include/d/t/d_t_ks.h78
6 files changed, 201 insertions, 20 deletions
diff --git a/include/d/a/e/d_a_e_ks.h b/include/d/a/e/d_a_e_ks.h
index 21f29941..05e94685 100644
--- a/include/d/a/e/d_a_e_ks.h
+++ b/include/d/a/e/d_a_e_ks.h
@@ -43,25 +43,46 @@ public:
STATE_FUNC_DECLARE(dAcEKs_c, WindBlow);
STATE_FUNC_DECLARE(dAcEKs_c, PathMove);
+ STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcEKs_c);
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dAcEKs_c);
+
public:
void linkKiesuTag(dTgKiesuTag_c *pTgKs);
void setStartingState();
void setIdleState();
+ void fn_155_A60();
+
f32 getLineCrossYRange(const mVec3_c &pos, f32 range);
+ void kill(bool dropItem);
+ void chaseTargetY(f32, f32);
+ void playBlinkAnm();
+ void soundSqueak();
+ void soundStun();
+ void fn_155_1430();
+
+ void fn_155_1470();
+
+ // Move impl?
+ void fn_155_1C80();
+
/* 0 -> blink_1, 1 -> blink_2, 2 -> blink_3*/
void setBlink(u8 blink);
void setBlinkChecked(u8 blink);
+
+ void fn_155_2270();
+ /* p1 = 0 -> just LineCross return check, 1 -> increment field_0xDCB till 10 then return check*/
bool fn_155_29D0(s32 p1);
+ bool fn_155_2B80(bool b, s32 p1);
bool fn_155_2D60(bool b, s32 p1);
bool fn_155_2EA0();
bool isOutsideRange();
bool isNotWaitingNorDamage();
bool isTargeted();
- bool ChkWall();
- void ChkGnd();
- void ChkRoof();
+ bool checkWallCross();
+ void adjustTargetGnd();
+ void adjustTargetRoof();
bool ChkHit();
void fn_155_3460();
void fn_155_3480();
@@ -79,9 +100,17 @@ public:
void setPitchYawToPoint(const mVec3_c &pnt);
void fn_155_3BD0(const mVec3_c &);
void fn_155_3BE0(const mVec3_c &);
+ void clampRotationX();
+ bool checkPathPntParam(u32 param);
+ void fn_155_3E30();
void fn_155_3E90();
void fn_155_3EC0();
+ /* Some Timestone Check */
+ bool fn_155_3EF0();
+
+ void fn_155_3F50();
+
private:
/* 0x378 */ dAcRef_c<dTgKiesuTag_c> mTgRef;
/* 0x384 */ nw4r::g3d::ResFile mResFile;
@@ -101,44 +130,112 @@ private:
/* 0xAA8 */ u8 field_0xAB0;
/* 0xAB1 */ u8 _0xAB1[0xB14 - 0xAB1];
/* 0xB14 */ mVec3_c mPnts[10];
- /* 0xB8C */ u8 _0xB8C[0xBB0 - 0xB8C];
- /* 0xBB0 */ mVec3_c field_0xBB0;
+ /* 0xB8C */ mVec3_c field_0xB8C;
+ /* 0xB98 */ u8 _0xB98[0xBB0 - 0xB98];
+ /* 0xBB0 */ mVec3_c mTargetPos;
/* 0xBBC */ mVec3_c field_0xBBC;
- /* 0xBC8 */ u8 _0xBC8[0xBF8 - 0xBC8];
+ /* 0xBC8 */ mVec3_c field_0xBC8;
+ /* 0xBD4 */ mVec3_c field_0xBD4;
+ /* 0xBE0 */ mVec3_c field_0xBE0;
+ /* 0xBEC */ mVec3_c field_0xBEC;
/* 0xBF8 */ mVec3_c field_0xBF8;
- /* 0xC04 */ u8 _0xC04[0xC28 - 0xC04];
+ /* 0xC04 */ mVec3_c field_0xC04;
+ /* 0xC10 */ mVec3_c field_0xC10;
+ /* 0xC1C */ mVec3_c field_0xC1C;
/* 0xC28 */ mVec3_c field_0xC28;
/* 0xC34 */ mAng mPitch_0xC34;
/* 0xC36 */ mAng mYaw_0xC36;
/* 0xC38 */ u8 _0xC38[0xC3C - 0xC38];
/* 0xC3C */ f32 field_0xC3C;
/* 0xC40 */ f32 field_0xC40;
- /* 0xC44 */ u8 _0xC44[0xD1C - 0xC44];
+ /* 0xC44 */ f32 field_0xC44;
+ /* 0xC48 */ f32 field_0xC48;
+ /* 0xC4C */ u8 _0xC4C[0xC70 - 0xC4C];
+ /* 0xC70 */ f32 field_0xC70;
+ /* 0xC74 */ u8 _0xC74[0xD00 - 0xC74];
+ /* 0xD00 */ f32 field_0xD00;
+ /* 0xD04 */ f32 field_0xD04;
+ /* 0xD08 */ f32 field_0xD08;
+ /* 0xD0C */ f32 field_0xD0C;
+ /* 0xD10 */ f32 field_0xD10;
+ /* 0xD14 */ f32 field_0xD14;
+ /* 0xD18 */ f32 field_0xD18;
/* 0xD1C */ f32 field_0xD1C;
/* 0xD20 */ f32 field_0xD20;
/* 0xD24 */ u8 _0xD24[0xD32 - 0xD24];
/* 0xD32 */ s16 mTimer;
- /* 0xD34 */ u8 _0xD34[0xD60 - 0xD34];
+ /* 0xD34 */ u8 _0xD34[0xD52 - 0xD34];
+ /* 0xD52 */ s16 field_0xD52;
+ /* 0xD54 */ s16 field_0xD54;
+ /* 0xD56 */ u8 _0xD56[0xD5E - 0xD56];
+ /* 0xD5E */ s16 field_0xD5E;
/* 0xD60 */ s16 field_0xD60;
- /* 0xD62 */ u8 _0xD62[0xDA6 - 0xD62];
+ /* 0xD62 */ u8 _0xD62[0xD6A - 0xD62];
+ /* 0xD6A */ s16 field_0xD6A;
+ /* 0xD6C */ s16 field_0xD6C;
+ /* 0xD6E */ s16 field_0xD6E;
+ /* 0xD70 */ s16 field_0xD70;
+ /* 0xD72 */ s16 field_0xD72;
+ /* 0xD74 */ s16 field_0xD74;
+ /* 0xD76 */ s16 field_0xD76;
+ /* 0xD78 */ s16 mBlinkTimer;
+ /* 0xD7A */ s16 field_0xD7A;
+ /* 0xD7C */ s16 field_0xD7C;
+ /* 0xD7E */ s16 mSqueakSoundTimer;
+ /* 0xD80 */ s16 mStunSoundTimer;
+ /* 0xD82 */ s16 field_0xD82;
+ /* 0xD84 */ s16 field_0xD84;
+ /* 0xD86 */ s16 field_0xD86;
+ /* 0xD88 */ s16 field_0xD88;
+ /* 0xD8A */ s16 field_0xD8A;
+ /* 0xD8C */ s16 field_0xD8C;
+ /* 0xD8E */ s16 field_0xD8E;
+ /* 0xD90 */ s16 field_0xD90;
+ /* 0xD92 */ s16 field_0xD92;
+ /* 0xD94 */ s16 field_0xD94;
+ /* 0xD96 */ s16 field_0xD96;
+ /* 0xD98 */ s16 field_0xD98;
+ /* 0xD9A */ s16 field_0xD9A;
+ /* 0xD9C */ s16 field_0xD9C;
+ /* 0xD9E */ s16 field_0xD9E;
+ /* 0xDA0 */ s16 field_0xDA0;
+ /* 0xDA2 */ u8 _0xDA2[0xDA5 - 0xDA2];
+ /* 0xDA5 */ u8 field_0xDA5;
/* 0xDA6 */ u8 field_0xDA6;
/* 0xDA7 */ u8 field_0xDA7;
/* 0xDA8 */ u8 field_0xDA8;
/* 0xDA9 */ u8 field_0xDA9;
- /* 0xDAA */ u8 _0xDAA[0xDB1 - 0xDAA];
+ /* 0xDAA */ u8 _0xDAA[0xDAF - 0xDAA];
+ /* 0xDAF */ u8 field_0xDAF;
+ /* 0xDB0 */ u8 field_0xDB0;
/* 0xDB1 */ u8 field_0xDB1;
/* 0xDB2 */ u8 field_0xDB2;
- /* 0xDB3 */ u8 _0xDB3[0xDBB - 0xDB3];
+ /* 0xDB3 */ u8 field_0xDB3;
+ /* 0xDB4 */ u8 field_0xDB4;
+ /* 0xDB5 */ u8 field_0xDB5;
+ /* 0xDB6 */ u8 field_0xDB6;
+ /* 0xDB7 */ u8 field_0xDB7;
+ /* 0xDB8 */ u8 field_0xDB8;
+ /* 0xDB9 */ u8 field_0xDB9;
+ /* 0xDBA */ u8 field_0xDBA;
/* 0xDBB */ u8 field_0xDBB;
/* 0xDBC */ u8 mType;
- /* 0xDBD */ u8 _0xDBD[0xDC0 - 0xDBD];
- /* 0xDC2 */ u8 mCurrentAnmTexPat; // blink
+ /* 0xDBD */ u8 field_0xDBD;
+ /* 0xDBE */ u8 field_0xDBE;
+ /* 0xDBF */ u8 field_0xDBF;
+ /* 0xDC0 */ u8 mCurrentAnmTexPat; // blink
/* 0xDC1 */ u8 field_0xDC1;
/* 0xDC2 */ u8 mCurrentState;
/* 0xDC3 */ u8 mNextState;
- /* 0xDC4 */ u8 _0xDC4[0xDC7 - 0xDC4];
+ /* 0xDC4 */ u8 field_0xDC4;
+ /* 0xDC5 */ u8 field_0xDC5;
+ /* 0xDC6 */ u8 field_0xDC6;
/* 0xDC7 */ u8 mStartingState;
- /* 0xDC8 */ u8 _0xDC8[0xDCF - 0xDB8];
+ /* 0xDC8 */ u8 field_0xDC8;
+ /* 0xDC9 */ u8 field_0xDC9;
+ /* 0xDCA */ u8 field_0xDCA;
+ /* 0xDCB */ u8 field_0xDCB;
+ /* 0xDCC */ u8 _0xDCC[0xDCF - 0xDCC];
/* 0xDCF */ u8 field_0xDCF;
/* 0xDD0 */ u8 _0xDD0[0xDD4 - 0xDD0];
/* 0xDD4 */ mVec3_c mHomePos;
diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h
index d94633c6..3dc5d670 100644
--- a/include/d/a/e/d_a_en_base.h
+++ b/include/d/a/e/d_a_en_base.h
@@ -68,6 +68,9 @@ public:
dAcBomb_c *getBombWithinRadius(f32 radius); // fn_8002f700
+ void playDeathEffect0(const mVec3_c &pos, const mVec3_c *pScale, bool skipKill);
+ void playDeathEffect1(const mVec3_c &pos, const mVec3_c *pScale, bool skipKill);
+
// Deals with dealing damage to Enemy
// Returns a value 0-13 (similar to mStts rank?)
int fn_8002FDE0(cCcD_Obj &mCc, u16 *pTgOut);
@@ -75,9 +78,9 @@ public:
// Returns 0-3 based on collision
int fn_800301b0(const mVec3_c &pos, mAng ang, bool, f32);
void fn_80030400(m3d::mdl_c &, u8, bool, u8);
- void fn_800306d0();
+ void fn_800306D0();
void fn_80030700();
- dAcObjBase_c *attackPlayerOrScrapper(f32 biasToScrapper);
+ dAcObjBase_c *targetPlayerOrScrapper(f32 biasToScrapper);
static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
void fn_80030c20(u32 flags, f32, f32, f32, f32);
diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h
index b2ae203d..fab81e6d 100644
--- a/include/d/a/obj/d_a_obj_base.h
+++ b/include/d/a/obj/d_a_obj_base.h
@@ -101,6 +101,9 @@ public:
mVec3_c &getStartingPosition() {
return mStartingPos;
}
+ const mVec3_c &getStartingPos() const {
+ return mStartingPos;
+ }
void setStartingPosition(const mVec3_c &v) {
mStartingPos = v;
}
diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h
index 7d8c49e9..362d88b1 100644
--- a/include/d/col/c/c_cc_d.h
+++ b/include/d/col/c/c_cc_d.h
@@ -813,7 +813,7 @@ public:
bool ChkTgBit23() const;
bool ChkTgBit24() const;
bool ChkTgBit25() const;
- u16 GetTgSoundID() const;
+ s32 GetTgSoundID() const;
s16 GetTg_0x6A() const;
bool ChkTgBit8() const;
u8 GetTg_0x4A() const;
diff --git a/include/d/d_pouch.h b/include/d/d_pouch.h
index 3b3ae555..1c10c91f 100644
--- a/include/d/d_pouch.h
+++ b/include/d/d_pouch.h
@@ -25,6 +25,8 @@ bool swapStockItems(s32 slot1, s32 slot2);
void sortStock();
+bool tryDropItem(f32 chance);
+
#define ITEM_CHECK_SLOT_NONE 60
u16 itemCheckFindItemSlot(ITEM_ID item);
diff --git a/include/d/t/d_t_ks.h b/include/d/t/d_t_ks.h
index e0b066c0..bfa0afb9 100644
--- a/include/d/t/d_t_ks.h
+++ b/include/d/t/d_t_ks.h
@@ -1,9 +1,16 @@
#ifndef D_T_KS_H
#define D_T_KS_H
+#include "d/a/d_a_base.h"
#include "d/t/d_tg.h"
+#include "m/m_angle.h"
+#include "m/m_mtx.h"
+#include "m/m_vec.h"
#include "s/s_State.hpp"
+#include "toBeSorted/d_path.h"
+#include "toBeSorted/time_area_mgr.h"
+class dAcEKs_c;
class dTgKiesuTag_c : public dTg_c {
public:
dTgKiesuTag_c() : mStateMgr(*this) {}
@@ -17,8 +24,77 @@ public:
STATE_FUNC_DECLARE(dTgKiesuTag_c, ControlPathMove);
STATE_FUNC_DECLARE(dTgKiesuTag_c, DoNothing);
+ /* fn_154_8B0 */
+ mVec3_c &getSpawnKsPosition();
+
+ void incrementField_0x456() {
+ field_0x456++;
+ }
+
private:
- /* 0x??? */ STATE_MGR_DECLARE(dTgKiesuTag_c);
+ /* 0x0FC */ STATE_MGR_DECLARE(dTgKiesuTag_c);
+ /* 0x138 */ dAcRef_c<dAcEKs_c> mKsRefs[16];
+ /* 0x1F8 */ mMtx_c mAreaMtx;
+ /* 0x228 */ ActorOnRail_Ext mRail;
+ /* 0x25C */ TimeAreaStruct mTimeArea;
+ /* 0x268 */ mMtx_c field_0x268;
+
+ /* 0x31C */ mVec3_c field_0x31C;
+ /* 0x328 */ mVec3_c field_0x328;
+ /* 0x334 */ mVec3_c field_0x334;
+ /* 0x340 */ mVec3_c field_0x340;
+ /* 0x34C */ mVec3_c field_0x34C;
+
+ /* 0x37C */ mVec3_c mTargetPosition;
+ /* 0x388 */ mVec3_c mSpawnKsPosition;
+
+ /* 0x3A0 */ mAng3_c mSpawnKsAngle;
+ /* 0x3A8 */ mAng3_c field_0x3A8;
+ /* 0x3AC */ mAng field_0x3AC; // pitch
+ /* 0x3AE */ mAng field_0x3AE; // yaw
+
+ /* 0x3B4 */ f32 field_0x3B4;
+ /* 0x3B8 */ f32 field_0x3B8; // Y pos offset
+ /* 0x3BC */ f32 field_0x3BC; // X/Z scale
+ /* 0x3C0 */ f32 field_0x3C0; // Y scale
+
+ /* 0x3D8 */ f32 field_0x3D8; // Y scale
+ /* 0x3DC */ f32 field_0x3DC; // X/Z scale
+
+ /* 0x3EC */ mVec3_c field_0x3EC;
+
+ /* 0x44C */ s16 field_0x448;
+
+ // Related to Control?
+ /* 0x44C */ s16 field_0x44C;
+ /* 0x44E */ s16 field_0x44E;
+ /* 0x450 */ s16 field_0x450;
+
+ // Related to ControlFighting?
+ /* 0x452 */ s16 field_0x452;
+ /* 0x454 */ s16 field_0x454;
+ /* 0x456 */ s16 field_0x456;
+ /* 0x458 */ s16 field_0x458;
+ /* 0x45A */ s16 field_0x45A;
+ /* 0x45C */ s16 field_0x45C;
+ /* 0x45E */ s16 field_0x45E;
+
+ /* 0x460 */ s16 field_0x460;
+ /* 0x462 */ s16 mMaxKsToLink;
+
+ /* 0x468 */ s16 field_0x468;
+
+ /* 0x46C */ s16 mNumKsAlive;
+ /* 0x46E */ s16 field435_0x46e;
+
+ /* 0x44A */ s16 mNumKsControl;
+
+ /* 0x474 */ bool field_0x474;
+ /* 0x47E */ bool mbAllKsActive;
+
+ /* 0x48A */ u8 field_0x48A; // Related to getting spawnPos/ Type?
+
+ /* 0x48E */ u8 mNumKsActive;
};
#endif