d_a_player_vomit.inc - Almost all matching with minor issues. (#726)

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
This commit is contained in:
123456789758
2025-04-01 14:30:25 -04:00
committed by GitHub
parent cc76f98a2c
commit 81379e4b3f
2 changed files with 222 additions and 13 deletions
+1
View File
@@ -64,6 +64,7 @@ enum daPy__PlayerStatus0 {
daPyStts0_UNK10000000_e = 0x10000000,
daPyStts0_UNK20000000_e = 0x20000000,
daPyStts0_SPIN_ATTACK_e = 0x40000000,
daPyStts0_UNK80000000_e = 0x80000000,
};
enum daPy__PlayerStatus1 {
+221 -13
View File
@@ -11,48 +11,256 @@
*/
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/d_procname.h"
/* 8014F8A0-8014F994 .text checkJumpFlower__9daPy_lk_cFv */
BOOL daPy_lk_c::checkJumpFlower() {
/* Nonmatching */
/* Nonmatching - floats, branching */
fopAc_ac_c *iVar1;
short sVar3;
iVar1 = mCyl.GetCoHitAc();
if (((mCyl.ChkCoHit()) && (iVar1 != 0)) &&
(fopAcM_GetName(iVar1) == PROC_JBO)) {
if (checkModeFlg(ModeFlg_MIDAIR)) {
if ((speed.y <= 0.0f) && (current.pos.y > iVar1->current.pos.y - 50.0f)) {
procVomitWait_init();
}
} else if ((sVar3 = fopAcM_searchActorAngleY(this, iVar1),
cLib_distanceAngleS(sVar3, shape_angle.y) < 0x2000) &&
(mStickDistance > 0.2f)) {
procVomitReady_init(sVar3, fopAcM_searchActorDistanceXZ(this, iVar1));
}
} else {
return false;
}
}
/* 8014F994-8014FA88 .text procVomitReady_init__9daPy_lk_cFsf */
BOOL daPy_lk_c::procVomitReady_init(s16, f32) {
/* Nonmatching */
BOOL daPy_lk_c::procVomitReady_init(s16 param_0, f32 param_1) {
commonProcInit(daPyProc_VOMIT_READY_e);
setSingleMoveAnime(ANM_MSTEPOVER, daPy_HIO_vomit_c0::m.field_0xC,
daPy_HIO_vomit_c0::m.field_0x10,
daPy_HIO_vomit_c0::m.field_0x0,
daPy_HIO_vomit_c0::m.field_0x14);
speed.y = daPy_HIO_vomit_c0::m.field_0x18;
mVelocity = (param_1 * -gravity) / (2.0f * daPy_HIO_vomit_c0::m.field_0x18);
if (checkHeavyStateOn()) {
speed.y *= 1.5f;
mVelocity *= 1.5f;
}
shape_angle.y = param_0;
current.angle.y = shape_angle.y;
voiceStart(6);
return true;
}
/* 8014FA88-8014FB64 .text procVomitReady__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitReady() {
/* Nonmatching */
setFallVoice();
if (!checkJumpFlower()) {
if (mAcch.ChkGroundHit()) {
changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24);
} else if (checkFanGlideProc(0)) {
return true;
} else if (speed.y < -gravity) {
setSingleMoveAnime(ANM_JMPEDS, 0.0f, 0.0f, -1,
daPy_HIO_wallCatch_c0::m.field_0x54);
offModeFlg(ModeFlg_00000400);
setTextureAnime(0x37, 0);
resetSeAnime();
}
}
return true;
}
/* 8014FB64-8014FC20 .text procVomitWait_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitWait_init() {
/* Nonmatching */
commonProcInit(daPyProc_VOMIT_WAIT_e);
setSingleMoveAnime(ANM_VOMITJMP, 1.0f, 0.0f, -1, 5.0f);
fopAc_ac_c *iVar1 = mCyl.GetCoHitAc();
current.pos = iVar1->current.pos;
old.pos = current.pos;
m34C2 = 11;
current.angle.y = shape_angle.y;
mVelocity = 0.0f;
m34D4 = 0;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK80_e);
return true;
}
/* 8014FC20-8014FD8C .text procVomitWait__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitWait() {
/* Nonmatching */
/* Nonmatching - floats, branching */
int iVar1;
s16 sVar2;
if (checkNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP)) {
sVar2 = 0;
procVomitJump_init(0);
} else if (mStickDistance > 0.05f) {
iVar1 = getDirectionFromAngle(m34DC);
if (iVar1 == 2) {
sVar2 = (int)(512.0f * mStickDistance);
if (sVar2 > m34D4) {
m34D4 += (int)(64.0f * mStickDistance);
if (m34D4 > sVar2) {
m34D4 = sVar2;
}
sVar2 = m34D4;
}
} else if (iVar1 == 3) {
sVar2 = (int)(-512.0f * mStickDistance);
if (sVar2 < m34D4) {
m34D4 -= (int)(64.0f * mStickDistance);
if (m34D4 < sVar2) {
m34D4 = sVar2;
}
sVar2 = m34D4;
} else {
sVar2 = 0;
}
} else {
sVar2 = 0;
}
cLib_addCalcAngleS(&m34D4, sVar2, 3, 0x40, 0x10);
shape_angle.y += m34D4;
current.angle.y = shape_angle.y;
}
return true;
}
/* 8014FD8C-8014FF0C .text procVomitJump_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procVomitJump_init(int) {
/* Nonmatching */
BOOL daPy_lk_c::procVomitJump_init(int param_0) {
/* Nonmatching - floats */
float fVar1;
commonProcInit(daPyProc_VOMIT_JUMP_e);
m35C4 = 40.0f;
if ((param_0 == 2) || (param_0 == 3)) {
fVar1 = 3.0f;
} else {
fVar1 = -1.0f;
}
m3570 = param_0;
setSingleMoveAnime(ANM_VOMITJMP, 1.0f, 0.0f, -1, fVar1);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK80000000_e);
mStts.ClrCcMove();
m34D4 = 0;
m34D0 = 2;
m33A8.makeEmitterColor(dPa_name::ID_SCENE_8112, mpCLModel->getAnmMtx(0x12),
&current.pos, (csXyz *)&shape_angle, &tevStr.mColorK0,
&tevStr.mColorK0);
if (param_0 == 0) {
dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f));
}
if (param_0 == 1) {
gravity = 0.0f;
m34D2 = 0x14;
} else {
voiceStart(0);
if (param_0 == 3) {
speed.y = 46.0f;
m3570 = 1;
} else {
speed.y = daPy_HIO_vomit_c0::m.field_0x1C;
}
m34D2 = 0;
}
return true;
}
/* 8014FF0C-801500E4 .text procVomitJump__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitJump() {
/* Nonmatching */
BOOL daPy_lk_c::procVomitJump() {
/* Nonmatching - floats */
if ((s32)m34D2 != 0) {
m34D2--;
if (m34D2 == 0) {
voiceStart(0);
speed.y = 46.0f;
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
}
mStts.ClrCcMove();
return true;
} else {
if (m34D0 != 0) {
mStts.ClrCcMove();
m34D0--;
}
if (!checkJumpFlower()) {
if (mAcch.ChkGroundHit()) {
changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24);
} else {
s16 sVar1 = shape_angle.x;
shape_angle.x = sVar1 + daPy_HIO_vomit_c0::m.field_0x2;
if ((sVar1 < 0) && (0 < shape_angle.x)) {
seStartOnlyReverb(JA_SE_LK_JUMP_FLOWER_OUT);
}
if (m3570 == 1) {
cLib_addCalc(&mVelocity, daPy_HIO_vomit_c0::m.field_0x20, 0.5f, 2.0f,
0.1f);
} else {
f32 fVar2;
s32 iVar3;
if (!checkFanGlideProc(1)) {
if (mStickDistance > 0.05f) {
if (iVar3 = getDirectionFromShapeAngle(), iVar3 == 0) {
fVar2 = 1.0f;
} else if (iVar3 == 1) {
fVar2 = -1.0f;
} else {
fVar2 = 0.0f;
}
} else {
fVar2 = 0.0f;
}
cLib_addCalc(&mVelocity,
(daPy_HIO_vomit_c0::m.field_0x20 * mStickDistance * fVar2),
0.5f, 2.0f, 0.1f);
}
}
}
}
}
return true;
}
/* 801500E4-80150164 .text procVomitLand_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitLand_init() {
/* Nonmatching */
commonProcInit(daPyProc_VOMIT_LAND_e);
mVelocity = 0.0f;
setSingleMoveAnime(ANM_LANDDAMA, daPy_HIO_vomit_c0::m.field_0x24,
daPy_HIO_vomit_c0::m.field_0x28,
daPy_HIO_vomit_c0::m.field_0x4,
daPy_HIO_vomit_c0::m.field_0x2C);
m34D0 = daPy_HIO_vomit_c0::m.field_0x6;
m3570 = 0;
m34BE = 5;
return true;
}
/* 80150164-8015023C .text procVomitLand__9daPy_lk_cFv */
BOOL daPy_lk_c::procVomitLand() {
/* Nonmatching */
}
resetFootEffect();
if (m3570 != 0) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) {
checkNextMode(0);
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >
daPy_HIO_vomit_c0::m.field_0x3C) {
checkNextMode(1);
}
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) {
if ((s32)m34D0 > 0) {
m34D0--;
} else {
setSingleMoveAnime(ANM_LANDDAMAST, daPy_HIO_vomit_c0::m.field_0x30,
daPy_HIO_vomit_c0::m.field_0x34,
daPy_HIO_vomit_c0::m.field_0x8,
daPy_HIO_vomit_c0::m.field_0x38);
m3570 = 1;
}
}
return true;
}