1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
untyped
global function OnProjectileCollision_titanweapon_triple_threat
void function OnProjectileCollision_titanweapon_triple_threat( entity projectile, vector pos, vector normal, entity hitEnt, int hitbox, bool isCritical )
{
if( !IsValid( hitEnt ) )
return
if( "impactFuse" in projectile.s && projectile.s.impactFuse == true )
projectile.GrenadeExplode( Vector( 0,0,0 ) )
if( hitEnt.GetClassName() == "player" && !hitEnt.IsTitan() )
return
if( !IsValid( projectile ) )
return
if( IsMagneticTarget( hitEnt ) )
{
if( hitEnt.GetTeam() != projectile.GetTeam() )
{
local normal = Vector( 0, 0, 1 )
if( "collisionNormal" in projectile.s )
normal = projectile.s.collisionNormal
projectile.GrenadeExplode( normal )
}
}
else if( "becomeProxMine" in projectile.s && projectile.s.becomeProxMine == true )
{
table collisionParams =
{
pos = pos,
normal = normal,
hitEnt = hitEnt,
hitbox = hitbox
}
PlantStickyEntity( projectile, collisionParams )
projectile.s.collisionNormal <- normal
#if SERVER
thread TripleThreatProximityTrigger( projectile )
#endif
}
}
#if SERVER
function TripleThreatProximityTrigger( entity nade )
{
//Hack, shouldn't be necessary with the IsValid check in OnProjectileCollision.
if( !IsValid( nade ) )
return
nade.EndSignal( "OnDestroy" )
EmitSoundOnEntity( nade, "Wpn_TripleThreat_Grenade_MineAttach" )
wait TRIPLETHREAT_MINE_FIELD_ACTIVATION_TIME
EmitSoundOnEntity( nade, "Weapon_Vortex_Gun.ExplosiveWarningBeep" )
local rangeCheck = PROX_MINE_RANGE
while( 1 )
{
local origin = nade.GetOrigin()
int team = nade.GetTeam()
local entityArray = GetScriptManagedEntArrayWithinCenter( level._proximityTargetArrayID, team, origin, PROX_MINE_RANGE )
foreach( entity ent in entityArray )
{
if ( TRIPLETHREAT_MINE_FIELD_TITAN_ONLY )
if ( !ent.IsTitan() )
continue
if ( IsAlive( ent ) )
{
nade.Signal( "ProxMineTrigger" )
return
}
}
WaitFrame()
}
}
#endif // SERVER
|