diff --git a/Runtime/MP1/World/CThardus.cpp b/Runtime/MP1/World/CThardus.cpp index ea956ef19..66fd52b40 100644 --- a/Runtime/MP1/World/CThardus.cpp +++ b/Runtime/MP1/World/CThardus.cpp @@ -908,7 +908,7 @@ void CThardus::LoopedAttack(CStateManager& mgr, EStateMsg msg, float arg) { } else if (x658_ == 0) { zeus::CVector3f dir = (mgr.GetPlayer().GetTranslation() - GetTranslation()).normalized(); zeus::CVector2f vec = sub801dac30(mgr); - if (vec == zeus::skZero2f) { + if (vec != zeus::skZero2f) { x650_ = vec; } else { x650_ = dir.toVec2f().normalized(); @@ -1585,7 +1585,7 @@ zeus::CVector2f CThardus::sub801dc60c(float arg, CStateManager& mgr) { } } - if (ret != zeus::skZero2f) { + if (ret == zeus::skZero2f) { return x45c_steeringBehaviors.Arrival(*this, x7d8_, 0.f).toVec2f(); } diff --git a/Runtime/MP1/World/CThardus.hpp b/Runtime/MP1/World/CThardus.hpp index c1113d297..74e835fd6 100644 --- a/Runtime/MP1/World/CThardus.hpp +++ b/Runtime/MP1/World/CThardus.hpp @@ -64,7 +64,7 @@ class CThardus : public CPatterned { float x6a4_; float x6a8_; float x6ac_; - std::vector x6b0_; /* TODO: Determine real value */ + std::vector x6b0_; std::vector x6c0_rockLights; CAssetId x6d0_; CAssetId x6d4_; @@ -157,7 +157,7 @@ class CThardus : public CPatterned { void sub801dc444(CStateManager& mgr, const zeus::CVector3f& pos, CAssetId particle); void sub801dbc5c(CStateManager& mgr, CDestroyableRock* rock); void sub801dbbdc(CStateManager& mgr, CDestroyableRock* rock); - bool sub801dc2c8() { return (x610_destroyableRocks.size() - 1) > x648_currentRock; } + bool sub801dc2c8() { return x648_currentRock == (x610_destroyableRocks.size() - 1); } void UpdateNonDestroyableCollisionActorMaterials(EUpdateMaterialMode mode, EMaterialTypes mat, CStateManager& mgr); void UpdateExcludeList(const std::unique_ptr& colMgr, EUpdateMaterialMode mode, EMaterialTypes mat, CStateManager& mgr); @@ -243,7 +243,7 @@ public: bool AggressionCheck(CStateManager& mgr, float arg) override { return x330_stateMachineState.GetTime() > 0.1f; } bool AttackOver(CStateManager& mgr, float arg) override { return true; } bool ShouldTaunt(CStateManager& mgr, float arg) override { return false; } - bool ShouldMove(CStateManager& mgr, float arg) override { return x68c_ < x578_waypoints.size() || x93b_; } + bool ShouldMove(CStateManager& mgr, float arg) override { return x68c_ < x574_ || x93b_; } bool StartAttack(CStateManager& mgr, float arg) override { return true; } bool CodeTrigger(CStateManager& mgr, float arg) override { return x95c_doCodeTrigger; } bool IsDizzy(CStateManager& mgr, float arg) override { return x330_stateMachineState.GetTime() > 4.f; }