summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-04-04 15:13:24 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-04-06 23:23:17 -0400
commit39caf00af62271dbd0c96e48ce402841dab1fe5c (patch)
tree9afc81344a5574c781c4056133921a3d46b91ad5
parentb369832664b4f3c0fbd2f32cb19f9620f4b4c87f (diff)
dAcEremly_c::StateHold + Jump
-rw-r--r--include/d/a/e/d_a_e_remly.h1
-rw-r--r--src/REL/d/a/e/d_a_e_remly.cpp120
2 files changed, 117 insertions, 4 deletions
diff --git a/include/d/a/e/d_a_e_remly.h b/include/d/a/e/d_a_e_remly.h
index cd7751bd..351ff156 100644
--- a/include/d/a/e/d_a_e_remly.h
+++ b/include/d/a/e/d_a_e_remly.h
@@ -123,6 +123,7 @@ private:
bool fn_177_7B10();
void fn_177_8520(bool);
+ void fn_177_8600();
bool fn_177_86C0();
bool fn_177_8980(f32);
bool fn_177_8AC0();
diff --git a/src/REL/d/a/e/d_a_e_remly.cpp b/src/REL/d/a/e/d_a_e_remly.cpp
index 3a52626a..110c74f3 100644
--- a/src/REL/d/a/e/d_a_e_remly.cpp
+++ b/src/REL/d/a/e/d_a_e_remly.cpp
@@ -920,12 +920,124 @@ void dAcEremly_c::executeState_Wind() {
}
void dAcEremly_c::finalizeState_Wind() {}
-void dAcEremly_c::initializeState_Hold() {}
-void dAcEremly_c::executeState_Hold() {}
+void dAcEremly_c::initializeState_Hold() {
+ mMdl.setAnm("RemlyHold", m3d::PLAY_MODE_4, 4.f);
+
+ field_0xB60 = 11;
+ mSph.ClrCoSet();
+ field_0xB3C = 0.f;
+ field_0xB38 = mPosition.y;
+
+ field_0xB6A = 0;
+ field_0xB6C = 0;
+ field_0xB56 = 0;
+ field_0xB6E = 0;
+
+ mStts.SetRank(5);
+ field_0xB1E.clear();
+ field_0xB26 = 0;
+ field_0xB24 = 0;
+ if (fn_177_7330() || field_0xB68) {
+ mMdl.setAnm("RemlyHoldBata", m3d::PLAY_MODE_4, 4.f);
+ field_0xB60 = 13;
+ }
+
+ if (fn_177_7330()) {
+ field_0xB64 = 2;
+ field_0xB68 = 0;
+ }
+
+ mLinkage.field_0x90 = 13.f + mAng(0);
+ mLinkage.field_0x8C = 13.f + mAng(0);
+ if (field_0xB61 == 1) {
+ mLinkage.field_0x90 = 26.f + mAng(0);
+ mLinkage.field_0x8C = 13.f + mAng(0);
+ }
+
+ mAcceleration = -1.75f + mAng(0);
+ field_0xB48 = 64.f + cM::rndF(64.f);
+ field_0xB4E = 90;
+}
+void dAcEremly_c::executeState_Hold() {
+ fn_177_6FC0(false);
+ field_0xB4E = 90;
+
+ mRotation.y = mAngle.y = getXZAngleToPlayer();
+
+ if (field_0xB60 == 12 && mMdl.getAnm().isStop()) {
+ mMdl.setAnm("RemlyHold", m3d::PLAY_MODE_4, 4.f);
+ field_0xB60 = 11;
+ }
+
+ if (0 == sLib::calcTimer(&field_0xB48)) {
+ if (field_0xB60 == 11) {
+ mMdl.setAnm("RemlyHoldMozo", m3d::PLAY_MODE_4, 4.f);
+ field_0xB60 = 12;
+ }
+ field_0xB48 = 64.f + cM::rndF(64.f);
+ }
+
+ if (mLinkage.checkConnection(dLinkage_c::CONNECTION_1)) {
+ return;
+ }
+
+ if (mLinkage.checkState(dLinkage_c::STATE_2)) {
+ mAngle.y = getXZAngleToPlayer();
+ mAngle.y += 0x8000;
+ changeState(StateID_Jump);
+ return;
+ }
+
+ if (fn_177_7330()) {
+ mAcceleration = -3.f;
+ changeState(StateID_NightFoo);
+ } else if (field_0xB68 == 0) {
+ mAcceleration = -3.f;
+ field_0xB48 = 0;
+ changeState(StateID_Wait);
+ } else {
+ mAcceleration = -3.f;
+ changeState(StateID_EscapeDash);
+ }
+}
void dAcEremly_c::finalizeState_Hold() {}
-void dAcEremly_c::initializeState_Jump() {}
-void dAcEremly_c::executeState_Jump() {}
+void dAcEremly_c::initializeState_Jump() {
+ field_0xB14 = 0;
+ unsetActorProperty(AC_PROP_0x1);
+ field_0xB50 = 90;
+ mMdl.setAnm("RemlyHoldJumpStart", m3d::PLAY_MODE_4, 0.f);
+ field_0xB60 = 14;
+ field_0xB4E = 90;
+}
+void dAcEremly_c::executeState_Jump() {
+ field_0xB4E = 90;
+ if (field_0xB60 == 14 && !fn_177_8980(100.f) && (mAcch.ChkGndHit() || mVelocity.y < 0.f)) {
+ mMdl.setAnm("RemlyHoldJumpEnd", m3d::PLAY_MODE_4, 0.f + mAng(0));
+ field_0xB60 = 15;
+ return;
+ }
+
+ sLib::addCalcScaled(&mSpeed, 0.3f, 0.2f);
+ if (mSpeed && mAcch.ChkGndHit()) {
+ fn_177_8600();
+ mSpeed = 0.f;
+ }
+
+ if (mAcch.ChkGndHit() && mMdl.getAnm().isStop()) {
+ mAngle.y = mRotation.y;
+ setActorProperty(AC_PROP_0x1);
+ mAcceleration = -3.f;
+
+ if (fn_177_7330()) {
+ changeState(StateID_NightFoo);
+ } else if (field_0xB68 == 0) {
+ changeState(StateID_Wait);
+ } else {
+ changeState(StateID_EscapeDash);
+ }
+ }
+}
void dAcEremly_c::finalizeState_Jump() {}
void dAcEremly_c::initializeState_Fly() {}