mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-09 22:11:35 -04:00
d_a_player_vomit.inc - Almost all matching with minor issues. (#726)
Co-authored-by: < >
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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),
|
||||
¤t.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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user