mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
D_a_npc_tc matching for retail (#930)
* progress * code matching non-demo * cleanup for d_a_npc_tc and d_a_obj_smplbg
This commit is contained in:
+1
-1
@@ -1667,7 +1667,7 @@ config.libs = [
|
||||
ActorRel(Matching, "d_a_npc_rsh1"),
|
||||
ActorRel(NonMatching, "d_a_npc_sarace"),
|
||||
ActorRel(NonMatching, "d_a_npc_sv"),
|
||||
ActorRel(NonMatching, "d_a_npc_tc"),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_npc_tc"),
|
||||
ActorRel(NonMatching, "d_a_npc_tt"),
|
||||
ActorRel(NonMatching, "d_a_npc_uk"),
|
||||
ActorRel(NonMatching, "d_a_npc_ym1"),
|
||||
|
||||
+223
-49
@@ -2,37 +2,143 @@
|
||||
#define D_A_NPC_TC_H
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/d_npc.h"
|
||||
|
||||
class daNpc_Tc_c : public fopAc_ac_c {
|
||||
namespace daObjSmplbg { class Act_c; };
|
||||
|
||||
class daNpc_Tc_c : public fopNpc_npc_c {
|
||||
public:
|
||||
void getAttentionBasePos() {}
|
||||
void getEyePos() {}
|
||||
void incAttnSetCount() {}
|
||||
void setAction(int (daNpc_Tc_c::*)(void*), void*) {}
|
||||
|
||||
void _searchTower(fopAc_ac_c*);
|
||||
void initTexPatternAnm(bool);
|
||||
enum Status {
|
||||
STATUS_WAIT = 1,
|
||||
STATUS_SIT = 2,
|
||||
STATUS_TALK = 3,
|
||||
STATUS_JUMP = 4,
|
||||
STATUS_WALK_TO_JAIL = 5,
|
||||
STATUS_TALK_NEAR_JAIL = 6,
|
||||
STATUS_WAIT_NEAR_JAIL = 7,
|
||||
STATUS_WALK_TO_STOOL = 8,
|
||||
STATUS_SIT_TO_STOOL = 9,
|
||||
STATUS_DEMO_JUMP = 10,
|
||||
STATUS_DEMO_RESCUE = 11,
|
||||
STATUS_DEMO_TALK = 12,
|
||||
STATUS_PAY_RUPEE = 13,
|
||||
STATUS_DEMO_PAY_RUPEE = 14,
|
||||
STATUS_GET_RUPEE = 15,
|
||||
STATUS_DEMO_GET_RUPEE = 16,
|
||||
STATUS_MONUMENT_COMPLETE = 17,
|
||||
STATUS_DEMO_MONUMENT_COMPLETE = 18,
|
||||
};
|
||||
|
||||
enum ActionStatus {
|
||||
ACTION_STARTING = 0,
|
||||
ACTION_ONGOING = 1,
|
||||
ACTION_ENDING = -1,
|
||||
};
|
||||
|
||||
enum Type {
|
||||
TYPE_NORMAL2 = 0,
|
||||
TYPE_RED = 1,
|
||||
TYPE_WHITE = 2,
|
||||
TYPE_BLUE = 3,
|
||||
TYPE_NORMAL = 4,
|
||||
};
|
||||
|
||||
enum BckIdx {
|
||||
BCK_IDX_WAIT01 = 0,
|
||||
BCK_IDX_WAIT03 = 1,
|
||||
BCK_IDX_WAIT02 = 2,
|
||||
BCK_IDX_TALK01 = 3,
|
||||
BCK_IDX_WALK01 = 4,
|
||||
BCK_IDX_JAMP_A = 5,
|
||||
BCK_IDX_JAMP_B = 6,
|
||||
BCK_IDX_JAMP_C = 7,
|
||||
BCK_IDX_GUARD = 8,
|
||||
BCK_IDX_JTBT = 9,
|
||||
BCK_IDX_HAPPY = 10,
|
||||
BCK_IDX_DANCE01 = 11,
|
||||
BCK_IDX_DANCE02 = 12,
|
||||
BCK_IDX_GET = 13,
|
||||
BCK_IDX_MAWASU = 14,
|
||||
BCK_IDX_WAIT04 = 15,
|
||||
BCK_IDX_TALK02 = 16,
|
||||
};
|
||||
|
||||
enum AnmPrmIdx {
|
||||
ANM_PRM_IDX_NONE = 0,
|
||||
ANM_PRM_IDX_WAIT01 = 1,
|
||||
ANM_PRM_IDX_WAIT03 = 2,
|
||||
ANM_PRM_IDX_WAIT02 = 3,
|
||||
ANM_PRM_IDX_TALK01 = 4,
|
||||
ANM_PRM_IDX_WALK01 = 5,
|
||||
ANM_PRM_IDX_JAMP_A = 6,
|
||||
ANM_PRM_IDX_JAMP_B = 7,
|
||||
ANM_PRM_IDX_JAMP_C1 = 8,
|
||||
ANM_PRM_IDX_JAMP_C2 = 9,
|
||||
ANM_PRM_IDX_GUARD = 10,
|
||||
ANM_PRM_IDX_JTBT = 11,
|
||||
ANM_PRM_IDX_HAPPY = 12,
|
||||
ANM_PRM_IDX_DANCE01 = 13,
|
||||
ANM_PRM_IDX_DANCE02 = 14,
|
||||
ANM_PRM_IDX_GET = 15,
|
||||
ANM_PRM_IDX_HAPPY2 = 16, // ANM_PRM_IDX_HAPPY gets set to this
|
||||
ANM_PRM_IDX_DANCE01_TO_TALK01 = 17,
|
||||
ANM_PRM_IDX_DANCE02_TO_WAIT03 = 18,
|
||||
ANM_PRM_IDX_MAWASU = 19,
|
||||
ANM_PRM_IDX_WAIT04 = 20,
|
||||
ANM_PRM_IDX_TALK02 = 21,
|
||||
ANM_PRM_IDX_TALK01_WAIT01 = 22, // loops 3x then -> WAIT01
|
||||
ANM_PRM_IDX_TALK01_TALK02 = 23, // loops 5x then -> TALK02
|
||||
};
|
||||
|
||||
typedef int (daNpc_Tc_c::*ActionFunc)(void*);
|
||||
daNpc_Tc_c();
|
||||
|
||||
cXyz& getAttentionBasePos() { return mAttPos; }
|
||||
cXyz& getEyePos() { return mEyePos; }
|
||||
|
||||
void incAttnSetCount() {
|
||||
if (mAttnSetCount != 0xff) {
|
||||
mAttnSetCount++;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL setAction(ActionFunc actionFunc, void* arg) {
|
||||
if (mCurrActionFunc != actionFunc) {
|
||||
if (mCurrActionFunc != NULL) {
|
||||
mActionStatus = ACTION_ENDING;
|
||||
(this->*mCurrActionFunc)(arg);
|
||||
}
|
||||
mCurrActionFunc = actionFunc;
|
||||
mActionStatus = ACTION_STARTING;
|
||||
(this->*mCurrActionFunc)(arg);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
fopAc_ac_c* _searchTower(fopAc_ac_c*);
|
||||
BOOL initTexPatternAnm(bool);
|
||||
void playTexPatternAnm();
|
||||
void smoke_set(float, float, float, float, float);
|
||||
void smoke_set(f32, f32, f32, f32, f32);
|
||||
void setAnm();
|
||||
void setTexAnm();
|
||||
void chkAttention(cXyz, short);
|
||||
bool chkAttention(cXyz, s16);
|
||||
void eventOrder();
|
||||
void checkOrder();
|
||||
void existTcMonument();
|
||||
void anmAtr(unsigned short);
|
||||
bool existTcMonument();
|
||||
void anmAtr(u16);
|
||||
void stopTower();
|
||||
void startTower();
|
||||
void next_msgStatusBlue(unsigned long*);
|
||||
void next_msgStatusNormal(unsigned long*);
|
||||
void next_msgStatus(unsigned long*);
|
||||
void setFirstMsg(bool*, unsigned long, unsigned long);
|
||||
void getMsgNormal();
|
||||
void getMsgBlue();
|
||||
void getMsg();
|
||||
u16 next_msgStatusBlue(u32*);
|
||||
u16 next_msgStatusNormal(u32*);
|
||||
u16 next_msgStatus(u32*);
|
||||
u32 setFirstMsg(bool*, u32, u32);
|
||||
u32 getMsgNormal();
|
||||
u32 getMsgBlue();
|
||||
u32 getMsg();
|
||||
void getArg();
|
||||
void createInit();
|
||||
void searchStoolPos(void*, void*);
|
||||
static void* searchStoolPos(void*, void*);
|
||||
void setAttention();
|
||||
void calcMove();
|
||||
void lookBack();
|
||||
@@ -54,32 +160,37 @@ public:
|
||||
void statusDemoJump();
|
||||
void statusDemoRescue();
|
||||
void statusDemoTalk();
|
||||
void help_action(void*);
|
||||
void wait_action(void*);
|
||||
BOOL help_action(void*);
|
||||
BOOL wait_action(void*);
|
||||
void calc_sitpos();
|
||||
void set_mtx();
|
||||
BOOL _draw();
|
||||
void setTower();
|
||||
BOOL _execute();
|
||||
BOOL _delete();
|
||||
void isCreate();
|
||||
bool isCreate();
|
||||
cPhs_State _create();
|
||||
void _createHeap();
|
||||
void next_msgStatusNormal2(unsigned long*);
|
||||
void getMsgNormal2();
|
||||
void setRupeeSizeMsg();
|
||||
void existUnknownCollectMap();
|
||||
void analysisCollectMap();
|
||||
void existKnownCollectMap();
|
||||
void next_msgStatusWhite(unsigned long*);
|
||||
void getMsgWhite();
|
||||
void next_msgStatusRed(unsigned long*);
|
||||
void setFinishMsg();
|
||||
void getMsgRed();
|
||||
void checkMonumentFee(unsigned short, unsigned short);
|
||||
void checkAllMonumentFee();
|
||||
void checkAllMonumentPay();
|
||||
void checkMonumentPay(unsigned short, unsigned short);
|
||||
BOOL _createHeap();
|
||||
u16 next_msgStatusNormal2(u32*);
|
||||
u32 getMsgNormal2();
|
||||
#if VERSION != VERSION_DEMO
|
||||
u32 setRupeeSizeMsg();
|
||||
#endif
|
||||
bool existUnknownCollectMap();
|
||||
int analysisCollectMap();
|
||||
bool existKnownCollectMap();
|
||||
u16 next_msgStatusWhite(u32*);
|
||||
u32 getMsgWhite();
|
||||
u16 next_msgStatusRed(u32*);
|
||||
u32 setFinishMsg();
|
||||
u32 getMsgRed();
|
||||
bool checkMonumentFee(u16, u16);
|
||||
bool checkAllMonumentFee();
|
||||
#if VERSION == VERSION_DEMO
|
||||
bool checkOneMonumentGet();
|
||||
#endif
|
||||
int checkAllMonumentPay();
|
||||
bool checkMonumentPay(u16, u16);
|
||||
void cutProc();
|
||||
void cutSitToJumpStart(int);
|
||||
void cutSitToJumpProc(int);
|
||||
@@ -101,15 +212,78 @@ public:
|
||||
void cutPayProc(int);
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
|
||||
class daNpc_Tc_HIO_c {
|
||||
public:
|
||||
daNpc_Tc_HIO_c();
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
};
|
||||
|
||||
/* 0x6C4 */ u8 field_0x6C4[0x6C8 - 0x6C4];
|
||||
/* 0x6C8 */ BOOL field_0x6C8;
|
||||
/* 0x6CC */ u8 mJtbtTimer;
|
||||
/* 0x6CD */ u8 mTalk01Wait01Timer;
|
||||
/* 0x6CE */ u8 mTalk01Talk02Timer;
|
||||
/* 0x6CF */ s8 mStatus;
|
||||
/* 0x6D0 */ ActionFunc mCurrActionFunc;
|
||||
/* 0x6DC */ s8 mActionStatus;
|
||||
/* 0x6DD */ u8 field_0x6DD[0x6E0 - 0x6DD];
|
||||
/* 0x6E0 */ cXyz mSmokePos;
|
||||
/* 0x6EC */ csXyz mSmokeAngle;
|
||||
/* 0x6F2 */ u8 field_0x6F2[0x6F4 - 0x6F2];
|
||||
/* 0x6F4 */ dPa_smokeEcallBack mSmokeCallBack;
|
||||
/* 0x714 */ dPa_followEcallBack field_0x714;
|
||||
/* 0x728 */ dPa_followEcallBack field_0x728;
|
||||
/* 0x73C */ request_of_phase_process_class mPhs;
|
||||
/* 0x744 */ u32 mShadowId;
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x748 */ J3DModel* mpModel;
|
||||
#endif
|
||||
/* 0x748 */ J3DAnmTexPattern* m_head_tex_pattern;
|
||||
/* 0x74C */ mDoExt_btpAnm mBtpAnm;
|
||||
/* 0x760 */ u8 mBlinkFrame;
|
||||
/* 0x761 */ u8 field_0x761[0x762 - 0x761];
|
||||
/* 0x762 */ s16 mBlinkTimer;
|
||||
/* 0x764 */ cXyz mEyePos;
|
||||
/* 0x770 */ cXyz mAttPos;
|
||||
/* 0x77C */ u8 mAttnSetCount;
|
||||
/* 0x77D */ u8 field_0x77D[0x780 - 0x77D];
|
||||
/* 0x780 */ cXyz mStoolLookPos;
|
||||
/* 0x78C */ s16 mMaxHeadTurnVelocity;
|
||||
/* 0x78E */ u8 field_0x78E[0x790 - 0x78E];
|
||||
/* 0x790 */ csXyz field_0x790;
|
||||
/* 0x796 */ u8 field_0x796[0x798 - 0x796];
|
||||
/* 0x798 */ s8 field_0x798;
|
||||
/* 0x799 */ u8 field_0x799[0x79C - 0x799];
|
||||
/* 0x79C */ f32 mTargetSpeed;
|
||||
/* 0x7A0 */ cXyz mStoolPos;
|
||||
/* 0x7AC */ cXyz mSitPos;
|
||||
/* 0x7B8 */ cXyz mWalkToStoolPos;
|
||||
/* 0x7C4 */ cXyz mDeltaPos;
|
||||
/* 0x7D0 */ u8 field_0x7D0[0x7DC - 0x7D0];
|
||||
/* 0x7DC */ cXyz mParticlePos;
|
||||
/* 0x7E8 */ bool mHasAttention;
|
||||
/* 0x7E9 */ bool mTalkingNearJail;
|
||||
/* 0x7EA */ u8 field_0x7EA[0x7F1 - 0x7EA];
|
||||
/* 0x7F1 */ bool mHasTalkedNearJail;
|
||||
/* 0x7F2 */ bool mHasEnteredSitRadius;
|
||||
/* 0x7F3 */ s8 mJumpLandingTimer;
|
||||
/* 0x7F4 */ u8 field_0x7F4[0x7F6 - 0x7F4];
|
||||
/* 0x7F6 */ s8 mTexPatternNum;
|
||||
/* 0x7F7 */ s8 mTexPatternNumIdx;
|
||||
/* 0x7F8 */ s8 mBckIdx;
|
||||
/* 0x7F9 */ s8 mAnmPrmIdx;
|
||||
/* 0x7FA */ s8 mOldAnmPrmIdx;
|
||||
/* 0x7FB */ s8 mEventIdx;
|
||||
/* 0x7FC */ u8 mType;
|
||||
/* 0x7FD */ u8 field_0x7FD[0x804 - 0x7FD];
|
||||
/* 0x804 */ daObjSmplbg::Act_c* m_tower_actor;
|
||||
/* 0x808 */ bool field_0x808;
|
||||
/* 0x809 */ bool field_0x809;
|
||||
/* 0x80A */ u8 field_0x80A[0x80B - 0x80A];
|
||||
/* 0x80B */ bool field_0x80B;
|
||||
/* 0x80C */ u8 field_0x80C;
|
||||
/* 0x80D */ bool field_0x80D;
|
||||
/* 0x80E */ bool field_0x80E;
|
||||
/* 0x80F */ bool field_0x80F;
|
||||
/* 0x810 */ bool field_0x810;
|
||||
/* 0x811 */ bool field_0x811;
|
||||
/* 0x812 */ bool field_0x812;
|
||||
/* 0x813 */ bool field_0x813;
|
||||
/* 0x814 */ bool field_0x814;
|
||||
/* 0x815 */ u8 field_0x815[0x81C - 0x815];
|
||||
}; // Size: 0x81C
|
||||
#endif /* D_A_NPC_TC_H */
|
||||
|
||||
@@ -33,9 +33,9 @@ namespace daObjSmplbg {
|
||||
static const Attr_c M_attr[];
|
||||
inline const Attr_c& attr() const { return M_attr[mType]; }
|
||||
|
||||
void isStop() {}
|
||||
void offStop() {}
|
||||
void onStop() {}
|
||||
bool isStop() { return mIsStop; }
|
||||
void offStop() { mIsStop = false; }
|
||||
void onStop() { mIsStop = true; }
|
||||
int prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W , PRM_TYPE_S);}
|
||||
|
||||
virtual BOOL CreateHeap();
|
||||
@@ -53,7 +53,7 @@ namespace daObjSmplbg {
|
||||
/* 0x2C8 */ request_of_phase_process_class mPhs;
|
||||
/* 0x2D0 */ J3DModel* mpModel;
|
||||
/* 0x2D4 */ int mType;
|
||||
/* 0x2D8 */ u8 field_0x2D8;
|
||||
/* 0x2D8 */ bool mIsStop;
|
||||
/* 0x2D9 */ u8 field_0x2D9[0x2DC - 0x2D9];
|
||||
}; // Size: 0x2DC
|
||||
};
|
||||
|
||||
@@ -1108,6 +1108,10 @@ inline BOOL dComIfGs_isCollectMapTriforce(int i_no) {
|
||||
return g_dComIfG_gameInfo.save.getPlayer().getMap().isTriforce(i_no - 1);
|
||||
}
|
||||
|
||||
inline void dComIfGs_onCollectMapTriforce(int i_no) {
|
||||
g_dComIfG_gameInfo.save.getPlayer().getMap().onTriforce(i_no -1);
|
||||
}
|
||||
|
||||
inline void dComIfGs_offCollectMapTriforce(int i_no) {
|
||||
g_dComIfG_gameInfo.save.getPlayer().getMap().offTriforce(i_no - 1);
|
||||
}
|
||||
|
||||
@@ -161,6 +161,10 @@ public:
|
||||
return mpEvtStaffName;
|
||||
}
|
||||
|
||||
int getNowCut() {
|
||||
return mCurActIdx;
|
||||
}
|
||||
|
||||
bool getAttnFlag() {
|
||||
return mbAttention;
|
||||
}
|
||||
@@ -169,6 +173,14 @@ public:
|
||||
mbAttention = flag;
|
||||
}
|
||||
|
||||
void setAttnNoTurnFlag(bool flag) {
|
||||
mbNoTurn = flag;
|
||||
}
|
||||
|
||||
f32 getMoveSpeed() {
|
||||
return mSpeed;
|
||||
}
|
||||
|
||||
cXyz getAttnPos() {
|
||||
return mPos;
|
||||
}
|
||||
|
||||
+4
-4
@@ -126,10 +126,10 @@ enum {
|
||||
/* 0x76 */ DSNAP_TYPE_UNK76,
|
||||
/* 0x77 */ DSNAP_TYPE_UNK77,
|
||||
/* 0x78 */ DSNAP_TYPE_UNK78,
|
||||
/* 0x79 */ DSNAP_TYPE_UNK79,
|
||||
/* 0x7A */ DSNAP_TYPE_UNK7A,
|
||||
/* 0x7B */ DSNAP_TYPE_UNK7B,
|
||||
/* 0x7C */ DSNAP_TYPE_UNK7C,
|
||||
/* 0x79 */ DSNAP_TYPE_TC_NORMAL,
|
||||
/* 0x7A */ DSNAP_TYPE_TC_RED,
|
||||
/* 0x7B */ DSNAP_TYPE_TC_BLUE,
|
||||
/* 0x7C */ DSNAP_TYPE_TC_WHITE,
|
||||
/* 0x7D */ DSNAP_TYPE_UNK7D,
|
||||
/* 0x7E */ DSNAP_TYPE_ROTEN,
|
||||
/* 0x7F */ DSNAP_TYPE_UNK7F,
|
||||
|
||||
@@ -370,7 +370,7 @@ public:
|
||||
void changeAnm(J3DAnmTransform* bckAnm) { mpAnm = bckAnm; }
|
||||
J3DAnmTransform* getAnm() { return mpAnm; }
|
||||
f32 getMorfRatio() { return mCurMorf; }
|
||||
BOOL isLoop() { return mFrameCtrl.checkState(J3DFrameCtrl::STATE_LOOP_E); }
|
||||
bool isLoop() { return mFrameCtrl.checkState(J3DFrameCtrl::STATE_LOOP_E); }
|
||||
BOOL isMorf() { return mCurMorf < 1.0f; }
|
||||
|
||||
private:
|
||||
|
||||
+1709
-249
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,312 @@
|
||||
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "cut" functions
|
||||
// are in a separate .text section from the rest of its functions.
|
||||
|
||||
/* 00005C58-00005E60 .text cutProc__10daNpc_Tc_cFv */
|
||||
void daNpc_Tc_c::cutProc() {
|
||||
static char* action_table[] = {
|
||||
"SIT_TO_JUMP",
|
||||
"PRESENT",
|
||||
"SET_ANM",
|
||||
"BACKJUMP",
|
||||
"EFFECT",
|
||||
"DOOR_OPEN",
|
||||
"DOOR_CLOSE",
|
||||
"DOOR_CLOSE2",
|
||||
"PAY",
|
||||
};
|
||||
|
||||
int staffIdx = dComIfGp_evmng_getMyStaffId("Tc");
|
||||
if (staffIdx != -1) {
|
||||
int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, action_table, ARRAY_SIZE(action_table), TRUE, 0);
|
||||
|
||||
if (actIdx == -1) {
|
||||
dComIfGp_evmng_cutEnd(staffIdx);
|
||||
} else {
|
||||
if (dComIfGp_evmng_getIsAddvance(staffIdx)) {
|
||||
switch(actIdx) {
|
||||
case 0:
|
||||
cutSitToJumpStart(staffIdx);
|
||||
break;
|
||||
case 1:
|
||||
cutPresentStart(staffIdx);
|
||||
break;
|
||||
case 2:
|
||||
cutSetAnmStart(staffIdx);
|
||||
break;
|
||||
case 3:
|
||||
cutBackJumpStart(staffIdx);
|
||||
break;
|
||||
case 4:
|
||||
cutEffectStart(staffIdx);
|
||||
break;
|
||||
case 5:
|
||||
cutDoorOpenStart(staffIdx);
|
||||
break;
|
||||
case 6:
|
||||
cutDoorCloseStart(staffIdx);
|
||||
break;
|
||||
case 7:
|
||||
cutDoorClose2Start(staffIdx);
|
||||
break;
|
||||
case 8:
|
||||
cutPayStart(staffIdx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch(actIdx) {
|
||||
case 0:
|
||||
cutSitToJumpProc(staffIdx);
|
||||
break;
|
||||
case 1:
|
||||
cutPresentProc(staffIdx);
|
||||
break;
|
||||
case 2:
|
||||
cutSetAnmProc(staffIdx);
|
||||
break;
|
||||
case 3:
|
||||
cutBackJumpProc(staffIdx);
|
||||
break;
|
||||
case 4:
|
||||
cutEffectProc(staffIdx);
|
||||
break;
|
||||
case 5:
|
||||
cutDoorOpenProc(staffIdx);
|
||||
break;
|
||||
case 6:
|
||||
cutDoorCloseProc(staffIdx);
|
||||
break;
|
||||
case 7:
|
||||
cutDoorClose2Proc(staffIdx);
|
||||
break;
|
||||
case 8:
|
||||
cutPayProc(staffIdx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00005E60-00005E6C .text cutSitToJumpStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutSitToJumpStart(int) {
|
||||
mAnmPrmIdx = ANM_PRM_IDX_JAMP_A;
|
||||
}
|
||||
|
||||
/* 00005E6C-00005FA4 .text cutSitToJumpProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutSitToJumpProc(int i_staffIdx) {
|
||||
if (mpMorf->isStop() && mAnmPrmIdx == ANM_PRM_IDX_JAMP_A) {
|
||||
speedF = l_HIO.field_0x38;
|
||||
speed.y = l_HIO.field_0x40;
|
||||
gravity = l_HIO.field_0x3C;
|
||||
mAnmPrmIdx = ANM_PRM_IDX_JAMP_B;
|
||||
}
|
||||
|
||||
if(speed.y <= 0.0f && mAnmPrmIdx == ANM_PRM_IDX_JAMP_B) {
|
||||
mAnmPrmIdx = ANM_PRM_IDX_JAMP_C1;
|
||||
}
|
||||
|
||||
if(mObjAcch.ChkGroundHit() && mAnmPrmIdx == ANM_PRM_IDX_JAMP_C1) {
|
||||
speedF = 0.0f;
|
||||
mAnmPrmIdx = ANM_PRM_IDX_JAMP_C2;
|
||||
mJumpLandingTimer = 0x33;
|
||||
return;
|
||||
}
|
||||
if (cLib_calcTimer(&mJumpLandingTimer) == 0 && mAnmPrmIdx == ANM_PRM_IDX_JAMP_C2) {
|
||||
mAnmPrmIdx = ANM_PRM_IDX_WAIT01;
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00005FA4-00005FA8 .text cutPresentStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutPresentStart(int) {
|
||||
}
|
||||
|
||||
/* 00005FA8-00006174 .text cutPresentProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutPresentProc(int i_staffIdx) {
|
||||
int* pItemType = dComIfGp_evmng_getMyIntegerP(i_staffIdx, "ItemType");
|
||||
int temp;
|
||||
if(pItemType == NULL) {
|
||||
temp = 0;
|
||||
} else {
|
||||
temp = *pItemType;
|
||||
}
|
||||
int itemNo;
|
||||
switch(temp) {
|
||||
case 0:
|
||||
itemNo = dItem_TINGLE_TUNER_e;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
itemNo = dItem_COLLECT_MAP_35_e;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (mType == TYPE_RED) {
|
||||
if (checkAllMonumentFee()) {
|
||||
itemNo = TINCLE_RUPEE6;
|
||||
} else {
|
||||
switch (checkAllMonumentPay()) {
|
||||
case 1:
|
||||
itemNo = TINCLE_RUPEE1;
|
||||
break;
|
||||
case 2:
|
||||
itemNo = TINCLE_RUPEE2;
|
||||
break;
|
||||
case 3:
|
||||
itemNo = TINCLE_RUPEE3;
|
||||
break;
|
||||
case 4:
|
||||
itemNo = TINCLE_RUPEE4;
|
||||
break;
|
||||
case 5:
|
||||
itemNo = TINCLE_RUPEE5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (mType == TYPE_NORMAL2) {
|
||||
switch (analysisCollectMap()) {
|
||||
case 1:
|
||||
itemNo = TRIFORCE_MAP1;
|
||||
break;
|
||||
case 2:
|
||||
itemNo = TRIFORCE_MAP2;
|
||||
break;
|
||||
case 3:
|
||||
itemNo = TRIFORCE_MAP3;
|
||||
break;
|
||||
case 4:
|
||||
itemNo = TRIFORCE_MAP4;
|
||||
break;
|
||||
case 5:
|
||||
itemNo = TRIFORCE_MAP5;
|
||||
break;
|
||||
case 6:
|
||||
itemNo = TRIFORCE_MAP6;
|
||||
break;
|
||||
case 7:
|
||||
itemNo = TRIFORCE_MAP7;
|
||||
break;
|
||||
case 8:
|
||||
itemNo = TRIFORCE_MAP8;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
#if VERSION == VERSION_DEMO
|
||||
fpc_ProcID itemPID = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1);
|
||||
#else
|
||||
fpc_ProcID itemPID = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, current.roomNo);
|
||||
#endif
|
||||
if(itemPID != fpcM_ERROR_PROCESS_ID_e) {
|
||||
dComIfGp_event_setItemPartnerId(itemPID);
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 00006174-000061F0 .text cutSetAnmStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutSetAnmStart(int i_staffIdx) {
|
||||
const char* pName = dComIfGp_evmng_getMyStringP(i_staffIdx, "Name");
|
||||
if(pName != NULL && strcmp(pName, "GET") == 0) {
|
||||
mAnmPrmIdx = ANM_PRM_IDX_GET;
|
||||
} else {
|
||||
mAnmPrmIdx = ANM_PRM_IDX_WAIT01;
|
||||
}
|
||||
}
|
||||
|
||||
/* 000061F0-000062A0 .text cutSetAnmProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutSetAnmProc(int i_staffIdx) {
|
||||
dComIfGp_evmng_getMyStringP(i_staffIdx, "Name");
|
||||
if (mAnmPrmIdx == ANM_PRM_IDX_GET) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
if(mpMorf->isStop()) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 000062A0-000062D8 .text cutBackJumpStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutBackJumpStart(int) {
|
||||
mTargetSpeed = 0.0f;
|
||||
speedF = l_HIO.field_0x48;
|
||||
speed.y = l_HIO.field_0x50;
|
||||
gravity = l_HIO.field_0x4C;
|
||||
mAnmPrmIdx = ANM_PRM_IDX_GUARD;
|
||||
}
|
||||
|
||||
/* 000062D8-000063BC .text cutBackJumpProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutBackJumpProc(int i_staffIdx) {
|
||||
mSmokeCallBack.end();
|
||||
if (mObjAcch.ChkGroundLanding()) {
|
||||
speedF = 0.0f;
|
||||
speed.y = 0.0f;
|
||||
mSmokePos.set(current.pos);
|
||||
mSmokeAngle = current.angle;
|
||||
smoke_set(2.0f, 0.25f, 0.0f, 5.0f, 20.0f);
|
||||
} else if (mObjAcch.ChkGroundHit() && speed.y == 0.0f){
|
||||
speedF = 0.0f;
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
}
|
||||
|
||||
/* 000063BC-000064C8 .text cutEffectStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutEffectStart(int) {
|
||||
// regswap for demo daNpc_Tc_c::setAnm also has a regswap with identical code
|
||||
cXyz pos;
|
||||
pos.x = current.pos.x;
|
||||
pos.y = current.pos.y;
|
||||
pos.z = current.pos.z;
|
||||
|
||||
pos.y -= 80.0f;
|
||||
cXyz particleScale;
|
||||
|
||||
particleScale.setall(1.0f);
|
||||
|
||||
JPABaseEmitter* pEmitter = dComIfGp_particle_set(dPa_name::ID_SCENE_8152, &pos, NULL, &particleScale);
|
||||
pEmitter->setGlobalParticleScale(0.62f, 0.6f);
|
||||
fopAcM_seStart(this, JA_SE_CM_CMN_NOTICE, 0);
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 000064C8-000064F4 .text cutEffectProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutEffectProc(int i_staffIdx) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
|
||||
/* 000064F4-00006564 .text cutDoorOpenStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorOpenStart(int) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_OPEN, 0);
|
||||
}
|
||||
|
||||
/* 00006564-00006590 .text cutDoorOpenProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorOpenProc(int i_staffIdx) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
|
||||
/* 00006590-00006600 .text cutDoorCloseStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorCloseStart(int) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_CLOSE_1, 0);
|
||||
}
|
||||
|
||||
/* 00006600-0000662C .text cutDoorCloseProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorCloseProc(int i_staffIdx) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
|
||||
/* 0000662C-0000669C .text cutDoorClose2Start__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorClose2Start(int) {
|
||||
fopAcM_seStart(this, JA_SE_OBJ_DOOR_N_CLOSE_2, 0);
|
||||
}
|
||||
|
||||
/* 0000669C-000066C8 .text cutDoorClose2Proc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutDoorClose2Proc(int i_staffIdx) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
|
||||
/* 000066C8-000066E0 .text cutPayStart__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutPayStart(int i_param) {
|
||||
dComIfGp_setItemRupeeCount(-398);
|
||||
}
|
||||
|
||||
/* 000066E0-0000670C .text cutPayProc__10daNpc_Tc_cFi */
|
||||
void daNpc_Tc_c::cutPayProc(int i_staffIdx) {
|
||||
dComIfGp_evmng_cutEnd(i_staffIdx);
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "normal2's" functions
|
||||
// are in a separate .text section from the rest of its functions.
|
||||
|
||||
/* 00004BAC-00004E6C .text next_msgStatusNormal2__10daNpc_Tc_cFPUl */
|
||||
u16 daNpc_Tc_c::next_msgStatusNormal2(u32* pMsgNo) {
|
||||
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
|
||||
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
|
||||
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
|
||||
} else {
|
||||
switch (*pMsgNo) {
|
||||
#if VERSION > VERSION_JPN
|
||||
case 0x38AA:
|
||||
case 0x38AB:
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_3020)) {
|
||||
*pMsgNo = 0x38AC;
|
||||
} else {
|
||||
*pMsgNo = 0x38AD;
|
||||
}
|
||||
break;
|
||||
case 0x38AC:
|
||||
case 0x38AD:
|
||||
if (existKnownCollectMap()) {
|
||||
*pMsgNo = 0xDBA;
|
||||
} else {
|
||||
*pMsgNo = 0xDB5;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case 0xDB2:
|
||||
case 0xDB3:
|
||||
case 0xDFB:
|
||||
*pMsgNo = 0xDB4;
|
||||
break;
|
||||
|
||||
case 0xDB4:
|
||||
*pMsgNo = getMsgNormal2();
|
||||
break;
|
||||
|
||||
case 0xDB5:
|
||||
*pMsgNo = 0xDBA;
|
||||
break;
|
||||
|
||||
case 0xDBB:
|
||||
*pMsgNo = 0xDBC;
|
||||
break;
|
||||
|
||||
case 0xDBC:
|
||||
*pMsgNo = 0xDBD;
|
||||
break;
|
||||
|
||||
case 0xDBD:
|
||||
*pMsgNo = 0xDBE;
|
||||
break;
|
||||
|
||||
case 0xDBE:
|
||||
if (mpCurrMsg->mSelectNum == 0) {
|
||||
if ((u16)dComIfGs_getRupee() >= 398) {
|
||||
mStatus = STATUS_PAY_RUPEE;
|
||||
field_0x80D = true;
|
||||
field_0x80C = true;
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
} else {
|
||||
*pMsgNo = 0xDC0;
|
||||
}
|
||||
} else {
|
||||
*pMsgNo = 0xDBF;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xDC0:
|
||||
if (field_0x80B) {
|
||||
*pMsgNo = 0xDC4;
|
||||
} else {
|
||||
*pMsgNo = 0xDC1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xDBF:
|
||||
*pMsgNo = 0xDC1;
|
||||
break;
|
||||
|
||||
case 0xDC3:
|
||||
if (mpCurrMsg->mSelectNum == 0) {
|
||||
if ((u16)dComIfGs_getRupee() >= 398) {
|
||||
mStatus = STATUS_PAY_RUPEE;
|
||||
field_0x80D = true;
|
||||
field_0x80C = true;
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
} else {
|
||||
field_0x80B = true;
|
||||
*pMsgNo = 0xDC0;
|
||||
}
|
||||
} else {
|
||||
*pMsgNo = 0xDC4;
|
||||
}
|
||||
break;
|
||||
case 0xDC4:
|
||||
field_0x80D = false;
|
||||
field_0x80B = false;
|
||||
// fallthrough
|
||||
default:
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msgStatus;
|
||||
}
|
||||
|
||||
/* 00004E6C-00004F68 .text getMsgNormal2__10daNpc_Tc_cFv */
|
||||
u32 daNpc_Tc_c::getMsgNormal2() {
|
||||
u32 msg;
|
||||
stopTower();
|
||||
if (field_0x80D) {
|
||||
if (existUnknownCollectMap()) {
|
||||
msg = 0xDC3;
|
||||
field_0x80D = false;
|
||||
} else {
|
||||
msg = 0xDC4;
|
||||
|
||||
}
|
||||
} else if (!field_0x808) {
|
||||
field_0x808 = true;
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1708)) {
|
||||
msg = 0xDB3;
|
||||
} else {
|
||||
msg = 0xDFB;
|
||||
}
|
||||
} else {
|
||||
msg = 0xDB2;
|
||||
}
|
||||
} else if (existUnknownCollectMap()) {
|
||||
if (!field_0x809) {
|
||||
field_0x809 = true;
|
||||
msg = 0xDBB;
|
||||
} else {
|
||||
msg = 0xDBE;
|
||||
}
|
||||
} else {
|
||||
#if VERSION <= VERSION_JPN
|
||||
if(existKnownCollectMap()) {
|
||||
msg = 0xDBA;
|
||||
} else {
|
||||
msg = 0xDB5;
|
||||
}
|
||||
#else
|
||||
msg = setRupeeSizeMsg();
|
||||
#endif
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
#if VERSION > VERSION_JPN
|
||||
/* 00004F68-00004FD8 .text setRupeeSizeMsg__10daNpc_Tc_cFv */
|
||||
u32 daNpc_Tc_c::setRupeeSizeMsg() {
|
||||
u32 msgNo = 0xDB5;
|
||||
if (dComIfGs_getWalletSize() == 0) {
|
||||
msgNo = 0x38AA;
|
||||
} else if (dComIfGs_getWalletSize() == 1) {
|
||||
msgNo = 0x38AB;
|
||||
}
|
||||
else if (dComIfGs_getWalletSize() == 2) {
|
||||
if (existKnownCollectMap()) {
|
||||
msgNo = 0xDBA;
|
||||
} else {
|
||||
msgNo = 0xDB5;
|
||||
}
|
||||
}
|
||||
return msgNo;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 00004FD8-00005054 .text existUnknownCollectMap__10daNpc_Tc_cFv */
|
||||
bool daNpc_Tc_c::existUnknownCollectMap() {
|
||||
for(int i = 1; i <= 8; i++) {
|
||||
if(!dComIfGs_isCollectMapTriforce(i) && dComIfGs_isGetCollectMap(i)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 00005054-000050DC .text analysisCollectMap__10daNpc_Tc_cFv */
|
||||
int daNpc_Tc_c::analysisCollectMap() {
|
||||
for(int i = 1; i <= 8; i++) {
|
||||
if(!dComIfGs_isCollectMapTriforce(i) && dComIfGs_isGetCollectMap(i)) {
|
||||
dComIfGs_onCollectMapTriforce(i);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 000050DC-00005158 .text existKnownCollectMap__10daNpc_Tc_cFv */
|
||||
bool daNpc_Tc_c::existKnownCollectMap() {
|
||||
for(int i = 1; i <= 8; i++) {
|
||||
if(dComIfGs_isGetCollectMap(i) && dComIfGs_isCollectMapTriforce(i)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "red's" functions
|
||||
// are in a separate .text section from the rest of its functions.
|
||||
|
||||
/* 00005498-00005720 .text next_msgStatusRed__10daNpc_Tc_cFPUl */
|
||||
u16 daNpc_Tc_c::next_msgStatusRed(u32* pMsgNo) {
|
||||
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
|
||||
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
|
||||
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
|
||||
} else {
|
||||
switch(*pMsgNo) {
|
||||
case 0xDB7:
|
||||
case 0xDE1:
|
||||
*pMsgNo = 0xDE2;
|
||||
break;
|
||||
|
||||
case 0xDE2:
|
||||
if (dComIfGs_getClearCount() != 0) {
|
||||
*pMsgNo = 0xDB8;
|
||||
} else {
|
||||
*pMsgNo = 0xDE3;
|
||||
}
|
||||
break;
|
||||
case 0xDB8:
|
||||
case 0xDE3:
|
||||
*pMsgNo = 0xDE4;
|
||||
break;
|
||||
case 0xDE4:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDE5:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDE6:
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
|
||||
*pMsgNo = 0xDEB;
|
||||
} else {
|
||||
*pMsgNo = 0xDE7;
|
||||
}
|
||||
field_0x814 = true;
|
||||
break;
|
||||
case 0xDEB:
|
||||
if (field_0x814) {
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) {
|
||||
*pMsgNo = 0xDEC;
|
||||
} else {
|
||||
*pMsgNo = setFinishMsg();
|
||||
}
|
||||
} else {
|
||||
*pMsgNo = setFinishMsg();
|
||||
}
|
||||
break;
|
||||
case 0xDEC:
|
||||
*pMsgNo = 0xDED;
|
||||
break;
|
||||
case 0xDED:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDE7:
|
||||
*pMsgNo = 0xDE8;
|
||||
break;
|
||||
case 0xDE8:
|
||||
*pMsgNo = 0xDE9;
|
||||
break;
|
||||
case 0xDE9:
|
||||
*pMsgNo = 0xDEA;
|
||||
break;
|
||||
case 0xDEA:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDEE:
|
||||
*pMsgNo = 0xDEF;
|
||||
break;
|
||||
case 0xDEF:
|
||||
mStatus = STATUS_GET_RUPEE;
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
case 0xDF1:
|
||||
*pMsgNo = 0xDF2;
|
||||
break;
|
||||
case 0xDF2:
|
||||
mStatus = STATUS_MONUMENT_COMPLETE;
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
case 0xDF3:
|
||||
*pMsgNo = 0xDF4;
|
||||
break;
|
||||
case 0xDF4:
|
||||
*pMsgNo = 0xDF5;
|
||||
break;
|
||||
case 0xDF5:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDF0:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDC7:
|
||||
m_jnt.onHeadLock();
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
field_0x814 = false;
|
||||
break;
|
||||
default:
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msgStatus;
|
||||
}
|
||||
|
||||
/* 00005720-00005730 .text setFinishMsg__10daNpc_Tc_cFv */
|
||||
u32 daNpc_Tc_c::setFinishMsg() {
|
||||
m_jnt.onHeadLock();
|
||||
return 0xDC7;
|
||||
}
|
||||
|
||||
/* 00005730-00005944 .text getMsgRed__10daNpc_Tc_cFv */
|
||||
u32 daNpc_Tc_c::getMsgRed() {
|
||||
stopTower();
|
||||
if (field_0x813) {
|
||||
field_0x813 = false;
|
||||
return 0xDF3;
|
||||
}
|
||||
|
||||
if (field_0x812) {
|
||||
field_0x812 = false;
|
||||
switch(checkAllMonumentFee()) { // fake?
|
||||
default:
|
||||
return 0xDF1;
|
||||
case false:
|
||||
return 0xDF0;
|
||||
}
|
||||
}
|
||||
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
|
||||
|
||||
if (!field_0x810) {
|
||||
field_0x810 = true;
|
||||
#if VERSION == VERSION_DEMO
|
||||
if(checkAllMonumentFee() || !checkOneMonumentGet()) {
|
||||
return 0xDE6;
|
||||
}
|
||||
return 0xDEE;
|
||||
#else
|
||||
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_DRC, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1240)) {
|
||||
return 0xDEE;
|
||||
}
|
||||
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_FW, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D08)) {
|
||||
return 0xDEE;
|
||||
}
|
||||
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_TOTG, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D04)) {
|
||||
return 0xDEE;
|
||||
}
|
||||
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_WT, 0xF)&& !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D02)) {
|
||||
return 0xDEE;
|
||||
}
|
||||
if (dComIfGs_isStageTbox(dSv_save_c::STAGE_ET, 0xF) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_1D01)) {
|
||||
return 0xDEE;
|
||||
}
|
||||
return 0xDE6;
|
||||
#endif
|
||||
}
|
||||
|
||||
switch(dComIfGs_isEventBit(dSv_event_flag_c::UNK_1A20)) { // fake?
|
||||
default:
|
||||
return 0xDEB;
|
||||
case false:
|
||||
return 0xDEA;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (dComIfGs_getClearCount() != 0) {
|
||||
return setFirstMsg(&field_0x811, 0xDB7U, 0xDE5);
|
||||
}
|
||||
return setFirstMsg(&field_0x811, 0xDE1U, 0xDE5);
|
||||
}
|
||||
|
||||
/* 00005944-000059A8 .text checkMonumentFee__10daNpc_Tc_cFUsUs */
|
||||
bool daNpc_Tc_c::checkMonumentFee(u16 i_stageNo, u16 i_eventId) {
|
||||
if (dComIfGs_isStageTbox(i_stageNo, 0xf)) {
|
||||
return dComIfGs_isEventBit(i_eventId);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 000059A8-00005A50 .text checkAllMonumentFee__10daNpc_Tc_cFv */
|
||||
bool daNpc_Tc_c::checkAllMonumentFee() {
|
||||
if(checkMonumentFee(dSv_save_c::STAGE_DRC, dSv_event_flag_c::UNK_1240) &&
|
||||
checkMonumentFee(dSv_save_c::STAGE_FW, dSv_event_flag_c::UNK_1D08) &&
|
||||
checkMonumentFee(dSv_save_c::STAGE_TOTG, dSv_event_flag_c::UNK_1D04) &&
|
||||
checkMonumentFee(dSv_save_c::STAGE_WT, dSv_event_flag_c::UNK_1D02) &&
|
||||
checkMonumentFee(dSv_save_c::STAGE_ET, dSv_event_flag_c::UNK_1D01)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
bool daNpc_Tc_c::checkOneMonumentGet() {
|
||||
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_DRC, 0xf)) {
|
||||
return true;
|
||||
}
|
||||
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_FW, 0xf)) {
|
||||
return true;
|
||||
}
|
||||
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_TOTG, 0xf)) {
|
||||
return true;
|
||||
}
|
||||
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_WT, 0xf)) {
|
||||
return true;
|
||||
}
|
||||
if(dComIfGs_isStageTbox(dSv_save_c::STAGE_ET, 0xf)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
/* 00005A50-00005B10 .text checkAllMonumentPay__10daNpc_Tc_cFv */
|
||||
int daNpc_Tc_c::checkAllMonumentPay() {
|
||||
int amountOfMonumentsPaid = 0;
|
||||
if(checkMonumentPay(dSv_save_c::STAGE_DRC, dSv_event_flag_c::UNK_1240)) {
|
||||
amountOfMonumentsPaid++;
|
||||
}
|
||||
if (checkMonumentPay(dSv_save_c::STAGE_FW, dSv_event_flag_c::UNK_1D08)) {
|
||||
amountOfMonumentsPaid++;
|
||||
}
|
||||
if (checkMonumentPay(dSv_save_c::STAGE_TOTG, dSv_event_flag_c::UNK_1D04)) {
|
||||
amountOfMonumentsPaid++;
|
||||
}
|
||||
if (checkMonumentPay(dSv_save_c::STAGE_WT, dSv_event_flag_c::UNK_1D02)) {
|
||||
amountOfMonumentsPaid++;
|
||||
}
|
||||
if (checkMonumentPay(dSv_save_c::STAGE_ET, dSv_event_flag_c::UNK_1D01)) {
|
||||
amountOfMonumentsPaid++;
|
||||
}
|
||||
return amountOfMonumentsPaid;
|
||||
}
|
||||
|
||||
/* 00005B10-00005B98 .text checkMonumentPay__10daNpc_Tc_cFUsUs */
|
||||
bool daNpc_Tc_c::checkMonumentPay(u16 i_stageNo, u16 i_eventId) {
|
||||
if(dComIfGs_isEventBit(i_eventId)) {
|
||||
return false;
|
||||
}
|
||||
if(dComIfGs_isStageTbox(i_stageNo, 0xF)) {
|
||||
dComIfGs_onEventBit(i_eventId);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
// The original name of this file is unknown, but it must exist because d_a_npc_tc's "white's" functions
|
||||
// are in a separate .text section from the rest of its functions.
|
||||
|
||||
/* 00005158-000053D4 .text next_msgStatusWhite__10daNpc_Tc_cFPUl */
|
||||
u16 daNpc_Tc_c::next_msgStatusWhite(u32* pMsgNo) {
|
||||
m_jnt.offHeadLock();
|
||||
u16 msgStatus = fopMsgStts_MSG_CONTINUES_e;
|
||||
if ((mAnmPrmIdx == ANM_PRM_IDX_DANCE01_TO_TALK01 || mAnmPrmIdx == ANM_PRM_IDX_DANCE02_TO_WAIT03) && !mpMorf->isStop()) {
|
||||
msgStatus = fopMsgStts_MSG_DISPLAYED_e;
|
||||
} else {
|
||||
switch (*pMsgNo) {
|
||||
case 0xDC5:
|
||||
*pMsgNo = 0xDC6;
|
||||
break;
|
||||
case 0xDC6:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDC8:
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
|
||||
if (!field_0x80E) {
|
||||
field_0x80E = true;
|
||||
*pMsgNo = 0xDD7;
|
||||
}
|
||||
} else if (!field_0x80F) {
|
||||
field_0x80F = true;
|
||||
*pMsgNo = 0xDC9;
|
||||
}
|
||||
break;
|
||||
case 0xDD7:
|
||||
*pMsgNo = 0xDD8;
|
||||
break;
|
||||
case 0xDD8:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDC9:
|
||||
if (mpCurrMsg->mSelectNum == 0) {
|
||||
*pMsgNo = 0xDCA;
|
||||
} else {
|
||||
*pMsgNo = 0xDD3;
|
||||
}
|
||||
break;
|
||||
case 0xDCA:
|
||||
*pMsgNo = 0xDCB;
|
||||
break;
|
||||
case 0xDCB:
|
||||
*pMsgNo = 0xDCC;
|
||||
break;
|
||||
case 0xDCC:
|
||||
*pMsgNo = 0xDCD;
|
||||
break;
|
||||
case 0xDCD:
|
||||
*pMsgNo = 0xDCE;
|
||||
break;
|
||||
case 0xDCE:
|
||||
*pMsgNo = 0xDCF;
|
||||
break;
|
||||
case 0xDCF:
|
||||
*pMsgNo = 0xDD0;
|
||||
break;
|
||||
case 0xDD0:
|
||||
*pMsgNo = 0xDD1;
|
||||
break;
|
||||
case 0xDD1:
|
||||
*pMsgNo = 0xDD2;
|
||||
break;
|
||||
case 0xDD2:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDD3:
|
||||
*pMsgNo = 0xDD4;
|
||||
break;
|
||||
case 0xDD4:
|
||||
*pMsgNo = 0xDD5;
|
||||
break;
|
||||
case 0xDD5:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
case 0xDC7:
|
||||
m_jnt.onHeadLock();
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
case 0xDD9:
|
||||
*pMsgNo = 0xDDA;
|
||||
break;
|
||||
case 0xDDA:
|
||||
if (existTcMonument()) {
|
||||
*pMsgNo = setFinishMsg();
|
||||
} else {
|
||||
*pMsgNo = 0xDDB;
|
||||
}
|
||||
break;
|
||||
case 0xDDB:
|
||||
*pMsgNo = 0xDDC;
|
||||
break;
|
||||
case 0xDDC:
|
||||
*pMsgNo = setFinishMsg();
|
||||
break;
|
||||
default:
|
||||
msgStatus = fopMsgStts_MSG_ENDS_e;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msgStatus;
|
||||
}
|
||||
|
||||
/* 000053D4-00005498 .text getMsgWhite__10daNpc_Tc_cFv */
|
||||
u32 daNpc_Tc_c::getMsgWhite() {
|
||||
u32 msg;
|
||||
stopTower();
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_1708)) {
|
||||
msg = 0xDD9;
|
||||
m_jnt.onHeadLock();
|
||||
|
||||
} else {
|
||||
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_0B80)) {
|
||||
if (!field_0x80E) {
|
||||
msg = 0xDC8;
|
||||
m_jnt.onHeadLock();
|
||||
} else {
|
||||
msg = 0xDD6;
|
||||
}
|
||||
} else if (!field_0x80F) {
|
||||
msg = 0xDC8;
|
||||
m_jnt.onHeadLock();
|
||||
} else {
|
||||
msg = 0xDC5;
|
||||
m_jnt.onHeadLock();
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ void daObjSmplbg::Act_c::init_mtx() {
|
||||
|
||||
/* 00000594-0000061C .text exec_qtkhd__Q211daObjSmplbg5Act_cFv */
|
||||
void daObjSmplbg::Act_c::exec_qtkhd() {
|
||||
if(field_0x2D8 == 0){
|
||||
if(!mIsStop) {
|
||||
shape_angle.y += 0x5b;
|
||||
fopAcM_seStart(this, JA_SE_OBJ_TC_TOWER_ROUND, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user