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 )
|
int CMAGrunt::IRelationship ( CMBaseEntity *pTarget )
|
||||||
{
|
{
|
||||||
|
// ditto hgrunt.cpp
|
||||||
|
/*
|
||||||
if ( strcmp(STRING(pTarget->pev->model), "models/hgrunt.mdl") == 0 )
|
if ( strcmp(STRING(pTarget->pev->model), "models/hgrunt.mdl") == 0 )
|
||||||
{
|
{
|
||||||
return R_NM;
|
return R_NM;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return CMBaseMonster :: IRelationship( pTarget );
|
return CMBaseMonster :: IRelationship( pTarget );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,6 +316,11 @@ void CMAGrunt :: PainSound ( void )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMAGrunt :: Classify ( 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;
|
return CLASS_ALIEN_MILITARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,15 @@ void CMApache::Precache( void )
|
|||||||
apache_rocket.Precache();
|
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 )
|
void CMApache::NullThink( void )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -186,6 +186,11 @@ int CMBarney :: ISoundMask ( void)
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMBarney :: Classify ( 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;
|
return CLASS_PLAYER_ALLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -299,6 +299,11 @@ void CMBigMomma :: KeyValue( KeyValueData *pkvd )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMBigMomma :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -357,6 +357,11 @@ BOOL CMBullsquid :: FValidateHintType ( short sHint )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMBullsquid :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public:
|
|||||||
Vector m_HackedGunPos; // HACK until we can query end of gun
|
Vector m_HackedGunPos; // HACK until we can query end of gun
|
||||||
|
|
||||||
string_t m_szMonsterName; // Monster name to display on HUD
|
string_t m_szMonsterName; // Monster name to display on HUD
|
||||||
|
int m_iClassifyOverride; // Overriden classification for this monster
|
||||||
|
|
||||||
void KeyValue( KeyValueData *pkvd );
|
void KeyValue( KeyValueData *pkvd );
|
||||||
|
|
||||||
@@ -794,7 +795,7 @@ class CMApache : public CMBaseMonster
|
|||||||
public:
|
public:
|
||||||
void Spawn( void );
|
void Spawn( void );
|
||||||
void Precache( void );
|
void Precache( void );
|
||||||
int Classify( void ) { return CLASS_HUMAN_MILITARY; };
|
int Classify( void );
|
||||||
int BloodColor( void ) { return DONT_BLEED; }
|
int BloodColor( void ) { return DONT_BLEED; }
|
||||||
void Killed( entvars_t *pevAttacker, int iGib );
|
void Killed( entvars_t *pevAttacker, int iGib );
|
||||||
void GibMonster( void );
|
void GibMonster( void );
|
||||||
|
|||||||
@@ -81,6 +81,11 @@ const char *CMController::pDeathSounds[] =
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMController :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MILITARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -624,6 +624,11 @@ void CMGargantua :: PrescheduleThink( void )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMGargantua :: Classify ( 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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,6 +88,11 @@ int CMHAssassin :: ISoundMask ( void)
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMHAssassin :: Classify ( 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;
|
return CLASS_HUMAN_MILITARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,6 +119,11 @@ const char *CMHeadCrab::pBiteSounds[] =
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMHeadCrab :: Classify ( void )
|
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;
|
return CLASS_ALIEN_PREY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -174,12 +174,15 @@ void CMHGrunt :: SpeakSentence( void )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMHGrunt::IRelationship ( CMBaseEntity *pTarget )
|
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 ))
|
( strcmp(STRING(pTarget->pev->model), "models/garg.mdl") == 0 ))
|
||||||
{
|
{
|
||||||
return R_NM;
|
return R_NM;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return CMBaseMonster::IRelationship( pTarget );
|
return CMBaseMonster::IRelationship( pTarget );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -596,6 +599,11 @@ void CMHGrunt :: CheckAmmo ( void )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMHGrunt :: Classify ( 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;
|
return CLASS_HUMAN_MILITARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -126,13 +126,23 @@ int CMHornet::IRelationship ( CMBaseEntity *pTarget )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMHornet::Classify ( void )
|
int CMHornet::Classify ( void )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
if ( pev->owner && pev->owner->v.flags & FL_CLIENT)
|
if ( pev->owner && pev->owner->v.flags & FL_CLIENT)
|
||||||
{
|
{
|
||||||
return CLASS_PLAYER_BIOWEAPON;
|
return CLASS_PLAYER_BIOWEAPON;
|
||||||
}
|
}
|
||||||
|
|
||||||
return CLASS_ALIEN_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 )
|
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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,11 @@ const char *CMISlave::pDeathSounds[] =
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMISlave :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MILITARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2514,6 +2514,11 @@ void CMBaseMonster :: KeyValue( KeyValueData *pkvd )
|
|||||||
m_szMonsterName = ALLOC_STRING( pkvd->szValue );
|
m_szMonsterName = ALLOC_STRING( pkvd->szValue );
|
||||||
pkvd->fHandled = TRUE;
|
pkvd->fHandled = TRUE;
|
||||||
}
|
}
|
||||||
|
else if (FStrEq(pkvd->szKeyName, "classify"))
|
||||||
|
{
|
||||||
|
m_iClassifyOverride = atoi( pkvd->szValue );
|
||||||
|
pkvd->fHandled = TRUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CMBaseToggle::KeyValue( pkvd );
|
CMBaseToggle::KeyValue( pkvd );
|
||||||
|
|||||||
@@ -517,6 +517,11 @@ void CMScientist :: RunTask( Task_t *pTask )
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMScientist :: Classify ( void )
|
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;
|
return CLASS_HUMAN_PASSIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,12 @@ float CMSqueakGrenade::m_flNextBounceSoundTime = 0;
|
|||||||
|
|
||||||
int CMSqueakGrenade :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -992,7 +992,15 @@ int CMBaseTurret::MoveTurret(void)
|
|||||||
int CMBaseTurret::Classify ( void )
|
int CMBaseTurret::Classify ( void )
|
||||||
{
|
{
|
||||||
if (m_iOn || m_iAutoStart)
|
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;
|
return CLASS_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,11 @@ const char *CMZombie::pPainSounds[] =
|
|||||||
//=========================================================
|
//=========================================================
|
||||||
int CMZombie :: Classify ( void )
|
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;
|
return CLASS_ALIEN_MONSTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user