mirror of
https://github.com/doldecomp/sms.git
synced 2026-11-07 09:06:00 -10:00
Some enemy naming
This commit is contained in:
1 parent
622fcdb70e
commit
95a53f5a3c
13 files changed
+81
-81
No files matched your search
+17
-4
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -852,8 +852,7 @@ void TBossHanachan::goToInitialRecoverGraphNode()
|
||||
}
|
||||
unk124->setTo(index);
|
||||
setGoalPathFromGraph();
|
||||
unk128 = 0;
|
||||
unk12C = 0.0f;
|
||||
resetStayCount();
|
||||
}
|
||||
|
||||
// fabricated
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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("敵グループ"))
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user