player_fan 99%

This commit is contained in:
LagoLunatic
2025-04-01 20:46:23 -04:00
parent bc4c7dd5f9
commit f2ff19c83e
8 changed files with 370 additions and 382 deletions
+9 -2
View File
@@ -120,8 +120,15 @@ public:
void onAlphaOutFlg() { mAlphaOutFlg = TRUE; }
JPABaseEmitter* getEmitter() { return mpEmitter; }
void deleteCallBack() {}
void deleteCallBack() {
if(mpEmitter) {
mpEmitter->quitImmortalEmitter();
mpEmitter->setEmitterCallBackPtr(NULL);
mpEmitter = NULL;
}
}
public:
/* 0x4 */ BOOL mAlphaOutFlg;
/* 0x8 */ JPABaseEmitter* mpEmitter;
}; // Size: 0xC
@@ -987,7 +994,7 @@ public:
BOOL changeFrontWallTypeProc();
int changeSlideProc();
void changeWaitProc();
int changeLandProc(f32);
BOOL changeLandProc(f32);
BOOL setDamagePoint(f32);
BOOL checkNormalDamage(int);
void setDashDamage();
+10
View File
@@ -3448,6 +3448,16 @@ inline void dComIfGp_particle_setSimple(u16 particleID, cXyz* pos, u8 alpha = 0x
pParticle->setSimple(particleID, pos, alpha, prmColor, envColor, param_6);
}
inline JPABaseEmitter* dComIfGp_particle_setSimpleLand(int param_0, const cXyz* param_1, const csXyz* param_2,
f32 param_3, f32 param_4, f32 param_5,
dKy_tevstr_c* param_6, int* param_7, int param_8) {
dPa_control_c* pParticle = g_dComIfG_gameInfo.play.getParticle();
return pParticle->setSimpleLand(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8);
}
// TODO
inline void dComIfGp_particle_setSimpleLand(cBgS_PolyInfo&, const cXyz*, const csXyz*, f32, f32, f32, dKy_tevstr_c*, int*, int) {}
inline JPABaseEmitter* dComIfGp_particle_setBombSmoke(u16 particleID, const cXyz* pos,
const csXyz* angle = NULL, const cXyz* scale = NULL,
u8 alpha = 0xFF) {
+15 -24
View File
@@ -51,31 +51,22 @@ void daPy_lk_c::throwBoomerang() {
/* 80149698-801497A4 .text returnBoomerang__9daPy_lk_cFv */
int daPy_lk_c::returnBoomerang() {
dComIfGp_clearPlayerStatus0(0, daPyStts0_BOOMERANG_WAIT_e);
if (mEquipItem == daPyItem_NONE_e) {
if (daPy_getPlayerActorClass() == this) {
if (!dComIfGp_event_runCheck()) {
if (mDemo.getDemoType() == 0) {
if ((m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff || (checkPlayerGuard())) ||
(m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_DAMDASH || (checkBoomerangAnime())))
{
if (!(checkModeFlg(
ModeFlg_WHIDE | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_CLIMB | ModeFlg_SWIM |
ModeFlg_00080000 | ModeFlg_GRAB | ModeFlg_PUSHPULL | ModeFlg_LADDER | ModeFlg_CROUCH |
ModeFlg_CRAWL
)) ||
(mCurProc == daPyProc_SHIP_BOOMERANG_e))
{
mActorKeepEquip = mActorKeepThrow;
mActorKeepThrow.clearData();
mEquipItem = dItem_BOOMERANG_e;
onNoResetFlg0(daPyFlg0_UNK20);
return true;
}
}
}
}
}
if (mEquipItem == daPyItem_NONE_e && !checkNoControll() && !dComIfGp_event_runCheck() &&
mDemo.getDemoType() == 0 &&
(m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff || checkPlayerGuard() ||
checkDashDamageAnime() || checkBoomerangAnime()) &&
(!checkModeFlg(ModeFlg_WHIDE | ModeFlg_ROPE | ModeFlg_IN_SHIP | ModeFlg_CLIMB |
ModeFlg_SWIM | ModeFlg_00080000 | ModeFlg_GRAB | ModeFlg_PUSHPULL |
ModeFlg_LADDER | ModeFlg_CROUCH | ModeFlg_CRAWL) ||
mCurProc == daPyProc_SHIP_BOOMERANG_e)) {
mActorKeepEquip = mActorKeepThrow;
mActorKeepThrow.clearData();
mEquipItem = dItem_BOOMERANG_e;
onNoResetFlg0(daPyFlg0_UNK20);
return true;
}
mActorKeepThrow.clearData();
return false;
}
+327 -347
View File
@@ -53,14 +53,12 @@ BOOL daPy_fanJointCallback(J3DNode* node, int calcTiming) {
/* 8014BC2C-8014BD08 .text parachuteJointCB__9daPy_lk_cFi */
BOOL daPy_lk_c::parachuteJointCB(int param_0) {
if ((param_0 == 3) || (param_0 == 9)) {
if (param_0 == 3 || param_0 == 9) {
mDoMtx_trans(mDoMtx_stack_c::now, m3600, 0.0f, 0.0f);
} else if (param_0 == 1 || param_0 == 7) {
mDoMtx_YrotS(mDoMtx_stack_c::now, m355E);
} else {
if ((param_0 == 1) || (param_0 == 7)) {
mDoMtx_YrotS(mDoMtx_stack_c::now, m355E);
} else {
return true;
}
return true;
}
mDoMtx_concat(mpEquipItemModel->getAnmMtx(param_0), mDoMtx_stack_c::now, mDoMtx_stack_c::now);
mpEquipItemModel->setAnmMtx(1 * param_0, mDoMtx_stack_c::now);
@@ -82,7 +80,6 @@ BOOL daPy_parachuteJointCallback(J3DNode* node, int calcTiming) {
/* 8014BD4C-8014BE50 .text setShapeFanLeaf__9daPy_lk_cFv */
int daPy_lk_c::setShapeFanLeaf() {
/* Nonmatching - floats */
J3DMaterial* mesh;
if (mpEquipItemModel != NULL) {
@@ -204,7 +201,6 @@ BOOL daPy_lk_c::procFanSwing_init() {
/* 8014C34C-8014CA1C .text procFanSwing__9daPy_lk_cFv */
BOOL daPy_lk_c::procFanSwing() {
/* Nonmatching - floats, regalloc */
JPABaseEmitter* pJVar5;
cXyz local_6c;
cXyz local_60;
@@ -218,124 +214,117 @@ BOOL daPy_lk_c::procFanSwing() {
} else {
offModeFlg(ModeFlg_00000080);
}
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
}
if (frameCtrl.checkPass(4.0f) && m34D0 != 0) {
if (mFanSwingCb.getEmitter() != NULL) {
mFanSwingCb.deleteCallBack();
}
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0), &local_6c);
dComIfGp_particle_setP1(dPa_name::ID_COMMON_004A, &local_6c, &shape_angle, NULL, 0xff, &mFanSwingCb, -1);
}
if (frameCtrl.getFrame() < 22.0f) {
cLib_addCalc(
&mVelocity,
0.0f,
daPy_HIO_move_c0::m.field_0x24,
daPy_HIO_move_c0::m.field_0x1C,
daPy_HIO_move_c0::m.field_0x20
);
} else {
if ((frameCtrl.checkPass(4.0f)) && (m34D0 != 0)) {
pJVar5 = mFanSwingCb.getEmitter();
// Required to match.
if ((pJVar5 != NULL) && (pJVar5 != NULL)) {
pJVar5->quitImmortalEmitter();
mFanSwingCb.mpEmitter->mpEmitterCallBack = NULL;
mFanSwingCb.mpEmitter = NULL;
}
mDoMtx_multVecZero(mpCLModel->getAnmMtx(0), &local_6c);
dComIfGp_particle_setP1(dPa_name::ID_COMMON_004A, &local_6c, &shape_angle, NULL, 0xff, &mFanSwingCb, -1);
}
if (frameCtrl.getFrame() < 22.0f) {
cLib_addCalc(
&mVelocity,
0.0f,
daPy_HIO_move_c0::m.field_0x24,
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);
}
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) {
s16 sVar1 = tevStr.mColorC0.b;
s16 sVar2 = tevStr.mColorC0.g;
pJVar5->mGlobalPrmColor.r = tevStr.mColorC0.r;
pJVar5->mGlobalPrmColor.g = sVar2;
pJVar5->mGlobalPrmColor.b = sVar1;
}
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();
// TODO: Missing inline?
dPa_control_c* pParticle = g_dComIfG_gameInfo.play.getParticle();
int iStack_84;
pJVar5 = pParticle->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();
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
checkNextMode(0);
}
}
m35EC = frameCtrl.getFrame();
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
checkNextMode(0);
}
return true;
}
@@ -377,258 +366,249 @@ BOOL daPy_lk_c::procFanGlide_init(int param_0) {
/* 8014CB94-8014D778 .text procFanGlide__9daPy_lk_cFv */
BOOL daPy_lk_c::procFanGlide() {
/* Nonmatching - floats, branching, math */
f32 fVar3;
f32 fVar2;
f32 fVar1;
int iVar7;
f32 dVar13;
f32 local_64;
/* Nonmatching - float regswap and operand swap */
cXyz local_60;
cXyz local_54;
cXyz local_48;
JPABaseEmitter* emitter;
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
if ((int)m34D2 != 0) {
m34D2--;
}
if ((frameCtrl.checkPass(4.0f)) && (emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_004B, &current.pos))) {
JPASetRMtxTVecfromMtx(mpCLModel->getAnmMtx(0xf), emitter->mGlobalRotation, emitter->mGlobalTranslation);
if (frameCtrl.checkPass(4.0f)) {
JPABaseEmitter* emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_004B, &current.pos);
if (emitter) {
JPASetRMtxTVecfromMtx(mpCLModel->getAnmMtx(0xf), emitter->mGlobalRotation, emitter->mGlobalTranslation);
}
}
if (((frameCtrl.getRate() < 0.01f) && (m3570 == 0)) && (m32E4.mpEmitter == NULL)) {
if (frameCtrl.getRate() < 0.01f && m3570 == 0 && m32E4.mpEmitter == NULL) {
m32E4.makeEmitter(0x4c, mpCLModel->getAnmMtx(0xf), &current.pos, NULL);
}
if ((frameCtrl.getFrame() > 2.0f) || (m3570 != 0)) {
if (frameCtrl.getFrame() > 2.0f || m3570 != 0) {
if (mAcch.ChkGroundHit()) {
if (checkHeavyStateOn()) {
changeLandProc(daPy_HIO_fan_c0::m.field_0x50);
return changeLandProc(daPy_HIO_fan_c0::m.field_0x50);
} else {
procLand_init(daPy_HIO_fan_c0::m.field_0x50, 1);
return procLand_init(daPy_HIO_fan_c0::m.field_0x50, 1);
}
} else {
if ((checkJumpFlower()) || (checkJumpRideShip())) {
return true;
} else if (checkJumpFlower() || checkJumpRideShip()) {
return true;
}
if (m3280.mpBaseEmitter != NULL) {
if ((int)m34DA == 0) {
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_WATER);
m34DA = 6;
} else {
if (m3280.mpBaseEmitter != NULL) {
if ((int)m34DA == 0) {
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_WATER);
m34DA = 6;
} else {
m34DA--;
}
}
if (!(m34D0 > 0)) {
if (!checkHeavyStateOn()) {
maxFallSpeed = daPy_HIO_fan_c0::m.field_0x38;
if (m34D0 == 0) {
speed.y = daPy_HIO_fan_c0::m.field_0x40;
mVelocity = daPy_HIO_fan_c0::m.field_0x48;
} else {
speed.y = daPy_HIO_fan_c0::m.field_0x44;
}
}
m34D0 = 1;
m34DA--;
}
}
if (m34D0 <= 0) {
if (!checkHeavyStateOn()) {
maxFallSpeed = daPy_HIO_fan_c0::m.field_0x38;
if (m34D0 == 0) {
speed.y = daPy_HIO_fan_c0::m.field_0x40;
mVelocity = daPy_HIO_fan_c0::m.field_0x48;
} else {
if (!dComIfGp_event_runCheck()) {
m3574--;
if ((m3574 == 0) && (!(dComIfGs_getMagic() < 1))) {
dComIfGp_setItemMagicCount(-1);
m3574 = daPy_HIO_fan_c0::m.field_0x8;
}
}
if (m34D2 == 0) {
dComIfGp_setDoStatus(0x27);
}
if (((m34D2 == 0) && (doTrigger() || (cancelTrigger()))) ||
(dComIfGs_getMagic() < 1 && (m3574 == 0)))
speed.y = daPy_HIO_fan_c0::m.field_0x44;
}
}
m34D0 = 1;
} else {
if (!dComIfGp_event_runCheck()) {
m3574--;
if (m3574 == 0 && (!(dComIfGs_getMagic() < 1))) {
dComIfGp_setItemMagicCount(-1);
m3574 = daPy_HIO_fan_c0::m.field_0x8;
}
}
if (m34D2 == 0) {
dComIfGp_setDoStatus(0x27);
}
if ((m34D2 == 0 && (doTrigger() || cancelTrigger())) || (dComIfGs_getMagic() < 1 && m3574 == 0)) {
m3688 = current.pos;
m35F0 = m3688.y;
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_CLOSE);
if (swordTrigger()) {
setAnimeEquipSword(0);
}
return procFall_init(2, daPy_HIO_wallCatch_c0::m.field_0x54);
}
if (speed.y < -gravity && !checkHeavyStateOn()) {
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) {
setSingleMoveAnime(
ANM_USEFANB,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x28,
daPy_HIO_fan_c0::m.field_0x4,
daPy_HIO_fan_c0::m.field_0x2C
);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANBA),
0,
daPy_HIO_fan_c0::m.field_0x2C,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x28,
daPy_HIO_fan_c0::m.field_0x4,
NULL
);
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
voiceStart(5);
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_RISE);
m353A = 5;
}
if (mAcch.ChkWallHit()) {
dBgS_AcchCir* pdVar11 = &mAcchCir[0];
for (int i = 0; i < 3; i++, pdVar11++) {
if (pdVar11->ChkWallHit() &&
(cLib_distanceAngleS(current.angle.y, pdVar11->GetWallAngleY()) > 0x6000))
{
m3688 = current.pos;
m35F0 = m3688.y;
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_CLOSE);
if (swordTrigger()) {
setAnimeEquipSword(0);
}
procFall_init(2, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
if ((speed.y < -gravity) && (!checkHeavyStateOn())) {
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))
{
setSingleMoveAnime(
ANM_USEFANB,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x28,
daPy_HIO_fan_c0::m.field_0x4,
daPy_HIO_fan_c0::m.field_0x2C
);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANBA),
0,
daPy_HIO_fan_c0::m.field_0x2C,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x28,
daPy_HIO_fan_c0::m.field_0x4,
NULL
);
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
voiceStart(5);
seStartOnlyReverb(JA_SE_LK_FAN_CHUTE_RISE);
m353A = 5;
}
if (mAcch.ChkWallHit()) {
dBgS_AcchCir* pdVar11 = &mAcchCir[0];
for (int i = 0; i < 3; i++, pdVar11++) {
if ((pdVar11->ChkWallHit()) &&
(cLib_distanceAngleS(current.angle.y, pdVar11->GetWallAngleY()) > 0x6000))
{
mVelocity *= -1.0f;
break;
}
}
}
if (checkHeavyStateOn()) {
cLib_chaseF(&mVelocity, 0.0f, (0.1f * daPy_HIO_autoJump_c0::m.field_0x3C));
}
dKyw_get_AllWind_vec(&mHeadTopPos, &local_60, &local_64);
int uVar6 = m34E8 - shape_angle.y;
cLib_addCalc(
&mVelocity,
(daPy_HIO_fan_c0::m.field_0x48 * mStickDistance) * cM_scos(uVar6),
0.5f,
(0.1f + 0.4f * mStickDistance),
0.01f
);
cLib_addCalcAngleS(&m34D4, (512.0f * mStickDistance) * cM_ssin(uVar6), 5, 0x40, 8);
if (mWindCyl.ChkTgHit()) {
local_54 = *mWindCyl.GetTgRVecP();
dVar13 = local_54.abs();
if (dVar13 > 50.0f) {
local_54 *= (50.0f / dVar13);
}
fVar1 = 1.0f;
dVar13 = 20.0f;
local_64 = 1.0f;
if (m3570 == 0) {
m3570 = 1;
setSingleMoveAnime(ANM_USEFANB2, fVar1, 0.0f, -1, daPy_HIO_fan_c0::m.field_0x30);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANB2A),
0,
daPy_HIO_fan_c0::m.field_0x30,
1.0f,
0.0f,
-1.0f,
NULL
);
}
} else {
local_64 *= 1.5f;
if (local_64 >= 1.0f) {
local_64 = 1.0f;
}
local_54.x = local_64 * daPy_HIO_fan_c0::m.field_0x4C * local_60.x;
local_54.y = 0.5f * local_64 * local_60.y;
local_54.z = local_60.z * daPy_HIO_fan_c0::m.field_0x4C;
dVar13 = 3.0f;
if (m3570 != 0) {
m3570 = 0;
setSingleMoveAnime(
ANM_USEFANB,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x4 - 0.001f,
daPy_HIO_fan_c0::m.field_0x4,
daPy_HIO_fan_c0::m.field_0x34
);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANBA),
0,
daPy_HIO_fan_c0::m.field_0x34,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x4 - 0.001f,
daPy_HIO_fan_c0::m.field_0x4,
NULL
);
}
}
cLib_addCalc(&m3730.x, local_54.x, 0.5f, dVar13, 1.0f);
cLib_addCalc(&m3730.y, local_54.y, 0.5f, dVar13, 1.0f);
cLib_addCalc(&m3730.z, local_54.z, 0.5f, dVar13, 1.0f);
current.pos += m3730;
shape_angle.y = shape_angle.y + m34D4;
current.angle.y = shape_angle.y;
local_48.set(
m3730.x * cM_ssin(shape_angle.y) - m3730.z * cM_scos(shape_angle.y),
m3730.y,
m3730.x * cM_scos(shape_angle.y) + m3730.z * cM_ssin(shape_angle.y)
);
fVar2 = -local_48.x * 0.02f;
fVar1 = local_48.z * 0.02f;
fVar3 = 1.0f;
if (fVar2 > 1.0f) {
fVar3 = fVar2;
} else if (fVar2 < -1.0f) {
fVar3 = -1.0f;
}
fVar2 = 1.0f;
if (fVar1 > 1.0f) {
fVar2 = fVar1;
} else if (fVar1 < -1.0f) {
fVar2 = -1.0f;
}
iVar7 = (-m34D4 + (fVar3 * 6144.0f));
s16 sVar5 = m34F2;
cLib_addCalcAngleS(&m34F2, (mVelocity * (0.02f + fVar2 * 6144.0f)), 5, 0x800, 0x100);
m34E0 = m34E0 + m34D6;
m34E0 -= (s16)(m34F2 - sVar5);
m34D6 += ((s16)(m34F2 - sVar5) >> 1);
if (m34D6 > 0x380) {
m34D6 = 0x380;
} else {
if (m34D6 < -0x380) {
m34D6 = -0x380;
}
}
cLib_addCalcAngleS(&m34E0, 0, 5, 0x80, 0x30);
cLib_addCalcAngleS(&m34D6, 0, 5, 0x50, 0x30);
if (m34E0 > 0x2000) {
m34E0 = 0x2000;
} else {
if (m34E0 < -0x2000) {
m34E0 = -0x2000;
}
}
sVar5 = m34F4;
cLib_addCalcAngleS(&m34F4, iVar7, 5, 0x800, 0x100);
m34E4 += m34D8;
m34E4 = m34E4 - (s16)(sVar5 - m34F4);
m34D8 = m34D8 + (s16)(sVar5 - m34F4);
if (m34D8 > 0x380) {
m34D8 = 0x380;
} else {
if (m34D8 < -0x380) {
m34D8 = -0x380;
}
}
cLib_addCalcAngleS(&m34E4, 0, 5, 0x80, 0x30);
cLib_addCalcAngleS(&m34D8, 0, 5, 0x50, 0x30);
if (m34E4 > 0x2000) {
m34E4 = 0x2000;
} else {
if (m34E4 < -0x2000) {
m34E4 = -0x2000;
}
}
local_64 *= 0.75f;
m3600 = (((1.5f + local_64) + cM_rndFX(0.3f)) * cM_ssin(m355C));
m355E = ((600.0f + cM_rndFX(100.0f)) * cM_ssin(m355C));
m355C += (6000.0f + (2000.0f * local_64)) + ((12000.0f + (3000.0f * local_64)) * cM_rnd());
mVelocity *= -1.0f;
break;
}
}
}
if (checkHeavyStateOn()) {
cLib_chaseF(&mVelocity, 0.0f, (0.1f * daPy_HIO_autoJump_c0::m.field_0x3C));
}
f32 local_64;
dKyw_get_AllWind_vec(&mHeadTopPos, &local_60, &local_64);
int uVar6 = m34E8 - shape_angle.y;
cLib_addCalc(
&mVelocity,
(daPy_HIO_fan_c0::m.field_0x48 * mStickDistance) * cM_scos(uVar6),
0.5f,
(0.1f + 0.4f * mStickDistance),
0.01f
);
cLib_addCalcAngleS(&m34D4, (512.0f * mStickDistance) * cM_ssin(uVar6), 5, 0x40, 8);
f32 dVar13;
if (mWindCyl.ChkTgHit()) {
local_54 = *mWindCyl.GetTgRVecP();
dVar13 = local_54.abs();
if (dVar13 > 50.0f) {
local_54 *= (50.0f / dVar13);
}
f32 fVar1 = 1.0f;
dVar13 = 20.0f;
local_64 = 1.0f;
if (m3570 == 0) {
m3570 = 1;
setSingleMoveAnime(ANM_USEFANB2, fVar1, 0.0f, -1, daPy_HIO_fan_c0::m.field_0x30);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANB2A),
0,
daPy_HIO_fan_c0::m.field_0x30,
1.0f,
0.0f,
-1.0f,
NULL
);
}
} else {
local_64 *= 1.5f;
if (local_64 >= 1.0f) {
local_64 = 1.0f;
}
local_54.x = local_64 * daPy_HIO_fan_c0::m.field_0x4C * local_60.x;
local_54.y = 0.5f * local_64 * local_60.y;
local_54.z = local_64 * daPy_HIO_fan_c0::m.field_0x4C * local_60.z;
dVar13 = 3.0f;
if (m3570 != 0) {
m3570 = 0;
setSingleMoveAnime(
ANM_USEFANB,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x4 - 0.001f,
daPy_HIO_fan_c0::m.field_0x4,
daPy_HIO_fan_c0::m.field_0x34
);
mpParachuteFanMorf->setAnm(
getItemAnimeResource(LKANM_BCK_FANBA),
0,
daPy_HIO_fan_c0::m.field_0x34,
daPy_HIO_fan_c0::m.field_0x20,
daPy_HIO_fan_c0::m.field_0x4 - 0.001f,
daPy_HIO_fan_c0::m.field_0x4,
NULL
);
}
}
cLib_addCalc(&m3730.x, local_54.x, 0.5f, dVar13, 1.0f);
cLib_addCalc(&m3730.y, local_54.y, 0.5f, dVar13, 1.0f);
cLib_addCalc(&m3730.z, local_54.z, 0.5f, dVar13, 1.0f);
current.pos += m3730;
shape_angle.y = shape_angle.y + m34D4;
current.angle.y = shape_angle.y;
f32 sin = cM_ssin(shape_angle.y);
f32 cos = cM_scos(shape_angle.y);
local_48.set(m3730.x * cos - m3730.z * sin, m3730.y, m3730.x * sin + m3730.z * cos);
f32 f4 = -local_48.x;
f4 *= 0.02f;
f32 f3 = local_48.z;
f3 *= 0.02f;
if (f4 > 1.0f) {
f4 = 1.0f;
} else if (f4 < -1.0f) {
f4 = -1.0f;
}
if (f3 > 1.0f) {
f3 = 1.0f;
} else if (f3 < -1.0f) {
f3 = -1.0f;
}
int r0 = m34D4 * -8;
s16 r30 = (r0 + (f4 * 0x1800));
s16 prev = m34F2;
s16 r4 = 0x1800 * (f3 + (mVelocity * 0.02f));
cLib_addCalcAngleS(&m34F2, r4, 5, 0x800, 0x100);
m34E0 = m34E0 + m34D6;
m34E0 -= (s16)(m34F2 - prev);
m34D6 += ((s16)(m34F2 - prev) >> 1);
if (m34D6 > 0x380) {
m34D6 = 0x380;
} else if (m34D6 < -0x380) {
m34D6 = -0x380;
}
cLib_addCalcAngleS(&m34E0, 0, 5, 0x80, 0x30);
cLib_addCalcAngleS(&m34D6, 0, 5, 0x50, 0x30);
if (m34E0 > 0x2000) {
m34E0 = 0x2000;
} else if (m34E0 < -0x2000) {
m34E0 = -0x2000;
}
prev = m34F4;
cLib_addCalcAngleS(&m34F4, r30, 5, 0x800, 0x100);
m34E4 += m34D8;
m34E4 = m34E4 - (s16)(prev - m34F4);
m34D8 = m34D8 + (s16)(prev - m34F4);
if (m34D8 > 0x380) {
m34D8 = 0x380;
} else if (m34D8 < -0x380) {
m34D8 = -0x380;
}
cLib_addCalcAngleS(&m34E4, 0, 5, 0x80, 0x30);
cLib_addCalcAngleS(&m34D8, 0, 5, 0x50, 0x30);
if (m34E4 > 0x2000) {
m34E4 = 0x2000;
} else if (m34E4 < -0x2000) {
m34E4 = -0x2000;
}
local_64 *= 0.75f;
m3600 = (((1.5f + local_64) + cM_rndFX(0.3f)) * cM_ssin(m355C));
m355E = ((600.0f + cM_rndFX(100.0f)) * cM_ssin(m355C));
m355C += (6000.0f + (2000.0f * local_64)) + ((12000.0f + (3000.0f * local_64)) * cM_rnd());
}
}
return true;
+3 -3
View File
@@ -224,14 +224,14 @@ BOOL daPy_lk_c::checkNextActionGrab() {
return false;
} else {
int iVar3 = checkGrabBarrelSearch(0);
if ((fopAcM_CheckStatus(pfVar7, fopAcStts_UNK10000_e)) && (!checkGrabSpecialHeavyState())) {
if (fopAcM_CheckStatus(pfVar7, fopAcStts_UNK10000_e) && !checkGrabSpecialHeavyState()) {
g_dComIfG_gameInfo.play.field_0x492d = 14;
dComIfGp_setDoStatus(14);
} else {
g_dComIfG_gameInfo.play.field_0x492d = 9;
}
if ((((mpAttnActorLockOn == NULL) && (mpAttnEntryA != NULL)) && (iVar3 == 0)) &&
(mpAttnEntryA->mType == 5 && (fopAcM_CheckStatus(pfVar7, fopAcStts_UNK2000000_e))))
if (mpAttnActorLockOn == NULL && mpAttnEntryA != NULL && iVar3 == 0 &&
mpAttnEntryA->mType == fopAc_Attn_TYPE_DOOR_e && fopAcM_CheckStatus(pfVar7, fopAcStts_UNK2000000_e))
{
dComIfGp_setDoStatus(11);
} else if (iVar3 != 0) {
+1 -1
View File
@@ -1743,7 +1743,7 @@ void daPy_lk_c::changeWaitProc() {
}
/* 80110028-8011029C .text changeLandProc__9daPy_lk_cFf */
int daPy_lk_c::changeLandProc(f32) {
BOOL daPy_lk_c::changeLandProc(f32) {
/* Nonmatching */
}
+1 -1
View File
@@ -96,7 +96,7 @@ void daPy_lk_c::setSpeedAndAngleSwim() {
BOOL daPy_lk_c::checkNextModeSwim() {
BOOL res;
if (mpAttnEntryA && mpAttnEntryA->mType == 7) { //Action_Ship? fopAc_Attn_ACTION_SHIP_e is 0x80 so not sure why Ghidra is saying this
if (mpAttnEntryA && mpAttnEntryA->mType == fopAc_Attn_TYPE_SHIP_e) {
dComIfGp_setDoStatus(0x1C); // Show `Get In` on the A Button? Ghidra says `GetInShip` is the symbol
if (doTrigger()) {
return procShipReady_init();
+4 -4
View File
@@ -126,14 +126,14 @@ dAttList_c* dAttention_c::GetLockonList(s32 idx) {
dAttList_c* dAttention_c::getActionBtnB() {
int i;
dAttList_c* list = GetLockonList(0);
if (list != NULL && list->getActor() != NULL && list->mType == 1 && LockonTruth() != 0 && !(list->getActor()->attention_info.flags & fopAc_Attn_TALKFLAG_NOTALK_e))
if (list != NULL && list->getActor() != NULL && list->mType == fopAc_Attn_TYPE_TALK_e && LockonTruth() != 0 && !(list->getActor()->attention_info.flags & fopAc_Attn_TALKFLAG_NOTALK_e))
return list;
if (mActionNum == 0)
return NULL;
for (i = 0; i < mActionNum; i++) {
if (mActionList[i].mType == 3) {
if (mActionList[i].mType == fopAc_Attn_TYPE_SPEAK_e) {
if (!(mActionList[i].getActor()->attention_info.flags & fopAc_Attn_TALKFLAG_NOTALK_e))
return &mActionList[i];
} else {
@@ -148,7 +148,7 @@ dAttList_c* dAttention_c::getActionBtnB() {
dAttList_c* dAttention_c::getActionBtnXYZ_local(int button) {
int i;
dAttList_c* list = GetLockonList(0);
if (list != NULL && list->getActor() != NULL && list->mType == 1 && LockonTruth() != 0) {
if (list != NULL && list->getActor() != NULL && list->mType == fopAc_Attn_TYPE_TALK_e && LockonTruth()) {
fopAc_ac_c* actor = list->getActor();
if (actor->eventInfo.chkCondition(dEvtCnd_CANTALKITEM_e)) {
s16 rt;
@@ -167,7 +167,7 @@ dAttList_c* dAttention_c::getActionBtnXYZ_local(int button) {
return NULL;
for (i = 0; i < mActionNum; i++) {
if (mActionList[i].mType == 3) {
if (mActionList[i].mType == fopAc_Attn_TYPE_SPEAK_e) {
fopAc_ac_c* actor = mActionList[i].getActor();
if (actor->eventInfo.chkCondition(dEvtCnd_CANTALKITEM_e)) {
s16 rt;