work on link bow, kandelaar, and whistle (#2004)

This commit is contained in:
TakaRikka
2023-12-15 06:04:05 -08:00
committed by GitHub
parent 8293fb7c22
commit 6e58e660d5
21 changed files with 1038 additions and 193 deletions
+1
View File
@@ -79,6 +79,7 @@ public:
u8 getMoveSpeed() const { return mMoveSpeed; }
bool isRiding() const { return mRiding; }
void i_setLinkState(u8 i_state) { mLinkState = i_state; }
Z2SoundObjSimple& getKantera() { return mKantera; }
static Z2CreatureLink* mLinkPtr;
+9 -7
View File
@@ -653,6 +653,7 @@ public:
FTANM_UNK_3 = 3,
FTANM_UNK_4 = 4,
FTANM_UNK_8 = 8,
FTANM_UNK_9 = 9,
FTANM_UNK_13 = 0x13,
FTANM_UNK_14 = 0x14,
FTANM_UNK_27 = 0x27,
@@ -1420,7 +1421,7 @@ public:
/* 800B26AC */ BOOL midnaTalkTrigger() const;
/* 800B26B8 */ BOOL swordSwingTrigger();
/* 800B26DC */ void setItemActionButtonStatus(u8);
/* 800B26FC */ void itemActionTrigger();
/* 800B26FC */ BOOL itemActionTrigger();
/* 800B271C */ void setStickData();
/* 800B2EA4 */ void setAtnList();
/* 800B3220 */ void setRStatus(u8);
@@ -1852,7 +1853,7 @@ public:
/* 800DEE1C */ BOOL cancelBowMove();
/* 800DEEDC */ void setBowReadyAnime();
/* 800DEFB8 */ void setBowReloadAnime();
/* 800DF0BC */ void checkUpperItemActionBow();
/* 800DF0BC */ BOOL checkUpperItemActionBow();
/* 800DF798 */ void checkUpperItemActionBowFly();
/* 800DF814 */ int checkNextActionBow();
/* 800DFAE8 */ void setBowModel();
@@ -2496,7 +2497,7 @@ public:
/* 80110E84 */ void setKandelaarModel();
/* 80110F88 */ void resetOilBottleModel();
/* 80110FE0 */ void commonKandelaarPourInit();
/* 801110B8 */ void commonKandelaarPour(int);
/* 801110B8 */ int commonKandelaarPour(int);
/* 8011130C */ void initKandelaarSwing();
/* 80111440 */ int procKandelaarSwingInit();
/* 801115CC */ int procKandelaarSwing();
@@ -3208,6 +3209,8 @@ public:
bool checkFisingRodLure() const { return mEquipItem == noentry73; }
BOOL doTrigger() const { return mItemTrigger & BTN_A; }
bool swordTrigger() { return itemTriggerCheck(BTN_B); }
BOOL grassCancelTrigger() { return itemTriggerCheck(BTN_B); }
BOOL arrowChangeTrigger() { return itemActionTrigger(); }
bool peepSubjectCancelTrigger() { return itemTriggerCheck(0x8); }
u32 getStartMode() { return (fopAcM_GetParam(this) >> 0xC) & 0x1F; }
inline bool checkInputOnR() const;
@@ -3575,8 +3578,7 @@ private:
/* 0x02D80 */ int field_0x2d80;
/* 0x02D84 */ Z2WolfHowlMgr mZ2WolfHowlMgr;
/* 0x02E44 */ dJntCol_c field_0x2e44;
/* 0x02E54 */ dPaPo_c field_0x2e54;
/* 0x02E8C */ u8 field_0x2e8c[0x90];
/* 0x02E54 */ dPaPoF_c field_0x2e54;
/* 0x02F1C */ dPaPo_c* field_0x2f1c;
/* 0x02F20 */ dPa_hermiteEcallBack_c field_0x2f20;
/* 0x02F38 */ dPa_hermiteEcallBack_c field_0x2f38;
@@ -6004,8 +6006,8 @@ public:
/* 0x42 */ s16 mColorReg2R;
/* 0x44 */ s16 mColorReg2G;
/* 0x46 */ s16 mColorReg2B;
/* 0x48 */ u16 mNormalOilLoss;
/* 0x4A */ u16 mShakeOilLoss;
/* 0x48 */ s16 mNormalOilLoss;
/* 0x4A */ s16 mShakeOilLoss;
/* 0x4C */ f32 mFlameTrackRate;
}; // Size: 0x50
+1
View File
@@ -397,6 +397,7 @@ public:
enum daPy_RFLG0 {
RFLG0_UNK_40000000 = 0x40000000,
RFLG0_UNK_20000000 = 0x20000000,
RFLG0_UNK_8000000 = 0x8000000,
RFLG0_UNK_4000000 = 0x4000000,
RFLG0_UNK_20000 = 0x20000,
+9
View File
@@ -371,6 +371,7 @@ public:
u8& getItemLifeCountType() { return mItemLifeCountType; }
u16 getItemNowLife() { return mItemNowLife; }
s32 getItemNowOil() { return mItemNowOil; }
s16 getItemPachinkoNumCount() { return mItemPachinkoNumCount; }
void clearItemPachinkoNumCount() { mItemPachinkoNumCount = 0; }
u8 getNeedLightDropNum() { return mNeedLightDropNum; }
@@ -2773,6 +2774,10 @@ inline u16 dComIfGp_getItemNowLife() {
return g_dComIfG_gameInfo.play.getItemNowLife();
}
inline s32 dComIfGp_getItemNowOil() {
return g_dComIfG_gameInfo.play.getItemNowOil();
}
inline int dComIfGp_getMessageCountNumber() {
return g_dComIfG_gameInfo.play.getMessageCountNumber();
}
@@ -3030,6 +3035,10 @@ inline void dComIfGp_event_onEventFlag(u16 i_flag) {
g_dComIfG_gameInfo.play.getEvent().onEventFlag(i_flag);
}
inline void dComIfGp_event_onHindFlag(u16 i_flag) {
g_dComIfG_gameInfo.play.getEvent().onHindFlag(i_flag);
}
inline void dComIfGp_evmng_cutEnd(int param_0) {
dComIfGp_getPEvtManager()->cutEnd(param_0);
}
+5
View File
@@ -3,6 +3,7 @@
#include "f_op/f_op_kankyo_mng.h"
#include "d/kankyo/d_kankyo.h"
#include "d/d_procname.h"
class dkWmark_c : public kankyo_class {
public:
@@ -15,6 +16,10 @@ public:
static int m_nowID;
static void setFootMark(cXyz* i_pos, s16 param_1, int param_2) {
fopKyM_create(PROC_WMARK, param_2 | (param_1 << 0x10), i_pos, NULL, NULL);
}
/* 0x0F8 */ JKRSolidHeap* mpHeap;
/* 0x0FC */ J3DModel* mpModel;
/* 0x100 */ dKy_tevstr_c mTevstr;
+1
View File
@@ -149,6 +149,7 @@ public:
void onEventFlag(u16 flag) { mEventFlag |= flag; }
void offEventFlag(u16 flag) { mEventFlag &= ~flag; }
u8 getMode() const { return mMode; }
void onHindFlag(u16 flag) { mHindFlag |= flag; }
u16 checkHind(u16 flag) { return flag & mHindFlag; }
u8 checkCompulsory() { return mCompulsory; }
u8 getMapToolId() { return mMapToolId; }
+15 -14
View File
@@ -16,15 +16,13 @@ public:
/* 80050E7C */ void setEffect(u32*, int, dKy_tevstr_c const*, cXyz const*, u32, u32,
cXyz const*, csXyz const*, s8, u8*, u8*);
/* 80051008 */ int setEffectCenter(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*,
csXyz const*, cXyz const*, s8, f32, f32);
csXyz const*, cXyz const*, s8, f32, f32);
/* 8005113C */ void clearID(u32*, u8*);
void clearCenterID() { clearID(field_0x8[0], &field_0x36); }
void changeWaterOffset(f32 i_offset) { mWaterOffset = i_offset; }
void changeRippleOffset(f32 i_offset) { mRippleOffset = i_offset; }
u8 getCenterEffType(int i_idx) const {
return mCenterEffType[i_idx];
}
u8 getCenterEffType(int i_idx) const { return mCenterEffType[i_idx]; }
JPABaseEmitter* getCenterEmitter(int param_0, int param_1) {
return dComIfGp_particle_getEmitter(field_0x8[param_0][param_1]);
}
@@ -42,8 +40,8 @@ public:
class dPaPoT_c : public dPaPo_c {
public:
/* 8005115C */ int setEffectTwo(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*,
cXyz const*, cXyz const*, csXyz const*, cXyz const*, s8, f32,
f32);
cXyz const*, cXyz const*, csXyz const*, cXyz const*, s8, f32,
f32);
/* 80051294 */ void clearTwoAllID();
void clearLeftID() { clearID(mLeftEmitter[0], &field_0x7c); }
@@ -74,18 +72,14 @@ public:
class dPaPoF_c : public dPaPoT_c {
public:
/* 800512E8 */ int setEffectFour(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*,
cXyz const*, cXyz const*, cXyz const*, cXyz const*,
csXyz const*, cXyz const*, s8, f32, f32);
cXyz const*, cXyz const*, cXyz const*, cXyz const*,
csXyz const*, cXyz const*, s8, f32, f32);
/* 80051424 */ void clearFourAllID();
void clearBLeftID() { clearID(mBackLeftEmitter[0], &field_0xc4); }
void clearBRightID() { clearID(mBackRightEmitter[0], &field_0xc5); }
u8 getBackRightEffType(int i_idx) const {
return mBackRightEffType[i_idx];
}
u8 getBackLeftEffType(int i_idx) const {
return mBackLeftEffType[i_idx];
}
u8 getBackRightEffType(int i_idx) const { return mBackRightEffType[i_idx]; }
u8 getBackLeftEffType(int i_idx) const { return mBackLeftEffType[i_idx]; }
JPABaseEmitter* getBackRightEmitter(int param_0, int param_1) {
return dComIfGp_particle_getEmitter(mBackRightEmitter[param_0][param_1]);
}
@@ -96,6 +90,13 @@ public:
typedef u8 (dPaPoF_c::*effTypeFunc)(int) const;
typedef JPABaseEmitter* (dPaPoF_c::*emitterFunc)(int, int);
u8 getTypeFour(int param_0, int param_1) const {
return (this->*m_typeFourData[param_0])(param_1);
}
JPABaseEmitter* getEmitterFour(int param_0, int param_1, int param_2) {
return (this->*m_emitterFourData[param_0])(param_1, param_2);
}
static effTypeFunc m_typeFourData[];
static emitterFunc m_emitterFourData[];
+3 -1
View File
@@ -2,8 +2,8 @@
#define F_F_OP_KANKYO_MNG_H_
#include "SSystem/SComponent/c_xyz.h"
#include "f_pc/f_pc_manager.h"
#include "f_op/f_op_kankyo.h"
#include "f_pc/f_pc_manager.h"
struct fopKyM_prm_class {
/* 0x00 */ cXyz mPos;
@@ -16,6 +16,8 @@ typedef int (*fopKyM_CreateFunc)(void*);
static fopKyM_prm_class* fopKyM_CreateAppend(void);
static fopKyM_prm_class* createAppend(int param_1, cXyz* param_2, cXyz* param_3);
void fopKyM_Delete(void* param_1);
int fopKyM_create(s16 i_procName, int i_param, cXyz* i_pos, cXyz* i_scale,
fopKyM_CreateFunc i_createFunc);
static int fopKyM_Create(s16 param_1, fopKyM_CreateFunc param_2, void* param_3);
base_process_class* fopKyM_fastCreate(s16 param_0, int param_1, cXyz* param_2, cXyz* param_3,
fopKyM_CreateFunc);
+18 -3
View File
@@ -46,11 +46,26 @@ public:
void setBombArrowExplode() { field_0x950 = 0; }
bool checkBombArrow() const { return mIsBombArrow == true; }
static fopAc_ac_c* makeArrow(fopAc_ac_c* i_player, u16 param_1) {
void setShoot() { fopAcM_SetParam(this, 1); }
void setChargeShoot() { fopAcM_SetParam(this, 2); }
static fopAc_ac_c* makeArrow(fopAc_ac_c* i_actor, u16 param_1) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_ARROW,
param_1 << 8,
&i_player->current.pos,
fopAcM_GetRoomNo(i_player),
&i_actor->current.pos,
fopAcM_GetRoomNo(i_actor),
NULL,
NULL,
-1,
NULL,
NULL);
}
static fopAc_ac_c* makeSlingStone(fopAc_ac_c* i_actor, cXyz* i_pos) {
return (fopAc_ac_c*)fopAcM_fastCreate(PROC_ARROW,
0x401,
i_pos,
fopAcM_GetRoomNo(i_actor),
NULL,
NULL,
-1,
+80 -1
View File
@@ -1,6 +1,85 @@
#ifndef D_A_E_SM2_H
#define D_A_E_SM2_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/bg/d_bg_s_acch.h"
#include "d/cc/d_cc_d.h"
class e_sm2_class : public fopEn_enemy_c {
public:
bool checkYellow() { return field_0x5b7 == 3; }
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ u8 field_0x5b4;
/* 0x5B5 */ u8 field_0x5B5[0x5B7 - 0x5B5];
/* 0x5B7 */ u8 field_0x5b7;
/* 0x5B8 */ int field_0x5b8;
/* 0x5BC */ mDoExt_McaMorfSO* mpMorf;
/* 0x5C0 */ mDoExt_invisibleModel field_0x5c0;
/* 0x5C8 */ mDoExt_btkAnm* field_0x5c8;
/* 0x5CC */ mDoExt_McaMorfSO* field_0x5cc;
/* 0x5D0 */ mDoExt_invisibleModel field_0x5d0;
/* 0x5D8 */ u8 field_0x5d8;
/* 0x5D9 */ u8 field_0x5D9[0x5DC - 0x5D9];
/* 0x5DC */ Z2CreatureEnemy mSound;
/* 0x680 */ s16 field_0x680;
/* 0x682 */ s16 mAction;
/* 0x684 */ s16 mMode;
/* 0x686 */ s16 field_0x686;
/* 0x688 */ s16 field_0x688;
/* 0x68A */ u8 field_0x68A[0x68C - 0x68A];
/* 0x68C */ s16 field_0x68c;
/* 0x68E */ s16 field_0x68e;
/* 0x690 */ s16 mAngleToPlayer;
/* 0x692 */ u8 field_0x692[0x694 - 0x692];
/* 0x694 */ f32 mDistToPlayer;
/* 0x698 */ u8 field_0x698[0x6A4 - 0x698];
/* 0x6A4 */ s16 field_0x6a4;
/* 0x6A6 */ s16 field_0x6a6;
/* 0x6A8 */ u8 field_0x6a8;
/* 0x6A9 */ u8 field_0x6a9;
/* 0x6AA */ u8 field_0x6aa;
/* 0x6AB */ u8 field_0x6AB[0x6AC - 0x6AB];
/* 0x6AC */ f32 field_0x6ac;
/* 0x6B0 */ f32 field_0x6b0;
/* 0x6B4 */ u32 field_0x6b4;
/* 0x6B8 */ f32 field_0x6b8;
/* 0x6BC */ f32 field_0x6bc;
/* 0x6C0 */ f32 field_0x6c0;
/* 0x6C4 */ f32 field_0x6c4;
/* 0x6C8 */ f32 field_0x6c8;
/* 0x6CC */ u8 field_0x6CC[0x6E8 - 0x6CC];
/* 0x6E8 */ f32 field_0x6e8;
/* 0x6EC */ u8 field_0x6EC[0x708 - 0x6EC];
/* 0x708 */ cXyz field_0x708[8];
/* 0x768 */ csXyz field_0x768[8];
/* 0x798 */ cXyz field_0x798[8];
/* 0x7F8 */ csXyz field_0x7f8[8];
/* 0x828 */ s16 field_0x828;
/* 0x82A */ u8 field_0x82A[0x82C - 0x82A];
/* 0x82C */ f32 field_0x82c;
/* 0x830 */ f32 field_0x830;
/* 0x834 */ f32 mSize;
/* 0x838 */ f32 field_0x838;
/* 0x83C */ u8 field_0x83c;
/* 0x83D */ u8 field_0x83d;
/* 0x83E */ u8 field_0x83e;
/* 0x83F */ u8 field_0x83f;
/* 0x840 */ cXyz field_0x840;
/* 0x84C */ csXyz field_0x84c;
/* 0x852 */ u8 field_0x852[0x854 - 0x852];
/* 0x854 */ dBgS_AcchCir mAcchCir;
/* 0x894 */ dBgS_ObjAcch mAcch;
/* 0xA6C */ dCcD_Stts mColliderStatus;
/* 0xAA8 */ dCcD_Sph field_0xaa8[4];
/* 0xF88 */ u8 field_0xf88;
/* 0xF89 */ u8 field_0xF89[0xF8C - 0xF89];
/* 0xF8C */ dCcU_AtInfo mAtInfo;
/* 0xFB0 */ u8 field_0xFB0[0xFD0 - 0xFB0];
/* 0xFD0 */ int field_0xfd0;
/* 0xFD4 */ u8 field_0xfd4;
/* 0xFD5 */ u8 field_0xFD5[0xFD8 - 0xFD5];
/* 0xFD8 */ u32 field_0xfd8;
};
#endif /* D_A_E_SM2_H */
@@ -63,6 +63,7 @@ public:
void setBump() { mFlags |= 4; }
void setEventWolf() { mFlags |= 0x80; }
void setEvent() { mFlags |= 0x8; }
void setHawkPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
@@ -15,14 +15,14 @@ public:
/* 80D61044 */ u8 getSwitchBit1();
/* 80D61050 */ u8 getSwitchBit2();
/* 80D6105C */ void initialize();
/* 80D61168 */ virtual ~daTag_ShopItem_c();
s32 getProcessID() { return field_0x56c; }
/* 0x56C */ s32 field_0x56c;
/* 0x570 */ s16 field_0x570;
u32 getProcessID() { return mProcessID; }
/* 0x56C */ u32 mProcessID;
/* 0x570 */ s16 mCreateTimer;
/* 0x572 */ u8 field_0x572;
/* 0x573 */ u8 field_0x573;
}; // Size: 0x574
#endif /* D_A_TAG_SHOP_ITEM_H */
@@ -4,7 +4,6 @@
#include "d/a/d_a_obj_ss_base.h"
#include "d/com/d_com_inf_game.h"
#include "d/msg/d_msg_flow.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daTag_SSDrink_c;
@@ -32,6 +31,7 @@ public:
/* 80D63724 */ ~daTag_SSDrink_c();
s32 fopAcM_seenPlayerAngleY() { return fopAcM_seenActorAngleY(this, dComIfGp_getPlayer(0)); }
bool checkShopOil() const { return field_0x5D2 == 4; }
/* 0x578 */ dMsgFlow_c field_0x578;
/* 0x5C4 */ ProcessFunc mProcessFunc;