Add custom model support.

This commit is contained in:
Giegue
2023-02-24 14:49:55 -03:00
parent 513cde6231
commit d4ecb16bf7
29 changed files with 85 additions and 43 deletions

View File

@@ -35,7 +35,7 @@ void CMApache :: Spawn( void )
pev->movetype = MOVETYPE_FLY; pev->movetype = MOVETYPE_FLY;
pev->solid = SOLID_BBOX; pev->solid = SOLID_BBOX;
SET_MODEL(ENT(pev), "models/apache.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/apache.mdl"));
UTIL_SetSize( pev, Vector( -32, -32, -64 ), Vector( 32, 32, 0 ) ); UTIL_SetSize( pev, Vector( -32, -32, -64 ), Vector( 32, 32, 0 ) );
UTIL_SetOrigin( pev, pev->origin ); UTIL_SetOrigin( pev, pev->origin );

View File

@@ -345,7 +345,7 @@ void CMBarney :: Spawn()
// when a level is loaded, nobody will talk (time is reset to 0) // when a level is loaded, nobody will talk (time is reset to 0)
TalkInit(); TalkInit();
SET_MODEL(ENT(pev), "models/barney.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/barney.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -603,7 +603,7 @@ void CMBigMomma :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/big_mom.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/big_mom.mdl"));
// UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) ); // UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) );
UTIL_SetSize( pev, Vector( -64, -64, 0 ), Vector( 64, 64, 128 ) ); UTIL_SetSize( pev, Vector( -64, -64, 0 ), Vector( 64, 64, 128 ) );

View File

@@ -608,7 +608,7 @@ void CMBullsquid :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/bullsquid.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/bullsquid.mdl"));
UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) ); UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -20,6 +20,7 @@ public:
void MakeMonster( void ); void MakeMonster( void );
int m_iMonsterIndex;// index of the monster(s) that will be created. int m_iMonsterIndex;// index of the monster(s) that will be created.
string_t m_iszCustomModel;// custom model that the monster will use.
int m_cNumMonsters;// max number of monsters this ent can create int m_cNumMonsters;// max number of monsters this ent can create
int m_iMaxLiveChildren;// max number of monsters that this maker may have out at one time. int m_iMaxLiveChildren;// max number of monsters that this maker may have out at one time.

View File

