mirror of https://github.com/zeldaret/tp.git
work on link bow, kandelaar, and whistle (#2004)
This commit is contained in:
parent
8293fb7c22
commit
6e58e660d5
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
// Translation Unit: d_a_e_sm2
|
||||
//
|
||||
|
||||
#include "rel/d/a/e/d_a_e_sm2/d_a_e_sm2.h"
|
||||
// #include "rel/d/a/e/d_a_e_sm2/d_a_e_sm2.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/cc/d_cc_d.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -11,91 +11,125 @@
|
|||
int daTag_ShopItem_c::create() {
|
||||
fopAcM_SetupActor(this, daTag_ShopItem_c);
|
||||
initialize();
|
||||
field_0x572 = 0;
|
||||
if (!strcmp("F_SP109", dComIfGp_getStartStageName())) {
|
||||
field_0x572 = false;
|
||||
|
||||
if (strcmp("F_SP109", dComIfGp_getStartStageName()) == 0) {
|
||||
// saveBitLabels[64] = Goron Mines completed
|
||||
if (!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
if ((dComIfGs_getTime() >= 90.0f) && (dComIfGs_getTime() < 270.0f)) {
|
||||
|
||||
if (dComIfGs_getTime() >= 90.0f && dComIfGs_getTime() < 270.0f) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
if (getGroupID() == 0x0f) {
|
||||
field_0x570 = 0x96;
|
||||
if (getSwitchBit1() != 0xff) {
|
||||
|
||||
if (getGroupID() == 15) {
|
||||
mCreateTimer = 150;
|
||||
|
||||
#ifdef DEBUG
|
||||
// "Event Item\n"
|
||||
OSReport("イベントアイテム\n");
|
||||
#endif
|
||||
|
||||
if (getSwitchBit1() != 0xFF) {
|
||||
if (!dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
dComIfGs_onSaveSwitch(getSwitchBit2());
|
||||
field_0x572 = 1;
|
||||
field_0x570 = 0;
|
||||
field_0x572 = true;
|
||||
mCreateTimer = 0;
|
||||
#ifdef DEBUG
|
||||
// "Before Talk\n"
|
||||
OSReport("会話前\n");
|
||||
#endif
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
// "After Talk\n"
|
||||
OSReport("会話後\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
} else {
|
||||
field_0x570 = 0;
|
||||
if (getSwitchBit1() != 0xff) {
|
||||
mCreateTimer = 0;
|
||||
|
||||
if (getSwitchBit1() != 0xFF) {
|
||||
if (dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
field_0x570 = 0x96;
|
||||
mCreateTimer = 150;
|
||||
#ifdef DEBUG
|
||||
// "Already Sold\n"
|
||||
OSReport("もう売れたよ\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (getSwitchBit2() != 0xff) {
|
||||
|
||||
if (getSwitchBit2() != 0xFF) {
|
||||
if (!dComIfGs_isSaveSwitch(getSwitchBit2())) {
|
||||
field_0x570 = 0x96;
|
||||
mCreateTimer = 150;
|
||||
#ifdef DEBUG
|
||||
// "Not sold yet\n"
|
||||
OSReport("まだ売れない\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
/* 80D60D78-80D60E04 000278 008C+00 1/1 0/0 0/0 .text Delete__16daTag_ShopItem_cFv */
|
||||
int daTag_ShopItem_c::Delete() {
|
||||
if ((field_0x572 != NULL) && (getGroupID() == 0x0f)) {
|
||||
if (field_0x572 && getGroupID() == 15) {
|
||||
if (dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
dComIfGs_offSaveSwitch(getSwitchBit2());
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80D60E04-80D61024 000304 0220+00 1/1 0/0 0/0 .text Execute__16daTag_ShopItem_cFv */
|
||||
int daTag_ShopItem_c::Execute() {
|
||||
if (field_0x56c == 0xffffffff) {
|
||||
if (!field_0x570) {
|
||||
field_0x56c =
|
||||
fopAcM_create(PROC_ShopItem, getType() & 0xff | getGroupID() << 0x1c, ¤t.pos,
|
||||
fopAcM_GetRoomNo(this), ¤t.angle, NULL, 0xff);
|
||||
if (mProcessID == UINT32_MAX) {
|
||||
if (mCreateTimer == 0) {
|
||||
mProcessID =
|
||||
fopAcM_create(PROC_ShopItem, (getType() & 0xFF) | (getGroupID() << 0x1C),
|
||||
¤t.pos, fopAcM_GetRoomNo(this), ¤t.angle, NULL, -1);
|
||||
|
||||
} else {
|
||||
field_0x570 -= 1;
|
||||
if (getGroupID() == 0x0f) {
|
||||
mCreateTimer--;
|
||||
|
||||
if (getGroupID() == 15) {
|
||||
if (field_0x572) {
|
||||
field_0x570 = 0;
|
||||
mCreateTimer = 0;
|
||||
}
|
||||
} else {
|
||||
if (getSwitchBit1() != 0xff && dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
} else if (getSwitchBit2() == 0xff || dComIfGs_isSaveSwitch(getSwitchBit2())) {
|
||||
field_0x570 = 0;
|
||||
if (getSwitchBit1() != 0xFF && dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
} else if (getSwitchBit2() == 0xFF || dComIfGs_isSaveSwitch(getSwitchBit2())) {
|
||||
mCreateTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
daItemBase_c* mpItemBase = (daItemBase_c*)fopAcM_SearchByID(field_0x56c);
|
||||
if (mpItemBase) {
|
||||
if (getGroupID() == 0x0f) {
|
||||
daItemBase_c* item_actor_p = (daItemBase_c*)fopAcM_SearchByID(mProcessID);
|
||||
|
||||
if (item_actor_p != NULL) {
|
||||
if (getGroupID() == 15) {
|
||||
if (!field_0x572) {
|
||||
mpItemBase->hide();
|
||||
item_actor_p->hide();
|
||||
} else {
|
||||
mpItemBase->show();
|
||||
item_actor_p->show();
|
||||
}
|
||||
} else {
|
||||
if (getSwitchBit1() != 0xff && dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
mpItemBase->hide();
|
||||
} else if (getSwitchBit2() != 0xff && !dComIfGs_isSaveSwitch(getSwitchBit2())) {
|
||||
mpItemBase->hide();
|
||||
if (getSwitchBit1() != 0xFF && dComIfGs_isSaveSwitch(getSwitchBit1())) {
|
||||
item_actor_p->hide();
|
||||
} else if (getSwitchBit2() != 0xFF && !dComIfGs_isSaveSwitch(getSwitchBit2())) {
|
||||
item_actor_p->hide();
|
||||
} else {
|
||||
mpItemBase->show();
|
||||
item_actor_p->show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -106,34 +140,33 @@ int daTag_ShopItem_c::Draw() {
|
|||
|
||||
/* 80D6102C-80D61038 00052C 000C+00 1/1 0/0 0/0 .text getType__16daTag_ShopItem_cFv */
|
||||
u8 daTag_ShopItem_c::getType() {
|
||||
return mBase.mParameters & 0xff;
|
||||
return fopAcM_GetParam(this) & 0xFF;
|
||||
}
|
||||
|
||||
/* 80D61038-80D61044 000538 000C+00 3/3 0/0 0/0 .text getGroupID__16daTag_ShopItem_cFv */
|
||||
u8 daTag_ShopItem_c::getGroupID() {
|
||||
return mBase.mParameters >> 0x1c;
|
||||
return fopAcM_GetParam(this) >> 0x1C;
|
||||
}
|
||||
|
||||
/* 80D61044-80D61050 000544 000C+00 3/3 0/0 1/1 .text getSwitchBit1__16daTag_ShopItem_cFv */
|
||||
/* 80D61044-80D61050 000544 000C+00 3/3 0/0 1/1 .text getSwitchBit1__16daTag_ShopItem_cFv
|
||||
*/
|
||||
u8 daTag_ShopItem_c::getSwitchBit1() {
|
||||
return orig.angle.z & 0xff;
|
||||
return orig.angle.z & 0xFF;
|
||||
}
|
||||
|
||||
/* 80D61050-80D6105C 000550 000C+00 3/3 0/0 0/0 .text getSwitchBit2__16daTag_ShopItem_cFv */
|
||||
/* 80D61050-80D6105C 000550 000C+00 3/3 0/0 0/0 .text getSwitchBit2__16daTag_ShopItem_cFv
|
||||
*/
|
||||
u8 daTag_ShopItem_c::getSwitchBit2() {
|
||||
return orig.angle.z >> 8 & 0xff;
|
||||
return orig.angle.z >> 8 & 0xFF;
|
||||
}
|
||||
|
||||
/* 80D6105C-80D610E0 00055C 0084+00 1/1 0/0 0/0 .text initialize__16daTag_ShopItem_cFv */
|
||||
void daTag_ShopItem_c::initialize() {
|
||||
fopAcM_setCullSizeBox(this, -30.0f, -15.0f, -30.0f, 30.0f, 45.0f, 30.0f);
|
||||
mAttentionInfo.mFlags = NULL;
|
||||
s16 mAngleY = orig.angle.y;
|
||||
current.angle.x = 0;
|
||||
current.angle.y = mAngleY;
|
||||
current.angle.z = 0;
|
||||
mAttentionInfo.mFlags = 0;
|
||||
current.angle.set(0, orig.angle.y, 0);
|
||||
shape_angle = current.angle;
|
||||
field_0x56c = -1;
|
||||
mProcessID = -1;
|
||||
}
|
||||
|
||||
/* 80D610E0-80D61100 0005E0 0020+00 1/0 0/0 0/0 .text daTag_ShopItem_Create__FPv */
|
||||
|
|
@ -173,18 +206,18 @@ static actor_method_class daTag_ShopItem_MethodTable = {
|
|||
|
||||
/* 80D61210-80D61240 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TAG_SHOPITM */
|
||||
extern actor_process_profile_definition g_profile_TAG_SHOPITM = {
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
7, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_TAG_SHOPITM, // mProcName
|
||||
&g_fpcLf_Method.mBase, // mSubMtd
|
||||
sizeof(daTag_ShopItem_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // mSubMtd
|
||||
75, // mPriority
|
||||
&daTag_ShopItem_MethodTable, // mSubMtd
|
||||
0x64100, // mStatus
|
||||
5, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // mCullType
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
7, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_TAG_SHOPITM, // mProcName
|
||||
&g_fpcLf_Method.mBase, // mSubMtd
|
||||
sizeof(daTag_ShopItem_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // mSubMtd
|
||||
75, // mPriority
|
||||
&daTag_ShopItem_MethodTable, // mSubMtd
|
||||
0x64100, // mStatus
|
||||
5, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // mCullType
|
||||
};
|
||||
|
|
@ -15206,8 +15206,8 @@ void daAlink_c::setItemActionButtonStatus(u8 param_0) {
|
|||
}
|
||||
|
||||
/* 800B26FC-800B271C 0AD03C 0020+00 2/2 0/0 1/1 .text itemActionTrigger__9daAlink_cFv */
|
||||
void daAlink_c::itemActionTrigger() {
|
||||
spActionTrigger();
|
||||
BOOL daAlink_c::itemActionTrigger() {
|
||||
return spActionTrigger();
|
||||
}
|
||||
|
||||
/* 800B271C-800B2EA4 0AD05C 0788+00 1/1 0/0 0/0 .text setStickData__9daAlink_cFv */
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
* Player Bow and Arrow action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "rel/d/a/d_a_arrow/d_a_arrow.h"
|
||||
|
||||
/* 800DE64C-800DE740 0D8F8C 00F4+00 1/1 0/0 2/2 .text getArrowFlyData__9daAlink_cCFPfPfi
|
||||
|
|
@ -59,13 +61,13 @@ BOOL daAlink_c::checkBowAndSlingItem(int i_itemNo) {
|
|||
/* 800DE7D4-800DE884 0D9114 00B0+00 1/1 0/0 0/0 .text setSlingModel__9daAlink_cFv */
|
||||
void daAlink_c::setSlingModel() {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x1F9);
|
||||
JKRHeap* heap = setItemHeap();
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
J3DModelData* model_data = loadAramBmd(0x319, 0x2C00);
|
||||
mHeldItemModel = initModel(model_data, 0);
|
||||
mItemBck.init(bck, 0, 2, lit_6040, 0, -1, false);
|
||||
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
field_0x2f95 = 5;
|
||||
field_0x2f94 = 103;
|
||||
}
|
||||
|
|
@ -121,8 +123,8 @@ void daAlink_c::makeArrow() {
|
|||
field_0x301e = 0;
|
||||
}
|
||||
|
||||
fopAc_ac_c* arrow_actor = daArrow_c::makeArrow(this, field_0x301e);
|
||||
mItemAcKeep.setData(arrow_actor);
|
||||
fopAc_ac_c* arrow_p = daArrow_c::makeArrow(this, field_0x301e);
|
||||
mItemAcKeep.setData(arrow_p);
|
||||
}
|
||||
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
|
|
@ -130,17 +132,17 @@ void daAlink_c::makeArrow() {
|
|||
|
||||
/* 800DEAE4-800DEB8C 0D9424 00A8+00 3/3 0/0 0/0 .text deleteArrow__9daAlink_cFv */
|
||||
void daAlink_c::deleteArrow() {
|
||||
daArrow_c* arrow = (daArrow_c*)mItemAcKeep.getActor();
|
||||
daArrow_c* arrow_p = (daArrow_c*)mItemAcKeep.getActor();
|
||||
|
||||
if (arrow != NULL && fopAcM_GetName(arrow) == PROC_ARROW) {
|
||||
if (arrow->checkBombArrow() &&
|
||||
if (arrow_p != NULL && fopAcM_GetName(arrow_p) == PROC_ARROW) {
|
||||
if (arrow_p->checkBombArrow() &&
|
||||
(mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || i_checkModeFlg(8)))
|
||||
{
|
||||
arrow->setBombArrowExplode();
|
||||
arrow_p->setBombArrowExplode();
|
||||
dComIfGp_addSelectItemNum(mSelectItemId, -1);
|
||||
dComIfGp_setItemArrowNumCount(-1);
|
||||
} else {
|
||||
fopAcM_delete(arrow);
|
||||
fopAcM_delete(arrow_p);
|
||||
}
|
||||
mItemAcKeep.clearData();
|
||||
}
|
||||
|
|
@ -157,6 +159,44 @@ void daAlink_c::setBowOrSlingStatus() {
|
|||
}
|
||||
|
||||
/* 800DEBC8-800DED88 0D9508 01C0+00 1/1 0/0 0/0 .text changeArrowType__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::changeArrowType() {
|
||||
if (checkCanoeSlider() || (mEquipItem == BOW && field_0x301e == 0) ||
|
||||
(mEquipItem == BOMB_ARROW && field_0x301e == 0 &&
|
||||
dComIfGp_getSelectItemNum(mSelectItemId) == 0) ||
|
||||
(mEquipItem == HAWK_ARROW && i_checkAttentionLock()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setItemActionButtonStatus(0x11);
|
||||
|
||||
if (arrowChangeTrigger()) {
|
||||
if (mEquipItem == HAWK_ARROW) {
|
||||
if (i_dComIfGp_checkPlayerStatus0(0, 0x200000)) {
|
||||
dComIfGp_clearPlayerStatus0(0, 0x200000);
|
||||
seStartSystem(Z2SE_AL_HAWK_EYE_PUTOFF);
|
||||
} else {
|
||||
dComIfGp_setPlayerStatus0(0, 0x200000);
|
||||
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
|
||||
}
|
||||
} else {
|
||||
if (field_0x301e == 1) {
|
||||
field_0x301e = 0;
|
||||
} else {
|
||||
field_0x301e = 1;
|
||||
}
|
||||
|
||||
if (mItemAcKeep.getActor() != NULL) {
|
||||
deleteArrow();
|
||||
makeArrow();
|
||||
setBowReloadAnime();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -165,6 +205,7 @@ asm void daAlink_c::changeArrowType() {
|
|||
#include "asm/d/a/d_a_alink/changeArrowType__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800DED88-800DEE1C 0D96C8 0094+00 1/1 0/0 0/0 .text cancelBowMoveRideNotAtn__9daAlink_cFv */
|
||||
BOOL daAlink_c::cancelBowMoveRideNotAtn() {
|
||||
|
|
@ -236,14 +277,194 @@ void daAlink_c::setBowReloadAnime() {
|
|||
}
|
||||
|
||||
/* 800DF0BC-800DF798 0D99FC 06DC+00 2/2 0/0 0/0 .text checkUpperItemActionBow__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = &mUpperFrameCtrl[2];
|
||||
|
||||
if (mEquipItem == PACHINKO) {
|
||||
mDoMtx_multVec(getLeftItemMatrix(), &slingLocalPos, &mHeldItemRootPos);
|
||||
}
|
||||
|
||||
if (checkBowChargeWaitAnime()) {
|
||||
daArrow_c* arrow_p = (daArrow_c*)mItemAcKeep.getActor();
|
||||
|
||||
if (mEquipItem != PACHINKO) {
|
||||
if (field_0x301c > 0) {
|
||||
field_0x301c--;
|
||||
|
||||
if (field_0x301c <= frameCtrl_p->getEnd() && frameCtrl_p->getFrame() < 0.1f &&
|
||||
frameCtrl_p->getRate() < 0.1f)
|
||||
{
|
||||
frameCtrl_p->setRate(1.0f);
|
||||
}
|
||||
} else {
|
||||
i_onResetFlg0(RFLG0_UNK_10);
|
||||
cancelItemUseQuake(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (checkReadyItem()) {
|
||||
if (mItemVar0.field_0x3018 != 0) {
|
||||
setUpperAnimeParam(0xC, UPPER_2, &daAlinkHIO_bow_c0::m.mShootAnm);
|
||||
setFacePriBck(0xE8);
|
||||
field_0x2f96 = 0;
|
||||
|
||||
u16 var_r29;
|
||||
if (mEquipItem == PACHINKO) {
|
||||
var_r29 = 0x1F1;
|
||||
if (dComIfGs_getPachinkoNum() != 0 &&
|
||||
daArrow_c::makeSlingStone(this, &mHeldItemRootPos) != NULL)
|
||||
{
|
||||
dComIfGp_setItemPachinkoNumCount(-1);
|
||||
}
|
||||
} else if (field_0x301c != 0) {
|
||||
var_r29 = 0x43;
|
||||
} else {
|
||||
var_r29 = 0x44;
|
||||
}
|
||||
|
||||
changeItemBck(var_r29, daAlinkHIO_bow_c0::m.mShootAnm.mStartFrame);
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
} else if (mEquipItem == PACHINKO) {
|
||||
if (!itemButton()) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
seStartOnlyReverb(Z2SE_AL_PACHINKO_SHOT);
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
resetFacePriAnime();
|
||||
}
|
||||
} else if (!itemButton()) {
|
||||
if (arrow_p != NULL) {
|
||||
u32 sound;
|
||||
int shock_strength;
|
||||
|
||||
if (field_0x301c != 0) {
|
||||
arrow_p->setShoot();
|
||||
shock_strength = 1;
|
||||
|
||||
if (arrow_p->checkBombArrow()) {
|
||||
sound = Z2SE_OBJ_ARROWBOMB_SHOT;
|
||||
} else {
|
||||
sound = Z2SE_OBJ_ARROW_SHOT_NORMAL;
|
||||
}
|
||||
} else {
|
||||
arrow_p->setChargeShoot();
|
||||
shock_strength = 2;
|
||||
|
||||
if (arrow_p->checkBombArrow()) {
|
||||
sound = Z2SE_OBJ_ARROWBOMB_SHOTGAIN;
|
||||
} else {
|
||||
sound = Z2SE_OBJ_ARROW_SHOT_GAIN;
|
||||
}
|
||||
}
|
||||
|
||||
dComIfGp_getVibration().StartShock(shock_strength, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
seStartOnlyReverb(sound);
|
||||
|
||||
if (field_0x301e == 1) {
|
||||
dComIfGp_addSelectItemNum(mSelectItemId, -1);
|
||||
}
|
||||
|
||||
dComIfGp_setItemArrowNumCount(-1);
|
||||
mItemAcKeep.clearData();
|
||||
i_onResetFlg0(RFLG0_UNK_20000000);
|
||||
field_0x30a4 = daAlinkHIO_bow_c0::m.mBombArrowHoldTime;
|
||||
} else {
|
||||
seStartOnlyReverb(Z2SE_AL_ARROW_EMPTY);
|
||||
}
|
||||
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
resetFacePriAnime();
|
||||
|
||||
if (mEquipItem == BOW) {
|
||||
field_0x301e = 0;
|
||||
}
|
||||
} else {
|
||||
changeArrowType();
|
||||
}
|
||||
}
|
||||
} else if (checkBowReloadAnime()) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
setUpperAnimeBaseSpeed(10, 0.0f, -1.0f);
|
||||
setFacePriTexture(FTANM_UNK_9);
|
||||
setFacePriBck(0xE6);
|
||||
|
||||
if (mEquipItem != PACHINKO) {
|
||||
changeItemBck(0x42, 0.0f);
|
||||
dComIfGp_getVibration().StartQuake(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
i_onNoResetFlg3(FLG3_UNK_4);
|
||||
}
|
||||
}
|
||||
} else if (checkBowWaitAnime()) {
|
||||
if ((mItemVar0.field_0x3018 == 0 && mFastShotTime != 0) ||
|
||||
(mItemMode == 0 && !itemButton() && mItemVar0.field_0x3018 == 0 &&
|
||||
cancelBowMoveRideNotAtn()))
|
||||
{
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
dComIfGp_clearPlayerStatus0(0, 0x1040);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mItemMode == 0 && (itemButton() || mItemVar0.field_0x3018 != 0) && checkReadyItem() &&
|
||||
(field_0x30a4 == 0 || field_0x301e != 1))
|
||||
{
|
||||
setBowReloadAnime();
|
||||
|
||||
if (mEquipItem == PACHINKO) {
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
} else {
|
||||
makeArrow();
|
||||
}
|
||||
} else if (mEquipItem == HAWK_ARROW) {
|
||||
changeArrowType();
|
||||
}
|
||||
|
||||
if (mItemMode != 0) {
|
||||
mItemMode--;
|
||||
}
|
||||
} else if (checkBowShootAnime()) {
|
||||
if (mUpperFrameCtrl[2].getFrame() >= 6.0f) {
|
||||
field_0x2f97 = 5;
|
||||
} else if (mUpperFrameCtrl[2].getFrame() >= 1.0f) {
|
||||
field_0x2f96 = 4;
|
||||
}
|
||||
|
||||
if (checkAnmEnd(&mUpperFrameCtrl[2]) && cancelBowMoveRideNotAtn()) {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
dComIfGp_clearPlayerStatus0(0, 0x1040);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (checkAnmEnd(&mUpperFrameCtrl[2]) ||
|
||||
(mUpperFrameCtrl[2].getFrame() > daAlinkHIO_bow_c0::m.mShootAnm.mCheckFrame &&
|
||||
itemButton()))
|
||||
{
|
||||
setBowReadyAnime();
|
||||
}
|
||||
|
||||
if (mItemMode != 0) {
|
||||
mItemMode--;
|
||||
}
|
||||
}
|
||||
|
||||
if (checkBowWaitAnime() || (mEquipItem == PACHINKO && checkBowChargeWaitAnime())) {
|
||||
field_0x33dc += daAlinkHIO_bow_c0::m.mShootAnm.mSpeed;
|
||||
} else {
|
||||
field_0x33dc = mUpperFrameCtrl[2].getFrame();
|
||||
}
|
||||
|
||||
return cancelUpperItemReadyAnime(0);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::checkUpperItemActionBow() {
|
||||
asm BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/checkUpperItemActionBow__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800DF798-800DF814 0DA0D8 007C+00 1/1 0/0 0/0 .text checkUpperItemActionBowFly__9daAlink_cFv */
|
||||
void daAlink_c::checkUpperItemActionBowFly() {
|
||||
|
|
@ -257,6 +478,76 @@ void daAlink_c::checkUpperItemActionBowFly() {
|
|||
}
|
||||
|
||||
/* 800DF814-800DFAE8 0DA154 02D4+00 4/4 0/0 0/0 .text checkNextActionBow__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::checkNextActionBow() {
|
||||
if (mFastShotTime != 0 && checkBowReadyAnime()) {
|
||||
mFastShotTime--;
|
||||
}
|
||||
|
||||
BOOL var_r31 = false;
|
||||
if (!checkBowAnime()) {
|
||||
setBowReadyAnime();
|
||||
setFastShotTimer();
|
||||
|
||||
if (!i_checkAttentionLock()) {
|
||||
field_0x2fe4 = shape_angle.y;
|
||||
}
|
||||
|
||||
mItemMode = 0;
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
|
||||
if (mEquipItem == HAWK_ARROW) {
|
||||
var_r31 = true;
|
||||
mFastShotTime = 0;
|
||||
}
|
||||
|
||||
if ((!i_checkAttentionLock() && !checkDashAnime()) || i_checkModeFlg(0x400)) {
|
||||
mFastShotTime = 0;
|
||||
|
||||
if (i_checkAttentionLock() && i_checkModeFlg(0x400)) {
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
} else {
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
}
|
||||
|
||||
if (!i_checkResetFlg0(RFLG0_UNK_80)) {
|
||||
mItemMode = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BOOL rt;
|
||||
if (!i_checkAttentionLock() && mFastShotTime == 0) {
|
||||
if (i_checkModeFlg(0x400)) {
|
||||
if (checkCanoeRide()) {
|
||||
rt = procCanoeBowSubjectInit();
|
||||
} else {
|
||||
rt = procHorseBowSubjectInit();
|
||||
}
|
||||
} else {
|
||||
rt = procBowSubjectInit();
|
||||
}
|
||||
} else {
|
||||
if (i_checkModeFlg(0x400)) {
|
||||
if (checkCanoeRide()) {
|
||||
rt = procCanoeBowMoveInit();
|
||||
} else {
|
||||
rt = procHorseBowMoveInit();
|
||||
}
|
||||
} else {
|
||||
rt = procBowMoveInit();
|
||||
}
|
||||
}
|
||||
|
||||
if (rt && var_r31) {
|
||||
dComIfGp_setPlayerStatus0(0, 0x200000);
|
||||
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -265,6 +556,7 @@ asm int daAlink_c::checkNextActionBow() {
|
|||
#include "asm/d/a/d_a_alink/checkNextActionBow__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800DFAE8-800DFBC8 0DA428 00E0+00 1/1 0/0 0/0 .text setBowModel__9daAlink_cFv */
|
||||
// matches with literals
|
||||
|
|
@ -400,4 +692,4 @@ int daAlink_c::procBowMove() {
|
|||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
* Player Particle Effect handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_k_wmark.h"
|
||||
|
||||
/* 80120580-80120634 11AEC0 00B4+00 21/21 0/0 0/0 .text
|
||||
* setEmitter__9daAlink_cFPUlUsPC4cXyzPC5csXyz */
|
||||
// matches with literal
|
||||
|
|
@ -57,6 +61,24 @@ void daAlink_c::stopDrawParticle(u32 param_0) {
|
|||
}
|
||||
|
||||
/* 801207BC-80120880 11B0FC 00C4+00 1/0 0/0 0/0 .text setEffectFrontRollParam__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::setEffectFrontRollParam() {
|
||||
int j, i;
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
for (j = 0; j < 2; j++) {
|
||||
if (field_0x2e54.getTypeFour(i, j) == 0) {
|
||||
JPABaseEmitter* emitter_p = field_0x2e54.getEmitterFour(i, j, 0);
|
||||
|
||||
if (emitter_p != NULL) {
|
||||
emitter_p->setRate(2.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -65,6 +87,7 @@ asm void daAlink_c::setEffectFrontRollParam() {
|
|||
#include "asm/d/a/d_a_alink/setEffectFrontRollParam__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80120880-80120B00 11B1C0 0280+00 1/0 0/0 0/0 .text setEffectSlipParam__9daAlink_cFv */
|
||||
#pragma push
|
||||
|
|
@ -111,14 +134,14 @@ asm void daAlink_c::setEffectSumouParam() {
|
|||
#pragma pop
|
||||
|
||||
/* 801211C0-80121214 11BB00 0054+00 46/46 0/0 0/0 .text setFootEffectProcType__9daAlink_cFi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setFootEffectProcType(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setFootEffectProcType__9daAlink_cFi.s"
|
||||
void daAlink_c::setFootEffectProcType(int param_0) {
|
||||
if (param_0 != field_0x2f9f) {
|
||||
field_0x2e54.clearFourAllID();
|
||||
}
|
||||
|
||||
field_0x2f9e = param_0;
|
||||
field_0x2f9f = field_0x2f9e;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80121214-80121304 11BB54 00F0+00 1/1 0/0 0/0 .text setWolfFootOn__9daAlink_cFi */
|
||||
#pragma push
|
||||
|
|
@ -132,14 +155,11 @@ asm void daAlink_c::setWolfFootOn(int param_0) {
|
|||
|
||||
/* 80121304-80121388 11BC44 0084+00 1/1 0/0 0/0 .text setFootMark__9daAlink_cFP4cXyzUsi
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setFootMark(cXyz* param_0, u16 param_1, int param_2) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setFootMark__9daAlink_cFP4cXyzUsi.s"
|
||||
void daAlink_c::setFootMark(cXyz* i_pos, u16 i_mtxNo, int param_2) {
|
||||
cXyz sp8;
|
||||
mDoMtx_multVecSR(mpLinkModel->i_getAnmMtx(i_mtxNo), &cXyz::BaseX, &sp8);
|
||||
dkWmark_c::setFootMark(i_pos, sp8.atan2sX_Z(), param_2);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80121388-801221F0 11BCC8 0E68+00 1/1 0/0 0/0 .text setEffect__9daAlink_cFv */
|
||||
#pragma push
|
||||
|
|
@ -162,14 +182,10 @@ asm void daAlink_c::setSumouEffect() {
|
|||
#pragma pop
|
||||
|
||||
/* 801225E8-80122654 11CF28 006C+00 1/1 0/0 0/0 .text setWaterfallEffect__9daAlink_cFPC4cXyzPUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setWaterfallEffect(cXyz const* param_0, u32* param_1) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setWaterfallEffect__9daAlink_cFPC4cXyzPUl.s"
|
||||
void daAlink_c::setWaterfallEffect(cXyz const* param_0, u32* param_1) {
|
||||
setEmitter(¶m_1[0], 0x8614, param_0, NULL);
|
||||
setEmitter(¶m_1[1], 0x8615, param_0, NULL);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80122654-8012277C 11CF94 0128+00 1/1 0/0 0/0 .text setWaterfallEffect__9daAlink_cFv */
|
||||
#pragma push
|
||||
|
|
@ -459,8 +475,8 @@ asm void daAlink_c::setBottleEffect() {
|
|||
#pragma pop
|
||||
|
||||
/* 80124E28-80124EA8 11F768 0080+00 2/2 0/0 0/0 .text clearFirePointDamageEffect__9daAlink_cFi */
|
||||
void daAlink_c::clearFirePointDamageEffect(int i) {
|
||||
firePointEff_c* fire_eff = &field_0x32d8[i];
|
||||
void daAlink_c::clearFirePointDamageEffect(int i_effNo) {
|
||||
firePointEff_c* fire_eff = &field_0x32d8[i_effNo];
|
||||
|
||||
if (fire_eff->field_0x0 != 0) {
|
||||
stopDrawParticle(fire_eff->field_0x4);
|
||||
|
|
|
|||
|
|
@ -3,9 +3,14 @@
|
|||
* Player Lantern action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "rel/d/a/e/d_a_e_sm2/d_a_e_sm2.h"
|
||||
#include "rel/d/a/tag/d_a_tag_ss_drink/d_a_tag_ss_drink.h"
|
||||
|
||||
/* 80110654-80110668 10AF94 0014+00 1/1 0/0 0/0 .text daAlink_searchTagKandelaar__FP10fopAc_ac_cPv
|
||||
*/
|
||||
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* param_1) {
|
||||
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data) {
|
||||
if (fopAcM_GetName(i_actor) == PROC_TAG_LANTERN) {
|
||||
return i_actor;
|
||||
}
|
||||
|
|
@ -15,12 +20,13 @@ static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* param_1
|
|||
|
||||
/* 80110668-801106E8 10AFA8 0080+00 1/1 0/0 0/0 .text daAlink_searchTagKtOnFire__FP10fopAc_ac_cPv
|
||||
*/
|
||||
static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* param_1) {
|
||||
daAlink_c* link = daAlink_getAlinkActorClass();
|
||||
static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data) {
|
||||
daAlink_c* player_p = daAlink_getAlinkActorClass();
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_Tag_KtOnFire &&
|
||||
i_actor->current.pos.abs2(link->current.pos) < lit_26816 &&
|
||||
fopAcM_seenActorAngleY(link, i_actor) < 0x3000) {
|
||||
i_actor->current.pos.abs2(player_p->current.pos) < lit_26816 &&
|
||||
fopAcM_seenActorAngleY(player_p, i_actor) < 0x3000)
|
||||
{
|
||||
return i_actor;
|
||||
}
|
||||
|
||||
|
|
@ -66,7 +72,7 @@ BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
|
|||
void daAlink_c::checkWaterInKandelaar(f32 param_0) {
|
||||
if (i_checkNoResetFlg2(FLG2_UNK_1) && checkWaterInKandelaarOffset(param_0)) {
|
||||
if (mEquipItem == KANTERA) {
|
||||
deleteEquipItem(1, 1);
|
||||
deleteEquipItem(TRUE, TRUE);
|
||||
} else {
|
||||
offKandelaarModel();
|
||||
seStartOnlyReverb(Z2SE_AL_ITEM_TAKEOUT);
|
||||
|
|
@ -90,7 +96,9 @@ bool daAlink_c::checkUseKandelaar(int param_0) {
|
|||
/* 801108B4-801108EC 10B1F4 0038+00 1/0 0/0 0/0 .text checkKandelaarSwing__9daAlink_cCFi
|
||||
*/
|
||||
bool daAlink_c::checkKandelaarSwing(int param_0) const {
|
||||
if ((checkKandelaarSwingAnime() || mProcID == PROC_KANDELAAR_SWING) && (dComIfGs_getOil() != 0 || param_0 == 0)) {
|
||||
if ((checkKandelaarSwingAnime() || mProcID == PROC_KANDELAAR_SWING) &&
|
||||
(dComIfGs_getOil() != 0 || param_0 == 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -110,10 +118,10 @@ asm void daAlink_c::kandelaarModelCallBack() {
|
|||
/* 80110BEC-80110C28 10B52C 003C+00 1/1 0/0 0/0 .text daAlink_kandelaarModelCallBack__FP8J3DJointi
|
||||
*/
|
||||
static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
|
||||
daAlink_c* link = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
|
||||
if (param_1 == 0) {
|
||||
link->kandelaarModelCallBack();
|
||||
player_p->kandelaarModelCallBack();
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
@ -122,7 +130,9 @@ static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
|
|||
/* 80110C28-80110C6C 10B568 0044+00 1/0 0/0 0/0 .text getKandelaarFlamePos__9daAlink_cFv
|
||||
*/
|
||||
cXyz* daAlink_c::getKandelaarFlamePos() {
|
||||
if ((!i_checkNoResetFlg2((daPy_FLG2)0x20001) && !i_checkEndResetFlg1(ERFLG1_UNK_4)) || i_checkWolf() || !i_checkNoResetFlg1(FLG1_UNK_80)) {
|
||||
if ((!i_checkNoResetFlg2((daPy_FLG2)0x20001) && !i_checkEndResetFlg1(ERFLG1_UNK_4)) ||
|
||||
i_checkWolf() || !i_checkNoResetFlg1(FLG1_UNK_80))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
@ -135,6 +145,52 @@ BOOL daAlink_c::checkKandelaarEquipAnime() const {
|
|||
}
|
||||
|
||||
/* 80110C94-80110E80 10B5D4 01EC+00 1/1 0/0 0/0 .text preKandelaarDraw__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::preKandelaarDraw() {
|
||||
J3DMaterial* mat_p = mpKanteraGlowModel->getModelData()->getMaterialNodePointer(0);
|
||||
|
||||
J3DGXColorS10 color;
|
||||
color.r = daAlinkHIO_kandelaar_c0::m.mColorReg1R;
|
||||
color.g = daAlinkHIO_kandelaar_c0::m.mColorReg1G;
|
||||
color.b = daAlinkHIO_kandelaar_c0::m.mColorReg1B;
|
||||
color.a = 255;
|
||||
mat_p->setTevColor(1, &color);
|
||||
|
||||
color.r = daAlinkHIO_kandelaar_c0::m.mColorReg2R;
|
||||
color.g = daAlinkHIO_kandelaar_c0::m.mColorReg2G;
|
||||
color.b = daAlinkHIO_kandelaar_c0::m.mColorReg2B;
|
||||
mat_p->setTevColor(2, &color);
|
||||
|
||||
cXyz proj;
|
||||
mDoLib_project(&mKandelaarFlamePos, &proj);
|
||||
|
||||
camera_class* camera_p = dComIfGp_getCamera(0);
|
||||
f32 var_f3;
|
||||
if (camera_p != NULL) {
|
||||
var_f3 = camera_p->mCamera.TrimHeight();
|
||||
} else {
|
||||
var_f3 = 0.0f;
|
||||
}
|
||||
|
||||
if (proj.x > 0.0f && proj.x < 640.0f && proj.y > var_f3 && proj.y < 456.0f - var_f3) {
|
||||
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
|
||||
} else {
|
||||
field_0x32c8 = 0;
|
||||
}
|
||||
|
||||
f32 near = dComIfGd_getView()->mNear;
|
||||
f32 far = dComIfGd_getView()->mFar;
|
||||
|
||||
mDoLib_pos2camera(&mKandelaarFlamePos, &proj);
|
||||
proj.z += 30.0f;
|
||||
if (proj.z > -0.01f) {
|
||||
proj.z = -0.01f;
|
||||
}
|
||||
|
||||
field_0x344c = ((near + (far * near) / proj.z) / (far - near) + 1.0f) * 1.6777215E7f;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -143,12 +199,38 @@ asm void daAlink_c::preKandelaarDraw() {
|
|||
#include "asm/d/a/d_a_alink/preKandelaarDraw__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80110E80-80110E84 10B7C0 0004+00 0/0 3/0 0/0 .text
|
||||
* setTevColor__11J3DTevBlockFUlPC13J3DGXColorS10 */
|
||||
void J3DTevBlock::setTevColor(u32 param_0, J3DGXColorS10 const* param_1) {}
|
||||
|
||||
/* 80110E84-80110F88 10B7C4 0104+00 4/4 0/0 0/0 .text setKandelaarModel__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::setKandelaarModel() {
|
||||
field_0x2f94 = 0;
|
||||
|
||||
if (!i_checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
i_onNoResetFlg2(FLG2_UNK_1);
|
||||
|
||||
mDoMtx_multVecZero(mpLinkModel->i_getAnmMtx(field_0x30c0), &mKandelaarFlamePos);
|
||||
mKandelaarFlamePos.y -= 30.0f;
|
||||
|
||||
field_0x3630 = field_0x3624;
|
||||
field_0x3624 = mKandelaarFlamePos;
|
||||
field_0x3618 = cXyz::Zero;
|
||||
|
||||
field_0x32c8 = 0;
|
||||
field_0x3448 = 0.0f;
|
||||
field_0x344c = -1.0f;
|
||||
|
||||
mpKanteraGlowModel->setBaseScale(cXyz::Zero);
|
||||
}
|
||||
|
||||
mZ2Link.setKanteraState(1);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -157,11 +239,12 @@ asm void daAlink_c::setKandelaarModel() {
|
|||
#include "asm/d/a/d_a_alink/setKandelaarModel__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80110F88-80110FE0 10B8C8 0058+00 3/3 0/0 0/0 .text resetOilBottleModel__9daAlink_cFv
|
||||
*/
|
||||
void daAlink_c::resetOilBottleModel() {
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
|
||||
if (mProcVar3.field_0x300e.x != 0) {
|
||||
setKandelaarModel();
|
||||
|
|
@ -172,37 +255,168 @@ void daAlink_c::resetOilBottleModel() {
|
|||
}
|
||||
|
||||
/* 80110FE0-801110B8 10B920 00D8+00 3/3 0/0 0/0 .text commonKandelaarPourInit__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::commonKandelaarPourInit() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/commonKandelaarPourInit__9daAlink_cFv.s"
|
||||
void daAlink_c::commonKandelaarPourInit() {
|
||||
if (i_checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
}
|
||||
|
||||
keepItemData();
|
||||
setKandelaarModel();
|
||||
setBottleModel(getReadyItem());
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
dComIfGp_setPlayerStatus1(0, 0x2000);
|
||||
field_0x3194 = 10;
|
||||
dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 801110B8-8011130C 10B9F8 0254+00 3/3 0/0 0/0 .text commonKandelaarPour__9daAlink_cFi
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::commonKandelaarPour(int param_0) {
|
||||
simpleAnmPlay(field_0x0718);
|
||||
simpleAnmPlay(field_0x071c);
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p;
|
||||
u16 current_anm;
|
||||
if (param_0) {
|
||||
frameCtrl_p = &mUpperFrameCtrl[2];
|
||||
current_anm = mUpperAnmHeap[2].getIdx();
|
||||
} else {
|
||||
frameCtrl_p = &mUnderFrameCtrl[0];
|
||||
current_anm = mUnderAnmHeap[0].getIdx();
|
||||
}
|
||||
|
||||
i_onNoResetFlg2(FLG2_UNK_10000000);
|
||||
|
||||
if (current_anm == getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_underID) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (param_0) {
|
||||
setUpperAnimeBaseMorf(getMainBckData(ANM_OIL_BOTTLE_POUR)->m_upperID, 0.0f);
|
||||
} else {
|
||||
setSingleAnimeBaseMorf(ANM_OIL_BOTTLE_POUR, 0.0f);
|
||||
}
|
||||
|
||||
dComIfGp_setItemOilCount(dComIfGs_getMaxOil());
|
||||
} else if (frameCtrl_p->checkPass(10.0f)) {
|
||||
field_0x071c->setFrame(0.0f);
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
|
||||
}
|
||||
} else if (current_anm == getMainBckData(ANM_OIL_BOTTLE_POUR)->m_underID) {
|
||||
if (dComIfGp_getItemNowOil() == dComIfGs_getOil()) {
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x0720);
|
||||
} else if (simpleAnmPlay(field_0x0720)) {
|
||||
if (param_0) {
|
||||
setUpperAnimeParam(getMainBckData(ANM_OIL_BOTTLE_POUR_END)->m_upperID, UPPER_2,
|
||||
&daAlinkHIO_kandelaar_c0::m.mEndUnkAnm);
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_OIL_BOTTLE_POUR_END,
|
||||
&daAlinkHIO_kandelaar_c0::m.mEndUnkAnm);
|
||||
}
|
||||
|
||||
field_0x072c->setFrame(2.0f);
|
||||
dComIfGs_setEquipBottleItemEmpty(mSelectItemId);
|
||||
}
|
||||
}
|
||||
} else if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (param_0) {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
}
|
||||
|
||||
resetOilBottleModel();
|
||||
resetSpecialEvent();
|
||||
i_offNoResetFlg2(FLG2_UNK_10000000);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::commonKandelaarPour(int param_0) {
|
||||
asm int daAlink_c::commonKandelaarPour(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/commonKandelaarPour__9daAlink_cFi.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8011130C-80111440 10BC4C 0134+00 1/1 0/0 0/0 .text initKandelaarSwing__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::initKandelaarSwing() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/initKandelaarSwing__9daAlink_cFv.s"
|
||||
void daAlink_c::initKandelaarSwing() {
|
||||
if (mEquipItem == KANTERA) {
|
||||
if (dComIfGs_getOil() != 0) {
|
||||
mZ2Link.getKantera().startSound(Z2SE_AL_KANTERA_SWING, 0, mVoiceReverbIntensity);
|
||||
} else {
|
||||
mZ2Link.getKantera().startSound(Z2SE_AL_KANTERA_OFF_SWING, 0, mVoiceReverbIntensity);
|
||||
}
|
||||
}
|
||||
|
||||
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
|
||||
field_0xFB8.ResetAtHit();
|
||||
|
||||
if (!checkEventRun()) {
|
||||
dComIfGp_setItemOilCount(-daAlinkHIO_kandelaar_c0::m.mShakeOilLoss);
|
||||
}
|
||||
|
||||
field_0xFB8.OffAtSetBit();
|
||||
field_0xFB8.SetR(lit_6895);
|
||||
field_0xFB8.SetAtType(AT_TYPE_LANTERN_SWING);
|
||||
field_0xFB8.SetAtHitMark(0);
|
||||
field_0xFB8.SetAtSe(dCcD_SE_NONE);
|
||||
field_0xFB8.SetAtAtp(0);
|
||||
field_0xFB8.SetAtMtrl(1);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80111440-801115CC 10BD80 018C+00 2/1 0/0 0/0 .text procKandelaarSwingInit__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procKandelaarSwingInit() {
|
||||
fopAc_ac_c* catch_target_p = i_dComIfGp_att_getCatghTarget();
|
||||
if (catch_target_p != NULL) {
|
||||
s16 name = fopAcM_GetName(catch_target_p);
|
||||
BOOL is_sm2 = name == PROC_E_SM2;
|
||||
|
||||
if (name == PROC_OBJ_OILTUBO ||
|
||||
(name == PROC_TAG_SSDRINK &&
|
||||
static_cast<daTag_SSDrink_c*>(catch_target_p)->checkShopOil()) ||
|
||||
(is_sm2 && static_cast<e_sm2_class*>(catch_target_p)->checkYellow()))
|
||||
{
|
||||
return procBottleSwingInit(catch_target_p, is_sm2);
|
||||
}
|
||||
}
|
||||
|
||||
if (!commonProcInitNotSameProc(PROC_KANDELAAR_SWING)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
if ((mLinkAcch.i_ChkGroundHit() && getMoveBGActorName(mLinkAcch.m_gnd, 0) == PROC_OBJ_WEB1) ||
|
||||
(checkStageName("F_SP108") &&
|
||||
fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchTagKtOnFire, NULL) != NULL))
|
||||
{
|
||||
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm);
|
||||
field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCheckFrame;
|
||||
field_0x347c = 5.0f;
|
||||
field_0x3480 = 12.0f;
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_LANTERN_SWING, &daAlinkHIO_kandelaar_c0::m.mShakeAnm);
|
||||
field_0x3478 = daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCheckFrame;
|
||||
field_0x347c = 4.0f;
|
||||
field_0x3480 = 11.0f;
|
||||
}
|
||||
|
||||
initKandelaarSwing();
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -211,18 +425,19 @@ asm int daAlink_c::procKandelaarSwingInit() {
|
|||
#include "asm/d/a/d_a_alink/procKandelaarSwingInit__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 801115CC-8011167C 10BF0C 00B0+00 1/0 0/0 0/0 .text procKandelaarSwing__9daAlink_cFv */
|
||||
int daAlink_c::procKandelaarSwing() {
|
||||
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
if (frameCtrl_p->checkAnmEnd()) {
|
||||
if (mDemo.getDemoMode() == 0x27) {
|
||||
dComIfGp_evmng_cutEnd(field_0x3184);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else if (frameCtrl->getFrame() > field_0x3478 && mDemo.getDemoMode() != 0x27) {
|
||||
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != 0x27) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
}
|
||||
|
|
@ -251,4 +466,4 @@ int daAlink_c::procKandelaarPourInit() {
|
|||
int daAlink_c::procKandelaarPour() {
|
||||
commonKandelaarPour(0);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
* Player Swim action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "f_op/f_op_kankyo_mng.h"
|
||||
|
||||
/* 80101890-801018E4 0FC1D0 0054+00 6/6 0/0 0/0 .text checkZoraWearMaskDraw__9daAlink_cFv
|
||||
|
|
@ -1091,4 +1093,4 @@ int daAlink_c::procOctaIealSpit() {
|
|||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,21 +3,25 @@
|
|||
* Player Horse / Hawk Grass Whistle action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h"
|
||||
#include "rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.h"
|
||||
|
||||
/* 8011174C-80111770 10C08C 0024+00 1/1 0/0 0/0 .text daAlink_searchWhistle__FP10fopAc_ac_cPv */
|
||||
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* p_actor, void*) {
|
||||
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(p_actor)) {
|
||||
return p_actor;
|
||||
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
|
||||
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(i_actor)) {
|
||||
return i_actor;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80111770-80111784 10C0B0 0014+00 1/1 0/0 0/0 .text daAlink_searchHawk__FP10fopAc_ac_cPv */
|
||||
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* p_actor, void*) {
|
||||
if (fopAcM_GetName(p_actor) == PROC_NPC_TK) {
|
||||
return p_actor;
|
||||
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
|
||||
if (fopAcM_GetName(i_actor) == PROC_NPC_TK) {
|
||||
return i_actor;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
@ -26,18 +30,18 @@ static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* p_actor, void*) {
|
|||
/* 80111784-8011181C 10C0C4 0098+00 1/1 0/0 0/0 .text setGrassWhistleModel__9daAlink_cFi
|
||||
*/
|
||||
void daAlink_c::setGrassWhistleModel(int modelType) {
|
||||
static const char* grassWhistleArcName[2] = {
|
||||
static const char* grassWhistleArcName[] = {
|
||||
"J_Tobi",
|
||||
"J_Umak",
|
||||
};
|
||||
|
||||
JKRHeap* heap = setItemHeap();
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[modelType],
|
||||
grassWhistleIdx[modelType]);
|
||||
mHeldItemModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
|
||||
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
mEquipItem = 0x104;
|
||||
field_0x2f94 = 2;
|
||||
}
|
||||
|
|
@ -45,11 +49,11 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
|
|||
/* 8011181C-80111894 10C15C 0078+00 1/1 0/0 0/0 .text setHorseWhistleModel__9daAlink_cFv
|
||||
*/
|
||||
void daAlink_c::setHorseWhistleModel() {
|
||||
JKRHeap* heap = setItemHeap();
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
mHeldItemModel = initModel(loadAramBmd(0x31A, 0x3000), 0);
|
||||
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
mEquipItem = HORSE_FLUTE;
|
||||
field_0x2f94 = 2;
|
||||
}
|
||||
|
|
@ -71,14 +75,14 @@ int daAlink_c::procGrassWhistleGetInit() {
|
|||
field_0x2f92 = 0xFE;
|
||||
field_0x280c.setData(field_0x27f4);
|
||||
|
||||
daObjYobikusa_c* yobikusa = (daObjYobikusa_c*)field_0x27f4;
|
||||
mProcVar2.field_0x300c = yobikusa->getType();
|
||||
mProcVar3.field_0x300e.x = yobikusa->getPathID();
|
||||
mProcVar3.field_0x300e.y = yobikusa->isPlayerCorrect();
|
||||
mProcVar3.field_0x300e.z = yobikusa->shape_angle.y + 0x8000;
|
||||
field_0x37c8.set(yobikusa->current.pos.x + cM_ssin(yobikusa->shape_angle.y) * 50.0f,
|
||||
yobikusa->current.pos.y + 50.0f,
|
||||
yobikusa->current.pos.z + cM_scos(yobikusa->shape_angle.y) * 50.0f);
|
||||
daObjYobikusa_c* yobikusa_p = (daObjYobikusa_c*)field_0x27f4;
|
||||
mProcVar2.field_0x300c = yobikusa_p->getType();
|
||||
mProcVar3.field_0x300e.x = yobikusa_p->getPathID();
|
||||
mProcVar3.field_0x300e.y = yobikusa_p->isPlayerCorrect();
|
||||
mProcVar3.field_0x300e.z = yobikusa_p->shape_angle.y + 0x8000;
|
||||
field_0x37c8.set(yobikusa_p->current.pos.x + cM_ssin(yobikusa_p->shape_angle.y) * 50.0f,
|
||||
yobikusa_p->current.pos.y + 50.0f,
|
||||
yobikusa_p->current.pos.z + cM_scos(yobikusa_p->shape_angle.y) * 50.0f);
|
||||
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -96,13 +100,14 @@ asm int daAlink_c::procGrassWhistleGetInit() {
|
|||
/* 801119D8-80111A9C 10C318 00C4+00 1/0 0/0 0/0 .text procGrassWhistleGet__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::procGrassWhistleGet() {
|
||||
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e.x, mProcVar3.field_0x300e.y, mProcVar3.field_0x300e.z, &field_0x37c8);
|
||||
} else if (mEquipItem == NO_ITEM && frameCtrl->getFrame() >= lit_7710) {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl_p->checkAnmEnd()) {
|
||||
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e.x,
|
||||
mProcVar3.field_0x300e.y, mProcVar3.field_0x300e.z, &field_0x37c8);
|
||||
} else if (mEquipItem == NO_ITEM && frameCtrl_p->getFrame() >= lit_7710) {
|
||||
setGrassWhistleModel(mProcVar2.field_0x300c);
|
||||
|
||||
|
||||
if (field_0x280c.getActor() != NULL) {
|
||||
fopAcM_setCarryNow(field_0x280c.getActor(), 0);
|
||||
seStartOnlyReverb(Z2SE_AL_PICKUP_GRASS);
|
||||
|
|
@ -114,18 +119,181 @@ int daAlink_c::procGrassWhistleGet() {
|
|||
|
||||
/* 80111A9C-80111CA4 10C3DC 0208+00 2/2 0/0 0/0 .text
|
||||
* procGrassWhistleWaitInit__9daAlink_cFiiisP4cXyz */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s16 param_3,
|
||||
cXyz* param_4) {
|
||||
u16 var_r6;
|
||||
if (param_0 == 3) {
|
||||
var_r6 = 0xFFFF;
|
||||
} else {
|
||||
var_r6 = 0xFFF9;
|
||||
}
|
||||
|
||||
if (!dComIfGp_event_compulsory(this, NULL, var_r6)) {
|
||||
return checkNextAction(0);
|
||||
}
|
||||
|
||||
mDemo.i_setSpecialDemoType();
|
||||
commonProcInit(PROC_GRASS_WHISTLE_WAIT);
|
||||
|
||||
if (param_0 == 3) {
|
||||
keepItemData();
|
||||
setHorseWhistleModel();
|
||||
setSingleAnimeBase(ANM_GRASS_WHISTLE_START);
|
||||
field_0x3198 = -1;
|
||||
field_0x32cc = 0x532;
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_WAIT);
|
||||
mKeepItem = NO_ITEM;
|
||||
|
||||
if (param_0 == 0) {
|
||||
field_0x3198 = 0x100;
|
||||
field_0x32cc = 0x535;
|
||||
} else {
|
||||
field_0x3198 = -1;
|
||||
field_0x32cc = 0x532;
|
||||
}
|
||||
}
|
||||
|
||||
setUpperAnimeBaseMorf(getMainBckData(ANM_GRASS_WHISTLE_START)->m_underID, -1.0f);
|
||||
setFacePriAnime(ANM_GRASS_WHISTLE_START);
|
||||
mProcVar2.field_0x300c = param_0;
|
||||
mProcVar3.field_0x300e.x = param_1;
|
||||
|
||||
dCam_getBody()->StartEventCamera(12, fopAcM_GetID(this), 0);
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
mMsgClassID = -1;
|
||||
mNormalSpeed = 0.0f;
|
||||
current.angle.y = shape_angle.y;
|
||||
field_0x2f98 = 4;
|
||||
|
||||
if (param_2) {
|
||||
mLinkGndChk.SetPos(param_4);
|
||||
|
||||
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
if (gnd_cross != -1000000000.0f) {
|
||||
current.pos.set(param_4->x, gnd_cross, param_4->z);
|
||||
}
|
||||
|
||||
shape_angle.y = param_3;
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
dComIfGp_setPlayerStatus1(0, 0x4000000);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s16 param_3,
|
||||
cXyz* param_4) {
|
||||
cXyz* param_4) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procGrassWhistleWaitInit__9daAlink_cFiiisP4cXyz.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80111CA4-80111FF0 10C5E4 034C+00 1/0 0/0 0/0 .text procGrassWhistleWait__9daAlink_cFv
|
||||
*/
|
||||
// small regalloc
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procGrassWhistleWait() {
|
||||
if (mProcVar3.field_0x300e.z != 0) {
|
||||
if (checkEndMessage(field_0x32cc)) {
|
||||
resetSpecialEvent();
|
||||
return procWaitInit();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 < 0) {
|
||||
mProcVar0.field_0x3008--;
|
||||
|
||||
if (mProcVar0.field_0x3008 == -3) {
|
||||
return procWaitInit();
|
||||
}
|
||||
} else if (mProcVar0.field_0x3008 != 0) {
|
||||
mProcVar0.field_0x3008--;
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0) {
|
||||
daHorse_c* horse_p = i_dComIfGp_getHorseActor();
|
||||
daNPC_TK_c* tk_p = (daNPC_TK_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchWhistle, NULL);
|
||||
|
||||
if (tk_p != NULL) {
|
||||
fopAcM_OnStatus(tk_p, 0x800);
|
||||
|
||||
if (field_0x3198 == 0x100) {
|
||||
tk_p->setEvent();
|
||||
tk_p->setHawkPath(mProcVar3.field_0x300e.x);
|
||||
}
|
||||
|
||||
mProcVar0.field_0x3008--;
|
||||
resetSpecialEvent();
|
||||
} else {
|
||||
int temp_r4;
|
||||
if ((mProcVar2.field_0x300c == 1 || mProcVar2.field_0x300c == 3) && horse_p != NULL) {
|
||||
temp_r4 = horse_p->callHorse(¤t.pos);
|
||||
} else {
|
||||
temp_r4 = 0;
|
||||
}
|
||||
|
||||
if (temp_r4 == 1 || temp_r4 == 4 || temp_r4 == 2) {
|
||||
return procCoHorseCallWaitInit(temp_r4);
|
||||
} else if (temp_r4 == 3) {
|
||||
resetSpecialEvent();
|
||||
return procWaitInit();
|
||||
}
|
||||
|
||||
setFaceBasicTexture(FTANM_UNK_0);
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
setGrassCancelStatus(0);
|
||||
}
|
||||
} else if (checkAnmEnd(&mUpperFrameCtrl[2])) {
|
||||
setGrassCancelStatus(0x12);
|
||||
setDoStatus(0x2C);
|
||||
|
||||
if (mProcVar2.field_0x300c == 3 || doTrigger()) {
|
||||
setSingleAnimeBaseMorf(ANM_GRASS_WHISTLE_PLAY, 0.0f);
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
dComIfGp_event_onHindFlag(6);
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
voiceStart(Z2SE_PLAY_REED_TOBIKUSA);
|
||||
mProcVar0.field_0x3008 = 100;
|
||||
|
||||
if (i_dComIfGs_isEventBit(dSv_event_flag_c::F_0700) &&
|
||||
i_dComIfGs_isEventBit(dSv_event_flag_c::F_0037))
|
||||
{
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::F_0581);
|
||||
}
|
||||
} else {
|
||||
voiceStart(Z2SE_PLAY_REED_UMAKUSA);
|
||||
mProcVar0.field_0x3008 = 140;
|
||||
|
||||
if (mProcVar2.field_0x300c == 1) {
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::F_0580);
|
||||
}
|
||||
}
|
||||
} else if (grassCancelTrigger()) {
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
resetSpecialEvent();
|
||||
procWaitInit();
|
||||
}
|
||||
} else {
|
||||
setGrassCancelStatus(0);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -134,6 +302,7 @@ asm int daAlink_c::procGrassWhistleWait() {
|
|||
#include "asm/d/a/d_a_alink/procGrassWhistleWait__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80111FF0-801120C8 10C930 00D8+00 2/2 0/0 0/0 .text procCoHorseCallWaitInit__9daAlink_cFi */
|
||||
int daAlink_c::procCoHorseCallWaitInit(int param_0) {
|
||||
|
|
@ -176,7 +345,7 @@ int daAlink_c::procHawkCatchInit() {
|
|||
}
|
||||
|
||||
setSingleAnimeBase(ANM_HAWK_CATCH);
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -199,14 +368,14 @@ int daAlink_c::procHawkSubjectInit() {
|
|||
|
||||
setSingleAnimeBase(ANM_HAWK_WAIT);
|
||||
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchHawk, NULL);
|
||||
if (actor != NULL) {
|
||||
field_0x280c.setData(actor);
|
||||
fopAc_ac_c* hawk_p = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchHawk, NULL);
|
||||
if (hawk_p != NULL) {
|
||||
field_0x280c.setData(hawk_p);
|
||||
}
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mBodyAngle.y = 0;
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -218,4 +387,4 @@ asm int daAlink_c::procHawkSubject() {
|
|||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procHawkSubject__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#pragma pop
|
||||
|
|
|
|||
Loading…
Reference in New Issue