1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\util_shared;
5 #using scripts\shared\system_shared;
7 #insert scripts\shared\shared.gsh;
11 function launch( ent_1, str_tag1, ent_2, str_tag2, str_beam_type )
13 s_beam =
_get_beam( ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
15 if ( !isdefined( s_beam ) )
17 s_beam =
_new_beam( ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
22 if ( isdefined( level.localplayers ) )
24 foreach ( player
in level.localplayers )
26 if ( isdefined( player ) )
28 player
launch( ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
33 else if ( isdefined( s_beam ) )
35 s_beam.beam_id = BeamLaunch(
self.localclientnum, ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
37 return s_beam.beam_id;
41 function kill( ent_1, str_tag1, ent_2, str_tag2, str_beam_type )
43 if ( isdefined(
self.active_beams ) )
45 s_beam =
_get_beam( ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
46 ArrayRemoveValue(
self.active_beams, s_beam,
false );
51 if ( isdefined( level.localplayers ) )
53 foreach ( player
in level.localplayers )
55 if ( isdefined( player ) )
57 player
kill( ent_1, str_tag1, ent_2, str_tag2, str_beam_type );
62 else if ( isdefined( s_beam ) )
64 s_beam notify(
"kill" );
65 BeamKill(
self.localclientnum, s_beam.beam_id );
73 function private _new_beam( ent_1, str_tag1, ent_2, str_tag2, str_beam_type )
77 s_beam = SpawnStruct();
79 s_beam.str_tag1 = str_tag1;
81 s_beam.str_tag2 = str_tag2;
82 s_beam.str_beam_type = str_beam_type;
89 function private _get_beam( ent_1, str_tag1, ent_2, str_tag2, str_beam_type )
91 if ( isdefined(
self.active_beams ) )
93 foreach ( s_beam
in self.active_beams )
95 if ( ( s_beam.ent_1 == ent_1 )
96 && ( s_beam.str_tag1 == str_tag1 )
97 && ( s_beam.ent_2 == ent_2 )
98 && ( s_beam.str_tag2 == str_tag2 )
99 && ( s_beam.str_beam_type == str_beam_type ) )
109 s_beam endon(
"kill" );
110 self endon(
"death" );
114 if ( isdefined(
self ) )
116 ArrayRemoveValue(
self.active_beams, s_beam,
false );
117 BeamKill(
self.localclientnum, s_beam.beam_id );