From ad1c3470b3b13e1784316694a65d2683426cf89f Mon Sep 17 00:00:00 2001 From: Night Owl Date: Tue, 7 Nov 2017 22:49:49 +0500 Subject: [PATCH] add monster_gus and monster_zombie_barney implementations. --- dlls/scientist.cpp | 30 +++++++++++++++++++++++++----- dlls/zombie.cpp | 12 ++++++++++-- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/dlls/scientist.cpp b/dlls/scientist.cpp index 7e94b286..b05de12b 100644 --- a/dlls/scientist.cpp +++ b/dlls/scientist.cpp @@ -119,6 +119,7 @@ private: }; LINK_ENTITY_TO_CLASS( monster_scientist, CScientist ) +LINK_ENTITY_TO_CLASS( monster_gus, CScientist ) TYPEDESCRIPTION CScientist::m_SaveData[] = { @@ -639,7 +640,10 @@ void CScientist::Spawn( void ) { Precache(); - SET_MODEL( ENT( pev ), "models/scientist.mdl" ); + if( FClassnameIs( pev, "monster_gus" ) ) + SET_MODEL( ENT( pev ), "models/gus.mdl" ); + else + SET_MODEL( ENT( pev ), "models/scientist.mdl" ); UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX ); pev->solid = SOLID_SLIDEBOX; @@ -676,7 +680,11 @@ void CScientist::Spawn( void ) //========================================================= void CScientist::Precache( void ) { - PRECACHE_MODEL( "models/scientist.mdl" ); + if( FClassnameIs( pev, "monster_gus" ) ) + PRECACHE_MODEL( "models/gus.mdl" ); + else + PRECACHE_MODEL( "models/scientist.mdl" ); + PRECACHE_SOUND( "scientist/sci_pain1.wav" ); PRECACHE_SOUND( "scientist/sci_pain2.wav" ); PRECACHE_SOUND( "scientist/sci_pain3.wav" ); @@ -1052,7 +1060,10 @@ MONSTERSTATE CScientist::GetIdealState( void ) } BOOL CScientist::CanHeal( void ) -{ +{ + if( FClassnameIs( pev, "monster_gus" ) ) + return FALSE; + if( ( m_healTime > gpGlobals->time ) || ( m_hTargetEnt == 0 ) || ( m_hTargetEnt->pev->health > ( m_hTargetEnt->pev->max_health * 0.5 ) ) ) return FALSE; @@ -1121,14 +1132,23 @@ void CDeadScientist::KeyValue( KeyValueData *pkvd ) CBaseMonster::KeyValue( pkvd ); } LINK_ENTITY_TO_CLASS( monster_scientist_dead, CDeadScientist ) +LINK_ENTITY_TO_CLASS( monster_gus_dead, CDeadScientist ) // // ********** DeadScientist SPAWN ********** // void CDeadScientist::Spawn() { - PRECACHE_MODEL( "models/scientist.mdl" ); - SET_MODEL( ENT( pev ), "models/scientist.mdl" ); + if( FClassnameIs( pev, "monster_gus" ) ) + { + PRECACHE_MODEL( "models/gus.mdl" ); + SET_MODEL( ENT( pev ), "models/gus.mdl" ); + } + else + { + PRECACHE_MODEL( "models/scientist.mdl" ); + SET_MODEL( ENT( pev ), "models/scientist.mdl" ); + } pev->effects = 0; pev->sequence = 0; diff --git a/dlls/zombie.cpp b/dlls/zombie.cpp index 96f032e6..5116ef8e 100644 --- a/dlls/zombie.cpp +++ b/dlls/zombie.cpp @@ -64,6 +64,7 @@ public: }; LINK_ENTITY_TO_CLASS( monster_zombie, CZombie ) +LINK_ENTITY_TO_CLASS( monster_zombie_barney, CZombie ) const char *CZombie::pAttackHitSounds[] = { @@ -266,7 +267,11 @@ void CZombie::Spawn() { Precache(); - SET_MODEL( ENT( pev ), "models/zombie.mdl" ); + if( FClassnameIs( pev, "monster_zombie_barney" ) ) + SET_MODEL( ENT( pev ), "models/zombie_barney.mdl" ); + else + SET_MODEL( ENT( pev ), "models/zombie.mdl" ); + UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX ); pev->solid = SOLID_SLIDEBOX; @@ -288,7 +293,10 @@ void CZombie::Precache() { size_t i; - PRECACHE_MODEL( "models/zombie.mdl" ); + if( FClassnameIs( pev, "monster_zombie_barney" ) ) + PRECACHE_MODEL( "models/zombie_barney.mdl" ); + else + PRECACHE_MODEL( "models/zombie.mdl" ); for( i = 0; i < ARRAYSIZE( pAttackHitSounds ); i++ ) PRECACHE_SOUND( pAttackHitSounds[i] );