1 #using scripts\codescripts\struct;
3 #using scripts\shared\util_shared;
5 #insert scripts\shared\shared.gsh;
7 #using scripts\zm\_zm_lightning_chain;
8 #using scripts\zm\_zm_weapons;
10 #insert scripts\zm\_zm_weap_tesla.gsh;
13 #precache( "client_fx", "zombie/fx_tesla_rail_view_zmb" );
14 #precache( "client_fx", "zombie/fx_tesla_tube_view_zmb" );
15 #precache( "client_fx", "zombie/fx_tesla_tube_view2_zmb" );
16 #precache( "client_fx", "zombie/fx_tesla_tube_view3_zmb" );
18 #precache( "client_fx", "zombie/fx_tesla_rail_view_ug_zmb" );
19 #precache( "client_fx", "zombie/fx_tesla_tube_view_ug_zmb" );
20 #precache( "client_fx", "zombie/fx_tesla_tube_view2_ug_zmb" );
21 #precache( "client_fx", "zombie/fx_tesla_tube_view3_ug_zmb" );
25 level.weaponZMTeslaGun = GetWeapon(
"tesla_gun" );
26 level.weaponZMTeslaGunUpgraded = GetWeapon(
"tesla_gun_upgraded" );
32 level._effect[
"tesla_viewmodel_rail"] =
"zombie/fx_tesla_rail_view_zmb";
33 level._effect[
"tesla_viewmodel_tube"] =
"zombie/fx_tesla_tube_view_zmb";
34 level._effect[
"tesla_viewmodel_tube2"] =
"zombie/fx_tesla_tube_view2_zmb";
35 level._effect[
"tesla_viewmodel_tube3"] =
"zombie/fx_tesla_tube_view3_zmb";
37 level._effect[
"tesla_viewmodel_rail_upgraded"] =
"zombie/fx_tesla_rail_view_ug_zmb";
38 level._effect[
"tesla_viewmodel_tube_upgraded"] =
"zombie/fx_tesla_tube_view_ug_zmb";
39 level._effect[
"tesla_viewmodel_tube2_upgraded"] =
"zombie/fx_tesla_tube_view2_ug_zmb";
40 level._effect[
"tesla_viewmodel_tube3_upgraded"] =
"zombie/fx_tesla_tube_view3_ug_zmb";
49 level.tesla_play_fx = [];
50 level.tesla_play_rail =
true;
52 players = GetLocalPlayers();
53 for( i = 0; i < players.size; i++ )
55 level.tesla_play_fx[i] =
false;
65 self endon(
"disconnect" );
66 self endon(
"entityshutdown" );
70 waitrealtime( RandomFloatRange( 8, 12 ) );
72 if ( !level.tesla_play_fx[localclientnum] )
76 if ( !level.tesla_play_rail )
81 currentweapon = GetCurrentWeapon( localclientnum );
82 if ( currentweapon != level.weaponZMTeslaGun && currentweapon != level.weaponZMTeslaGunUpgraded )
87 if ( IsADS( localclientnum ) || IsThrowingGrenade( localclientnum ) || IsMeleeing( localclientnum ) || IsOnTurret( localclientnum ) )
92 if ( GetWeaponAmmoClip( localclientnum, currentweapon ) <= 0 )
97 fx = level._effect[
"tesla_viewmodel_rail"];
99 if ( currentweapon == level.weaponZMTeslaGunUpgraded )
101 fx = level._effect[
"tesla_viewmodel_rail_upgraded"];
104 PlayViewmodelFx( localclientnum, fx,
"tag_flash" );
105 playsound(localclientnum,
"wpn_tesla_effects", (0,0,0));
111 self endon(
"disconnect" );
112 self endon(
"entityshutdown" );
118 if ( !level.tesla_play_fx[localclientnum] )
123 w_current = GetCurrentWeapon( localclientnum );
124 if ( w_current != level.weaponZMTeslaGun && w_current != level.weaponZMTeslaGunUpgraded )
129 if ( IsThrowingGrenade( localclientnum ) || IsMeleeing( localclientnum ) || IsOnTurret( localclientnum ) )
134 n_ammo = GetWeaponAmmoClip( localclientnum, w_current );
142 str_fx = level._effect[
"tesla_viewmodel_tube"];
144 if ( w_current == level.weaponZMTeslaGunUpgraded )
150 str_fx = level._effect[
"tesla_viewmodel_tube3_upgraded"];
156 str_fx = level._effect[
"tesla_viewmodel_tube2_upgraded"];
161 str_fx = level._effect[
"tesla_viewmodel_tube_upgraded"];
171 str_fx = level._effect[
"tesla_viewmodel_tube3"];
176 str_fx = level._effect[
"tesla_viewmodel_tube2"];
181 str_fx = level._effect[
"tesla_viewmodel_tube"];
187 if(
self.str_tesla_current_tube_effect === str_fx )
193 if( isdefined(
self.n_tesla_tube_fx_id ) )
195 DeleteFx( localClientNum,
self.n_tesla_tube_fx_id,
true );
197 self.str_tesla_current_tube_effect = str_fx;
198 self.n_tesla_tube_fx_id = PlayViewmodelFx( localclientnum, str_fx,
"tag_brass" );
199 self MapShaderConstant( localClientNum, 0,
"scriptVector2", 0, 1, n_tint, 0 );
208 level waittill(
"notetrack", localclientnum, note );
214 case "tesla_play_fx_off":
215 level.tesla_play_fx[localclientnum] =
false;
218 case "tesla_play_fx_on":
219 level.tesla_play_fx[localclientnum] =
true;
230 level waittill (
"TGH");
231 currentweapon = GetCurrentWeapon( localclientnum );
232 if ( currentweapon == level.weaponZMTeslaGun || currentweapon == level.weaponZMTeslaGunUpgraded )
234 playsound(localclientnum,
"wpn_tesla_happy", (0,0,0));
235 level.tesla_play_rail =
false;
237 level.tesla_play_rail =
true;
246 self endon(
"disconnect" );
250 self waittill(
"weapon_change" );
258 if( isdefined(
self.n_tesla_tube_fx_id ) )
260 DeleteFx( localClientNum,
self.n_tesla_tube_fx_id,
true );
261 self.n_tesla_tube_fx_id = undefined;
262 self.str_tesla_current_tube_effect = undefined;