mirror of
https://github.com/doldecomp/sms.git
synced 2026-11-07 09:06:00 -10:00
Live flags are very nice now
This commit is contained in:
1 parent
8052d8a223
commit
029611cd09
106 files changed
+635
-525
No files matched your search
@@ -378,7 +378,7 @@ public:
|
||||
TBossEelSaveParams& getBossEelParams() const { return *mSaveParams; }
|
||||
|
||||
enum {
|
||||
LIVE_FLAG_UNK10000 = VERSION_SELECT(0x20000, GMSJ01(0x10000)),
|
||||
LIVE_FLAG_REVERSE_SPIN = 1u << LIVE_FLAG_BIT_USER2, // 0x10000
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
@@ -57,6 +57,16 @@ public:
|
||||
void emitOneTimeSandPillar_(TBossHanachanPartsBody*);
|
||||
void emitParticle_();
|
||||
|
||||
// clang-format off
|
||||
enum {
|
||||
LIVE_FLAG_SAND_PILLAR_ACTIVE = 1u << LIVE_FLAG_BIT_USER2, // 0x10000
|
||||
LIVE_FLAG_BGM_CHANGE_PENDING = 1u << LIVE_FLAG_BIT_USER3, // 0x20000
|
||||
LIVE_FLAG_DEATH_ANIMATION_FINISHED = 1u << LIVE_FLAG_BIT_USER4, // 0x40000
|
||||
LIVE_FLAG_SUPPRESS_HINT_BALLOON = 1u << LIVE_FLAG_BIT_USER5, // 0x80000
|
||||
LIVE_FLAG_SKIP_DEATH_BGM_MODULATION = 1u << LIVE_FLAG_BIT_USER6, // 0x100000
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
public:
|
||||
/* 0x150 */ TBossHanachanPartsBody* mBodyParts[8];
|
||||
/* 0x170 */ TBossHanachanPartsHead* mHead;
|
||||
|
||||
@@ -147,7 +147,7 @@ public:
|
||||
static f32 mCameraMoveSp;
|
||||
|
||||
enum {
|
||||
LIVE_FLAG_UNK10000 = 0x10000,
|
||||
LIVE_FLAG_UNK10000 = 1u << LIVE_FLAG_BIT_USER2, // 0x10000 / 0x20000
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
@@ -155,9 +155,6 @@ public:
|
||||
|
||||
f32 getUnk168() const { return unk168; }
|
||||
|
||||
// fabricated
|
||||
f32 getHeadHeight() const { return mHeadHeight * mBodyScale; }
|
||||
|
||||
// UNUSED
|
||||
BOOL isHeadPulled();
|
||||
bool isMarioInSight();
|
||||
|
||||
@@ -131,6 +131,21 @@ public:
|
||||
|
||||
TGraphTracer* getTracer() { return unk124; }
|
||||
|
||||
bool isJumping() const { return checkLiveFlag(LIVE_FLAG_JUMPING) ? 1 : 0; }
|
||||
|
||||
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.
|
||||
LIVE_FLAG_RECYCLABLE = 1u << LIVE_FLAG_BIT_UNK800, // 0x800
|
||||
|
||||
LIVE_FLAG_USE_SHARED_ANIMATION = 1u << LIVE_FLAG_BIT_USER0, // 0x4000
|
||||
|
||||
/// Signifies that the enemy is currently mid-jump. Different from
|
||||
/// LIVE_FLAG_AIRBORNE in that it is not set if the enemy simply fell
|
||||
/// off a cliff.
|
||||
LIVE_FLAG_JUMPING = 1u << LIVE_FLAG_BIT_USER1, // 0x8000
|
||||
};
|
||||
|
||||
public:
|
||||
/* 0xF4 */ TPathNode mCurrentTarget;
|
||||
/* 0x104 */ TPathNode mGoal;
|
||||
|
||||
@@ -26,6 +26,11 @@ public:
|
||||
void setJumpReaction();
|
||||
int setBckTrack(const char*);
|
||||
|
||||
enum {
|
||||
LIVE_FLAG_ROUTE_PAUSED = 1u << LIVE_FLAG_BIT_USER2, // 0x10000
|
||||
LIVE_FLAG_MARIO_ON_BOARD = 1u << LIVE_FLAG_BIT_USER3, // 0x20000
|
||||
};
|
||||
|
||||
public:
|
||||
/* 0x150 */ s16 unk150;
|
||||
/* 0x154 */ f32 unk154;
|
||||
|
||||
@@ -201,7 +201,11 @@ public:
|
||||
}
|
||||
|
||||
enum {
|
||||
LIVE_FLAG_MELT_ON_DEATH = VERSION_SELECT(0x20000, GMSJ01(0x10000)),
|
||||
LIVE_FLAG_MELT_ON_DEATH
|
||||
= 1u << LIVE_FLAG_BIT_USER2, // 0x10000 / 0x20000
|
||||
LIVE_FLAG_NO_ITEM_DROPS
|
||||
= 1u << LIVE_FLAG_BIT_USER3, // 0x20000 / 0x40000
|
||||
LIVE_FLAG_UNK40000 = 1u << LIVE_FLAG_BIT_USER4, // 0x40000 / 0x80000
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
@@ -364,6 +364,12 @@ public:
|
||||
const char* getUnkF4() { return mIndividualName; }
|
||||
|
||||
public:
|
||||
enum {
|
||||
/// While set, CUE_CALC_ANIM, CUE_ENTRY and CUE_CALC_VIEW are not
|
||||
/// performed on by the map object.
|
||||
LIVE_FLAG_SLEEPING = 1u << LIVE_FLAG_BIT_USER0, // 0x4000
|
||||
};
|
||||
|
||||
enum {
|
||||
MOVE_COLLISION_ON_CONTACT_GRACE_TIMER = 4,
|
||||
};
|
||||
|
||||
+26
-10
@@ -224,11 +224,24 @@ public:
|
||||
|
||||
bool isClean() const { return mPollutionAmount == 0.0f; }
|
||||
|
||||
// clang-format off
|
||||
enum {
|
||||
LIVE_FLAG_DONT_TALK = VERSION_SELECT(0x20000, GMSJ01(0x10000)),
|
||||
LIVE_FLAG_SINK_BOTTOM = VERSION_SELECT(0x1000000, GMSJ01(0x800000)),
|
||||
LIVE_FLAG_DONT_THROW = VERSION_SELECT(0x40000000, GMSJ01(0x20000000)),
|
||||
LIVE_FLAG_DONT_TALK = 1u << LIVE_FLAG_BIT_USER2, // 0x10000
|
||||
LIVE_FLAG_TALKABLE = 1u << LIVE_FLAG_BIT_USER3, // 0x20000
|
||||
LIVE_FLAG_TALK_REQUESTED = 1u << LIVE_FLAG_BIT_USER4, // 0x40000
|
||||
LIVE_FLAG_TALKING = 1u << LIVE_FLAG_BIT_USER5, // 0x80000
|
||||
LIVE_FLAG_CAN_BE_TAKEN = 1u << LIVE_FLAG_BIT_USER6, // 0x100000
|
||||
LIVE_FLAG_UTURN_POSITIVE_YAW = 1u << LIVE_FLAG_BIT_USER7, // 0x200000
|
||||
LIVE_FLAG_SINKING = 1u << LIVE_FLAG_BIT_USER8, // 0x400000
|
||||
LIVE_FLAG_SINK_BOTTOM = 1u << LIVE_FLAG_BIT_USER9, // 0x800000
|
||||
LIVE_FLAG_RENDER_ENTRY_SKIPPED = 1u << LIVE_FLAG_BIT_USER10, // 0x1000000
|
||||
LIVE_FLAG_ANGRY = 1u << LIVE_FLAG_BIT_USER11, // 0x2000000
|
||||
LIVE_FLAG_BALL_HIT_REACTION = 1u << LIVE_FLAG_BIT_USER12, // 0x4000000
|
||||
LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED = 1u << LIVE_FLAG_BIT_USER13, // 0x8000000
|
||||
LIVE_FLAG_ENABLE_WALL_COLLISION = 1u << LIVE_FLAG_BIT_USER14, // 0x10000000
|
||||
LIVE_FLAG_DONT_THROW = 1u << LIVE_FLAG_BIT_USER15, // 0x20000000
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
private:
|
||||
void setIndividualDifference_(JSUMemoryInputStream&);
|
||||
@@ -275,7 +288,7 @@ private:
|
||||
unk1DC -= 1;
|
||||
if (unk1DC == 0 && mHolder == nullptr) {
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
offLiveFlag(LIVE_FLAG_UNK10000000);
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_WALL_COLLISION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,9 +305,12 @@ private:
|
||||
{
|
||||
bool r31 = false;
|
||||
|
||||
bool bVar12 = checkLiveFlag2(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_DEAD);
|
||||
bool bVar6 = checkLiveFlag2(LIVE_FLAG_UNK1000000);
|
||||
bool bVar12 = checkLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_DEAD)
|
||||
? true
|
||||
: false;
|
||||
bool bVar6
|
||||
= checkLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED) ? true : false;
|
||||
|
||||
if (bVar12) {
|
||||
r31 = true;
|
||||
@@ -328,14 +344,14 @@ private:
|
||||
bool isTalkable_()
|
||||
{
|
||||
bool result = false;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK40000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_TALK_REQUESTED)) {
|
||||
result = true;
|
||||
} else if (mTalkForbidCount == 0 && !isJellyFishMare()
|
||||
&& !gpCamera->isTalkCameraInbetween() && mHolder == nullptr
|
||||
&& !checkLiveFlag(
|
||||
LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_UNK200 | LIVE_FLAG_DONT_TALK
|
||||
| LIVE_FLAG_SINK_BOTTOM | LIVE_FLAG_UNK400000)
|
||||
| LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_DONT_TALK
|
||||
| LIVE_FLAG_SINK_BOTTOM | LIVE_FLAG_SINKING)
|
||||
&& !checkActionFlag(NPC_ACTION_BURNING) && isClean()) {
|
||||
|
||||
if (!isSunflowerReviving() && isNerveCanGoToTalk()
|
||||
|
||||
@@ -20,41 +20,89 @@ class TBinder;
|
||||
class TMapCollisionManager;
|
||||
|
||||
enum {
|
||||
LIVE_FLAG_DEAD = 0x1,
|
||||
LIVE_FLAG_HIDDEN = 0x2,
|
||||
LIVE_FLAG_CLIPPED_OUT = 0x4,
|
||||
LIVE_FLAG_UNK8 = 0x8,
|
||||
LIVE_FLAG_UNK10 = 0x10,
|
||||
LIVE_FLAG_UNK20 = 0x20,
|
||||
LIVE_FLAG_UNK40 = 0x40,
|
||||
LIVE_FLAG_AIRBORNE = 0x80,
|
||||
LIVE_FLAG_ENABLE_CLIPPING = 0x100,
|
||||
LIVE_FLAG_UNK200 = 0x200,
|
||||
LIVE_FLAG_FORCE_SHADOW = 0x400,
|
||||
LIVE_FLAG_UNK800 = 0x800,
|
||||
LIVE_FLAG_UNK1000 = 0x1000,
|
||||
LIVE_FLAG_UNK2000 = 0x2000,
|
||||
LIVE_FLAG_BIT_DEAD = 0,
|
||||
LIVE_FLAG_BIT_HIDDEN,
|
||||
LIVE_FLAG_BIT_CLIPPED_OUT,
|
||||
LIVE_FLAG_BIT_NO_SHADOW,
|
||||
LIVE_FLAG_BIT_NO_BIND,
|
||||
LIVE_FLAG_BIT_UNK20,
|
||||
LIVE_FLAG_BIT_UNK40,
|
||||
LIVE_FLAG_BIT_AIRBORNE,
|
||||
LIVE_FLAG_BIT_ENABLE_CLIPPING,
|
||||
LIVE_FLAG_BIT_OUT_OF_AREA,
|
||||
LIVE_FLAG_BIT_FORCE_SHADOW,
|
||||
LIVE_FLAG_BIT_UNK800,
|
||||
LIVE_FLAG_BIT_IGNORE_WATER_IN_GROUND_CHECKS,
|
||||
LIVE_FLAG_BIT_ENABLE_FAST_CUBE_CULLING,
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
LIVE_FLAG_CALC_INT_FRAME = 0x4000,
|
||||
LIVE_FLAG_BIT_CALC_INT_FRAME,
|
||||
#elif defined(VERSION_GMSJ01_01)
|
||||
LIVE_FLAG_BIT_UNK4000,
|
||||
#endif
|
||||
LIVE_FLAG_BIT_USER0,
|
||||
LIVE_FLAG_BIT_USER1,
|
||||
LIVE_FLAG_BIT_USER2,
|
||||
LIVE_FLAG_BIT_USER3,
|
||||
LIVE_FLAG_BIT_USER4,
|
||||
LIVE_FLAG_BIT_USER5,
|
||||
LIVE_FLAG_BIT_USER6,
|
||||
LIVE_FLAG_BIT_USER7,
|
||||
LIVE_FLAG_BIT_USER8,
|
||||
LIVE_FLAG_BIT_USER9,
|
||||
LIVE_FLAG_BIT_USER10,
|
||||
LIVE_FLAG_BIT_USER11,
|
||||
LIVE_FLAG_BIT_USER12,
|
||||
LIVE_FLAG_BIT_USER13,
|
||||
LIVE_FLAG_BIT_USER14,
|
||||
LIVE_FLAG_BIT_USER15,
|
||||
};
|
||||
|
||||
enum {
|
||||
/// Stops the actor from performing.
|
||||
LIVE_FLAG_DEAD = 1u << LIVE_FLAG_BIT_DEAD, // 0x1
|
||||
|
||||
/// Stops the actor from being drawn or animated.
|
||||
LIVE_FLAG_HIDDEN = 1u << LIVE_FLAG_BIT_HIDDEN, // 0x2
|
||||
|
||||
/// Set while the actor is outside of the camera's view frustum or inside of
|
||||
/// a "fast cube". Stops the actor from being animated or drawn, analogous
|
||||
/// to LIVE_FLAG_HIDDEN.
|
||||
LIVE_FLAG_CLIPPED_OUT = 1u << LIVE_FLAG_BIT_CLIPPED_OUT, // 0x4
|
||||
|
||||
/// Stops the actor from casting a shadow.
|
||||
LIVE_FLAG_NO_SHADOW = 1u << LIVE_FLAG_BIT_NO_SHADOW, // 0x8
|
||||
|
||||
/// Disables "binding", aka physics simulation.
|
||||
LIVE_FLAG_NO_BIND = 1u << LIVE_FLAG_BIT_NO_BIND, // 0x10
|
||||
|
||||
LIVE_FLAG_UNK20 = 1u << LIVE_FLAG_BIT_UNK20, // 0x20
|
||||
LIVE_FLAG_UNK40 = 1u << LIVE_FLAG_BIT_UNK40, // 0x40
|
||||
|
||||
/// Signifies that the actor is not standing on solid ground.
|
||||
LIVE_FLAG_AIRBORNE = 1u << LIVE_FLAG_BIT_AIRBORNE, // 0x80
|
||||
|
||||
/// Controls whether frustum clipping is used for the actor by it's manager.
|
||||
LIVE_FLAG_ENABLE_CLIPPING = 1u << LIVE_FLAG_BIT_ENABLE_CLIPPING, // 0x100
|
||||
|
||||
/// Signifies that the actor is outside of the current playable area (e.g.
|
||||
/// floors in hotel delphino) and stops it from performing whatsoever.
|
||||
LIVE_FLAG_OUT_OF_AREA = 1u << LIVE_FLAG_BIT_OUT_OF_AREA, // 0x200
|
||||
|
||||
/// Forces a shadow to be drawn for the actor even if it's culled out.
|
||||
LIVE_FLAG_FORCE_SHADOW = 1u << LIVE_FLAG_BIT_FORCE_SHADOW, // 0x400
|
||||
|
||||
/// Whether the actor "falls" through water during binding.
|
||||
LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS
|
||||
= 1u << LIVE_FLAG_BIT_IGNORE_WATER_IN_GROUND_CHECKS, // 0x1000
|
||||
|
||||
/// If enabled, the actor will be culled out whenever it is in a different
|
||||
/// fast cube from mario.
|
||||
LIVE_FLAG_ENABLE_FAST_CUBE_CULLING
|
||||
= 1u << LIVE_FLAG_BIT_ENABLE_FAST_CUBE_CULLING, // 0x2000
|
||||
|
||||
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX)
|
||||
LIVE_FLAG_CALC_INT_FRAME = 1u << LIVE_FLAG_BIT_CALC_INT_FRAME, // 0x4000
|
||||
#endif
|
||||
LIVE_FLAG_UNK4000 = VERSION_SELECT(0x8000, GMSJ01(0x4000)),
|
||||
LIVE_FLAG_UNK8000 = VERSION_SELECT(0x10000, GMSJ01(0x8000)),
|
||||
LIVE_FLAG_UNK10000 = VERSION_SELECT(0x20000, GMSJ01(0x10000)),
|
||||
// WARNING: some flag values are overloaded between derived classes. E.g.
|
||||
// LIVE_FLAG_UNK10000 means different things for NPCs and small enemies.
|
||||
// Be careful about placing stuff here -- it might belong to derived classes
|
||||
// instead.
|
||||
LIVE_FLAG_UNK20000 = VERSION_SELECT(0x40000, GMSJ01(0x20000)),
|
||||
LIVE_FLAG_UNK40000 = VERSION_SELECT(0x80000, GMSJ01(0x40000)),
|
||||
LIVE_FLAG_UNK80000 = VERSION_SELECT(0x100000, GMSJ01(0x80000)),
|
||||
LIVE_FLAG_UNK100000 = VERSION_SELECT(0x200000, GMSJ01(0x100000)),
|
||||
LIVE_FLAG_UNK200000 = VERSION_SELECT(0x400000, GMSJ01(0x200000)),
|
||||
LIVE_FLAG_UNK400000 = VERSION_SELECT(0x800000, GMSJ01(0x400000)),
|
||||
LIVE_FLAG_UNK1000000 = VERSION_SELECT(0x2000000, GMSJ01(0x1000000)),
|
||||
LIVE_FLAG_UNK2000000 = VERSION_SELECT(0x4000000, GMSJ01(0x2000000)),
|
||||
LIVE_FLAG_UNK4000000 = VERSION_SELECT(0x8000000, GMSJ01(0x4000000)),
|
||||
LIVE_FLAG_UNK8000000 = VERSION_SELECT(0x10000000, GMSJ01(0x8000000)),
|
||||
LIVE_FLAG_UNK10000000 = VERSION_SELECT(0x20000000, GMSJ01(0x10000000)),
|
||||
};
|
||||
|
||||
class TLiveActor : public TTakeActor {
|
||||
@@ -133,12 +181,7 @@ public:
|
||||
// fabricated
|
||||
const TBGCheckData* getGroundPlane() const { return mGroundPlane; }
|
||||
f32 getGroundHeight() const { return mGroundHeight; }
|
||||
// TODO: which one is real?
|
||||
bool checkLiveFlag(u32 flag) const { return mLiveFlag & flag; }
|
||||
bool checkLiveFlag2(u32 flag) const
|
||||
{
|
||||
return mLiveFlag & flag ? true : false;
|
||||
}
|
||||
bool isAirborne() const
|
||||
{
|
||||
return checkLiveFlag(LIVE_FLAG_AIRBORNE) ? 1 : 0;
|
||||
@@ -169,7 +212,7 @@ public:
|
||||
void setVelocityAndFlag10(f32 x, f32 y, f32 z)
|
||||
{
|
||||
mVelocity.set(x, y, z);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
void setPositionDelta(const JGeometry::TVec3<f32>& v)
|
||||
{
|
||||
|
||||
@@ -59,7 +59,7 @@ void TAnimalBase::init(TLiveManager* manager)
|
||||
mMarchSpeed = 0.0f;
|
||||
mBodyRadius = 10.0f;
|
||||
mWallRadius = 20.0f;
|
||||
mLiveFlag |= LIVE_FLAG_UNK10 | LIVE_FLAG_UNK20 | LIVE_FLAG_UNK8;
|
||||
mLiveFlag |= LIVE_FLAG_NO_BIND | LIVE_FLAG_UNK20 | LIVE_FLAG_NO_SHADOW;
|
||||
|
||||
mSpine->initWith(&TNerveAnimalGraphWander::theNerve());
|
||||
unk124->reset();
|
||||
|
||||
@@ -32,7 +32,7 @@ void TAnimalManagerBase::clipEnemies(JDrama::TGraphics* graphics)
|
||||
JGeometry::TVec3<f32> pos = actor->mPosition;
|
||||
pos.y += 75.0f;
|
||||
|
||||
if (actor->checkLiveFlag(LIVE_FLAG_UNK2000)
|
||||
if (actor->checkLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING)
|
||||
&& SMS_IsInOtherFastCube(pos)) {
|
||||
actor->onLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
} else {
|
||||
|
||||
@@ -119,7 +119,7 @@ void TBeeHive::init(TLiveManager* manager)
|
||||
{
|
||||
mManager = manager;
|
||||
mManager->manageActor(this);
|
||||
onLiveFlag(LIVE_FLAG_UNK8 | LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW | LIVE_FLAG_NO_BIND);
|
||||
mSpine->initWith(&TNerveBeeHiveWait::theNerve());
|
||||
mInitialPosition = mPosition;
|
||||
mActiveBeeNum = 0;
|
||||
@@ -142,7 +142,7 @@ void TBeeHive::reset()
|
||||
mSwingAngVel = 0.0f;
|
||||
mSwingAngleMax = 0.015707964f;
|
||||
mHitCheckBeeIdx = 0;
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_AIRBORNE);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_AIRBORNE);
|
||||
mMActor = mMActorKeeper->getMActor("bee_nest.bmd");
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
}
|
||||
@@ -289,7 +289,7 @@ void TBeeHive::control()
|
||||
|
||||
void TBeeHive::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
JGeometry::TVec3<f32> pos = mPosition;
|
||||
@@ -383,7 +383,7 @@ void TBeeHive::calcRootMatrix()
|
||||
|
||||
void TBeeHive::prepareWait()
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_AIRBORNE);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_AIRBORNE);
|
||||
if (mActiveBeeNum < 3) {
|
||||
for (int i = 0; i < 3; ++i)
|
||||
appearBee(i);
|
||||
@@ -435,7 +435,7 @@ bool TBeeHive::doWait()
|
||||
|
||||
void TBeeHive::prepareFall()
|
||||
{
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_EN_BEENEST_OFF, &mPosition, 0,
|
||||
nullptr, 0, 4);
|
||||
|
||||
+1
-1
@@ -363,7 +363,7 @@ void TAnimalBird::doDropCoin()
|
||||
obj->appear();
|
||||
obj->JSGSetTranslation(mPosition);
|
||||
obj->mVelocity.set(0.0f, -10.0f, 0.0f);
|
||||
obj->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
obj->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
obj->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ TRealoid::TRealoid(const char* name)
|
||||
: TSpineEnemy(name)
|
||||
{
|
||||
unk150 = 0;
|
||||
mLiveFlag |= LIVE_FLAG_UNK10 | LIVE_FLAG_UNK20 | LIVE_FLAG_UNK8;
|
||||
mLiveFlag |= LIVE_FLAG_NO_BIND | LIVE_FLAG_UNK20 | LIVE_FLAG_NO_SHADOW;
|
||||
}
|
||||
|
||||
void TRealoid::loadDefault(JSUMemoryInputStream& stream, const char* name,
|
||||
|
||||
@@ -107,14 +107,15 @@ bool TCubeManagerArea::isInAreaCube(const Vec& pos) const
|
||||
// Presumably hotel delphino floor transitions?
|
||||
if (SMSGetMarDirector()->getCurrentStage() == 7 && unk1C != -1
|
||||
&& found != -1) {
|
||||
const char* curName = (*unk14)[unk1C].getName();
|
||||
const char* newName = (*unk14)[found].getName();
|
||||
const char* curFloor = (*unk14)[unk1C].getName();
|
||||
const char* foundFloor = (*unk14)[found].getName();
|
||||
|
||||
if (strcmp(curName, "3階") == 0) {
|
||||
if (strcmp(newName, "2階") == 0 || strcmp(newName, "1階") == 0)
|
||||
if (strcmp(curFloor, "3階") == 0) {
|
||||
if (strcmp(foundFloor, "2階") == 0
|
||||
|| strcmp(foundFloor, "1階") == 0)
|
||||
return true;
|
||||
} else if (strcmp(curName, "2階") == 0) {
|
||||
if (strcmp(newName, "1階") == 0)
|
||||
} else if (strcmp(curFloor, "2階") == 0) {
|
||||
if (strcmp(foundFloor, "1階") == 0)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ const char* const cJointNames[] = {
|
||||
TAmenbo::TAmenbo(const char* name)
|
||||
: TSmallEnemy(name)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
void TAmenbo::init(TLiveManager* manager)
|
||||
@@ -92,7 +92,7 @@ void TAmenbo::initParticle()
|
||||
|
||||
void TAmenbo::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
JGeometry::TVec3<f32> local_14 = mPosition;
|
||||
@@ -237,7 +237,7 @@ void TAmenbo::forceKill()
|
||||
|
||||
// amenbo die if no water ;(
|
||||
if (mSpine->getLatestNerve() != &TNerveSmallEnemyDie::theNerve()) {
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
kill();
|
||||
}
|
||||
}
|
||||
@@ -476,7 +476,7 @@ void TAmenbo::activateJumpBase()
|
||||
mDamageRadius = 215.0f;
|
||||
mDamageHeight = 120.0f;
|
||||
calcEntryRadius();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TAmenbo::deactivateJumpBase()
|
||||
@@ -487,7 +487,7 @@ void TAmenbo::deactivateJumpBase()
|
||||
unk1E4->remove();
|
||||
offHitFilter(HIT_FILTER_NO_ATTACK);
|
||||
setDamageParams(100.0f, 150.0f);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
bool TAmenbo::isActivateJumpBase() const { return unk1E4->isSetUp(); }
|
||||
|
||||
@@ -149,9 +149,9 @@ void TBathtubKiller::init(TLiveManager* manager)
|
||||
TSmallEnemy::init(manager);
|
||||
mActorType = ACTOR_TYPE_BATHTUB_KILLER;
|
||||
unk150 = 0x11;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onLiveFlag(LIVE_FLAG_DEAD);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
mKillerType = KILLER_NORMAL;
|
||||
resetBathtubKiller();
|
||||
@@ -200,7 +200,7 @@ void TBathtubKiller::reset()
|
||||
{
|
||||
TSmallEnemy::reset();
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
offHitFilter(HIT_FILTER_NO_ATTACK);
|
||||
offHitFilter(HIT_FILTER_NO_DAMAGE);
|
||||
@@ -609,7 +609,7 @@ void TBathtubKiller::setDeadBathtubKillerAnm()
|
||||
mQuat.set(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
mAcceleration.set(0.0f, 0.0f, 0.0f);
|
||||
mVelocity = JGeometry::TVec3<f32>(0, 0, 0);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
mNoseColor = mBodyColor;
|
||||
}
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ TBathtubPeach::TBathtubPeach(const char* name)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_CLIPPING);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
// fabricated
|
||||
|
||||
@@ -137,7 +137,7 @@ void TBossHanachan::emitParticle_()
|
||||
|
||||
void TBossHanachan::emitOneTimeSandPillar_(TBossHanachanPartsBody* body)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10000);
|
||||
onLiveFlag(LIVE_FLAG_SAND_PILLAR_ACTIVE);
|
||||
unk1A0.set(body->unk108[0][3], mPosition.y, body->unk108[2][3]);
|
||||
const TLiveActor* sand = body->getSandActor_();
|
||||
if (sand) {
|
||||
@@ -202,7 +202,7 @@ void TBossHanachan::emitCamShake_()
|
||||
gpCameraShake->startShake(CAM_SHAKE_MODE_UNKC, 1.0f);
|
||||
if (marioOnGround)
|
||||
SMSRumbleMgr->start(8, (f32*)nullptr);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK20000))
|
||||
if (checkLiveFlag(TBossHanachan::LIVE_FLAG_BGM_CHANGE_PENDING))
|
||||
MSBgm::stopTrackBGM(1, 30);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -137,7 +137,7 @@ void TBossHanachan::init(TLiveManager* manager)
|
||||
mGravity = 2.0f;
|
||||
mHitPoints = 3;
|
||||
mScaledBodyRadius = 0.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK1000 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS | LIVE_FLAG_NO_SHADOW);
|
||||
mSpine->initWith(&TNerveBossHanachanGraphWander::theNerve());
|
||||
unk124->reset();
|
||||
goToShortestNextGraphNode();
|
||||
@@ -257,7 +257,7 @@ void TBossHanachan::kill() { }
|
||||
// TODO: frame offsets and revision-argument load order differ.
|
||||
void TBossHanachan::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
if (mBinder) {
|
||||
mBinder->bind(this);
|
||||
@@ -310,14 +310,14 @@ void TBossHanachan::moveObject()
|
||||
|
||||
void TBossHanachan::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK200))
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_OUT_OF_AREA))
|
||||
return;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK40000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_DEATH_ANIMATION_FINISHED)) {
|
||||
if ((cue & CUE_MOVE) && (graphics->unk0 & 2)) {
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_WT_BOSS_FADEAWAY, &mPosition,
|
||||
0, nullptr, 0, 4);
|
||||
if (!gpMarDirector->isInTalkNow()
|
||||
&& (checkLiveFlag(LIVE_FLAG_UNK100000)
|
||||
&& (checkLiveFlag(LIVE_FLAG_SKIP_DEATH_BGM_MODULATION)
|
||||
|| gpMSound->unk98->modBgm(1, 1) == 0)) {
|
||||
onLiveFlag(LIVE_FLAG_UNK40 | LIVE_FLAG_DEAD);
|
||||
gpItemManager->makeShineAppearWithDemo(
|
||||
@@ -334,13 +334,13 @@ void TBossHanachan::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if ((graphics->unk0 & 2)
|
||||
&& (mSpine->getLatestNerve()
|
||||
== &TNerveBossHanachanDead::theNerve())
|
||||
&& !checkLiveFlag(LIVE_FLAG_UNK100000)) {
|
||||
onLiveFlag(LIVE_FLAG_UNK100000);
|
||||
&& !checkLiveFlag(LIVE_FLAG_SKIP_DEATH_BGM_MODULATION)) {
|
||||
onLiveFlag(LIVE_FLAG_SKIP_DEATH_BGM_MODULATION);
|
||||
MSBgm::stopTrackBGM(1, 30);
|
||||
}
|
||||
} else {
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK80000) && mHitPoints == 3
|
||||
&& mMarchSpeed != 0.0f
|
||||
if (!checkLiveFlag(LIVE_FLAG_SUPPRESS_HINT_BALLOON)
|
||||
&& mHitPoints == 3 && mMarchSpeed != 0.0f
|
||||
&& !(mSpine->getLatestNerve()
|
||||
== &TNerveBossHanachanTumble::theNerve())) {
|
||||
if (unk1B8 == -1
|
||||
@@ -614,7 +614,7 @@ void TBossHanachan::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
&& nerve == &TNerveBossHanachanDead::theNerve()) {
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_WT_BOSS_FADEAWAY,
|
||||
&mPosition, 0, nullptr, 0, 4);
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK100000))
|
||||
if (!checkLiveFlag(LIVE_FLAG_SKIP_DEATH_BGM_MODULATION))
|
||||
gpMSound->unk98->modBgm(1, 1);
|
||||
}
|
||||
}
|
||||
@@ -675,9 +675,9 @@ void TBossHanachan::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
emitParticle_();
|
||||
emitCamShake_();
|
||||
}
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000)
|
||||
if (checkLiveFlag(LIVE_FLAG_SAND_PILLAR_ACTIVE)
|
||||
&& unk19C->curAnmEndsNext(0, nullptr))
|
||||
offLiveFlag(LIVE_FLAG_UNK10000);
|
||||
offLiveFlag(LIVE_FLAG_SAND_PILLAR_ACTIVE);
|
||||
if (!gpMarDirector->isInTalkNow())
|
||||
changeAnmRateAndFrameUpdate_();
|
||||
mHead->unk110->execMotionBlend(mHead->getMActor());
|
||||
@@ -715,7 +715,7 @@ void TBossHanachan::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
for (int i = 0; i < ARRAY_COUNT(mBodyParts); ++i)
|
||||
mBodyParts[i]->getMActor()->viewCalc();
|
||||
}
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000))
|
||||
if (checkLiveFlag(LIVE_FLAG_SAND_PILLAR_ACTIVE))
|
||||
unk19C->perform(cue, graphics);
|
||||
}
|
||||
|
||||
@@ -893,7 +893,7 @@ void TBossHanachan::execDamage()
|
||||
break;
|
||||
}
|
||||
unk124->setGraph(gpConductor->getGraphByName(railName));
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TBossHanachan::LIVE_FLAG_BGM_CHANGE_PENDING);
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_BS_DAMAGE_SYMBL,
|
||||
&mBodyParts[unk174]->unk154, 0, nullptr,
|
||||
0, 4);
|
||||
|
||||
@@ -87,8 +87,9 @@ DEFINE_NERVE(TNerveBossHanachanSnort, TLiveActor)
|
||||
{
|
||||
TBossHanachan* hanachan = (TBossHanachan*)spine->getBody();
|
||||
if (spine->getTime() == 0xC8
|
||||
&& hanachan->checkLiveFlag(LIVE_FLAG_UNK20000)) {
|
||||
hanachan->offLiveFlag(LIVE_FLAG_UNK20000);
|
||||
&& hanachan->checkLiveFlag(
|
||||
TBossHanachan::LIVE_FLAG_BGM_CHANGE_PENDING)) {
|
||||
hanachan->offLiveFlag(TBossHanachan::LIVE_FLAG_BGM_CHANGE_PENDING);
|
||||
MSBgm::startBGM(MSD_BGM_BOSSGESO_2DN3RD);
|
||||
switch (hanachan->getHitPoints()) {
|
||||
case 2:
|
||||
@@ -112,9 +113,10 @@ DEFINE_NERVE(TNerveBossHanachanDead, TLiveActor)
|
||||
{
|
||||
TBossHanachan* hanachan = (TBossHanachan*)spine->getBody();
|
||||
hanachan->considerSetAnm(BOSS_HANACHAN_NERVE_ANM_UNK5);
|
||||
if (!hanachan->checkLiveFlag(LIVE_FLAG_UNK40000)
|
||||
if (!hanachan->checkLiveFlag(
|
||||
TBossHanachan::LIVE_FLAG_DEATH_ANIMATION_FINISHED)
|
||||
&& hanachan->isAllBckAlreadyEnd(BOSS_HANACHAN_ANM_UNK15)) {
|
||||
hanachan->onLiveFlag(LIVE_FLAG_UNK40000);
|
||||
hanachan->onLiveFlag(TBossHanachan::LIVE_FLAG_DEATH_ANIMATION_FINISHED);
|
||||
hanachan->removeAllMapCollision();
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -68,7 +68,7 @@ TBossHanachanPartsBase::TBossHanachanPartsBase(TBossHanachan* owner,
|
||||
mScaledBodyRadius = mOwner->unk1BC->mSLHeadShadowSize.get();
|
||||
break;
|
||||
}
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
initAnmSound();
|
||||
mMActor->setLightType(1);
|
||||
unk110 = new TNpcInbetween(
|
||||
|
||||
@@ -21,7 +21,7 @@ static const char* DebuTelesa_bastable[] = {
|
||||
TDebuTelesa::TDebuTelesa(const char* name)
|
||||
: TSmallEnemy(name)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TDebuTelesa::init(TLiveManager* manager)
|
||||
@@ -167,7 +167,7 @@ void TDebuTelesaManager::clipEnemies(JDrama::TGraphics* graphics)
|
||||
|
||||
JGeometry::TVec3<f32> pos = debu->mPosition;
|
||||
|
||||
if (debu->checkLiveFlag(LIVE_FLAG_UNK2000)
|
||||
if (debu->checkLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING)
|
||||
&& SMS_IsInOtherFastCube(pos)) {
|
||||
debu->onLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
} else if (ViewFrustumClipCheck(graphics, &debu->mPosition, unk3C)) {
|
||||
|
||||
@@ -46,7 +46,7 @@ void TDemoBossHanachan::initBase(TLiveManager* param_1, u32 param_2)
|
||||
mMarchSpeed = 0.0f;
|
||||
mScaledBodyRadius = 1000.0f;
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK8 | LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW | LIVE_FLAG_NO_BIND);
|
||||
|
||||
mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
mPosition.x, mPosition.y + getHeadHeight(), mPosition.z, &mGroundPlane);
|
||||
|
||||
@@ -41,7 +41,7 @@ TKazekun::TKazekun(const char* param_1)
|
||||
: TSmallEnemy(param_1)
|
||||
, unk1B0(0)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TKazekun::init(TLiveManager* param_1)
|
||||
@@ -282,9 +282,9 @@ void TKazekun::doAttack(bool start)
|
||||
void TKazekun::setVisible(bool visible)
|
||||
{
|
||||
if (visible) {
|
||||
offLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_NO_SHADOW);
|
||||
} else {
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_NO_SHADOW);
|
||||
setAnmSound(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ void TKumokun::reset() { }
|
||||
|
||||
void TKumokun::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
if (isFlying()) {
|
||||
|
||||
@@ -184,7 +184,7 @@ void TTPHitActor::checkHitActors()
|
||||
TTabePuku::TTabePuku(const char* param_1)
|
||||
: TSmallEnemy(param_1)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK1000);
|
||||
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
}
|
||||
|
||||
void TTabePuku::init(TLiveManager* param_1)
|
||||
|
||||
@@ -133,7 +133,7 @@ void TAmiNoko::init(TLiveManager* param_1)
|
||||
unk20C = (TAmiNokoSaveLoadParams*)getSaveParam();
|
||||
reset();
|
||||
setWalkAnm();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
initialGraphNode();
|
||||
if (SMSGetMarDirector()->getCurrentStage() == 8)
|
||||
unk210 = 0;
|
||||
@@ -594,7 +594,7 @@ void TAmiNoko::bind()
|
||||
mVelocity.y -= getGravityY();
|
||||
if (mVelocity.y < mVelocityMinY)
|
||||
mVelocity.y = mVelocityMinY;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK1000))
|
||||
if (checkLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS))
|
||||
mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
vec.x, vec.y + mHeadHeight, vec.z, &mGroundPlane);
|
||||
else
|
||||
@@ -800,7 +800,7 @@ DEFINE_NERVE(TNerveAmiNokoDie, TLiveActor)
|
||||
|| direction.length() > 10000.0f) {
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
|
||||
@@ -954,18 +954,14 @@ void TBGTentacle::moveNode()
|
||||
local_ac.y = mOwner->mPosition.y + 10.0f;
|
||||
}
|
||||
|
||||
// TODO: inline, or need to try harder to make MWCC merge the loads?
|
||||
TBossGesso* bossGesso = mOwner;
|
||||
JGeometry::TVec3<f32> local_c8 = bossGesso->mPosition;
|
||||
JGeometry::TVec3<f32> local_c8 = mOwner->mPosition;
|
||||
if (local_c8.y < local_ac.y) {
|
||||
local_c8 -= local_ac;
|
||||
|
||||
f32 thing = bossGesso->mBodyScale * bossGesso->mBodyRadius;
|
||||
// TODO: common subexpression eliminator doesn't want to merge
|
||||
// the `squared` calls here =(
|
||||
if (local_c8.length() < thing) {
|
||||
f32 bodyRad = mOwner->getBodyRadius();
|
||||
if (local_c8.length() < bodyRad) {
|
||||
local_c8.normalize();
|
||||
local_c8.scale(thing);
|
||||
local_c8.scale(bodyRad);
|
||||
local_ac += local_c8;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ void TBombHei::genEventCoin()
|
||||
JGeometry::TVec3<f32> vec = SMS_GetMarioPos() - mPosition;
|
||||
MsVECNormalize(&vec, &vec);
|
||||
coin->mVelocity.set(vec.x * 20.0f, 20.0f, vec.z * 20.0f);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -334,7 +334,7 @@ void TBombHei::forceKill()
|
||||
if (isAirborne())
|
||||
return;
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
if (mSpine->getCurrentNerve() != &TNerveBombHeiExplosion::theNerve()) {
|
||||
@@ -342,7 +342,7 @@ void TBombHei::forceKill()
|
||||
mSpine->setNext(&TNerveBombHeiExplosion::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
mHitPoints = 1;
|
||||
}
|
||||
}
|
||||
@@ -510,7 +510,7 @@ DEFINE_NERVE(TNerveBombHeiExplosion, TLiveActor)
|
||||
self->unk1A0 = params->mSLBombRange.get() * self->getBodyScale()
|
||||
/ self->getAttackRadius();
|
||||
self->setDeadAnm();
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
if (self->getHolder() == gpMarioAddress)
|
||||
self->sendAttackMsgToMario();
|
||||
self->unk164 = 0;
|
||||
@@ -538,7 +538,7 @@ DEFINE_NERVE(TNerveBombHeiExplosion, TLiveActor)
|
||||
} else if (self->checkCurAnmEnd(0)) {
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
|
||||
@@ -478,7 +478,7 @@ void TBossManta::init(TLiveManager* manager)
|
||||
getManager()->initAdditionalCollision();
|
||||
}
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_CLIPPING);
|
||||
unk1A4 = 0;
|
||||
unk150 = 0.5f;
|
||||
|
||||
+12
-12
@@ -460,10 +460,10 @@ void TBEelTears::reset()
|
||||
mActorType = ACTOR_TYPE_BOSS_EEL;
|
||||
TSpineEnemy::reset();
|
||||
mSpine->initWith(&TNerveBEelTearsGenerate::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
offLiveFlag(LIVE_FLAG_UNK200);
|
||||
offLiveFlag(LIVE_FLAG_OUT_OF_AREA);
|
||||
offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
mGroundPlane = gpMap->getIllegalCheckData();
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
@@ -1415,7 +1415,7 @@ void TBossEel::init(TLiveManager* manager)
|
||||
mMActor = mMActorKeeper->getMActor(0);
|
||||
mSaveParams = &static_cast<TBossEelManager*>(manager)->mSaveParams;
|
||||
mInitialPosition.set(mPosition);
|
||||
onLiveFlag(LIVE_FLAG_UNK8 | LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW | LIVE_FLAG_NO_BIND);
|
||||
mGroundHeight = gpMap->checkGround(
|
||||
mPosition.x, mPosition.y + getHeadHeight(), mPosition.z, &mGroundPlane);
|
||||
mMActor->initBckNormalMotionBlend();
|
||||
@@ -1763,7 +1763,7 @@ void TBossEel::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (mMActor->checkCurBckFromIndex(4))
|
||||
mAwaCollision->perform(cue, graphics);
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200))
|
||||
if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA))
|
||||
return;
|
||||
|
||||
if (cue & CUE_MOVE) {
|
||||
@@ -1860,7 +1860,7 @@ void TBossEel::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
breathMtx[2][3]);
|
||||
|
||||
JPABaseEmitter* emitter;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000))
|
||||
if (checkLiveFlag(LIVE_FLAG_REVERSE_SPIN))
|
||||
emitter = gpMarioParticleManager->emit(
|
||||
BOSSEEL_JPA_MS_MEO_SPIN_SMOKE, &mBreathParticlePosition, 1,
|
||||
this);
|
||||
@@ -1871,7 +1871,7 @@ void TBossEel::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (emitter)
|
||||
emitter->setGlobalScale(mScaling);
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000))
|
||||
if (checkLiveFlag(LIVE_FLAG_REVERSE_SPIN))
|
||||
emitter = gpMarioParticleManager->emit(
|
||||
BOSSEEL_JPA_MS_MEO_SPIN_AWA, &mBreathParticlePosition, 1,
|
||||
this);
|
||||
@@ -2049,7 +2049,7 @@ void ExecSpinNerve_Sub(TBossEel* eel)
|
||||
eel->setTurnSpeed(spinSpeed);
|
||||
gpCameraShake->keepShake(static_cast<EnumCamShakeMode>(0x18), 1.0f);
|
||||
|
||||
if (eel->checkLiveFlag(TBossEel::LIVE_FLAG_UNK10000)) {
|
||||
if (eel->checkLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN)) {
|
||||
eel->mRotation.y -= spinSpeed;
|
||||
if (eel->mRotation.y <= 0.0f)
|
||||
SMSGetMSound()->startSoundActorWithInfo(
|
||||
@@ -2075,9 +2075,9 @@ DEFINE_NERVE(TNerveBossEelFirstSpin, TLiveActor)
|
||||
0, 0, nullptr, 0, 4);
|
||||
eel->setBckAnm(10);
|
||||
if (MsRandF() < 0.5f)
|
||||
eel->onLiveFlag(TBossEel::LIVE_FLAG_UNK10000);
|
||||
eel->onLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN);
|
||||
else
|
||||
eel->offLiveFlag(TBossEel::LIVE_FLAG_UNK10000);
|
||||
eel->offLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN);
|
||||
}
|
||||
|
||||
ExecSpinNerve_Sub(eel);
|
||||
@@ -2102,9 +2102,9 @@ DEFINE_NERVE(TNerveBossEelSecondSpin, TLiveActor)
|
||||
&eel->mPosition, nullptr, 2.0f,
|
||||
0, 0, nullptr, 0, 4);
|
||||
if (MsRandF() < 0.5f)
|
||||
eel->onLiveFlag(TBossEel::LIVE_FLAG_UNK10000);
|
||||
eel->onLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN);
|
||||
else
|
||||
eel->offLiveFlag(TBossEel::LIVE_FLAG_UNK10000);
|
||||
eel->offLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN);
|
||||
}
|
||||
|
||||
ExecSpinNerve_Sub(eel);
|
||||
@@ -2154,7 +2154,7 @@ DEFINE_NERVE_EXECUTE(TNerveBossEelAppear, TLiveActor)
|
||||
sp *= 0.98f;
|
||||
eel->setTurnSpeed(sp);
|
||||
|
||||
if (eel->checkLiveFlag(TBossEel::LIVE_FLAG_UNK10000))
|
||||
if (eel->checkLiveFlag(TBossEel::LIVE_FLAG_REVERSE_SPIN))
|
||||
eel->mRotation.y -= sp;
|
||||
else
|
||||
eel->mRotation.y += sp;
|
||||
|
||||
@@ -616,7 +616,7 @@ void TBossGesso::init(TLiveManager* param_1)
|
||||
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_CLIPPING);
|
||||
getMActor()->offMakeDL();
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
mScaledBodyRadius = 330.0f;
|
||||
initAnmSound();
|
||||
unk190.color.r = 0;
|
||||
@@ -1913,7 +1913,7 @@ DEFINE_NERVE(TNerveBGDie, TLiveActor)
|
||||
if (self->isReachedToGoal()) {
|
||||
self->mPositionDelta = self->mVelocity
|
||||
= JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
if (self->isReachedToGoal() && !SMSGetMarDirector()->isInnerDemoModeNow()) {
|
||||
|
||||
@@ -1785,7 +1785,7 @@ DEFINE_NERVE(TNerveBPDie, TLiveActor)
|
||||
}
|
||||
|
||||
if (actor->checkCurBckFromIndex(7) && spine->getTime() == 680)
|
||||
boss->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
boss->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
if (actor->curAnmEndsNext(ANM_TYPE_BCK, nullptr)
|
||||
&& actor->checkCurBckFromIndex(7)) {
|
||||
@@ -1804,7 +1804,7 @@ DEFINE_NERVE(TNerveBPTakeOff, TLiveActor)
|
||||
TBossPakkun* boss = static_cast<TBossPakkun*>(spine->getBody());
|
||||
MActor* actor = boss->getMActor();
|
||||
if (spine->getTime() == 0) {
|
||||
boss->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
boss->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
boss->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
boss->changeBck(13);
|
||||
}
|
||||
@@ -1867,7 +1867,7 @@ DEFINE_NERVE(TNerveBPTouchDown, TLiveActor)
|
||||
if (goal.y > boss->mPosition.y) {
|
||||
boss->mPosition.y = goal.y;
|
||||
boss->changeBck(18);
|
||||
boss->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
boss->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1937,7 +1937,7 @@ DEFINE_NERVE(TNerveBPFall, TLiveActor)
|
||||
TBossPakkun* boss = static_cast<TBossPakkun*>(spine->getBody());
|
||||
MActor* actor = boss->getMActor();
|
||||
if (spine->getTime() == 0) {
|
||||
boss->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
boss->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
boss->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
boss->changeBck(10);
|
||||
}
|
||||
|
||||
+13
-13
@@ -144,7 +144,7 @@ void TBubble::init(TLiveManager* manager)
|
||||
void TBubble::reset()
|
||||
{
|
||||
TWalkerEnemy::reset();
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
TMsRange<f32> scaleRange(50.0f, 150.0f);
|
||||
unk1CC = scaleRange.rand();
|
||||
@@ -208,7 +208,7 @@ void TBubble::kill()
|
||||
mSpine->reset();
|
||||
mSpine->setNext(&TNerveSmallEnemyDie::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK40);
|
||||
@@ -262,7 +262,7 @@ void TBubble::appendItem()
|
||||
item->appear();
|
||||
item->mPosition = mPosition;
|
||||
item->mVelocity.set(0.0f, 15.0f, 0.0f);
|
||||
item->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
item->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mHeldObject = item;
|
||||
unk198 = item;
|
||||
}
|
||||
@@ -328,7 +328,7 @@ DEFINE_NERVE_EXECUTE(TNerveBubbleLive, TLiveActor)
|
||||
J3DFrameCtrl* frameCtrl = bubble->mMActor->getFrameCtrl(0);
|
||||
TMsRange<f32> frameRange(0.0f, 20.0f);
|
||||
frameCtrl->setFrame(frameRange.rand());
|
||||
bubble->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
bubble->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
} else if (bubble->checkCurAnmEnd(0)) {
|
||||
bubble->offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
bubble->setBckAnm(10);
|
||||
@@ -520,7 +520,7 @@ void TBossTelesaKillSmallEnemy::checkHit()
|
||||
void TTelesaSlot::initMapObj()
|
||||
{
|
||||
TSlotDrum::initMapObj();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk14C = 160.0f;
|
||||
unk150 = mPosition.y;
|
||||
unk154 = 2.0f;
|
||||
@@ -849,7 +849,7 @@ void TBossTelesa::init(TLiveManager* manager)
|
||||
onHitFilter(HIT_CATEGORY_PLAYER | HIT_CATEGORY_MAP_OBJECT
|
||||
| HIT_CATEGORY_ENEMY);
|
||||
mSpine->initWith(&TNerveBossTelesaFallDemo::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
mMActor->setLightType(1);
|
||||
mMActor->markUnk40();
|
||||
@@ -1102,8 +1102,8 @@ void TBossTelesa::reset()
|
||||
{
|
||||
TSpineEnemy::reset();
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
|
||||
unk18C = 0;
|
||||
@@ -1852,12 +1852,12 @@ void TBossTelesa::generateSlotItem()
|
||||
mRedPeppers[i]->mVelocity.set(
|
||||
normalizedDir.x * fruitSpeedRange.rand(), -2.0f,
|
||||
normalizedDir.z * fruitSpeedRange.rand());
|
||||
mRedPeppers[i]->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
mRedPeppers[i]->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
if (i == 0) {
|
||||
mRedPeppers[i]->mVelocity.set(
|
||||
normalizedDir.x * fruitSpeedRange.rand() * 2.0f, -2.0f,
|
||||
normalizedDir.z * fruitSpeedRange.rand() * 2.0f);
|
||||
mRedPeppers[i]->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
mRedPeppers[i]->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
mRedPeppers[i]->mRotation.set(0.0f, 90.0f, 0.0f);
|
||||
mSpitObjs[mSpitObjNum] = mRedPeppers[i];
|
||||
@@ -1868,7 +1868,7 @@ void TBossTelesa::generateSlotItem()
|
||||
mFruits[i]->mVelocity.set(
|
||||
normalizedDir.x * fruitSpeedRange.rand(), -2.0f,
|
||||
normalizedDir.z * fruitSpeedRange.rand());
|
||||
mFruits[i]->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
mFruits[i]->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mSpitObjs[mSpitObjNum] = mFruits[i];
|
||||
}
|
||||
|
||||
@@ -1920,7 +1920,7 @@ void TBossTelesa::generateSlotItem()
|
||||
item->mPosition.set(rootMtx[0][3], rootMtx[1][3] - 250.0f,
|
||||
rootMtx[2][3]);
|
||||
item->mVelocity.set(velocity);
|
||||
item->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
item->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
item->mScaling.set(0.0f, 0.0f, 0.0f);
|
||||
item->killByTimer(0x3C0);
|
||||
|
||||
@@ -2173,7 +2173,7 @@ DEFINE_NERVE(TNerveBossTelesaDie, TLiveActor)
|
||||
"シャイン(ボス用)", "ボスシャインカメラ",
|
||||
boss->mPosition.x, boss->mPosition.y, boss->mPosition.z);
|
||||
boss->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
boss->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
boss->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
boss->offLiveFlag(TBossTelesa::LIVE_FLAG_UNK10000);
|
||||
boss->mHolder = nullptr;
|
||||
boss->offAllCollision();
|
||||
|
||||
@@ -582,8 +582,7 @@ void TBWBinder::bind(TLiveActor* actor)
|
||||
if (!bgData->isEnemyThrough()) {
|
||||
const TBGCheckData* bgData2;
|
||||
f32 groundY2 = gpMap->checkGround(
|
||||
nextPos.x,
|
||||
boss->mPosition.y + boss->mHeadHeight * boss->mBodyScale,
|
||||
nextPos.x, boss->mPosition.y + boss->getHeadHeight(),
|
||||
nextPos.z, &bgData2);
|
||||
if (groundY2 + 1.0f > groundY) {
|
||||
groundY = groundY2 + 1.0f;
|
||||
@@ -592,12 +591,12 @@ void TBWBinder::bind(TLiveActor* actor)
|
||||
}
|
||||
}
|
||||
|
||||
if (nextPos.y <= groundY && !bgData->checkFlag(0x10)
|
||||
if (nextPos.y <= groundY && !bgData->isIllegalData()
|
||||
&& !bgData->isEnemyThrough()) {
|
||||
nextPos.y = groundY;
|
||||
boss->mVelocity = JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f);
|
||||
boss->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
boss->offLiveFlag(0x8000);
|
||||
boss->offLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
} else {
|
||||
boss->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
@@ -1768,7 +1767,7 @@ DEFINE_NERVE(TNerveBWDie, TLiveActor)
|
||||
JGeometry::TVec3<f32> zero(0.0f, 0.0f, 0.0f);
|
||||
boss->mVelocity = zero;
|
||||
boss->mPositionDelta = zero;
|
||||
boss->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
boss->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
boss->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
gpMarioParticleManager->emit(0xB1, &boss->mPosition, 0, nullptr);
|
||||
}
|
||||
|
||||
@@ -363,7 +363,7 @@ void TCannon::reset()
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
unk214 = 1;
|
||||
mHeadHeight = 40.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk2AC = mRotation.y;
|
||||
|
||||
if (unk230 == 9) {
|
||||
|
||||
@@ -54,7 +54,7 @@ void TCoasterEnemy::init(TLiveManager* mgr)
|
||||
TSpineEnemy::goToShortestNextGraphNode();
|
||||
mSpine->initWith(&TNerveCoasterEnemyWander::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_DEAD);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mQuat.set(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ void TCoasterKiller::init(TLiveManager* mgr)
|
||||
mActorType = ACTOR_TYPE_COASTER_KILLER;
|
||||
unk150 = 17;
|
||||
onLiveFlag(LIVE_FLAG_FORCE_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
|
||||
GXColorS10& bodyColor = getBodyColor(); // @hack, gets stack right
|
||||
mBodyColor.r = 0;
|
||||
@@ -340,7 +340,7 @@ DEFINE_NERVE(TNerveCoasterKillerExplosion, TLiveActor)
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
if (self->checkCurAnmEnd(0)) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
|
||||
@@ -188,7 +188,7 @@ int TConductor::makeEnemyAppear(const JGeometry::TVec3<f32>& position,
|
||||
for (int i = 0; i < mgr->getObjNum(); ++i) {
|
||||
TSpineEnemy* actor = (TSpineEnemy*)mgr->getObj(i);
|
||||
if (!actor->checkLiveFlag(LIVE_FLAG_DEAD)
|
||||
&& actor->checkLiveFlag(LIVE_FLAG_UNK800)
|
||||
&& actor->checkLiveFlag(TSpineEnemy::LIVE_FLAG_RECYCLABLE)
|
||||
&& actor->checkLiveFlag(LIVE_FLAG_CLIPPED_OUT)) {
|
||||
actor->resetToPosition(position);
|
||||
++result;
|
||||
@@ -204,7 +204,7 @@ int TConductor::makeEnemyAppear(const JGeometry::TVec3<f32>& position,
|
||||
TSpineEnemy* actor = (TSpineEnemy*)mgr->getObj(i);
|
||||
if (!actor->checkLiveFlag(LIVE_FLAG_DEAD)
|
||||
&& !actor->checkLiveFlag(LIVE_FLAG_CLIPPED_OUT)
|
||||
&& actor->checkLiveFlag(LIVE_FLAG_UNK800)) {
|
||||
&& actor->checkLiveFlag(TSpineEnemy::LIVE_FLAG_RECYCLABLE)) {
|
||||
actor->resetToPosition(position);
|
||||
++result;
|
||||
if (result >= count)
|
||||
@@ -235,8 +235,8 @@ TConductor::makeOneEnemyAppear(const JGeometry::TVec3<f32>& position,
|
||||
if (param_3 == 0)
|
||||
return nullptr;
|
||||
|
||||
result = (TSpineEnemy*)mgr->getActorByFlag(LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_UNK800);
|
||||
result = (TSpineEnemy*)mgr->getActorByFlag(
|
||||
LIVE_FLAG_CLIPPED_OUT | TSpineEnemy::LIVE_FLAG_RECYCLABLE);
|
||||
if (result) {
|
||||
result->resetToPosition(position);
|
||||
return result;
|
||||
|
||||
@@ -57,7 +57,7 @@ void TEffectEnemy::forceKill()
|
||||
if (!(mGroundPlane->isIllegalData()
|
||||
|| (!mGroundPlane->isDeathPlane() && !mGroundPlane->isPool()
|
||||
&& !mGroundPlane->isWaterSurface())
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
|| !gpMap->isInArea(mPosition.x, mPosition.z)) {
|
||||
kill();
|
||||
}
|
||||
@@ -109,7 +109,7 @@ void TEffectEnemy::setDeadAnm()
|
||||
&mPosition, 0, nullptr);
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_BS_WANWAN_TO_COOL, &mPosition, 0,
|
||||
nullptr, 0, 4);
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
|
||||
void TEffectEnemy::emitEffect()
|
||||
|
||||
@@ -236,8 +236,8 @@ void TEffectModel::reset()
|
||||
{
|
||||
TSpineEnemy::reset();
|
||||
mRotation.y = TMsRange<f32>(0.0f, 360.0f).rand();
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
TEggGenerator::TEggGenerator(const char* name)
|
||||
: TSpineEnemy(name)
|
||||
{
|
||||
mLiveFlag |= LIVE_FLAG_UNK10;
|
||||
mLiveFlag |= LIVE_FLAG_UNK8;
|
||||
mLiveFlag |= LIVE_FLAG_NO_BIND;
|
||||
mLiveFlag |= LIVE_FLAG_NO_SHADOW;
|
||||
}
|
||||
|
||||
void TEggGenerator::init(TLiveManager* manager)
|
||||
|
||||
@@ -414,7 +414,7 @@ void TElecNokonoko::setDeadAnm() { setBckAnm(1); }
|
||||
void TElecNokonoko::setMeltAnm()
|
||||
{
|
||||
setBckAnm(2);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
JGeometry::TVec3<f32> zero(0.0f, 0.0f, 0.0f);
|
||||
unk18C = 3;
|
||||
@@ -439,7 +439,7 @@ void TElecNokonoko::genRandomItem()
|
||||
ACTOR_TYPE_COIN, true);
|
||||
if (item != nullptr) {
|
||||
item->mVelocity.set(0.0f, 20.0f, 0.0f);
|
||||
item->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
item->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ void TEMario::init(TLiveManager* manager)
|
||||
70.0f, 45.0f, 60.0f, 40.0f);
|
||||
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TEMario::checkCollision()
|
||||
|
||||
+9
-9
@@ -55,10 +55,10 @@ void TSpineEnemy::reset()
|
||||
unk124->reset();
|
||||
goToShortestNextGraphNode();
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
onLiveFlag(LIVE_FLAG_UNK800);
|
||||
onLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
mSpine->reset();
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
}
|
||||
@@ -173,13 +173,13 @@ TSpineEnemyParams* TSpineEnemy::getSaveParam() const
|
||||
void TSpineEnemy::resetToPosition(const JGeometry::TVec3<f32>& position)
|
||||
{
|
||||
mPosition = position;
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
reset();
|
||||
resetHitPoints();
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
mVelocity = JGeometry::TVec3<f32>(0.0f, 5.0f, 0.0f);
|
||||
onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(LIVE_FLAG_JUMPING);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
control();
|
||||
}
|
||||
@@ -190,7 +190,7 @@ void TSpineEnemy::resetSRTV(const JGeometry::TVec3<f32>& position,
|
||||
const JGeometry::TVec3<f32>& velocity)
|
||||
{
|
||||
mPosition = position;
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
reset();
|
||||
mRotation = rotation;
|
||||
@@ -198,7 +198,7 @@ void TSpineEnemy::resetSRTV(const JGeometry::TVec3<f32>& position,
|
||||
resetHitPoints();
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
mVelocity = velocity;
|
||||
onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(LIVE_FLAG_JUMPING);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
control();
|
||||
}
|
||||
@@ -602,7 +602,7 @@ void TSpineEnemy::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if ((cue & CUE_CALC_ANIM)
|
||||
&& !checkLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT)
|
||||
&& TEnemyManager::mIsCopyAnmMtx && mgr->getUnk4C() >= 0) {
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK200))
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_OUT_OF_AREA))
|
||||
return;
|
||||
|
||||
if (mgr->copyAnmMtx(this))
|
||||
@@ -611,7 +611,7 @@ void TSpineEnemy::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
} else {
|
||||
if ((cue & CUE_CALC_ANIM)
|
||||
&& !checkLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT)
|
||||
&& checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK200)) {
|
||||
&& checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_OUT_OF_AREA)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <Enemy/EnemyAttachment.hpp>
|
||||
#include <Enemy/SmallEnemy.hpp>
|
||||
#include <Enemy/Conductor.hpp>
|
||||
#include <Strategic/ObjModel.hpp>
|
||||
#include <Strategic/SharedParts.hpp>
|
||||
@@ -52,7 +53,7 @@ void TEnemyAttachment::forceKill()
|
||||
|
||||
if (unk160->checkLiveFlag(LIVE_FLAG_HIDDEN)) {
|
||||
unk160->kill();
|
||||
unk160->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
unk160->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include <NPC/NpcBase.hpp>
|
||||
#include <Enemy/EnemyMario.hpp>
|
||||
#include <Enemy/Conductor.hpp>
|
||||
#include <Enemy/Emario.hpp>
|
||||
@@ -661,7 +662,8 @@ bool TEnemyMario::tryTake()
|
||||
|| actorType == ACTOR_TYPE_ROCKET_NOZZLE_ITEM
|
||||
|| actorType == ACTOR_TYPE_EGG_YOSHI) {
|
||||
if (actorType == ACTOR_TYPE_NPC_PEACH) {
|
||||
((TLiveActor*)actor)->onLiveFlag(LIVE_FLAG_UNK100000);
|
||||
((TLiveActor*)actor)
|
||||
->onLiveFlag(TBaseNPC::LIVE_FLAG_CAN_BE_TAKEN);
|
||||
onEMFlag(EM_FLAG_ENFORCE_TAKE);
|
||||
}
|
||||
unk384 = actor;
|
||||
@@ -1478,7 +1480,8 @@ void TEnemyMario::hitWater(THitActor* sender)
|
||||
|
||||
if (mStatus == MARIO_STATUS_RUN && canSleep()) {
|
||||
if (mHeldObject != nullptr) {
|
||||
((TLiveActor*)mHeldObject)->offLiveFlag(LIVE_FLAG_UNK100000);
|
||||
((TLiveActor*)mHeldObject)
|
||||
->offLiveFlag(TBaseNPC::LIVE_FLAG_CAN_BE_TAKEN);
|
||||
dropObject();
|
||||
}
|
||||
changeEMDoing(EM_DOING_PRE_DOWN_ANIMATION);
|
||||
|
||||
@@ -163,12 +163,13 @@ void TEnemyManager::setSharedFlags()
|
||||
|
||||
for (int i = 0; i < getObjNum(); ++i) {
|
||||
TSpineEnemy* enemy = getObj(i);
|
||||
enemy->offLiveFlag(LIVE_FLAG_UNK4000);
|
||||
enemy->offLiveFlag(TSpineEnemy::LIVE_FLAG_USE_SHARED_ANIMATION);
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT)) {
|
||||
int idx = enemy->getMActor()->getCurAnmIdx(ANM_TYPE_BCK);
|
||||
for (int i = 0; i < unk44; ++i) {
|
||||
if (idx < 0 || idx == unk40[i].getIdx()) {
|
||||
enemy->onLiveFlag(LIVE_FLAG_UNK4000);
|
||||
enemy->onLiveFlag(
|
||||
TSpineEnemy::LIVE_FLAG_USE_SHARED_ANIMATION);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -221,7 +222,7 @@ void TEnemyManager::copyFromShared()
|
||||
|
||||
for (int i = 0; i < r29; ++i) {
|
||||
TSpineEnemy* enemy = getObj(i);
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_UNK4000)
|
||||
if (!enemy->checkLiveFlag(TSpineEnemy::LIVE_FLAG_USE_SHARED_ANIMATION)
|
||||
|| enemy->checkLiveFlag(LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT))
|
||||
continue;
|
||||
|
||||
@@ -310,7 +311,8 @@ void TEnemyManager::performShared(u32 cue, JDrama::TGraphics* param_2)
|
||||
if (cue & CUE_CALC_ANIM) {
|
||||
enemy->updateSquareToMario();
|
||||
enemy->calcRootMatrix();
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_UNK4000)) {
|
||||
if (!enemy->checkLiveFlag(
|
||||
TSpineEnemy::LIVE_FLAG_USE_SHARED_ANIMATION)) {
|
||||
enemy->getMActor()->frameUpdate();
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_HIDDEN
|
||||
| LIVE_FLAG_CLIPPED_OUT)) {
|
||||
@@ -327,7 +329,8 @@ void TEnemyManager::performShared(u32 cue, JDrama::TGraphics* param_2)
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_HIDDEN
|
||||
| LIVE_FLAG_CLIPPED_OUT)) {
|
||||
if ((cue & CUE_CALC_VIEW)
|
||||
&& !enemy->checkLiveFlag(LIVE_FLAG_UNK4000))
|
||||
&& !enemy->checkLiveFlag(
|
||||
TSpineEnemy::LIVE_FLAG_USE_SHARED_ANIMATION))
|
||||
enemy->getMActor()->viewCalc();
|
||||
if (cue & CUE_ENTRY) {
|
||||
enemy->getMActor()->setLightData(enemy->getGroundPlane(),
|
||||
@@ -425,7 +428,7 @@ TSpineEnemy* TEnemyManager::getFarOutEnemy()
|
||||
}
|
||||
|
||||
if (!enemy->checkLiveFlag(LIVE_FLAG_CLIPPED_OUT)
|
||||
|| !enemy->checkLiveFlag(LIVE_FLAG_UNK800))
|
||||
|| !enemy->checkLiveFlag(TSpineEnemy::LIVE_FLAG_RECYCLABLE))
|
||||
continue;
|
||||
|
||||
if (!best || dist > enemy->getDistToMarioSquared()) {
|
||||
|
||||
@@ -1696,7 +1696,7 @@ void TFireWanwan::bindPoint(JGeometry::TVec3<f32>* out_offset,
|
||||
|
||||
const TBGCheckData* local_30;
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK1000))
|
||||
if (checkLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS))
|
||||
mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
actualPoint.x, actualPoint.y + mHeadHeight, actualPoint.z,
|
||||
&local_30);
|
||||
@@ -1711,7 +1711,7 @@ void TFireWanwan::bindPoint(JGeometry::TVec3<f32>* out_offset,
|
||||
if (!local_30->isEnemyThrough()) {
|
||||
f32 dVar9;
|
||||
const TBGCheckData* local_34;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK1000))
|
||||
if (checkLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS))
|
||||
dVar9 = gpMap->checkGroundIgnoreWaterSurface(
|
||||
actualPoint.x, actualPoint.y + mHeadHeight, actualPoint.z,
|
||||
&local_34);
|
||||
@@ -2025,7 +2025,7 @@ DEFINE_NERVE(TNerveFireWanwanDie, TLiveActor)
|
||||
self->changeBodyToSilver(40);
|
||||
|
||||
self->generateEffectColumWater();
|
||||
self->onLiveFlag(LIVE_FLAG_UNK1000);
|
||||
self->onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
self->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
self->setHitPoints(0);
|
||||
self->mDamageHeight -= 250.0f;
|
||||
|
||||
+16
-16
@@ -49,7 +49,7 @@ TFruitsBoat::TFruitsBoat(const char* name)
|
||||
, unk170(0.0f)
|
||||
, unk174(0.0f)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
int TFruitsBoat::setBckTrack(const char* name)
|
||||
@@ -234,11 +234,11 @@ void TFruitsBoat::init(TLiveManager* manager)
|
||||
mSpine->initWith(&TNerveFruitsBoatGraphWander::theNerve());
|
||||
|
||||
if (!unk124->unk0)
|
||||
onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED);
|
||||
else if (unk124->getCurrent().checkFlag(0x80))
|
||||
onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED);
|
||||
else
|
||||
offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
offLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED);
|
||||
|
||||
mMarchSpeed = ((TFruitsBoatParams*)getSaveParam())->mSLMoveSpeed.get();
|
||||
mTurnSpeed = ((TFruitsBoatParams*)getSaveParam())->mSLRotSpeed.get();
|
||||
@@ -322,7 +322,7 @@ void TFruitsBoat::moveObject()
|
||||
mRotation.x += step;
|
||||
|
||||
const TBGCheckData* plane = SMS_GetMarioGrPlane();
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10000)) {
|
||||
if (!checkLiveFlag(TFruitsBoat::LIVE_FLAG_MARIO_ON_BOARD)) {
|
||||
if (plane && plane->mActor == this && SMS_IsMarioTouchGround4cm()) {
|
||||
JGeometry::TVec3<f32> toMario = *gpMarioPos;
|
||||
toMario.sub(mPosition);
|
||||
@@ -337,19 +337,19 @@ void TFruitsBoat::moveObject()
|
||||
unk164.normalize();
|
||||
unk174 += 0.0003f * dist;
|
||||
}
|
||||
onLiveFlag(LIVE_FLAG_UNK10000);
|
||||
offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(TFruitsBoat::LIVE_FLAG_MARIO_ON_BOARD);
|
||||
offLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED);
|
||||
if (plane->isBounceOnLanding()) {
|
||||
setJumpReaction();
|
||||
offLiveFlag(LIVE_FLAG_UNK10000);
|
||||
offLiveFlag(TFruitsBoat::LIVE_FLAG_MARIO_ON_BOARD);
|
||||
}
|
||||
}
|
||||
} else if (!plane || plane->mActor != this
|
||||
|| !SMS_IsMarioTouchGround4cm()) {
|
||||
offLiveFlag(LIVE_FLAG_UNK10000);
|
||||
offLiveFlag(TFruitsBoat::LIVE_FLAG_MARIO_ON_BOARD);
|
||||
}
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000)) {
|
||||
if (checkLiveFlag(TFruitsBoat::LIVE_FLAG_MARIO_ON_BOARD)) {
|
||||
JGeometry::TVec3<f32> toMario = *gpMarioPos;
|
||||
toMario.sub(mPosition);
|
||||
toMario.y = 0.0f;
|
||||
@@ -388,10 +388,10 @@ void TFruitsBoat::moveObject()
|
||||
|
||||
void TFruitsBoat::requestShadow()
|
||||
{
|
||||
if (mLiveFlag & (LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_UNK8))
|
||||
if (mLiveFlag & (LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_NO_SHADOW))
|
||||
return;
|
||||
|
||||
if (!(mLiveFlag & (LIVE_FLAG_UNK200 | LIVE_FLAG_CLIPPED_OUT))
|
||||
if (!(mLiveFlag & (LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_CLIPPED_OUT))
|
||||
|| (mLiveFlag & LIVE_FLAG_FORCE_SHADOW)) {
|
||||
TCircleShadowRequest shadow;
|
||||
shadow.mPosition = mPosition;
|
||||
@@ -406,7 +406,7 @@ void TFruitsBoat::requestShadow()
|
||||
gpBindShadowManager->request(shadow, getActorType());
|
||||
}
|
||||
|
||||
if (!(mLiveFlag & (LIVE_FLAG_UNK200 | LIVE_FLAG_CLIPPED_OUT))
|
||||
if (!(mLiveFlag & (LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_CLIPPED_OUT))
|
||||
&& !isHitCategory(HIT_CATEGORY_MAP_OBJECT)) {
|
||||
gpQuestionManager->request(mPosition, mScaledBodyRadius);
|
||||
}
|
||||
@@ -487,20 +487,20 @@ DEFINE_NERVE(TNerveFruitsBoatGraphWander, TLiveActor)
|
||||
if (self->isReachedToGoal()) {
|
||||
TGraphNode& node = self->unk124->getCurrent();
|
||||
if (node.checkFlag(0x100))
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
self->onLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED);
|
||||
if (node.checkFlag(0x400))
|
||||
self->unk150 ^= 1;
|
||||
|
||||
self->goToDirectedNextGraphNode(polarXZ(self->mRotation.y, 1.0f));
|
||||
|
||||
if (!self->checkLiveFlag(LIVE_FLAG_UNK8000))
|
||||
if (!self->checkLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED))
|
||||
self->rowToCurPathNode(self->mMarchSpeed);
|
||||
|
||||
spine->pushAfterCurrent(&TNerveFruitsBoatGraphWander::theNerve());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (self->checkLiveFlag(LIVE_FLAG_UNK8000))
|
||||
if (self->checkLiveFlag(TFruitsBoat::LIVE_FLAG_ROUTE_PAUSED))
|
||||
return false;
|
||||
|
||||
self->rowToCurPathNode(self->mMarchSpeed);
|
||||
|
||||
@@ -119,7 +119,7 @@ TGateKeeperBase::TGateKeeperBase(const char* name)
|
||||
mStampEnabled = TRUE;
|
||||
mVulnerable = 0;
|
||||
mStampScale.set(1.0f, 1.0f, 1.0f);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TGateKeeperBase::kill() { onLiveFlag(LIVE_FLAG_DEAD); }
|
||||
@@ -470,8 +470,8 @@ void TBiancoGateKeeper::launchNamekuri()
|
||||
enemy->resetHitPoints();
|
||||
enemy->mVelocity = vel;
|
||||
enemy->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
enemy->offLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK8);
|
||||
enemy->onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
enemy->offLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_NO_SHADOW);
|
||||
enemy->onLiveFlag(LIVE_FLAG_JUMPING);
|
||||
enemy->offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
enemy->mSpine->pushNerve(&TNerveNameKuriDiffuse::theNerve());
|
||||
}
|
||||
|
||||
+6
-6
@@ -276,7 +276,7 @@ void TGesso::reset()
|
||||
unk158 = 0.0f;
|
||||
}
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK1000);
|
||||
offLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
mNeedsLanding = false;
|
||||
mIsRightSideUp = true;
|
||||
unk1A4 = mPosition.y;
|
||||
@@ -719,7 +719,7 @@ void TGesso::rollCheck()
|
||||
mState = STATE_ROLLING;
|
||||
mSpine->pushNerve(&TNerveGessoRolling::theNerve());
|
||||
if (mIsRightSideUp)
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
mAttackCooldown = 0;
|
||||
}
|
||||
}
|
||||
@@ -741,7 +741,7 @@ void TGesso::rollEnd()
|
||||
mState = STATE_BEAM_CHILLING;
|
||||
mIsRightSideUp = !mIsRightSideUp;
|
||||
if (mIsRightSideUp)
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
void TGesso::modifyRotate()
|
||||
@@ -754,7 +754,7 @@ void TGesso::fallEnd()
|
||||
{
|
||||
mState = STATE_WANDERING;
|
||||
unk158 = 1.0f;
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
mRotation.set(0.0f, 0.0f, 0.0f);
|
||||
mIsRightSideUp = true;
|
||||
}
|
||||
@@ -1107,7 +1107,7 @@ DEFINE_NERVE(TNerveGessoFall, TLiveActor)
|
||||
|
||||
self->mState = TGesso::STATE_FALLING;
|
||||
}
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
} else if (self->isWandering()) {
|
||||
if (self->checkCurAnmEnd(0)) {
|
||||
if (self->isBckAnm(6)) {
|
||||
@@ -1158,7 +1158,7 @@ DEFINE_NERVE(TNerveGessoFall, TLiveActor)
|
||||
self->setBckAnm(7);
|
||||
}
|
||||
} else if (self->isBckAnm(7)) {
|
||||
self->offLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->modifyRotate();
|
||||
|
||||
if (self->checkCurAnmEnd(0)) {
|
||||
|
||||
@@ -703,7 +703,7 @@ void THamuKuri::bind()
|
||||
nextPos += mVelocity;
|
||||
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK1000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS)) {
|
||||
mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
nextPos.x, nextPos.y + mHeadHeight, nextPos.z,
|
||||
&mGroundPlane);
|
||||
@@ -947,7 +947,7 @@ void THamuKuri::makeCapFly(TMapObjBase* param_1)
|
||||
} else {
|
||||
param_1->mPosition = SMS_GetMarioPos();
|
||||
param_1->mVelocity.set(0.0f, 10.0f, 0.0f);
|
||||
param_1->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
param_1->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1061,7 +1061,7 @@ void THamuKuri::setDeadAnm()
|
||||
releaseCap();
|
||||
|
||||
if (unk184) {
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
gpMarioParticleManager->emit(PARTICLE_MS_ENM_DISAP_A, &mPosition, 0,
|
||||
nullptr);
|
||||
} else {
|
||||
@@ -1453,7 +1453,7 @@ void THaneHamuKuri::walkBehavior(int param_1, f32 param_2)
|
||||
|
||||
void THaneHamuKuri::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
JGeometry::TVec3<f32> local_18 = mPosition;
|
||||
@@ -1658,7 +1658,7 @@ void THaneHamuKuri2::reset()
|
||||
|
||||
resetFlyParam();
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk230 = mPosition.y;
|
||||
mSpine->initWith(&TNerveHaneHamuKuriMoveOnGraph::theNerve());
|
||||
}
|
||||
@@ -1915,7 +1915,7 @@ void TDangoHamuKuri::forceKill()
|
||||
mSpine->reset();
|
||||
mSpine->setNext(&TNerveSmallEnemyDie::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2061,7 +2061,7 @@ void TBossDangoHamuKuri::genEventCoin()
|
||||
if (coin) {
|
||||
coin->mPosition = mPosition;
|
||||
coin->mVelocity.set(0.0f, 20.0f, 0.0f);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk18C -= 1;
|
||||
}
|
||||
}
|
||||
@@ -2523,8 +2523,8 @@ DEFINE_NERVE(TNerveHamuKuriWallDie, TLiveActor)
|
||||
|
||||
if (spine->getTime() > pTVar7 + ctrl->getEnd()) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
|
||||
+14
-14
@@ -162,7 +162,7 @@ void TSamboFlowerCoinUnit::checkGenCoin()
|
||||
coin->mVelocity.set(offset.x * prm->mSLCoinVelocityXZ.get(),
|
||||
8.0f * rate + prm->mSLCoinVelocityY.get(),
|
||||
offset.z * prm->mSLCoinVelocityXZ.get());
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
spawned++;
|
||||
}
|
||||
}
|
||||
@@ -387,7 +387,7 @@ void TSamboFlower::load(JSUMemoryInputStream& param_1)
|
||||
param_1 >> mCoinUnitIndex;
|
||||
unk160 = true;
|
||||
reset();
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
}
|
||||
|
||||
void TSamboFlower::loadAfter()
|
||||
@@ -454,9 +454,9 @@ void TSamboFlower::reset()
|
||||
TSpineEnemy::reset();
|
||||
mMActor->setBck("flower_wait");
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TSamboFlower::moveObject()
|
||||
@@ -489,7 +489,7 @@ void TSamboFlower::moveObject()
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (!checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
mPosition.y = gpMap->checkGround(mPosition.x, mPosition.y + 100.0f,
|
||||
mPosition.z, &mGroundPlane);
|
||||
}
|
||||
@@ -683,7 +683,7 @@ void THanaSambo::moveObject()
|
||||
void THanaSambo::drawObject(JDrama::TGraphics* param_1)
|
||||
{
|
||||
TLiveActor::drawObject(param_1);
|
||||
if (!checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_UNK8))
|
||||
if (!checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_NO_SHADOW))
|
||||
unk1AC->entryDrawShadow();
|
||||
}
|
||||
|
||||
@@ -729,7 +729,7 @@ void THanaSambo::setDeadAnm()
|
||||
|
||||
unk194->kill();
|
||||
unk1B0 = 0;
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
void THanaSambo::setAttackAnm()
|
||||
@@ -803,7 +803,7 @@ void THanaSambo::initFlower()
|
||||
unk1A8->reset();
|
||||
}
|
||||
|
||||
unk1A8->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
unk1A8->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk1A8->offLiveFlag(LIVE_FLAG_DEAD);
|
||||
unk1A8->mPosition = mPosition;
|
||||
unk1A8->mPosition.y = mGroundHeight;
|
||||
@@ -961,7 +961,7 @@ DEFINE_NERVE(TNerveHanaSamboDie, TLiveActor)
|
||||
}
|
||||
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
@@ -1127,7 +1127,7 @@ void TSamboHead::reset()
|
||||
unk1B0 = 0;
|
||||
unk19C = 0;
|
||||
unk1AC = 0.0f;
|
||||
offLiveFlag(LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
void TSamboHead::kill()
|
||||
@@ -1210,7 +1210,7 @@ void TSamboHead::initFlower()
|
||||
}
|
||||
|
||||
unk198->offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
unk198->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
unk198->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk198->offLiveFlag(LIVE_FLAG_DEAD);
|
||||
unk198->mPosition.y = mGroundHeight;
|
||||
unk198->mPosition = mPosition;
|
||||
@@ -1297,7 +1297,7 @@ void TSamboHead::genEventCoin()
|
||||
coin->mVelocity.set(offset.x * 4.0f,
|
||||
TMsRange<f32>(8.0f, 16.0f).rand(),
|
||||
offset.z * 4.0f);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1528,8 +1528,8 @@ DEFINE_NERVE(TNerveSamboHeadHitWall, TLiveActor)
|
||||
->getFrameCtrl(ANM_TYPE_BCK)
|
||||
->getEnd()) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
|
||||
@@ -539,7 +539,7 @@ void THinokuri2::init(TLiveManager* param_1)
|
||||
void THinokuri2::reset()
|
||||
{
|
||||
TSpineEnemy::reset();
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
resetPolInterval();
|
||||
mHitPoints = calcHitPoints();
|
||||
validateCollisionAll();
|
||||
|
||||
+12
-12
@@ -145,7 +145,7 @@ void TRollEnemy::walkBehavior(int param_1, f32 param_2)
|
||||
if (mPosition.y < mGroundHeight + 30.0f)
|
||||
rollSE();
|
||||
if (unk128 > 300) {
|
||||
onLiveFlag(LIVE_FLAG_UNK10000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
kill();
|
||||
}
|
||||
}
|
||||
@@ -400,7 +400,7 @@ void TIgaiga::reset()
|
||||
{
|
||||
TRollEnemy::reset();
|
||||
initialGraphNode();
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
unk1B4 = 0;
|
||||
unk1B8 = TMsRange<s32>(50, 100).rand() * 120;
|
||||
@@ -631,7 +631,7 @@ void TIgaiga::shoot(JGeometry::TVec3<f32>& param_1)
|
||||
{
|
||||
mSpine->setNext(&TNerveIgaigaShootFromCannon::theNerve());
|
||||
unk1D8 = param_1;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk1A8 = true;
|
||||
}
|
||||
|
||||
@@ -652,7 +652,7 @@ DEFINE_NERVE(TNerveIgaigaWaterHit, TLiveActor)
|
||||
|
||||
if (self->unk1E4 >= self->unk1A4->mSLExpandMax.get()) {
|
||||
if (self->unk1E8 > 20) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
spine->pushAfterCurrent(&TNerveSmallEnemyDie::theNerve());
|
||||
return TRUE;
|
||||
}
|
||||
@@ -887,7 +887,7 @@ void TGorogoro::calcRootMatrix()
|
||||
gpCurRollEnemy = this;
|
||||
if (mSpine->getCurrentNerve() == &TNerveGorogoroDie::theNerve()) {
|
||||
TSpineEnemy::calcRootMatrix();
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000)) {
|
||||
if (checkLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH)) {
|
||||
unk1B4.ref(0, 3) = mPosition.x;
|
||||
unk1B4.ref(2, 3) = mPosition.z;
|
||||
}
|
||||
@@ -911,7 +911,7 @@ void TGorogoro::reset()
|
||||
{
|
||||
unk130 = 1;
|
||||
TRollEnemy::reset();
|
||||
offLiveFlag(LIVE_FLAG_UNK1000);
|
||||
offLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
mTevKColor.a = 0xFF;
|
||||
unk1AC = -10.0f;
|
||||
unk1B0 = 1.0f;
|
||||
@@ -930,7 +930,7 @@ void TGorogoro::kill()
|
||||
mSpine->reset();
|
||||
mSpine->setNext(&TNerveGorogoroDie::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
void TGorogoro::forceKill()
|
||||
@@ -950,7 +950,7 @@ void TGorogoro::forceKill()
|
||||
mSpine->reset();
|
||||
mSpine->setNext(&TNerveGorogoroDie::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
onLiveFlag(LIVE_FLAG_MELT_ON_DEATH);
|
||||
}
|
||||
|
||||
@@ -1034,8 +1034,8 @@ void TGorogoro::walkBehavior(int param_1, f32 param_2)
|
||||
if (mSpine->getCurrentNerve() != &TNerveGorogoroDie::theNerve()
|
||||
&& mPosition.y < mGroundHeight + 10.0f
|
||||
&& getGroundPlane()->isWaterSurface()) {
|
||||
onLiveFlag(LIVE_FLAG_UNK10000);
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
kill();
|
||||
}
|
||||
}
|
||||
@@ -1059,7 +1059,7 @@ void TGorogoro::setMeltAnm()
|
||||
{
|
||||
setBckAnm(1);
|
||||
unk130 = 0;
|
||||
onLiveFlag(LIVE_FLAG_UNK1000);
|
||||
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
|
||||
MTXCopy(getMActor()->getModel()->getBaseTRMtx(), unk1B4);
|
||||
unk1B4.ref(1, 3) = mGroundHeight;
|
||||
@@ -1205,7 +1205,7 @@ DEFINE_NERVE(TNerveGorogoroDie, TLiveActor)
|
||||
} else if (self->checkCurAnmEnd(0) || spine->getTime() > 360) {
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
|
||||
@@ -247,7 +247,7 @@ DEFINE_NERVE(TNerveFlyEnemyChaseFly, TLiveActor)
|
||||
|
||||
if ((self->isHoming() && self->isReachedToGoalXZ())
|
||||
|| (self->getFlyMode() == TFlyEnemy::FLY_MODE_DIVE
|
||||
&& self->mPosition.y < 100.0f + self->mGroundHeight))
|
||||
&& self->mPosition.y < 100.0f + self->getGroundHeight()))
|
||||
self->calcChaseParam();
|
||||
|
||||
switch (self->getFlyMode()) {
|
||||
@@ -261,7 +261,7 @@ DEFINE_NERVE(TNerveFlyEnemyChaseFly, TLiveActor)
|
||||
}
|
||||
|
||||
if (self->getFlyMode() != TFlyEnemy::FLY_MODE_HOMING
|
||||
&& self->mPosition.y > 200.0f + self->mGroundHeight) {
|
||||
&& self->mPosition.y > 200.0f + self->getGroundHeight()) {
|
||||
f32 marchSpeed = self->mMarchSpeed;
|
||||
JGeometry::TVec3<f32> dir(self->mMarchSpeed,
|
||||
-40.0f * self->getGravityY(), marchSpeed);
|
||||
@@ -360,7 +360,7 @@ void TKiller::init(TLiveManager* manager)
|
||||
mKillerParams = (TKillerSaveLoadParams*)getSaveParam();
|
||||
mSpine->initWith(&TNerveFlyEnemyNormalFly::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_FORCE_SHADOW);
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
onHitFilter(HIT_CATEGORY_MAP_OBJECT);
|
||||
|
||||
J3DModel* model = mMActor->getModel();
|
||||
@@ -445,7 +445,7 @@ void TKiller::genEventCoin()
|
||||
coin->mPosition.y = mPosition.y;
|
||||
MsVECNormalize(&dir, &dir);
|
||||
coin->mVelocity.set(3.0f * dir.x, 20.0f, 3.0f * dir.z);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -775,8 +775,8 @@ DEFINE_NERVE(TNerveKillerExplosion, TLiveActor)
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
if (self->checkCurAnmEnd(ANM_TYPE_BCK)) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10000);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
spine->reset();
|
||||
|
||||
@@ -234,8 +234,8 @@ void TCommonLauncher::init(TLiveManager* param_1)
|
||||
->getChildren()
|
||||
.push_back(this);
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
ResTIMG* res = (ResTIMG*)JKRFileLoader::getGlbResource(
|
||||
"/scene/map/pollution/H_ma_rak.bti");
|
||||
|
||||
@@ -41,7 +41,7 @@ TLimitKoopaJr::TLimitKoopaJr(const char* param_1)
|
||||
: TSpineEnemy(param_1)
|
||||
, mBathtub(nullptr)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_CLIPPING);
|
||||
}
|
||||
|
||||
|
||||
@@ -405,7 +405,7 @@ DEFINE_NERVE(TNerveMameGessoGraphJumpWander, TLiveActor)
|
||||
self->unk1EC = 1;
|
||||
|
||||
if (self->checkLiveFlag(LIVE_FLAG_CLIPPED_OUT)) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
spine->setNext(&TNerveSmallEnemyDie::theNerve());
|
||||
}
|
||||
|
||||
|
||||
@@ -463,7 +463,7 @@ void TNameKuri::behaveToWater(THitActor* param_1)
|
||||
if (!isAirborne())
|
||||
onLiveFlag(LIVE_FLAG_MELT_ON_DEATH);
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -510,7 +510,7 @@ void TNameKuri::setDeadAnm()
|
||||
}
|
||||
|
||||
setVelocity(JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f));
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TNameKuri::setAfterDeadEffect()
|
||||
@@ -544,7 +544,7 @@ void TNameKuri::setMeltAnm()
|
||||
}
|
||||
|
||||
setVelocity(JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f));
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_EN_NAMEKURI_DOWN_WT, &mPosition, 0,
|
||||
nullptr, 0, 4);
|
||||
@@ -575,7 +575,7 @@ void TNameKuri::reset()
|
||||
unk1C4 = nameKuriTevColorData[((TNameKuriManager*)mManager)
|
||||
->getNextColorIdx()];
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TNameKuri::attackToMario()
|
||||
@@ -583,7 +583,7 @@ void TNameKuri::attackToMario()
|
||||
SMS_SendMessageToMario(this, HIT_MESSAGE_ATTACK);
|
||||
if (mSpine->getCurrentNerve() == &TNerveNameKuriJumpAttack::theNerve()) {
|
||||
setVelocity(JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f));
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
kill();
|
||||
}
|
||||
}
|
||||
@@ -729,7 +729,7 @@ DEFINE_NERVE(TNerveNameKuriJumpAttack, TLiveActor)
|
||||
} else if (self->isBckAnm(2)) {
|
||||
if (self->checkCurAnmEnd(0)) {
|
||||
self->switchNextGoalPathNode();
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
spine->pushAfterCurrent(&TNerveSmallEnemyDie::theNerve());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ bool TPakkun::isHideEnd() const { return false; }
|
||||
|
||||
void TPakkun::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK200)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_OUT_OF_AREA)) {
|
||||
unk194->perform(cue, graphics);
|
||||
if (!checkLiveFlag(LIVE_FLAG_DEAD)) {
|
||||
if (cue & CUE_MOVE) {
|
||||
@@ -661,7 +661,7 @@ void TPakkunSeed::forceKill()
|
||||
kill();
|
||||
if (!unk16C->unk199 && unk160->checkLiveFlag(LIVE_FLAG_HIDDEN)) {
|
||||
unk160->kill();
|
||||
unk160->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
unk160->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -686,7 +686,7 @@ void TStayPakkun::reset()
|
||||
{
|
||||
TPakkun::reset();
|
||||
unk1B2.a = 255;
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
}
|
||||
|
||||
@@ -749,7 +749,7 @@ bool TStayPakkun::isHitValid(u32 message)
|
||||
{
|
||||
if (message == HIT_MESSAGE_UNKB) {
|
||||
onLiveFlag(LIVE_FLAG_DEAD);
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -270,7 +270,7 @@ void TPoiHana::attackToMario()
|
||||
if (mSpine->getCurrentNerve() == &TNervePoihanaSleep::theNerve()) {
|
||||
unk1A0 = true;
|
||||
unk194 = true;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -395,7 +395,7 @@ void TPoiHana::walkBehavior(int param_1, float param_2)
|
||||
|
||||
BOOL TPoiHana::isInhibitedForceMove()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -507,7 +507,7 @@ void TPoiHana::genEventCoin()
|
||||
MsVECNormalize(&vec, &vec);
|
||||
coin->mVelocity.set(vec.x * 10.0f, 18.0f, vec.z * 10.0f);
|
||||
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mCoin = nullptr;
|
||||
}
|
||||
|
||||
@@ -559,7 +559,7 @@ DEFINE_NERVE(TNervePoihanaSleep, TLiveActor)
|
||||
if (!self->unk1C8) {
|
||||
self->mGoToSleepTimer = 0;
|
||||
spine->pushAfterCurrent(&TNerveWalkerGraphWander::theNerve());
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -568,7 +568,7 @@ DEFINE_NERVE(TNervePoihanaSleep, TLiveActor)
|
||||
}
|
||||
|
||||
if (!self->unk1A0 && !self->isAirborne())
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
self->mGoToSleepTimer += 1;
|
||||
if ((self->unk194 || self->unsetUnk165()) && !self->isBckAnm(10)) {
|
||||
@@ -590,14 +590,14 @@ DEFINE_NERVE(TNervePoihanaSleep, TLiveActor)
|
||||
if (self->isBckAnm(10)) {
|
||||
self->mGoToSleepTimer = 0;
|
||||
spine->pushAfterCurrent(&TNerveWalkerGraphWander::theNerve());
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!self->unk1C8) {
|
||||
self->mGoToSleepTimer = 0;
|
||||
spine->pushAfterCurrent(&TNerveWalkerGraphWander::theNerve());
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+9
-9
@@ -351,10 +351,10 @@ void TPopo::reset()
|
||||
mMActor = mMActorKeeper->getMActor("popoL.bmd");
|
||||
|
||||
if (unk1A4) {
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mSpine->initWith(&TNervePopoWait::theNerve());
|
||||
mPosition = unk1A8;
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
}
|
||||
|
||||
unk23C->kill();
|
||||
@@ -647,7 +647,7 @@ void TPopo::forceKill()
|
||||
if (!(mGroundPlane->isIllegalData()
|
||||
|| (!mGroundPlane->isDeathPlane() && !mGroundPlane->isPool()
|
||||
&& !mGroundPlane->isWaterSurface())
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
|| !gpMap->isInArea(mPosition.x, mPosition.z)) {
|
||||
|
||||
if (mSpine->getCurrentNerve() != &TNervePopoExplosion::theNerve()) {
|
||||
@@ -655,7 +655,7 @@ void TPopo::forceKill()
|
||||
mSpine->setNext(&TNervePopoExplosion::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
mHitPoints = 1;
|
||||
}
|
||||
}
|
||||
@@ -664,7 +664,7 @@ void TPopo::forceKill()
|
||||
void TPopo::bind()
|
||||
{
|
||||
unk23C->checkHit();
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
if ((mSpine->getCurrentNerve() == &TNervePopoPossessedNozzle::theNerve()
|
||||
@@ -816,7 +816,7 @@ void TPopo::possessedIn()
|
||||
mMActor->getFrameCtrl(5)->setFrame(0.0f);
|
||||
unk1A0 = 30.0f;
|
||||
mMActor->setFrameRate(0.0f, 5);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk1B8 = 90.0f;
|
||||
unk1B4 = 1;
|
||||
|
||||
@@ -934,12 +934,12 @@ DEFINE_NERVE(TNervePopoExplosion, TLiveActor)
|
||||
self->getMActor()->setFrameRate(0.0f, 0);
|
||||
self->releaseNozzle();
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->explosionEffect();
|
||||
}
|
||||
if (spine->getTime() > self->unk194->mSLExplosionEmitTime.get()) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
@@ -957,7 +957,7 @@ DEFINE_NERVE(TNervePopoWait, TLiveActor)
|
||||
{
|
||||
TPopo* self = (TPopo*)spine->getBody();
|
||||
if (spine->getTime() == 0) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
self->setBckAnm(6);
|
||||
self->setGoal((THitActor*)gpMarioAddress);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ void TRiccoHook::init(TLiveManager* manager)
|
||||
goToShortestNextGraphNode();
|
||||
mMarchSpeed = getSaveLoadParam()->mSLMoveSpeed.get();
|
||||
mTurnSpeed = 10.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TRiccoHook::kill() { }
|
||||
|
||||
@@ -210,9 +210,9 @@ void TRocket::reset()
|
||||
TSmallEnemy::reset();
|
||||
if (unk1A1)
|
||||
mPosition = unk194;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
mSpine->initWith(&TNerveRocketWait::theNerve());
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ void TRocket::behaveToWater(THitActor* param_1) { attackToMario(); }
|
||||
|
||||
void TRocket::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
if (mSpine->getCurrentNerve() == &TNerveRocketPossessedNozzle::theNerve()
|
||||
|| mSpine->getCurrentNerve() == &TNerveRocketFly::theNerve()) {
|
||||
@@ -262,7 +262,7 @@ void TRocket::setDeadAnm()
|
||||
gpModelWaterManager->emitRequest(*manager->unk68);
|
||||
if (unk1A0)
|
||||
releaseNozzle();
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
gpMarioParticleManager->emitAndBindToMtxPtr(
|
||||
PARTICLE_MS_PETBTL_BOMB_A, mMActor->getModel()->getBaseTRMtx(), 0,
|
||||
nullptr);
|
||||
@@ -290,7 +290,7 @@ bool TRocket::isCollidMove(THitActor* param_1)
|
||||
void TRocket::possessedNozzle()
|
||||
{
|
||||
((TRocketManager*)mManager)->unk60 = 0;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
unk1A0 = 1;
|
||||
}
|
||||
|
||||
@@ -396,7 +396,7 @@ DEFINE_NERVE(TNerveRocketWait, TLiveActor)
|
||||
{
|
||||
TRocket* self = (TRocket*)spine->getBody();
|
||||
if (spine->getTime() == 0) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
self->setBckAnm(3);
|
||||
}
|
||||
return false;
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ TSeal::TSeal(const char* name)
|
||||
: TSpineEnemy(name)
|
||||
, unk150(0)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TSeal::init(TLiveManager* param_1)
|
||||
|
||||
+21
-21
@@ -171,7 +171,7 @@ void TSmallEnemy::init(TLiveManager* param_1)
|
||||
onLiveFlag(LIVE_FLAG_DEAD);
|
||||
if (SMSGetMarDirector()->getCurrentStage() == 2
|
||||
&& SMSGetMarDirector()->getCurrentScenario() == 0)
|
||||
onLiveFlag(LIVE_FLAG_UNK2000);
|
||||
onLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
unk158 = 1.0f;
|
||||
|
||||
@@ -265,14 +265,14 @@ void TSmallEnemy::reset()
|
||||
resetHitPoints();
|
||||
|
||||
offLiveFlag(LIVE_FLAG_DEAD);
|
||||
offLiveFlag(LIVE_FLAG_UNK20000);
|
||||
offLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
offLiveFlag(LIVE_FLAG_MELT_ON_DEATH);
|
||||
offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
|
||||
if (getSaveParams()->mSLGenerateOnlyDead.get())
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
else
|
||||
onLiveFlag(LIVE_FLAG_UNK800);
|
||||
onLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
|
||||
unk124->mPrevIdx = -1;
|
||||
goToShortestNextGraphNode();
|
||||
@@ -309,7 +309,7 @@ void TSmallEnemy::forceKill()
|
||||
if (!(mGroundPlane->isIllegalData()
|
||||
|| (!mGroundPlane->isDeathPlane() && !mGroundPlane->isPool()
|
||||
&& !mGroundPlane->isWaterSurface())
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
|| isAirborne() || checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
|| !gpMap->isInArea(mPosition.x, mPosition.z)) {
|
||||
|
||||
if (mSpine->getCurrentNerve() != &TNerveSmallEnemyDie::theNerve()) {
|
||||
@@ -317,7 +317,7 @@ void TSmallEnemy::forceKill()
|
||||
mSpine->setNext(&TNerveSmallEnemyDie::theNerve());
|
||||
mSpine->pushAfterCurrent(mSpine->getDefault());
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
mHitPoints = 1;
|
||||
}
|
||||
}
|
||||
@@ -330,13 +330,13 @@ void TSmallEnemy::genRandomItem()
|
||||
|
||||
setAfterDeadEffect();
|
||||
genEventCoin();
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK20000 | LIVE_FLAG_DEAD))
|
||||
if (!checkLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS | LIVE_FLAG_DEAD))
|
||||
generateItem();
|
||||
}
|
||||
|
||||
void TSmallEnemy::genEventCoin()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK20000))
|
||||
if (checkLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS))
|
||||
return;
|
||||
|
||||
if (mCoin) {
|
||||
@@ -351,7 +351,7 @@ void TSmallEnemy::genEventCoin()
|
||||
if (coin) {
|
||||
coin->mPosition = mPosition;
|
||||
coin->mVelocity.set(0, 20, 0);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
--unk18C;
|
||||
}
|
||||
}
|
||||
@@ -381,7 +381,7 @@ void TSmallEnemy::genEventCoin()
|
||||
coin->mVelocity.set(local_d0.x * 4,
|
||||
TMsRange<f32>(8.0f, 16.0f).rand(),
|
||||
local_d0.z * 4);
|
||||
coin->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
coin->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -578,7 +578,7 @@ bool TSmallEnemy::changeByJuice()
|
||||
mJuiceBlock->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
mSpine->pushNerve(&TNerveSmallEnemyChange::theNerve());
|
||||
|
||||
@@ -604,7 +604,7 @@ bool TSmallEnemy::changeByJuice()
|
||||
break;
|
||||
}
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK800);
|
||||
offLiveFlag(LIVE_FLAG_RECYCLABLE);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -884,7 +884,7 @@ bool TSmallEnemy::isHitWallInBound()
|
||||
mPosition.z = local_3C.mCenter.z;
|
||||
mRotation.y = sVar2;
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
|
||||
return true;
|
||||
@@ -950,7 +950,7 @@ DEFINE_NERVE(TNerveSmallEnemyDie, TLiveActor)
|
||||
* 32.0f * self->getUnk158());
|
||||
}
|
||||
if (self->getHitPoints() == 0) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->setDeadAnm();
|
||||
self->setDeadEffect();
|
||||
} else {
|
||||
@@ -972,7 +972,7 @@ DEFINE_NERVE(TNerveSmallEnemyDie, TLiveActor)
|
||||
self->genRandomItem();
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
@@ -1007,8 +1007,8 @@ DEFINE_NERVE(TNerveSmallEnemyJump, TLiveActor)
|
||||
TSmallEnemy* self = (TSmallEnemy*)spine->getBody();
|
||||
|
||||
if (spine->getTime() == 0) {
|
||||
if (self->checkLiveFlag2(LIVE_FLAG_UNK8000)
|
||||
|| self->checkLiveFlag(LIVE_FLAG_UNK40000))
|
||||
if (self->isJumping()
|
||||
|| self->checkLiveFlag(TSmallEnemy::LIVE_FLAG_UNK40000))
|
||||
return true;
|
||||
|
||||
self->jumpBehavior();
|
||||
@@ -1017,7 +1017,7 @@ DEFINE_NERVE(TNerveSmallEnemyJump, TLiveActor)
|
||||
v.y = self->getSaveParams()->getSLJumpForce() * self->getBodyScale();
|
||||
self->setVelocity(v);
|
||||
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
self->onLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
self->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
|
||||
@@ -1032,8 +1032,8 @@ DEFINE_NERVE(TNerveSmallEnemyHitWaterJump, TLiveActor)
|
||||
TSmallEnemy* self = (TSmallEnemy*)spine->getBody();
|
||||
|
||||
if (spine->getTime() == 0) {
|
||||
if (self->checkLiveFlag2(LIVE_FLAG_UNK8000)
|
||||
|| self->checkLiveFlag(LIVE_FLAG_UNK40000))
|
||||
if (self->isJumping()
|
||||
|| self->checkLiveFlag(TSmallEnemy::LIVE_FLAG_UNK40000))
|
||||
return true;
|
||||
|
||||
self->setWaitAnm();
|
||||
@@ -1043,7 +1043,7 @@ DEFINE_NERVE(TNerveSmallEnemyHitWaterJump, TLiveActor)
|
||||
v.y = self->getSaveParams()->mSLJumpForce.get();
|
||||
self->mVelocity = v;
|
||||
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
self->onLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
self->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
|
||||
self->mRotation.y += TMsRange<f32>(30.0f, 100.0f).rand();
|
||||
|
||||
@@ -67,7 +67,7 @@ void TSpider::bind(TLiveActor* param_1)
|
||||
local_50.y = fVar3;
|
||||
enemy->mVelocity = JGeometry::TVec3<f32>(0, 0, 0);
|
||||
enemy->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
enemy->offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
enemy->offLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
} else {
|
||||
enemy->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
@@ -88,7 +88,7 @@ void TSpider::bind(TLiveActor* param_1)
|
||||
unk8 -= 1;
|
||||
unaff_f29 = enemy->getMarchSpeed();
|
||||
enemy->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
enemy->offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
enemy->offLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
enemy->mVelocity = JGeometry::TVec3<f32>(0, 0, 0);
|
||||
} else {
|
||||
unkC = 0;
|
||||
@@ -105,7 +105,7 @@ void TSpider::bind(TLiveActor* param_1)
|
||||
if (normal.dot(local_114) < 0.0f) {
|
||||
unaff_f29 = enemy->getMarchSpeed();
|
||||
enemy->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
enemy->offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
enemy->offLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
enemy->mVelocity = JGeometry::TVec3<f32>(0, 0, 0);
|
||||
|
||||
unkC = local_90.mResultWalls[0];
|
||||
|
||||
@@ -94,7 +94,7 @@ void TTamaNokoFlower::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
MsVECNormalize(&local_88, &local_88);
|
||||
mapObj->mVelocity.set(local_88.x * 4.0f, 20.0f,
|
||||
local_88.z * 4.0f);
|
||||
mapObj->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
mapObj->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,7 @@ void TTamaNoko::reset()
|
||||
unk1B8 = false;
|
||||
unk1B9 = true;
|
||||
mScaledBodyRadius = 280.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK1000);
|
||||
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
}
|
||||
|
||||
void TTamaNoko::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
@@ -489,8 +489,9 @@ void TTamaNoko::calcRootMatrix()
|
||||
|
||||
void TTamaNoko::requestShadow()
|
||||
{
|
||||
if (!checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK8 | LIVE_FLAG_HIDDEN)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK200 | LIVE_FLAG_CLIPPED_OUT)
|
||||
if (!checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_NO_SHADOW
|
||||
| LIVE_FLAG_HIDDEN)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_CLIPPED_OUT)
|
||||
|| checkLiveFlag(LIVE_FLAG_FORCE_SHADOW)) {
|
||||
TCircleShadowRequest local_2c;
|
||||
|
||||
@@ -523,7 +524,7 @@ void TTamaNoko::requestShadow()
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK200 | LIVE_FLAG_CLIPPED_OUT)
|
||||
if (!checkLiveFlag(LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_CLIPPED_OUT)
|
||||
&& !isHitCategory(HIT_CATEGORY_MAP_OBJECT)) {
|
||||
gpQuestionManager->request(mPosition, mScaledBodyRadius);
|
||||
}
|
||||
@@ -690,7 +691,7 @@ DEFINE_NERVE(TNerveTamaNokoAttack, TLiveActor)
|
||||
}
|
||||
|
||||
if (self->mAirAttackTimer < TTamaNoko::mStopOnAirTimeMax) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
// NOTE: at the top of the arc, we do a lil 360 spin
|
||||
f32 delta
|
||||
@@ -702,7 +703,7 @@ DEFINE_NERVE(TNerveTamaNokoAttack, TLiveActor)
|
||||
} else {
|
||||
self->setVelocity(JGeometry::TVec3<f32>(
|
||||
0.0f, TTamaNoko::mDropVelocityY, 0.0f));
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -185,9 +185,9 @@ void TTelesaManager::setFlagOutOfCube()
|
||||
JGeometry::TVec3<f32> pos = telesa->getPosition();
|
||||
pos.y += 75.0f;
|
||||
if (gpCubeArea->isInAreaCube(pos))
|
||||
telesa->offLiveFlag(LIVE_FLAG_UNK200);
|
||||
telesa->offLiveFlag(LIVE_FLAG_OUT_OF_AREA);
|
||||
else
|
||||
telesa->onLiveFlag(LIVE_FLAG_UNK200);
|
||||
telesa->onLiveFlag(LIVE_FLAG_OUT_OF_AREA);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ void TTelesa::init(TLiveManager* manager)
|
||||
onHitFilter(HIT_CATEGORY_BOSS);
|
||||
unk194 = (TTelesaSaveLoadParams*)getSaveParam();
|
||||
mSpine->initWith(&TNerveWalkerGraphWander::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
setFlyParam(1.0f);
|
||||
|
||||
@@ -262,7 +262,7 @@ void TTelesa::reset()
|
||||
{
|
||||
TWalkerEnemy::reset();
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
onLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
|
||||
setFlyParam(1.0f);
|
||||
@@ -284,7 +284,7 @@ void TTelesa::reset()
|
||||
void TTelesa::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
TSmallEnemy::perform(cue, graphics);
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK200 | LIVE_FLAG_DEAD)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_DEAD)) {
|
||||
if (mImitatedBmd) {
|
||||
if (cue & CUE_CALC_ANIM) {
|
||||
const TBGCheckData* pTStack_5c;
|
||||
@@ -476,7 +476,7 @@ void TTelesa::moveObject()
|
||||
|
||||
void TTelesa::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
JGeometry::TVec3<f32> nextPos = mPosition;
|
||||
@@ -1123,7 +1123,7 @@ DEFINE_NERVE(TNerveTelesaDie, TLiveActor)
|
||||
|
||||
if (self->checkCurAnmEnd(0) || self->getUnk184()) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
|
||||
@@ -638,7 +638,7 @@ TTinKoopa::TTinKoopa(const char* name)
|
||||
, unk1F0(nullptr)
|
||||
, unk1F8(0)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
offLiveFlag(LIVE_FLAG_ENABLE_CLIPPING);
|
||||
mScaledBodyRadius = 2000.0f;
|
||||
}
|
||||
|
||||
+12
-12
@@ -148,7 +148,7 @@ TTobiPukuLaunchPad::TTobiPukuLaunchPad(const char* param_1)
|
||||
|
||||
void TTobiPukuLaunchPad::perform(u32 cue, JDrama::TGraphics* param_2)
|
||||
{
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK200) && !checkLiveFlag(LIVE_FLAG_DEAD)
|
||||
if (!checkLiveFlag(LIVE_FLAG_OUT_OF_AREA) && !checkLiveFlag(LIVE_FLAG_DEAD)
|
||||
&& (cue & CUE_MOVE)) {
|
||||
if (TTobiPuku::mReturnLaunchSw) {
|
||||
if (!unk1A8)
|
||||
@@ -536,7 +536,7 @@ void TTobiPuku::flyStart()
|
||||
unk1B4 = MsGetRotFromZaxis(unk1D0).x;
|
||||
generateEffectColumWater();
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TTobiPuku::fallStart()
|
||||
@@ -596,7 +596,7 @@ void TTobiPuku::forceKill()
|
||||
if (mSpine->getCurrentNerve() == &TNerveTobiPukuDie::theNerve()
|
||||
|| mSpine->getCurrentNerve() == &TNerveTobiPukuPrepareFly::theNerve()
|
||||
|| mSpine->getCurrentNerve() == &TNerveTobiPukuFly::theNerve()
|
||||
|| checkLiveFlag(LIVE_FLAG_UNK10) || !isJumpBck())
|
||||
|| checkLiveFlag(LIVE_FLAG_NO_BIND) || !isJumpBck())
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -818,7 +818,7 @@ DEFINE_NERVE(TNerveTobiPukuGenerate, TLiveActor)
|
||||
{
|
||||
TTobiPuku* self = (TTobiPuku*)spine->getBody();
|
||||
if (spine->getTime() == 0) {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
self->mPosition.y -= 300.0f;
|
||||
self->mRotation.x = MsGetRotFromZaxis(self->getVelocity()).x;
|
||||
self->setJumpAnm();
|
||||
@@ -838,7 +838,7 @@ DEFINE_NERVE(TNerveTobiPukuFly, TLiveActor)
|
||||
TTobiPuku* self = (TTobiPuku*)spine->getBody();
|
||||
if (spine->getTime() == 0) {
|
||||
self->setJumpStartAnm();
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
if (self->checkCurAnmEnd(0) && self->isJumpStartBck())
|
||||
@@ -924,10 +924,10 @@ DEFINE_NERVE(TNerveTobiPukuFall, TLiveActor)
|
||||
if (self->getGroundPlane()->isWaterSurface()) {
|
||||
spine->pushAfterCurrent(&TNerveTobiPukuDie::theNerve());
|
||||
self->generateEffectColumWater();
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
} else {
|
||||
spine->pushAfterCurrent(&TNerveTobiPukuDie::theNerve());
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -967,16 +967,16 @@ DEFINE_NERVE(TNerveTobiPukuDie, TLiveActor)
|
||||
self->onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
self->setDownLandAnm();
|
||||
} else {
|
||||
self->onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
self->onLiveFlag(TSmallEnemy::LIVE_FLAG_NO_ITEM_DROPS);
|
||||
self->setDeadAnm();
|
||||
}
|
||||
}
|
||||
|
||||
if (self->checkCurAnmEnd(0)) {
|
||||
self->onLiveFlag(LIVE_FLAG_DEAD);
|
||||
self->onLiveFlag(LIVE_FLAG_UNK8);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
self->offLiveFlag(LIVE_FLAG_HIDDEN);
|
||||
self->offLiveFlag(LIVE_FLAG_UNK10000);
|
||||
self->offLiveFlag(TSmallEnemy::LIVE_FLAG_MELT_ON_DEATH);
|
||||
self->mHolder = nullptr;
|
||||
self->stopAnmSound();
|
||||
spine->reset();
|
||||
@@ -995,7 +995,7 @@ DEFINE_NERVE(TNerveTobiPukuLand, TLiveActor)
|
||||
if (spine->getTime() < 2) {
|
||||
if (self->getGroundPlane()->isWaterSurface()) {
|
||||
self->mPosition.y -= 10.0f;
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
self->generateEffectColumWater();
|
||||
if (TTobiPuku::mReturnLaunchSw) {
|
||||
self->unk1E4 *= 0.8f;
|
||||
@@ -1145,7 +1145,7 @@ DEFINE_NERVE(TNerveTobiPukuSwimWander, TLiveActor)
|
||||
self->unk1E0 = self->mPosition.y;
|
||||
self->setSwimAnm();
|
||||
self->initialGraphNode();
|
||||
self->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
self->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
if (self->isReachedToGoalXZ())
|
||||
|
||||
@@ -92,7 +92,7 @@ void TWalker::bind(TLiveActor* param_1)
|
||||
f32 fVar1;
|
||||
const TBGCheckData* local_40;
|
||||
|
||||
if (enemy->checkLiveFlag(LIVE_FLAG_UNK1000)) {
|
||||
if (enemy->checkLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS)) {
|
||||
fVar1 = gpMap->checkGroundIgnoreWaterSurface(
|
||||
local_30.x, local_30.y + enemy->getHeadHeight(), local_30.z,
|
||||
&local_40);
|
||||
@@ -108,7 +108,8 @@ void TWalker::bind(TLiveActor* param_1)
|
||||
if (!local_40->isEnemyThrough()) {
|
||||
f32 dVar16;
|
||||
const TBGCheckData* local_44;
|
||||
if (enemy->checkLiveFlag(LIVE_FLAG_UNK1000)) {
|
||||
if (enemy->checkLiveFlag(
|
||||
LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS)) {
|
||||
dVar16 = gpMap->checkGroundIgnoreWaterSurface(
|
||||
local_30.x, enemy->mPosition.y + enemy->getHeadHeight(),
|
||||
local_30.z, &local_44);
|
||||
@@ -143,7 +144,7 @@ void TWalker::bind(TLiveActor* param_1)
|
||||
local_30.y = fVar1;
|
||||
enemy->mVelocity = JGeometry::TVec3<f32>(0.0f, 0.0f, 0.0f);
|
||||
enemy->offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
enemy->offLiveFlag(LIVE_FLAG_UNK8000);
|
||||
enemy->offLiveFlag(TSpineEnemy::LIVE_FLAG_JUMPING);
|
||||
} else {
|
||||
enemy->onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
|
||||
+1
-1
@@ -114,7 +114,7 @@ void TYumboSeed::startToMove(const JGeometry::TVec3<f32>& param_1,
|
||||
TYumbo::TYumbo(const char* param_1)
|
||||
: TSmallEnemy(param_1)
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
static const char* sambohead_bastable[] = {
|
||||
|
||||
+7
-7
@@ -261,7 +261,7 @@ void TCoin::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD))
|
||||
return;
|
||||
|
||||
if ((cue & CUE_MOVE) && checkLiveFlag(LIVE_FLAG_UNK10)) {
|
||||
if ((cue & CUE_MOVE) && checkLiveFlag(LIVE_FLAG_NO_BIND)) {
|
||||
|
||||
if (SMSGetMarDirector()->isTalkModeNow()
|
||||
&& !SMSGetMarDirector()->isDemoModeNow())
|
||||
@@ -417,7 +417,7 @@ void TShine::calc()
|
||||
{
|
||||
MtxPtr mtxPos = getMActor()->getModel()->getAnmMtx(2);
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200 | LIVE_FLAG_CLIPPED_OUT
|
||||
if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_DEAD))
|
||||
return;
|
||||
|
||||
@@ -631,7 +631,7 @@ void TShine::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
if ((cue & CUE_CALC_ANIM) && !checkLiveFlag(LIVE_FLAG_DEAD)) {
|
||||
if (!isState(STATE_NORMAL))
|
||||
offLiveFlag(LIVE_FLAG_UNK200);
|
||||
offLiveFlag(LIVE_FLAG_OUT_OF_AREA);
|
||||
}
|
||||
TMapObjGeneral::perform(cue, graphics);
|
||||
}
|
||||
@@ -1036,7 +1036,7 @@ BOOL TEggYoshi::receiveMessage(THitActor* sender, u32 message)
|
||||
|
||||
if (message == HIT_MESSAGE_THROWN || message == HIT_MESSAGE_DETACH) {
|
||||
mVelocity.y = 10.0f;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mState = 0xF;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1045,7 +1045,7 @@ BOOL TEggYoshi::receiveMessage(THitActor* sender, u32 message)
|
||||
JGeometry::TVec3<f32> v = getVelocity();
|
||||
makeObjAppeared();
|
||||
mVelocity.y = v.y;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
decideRandomLoveFruit();
|
||||
startBalloonAnim();
|
||||
mState = STATE_NORMAL;
|
||||
@@ -1150,7 +1150,7 @@ BOOL TItemNozzle::receiveMessage(THitActor* sender, u32 message)
|
||||
|
||||
if (message == HIT_MESSAGE_THROWN) {
|
||||
mVelocity.set(0.0f, 20.0f, 0.0f);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
mState = 0xB;
|
||||
return TRUE;
|
||||
@@ -1161,7 +1161,7 @@ BOOL TItemNozzle::receiveMessage(THitActor* sender, u32 message)
|
||||
|
||||
void TItemNozzle::appearing()
|
||||
{
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (!checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
mState = STATE_NORMAL;
|
||||
|
||||
+19
-19
@@ -202,7 +202,7 @@ void TMapObjBall::kicked()
|
||||
}
|
||||
|
||||
unk194 = 10;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
|
||||
THitActor* marHitActor = SMS_GetMarioHitActor();
|
||||
@@ -222,7 +222,7 @@ u32 TMapObjBall::touchWater(THitActor* water)
|
||||
vel.set(getVelocity());
|
||||
vel.scaleAdd(unk17C, getWaterSpeed(water), vel);
|
||||
setVelocity(vel);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ void TMapObjBall::boundByActor(THitActor* actor)
|
||||
}
|
||||
|
||||
unk194 = 10;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
|
||||
@@ -722,7 +722,7 @@ void TResetFruit::hold(TTakeActor* actor)
|
||||
{
|
||||
TMapObjBall::hold(actor);
|
||||
mVelocity.zero();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
if (!checkMapObjFlag(MAP_OBJ_FLAG_UNK4000000) && !isStateTimerEngaged()) {
|
||||
onMapObjFlag(MAP_OBJ_FLAG_DISAPPEARING);
|
||||
startStateTimer(getLivingTime());
|
||||
@@ -774,7 +774,7 @@ void TResetFruit::makeObjLiving()
|
||||
startStateTimer(getLivingTime());
|
||||
}
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mState = STATE_LIVING;
|
||||
}
|
||||
|
||||
@@ -786,7 +786,7 @@ void TResetFruit::pick(THitActor* actor)
|
||||
|
||||
TMapObjBall::touchActor(actor);
|
||||
if (!checkMapObjFlag(MAP_OBJ_FLAG_UNK4000000) && isState(STATE_NORMAL)
|
||||
&& !checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
&& !checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
makeObjLiving();
|
||||
}
|
||||
|
||||
@@ -818,7 +818,7 @@ void TResetFruit::kicked()
|
||||
}
|
||||
|
||||
unk194 = 10;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
SMS_GetMarioHitActor()->receiveMessage(this, HIT_MESSAGE_ATTACK);
|
||||
SMSGetMSound()->startSoundActor(MSD_SE_MA_KICK_DRIAN, &mPosition, 0,
|
||||
nullptr, 0, 4);
|
||||
@@ -904,13 +904,13 @@ void TResetFruit::control()
|
||||
case STATE_LIVING: {
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
if (SMSGetMarDirector()->getCurrentStage() == 4
|
||||
&& checkLiveFlag(LIVE_FLAG_UNK10)) {
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
&& checkLiveFlag(LIVE_FLAG_NO_BIND)) {
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
if (mGroundPlane->getActor() != nullptr) {
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10)) {
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND)) {
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
const TLiveActor* actor = mGroundPlane->getActor();
|
||||
@@ -958,8 +958,8 @@ void TResetFruit::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
if (SMSGetMarDirector()->getCurrentStage() == 7) {
|
||||
if (isState(STATE_HOLDING) || !getVelocity().isZero()) {
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200)) {
|
||||
offLiveFlag(LIVE_FLAG_UNK200);
|
||||
if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA)) {
|
||||
offLiveFlag(LIVE_FLAG_OUT_OF_AREA);
|
||||
}
|
||||
} else {
|
||||
if (!gpCubeArea->isInAreaCube(mPosition) && isState(STATE_LIVING)) {
|
||||
@@ -1251,7 +1251,7 @@ void TBigWatermelon::kill()
|
||||
|
||||
if (mapObj != nullptr) {
|
||||
mapObj->mVelocity.set(0.0f, 25.0f, 0.0f);
|
||||
mapObj->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
mapObj->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
++unk19C;
|
||||
}
|
||||
}
|
||||
@@ -1287,8 +1287,8 @@ void TBigWatermelon::control()
|
||||
|
||||
switch (mState) {
|
||||
case STATE_NORMAL: {
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10)) {
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND)) {
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
const TLiveActor* groundPlaneActor = mGroundPlane->getActor();
|
||||
if (mPosition.y < mGroundHeight + 200.0f
|
||||
@@ -1332,9 +1332,9 @@ void TBigWatermelon::startEvent()
|
||||
if (strcmp(getName(), "スイカ(大)") == 0) {
|
||||
mPosition.set(-4660.0f, 1300.0f, 13600.0f);
|
||||
offMapObjFlag(MAP_OBJ_FLAG_NO_ANIMATIONS);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mVelocity.zero();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
TMapObjBase::startAnim(7);
|
||||
// getter?
|
||||
TMarDirector* director = SMSGetMarDirector();
|
||||
@@ -1356,7 +1356,7 @@ void TBigWatermelon::startEvent()
|
||||
item->mVelocity.x = 20.0f * (MsRandF() - 0.5f);
|
||||
item->mVelocity.y = randY;
|
||||
item->mVelocity.z = randZ;
|
||||
item->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
item->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
item->mDisappearAfterFrames = 960;
|
||||
}
|
||||
}
|
||||
|
||||
+13
-13
@@ -55,14 +55,14 @@ u32 TMapObjBase::getSDLModelFlag() const { return 3; }
|
||||
|
||||
void TMapObjBase::awake()
|
||||
{
|
||||
offLiveFlag(LIVE_FLAG_UNK4000);
|
||||
offLiveFlag(LIVE_FLAG_SLEEPING);
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
setUpCurrentMapCollision();
|
||||
}
|
||||
|
||||
void TMapObjBase::sleep()
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK4000);
|
||||
onLiveFlag(LIVE_FLAG_SLEEPING);
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
removeMapCollision();
|
||||
}
|
||||
@@ -269,7 +269,7 @@ void TMapObjBase::makeObjDefault()
|
||||
mScaling = mInitialScaling;
|
||||
|
||||
mVelocity.zero();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
if (mMActor) {
|
||||
calcRootMatrix();
|
||||
getModel()->calc();
|
||||
@@ -280,7 +280,7 @@ void TMapObjBase::makeObjDefault()
|
||||
void TMapObjBase::makeObjDead()
|
||||
{
|
||||
mVelocity.zero();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
stopAnim();
|
||||
|
||||
@@ -298,7 +298,7 @@ void TMapObjBase::makeObjDead()
|
||||
mHolder = nullptr;
|
||||
}
|
||||
|
||||
onLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK8 | LIVE_FLAG_UNK10
|
||||
onLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_NO_SHADOW | LIVE_FLAG_NO_BIND
|
||||
| LIVE_FLAG_UNK40 | LIVE_FLAG_AIRBORNE);
|
||||
mState = STATE_DEAD;
|
||||
if (mMActor)
|
||||
@@ -307,16 +307,16 @@ void TMapObjBase::makeObjDead()
|
||||
|
||||
void TMapObjBase::makeObjAppeared()
|
||||
{
|
||||
offLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_UNK8);
|
||||
offLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_NO_SHADOW);
|
||||
mVelocity.zero();
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mStateTimer = 0;
|
||||
offHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
setObjHitData(0);
|
||||
startSound(0);
|
||||
|
||||
mGroundHeight = gpMap->checkGround(mPosition, &mGroundPlane);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
|
||||
if (mMapObjData->mMove) {
|
||||
@@ -390,7 +390,7 @@ void TMapObjBase::ensureTakeSituation()
|
||||
|
||||
if (mHolder && mHolder->getHeldObject() != this) {
|
||||
if (mPosition.y != mGroundHeight)
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
mHolder = nullptr;
|
||||
}
|
||||
@@ -457,7 +457,7 @@ void TMapObjBase::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
}
|
||||
|
||||
if ((cue & CUE_CALC_ANIM) && mMActor) {
|
||||
if (checkLiveFlag(LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_UNK200)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_OUT_OF_AREA)) {
|
||||
if (getModel()->getShapePacket(0)->isVisible())
|
||||
SMS_HideAllShapePacket(getModel());
|
||||
} else {
|
||||
@@ -466,7 +466,7 @@ void TMapObjBase::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
}
|
||||
}
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200))
|
||||
if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA))
|
||||
return;
|
||||
|
||||
if (hasMapCollision())
|
||||
@@ -489,7 +489,7 @@ void TMapObjBase::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (cue & CUE_DRAW)
|
||||
draw();
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK4000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_SLEEPING)) {
|
||||
if (cue & CUE_CALC_ANIM)
|
||||
cue &= ~CUE_CALC_ANIM;
|
||||
if (cue & CUE_ENTRY)
|
||||
@@ -501,7 +501,7 @@ void TMapObjBase::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (cue & CUE_CALC_ANIM) {
|
||||
calc();
|
||||
if (mMActor) {
|
||||
if (checkLiveFlag(LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_UNK200)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_OUT_OF_AREA)) {
|
||||
if (getModel()->getShapePacket(0)->isVisible())
|
||||
SMS_HideAllShapePacket(getModel());
|
||||
} else {
|
||||
|
||||
@@ -347,7 +347,7 @@ void TTelesaBlock::initMapObj() { TMapObjBase::initMapObj(); }
|
||||
|
||||
void TTelesaBlock::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
{
|
||||
mLiveFlag &= ~LIVE_FLAG_UNK200;
|
||||
mLiveFlag &= ~LIVE_FLAG_OUT_OF_AREA;
|
||||
if (!SMSGetMarDirector()->isTalkModeNow()) {
|
||||
TMapObjBase::perform(cue, graphics);
|
||||
} else {
|
||||
@@ -405,6 +405,6 @@ void TSuperHipDropBlock::loadAfter()
|
||||
MSF_PIANTA_PIPE_SLAB_DESTROYED)) {
|
||||
makeObjDead();
|
||||
}
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
}
|
||||
@@ -88,7 +88,7 @@ void TRideCloud::load(JSUMemoryInputStream& stream)
|
||||
SMS_InitPacket_TwoTevColor(getModel(), 0, GX_TEVREG0, &unk16E, GX_TEVREG1,
|
||||
&unk176);
|
||||
offLiveFlag(LIVE_FLAG_FORCE_SHADOW);
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
}
|
||||
|
||||
u32 TRideCloud::getShadowType() { return SHADOW_TYPE_CIRCLE; }
|
||||
|
||||
@@ -83,7 +83,7 @@ void TMapObjGeneral::waitToAppear(s32 waitTime)
|
||||
void TMapObjGeneral::sink()
|
||||
{
|
||||
mVelocity.x = mVelocity.y = mVelocity.z = 0.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mState = STATE_SINKING;
|
||||
unk144 = mPosition.y;
|
||||
setUpMapCollision(1);
|
||||
@@ -104,7 +104,7 @@ void TMapObjGeneral::put()
|
||||
mPosition.z = JMASCos(SMS_GetMarioAngleY())
|
||||
* (getDamageRadius() + SMS_GetMarioDamageRadius() + 10.0f)
|
||||
+ SMS_GetMarioPos().z;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mGroundHeight = gpMap->checkGround(mPosition, &mGroundPlane);
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ void TMapObjGeneral::thrown()
|
||||
* getMapObjData()->mPhysical->mData->unk2C)
|
||||
+ mNormalThrowSpeedRate * SMS_GetMarioSpeedZ());
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
JGeometry::TVec3<f32> vel = getVelocity();
|
||||
mPosition.add(vel);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
@@ -236,7 +236,7 @@ void TMapObjGeneral::appearing()
|
||||
}
|
||||
|
||||
uuuh:
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (!checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
makeObjAppeared();
|
||||
@@ -325,7 +325,7 @@ void TMapObjGeneral::ensureTakeSituation()
|
||||
TMapObjBase::ensureTakeSituation();
|
||||
if (isState(STATE_HOLDING) && mHolder == nullptr) {
|
||||
mState = STATE_NORMAL;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -333,7 +333,7 @@ void TMapObjGeneral::kill()
|
||||
{
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
removeMapCollision();
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_NO_SHADOW);
|
||||
mStateTimer = -1;
|
||||
startAnim(2);
|
||||
mState = STATE_BREAKING;
|
||||
@@ -457,7 +457,7 @@ void TMapObjGeneral::touchGround(JGeometry::TVec3<f32>* param_1)
|
||||
} else {
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
mVelocity.x = mVelocity.y = mVelocity.z = 0.0f;
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
param_1->y = mGroundHeight;
|
||||
}
|
||||
}
|
||||
@@ -500,7 +500,7 @@ void TMapObjGeneral::calcVelocity()
|
||||
|
||||
void TMapObjGeneral::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
|
||||
if (mBinder != nullptr) {
|
||||
@@ -530,7 +530,7 @@ void TMapObjGeneral::bind()
|
||||
if (!isAirborne()) {
|
||||
if (getVelocity().x == 0.0f && getVelocity().y == 0.0f
|
||||
&& getVelocity().z == 0.0f)
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
mPositionDelta = vec - mPosition;
|
||||
|
||||
@@ -40,7 +40,7 @@ void THideObjBase::appearObjFromPoint(const JGeometry::TVec3<f32>& point)
|
||||
{
|
||||
if (mHiddenObj != nullptr && mAllowReveal) {
|
||||
if (mHiddenObj->isActorType(ACTOR_TYPE_SHINE)) {
|
||||
mHiddenObj->onLiveFlag(LIVE_FLAG_UNK10);
|
||||
mHiddenObj->onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mHiddenObj->mPosition.set(mPosition);
|
||||
((TShine*)mHiddenObj)->appearWithDemo(mHiddenShineDemoName);
|
||||
} else {
|
||||
@@ -542,7 +542,7 @@ void THideObjPictureTwin::afterFinishedAnim()
|
||||
obj->mVelocity.set(mtx[0][2] * mAppearSpeed,
|
||||
mtx[1][2] * mAppearSpeed + mAppearYSpeed,
|
||||
mtx[2][2] * mAppearSpeed);
|
||||
obj->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
obj->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
if (TMapObjBase::isCoin(obj)) {
|
||||
TCoin* coin = (TCoin*)obj;
|
||||
@@ -602,7 +602,7 @@ void TBreakHideObj::kill()
|
||||
startAnim(2);
|
||||
removeMapCollision();
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_NO_SHADOW);
|
||||
mStateTimer = -1;
|
||||
mState = 2;
|
||||
}
|
||||
@@ -666,7 +666,7 @@ void TWoodBox::kill()
|
||||
startAnim(2);
|
||||
removeMapCollision();
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_NO_SHADOW);
|
||||
mStateTimer = -1;
|
||||
mState = 2;
|
||||
|
||||
|
||||
@@ -11306,7 +11306,7 @@ void TMapObjBase::initMapObj()
|
||||
mMActor->setLightType(LIGHT_TYPE_MAPOBJECT);
|
||||
|
||||
if (getMapObjData()->unk30 == 0.0f)
|
||||
onLiveFlag(LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
if (checkMapObjFlag(MAP_OBJ_FLAG_INDIRECT_TEXTURE)
|
||||
&& !isActorType(ACTOR_TYPE_DOKAN_GATE)) {
|
||||
|
||||
@@ -65,10 +65,10 @@ void TMushroom1up::initMapObj()
|
||||
{
|
||||
TMapObjBase::initMapObj();
|
||||
mGravity = 0.35f;
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE | LIVE_FLAG_UNK10 | LIVE_FLAG_HIDDEN
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE | LIVE_FLAG_NO_BIND | LIVE_FLAG_HIDDEN
|
||||
| LIVE_FLAG_DEAD);
|
||||
if (unk139 == 2) {
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
makeObjAppeared();
|
||||
}
|
||||
mScaling.set(1.5f, 1.5f, 1.5f);
|
||||
@@ -77,7 +77,7 @@ void TMushroom1up::initMapObj()
|
||||
void TMushroom1up::load(JSUMemoryInputStream& stream)
|
||||
{
|
||||
TMapObjBase::load(stream);
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE | LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE | LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TMushroom1up::control()
|
||||
@@ -243,7 +243,7 @@ void TJumpBase::control()
|
||||
{
|
||||
int prevState = unk138;
|
||||
if (!isAirborne())
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
|
||||
switch (unk138) {
|
||||
case 0:
|
||||
@@ -281,7 +281,7 @@ void TJumpBase::control()
|
||||
ctrl->setFrame(0.0f);
|
||||
ctrl->setRate(SMSGetAnmFrameRate());
|
||||
}
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
mScaledBodyRadius = 100.0f;
|
||||
}
|
||||
if (getMActor()->curAnmEndsNext(ANM_TYPE_BCK, nullptr)) {
|
||||
@@ -332,7 +332,7 @@ void TJumpBase::control()
|
||||
= JGeometry::TVec3<f32>(JMASSin(angle), 0.0f, JMASCos(angle));
|
||||
JGeometry::TVec3<f32> v2 = mVelocity;
|
||||
mPosition += v2;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
if (!isAirborne()) {
|
||||
unk13C = 0;
|
||||
|
||||
@@ -104,14 +104,14 @@ void TMapObjBase::throwObjToFront(TMapObjBase* object, f32 y_offset, f32 speed,
|
||||
object->mVelocity.set(mtx[0][2] * speed,
|
||||
mtx[1][2] * speed + vertical_speed,
|
||||
mtx[2][2] * speed);
|
||||
object->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
object->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
} else {
|
||||
Mtx mtx;
|
||||
MsMtxSetRotRPH(mtx, mRotation.x, mRotation.y, mRotation.z);
|
||||
object->mVelocity.set(mtx[0][2] * speed,
|
||||
mtx[1][2] * speed + vertical_speed,
|
||||
mtx[2][2] * speed);
|
||||
object->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
object->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,13 +125,13 @@ void TMapObjBase::throwObjToFrontFromPoint(TMapObjBase* object,
|
||||
MtxPtr mtx = getModel()->getAnmMtx(0);
|
||||
object->mVelocity.set(mtx[0][2] * speed, mtx[1][2] * speed + y_speed,
|
||||
mtx[2][2] * speed);
|
||||
object->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
object->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
} else {
|
||||
Mtx mtx;
|
||||
MsMtxSetRotRPH(mtx, mRotation.x, mRotation.y, mRotation.z);
|
||||
object->mVelocity.set(mtx[0][2] * speed, mtx[1][2] * speed + y_speed,
|
||||
mtx[2][2] * speed);
|
||||
object->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
object->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ void TMapObjBase::throwObjFromPointWithRot(TMapObjBase* obj,
|
||||
MsMtxSetRotRPH(mtx, rot.x, rot.y, rot.z);
|
||||
obj->mVelocity.set(mtx[0][2] * speed, mtx[1][2] * speed + up_speed,
|
||||
mtx[2][2] * speed);
|
||||
obj->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
obj->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
bool TMapObjBase::isCoin(THitActor* param_1)
|
||||
|
||||
@@ -701,7 +701,7 @@ void TMuddyBoat::moveByWater()
|
||||
unk140 += dot * unk138;
|
||||
else
|
||||
unk140 += dot * unk13C;
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -719,7 +719,7 @@ void TMuddyBoat::kill()
|
||||
MtxPtr src = getModel()->getAnmMtx(0);
|
||||
MTXCopy(src, dst);
|
||||
offMapObjFlag(MAP_OBJ_FLAG_NO_ANIMATIONS);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
startAnim(1);
|
||||
startAnim(2);
|
||||
mState = STATE_UNK2;
|
||||
@@ -752,7 +752,7 @@ bool TMuddyBoat::bindToWall(const JGeometry::TVec3<f32>& param_1, f32 param_2,
|
||||
|
||||
void TMuddyBoat::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
return;
|
||||
JGeometry::TVec3<f32> pos = mPosition;
|
||||
MtxPtr mtx = getModel()->getAnmMtx(0);
|
||||
|
||||
@@ -679,7 +679,7 @@ void TAmiKing::initMapObj()
|
||||
initAnmSound();
|
||||
mMActor->setBck("amiking_sleep1");
|
||||
setAnmSound("/scene/mapObj/amiking_sleep1.bas");
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
for (u8 i = 0; i < getMActor()->getModel()->getModelData()->getJointNum();
|
||||
++i) { }
|
||||
}
|
||||
@@ -771,7 +771,7 @@ void TAmiKing::calcRootMatrix()
|
||||
|
||||
void TAmiKing::bind()
|
||||
{
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND)) {
|
||||
gpMap->checkGround(mPosition.x, mPosition.y + mHeadHeight, mPosition.z,
|
||||
&mGroundPlane);
|
||||
} else {
|
||||
|
||||
@@ -402,7 +402,7 @@ void TFruitLauncher::fireObj()
|
||||
fruit->mPosition.set(mPosition);
|
||||
fruit->mVelocity.set(mObjSpeedXZ * (MsRandF() - 0.5f), -mObjSpeedY,
|
||||
mObjSpeedXZ * (MsRandF() - 0.5f));
|
||||
fruit->offLiveFlag(LIVE_FLAG_UNK10);
|
||||
fruit->offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
SMSGetMarDirector()->fireStartDemoCamera("フルーツタンクカメラカメラ",
|
||||
&fruit->mPosition, -1, 0.0f,
|
||||
true, nullptr, 0, nullptr, 0);
|
||||
|
||||
@@ -594,8 +594,10 @@ void TRedCoinSwitch::loadAfter()
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
char buf[0x40];
|
||||
snprintf(buf, 0x40, "赤コイン %d", i);
|
||||
static_cast<TMapObjBase*>(JDrama::TNameRefGen::search(buf))
|
||||
->makeObjDead();
|
||||
TMapObjBase* coin
|
||||
= static_cast<TMapObjBase*>(JDrama::TNameRefGen::search(buf));
|
||||
JUT_ASSERT(coin);
|
||||
coin->makeObjDead();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,10 +27,10 @@ void TWoodBarrel::put()
|
||||
|
||||
if (mGroundHeight < mPosition.y - 50.0f) {
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
} else {
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ void TWoodBarrel::appeared()
|
||||
|
||||
mGroundHeight = gpMap->checkGround(mPosition, &mGroundPlane);
|
||||
if (mPosition.y - 50.0f > mGroundHeight)
|
||||
offLiveFlag(LIVE_FLAG_UNK10);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
void TWoodBarrel::appear()
|
||||
|
||||
+18
-18
@@ -420,9 +420,9 @@ void TBaseNPC::npcFallIn()
|
||||
|
||||
bool TBaseNPC::npcRecoverFromSinking()
|
||||
{
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK8000000)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED)) {
|
||||
if (mMActor->getFrameCtrl(ANM_TYPE_BCK)->checkPass(32.0f)) {
|
||||
onLiveFlag(LIVE_FLAG_UNK8000000);
|
||||
onLiveFlag(LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED);
|
||||
mVelocity.y = CalcJumpVelocityY(unk1C4 - mPosition.y + 150.0f,
|
||||
getGravityY());
|
||||
if (mVelocity.y < 5.0f)
|
||||
@@ -436,10 +436,10 @@ bool TBaseNPC::npcRecoverFromSinking()
|
||||
offLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
mVelocity.set(0.0f, 0.0f, 0.0f);
|
||||
mPosition.y = unk1C4;
|
||||
offLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK400000
|
||||
| LIVE_FLAG_UNK8000000);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_SINKING
|
||||
| LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED);
|
||||
} else {
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK8000000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED)) {
|
||||
mVelocity.y -= getGravityY();
|
||||
if (mVelocity.y < mVelocityMinY)
|
||||
mVelocity.y = mVelocityMinY;
|
||||
@@ -466,7 +466,7 @@ void TBaseNPC::npcStepIn()
|
||||
|
||||
void TBaseNPC::npcTalkIn()
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK80000);
|
||||
onLiveFlag(LIVE_FLAG_TALKING);
|
||||
if (mActorType != ACTOR_TYPE_NPC_DUMMY
|
||||
&& mActorType != ACTOR_TYPE_NPC_BOARD) {
|
||||
if (!isSunflowerReviving()) {
|
||||
@@ -509,7 +509,7 @@ void TBaseNPC::npcTalkOut()
|
||||
{
|
||||
mTalkForbidCount = 60;
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK80000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_TALKING)) {
|
||||
mWalkForbidCount = 120;
|
||||
if (isPeachTired())
|
||||
peachTiredOut_();
|
||||
@@ -523,7 +523,7 @@ void TBaseNPC::npcTalkOut()
|
||||
}
|
||||
}
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK80000);
|
||||
offLiveFlag(LIVE_FLAG_TALKING);
|
||||
changeNerveFromTalk_();
|
||||
if (mThrowCtrl == nullptr && mActorType == ACTOR_TYPE_NPC_MONTE_ME)
|
||||
requestNpcAnm_(NPC_ANM_KIND_UNK4, NPC_STOP_MOTION_BLEND_ON);
|
||||
@@ -566,7 +566,7 @@ void TBaseNPC::npcWetIn()
|
||||
EVar6 = NPC_STOP_MOTION_BLEND_OFF;
|
||||
} else {
|
||||
if (isNormalMonte() || mActorType == ACTOR_TYPE_NPC_MONTE_WC) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK4000000)
|
||||
if (!checkLiveFlag(LIVE_FLAG_BALL_HIT_REACTION)
|
||||
&& MsRandF() < 0.5f)
|
||||
EVar7 = NPC_ANM_KIND_UNKB;
|
||||
else
|
||||
@@ -579,7 +579,7 @@ void TBaseNPC::npcWetIn()
|
||||
} else if (!(mActorType < ACTOR_TYPE_NPC_PEACH
|
||||
&& mActorType >= ACTOR_TYPE_NPC_KINOPIO)) {
|
||||
(void)mActorType; // TODO: uh, inlining maybe?
|
||||
} else if (!checkLiveFlag(LIVE_FLAG_UNK4000000)) {
|
||||
} else if (!checkLiveFlag(LIVE_FLAG_BALL_HIT_REACTION)) {
|
||||
if (MsRandF() < 0.5f)
|
||||
EVar7 = NPC_ANM_KIND_UNKB;
|
||||
}
|
||||
@@ -654,13 +654,13 @@ bool TBaseNPC::npcWetting()
|
||||
break;
|
||||
|
||||
case NPC_ANM_KIND_UNK4:
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK2000000))
|
||||
if (checkLiveFlag(LIVE_FLAG_ANGRY))
|
||||
npcMadding();
|
||||
break;
|
||||
|
||||
case NPC_ANM_KIND_MAD:
|
||||
case NPC_ANM_KIND_UNKB:
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK2000000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_ANGRY)) {
|
||||
if (npcMadding()) {
|
||||
npcWetOut();
|
||||
result = true;
|
||||
@@ -732,8 +732,8 @@ bool TBaseNPC::npcWetting()
|
||||
|
||||
void TBaseNPC::npcWetOut()
|
||||
{
|
||||
offLiveFlag(LIVE_FLAG_UNK2000000);
|
||||
offLiveFlag(LIVE_FLAG_UNK4000000);
|
||||
offLiveFlag(LIVE_FLAG_ANGRY);
|
||||
offLiveFlag(LIVE_FLAG_BALL_HIT_REACTION);
|
||||
if (mSpine->getTop() == &TNerveNPCTalk::theNerve())
|
||||
requestTalkAnm_();
|
||||
else if (mActorType == ACTOR_TYPE_NPC_MONTE_ME)
|
||||
@@ -784,7 +784,7 @@ bool TBaseNPC::npcThrowing()
|
||||
|
||||
void TBaseNPC::npcMadIn()
|
||||
{
|
||||
onLiveFlag(LIVE_FLAG_UNK2000000);
|
||||
onLiveFlag(LIVE_FLAG_ANGRY);
|
||||
|
||||
if (mActorType == ACTOR_TYPE_NPC_MONTE_MF
|
||||
|| checkActionFlag(NPC_ACTION_UNK1)) {
|
||||
@@ -799,7 +799,7 @@ bool TBaseNPC::npcMadding()
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK2000000)) {
|
||||
if (!checkLiveFlag(LIVE_FLAG_ANGRY)) {
|
||||
result = true;
|
||||
} else {
|
||||
switch (mLodAnm->getCurrentAnmKind()) {
|
||||
@@ -824,7 +824,7 @@ bool TBaseNPC::npcMadding()
|
||||
case NPC_ANM_KIND_UNKB:
|
||||
if (mMActor->isCurAnmAlreadyEnd(ANM_TYPE_BCK)) {
|
||||
result = true;
|
||||
offLiveFlag(LIVE_FLAG_UNK2000000);
|
||||
offLiveFlag(LIVE_FLAG_ANGRY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -983,7 +983,7 @@ bool TBaseNPC::sunflowerReviving()
|
||||
&& mLodAnm->getCurrentAnmKind() == NPC_ANM_KIND_UNK1A) {
|
||||
if (mMActor->isCurAnmAlreadyEnd(ANM_TYPE_BCK)) {
|
||||
offUnk1D8(UNK1D8_FLAG_UNK2);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK80000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_TALKING)) {
|
||||
requestTalkAnm_();
|
||||
} else {
|
||||
npcWaitIn();
|
||||
|
||||
+12
-11
@@ -444,7 +444,8 @@ BOOL TBaseNPC::receiveMessage(THitActor* param_1, u32 param_2)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (param_2 == HIT_MESSAGE_TAKE && checkLiveFlag(LIVE_FLAG_UNK100000)
|
||||
if (param_2 == HIT_MESSAGE_TAKE
|
||||
&& checkLiveFlag(TBaseNPC::LIVE_FLAG_CAN_BE_TAKEN)
|
||||
&& mHolder == nullptr) {
|
||||
behaveToBeTaken_(param_1);
|
||||
result = true;
|
||||
@@ -548,18 +549,18 @@ void TBaseNPC::moveObject()
|
||||
|
||||
control();
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK400000))
|
||||
if (!checkLiveFlag(LIVE_FLAG_SINKING))
|
||||
calcRideMomentum();
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK400000)
|
||||
&& !checkLiveFlag(LIVE_FLAG_UNK1000000))
|
||||
if (checkLiveFlag(LIVE_FLAG_SINKING)
|
||||
&& !checkLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED))
|
||||
emitSinkEffect_();
|
||||
|
||||
if (mSpine->getLatestNerve()
|
||||
!= &TNerveNPCSetPosAfterSinkBottom::theNerve()) {
|
||||
execNpcObjCollision_();
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (!checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
bind();
|
||||
|
||||
if (mHolder != nullptr) {
|
||||
@@ -571,7 +572,7 @@ void TBaseNPC::moveObject()
|
||||
mRotation.y = SHORTANGLE2DEG(angle);
|
||||
}
|
||||
} else {
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK10) && isNerveWalk()
|
||||
if (!checkLiveFlag(LIVE_FLAG_NO_BIND) && isNerveWalk()
|
||||
&& !belongToGround() && mPositionDelta.y > 5.0f) {
|
||||
mPositionDelta.y = 5.0f;
|
||||
}
|
||||
@@ -640,7 +641,7 @@ void TBaseNPC::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
}
|
||||
|
||||
if (mActorType == ACTOR_TYPE_NPC_BOARD) {
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200 | LIVE_FLAG_DEAD))
|
||||
if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA | LIVE_FLAG_DEAD))
|
||||
return;
|
||||
|
||||
if (cue & CUE_MOVE)
|
||||
@@ -653,7 +654,7 @@ void TBaseNPC::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
bool bVar5 = true;
|
||||
if (checkLiveFlag(LIVE_FLAG_DEAD)) {
|
||||
bVar5 = false;
|
||||
} else if (checkLiveFlag(LIVE_FLAG_UNK200)) {
|
||||
} else if (checkLiveFlag(LIVE_FLAG_OUT_OF_AREA)) {
|
||||
bVar5 = false;
|
||||
} else if ((cue & (CUE_CALC_VIEW | CUE_ENTRY))
|
||||
&& checkLiveFlag(LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_HIDDEN)) {
|
||||
@@ -679,7 +680,7 @@ void TBaseNPC::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
}
|
||||
|
||||
if (!bVar5) {
|
||||
offLiveFlag(LIVE_FLAG_UNK20000 | LIVE_FLAG_UNK40000);
|
||||
offLiveFlag(TBaseNPC::LIVE_FLAG_TALKABLE | LIVE_FLAG_TALK_REQUESTED);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -697,7 +698,7 @@ void TBaseNPC::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
MSD_SE_NPC_BURNING, &mPosition, 0, nullptr, 0, 4);
|
||||
}
|
||||
|
||||
if (!checkLiveFlag(LIVE_FLAG_UNK1000000 | LIVE_FLAG_HIDDEN
|
||||
if (!checkLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED | LIVE_FLAG_HIDDEN
|
||||
| LIVE_FLAG_CLIPPED_OUT))
|
||||
emitParticle_();
|
||||
|
||||
@@ -714,7 +715,7 @@ void TBaseNPC::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
}
|
||||
|
||||
if (cue & CUE_ENTRY) {
|
||||
offLiveFlag(LIVE_FLAG_UNK1000000);
|
||||
offLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED);
|
||||
JGeometry::TVec3<f32> diff;
|
||||
diff.sub(mPosition, gpCamera->unk124);
|
||||
if (diff.squared() > CLBSquared(mIndividualParams->mAllDLLockDist.get())
|
||||
|
||||
+28
-25
@@ -199,7 +199,7 @@ void TBaseNPC::changeNerveFromTalk_()
|
||||
}
|
||||
}
|
||||
|
||||
offLiveFlag(LIVE_FLAG_UNK2000000);
|
||||
offLiveFlag(LIVE_FLAG_ANGRY);
|
||||
}
|
||||
|
||||
void TBaseNPC::changeNerveToWet_() { }
|
||||
@@ -220,7 +220,7 @@ void TBaseNPC::releaseTaken_()
|
||||
mVelocity.set(fVar1 * JMASSin(uVar4), mPtrSaveNormal->mThrowSpeedY.get(),
|
||||
fVar1 * JMASCos(uVar4));
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK10000000);
|
||||
onLiveFlag(LIVE_FLAG_ENABLE_WALL_COLLISION);
|
||||
|
||||
unk1DC = CLBPalFrame(15l);
|
||||
unk158 = nullptr;
|
||||
@@ -241,7 +241,8 @@ void TBaseNPC::behaveToBeTaken_(THitActor* param_1)
|
||||
|
||||
mInbetweenCtrl->startPosBlend();
|
||||
onHitFilter(HIT_FILTER_NO_COLLISION);
|
||||
offLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK20000 | LIVE_FLAG_UNK400000);
|
||||
offLiveFlag(LIVE_FLAG_NO_BIND | TBaseNPC::LIVE_FLAG_TALKABLE
|
||||
| LIVE_FLAG_SINKING);
|
||||
if (mActorType == ACTOR_TYPE_NPC_PEACH) {
|
||||
peachParasolOut_();
|
||||
mBalloonCtrl->setNextMessage(0xE004F, 0x2EE);
|
||||
@@ -388,7 +389,7 @@ void TBaseNPC::behaveToHitObject_(THitActor* param_1,
|
||||
&& (mSpine->getCurrentNerve() != &TNerveNPCTalk::theNerve()
|
||||
|| mSpine->getTime() >= 4)) {
|
||||
if (param_2 == 1)
|
||||
onLiveFlag(LIVE_FLAG_UNK4000000);
|
||||
onLiveFlag(LIVE_FLAG_BALL_HIT_REACTION);
|
||||
mSpine->pushNerve(&TNerveNPCWet::theNerve());
|
||||
}
|
||||
}
|
||||
@@ -428,10 +429,11 @@ bool TBaseNPC::isStateGoToMad_() const
|
||||
bool TBaseNPC::isNowCanTaken() const
|
||||
{
|
||||
bool result = false;
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK100000) && mActorType != ACTOR_TYPE_NPC_DUMMY
|
||||
&& mHolder == nullptr && mHeldObject == nullptr
|
||||
if (checkLiveFlag(TBaseNPC::LIVE_FLAG_CAN_BE_TAKEN)
|
||||
&& mActorType != ACTOR_TYPE_NPC_DUMMY && mHolder == nullptr
|
||||
&& mHeldObject == nullptr
|
||||
&& !checkLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN
|
||||
| LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_UNK40000
|
||||
| LIVE_FLAG_CLIPPED_OUT | LIVE_FLAG_TALK_REQUESTED
|
||||
| LIVE_FLAG_SINK_BOTTOM)
|
||||
&& !checkHitFilter(HIT_FILTER_NO_COLLISION) && isNerveCanGoToTaken()) {
|
||||
result = true;
|
||||
@@ -445,16 +447,16 @@ void TBaseNPC::changeNerveProc_()
|
||||
const TNerveBase<TLiveActor>* latestNerve = mSpine->getLatestNerve();
|
||||
if (latestNerve == &TNerveNPCTalk::theNerve()) {
|
||||
bVar4 = true;
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
offLiveFlag(LIVE_FLAG_UNK40000);
|
||||
onLiveFlag(TBaseNPC::LIVE_FLAG_TALKABLE);
|
||||
offLiveFlag(LIVE_FLAG_TALK_REQUESTED);
|
||||
} else {
|
||||
bool bVar5 = isTalkable_();
|
||||
|
||||
if (bVar5) {
|
||||
onLiveFlag(LIVE_FLAG_UNK20000);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK40000)) {
|
||||
onLiveFlag(TBaseNPC::LIVE_FLAG_TALKABLE);
|
||||
if (checkLiveFlag(LIVE_FLAG_TALK_REQUESTED)) {
|
||||
bVar4 = true;
|
||||
offLiveFlag(LIVE_FLAG_UNK40000);
|
||||
offLiveFlag(LIVE_FLAG_TALK_REQUESTED);
|
||||
const TNerveBase<TLiveActor>* current
|
||||
= mSpine->getCurrentNerve();
|
||||
if (current == &TNerveNPCWet::theNerve()
|
||||
@@ -464,11 +466,11 @@ void TBaseNPC::changeNerveProc_()
|
||||
} else {
|
||||
mSpine->pushNerve(&TNerveNPCTalk::theNerve());
|
||||
}
|
||||
offLiveFlag(LIVE_FLAG_UNK2000000);
|
||||
offLiveFlag(LIVE_FLAG_ANGRY);
|
||||
}
|
||||
} else {
|
||||
offLiveFlag(LIVE_FLAG_UNK20000);
|
||||
offLiveFlag(LIVE_FLAG_UNK40000);
|
||||
offLiveFlag(TBaseNPC::LIVE_FLAG_TALKABLE);
|
||||
offLiveFlag(LIVE_FLAG_TALK_REQUESTED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -507,7 +509,7 @@ void TBaseNPC::changeNerveProc_()
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK400000))
|
||||
if (checkLiveFlag(LIVE_FLAG_SINKING))
|
||||
return;
|
||||
|
||||
if (isAirborne())
|
||||
@@ -519,8 +521,9 @@ void TBaseNPC::changeNerveProc_()
|
||||
if (isNerveCanGoToSink()) {
|
||||
unk1C4 = mPosition.y;
|
||||
mVelocity.set(0.0f, 0.0f, 0.0f);
|
||||
offLiveFlag(LIVE_FLAG_UNK20000 | LIVE_FLAG_UNK8000000);
|
||||
onLiveFlag(LIVE_FLAG_UNK400000 | LIVE_FLAG_UNK10);
|
||||
offLiveFlag(TBaseNPC::LIVE_FLAG_TALKABLE
|
||||
| LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED);
|
||||
onLiveFlag(LIVE_FLAG_SINKING | LIVE_FLAG_NO_BIND);
|
||||
npcFallIn();
|
||||
mSpine->pushNerve(&TNerveNPCSink::theNerve());
|
||||
}
|
||||
@@ -532,11 +535,11 @@ void TBaseNPC::setPosAndInitAfterSinkBottom()
|
||||
|
||||
bool cVar8 = gpPollution->isPolluted(pos.x, pos.y, pos.z);
|
||||
offLiveFlag(LIVE_FLAG_DEAD | LIVE_FLAG_HIDDEN | LIVE_FLAG_CLIPPED_OUT
|
||||
| LIVE_FLAG_UNK8 | LIVE_FLAG_UNK10 | LIVE_FLAG_UNK20000
|
||||
| LIVE_FLAG_UNK40000 | LIVE_FLAG_UNK400000
|
||||
| LIVE_FLAG_SINK_BOTTOM | LIVE_FLAG_UNK2000000
|
||||
| LIVE_FLAG_UNK8000000);
|
||||
onLiveFlag(LIVE_FLAG_UNK1000000);
|
||||
| LIVE_FLAG_NO_SHADOW | LIVE_FLAG_NO_BIND
|
||||
| TBaseNPC::LIVE_FLAG_TALKABLE | LIVE_FLAG_TALK_REQUESTED
|
||||
| LIVE_FLAG_SINKING | LIVE_FLAG_SINK_BOTTOM | LIVE_FLAG_ANGRY
|
||||
| LIVE_FLAG_SINK_RECOVERY_JUMP_STARTED);
|
||||
onLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED);
|
||||
mHeldObject = nullptr;
|
||||
mHolder = nullptr;
|
||||
if (unk15C != nullptr)
|
||||
@@ -554,7 +557,7 @@ void TBaseNPC::setPosAndInitAfterSinkBottom()
|
||||
mSpine->setDefaultNext();
|
||||
mSpine->pushNerve(&TNerveNPCSink::theNerve());
|
||||
mSpine->pushNerve(&TNerveNPCSink::theNerve());
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK400000
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_SINKING
|
||||
| LIVE_FLAG_SINK_BOTTOM);
|
||||
unk1C4 = mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
pos.x, pos.y + getHeadHeight(), pos.z, &mGroundPlane);
|
||||
@@ -566,7 +569,7 @@ void TBaseNPC::setPosAndInitAfterSinkBottom()
|
||||
mSpine->pushNerve(mSpine->getDefault());
|
||||
pos.y += 2.0f;
|
||||
mVelocity.set(0.0f, 5.0f, 0.0f);
|
||||
onLiveFlag(LIVE_FLAG_UNK8000);
|
||||
onLiveFlag(LIVE_FLAG_JUMPING);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ void TBaseNPC::bind()
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
}
|
||||
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10000000)) {
|
||||
if (checkLiveFlag(LIVE_FLAG_ENABLE_WALL_COLLISION)) {
|
||||
gpMap->isTouchedOneWallAndMoveXZ(&nextPos.x, nextPos.y + mHeadHeight,
|
||||
&nextPos.z, 150.0f);
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ static void evOnTalkToDummyNpc(TSpcTypedInterp<TEventWatcher>* interp,
|
||||
= static_cast<TBaseNPC*>(JDrama::TNameRefGen::search("ダミーNPC"));
|
||||
if (dummyNpc != nullptr) {
|
||||
dummyNpc->offLiveFlag(LIVE_FLAG_DEAD);
|
||||
dummyNpc->offLiveFlag(LIVE_FLAG_UNK40000);
|
||||
dummyNpc->offLiveFlag(TBaseNPC::LIVE_FLAG_TALK_REQUESTED);
|
||||
dummyNpc->mTalkForbidCount = 120;
|
||||
}
|
||||
|
||||
@@ -312,7 +312,7 @@ static void evCheckMonteClear(TSpcTypedInterp<TEventWatcher>* interp,
|
||||
TBaseNPC* npc = static_cast<TBaseNPC*>(JDrama::TNameRefGen::search(buffer));
|
||||
|
||||
int b;
|
||||
if (!npc->checkLiveFlag(LIVE_FLAG_UNK400000) && npc->isClean())
|
||||
if (!npc->checkLiveFlag(TBaseNPC::LIVE_FLAG_SINKING) && npc->isClean())
|
||||
b = true;
|
||||
else
|
||||
b = false;
|
||||
|
||||
@@ -40,7 +40,7 @@ static const char* cNeckJointName = "kubi";
|
||||
void TBaseNPC::initNpcLight_()
|
||||
{
|
||||
mMActor->setLightType(LIGHT_TYPE_OBJECT);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK10))
|
||||
if (checkLiveFlag(LIVE_FLAG_NO_BIND))
|
||||
mGroundHeight = gpMap->checkGroundIgnoreWaterSurface(
|
||||
mPosition.x, mPosition.y + 10.0f, mPosition.z, &mGroundPlane);
|
||||
}
|
||||
@@ -157,7 +157,8 @@ void TBaseNPC::init(TLiveManager* param_1)
|
||||
mScaledBodyRadius = mScaling.x * mIndividualParams->mCircleShadowSize.get();
|
||||
|
||||
if (mActorType == ACTOR_TYPE_NPC_BOARD) {
|
||||
onLiveFlag(LIVE_FLAG_UNK2000 | LIVE_FLAG_UNK10 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING | LIVE_FLAG_NO_BIND
|
||||
| LIVE_FLAG_NO_SHADOW);
|
||||
initNpcObjCollision_(pTVar3);
|
||||
mSpine->initWith(&TNerveNPCWaitMarioApproach::theNerve());
|
||||
mTurnSpeed = 0.0f;
|
||||
@@ -165,21 +166,21 @@ void TBaseNPC::init(TLiveManager* param_1)
|
||||
return;
|
||||
}
|
||||
|
||||
onLiveFlag(LIVE_FLAG_UNK1000000);
|
||||
onLiveFlag(LIVE_FLAG_RENDER_ENTRY_SKIPPED);
|
||||
onLiveFlag(LIVE_FLAG_AIRBORNE);
|
||||
onLiveFlag(LIVE_FLAG_UNK1000);
|
||||
onLiveFlag(LIVE_FLAG_IGNORE_WATER_IN_GROUND_CHECKS);
|
||||
if (SMSGetMarDirector()->getCurrentStage() != 8
|
||||
|| (strcmp(mName, cNotUseFastCubeViewObjName0) != 0
|
||||
&& strcmp(mName, cNotUseFastCubeViewObjName1) != 0)) {
|
||||
onLiveFlag(LIVE_FLAG_UNK2000);
|
||||
onLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING);
|
||||
}
|
||||
|
||||
if (mActorType == ACTOR_TYPE_NPC_MONTE_ME)
|
||||
onLiveFlag(LIVE_FLAG_UNK10 | LIVE_FLAG_UNK8);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND | LIVE_FLAG_NO_SHADOW);
|
||||
|
||||
if (isJellyFishMare() || isSunflower()
|
||||
|| mActorType == ACTOR_TYPE_NPC_MONTE_MF) {
|
||||
onLiveFlag(LIVE_FLAG_UNK10);
|
||||
onLiveFlag(LIVE_FLAG_NO_BIND);
|
||||
}
|
||||
|
||||
if (mMActor->getAnmBck())
|
||||
|
||||
@@ -318,7 +318,7 @@ void TNPCManager::clipEnemies(JDrama::TGraphics* graphics)
|
||||
JGeometry::TVec3<f32> checkPos = actor->mPosition;
|
||||
checkPos.y += 75.0f;
|
||||
|
||||
if (actor->checkLiveFlag(LIVE_FLAG_UNK2000)
|
||||
if (actor->checkLiveFlag(LIVE_FLAG_ENABLE_FAST_CUBE_CULLING)
|
||||
&& SMS_IsInOtherFastCube(checkPos)) {
|
||||
actor->onLiveFlag(LIVE_FLAG_CLIPPED_OUT);
|
||||
continue;
|
||||
@@ -337,7 +337,7 @@ void TNPCManager::perform(u32 cue, JDrama::TGraphics* graphics)
|
||||
if (cue & CUE_ENTRY) {
|
||||
for (int i = 0, e = mObjNum; i < e; ++i) {
|
||||
TBaseNPC* npc = (TBaseNPC*)unk18[i];
|
||||
npc->onLiveFlag(LIVE_FLAG_UNK1000000);
|
||||
npc->onLiveFlag(TBaseNPC::LIVE_FLAG_RENDER_ENTRY_SKIPPED);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ DEFINE_NERVE(TNerveNPCGraphWander, TLiveActor)
|
||||
if (bVar6) {
|
||||
spine->pushAfterCurrent(&TNerveNPCUTurn::theNerve());
|
||||
if (bVar5)
|
||||
self->onLiveFlag(LIVE_FLAG_UNK200000);
|
||||
self->onLiveFlag(TBaseNPC::LIVE_FLAG_UTURN_POSITIVE_YAW);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -64,7 +64,7 @@ DEFINE_NERVE(TNerveNPCUTurn, TLiveActor)
|
||||
|
||||
if (self->execUTurn()) {
|
||||
self->mMarchSpeed = 0.0f;
|
||||
self->offLiveFlag(LIVE_FLAG_UNK200000);
|
||||
self->offLiveFlag(TBaseNPC::LIVE_FLAG_UTURN_POSITIVE_YAW);
|
||||
spine->pushAfterCurrent(&TNerveNPCGraphWander::theNerve());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ bool TBaseNPC::execUTurn()
|
||||
|
||||
targetYaw = MsWrap(targetYaw, 0.0f, 360.0f);
|
||||
mRotation.y = MsWrap(mRotation.y, 0.0f, 360.0f);
|
||||
if (checkLiveFlag(LIVE_FLAG_UNK200000)) {
|
||||
if (checkLiveFlag(TBaseNPC::LIVE_FLAG_UTURN_POSITIVE_YAW)) {
|
||||
if (mRotation.y > targetYaw)
|
||||
mRotation.y -= 360.0f;
|
||||
} else {
|
||||
|
||||
Loaded 100 of 106 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user