player misc cleanup and various match fixes

This commit is contained in:
LagoLunatic
2025-04-16 20:26:40 -04:00
parent 3a9eebd7ea
commit ad22472b1a
16 changed files with 748 additions and 740 deletions
@@ -837,7 +837,7 @@ public:
f32 getFrame() const { return mFrame; }
void setFrame(f32 frame) { mFrame = frame; }
public:
private:
/* 0x04 */ u8 mAttribute;
/* 0x05 */ u8 mState;
/* 0x06 */ s16 mStart;
+1 -1
View File
@@ -121,7 +121,7 @@ public:
J3DMtxCalcMayaAnm(J3DAnmTransform* pAnmTransform)
: J3DMtxCalcMaya(), J3DMtxCalcAnm(pAnmTransform) {}
virtual ~J3DMtxCalcMayaAnm() {}
virtual void calc(u16 v) { J3DMtxCalcAnm::calc(v); }
virtual void calc(u16 jnt_no) { J3DMtxCalcAnm::calc(jnt_no); }
};
enum J3DJointMtxType {
+3 -3
View File
@@ -997,7 +997,7 @@ public:
void makeItemType();
void setScopeModel();
void setPhotoBoxModel();
void changeDragonShield(int);
BOOL changeDragonShield(int);
BOOL checkNewItemChange(u8);
BOOL checkItemChangeFromButton();
void checkItemAction();
@@ -1480,7 +1480,7 @@ public:
void setShipRidePos(int);
void setShipAttentionAnmSpeed(f32);
void setShipAttnetionBodyAngle();
int changeShipEndProc();
BOOL changeShipEndProc();
void initShipBaseAnime();
void initShipCraneAnime();
BOOL procShipReady_init();
@@ -1563,7 +1563,7 @@ public:
void setBowReadyAnime();
void setBowReloadAnime();
BOOL checkNextActionBowReady();
BOOL checkNextActionBowFly();
void checkNextActionBowFly();
BOOL checkNextBowMode();
void setBowModel();
BOOL procBowSubject_init();
+5 -4
View File
@@ -34,7 +34,7 @@ public:
daSFLG_UNK4000_e = 0x00004000,
daSFLG_UNK8000_e = 0x00008000,
daSFLG_UNK10000_e = 0x00010000,
daSFLG_UNK20000_e = 0x00020000,
daSFLG_SHOOT_CANNON_e = 0x00020000,
daSFLG_UNK40000_e = 0x00040000,
daSFLG_UNK80000_e = 0x00080000,
daSFLG_UNK100000_e = 0x00100000,
@@ -62,12 +62,15 @@ public:
bool checkStateFlg(daSHIP_SFLG flag) const { return mStateFlag & flag; }
bool checkHeadNoDraw() const { return checkStateFlg(daSFLG_HEAD_NO_DRAW_e); }
bool checkShootCannon() const { return checkStateFlg(daSFLG_SHOOT_CANNON_e); }
int getTactWarpPosNum() const { return mTactWarpPosNum; }
void setTactWarpPosNum(int num) { mTactWarpPosNum = num; }
u32 getTactWarpID() { return mTactWarpID; }
void setTactWarpID(u32 warpID) { mTactWarpID = warpID; }
Mtx& getBodyMtx() { return m0298->getModel()->getBaseTRMtx(); }
void checkCraneMode() const {}
void checkCraneUpEnd() const {}
BOOL checkForceMove() const { return getTornadoActor() || getWhirlActor(); }
@@ -75,11 +78,9 @@ public:
void checkRopeCntMax() const {}
void checkRopeDownStart() const {}
void checkSalvageDemo() const {}
void checkShootCannon() const {}
void checkTornadoFlg() const {}
void checkTornadoUp() const {}
void getBeltSpeed() const {}
void getBodyMtx() {}
s16 getCannonAngleX() const { return shape_angle.x + m0396 - 0x4000; }
s16 getCannonAngleY() const { return shape_angle.y + m0394; }
void getCraneAngle() const {}
+20 -20
View File
@@ -12,16 +12,16 @@
#include "dolphin/types.h"
/* 802F4DC0-802F4EB0 .text calc__13J3DMtxCalcAnmFUs */
void J3DMtxCalcAnm::calc(u16 param_0) {
void J3DMtxCalcAnm::calc(u16 jnt_no) {
j3dSys.setCurrentMtxCalc(this);
J3DTransformInfo info;
J3DAnmTransform* transform = mOne[0];
if (transform) {
transform->getTransform(param_0, &info);
transform->getTransform(jnt_no, &info);
} else {
info = j3dSys.getModel()->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
info = j3dSys.getModel()->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo();
}
calcTransform(param_0, info);
calcTransform(jnt_no, info);
}
/* 802F4EB0-802F4EF8 .text __ct__15J3DMtxCalcBasicFv */
@@ -52,16 +52,16 @@ void J3DMtxCalcBasic::recursiveCalc(J3DNode* node) {
}
/* 802F5090-802F525C .text calcTransform__15J3DMtxCalcBasicFUsRC16J3DTransformInfo */
void J3DMtxCalcBasic::calcTransform(u16 param_0, const J3DTransformInfo& info) {
void J3DMtxCalcBasic::calcTransform(u16 jnt_no, const J3DTransformInfo& info) {
J3DSys::mCurrentS.x *= info.mScale.x;
J3DSys::mCurrentS.y *= info.mScale.y;
J3DSys::mCurrentS.z *= info.mScale.z;
s32 r29;
if (checkScaleOne(J3DSys::mCurrentS)) {
j3dSys.getModel()->setScaleFlag(param_0, 1);
j3dSys.getModel()->setScaleFlag(jnt_no, 1);
r29 = 1;
} else {
j3dSys.getModel()->setScaleFlag(param_0, 0);
j3dSys.getModel()->setScaleFlag(jnt_no, 0);
r29 = 0;
}
Mtx mtx;
@@ -79,17 +79,17 @@ void J3DMtxCalcBasic::calcTransform(u16 param_0, const J3DTransformInfo& info) {
}
MTXConcat(J3DSys::mCurrentMtx, mtx, J3DSys::mCurrentMtx);
J3DModel* model = j3dSys.getModel();
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(param_0));
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(jnt_no));
}
/* 802F525C-802F52BC .text calc__15J3DMtxCalcBasicFUs */
void J3DMtxCalcBasic::calc(u16 param_0) {
void J3DMtxCalcBasic::calc(u16 jnt_no) {
j3dSys.setCurrentMtxCalc(this);
calcTransform(param_0, j3dSys.getModel()->getModelData()->getJointNodePointer(param_0)->getTransformInfo());
calcTransform(jnt_no, j3dSys.getModel()->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo());
}
/* 802F52BC-802F5508 .text calcTransform__19J3DMtxCalcSoftimageFUsRC16J3DTransformInfo */
void J3DMtxCalcSoftimage::calcTransform(u16 param_0, const J3DTransformInfo& info) {
void J3DMtxCalcSoftimage::calcTransform(u16 jnt_no, const J3DTransformInfo& info) {
/* Nonmatching */
Mtx mtx;
J3DGetTranslateRotateMtx(
@@ -107,10 +107,10 @@ void J3DMtxCalcSoftimage::calcTransform(u16 param_0, const J3DTransformInfo& inf
J3DSys::mCurrentS.z = J3DSys::mCurrentS.z * info.mScale.z;
s32 var2;
if (checkScaleOne(J3DSys::mCurrentS)) {
j3dSys.getModel()->setScaleFlag(param_0, 1);
j3dSys.getModel()->setScaleFlag(jnt_no, 1);
var2 = 1;
} else {
j3dSys.getModel()->setScaleFlag(param_0, 0);
j3dSys.getModel()->setScaleFlag(jnt_no, 0);
var2 = 0;
}
if (!var2) {
@@ -127,23 +127,23 @@ void J3DMtxCalcSoftimage::calcTransform(u16 param_0, const J3DTransformInfo& inf
mtx[2][2] = J3DSys::mCurrentMtx[2][2] * J3DSys::mCurrentS.z;
mtx[2][3] = J3DSys::mCurrentMtx[2][3];
J3DModel* model = j3dSys.getModel();
MTXCopy(mtx, model->getAnmMtx(param_0));
MTXCopy(mtx, model->getAnmMtx(jnt_no));
} else {
J3DModel* model = j3dSys.getModel();
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(param_0));
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(jnt_no));
}
}
/* 802F5508-802F5724 .text calcTransform__14J3DMtxCalcMayaFUsRC16J3DTransformInfo */
void J3DMtxCalcMaya::calcTransform(u16 param_1, const J3DTransformInfo& param_2) {
void J3DMtxCalcMaya::calcTransform(u16 jnt_no, const J3DTransformInfo& param_2) {
J3DModel* model = j3dSys.getModel();
u8 scaleCompensate = model->getModelData()->getJointNodePointer(param_1)->getScaleCompensate();
u8 scaleCompensate = model->getModelData()->getJointNodePointer(jnt_no)->getScaleCompensate();
s32 tmp;
if (param_2.mScale.x == 1.0f && param_2.mScale.y == 1.0f && param_2.mScale.z == 1.0f) {
model->setScaleFlag(param_1, 1);
model->setScaleFlag(jnt_no, 1);
tmp = true;
} else {
model->setScaleFlag(param_1, 0);
model->setScaleFlag(jnt_no, 0);
tmp = false;
}
Mtx mtx;
@@ -175,7 +175,7 @@ void J3DMtxCalcMaya::calcTransform(u16 param_1, const J3DTransformInfo& param_2)
}
MTXConcat(J3DSys::mCurrentMtx, mtx, J3DSys::mCurrentMtx);
model = j3dSys.getModel();
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(param_1));
MTXCopy(J3DSys::mCurrentMtx, model->getAnmMtx(jnt_no));
J3DSys::mParentS.x = param_2.mScale.x;
J3DSys::mParentS.y = param_2.mScale.y;
J3DSys::mParentS.z = param_2.mScale.z;
+32 -30
View File
@@ -56,13 +56,12 @@ BOOL daPy_lk_c::bowButton() const {
/* 8014A008-8014A02C .text checkBowReadyAnime__9daPy_lk_cCFv */
BOOL daPy_lk_c::checkBowReadyAnime() const {
return (checkUpperAnime(LKANM_BCK_ARROWRELORD)) ||
(checkUpperAnime(LKANM_BCK_BOWWAIT));
return checkUpperAnime(LKANM_BCK_ARROWRELORD) || checkUpperAnime(LKANM_BCK_BOWWAIT);
}
/* 8014A02C-8014A080 .text checkBowAnime__9daPy_lk_cCFv */
BOOL daPy_lk_c::checkBowAnime() const {
return (checkBowReadyAnime()) || (checkUpperAnime(LKANM_BCK_ARROWSHOOT));
return checkBowReadyAnime() || checkUpperAnime(LKANM_BCK_ARROWSHOOT);
}
/* 8014A080-8014A180 .text makeArrow__9daPy_lk_cFv */
@@ -74,7 +73,7 @@ void daPy_lk_c::makeArrow() {
void daPy_lk_c::deleteArrow() {
fopAc_ac_c* pfVar1 = mActorKeepEquip.getActor();
if ((pfVar1 != NULL) && (fopAcM_GetName(pfVar1) == PROC_ARROW)) {
if (pfVar1 != NULL && fopAcM_GetName(pfVar1) == PROC_ARROW) {
fopAcM_delete(pfVar1);
mActorKeepEquip.clearData();
}
@@ -142,11 +141,12 @@ BOOL daPy_lk_c::checkNextActionBowReady() {
}
m355C = 1;
} else if (daArrow_c::changeArrowMp()) {
if (((mEquipItem != dItem_BOW_e) && (dComIfGp_setRStatus(0x22), spActionTrigger())) &&
(arrow != NULL))
{
mActorKeepEquip.setData(arrow->changeArrowType());
setBowReloadAnime();
if (mEquipItem != dItem_BOW_e) {
dComIfGp_setRStatus(0x22);
if (spActionTrigger() && arrow != NULL) {
mActorKeepEquip.setData(arrow->changeArrowType());
setBowReloadAnime();
}
}
}
} else if (checkUpperAnime(LKANM_BCK_ARROWRELORD)) {
@@ -158,15 +158,21 @@ BOOL daPy_lk_c::checkNextActionBowReady() {
}
} else if (checkUpperAnime(LKANM_BCK_ARROWSHOOT)) {
if (mFrameCtrlUpper[UPPER_MOVE2_e].getRate() < 0.01f) {
if ((m355E == 0) && (bowButton()) && (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e || mEquipItem == getReadyItem()) && !checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT)) {
if (m355E == 0 && bowButton() &&
(mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e || mEquipItem == getReadyItem()) &&
!checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT))
{
setBowReloadAnime();
makeArrow();
if (mActorKeepEquip.getActor() == NULL) {
mDoAud_seStart(JA_SE_ITEM_TARGET_OUT);
}
} else if (daArrow_c::changeArrowMp()) {
if ((mEquipItem != dItem_BOW_e) && (dComIfGp_setRStatus(0x22), spActionTrigger())) {
daArrow_c::changeArrowTypeNotReady();
if (mEquipItem != dItem_BOW_e) {
dComIfGp_setRStatus(0x22);
if (spActionTrigger()) {
daArrow_c::changeArrowTypeNotReady();
}
}
}
}
@@ -175,33 +181,30 @@ BOOL daPy_lk_c::checkNextActionBowReady() {
}
}
cancelItemUpperReadyAnime();
return cancelItemUpperReadyAnime();
}
/* 8014A60C-8014A680 .text checkNextActionBowFly__9daPy_lk_cFv */
BOOL daPy_lk_c::checkNextActionBowFly() {
void daPy_lk_c::checkNextActionBowFly() {
if (checkBowAnime()) {
checkNextActionBowReady();
} else {
if ((itemTrigger()) && (mEquipItem == getReadyItem())) {
setBowReadyAnime();
m355E = 0;
}
} else if (itemTrigger() && mEquipItem == getReadyItem()) {
setBowReadyAnime();
m355E = 0;
}
}
/* 8014A680-8014A6F4 .text checkNextBowMode__9daPy_lk_cFv */
BOOL daPy_lk_c::checkNextBowMode() {
if (mpAttention->Lockon()) {
procBowMove_init();
return procBowMove_init();
} else {
procBowSubject_init();
return procBowSubject_init();
}
}
/* 8014A6F4-8014A834 .text setBowModel__9daPy_lk_cFv */
void daPy_lk_c::setBowModel() {
/* Nonmatching - regalloc */
J3DAnmTransform* bck = getItemAnimeResource(LKANM_BCK_ARROWRELORDA);
JKRHeap* oldHeap = setItemHeap();
J3DModelData* tmp_modelData = initModel(&mpEquipItemModel, LINK_BDL_BOW, 0x37221222);
@@ -211,9 +214,10 @@ void daPy_lk_c::setBowModel() {
}
mDoExt_setCurrentHeap(oldHeap);
m35EC = 0.0f;
J3DMaterial* mesh = mpEquipItemModel->getModelData()->getJointNodePointer(0x00)->getMesh()->getNext();
mesh->getNext()->getShape()->show();
mesh->getShape()->hide();
J3DMaterial* r3 = mpEquipItemModel->getModelData()->getJointNodePointer(0x00)->getMesh()->getNext();
J3DMaterial* r4 = r3->getNext();
r3->getShape()->show();
r4->getShape()->hide();
tmp_modelData->getJointNodePointer(6)->setCallBack(daPy_bowJointCB);
tmp_modelData->getJointNodePointer(11)->setCallBack(daPy_bowJointCB);
mpEquipItemModel->setUserArea(reinterpret_cast<u32>(this));
@@ -280,12 +284,10 @@ BOOL daPy_lk_c::procBowMove_init() {
BOOL daPy_lk_c::procBowMove() {
if (mpAttnActorLockOn != NULL) {
setSpeedAndAngleAtnActor();
} else if (!mpAttention->Lockon() && mActorKeepEquip.getActor() == NULL) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
} else {
if ((!mpAttention->Lockon()) && (mActorKeepEquip.getActor() == NULL)) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
} else {
setSpeedAndAngleAtn();
}
setSpeedAndAngleAtn();
}
if (!checkNextMode(0)) {
f32 fVar1 = -1.0f;
+1 -1
View File
@@ -328,7 +328,7 @@ BOOL daPy_lk_c::procCrawlAutoMove() {
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(fVar2);
mVelocity = fVar3;
} else {
if (std::fabsf(frameCtrl.mRate) < 0.01f) {
if (std::fabsf(frameCtrl.getRate()) < 0.01f) {
mVelocity = 0.0f;
m34D0--;
}
+2 -2
View File
@@ -501,7 +501,7 @@ BOOL daPy_lk_c::procGrabMiss() {
}
if (mProcVar0.m3570 == 0) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
if ((int)m34D0 > 0) {
if (m34D0 > 0) {
m34D0--;
} else {
setSingleMoveAnime(
@@ -784,7 +784,7 @@ BOOL daPy_lk_c::procGrabWait() {
}
setBlendMoveAnime(fVar2);
m_pbCalc[PART_UPPER_e]->setRatio(2, 1.0f);
m35A0 = 0.0049999999f * (short)(shape_angle.y - m34DE);
m35A0 = 0.005f * (short)(shape_angle.y - m34DE);
onNoResetFlg1(daPyFlg1_UNK800000);
} else if (checkNoResetFlg1(daPyFlg1_UNK800000)) {
if (checkGrabSpecialHeavyState()) {
+1 -1
View File
@@ -379,7 +379,7 @@ BOOL daPy_lk_c::procLadderMove() {
m34C2 = 0;
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else if (std::fabsf(mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) < 0.01f) {
if ((int)m34D0 > 0) {
if (m34D0 > 0) {
m34D0--;
setLadderFootSe();
} else {
+14 -14
View File
@@ -381,19 +381,19 @@ static BOOL daPy_auraCallback(J3DNode* node, int calcTiming) {
}
/* 80103494-80103A88 .text jointBeforeCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */
BOOL daPy_lk_c::jointBeforeCB(int, J3DTransformInfo*, Quaternion*) {
BOOL daPy_lk_c::jointBeforeCB(int jnt_no, J3DTransformInfo*, Quaternion*) {
/* Nonmatching */
static Mtx root_mtx;
static Quaternion norm_quat = {0.0f, 0.0f, 0.0f, 1.0f};
}
/* 80103A88-80103AAC .text daPy_jointBeforeCallback__FUlUsP16J3DTransformInfoP10Quaternion */
static BOOL daPy_jointBeforeCallback(u32 userArea, u16 param_1, J3DTransformInfo* param_2, Quaternion* param_3) {
return reinterpret_cast<daPy_lk_c*>(userArea)->jointBeforeCB(param_1, param_2, param_3);
static BOOL daPy_jointBeforeCallback(u32 userArea, u16 jnt_no, J3DTransformInfo* param_2, Quaternion* param_3) {
return reinterpret_cast<daPy_lk_c*>(userArea)->jointBeforeCB(jnt_no, param_2, param_3);
}
/* 80103AAC-80103C1C .text jointAfterCB__9daPy_lk_cFiP16J3DTransformInfoP10Quaternion */
BOOL daPy_lk_c::jointAfterCB(int param_1, J3DTransformInfo* param_2, Quaternion* param_3) {
BOOL daPy_lk_c::jointAfterCB(int jnt_no, J3DTransformInfo* param_2, Quaternion* param_3) {
if (m34C6 != 0) {
if ((m34C6 & 1) != 0) {
param_3->x = m3658.x;
@@ -408,25 +408,25 @@ BOOL daPy_lk_c::jointAfterCB(int param_1, J3DTransformInfo* param_2, Quaternion*
}
m34C6 = 0;
}
if (param_1 == 0x22) {
if (jnt_no == 0x22) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x22), mFootData[1].field_0x088[2]);
} else if (param_1 == 0x27) {
} else if (jnt_no == 0x27) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x27), mFootData[0].field_0x088[2]);
} else if (param_1 == 0x20) {
} else if (jnt_no == 0x20) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x20), mFootData[1].field_0x088[0]);
} else if (param_1 == 0x21) {
} else if (jnt_no == 0x21) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x21), mFootData[1].field_0x088[1]);
} else if (param_1 == 0x25) {
} else if (jnt_no == 0x25) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x25), mFootData[0].field_0x088[0]);
} else if (param_1 == 0x26) {
} else if (jnt_no == 0x26) {
mDoMtx_copy(mpCLModel->getAnmMtx(0x26), mFootData[0].field_0x088[1]);
}
return true;
}
/* 80103C1C-80103C40 .text daPy_jointAfterCallback__FUlUsP16J3DTransformInfoP10Quaternion */
static BOOL daPy_jointAfterCallback(u32 userArea, u16 param_1, J3DTransformInfo* param_2, Quaternion* param_3) {
return reinterpret_cast<daPy_lk_c*>(userArea)->jointAfterCB(param_1, param_2, param_3);
static BOOL daPy_jointAfterCallback(u32 userArea, u16 jnt_no, J3DTransformInfo* param_2, Quaternion* param_3) {
return reinterpret_cast<daPy_lk_c*>(userArea)->jointAfterCB(jnt_no, param_2, param_3);
}
/* 80103C40-80103EE4 .text jointCB0__9daPy_lk_cFi */
@@ -1989,7 +1989,7 @@ void daPy_lk_c::setPhotoBoxModel() {
}
/* 8010CC78-8010CD34 .text changeDragonShield__9daPy_lk_cFi */
void daPy_lk_c::changeDragonShield(int) {
BOOL daPy_lk_c::changeDragonShield(int) {
/* Nonmatching */
}
@@ -3790,7 +3790,7 @@ BOOL daPy_lk_c::procFrontRollCrash() {
}
if ((mAcch.ChkGroundHit()) && (checkModeFlg(ModeFlg_MIDAIR))) {
mVelocity = 0.0f;
mFrameCtrlUnder[UNDER_MOVE0_e].mRate = daPy_HIO_roll_c0::m.field_0x24;
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(daPy_HIO_roll_c0::m.field_0x24);
voiceStart(9);
offModeFlg(ModeFlg_MIDAIR);
onModeFlg(ModeFlg_00008000);
+207 -211
View File
@@ -10,9 +10,9 @@
* based on the original names of the functions it contains.
*/
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/actor/d_a_himo2.h"
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/actor/d_a_himo2.h"
#include "d/d_attention.h"
#include "d/d_procname.h"
#include "f_op/f_op_actor_mng.h"
@@ -20,8 +20,7 @@
/* 80142D08-80142D68 .text checkRopeAnime__9daPy_lk_cCFv */
BOOL daPy_lk_c::checkRopeAnime() const {
return ((checkRopeReadyAnime()) ||
(checkUpperAnime(LKANM_BCK_ROPETHROW)));
return (checkRopeReadyAnime()) || (checkUpperAnime(LKANM_BCK_ROPETHROW));
}
/* 80142D68-80142E0C .text freeRopeItem__9daPy_lk_cFv */
@@ -49,8 +48,7 @@ void daPy_lk_c::freeRopeItem() {
f32 daPy_lk_c::checkRopeRoofHit(s16 param_0) {
cXyz local_c;
local_c.set(current.pos.x - 15.0f * cM_ssin(param_0), current.pos.y,
current.pos.z - 15.0f * cM_scos(param_0));
local_c.set(current.pos.x - 15.0f * cM_ssin(param_0), current.pos.y, current.pos.z - 15.0f * cM_scos(param_0));
mRoofChk.SetPos(local_c);
dComIfG_Bgsp()->RoofChk(&mRoofChk);
}
@@ -59,7 +57,7 @@ f32 daPy_lk_c::checkRopeRoofHit(s16 param_0) {
int daPy_lk_c::changeRopeSwingProc() {
if (mCyl.ChkCoHit() != 0) {
fopAc_ac_c* pfVar2 = mCyl.GetCoHitAc();
if (((pfVar2 != NULL)) && (fopAcM_GetName(pfVar2) == PROC_HIMO3)) {
if ((pfVar2 != NULL) && (fopAcM_GetName(pfVar2) == PROC_HIMO3)) {
cXyz local_24 = (pfVar2->current.pos - current.pos);
if ((local_24.abs() - 95.0f >= 100.0f) && (pfVar2->current.pos.y > current.pos.y)) {
return procRopeSwing_init(pfVar2, 0x1800);
@@ -90,8 +88,7 @@ int daPy_lk_c::changeRopeEndProc(int param_0) {
/* 801430D4-80143138 .text checkSpecialRope__9daPy_lk_cFv */
BOOL daPy_lk_c::checkSpecialRope() {
if ((!strcmp(dComIfGp_getStartStageName(), "GanonK")) && ((mActorKeepEquip.getActor() == NULL)))
{
if ((!strcmp(dComIfGp_getStartStageName(), "GanonK")) && (mActorKeepEquip.getActor() == NULL)) {
return true;
} else {
return false;
@@ -134,103 +131,105 @@ BOOL daPy_lk_c::checkRopeSwingWall(cXyz*, cXyz*, s16*, f32*) {
/* 80143694-80143A44 .text setBlendRopeMoveAnime__9daPy_lk_cFi */
void daPy_lk_c::setBlendRopeMoveAnime(int param_0) {
/* Nonmatching - regalloc */
float fVar1;
u16* puVar3;
daPy_ANM dVar4;
float dVar5;
float dVar6;
float local_48;
daPy_ANM anm;
f32 dVar6;
f32 f30;
f32 f2;
f32 sp08;
dVar5 = std::fabsf(m35A4 * m35A8);
f30 = m35A4 * m35A8;
f2 = std::fabsf(f30);
if (checkModeFlg(ModeFlg_00000400)) {
local_48 = 0.0f;
dVar4 = ANM_ROPESWINGB;
sp08 = 0.0f;
anm = ANM_ROPESWINGB;
} else {
local_48 = m_pbCalc[PART_UNDER_e]->getRatio(1);
sp08 = m_pbCalc[PART_UNDER_e]->getRatio(1);
if (m34D0 != 0) {
if (m34D0 == -1) {
dVar4 = ANM_ROPESWINGF;
anm = ANM_ROPESWINGF;
} else {
dVar4 = ANM_ROPESWINGB;
anm = ANM_ROPESWINGB;
}
dVar6 = 1.0f;
cLib_chaseF(&local_48, dVar6, 0.05f);
if (((m34D0 == -1) && (M_PI / 2 < dVar5)) || ((m34D0 == 1 && (-M_PI / 2 < dVar5)))) {
cLib_chaseF(&sp08, dVar6, 0.05f);
if (((m34D0 == -1) && (M_PI / 2 < f30)) || (m34D0 == 1 && (-M_PI / 2 < f30))) {
m34D0 = 0;
}
} else {
if (((param_0 != 0) || (mStickDistance <= 0.05f)) || (spActionButton())) {
if (dVar5 <= M_PI / 2) {
dVar4 = ANM_ROPESWINGB;
} else {
dVar4 = ANM_ROPESWINGF;
}
dVar6 = ((0.6f * m34D4)) / daPy_HIO_rope_c0::m.field_0x0;
if (checkSpecialRope()) {
dVar6 *= 8.0f;
}
if (dVar6 > 0.6f) {
dVar6 = 0.6f;
}
} else if (((param_0 != 0) || (mStickDistance <= 0.05f)) || (spActionButton())) {
if (f2 <= M_PI / 2) {
anm = ANM_ROPESWINGB;
} else {
if ((M_PI / 2 > dVar5) && (M_PI / 10 <= dVar5)) {
setMoveAnime(0.0f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH,
ANM_ROPESWINGF, 7, 7.0f);
m34D0 = -1;
return;
}
if ((-M_PI / 2 > dVar5) && (-2.8274333f <= dVar5)) {
setMoveAnime(0.0f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH,
ANM_ROPESWINGB, 7, 7.0f);
m34D0 = 1;
return;
}
if (dVar5 <= M_PI / 2) {
dVar4 = ANM_ROPESWINGB;
} else {
dVar4 = ANM_ROPESWINGF;
}
dVar6 = (0.6f * m34D4) / daPy_HIO_rope_c0::m.field_0x0;
if (checkSpecialRope()) {
dVar6 *= 8.0f;
}
if (dVar6 > 0.6f) {
dVar6 = 0.6f;
}
anm = ANM_ROPESWINGF;
}
dVar6 = (0.6f * m34D4) / daPy_HIO_rope_c0::m.field_0x0;
if (checkSpecialRope()) {
dVar6 *= 8.0f;
}
if (dVar6 > 0.6f) {
dVar6 = 0.6f;
}
} else {
if ((M_PI / 2 > f30) && (M_PI / 10 <= f30)) {
setMoveAnime(0.0f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, ANM_ROPESWINGF, 7, 7.0f);
m34D0 = -1;
return;
}
if ((-M_PI / 2 > f30) && (-2.8274333f <= f30)) {
setMoveAnime(0.0f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, ANM_ROPESWINGB, 7, 7.0f);
m34D0 = 1;
return;
}
if (f2 <= M_PI / 2) {
anm = ANM_ROPESWINGB;
} else {
anm = ANM_ROPESWINGF;
}
dVar6 = (0.6f * m34D4) / daPy_HIO_rope_c0::m.field_0x0;
if (checkSpecialRope()) {
dVar6 *= 8.0f;
}
if (dVar6 > 0.6f) {
dVar6 = 0.6f;
}
}
puVar3 = (u16*)getAnmData(dVar4);
if (*puVar3 != (m_anm_heap_under[UNDER_MOVE1_e]).mIdx) {
cLib_addCalc(&local_48, -dVar6, 0.5f, 0.05f, 0.005f);
if (local_48 <= 0.0f) {
local_48 = 0.0f;
u16 anm_bck = getAnmData(anm)->mUnderBckIdx;
if (anm_bck != m_anm_heap_under[UNDER_MOVE1_e].mIdx) {
cLib_addCalc(&sp08, -dVar6, 0.5f, 0.05f, 0.005f);
if (sp08 <= 0.0f) {
sp08 = 0.0f;
} else {
if (dVar4 == ANM_ROPESWINGB) {
dVar4 = ANM_ROPESWINGF;
if (anm == ANM_ROPESWINGB) {
anm = ANM_ROPESWINGF;
} else {
dVar4 = ANM_ROPESWINGB;
anm = ANM_ROPESWINGB;
}
}
} else {
if (m34D0 == 0) {
cLib_addCalc(&local_48, dVar6, 0.5f, 0.05f, 0.005f);
cLib_addCalc(&sp08, dVar6, 0.5f, 0.05f, 0.005f);
}
}
}
f32 f4;
if (param_0 != 0) {
fVar1 = daPy_HIO_rope_c0::m.field_0x20;
f4 = daPy_HIO_rope_c0::m.field_0x20;
} else {
fVar1 = -1.0f;
f4 = -1.0f;
}
setMoveAnime(local_48, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, dVar4, 7, fVar1);
setMoveAnime(sp08, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, anm, 7, f4);
}
/* 80143A44-80143C5C .text throwRope__9daPy_lk_cFv */
int daPy_lk_c::throwRope() {
himo2_class* rope = (himo2_class*)mActorKeepEquip.getActor();
setActAnimeUpper(LKANM_BCK_ROPETHROW, UPPER_MOVE2_e, daPy_HIO_rope_c0::m.field_0x44,
daPy_HIO_rope_c0::m.field_0x48, daPy_HIO_rope_c0::m.field_0x8, -1.0f);
setActAnimeUpper(
LKANM_BCK_ROPETHROW,
UPPER_MOVE2_e,
daPy_HIO_rope_c0::m.field_0x44,
daPy_HIO_rope_c0::m.field_0x48,
daPy_HIO_rope_c0::m.field_0x8,
-1.0f
);
setPriTextureAnime(0x48, 0);
mVelocity = 0.0f;
if (mDirection != DIR_RIGHT) {
@@ -246,9 +245,11 @@ int daPy_lk_c::throwRope() {
local_1c = pfVar4->eyePos;
} else {
f32 fVar3 = 500.0f * cM_scos(mBodyAngle.x);
local_1c.set(current.pos.x + fVar3 * cM_ssin(shape_angle.y),
(100.0f + current.pos.y) - 500.0f * cM_ssin(mBodyAngle.x),
current.pos.z + fVar3 * cM_scos(shape_angle.y));
local_1c.set(
current.pos.x + fVar3 * cM_ssin(shape_angle.y),
(100.0f + current.pos.y) - 500.0f * cM_ssin(mBodyAngle.x),
current.pos.z + fVar3 * cM_scos(shape_angle.y)
);
}
cXyz local_28;
local_28.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
@@ -293,12 +294,10 @@ BOOL daPy_lk_c::checkNextActionRopeReady() {
}
}
}
if ((cancelItemUpperReadyAnime())) {
if (cancelItemUpperReadyAnime()) {
return true;
}
} else if (((pnVar3->field_0x2DC == 5) || (pnVar3->field_0x2DC == 8)) ||
(pnVar3->field_0x2DC == 9))
{
} else if (((pnVar3->field_0x2DC == 5) || (pnVar3->field_0x2DC == 8)) || (pnVar3->field_0x2DC == 9)) {
return procRopeThrowCatch_init();
} else {
checkNextRopeMode();
@@ -416,16 +415,14 @@ BOOL daPy_lk_c::procRopeSubject() {
/* 8014422C-80144464 .text procRopeReady_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procRopeReady_init() {
/* Nonmatching - "extsh" mFrame */
fopAc_ac_c* pfVar3 = mActorKeepEquip.getActor();
commonProcInit(daPyProc_ROPE_READY_e);
setMoveAnime(0.5f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, ANM_ROPESWINGB, 7,
daPy_HIO_rope_c0::m.field_0x20);
mFrameCtrlUnder[UNDER_MOVE0_e].mStart = daPy_HIO_rope_c0::m.field_0x1C;
mFrameCtrlUnder[UNDER_MOVE0_e].mFrame = daPy_HIO_rope_c0::m.field_0x0;
mFrameCtrlUnder[UNDER_MOVE0_e].mEnd = daPy_HIO_rope_c0::m.field_0x4;
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(
mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
setMoveAnime(
0.5f, daPy_HIO_rope_c0::m.field_0x18, 1.0f, ANM_ROPECATCH, ANM_ROPESWINGB, 7, daPy_HIO_rope_c0::m.field_0x20
);
mFrameCtrlUnder[UNDER_MOVE0_e].setStart(daPy_HIO_rope_c0::m.field_0x1C);
mFrameCtrlUnder[UNDER_MOVE0_e].setEnd(daPy_HIO_rope_c0::m.field_0x4);
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
m3688 = current.pos;
m35F0 = m3688.y;
m35F4 = m3688.y;
@@ -484,7 +481,6 @@ BOOL daPy_lk_c::procRopeReady() {
/* 80144620-80144C58 .text procRopeSwing_init__9daPy_lk_cFP10fopAc_ac_cs */
BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
/* Nonmatching - regalloc */
float dVar8;
float dVar9;
cXyz local_84;
@@ -500,7 +496,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
mEquipItem = dItem_GRAPPLING_HOOK_e;
local_84 = (param_0->current.pos - current.pos);
dVar8 = (local_84.abs() - 95.0f);
dVar9 = pfVar7->field_0x15F8.y;
dVar9 = ((himo2_class*)param_0)->field_0x15F8.y;
if (dVar8 > dVar9) {
dVar8 = dVar9;
}
@@ -525,7 +521,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
local_78.x = fVar2 * local_84.x - fVar1 * local_84.z;
local_78.y = local_84.y;
local_78.z = fVar1 * local_84.x + fVar2 * local_84.z;
s16 sVar4 = cM_atan2s(-local_78.x, local_78.z);
s16 sVar4 = cM_atan2s(-local_78.z, local_78.y);
if (sVar4 > m34D4) {
sVar4 = m34D4;
} else if (sVar4 < -m34D4) {
@@ -569,12 +565,10 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
if (pfVar7 == NULL) {
m_old_fdata->initOldFrameMorf(15.0f, 0, 0x2A);
}
mFrameCtrlUnder[UNDER_MOVE0_e].mStart = daPy_HIO_rope_c0::m.field_0x1C;
mFrameCtrlUnder[UNDER_MOVE0_e].mFrame = daPy_HIO_rope_c0::m.field_0x0;
mFrameCtrlUnder[UNDER_MOVE0_e].mEnd = daPy_HIO_rope_c0::m.field_0x4;
mFrameCtrlUnder[UNDER_MOVE0_e].setStart(daPy_HIO_rope_c0::m.field_0x1C);
mFrameCtrlUnder[UNDER_MOVE0_e].setEnd(daPy_HIO_rope_c0::m.field_0x4);
if ((pfVar7 != NULL) && (mActorKeepEquip.getActor() == NULL)) {
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(
mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
}
m34D0 = 0;
shape_angle.x = param_1;
@@ -583,45 +577,35 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
/* 80144C58-801456D8 .text procRopeSwing__9daPy_lk_cFv */
BOOL daPy_lk_c::procRopeSwing() {
/* Nonmatching, regalloc, math */
fopAc_ac_c* pfVar5;
short sVar8;
short sVar9;
short sVar10;
float dVar11;
float dVar12;
float dVar13;
short local_98[2];
float local_94;
cXyz cStack_90;
cXyz local_6c;
float local_48;
if (checkHangRopeActorNull()) {
return true;
}
mDoMtx_multVecZero(mpCLModel->getAnmMtx(1), &local_6c);
pfVar5 = mActorKeepRope.getActor();
mRopePos = pfVar5->current.pos;
cXyz sp34;
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0x28), &sp34);
fopAc_ac_c* rope = mActorKeepRope.getActor();
mRopePos = rope->current.pos;
dComIfGp_setRStatus(0x13);
dVar12 = (m35A8 * m35A4);
dVar13 = (m35AC * m35A4);
f32 f30 = (m35A8 * m35A4);
f32 dVar13 = (m35AC * m35A4);
mDoMtx_stack_c::ZrotS(-shape_angle.z);
mDoMtx_stack_c::XrotM(-shape_angle.x);
mDoMtx_stack_c::YrotM(-shape_angle.y);
mDoMtx_stack_c::transM(-current.pos.x, -current.pos.y, -current.pos.z);
mDoMtx_stack_c::multVec(&local_6c, &cStack_90);
cXyz sp28;
mDoMtx_stack_c::multVec(&sp34, &sp28);
if (checkSpecialRope()) {
f30 = 0.0f;
dVar13 = 0.0f;
dVar12 = dVar13;
} else {
if ((0.0f <= dVar12) && (dVar12 <= M_PI / 2)) {
dVar12 = -0.45f * cM_ssin(cM_rad2s(dVar12));
if ((0.0f <= f30) && (f30 <= M_PI / 2)) {
f30 = -0.45f * cM_ssin(cM_rad2s(f30));
} else {
if (dVar12 <= -M_PI / 2) {
dVar12 = 0.45f * cM_ssin(cM_rad2s(dVar12));
if (f30 <= -M_PI / 2) {
f30 = 0.45f * cM_ssin(cM_rad2s(f30));
} else {
dVar12 = 0.0f;
f30 = 0.0f;
}
}
if ((0.0f <= dVar13) && (dVar13 <= M_PI / 2)) {
@@ -634,18 +618,19 @@ BOOL daPy_lk_c::procRopeSwing() {
}
}
}
dVar11 = 1.0f;
m35A8 = m35A8 + (dVar11 + dVar12);
f32 dVar11 = 1.0f;
m35A8 = m35A8 + (dVar11 + f30);
m35AC = m35AC + (dVar11 + dVar13);
local_94 = m35A8 * m35A4;
dVar12 = (m35AC * m35A4);
if (local_94 >= M_PI) {
local_94 = local_94 - M_PI * 2;
m35A8 = local_94 / m35A4;
f32 sp0C = m35A8 * m35A4;
f30 = (m35AC * m35A4);
if (sp0C >= M_PI) {
sp0C = sp0C - M_PI * 2;
m35A8 = sp0C / m35A4;
}
if (dVar12 >= M_PI) {
dVar12 = (dVar12 - M_PI * 2);
m35AC = (dVar12 / m35A4);
if (f30 >= M_PI) {
f30 = (f30 - M_PI * 2);
m35AC = (f30 / m35A4);
}
if ((checkModeFlg(ModeFlg_00000400)) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) {
offModeFlg(ModeFlg_00000400);
@@ -653,80 +638,95 @@ BOOL daPy_lk_c::procRopeSwing() {
setTextureAnime(8, 0);
}
setBlendRopeMoveAnime(0);
s16 r30;
s16 r28;
s16 r29;
if (checkSpecialRope()) {
sVar10 = daPy_HIO_rope_c0::m.field_0x0 * 0.125f;
sVar8 = 4;
sVar9 = 8;
r30 = daPy_HIO_rope_c0::m.field_0x0 / 8.0f;
r28 = 4;
r29 = 8;
} else {
sVar10 = daPy_HIO_rope_c0::m.field_0x0;
sVar8 = 0x20;
sVar9 = 0x40;
r30 = daPy_HIO_rope_c0::m.field_0x0;
r28 = 0x20;
r29 = 0x40;
}
if (spActionButton()) {
cLib_chaseS(&m34D4, 0, sVar8 * 10);
cLib_chaseS(&m34D6, 0, sVar8 * 10);
cLib_chaseS(&m34D4, 0, r28 * 10);
cLib_chaseS(&m34D6, 0, r28 * 10);
} else {
cLib_chaseS(&m34D6, 0, sVar8);
if (std::fabsf(mStickDistance) > 0.05f) {
m34D4 += sVar9 * std::abs(cM_scos(cM_rad2s((local_94))));
cLib_chaseS(&m34D6, 0, r28);
f32 f1 = std::fabsf(sp0C);
if (mStickDistance > 0.05f) {
m34D4 += r29 * std::abs(cM_scos(cM_rad2s(f1)));
} else {
cLib_chaseS(&m34D4, 0, sVar8);
cLib_chaseS(&m34D4, 0, r28);
}
}
if (sVar10 > m34D4) {
m34D4 = sVar10;
if (m34D4 > r30) {
m34D4 = r30;
}
local_98[0] = -m34D4 * cM_ssin(cM_rad2s(local_94));
local_48 = m34D6 * cM_ssin(cM_rad2s(dVar12));
s16 sp08 = -m34D4 * cM_ssin(cM_rad2s(sp0C));
s16 r29_2 = m34D6 * cM_ssin(cM_rad2s(f30));
s16 r28_2;
if (m34D0 != 0) {
m_pbCalc[PART_UNDER_e]->setRatio(1, dVar13);
sVar8 = m34D4 * cM_ssin(cM_rad2s(local_94)) + (-m34D4 * (0.5f * m34D0) * dVar13);
dVar13 = m_pbCalc[PART_UNDER_e]->getRatio(1);
f32 f2 = -m34D4 * cM_ssin(cM_rad2s(sp0C));
f32 f0 = 0.5f * m34D4 * m34D0;
r28_2 = f2 + (f0 * dVar13);
} else {
sVar8 = -m34D4 * cM_ssin(cM_rad2s((local_48 - 0.62831855f)));
r28_2 = -m34D4 * cM_ssin(cM_rad2s(sp0C - 0.62831855f));
}
cLib_addCalcAngleS(&shape_angle.x, sVar8, 8, 0xc00, 0x100);
dVar13 = cM_scos(cM_rad2s(dVar12));
cLib_addCalcAngleS(&shape_angle.z, m34D6 * cM_ssin(cM_rad2s((dVar12 - 1.0995574f))), 8,
(1024.0f + (2048.0f * dVar13)), (128.0f + (128.0f * dVar13)));
local_6c.set(0.0f, -m35A0, 0.0f);
cLib_addCalcAngleS(&shape_angle.x, r28_2, 8, 0xc00, 0x100);
dVar13 = cM_scos(cM_rad2s(f30));
cLib_addCalcAngleS(
&shape_angle.z,
m34D6 * cM_ssin(cM_rad2s(f30 - 1.0995574f)),
8,
(1024.0f + (2048.0f * dVar13)),
(128.0f + (128.0f * dVar13))
);
cXyz sp1C(0.0f, -m35A0, 0.0f);
mDoMtx_stack_c::transS(mRopePos.x, mRopePos.y, mRopePos.z);
mDoMtx_stack_c::ZXYrotM(local_98[0], shape_angle.y, local_98[1]);
mDoMtx_stack_c::multVec(&cStack_90, &current.pos);
mDoMtx_stack_c::ZXYrotM(sp08, shape_angle.y, r29_2);
mDoMtx_stack_c::multVec(&sp1C, &current.pos);
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
sVar8 = shape_angle.y;
mDoMtx_stack_c::ZXYrotM(-m34D4 * cM_ssin(cM_rad2s((local_94 + m35A4))), sVar8, local_98[0]);
mDoMtx_stack_c::multVec(&local_6c, &cStack_90);
if (!checkRopeSwingWall(&local_6c, &cStack_90, local_98, &local_94)) {
mDoMtx_stack_c::ZXYrotM(-m34D4 * cM_ssin(cM_rad2s(sp0C + m35A4)), shape_angle.y, r29_2);
cXyz sp10;
mDoMtx_stack_c::multVec(&sp28, &sp10);
if (!checkRopeSwingWall(&sp34, &sp10, &sp08, &sp0C)) {
static cXyz local_height_offset(0.0f, -105.0f, 0.0f);
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
mDoMtx_stack_c::multVec(&local_height_offset, &cStack_90);
if (!checkRopeSwingWall(&current.pos, &cStack_90, local_98, &local_94)) {
mDoMtx_stack_c::multVec(&local_height_offset, &sp10);
if (!checkRopeSwingWall(&current.pos, &sp10, &sp08, &sp0C)) {
resetFootEffect();
}
}
dVar12 = ((f32)m34D4 / sVar10);
f30 = ((f32)m34D4 / r30);
if (changeRopeEndProc(0)) {
dVar13 = (m35A0 / (100.0f * daPy_HIO_rope_c0::m.field_0x14));
if (dVar13 < 1.0f) {
dVar13 = 1.0f;
}
mVelocity = (dVar12 * dVar13) * daPy_HIO_rope_c0::m.field_0xC;
if (std::abs(local_94) > M_PI / 2) {
f30 *= dVar13;
mVelocity = daPy_HIO_rope_c0::m.field_0xC * f30;
if (std::abs(sp0C) > M_PI / 2) {
current.angle.y = shape_angle.y + 0x8000;
}
speed.y = (dVar12 * dVar13) * daPy_HIO_rope_c0::m.field_0x10;
speed.y = daPy_HIO_rope_c0::m.field_0x10 * f30;
procFall_init(0, daPy_HIO_wallCatch_c0::m.field_0x54);
onNoResetFlg1(daPyFlg1_UNK8000000);
} else {
if ((m34D4 == 0) && (m34D6 == 0)) {
procRopeHangWait_init(0);
} else if (dVar12 > 0.6f) {
if (cM_scos(cM_rad2s(local_94)) > 0.77f) {
mDoAud_seStart(JA_SE_LK_ROPE_SWING_F, &mRopePos, NULL, mReverb);
}
} else if ((m34D4 == 0) && (m34D6 == 0)) {
procRopeHangWait_init(0);
} else if (f30 > 0.6f) {
if (cM_scos(cM_rad2s(sp0C)) > 0.77f) {
mDoAud_seStart(JA_SE_LK_ROPE_SWING_F, &mRopePos, NULL, mReverb);
}
}
return true;
}
@@ -741,13 +741,13 @@ BOOL daPy_lk_c::procRopeHangWait_init(int param_0) {
gravity = 0.0f;
if (param_0 == 0) {
m34D0 = daPy_HIO_rope_c0::m.field_0x6;
setSingleMoveAnime(ANM_ROPECATCH, 1.0f, mFrameCtrlUnder[UNDER_MOVE0_e].getEnd() - 0.001f,
-1, daPy_HIO_rope_c0::m.field_0x28);
setSingleMoveAnime(
ANM_ROPECATCH, 1.0f, mFrameCtrlUnder[UNDER_MOVE0_e].getEnd() - 0.001f, -1, daPy_HIO_rope_c0::m.field_0x28
);
setTextureAnime(2, 0);
} else {
m34D0 = -1;
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x28);
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x28);
}
m34D4 = 0;
return true;
@@ -761,7 +761,7 @@ BOOL daPy_lk_c::procRopeHangWait() {
float dVar4;
dComIfGp_setRStatus(0x13);
if (0 < (int)m34D0) {
if (m34D0 > 0) {
m34D0--;
}
if (checkHangRopeActorNull()) {
@@ -817,8 +817,9 @@ BOOL daPy_lk_c::procRopeHangWait() {
bVar1 = true;
if (m34D0 != -1) {
m34D0 = -1;
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x2C);
setSingleMoveAnime(
ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C
);
}
} else if ((direction == DIR_FORWARD) || (direction == DIR_BACKWARD)) {
procRopeSwingStart_init();
@@ -827,8 +828,7 @@ BOOL daPy_lk_c::procRopeHangWait() {
bVar1 = true;
} else if (m34D0 == 0) {
m34D0 = -1;
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x2C);
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x2C);
}
unaff_r29 = 0;
bVar1 = true;
@@ -850,13 +850,9 @@ BOOL daPy_lk_c::procRopeHangWait() {
/* 80145B38-80145C3C .text specialRopeHangUp__9daPy_lk_cFv */
int daPy_lk_c::specialRopeHangUp() {
/* Nonmatching - shape_angle.y */
u32 uVar1;
int iVar2;
if (checkSpecialRope()) {
uVar1 = (int)shape_angle.y ^ 0x4000;
iVar2 = abs((((int)uVar1 >> 1) - (uVar1 & 0x4000)) >> 0x1f);
u32 uVar1 = shape_angle.y >= 0x4000 ? 0 : 1;
int iVar2 = abs(uVar1);
if (iVar2 != 0) {
current.pos.z = -15.8f;
shape_angle.y = 0;
@@ -864,8 +860,8 @@ int daPy_lk_c::specialRopeHangUp() {
current.pos.z = 15.8f;
shape_angle.y = -0x8000;
}
current.pos.x = 361.39999f;
current.pos.y = 4464.7998f;
current.pos.x = 361.4f;
current.pos.y = 4464.8f;
old.pos = current.pos;
current.angle.y = shape_angle.y;
m3724 = current.pos;
@@ -908,9 +904,8 @@ BOOL daPy_lk_c::procRopeUp_init() {
} else {
commonProcInit(daPyProc_ROPE_UP_e);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK800000_e);
setSingleMoveAnime(ANM_ROPECLIMB, daPy_HIO_rope_c0::m.field_0x30, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x34);
mFrameCtrlUnder[UNDER_MOVE0_e].mAttribute = 0;
setSingleMoveAnime(ANM_ROPECLIMB, daPy_HIO_rope_c0::m.field_0x30, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x34);
mFrameCtrlUnder[UNDER_MOVE0_e].setAttribute(J3DFrameCtrl::EMode_NONE);
m35A0 = dVar4;
gravity = 0.0f;
return true;
@@ -943,9 +938,8 @@ BOOL daPy_lk_c::procRopeUp() {
procRopeHangWait_init(0);
}
} else {
setSingleMoveAnime(ANM_ROPECLIMB, daPy_HIO_rope_c0::m.field_0x30, 0.0f, -1,
-1.0f);
mFrameCtrlUnder[UNDER_MOVE0_e].setAttribute(0);
setSingleMoveAnime(ANM_ROPECLIMB, daPy_HIO_rope_c0::m.field_0x30, 0.0f, -1, -1.0f);
mFrameCtrlUnder[UNDER_MOVE0_e].setAttribute(J3DFrameCtrl::EMode_NONE);
}
} else {
procRopeHangWait_init(0);
@@ -987,8 +981,7 @@ BOOL daPy_lk_c::procRopeDown_init() {
} else {
commonProcInit(daPyProc_ROPE_DOWN_e);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK800000_e);
setSingleMoveAnime(ANM_ROPEDOWN, daPy_HIO_rope_c0::m.field_0x38, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x3C);
setSingleMoveAnime(ANM_ROPEDOWN, daPy_HIO_rope_c0::m.field_0x38, 0.0f, -1, daPy_HIO_rope_c0::m.field_0x3C);
gravity = 0.0f;
m35A0 = 0.0f;
return true;
@@ -998,7 +991,7 @@ BOOL daPy_lk_c::procRopeDown_init() {
/* 801460EC-80146240 .text procRopeDown__9daPy_lk_cFv */
BOOL daPy_lk_c::procRopeDown() {
dComIfGp_setRStatus(0x13);
if ((checkHangRopeActorNull())) {
if (checkHangRopeActorNull()) {
return true;
}
if (!changeRopeEndProc(1)) {
@@ -1106,8 +1099,7 @@ BOOL daPy_lk_c::procRopeMove_init() {
current.angle.y = shape_angle.y + -0x4000;
}
if (fopAcM_GetParam(mActorKeepEquip.getActor()) == 0) {
setActAnimeUpper(LKANM_BCK_ROPETHROWWAIT, UPPER_MOVE2_e, daPy_HIO_rope_c0::m.field_0x50,
0.0f, -1, -1.0f);
setActAnimeUpper(LKANM_BCK_ROPETHROWWAIT, UPPER_MOVE2_e, daPy_HIO_rope_c0::m.field_0x50, 0.0f, -1, -1.0f);
setBlendAtnMoveAnime(daPy_HIO_rope_c0::m.field_0x54);
}
dComIfGp_setPlayerStatus0(0, daPyStts0_ROPE_AIM_e);
@@ -1150,9 +1142,13 @@ BOOL daPy_lk_c::procRopeMove() {
/* 80146848-801468C4 .text procRopeThrowCatch_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procRopeThrowCatch_init() {
commonProcInit(daPyProc_ROPE_THROW_CATCH_e);
setSingleMoveAnime(ANM_ROPETHROWCATCH, daPy_HIO_rope_c0::m.field_0x58,
daPy_HIO_rope_c0::m.field_0x5C, daPy_HIO_rope_c0::m.field_0xA,
daPy_HIO_rope_c0::m.field_0x64);
setSingleMoveAnime(
ANM_ROPETHROWCATCH,
daPy_HIO_rope_c0::m.field_0x58,
daPy_HIO_rope_c0::m.field_0x5C,
daPy_HIO_rope_c0::m.field_0xA,
daPy_HIO_rope_c0::m.field_0x64
);
mVelocity = 0.0f;
dComIfGp_setPlayerStatus0(0, daPyStts0_ROPE_AIM_e);
m34D0 = 0x1e;
@@ -1172,7 +1168,7 @@ BOOL daPy_lk_c::procRopeThrowCatch() {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
m34D0--;
himo2_class* rope = (himo2_class*)mActorKeepEquip.getActor();
if ((rope->field_0x2DC == 0 || (m34D0 == 0))) {
if (rope->field_0x2DC == 0 || (m34D0 == 0)) {
checkNextRopeMode();
}
}
+270 -275
View File
@@ -38,7 +38,7 @@ BOOL daPy_lk_c::checkJumpRideShip() {
if (hit_ac != NULL && fopAcM_GetName(hit_ac) == PROC_SHIP) {
daShip_c* ship = (daShip_c*)hit_ac;
cXyz sp20;
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, &sp20);
mDoMtx_multVec(ship->getBodyMtx(), &l_ship_offset, &sp20);
sp20 = old.pos - sp20;
if (sp20.y > 5.0f && sp20.abs2XZ() < 10000.0f) {
return procShipJumpRide_init();
@@ -50,9 +50,9 @@ BOOL daPy_lk_c::checkJumpRideShip() {
/* 8013F984-8013F9B0 .text checkShipNotNormalMode__9daPy_lk_cFv */
BOOL daPy_lk_c::checkShipNotNormalMode() {
if (((m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_SHIP_JUMP2) &&
(m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_VOYAGE1)) &&
(m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_SHIP_JUMP1))
if (m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_SHIP_JUMP2 &&
m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_VOYAGE1 &&
m_anm_heap_under[UNDER_MOVE0_e].mIdx != LKANM_BCK_SHIP_JUMP1)
{
return true;
}
@@ -60,18 +60,18 @@ BOOL daPy_lk_c::checkShipNotNormalMode() {
}
/* 8013F9B0-8013FE78 .text setShipRideArmAngle__9daPy_lk_cFiP16J3DTransformInfo */
void daPy_lk_c::setShipRideArmAngle(int param_1, J3DTransformInfo* param_2) {
void daPy_lk_c::setShipRideArmAngle(int jnt_no, J3DTransformInfo* param_2) {
/* Nonmatching - regalloc, math */
static cXyz arm_pos(0.0f, 0.0f, 0.0f);
static cXyz armA_offset(17.0f, 0.0f, 0.0f);
cXyz local_74;
cXyz local_68;
s32 uVar3 = (param_1 == 0xA) ? 1 : 0;
if (uVar3 != 0) {
BOOL uVar3 = jnt_no == 0xA ? TRUE : FALSE;
if (uVar3) {
f32 fVar1 = m_old_fdata->getOldFrameRate();
f32 fVar2 = 1.0f / (1.0f - fVar1);
J3DTransformInfo* iVar4 = m_old_fdata->getOldFrameTransInfo(param_1);
J3DTransformInfo* iVar4 = m_old_fdata->getOldFrameTransInfo(jnt_no);
param_2->mTranslate.x *= fVar2 - iVar4->mTranslate.x * fVar1;
param_2->mTranslate.y *= fVar2 - iVar4->mTranslate.y * fVar1;
param_2->mTranslate.z *= fVar2 - iVar4->mTranslate.z * fVar1;
@@ -82,17 +82,17 @@ void daPy_lk_c::setShipRideArmAngle(int param_1, J3DTransformInfo* param_2) {
f32 dVar10 = local_68.absXZ();
u32 uVar5 = cM_atan2s(local_68.y, dVar10);
mDoMtx_stack_c::transS(arm_pos.x, arm_pos.y, arm_pos.z);
f32 dVar12 = (26.299999f * cM_scos((uVar5 & 0xffff)));
f32 dVar12 = (26.3f * cM_scos(uVar5 & 0xffff));
f32 dVar8 = local_68.absXZ();
dVar10 = dVar8;
if (uVar3 == 0) {
if (!uVar3) {
mDoMtx_stack_c::YrotM(cM_atan2s(local_68.x, local_68.z) + -0x4000);
if (dVar10 >= dVar12) {
mDoMtx_stack_c::scaleM((dVar10 / dVar12), 1.0f, 1.0f);
}
} else {
f32 dVar9 = (17.0f * cM_scos(uVar5 & 0xffff));
f32 dVar11 = (dVar12 + dVar9);
f32 dVar11 = dVar12 + dVar9;
if (dVar10 >= dVar11) {
mDoMtx_stack_c::YrotM(cM_atan2s(local_68.x, local_68.z) + -0x4000);
mDoMtx_stack_c::scaleM((dVar10 / dVar11), 1.0f, 1.0f);
@@ -100,17 +100,16 @@ void daPy_lk_c::setShipRideArmAngle(int param_1, J3DTransformInfo* param_2) {
dVar12 = ((dVar8 + ((dVar9 * dVar9) - (dVar12 * dVar12))) / (2.0f * dVar8));
mDoMtx_stack_c::YrotM(
(cM_atan2s(local_68.x, local_68.z) + -0x4000) -
cM_atan2s(std::sqrtf((dVar9 * dVar9) - (dVar12 * (dVar8 * dVar12))),
(dVar10 * dVar12)));
cM_atan2s(std::sqrtf((dVar9 * dVar9) - (dVar12 * (dVar8 * dVar12))), (dVar10 * dVar12))
);
}
}
mDoMtx_stack_c::ZrotM(uVar5);
mDoMtx_stack_c::XrotM(0x4000);
mDoMtx_copy(mDoMtx_stack_c::now, J3DSys::mCurrentMtx);
if (uVar3 != 0) {
if (uVar3) {
mDoMtx_stack_c::multVec(&armA_offset, &arm_pos);
}
return;
}
/* 8013FE78-8013FEF4 .text checkShipRideUseItem__9daPy_lk_cFi */
@@ -133,7 +132,7 @@ void daPy_lk_c::initShipRideUseItem(int param_1, int param_2) {
if (param_1 == 0) {
return;
}
dComIfGp_getShipActor()->m034D = 2; // TODO probably inline setter
dComIfGp_getShipActor()->m034D = 2; // TODO probably inline setter
gravity = 0.0f;
speed.y = 0.0f;
if (param_1 == 1) {
@@ -161,34 +160,34 @@ void daPy_lk_c::setShipRidePosUseItem() {
/* 80140018-801403E0 .text setShipRidePos__9daPy_lk_cFi */
void daPy_lk_c::setShipRidePos(int param_0) {
daShip_c* iVar1 = dComIfGp_getShipActor();
if (iVar1 != 0) {
if (iVar1->mStateFlag & 0x4000) {
daShip_c* ship = dComIfGp_getShipActor();
if (ship != NULL) {
if (ship->mStateFlag & 0x4000) {
dComIfGp_setRStatus(0x12);
}
if (param_0 != 0) {
shape_angle.y = iVar1->shape_angle.y;
shape_angle.y = ship->shape_angle.y;
current.angle.y = shape_angle.y;
}
if (mCurProc == ANM_MSTEPOVER_JMPED) {
m353C = iVar1->shape_angle.x;
m353E = iVar1->shape_angle.z;
m353C = ship->shape_angle.x;
m353E = ship->shape_angle.z;
m3540 = 0;
m3542 = 0;
} else {
m353C = m353C + m3540;
m3540 = (s16)(m3540 + 0.75f * (s16)(iVar1->shape_angle.x - m353C));
m3540 = (s16)(m3540 + 0.75f * (s16)(ship->shape_angle.x - m353C));
cLib_addCalcAngleS(&m3540, 0, 5, 0x200, 0x100);
m353E = m353E + m3542;
m3542 += ((s16)(iVar1->shape_angle.z - m353E) >> 1);
m3542 += ((s16)(ship->shape_angle.z - m353E) >> 1);
cLib_addCalcAngleS(&m3542, 0, 5, 0x100, 0x30);
}
if (mCurProc == ANM_WARPOUT) {
mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset3, &current.pos);
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_offset3, &current.pos);
} else if (mCurProc == ANM_SETBOOTS && m34D8 != 0) {
mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset2, &current.pos);
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_offset2, &current.pos);
} else {
mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, &current.pos);
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_offset, &current.pos);
}
if (checkShipNotNormalMode()) {
mBodyAngle.y = 0;
@@ -196,28 +195,27 @@ void daPy_lk_c::setShipRidePos(int param_0) {
cXyz local_38;
f32 sp08;
dKyw_get_AllWind_vec(&current.pos, &local_38, &sp08);
f32 fVar2 = (30.0f * sp08 + iVar1->speedF) / 30.0f;
f32 fVar2 = (30.0f * sp08 + ship->speedF) / 30.0f;
if (fVar2 > 1.0f) {
fVar2 = 1.0f;
}
mFrameCtrlUpper[UPPER_MOVE2_e].setRate((1.0f - daPy_HIO_ship_c0::m.field_0xC) * fVar2 +
daPy_HIO_ship_c0::m.field_0xC);
if ((iVar1->mStateFlag & 0x40) != 0) {
if (iVar1->m03E4 > 0.6f) {
mFrameCtrlUpper[UPPER_MOVE2_e].setRate(
(1.0f - daPy_HIO_ship_c0::m.field_0xC) * fVar2 + daPy_HIO_ship_c0::m.field_0xC
);
if ((ship->mStateFlag & 0x40) != 0) {
if (ship->m03E4 > 0.6f) {
voiceStart(6);
} else {
if (iVar1->m03E4 > 0.2f) {
voiceStart(7);
}
} else if (ship->m03E4 > 0.2f) {
voiceStart(7);
}
setSingleMoveAnime(ANM_SHIP_JUMP1, 1.0f, 0.0f, -1, 20.0f);
}
if (iVar1->mStateFlag & 0x80) {
if (ship->mStateFlag & 0x80) {
setSingleMoveAnime(ANM_SHIP_JUMP2, 1.0f, 3.0f, -1, 3.0f);
}
if (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_SHIP_JUMP2) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
if ((iVar1->mStateFlag & 1) != 0) {
if ((ship->mStateFlag & 1) != 0) {
setSingleMoveAnime(ANM_SHIP_JUMP1, 1.0f, 0.0f, -1, 20.0f);
} else {
setSingleMoveAnime(ANM_VOYAGE1, 1.0f, 0.0f, -1, 5.0f);
@@ -228,7 +226,7 @@ void daPy_lk_c::setShipRidePos(int param_0) {
}
s16 sVar4;
if (m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_VOYAGE1) {
sVar4 = -daPy_HIO_ship_c0::m.field_0x4 * iVar1->m03DC;
sVar4 = -daPy_HIO_ship_c0::m.field_0x4 * ship->m03DC;
} else {
sVar4 = 0;
}
@@ -294,7 +292,7 @@ void daPy_lk_c::setShipAttnetionBodyAngle() {
}
/* 801405F0-80140C88 .text changeShipEndProc__9daPy_lk_cFv */
int daPy_lk_c::changeShipEndProc() {
BOOL daPy_lk_c::changeShipEndProc() {
/* Nonmatching - branching */
daBoomerang_c* pfVar4;
@@ -309,39 +307,36 @@ int daPy_lk_c::changeShipEndProc() {
pfVar4->onCancelFlg();
}
}
if (((((mCurProc != daPyProc_SHIP_SCOPE_e) && (mCurProc != daPyProc_SHIP_BOW_e)) &&
(mCurProc != daPyProc_SHIP_HOOKSHOT_e)) &&
((mCurProc != daPyProc_SHIP_BOOMERANG_e || (mEquipItem != dItem_BOOMERANG_e)))) &&
((ship->mStateFlag & 1) == 0))
if (mCurProc != daPyProc_SHIP_SCOPE_e && mCurProc != daPyProc_SHIP_BOW_e && mCurProc != daPyProc_SHIP_HOOKSHOT_e &&
(mCurProc != daPyProc_SHIP_BOOMERANG_e || mEquipItem != dItem_BOOMERANG_e) && (ship->mStateFlag & 1) == 0)
{
setTalkStatus();
if (orderTalk()) {
return true;
}
}
if ((dComIfGp_getMiniGameType() != 1) && (ship->speedF < 3.0f)) {
if (dComIfGp_getMiniGameType() != 1 && ship->speedF < 3.0f) {
if (ship->m1044.absXZ() < 3.0f) {
if (((!checkShipNotNormalMode() ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEA)) ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEB)) ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREED))
if (((!checkShipNotNormalMode() || m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEA) ||
m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEB) ||
m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREED)
{
if (((!dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e) &&
(!spActionButton())) &&
((dComIfGp_getDoStatus() == 0 && (mCurProc == daPyProc_SHIP_PADDLE_e)))))
if ((!dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e) && !spActionButton()) &&
(dComIfGp_getDoStatus() == 0 && mCurProc == daPyProc_SHIP_PADDLE_e))
{
if ((!ship->checkForceMove()) && (dComIfGp_setDoStatus(29), doTrigger())) {
return procShipGetOff_init();
if (!ship->checkForceMove()) {
dComIfGp_setDoStatus(29);
if (doTrigger()) {
return procShipGetOff_init();
}
}
}
}
}
}
if ((mCurProc != daPyProc_SHIP_SCOPE_e) && ((ship->mStateFlag & 1) == 0)) {
if (mCurProc != daPyProc_SHIP_SCOPE_e && ((ship->mStateFlag & 1) == 0)) {
if (dComIfGp_getDoStatus() == 0) {
if ((ship->mShipMode == 1) || (ship->checkForceMove()) ||
(((ship->speedF < 3.0f) && (ship->mShipMode != 0))))
{
if (ship->mShipMode == 1 || ship->checkForceMove() || (ship->speedF < 3.0f && ship->mShipMode != 0)) {
dComIfGp_setDoStatus(8);
}
}
@@ -350,54 +345,61 @@ int daPy_lk_c::changeShipEndProc() {
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipSteer_init();
} else if (checkSetItemTrigger(dItem_BOMB_BAG_e, 1)) {
return procShipSteer_init();
}
if (checkSetItemTrigger(dItem_BOMB_BAG_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipCannon_init();
} else if (checkSetItemTrigger(dItem_GRAPPLING_HOOK_e, 1)) {
return procShipCannon_init();
}
if (checkSetItemTrigger(dItem_GRAPPLING_HOOK_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipCrane_init();
} else if (checkSetItemTrigger(dItem_TELESCOPE_e, 1)) {
return procShipCrane_init();
}
if (checkSetItemTrigger(dItem_TELESCOPE_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipScope_init(1);
} else if (checkSetItemTrigger(daPyItem_PHOTOBOX_e, 1)) {
return procShipScope_init(1);
}
if (checkSetItemTrigger(daPyItem_PHOTOBOX_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipScope_init(0);
} else if (checkSetItemTrigger(daPyItem_BOW_e, 1)) {
return procShipScope_init(0);
}
if (checkSetItemTrigger(daPyItem_BOW_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipBow_init();
} else if ((checkSetItemTrigger(dItem_BOOMERANG_e, 1)) &&
(mActorKeepThrow.getActor() == NULL))
{
procShipBoomerang_init();
} else if (checkSetItemTrigger(dItem_HOOKSHOT_e, 1)) {
return procShipBow_init();
}
if (checkSetItemTrigger(dItem_BOOMERANG_e, 1) && mActorKeepThrow.getActor() == NULL) {
return procShipBoomerang_init();
}
if (checkSetItemTrigger(dItem_HOOKSHOT_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipHookshot_init();
} else if (checkSetItemTrigger(dItem_WIND_WAKER_e, 1)) {
return procShipHookshot_init();
}
if (checkSetItemTrigger(dItem_WIND_WAKER_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procTactWait_init(-1);
} else if (checkSetItemTrigger(dItem_TINGLE_TUNER_e, 1)) {
return procTactWait_init(-1);
}
if (checkSetItemTrigger(dItem_TINGLE_TUNER_e, 1)) {
fopAcM_orderTalkEvent(this, (fopAc_ac_c*)dComIfGp_getAgb());
if (checkShipNotNormalMode()) {
setShipRidePos(0);
@@ -405,31 +407,38 @@ int daPy_lk_c::changeShipEndProc() {
setShipRidePos(1);
}
return true;
} else if (checkSetItemTrigger(dItem_MAGIC_ARMOR_e, 1)) {
}
if (checkSetItemTrigger(dItem_MAGIC_ARMOR_e, 1)) {
if (checkShipNotNormalMode()) {
setShipRidePos(0);
} else {
setShipRidePos(1);
}
changeDragonShield(1);
} else if (checkSetItemTrigger(daPyItem_DRINK_BOTTLE_e, 0)) {
procBottleDrink_init(dComIfGp_getSelectItem(mReadyItemBtn));
} else if (checkSetItemTrigger(dItem_FAIRY_BOTTLE_e, 0)) {
procBottleOpen_init(0x57);
} else if (checkSetItemTrigger(daPyItem_OPEN_BOTTLE_e, 1)) {
procBottleOpen_init(dComIfGp_getSelectItem(mReadyItemBtn));
} else if (checkSetItemTrigger(dItem_EMPTY_BOTTLE_e, 1)) {
procBottleSwing_init(1);
} else if (checkSetItemTrigger(dItem_HYOI_PEAR_e, 1)) {
procFoodSet_init();
} else if (checkSetItemTrigger(daPyItem_ESA_e, 1)) {
procFoodThrow_init();
} else if ((doTrigger()) && (dComIfGp_getDoStatus() == 8)) {
procShipPaddle_init();
return changeDragonShield(1);
}
if (checkSetItemTrigger(daPyItem_DRINK_BOTTLE_e, 0)) {
return procBottleDrink_init(dComIfGp_getSelectItem(mReadyItemBtn));
}
if (checkSetItemTrigger(dItem_FAIRY_BOTTLE_e, 0)) {
return procBottleOpen_init(0x57);
}
if (checkSetItemTrigger(daPyItem_OPEN_BOTTLE_e, 1)) {
return procBottleOpen_init(dComIfGp_getSelectItem(mReadyItemBtn));
}
if (checkSetItemTrigger(dItem_EMPTY_BOTTLE_e, 1)) {
return procBottleSwing_init(1);
}
if (checkSetItemTrigger(dItem_HYOI_PEAR_e, 1)) {
return procFoodSet_init();
}
if (checkSetItemTrigger(daPyItem_ESA_e, 1)) {
return procFoodThrow_init();
}
if (doTrigger() && dComIfGp_getDoStatus() == 8) {
return procShipPaddle_init();
}
} else {
return false;
}
return false;
}
/* 80140C88-80140D04 .text initShipBaseAnime__9daPy_lk_cFv */
@@ -462,27 +471,31 @@ void daPy_lk_c::initShipCraneAnime() {
BOOL daPy_lk_c::procShipReady_init() {
commonProcInit(daPyProc_SHIP_READY_e);
deleteEquipItem(TRUE);
daShip_c* iVar1 = dComIfGp_getShipActor();
setSingleMoveAnime(ANM_VJMPCL, daPy_HIO_wallCatch_c0::m.field_0x24,
daPy_HIO_wallCatch_c0::m.field_0x2C, daPy_HIO_wallCatch_c0::m.field_0x4,
daPy_HIO_wallCatch_c0::m.field_0x28);
daShip_c* ship = dComIfGp_getShipActor();
setSingleMoveAnime(
ANM_VJMPCL,
daPy_HIO_wallCatch_c0::m.field_0x24,
daPy_HIO_wallCatch_c0::m.field_0x2C,
daPy_HIO_wallCatch_c0::m.field_0x4,
daPy_HIO_wallCatch_c0::m.field_0x28
);
gravity = 0.0f;
mVelocity = 0.0f;
s16 sVar3 = fopAcM_searchActorAngleY((fopAc_ac_c*)iVar1, this);
if ((s16)(sVar3 - iVar1->shape_angle.y) > 0) {
mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, &current.pos);
shape_angle.y = iVar1->shape_angle.y + -0x4000;
s16 sVar3 = fopAcM_searchActorAngleY(ship, this);
if ((s16)(sVar3 - ship->shape_angle.y) > 0) {
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_ledge, &current.pos);
shape_angle.y = ship->shape_angle.y + -0x4000;
m34D4 = shape_angle.y;
m34D0 = 0;
} else {
mDoMtx_multVec(iVar1->m0298->getModel()->getBaseTRMtx(), &l_ship_redge, &current.pos);
shape_angle.y = iVar1->shape_angle.y + 0x4000;
mDoMtx_multVec(ship->m0298->getModel()->getBaseTRMtx(), &l_ship_redge, &current.pos);
shape_angle.y = ship->shape_angle.y + 0x4000;
m34D4 = shape_angle.y + 0x8000;
m34D0 = 1;
}
current.angle.y = shape_angle.y;
mProcVar0.m3570 = 0;
iVar1->m034D = 3;
ship->m034D = 3;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1000000_e);
swimOutAfter(1);
offNoResetFlg0(daPyFlg0_SHIP_DROP);
@@ -497,7 +510,7 @@ BOOL daPy_lk_c::procShipReady_init() {
BOOL daPy_lk_c::procShipReady() {
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (ship == 0) {
if (ship == NULL) {
return checkNextMode(0);
}
@@ -520,7 +533,7 @@ BOOL daPy_lk_c::procShipReady() {
current.pos.y = current.pos.y + (ship->current.pos.y - m35A0);
cLib_chaseF(&current.pos.y, (ship->current.pos.y + l_ship_offset.y), 2.0f);
m35A0 = ship->current.pos.y;
if (!(fopAcM_seenActorAngleY(this, (fopAc_ac_c*)ship) < 0x4000)) {
if (fopAcM_seenActorAngleY(this, ship) >= 0x4000) {
procShipPaddle_init();
}
}
@@ -530,9 +543,9 @@ BOOL daPy_lk_c::procShipReady() {
/* 8014105C-80141140 .text procShipJumpRide_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipJumpRide_init() {
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
if (iVar1 == 0 || ((iVar1->attention_info.flags & fopAc_Attn_ACTION_SHIP_e) == 0)) {
if (ship == NULL || ((ship->attention_info.flags & fopAc_Attn_ACTION_SHIP_e) == 0)) {
return false;
}
@@ -541,8 +554,8 @@ BOOL daPy_lk_c::procShipJumpRide_init() {
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
iVar1->m034D = 2;
iVar1->mStateFlag = iVar1->mStateFlag | 0x2000;
ship->m034D = 2;
ship->mStateFlag = ship->mStateFlag | 0x2000;
setSingleMoveAnime(ANM_SLIPICE, 1.0f, 0.0f, -1, 5.0f);
setShipRidePos(0);
offNoResetFlg0(daPyFlg0_SHIP_DROP);
@@ -564,9 +577,9 @@ BOOL daPy_lk_c::procShipJumpRide() {
/* 80141180-8014123C .text procShipSteer_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipSteer_init() {
offNoResetFlg0(daPyFlg0_UNK1);
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
if (mCurProc == daPyProc_SHIP_STEER_e) {
iVar1->m034D = 1;
ship->m034D = 1;
return false;
}
@@ -575,7 +588,7 @@ BOOL daPy_lk_c::procShipSteer_init() {
gravity = 0.0f;
mVelocity = 0.0f;
speed.y = 0.0f;
iVar1->m034D = 1;
ship->m034D = 1;
initShipBaseAnime();
setShipRidePos(1);
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e);
@@ -599,7 +612,7 @@ BOOL daPy_lk_c::procShipPaddle_init() {
return false;
}
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
BOOL bVar1;
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && !checkShipNotNormalMode()) {
bVar1 = true;
@@ -611,10 +624,10 @@ BOOL daPy_lk_c::procShipPaddle_init() {
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
iVar1->m034D = 2;
ship->m034D = 2;
initShipBaseAnime();
if (!bVar1) {
setOldRootQuaternion(0, shape_angle.y - iVar1->shape_angle.y, 0);
setOldRootQuaternion(0, shape_angle.y - ship->shape_angle.y, 0);
}
setShipRidePos(1);
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e);
@@ -632,7 +645,7 @@ BOOL daPy_lk_c::procShipPaddle() {
}
setShipRidePos(1);
dComIfGp_setRStatus(0x2c);
if ((dComIfGp_getDoStatus() == 0) && (dComIfGp_getShipActor()->speedF >= 3.0f)) {
if (dComIfGp_getDoStatus() == 0 && dComIfGp_getShipActor()->speedF >= 3.0f) {
dComIfGp_setDoStatus(19);
}
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e)) {
@@ -642,14 +655,12 @@ BOOL daPy_lk_c::procShipPaddle() {
}
} else {
onResetFlg0(daPyRFlg0_UNK4000000);
if (((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000))) &&
(dComIfGp_event_runCheck() == 0))
{
if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000) && dComIfGp_event_runCheck() == 0) {
setSubjectMode();
}
}
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if ((m34D0 == -1) || (m34D0 == -2)) {
if (m34D0 == -1 || m34D0 == -2) {
if (m34D0 == -2) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(168.0f)) {
voiceStart(48);
@@ -657,35 +668,31 @@ BOOL daPy_lk_c::procShipPaddle() {
voiceStart(47);
}
}
if (((mStickDistance > 0.05f) || (dComIfGp_event_runCheck())) ||
(dComIfGp_getDoStatus() != 29) || (ship->checkForceMove()) || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f))
if ((mStickDistance > 0.05f || dComIfGp_event_runCheck()) || dComIfGp_getDoStatus() != 29 ||
ship->checkForceMove() || (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f))
{
initShipBaseAnime();
m34D0 = cM_rndF(150.0f) + 300.0f;
}
} else {
if (((!dComIfGp_event_runCheck()) && (dComIfGp_getDoStatus() == 29)) &&
(mStickDistance <= 0.05f) && (!ship->checkForceMove()) && (!checkShipNotNormalMode()))
{
m34D0--;
if (m34D0 == 0) {
dVar6 = cM_rnd();
m34D0 = -1;
if (dVar6 < 0.3333f) {
dVar5 = ANM_FREEA;
} else {
if (dVar6 < 0.6666f) {
dVar5 = ANM_FREEB;
m34D0 = -2;
} else {
dVar5 = ANM_FREED;
}
}
setSingleMoveAnime(dVar5, 1.0f, 0.0f, -1, 5.0f);
} else if (!dComIfGp_event_runCheck() && dComIfGp_getDoStatus() == 29 && mStickDistance <= 0.05f &&
!ship->checkForceMove() && !checkShipNotNormalMode())
{
m34D0--;
if (m34D0 == 0) {
dVar6 = cM_rnd();
m34D0 = -1;
if (dVar6 < 0.3333f) {
dVar5 = ANM_FREEA;
} else if (dVar6 < 0.6666f) {
dVar5 = ANM_FREEB;
m34D0 = -2;
} else {
dVar5 = ANM_FREED;
}
} else {
m34D0 = cM_rndF(150.0f) + 300.0f;
setSingleMoveAnime(dVar5, 1.0f, 0.0f, -1, 5.0f);
}
} else {
m34D0 = cM_rndF(150.0f) + 300.0f;
}
return true;
@@ -693,11 +700,11 @@ BOOL daPy_lk_c::procShipPaddle() {
/* 801416BC-801417EC .text procShipScope_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procShipScope_init(int param_0) {
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_SCOPE_e);
deleteEquipItem(TRUE);
gravity = 0.0f;
iVar1->m034D = 2;
ship->m034D = 2;
setShipRidePos(0);
setSingleMoveAnime(ANM_WAITS, daPy_HIO_move_c0::m.field_0x38, 0.0f, -1, 5.0f);
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e);
@@ -722,14 +729,11 @@ BOOL daPy_lk_c::procShipScope() {
}
if (checkScopeEnd()) {
procShipPaddle_init();
} else {
if ((((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x10))) &&
(!dComIfGp_event_runCheck())) &&
(mDemo.getDemoType() == 0))
{
shape_angle.y = fopCamM_GetAngleY(dComIfGp_getCamera(mCameraInfoIdx));
iVar2 = 0;
}
} else if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x10) && !dComIfGp_event_runCheck() &&
mDemo.getDemoType() == 0)
{
shape_angle.y = fopCamM_GetAngleY(dComIfGp_getCamera(mCameraInfoIdx));
iVar2 = 0;
}
offNoResetFlg0(daPyFlg0_SCOPE_CANCEL);
setShipRidePos(iVar2);
@@ -738,7 +742,7 @@ BOOL daPy_lk_c::procShipScope() {
/* 801418B4-801419B4 .text procShipBoomerang_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipBoomerang_init() {
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
if (mCurProc == daPyProc_SHIP_BOOMERANG_e) {
return false;
}
@@ -746,7 +750,7 @@ BOOL daPy_lk_c::procShipBoomerang_init() {
commonProcInit(daPyProc_SHIP_BOOMERANG_e);
deleteEquipItem(TRUE);
gravity = 0.0f;
iVar1->m034D = 2;
ship->m034D = 2;
mEquipItem = dItem_BOOMERANG_e;
setSingleMoveAnime(ANM_ATNRS, 0.0f, 0.0f, -1, 5.0f);
setActAnimeUpper(LKANM_BCK_BOOMWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, -1.0f);
@@ -754,7 +758,7 @@ BOOL daPy_lk_c::procShipBoomerang_init() {
makeItemType();
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e | daPyStts0_BOOMERANG_AIM_e);
setShipRidePos(0);
m34D4 = iVar1->shape_angle.y;
m34D4 = ship->shape_angle.y;
m34DA = 0;
return true;
}
@@ -764,57 +768,52 @@ BOOL daPy_lk_c::procShipBoomerang() {
if (changeShipEndProc()) {
dComIfGp_clearPlayerStatus0(0, daPyStts0_BOOMERANG_WAIT_e);
return true;
} else {
setShipRidePos(0);
if (mActorKeepThrow.getActor() == NULL) {
if (!checkUpperAnime(LKANM_BCK_BOOMCATCH)) {
dComIfGp_setDoStatus(7);
if (doTrigger()) {
{
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
}
}
}
setShipRidePos(0);
if (mActorKeepThrow.getActor() == NULL) {
if (!checkUpperAnime(LKANM_BCK_BOOMCATCH)) {
dComIfGp_setDoStatus(7);
if (doTrigger()) {
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
}
}
mSightPacket.offDrawFlg();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (!checkUpperAnime(LKANM_BCK_BOOMCATCH)) {
if (mEquipItem == dItem_BOOMERANG_e) {
if (checkUpperAnime(LKANM_BCK_BOOMWAIT)) {
setShipAttentionAnmSpeed(daPy_HIO_boom_c0::m.field_0x18);
checkNextActionBoomerangReady();
if (mpAttention->Lockon()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
if (setBodyAngleToCamera()) {
daBoomerang_c* this_01 = (daBoomerang_c*)mActorKeepEquip.getActor();
if (this_01 != NULL) {
{
cXyz local_28;
checkSightLine(this_01->getFlyMax(), &local_28);
mSightPacket.setPos(&local_28);
mSightPacket.onDrawFlg();
}
}
}
mSightPacket.offDrawFlg();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (!checkUpperAnime(LKANM_BCK_BOOMCATCH)) {
if (mEquipItem == dItem_BOOMERANG_e) {
if (checkUpperAnime(LKANM_BCK_BOOMWAIT)) {
setShipAttentionAnmSpeed(daPy_HIO_boom_c0::m.field_0x18);
checkNextActionBoomerangReady();
if (mpAttention->Lockon()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
if (setBodyAngleToCamera()) {
daBoomerang_c* this_01 = (daBoomerang_c*)mActorKeepEquip.getActor();
if (this_01 != NULL) {
cXyz local_28;
checkSightLine(this_01->getFlyMax(), &local_28);
mSightPacket.setPos(&local_28);
mSightPacket.onDrawFlg();
}
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
}
} else {
if (mActorKeepThrow.getActor() == NULL) {
return procShipPaddle_init();
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
setShapeAngleToAtnActor();
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24);
}
} else {
if (mActorKeepThrow.getActor() == NULL) {
return procShipPaddle_init();
}
setShapeAngleToAtnActor();
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24);
}
m34D4 = ship->shape_angle.y;
}
m34D4 = ship->shape_angle.y;
return true;
}
@@ -849,53 +848,49 @@ BOOL daPy_lk_c::procShipHookshot_init() {
/* 80141CF8-80141F2C .text procShipHookshot__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipHookshot() {
/* Nonmatching - regalloc */
if (changeShipEndProc()) {
return true;
}
setShipRidePos(0);
dComIfGp_setDoStatus(7);
daHookshot_c* pfVar4 = (daHookshot_c*)mActorKeepEquip.getActor();
if (doTrigger() || pfVar4 == NULL ||
(mProcVar0.m3570 != 0 && m355E == 0 && !mpAttention->Lockon()))
{
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
if (doTrigger() || hookshot == NULL || (mProcVar0.m3570 != 0 && m355E == 0 && !mpAttention->Lockon())) {
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
} else {
mSightPacket.offDrawFlg();
checkNextActionHookshotReady();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (pfVar4->checkWait()) {
setShipAttentionAnmSpeed(1.0f);
}
if (mpAttention->Lockon()) {
if (pfVar4->checkWait()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
}
mProcVar0.m3570 = 1;
}
mSightPacket.offDrawFlg();
checkNextActionHookshotReady();
daShip_c* ship = dComIfGp_getShipActor();
if (hookshot->checkWait()) {
setShipAttentionAnmSpeed(1.0f);
}
if (mpAttention->Lockon()) {
if (hookshot->checkWait()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
setBodyAngleToCamera();
mProcVar0.m3570 = 0;
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
if (pfVar4->checkWait()) {
if (!mpAttention->Lockon()) {
setHookshotSight();
} else {
mSightPacket.offDrawFlg();
}
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK40000_e);
} else {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40000_e);
}
m34D4 = ship->shape_angle.y;
mProcVar0.m3570 = 1;
} else {
m34DA = 0;
setBodyAngleToCamera();
mProcVar0.m3570 = 0;
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
if (hookshot->checkWait()) {
if (!mpAttention->Lockon()) {
setHookshotSight();
} else {
mSightPacket.offDrawFlg();
}
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK40000_e);
} else {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40000_e);
}
m34D4 = ship->shape_angle.y;
return true;
}
@@ -933,15 +928,13 @@ BOOL daPy_lk_c::procShipBow_init() {
/* 80142084-80142250 .text procShipBow__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipBow() {
if ((mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK44_e) && (changeShipEndProc())) {
if ((mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK44_e) && changeShipEndProc()) {
return true;
}
setShipRidePos(0);
if (mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK44_e) {
dComIfGp_setDoStatus(7);
if ((doTrigger()) ||
(((!mpAttention->Lockon()) && (mActorKeepEquip.getActor() == NULL)) && (mProcVar0.m3570 != 0)))
{
if (doTrigger() || ((!mpAttention->Lockon() && mActorKeepEquip.getActor() == NULL) && mProcVar0.m3570 != 0)) {
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
@@ -949,11 +942,11 @@ BOOL daPy_lk_c::procShipBow() {
} else {
dComIfGp_evmng_cutEnd(mStaffIdx);
}
daShip_c* iVar1 = (daShip_c*)dComIfGp_getShipActor();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (checkUpperAnime(LKANM_BCK_BOWWAIT)) {
setShipAttentionAnmSpeed(1.0f);
}
if ((mpAttention->Lockon()) && (mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK44_e)) {
if (mpAttention->Lockon() && (mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK44_e)) {
setShipAttnetionBodyAngle();
mProcVar0.m3570 = 1;
} else {
@@ -962,9 +955,9 @@ BOOL daPy_lk_c::procShipBow() {
mProcVar0.m3570 = 0;
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(iVar1->shape_angle.y - m34D4);
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
m34D4 = iVar1->shape_angle.y;
m34D4 = ship->shape_angle.y;
checkNextActionBowReady();
m35EC = mFrameCtrlUpper[UPPER_MOVE2_e].getFrame();
return true;
@@ -976,12 +969,12 @@ BOOL daPy_lk_c::procShipCannon_init() {
return false;
}
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_CANNON_e);
deleteEquipItem(TRUE);
gravity = 0.0f;
mVelocity = 0.0f;
iVar1->m034D = 9;
ship->m034D = 9;
initShipBaseAnime();
setShipRidePos(1);
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e);
@@ -1009,13 +1002,13 @@ BOOL daPy_lk_c::procShipCrane_init() {
return false;
}
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_CRANE_e);
deleteEquipItem(TRUE);
gravity = 0.0f;
mVelocity = 0.0f;
iVar1->m034D = 10;
if ((s16)iVar1->mCurrentRopeSegmentIndex != 0) {
ship->m034D = 10;
if ((s16)ship->mCurrentRopeSegmentIndex != 0) {
initShipCraneAnime();
} else {
initShipBaseAnime();
@@ -1038,45 +1031,49 @@ BOOL daPy_lk_c::procShipGetOff_init() {
return false;
}
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_GET_OFF_e);
deleteEquipItem(TRUE);
setSingleMoveAnime(ANM_DASH, daPy_HIO_move_c0::m.field_0x40, 0.0f, -1, 5.0f);
mVelocity = 8.0f;
gravity = 0.0f;
shape_angle.y = iVar1->shape_angle.y + -0x4000;
shape_angle.y = ship->shape_angle.y + -0x4000;
current.angle.y = shape_angle.y;
mProcVar0.m3570 = 0;
m370C.x = current.pos.x + cM_ssin(shape_angle.y) * l_ship_ledge.x;
m370C.y = iVar1->current.pos.y + l_ship_ledge.y;
m370C.y = ship->current.pos.y + l_ship_ledge.y;
m370C.z = current.pos.z + cM_scos(shape_angle.y) * l_ship_ledge.x;
iVar1->m034D = 5;
ship->m034D = 5;
mBodyAngle.y = 0;
m35A0 = iVar1->current.pos.y;
m35A0 = ship->current.pos.y;
return true;
}
/* 80142A5C-80142C08 .text procShipGetOff__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipGetOff() {
/* Nonmatching - branching */
daShip_c* iVar1 = dComIfGp_getShipActor();
if (iVar1 == 0) {
checkNextMode(0);
} else if (mProcVar0.m3570 == 0) {
current.pos.y = current.pos.y + (iVar1->current.pos.y - m35A0);
cLib_chaseF(&current.pos.y, iVar1->current.pos.y + l_ship_ledge.y, 4.0f);
m35A0 = iVar1->current.pos.y;
daShip_c* ship = dComIfGp_getShipActor();
if (ship == NULL) {
return checkNextMode(0);
}
if (mProcVar0.m3570 == 0) {
current.pos.y = current.pos.y + (ship->current.pos.y - m35A0);
cLib_chaseF(&current.pos.y, ship->current.pos.y + l_ship_ledge.y, 4.0f);
m35A0 = ship->current.pos.y;
s16 sVar3 = cLib_targetAngleY(&current.pos, &m370C);
if (cLib_distanceAngleS(sVar3, shape_angle.y) >= 0x4000) {
setSingleMoveAnime(
ANM_JMPST, daPy_HIO_autoJump_c0::m.field_0x20, daPy_HIO_autoJump_c0::m.field_0x2C,
daPy_HIO_autoJump_c0::m.field_0x2, daPy_HIO_autoJump_c0::m.field_0x30);
ANM_JMPST,
daPy_HIO_autoJump_c0::m.field_0x20,
daPy_HIO_autoJump_c0::m.field_0x2C,
daPy_HIO_autoJump_c0::m.field_0x2,
daPy_HIO_autoJump_c0::m.field_0x30
);
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
mVelocity = daPy_HIO_ship_c0::m.field_0x10;
speed.y = daPy_HIO_ship_c0::m.field_0x14;
mProcVar0.m3570 = 1;
m34C2 = 1;
iVar1->m034D = 6;
ship->m034D = 6;
onModeFlg(ModeFlg_MIDAIR);
}
} else {
@@ -1084,13 +1081,11 @@ BOOL daPy_lk_c::procShipGetOff() {
dComIfGp_evmng_cutEnd(mStaffIdx);
if (mAcch.ChkGroundHit()) {
changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24);
} else {
if (checkFanGlideProc(0)) {
return true;
} else if (speed.y < -gravity) {
procFall_init(0, daPy_HIO_smallJump_c0::m.field_0x18);
setTextureAnime(0x37, 0);
}
} else if (checkFanGlideProc(0)) {
return true;
} else if (speed.y < -gravity) {
procFall_init(0, daPy_HIO_smallJump_c0::m.field_0x18);
setTextureAnime(0x37, 0);
}
}
return true;
@@ -1098,10 +1093,10 @@ BOOL daPy_lk_c::procShipGetOff() {
/* 80142C08-80142C9C .text procShipRestart_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipRestart_init() {
daShip_c* iVar1 = dComIfGp_getShipActor();
daShip_c* ship = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_RESTART_e);
gravity = 0.0f;
iVar1->m034D = 2;
ship->m034D = 2;
setShipRidePos(1);
setSingleMoveAnime(ANM_SEARESET, 1.0f, 0.0f, -1, -1.0f);
dComIfGp_setPlayerStatus0(0, daPyStts0_SHIP_RIDE_e);
+1 -1
View File
@@ -260,7 +260,7 @@ BOOL daPy_lk_c::procVomitLand() {
checkNextMode(1);
}
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
if ((s32)m34D0 > 0) {
if (m34D0 > 0) {
m34D0--;
} else {
setSingleMoveAnime(
+166 -152
View File
@@ -43,30 +43,31 @@ void daPy_lk_c::setEnemyWeaponAtParam(BOOL r4) {
BOOL daPy_lk_c::procWeaponNormalSwing_init() {
if (mActorKeepEquip.getActor() == NULL) {
return false;
} else {
commonProcInit(daPyProc_WEAPON_NORMAL_SWING_e);
setSingleMoveAnime(
ANM_CUTBOKO,
daPy_HIO_cutBoko_c0::m.field_0x10,
daPy_HIO_cutBoko_c0::m.field_0x18,
daPy_HIO_cutBoko_c0::m.field_0x6,
daPy_HIO_cutBoko_c0::m.field_0x34
);
current.angle.y = shape_angle.y;
m3700 = cXyz::Zero;
m34C2 = 1;
voiceStart(1);
if ((mpAttention->Lockon()) || (mStickDistance <= 0.05f)) {
m34D4 = shape_angle.y;
} else {
m34D4 = m34E8;
}
dComIfGp_setPlayerStatus0(0, daPyStts0_SWORD_SWING_e);
m351E = m34DC;
setBlurPosResource(LKANM__CUTBOKO_POS);
setEnemyWeaponAtParam(0);
m34D0 = daPy_HIO_cutBoko_c0::m.field_0x4;
}
commonProcInit(daPyProc_WEAPON_NORMAL_SWING_e);
setSingleMoveAnime(
ANM_CUTBOKO,
daPy_HIO_cutBoko_c0::m.field_0x10,
daPy_HIO_cutBoko_c0::m.field_0x18,
daPy_HIO_cutBoko_c0::m.field_0x6,
daPy_HIO_cutBoko_c0::m.field_0x34
);
current.angle.y = shape_angle.y;
m3700 = cXyz::Zero;
m34C2 = 1;
voiceStart(1);
if (mpAttention->Lockon() || mStickDistance <= 0.05f) {
m34D4 = shape_angle.y;
} else {
m34D4 = m34E8;
}
dComIfGp_setPlayerStatus0(0, daPyStts0_SWORD_SWING_e);
m351E = m34DC;
setBlurPosResource(LKANM__CUTBOKO_POS);
setEnemyWeaponAtParam(0);
m34D0 = daPy_HIO_cutBoko_c0::m.field_0x4;
return true;
}
@@ -74,17 +75,17 @@ BOOL daPy_lk_c::procWeaponNormalSwing_init() {
BOOL daPy_lk_c::procWeaponNormalSwing() {
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) {
if (swordButton() && mActorKeepEquip.getActor() != NULL) {
onNoResetFlg0(daPyFlg0_UNK4);
} else {
offNoResetFlg0(daPyFlg0_UNK4);
}
if ((frameCtrl.getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) {
if (frameCtrl.getRate() < 0.01f || mActorKeepEquip.getActor() == NULL) {
if (mActorKeepEquip.getActor() == NULL) {
m34D0 = 0;
offNoResetFlg0(daPyFlg0_UNK4);
}
if ((int)m34D0 > 0) {
if (m34D0 > 0) {
m34D0--;
} else {
mVelocity = 0.0f;
@@ -103,46 +104,49 @@ BOOL daPy_lk_c::procWeaponNormalSwing() {
mVelocity = dVar4;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTRER)) {
return true;
}
m34C2 = 1;
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
m34C2 = 1;
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x38)) {
mVelocity = std::fabsf(speedF) * daPy_HIO_cutBoko_c0::m.field_0x20 + daPy_HIO_cutBoko_c0::m.field_0x24;
}
if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x3C)) {
frameCtrl.setRate(daPy_HIO_cutBoko_c0::m.field_0x14);
}
if ((frameCtrl.getFrame() >= daPy_HIO_cutBoko_c0::m.field_0x40) &&
(frameCtrl.getFrame() < daPy_HIO_cutBoko_c0::m.field_0x44))
{
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
}
onResetFlg0(daPyRFlg0_UNK2);
}
cLib_addCalc(
&mVelocity,
0.0f,
daPy_HIO_cutBoko_c0::m.field_0x30,
daPy_HIO_cutBoko_c0::m.field_0x28,
daPy_HIO_cutBoko_c0::m.field_0x2C
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x38)) {
mVelocity = std::fabsf(speedF) * daPy_HIO_cutBoko_c0::m.field_0x20 + daPy_HIO_cutBoko_c0::m.field_0x24;
}
if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x3C)) {
frameCtrl.setRate(daPy_HIO_cutBoko_c0::m.field_0x14);
}
if (frameCtrl.getFrame() >= daPy_HIO_cutBoko_c0::m.field_0x40 &&
frameCtrl.getFrame() < daPy_HIO_cutBoko_c0::m.field_0x44)
{
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
}
onResetFlg0(daPyRFlg0_UNK2);
}
cLib_addCalc(
&mVelocity,
0.0f,
daPy_HIO_cutBoko_c0::m.field_0x30,
daPy_HIO_cutBoko_c0::m.field_0x28,
daPy_HIO_cutBoko_c0::m.field_0x2C
);
return true;
}
@@ -167,17 +171,20 @@ BOOL daPy_lk_c::procWeaponSideSwing_init() {
/* 80153A68-80153C30 .text procWeaponSideSwing__9daPy_lk_cFv */
BOOL daPy_lk_c::procWeaponSideSwing() {
if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) {
if (swordButton() && mActorKeepEquip.getActor() != NULL) {
onNoResetFlg0(daPyFlg0_UNK4);
} else {
offNoResetFlg0(daPyFlg0_UNK4);
}
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f || mActorKeepEquip.getActor() == NULL) {
mVelocity = 0.0f;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_cutBoko_c0::m.field_0x50) {
}
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_cutBoko_c0::m.field_0x50) {
f32 dVar4 = mVelocity;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
@@ -188,32 +195,34 @@ BOOL daPy_lk_c::procWeaponSideSwing() {
mVelocity = dVar4;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
} else {
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_cutBoko_c0::m.field_0x58) &&
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_cutBoko_c0::m.field_0x5C))
{
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
}
onResetFlg0(daPyRFlg0_UNK2);
}
}
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_cutBoko_c0::m.field_0x58) &&
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_cutBoko_c0::m.field_0x5C))
{
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
}
onResetFlg0(daPyRFlg0_UNK2);
}
return true;
}
@@ -229,7 +238,7 @@ BOOL daPy_lk_c::procWeaponFrontSwingReady_init() {
);
current.angle.y = shape_angle.y;
mVelocity = 0.0f;
if ((mpAttention->Lockon()) || (mStickDistance <= 0.05f)) {
if (mpAttention->Lockon() || mStickDistance <= 0.05f) {
m34D4 = shape_angle.y;
} else {
m34D4 = m34E8;
@@ -243,24 +252,26 @@ BOOL daPy_lk_c::procWeaponFrontSwingReady_init() {
BOOL daPy_lk_c::procWeaponFrontSwingReady() {
if (mActorKeepEquip.getActor() == NULL) {
return checkNextMode(0);
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
return procWeaponFrontSwing_init();
} else {
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
return true;
}
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
return procWeaponFrontSwing_init();
}
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
return true;
}
/* 80153DBC-80153ED8 .text procWeaponFrontSwing_init__9daPy_lk_cFv */
@@ -276,7 +287,7 @@ BOOL daPy_lk_c::procWeaponFrontSwing_init() {
current.angle.y = shape_angle.y;
mVelocity = 0.0f;
voiceStart(1);
if (mpAttention->Lockon() || (mStickDistance <= 0.05f)) {
if (mpAttention->Lockon() || mStickDistance <= 0.05f) {
m34D4 = shape_angle.y;
} else {
m34D4 = m34E8;
@@ -293,29 +304,29 @@ BOOL daPy_lk_c::procWeaponFrontSwing_init() {
BOOL daPy_lk_c::procWeaponFrontSwing() {
if (mActorKeepEquip.getActor() == NULL) {
return checkNextMode(0);
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
return procWeaponFrontSwingEnd_init();
} else {
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
} else {
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
onResetFlg0(daPyRFlg0_UNK2);
return true;
}
}
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
return procWeaponFrontSwingEnd_init();
}
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
}
if (mpAttnActorLockOn != NULL) {
setShapeAngleToAtnActor();
m34D4 = shape_angle.y;
} else {
cLib_addCalcAngleS(
&shape_angle.y,
m34D4,
daPy_HIO_turn_c0::m.field_0x4,
daPy_HIO_turn_c0::m.field_0x0,
daPy_HIO_turn_c0::m.field_0x2
);
}
current.angle.y = shape_angle.y;
onResetFlg0(daPyRFlg0_UNK2);
return true;
}
/* 80153FA0-80154014 .text procWeaponFrontSwingEnd_init__9daPy_lk_cFv */
@@ -336,12 +347,13 @@ BOOL daPy_lk_c::procWeaponFrontSwingEnd_init() {
/* 80154014-801540B4 .text procWeaponFrontSwingEnd__9daPy_lk_cFv */
BOOL daPy_lk_c::procWeaponFrontSwingEnd() {
if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) {
if (swordButton() && mActorKeepEquip.getActor() != NULL) {
onNoResetFlg0(daPyFlg0_UNK4);
} else {
offNoResetFlg0(daPyFlg0_UNK4);
}
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f || mActorKeepEquip.getActor() == NULL) {
return checkNextMode(0);
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_cutBoko_c0::m.field_0x7C) {
return checkNextMode(1);
@@ -364,27 +376,29 @@ BOOL daPy_lk_c::procWeaponThrow_init() {
BOOL daPy_lk_c::procWeaponThrow() {
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
if ((frameCtrl.getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) {
checkNextMode(0);
} else if (frameCtrl.getFrame() > 100.0f) {
checkNextMode(1);
} else {
if (frameCtrl.checkPass(10.0f)) {
daBoko_c* boko = static_cast<daBoko_c*>(mActorKeepEquip.getActor());
s16 uVar2 = 0xf400;
if (mpAttnActorLockOn != NULL) {
cXyz local_34 = mpAttnActorLockOn->eyePos - boko->current.pos;
f32 dVar5 = local_34.abs();
if (dVar5 >= 1.0f) {
dVar5 = local_34.absXZ();
uVar2 = cM_atan2s(-local_34.y, dVar5);
}
}
boko->m2BA = 1;
boko->m2CA = uVar2;
voiceStart(0);
deleteEquipItem(FALSE);
}
return true;
if (frameCtrl.getRate() < 0.01f || mActorKeepEquip.getActor() == NULL) {
return checkNextMode(0);
}
if (frameCtrl.getFrame() > 100.0f) {
return checkNextMode(1);
}
if (frameCtrl.checkPass(10.0f)) {
daBoko_c* boko = static_cast<daBoko_c*>(mActorKeepEquip.getActor());
s16 uVar2 = 0xf400;
if (mpAttnActorLockOn != NULL) {
cXyz local_34 = mpAttnActorLockOn->eyePos - boko->current.pos;
f32 dVar5 = local_34.abs();
if (dVar5 >= 1.0f) {
dVar5 = local_34.absXZ();
uVar2 = cM_atan2s(-local_34.y, dVar5);
}
}
boko->m2BA = 1;
boko->m2CA = uVar2;
voiceStart(0);
deleteEquipItem(FALSE);
}
return true;
}
+2 -2
View File
@@ -3533,7 +3533,7 @@ BOOL daShip_c::execute() {
mEvtStaffId = -1;
}
offStateFlg(daSHIP_SFLG(daSFLG_UNK40_e | daSFLG_UNK80_e | daSFLG_UNK100_e | daSFLG_UNK4000_e | daSFLG_UNK20000_e | daSFLG_UNK100000_e | daSFLG_UNK8000000_e));
offStateFlg(daSHIP_SFLG(daSFLG_UNK40_e | daSFLG_UNK80_e | daSFLG_UNK100_e | daSFLG_UNK4000_e | daSFLG_SHOOT_CANNON_e | daSFLG_UNK100000_e | daSFLG_UNK8000000_e));
if (m0388 > 0) {
m0388--;
@@ -3971,7 +3971,7 @@ BOOL daShip_c::execute() {
seStart(JA_SE_LK_SHIP_CANNON_FIRE, &m1038);
onStateFlg(daSFLG_UNK20000_e);
onStateFlg(daSFLG_SHOOT_CANNON_e);
dComIfGp_setItemBombNumCount(-1);
+22 -22
View File
@@ -24,13 +24,13 @@
static Vec dummy_2100 = {1.0f, 1.0f, 1.0f};
/* 8000DA70-8000DCF0 .text mDoExt_setJ3DData__FPA4_fPC16J3DTransformInfoUs */
void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u16 param_2) {
void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u16 jnt_no) {
bool local_28;
if (cM3d_IsZero(transformInfo->mScale.x - 1.0f) && cM3d_IsZero(transformInfo->mScale.y - 1.0f) && cM3d_IsZero(transformInfo->mScale.z - 1.0f)) {
j3dSys.getModel()->setScaleFlag(param_2, 1);
j3dSys.getModel()->setScaleFlag(jnt_no, 1);
local_28 = true;
} else {
j3dSys.getModel()->setScaleFlag(param_2, 0);
j3dSys.getModel()->setScaleFlag(jnt_no, 0);
local_28 = false;
}
mtx[0][3] = transformInfo->mTranslate.x;
@@ -48,7 +48,7 @@ void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u16 param
mtx[2][1] *= transformInfo->mScale.y;
mtx[2][2] *= transformInfo->mScale.z;
}
if (j3dSys.getModel()->getModelData()->getJointNodePointer(param_2)->getScaleCompensate() == 1) {
if (j3dSys.getModel()->getModelData()->getJointNodePointer(jnt_no)->getScaleCompensate() == 1) {
f32 x = 1.0f / J3DSys::mParentS.x;
f32 y = 1.0f / J3DSys::mParentS.y;
f32 z = 1.0f / J3DSys::mParentS.z;
@@ -63,7 +63,7 @@ void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u16 param
mtx[2][2] *= z;
}
mDoMtx_concat(J3DSys::mCurrentMtx, mtx, J3DSys::mCurrentMtx);
j3dSys.getModel()->setAnmMtx(param_2, J3DSys::mCurrentMtx);
j3dSys.getModel()->setAnmMtx(jnt_no, J3DSys::mCurrentMtx);
J3DSys::mParentS.x = transformInfo->mScale.x;
J3DSys::mParentS.y = transformInfo->mScale.y;
J3DSys::mParentS.z = transformInfo->mScale.z;
@@ -1010,26 +1010,26 @@ s32 mDoExt_resIDToIndex(JKRArchive* p_archive, u16 id) {
}
/* 80011EE4-80012140 .text calc__25mDoExt_MtxCalcAnmBlendTblFUs */
void mDoExt_MtxCalcAnmBlendTbl::calc(u16 param_0) {
void mDoExt_MtxCalcAnmBlendTbl::calc(u16 jnt_no) {
j3dSys.setCurrentMtxCalc(this);
if (mNum == 1) {
J3DTransformInfo info1;
mAnmRatio->getAnmTransform()->getTransform(param_0, &info1);
calcTransform(param_0, info1); // Doesn't match because J3DMtxCalcBasic's vtable is in the wrong order
mAnmRatio->getAnmTransform()->getTransform(jnt_no, &info1);
calcTransform(jnt_no, info1);
return;
}
J3DTransformInfo info2;
Quaternion quat1;
Quaternion quat2;
Quaternion quat3;
mAnmRatio->getAnmTransform()->getTransform(param_0, &info2);
mAnmRatio->getAnmTransform()->getTransform(jnt_no, &info2);
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat1);
quat3 = quat1;
for (int i = 1; i < mNum; i++) {
J3DAnmTransform* transform = mAnmRatio[i].getAnmTransform();
if (transform) {
J3DTransformInfo info3;
transform->getTransform(param_0, &info3);
transform->getTransform(jnt_no, &info3);
f32 ratio = mAnmRatio[i].getRatio();
f32 f30 = 1.0f - ratio;
JMAEulerToQuat(info3.mRotation.x, info3.mRotation.y, info3.mRotation.z, &quat2);
@@ -1045,24 +1045,24 @@ void mDoExt_MtxCalcAnmBlendTbl::calc(u16 param_0) {
}
Mtx mtx;
MTXQuat(mtx, &quat3);
mDoExt_setJ3DData(mtx, &info2, param_0);
mDoExt_setJ3DData(mtx, &info2, jnt_no);
}
/* 80012140-80012548 .text calc__28mDoExt_MtxCalcAnmBlendTblOldFUs */
void mDoExt_MtxCalcAnmBlendTblOld::calc(u16 param_0) {
void mDoExt_MtxCalcAnmBlendTblOld::calc(u16 jnt_no) {
j3dSys.setCurrentMtxCalc(this);
J3DTransformInfo info1;
Quaternion quat1;
Quaternion quat2;
Quaternion quat3;
mAnmRatio->getAnmTransform()->getTransform(param_0, &info1);
mAnmRatio->getAnmTransform()->getTransform(jnt_no, &info1);
JMAEulerToQuat(info1.mRotation.x, info1.mRotation.y, info1.mRotation.z, &quat1);
quat3 = quat1;
for (int i = 1; i < mNum; i++) {
if (mAnmRatio[i].getAnmTransform()) {
J3DAnmTransform* transform = mAnmRatio[i].getAnmTransform();
J3DTransformInfo info2;
transform->getTransform(param_0, &info2);
transform->getTransform(jnt_no, &info2);
f32 ratio = mAnmRatio[i].getRatio();
f32 f30 = 1.0f - ratio;
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat2);
@@ -1078,10 +1078,10 @@ void mDoExt_MtxCalcAnmBlendTblOld::calc(u16 param_0) {
}
J3DModel* model = j3dSys.getModel();
J3DTransformInfo* oldTransInfo = mOldFrame->getOldFrameTransInfo(param_0);
Quaternion* oldQuat = mOldFrame->getOldFrameQuaternion(param_0);
J3DTransformInfo* oldTransInfo = mOldFrame->getOldFrameTransInfo(jnt_no);
Quaternion* oldQuat = mOldFrame->getOldFrameQuaternion(jnt_no);
if (mOldFrame->getOldFrameFlg()) {
if (mOldFrame->getOldFrameRate() > 0.0f && mOldFrame->getOldFrameStartJoint() <= param_0 && mOldFrame->getOldFrameEndJoint() > param_0) {
if (mOldFrame->getOldFrameRate() > 0.0f && mOldFrame->getOldFrameStartJoint() <= jnt_no && mOldFrame->getOldFrameEndJoint() > jnt_no) {
f32 oldFrameRate = mOldFrame->getOldFrameRate();
f32 f31 = 1.0f - oldFrameRate;
JMAQuatLerp(oldQuat, &quat1, f31, &quat3);
@@ -1092,21 +1092,21 @@ void mDoExt_MtxCalcAnmBlendTblOld::calc(u16 param_0) {
info1.mScale.y = info1.mScale.y * f31 + oldTransInfo->mScale.y * oldFrameRate;
info1.mScale.z = info1.mScale.z * f31 + oldTransInfo->mScale.z * oldFrameRate;
}
} else if (param_0 == model->getModelData()->getJointNum() - 1) {
} else if (jnt_no == model->getModelData()->getJointNum() - 1) {
mOldFrame->onOldFrameFlg();
}
Mtx mtx;
if (mBeforeCallback) {
mBeforeCallback(mUserArea, param_0, &info1, &quat3);
mBeforeCallback(mUserArea, jnt_no, &info1, &quat3);
}
mDoMtx_quat(mtx, &quat3);
mDoExt_setJ3DData(mtx, &info1, param_0);
mDoExt_setJ3DData(mtx, &info1, jnt_no);
if (mAfterCallback) {
mAfterCallback(mUserArea, param_0, &info1, &quat3);
mAfterCallback(mUserArea, jnt_no, &info1, &quat3);
}
*oldQuat = quat3;
*oldTransInfo = info1;
if (param_0 == model->getModelData()->getJointNum() - 1) {
if (jnt_no == model->getModelData()->getJointNum() - 1) {
mOldFrame->decOldFrameMorfCounter();
}
}