@@ -302,7 +302,7 @@ void CMController :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/controller.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/controller.mdl"));
UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 )); UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ));
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -806,7 +806,6 @@ void world_precache(void)
PRECACHE_MODEL ("models/w_grenade.mdl"); PRECACHE_MODEL ("models/w_grenade.mdl");
} }
void MonsterCommand(void) void MonsterCommand(void)
{ {
int index; int index;

View File

@@ -664,7 +664,7 @@ void CMGargantua :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/garg.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/garg.mdl"));
UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) ); UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;
@@ -1327,7 +1327,7 @@ void CMBabyGargantua::Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/babygarg.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/babygarg.mdl"));
UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) ); UTIL_SetSize( pev, Vector( -32, -32, 0 ), Vector( 32, 32, 64 ) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -616,7 +616,7 @@ void CMGonome::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/gonome.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/gonome.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -215,7 +215,7 @@ void CMHAssassin :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/hassassin.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/hassassin.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -247,7 +247,7 @@ void CMHeadCrab :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/headcrab.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/headcrab.mdl"));
UTIL_SetSize(pev, Vector(-12, -12, 0), Vector(12, 12, 24)); UTIL_SetSize(pev, Vector(-12, -12, 0), Vector(12, 12, 24));
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;
@@ -461,7 +461,7 @@ Schedule_t* CMHeadCrab :: GetScheduleOfType ( int Type )
void CMBabyCrab :: Spawn( void ) void CMBabyCrab :: Spawn( void )
{ {
CMHeadCrab::Spawn(); CMHeadCrab::Spawn();
SET_MODEL(ENT(pev), "models/baby_headcrab.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/baby_headcrab.mdl"));
pev->rendermode = kRenderTransTexture; pev->rendermode = kRenderTransTexture;
pev->renderamt = 192; pev->renderamt = 192;
UTIL_SetSize(pev, Vector(-12, -12, 0), Vector(12, 12, 24)); UTIL_SetSize(pev, Vector(-12, -12, 0), Vector(12, 12, 24));

View File

@@ -831,7 +831,7 @@ void CMHGrunt :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/hgrunt.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/hgrunt.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -267,7 +267,7 @@ void CMHoundeye :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/houndeye.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/houndeye.mdl"));
UTIL_SetSize(pev, Vector ( -16, -16, 0 ), Vector ( 16, 16, 36 ) ); UTIL_SetSize(pev, Vector ( -16, -16, 0 ), Vector ( 16, 16, 36 ) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -202,7 +202,7 @@ void CMHWGrunt::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/hwgrunt.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/hwgrunt.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;
@@ -816,50 +816,41 @@ Schedule_t* CMHWGrunt :: GetScheduleOfType ( int Type )
case SCHED_HWGRUNT_ELOF_FAIL: case SCHED_HWGRUNT_ELOF_FAIL:
{ {
// human grunt is unable to move to a position that allows him to attack the enemy. // human grunt is unable to move to a position that allows him to attack the enemy.
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_HWGRUNT_ELOF_FAIL\n" );
return &slHWGruntELOFFail[ 0 ]; return &slHWGruntELOFFail[ 0 ];
} }
break; break;
case SCHED_HWGRUNT_ESTABLISH_LINE_OF_FIRE: case SCHED_HWGRUNT_ESTABLISH_LINE_OF_FIRE:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_HWGRUNT_ESTABLISH_LINE_OF_FIRE\n" );
return &slHWGruntEstablishLineOfFire[ 0 ]; return &slHWGruntEstablishLineOfFire[ 0 ];
} }
break; break;
case SCHED_RANGE_ATTACK1: case SCHED_RANGE_ATTACK1:
{ {
// no pistols yet, always do standing attack // no pistols yet, always do standing attack
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_RANGE_ATTACK1\n" );
return &slHWGruntRangeAttack1B[ 0 ]; return &slHWGruntRangeAttack1B[ 0 ];
} }
case SCHED_COMBAT_FACE: case SCHED_COMBAT_FACE:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_COMBAT_FACE\n" );
return &slHWGruntCombatFace[ 0 ]; return &slHWGruntCombatFace[ 0 ];
} }
case SCHED_HWGRUNT_WAIT_FACE_ENEMY: case SCHED_HWGRUNT_WAIT_FACE_ENEMY:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_HWGRUNT_WAIT_FACE_ENEMY\n" );
return &slHWGruntWaitInCover[ 0 ]; return &slHWGruntWaitInCover[ 0 ];
} }
case SCHED_HWGRUNT_SWEEP: case SCHED_HWGRUNT_SWEEP:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_HWGRUNT_SWEEP\n" );
return &slHWGruntSweep[ 0 ]; return &slHWGruntSweep[ 0 ];
} }
case SCHED_VICTORY_DANCE: case SCHED_VICTORY_DANCE:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_VICTORY_DANCE\n" );
return &slHWGruntVictoryDance[ 0 ]; return &slHWGruntVictoryDance[ 0 ];
} }
case SCHED_HWGRUNT_SUPPRESS: case SCHED_HWGRUNT_SUPPRESS:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_HWGRUNT_SUPPRESS\n" );
return &slHWGruntSuppress[ 0 ]; return &slHWGruntSuppress[ 0 ];
} }
case SCHED_FAIL: case SCHED_FAIL:
{ {
UTIL_ClientPrintAll( HUD_PRINTTALK, "* DEBUG: SCHED_FAIL\n" );
if ( m_hEnemy != NULL ) if ( m_hEnemy != NULL )
{ {
// grunt has an enemy, so pick a different default fail schedule most likely to help recover. // grunt has an enemy, so pick a different default fail schedule most likely to help recover.

View File

@@ -416,7 +416,7 @@ void CMISlave :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/islave.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/islave.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -215,7 +215,7 @@ void CMMassn::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/massn.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/massn.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -56,8 +56,8 @@ static META_FUNCTIONS gMetaFunctionTable =
plugin_info_t Plugin_info = { plugin_info_t Plugin_info = {
META_INTERFACE_VERSION, // interface version META_INTERFACE_VERSION, // interface version
"MonsterMod", // name "MonsterMod", // name
"3.0-dev", // version "3.0", // version
"15/02/2023", // date in DD/MM/YYYY format "24/02/2023", // date in DD/MM/YYYY format
"botman, Rick90, Giegue", // original authors + recreation by... "botman, Rick90, Giegue", // original authors + recreation by...
"https://github.com/JulianR0/monstermod-redo", // url "https://github.com/JulianR0/monstermod-redo", // url
"MONSTER", // logtag "MONSTER", // logtag

View File

@@ -240,6 +240,38 @@ void scan_monster_cfg(FILE *fp)
monster_spawnpoint[monster_spawn_count].spawnflags = x; monster_spawnpoint[monster_spawn_count].spawnflags = x;
} }
} }
else if (strcmp(data[i].key, "model") == 0)
{
if (monster)
{
// only applicable for normal monsters
if (strcmp(data[kvd_index-1].value, "monstermaker") != 0)
{
// precache the custom model here
PRECACHE_MODEL( data[i].value );
// the entity will need the keyvalue
strcpy(monster_spawnpoint[monster_spawn_count].keyvalue[i].key, data[i].key);
strcpy(monster_spawnpoint[monster_spawn_count].keyvalue[i].value, data[i].value);
}
}
}
else if (strcmp(data[i].key, "new_model") == 0)
{
if (monster)
{
// only applicable for monstermaket entity
if (strcmp(data[kvd_index-1].value, "monstermaker") == 0)
{
// precache the custom model
PRECACHE_MODEL( data[i].value );
// the entity will need the keyvalue as well
strcpy(monster_spawnpoint[monster_spawn_count].keyvalue[i].key, data[i].key);
strcpy(monster_spawnpoint[monster_spawn_count].keyvalue[i].value, data[i].value);
}
}
}
else if (strcmp(data[i].key, "monstertype") == 0) else if (strcmp(data[i].key, "monstertype") == 0)
{ {
if (monster) if (monster)

View File

@@ -60,6 +60,11 @@ void CMMonsterMaker :: KeyValue( KeyValueData *pkvd )
} }
pkvd->fHandled = TRUE; pkvd->fHandled = TRUE;
} }
else if ( FStrEq(pkvd->szKeyName, "new_model") )
{
m_iszCustomModel = ALLOC_STRING(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else else
CMBaseMonster::KeyValue( pkvd ); CMBaseMonster::KeyValue( pkvd );
} }
@@ -118,6 +123,7 @@ void CMMonsterMaker :: Precache( void )
void CMMonsterMaker::MakeMonster( void ) void CMMonsterMaker::MakeMonster( void )
{ {
edict_t *pent; edict_t *pent;
pKVD keyvalue[1]; // sometimes, i don't know what am i doing. -Giegue
int createSF = SF_MONSTER_FALL_TO_GROUND; int createSF = SF_MONSTER_FALL_TO_GROUND;
if ( m_iMaxLiveChildren > 0 && m_cLiveChildren >= m_iMaxLiveChildren ) if ( m_iMaxLiveChildren > 0 && m_cLiveChildren >= m_iMaxLiveChildren )
@@ -151,8 +157,16 @@ void CMMonsterMaker::MakeMonster( void )
if ( pev->spawnflags & SF_MONSTERMAKER_MONSTERCLIP ) if ( pev->spawnflags & SF_MONSTERMAKER_MONSTERCLIP )
createSF |= SF_MONSTER_HITMONSTERCLIP; createSF |= SF_MONSTER_HITMONSTERCLIP;
// Monster is to have a custom model?
if ( !FStringNull( m_iszCustomModel ) )
{
// setup model keyvalue
strcpy(keyvalue[0].key, "model");
strcpy(keyvalue[0].value, STRING( m_iszCustomModel ));
}
// Attempt to spawn monster // Attempt to spawn monster
pent = spawn_monster(m_iMonsterIndex, pev->origin, pev->angles, createSF, NULL); pent = spawn_monster(m_iMonsterIndex, pev->origin, pev->angles, createSF, keyvalue);
if ( pent == NULL ) if ( pent == NULL )
{ {
ALERT ( at_console, "NULL Ent in MonsterMaker!\n" ); ALERT ( at_console, "NULL Ent in MonsterMaker!\n" );

View File

@@ -2609,6 +2609,11 @@ void CMBaseMonster :: KeyValue( KeyValueData *pkvd )
m_iClassifyOverride = atoi( pkvd->szValue ); m_iClassifyOverride = atoi( pkvd->szValue );
pkvd->fHandled = TRUE; pkvd->fHandled = TRUE;
} }
else if (FStrEq(pkvd->szKeyName, "model"))
{
pev->model = ALLOC_STRING( pkvd->szValue );
pkvd->fHandled = TRUE;
}
else else
{ {
CMBaseToggle::KeyValue( pkvd ); CMBaseToggle::KeyValue( pkvd );

View File

@@ -137,7 +137,7 @@ void CMOtis::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/otis.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/otis.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -563,7 +563,7 @@ void CMPitdrone::Spawn()
{ {
Precache(); Precache();
SET_MODEL( ENT(pev), "models/pit_drone.mdl" ); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/pit_drone.mdl"));
UTIL_SetSize(pev, Vector(-16, -16, 0), Vector(16, 16, 48)); UTIL_SetSize(pev, Vector(-16, -16, 0), Vector(16, 16, 48));
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -312,7 +312,7 @@ void CMRGrunt::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/rgrunt.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/rgrunt.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -596,7 +596,7 @@ void CMScientist :: Spawn( void )
// when a level is loaded, nobody will talk (time is reset to 0) // when a level is loaded, nobody will talk (time is reset to 0)
TalkInit(); TalkInit();
SET_MODEL(ENT(pev), "models/scientist.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/scientist.mdl"));
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX); UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -370,7 +370,7 @@ void CMStrooper::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/strooper.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/strooper.mdl"));
UTIL_SetSize( pev, Vector(-24, -24, 0), Vector(24, 24, 72) ); UTIL_SetSize( pev, Vector(-24, -24, 0), Vector(24, 24, 72) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -99,7 +99,7 @@ void CMStukabat :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/stukabat.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/stukabat.mdl"));
UTIL_SetSize( pev, Vector( -12, -12, 0 ), Vector( 12, 12, 24 ) ); UTIL_SetSize( pev, Vector( -12, -12, 0 ), Vector( 12, 12, 24 ) );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -121,7 +121,7 @@ void CMBaseTurret::Precache( )
void CMTurret::Spawn() void CMTurret::Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/turret.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/turret.mdl"));
pev->health = gSkillData.turretHealth; pev->health = gSkillData.turretHealth;
m_HackedGunPos = Vector( 0, 0, 12.75 ); m_HackedGunPos = Vector( 0, 0, 12.75 );
m_flMaxSpin = TURRET_MAXSPIN; m_flMaxSpin = TURRET_MAXSPIN;
@@ -161,7 +161,7 @@ void CMTurret::Precache()
void CMMiniTurret::Spawn() void CMMiniTurret::Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/miniturret.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/miniturret.mdl"));
pev->health = gSkillData.miniturretHealth; pev->health = gSkillData.miniturretHealth;
m_HackedGunPos = Vector( 0, 0, 12.75 ); m_HackedGunPos = Vector( 0, 0, 12.75 );
m_flMaxSpin = 0; m_flMaxSpin = 0;
@@ -1014,7 +1014,7 @@ void CMSentry::Precache()
void CMSentry::Spawn() void CMSentry::Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/sentry.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/sentry.mdl"));
pev->health = gSkillData.sentryHealth; pev->health = gSkillData.sentryHealth;
m_HackedGunPos = Vector( 0, 0, 48 ); m_HackedGunPos = Vector( 0, 0, 48 );
pev->view_ofs.z = 48; pev->view_ofs.z = 48;

View File

@@ -626,7 +626,7 @@ void CMVoltigore::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/voltigore.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/voltigore.mdl"));
UTIL_SetSize(pev, Vector(-80, -80, 0), Vector(80, 80, 90)); UTIL_SetSize(pev, Vector(-80, -80, 0), Vector(80, 80, 90));
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;
@@ -1132,7 +1132,7 @@ void CMBabyVoltigore::Spawn()
{ {
Precache(); Precache();
SET_MODEL(ENT(pev), "models/baby_voltigore.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/baby_voltigore.mdl"));
UTIL_SetSize(pev, Vector(-32, -32, 0), Vector(32, 32, 36)); UTIL_SetSize(pev, Vector(-32, -32, 0), Vector(32, 32, 36));
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;

View File

@@ -246,7 +246,7 @@ void CMZombie :: Spawn()
{ {
Precache( ); Precache( );
SET_MODEL(ENT(pev), "models/zombie.mdl"); SET_MODEL(ENT(pev), (!FStringNull( pev->model ) ? STRING( pev->model ) : "models/zombie.mdl"));
UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX ); UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );
pev->solid = SOLID_SLIDEBOX; pev->solid = SOLID_SLIDEBOX;