1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\challenges_shared;
5 #using scripts\shared\damagefeedback_shared;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
8 #using scripts\shared\weapons\_weaponobjects;
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
14 #precache( "fx", "_t6/misc/fx_equip_light_red" );
15 #precache( "fx", "_t6/misc/fx_equip_light_green" );
21 level._effect[
"scrambler_enemy_light"] =
"_t6/misc/fx_equip_light_red";
22 level._effect[
"scrambler_friendly_light"] =
"_t6/misc/fx_equip_light_green";
23 level.scramblerWeapon = GetWeapon(
"scrambler" );
24 level.scramblerLength = 30.0;
27 level.scramblerOuterRadiusSq = 1000 * 1000;
28 level.scramblerInnerRadiusSq = 600 * 600;
40 watcher.hackable =
true;
46 player endon(
"disconnect");
47 self endon(
"death" );
51 player.scrambler =
self;
52 self SetOwner( player );
53 self SetTeam( player.team );
59 player AddWeaponStat(
self.weapon,
"used", 1 );
63 level notify(
"scrambler_spawn" );
68 if ( !isdefined( weapon ) || !weapon.isEmp )
70 PlayFX( level._equipment_explode_fx,
self.origin );
78 PlaySoundAtPosition (
"dst_equipment_destroy",
self.origin );
85 level notify(
"scrambler_death" );
87 if ( isdefined( player ) )
88 player.scrambler = undefined;
98 self endon(
"death" );
99 self endon(
"hacked" );
101 self SetCanDamage(
true );
106 self.damageTaken = 0;
111 self.maxhealth = 100000;
112 self.health =
self.maxhealth;
114 self waittill(
"damage",
damage, attacker, direction, point, type, tagName, modelName, partname, weapon, iDFlags );
116 if( !isdefined( attacker ) || !isplayer( attacker ) )
119 if ( level.teamBased && attacker.team ==
self.owner.team && attacker !=
self.owner )
125 if ( watcher.stunTime > 0 && weapon.doStun )
130 if ( weapon.doDamageFeedback )
133 if ( level.teambased &&
self.owner.team != attacker.team )
139 else if ( !level.teambased &&
self.owner != attacker )
146 if ( isPlayer( attacker ) && level.teambased && isdefined( attacker.team ) &&
self.owner.team == attacker.team && attacker !=
self.owner )
149 if ( type ==
"MOD_MELEE" || weapon.isEmp )
151 self.damageTaken = damageMax;
158 if (
self.damageTaken >= damageMax )
168 if ( !level.teamBased )
173 if ( !isdefined( owner1 ) || !isdefined( owner2 ) )
178 if ( !isdefined( owner1.team ) || !isdefined( owner2.team ) )
183 return ( owner1.team == owner2.team );
188 scramblers = GetEntArray(
"grenade",
"classname" );
190 if ( isdefined(
self.
name ) &&
self.
name ==
"scrambler" )
195 for ( i = 0; i < scramblers.size; i++ )
197 scrambler = scramblers[i];
199 if ( !IsAlive( scrambler ) )
204 if ( !isdefined( scrambler.name ) )
209 if ( scrambler.name !=
"scrambler" )
220 flattenedSelfOrigin = (
self.origin[0],
self.origin[1], 0 );
221 flattenedscramblerOrigin = (scrambler.origin[0], scrambler.origin[1], 0 );
222 if ( DistanceSquared( flattenedSelfOrigin, flattenedscramblerOrigin ) < level.scramblerOuterRadiusSq )