[HL25] Backport "_sv_override_scientist_mdl" CVAR functionality
This commit is contained in:
parent
c50041a728
commit
c3b58b1bb4
1 changed files with 33 additions and 6 deletions
|
@ -105,6 +105,8 @@ public:
|
|||
|
||||
void TalkInit();
|
||||
|
||||
char* GetScientistModel() const;
|
||||
|
||||
void Killed(entvars_t* pevAttacker, int iGib) override;
|
||||
|
||||
bool Save(CSave& save) override;
|
||||
|
@ -130,6 +132,17 @@ TYPEDESCRIPTION CScientist::m_SaveData[] =
|
|||
|
||||
IMPLEMENT_SAVERESTORE(CScientist, CTalkMonster);
|
||||
|
||||
char* CScientist::GetScientistModel() const
|
||||
{
|
||||
char* pszOverride = (char*)CVAR_GET_STRING("_sv_override_scientist_mdl");
|
||||
if (pszOverride && strlen(pszOverride) > 5) // at least requires ".mdl"
|
||||
{
|
||||
return pszOverride;
|
||||
}
|
||||
|
||||
return "models/scientist.mdl";
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
// AI Schedules Specific to this monster
|
||||
//=========================================================
|
||||
|
@ -652,7 +665,7 @@ void CScientist::Spawn()
|
|||
|
||||
Precache();
|
||||
|
||||
SET_MODEL(ENT(pev), "models/scientist.mdl");
|
||||
SET_MODEL(ENT(pev), GetScientistModel());
|
||||
UTIL_SetSize(pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX);
|
||||
|
||||
pev->solid = SOLID_SLIDEBOX;
|
||||
|
@ -683,7 +696,7 @@ void CScientist::Spawn()
|
|||
//=========================================================
|
||||
void CScientist::Precache()
|
||||
{
|
||||
PRECACHE_MODEL("models/scientist.mdl");
|
||||
PRECACHE_MODEL(GetScientistModel());
|
||||
PRECACHE_SOUND("scientist/sci_pain1.wav");
|
||||
PRECACHE_SOUND("scientist/sci_pain2.wav");
|
||||
PRECACHE_SOUND("scientist/sci_pain3.wav");
|
||||
|
@ -1146,12 +1159,26 @@ public:
|
|||
void Spawn() override;
|
||||
int Classify() override { return CLASS_HUMAN_PASSIVE; }
|
||||
|
||||
// passed into Precache which is non-const
|
||||
char* GetScientistModel() const;
|
||||
|
||||
bool KeyValue(KeyValueData* pkvd) override;
|
||||
int m_iPose; // which sequence to display
|
||||
static const char* m_szPoses[7];
|
||||
};
|
||||
const char* CDeadScientist::m_szPoses[] = {"lying_on_back", "lying_on_stomach", "dead_sitting", "dead_hang", "dead_table1", "dead_table2", "dead_table3"};
|
||||
|
||||
char* CDeadScientist::GetScientistModel() const
|
||||
{
|
||||
char* pszOverride = (char*)CVAR_GET_STRING("_sv_override_scientist_mdl");
|
||||
if (pszOverride && strlen(pszOverride) > 5) // at least requires ".mdl"
|
||||
{
|
||||
return pszOverride;
|
||||
}
|
||||
|
||||
return "models/scientist.mdl";
|
||||
}
|
||||
|
||||
bool CDeadScientist::KeyValue(KeyValueData* pkvd)
|
||||
{
|
||||
if (FStrEq(pkvd->szKeyName, "pose"))
|
||||
|
@ -1169,8 +1196,8 @@ LINK_ENTITY_TO_CLASS(monster_scientist_dead, CDeadScientist);
|
|||
//
|
||||
void CDeadScientist::Spawn()
|
||||
{
|
||||
PRECACHE_MODEL("models/scientist.mdl");
|
||||
SET_MODEL(ENT(pev), "models/scientist.mdl");
|
||||
PRECACHE_MODEL(GetScientistModel());
|
||||
SET_MODEL(ENT(pev), GetScientistModel());
|
||||
|
||||
pev->effects = 0;
|
||||
pev->sequence = 0;
|
||||
|
@ -1251,8 +1278,8 @@ typedef enum
|
|||
//
|
||||
void CSittingScientist::Spawn()
|
||||
{
|
||||
PRECACHE_MODEL("models/scientist.mdl");
|
||||
SET_MODEL(ENT(pev), "models/scientist.mdl");
|
||||
PRECACHE_MODEL(GetScientistModel());
|
||||
SET_MODEL(ENT(pev), GetScientistModel());
|
||||
Precache();
|
||||
InitBoneControllers();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue