1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-09 14:49:26 -05:00
BO2-Reimagined/scripts/zm/replaced/_zm_weap_jetgun.gsc
Jbleezy d62c4d7967 More Jet Gun changes
Kills enemies that are in the ground, traversing, or behind barriers
Awards points for kills
Add back no longer kills when not firing correctly
Add back overheating resets the heat value to 0
2022-01-27 11:17:53 -08:00

157 lines
4.3 KiB
Plaintext

#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\zombies\_zm_utility;
#include maps/mp/zombies/_zm_weap_jetgun;
is_jetgun_firing()
{
if(!self attackButtonPressed())
{
return 0;
}
return abs( self get_jetgun_engine_direction() ) > 0.2;
}
jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_squared, grind_range_squared, cylinder_radius_squared, forward_view_angles, end_pos, invert )
{
if ( !isDefined( zombie ) )
{
return;
}
if ( zombie enemy_killed_by_jetgun() )
{
return;
}
if ( isDefined( zombie.is_avogadro ) && zombie.is_avogadro )
{
return;
}
if ( isDefined( zombie.isdog ) && zombie.isdog )
{
return;
}
if ( isDefined( zombie.isscreecher ) && zombie.isscreecher )
{
return;
}
if ( isDefined( self.animname ) && self.animname == "quad_zombie" )
{
return;
}
test_origin = zombie getcentroid();
test_range_squared = distancesquared( view_pos, test_origin );
if ( test_range_squared > drag_range_squared )
{
zombie jetgun_debug_print( "range", ( 1, 0, 1 ) );
return;
}
normal = vectornormalize( test_origin - view_pos );
dot = vectordot( forward_view_angles, normal );
if ( abs( dot ) < 0.7 )
{
zombie jetgun_debug_print( "dot", ( 1, 0, 1 ) );
return;
}
radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin );
if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared )
{
zombie jetgun_debug_print( "cylinder", ( 1, 0, 1 ) );
return;
}
if ( zombie damageconetrace( view_pos, self ) == 0 )
{
zombie jetgun_debug_print( "cone", ( 1, 0, 1 ) );
return;
}
if ( test_range_squared < grind_range_squared )
{
level.jetgun_fling_enemies[ level.jetgun_fling_enemies.size ] = zombie;
level.jetgun_grind_enemies[ level.jetgun_grind_enemies.size ] = dot < 0;
}
else
{
if ( !isDefined( zombie.ai_state ) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus" )
{
return;
}
if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground )
{
return;
}
if ( test_range_squared < drag_range_squared && dot > 0 )
{
level.jetgun_drag_enemies[ level.jetgun_drag_enemies.size ] = zombie;
}
}
}
jetgun_grind_zombie( player )
{
player endon( "death" );
player endon( "disconnect" );
self endon( "death" );
if ( !isDefined( self.jetgun_grind ) )
{
self.jetgun_grind = 1;
self notify( "grinding" );
if ( is_mature() )
{
if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) )
{
playfx( level._effect[ "zombie_guts_explosion" ], self gettagorigin( "J_SpineLower" ) );
}
}
self.nodeathragdoll = 1;
self.handle_death_notetracks = ::jetgun_handle_death_notetracks;
player maps/mp/zombies/_zm_score::add_to_player_score(50 * maps/mp/zombies/_zm_score::get_points_multiplier(player));
self dodamage( self.health + 666, player.origin, player );
}
}
handle_overheated_jetgun()
{
self endon( "disconnect" );
while ( 1 )
{
self waittill( "jetgun_overheated" );
if ( self getcurrentweapon() == "jetgun_zm" )
{
weapon_org = self gettagorigin( "tag_weapon" );
if ( isDefined( level.explode_overheated_jetgun ) && level.explode_overheated_jetgun )
{
self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" );
pcount = get_players().size;
pickup_time = 360 / pcount;
maps/mp/zombies/_zm_buildables::player_explode_buildable( "jetgun_zm", weapon_org, 250, 1, pickup_time );
}
else if ( isDefined( level.unbuild_overheated_jetgun ) && level.unbuild_overheated_jetgun )
{
self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" );
maps/mp/zombies/_zm_buildables::unbuild_buildable( "jetgun_zm", 1 );
self dodamage( 50, weapon_org );
}
else if ( isDefined( level.take_overheated_jetgun ) && level.take_overheated_jetgun )
{
self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" );
self dodamage( 50, weapon_org );
}
else
{
continue;
}
self.jetgun_overheating = undefined;
self.jetgun_heatval = undefined;
self playsound( "wpn_jetgun_explo" );
}
}
}
jetgun_network_choke()
{
// no choke
}