Yet another GMR/GSR fix.
Monster maximum viewable distance is now customizable.
This commit is contained in:
@@ -424,7 +424,7 @@ void CMApache :: HuntThink( void )
|
|||||||
|
|
||||||
// if (m_hEnemy == NULL)
|
// if (m_hEnemy == NULL)
|
||||||
{
|
{
|
||||||
Look( 4092 );
|
Look( 4096 );
|
||||||
m_hEnemy = BestVisibleEnemy( );
|
m_hEnemy = BestVisibleEnemy( );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,8 @@
|
|||||||
#include "effects.h"
|
#include "effects.h"
|
||||||
#include "customentity.h"
|
#include "customentity.h"
|
||||||
|
|
||||||
|
extern cvar_t *monster_default_maxrange;
|
||||||
|
|
||||||
//=========================================================
|
//=========================================================
|
||||||
// monster-specific DEFINE's
|
// monster-specific DEFINE's
|
||||||
//=========================================================
|
//=========================================================
|
||||||
@@ -265,6 +267,10 @@ void CMMassn::Spawn()
|
|||||||
{
|
{
|
||||||
SetBodygroup(GUN_GROUP, GUN_SNIPERRIFLE);
|
SetBodygroup(GUN_GROUP, GUN_SNIPERRIFLE);
|
||||||
m_cClipSize = 5;
|
m_cClipSize = 5;
|
||||||
|
|
||||||
|
// if no attack range set, set 2x default
|
||||||
|
if (!m_flDistLook)
|
||||||
|
m_flDistLook = monster_default_maxrange->value * 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -280,7 +286,12 @@ void CMMassn::Spawn()
|
|||||||
CMTalkMonster::g_talkWaitTime = 0;
|
CMTalkMonster::g_talkWaitTime = 0;
|
||||||
|
|
||||||
MonsterInit();
|
MonsterInit();
|
||||||
|
if (FBitSet(pev->weapons, MASSN_SNIPERRIFLE))
|
||||||
|
{
|
||||||
|
// override for snipers
|
||||||
|
m_flDistTooFar = m_flDistLook / 1.33;
|
||||||
|
}
|
||||||
|
|
||||||
pev->classname = MAKE_STRING( "monster_male_assassin" );
|
pev->classname = MAKE_STRING( "monster_male_assassin" );
|
||||||
if ( strlen( STRING( m_szMonsterName ) ) == 0 )
|
if ( strlen( STRING( m_szMonsterName ) ) == 0 )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ cvar_t init_globalmodellist = {"monster_gmr", "", FCVAR_EXTDLL, 0, NULL};
|
|||||||
cvar_t *globalmodellist = NULL;
|
cvar_t *globalmodellist = NULL;
|
||||||
cvar_t init_globalsoundlist = {"monster_gsr", "", FCVAR_EXTDLL, 0, NULL};
|
cvar_t init_globalsoundlist = {"monster_gsr", "", FCVAR_EXTDLL, 0, NULL};
|
||||||
cvar_t *globalsoundlist = NULL;
|
cvar_t *globalsoundlist = NULL;
|
||||||
|
cvar_t init_monster_default_maxrange = {"monster_default_maxrange", "2048", FCVAR_EXTDLL, 0, NULL};
|
||||||
|
cvar_t *monster_default_maxrange = NULL;
|
||||||
|
|
||||||
|
|
||||||
// Metamod requesting info about this plugin:
|
// Metamod requesting info about this plugin:
|
||||||
@@ -165,6 +167,9 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
|||||||
CVAR_REGISTER(&init_globalsoundlist);
|
CVAR_REGISTER(&init_globalsoundlist);
|
||||||
globalsoundlist = CVAR_GET_POINTER("monster_gsr");
|
globalsoundlist = CVAR_GET_POINTER("monster_gsr");
|
||||||
|
|
||||||
|
CVAR_REGISTER(&init_monster_default_maxrange);
|
||||||
|
monster_default_maxrange = CVAR_GET_POINTER("monster_default_maxrange");
|
||||||
|
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -890,6 +890,10 @@ void scan_monster_replace(FILE *fp, bool toGSR )
|
|||||||
|
|
||||||
while (get_input(fp, input))
|
while (get_input(fp, input))
|
||||||
{
|
{
|
||||||
|
// might slip through
|
||||||
|
if (strlen(input) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
char *source = strtok(input, " ");
|
char *source = strtok(input, " ");
|
||||||
char *destination = strtok(NULL, " ");
|
char *destination = strtok(NULL, " ");
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ extern DLL_GLOBAL BOOL g_fDrawLines;
|
|||||||
extern CGraph WorldGraph;// the world node graph
|
extern CGraph WorldGraph;// the world node graph
|
||||||
|
|
||||||
extern cvar_t *monster_turn_coeficient;
|
extern cvar_t *monster_turn_coeficient;
|
||||||
|
extern cvar_t *monster_default_maxrange;
|
||||||
|
|
||||||
extern void process_monster_sound(edict_t *pMonster, char *fileName);
|
extern void process_monster_sound(edict_t *pMonster, char *fileName);
|
||||||
|
|
||||||
@@ -1663,8 +1664,9 @@ void CMBaseMonster :: MonsterInit ( void )
|
|||||||
for (int i=0; i < MAX_OLD_ENEMIES; i++)
|
for (int i=0; i < MAX_OLD_ENEMIES; i++)
|
||||||
m_hOldEnemy[ i ] = NULL;
|
m_hOldEnemy[ i ] = NULL;
|
||||||
|
|
||||||
m_flDistTooFar = 1024.0;
|
if (!m_flDistLook)
|
||||||
m_flDistLook = 2048.0;
|
m_flDistLook = monster_default_maxrange->value;
|
||||||
|
m_flDistTooFar = m_flDistLook / 2; // always 50%
|
||||||
|
|
||||||
// set eye position
|
// set eye position
|
||||||
SetEyePosition();
|
SetEyePosition();
|
||||||
@@ -2651,6 +2653,11 @@ void CMBaseMonster :: KeyValue( KeyValueData *pkvd )
|
|||||||
}
|
}
|
||||||
pkvd->fHandled = TRUE;
|
pkvd->fHandled = TRUE;
|
||||||
}
|
}
|
||||||
|
else if (FStrEq(pkvd->szKeyName, "attackrange"))
|
||||||
|
{
|
||||||
|
m_flDistLook = atof(pkvd->szValue);
|
||||||
|
pkvd->fHandled = TRUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CMBaseToggle::KeyValue( pkvd );
|
CMBaseToggle::KeyValue( pkvd );
|
||||||
|
|||||||
@@ -92,6 +92,9 @@ void CMBaseTurret::Spawn()
|
|||||||
m_iAutoStart = TRUE;
|
m_iAutoStart = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!m_flDistLook)
|
||||||
|
m_flDistLook = TURRET_RANGE;
|
||||||
|
|
||||||
ResetSequenceInfo( );
|
ResetSequenceInfo( );
|
||||||
SetBoneController( 0, 0 );
|
SetBoneController( 0, 0 );
|
||||||
SetBoneController( 1, 0 );
|
SetBoneController( 1, 0 );
|
||||||
@@ -348,7 +351,7 @@ void CMBaseTurret::ActiveThink(void)
|
|||||||
Vector vec = UTIL_VecToAngles(vecMidEnemy - vecMid);
|
Vector vec = UTIL_VecToAngles(vecMidEnemy - vecMid);
|
||||||
|
|
||||||
// Current enemy is not visible.
|
// Current enemy is not visible.
|
||||||
if (!fEnemyVisible || (flDistToEnemy > TURRET_RANGE))
|
if (!fEnemyVisible || (flDistToEnemy > m_flDistLook))
|
||||||
{
|
{
|
||||||
if (!m_flLastSight)
|
if (!m_flLastSight)
|
||||||
m_flLastSight = gpGlobals->time + 0.5;
|
m_flLastSight = gpGlobals->time + 0.5;
|
||||||
@@ -459,7 +462,7 @@ void CMBaseTurret::ActiveThink(void)
|
|||||||
|
|
||||||
void CMTurret::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
void CMTurret::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
||||||
{
|
{
|
||||||
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, TURRET_RANGE, BULLET_MONSTER_12MM, 1 );
|
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, m_flDistLook, BULLET_MONSTER_12MM, 1 );
|
||||||
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "turret/tu_fire1.wav", 1, 0.6);
|
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "turret/tu_fire1.wav", 1, 0.6);
|
||||||
pev->effects = pev->effects | EF_MUZZLEFLASH;
|
pev->effects = pev->effects | EF_MUZZLEFLASH;
|
||||||
}
|
}
|
||||||
@@ -467,7 +470,7 @@ void CMTurret::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
|||||||
|
|
||||||
void CMMiniTurret::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
void CMMiniTurret::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
||||||
{
|
{
|
||||||
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, TURRET_RANGE, BULLET_MONSTER_9MM, 1 );
|
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, m_flDistLook, BULLET_MONSTER_9MM, 1 );
|
||||||
|
|
||||||
switch(RANDOM_LONG(0,2))
|
switch(RANDOM_LONG(0,2))
|
||||||
{
|
{
|
||||||
@@ -721,7 +724,7 @@ void CMBaseTurret::SearchThink(void)
|
|||||||
// Acquire Target
|
// Acquire Target
|
||||||
if (m_hEnemy == NULL)
|
if (m_hEnemy == NULL)
|
||||||
{
|
{
|
||||||
Look(TURRET_RANGE);
|
Look(m_flDistLook);
|
||||||
m_hEnemy = BestVisibleEnemy();
|
m_hEnemy = BestVisibleEnemy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -779,7 +782,7 @@ void CMBaseTurret::AutoSearchThink(void)
|
|||||||
|
|
||||||
if (m_hEnemy == NULL)
|
if (m_hEnemy == NULL)
|
||||||
{
|
{
|
||||||
Look( TURRET_RANGE );
|
Look( m_flDistLook );
|
||||||
m_hEnemy = BestVisibleEnemy();
|
m_hEnemy = BestVisibleEnemy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1042,7 +1045,7 @@ void CMSentry::Spawn()
|
|||||||
|
|
||||||
void CMSentry::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
void CMSentry::Shoot(Vector &vecSrc, Vector &vecDirToEnemy)
|
||||||
{
|
{
|
||||||
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, TURRET_RANGE, BULLET_MONSTER_MP5, 1 );
|
FireBullets( 1, vecSrc, vecDirToEnemy, TURRET_SPREAD, m_flDistLook, BULLET_MONSTER_MP5, 1 );
|
||||||
|
|
||||||
switch(RANDOM_LONG(0,2))
|
switch(RANDOM_LONG(0,2))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user