mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-30 11:01:40 -04:00
player_crawl and player_hammer 100%, misc player cleanup
This commit is contained in:
@@ -11,7 +11,7 @@ public:
|
||||
|
||||
};
|
||||
|
||||
void getMiniGameRestArrow() {}
|
||||
int getMiniGameRestArrow() { return 10 - mB78; }
|
||||
void isAnm(signed char) {}
|
||||
void modeProcInit(int) {}
|
||||
|
||||
@@ -128,6 +128,8 @@ public:
|
||||
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x290 */ u8 m290[0xB78 - 0x290];
|
||||
/* 0xB78 */ int mB78;
|
||||
};
|
||||
|
||||
class daNpc_So_HIO_c {
|
||||
|
||||
@@ -469,6 +469,7 @@ public:
|
||||
void offConfuse() { offNoResetFlg1(daPyFlg1_CONFUSE); }
|
||||
bool checkConfuse() const { return checkNoResetFlg1(daPyFlg1_CONFUSE); }
|
||||
bool checkFreezeState() const { return checkNoResetFlg1(daPyFlg1_FREEZE_STATE); }
|
||||
bool checkUseArrowEffect() const { return checkNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
||||
void onUseArrowEffect() { onNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
||||
void offUseArrowEffect() { offNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); }
|
||||
void onLetterReadEyeMove() { onNoResetFlg1(daPyFlg1_LETTER_READ_EYE_MOVE); }
|
||||
@@ -516,13 +517,9 @@ public:
|
||||
void checkBowMiniGame() const {}
|
||||
void checkSoupPowerUp() const {}
|
||||
void checkSubjectAccept() const {}
|
||||
void checkUseArrowEffect() const {}
|
||||
void getRopeJumpLand() const {}
|
||||
void checkRopeForceEnd() const {}
|
||||
|
||||
// This class's weak virtual functions tend to cause weak function ordering issues in TUs that use them.
|
||||
// The proper way to match this is still unknown, so some of the definitions have been temporarily commented out
|
||||
// here so that they can be fakematched instead.
|
||||
virtual MtxP getLeftHandMatrix() = 0;
|
||||
virtual MtxP getRightHandMatrix() = 0;
|
||||
virtual f32 getGroundY() = 0;
|
||||
|
||||
@@ -1287,7 +1287,7 @@ void daItem_c::mode_wait() {
|
||||
break;
|
||||
}
|
||||
|
||||
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y ||
|
||||
if ((mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > current.pos.y) ||
|
||||
(daSea_ChkArea(current.pos.x, current.pos.z) && daSea_calcWave(current.pos.x, current.pos.z) > current.pos.y))
|
||||
{
|
||||
mode_water_init();
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_arrow.h"
|
||||
#include "d/actor/d_a_npc_so.h"
|
||||
#include "d/actor/d_a_player_HIO.h"
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "d/d_procname.h"
|
||||
@@ -66,19 +67,16 @@ BOOL daPy_lk_c::checkBowAnime() const {
|
||||
|
||||
/* 8014A080-8014A180 .text makeArrow__9daPy_lk_cFv */
|
||||
void daPy_lk_c::makeArrow() {
|
||||
/* Nonmatching - missing "cntlzw" instruction, "getItemPartner" */
|
||||
s32 uVar1 = (0x44 - mDemo.getDemoMode()) >> 5 & 0xff;
|
||||
if (((uVar1 == 0) && (dComIfGs_getArrowNum() != 0)) ||
|
||||
((uVar1 != 0 && ((((fopAc_ac_c*)dComIfGp_event_getItemPartner() != 0 &&
|
||||
(fopAcM_GetName(dComIfGp_event_getPt1()) == PROC_NPC_SO)) &&
|
||||
(0 < 10 - (dComIfGp_event_getPt1()->actor_type)))))))
|
||||
/* Nonmatching - weird gameinfo load */
|
||||
BOOL r4 = mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK44_e;
|
||||
if ((!r4 && dComIfGs_getArrowNum() != 0) ||
|
||||
(r4 && dComIfGp_event_getPt1() != NULL && fopAcM_GetName(dComIfGp_event_getPt1()) == PROC_NPC_SO &&
|
||||
((daNpc_So_c*)dComIfGp_event_getPt1())->getMiniGameRestArrow() > 0))
|
||||
{
|
||||
fopAc_ac_c* arrow_p = (fopAc_ac_c*)fopAcM_fastCreate(PROC_ARROW, 0, ¤t.pos,
|
||||
current.roomNo, NULL, NULL, -1, NULL);
|
||||
fopAc_ac_c* arrow_p = (fopAc_ac_c*)fopAcM_fastCreate(PROC_ARROW, 0, ¤t.pos, current.roomNo);
|
||||
mActorKeepEquip.setData(arrow_p);
|
||||
}
|
||||
m355C = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 8014A180-8014A1CC .text deleteArrow__9daPy_lk_cFv */
|
||||
@@ -172,7 +170,7 @@ BOOL daPy_lk_c::checkNextActionBowReady() {
|
||||
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))
|
||||
!checkUseArrowEffect())
|
||||
{
|
||||
setBowReloadAnime();
|
||||
makeArrow();
|
||||
|
||||
+195
-201
@@ -35,8 +35,7 @@ f32 daPy_lk_c::getCrawlMoveSpeed() {
|
||||
if (fVar1 >= 17.0f) {
|
||||
fVar1 = fVar1 - 17.0f;
|
||||
}
|
||||
return (daPy_HIO_crouch_c0::m.field_0x3C * mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) *
|
||||
cM_fsin((M_PI / 17) * fVar1);
|
||||
return (daPy_HIO_crouch_c0::m.field_0x3C * mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) * cM_fsin((M_PI / 17) * fVar1);
|
||||
}
|
||||
|
||||
/* 80138868-801389D0 .text setCrawlMoveDirectionArrow__9daPy_lk_cFv */
|
||||
@@ -145,9 +144,17 @@ BOOL daPy_lk_c::changeCrawlAutoMoveProc(cXyz* param_1) {
|
||||
var_r29 |= 8;
|
||||
}
|
||||
}
|
||||
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x), 0.5f * (sp34.z + sp28.z), sp70.x,
|
||||
sp70.z, param_1->x - (75.0f * temp_f31),
|
||||
param_1->z - (75.0f * temp_f30), &sp64.x, &sp64.z, &spC))
|
||||
if (cM3d_Len2dSqPntAndSegLine(
|
||||
0.5f * (sp34.x + sp28.x),
|
||||
0.5f * (sp34.z + sp28.z),
|
||||
sp70.x,
|
||||
sp70.z,
|
||||
param_1->x - (75.0f * temp_f31),
|
||||
param_1->z - (75.0f * temp_f30),
|
||||
&sp64.x,
|
||||
&sp64.z,
|
||||
&spC
|
||||
))
|
||||
{
|
||||
sp64.y = current.pos.y;
|
||||
return procCrawlAutoMove_init(var_r29, &sp64);
|
||||
@@ -163,7 +170,7 @@ int daPy_lk_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2) {
|
||||
int iVar4 = dComIfG_Bgsp()->GetSpecialCode(mLinkLinChk);
|
||||
f32 fVar1 = triPla->GetNP()->y;
|
||||
bool bVar2;
|
||||
if (!((fVar1 >= 0.5f) || (fVar1 < -0.8f))) {
|
||||
if (!(fVar1 >= 0.5f || fVar1 < -0.8f)) {
|
||||
bVar2 = true;
|
||||
} else {
|
||||
bVar2 = false;
|
||||
@@ -175,7 +182,7 @@ int daPy_lk_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2) {
|
||||
param_2->y = local_3c.y;
|
||||
param_2->z = -dVar7 * triPla->GetNP()->z;
|
||||
return true;
|
||||
} else if ((iVar4 == 1) || (fVar1 < 0.643832f && (iVar4 == 2))) {
|
||||
} else if (iVar4 == 1 || (fVar1 < 0.643832f && iVar4 == 2)) {
|
||||
*param_2 = (*param_1 - mLinkLinChk.GetCross());
|
||||
return true;
|
||||
}
|
||||
@@ -195,7 +202,7 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) {
|
||||
iVar1 = getCrawlMoveVec(&cStack_50, param_0, &cStack_44);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &cStack_50);
|
||||
iVar2 = getCrawlMoveVec(&cStack_50, param_1, &cStack_38);
|
||||
if ((iVar1 != 0) && (iVar2 != 0)) {
|
||||
if (iVar1 != 0 && iVar2 != 0) {
|
||||
if (cStack_44.abs2() > cStack_38.abs()) {
|
||||
current.pos -= cStack_44;
|
||||
} else {
|
||||
@@ -209,7 +216,9 @@ void daPy_lk_c::crawlBgCheck(cXyz* param_0, cXyz* param_1) {
|
||||
}
|
||||
|
||||
/* 801390B8-801392BC .text checkCrawlSideWall__9daPy_lk_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */
|
||||
BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6) {
|
||||
BOOL daPy_lk_c::checkCrawlSideWall(
|
||||
cXyz* param_1, cXyz* param_2, cXyz* param_3, cXyz* param_4, s16* param_5, s16* param_6
|
||||
) {
|
||||
cXyz local_78;
|
||||
cXyz local_90;
|
||||
|
||||
@@ -225,11 +234,9 @@ BOOL daPy_lk_c::checkCrawlSideWall(cXyz* param_1, cXyz* param_2, cXyz* param_3,
|
||||
*param_4 = mLinkLinChk.GetCross();
|
||||
pfVar1 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
*param_6 = cM_atan2s(pfVar1->GetNP()->x, pfVar1->GetNP()->z);
|
||||
cXyz local_9c = (*param_3 - *param_4);
|
||||
cXyz local_9c = *param_3 - *param_4;
|
||||
f32 temp_f31 = local_9c.abs2XZ();
|
||||
if (cLib_distanceAngleS(*param_5, *param_6) > 0x7F00 && temp_f31 < 5625.0f &&
|
||||
temp_f31 > 3600.0f)
|
||||
{
|
||||
if (cLib_distanceAngleS(*param_5, *param_6) > 0x7F00 && temp_f31 < 5625.0f && temp_f31 > 3600.0f) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -242,7 +249,7 @@ void daPy_lk_c::setDoStatusCrawl() {
|
||||
dComIfGp_setRStatus(dActStts_CROUCH_e);
|
||||
if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x80)) {
|
||||
dComIfGp_setAStatus(dActStts_RETURN_e);
|
||||
if (checkSubjectEnd(1) || (m35D0 > current.pos.y)) {
|
||||
if (checkSubjectEnd(1) || m35D0 > current.pos.y) {
|
||||
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK2000_e);
|
||||
} else {
|
||||
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000_e);
|
||||
@@ -250,15 +257,13 @@ void daPy_lk_c::setDoStatusCrawl() {
|
||||
} else if (dCam_getBody()->ChangeModeOK(4)) {
|
||||
if (m35D0 <= current.pos.y) {
|
||||
onResetFlg0(daPyRFlg0_UNK4000000);
|
||||
if (((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000))) &&
|
||||
(!dComIfGp_event_runCheck()))
|
||||
{
|
||||
if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000) && !dComIfGp_event_runCheck()) {
|
||||
setSubjectMode();
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x80)) &&
|
||||
((mCurProc != daPyProc_CRAWL_MOVE_e || (mProcVar0.m3570 == 0))))
|
||||
if (dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x80) &&
|
||||
(mCurProc != daPyProc_CRAWL_MOVE_e || mProcVar0.m3570 == 0))
|
||||
{
|
||||
setBodyAngleToCamera();
|
||||
if (mBodyAngle.x > 0) {
|
||||
@@ -267,7 +272,6 @@ void daPy_lk_c::setDoStatusCrawl() {
|
||||
} else {
|
||||
mBodyAngle.x = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80139424-801394F0 .text procCrawlStart_init__9daPy_lk_cFv */
|
||||
@@ -301,9 +305,9 @@ BOOL daPy_lk_c::procCrawlStart() {
|
||||
local_20.y = 50.0f;
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &local_20, &cStack_38);
|
||||
crawlBgCheck(&cStack_38, &cStack_38);
|
||||
if ((!spActionButton()) || (m35D0 > 15.0f + current.pos.y)) {
|
||||
if (!spActionButton() || m35D0 > 15.0f + current.pos.y) {
|
||||
procCrawlEnd_init(0, shape_angle.x, shape_angle.z);
|
||||
} else if ((mStickDistance > 0.05f) &&
|
||||
} else if (mStickDistance > 0.05f &&
|
||||
((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) ||
|
||||
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_crouch_c0::m.field_0x28)))
|
||||
{
|
||||
@@ -372,10 +376,8 @@ BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) {
|
||||
|
||||
/* 80139878-8013A004 .text procCrawlMove__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procCrawlMove() {
|
||||
/* Nonmatching - cXyz */
|
||||
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
|
||||
float fVar1;
|
||||
short sVar3;
|
||||
BOOL bVar4;
|
||||
BOOL bVar5;
|
||||
int iVar6;
|
||||
@@ -383,25 +385,32 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
int iVar8;
|
||||
int iVar9;
|
||||
f32 dVar11;
|
||||
cXyz aVStack_3c;
|
||||
cXyz cStack_48;
|
||||
cXyz VStack_54;
|
||||
cXyz cStack_60;
|
||||
cXyz cStack_6c;
|
||||
cXyz cStack_d8;
|
||||
cXyz sp124;
|
||||
cXyz sp118;
|
||||
cXyz sp10C;
|
||||
cXyz sp100;
|
||||
cXyz spF4;
|
||||
cXyz spE8;
|
||||
cXyz spDC;
|
||||
cXyz spD0;
|
||||
cXyz spC4;
|
||||
cXyz spB8;
|
||||
cXyz spAC;
|
||||
cXyz spA0;
|
||||
cXyz sp94;
|
||||
cXyz sp88;
|
||||
|
||||
setDoStatusCrawl();
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_stand_up_offset, &cStack_48);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_up_offset, &aVStack_3c);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_up_offset, &VStack_54);
|
||||
mDoMtx_multVecSR(mpCLModel->getBaseTRMtx(), &l_crawl_min_side_offset, &cStack_60);
|
||||
iVar6 = checkNotCrawlStand(&cStack_48);
|
||||
iVar7 = checkNotCrawlStand(&aVStack_3c);
|
||||
iVar8 = checkNotCrawlStand(&VStack_54);
|
||||
if (((((iVar6 != 0) || (iVar7 != 0)) || (iVar8 != 0)) ||
|
||||
((checkNotCrawlStand(&aVStack_3c, &cStack_60) ||
|
||||
(checkNotCrawlStand(&VStack_54, &cStack_60))))) ||
|
||||
(checkNotCrawlStand(&cStack_48, &cStack_60)))
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_stand_up_offset, &sp118);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_up_offset, &sp124);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_up_offset, &sp10C);
|
||||
mDoMtx_multVecSR(mpCLModel->getBaseTRMtx(), &l_crawl_min_side_offset, &sp100);
|
||||
iVar6 = checkNotCrawlStand(&sp118);
|
||||
iVar7 = checkNotCrawlStand(&sp124);
|
||||
iVar8 = checkNotCrawlStand(&sp10C);
|
||||
if ((((iVar6 != 0 || iVar7 != 0) || iVar8 != 0) ||
|
||||
(checkNotCrawlStand(&sp124, &sp100) || checkNotCrawlStand(&sp10C, &sp100))) ||
|
||||
checkNotCrawlStand(&sp118, &sp100))
|
||||
{
|
||||
bVar5 = false;
|
||||
onModeFlg(ModeFlg_04000000);
|
||||
@@ -409,9 +418,7 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
bVar5 = true;
|
||||
offModeFlg(ModeFlg_04000000);
|
||||
}
|
||||
if (((bVar5 != false) && (!spActionButton())) ||
|
||||
((getSlidePolygon() != NULL || (m35D0 > current.pos.y + 15.0f))))
|
||||
{
|
||||
if ((bVar5 != false && !spActionButton()) || (getSlidePolygon() != NULL || m35D0 > current.pos.y + 15.0f)) {
|
||||
procCrawlEnd_init(1, shape_angle.x, shape_angle.z);
|
||||
} else {
|
||||
bVar4 = false;
|
||||
@@ -423,7 +430,7 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
} else {
|
||||
bVar4 = true;
|
||||
}
|
||||
if (((bVar4 == true) || (frameCtrl.checkPass(0.0f))) || (frameCtrl.checkPass(17.0f))) {
|
||||
if ((bVar4 == true || frameCtrl.checkPass(0.0f)) || frameCtrl.checkPass(17.0f)) {
|
||||
if (mStickDistance > 0.05f) {
|
||||
if (getDirectionFromShapeAngle() != 1) {
|
||||
frameCtrl.setRate(dVar11);
|
||||
@@ -433,49 +440,42 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
frameCtrl.setLoop(frameCtrl.getEnd());
|
||||
}
|
||||
initSeAnime();
|
||||
} else {
|
||||
if (!bVar4) {
|
||||
if (frameCtrl.checkPass(0.0f)) {
|
||||
fVar1 = 0.0f;
|
||||
} else {
|
||||
fVar1 = 17.0f;
|
||||
}
|
||||
frameCtrl.setRate(0.0f);
|
||||
frameCtrl.setFrame(fVar1);
|
||||
((mAnmRatioUnder[UNDER_MOVE0_e]).getAnmTransform())->setFrame(fVar1);
|
||||
} else if (!bVar4) {
|
||||
if (frameCtrl.checkPass(0.0f)) {
|
||||
fVar1 = 0.0f;
|
||||
} else {
|
||||
fVar1 = 17.0f;
|
||||
}
|
||||
frameCtrl.setRate(0.0f);
|
||||
frameCtrl.setFrame(fVar1);
|
||||
((mAnmRatioUnder[UNDER_MOVE0_e]).getAnmTransform())->setFrame(fVar1);
|
||||
}
|
||||
}
|
||||
iVar9 = mProcVar0.m3570;
|
||||
mProcVar0.m3570 = 0;
|
||||
cXyz spC0;
|
||||
cXyz spB4;
|
||||
cXyz spA8;
|
||||
cXyz sp9C;
|
||||
cXyz sp90;
|
||||
s16 sp16;
|
||||
s16 sp14;
|
||||
s16 sp0A;
|
||||
s16 sp08;
|
||||
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_side_offset, &spC0);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &cStack_6c);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_side_offset, &spE8);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_top_up_offset, &spF4);
|
||||
|
||||
if (frameCtrl.getRate() >= 0.0f) {
|
||||
sp90 = (aVStack_3c - cStack_6c) * 0.5f;
|
||||
spB8 = (sp124 - spF4) * 0.5f;
|
||||
} else if (frameCtrl.getRate() < 0.0f) {
|
||||
sp90 = (cStack_48 - cStack_6c) * 0.5f;
|
||||
spB8 = (sp10C - spF4) * 0.5f;
|
||||
}
|
||||
|
||||
spC0 += sp90;
|
||||
cStack_6c += sp90;
|
||||
spB4 = (cStack_6c * 2.0f) - spC0;
|
||||
spE8 += spB8;
|
||||
spF4 += spB8;
|
||||
spDC = (spF4 * 2.0f) - spE8;
|
||||
|
||||
if (((iVar9 == 0) && checkCrawlSideWall(&cStack_6c, &spC0, &spA8, &sp9C, &sp16, &sp14)) ||
|
||||
checkCrawlSideWall(&cStack_6c, &spB4, &sp9C, &spA8, &sp14, &sp16))
|
||||
if (!bVar5 && (checkCrawlSideWall(&spF4, &spE8, &spD0, &spC4, &sp0A, &sp08) ||
|
||||
checkCrawlSideWall(&spF4, &spDC, &spC4, &spD0, &sp08, &sp0A)))
|
||||
{
|
||||
mProcVar0.m3570 = 1;
|
||||
mResetFlg0 = mResetFlg0 | 0x1000;
|
||||
m370C = ((spA8 + sp9C) * 0.5f) - sp90;
|
||||
m34D4 = sp16 + 0x4000;
|
||||
m370C = ((spD0 + spC4) * 0.5f) - spB8;
|
||||
m34D4 = sp0A + 0x4000;
|
||||
}
|
||||
|
||||
if (mProcVar0.m3570 != 0) {
|
||||
@@ -492,42 +492,37 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 10.0f, 1.0f);
|
||||
}
|
||||
} else {
|
||||
if (((iVar9 != 0) && (iVar6 != 0)) &&
|
||||
((iVar7 != 0 &&
|
||||
((iVar8 != 0 && (iVar6 = changeCrawlAutoMoveProc(&cStack_6c), iVar6 != 0))))))
|
||||
{
|
||||
if (iVar9 != 0 && iVar6 != 0 && iVar7 != 0 && iVar8 != 0 && changeCrawlAutoMoveProc(&spF4)) {
|
||||
return true;
|
||||
}
|
||||
if ((mStickDistance > 0.05f) && (frameCtrl.getRate() > 0.0f)) {
|
||||
cXyz sp20;
|
||||
cXyz sp2C;
|
||||
cXyz sp38;
|
||||
sVar3 = shape_angle.y;
|
||||
if (mStickDistance > 0.05f && (frameCtrl.getRate() > 0.0f)) {
|
||||
s16 r24 = shape_angle.y;
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y, m34E8, daPy_HIO_crouch_c0::m.field_0x8,
|
||||
daPy_HIO_crouch_c0::m.field_0xA,
|
||||
daPy_HIO_crouch_c0::m.field_0xC);
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.y,
|
||||
m34E8,
|
||||
daPy_HIO_crouch_c0::m.field_0x8,
|
||||
daPy_HIO_crouch_c0::m.field_0xA,
|
||||
daPy_HIO_crouch_c0::m.field_0xC
|
||||
);
|
||||
|
||||
if (sVar3 != shape_angle.y) {
|
||||
if ((s16)(sVar3 - shape_angle.y) > 0) {
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_front_offset, &sp20);
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_offset, &sp38);
|
||||
if (shape_angle.y != r24) {
|
||||
if ((s16)(shape_angle.y - r24) > 0) {
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_front_offset, &spAC);
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_lside_offset, &sp94);
|
||||
} else {
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_front_offset, &sp20);
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_offset, &sp38);
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_front_offset, &spAC);
|
||||
cMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_rside_offset, &sp94);
|
||||
}
|
||||
|
||||
mGndChk.SetPos(&sp20);
|
||||
sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp()->GroundCross(&mGndChk) - sp38.y,
|
||||
sp20.z - sp38.z);
|
||||
mGndChk.SetPos(&spAC);
|
||||
spA0.set(spAC.x - sp94.x, dComIfG_Bgsp()->GroundCross(&mGndChk) - sp94.y, spAC.z - sp94.z);
|
||||
|
||||
if (cLib_distanceAngleS((cM_atan2s(-sp2C.x, sp2C.absXZ())), shape_angle.x) >
|
||||
0x800)
|
||||
{
|
||||
shape_angle.y = sVar3;
|
||||
if (cLib_distanceAngleS((cM_atan2s(-spA0.y, spA0.absXZ())), shape_angle.x) > 0x800) {
|
||||
shape_angle.y = r24;
|
||||
}
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
}
|
||||
dVar11 = getCrawlMoveSpeed();
|
||||
@@ -535,11 +530,11 @@ BOOL daPy_lk_c::procCrawlMove() {
|
||||
if (mVelocity < 0.0f) {
|
||||
mVelocity *= -1.0f;
|
||||
current.angle.y = shape_angle.y + 0x8000;
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_offset, &cStack_d8);
|
||||
crawlBgCheck(&cStack_d8, &VStack_54);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_back_offset, &sp88);
|
||||
crawlBgCheck(&sp88, &sp10C);
|
||||
} else {
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_offset, &cStack_d8);
|
||||
crawlBgCheck(&cStack_d8, &aVStack_3c);
|
||||
mDoMtx_multVec(mpCLModel->getBaseTRMtx(), &l_crawl_front_offset, &sp88);
|
||||
crawlBgCheck(&sp88, &sp124);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -569,7 +564,6 @@ BOOL daPy_lk_c::procCrawlAutoMove_init(int param_0, cXyz* param_1) {
|
||||
|
||||
/* 8013A0F0-8013A630 .text procCrawlAutoMove__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procCrawlAutoMove() {
|
||||
/* Nonmatching */
|
||||
f32 fVar2;
|
||||
f32 fVar3;
|
||||
|
||||
@@ -579,7 +573,7 @@ BOOL daPy_lk_c::procCrawlAutoMove() {
|
||||
s16 sVar4 = shape_angle.y;
|
||||
s16 sVar5 = current.angle.y;
|
||||
if (m34D0 > 0) {
|
||||
if ((frameCtrl.checkPass(0.0f)) || (frameCtrl.checkPass(17.0f))) {
|
||||
if (frameCtrl.checkPass(0.0f) || frameCtrl.checkPass(17.0f)) {
|
||||
fVar3 = 0.0f;
|
||||
if (frameCtrl.checkPass(0.0f)) {
|
||||
fVar2 = 0.0f;
|
||||
@@ -590,105 +584,102 @@ BOOL daPy_lk_c::procCrawlAutoMove() {
|
||||
frameCtrl.setFrame(fVar2);
|
||||
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(fVar2);
|
||||
mVelocity = fVar3;
|
||||
} else {
|
||||
if (std::fabsf(frameCtrl.getRate()) < 0.01f) {
|
||||
mVelocity = 0.0f;
|
||||
m34D0--;
|
||||
}
|
||||
} else if (std::fabsf(frameCtrl.getRate()) < 0.01f) {
|
||||
mVelocity = 0.0f;
|
||||
m34D0--;
|
||||
}
|
||||
setCrawlMoveDirectionArrow();
|
||||
setDoStatusCrawl();
|
||||
shape_angle.y = sVar4;
|
||||
current.angle.y = sVar5;
|
||||
} else {
|
||||
if (m34D0 == 0) {
|
||||
setCrawlMoveDirectionArrow();
|
||||
if (mStickDistance > 0.05f) {
|
||||
int direction = getDirectionFromShapeAngle();
|
||||
f32 fVar2 = cM_ssin(shape_angle.y);
|
||||
f32 fVar3 = cM_scos(shape_angle.y);
|
||||
if ((direction == DIR_LEFT) && ((mProcVar0.m3570 & 4))) {
|
||||
m370C.x += 75.0f * fVar3;
|
||||
m370C.z -= 75.0f * fVar2;
|
||||
m34D4 = current.angle.y + 0x4000;
|
||||
if (current.angle.y == shape_angle.y) {
|
||||
m35A0 = 1.0f;
|
||||
} else {
|
||||
m35A0 = -1.0f;
|
||||
}
|
||||
m34D0 = -1;
|
||||
} else if ((direction == DIR_RIGHT) && ((mProcVar0.m3570 & 8))) {
|
||||
m370C.x -= 75.0f * fVar3;
|
||||
m370C.z += 75.0f * fVar2;
|
||||
m34D4 = current.angle.y + -0x4000;
|
||||
if (current.angle.y == shape_angle.y) {
|
||||
m35A0 = 1.0f;
|
||||
} else {
|
||||
m35A0 = -1.0f;
|
||||
}
|
||||
m34D0 = -1;
|
||||
} else if (((mProcVar0.m3570 & 1)) &&
|
||||
(((shape_angle.y == current.angle.y && (direction == DIR_FORWARD)) ||
|
||||
((shape_angle.y != current.angle.y && (direction == DIR_BACKWARD))))))
|
||||
{
|
||||
m370C.x += 75.0f * cM_ssin(current.angle.y);
|
||||
m370C.z += 75.0f * cM_scos(current.angle.y);
|
||||
m34D4 = shape_angle.y;
|
||||
m35A0 = 0.0f;
|
||||
m34D0 = -1;
|
||||
} else if (((shape_angle.y == current.angle.y) && (direction == DIR_BACKWARD)) || ((shape_angle.y != current.angle.y && (direction == DIR_FORWARD)))) {
|
||||
current.angle.y += 0x8000;
|
||||
m370C.x -= 75.0f * cM_ssin(current.angle.y);
|
||||
m370C.z -= 75.0f * cM_scos(current.angle.y);
|
||||
m34D4 = shape_angle.y;
|
||||
m35A0 = 0.0f;
|
||||
m34D0 = -1;
|
||||
} else if (m34D0 == 0) {
|
||||
setCrawlMoveDirectionArrow();
|
||||
if (mStickDistance > 0.05f) {
|
||||
int direction = getDirectionFromShapeAngle();
|
||||
f32 fVar2 = cM_ssin(shape_angle.y);
|
||||
f32 fVar3 = cM_scos(shape_angle.y);
|
||||
if (direction == DIR_LEFT && (mProcVar0.m3570 & 4)) {
|
||||
m370C.x += 75.0f * fVar3;
|
||||
m370C.z -= 75.0f * fVar2;
|
||||
m34D4 = current.angle.y + 0x4000;
|
||||
if (current.angle.y == shape_angle.y) {
|
||||
m35A0 = 1.0f;
|
||||
} else {
|
||||
m35A0 = -1.0f;
|
||||
}
|
||||
if (m34D0 == -1) {
|
||||
g_dComIfG_gameInfo.play.mDirection = 0;
|
||||
if (shape_angle.y == current.angle.y) {
|
||||
frameCtrl.setRate(2.0f);
|
||||
frameCtrl.setLoop(0);
|
||||
} else {
|
||||
frameCtrl.setRate(-2.0f);
|
||||
frameCtrl.setLoop(frameCtrl.getEnd());
|
||||
}
|
||||
initSeAnime();
|
||||
m34D0 = -1;
|
||||
} else if (direction == DIR_RIGHT && (mProcVar0.m3570 & 8)) {
|
||||
m370C.x -= 75.0f * fVar3;
|
||||
m370C.z += 75.0f * fVar2;
|
||||
m34D4 = current.angle.y + -0x4000;
|
||||
if (current.angle.y == shape_angle.y) {
|
||||
m35A0 = 1.0f;
|
||||
} else {
|
||||
m35A0 = -1.0f;
|
||||
}
|
||||
} else {
|
||||
setDoStatusCrawl();
|
||||
shape_angle.y = sVar4;
|
||||
current.angle.y = sVar5;
|
||||
m34D0 = -1;
|
||||
} else if ((mProcVar0.m3570 & 1) && ((shape_angle.y == current.angle.y && direction == DIR_FORWARD) ||
|
||||
(shape_angle.y != current.angle.y && direction == DIR_BACKWARD)))
|
||||
{
|
||||
m370C.x += 75.0f * cM_ssin(current.angle.y);
|
||||
m370C.z += 75.0f * cM_scos(current.angle.y);
|
||||
m34D4 = shape_angle.y;
|
||||
m35A0 = 0.0f;
|
||||
m34D0 = -1;
|
||||
} else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) ||
|
||||
(shape_angle.y != current.angle.y && direction == DIR_FORWARD))
|
||||
{
|
||||
current.angle.y += 0x8000;
|
||||
m370C.x -= 75.0f * cM_ssin(current.angle.y);
|
||||
m370C.z -= 75.0f * cM_scos(current.angle.y);
|
||||
m34D4 = shape_angle.y;
|
||||
m35A0 = 0.0f;
|
||||
m34D0 = -1;
|
||||
}
|
||||
if (m34D0 == -1) {
|
||||
g_dComIfG_gameInfo.play.mDirection = 0;
|
||||
if (shape_angle.y == current.angle.y) {
|
||||
frameCtrl.setRate(2.0f);
|
||||
frameCtrl.setLoop(0);
|
||||
} else {
|
||||
frameCtrl.setRate(-2.0f);
|
||||
frameCtrl.setLoop(frameCtrl.getEnd());
|
||||
}
|
||||
initSeAnime();
|
||||
}
|
||||
} else {
|
||||
BOOL bVar1 = true;
|
||||
if (m34D6 > 0) {
|
||||
m34D6--;
|
||||
setDoStatusCrawl();
|
||||
shape_angle.y = sVar4;
|
||||
current.angle.y = sVar5;
|
||||
}
|
||||
} else {
|
||||
BOOL bVar1 = true;
|
||||
if (m34D6 > 0) {
|
||||
m34D6--;
|
||||
}
|
||||
if (std::fabsf(m35A0) > 0.5f) {
|
||||
if (cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x480, 0x80)) {
|
||||
bVar1 = 0;
|
||||
}
|
||||
if (std::fabsf(m35A0) > 0.5f) {
|
||||
if (cLib_addCalcAngleS(&shape_angle.y, m34D4, 5, 0x480, 0x80)) {
|
||||
bVar1 = 0;
|
||||
}
|
||||
if (m35A0 < -0.5f) {
|
||||
current.angle.y = shape_angle.y + 0x8000;
|
||||
} else {
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 3.0f, 1.0f);
|
||||
cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 3.0f, 1.0f);
|
||||
}
|
||||
cXyz local_28 = m370C - current.pos;
|
||||
if (cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y) < 0x6000) {
|
||||
bVar1 = false;
|
||||
}
|
||||
mVelocity = getCrawlMoveSpeed();
|
||||
if (mVelocity < 0.0f) {
|
||||
mVelocity *=-1.0f;
|
||||
if (m35A0 < -0.5f) {
|
||||
current.angle.y = shape_angle.y + 0x8000;
|
||||
} else {
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
if ((bVar1 != 0) || (m34D6 == 0)) {
|
||||
procCrawlMove_init(shape_angle.x, shape_angle.z);
|
||||
}
|
||||
cLib_addCalc(¤t.pos.x, m370C.x, 0.5f, 3.0f, 1.0f);
|
||||
cLib_addCalc(¤t.pos.z, m370C.z, 0.5f, 3.0f, 1.0f);
|
||||
}
|
||||
cXyz local_28 = m370C - current.pos;
|
||||
if (cLib_distanceAngleS(cM_atan2s(local_28.x, local_28.z), current.angle.y) < 0x6000) {
|
||||
bVar1 = false;
|
||||
}
|
||||
mVelocity = getCrawlMoveSpeed();
|
||||
if (mVelocity < 0.0f) {
|
||||
mVelocity *= -1.0f;
|
||||
current.angle.y = shape_angle.y + 0x8000;
|
||||
}
|
||||
if (bVar1 != 0 || m34D6 == 0) {
|
||||
procCrawlMove_init(shape_angle.x, shape_angle.z);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -710,13 +701,18 @@ BOOL daPy_lk_c::procCrawlEnd_init(int param_1, s16 param_2, s16 param_3) {
|
||||
} else {
|
||||
fVar1 = -1.0f;
|
||||
}
|
||||
setSingleMoveAnime(ANM_LIE, daPy_HIO_crouch_c0::m.field_0x40, daPy_HIO_crouch_c0::m.field_0x44,
|
||||
daPy_HIO_crouch_c0::m.field_0xE, fVar1);
|
||||
setSingleMoveAnime(
|
||||
ANM_LIE,
|
||||
daPy_HIO_crouch_c0::m.field_0x40,
|
||||
daPy_HIO_crouch_c0::m.field_0x44,
|
||||
daPy_HIO_crouch_c0::m.field_0xE,
|
||||
fVar1
|
||||
);
|
||||
if (param_1 == 0) {
|
||||
if (daPy_HIO_crouch_c0::m.field_0x44 > dVar4) {
|
||||
dVar4 = daPy_HIO_crouch_c0::m.field_0x44;
|
||||
} else if (daPy_HIO_crouch_c0::m.field_0xE <= dVar4) {
|
||||
dVar4 = (daPy_HIO_crouch_c0::m.field_0xE - 0.001f);
|
||||
dVar4 = daPy_HIO_crouch_c0::m.field_0xE - 0.001f;
|
||||
}
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(dVar4);
|
||||
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(dVar4);
|
||||
@@ -738,14 +734,12 @@ BOOL daPy_lk_c::procCrawlEnd() {
|
||||
m35E4 = m35A0 * (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - daPy_HIO_crouch_c0::m.field_0x48);
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > -0.01f) {
|
||||
checkNextMode(0);
|
||||
} else {
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_crouch_c0::m.field_0x48) {
|
||||
if (!checkNextMode(1)) {
|
||||
m34C2 = 1;
|
||||
}
|
||||
} else {
|
||||
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_crouch_c0::m.field_0x48) {
|
||||
if (!checkNextMode(1)) {
|
||||
m34C2 = 1;
|
||||
}
|
||||
} else {
|
||||
m34C2 = 1;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -884,8 +884,11 @@ BOOL daPy_lk_c::dProcDead() {
|
||||
dGameover_c* this_01;
|
||||
cLib_chaseF(&m35A0, 0.0f, 0.01f);
|
||||
f32 dVar3 = 1.0f - m35A0;
|
||||
if ((m3628 != fpcM_ERROR_PROCESS_ID_e) && (this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628), this_01)) {
|
||||
this_01->setBackAlpha(dVar3);
|
||||
if ((m3628 != fpcM_ERROR_PROCESS_ID_e)) {
|
||||
this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628);
|
||||
if (this_01) {
|
||||
this_01->setBackAlpha(dVar3);
|
||||
}
|
||||
}
|
||||
if (((m35A0 < 0.38f) && (m3628 != fpcM_ERROR_PROCESS_ID_e)) &&
|
||||
(this_01 = (dGameover_c*)fopMsgM_SearchByID(m3628), this_01))
|
||||
|
||||
+111
-127
@@ -61,29 +61,27 @@ void daPy_lk_c::setHammerQuake(cBgS_PolyInfo* param_1, const cXyz* param_2, int
|
||||
}
|
||||
mDoAud_seStart(JA_SE_LK_HAMMER_HIT, &mSwordTopPos, iVar6, mReverb);
|
||||
}
|
||||
if ((param_1 != NULL) && (m355C == 0)) {
|
||||
if (param_1 != NULL && m355C == 0) {
|
||||
mDoMtx_stack_c::transS(param_2->x, param_2->y, param_2->z);
|
||||
mDoMtx_stack_c::ZXYrotM(getGroundAngle(param_1, shape_angle.y), shape_angle.y,
|
||||
getGroundAngle(param_1, shape_angle.y + -0x4000));
|
||||
mDoMtx_stack_c::ZXYrotM(
|
||||
getGroundAngle(param_1, shape_angle.y), shape_angle.y, getGroundAngle(param_1, shape_angle.y + -0x4000)
|
||||
);
|
||||
mDoMtx_stack_c::transM(0.0f, 0.0f, -30.0f);
|
||||
local_38.x = mDoMtx_stack_c::now[0][3];
|
||||
local_38.y = mDoMtx_stack_c::now[1][3];
|
||||
local_38.z = mDoMtx_stack_c::now[2][3];
|
||||
if ((!fopAcM_getWaterY(&local_38, &local_54)) || (local_54 < (5.0f + local_38.y))) {
|
||||
if (!fopAcM_getWaterY(&local_38, &local_54) || (local_54 < (5.0f + local_38.y))) {
|
||||
emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0214, &local_38);
|
||||
if (emitter != NULL) {
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation,
|
||||
emitter->mGlobalTranslation);
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation);
|
||||
}
|
||||
emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0215, &local_38);
|
||||
if (emitter != NULL) {
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation,
|
||||
emitter->mGlobalTranslation);
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation);
|
||||
}
|
||||
emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_0216, &local_38);
|
||||
if (emitter != NULL) {
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation,
|
||||
emitter->mGlobalTranslation);
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation);
|
||||
}
|
||||
bVar2 = false;
|
||||
} else {
|
||||
@@ -95,17 +93,17 @@ void daPy_lk_c::setHammerQuake(cBgS_PolyInfo* param_1, const cXyz* param_2, int
|
||||
if (bVar2) {
|
||||
attrib_code = dBgS_Attr_WATER_e;
|
||||
dComIfGp_particle_setP1(dPa_name::ID_COMMON_027C, &local_38);
|
||||
dComIfGp_particle_setShipTail(dPa_name::ID_COMMON_003D, &local_38, NULL, NULL, 0xFF,
|
||||
&dPa_control_c::mSingleRippleEcallBack);
|
||||
dComIfGp_particle_setShipTail(
|
||||
dPa_name::ID_COMMON_003D, &local_38, NULL, NULL, 0xFF, &dPa_control_c::mSingleRippleEcallBack
|
||||
);
|
||||
} else {
|
||||
attrib_code = dComIfG_Bgsp()->GetAttributeCode(*param_1);
|
||||
}
|
||||
emitter = dComIfGp_particle_setSimpleLand(attrib_code, &local_38, NULL, 1.0f, 1.0f, 1.0f,
|
||||
&tevStr, &iStack_58, 0x1E);
|
||||
emitter =
|
||||
dComIfGp_particle_setSimpleLand(attrib_code, &local_38, NULL, 1.0f, 1.0f, 1.0f, &tevStr, &iStack_58, 0x1E);
|
||||
if (emitter != NULL) {
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation,
|
||||
emitter->mGlobalTranslation);
|
||||
if ((attrib_code == dBgS_Attr_WATER_e) || (attrib_code == dBgS_Attr_GRASS_e)) {
|
||||
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::get(), emitter->mGlobalRotation, emitter->mGlobalTranslation);
|
||||
if (attrib_code == dBgS_Attr_WATER_e || attrib_code == dBgS_Attr_GRASS_e) {
|
||||
emitter->setRate(60.0f);
|
||||
emitter->setSpread(1.0f);
|
||||
if (attrib_code == dBgS_Attr_WATER_e) {
|
||||
@@ -128,7 +126,6 @@ void daPy_lk_c::setHammerQuake(cBgS_PolyInfo* param_1, const cXyz* param_2, int
|
||||
}
|
||||
m355C = 1;
|
||||
dKy_Sound_set(current.pos, 500, fopAcM_GetID(this), 10);
|
||||
return;
|
||||
}
|
||||
|
||||
/* 801508FC-80150B60 .text setHammerWaterSplash__9daPy_lk_cFv */
|
||||
@@ -136,27 +133,26 @@ void daPy_lk_c::setHammerWaterSplash() {
|
||||
f32 local_50;
|
||||
cXyz local_28;
|
||||
|
||||
if ((mCurProc != daPyProc_HAMMER_FRONT_SWING_e) ||
|
||||
(m35EC <= mFrameCtrlUnder[UNDER_MOVE0_e].getRate()))
|
||||
{
|
||||
if (mCurProc != daPyProc_HAMMER_FRONT_SWING_e || (m35EC <= mFrameCtrlUnder[UNDER_MOVE0_e].getRate())) {
|
||||
return;
|
||||
}
|
||||
if (m355C == 0) {
|
||||
local_28 = m36C4 - mSwordTopPos;
|
||||
local_28.normalize();
|
||||
local_28 = mSwordTopPos + (local_28 * 30.0f);
|
||||
if ((fopAcM_getWaterY(&local_28, &local_50)) && (local_50 >= local_28.y + 5.0f)) {
|
||||
if (fopAcM_getWaterY(&local_28, &local_50) && local_50 >= local_28.y + 5.0f) {
|
||||
local_28.y += 150.0f;
|
||||
mGndChk.SetPos(&local_28);
|
||||
if (!(local_50 < dComIfG_Bgsp()->GroundCross(&mGndChk) + 5.0f)) {
|
||||
local_28.y = local_50;
|
||||
dComIfGp_particle_setP1(dPa_name::ID_COMMON_027C, &local_28);
|
||||
dComIfGp_particle_setShipTail(dPa_name::ID_COMMON_003D, &local_28, NULL, NULL, 0xFF,
|
||||
&dPa_control_c::mSingleRippleEcallBack);
|
||||
dComIfGp_particle_setShipTail(
|
||||
dPa_name::ID_COMMON_003D, &local_28, NULL, NULL, 0xFF, &dPa_control_c::mSingleRippleEcallBack
|
||||
);
|
||||
GXColor amb, dif;
|
||||
dKy_get_seacolor(&amb, &dif);
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_setP1(
|
||||
dPa_name::ID_COMMON_0023, &local_28, NULL, NULL, 0xFF, NULL, -1, &amb);
|
||||
JPABaseEmitter* emitter =
|
||||
dComIfGp_particle_setP1(dPa_name::ID_COMMON_0023, &local_28, NULL, NULL, 0xFF, NULL, -1, &amb);
|
||||
if (emitter != NULL) {
|
||||
emitter->setRate(60.0f);
|
||||
emitter->setSpread(1.0f);
|
||||
@@ -168,7 +164,6 @@ void daPy_lk_c::setHammerWaterSplash() {
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80150B60-80150C40 .text procHammerSideSwing_init__9daPy_lk_cFv */
|
||||
@@ -200,45 +195,43 @@ BOOL daPy_lk_c::procHammerSideSwing() {
|
||||
mDirection = DIR_RIGHT;
|
||||
checkNextMode(0);
|
||||
return true;
|
||||
} else {
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_ham_c0::m.field_0x10) {
|
||||
f32 dVar4 = mVelocity;
|
||||
u8 orig_direction = mDirection;
|
||||
mVelocity = 0.0f;
|
||||
mDirection = DIR_RIGHT;
|
||||
if (checkNextMode(1)) {
|
||||
return true;
|
||||
}
|
||||
mVelocity = dVar4;
|
||||
mDirection = orig_direction;
|
||||
}
|
||||
if (changeCutReverseProc(ANM_CUTREL)) {
|
||||
setHammerQuake(NULL, NULL, -1);
|
||||
}
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_ham_c0::m.field_0x10) {
|
||||
f32 dVar4 = mVelocity;
|
||||
u8 orig_direction = mDirection;
|
||||
mVelocity = 0.0f;
|
||||
mDirection = DIR_RIGHT;
|
||||
if (checkNextMode(1)) {
|
||||
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_ham_c0::m.field_0x18) &&
|
||||
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_ham_c0::m.field_0x1C))
|
||||
{
|
||||
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
|
||||
onResetFlg0(daPyRFlg0_UNK1);
|
||||
seStartSwordCut(JA_SE_LK_HAMMER_SWING);
|
||||
}
|
||||
onResetFlg0(daPyRFlg0_UNK2);
|
||||
}
|
||||
}
|
||||
mVelocity = dVar4;
|
||||
mDirection = orig_direction;
|
||||
}
|
||||
if (changeCutReverseProc(ANM_CUTREL)) {
|
||||
setHammerQuake(NULL, NULL, -1);
|
||||
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;
|
||||
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= daPy_HIO_ham_c0::m.field_0x18) &&
|
||||
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < daPy_HIO_ham_c0::m.field_0x1C))
|
||||
{
|
||||
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
|
||||
onResetFlg0(daPyRFlg0_UNK1);
|
||||
seStartSwordCut(JA_SE_LK_HAMMER_SWING);
|
||||
}
|
||||
onResetFlg0(daPyRFlg0_UNK2);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -255,7 +248,7 @@ BOOL daPy_lk_c::procHammerFrontSwingReady_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;
|
||||
@@ -273,22 +266,21 @@ BOOL daPy_lk_c::procHammerFrontSwingReady() {
|
||||
m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame();
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
|
||||
return procHammerFrontSwing_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 (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;
|
||||
}
|
||||
|
||||
/* 80150F98-801510DC .text procHammerFrontSwing_init__9daPy_lk_cFv */
|
||||
@@ -304,7 +296,7 @@ BOOL daPy_lk_c::procHammerFrontSwing_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;
|
||||
@@ -322,66 +314,53 @@ BOOL daPy_lk_c::procHammerFrontSwing_init() {
|
||||
|
||||
/* 801510DC-801513D4 .text procHammerFrontSwing__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procHammerFrontSwing() {
|
||||
/* Nonmatching - regalloc */
|
||||
f32 fVar1;
|
||||
f32 fVar2;
|
||||
f32 fVar3;
|
||||
f32 fVar4;
|
||||
int iVar5;
|
||||
int iVar6;
|
||||
int iVar7;
|
||||
f32 dVar8;
|
||||
f32 dVar10;
|
||||
cXyz local_58;
|
||||
|
||||
m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame();
|
||||
fVar1 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate();
|
||||
if (fVar1 < 0.01f) {
|
||||
f32 f1 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate();
|
||||
if (f1 < 0.01f) {
|
||||
if (m34D0 == 0) {
|
||||
procHammerFrontSwingEnd_init();
|
||||
return procHammerFrontSwingEnd_init();
|
||||
} else {
|
||||
m34D0--;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if ((m35EC > fVar1) && (changeCutReverseProc(ANM_CUTREL))) {
|
||||
if (m35EC > f1 && changeCutReverseProc(ANM_CUTREL)) {
|
||||
if (mCurProc == daPyProc_HAMMER_FRONT_SWING_e) {
|
||||
local_58.set(mSwordTopPos.x, current.pos.y + 300.0f, mSwordTopPos.z);
|
||||
mGndChk.SetPos(&local_58);
|
||||
dVar8 = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
local_58.y = dVar8;
|
||||
if (dVar8 > mSwordTopPos.y) {
|
||||
iVar5 = -1;
|
||||
iVar7 = 0;
|
||||
dVar8 = 300.0f;
|
||||
dVar10 = C_BG_MIN_HEIGHT;
|
||||
for (iVar6 = 0; iVar6 < mSwBlur.field_0x014; iVar6++, iVar7++) {
|
||||
local_58.set(mSwBlur.field_0x034[iVar7].x, dVar8 + mSwBlur.field_0x034[iVar7].y,
|
||||
mSwBlur.field_0x034[iVar7].z);
|
||||
mGndChk.SetPos(&local_58);
|
||||
local_58.y = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
if ((dVar10 != local_58.y) && (mSwBlur.field_0x034[iVar7].y > local_58.y)) {
|
||||
iVar5 = dComIfG_Bgsp()->GetMtrlSndId(mGndChk);
|
||||
cXyz sp08(mSwordTopPos.x, current.pos.y + 300.0f, mSwordTopPos.z);
|
||||
mGndChk.SetPos(&sp08);
|
||||
sp08.y = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
if (sp08.y > mSwordTopPos.y) {
|
||||
int r27;
|
||||
int r26;
|
||||
r26 = -1;
|
||||
f32 f30 = 300.0f;
|
||||
f32 f31 = C_BG_MIN_HEIGHT;
|
||||
for (r27 = 0; r27 < mSwBlur.field_0x014; r27++) {
|
||||
sp08.set(mSwBlur.field_0x034[r27].x, f30 + mSwBlur.field_0x034[r27].y, mSwBlur.field_0x034[r27].z);
|
||||
mGndChk.SetPos(&sp08);
|
||||
sp08.y = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
if (f31 != sp08.y && mSwBlur.field_0x034[r27].y > sp08.y) {
|
||||
r26 = dComIfG_Bgsp()->GetMtrlSndId(mGndChk);
|
||||
break;
|
||||
}
|
||||
}
|
||||
fVar1 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate();
|
||||
fVar3 = (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - fVar1) - 0.1f * iVar6 * fVar1;
|
||||
if ((iVar6 != 0) && (iVar6 < mSwBlur.field_0x014)) {
|
||||
fVar2 = (&mSwBlur.field_0x034[0])[iVar6].y;
|
||||
fVar4 = (&mSwBlur.field_0x028)[iVar6].y - fVar2;
|
||||
if (std::abs(fVar4) > 1.0f) {
|
||||
fVar3 = fVar3 + 0.1f * (1.0f - (local_58.y - fVar2) / fVar4) * fVar1;
|
||||
f32 f4 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate();
|
||||
f32 f5 = (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() - f4) - 0.1f * (r27 * f4);
|
||||
if (r27 != 0 && r27 < mSwBlur.field_0x014) {
|
||||
f32 f6 = mSwBlur.field_0x034[r27].y - mSwBlur.field_0x034[r27 - 1].y;
|
||||
if (std::abs(f6) > 1.0f) {
|
||||
f32 temp = (1.0f - (sp08.y - (&mSwBlur.field_0x034[0])[r27 - 1].y) / f6);
|
||||
f5 = f5 + 0.1f * (temp * f4);
|
||||
}
|
||||
}
|
||||
if (fVar3 < 0.0f) {
|
||||
fVar3 = 0.0f;
|
||||
if (f5 < 0.0f) {
|
||||
f5 = 0.0f;
|
||||
}
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(fVar3);
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(f5);
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f);
|
||||
m35EC = fVar3;
|
||||
m35EC = f5;
|
||||
m34D0 = 10;
|
||||
setHammerQuake(&mGndChk, &local_58, iVar5);
|
||||
setHammerQuake(&mGndChk, &sp08, r26);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
@@ -393,8 +372,13 @@ BOOL daPy_lk_c::procHammerFrontSwing() {
|
||||
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);
|
||||
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);
|
||||
|
||||
@@ -495,7 +495,7 @@ BOOL daPy_lk_c::procHangMove() {
|
||||
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
s16 sVar6 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z) + 0x8000;
|
||||
if (sVar6 != shape_angle.y) {
|
||||
if ((short)(current.angle.y - shape_angle.y) > 0) {
|
||||
if ((s16)(current.angle.y - shape_angle.y) > 0) {
|
||||
current.angle.y = sVar6 + 0x4000;
|
||||
} else {
|
||||
current.angle.y = sVar6 + -0x4000;
|
||||
|
||||
+188
-256
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "d/actor/d_a_player_main_data.h"
|
||||
|
||||
#include "weak_data_1811.h" // IWYU pragma: keep
|
||||
#include "weak_data_2100_2080.h" // IWYU pragma: keep
|
||||
|
||||
char l_arcName[] = "Link";
|
||||
|
||||
|
||||
@@ -15,16 +15,14 @@ int daPy_npc_c::check_initialRoom() {
|
||||
mAcch.CrrPos(*dComIfG_Bgsp());
|
||||
if (mAcch.GetGroundH() == C_BG_MIN_HEIGHT || dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd) == 4) {
|
||||
return 0;
|
||||
} else {
|
||||
int roomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd);
|
||||
if (roomNo < 0 || !dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10)) {
|
||||
return 0;
|
||||
} else {
|
||||
fopAcM_SetHomeRoomNo(this, roomNo);
|
||||
fopAcM_SetRoomNo(this, roomNo);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
int roomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd);
|
||||
if (roomNo < 0 || !dComIfGp_roomControl_checkStatusFlag(roomNo, 0x10)) {
|
||||
return 0;
|
||||
}
|
||||
fopAcM_SetHomeRoomNo(this, roomNo);
|
||||
fopAcM_SetRoomNo(this, roomNo);
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ int daPy_lk_c::changeRopeSwingProc() {
|
||||
if (mCyl.ChkCoHit() != 0) {
|
||||
fopAc_ac_c* pfVar2 = mCyl.GetCoHitAc();
|
||||
if ((pfVar2 != NULL) && (fopAcM_GetName(pfVar2) == PROC_HIMO3)) {
|
||||
cXyz local_24 = (pfVar2->current.pos - current.pos);
|
||||
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);
|
||||
}
|
||||
@@ -109,16 +109,15 @@ int daPy_lk_c::changeRopeToHangProc() {
|
||||
mLinkLinChk.Set(&local_1c, &local_28, this);
|
||||
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
return false;
|
||||
}
|
||||
cM3dGPla* pfVar4 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
s16 iVar5 = cM_atan2s(pfVar4->GetNP()->x, pfVar4->GetNP()->z);
|
||||
if (cLib_distanceAngleS(iVar5, shape_angle.y + 0x8000) > 0x2000) {
|
||||
return false;
|
||||
} else {
|
||||
cM3dGPla* pfVar4 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
s16 iVar5 = cM_atan2s(pfVar4->GetNP()->x, pfVar4->GetNP()->z);
|
||||
if (cLib_distanceAngleS(iVar5, shape_angle.y + 0x8000) > 0x2000) {
|
||||
return false;
|
||||
} else {
|
||||
m352C = iVar5;
|
||||
procRopeUpHang_init();
|
||||
return true;
|
||||
}
|
||||
m352C = iVar5;
|
||||
procRopeUpHang_init();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,7 +273,8 @@ BOOL daPy_lk_c::checkNextActionRopeReady() {
|
||||
u32 uVar2 = fopAcM_GetParam(rope);
|
||||
if (uVar2 == 2) {
|
||||
return procRopeReady_init();
|
||||
} else if (uVar2 == 0) {
|
||||
}
|
||||
if (uVar2 == 0) {
|
||||
if (checkUpperAnime(LKANM_BCK_ROPETHROW)) {
|
||||
if (mFrameCtrlUpper[UPPER_MOVE2_e].getRate() < 0.01f) {
|
||||
return procRopeThrowCatch_init();
|
||||
@@ -465,7 +465,7 @@ BOOL daPy_lk_c::procRopeReady() {
|
||||
mRopePos = mActorKeepEquip.getActor()->current.pos;
|
||||
m370C.x = mRopePos.x;
|
||||
m370C.z = mRopePos.z;
|
||||
cXyz local_48 = (m370C - current.pos);
|
||||
cXyz local_48 = m370C - current.pos;
|
||||
f32 dVar5 = local_48.abs();
|
||||
cLib_chaseF(&m35A0, 50.0f, 5.0f);
|
||||
shape_angle.x = (0.025f * (m34D4 * m35A0));
|
||||
@@ -493,7 +493,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
|
||||
fopAcM_SetParam(param_0, 1);
|
||||
deleteEquipItem(TRUE);
|
||||
mEquipItem = dItem_GRAPPLING_HOOK_e;
|
||||
local_84 = (param_0->current.pos - current.pos);
|
||||
local_84 = param_0->current.pos - current.pos;
|
||||
dVar8 = (local_84.abs() - 95.0f);
|
||||
dVar9 = ((himo2_class*)param_0)->field_0x15F8.y;
|
||||
if (dVar8 > dVar9) {
|
||||
@@ -505,11 +505,11 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
|
||||
} else {
|
||||
param_0 = mActorKeepRope.getActor();
|
||||
}
|
||||
local_84 = (param_0->current.pos - current.pos);
|
||||
local_84 = param_0->current.pos - current.pos;
|
||||
m35A0 = local_84.abs();
|
||||
f32 dVar11 = std::sqrtf(2.0f / m35A0);
|
||||
m35A4 = dVar11;
|
||||
dVar11 = (M_PI / 2 / m35A4);
|
||||
dVar11 = M_PI / 2 / m35A4;
|
||||
if (pfVar7 != NULL) {
|
||||
m34D4 = daPy_HIO_rope_c0::m.field_0x0;
|
||||
if (checkSpecialRope()) {
|
||||
@@ -530,7 +530,7 @@ BOOL daPy_lk_c::procRopeSwing_init(fopAc_ac_c* param_0, s16 param_1) {
|
||||
dVar8 = ((f32)sVar4 / m34D4);
|
||||
dVar9 = std::sqrtf(1.0f - (dVar8 * dVar8));
|
||||
dVar8 = cM_atan2f(dVar8, dVar9);
|
||||
m35A8 = (dVar8 / m35A4);
|
||||
m35A8 = dVar8 / m35A4;
|
||||
dVar8 = std::sqrtf(local_78.y * local_78.y + local_78.z * local_78.z);
|
||||
m34D6 = cM_atan2s(-local_78.x, dVar8);
|
||||
if (m34D6 > 0) {
|
||||
@@ -585,8 +585,8 @@ BOOL daPy_lk_c::procRopeSwing() {
|
||||
fopAc_ac_c* rope = mActorKeepRope.getActor();
|
||||
mRopePos = rope->current.pos;
|
||||
dComIfGp_setRStatus(dActStts_STOP_e);
|
||||
f32 f30 = (m35A8 * m35A4);
|
||||
f32 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);
|
||||
@@ -622,14 +622,14 @@ BOOL daPy_lk_c::procRopeSwing() {
|
||||
m35A8 = m35A8 + (dVar11 + f30);
|
||||
m35AC = m35AC + (dVar11 + dVar13);
|
||||
f32 sp0C = m35A8 * m35A4;
|
||||
f30 = (m35AC * m35A4);
|
||||
f30 = m35AC * m35A4;
|
||||
if (sp0C >= M_PI) {
|
||||
sp0C = sp0C - M_PI * 2;
|
||||
m35A8 = sp0C / m35A4;
|
||||
}
|
||||
if (f30 >= M_PI) {
|
||||
f30 = (f30 - M_PI * 2);
|
||||
m35AC = (f30 / m35A4);
|
||||
f30 = f30 - M_PI * 2;
|
||||
m35AC = f30 / m35A4;
|
||||
}
|
||||
if ((checkModeFlg(ModeFlg_00000400)) && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f)) {
|
||||
offModeFlg(ModeFlg_00000400);
|
||||
@@ -680,11 +680,7 @@ BOOL daPy_lk_c::procRopeSwing() {
|
||||
cLib_addCalcAngleS(&shape_angle.x, r28_2, 8, 0xc00, 0x100);
|
||||
dVar13 = cM_fcos(f30);
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.z,
|
||||
m34D6 * cM_fsin(f30 - 1.0995574f),
|
||||
8,
|
||||
0x400 + (0x800 * dVar13),
|
||||
0x80 + (0x80 * dVar13)
|
||||
&shape_angle.z, m34D6 * cM_fsin(f30 - 1.0995574f), 8, 0x400 + (0x800 * dVar13), 0x80 + (0x80 * dVar13)
|
||||
);
|
||||
cXyz sp1C(0.0f, -m35A0, 0.0f);
|
||||
mDoMtx_stack_c::transS(mRopePos.x, mRopePos.y, mRopePos.z);
|
||||
@@ -879,11 +875,11 @@ BOOL daPy_lk_c::procRopeUp_init() {
|
||||
mProcVar0.m3570 = 0;
|
||||
f32 dVar4;
|
||||
if (checkBossGomaStage()) {
|
||||
dVar4 = (mRopePos.y - 200.0f);
|
||||
dVar4 = mRopePos.y - 200.0f;
|
||||
} else {
|
||||
dVar4 = (mRopePos.y - 100.0f);
|
||||
dVar4 = mRopePos.y - 100.0f;
|
||||
f32 dVar5 = checkRopeRoofHit(shape_angle.y);
|
||||
dVar5 = (dVar5 - 60.0f);
|
||||
dVar5 = dVar5 - 60.0f;
|
||||
if (dVar5 < dVar4) {
|
||||
dVar4 = dVar5;
|
||||
} else if ((fopAcM_GetName(rope)) == PROC_HIMO2 || (checkSpecialRope())) {
|
||||
@@ -893,12 +889,10 @@ BOOL daPy_lk_c::procRopeUp_init() {
|
||||
if (dVar4 <= current.pos.y) {
|
||||
if (specialRopeHangUp()) {
|
||||
return true;
|
||||
} else if (changeRopeToHangProc()) {
|
||||
return true;
|
||||
} else {
|
||||
if (changeRopeToHangProc()) {
|
||||
return true;
|
||||
} else {
|
||||
return procRopeHangWait_init(0);
|
||||
}
|
||||
return procRopeHangWait_init(0);
|
||||
}
|
||||
} else {
|
||||
commonProcInit(daPyProc_ROPE_UP_e);
|
||||
|
||||
Reference in New Issue
Block a user