Some enemy naming

This commit is contained in:
Roman Sandu committed 2026-11-02 02:18:31 +03:00
1 parent 622fcdb70e
commit 95a53f5a3c
13 files changed
+81 -81

No files matched your search

+17 -4
View File
@@ -67,7 +67,7 @@ public:
void goToDirLimitedNextGraphNode(f32);
void updateStayCount(f32);
BOOL turnToCurPathNode(f32);
void walkToCurPathNode(f32 march_speed, f32 turn_speed, f32);
void walkToCurPathNode(f32 march_speed, f32 turn_speed, f32 yaw_offset);
void zigzagToCurPathNode(f32 march_speed, f32 turn_speed, f32 cycle,
f32 angle);
void doShortCut();
@@ -133,6 +133,13 @@ public:
bool isJumping() const { return checkLiveFlag(LIVE_FLAG_JUMPING) ? 1 : 0; }
// fabricated
void resetStayCount()
{
mStayCount = 0;
mStayReferenceDistance = 0.0f;
}
enum {
/// Allows this enemy to be recycled for spawning a new one even if it's
/// not dead, as long as it's not immediately visible.
@@ -146,14 +153,20 @@ public:
LIVE_FLAG_JUMPING = 1u << LIVE_FLAG_BIT_USER1, // 0x8000
};
enum {
SURFACE_ALIGNMENT_NONE = 0,
SURFACE_ALIGNMENT_GROUND = 1,
SURFACE_ALIGNMENT_GROUND_AND_WALL = 2,
};
public:
/* 0xF4 */ TPathNode mCurrentTarget;
/* 0x104 */ TPathNode mGoal;
/* 0x114 */ TSolidStack<TPathNode> mGoalPath;
/* 0x124 */ TGraphTracer* unk124;
/* 0x128 */ s16 unk128;
/* 0x12C */ f32 unk12C;
/* 0x130 */ s8 unk130;
/* 0x128 */ s16 mStayCount;
/* 0x12C */ f32 mStayReferenceDistance;
/* 0x130 */ s8 mSurfaceAlignmentMode;
/* 0x134 */ f32 mDistToMarioSquared;
/* 0x138 */ const TBGCheckData* unk138; // TODO: type is a wild guess
/* 0x13C */ u8 mHitPoints;
+1 -1
View File
@@ -194,7 +194,7 @@ void TBathtubPeach::reset()
{
mPosition.scale(0.21f);
unk150.init(50.0f, 50.0f, 50.0f, 50.0f, 0.0f);
unk130 = 0;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_NONE;
mScaling.set(1.5f, 1.5f, 1.5f);
mBinder = &unk150;
TSpineEnemy::reset();
+1 -2
View File
@@ -852,8 +852,7 @@ void TBossHanachan::goToInitialRecoverGraphNode()
}
unk124->setTo(index);
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
// fabricated
+2 -4
View File
@@ -1091,8 +1091,7 @@ void TBossWanwan::reverseNextGraphNode()
unk124->mCurrIdx = prev;
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TBossWanwan::rollNextGraphNode()
@@ -1112,8 +1111,7 @@ void TBossWanwan::rollNextGraphNode()
unk124->moveTo(next);
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TBossWanwan::slideToCurPathNode(float speed, float turnSpeed)
+2 -2
View File
@@ -248,7 +248,7 @@ void TChuuHana::init(TLiveManager* param_1)
offHitFilter(HIT_CATEGORY_MAP_OBJECT);
mSpine->initWith(&TNerveChuuHanaWalkOnPanel::theNerve());
getMActor()->setJointCallback(mBodyJntIndex, &ChuuHanaBodyCallback);
unk130 = 1;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND;
getMActor()->initBckNormalMotionBlend();
unk1B4 = (TChuuHanaSaveLoadParams*)getSaveParam();
getMActor()->getModel()->calc();
@@ -998,7 +998,7 @@ DEFINE_NERVE(TNerveChuuHanaJumpPrepare, TLiveActor)
self->mPosition.y += 10.0f;
self->mVelocity = velocity;
self->onLiveFlag(LIVE_FLAG_AIRBORNE);
self->unk130 = 0;
self->mSurfaceAlignmentMode = TSpineEnemy::SURFACE_ALIGNMENT_NONE;
}
if (self->checkCurAnmEnd(0))
+1 -2
View File
@@ -88,8 +88,7 @@ f32 TCoasterEnemy::getGravityY() const { return 0.0f; }
void TCoasterEnemy::makeCoasterGoalPath()
{
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TCoasterEnemy::moveCoaster()
+46 -52
View File
@@ -21,9 +21,9 @@
TSpineEnemy::TSpineEnemy(const char* name)
: TLiveActor(name)
, mGoalPath(4)
, unk128(0)
, unk12C(0.0f)
, unk130(0)
, mStayCount(0)
, mStayReferenceDistance(0.0f)
, mSurfaceAlignmentMode(SURFACE_ALIGNMENT_NONE)
, mDistToMarioSquared(0.0f)
, unk138(nullptr)
, mHitPoints(1)
@@ -88,10 +88,11 @@ void TSpineEnemy::calcEnemyRootMatrix()
pJVar13->setBaseScale(mScaling);
if (unk130 == 0) {
if (mSurfaceAlignmentMode == SURFACE_ALIGNMENT_NONE) {
MsMtxSetRotRPH(mtx, mRotation.x, mRotation.y, mRotation.z);
} else {
if (unk130 >= 2 && !isAirborne() && unk138 != nullptr) {
if (mSurfaceAlignmentMode >= SURFACE_ALIGNMENT_GROUND_AND_WALL
&& !isAirborne() && unk138 != nullptr) {
JGeometry::TVec3<f32> v2 = unk138->getNormal();
JGeometry::TVec3<f32> v1;
@@ -115,7 +116,8 @@ void TSpineEnemy::calcEnemyRootMatrix()
mtx[1][3] = 0.0f;
mtx[2][3] = 0.0f;
} else {
if (unk130 >= 1 && !mGroundPlane->isIllegalData()) {
if (mSurfaceAlignmentMode >= SURFACE_ALIGNMENT_GROUND
&& !mGroundPlane->isIllegalData()) {
JGeometry::TVec3<f32> v1(MsSin(mRotation.y), 0.0f,
MsCos(mRotation.y));
@@ -296,8 +298,7 @@ int TSpineEnemy::goToShortestNextGraphNode()
return -1;
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
return 0;
}
#pragma dont_inline off
@@ -312,8 +313,7 @@ int TSpineEnemy::jumpToNextGraphNode()
if (idx >= 0) {
unk124->moveTo(idx);
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
return idx;
}
@@ -329,8 +329,7 @@ void TSpineEnemy::goToRandomNextGraphNode()
unk124->getCurGraphIndex(), unk124->getPrevIndex(), -1));
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TSpineEnemy::goToRandomEscapeGraphNode()
@@ -342,8 +341,7 @@ void TSpineEnemy::goToRandomEscapeGraphNode()
unk124->getCurGraphIndex(), -1, mPosition, -1));
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TSpineEnemy::goToExclusiveNextGraphNode()
@@ -366,8 +364,7 @@ void TSpineEnemy::goToExclusiveNextGraphNode()
}
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
}
@@ -385,8 +382,7 @@ void TSpineEnemy::goToDirectedNextGraphNode(
}
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
// TODO: fake
@@ -413,11 +409,18 @@ void TSpineEnemy::goToDirLimitedNextGraphNode(f32 param_1)
}
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TSpineEnemy::updateStayCount(f32) { }
void TSpineEnemy::updateStayCount(f32 target_distance)
{
if (abs(target_distance - mStayReferenceDistance) < 100.0f) {
mStayCount += 1;
} else {
mStayCount = 0;
mStayReferenceDistance = target_distance;
}
}
BOOL TSpineEnemy::turnToCurPathNode(f32 param_1)
{
@@ -446,44 +449,40 @@ BOOL TSpineEnemy::turnToCurPathNode(f32 param_1)
}
void TSpineEnemy::walkToCurPathNode(f32 march_speed, f32 turn_speed,
f32 param_3)
f32 yaw_offset)
{
JGeometry::TVec3<f32> tmp = getCurrentTarget().getPoint();
tmp -= mPosition;
JGeometry::TVec3<f32> toTarget = getCurrentTarget().getPoint();
toTarget -= mPosition;
f32 fVar7 = tmp.length();
f32 angle = MsWrap(param_3 + MsGetRotFromZaxisY(tmp), 0.0f, 360.0f);
f32 fVar2 = MsAngleDiff(angle, mRotation.y);
f32 distToTarget = toTarget.length();
f32 desiredYaw
= MsWrap(yaw_offset + MsGetRotFromZaxisY(toTarget), 0.0f, 360.0f);
f32 desiredTurn = MsAngleDiff(desiredYaw, mRotation.y);
f32 fVar5 = fVar2;
if (fVar7 > calcMinimumTurnRadius(march_speed, turn_speed) * 2.0f) {
if (fVar2 > 0.0f) {
fVar5 = MsMin(fVar2, turn_speed);
f32 deltaYaw = desiredTurn;
if (distToTarget > calcMinimumTurnRadius(march_speed, turn_speed) * 2.0f) {
if (desiredTurn > 0.0f) {
deltaYaw = MsMin(desiredTurn, turn_speed);
} else {
fVar5 = MsMax(fVar2, -turn_speed);
deltaYaw = MsMax(desiredTurn, -turn_speed);
}
} else {
f32 fVar3 = calcTurnSpeedToReach(march_speed, fVar7 * 0.5f);
f32 turnSpeed = calcTurnSpeedToReach(march_speed, distToTarget * 0.5f);
if (fVar2 > 0.0f) {
fVar5 = MsMin(fVar2, fVar3);
if (desiredTurn > 0.0f) {
deltaYaw = MsMin(desiredTurn, turnSpeed);
} else {
fVar5 = MsMax(fVar2, -fVar3);
deltaYaw = MsMax(desiredTurn, -turnSpeed);
}
}
mRotation.y = MsWrap(mRotation.y + fVar5, 0.0f, 360.0f);
mRotation.y = MsWrap(mRotation.y + deltaYaw, 0.0f, 360.0f);
JGeometry::TVec3<f32> vel = mPositionDelta;
vel += polarXZ(mRotation.y, march_speed);
mPositionDelta = vel;
if (abs(fVar7 - unk12C) < 100.0f) {
unk128 += 1;
} else {
unk128 = 0;
unk12C = fVar7;
}
updateStayCount(distToTarget);
}
void TSpineEnemy::zigzagToCurPathNode(f32 march_speed, f32 turn_speed,
@@ -496,9 +495,9 @@ void TSpineEnemy::zigzagToCurPathNode(f32 march_speed, f32 turn_speed,
f32 f29 = angle * unk124->unk10;
f32 dVar9 = getCurrentTargetDistance();
f32 distToTarget = getCurrentTargetDistance();
f32 dVar13 = MsWrap(dVar9, 0.0f, cycle);
f32 dVar13 = MsWrap(distToTarget, 0.0f, cycle);
cycle = 360.0f * (1.0f / cycle);
f32 phaseShift = getPhaseShift();
@@ -515,7 +514,7 @@ void TSpineEnemy::zigzagToCurPathNode(f32 march_speed, f32 turn_speed,
f32 fVar3 = calcMinimumTurnRadius(march_speed, turn_speed);
if (dVar9 > fVar3 * 2.0f) {
if (distToTarget > fVar3 * 2.0f) {
if (fVar1 > 0.0f) {
fVar2 = MsMin(fVar1, turn_speed);
} else {
@@ -529,12 +528,7 @@ void TSpineEnemy::zigzagToCurPathNode(f32 march_speed, f32 turn_speed,
vel += polarXZ(mRotation.y, march_speed);
mPositionDelta = vel;
if (abs(dVar9 - unk12C) < 100.0f) {
unk128 += 1;
} else {
unk128 = 0;
unk12C = dVar9;
}
updateStayCount(distToTarget);
}
void TSpineEnemy::doShortCut()
+3 -6
View File
@@ -1401,8 +1401,7 @@ void TFireWanwan::initTurnNextGraphNode()
{
unk124->mCurrIdx = unk124->popCurr();
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
void TFireWanwan::initEscapeNextGraphNode()
@@ -1426,14 +1425,12 @@ void TFireWanwan::initEscapeNextGraphNode()
unk124->mPrevIdx = -1;
unk124->mCurrIdx = uVar2;
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
} else {
unk124->mPrevIdx = -1;
unk124->mCurrIdx = uVar1;
setGoalPathFromGraph();
unk128 = 0;
unk12C = 0.0f;
resetStayCount();
}
}
+1 -1
View File
@@ -797,7 +797,7 @@ bool THamuKuri::isGiveUpSearchActor()
{
TLiveActor* casted = (TLiveActor*)unk1F8;
if (unk128 > 100
if (mStayCount > 100
|| abs(mGroundHeight - casted->getGroundHeight()) > 100.0f) {
unk1A0 = true;
unk1F8 = nullptr;
+1 -1
View File
@@ -406,7 +406,7 @@ void TSamboFlower::init(TLiveManager* param_1)
mManager = param_1;
param_1->manageActor(this);
setMActorAndKeeper();
unk130 = 1;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND;
unk16C = (TSamboFlowerSaveLoadParams*)getSaveParam();
if (unk16C) {
mBodyRadius = unk16C->mSLBodyRadius.get();
+1 -1
View File
@@ -136,7 +136,7 @@ void THauntLeg::init(TLiveManager* param_1)
unk150 = 0x3a;
onHitFilter(HIT_CATEGORY_ITEM | HIT_CATEGORY_MAP_OBJECT);
getWalker()->setMode(1);
unk130 = 2;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND_AND_WALL;
getMActor()->setJointCallback(1, HauntLegCallback);
unk194 = new THauntedObject;
static_cast<TIdxGroupObj*>(JDrama::TNameRefGen::search("敵グループ"))
+4 -4
View File
@@ -144,7 +144,7 @@ void TRollEnemy::walkBehavior(int param_1, f32 param_2)
}
if (mPosition.y < mGroundHeight + 30.0f)
rollSE();
if (unk128 > 300) {
if (mStayCount > 300) {
onLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
kill();
}
@@ -864,7 +864,7 @@ void TGorogoro::init(TLiveManager* param_1)
}
mMActor->setJointCallback(1, RollEnemyBodyCallback);
unk130 = 1;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND;
}
void TGorogoro::perform(u32 cue, JDrama::TGraphics* param_2)
@@ -909,7 +909,7 @@ void TGorogoro::calcRootMatrix()
void TGorogoro::reset()
{
unk130 = 1;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND;
TRollEnemy::reset();
offLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
mTevKColor.a = 0xFF;
@@ -1058,7 +1058,7 @@ void TGorogoro::setDeadAnm()
void TGorogoro::setMeltAnm()
{
setBckAnm(1);
unk130 = 0;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_NONE;
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
MTXCopy(getMActor()->getModel()->getBaseTRMtx(), unk1B4);
+1 -1
View File
@@ -293,7 +293,7 @@ void TNameKuri::init(TLiveManager* param_1)
mActorType = ACTOR_TYPE_NAME_KURI;
unk150 = 0x3A;
getWalker()->setMode(1);
unk130 = 2;
mSurfaceAlignmentMode = SURFACE_ALIGNMENT_GROUND_AND_WALL;
unk1A4 = (TNameKuriSaveLoadParams*)getSaveParam();
if (mInstanceIndex == 0) {