mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-08 01:47:50 -05:00
Checked _zm_weap_staff_lightning.gsc
This commit is contained in:
parent
32566932d2
commit
31e838effb
@ -1,3 +1,4 @@
|
|||||||
|
//checked includes match cerberus output
|
||||||
#include maps/mp/animscripts/shared;
|
#include maps/mp/animscripts/shared;
|
||||||
#include maps/mp/zombies/_zm_score;
|
#include maps/mp/zombies/_zm_score;
|
||||||
#include maps/mp/zombies/_zm_powerups;
|
#include maps/mp/zombies/_zm_powerups;
|
||||||
@ -9,7 +10,7 @@
|
|||||||
#include maps/mp/_utility;
|
#include maps/mp/_utility;
|
||||||
#include common_scripts/utility;
|
#include common_scripts/utility;
|
||||||
|
|
||||||
init()
|
init() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
level._effect[ "lightning_miss" ] = loadfx( "weapon/zmb_staff/fx_zmb_staff_elec_ug_impact_miss" );
|
level._effect[ "lightning_miss" ] = loadfx( "weapon/zmb_staff/fx_zmb_staff_elec_ug_impact_miss" );
|
||||||
level._effect[ "lightning_arc" ] = loadfx( "weapon/zmb_staff/fx_zmb_staff_elec_trail_bolt_cheap" );
|
level._effect[ "lightning_arc" ] = loadfx( "weapon/zmb_staff/fx_zmb_staff_elec_trail_bolt_cheap" );
|
||||||
@ -24,24 +25,24 @@ init()
|
|||||||
maps/mp/zombies/_zm_spawner::register_zombie_death_event_callback( ::staff_lightning_death_event );
|
maps/mp/zombies/_zm_spawner::register_zombie_death_event_callback( ::staff_lightning_death_event );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache()
|
precache() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
precacheitem( "staff_lightning_melee_zm" );
|
precacheitem( "staff_lightning_melee_zm" );
|
||||||
}
|
}
|
||||||
|
|
||||||
onplayerconnect()
|
onplayerconnect() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self thread onplayerspawned();
|
self thread onplayerspawned();
|
||||||
}
|
}
|
||||||
|
|
||||||
onplayerspawned()
|
onplayerspawned() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self thread watch_staff_lightning_fired();
|
self thread watch_staff_lightning_fired();
|
||||||
self thread watch_staff_usage();
|
self thread watch_staff_usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
watch_staff_lightning_fired()
|
watch_staff_lightning_fired() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
@ -56,7 +57,7 @@ watch_staff_lightning_fired()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightning_ball_wait( n_lifetime_after_move )
|
lightning_ball_wait( n_lifetime_after_move ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
level endon( "lightning_ball_created" );
|
level endon( "lightning_ball_created" );
|
||||||
self waittill( "movedone" );
|
self waittill( "movedone" );
|
||||||
@ -64,7 +65,7 @@ lightning_ball_wait( n_lifetime_after_move )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_position_source( v_detonate, v_angles, str_weapon )
|
staff_lightning_position_source( v_detonate, v_angles, str_weapon ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
level notify( "lightning_ball_created" );
|
level notify( "lightning_ball_created" );
|
||||||
@ -92,9 +93,11 @@ staff_lightning_position_source( v_detonate, v_angles, str_weapon )
|
|||||||
n_movetime_s = n_dist / staff_lightning_ball_speed;
|
n_movetime_s = n_dist / staff_lightning_ball_speed;
|
||||||
n_leftover_time = n_max_movetime_s - n_movetime_s;
|
n_leftover_time = n_max_movetime_s - n_movetime_s;
|
||||||
e_ball_fx thread staff_lightning_ball_kill_zombies( self );
|
e_ball_fx thread staff_lightning_ball_kill_zombies( self );
|
||||||
|
/*
|
||||||
/#
|
/#
|
||||||
e_ball_fx thread puzzle_debug_position( "X", ( 175, 0, 255 ) );
|
e_ball_fx thread puzzle_debug_position( "X", ( 175, 0, 255 ) );
|
||||||
#/
|
#/
|
||||||
|
*/
|
||||||
e_ball_fx moveto( v_end, n_movetime_s );
|
e_ball_fx moveto( v_end, n_movetime_s );
|
||||||
finished_playing = e_ball_fx lightning_ball_wait( n_leftover_time );
|
finished_playing = e_ball_fx lightning_ball_wait( n_leftover_time );
|
||||||
e_ball_fx notify( "stop_killing" );
|
e_ball_fx notify( "stop_killing" );
|
||||||
@ -109,58 +112,50 @@ staff_lightning_position_source( v_detonate, v_angles, str_weapon )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_ball_kill_zombies( e_attacker )
|
staff_lightning_ball_kill_zombies( e_attacker ) //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "stop_killing" );
|
self endon( "stop_killing" );
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
a_zombies = staff_lightning_get_valid_targets( e_attacker, self.origin );
|
a_zombies = staff_lightning_get_valid_targets( e_attacker, self.origin );
|
||||||
while ( isDefined( a_zombies ) )
|
if ( isDefined( a_zombies ) )
|
||||||
{
|
{
|
||||||
_a173 = a_zombies;
|
foreach ( zombie in a_zombies )
|
||||||
_k173 = getFirstArrayKey( _a173 );
|
|
||||||
while ( isDefined( _k173 ) )
|
|
||||||
{
|
{
|
||||||
zombie = _a173[ _k173 ];
|
|
||||||
if ( staff_lightning_is_target_valid( zombie ) )
|
if ( staff_lightning_is_target_valid( zombie ) )
|
||||||
{
|
{
|
||||||
e_attacker thread staff_lightning_arc_fx( self, zombie );
|
e_attacker thread staff_lightning_arc_fx( self, zombie );
|
||||||
wait 0,2;
|
wait 0.2;
|
||||||
}
|
|
||||||
_k173 = getNextArrayKey( _a173, _k173 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wait 0,5;
|
}
|
||||||
|
wait 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_get_valid_targets( player, v_source )
|
staff_lightning_get_valid_targets( player, v_source ) //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
player endon( "disconnect" );
|
player endon( "disconnect" );
|
||||||
a_enemies = [];
|
a_enemies = [];
|
||||||
a_zombies = getaiarray( level.zombie_team );
|
a_zombies = getaiarray( level.zombie_team );
|
||||||
a_zombies = get_array_of_closest( v_source, a_zombies, undefined, undefined, self.n_range );
|
a_zombies = get_array_of_closest( v_source, a_zombies, undefined, undefined, self.n_range );
|
||||||
while ( isDefined( a_zombies ) )
|
if ( isDefined( a_zombies ) )
|
||||||
{
|
{
|
||||||
_a200 = a_zombies;
|
foreach ( ai_zombie in a_zombies )
|
||||||
_k200 = getFirstArrayKey( _a200 );
|
|
||||||
while ( isDefined( _k200 ) )
|
|
||||||
{
|
{
|
||||||
ai_zombie = _a200[ _k200 ];
|
|
||||||
if ( staff_lightning_is_target_valid( ai_zombie ) )
|
if ( staff_lightning_is_target_valid( ai_zombie ) )
|
||||||
{
|
{
|
||||||
a_enemies[ a_enemies.size ] = ai_zombie;
|
a_enemies[ a_enemies.size ] = ai_zombie;
|
||||||
}
|
}
|
||||||
_k200 = getNextArrayKey( _a200, _k200 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return a_enemies;
|
return a_enemies;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_get_shot_range( n_charge )
|
staff_lightning_get_shot_range( n_charge ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
switch( n_charge )
|
switch ( n_charge )
|
||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
return 1200;
|
return 1200;
|
||||||
@ -169,7 +164,7 @@ staff_lightning_get_shot_range( n_charge )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_lightning_blast_range( n_charge )
|
get_lightning_blast_range( n_charge ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
switch( n_charge )
|
switch( n_charge )
|
||||||
{
|
{
|
||||||
@ -187,13 +182,13 @@ get_lightning_blast_range( n_charge )
|
|||||||
return n_range;
|
return n_range;
|
||||||
}
|
}
|
||||||
|
|
||||||
get_lightning_ball_damage_per_sec( n_charge )
|
get_lightning_ball_damage_per_sec( n_charge ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( !isDefined( n_charge ) )
|
if ( !isDefined( n_charge ) )
|
||||||
{
|
{
|
||||||
return 2500;
|
return 2500;
|
||||||
}
|
}
|
||||||
switch( n_charge )
|
switch ( n_charge )
|
||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
return 3500;
|
return 3500;
|
||||||
@ -202,7 +197,7 @@ get_lightning_ball_damage_per_sec( n_charge )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_is_target_valid( ai_zombie )
|
staff_lightning_is_target_valid( ai_zombie ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( !isDefined( ai_zombie ) )
|
if ( !isDefined( ai_zombie ) )
|
||||||
{
|
{
|
||||||
@ -219,7 +214,7 @@ staff_lightning_is_target_valid( ai_zombie )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker ) //checked changed at own discretion
|
||||||
{
|
{
|
||||||
e_attacker endon( "disconnect" );
|
e_attacker endon( "disconnect" );
|
||||||
e_target setclientfield( "lightning_impact_fx", 1 );
|
e_target setclientfield( "lightning_impact_fx", 1 );
|
||||||
@ -227,7 +222,7 @@ staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
|||||||
n_range_sq = e_source.n_range * e_source.n_range;
|
n_range_sq = e_source.n_range * e_source.n_range;
|
||||||
e_target.is_being_zapped = 1;
|
e_target.is_being_zapped = 1;
|
||||||
e_target setclientfield( "lightning_arc_fx", 1 );
|
e_target setclientfield( "lightning_arc_fx", 1 );
|
||||||
wait 0,5;
|
wait 0.5;
|
||||||
if ( isDefined( e_source ) )
|
if ( isDefined( e_source ) )
|
||||||
{
|
{
|
||||||
if ( !isDefined( e_source.n_damage_per_sec ) )
|
if ( !isDefined( e_source.n_damage_per_sec ) )
|
||||||
@ -242,14 +237,14 @@ staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
|||||||
wait 1;
|
wait 1;
|
||||||
if ( !isDefined( e_source ) || !isalive( e_target ) )
|
if ( !isDefined( e_source ) || !isalive( e_target ) )
|
||||||
{
|
{
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
n_dist_sq = distancesquared( e_source.origin, e_target.origin );
|
n_dist_sq = distancesquared( e_source.origin, e_target.origin );
|
||||||
if ( n_dist_sq > n_range_sq )
|
if ( n_dist_sq > n_range_sq )
|
||||||
{
|
{
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else if ( isalive( e_target ) && isDefined( e_source ) )
|
if ( isalive( e_target ) && isDefined( e_source ) )
|
||||||
{
|
{
|
||||||
instakill_on = e_attacker maps/mp/zombies/_zm_powerups::is_insta_kill_active();
|
instakill_on = e_attacker maps/mp/zombies/_zm_powerups::is_insta_kill_active();
|
||||||
if ( n_damage_per_pulse < e_target.health && !instakill_on )
|
if ( n_damage_per_pulse < e_target.health && !instakill_on )
|
||||||
@ -262,10 +257,6 @@ staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
|||||||
e_target thread staff_lightning_kill_zombie( e_attacker, e_source.str_weapon );
|
e_target thread staff_lightning_kill_zombie( e_attacker, e_source.str_weapon );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ( isDefined( e_target ) )
|
if ( isDefined( e_target ) )
|
||||||
{
|
{
|
||||||
@ -274,7 +265,7 @@ staff_lightning_ball_damage_over_time( e_source, e_target, e_attacker )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_arc_fx( e_source, ai_zombie )
|
staff_lightning_arc_fx( e_source, ai_zombie ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
if ( !isDefined( ai_zombie ) )
|
if ( !isDefined( ai_zombie ) )
|
||||||
@ -291,7 +282,7 @@ staff_lightning_arc_fx( e_source, ai_zombie )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_kill_zombie( player, str_weapon )
|
staff_lightning_kill_zombie( player, str_weapon ) //checked didn't change to match cerberus output
|
||||||
{
|
{
|
||||||
player endon( "disconnect" );
|
player endon( "disconnect" );
|
||||||
if ( !isalive( self ) )
|
if ( !isalive( self ) )
|
||||||
@ -322,7 +313,7 @@ staff_lightning_kill_zombie( player, str_weapon )
|
|||||||
player maps/mp/zombies/_zm_score::player_add_points( "death", "", "" );
|
player maps/mp/zombies/_zm_score::player_add_points( "death", "", "" );
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_death_fx()
|
staff_lightning_death_fx() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( isDefined( self ) )
|
if ( isDefined( self ) )
|
||||||
{
|
{
|
||||||
@ -332,7 +323,7 @@ staff_lightning_death_fx()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_shock_eyes_network_safe( fx, entity, tag )
|
zombie_shock_eyes_network_safe( fx, entity, tag ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( network_entity_valid( entity ) )
|
if ( network_entity_valid( entity ) )
|
||||||
{
|
{
|
||||||
@ -343,9 +334,9 @@ zombie_shock_eyes_network_safe( fx, entity, tag )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zombie_shock_eyes()
|
zombie_shock_eyes() //checked changed at own discretion
|
||||||
{
|
{
|
||||||
if ( isDefined( self.head_gibbed ) && self.head_gibbed )
|
if ( is_true( self.head_gibbed ) )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -353,7 +344,7 @@ zombie_shock_eyes()
|
|||||||
maps/mp/zombies/_zm_net::network_choke_action( "shock_eyes", ::zombie_shock_eyes_network_safe, level._effect[ "tesla_shock_eyes" ], self, "J_Eyeball_LE" );
|
maps/mp/zombies/_zm_net::network_choke_action( "shock_eyes", ::zombie_shock_eyes_network_safe, level._effect[ "tesla_shock_eyes" ], self, "J_Eyeball_LE" );
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_zombie_damage_response( mod, hit_location, hit_origin, player, amount )
|
staff_lightning_zombie_damage_response( mod, hit_location, hit_origin, player, amount ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( self is_staff_lightning_damage() && self.damagemod != "MOD_RIFLE_BULLET" )
|
if ( self is_staff_lightning_damage() && self.damagemod != "MOD_RIFLE_BULLET" )
|
||||||
{
|
{
|
||||||
@ -362,15 +353,16 @@ staff_lightning_zombie_damage_response( mod, hit_location, hit_origin, player, a
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_staff_lightning_damage()
|
is_staff_lightning_damage() //checked partially changed to match cerberus output see info.md
|
||||||
{
|
{
|
||||||
if ( isDefined( self.damageweapon ) && self.damageweapon != "staff_lightning_zm" && self.damageweapon == "staff_lightning_upgraded_zm" )
|
if ( isDefined( self.damageweapon ) && self.damageweapon == "staff_lightning_zm" && !is_true( self.set_beacon_damage ) || isDefined( self.damageweapon ) && self.damageweapon == "staff_lightning_upgraded_zm" && !is_true( self.set_beacon_damage ) )
|
||||||
{
|
{
|
||||||
return !is_true( self.set_beacon_damage );
|
return 1;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
staff_lightning_death_event()
|
staff_lightning_death_event() //checked didn't change to match cerberus output
|
||||||
{
|
{
|
||||||
if ( is_staff_lightning_damage() && self.damagemod != "MOD_MELEE" )
|
if ( is_staff_lightning_damage() && self.damagemod != "MOD_MELEE" )
|
||||||
{
|
{
|
||||||
@ -413,7 +405,7 @@ staff_lightning_death_event()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stun_zombie()
|
stun_zombie() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
if ( is_true( self.is_mechz ) )
|
if ( is_true( self.is_mechz ) )
|
||||||
@ -442,3 +434,4 @@ stun_zombie()
|
|||||||
self.ignoreall = 0;
|
self.ignoreall = 0;
|
||||||
self.is_electrocuted = 0;
|
self.is_electrocuted = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user