Add custom model support.
This commit is contained in:
@@ -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 );
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 ) );
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ 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.
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -1259,7 +1258,7 @@ int mmDispatchSpawn( edict_t *pent )
|
|||||||
process_monster_precache_cfg();
|
process_monster_precache_cfg();
|
||||||
|
|
||||||
process_monster_cfg();
|
process_monster_cfg();
|
||||||
|
|
||||||
// node support. -Giegue
|
// node support. -Giegue
|
||||||
// init the WorldGraph.
|
// init the WorldGraph.
|
||||||
WorldGraph.InitGraph();
|
WorldGraph.InitGraph();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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" );
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user