Add "classify" keyvalue to override monster classification.
This commit is contained in:
@@ -125,11 +125,14 @@ const char *CMAGrunt::pAlertSounds[] =
|
||||
//=========================================================
|
||||
int CMAGrunt::IRelationship ( CMBaseEntity *pTarget )
|
||||
{
|
||||
// ditto hgrunt.cpp
|
||||
/*
|
||||
if ( strcmp(STRING(pTarget->pev->model), "models/hgrunt.mdl") == 0 )
|
||||
{
|
||||
return R_NM;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
return CMBaseMonster :: IRelationship( pTarget );
|
||||
}
|
||||
|
||||
@@ -313,6 +316,11 @@ void CMAGrunt :: PainSound ( void )
|
||||
//=========================================================
|
||||
int CMAGrunt :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MILITARY;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,15 @@ void CMApache::Precache( void )
|
||||
apache_rocket.Precache();
|
||||
}
|
||||
|
||||
|
||||
int CMApache :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_HUMAN_MILITARY;
|
||||
}
|
||||
|
||||
void CMApache::NullThink( void )
|
||||
{
|
||||
|
||||
@@ -186,6 +186,11 @@ int CMBarney :: ISoundMask ( void)
|
||||
//=========================================================
|
||||
int CMBarney :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_PLAYER_ALLY;
|
||||
}
|
||||
|
||||
|
||||
@@ -299,6 +299,11 @@ void CMBigMomma :: KeyValue( KeyValueData *pkvd )
|
||||
//=========================================================
|
||||
int CMBigMomma :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
@@ -357,6 +357,11 @@ BOOL CMBullsquid :: FValidateHintType ( short sHint )
|
||||
//=========================================================
|
||||
int CMBullsquid :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ public:
|
||||
Vector m_HackedGunPos; // HACK until we can query end of gun
|
||||
|
||||
string_t m_szMonsterName; // Monster name to display on HUD
|
||||
int m_iClassifyOverride; // Overriden classification for this monster
|
||||
|
||||
void KeyValue( KeyValueData *pkvd );
|
||||
|
||||
@@ -794,7 +795,7 @@ class CMApache : public CMBaseMonster
|
||||
public:
|
||||
void Spawn( void );
|
||||
void Precache( void );
|
||||
int Classify( void ) { return CLASS_HUMAN_MILITARY; };
|
||||
int Classify( void );
|
||||
int BloodColor( void ) { return DONT_BLEED; }
|
||||
void Killed( entvars_t *pevAttacker, int iGib );
|
||||
void GibMonster( void );
|
||||
|
||||
@@ -81,6 +81,11 @@ const char *CMController::pDeathSounds[] =
|
||||
//=========================================================
|
||||
int CMController :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MILITARY;
|
||||
}
|
||||
|
||||
|
||||
@@ -624,6 +624,11 @@ void CMGargantua :: PrescheduleThink( void )
|
||||
//=========================================================
|
||||
int CMGargantua :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
@@ -88,6 +88,11 @@ int CMHAssassin :: ISoundMask ( void)
|
||||
//=========================================================
|
||||
int CMHAssassin :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_HUMAN_MILITARY;
|
||||
}
|
||||
|
||||
|
||||
@@ -119,6 +119,11 @@ const char *CMHeadCrab::pBiteSounds[] =
|
||||
//=========================================================
|
||||
int CMHeadCrab :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_PREY;
|
||||
}
|
||||
|
||||
|
||||
@@ -174,12 +174,15 @@ void CMHGrunt :: SpeakSentence( void )
|
||||
//=========================================================
|
||||
int CMHGrunt::IRelationship ( CMBaseEntity *pTarget )
|
||||
{
|
||||
if (( strcmp(STRING(pTarget->pev->model), "models/agrunt.mdl") == 0 ) ||
|
||||
// on single player, forcing R_NM makes sense.
|
||||
// on multiplayer, a custom classification will cause misbehaviour.
|
||||
/*
|
||||
if (( strcmp(STRING(pTarget->pev->model), "models/agrunt.mdl") == 0 ) ||
|
||||
( strcmp(STRING(pTarget->pev->model), "models/garg.mdl") == 0 ))
|
||||
{
|
||||
return R_NM;
|
||||
}
|
||||
|
||||
*/
|
||||
return CMBaseMonster::IRelationship( pTarget );
|
||||
}
|
||||
|
||||
@@ -596,6 +599,11 @@ void CMHGrunt :: CheckAmmo ( void )
|
||||
//=========================================================
|
||||
int CMHGrunt :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_HUMAN_MILITARY;
|
||||
}
|
||||
|
||||
|
||||
@@ -126,13 +126,23 @@ int CMHornet::IRelationship ( CMBaseEntity *pTarget )
|
||||
//=========================================================
|
||||
int CMHornet::Classify ( void )
|
||||
{
|
||||
|
||||
/*
|
||||
if ( pev->owner && pev->owner->v.flags & FL_CLIENT)
|
||||
{
|
||||
return CLASS_PLAYER_BIOWEAPON;
|
||||
}
|
||||
|
||||
return CLASS_ALIEN_BIOWEAPON;
|
||||
*/
|
||||
|
||||
// Ensure classify is consistent with the owner, in the event
|
||||
// it's classification was overriden.
|
||||
if ( pev->owner == NULL )
|
||||
return CLASS_ALIEN_BIOWEAPON;
|
||||
|
||||
// Ain't this going to make the hornets code "slow"?
|
||||
CMBaseMonster *pOwner = GetClassPtr((CMBaseMonster *)VARS(pev->owner));
|
||||
return pOwner->Classify();
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
||||
@@ -78,6 +78,11 @@ enum
|
||||
//=========================================================
|
||||
int CMHoundeye :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,11 @@ const char *CMISlave::pDeathSounds[] =
|
||||
//=========================================================
|
||||
int CMISlave :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MILITARY;
|
||||
}
|
||||
|
||||
|
||||
@@ -2514,6 +2514,11 @@ void CMBaseMonster :: KeyValue( KeyValueData *pkvd )
|
||||
m_szMonsterName = ALLOC_STRING( pkvd->szValue );
|
||||
pkvd->fHandled = TRUE;
|
||||
}
|
||||
else if (FStrEq(pkvd->szKeyName, "classify"))
|
||||
{
|
||||
m_iClassifyOverride = atoi( pkvd->szValue );
|
||||
pkvd->fHandled = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
CMBaseToggle::KeyValue( pkvd );
|
||||
|
||||
@@ -517,6 +517,11 @@ void CMScientist :: RunTask( Task_t *pTask )
|
||||
//=========================================================
|
||||
int CMScientist :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_HUMAN_PASSIVE;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,12 @@ float CMSqueakGrenade::m_flNextBounceSoundTime = 0;
|
||||
|
||||
int CMSqueakGrenade :: Classify ( void )
|
||||
{
|
||||
// E
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
@@ -992,7 +992,15 @@ int CMBaseTurret::MoveTurret(void)
|
||||
int CMBaseTurret::Classify ( void )
|
||||
{
|
||||
if (m_iOn || m_iAutoStart)
|
||||
return CLASS_MACHINE;
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_MACHINE;
|
||||
}
|
||||
|
||||
return CLASS_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,11 @@ const char *CMZombie::pPainSounds[] =
|
||||
//=========================================================
|
||||
int CMZombie :: Classify ( void )
|
||||
{
|
||||
if ( m_iClassifyOverride == -1 ) // helper
|
||||
return CLASS_NONE;
|
||||
else if ( m_iClassifyOverride > 0 )
|
||||
return m_iClassifyOverride; // override
|
||||
|
||||
return CLASS_ALIEN_MONSTER;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user