mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2025-02-05 10:10:42 +03:00
Mapbase v2.1
- Fixed parallax corrected cubemaps not working when cubemaps are disabled - Fixed a crash with some new script_intro code - Fixed item_health/suitcharger not emptying or using correct animation with keyvalue charge - Added a new "Always touchable" spawnflag for weapons and items that should disregard obstructions - Added "OnFoundNPC" output on scripted_sequence for when a NPC starts moving to play the script - Fixed npc_snipers not working when parented or not working when attacking parented targets - Changed "ai_nographrebuildmessage" to "ai_norebuildgraphmessage" to reduce confusion and increase visibility (it is assumed nobody was using it before, at least not in a compatibility-breaking way) - Added damage bit modification to filter_damage_mod - Added Add/RemoveSolidFlags input to all entities + added "Collide with owner" solid flag from the VDC - Added custom model support to item_health/suitcharger
This commit is contained in:
parent
dc7f20acc8
commit
b8611071c5
@ -183,7 +183,7 @@ void C_ScriptIntro::PostDataUpdate( DataUpdateType_t updateType )
|
|||||||
|
|
||||||
// If it's a point_camera and it's ortho, send it to the intro data
|
// If it's a point_camera and it's ortho, send it to the intro data
|
||||||
// Change this code if the purpose of m_hCameraEntity in intro data ever goes beyond ortho
|
// Change this code if the purpose of m_hCameraEntity in intro data ever goes beyond ortho
|
||||||
if ( Q_strncmp(m_hCameraEntity->GetClassname(), "point_camera", 12) == 0 )
|
if ( m_hCameraEntity && Q_strncmp(m_hCameraEntity->GetClassname(), "point_camera", 12) == 0 )
|
||||||
{
|
{
|
||||||
C_PointCamera *pCamera = dynamic_cast<C_PointCamera*>(m_hCameraEntity.Get());
|
C_PointCamera *pCamera = dynamic_cast<C_PointCamera*>(m_hCameraEntity.Get());
|
||||||
if (pCamera && pCamera->IsOrtho())
|
if (pCamera && pCamera->IsOrtho())
|
||||||
|
@ -450,9 +450,12 @@ public:
|
|||||||
angles.z = 0;
|
angles.z = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pass through the player's vehicle
|
||||||
|
CTraceFilterSkipTwoEntities filter( pPlayer, pPlayer->GetVehicleEntity(), COLLISION_GROUP_NONE );
|
||||||
AI_TraceLine(pPlayer->EyePosition(),
|
AI_TraceLine(pPlayer->EyePosition(),
|
||||||
pPlayer->EyePosition() + forward * MAX_TRACE_LENGTH,MASK_NPCSOLID,
|
pPlayer->EyePosition() + forward * MAX_TRACE_LENGTH,MASK_NPCSOLID,
|
||||||
pPlayer, COLLISION_GROUP_NONE, &tr );
|
&filter, &tr );
|
||||||
|
|
||||||
if ( tr.fraction != 1.0)
|
if ( tr.fraction != 1.0)
|
||||||
{
|
{
|
||||||
if (baseNPC->CapabilitiesGet() & bits_CAP_MOVE_FLY)
|
if (baseNPC->CapabilitiesGet() & bits_CAP_MOVE_FLY)
|
||||||
|
@ -70,7 +70,7 @@ CON_COMMAND( ai_debug_node_connect, "Debug the attempted connection between two
|
|||||||
|
|
||||||
ConVar g_ai_norebuildgraph( "ai_norebuildgraph", "0" );
|
ConVar g_ai_norebuildgraph( "ai_norebuildgraph", "0" );
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
ConVar g_ai_nographrebuildmessage( "ai_nographrebuildmessage", "0", FCVAR_ARCHIVE, "Stops the \"Node graph out of date\" message from appearing when rebuilding node graph" );
|
ConVar g_ai_norebuildgraphmessage( "ai_norebuildgraphmessage", "0", FCVAR_ARCHIVE, "Stops the \"Node graph out of date\" message from appearing when rebuilding node graph" );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -1114,7 +1114,7 @@ void CAI_NetworkManager::DelayedInit( void )
|
|||||||
|
|
||||||
DevMsg( "Node Graph out of Date. Rebuilding... (%d, %d, %d)\n", (int)m_bDontSaveGraph, (int)!CAI_NetworkManager::NetworksLoaded(), (int) engine->IsInEditMode() );
|
DevMsg( "Node Graph out of Date. Rebuilding... (%d, %d, %d)\n", (int)m_bDontSaveGraph, (int)!CAI_NetworkManager::NetworksLoaded(), (int) engine->IsInEditMode() );
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
if (!g_ai_nographrebuildmessage.GetBool())
|
if (!g_ai_norebuildgraphmessage.GetBool())
|
||||||
UTIL_CenterPrintAll( "Node Graph out of Date. Rebuilding...\n" );
|
UTIL_CenterPrintAll( "Node Graph out of Date. Rebuilding...\n" );
|
||||||
|
|
||||||
// Do it much sooner after map load
|
// Do it much sooner after map load
|
||||||
|
@ -2053,6 +2053,8 @@ BEGIN_DATADESC_NO_BASE( CBaseEntity )
|
|||||||
DEFINE_INPUTFUNC( FIELD_VOID, "DisableDraw", InputUndrawEntity ),
|
DEFINE_INPUTFUNC( FIELD_VOID, "DisableDraw", InputUndrawEntity ),
|
||||||
DEFINE_INPUTFUNC( FIELD_INTEGER, "AddEFlags", InputAddEFlags ),
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "AddEFlags", InputAddEFlags ),
|
||||||
DEFINE_INPUTFUNC( FIELD_INTEGER, "RemoveEFlags", InputRemoveEFlags ),
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "RemoveEFlags", InputRemoveEFlags ),
|
||||||
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "AddSolidFlags", InputAddSolidFlags ),
|
||||||
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "RemoveSolidFlags", InputRemoveSolidFlags ),
|
||||||
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetMoveType", InputSetMoveType ),
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetMoveType", InputSetMoveType ),
|
||||||
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetCollisionGroup", InputSetCollisionGroup ),
|
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetCollisionGroup", InputSetCollisionGroup ),
|
||||||
|
|
||||||
@ -7690,6 +7692,22 @@ void CBaseEntity::InputRemoveEFlags( inputdata_t& inputdata )
|
|||||||
RemoveEFlags(inputdata.value.Int());
|
RemoveEFlags(inputdata.value.Int());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Adds solid flags.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void CBaseEntity::InputAddSolidFlags( inputdata_t& inputdata )
|
||||||
|
{
|
||||||
|
AddSolidFlags(inputdata.value.Int());
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Purpose: Removes solid flags.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void CBaseEntity::InputRemoveSolidFlags( inputdata_t& inputdata )
|
||||||
|
{
|
||||||
|
RemoveSolidFlags(inputdata.value.Int());
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose: Sets the movetype.
|
// Purpose: Sets the movetype.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -8828,9 +8846,13 @@ public:
|
|||||||
trace_t tr;
|
trace_t tr;
|
||||||
Vector forward;
|
Vector forward;
|
||||||
pPlayer->EyeVectors( &forward );
|
pPlayer->EyeVectors( &forward );
|
||||||
|
|
||||||
|
// Pass through the player's vehicle
|
||||||
|
CTraceFilterSkipTwoEntities filter( pPlayer, pPlayer->GetVehicleEntity(), COLLISION_GROUP_NONE );
|
||||||
UTIL_TraceLine(pPlayer->EyePosition(),
|
UTIL_TraceLine(pPlayer->EyePosition(),
|
||||||
pPlayer->EyePosition() + forward * MAX_TRACE_LENGTH,MASK_SOLID,
|
pPlayer->EyePosition() + forward * MAX_TRACE_LENGTH,MASK_SOLID,
|
||||||
pPlayer, COLLISION_GROUP_NONE, &tr );
|
&filter, &tr );
|
||||||
|
|
||||||
if ( tr.fraction != 1.0 )
|
if ( tr.fraction != 1.0 )
|
||||||
{
|
{
|
||||||
// Raise the end position a little up off the floor, place the npc and drop him down
|
// Raise the end position a little up off the floor, place the npc and drop him down
|
||||||
|
@ -716,6 +716,8 @@ public:
|
|||||||
void InputUndrawEntity( inputdata_t &inputdata );
|
void InputUndrawEntity( inputdata_t &inputdata );
|
||||||
void InputAddEFlags( inputdata_t &inputdata );
|
void InputAddEFlags( inputdata_t &inputdata );
|
||||||
void InputRemoveEFlags( inputdata_t &inputdata );
|
void InputRemoveEFlags( inputdata_t &inputdata );
|
||||||
|
void InputAddSolidFlags( inputdata_t &inputdata );
|
||||||
|
void InputRemoveSolidFlags( inputdata_t &inputdata );
|
||||||
void InputSetMoveType( inputdata_t &inputdata );
|
void InputSetMoveType( inputdata_t &inputdata );
|
||||||
void InputSetCollisionGroup( inputdata_t &inputdata );
|
void InputSetCollisionGroup( inputdata_t &inputdata );
|
||||||
|
|
||||||
|
@ -1917,8 +1917,15 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
info.ScaleDamage(m_flDamageMultiplier);
|
if (m_flDamageMultiplier != 1.0f)
|
||||||
info.AddDamage(m_flDamageAddend);
|
info.ScaleDamage(m_flDamageMultiplier);
|
||||||
|
if (m_flDamageAddend != 0.0f)
|
||||||
|
info.AddDamage(m_flDamageAddend);
|
||||||
|
|
||||||
|
if (m_iDamageBitsAdded != 0)
|
||||||
|
info.AddDamageType(m_iDamageBitsAdded);
|
||||||
|
if (m_iDamageBitsRemoved != 0)
|
||||||
|
info.AddDamageType(~m_iDamageBitsRemoved);
|
||||||
|
|
||||||
if (m_iszNewAttacker != NULL_STRING)
|
if (m_iszNewAttacker != NULL_STRING)
|
||||||
{
|
{
|
||||||
@ -1948,6 +1955,8 @@ public:
|
|||||||
|
|
||||||
float m_flDamageMultiplier = 1.0f;
|
float m_flDamageMultiplier = 1.0f;
|
||||||
float m_flDamageAddend;
|
float m_flDamageAddend;
|
||||||
|
int m_iDamageBitsAdded;
|
||||||
|
int m_iDamageBitsRemoved;
|
||||||
|
|
||||||
string_t m_iszNewAttacker; EHANDLE m_hNewAttacker;
|
string_t m_iszNewAttacker; EHANDLE m_hNewAttacker;
|
||||||
string_t m_iszNewInflictor; EHANDLE m_hNewInflictor;
|
string_t m_iszNewInflictor; EHANDLE m_hNewInflictor;
|
||||||
@ -1970,6 +1979,8 @@ BEGIN_DATADESC( CFilterDamageMod )
|
|||||||
|
|
||||||
DEFINE_INPUT( m_flDamageMultiplier, FIELD_FLOAT, "SetDamageMultiplier" ),
|
DEFINE_INPUT( m_flDamageMultiplier, FIELD_FLOAT, "SetDamageMultiplier" ),
|
||||||
DEFINE_INPUT( m_flDamageAddend, FIELD_FLOAT, "SetDamageAddend" ),
|
DEFINE_INPUT( m_flDamageAddend, FIELD_FLOAT, "SetDamageAddend" ),
|
||||||
|
DEFINE_INPUT( m_iDamageBitsAdded, FIELD_INTEGER, "SetDamageBitsAdded" ),
|
||||||
|
DEFINE_INPUT( m_iDamageBitsRemoved, FIELD_INTEGER, "SetDamageBitsRemoved" ),
|
||||||
|
|
||||||
DEFINE_KEYFIELD( m_iSecondaryFilterMode, FIELD_INTEGER, "SecondaryFilterMode" ),
|
DEFINE_KEYFIELD( m_iSecondaryFilterMode, FIELD_INTEGER, "SecondaryFilterMode" ),
|
||||||
|
|
||||||
|
@ -522,7 +522,14 @@ bool CNewRecharge::KeyValue( const char *szKeyName, const char *szValue )
|
|||||||
|
|
||||||
void CNewRecharge::Precache( void )
|
void CNewRecharge::Precache( void )
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if ( GetModelName() == NULL_STRING )
|
||||||
|
SetModelName( AllocPooledString(HEALTH_CHARGER_MODEL_NAME) );
|
||||||
|
|
||||||
|
PrecacheModel( STRING(GetModelName()) );
|
||||||
|
#else
|
||||||
PrecacheModel( HEALTH_CHARGER_MODEL_NAME );
|
PrecacheModel( HEALTH_CHARGER_MODEL_NAME );
|
||||||
|
#endif
|
||||||
|
|
||||||
PrecacheScriptSound( "SuitRecharge.Deny" );
|
PrecacheScriptSound( "SuitRecharge.Deny" );
|
||||||
PrecacheScriptSound( "SuitRecharge.Start" );
|
PrecacheScriptSound( "SuitRecharge.Start" );
|
||||||
@ -564,7 +571,11 @@ void CNewRecharge::Spawn()
|
|||||||
SetSolid( SOLID_VPHYSICS );
|
SetSolid( SOLID_VPHYSICS );
|
||||||
CreateVPhysics();
|
CreateVPhysics();
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
SetModel( STRING(GetModelName()) );
|
||||||
|
#else
|
||||||
SetModel( HEALTH_CHARGER_MODEL_NAME );
|
SetModel( HEALTH_CHARGER_MODEL_NAME );
|
||||||
|
#endif
|
||||||
AddEffects( EF_NOSHADOW );
|
AddEffects( EF_NOSHADOW );
|
||||||
|
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
ResetSequence( LookupSequence( "idle" ) );
|
||||||
@ -576,7 +587,10 @@ void CNewRecharge::Spawn()
|
|||||||
if (m_iJuice == 0)
|
if (m_iJuice == 0)
|
||||||
UpdateJuice( MaxJuice() );
|
UpdateJuice( MaxJuice() );
|
||||||
else if (m_iJuice == -1)
|
else if (m_iJuice == -1)
|
||||||
|
{
|
||||||
UpdateJuice( 0 );
|
UpdateJuice( 0 );
|
||||||
|
ResetSequence( LookupSequence( "empty" ) );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
UpdateJuice( m_iJuice );
|
UpdateJuice( m_iJuice );
|
||||||
#else
|
#else
|
||||||
@ -683,22 +697,22 @@ void CNewRecharge::InputRecharge( inputdata_t &inputdata )
|
|||||||
|
|
||||||
void CNewRecharge::InputSetCharge( inputdata_t &inputdata )
|
void CNewRecharge::InputSetCharge( inputdata_t &inputdata )
|
||||||
{
|
{
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
|
||||||
|
|
||||||
int iJuice = inputdata.value.Int();
|
int iJuice = inputdata.value.Int();
|
||||||
|
|
||||||
m_flJuice = m_iMaxJuice = m_iJuice = iJuice;
|
m_flJuice = m_iMaxJuice = m_iJuice = iJuice;
|
||||||
|
|
||||||
|
ResetSequence( m_iJuice > 0 ? LookupSequence( "idle" ) : LookupSequence( "empty" ) );
|
||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
void CNewRecharge::InputSetChargeNoMax( inputdata_t &inputdata )
|
void CNewRecharge::InputSetChargeNoMax( inputdata_t &inputdata )
|
||||||
{
|
{
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
|
||||||
|
|
||||||
m_flJuice = inputdata.value.Float();
|
m_flJuice = inputdata.value.Float();
|
||||||
|
|
||||||
UpdateJuice(m_flJuice);
|
UpdateJuice(m_flJuice);
|
||||||
|
|
||||||
|
ResetSequence( m_iJuice > 0 ? LookupSequence( "idle" ) : LookupSequence( "empty" ) );
|
||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -438,7 +438,7 @@ public:
|
|||||||
void InputSetChargeNoMax( inputdata_t &inputdata );
|
void InputSetChargeNoMax( inputdata_t &inputdata );
|
||||||
void UpdateJuice( int newJuice );
|
void UpdateJuice( int newJuice );
|
||||||
float MaxJuice() const;
|
float MaxJuice() const;
|
||||||
int SetInitialCharge( void );
|
void SetInitialCharge( void );
|
||||||
int m_iMaxJuice;
|
int m_iMaxJuice;
|
||||||
int m_iIncrementValue;
|
int m_iIncrementValue;
|
||||||
#endif
|
#endif
|
||||||
@ -544,13 +544,15 @@ bool CNewWallHealth::KeyValue( const char *szKeyName, const char *szValue )
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
int CNewWallHealth::SetInitialCharge( void )
|
void CNewWallHealth::SetInitialCharge( void )
|
||||||
{
|
{
|
||||||
if ( m_iMaxJuice == 0 )
|
if ( m_iMaxJuice != 0 )
|
||||||
{
|
{
|
||||||
m_iMaxJuice = sk_healthcharger.GetFloat();
|
// It must've been overridden by the mapper
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return m_iMaxJuice;
|
|
||||||
|
m_iMaxJuice = sk_healthcharger.GetFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -574,7 +576,11 @@ void CNewWallHealth::Spawn(void)
|
|||||||
SetSolid( SOLID_VPHYSICS );
|
SetSolid( SOLID_VPHYSICS );
|
||||||
CreateVPhysics();
|
CreateVPhysics();
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
SetModel( STRING(GetModelName()) );
|
||||||
|
#else
|
||||||
SetModel( HEALTH_CHARGER_MODEL_NAME );
|
SetModel( HEALTH_CHARGER_MODEL_NAME );
|
||||||
|
#endif
|
||||||
AddEffects( EF_NOSHADOW );
|
AddEffects( EF_NOSHADOW );
|
||||||
|
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
ResetSequence( LookupSequence( "idle" ) );
|
||||||
@ -583,13 +589,16 @@ void CNewWallHealth::Spawn(void)
|
|||||||
if (m_iIncrementValue == 0)
|
if (m_iIncrementValue == 0)
|
||||||
m_iIncrementValue = 1;
|
m_iIncrementValue = 1;
|
||||||
|
|
||||||
int iMaxJuice = SetInitialCharge();
|
SetInitialCharge();
|
||||||
|
|
||||||
// In case the juice was overridden
|
// In case the juice was overridden
|
||||||
if (m_iJuice == 0)
|
if (m_iJuice == 0)
|
||||||
UpdateJuice( MaxJuice() );
|
UpdateJuice( MaxJuice() );
|
||||||
else if (m_iJuice == -1)
|
else if (m_iJuice == -1)
|
||||||
|
{
|
||||||
UpdateJuice( 0 );
|
UpdateJuice( 0 );
|
||||||
|
ResetSequence( LookupSequence( "empty" ) );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
UpdateJuice( m_iJuice );
|
UpdateJuice( m_iJuice );
|
||||||
#else
|
#else
|
||||||
@ -605,7 +614,7 @@ void CNewWallHealth::Spawn(void)
|
|||||||
|
|
||||||
m_flJuice = m_iJuice;
|
m_flJuice = m_iJuice;
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
SetCycle( 1.0f - ( m_flJuice / iMaxJuice ) );
|
SetCycle( 1.0f - ( m_flJuice / MaxJuice() ) );
|
||||||
#else
|
#else
|
||||||
SetCycle( 1.0f - ( m_flJuice / sk_healthcharger.GetFloat() ) );
|
SetCycle( 1.0f - ( m_flJuice / sk_healthcharger.GetFloat() ) );
|
||||||
#endif
|
#endif
|
||||||
@ -638,7 +647,14 @@ bool CNewWallHealth::CreateVPhysics(void)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void CNewWallHealth::Precache(void)
|
void CNewWallHealth::Precache(void)
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if ( GetModelName() == NULL_STRING )
|
||||||
|
SetModelName( AllocPooledString(HEALTH_CHARGER_MODEL_NAME) );
|
||||||
|
|
||||||
|
PrecacheModel( STRING(GetModelName()) );
|
||||||
|
#else
|
||||||
PrecacheModel( HEALTH_CHARGER_MODEL_NAME );
|
PrecacheModel( HEALTH_CHARGER_MODEL_NAME );
|
||||||
|
#endif
|
||||||
|
|
||||||
PrecacheScriptSound( "WallHealth.Deny" );
|
PrecacheScriptSound( "WallHealth.Deny" );
|
||||||
PrecacheScriptSound( "WallHealth.Start" );
|
PrecacheScriptSound( "WallHealth.Start" );
|
||||||
@ -651,7 +667,7 @@ void CNewWallHealth::StudioFrameAdvance( void )
|
|||||||
m_flPlaybackRate = 0;
|
m_flPlaybackRate = 0;
|
||||||
|
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
float flMaxJuice = MaxJuice();
|
float flMaxJuice = MaxJuice() + 0.1f;
|
||||||
#else
|
#else
|
||||||
float flMaxJuice = sk_healthcharger.GetFloat();
|
float flMaxJuice = sk_healthcharger.GetFloat();
|
||||||
#endif
|
#endif
|
||||||
@ -707,21 +723,21 @@ void CNewWallHealth::InputRecharge( inputdata_t &inputdata )
|
|||||||
|
|
||||||
void CNewWallHealth::InputSetCharge( inputdata_t &inputdata )
|
void CNewWallHealth::InputSetCharge( inputdata_t &inputdata )
|
||||||
{
|
{
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
|
||||||
|
|
||||||
int iJuice = inputdata.value.Int();
|
int iJuice = inputdata.value.Int();
|
||||||
|
|
||||||
m_flJuice = m_iMaxJuice = m_iJuice = iJuice;
|
m_flJuice = m_iMaxJuice = m_iJuice = iJuice;
|
||||||
|
|
||||||
|
ResetSequence( m_iJuice > 0 ? LookupSequence( "idle" ) : LookupSequence( "empty" ) );
|
||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CNewWallHealth::InputSetChargeNoMax( inputdata_t &inputdata )
|
void CNewWallHealth::InputSetChargeNoMax( inputdata_t &inputdata )
|
||||||
{
|
{
|
||||||
ResetSequence( LookupSequence( "idle" ) );
|
|
||||||
|
|
||||||
m_flJuice = inputdata.value.Float();
|
m_flJuice = inputdata.value.Float();
|
||||||
|
|
||||||
UpdateJuice(m_flJuice);
|
UpdateJuice(m_flJuice);
|
||||||
|
|
||||||
|
ResetSequence( m_iJuice > 0 ? LookupSequence( "idle" ) : LookupSequence( "empty" ) );
|
||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1072,7 +1072,11 @@ void CProtoSniper::Spawn( void )
|
|||||||
// Point the cursor straight ahead so that the sniper's
|
// Point the cursor straight ahead so that the sniper's
|
||||||
// first sweep of the laser doesn't look weird.
|
// first sweep of the laser doesn't look weird.
|
||||||
Vector vecForward;
|
Vector vecForward;
|
||||||
|
#ifdef MAPBASE
|
||||||
|
AngleVectors( GetAbsAngles(), &vecForward );
|
||||||
|
#else
|
||||||
AngleVectors( GetLocalAngles(), &vecForward );
|
AngleVectors( GetLocalAngles(), &vecForward );
|
||||||
|
#endif
|
||||||
m_vecPaintCursor = GetBulletOrigin() + vecForward * 1024;
|
m_vecPaintCursor = GetBulletOrigin() + vecForward * 1024;
|
||||||
|
|
||||||
m_fWeaponLoaded = true;
|
m_fWeaponLoaded = true;
|
||||||
@ -1287,7 +1291,11 @@ Vector CProtoSniper::GetBulletOrigin( void )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Vector vecForward;
|
Vector vecForward;
|
||||||
|
#ifdef MAPBASE
|
||||||
|
AngleVectors( GetAbsAngles(), &vecForward );
|
||||||
|
#else
|
||||||
AngleVectors( GetLocalAngles(), &vecForward );
|
AngleVectors( GetLocalAngles(), &vecForward );
|
||||||
|
#endif
|
||||||
return WorldSpaceCenter() + vecForward * 20;
|
return WorldSpaceCenter() + vecForward * 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1428,7 +1436,7 @@ void CProtoSniper::Event_Killed( const CTakeDamageInfo &info )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Vector vecForward;
|
Vector vecForward;
|
||||||
AngleVectors( GetLocalAngles(), &vecForward );
|
AngleVectors( GetAbsAngles(), &vecForward );
|
||||||
float flForce = random->RandomFloat( 500, 700 ) * 10;
|
float flForce = random->RandomFloat( 500, 700 ) * 10;
|
||||||
|
|
||||||
vecForce = (vecForward * flForce) + Vector(0, 0, 600);
|
vecForce = (vecForward * flForce) + Vector(0, 0, 600);
|
||||||
@ -1451,7 +1459,7 @@ void CProtoSniper::Event_Killed( const CTakeDamageInfo &info )
|
|||||||
CBaseEntity *pGib;
|
CBaseEntity *pGib;
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
bool bShouldIgnite = IsOnFire() || HasSpawnFlags(SF_SNIPER_DIE_ON_FIRE);
|
bool bShouldIgnite = IsOnFire() || HasSpawnFlags(SF_SNIPER_DIE_ON_FIRE);
|
||||||
pGib = CreateRagGib( STRING(GetModelName()), GetLocalOrigin(), GetLocalAngles(), vecForce, flFadeTime, bShouldIgnite );
|
pGib = CreateRagGib( STRING(GetModelName()), GetAbsOrigin(), GetAbsAngles(), vecForce, flFadeTime, bShouldIgnite );
|
||||||
#else
|
#else
|
||||||
bool bShouldIgnite = IsOnFire() || hl2_episodic.GetBool();
|
bool bShouldIgnite = IsOnFire() || hl2_episodic.GetBool();
|
||||||
pGib = CreateRagGib( "models/combine_soldier.mdl", GetLocalOrigin(), GetLocalAngles(), (vecForward * flForce) + Vector(0, 0, 600), flFadeTime, bShouldIgnite );
|
pGib = CreateRagGib( "models/combine_soldier.mdl", GetLocalOrigin(), GetLocalAngles(), (vecForward * flForce) + Vector(0, 0, 600), flFadeTime, bShouldIgnite );
|
||||||
@ -1929,7 +1937,11 @@ int CProtoSniper::RangeAttack1Conditions ( float flDot, float flDist )
|
|||||||
|
|
||||||
float flDist;
|
float flDist;
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
flDist = ( GetAbsOrigin() - GetEnemy()->GetAbsOrigin() ).Length2D();
|
||||||
|
#else
|
||||||
flDist = ( GetLocalOrigin() - GetEnemy()->GetLocalOrigin() ).Length2D();
|
flDist = ( GetLocalOrigin() - GetEnemy()->GetLocalOrigin() ).Length2D();
|
||||||
|
#endif
|
||||||
|
|
||||||
if( flDist <= m_flPatience )
|
if( flDist <= m_flPatience )
|
||||||
{
|
{
|
||||||
@ -2027,7 +2039,11 @@ bool CProtoSniper::FireBullet( const Vector &vecTarget, bool bDirectShot )
|
|||||||
|
|
||||||
vecBulletOrigin = GetBulletOrigin();
|
vecBulletOrigin = GetBulletOrigin();
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
pBullet = (CSniperBullet *)Create( "sniperbullet", GetBulletOrigin(), GetAbsAngles(), NULL );
|
||||||
|
#else
|
||||||
pBullet = (CSniperBullet *)Create( "sniperbullet", GetBulletOrigin(), GetLocalAngles(), NULL );
|
pBullet = (CSniperBullet *)Create( "sniperbullet", GetBulletOrigin(), GetLocalAngles(), NULL );
|
||||||
|
#endif
|
||||||
|
|
||||||
Assert( pBullet != NULL );
|
Assert( pBullet != NULL );
|
||||||
|
|
||||||
@ -2128,10 +2144,18 @@ void CProtoSniper::StartTask( const Task_t *pTask )
|
|||||||
// Otherwise, sweep from wherever the cursor was.
|
// Otherwise, sweep from wherever the cursor was.
|
||||||
if( m_hSweepTarget->HasSpawnFlags( SF_SNIPERTARGET_SNAPTO ) )
|
if( m_hSweepTarget->HasSpawnFlags( SF_SNIPERTARGET_SNAPTO ) )
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
m_vecPaintCursor = m_hSweepTarget->GetAbsOrigin();
|
||||||
|
#else
|
||||||
m_vecPaintCursor = m_hSweepTarget->GetLocalOrigin();
|
m_vecPaintCursor = m_hSweepTarget->GetLocalOrigin();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
LaserOn( m_hSweepTarget->GetAbsOrigin(), vec3_origin );
|
||||||
|
#else
|
||||||
LaserOn( m_hSweepTarget->GetLocalOrigin(), vec3_origin );
|
LaserOn( m_hSweepTarget->GetLocalOrigin(), vec3_origin );
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TASK_SNIPER_PAINT_ENEMY:
|
case TASK_SNIPER_PAINT_ENEMY:
|
||||||
@ -2200,7 +2224,11 @@ void CProtoSniper::StartTask( const Task_t *pTask )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Try to start the laser where the player can't miss seeing it!
|
// Try to start the laser where the player can't miss seeing it!
|
||||||
|
#ifdef MAPBASE
|
||||||
|
AngleVectors( GetEnemy()->GetAbsAngles(), &vecCursor );
|
||||||
|
#else
|
||||||
AngleVectors( GetEnemy()->GetLocalAngles(), &vecCursor );
|
AngleVectors( GetEnemy()->GetLocalAngles(), &vecCursor );
|
||||||
|
#endif
|
||||||
vecCursor = vecCursor * 300;
|
vecCursor = vecCursor * 300;
|
||||||
vecCursor += GetEnemy()->EyePosition();
|
vecCursor += GetEnemy()->EyePosition();
|
||||||
LaserOn( vecCursor, Vector( 16, 16, 16 ) );
|
LaserOn( vecCursor, Vector( 16, 16, 16 ) );
|
||||||
@ -2334,7 +2362,11 @@ void CProtoSniper::RunTask( const Task_t *pTask )
|
|||||||
|
|
||||||
if ( m_hSweepTarget->HasSpawnFlags( SF_SNIPERTARGET_SHOOTME ) )
|
if ( m_hSweepTarget->HasSpawnFlags( SF_SNIPERTARGET_SHOOTME ) )
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
FireBullet( m_hSweepTarget->GetAbsOrigin(), false );
|
||||||
|
#else
|
||||||
FireBullet( m_hSweepTarget->GetLocalOrigin(), false );
|
FireBullet( m_hSweepTarget->GetLocalOrigin(), false );
|
||||||
|
#endif
|
||||||
TaskComplete(); // Force a reload.
|
TaskComplete(); // Force a reload.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2343,7 +2375,11 @@ void CProtoSniper::RunTask( const Task_t *pTask )
|
|||||||
// Bump the timer up, update the cursor, paint the new target!
|
// Bump the timer up, update the cursor, paint the new target!
|
||||||
// This is done regardless of whether we just fired at the current target.
|
// This is done regardless of whether we just fired at the current target.
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
m_vecPaintCursor = m_hSweepTarget->GetAbsOrigin();
|
||||||
|
#else
|
||||||
m_vecPaintCursor = m_hSweepTarget->GetLocalOrigin();
|
m_vecPaintCursor = m_hSweepTarget->GetLocalOrigin();
|
||||||
|
#endif
|
||||||
if( IsSweepingRandomly() )
|
if( IsSweepingRandomly() )
|
||||||
{
|
{
|
||||||
// If sweeping randomly, just pick another target.
|
// If sweeping randomly, just pick another target.
|
||||||
@ -2533,7 +2569,11 @@ Vector CProtoSniper::EyePosition( void )
|
|||||||
{
|
{
|
||||||
if( m_spawnflags & SF_SNIPER_HIDDEN )
|
if( m_spawnflags & SF_SNIPER_HIDDEN )
|
||||||
{
|
{
|
||||||
|
#ifdef MAPBASE
|
||||||
|
return GetAbsOrigin();
|
||||||
|
#else
|
||||||
return GetLocalOrigin();
|
return GetLocalOrigin();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2672,7 +2712,11 @@ Vector CProtoSniper::LeadTarget( CBaseEntity *pTarget )
|
|||||||
vecAngle.x = 0;
|
vecAngle.x = 0;
|
||||||
vecAngle.z = 0;
|
vecAngle.z = 0;
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
vecAngle.y += pTarget->GetAbsAngles().y;
|
||||||
|
#else
|
||||||
vecAngle.y += pTarget->GetLocalAngles().y;
|
vecAngle.y += pTarget->GetLocalAngles().y;
|
||||||
|
#endif
|
||||||
|
|
||||||
AngleVectors( vecAngle, &vecVelocity );
|
AngleVectors( vecAngle, &vecVelocity );
|
||||||
|
|
||||||
@ -2707,7 +2751,11 @@ Vector CProtoSniper::LeadTarget( CBaseEntity *pTarget )
|
|||||||
{
|
{
|
||||||
Vector vecBulletOrigin;
|
Vector vecBulletOrigin;
|
||||||
vecBulletOrigin = GetBulletOrigin();
|
vecBulletOrigin = GetBulletOrigin();
|
||||||
|
#ifdef MAPBASE
|
||||||
|
CPVSFilter filter( GetAbsOrigin() );
|
||||||
|
#else
|
||||||
CPVSFilter filter( GetLocalOrigin() );
|
CPVSFilter filter( GetLocalOrigin() );
|
||||||
|
#endif
|
||||||
te->ShowLine( filter, 0.0, &vecBulletOrigin, &vecAdjustedShot );
|
te->ShowLine( filter, 0.0, &vecBulletOrigin, &vecAdjustedShot );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2906,7 +2954,11 @@ bool CProtoSniper::FVisible( CBaseEntity *pEntity, int traceMask, CBaseEntity **
|
|||||||
vecVerticalOffset = SNIPER_TARGET_VERTICAL_OFFSET;
|
vecVerticalOffset = SNIPER_TARGET_VERTICAL_OFFSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
AngleVectors( pEntity->GetAbsAngles(), NULL, &vecRight, NULL );
|
||||||
|
#else
|
||||||
AngleVectors( pEntity->GetLocalAngles(), NULL, &vecRight, NULL );
|
AngleVectors( pEntity->GetLocalAngles(), NULL, &vecRight, NULL );
|
||||||
|
#endif
|
||||||
|
|
||||||
vecEye = vecRight * SNIPER_EYE_DIST - vecVerticalOffset;
|
vecEye = vecRight * SNIPER_EYE_DIST - vecVerticalOffset;
|
||||||
UTIL_TraceLine( EyePosition(), pEntity->EyePosition() + vecEye, MASK_BLOCKLOS, this, COLLISION_GROUP_NONE, &tr );
|
UTIL_TraceLine( EyePosition(), pEntity->EyePosition() + vecEye, MASK_BLOCKLOS, this, COLLISION_GROUP_NONE, &tr );
|
||||||
|
@ -358,6 +358,11 @@ bool UTIL_ItemCanBeTouchedByPlayer( CBaseEntity *pItem, CBasePlayer *pPlayer )
|
|||||||
// so we have to make sure we're not dealing with a weapon for this check after all.
|
// so we have to make sure we're not dealing with a weapon for this check after all.
|
||||||
if (pItem->HasSpawnFlags(SF_ITEM_NO_PLAYER_PICKUP) && !pItem->IsBaseCombatWeapon())
|
if (pItem->HasSpawnFlags(SF_ITEM_NO_PLAYER_PICKUP) && !pItem->IsBaseCombatWeapon())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Fortunately, unlike the above code, this flag is identical in between weapons and items
|
||||||
|
// and can safely be used without identifying the entity.
|
||||||
|
if (pItem->HasSpawnFlags(SF_ITEM_ALWAYS_TOUCHABLE))
|
||||||
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// For now, always allow a vehicle riding player to pick up things they're driving over
|
// For now, always allow a vehicle riding player to pick up things they're driving over
|
||||||
|
@ -42,6 +42,8 @@
|
|||||||
#define SF_ITEM_NO_PLAYER_PICKUP (1<<1)
|
#define SF_ITEM_NO_PLAYER_PICKUP (1<<1)
|
||||||
#define SF_ITEM_NO_PHYSCANNON_PUNT (1<<2)
|
#define SF_ITEM_NO_PHYSCANNON_PUNT (1<<2)
|
||||||
#define SF_ITEM_NO_NPC_PICKUP (1<<3)
|
#define SF_ITEM_NO_NPC_PICKUP (1<<3)
|
||||||
|
|
||||||
|
#define SF_ITEM_ALWAYS_TOUCHABLE (1<<6) // This needs to stay synced with the weapon spawnflag
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -514,7 +514,12 @@ int CCollisionEvent::ShouldCollide_2( IPhysicsObject *pObj0, IPhysicsObject *pOb
|
|||||||
if ( pEntity0->edict() && pEntity1->edict() )
|
if ( pEntity0->edict() && pEntity1->edict() )
|
||||||
{
|
{
|
||||||
// don't collide with your owner
|
// don't collide with your owner
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if ( (pEntity0->GetOwnerEntity() == pEntity1 && !pEntity0->IsSolidFlagSet(FSOLID_COLLIDE_WITH_OWNER))
|
||||||
|
|| (pEntity1->GetOwnerEntity() == pEntity0 && !pEntity1->IsSolidFlagSet(FSOLID_COLLIDE_WITH_OWNER)) )
|
||||||
|
#else
|
||||||
if ( pEntity0->GetOwnerEntity() == pEntity1 || pEntity1->GetOwnerEntity() == pEntity0 )
|
if ( pEntity0->GetOwnerEntity() == pEntity1 || pEntity1->GetOwnerEntity() == pEntity0 )
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6673,7 +6673,11 @@ bool CBasePlayer::BumpWeapon( CBaseCombatWeapon *pWeapon )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows)
|
// Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows)
|
||||||
|
#ifdef MAPBASE
|
||||||
|
if( (pWeapon->FVisible( this, MASK_SOLID ) == false && !(GetFlags() & FL_NOTARGET)) && !HasSpawnFlags(SF_WEAPON_ALWAYS_TOUCHABLE) )
|
||||||
|
#else
|
||||||
if( pWeapon->FVisible( this, MASK_SOLID ) == false && !(GetFlags() & FL_NOTARGET) )
|
if( pWeapon->FVisible( this, MASK_SOLID ) == false && !(GetFlags() & FL_NOTARGET) )
|
||||||
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,6 +120,7 @@ BEGIN_DATADESC( CAI_ScriptedSequence )
|
|||||||
DEFINE_OUTPUT(m_OnScriptEvent[7], "OnScriptEvent08"),
|
DEFINE_OUTPUT(m_OnScriptEvent[7], "OnScriptEvent08"),
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
DEFINE_OUTPUT(m_OnPreIdleSequence, "OnPreIdleSequence"),
|
DEFINE_OUTPUT(m_OnPreIdleSequence, "OnPreIdleSequence"),
|
||||||
|
DEFINE_OUTPUT(m_OnFoundNPC, "OnFoundNPC"),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
END_DATADESC()
|
END_DATADESC()
|
||||||
@ -803,6 +804,10 @@ void CAI_ScriptedSequence::StartScript( void )
|
|||||||
DevWarning( "scripted_sequence %d:%s - restarting dormant entity %d:%s : %.1f:%.1f\n", entindex(), GetDebugName(), pTarget->entindex(), pTarget->GetDebugName(), gpGlobals->curtime, pTarget->GetNextThink() );
|
DevWarning( "scripted_sequence %d:%s - restarting dormant entity %d:%s : %.1f:%.1f\n", entindex(), GetDebugName(), pTarget->entindex(), pTarget->GetDebugName(), gpGlobals->curtime, pTarget->GetNextThink() );
|
||||||
pTarget->SetNextThink( gpGlobals->curtime );
|
pTarget->SetNextThink( gpGlobals->curtime );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
m_OnFoundNPC.FireOutput( pTarget, this );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,6 +221,7 @@ private:
|
|||||||
COutputEvent m_OnScriptEvent[MAX_SCRIPT_EVENTS];
|
COutputEvent m_OnScriptEvent[MAX_SCRIPT_EVENTS];
|
||||||
#ifdef MAPBASE
|
#ifdef MAPBASE
|
||||||
COutputEvent m_OnPreIdleSequence;
|
COutputEvent m_OnPreIdleSequence;
|
||||||
|
COutputEvent m_OnFoundNPC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void ScriptEntityCancel( CBaseEntity *pentCine, bool bPretendSuccess = false );
|
static void ScriptEntityCancel( CBaseEntity *pentCine, bool bPretendSuccess = false );
|
||||||
|
@ -55,6 +55,7 @@ class CUserCmd;
|
|||||||
#define SF_WEAPON_NO_NPC_PICKUP (1<<3) // Prevents NPCs from picking up the weapon.
|
#define SF_WEAPON_NO_NPC_PICKUP (1<<3) // Prevents NPCs from picking up the weapon.
|
||||||
#define SF_WEAPON_PRESERVE_AMMO (1<<4) // Prevents the weapon from filling up to max automatically when dropped or picked up by players.
|
#define SF_WEAPON_PRESERVE_AMMO (1<<4) // Prevents the weapon from filling up to max automatically when dropped or picked up by players.
|
||||||
#define SF_WEAPON_PRESERVE_NAME (1<<5) // Prevents the weapon's name from being cleared upon being picked up by a player.
|
#define SF_WEAPON_PRESERVE_NAME (1<<5) // Prevents the weapon's name from being cleared upon being picked up by a player.
|
||||||
|
#define SF_WEAPON_ALWAYS_TOUCHABLE (1<<6) // Makes a weapon always touchable/pickupable, even through walls.
|
||||||
|
|
||||||
// ----------------------------------------------
|
// ----------------------------------------------
|
||||||
// These spawnflags are not supposed to be used by level designers.
|
// These spawnflags are not supposed to be used by level designers.
|
||||||
|
@ -219,6 +219,15 @@ bool PassServerEntityFilter( const IHandleEntity *pTouch, const IHandleEntity *p
|
|||||||
if ( !pEntTouch || !pEntPass )
|
if ( !pEntTouch || !pEntPass )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
// don't clip against own missiles
|
||||||
|
if ( pEntTouch->GetOwnerEntity() == pEntPass && !pEntTouch->IsSolidFlagSet(FSOLID_COLLIDE_WITH_OWNER) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// don't clip against owner
|
||||||
|
if ( pEntPass->GetOwnerEntity() == pEntTouch && !pEntPass->IsSolidFlagSet(FSOLID_COLLIDE_WITH_OWNER) )
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
// don't clip against own missiles
|
// don't clip against own missiles
|
||||||
if ( pEntTouch->GetOwnerEntity() == pEntPass )
|
if ( pEntTouch->GetOwnerEntity() == pEntPass )
|
||||||
return false;
|
return false;
|
||||||
@ -226,6 +235,7 @@ bool PassServerEntityFilter( const IHandleEntity *pTouch, const IHandleEntity *p
|
|||||||
// don't clip against owner
|
// don't clip against owner
|
||||||
if ( pEntPass->GetOwnerEntity() == pEntTouch )
|
if ( pEntPass->GetOwnerEntity() == pEntTouch )
|
||||||
return false;
|
return false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -177,6 +177,9 @@ void InitParamsLightmappedGeneric_DX9( CBaseVSShader *pShader, IMaterialVar** pa
|
|||||||
if( !g_pConfig->UseSpecular() && params[info.m_nEnvmap]->IsDefined() && params[info.m_nBaseTexture]->IsDefined() )
|
if( !g_pConfig->UseSpecular() && params[info.m_nEnvmap]->IsDefined() && params[info.m_nBaseTexture]->IsDefined() )
|
||||||
{
|
{
|
||||||
params[info.m_nEnvmap]->SetUndefined();
|
params[info.m_nEnvmap]->SetUndefined();
|
||||||
|
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||||
|
params[info.m_nEnvmapParallax]->SetUndefined();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !params[info.m_nBaseTextureNoEnvmap]->IsDefined() )
|
if( !params[info.m_nBaseTextureNoEnvmap]->IsDefined() )
|
||||||
|
@ -250,7 +250,14 @@ enum SolidFlags_t
|
|||||||
FSOLID_ROOT_PARENT_ALIGNED = 0x0100, // Collisions are defined in root parent's local coordinate space
|
FSOLID_ROOT_PARENT_ALIGNED = 0x0100, // Collisions are defined in root parent's local coordinate space
|
||||||
FSOLID_TRIGGER_TOUCH_DEBRIS = 0x0200, // This trigger will touch debris objects
|
FSOLID_TRIGGER_TOUCH_DEBRIS = 0x0200, // This trigger will touch debris objects
|
||||||
|
|
||||||
|
#ifdef MAPBASE
|
||||||
|
// From https://developer.valvesoftware.com/wiki/Owner
|
||||||
|
FSOLID_COLLIDE_WITH_OWNER = 0X0400,
|
||||||
|
|
||||||
|
FSOLID_MAX_BITS = 11
|
||||||
|
#else
|
||||||
FSOLID_MAX_BITS = 10
|
FSOLID_MAX_BITS = 10
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user