mirror of https://github.com/zeldaret/tp.git
npc_kn almost matching + dbg work (#2802)
* npc_kn almost matching + dbg work * more npc_kn dbg work * fix npc_kn select action functions * Z2AudioMgr dbg change for taka
This commit is contained in:
parent
e7a610c5e2
commit
d21e22f9ed
|
|
@ -34,6 +34,9 @@ public:
|
|||
static Z2AudioMgr* getInterface() { return mAudioMgrPtr; }
|
||||
static Z2AudioMgr* mAudioMgrPtr;
|
||||
|
||||
#if DEBUG
|
||||
u8 padding[0xC];
|
||||
#endif
|
||||
/* 0x0514 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*);
|
||||
/* 0x0518 */ bool mResettingFlag;
|
||||
/* 0x0519 */ bool field_0x519;
|
||||
|
|
|
|||
|
|
@ -109,6 +109,9 @@ private:
|
|||
/* 0x3CA */ u8 field_0x3ca;
|
||||
/* 0x3CB */ u8 field_0x3cb;
|
||||
/* 0x3CC */ u8 mCrowdSize;
|
||||
#if DEBUG
|
||||
u8 semgr_pad[0x14];
|
||||
#endif
|
||||
}; // Size = 0x3D0
|
||||
|
||||
inline Z2SeMgr* Z2GetSeMgr() {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,46 @@
|
|||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpc_Kn_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ s16 alpha;
|
||||
/* 0x8E */ s16 attack_wait_time;
|
||||
/* 0x90 */ s16 followup_wait_time; // ?
|
||||
/* 0x94 */ f32 small_slide_distance;
|
||||
/* 0x98 */ f32 big_slide_distance;
|
||||
/* 0x9C */ f32 warp_distance;
|
||||
/* 0xA0 */ f32 attack_disappear_speed_h; // ?
|
||||
/* 0xA4 */ f32 attack_disappear_speed_v; // ?
|
||||
/* 0xA8 */ s16 rotation_num;
|
||||
/* 0xAA */ s16 rotation_speed;
|
||||
/* 0xAC */ s16 attack_start_min_time;
|
||||
/* 0xAE */ s16 attack_start_time_range;
|
||||
/* 0xB0 */ f32 move_speed;
|
||||
};
|
||||
|
||||
class daNpc_Kn_Param_c {
|
||||
public:
|
||||
/* 80A3C124 */ virtual ~daNpc_Kn_Param_c() {}
|
||||
|
||||
static const daNpc_Kn_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpc_Kn_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Kn_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Kn_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_KN_HIO_CLASS daNpc_Kn_HIO_c
|
||||
#else
|
||||
#define NPC_KN_HIO_CLASS daNpc_Kn_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Kn_c
|
||||
|
|
@ -36,9 +76,6 @@ public:
|
|||
|
||||
class daNpc_Kn_prtclMngr_c {
|
||||
public:
|
||||
/* 80A2AF98 */ ~daNpc_Kn_prtclMngr_c() {};
|
||||
/* 80A3C1C4 */ daNpc_Kn_prtclMngr_c() {};
|
||||
|
||||
/* 0x00 */ bool mpModel;
|
||||
/* 0x04 */ cXyz mPos;
|
||||
/* 0x10 */ csXyz mAngle;
|
||||
|
|
@ -373,10 +410,10 @@ public:
|
|||
/* 80A2D060 */ virtual bool afterSetMotionAnm(int, int, f32, int);
|
||||
|
||||
static const dCcD_SrcGObjInf mCcDObjData;
|
||||
static dCcD_SrcCyl mCcDCyl;
|
||||
static dCcD_SrcSph mCcDSph;
|
||||
static char* mCutNameList[21];
|
||||
static cutFunc mCutList[21];
|
||||
static dCcD_SrcCyl mCcDCyl;
|
||||
static dCcD_SrcSph mCcDSph;
|
||||
static s16 mSrchName;
|
||||
static fopAc_ac_c* mFindActorPtrs[50];
|
||||
static u8 mFindCount[4];
|
||||
|
|
@ -385,7 +422,7 @@ private:
|
|||
/* 0x0E44 */ J3DModel* mpPodModel;
|
||||
/* 0x0E48 */ mDoExt_invisibleModel mInvisModel;
|
||||
/* 0x0E50 */ dKy_tevstr_c mTevStr;
|
||||
/* 0x11D8 */ u8 field_0x11D8[0x11DC - 0x11D8];
|
||||
/* 0x11D8 */ NPC_KN_HIO_CLASS* mpHIO;
|
||||
/* 0x11DC */ dCcD_Cyl mCylCc;
|
||||
/* 0x1318 */ dCcD_Sph mSphCc[2];
|
||||
/* 0x1588 */ mDoExt_bckAnm mPodBck;
|
||||
|
|
@ -423,28 +460,4 @@ private:
|
|||
|
||||
STATIC_ASSERT(sizeof(daNpc_Kn_c) == 0x1758);
|
||||
|
||||
struct daNpc_Kn_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ s16 alpha;
|
||||
/* 0x8E */ s16 attack_wait_time;
|
||||
/* 0x90 */ s16 followup_wait_time; // ?
|
||||
/* 0x94 */ f32 small_slide_distance;
|
||||
/* 0x98 */ f32 big_slide_distance;
|
||||
/* 0x9C */ f32 warp_distance;
|
||||
/* 0xA0 */ f32 attack_disappear_speed_h; // ?
|
||||
/* 0xA4 */ f32 attack_disappear_speed_v; // ?
|
||||
/* 0xA8 */ s16 rotation_num;
|
||||
/* 0xAA */ s16 rotation_speed;
|
||||
/* 0xAC */ s16 attack_start_min_time;
|
||||
/* 0xAE */ s16 attack_start_time_range;
|
||||
/* 0xB0 */ f32 move_speed;
|
||||
};
|
||||
|
||||
class daNpc_Kn_Param_c {
|
||||
public:
|
||||
/* 80A3C124 */ virtual ~daNpc_Kn_Param_c() {}
|
||||
|
||||
static const daNpc_Kn_HIOParam m;
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_KN_H */
|
||||
|
|
|
|||
|
|
@ -927,7 +927,7 @@ public:
|
|||
bool checkWolfAttackReverse() const { return checkResetFlg1(RFLG1_WOLF_ATTACK_REVERSE); }
|
||||
bool checkFreezeDamage() const { return checkNoResetFlg1(FLG1_ICE_FREEZE); }
|
||||
bool checkWolfTagLockJumpReady() const { return checkResetFlg0(RFLG0_UNK_20000); }
|
||||
bool checkDamageImpact() const { return checkResetFlg1(RFLG1_DAMAGE_IMPACT); }
|
||||
BOOL checkDamageImpact() const { return checkResetFlg1(RFLG1_DAMAGE_IMPACT); }
|
||||
bool getGrabUpEnd() const { return checkResetFlg0(RFLG0_GRAB_UP_END); }
|
||||
bool getGrabPutStart() const { return checkResetFlg0(RFLG0_GRAB_PUT_START); }
|
||||
bool checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); }
|
||||
|
|
|
|||
|
|
@ -110,6 +110,8 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch
|
|||
seMgr->setSeqDataMgr(sectionHeap->getSeSeqDataMgr());
|
||||
seqMgr->setSeqDataMgr(sectionHeap->getSeqSeqDataMgr());
|
||||
if (sectionHeap->getStreamDataMgr()) {
|
||||
// The following is to force stack reg to be r31 in dbg:
|
||||
int unused;
|
||||
streamMgr->setStreamDataMgr(sectionHeap->getStreamDataMgr());
|
||||
} else {
|
||||
streamMgr->setStreamDataMgr(&mSoundInfo);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -6,6 +6,7 @@
|
|||
* tgHitCallBack__10daNpc_Kn_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
|
||||
void daNpc_Kn_c::tgHitCallBack(fopAc_ac_c* i_tgActor, dCcD_GObjInf* i_tgObjInf,
|
||||
fopAc_ac_c* i_atActor, dCcD_GObjInf* i_atObjInf) {
|
||||
daNpc_Kn_c* kn_actor = (daNpc_Kn_c*)i_tgActor;
|
||||
u8 cut_type = 0;
|
||||
if (i_atActor != NULL) {
|
||||
if (fopAcM_GetProfName(i_atActor) == PROC_ALINK) {
|
||||
|
|
@ -15,7 +16,7 @@ void daNpc_Kn_c::tgHitCallBack(fopAc_ac_c* i_tgActor, dCcD_GObjInf* i_tgObjInf,
|
|||
}
|
||||
}
|
||||
|
||||
((daNpc_Kn_c*)i_tgActor)->setCutType(cut_type);
|
||||
kn_actor->setCutType(cut_type);
|
||||
}
|
||||
|
||||
/* 80A38550-80A3858C 00DC30 003C+00 1/1 0/0 0/0 .text getTrnsfrmAnmP__10daNpc_Kn_cFPCci
|
||||
|
|
@ -45,7 +46,9 @@ J3DAnmTextureSRTKey* daNpc_Kn_c::getTexSRTKeyAnmP(char const* i_arcName, int i_r
|
|||
* setBckAnm__10daNpc_Kn_cFP15J3DAnmTransformfiiib */
|
||||
BOOL daNpc_Kn_c::setBckAnm(J3DAnmTransform* i_bck, f32 i_speed, int i_mode, int i_startF,
|
||||
int i_endF, bool i_modify) {
|
||||
return mBckAnm.init(i_bck, TRUE, i_mode, i_speed, i_startF, i_endF, i_modify);
|
||||
s16 start_f = i_startF;
|
||||
s16 end_f = i_endF;
|
||||
return mBckAnm.init(i_bck, TRUE, i_mode, i_speed, start_f, end_f, i_modify);
|
||||
}
|
||||
|
||||
/* 80A38684-80A3877C 00DD64 00F8+00 1/1 0/0 0/0 .text
|
||||
|
|
@ -114,9 +117,11 @@ void daNpc_Kn_c::deleteRes(const s8* i_ptrn_list, const char** i_arcname_list) {
|
|||
|
||||
/* 80A38930-80A38BB8 00E010 0288+00 1/1 0/0 0/0 .text execute__10daNpc_Kn_cFv */
|
||||
int daNpc_Kn_c::execute() {
|
||||
BOOL evt_proc = FALSE;
|
||||
setParam();
|
||||
|
||||
if (!evtProc()) {
|
||||
evt_proc = evtProc();
|
||||
if (evt_proc == FALSE) {
|
||||
action();
|
||||
}
|
||||
|
||||
|
|
@ -271,7 +276,7 @@ void daNpc_Kn_c::setEnvTevColor() {
|
|||
|
||||
/* 80A39008-80A3904C 00E6E8 0044+00 2/2 0/0 0/0 .text setRoomNo__10daNpc_Kn_cFv */
|
||||
void daNpc_Kn_c::setRoomNo() {
|
||||
s32 room_id = dComIfG_Bgsp().GetRoomId(mGndChk);
|
||||
s8 room_id = dComIfG_Bgsp().GetRoomId(mGndChk);
|
||||
fopAcM_SetRoomNo(this, room_id);
|
||||
mCcStts.SetRoomId(room_id);
|
||||
}
|
||||
|
|
@ -425,17 +430,20 @@ void daNpc_Kn_c::playAllAnm() {
|
|||
/* 80A3949C-80A39558 00EB7C 00BC+00 1/0 0/0 0/0 .text ctrlBtk__10daNpc_Kn_cFv */
|
||||
int daNpc_Kn_c::ctrlBtk() {
|
||||
if (mpMatAnm != NULL) {
|
||||
if (field_0xe30 != 0 && mBtkAnm.getBtkAnm()) {
|
||||
mpMatAnm->setNowOffsetX(cM_ssin(mJntAnm.getEyeAngleY()) * 0.2f);
|
||||
mpMatAnm->setNowOffsetY(cM_ssin(mJntAnm.getEyeAngleX()) * 0.2f);
|
||||
if (field_0xe30 != 0) {
|
||||
J3DAnmTextureSRTKey* btk_anm = mBtkAnm.getBtkAnm();
|
||||
if (btk_anm) {
|
||||
mpMatAnm->setNowOffsetX(cM_ssin(mJntAnm.getEyeAngleY()) * 0.2f);
|
||||
mpMatAnm->setNowOffsetY(cM_ssin(mJntAnm.getEyeAngleX()) * 0.2f);
|
||||
|
||||
if (field_0xe31 != 0) {
|
||||
mpMatAnm->setMorfFrm(field_0xe31);
|
||||
field_0xe31 = 0;
|
||||
if (field_0xe31 != 0) {
|
||||
mpMatAnm->setMorfFrm(field_0xe31);
|
||||
field_0xe31 = 0;
|
||||
}
|
||||
|
||||
mpMatAnm->onEyeMoveFlag();
|
||||
return 1;
|
||||
}
|
||||
|
||||
mpMatAnm->onEyeMoveFlag();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (field_0xe31 != 0) {
|
||||
|
|
@ -564,7 +572,8 @@ int daNpc_Kn_c::ctrlMsgAnm(int* o_faceAnmAttr_p, int* o_anmAttr_p, fopAc_ac_c* i
|
|||
/* 80A3989C-80A39BBC 00EF7C 0320+00 1/0 0/0 0/0 .text ctrlJoint__10daNpc_Kn_cFP8J3DJointP8J3DModel
|
||||
*/
|
||||
int daNpc_Kn_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
||||
int joint_no = i_joint->getJntNo();
|
||||
J3DJoint* my_joint = i_joint;
|
||||
int joint_no = my_joint->getJntNo();
|
||||
cXyz pos;
|
||||
csXyz angle;
|
||||
mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
|
||||
|
|
@ -626,11 +635,17 @@ int daNpc_Kn_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
|||
}
|
||||
|
||||
/* 80A39BBC-80A39DBC 00F29C 0200+00 1/0 0/0 0/0 .text evtProc__10daNpc_Kn_cFv */
|
||||
// NONMATCHING - gameinfo load issues
|
||||
int daNpc_Kn_c::evtProc() {
|
||||
BOOL ret = FALSE;
|
||||
|
||||
if (dComIfGp_event_runCheck() != 0) {
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
// TODO: gameInfo fake match to force reuse of pointer
|
||||
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
|
||||
if (play->getEvent().runCheck())
|
||||
#else
|
||||
if (dComIfGp_event_runCheck())
|
||||
#endif
|
||||
{
|
||||
if (eventInfo.checkCommandTalk()) {
|
||||
if (!checkChangeEvt()) {
|
||||
evtTalk();
|
||||
|
|
@ -638,7 +653,11 @@ int daNpc_Kn_c::evtProc() {
|
|||
ret = TRUE;
|
||||
} else if (eventInfo.checkCommandDemoAccrpt() && dComIfGp_getEventManager().endCheck(mEvtId)) {
|
||||
if (evtEndProc()) {
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
play->getEvent().reset();
|
||||
#else
|
||||
dComIfGp_event_reset();
|
||||
#endif
|
||||
mEvtId = -1;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -763,7 +782,8 @@ void daNpc_Kn_c::setFootPrtcl(cXyz* param_0, f32 param_1) {
|
|||
|
||||
/* 80A3A254-80A3A25C 00F934 0008+00 1/0 0/0 0/0 .text checkCullDraw__10daNpc_Kn_cFv */
|
||||
bool daNpc_Kn_c::checkCullDraw() {
|
||||
return false;
|
||||
bool ret = false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80A3A25C-80A3A2A8 00F93C 004C+00 1/0 0/0 0/0 .text twilight__10daNpc_Kn_cFv */
|
||||
|
|
@ -788,8 +808,7 @@ void daNpc_Kn_c::evtOrder() {
|
|||
fopAcM_orderOtherEventId(this, mEvtId, 0xff, 0xffff, 6, 1);
|
||||
|
||||
} else {
|
||||
u32 flag_check = attention_info.flags;
|
||||
if (flag_check & fopAc_AttnFlag_SPEAK_e || flag_check & fopAc_AttnFlag_TALK_e) {
|
||||
if (attention_info.flags & fopAc_AttnFlag_SPEAK_e || attention_info.flags & fopAc_AttnFlag_TALK_e) {
|
||||
eventInfo.onCondition(dEvtCnd_CANTALK_e);
|
||||
|
||||
if (chkXYItems()) {
|
||||
|
|
@ -939,6 +958,7 @@ void daNpc_Kn_c::setPos(cXyz i_pos) {
|
|||
i_pos.y += 500.0f;
|
||||
mGndChk.SetPos(&i_pos);
|
||||
i_pos.y = dComIfG_Bgsp().GroundCross(&mGndChk);
|
||||
JUT_ASSERT(1841, -(1000000000.0f) != i_pos.y);
|
||||
|
||||
current.pos = i_pos;
|
||||
old.pos = current.pos;
|
||||
|
|
@ -977,9 +997,9 @@ BOOL daNpc_Kn_c::chkActorInSight(fopAc_ac_c* actor, f32 i_fovY, s16 i_angleY) {
|
|||
BOOL daNpc_Kn_c::chkPointInArea(cXyz i_pos, cXyz i_center, f32 i_boundXZ, f32 i_boundY1, f32 i_boundY2,
|
||||
s16 i_angle) {
|
||||
cXyz bounds, center;
|
||||
f32 min_y = i_boundY2;
|
||||
f32 max_y = i_boundY1;
|
||||
if (i_boundY1 < i_boundY2) {
|
||||
f32 min_y = i_boundY2;
|
||||
if (max_y < min_y) {
|
||||
min_y = i_boundY1;
|
||||
max_y = i_boundY2;
|
||||
}
|
||||
|
|
@ -1000,7 +1020,8 @@ BOOL daNpc_Kn_c::chkPointInArea(cXyz i_pos, cXyz i_center, cXyz i_bounds, s16 i_
|
|||
int daNpc_Kn_c::chkFindPlayer(BOOL i_release, s16 i_angleY) {
|
||||
cXyz attn_pos = getAttnPos(daPy_getPlayerActorClass());
|
||||
|
||||
int dist_index = i_release == FALSE ? attention_info.distances[3] : attention_info.distances[1];
|
||||
int dist_index = i_release == FALSE ? attention_info.distances[fopAc_attn_SPEAK_e]
|
||||
: attention_info.distances[fopAc_attn_TALK_e];
|
||||
f32 dist_max = i_release == FALSE ? dComIfGp_getAttention()->getDistTable(dist_index).mDistMax :
|
||||
dComIfGp_getAttention()->getDistTable(dist_index).mDistMaxRelease;
|
||||
f32 lower_y = -1.0f * dComIfGp_getAttention()->getDistTable(dist_index).mLowerY;
|
||||
|
|
@ -1022,8 +1043,10 @@ int daNpc_Kn_c::chkFindPlayer(BOOL i_release, s16 i_angleY) {
|
|||
fov = 135.0f;
|
||||
}
|
||||
|
||||
int pnt_chk = chkPointInArea(attn_pos, attention_info.position, dist_max, lower_y, upper_y, 0);
|
||||
if (pnt_chk && chkActorInSight(daPy_getPlayerActorClass(), fov, i_angleY)) {
|
||||
// writing like the following may be a fakematch, but it fixes dbg asm:
|
||||
int pnt_chk[1];
|
||||
pnt_chk[0] = chkPointInArea(attn_pos, attention_info.position, dist_max, lower_y, upper_y, 0);
|
||||
if (pnt_chk[0] && chkActorInSight(daPy_getPlayerActorClass(), fov, i_angleY)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -1050,8 +1073,7 @@ cXyz daNpc_Kn_c::getAttnPos(fopAc_ac_c* i_actor) {
|
|||
cXyz attn_pos(i_actor->attention_info.position);
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_ALINK) {
|
||||
f32 offset = static_cast<daPy_py_c*>(i_actor)->getAttentionOffsetY();
|
||||
attn_pos.y -= offset;
|
||||
attn_pos.y -= static_cast<daPy_py_c*>(i_actor)->getAttentionOffsetY();
|
||||
}
|
||||
|
||||
return attn_pos;
|
||||
|
|
@ -1182,6 +1204,7 @@ BOOL daNpc_Kn_c::talkProc(int* param_0, int param_1, fopAc_ac_c** i_partnerList_
|
|||
}
|
||||
|
||||
// FIXME: dummy functions to get rodata to align.
|
||||
#if !DEBUG
|
||||
static f64 dummy_lits_00(int sel) {
|
||||
switch (sel) {
|
||||
case 0:
|
||||
|
|
@ -1192,6 +1215,7 @@ static f64 dummy_lits_00(int sel) {
|
|||
return 0.0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static f32 dummy_lits_01(int sel) {
|
||||
switch (sel) {
|
||||
|
|
@ -1206,22 +1230,16 @@ static f32 dummy_lits_01(int sel) {
|
|||
|
||||
/* 80A3B5EC-80A3B708 010CCC 011C+00 1/1 0/0 0/0 .text setHitodamaPrtcl__10daNpc_Kn_cFv */
|
||||
void daNpc_Kn_c::setHitodamaPrtcl() {
|
||||
JPABaseEmitter* emitter = NULL;
|
||||
cXyz pos(eyePos);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
static const u16 id[2] = {0x8497,0x8498};
|
||||
mHitodamaPrtclKey[i] = dComIfGp_particle_set(mHitodamaPrtclKey[i], id[i], &pos, &mCurAngle, 0);
|
||||
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mHitodamaPrtclKey[i]);
|
||||
emitter = dComIfGp_particle_getEmitter(mHitodamaPrtclKey[i]);
|
||||
if (emitter != NULL) {
|
||||
u8 alpha;
|
||||
|
||||
if (dComIfGs_wolfeye_effect_check() == FALSE) {
|
||||
alpha = 0xFF;
|
||||
} else {
|
||||
alpha = 0;
|
||||
}
|
||||
|
||||
u8 alpha = (dComIfGs_wolfeye_effect_check() == FALSE) ? 0xFF : 0;
|
||||
emitter->setGlobalTranslation(pos.x, pos.y, pos.z);
|
||||
emitter->setGlobalAlpha(alpha);
|
||||
}
|
||||
|
|
@ -1234,3 +1252,10 @@ void daNpc_Kn_c::decTmr() {
|
|||
mTimer--;
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
void dummy_lit_125958() {
|
||||
OS_REPORT("name:%s\n");
|
||||
OS_REPORT("JNT_%s_e,\t// (%2d)%s\n");
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
/* 80A3C998-80A3CB14 012078 017C+00 1/1 0/0 0/0 .text setParamTeach01__10daNpc_Kn_cFv */
|
||||
u32 daNpc_Kn_c::setParamTeach01() {
|
||||
s16 talk_distance = daNpc_Kn_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Kn_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Kn_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Kn_Param_c::m.common.attention_angle;
|
||||
s16 talk_distance = mpHIO->m.common.talk_distance;
|
||||
s16 talk_angle = mpHIO->m.common.talk_angle;
|
||||
s16 attention_distance = mpHIO->m.common.attention_distance;
|
||||
s16 attention_angle = mpHIO->m.common.attention_angle;
|
||||
|
||||
switch (mActionMode) {
|
||||
case 0:
|
||||
|
|
@ -23,8 +23,8 @@ u32 daNpc_Kn_c::setParamTeach01() {
|
|||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(daNpc_Kn_Param_c::m.common.width);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
return fopAc_AttnFlag_BATTLE_e;
|
||||
case 3:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
|
|
@ -32,7 +32,7 @@ u32 daNpc_Kn_c::setParamTeach01() {
|
|||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(135.0f);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
return fopAc_AttnFlag_BATTLE_e;
|
||||
}
|
||||
|
||||
|
|
@ -150,10 +150,10 @@ int daNpc_Kn_c::teach01_swordAttackWait(void* param_0) {
|
|||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
field_0xdec = mpHIO->m.attack_wait_time;
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
field_0x15d0 = cLib_getRndValue(daNpc_Kn_Param_c::m.attack_start_min_time, daNpc_Kn_Param_c::m.attack_start_time_range);
|
||||
field_0x15d0 = cLib_getRndValue(mpHIO->m.attack_start_min_time, mpHIO->m.attack_start_time_range);
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
mMode = 2;
|
||||
|
|
@ -170,13 +170,15 @@ int daNpc_Kn_c::teach01_swordAttackWait(void* param_0) {
|
|||
{
|
||||
mActionMode = 3;
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
speedF = -daNpc_Kn_Param_c::m.attack_disappear_speed_h;
|
||||
speed.y = daNpc_Kn_Param_c::m.attack_disappear_speed_v;
|
||||
speedF = -mpHIO->m.attack_disappear_speed_h;
|
||||
speed.y = mpHIO->m.attack_disappear_speed_v;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x1f);
|
||||
break;
|
||||
} else {
|
||||
fopAc_ac_c* aTgHitActor_p = mCylCc.GetTgHitAc();
|
||||
JUT_ASSERT(303, NULL != aTgHitActor_p);
|
||||
s16 angle = cLib_targetAngleY(&aTgHitActor_p->current.pos, ¤t.pos);
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.small_slide_distance);
|
||||
cXyz pos(0.0f, 0.0f, mpHIO->m.small_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(angle);
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
|
|
@ -190,24 +192,40 @@ int daNpc_Kn_c::teach01_swordAttackWait(void* param_0) {
|
|||
mTargetPos = current.pos;
|
||||
|
||||
int is_lockon = FALSE;
|
||||
if (dComIfGp_getAttention()->LockonTruth()) {
|
||||
dAttention_c* attention_p = dComIfGp_getAttention();
|
||||
if (attention_p->LockonTruth()) {
|
||||
is_lockon = TRUE;
|
||||
}
|
||||
|
||||
checkCollisionSword() ? mEvtNo = 4 : mEvtNo = 1;
|
||||
if (checkCollisionSword()) {
|
||||
mEvtNo = 4;
|
||||
} else {
|
||||
mEvtNo = 1;
|
||||
}
|
||||
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 1, 0);
|
||||
|
||||
is_lockon ? mFlowNodeNo = 0x2da : mFlowNodeNo = 0x2db;
|
||||
if (is_lockon) {
|
||||
mFlowNodeNo = 0x2da;
|
||||
} else {
|
||||
mFlowNodeNo = 0x2db;
|
||||
}
|
||||
|
||||
break;
|
||||
} else {
|
||||
calcSwordAttackMove(1);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 3:
|
||||
default:
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80A3D32C-80A3D6D8 012A0C 03AC+00 1/0 0/0 0/0 .text teach01_swordFinishWait__10daNpc_Kn_cFPv */
|
||||
|
|
@ -219,7 +237,7 @@ int daNpc_Kn_c::teach01_swordFinishWait(void* param_0) {
|
|||
mMotionSeqMngr.setNo(0x12, -1.0f, 0, 0);
|
||||
mSound.startCreatureVoice(Z2SE_KN_V_DAMAGE_L, -1);
|
||||
mJntAnm.lookNone(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
field_0xdec = mpHIO->m.attack_wait_time;
|
||||
mMode = 2;
|
||||
case 2: {
|
||||
mTargetPos = current.pos;
|
||||
|
|
@ -242,9 +260,8 @@ int daNpc_Kn_c::teach01_swordFinishWait(void* param_0) {
|
|||
cXyz pos(10.0f, 0.0f, 0.0f);
|
||||
onDownFlg();
|
||||
|
||||
u8 backbone_joint = getBackboneJointNo();
|
||||
J3DModel* model = mpModelMorf[0]->getModel();
|
||||
mDoMtx_stack_c::copy(model->getAnmMtx(backbone_joint));
|
||||
int backbone_joint = getBackboneJointNo();
|
||||
mDoMtx_stack_c::copy(mpModelMorf[0]->getModel()->getAnmMtx(backbone_joint));
|
||||
mDoMtx_stack_c::multVec(&pos, &field_0x15c0);
|
||||
setDownPos(&field_0x15c0);
|
||||
} else if (checkCutDownHitFlg()) {
|
||||
|
|
@ -290,7 +307,7 @@ int daNpc_Kn_c::ctrlWarp() {
|
|||
case 0: {
|
||||
cXyz spEC(daPy_getPlayerActorClass()->current.pos);
|
||||
|
||||
bool sp8 = (daPy_getPlayerActorClass()->current.pos - current.pos).absXZ() > daNpc_Kn_Param_c::m.warp_distance;
|
||||
bool sp8 = (daPy_getPlayerActorClass()->current.pos - current.pos).absXZ() > mpHIO->m.warp_distance;
|
||||
if (sp8) {
|
||||
sp28 = 1;
|
||||
cXyz spE0(0.0f, 0.0f, 600.0f);
|
||||
|
|
@ -409,10 +426,12 @@ int daNpc_Kn_c::ctrlWarp() {
|
|||
int daNpc_Kn_c::ECut_firstEncount(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
|
||||
int reg_r24 = 0;
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
@ -425,7 +444,11 @@ int daNpc_Kn_c::ECut_firstEncount(int i_idx) {
|
|||
break;
|
||||
case 10:
|
||||
daPy_getPlayerActorClass()->changeDemoMoveAngle(fopAcM_searchPlayerAngleY(this) + 0x8000);
|
||||
#if VERSION == VERSION_SHIELD_DEBUG
|
||||
field_0xdec = 50;
|
||||
#else
|
||||
field_0xdec = 52;
|
||||
#endif
|
||||
break;
|
||||
case 20:
|
||||
break;
|
||||
|
|
@ -466,9 +489,10 @@ int daNpc_Kn_c::ECut_attackFailed(int i_idx) {
|
|||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
@ -602,9 +626,10 @@ int daNpc_Kn_c::ECut_firstSkillGet(int i_idx) {
|
|||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,12 +3,10 @@
|
|||
|
||||
/* 80A3EB84-80A3EE38 014264 02B4+00 1/1 0/0 0/0 .text setParamTeach02__10daNpc_Kn_cFv */
|
||||
u32 daNpc_Kn_c::setParamTeach02() {
|
||||
s16 talk_distance = daNpc_Kn_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Kn_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Kn_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Kn_Param_c::m.common.attention_angle;
|
||||
f32 radius = daNpc_Kn_Param_c::m.common.attention_offset;
|
||||
f32 height = daNpc_Kn_Param_c::m.common.height;
|
||||
s16 talk_distance = mpHIO->m.common.talk_distance;
|
||||
s16 talk_angle = mpHIO->m.common.talk_angle;
|
||||
s16 attention_distance = mpHIO->m.common.attention_distance;
|
||||
s16 attention_angle = mpHIO->m.common.attention_angle;
|
||||
|
||||
switch (mActionMode) {
|
||||
case 7:
|
||||
|
|
@ -27,9 +25,7 @@ u32 daNpc_Kn_c::setParamTeach02() {
|
|||
mDoMtx_stack_c::copy(mpModelMorf[0]->getModel()->getAnmMtx(getBackboneJointNo()));
|
||||
mDoMtx_stack_c::multVecZero(&pos);
|
||||
|
||||
f32 absxz = (daPy_getPlayerActorClass()->current.pos - pos).absXZ();
|
||||
|
||||
if (absxz < 255.0f) {
|
||||
if ((daPy_getPlayerActorClass()->current.pos - pos).absXZ() < 255.0f) {
|
||||
return fopAc_AttnFlag_UNK_0x200000 | fopAc_AttnFlag_BATTLE_e;
|
||||
} else {
|
||||
return fopAc_AttnFlag_BATTLE_e;
|
||||
|
|
@ -40,8 +36,8 @@ u32 daNpc_Kn_c::setParamTeach02() {
|
|||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(daNpc_Kn_Param_c::m.common.width);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -109,11 +105,11 @@ int daNpc_Kn_c::teach02_shieldBashWait(void* param_0) {
|
|||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
field_0xdec = mpHIO->m.attack_wait_time;
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
field_0x15d0 =
|
||||
cLib_getRndValue(daNpc_Kn_Param_c::m.attack_start_min_time, daNpc_Kn_Param_c::m.attack_start_time_range);
|
||||
cLib_getRndValue(mpHIO->m.attack_start_min_time, mpHIO->m.attack_start_time_range);
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
mMode = 2;
|
||||
|
|
@ -121,12 +117,10 @@ int daNpc_Kn_c::teach02_shieldBashWait(void* param_0) {
|
|||
mCcStts.Move();
|
||||
|
||||
if (mCylCc.ChkTgShieldHit()) {
|
||||
u8 cut_type = daPy_getPlayerActorClass()->getCutType();
|
||||
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
s16 angle = cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
|
||||
&attention_info.position);
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.small_slide_distance);
|
||||
cXyz pos(0.0f, 0.0f, mpHIO->m.small_slide_distance);
|
||||
|
||||
mDoMtx_stack_c::YrotS(angle);
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
|
|
@ -141,7 +135,8 @@ int daNpc_Kn_c::teach02_shieldBashWait(void* param_0) {
|
|||
|
||||
if (!cLib_calcTimer(&field_0xdec) || checkCollisionSword()) {
|
||||
BOOL is_lockon = FALSE;
|
||||
if (dComIfGp_getAttention()->LockonTruth()) {
|
||||
dAttention_c* attention_p = dComIfGp_getAttention();
|
||||
if (attention_p->LockonTruth()) {
|
||||
is_lockon = TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -159,6 +154,8 @@ int daNpc_Kn_c::teach02_shieldBashWait(void* param_0) {
|
|||
} else {
|
||||
mFlowNodeNo = 0x2bf;
|
||||
}
|
||||
|
||||
break;
|
||||
} else {
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
if (!mCylCc.GetTgHitObj()->ChkAtType(0x10)) {
|
||||
|
|
@ -188,25 +185,24 @@ int daNpc_Kn_c::teach02_finishWait(void* param_0) {
|
|||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(11, -1.0f, 1, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.followup_wait_time;
|
||||
field_0xdec = mpHIO->m.followup_wait_time;
|
||||
mMode = 2;
|
||||
case 2:
|
||||
calcSlip();
|
||||
mCcStts.Move();
|
||||
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
u8 cut_type = daPy_getPlayerActorClass()->getCutType();
|
||||
|
||||
if (cut_type != daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
if (mType == 1) {
|
||||
mEvtNo = 10;
|
||||
} else if (mType == 2) {
|
||||
mEvtNo = 12;
|
||||
}
|
||||
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.big_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
|
||||
&attention_info.position));
|
||||
cXyz pos(0.0f, 0.0f, mpHIO->m.big_slide_distance);
|
||||
s16 tgt_ang = cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
|
||||
&attention_info.position);
|
||||
mDoMtx_stack_c::YrotS(tgt_ang);
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
field_0x15bc = 1;
|
||||
|
|
@ -287,7 +283,7 @@ int daNpc_Kn_c::teach02_shieldReflectWait(void* param_0) {
|
|||
mEvtNo = 0xB;
|
||||
|
||||
s16 var_r27 = cLib_targetAngleY(&aTgHitActor_p->current.pos, ¤t.pos);
|
||||
cXyz sp14(0.0f, 0.0f, daNpc_Kn_Param_c::m.big_slide_distance);
|
||||
cXyz sp14(0.0f, 0.0f, mpHIO->m.big_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(var_r27);
|
||||
mDoMtx_stack_c::multVec(&sp14, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
|
|
@ -313,9 +309,10 @@ int daNpc_Kn_c::ECut_secondSkillExplain(int i_idx) {
|
|||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
@ -451,9 +448,10 @@ int daNpc_Kn_c::ECut_reflectExplain(int i_idx) {
|
|||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
@ -542,9 +540,10 @@ int daNpc_Kn_c::ECut_secondSkillGet(int i_idx) {
|
|||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int* prm_p = NULL;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue