d_a_player_sword cleanup and small match fixes

This commit is contained in:
LagoLunatic
2025-04-04 13:19:42 -04:00
parent cda3f0c302
commit 924e87029d
15 changed files with 829 additions and 862 deletions
+9 -7
View File
@@ -13,8 +13,8 @@ class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack {
public:
void execute(JPABaseEmitter*);
void end();
void makeEmitter(u16, MtxP, const cXyz*, const cXyz*);
void makeEmitterColor(u16, MtxP, const cXyz*, const GXColor*, const GXColor*);
JPABaseEmitter* makeEmitter(u16, MtxP, const cXyz*, const cXyz*);
JPABaseEmitter* makeEmitterColor(u16, MtxP, const cXyz*, const GXColor*, const GXColor*);
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz*, s8) { mpEmitter = emitter; }
JPABaseEmitter* getEmitter() { return mpEmitter; }
@@ -457,20 +457,22 @@ public:
bool checkArrowShoot() const { return checkResetFlg0(daPyRFlg0_ARROW_SHOOT); }
bool checkGrabWear() const { return field_0x2b0 < 0.0f; }
bool checkNormalSwordEquip() const {
return dComIfGs_getSelectEquip(0) == dItem_SWORD_e ||
dComIfGp_getMiniGameType() == 2;
BOOL checkNormalSwordEquip() const {
return dComIfGs_getSelectEquip(0) == dItem_SWORD_e || checkSwordMiniGame();
}
BOOL checkMasterSwordEquip() const {
return dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_1_e ||
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_2_e ||
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e;
}
BOOL checkFinalMasterSwordEquip() const {
return dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e;
}
void setFace(daPy_FACE face) { mFace = face; }
void checkFinalMasterSwordEquip() const {}
BOOL checkSwordMiniGame() const { return dComIfGp_getMiniGameType() == 2; }
void checkBowMiniGame() const {}
void checkSwordMiniGame() const {}
void checkSoupPowerUp() const {}
void checkSubjectAccept() const {}
void checkUseArrowEffect() const {}
+4 -5
View File
@@ -1437,7 +1437,7 @@ public:
BOOL procSwimMove_init(BOOL);
BOOL procSwimMove();
void setSpecialBattle(BOOL);
int changeSpecialBattle();
BOOL changeSpecialBattle();
BOOL procBtJump_init(fopEn_enemy_c*);
BOOL procBtJump();
BOOL procBtJumpCut_init(cXyz*);
@@ -1657,7 +1657,7 @@ public:
void setSwordModel(BOOL);
void setLightSaver();
BOOL checkDemoShieldNoDraw();
BOOL checkDemoSwordNoDraw(int);
BOOL checkDemoSwordNoDraw(BOOL);
BOOL checkChanceMode();
BOOL checkCutRollChange() const;
int getSwordBlurColor();
@@ -1766,8 +1766,7 @@ public:
}
}
bool checkSwordEquip() const {
return dComIfGs_getSelectEquip(0) != dItem_NONE_e ||
dComIfGp_getMiniGameType() == 2;
return dComIfGs_getSelectEquip(0) != dItem_NONE_e || checkSwordMiniGame();
}
int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
@@ -1792,6 +1791,7 @@ public:
BOOL doTrigger() const { return mItemTrigger & BTN_A; }
BOOL talkTrigger() const { return mItemTrigger & BTN_A; }
BOOL spBattleTrigger() const {return mItemTrigger & BTN_A; }
BOOL swordTrigger() const { return mItemTrigger & BTN_B; }
BOOL cancelTrigger() const { return mItemTrigger & BTN_B; }
BOOL itemTriggerX() const { return mItemTrigger & BTN_X; }
@@ -1801,7 +1801,6 @@ public:
BOOL spActionTrigger() const { return mItemTrigger & BTN_R; }
void allTrigger() const {}
void otherWeaponTrigger() const {}
void spBattleTrigger() const {}
BOOL checkPlayerDemoMode() const { return mDemo.getDemoType(); }
void checkSpecialDemoMode() const {}
+57 -58
View File
@@ -171,13 +171,8 @@ void pos_move(fganon_class* i_this, unsigned char param_2) {
/* 00000AEC-00000C14 .text fly_se_set__FP12fganon_class */
void fly_se_set(fganon_class* i_this) {
float fVar1;
uint uVar2;
float fVar4;
cXyz local_34;
local_34 = i_this->current.pos - i_this->old.pos;
uVar2 = (uint)(local_34.abs() * 3.5f);
cXyz local_34 = i_this->current.pos - i_this->old.pos;
uint uVar2 = (uint)(local_34.abs() * 3.5f);
if (uVar2 > 100) {
uVar2 = 100;
}
@@ -812,7 +807,7 @@ void down(fganon_class* i_this) {
sp2C.y += 300.0f;
gndChk.SetPos(&sp2C);
f32 height = dComIfG_Bgsp()->GroundCross(&gndChk);
if ((height != -1e+09f) && (i_this->current.pos.y <= height)) {
if (height != C_BG_MIN_HEIGHT && i_this->current.pos.y <= height) {
bVar3 = TRUE;
}
if ((i_this->m3A4[0] == 0) || bVar3) {
@@ -937,7 +932,7 @@ void kieru(fganon_class* i_this) {
/* 00004584-00004BC8 .text fail__FP12fganon_class */
void fail(fganon_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
i_this->m3AE = 3;
switch(i_this->m388) {
case 0: {
@@ -1162,7 +1157,7 @@ void start(fganon_class* i_this) {
/* 00005128-00005350 .text end__FP12fganon_class */
void end(fganon_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
i_this->m3AE = 3;
fopAcM_OffStatus(i_this, 0);
i_this->attention_info.flags = 0;
@@ -1215,7 +1210,7 @@ void end(fganon_class* i_this) {
/* 00005350-000056A4 .text last_end__FP12fganon_class */
void last_end(fganon_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
i_this->m3AE = 3;
fopAcM_OffStatus(i_this, 0);
i_this->attention_info.flags = 0;
@@ -1593,7 +1588,7 @@ s32 move(fganon_class* i_this) {
fly2(i_this);
res = 1;
break;
case 0xB:
case 11:
shot2(i_this);
res = 1;
break;
@@ -1604,13 +1599,13 @@ s32 move(fganon_class* i_this) {
down(i_this);
res = 1;
break;
case 0x14:
case 20:
start(i_this);
break;
case 0x15:
case 21:
end(i_this);
break;
case 0x16:
case 22:
last_end(i_this);
break;
default:
@@ -1656,7 +1651,7 @@ void demo_camera(fganon_class* i_this) {
camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
bVar3 = TRUE;
switch(i_this->mB54) {
case 0x1: {
case 1: {
if (!i_this->eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(a_this, dEvtFlag_STAFF_ALL_e, 0xFFFF, 0);
i_this->eventInfo.onCondition(dEvtCmd_INDEMO_e);
@@ -1675,7 +1670,7 @@ void demo_camera(fganon_class* i_this) {
player->changeOriginalDemo();
player->changeDemoMode(0x18);
}
case 0x2: {
case 2: {
transformedPos.x = -300306.0f;
transformedPos.y = 715.0f;
transformedPos.z = -303407.0f;
@@ -1726,7 +1721,7 @@ void demo_camera(fganon_class* i_this) {
i_this->mB68 = i_this->current.pos;
i_this->mB68.y += REG0_F(0) + 160.0f;
}
case 0x3: {
case 3: {
if (i_this->mB56 > 60) {
cLib_addCalc2(&i_this->mB5C.x, -300269.0f, 0.1f, i_this->mB80 * 100.0f);
cLib_addCalc2(&i_this->mB5C.y, 870.0f, 0.1f, i_this->mB80 * 100.0f);
@@ -1755,7 +1750,7 @@ void demo_camera(fganon_class* i_this) {
}
break;
}
case 0x32: {
case 50: {
if (!i_this->eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(a_this, dEvtFlag_STAFF_ALL_e, 0xFFFF, 0);
i_this->eventInfo.onCondition(dEvtCmd_INDEMO_e);
@@ -1775,7 +1770,7 @@ void demo_camera(fganon_class* i_this) {
i_this->shape_angle.y = 0;
}
case 0x33: {
case 51: {
i_this->current.pos.x = -300202.0f;
i_this->current.pos.y = 715.0f;
i_this->current.pos.z = -301859.0f;
@@ -1818,7 +1813,7 @@ void demo_camera(fganon_class* i_this) {
}
break;
}
case 0x34: {
case 52: {
yPos = player->current.pos.y;
transformedPos.x = -300202.0f;
transformedPos.y = yPos;
@@ -1841,7 +1836,7 @@ void demo_camera(fganon_class* i_this) {
}
break;
}
case 0x35: {
case 53: {
i_this->mB68.x = -300098.0f;
i_this->mB68.y = 580.0f;
i_this->mB68.z = -301997.0f;
@@ -1866,7 +1861,7 @@ void demo_camera(fganon_class* i_this) {
i_this->mB68.y -= REG0_F(11) + 30.0f;
i_this->m388++;
}
case 0x36: {
case 54: {
cLib_addCalc2(&i_this->mB68.y, (i_this->eyePos.y - 30.0f) + REG0_F(11), 0.1f, 20.0f);
if (i_this->mB56 == 100) {
i_this->mB54 = 55;
@@ -1877,7 +1872,7 @@ void demo_camera(fganon_class* i_this) {
break;
}
}
case 0x37: {
case 55: {
if (i_this->mB56 == 20) {
mDoAud_seStart(JA_SE_CV_PG_LAUGH_1, NULL, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)));
}
@@ -1909,9 +1904,9 @@ void demo_camera(fganon_class* i_this) {
i_this->mB54 = 150;
fopAcM_delete(a_this);
goto label0x96;
goto case_150;
}
case 0x64: {
case 100: {
if (!i_this->eventInfo.checkCommandDemoAccrpt()) {
fopAcM_orderPotentialEvent(a_this, dEvtFlag_STAFF_ALL_e, 0xFFFF, 0);
i_this->eventInfo.onCondition(dEvtCmd_INDEMO_e);
@@ -1936,7 +1931,7 @@ void demo_camera(fganon_class* i_this) {
i_this->shape_angle.y = fopAcM_searchPlayerAngleY(a_this);
}
case 0x65: {
case 101: {
cLib_addCalc2(&i_this->mB68.x, i_this->current.pos.x, 0.1f, 200.0f);
cLib_addCalc2(&i_this->mB68.y, i_this->eyePos.y - 50.0f, 0.1f, 200.0f);
cLib_addCalc2(&i_this->mB68.z, i_this->current.pos.z, 0.1f, 200.0f);
@@ -1967,11 +1962,11 @@ void demo_camera(fganon_class* i_this) {
cLib_addCalc2(&i_this->mB80, 1.0f, 1.0f, REG8_F(7) + 0.1f);
break;
}
case 0x0:
case 0:
default: {
break;
}
case 0x67: {
case 103: {
if (i_this->mB56 > REG0_S(2) + 8) {
cLib_addCalc2(&i_this->mB68.y, player->current.pos.y + REG0_F(9), 0.8f, REG0_F(10) + 30.0f);
}
@@ -1988,8 +1983,8 @@ void demo_camera(fganon_class* i_this) {
dComIfGs_onSwitch(i_this->mSwitchNo, fopAcM_GetRoomNo(a_this));
}
}
case 0x96: {
label0x96:
case 150: {
case_150:
camera->mCamera.SetTrimSize(0);
camera->mCamera.Start();
dMeter_mtrShow();
@@ -2007,7 +2002,6 @@ void demo_camera(fganon_class* i_this) {
/* 00007434-0000778C .text ball_bg_check__FP12fganon_class */
BOOL ball_bg_check(fganon_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
dBgS_LinChk linChk;
cXyz posVec = i_this->m3E0 + (i_this->m3E0 - i_this->m3EC) * 1.05f;
linChk.Set(&i_this->m3E0, &posVec, a_this);
@@ -2165,33 +2159,38 @@ void energy_ball_move(fganon_class* i_this) {
atInfo.mResultingAttackType = 0xFF;
atInfo.mpObj = NULL;
}
if ((atInfo.mpObj && (atInfo.mResultingAttackType == 1) && atInfo.mpObj->ChkAtType(AT_TYPE_SWORD)) &&
(dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_1_e || dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e || dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_2_e) || bVar3) {
local_5c = a_this->eyePos - i_this->m3E0;
local_5c.y -= REG0_F(17) + 30.0f;
if ((atInfo.mpObj && atInfo.mResultingAttackType == 1 && atInfo.mpObj->ChkAtType(AT_TYPE_SWORD) &&
(dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_1_e ||
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e ||
dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_2_e)) ||
bVar3)
{
local_5c = a_this->eyePos - i_this->m3E0;
local_5c.y -= REG0_F(17) + 30.0f;
cMtx_YrotS(*calc_mtx, cM_atan2s(local_5c.x, local_5c.z));
cMtx_XrotM(*calc_mtx, -cM_atan2s(local_5c.y, std::sqrtf(local_5c.x * local_5c.x + local_5c.z * local_5c.z)));
local_50.z = i_this->m404;
MtxPosition(&local_50, &i_this->m3F8);
i_this->m408 = 5;
dScnPly_ply_c::setPauseTimer(2);
bVar2 = TRUE;
s32 lVar11 = i_this->m688 + 2;
if (lVar11 > 7) {
lVar11 = 7;
}
mDoAud_changeSubBgmStatus(lVar11);
i_this->m688++;
dComIfGs_onEventBit(0x3f20);
}
else if (bVar5) {
cMtx_YrotS(*calc_mtx, cM_atan2s(local_5c.x, local_5c.z));
cMtx_XrotM(
*calc_mtx, -cM_atan2s(local_5c.y, std::sqrtf(local_5c.x * local_5c.x + local_5c.z * local_5c.z))
);
local_50.z = i_this->m404;
MtxPosition(&local_50, &i_this->m3F8);
i_this->m408 = 5;
dScnPly_ply_c::setPauseTimer(2);
bVar2 = TRUE;
s32 lVar11 = i_this->m688 + 2;
if (lVar11 > 7) {
lVar11 = 7;
}
mDoAud_changeSubBgmStatus(lVar11);
i_this->m688++;
dComIfGs_onEventBit(0x3f20);
} else if (bVar5) {
local_5c = player->eyePos - i_this->m3E0;
local_5c.y -= REG0_F(18) + 50.0f;
+4 -4
View File
@@ -66,17 +66,17 @@ void daPy_mtxFollowEcallBack_c::end() {
}
/* 80102BF8-80102C84 .text makeEmitter__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC4cXyz */
void daPy_mtxFollowEcallBack_c::makeEmitter(u16 particleID, MtxP mtx, const cXyz* pos, const cXyz* scale) {
JPABaseEmitter* daPy_mtxFollowEcallBack_c::makeEmitter(u16 particleID, MtxP mtx, const cXyz* pos, const cXyz* scale) {
end();
mpMtx = mtx;
dComIfGp_particle_setP1(particleID, pos, NULL, scale, 0xFF, this);
return dComIfGp_particle_setP1(particleID, pos, NULL, scale, 0xFF, this);
}
/* 80102C84-80102D14 .text makeEmitterColor__25daPy_mtxFollowEcallBack_cFUsPA4_fPC4cXyzPC8_GXColorPC8_GXColor */
void daPy_mtxFollowEcallBack_c::makeEmitterColor(u16 particleID, MtxP mtx, const cXyz* pos, const GXColor* prmColor, const GXColor* envColor) {
JPABaseEmitter* daPy_mtxFollowEcallBack_c::makeEmitterColor(u16 particleID, MtxP mtx, const cXyz* pos, const GXColor* prmColor, const GXColor* envColor) {
end();
mpMtx = mtx;
dComIfGp_particle_setP1(particleID, pos, NULL, NULL, 0xFF, this, -1, prmColor, envColor);
return dComIfGp_particle_setP1(particleID, pos, NULL, NULL, 0xFF, this, -1, prmColor, envColor);
}
/* 80102D14-80102D90 .text setDoButtonQuake__9daPy_py_cFv */
+3 -4
View File
@@ -1,8 +1,7 @@
/**
* d_a_player_battle.inc
*
* Code relating to (?) (How is this different from the "cut" functions in the
* sword file?)
* Code relating to parrying enemies.
*
* This file is not a standalone translation unit and is instead directly
* included into d_a_player_main.cpp.
@@ -53,10 +52,10 @@ void daPy_lk_c::setSpecialBattle(BOOL param_0) {
}
/* 8013E384-8013E454 .text changeSpecialBattle__9daPy_lk_cFv */
int daPy_lk_c::changeSpecialBattle() {
BOOL daPy_lk_c::changeSpecialBattle() {
if (mpAttnActorLockOn != NULL && (dComIfGp_getDoStatus() == 26 || (m34C5 == 5))) {
fopEn_enemy_c* enemy = (fopEn_enemy_c*)mpAttnActorLockOn;
if (m34C5 == 5 || (doTrigger() && enemy->getBtStartFrame() <= enemy->getBtNowFrame())) {
if (m34C5 == 5 || (spBattleTrigger() && enemy->getBtStartFrame() <= enemy->getBtNowFrame())) {
if (enemy->getBtAttackType() == 1) {
return procBtJump_init(enemy);
}
+2 -2
View File
@@ -131,7 +131,7 @@ BOOL daPy_lk_c::procBottleSwing_init(int param_0) {
iVar2 = checkShipRideUseItem(1);
commonProcInit(daPyProc_BOTTLE_SWING_e);
if ((int)param_0 != 0) {
deleteEquipItem(0);
deleteEquipItem(FALSE);
setBottleModel(0x50);
}
current.angle.y = shape_angle.y;
@@ -211,7 +211,7 @@ BOOL daPy_lk_c::procBottleGet() {
if ((frameCtrl.getRate() < 0.01f) && (checkEndMessage(mEquipItem + 0x65))) {
dComIfGp_event_reset();
dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
deleteEquipItem(0);
deleteEquipItem(FALSE);
endDemoMode();
} else {
if (frameCtrl.getFrame() >= 9.0f) {
+1 -1
View File
@@ -197,7 +197,7 @@ BOOL daPy_lk_c::checkBgClimbMove() {
mGndChk.SetPos(&local_5c);
dVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk);
cM3dGPla* triPla;
if (((-1.0E+9f != dVar3) && (triPla = dComIfG_Bgsp()->GetTriPla(mGndChk), triPla->GetNP()->y >= 0.5f)) &&
if (((C_BG_MIN_HEIGHT != dVar3) && (triPla = dComIfG_Bgsp()->GetTriPla(mGndChk), triPla->GetNP()->y >= 0.5f)) &&
(dVar3 >= (local_68.y - 30.0f)))
{
dVar4 = 3.0f;
-2
View File
@@ -222,8 +222,6 @@ BOOL daPy_lk_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
/* 80139760-80139878 .text procCrawlMove_init__9daPy_lk_cFss */
BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) {
BOOL var_r29;
BOOL var_r28 = 0;
if (mCurProc == daPyProc_CRAWL_AUTO_MOVE_e) {
var_r29 = 0;
} else {
+72 -79
View File
@@ -235,88 +235,81 @@ BOOL daPy_lk_c::procFanSwing() {
daPy_HIO_move_c0::m.field_0x1C,
daPy_HIO_move_c0::m.field_0x20
);
} else {
if (m3570 == 0) {
if (m34D0 != 0) {
if (!checkHeavyStateOn() &&
(!mAcch.ChkGroundHit() ||
checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK80000000 | daPyFlg0_UNK20000000)) ||
(!dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) || (!dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd))))
{
mVelocity = 10.0f;
current.angle.y = shape_angle.y + 0x8000;
if (mCurrAttributeCode == dBgS_Attr_ICE_e) {
m36A0.x += 10.0f * cM_ssin(current.angle.y);
m36A0.z += 10.0f * cM_scos(current.angle.y);
}
} else if (m3570 == 0) {
if (m34D0 != 0) {
if (!checkHeavyStateOn() &&
(!mAcch.ChkGroundHit() || checkNoResetFlg0(daPy_FLG0(daPyFlg0_UNK80000000 | daPyFlg0_UNK20000000)) ||
!dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd) || !dComIfG_Bgsp()->ChkMoveBG(mAcch.m_gnd)))
{
mVelocity = 10.0f;
current.angle.y = shape_angle.y + 0x8000;
if (mCurrAttributeCode == dBgS_Attr_ICE_e) {
m36A0.x += 10.0f * cM_ssin(current.angle.y);
m36A0.z += 10.0f * cM_scos(current.angle.y);
}
m3534 = 10;
m353A = 3;
local_60.set(current.pos.x, current.pos.y + 70.0f, current.pos.z);
m3536 = shape_angle.y;
if (mpAttnActorLockOn == NULL) {
m3538 = 0;
} else {
local_54 = (mpAttnActorLockOn->eyePos - current.pos);
m3538 = cM_atan2s(-local_54.y, local_54.absXZ());
}
mpYuchw00Brk->setFrame(0.0f);
m33E8.end();
m33E8.makeEmitter(dPa_name::ID_COMMON_0032, mpYuchw00Model->getAnmMtx(2), &local_60, NULL);
pJVar5 = m33E8.getEmitter();
if (pJVar5 != NULL) {
pJVar5->setGlobalPrmColor(tevStr.mColorC0.r, tevStr.mColorC0.g, tevStr.mColorC0.b);
}
mFanWindCps.SetStartEnd(current.pos, local_60);
seStartOnlyReverb(JA_SE_LK_FAN_SWING);
local_48.set(
current.pos.x + 100.0f * cM_ssin(shape_angle.y),
current.pos.y + 50.0f,
current.pos.z + 100.0f * cM_scos(shape_angle.y)
);
mGndChk.SetPos(&local_48);
local_48.y = dComIfG_Bgsp()->GroundCross(&mGndChk);
if (local_48.y >= current.pos.y - 50.0f) {
int iVar4 = dComIfG_Bgsp()->GetAttributeCode(mGndChk);
if (!strcmp(dComIfGp_getStartStageName(), "Adanmae")) {
dComIfGp_particle_setP1(dPa_name::ID_SCENE_8236, &local_48, &shape_angle);
}
dPa_control_c::mSmokeEcallback.onWindOff();
int iStack_84;
pJVar5 = dComIfGp_particle_setSimpleLand(
iVar4, &local_48, NULL, 1.0f, 1.0f, 1.0f, &tevStr, &iStack_84, 0x17
);
dPa_control_c::mSmokeEcallback.offWindOff();
if (pJVar5) {
csXyz local_80;
local_80.y = shape_angle.y + 0x8000;
local_80.x = getGroundAngle(&(mGndChk), local_80.y);
local_80.z = getGroundAngle(&(mGndChk), local_80.y + -0x4000);
mDoMtx_trans(mDoMtx_stack_c::now, local_48.x, local_48.y, local_48.z);
mDoMtx_ZXYrotM(mDoMtx_stack_c::now, local_80.x, local_80.y, local_80.z);
JPASetRMtxTVecfromMtx(
mDoMtx_stack_c::now, pJVar5->mGlobalRotation, (pJVar5->mGlobalTranslation)
);
pJVar5->setSpread(0.45f);
if (iVar4 == 4) {
pJVar5->setRate(100.0f);
} else {
pJVar5->setRate(50.0f);
}
}
}
local_3c.set(current.pos.x, current.pos.y + 50.0f, current.pos.z);
dKyw_squal_set(&local_3c, 1000, shape_angle.y, 280.0f, 1000.0f, 1.0f, 140.0f, 0.08f);
}
m3534 = 10;
m353A = 3;
local_60.set(current.pos.x, current.pos.y + 70.0f, current.pos.z);
m3536 = shape_angle.y;
if (mpAttnActorLockOn == NULL) {
m3538 = 0;
} else {
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
local_54 = (mpAttnActorLockOn->eyePos - current.pos);
m3538 = cM_atan2s(-local_54.y, local_54.absXZ());
}
voiceStart(1);
m3570 = 1;
mpYuchw00Brk->setFrame(0.0f);
m33E8.end();
m33E8.makeEmitter(dPa_name::ID_COMMON_0032, mpYuchw00Model->getAnmMtx(2), &local_60, NULL);
pJVar5 = m33E8.getEmitter();
if (pJVar5 != NULL) {
pJVar5->setGlobalPrmColor(tevStr.mColorC0.r, tevStr.mColorC0.g, tevStr.mColorC0.b);
}
mFanWindCps.SetStartEnd(current.pos, local_60);
seStartOnlyReverb(JA_SE_LK_FAN_SWING);
local_48.set(
current.pos.x + 100.0f * cM_ssin(shape_angle.y),
current.pos.y + 50.0f,
current.pos.z + 100.0f * cM_scos(shape_angle.y)
);
mGndChk.SetPos(&local_48);
local_48.y = dComIfG_Bgsp()->GroundCross(&mGndChk);
if (local_48.y >= current.pos.y - 50.0f) {
int iVar4 = dComIfG_Bgsp()->GetAttributeCode(mGndChk);
if (!strcmp(dComIfGp_getStartStageName(), "Adanmae")) {
dComIfGp_particle_setP1(dPa_name::ID_SCENE_8236, &local_48, &shape_angle);
}
dPa_control_c::mSmokeEcallback.onWindOff();
int iStack_84;
pJVar5 = dComIfGp_particle_setSimpleLand(
iVar4, &local_48, NULL, 1.0f, 1.0f, 1.0f, &tevStr, &iStack_84, 0x17
);
dPa_control_c::mSmokeEcallback.offWindOff();
if (pJVar5) {
csXyz local_80;
local_80.y = shape_angle.y + 0x8000;
local_80.x = getGroundAngle(&(mGndChk), local_80.y);
local_80.z = getGroundAngle(&(mGndChk), local_80.y + -0x4000);
mDoMtx_trans(mDoMtx_stack_c::now, local_48.x, local_48.y, local_48.z);
mDoMtx_ZXYrotM(mDoMtx_stack_c::now, local_80.x, local_80.y, local_80.z);
JPASetRMtxTVecfromMtx(mDoMtx_stack_c::now, pJVar5->mGlobalRotation, (pJVar5->mGlobalTranslation));
pJVar5->setSpread(0.45f);
if (iVar4 == 4) {
pJVar5->setRate(100.0f);
} else {
pJVar5->setRate(50.0f);
}
}
}
local_3c.set(current.pos.x, current.pos.y + 50.0f, current.pos.z);
dKyw_squal_set(&local_3c, 1000, shape_angle.y, 280.0f, 1000.0f, 1.0f, 140.0f, 0.08f);
} else {
if (cLib_addCalc(&mVelocity, 0.0f, 0.5f, 1.5f, 0.3f) < 0.5f) {
resetFootEffect();
}
seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S);
}
voiceStart(1);
m3570 = 1;
} else if (cLib_addCalc(&mVelocity, 0.0f, 0.5f, 1.5f, 0.3f) < 0.5f) {
resetFootEffect();
}
m35EC = frameCtrl.getFrame();
@@ -381,7 +374,7 @@ BOOL daPy_lk_c::procFanGlide() {
}
}
if (frameCtrl.getRate() < 0.01f && m3570 == 0 && m32E4.mpEmitter == NULL) {
m32E4.makeEmitter(0x4c, mpCLModel->getAnmMtx(0xf), &current.pos, NULL);
m32E4.makeEmitter(dPa_name::ID_COMMON_004C, mpCLModel->getAnmMtx(0xf), &current.pos, NULL);
}
if (frameCtrl.getFrame() > 2.0f || m3570 != 0) {
@@ -439,7 +432,7 @@ BOOL daPy_lk_c::procFanGlide() {
gravity = daPy_HIO_fan_c0::m.field_0x3C;
maxFallSpeed = daPy_HIO_fan_c0::m.field_0x38;
}
if (checkSetItemTrigger(dItem_DEKU_LEAF_e, 1) && (frameCtrl.getRate() < 0.01f) && m3570 == 0) {
if (checkSetItemTrigger(dItem_DEKU_LEAF_e, 1) && frameCtrl.getRate() < 0.01f && m3570 == 0) {
setSingleMoveAnime(
ANM_USEFANB,
daPy_HIO_fan_c0::m.field_0x20,
+4 -4
View File
@@ -989,7 +989,7 @@ BOOL daPy_lk_c::draw() {
mDoExt_modelUpdateDL(mpSuimenMunyaModel);
}
if (!r24 && !dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x20)) {
if (checkSwordEquip() && !checkDemoSwordNoDraw(1)) {
if (checkSwordEquip() && !checkDemoSwordNoDraw(TRUE)) {
entryDLSetLight(mpEquippedSwordModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE);
}
}
@@ -1003,7 +1003,7 @@ BOOL daPy_lk_c::draw() {
if (mpBottleContentsModel != NULL) {
updateDLSetLight(mpBottleContentsModel, 0);
}
if (mpEquipItemModel && !checkCaughtShapeHide() && !checkDemoSwordNoDraw(0)) {
if (mpEquipItemModel && !checkCaughtShapeHide() && !checkDemoSwordNoDraw(FALSE)) {
if (!checkBowItem(mEquipItem) || !checkPlayerGuard()) {
if (mEquipItem == dItem_HOOKSHOT_e) {
if (mActorKeepEquip.getActor()) {
@@ -1013,7 +1013,7 @@ BOOL daPy_lk_c::draw() {
}
entryDLSetLight(mpEquipItemModel, mNoResetFlg1 & daPyFlg1_FREEZE_STATE);
if (mpSwordModel1 != NULL) {
if (checkChanceMode() || checkNoResetFlg1(daPyFlg1_UNK8000) || dComIfGs_getSelectEquip(0) == dItem_MASTER_SWORD_3_e) {
if (checkChanceMode() || checkNoResetFlg1(daPyFlg1_UNK8000) || checkFinalMasterSwordEquip()) {
updateDLSetLight(mpSwordModel1, 0);
}
}
@@ -1752,7 +1752,7 @@ BOOL daPy_lk_c::setDamagePoint(f32 amount) {
dComIfGp_setItemLifeCount(amount);
if (amount < 0.0f) {
offNoResetFlg1(daPyFlg1_UNK8000);
if (dComIfGs_getSelectEquip(0) != dItem_MASTER_SWORD_3_e) {
if (!checkFinalMasterSwordEquip()) {
offNoResetFlg1(daPyFlg1_UNK200000);
}
}
+3 -3
View File
@@ -399,7 +399,7 @@ BOOL daPy_lk_c::procShipSteer_init() {
return false;
} else {
commonProcInit(daPyProc_SHIP_STEER_e);
deleteEquipItem(1);
deleteEquipItem(TRUE);
gravity = 0.0f;
mVelocity = 0.0f;
speed.y = 0.0f;
@@ -461,7 +461,7 @@ BOOL daPy_lk_c::procShipPaddle() {
BOOL daPy_lk_c::procShipScope_init(int param_0) {
daShip_c* iVar1 = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_SCOPE_e);
deleteEquipItem(1);
deleteEquipItem(TRUE);
gravity = 0.0f;
iVar1->m034D = 2;
setShipRidePos(0);
@@ -591,7 +591,7 @@ BOOL daPy_lk_c::procShipCannon_init() {
} else {
daShip_c* iVar1 = dComIfGp_getShipActor();
commonProcInit(daPyProc_SHIP_CANNON_e);
deleteEquipItem(1);
deleteEquipItem(TRUE);
gravity = 0.0f;
mVelocity = 0.0f;
iVar1->m034D = 9;
+1 -1
View File
@@ -218,7 +218,7 @@ BOOL daPy_lk_c::checkSwimFallCheck() {
BOOL daPy_lk_c::changeSwimOutProc() {
cM3dGPla* pcVar1;
if (mAcch.GetGroundH() != -1e+09f && dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) {
if (mAcch.GetGroundH() != C_BG_MIN_HEIGHT && dComIfG_Bgsp()->ChkPolySafe(mAcch.m_gnd)) {
pcVar1 = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd);
}
else {
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -384,7 +384,7 @@ BOOL daPy_lk_c::procWeaponThrow() {
boko->m2BA = 1;
boko->m2CA = uVar2;
voiceStart(0);
deleteEquipItem(0);
deleteEquipItem(FALSE);
}
return true;
}
+52 -47
View File
@@ -769,7 +769,7 @@ void daShip_c::getMaxWaterY(cXyz* shipPos) {
}
}
else {
if (m03F8 != -1e+09f) {
if (m03F8 != C_BG_MIN_HEIGHT) {
shipPos->y = m03F8;
}
else {
@@ -3023,7 +3023,7 @@ void daShip_c::setEffectData(float param_1, short param_2) {
/* 000085D8-00008688 .text setRoomInfo__8daShip_cFv */
void daShip_c::setRoomInfo() {
int roomId;
if (mAcch.GetGroundH() != -1e+09f) {
if (mAcch.GetGroundH() != C_BG_MIN_HEIGHT) {
roomId = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd);
tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mAcch.m_gnd);
m03C4 = dComIfG_Bgsp()->GetGroundCode(mAcch.m_gnd);
@@ -3094,13 +3094,16 @@ void daShip_c::setRopePos() {
float fVar2;
float fVar17;
MtxP pMVar5;
cXyz* r4;
int iVar11;
short sVar14;
int sVar12;
JPABaseEmitter* emitter;
cXyz* r3;
cXyz* ropeSegments;
cXyz* currentRopeSegment;
short currentRopeSegmentIndex;
JPABaseEmitter* emitter;
MtxP pMVar5;
cXyz spF8;
cXyz spEC;
@@ -3177,7 +3180,7 @@ void daShip_c::setRopePos() {
*ropeSegments += (*currentRopeSegment - spF8) * 0.05f;
}
if (mCurrentRopeSegmentIndex == 20 && checkStateFlg(daSFLG_UNK10000000_e)) {
cXyz* r4 = mRopeLine.getPos(0);;
r4 = mRopeLine.getPos(0);;
mDoMtx_multVecZero(mpSalvageArmModel->getAnmMtx(1), &spE0);
spE0 -= *r4;
@@ -3220,7 +3223,7 @@ void daShip_c::setRopePos() {
currentRopeSegment->z - pMVar5[2][3]
);
sVar14 = 0x7fff;
int iVar11 = 0x8000 - (m0398 * 2);
iVar11 = 0x8000 - (m0398 * 2);
sVar12 = iVar11 - (0x8000 - m039A) * ((float)m0398 / (float)m039A);
}
@@ -3259,7 +3262,7 @@ void daShip_c::setRopePos() {
if (fVar2 > currentRopeSegment->y) {
ropeSegments = currentRopeSegment;
cXyz* r3 = currentRopeSegment;
r3 = currentRopeSegment;
for (int i = 0; i < mCurrentRopeSegmentIndex; i++, ropeSegments++) {
if (ropeSegments->y <= fVar2) {
r3 = ropeSegments;
@@ -3485,30 +3488,12 @@ void daShip_c::setHeadAnm() {
/* 00009B4C-0000B978 .text execute__8daShip_cFv */
BOOL daShip_c::execute() {
/* Nonmatching */
float fVar2;
float fVar3;
float dVar27;
int iVar23;
int sp18;
s16 sp12;
s16 sp10;
short sVar16;
short sVar5;
int iVar6;
J3DModel* mModel1;
J3DModel* mModel2;
short sVar26;
dDemo_actor_c* demoActor;
daPy_lk_c* link;
MtxP jnt_mtx;
static cXyz sail_offset(0.5f, 155.0f, 50.0f);
static cXyz sph_offset(-5.0f, 0.0f, 0.0f);
static f32 cyl_offset[] = {100.0f, -20.0f, -100.0f};
fVar2 = mFwdVel;
fVar3 = speedF;
f32 prev_fwdvel = mFwdVel;
f32 prev_speedF = speedF;
m0351 = 0xFF;
m0404 = 0.0f;
m0428 = NULL;
@@ -3602,6 +3587,7 @@ BOOL daShip_c::execute() {
mpGrid = NULL;
mpGrid = (daGrid_c*)fopAcM_SearchByID(mGridID);
dDemo_actor_c* demoActor;
demoActor = dComIfGp_demo_getActor(demoActorID);
if (demoActor) {
@@ -3614,6 +3600,7 @@ BOOL daShip_c::execute() {
procCraneUp_init();
}
short sVar26;
sVar26 = m0366;
if (mAnmTransform) {
@@ -3648,6 +3635,7 @@ BOOL daShip_c::execute() {
if (!checkStateFlg(daSFLG_UNK1_e)) {
if (m034C != 12 && m034C != 15 && m034C != 7 && m034C != 11 && m034C != 13 && m034C != 16 && !dComIfGp_event_runCheck()) {
if (mTornadoActor) {
short sVar16;
sVar16 = shape_angle.y;
cLib_addCalcAngleS(&shape_angle.y, m040C * 10430.378f + 20480.0f, 5, 0x2000, 0x200);
setControllAngle(getAimControllAngle(sVar16));
@@ -3655,7 +3643,9 @@ BOOL daShip_c::execute() {
}
else {
if (mWhirlActor) {
short sVar16;
sVar16 = shape_angle.y;
short sVar5;
if (m0352) {
sVar5 = m040C * 10430.378f + 20480.0f;
}
@@ -3668,7 +3658,9 @@ BOOL daShip_c::execute() {
}
}
}
short sVar16;
sVar16 = -m0384;
short sVar5;
sVar5 = sVar16 * 0.05f;
if (sVar5 == 0) {
if (sVar16 > 0) {
@@ -3715,7 +3707,7 @@ BOOL daShip_c::execute() {
}
}
if (!dComIfGp_event_runCheck() && !checkStateFlg(daSFLG_UNK1_e) && checkForceMove()) {
speedF = fVar3;
speedF = prev_speedF;
if (mTornadoActor) {
fVar4 = m0404 * 40.0f + 30.0f;
if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_BOW_AIM_e) || !dComIfGp_checkCameraAttentionStatus(0, 0x20)) {
@@ -3738,7 +3730,7 @@ BOOL daShip_c::execute() {
if (checkStateFlg(daSFLG_UNK1_e)) {
if (checkStateFlg(daSFLG_UNK2000000_e)) {
cLib_chaseF(&speed.y, 20.0f, 1.0f - gravity);
speedF = fVar3;
speedF = prev_speedF;
cLib_chaseF(&speedF, 55.0f, 3.0f);
offStateFlg(daSFLG_UNK2000000_e);
}
@@ -3755,23 +3747,23 @@ BOOL daShip_c::execute() {
if (checkForceMove() && !dComIfGp_event_runCheck()) {
if (mTornadoActor) {
if (!dComIfGp_checkPlayerStatus0(0, daPyStts0_BOW_AIM_e) || !dComIfGp_checkCameraAttentionStatus(0, 0x20)) {
fVar3 = 25.0f;
prev_speedF = 25.0f;
}
else {
fVar3 = 5.0f;
prev_speedF = 5.0f;
}
}
else {
// Bug? This room check assumes we're on the sea without checking?
if (dComIfGs_getBombNum() == 0 && fopAcM_GetRoomNo(this) == dIsleRoom_OutsetIsland_e) {
fVar3 = 10.0f;
prev_speedF = 10.0f;
}
else {
fVar3 = 0.6f;
prev_speedF = 0.6f;
}
}
cLib_chaseF(&m0400, 0.0f, fVar3);
cLib_chaseF(&m0400, 0.0f, prev_speedF);
m0408 = std::fabsf(speedF) / m0400;
@@ -3789,17 +3781,18 @@ BOOL daShip_c::execute() {
r23 = TRUE;
}
else {
fVar3 = current.pos.y;
prev_speedF = current.pos.y;
fopAcM_posMoveF(this, (cXyz *)&mStts);
current.pos.y = fVar3;
current.pos.y = prev_speedF;
}
if (r23) {
cXyz sp114(current.pos - old.pos);
float dVar27;
dVar27 = sp114.absXZ();
if (dVar27 > 1.0f) {
fVar3 = speedF / dVar27;
current.pos.x = old.pos.x + sp114.x * fVar3;
current.pos.z = old.pos.z + sp114.z * fVar3;
prev_speedF = speedF / dVar27;
current.pos.x = old.pos.x + sp114.x * prev_speedF;
current.pos.z = old.pos.z + sp114.z * prev_speedF;
}
}
}
@@ -3814,7 +3807,8 @@ BOOL daShip_c::execute() {
}
else {
cXyz sp108;
if (mAcch.GetGroundH() != -1e+09f && dPath_GetPolyRoomPathVec(mAcch.m_gnd, &sp108, &sp18)) {
int sp18;
if (mAcch.GetGroundH() != C_BG_MIN_HEIGHT && dPath_GetPolyRoomPathVec(mAcch.m_gnd, &sp108, &sp18)) {
sp108.normalizeZP();
sp108 *= sp18 >> 1;
cLib_addCalcPosXZ(&m1044, sp108, 0.5f, 5.0f, 1.0f);
@@ -3875,6 +3869,8 @@ BOOL daShip_c::execute() {
mTrack.mBaseY = m03F4;
mTrack.mMinY = m03F8;
s16 sp12;
s16 sp10;
if (!checkStateFlg(daSFLG_UNK1_e)) {
setWaveAngle(&sp12, &sp10);
}
@@ -3908,6 +3904,8 @@ BOOL daShip_c::execute() {
mDoMtx_ZXYrotM(mDoMtx_stack_c::get(), shape_angle.x, shape_angle.y, shape_angle.z);
J3DModel* mModel1;
J3DModel* mModel2;
mModel1 = m0298->getModel();
mModel2 = m029C->getModel();
@@ -4017,7 +4015,9 @@ BOOL daShip_c::execute() {
}
}
int iVar23;
iVar23 = (s16)(m0366 - sVar26);
int iVar6;
iVar6 = abs(iVar23);
iVar23 *= m0366;
@@ -4041,11 +4041,13 @@ BOOL daShip_c::execute() {
// This should probably use the mDoMtx_multVecZero inline, but it's not getting inlined
// mDoMtx_multVecZero(mModel2->getAnmMtx(16), &eyePos);
MtxP jnt_mtx;
jnt_mtx = mModel2->getAnmMtx(16);
eyePos.x = jnt_mtx[0][3];
eyePos.y = jnt_mtx[1][3];
eyePos.z = jnt_mtx[2][3];
daPy_lk_c* link;
link = daPy_getPlayerLinkActorClass();
cXyz spCC;
spCC = link->current.pos - current.pos;
@@ -4096,6 +4098,8 @@ BOOL daShip_c::execute() {
}
}
short sVar16;
short sVar5;
if (bVar21) {
sVar16 = cM_atan2s(-spC0.y, spC0.absXZ()) - shape_angle.x;
@@ -4157,6 +4161,7 @@ BOOL daShip_c::execute() {
attention_info.flags &= ~fopAc_Attn_ACTION_SHIP_e;
}
if (m034C != 8 && dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
BOOL r24;
r24 = TRUE;
if (dComIfGs_isEventBit(0x1E40) && !dComIfGs_isEventBit(0x3840)) {
mNextMessageNo = 0x168c;
@@ -4186,16 +4191,16 @@ BOOL daShip_c::execute() {
m03DC = m0366 * 0.00012207031f;
fVar3 = (speedF * 0.1f) / 55.0f;
prev_speedF = (speedF * 0.1f) / 55.0f;
if (fVar3 > 0.05f) {
fVar3 = 0.05f;
if (prev_speedF > 0.05f) {
prev_speedF = 0.05f;
}
else if (fVar3 < -0.05f) {
fVar3 = -0.05;
else if (prev_speedF < -0.05f) {
prev_speedF = -0.05;
}
m03D4 += fVar3;
m03D4 += prev_speedF;
if (m03D4 > 1.0f) {
m03D4 -= 1.0f;
@@ -4215,7 +4220,7 @@ BOOL daShip_c::execute() {
mFwdVel += (m1044.x * cM_ssin(current.angle.y) + m1044.z * cM_scos(current.angle.y));
if (std::fabsf(mFwdVel) <= 0.01f || fVar2 * mFwdVel < 0.0f || mFwdVel * speedF < 0.0f) {
if (std::fabsf(mFwdVel) <= 0.01f || prev_fwdvel * mFwdVel < 0.0f || mFwdVel * speedF < 0.0f) {
mWaveL.mState = 1;
mWaveR.mState = 1;
mSplash.mState = 1;