Skip to content

Commit 2fcee00

Browse files
committed
update
1 parent 8cf78e1 commit 2fcee00

3 files changed

Lines changed: 56 additions & 12 deletions

File tree

reactivedrop/fgd/reactivedrop.fgd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@
149149
input SetExcluded( string ) : "Change the NPC class excluded from collisions"
150150
input SetInvert( integer ) : "Set the state of inversion for NPC class exclusion (0 or 1)"
151151
input AllowFade( integer ) : "Enable or disable fading (0 or 1)"
152-
input CollideWithGrenades( integer ) : "Change CollideWithGrenades at runtime (0, 1 or 2)"
153-
input CollideWithMarines( integer ) : "Change CollideWithMarines at runtime (0 or 1)"
152+
input SetCollideWithGrenades(integer) : "Change CollideWithGrenades at runtime (0, 1 or 2)"
153+
input SetCollideWithMarines(integer) : "Enable or disable marine collisions (0 or 1)"
154154
]
155155

156156
@PointClass base(prop_dynamic_base, EnableDisable) sphere(fademindist) sphere(fademaxdist) studioprop() = prop_asw_fade :

src/game/server/swarm/func_asw_fade.cpp

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,22 @@
1111
LINK_ENTITY_TO_CLASS( func_asw_fade, CFunc_ASW_Fade );
1212

1313
BEGIN_DATADESC( CFunc_ASW_Fade )
14-
DEFINE_FIELD( m_bHasProxies, FIELD_BOOLEAN ),
15-
DEFINE_KEYFIELD( m_nFadeOpacity, FIELD_CHARACTER, "fade_opacity" ),
16-
DEFINE_INPUT( m_iCollideWithGrenades, FIELD_CHARACTER, "CollideWithGrenades" ),
17-
DEFINE_INPUT( m_bCollideWithMarines, FIELD_BOOLEAN, "CollideWithMarines" ),
18-
DEFINE_INPUT( m_bAllowFade, FIELD_BOOLEAN, "AllowFade" ),
14+
DEFINE_FIELD( m_bHasProxies, FIELD_BOOLEAN ),
15+
DEFINE_KEYFIELD( m_nFadeOpacity, FIELD_CHARACTER, "fade_opacity" ),
16+
DEFINE_KEYFIELD( m_iCollideWithGrenades, FIELD_CHARACTER, "CollideWithGrenades" ),
17+
DEFINE_KEYFIELD( m_bCollideWithMarines, FIELD_BOOLEAN, "CollideWithMarines" ),
18+
DEFINE_KEYFIELD( m_bAllowFade, FIELD_BOOLEAN, "AllowFade" ),
19+
20+
DEFINE_INPUTFUNC( FIELD_INTEGER, "SetCollideWithGrenades", InputSetCollideWithGrenades ),
21+
DEFINE_INPUTFUNC( FIELD_BOOLEAN, "SetCollideWithMarines", InputSetCollideWithMarines ),
1922
END_DATADESC()
2023

2124
IMPLEMENT_SERVERCLASS_ST( CFunc_ASW_Fade, DT_Func_ASW_Fade )
22-
SendPropInt( SENDINFO( m_nFadeOpacity ), 8, SPROP_UNSIGNED ),
23-
SendPropInt( SENDINFO( m_iCollideWithGrenades ), 2, SPROP_UNSIGNED ),
24-
SendPropBool( SENDINFO( m_bCollideWithMarines ) ),
25-
SendPropBool( SENDINFO( m_bAllowFade ) ),
26-
SendPropBool( SENDINFO( m_bHasProxies ) ),
25+
SendPropInt( SENDINFO( m_nFadeOpacity ), 8, SPROP_UNSIGNED ),
26+
SendPropInt( SENDINFO( m_iCollideWithGrenades ), 2, SPROP_UNSIGNED ),
27+
SendPropBool( SENDINFO( m_bCollideWithMarines ) ),
28+
SendPropBool( SENDINFO( m_bAllowFade ) ),
29+
SendPropBool( SENDINFO( m_bHasProxies ) ),
2730
END_SEND_TABLE()
2831

2932
CFunc_ASW_Fade::CFunc_ASW_Fade()
@@ -72,6 +75,44 @@ void CFunc_ASW_Fade::DisableCollisionsWithMarine( CBaseEntity *pMarine )
7275
}
7376
}
7477

78+
void CFunc_ASW_Fade::InputSetCollideWithGrenades( inputdata_t& inputdata )
79+
{
80+
m_iCollideWithGrenades = clamp( inputdata.value.Int(), 0, 2 );
81+
82+
static const char* pszExplosiveClasses[] = {
83+
"asw_mine",
84+
"npc_zombine",
85+
"asw_rocket",
86+
"grenadespit",
87+
"asw_missile_round",
88+
"asw_grenade_cluster",
89+
"asw_flare_projectile",
90+
"asw_laser_mine",
91+
"asw_grenade_vindicator",
92+
nullptr
93+
};
94+
95+
for ( const char** pszClass = pszExplosiveClasses; *pszClass; ++pszClass )
96+
{
97+
CBaseEntity* pGrenade = NULL;
98+
while ( ( pGrenade = gEntList.FindEntityByClassname( pGrenade, *pszClass ) ) != NULL )
99+
{
100+
DisableCollisionsWithGrenade( pGrenade );
101+
}
102+
}
103+
}
104+
105+
void CFunc_ASW_Fade::InputSetCollideWithMarines( inputdata_t& inputdata )
106+
{
107+
m_bCollideWithMarines = !!inputdata.value.Int();
108+
109+
CBaseEntity* pMarine = NULL;
110+
while ( ( pMarine = gEntList.FindEntityByClassname( pMarine, "asw_marine" ) ) != NULL )
111+
{
112+
DisableCollisionsWithMarine( pMarine );
113+
}
114+
}
115+
75116
bool CFunc_ASW_Fade::ShouldFade( CASW_Inhabitable_NPC *pNPC )
76117
{
77118
if ( !m_bAllowFade || !pNPC || !pNPC->IsInhabited() || !pNPC->GetCommander() )

src/game/server/swarm/func_asw_fade.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ class CFunc_ASW_Fade : public CFuncBrush
2424
static void DisableCollisionsWithGrenade( CBaseEntity *pGrenade );
2525
static void DisableCollisionsWithMarine( CBaseEntity *pMarine );
2626

27+
void InputSetCollideWithGrenades( inputdata_t& inputdata );
28+
void InputSetCollideWithMarines( inputdata_t& inputdata );
29+
2730
CNetworkVar( bool, m_bHasProxies );
2831
// 0 = only when grenade spawns above the brush
2932
// 1 = always

0 commit comments

Comments
 (0)