iw6-scripts/maps/factory_chase.gsc
2024-02-13 13:20:49 +01:00

604 lines
24 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
start()
{
maps\factory_util::actor_teleport( level.squad["ALLY_ALPHA"], "parking_lot_start_alpha" );
maps\factory_util::actor_teleport( level.squad["ALLY_BRAVO"], "parking_lot_start_bravo" );
maps\factory_util::actor_teleport( level.squad["ALLY_CHARLIE"], "parking_lot_start_charlie" );
level.player maps\factory_util::move_player_to_start_point( "playerstart_parking_lot" );
level.blockade_vehicle_1 = maps\_vehicle::spawn_vehicle_from_targetname( "blockade_vehicle_1" );
level.blockade_vehicle_1 maps\_vehicle::vehicle_lights_on( "headlights" );
level.blockade_vehicle_1.animname = "first_opfor_car";
level.blockade_vehicle_2 = maps\_vignette_util::vignette_vehicle_spawn( "blockade_vehicle_2", "second_opfor_car" );
level.blockade_vehicle_3 = maps\_vignette_util::vignette_vehicle_spawn( "blockade_vehicle_3", "heavy_weapon_opfor_car" );
level.blockade_vehicle_2 maps\_vehicle::vehicle_lights_on( "headlights" );
level.blockade_vehicle_3 maps\_vehicle::vehicle_lights_on( "headlights" );
level.blockade_vehicle_1 thread vehicle_catch_fire_when_shot();
level.blockade_vehicle_2 thread vehicle_catch_fire_when_shot();
level.blockade_vehicle_3 thread vehicle_catch_fire_when_shot();
thread chase_scripted_flyovers();
foreach ( var_1 in level.squad )
var_1.grenadeammo = 0;
thread chase_ally_vehicle_setup();
thread car_chase_intro_car_crash_setup();
thread maps\factory_intro::train_cleanup();
}
#using_animtree("generic_human");
main()
{
common_scripts\utility::flag_wait( "chase_start_done" );
maps\_utility::battlechatter_off( "allies" );
thread chase_dialog();
level notify( "semi_trailer_entrance" );
thread car_chase_intro_car_crash();
level waittill( "player_switch" );
level.drone_anims["axis"]["stand"]["run"] = %run_lowready_f_relative;
thread chase_spawn_drone_group( "chase_enemy_trigger_1", "chase_first_turn_drone_spawner", "chase_enemy_trigger_2" );
thread chase_spawn_drone_group( "chase_enemy_trigger_2", "chase_drone_spawner_2", "chase_delete_drone_group_2" );
thread maps\factory_audio::audio_sfx_car_chase_sequence();
wait 40;
common_scripts\utility::flag_set( "car_chase_complete" );
level.player freezecontrols( 1 );
wait 1;
setsaveddvar( "cg_drawCrosshair", 0 );
setsaveddvar( "compass", 0 );
setsaveddvar( "hud_showStance", 0 );
setsaveddvar( "ammoCounterHide", 1 );
level.player mission_fade_out( 1, "black" );
wait 5;
maps\_utility::nextmission();
}
mission_fade_out( var_0, var_1 )
{
var_2 = maps\_hud_util::get_optional_overlay( var_1 );
if ( var_0 > 0 )
var_2 fadeovertime( var_0 );
var_2.alpha = 1;
var_2.foreground = 0;
var_2.sort = 205;
wait( var_0 );
}
section_flag_init()
{
common_scripts\utility::flag_init( "player_mount_vehicle_start" );
common_scripts\utility::flag_init( "player_mount_vehicle_done" );
common_scripts\utility::flag_init( "car_chase_complete" );
common_scripts\utility::flag_init( "chase_start_done" );
}
section_precache()
{
precachemodel( "ch_crate64x64" );
precachemodel( "shipping_frame_boxes" );
}
setup_trailer_platform()
{
thread chase_player_mount_moving_trailer();
var_0 = getent( "trailer_platform", "targetname" );
var_0.origin = level.ally_vehicle_trailer.origin + ( 395, 0, 112 );
var_0.angles = level.ally_vehicle_trailer.angles + ( 0, 180, 0 );
var_0 linkto( level.ally_vehicle_trailer );
var_1 = getentarray( "trailer_platform_wheel_death_trigger", "targetname" );
foreach ( var_3 in var_1 )
{
var_3 enablelinkto();
var_3 linkto( level.ally_vehicle_trailer );
}
var_5 = getentarray( "trailer_node", "script_noteworthy" );
foreach ( var_7 in var_5 )
var_7 linkto( level.ally_vehicle_trailer, "body_anim_jnt" );
thread semi_trailer_death_trigger();
var_9 = getentarray( "trailer_side_rail", "targetname" );
foreach ( var_11 in var_9 )
var_11 linkto( level.ally_vehicle_trailer, "body_anim_jnt" );
common_scripts\utility::flag_wait( "player_mount_vehicle_start" );
thread maps\factory_audio::audio_play_ending_scene();
common_scripts\utility::flag_set( "music_chase_ending" );
setsaveddvar( "player_sprintUnlimited", "0" );
foreach ( var_3 in var_1 )
var_3 delete();
}
chase_player_mount_moving_trailer()
{
var_0 = getent( "get_in_vehicle_trigger", "targetname" );
var_0 enablelinkto();
var_0 linkto( level.ally_vehicle_trailer );
waittillframeend;
level waittill( "start_mount" );
common_scripts\utility::flag_set( "factory_rooftop_wind_gust_moment" );
var_0 common_scripts\utility::trigger_on();
thread chase_airstrike_kills_player();
thread chase_player_falls_off_trailer();
for (;;)
{
if ( abs( abs( level.player.angles[1] ) - level.ally_vehicle_trailer.angles[1] ) < 45 && common_scripts\utility::flag( "player_near_trailer_rear" ) && !level.player isthrowinggrenade() && !level.player ismeleeing() )
break;
wait 0.05;
}
level.player.active_anim = 1;
level.player disableweapons();
level.player freezecontrols( 1 );
level.player allowprone( 0 );
level.player allowcrouch( 0 );
level.player setstance( "stand" );
var_1 = level.player getvelocity();
var_2 = length( var_1 );
common_scripts\utility::flag_set( "player_mount_vehicle_start" );
var_3 = maps\_utility::spawn_anim_model( "player_rig" );
var_4 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_ally_pulls_up_player_b201" );
var_5 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_ally_pulls_up_player_b202" );
var_6 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_ally_pulls_up_player_b203" );
var_3 hide();
var_7 = getent( "car_chase_intro", "script_noteworthy" );
var_8 = [];
var_8["factory_car_chase_intro_ally_pulls_up_player_b201"] = var_4;
var_8["factory_car_chase_intro_ally_pulls_up_player_b202"] = var_5;
var_8["factory_car_chase_intro_ally_pulls_up_player_b203"] = var_6;
var_8["factory_car_chase_intro_ally_pulls_up_player_b201"] thread chase_looped_afterburner_faint();
var_8["factory_car_chase_intro_ally_pulls_up_player_b202"] thread chase_looped_afterburner_faint();
var_8["factory_car_chase_intro_ally_pulls_up_player_b203"] thread chase_looped_afterburner_faint();
var_3 linkto( level.ally_vehicle_trailer, "body_anim_jnt" );
level.ally_vehicle_trailer notify( "stop_loop" );
var_7 thread maps\_anim::anim_single( var_8, "factory_car_chase_intro_ally_pulls_up_player" );
var_9 = [];
var_9["ally_alpha"] = level.squad["ALLY_ALPHA"];
var_9["ally_bravo"] = level.squad["ALLY_BRAVO"];
var_9["ally_charlie"] = level.squad["ALLY_CHARLIE"];
foreach ( var_11 in var_9 )
var_11 linkto( level.ally_vehicle_trailer, "body_anim_jnt" );
level.ally_vehicle_trailer thread maps\_anim::anim_single( var_9, "factory_car_chase_intro_ally_pulls_up_player", "body_anim_jnt" );
level.ally_vehicle_trailer thread maps\_anim::anim_single_solo( var_3, "factory_car_chase_intro_ally_pulls_up_player", "body_anim_jnt" );
var_13 = 0.75;
var_14 = 0;
level.player playerlinktoblend( var_3, "tag_player", var_13, 0.25, 0.25 );
wait( var_13 );
level.player playerlinktodelta( var_3, "tag_player", 0, var_14, var_14, var_14, var_14, 1 );
var_3 show();
maps\_utility::autosave_by_name( "chase" );
wait( getanimlength( var_3 maps\_utility::getanim( "factory_car_chase_intro_ally_pulls_up_player" ) ) - var_13 );
var_3 delete();
common_scripts\utility::flag_set( "player_mount_vehicle_done" );
level.player enableweapons();
level.player setmovingplatformplayerturnrate( 0.75 );
level.player setstance( "crouch" );
var_1 = level.player getvelocity();
level.player unlink();
level.player setvelocity( var_1 );
wait 1;
if ( level.player.thermal )
level.player maps\factory_util::thermal_disable();
level.player.active_anim = 0;
common_scripts\utility::flag_set( "factory_rooftop_wind_gust_moment" );
level.player freezecontrols( 0 );
level.player setmovespeedscale( 0.5 );
level.player allowprone( 1 );
level.player allowcrouch( 1 );
}
chase_scripted_flyovers()
{
wait 4;
maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "rooftop_bomber" );
chase_airstrike_explosion( "rooftop_airstrike_explosion" );
common_scripts\utility::flag_wait( "player_mount_vehicle_start" );
chase_wait_for_semi_touch( "chase_enemy_trigger_2" );
maps\_vehicle::spawn_vehicles_from_targetname_and_drive( "smokestack_bomber" );
}
chase_looped_afterburner()
{
playfxontag( level._effect["afterburner_contrail"], self, "tag_engine_right" );
common_scripts\utility::waitframe();
playfxontag( level._effect["afterburner_contrail"], self, "tag_engine_left" );
}
chase_looped_afterburner_faint()
{
playfxontag( level._effect["afterburner_contrail_faint"], self, "tag_engine_right" );
common_scripts\utility::waitframe();
playfxontag( level._effect["afterburner_contrail_faint"], self, "tag_engine_left" );
}
chase_airstrike_explosion( var_0 )
{
var_1 = getent( var_0, "targetname" );
playfx( common_scripts\utility::getfx( var_1.script_fxid ), var_1.origin, var_1.angles );
level notify( var_0 );
}
chase_airstrike_kills_player()
{
level.player endon( "death" );
level endon( "player_mount_vehicle_start" );
maps\_utility::wait_for_flag_or_timeout( "player_left_parking_lot", 6 );
level notify( "new_quote_string" );
setdvar( "ui_deadquote", &"FACTORY_FAIL_ESCAPE" );
level.player playsound( "scn_factory_end_exp11_lr" );
playfx( level._effect["101ton_bomb"], level.player.origin );
level.player kill();
maps\_utility::missionfailedwrapper();
}
chase_player_falls_off_trailer()
{
var_0 = getent( "chase_kill_trigger", "targetname" );
var_0 common_scripts\utility::trigger_off();
common_scripts\utility::flag_wait( "player_mount_vehicle_done" );
var_0 common_scripts\utility::trigger_on();
common_scripts\utility::flag_wait( "player_fell_off_trailer" );
level notify( "new_quote_string" );
setdvar( "ui_deadquote", &"FACTORY_FAIL_FELL_OFF_TRAILER" );
playfx( level._effect["101ton_bomb"], level.player.origin );
level.player kill();
maps\_utility::missionfailedwrapper();
}
chase_dialog()
{
level waittill( "hit_vehicle_01" );
level.player thread maps\factory_util::thermal_disable();
level waittill( "hit_vehicle_02" );
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_getonthetrailer" );
chase_wait_for_semi_touch( "chase_enemy_trigger_1" );
chase_wait_for_semi_touch( "chase_delete_warehouse_drones" );
level.squad["ALLY_CHARLIE"] maps\_utility::smart_dialogue( "factory_hsh_ohhhhshit" );
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_wegotproblemsback" );
maps\_utility::smart_radio_dialogue( "factory_oby_pedalstothemetal" );
maps\_utility::smart_radio_dialogue( "factory_oby_hangon" );
chase_wait_for_semi_touch( "chase_clear" );
maps\_utility::smart_radio_dialogue( "factory_kck_wereclear" );
level.squad["ALLY_BRAVO"] thread maps\_utility::smart_dialogue( "factory_kgn_nicedrivingkick" );
wait 6;
if ( maps\_utility::is_gen4() )
wait 1.0;
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_wellthereaintgonna" );
wait 0.4;
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_jsocwillgiveus" );
wait 1.0;
level.squad["ALLY_ALPHA"] maps\_utility::smart_dialogue( "factory_mrk_timetoheadhome" );
}
chase_ally_vehicle_setup()
{
level.ally_vehicle = maps\_vignette_util::vignette_vehicle_spawn( "chase_ally_vehicle", "het_cab" );
level.ally_vehicle_trailer = maps\_vignette_util::vignette_vehicle_spawn( "chase_ally_vehicle_trailer", "het_trailer" );
level.ally_vehicle maps\_vehicle::godon();
level.ally_vehicle_trailer maps\_vehicle::godon();
var_0 = getent( "trailer_airstrike_kill_trigger", "targetname" );
var_0 enablelinkto();
var_0 linkto( level.ally_vehicle );
thread setup_trailer_platform();
waittillframeend;
var_1 = getent( "car_chase_intro", "script_noteworthy" );
var_1 maps\_anim::anim_first_frame_solo( level.ally_vehicle, "car_chase_intro_car_crash" );
var_1 maps\_anim::anim_first_frame_solo( level.ally_vehicle_trailer, "car_chase_intro_car_crash" );
common_scripts\utility::flag_set( "chase_start_done" );
level waittill( "semi_trailer_entrance" );
level.ally_vehicle thread maps\_utility::play_sound_on_tag( "scn_factory_horn_short", "tag_origin" );
level.ally_vehicle_front = spawn( "script_origin", level.ally_vehicle gettagorigin( "tag_engine_right" ) );
level.ally_vehicle_front linkto( level.ally_vehicle );
var_2 = vectornormalize( anglestoforward( level.ally_vehicle.angles ) );
var_3 = var_2 * 192;
var_4 = spawn( "script_model", level.ally_vehicle.origin + ( 0, 0, 56 ) + var_3 );
var_4.angles = level.ally_vehicle.angles;
var_4 setmodel( "tag_origin" );
var_4 linkto( level.ally_vehicle );
playfxontag( level._effect["factory_het_cab_headlight_full"], var_4, "tag_origin" );
level.ally_vehicle_trailer thread maps\_vehicle::vehicle_lights_on( "running" );
level.ally_vehicle maps\_vehicle::vehicle_lights_on( "running" );
thread chase_headlight_fx_swap( var_4 );
}
chase_headlight_fx_swap( var_0 )
{
common_scripts\utility::flag_wait( "player_mount_vehicle_start" );
stopfxontag( level._effect["factory_het_cab_headlight_full"], var_0, "tag_origin" );
waittillframeend;
playfxontag( level._effect["cheap_spot"], var_0, "tag_origin" );
}
chase_blockade_crash()
{
foreach ( var_1 in level.squad )
var_1.ignoreme = 1;
level.player.ignoreme = 1;
var_3 = maps\_utility::get_living_ai_array( "blockade_enemy", "script_noteworthy" );
foreach ( var_1 in var_3 )
{
var_1 setentitytarget( level.ally_vehicle );
var_1.maxsightdistsqrd = 67108864;
var_5 = var_1 getturret();
if ( isdefined( var_5 ) )
var_5 settargetentity( level.ally_vehicle );
}
wait 1;
foreach ( var_1 in level.squad )
{
var_1 maps\_utility::disable_pain();
var_1.ignoresuppression = 1;
setsaveddvar( "ai_friendlyFireBlockDuration", 0 );
}
maps\_utility::activate_trigger_with_targetname( "p_b_r_ally_move_602" );
wait 2;
foreach ( var_1 in level.squad )
var_1.ignoreall = 1;
level.ally_vehicle thread maps\_utility::play_sound_on_tag( "scn_factory_horn_long", "tag_origin" );
var_3 = maps\_utility::get_living_ai_array( "blockade_enemy", "script_noteworthy" );
foreach ( var_12 in var_3 )
{
var_12.ignoreall = 1;
wait 0.1;
var_12 cleargoalvolume();
var_12 setgoalpos( level.blockade_vehicle_3.origin );
}
level waittill( "hit_vehicle_01" );
var_3 = maps\_utility::get_living_ai_array( "blockade_enemy", "script_noteworthy" );
foreach ( var_12 in var_3 )
{
var_12 thread maps\_utility::disable_long_death();
var_12 kill( ( -462, 55, 40 ) );
}
level.player.ignoreme = 0;
}
ally_reach_curb_hop( var_0 )
{
self.goalradius = 8;
var_1 = getent( "car_chase_intro_proxy", "targetname" );
var_1 maps\_anim::anim_reach_and_approach_solo( self, var_0 );
self setgoalpos( self.origin );
}
car_chase_intro_car_crash_setup()
{
var_0 = [];
level.factory_car_chase_intro_broken_awning01 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_awning01" );
level.factory_car_chase_intro_broken_awning02 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_awning02" );
level.factory_car_chase_intro_broken_awning03 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_awning03" );
level.factory_car_chase_intro_broken_awning04 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_awning04" );
level.factory_car_chase_intro_broken_fence01 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_fence01" );
level.factory_car_chase_intro_broken_fence02 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_fence02" );
level.factory_car_chase_intro_broken_light_post = maps\_utility::spawn_anim_model( "factory_car_chase_intro_broken_light_post" );
level.factory_car_chase_intro_side_car01 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_side_car01_crash" );
level.factory_car_chase_intro_side_car02 = maps\_utility::spawn_anim_model( "factory_car_chase_intro_side_car02_crash" );
level.third_opfor_car = maps\_vignette_util::vignette_vehicle_spawn( "parking_lot_stationary_vehicle", "third_opfor_car" );
level.third_opfor_car thread vehicle_catch_fire_when_shot();
var_0["factory_car_chase_intro_broken_awning01"] = level.factory_car_chase_intro_broken_awning01;
var_0["factory_car_chase_intro_broken_awning02"] = level.factory_car_chase_intro_broken_awning02;
var_0["factory_car_chase_intro_broken_awning03"] = level.factory_car_chase_intro_broken_awning03;
var_0["factory_car_chase_intro_broken_awning04"] = level.factory_car_chase_intro_broken_awning04;
var_0["factory_car_chase_intro_broken_fence01"] = level.factory_car_chase_intro_broken_fence01;
var_0["factory_car_chase_intro_broken_fence02"] = level.factory_car_chase_intro_broken_fence02;
var_0["factory_car_chase_intro_broken_light_post"] = level.factory_car_chase_intro_broken_light_post;
var_0["factory_car_chase_intro_side_car01_crash"] = level.factory_car_chase_intro_side_car01;
var_0["factory_car_chase_intro_side_car02_crash"] = level.factory_car_chase_intro_side_car02;
var_1 = getent( "car_chase_intro", "script_noteworthy" );
var_1 maps\_anim::anim_first_frame( var_0, "car_chase_intro_car_crash" );
var_1 maps\_anim::anim_first_frame_solo( level.third_opfor_car, "factory_car_chase" );
var_2 = getent( "parking_lot_trucks_at_rest_blocker", "targetname" );
var_2 connectpaths();
var_2 notsolid();
var_3 = getent( "parking_lot_fence_blocker", "targetname" );
var_3 connectpaths();
var_3 notsolid();
}
car_chase_intro_car_crash()
{
var_0 = [];
var_0["factory_car_chase_intro_broken_awning01"] = level.factory_car_chase_intro_broken_awning01;
var_0["factory_car_chase_intro_broken_awning02"] = level.factory_car_chase_intro_broken_awning02;
var_0["factory_car_chase_intro_broken_awning03"] = level.factory_car_chase_intro_broken_awning03;
var_0["factory_car_chase_intro_broken_awning04"] = level.factory_car_chase_intro_broken_awning04;
var_0["factory_car_chase_intro_broken_fence01"] = level.factory_car_chase_intro_broken_fence01;
var_0["factory_car_chase_intro_broken_fence02"] = level.factory_car_chase_intro_broken_fence02;
var_0["factory_car_chase_intro_broken_light_post"] = level.factory_car_chase_intro_broken_light_post;
var_0["first_opfor_car"] = level.blockade_vehicle_1;
var_0["second_opfor_car"] = level.blockade_vehicle_2;
var_0["factory_car_chase_intro_side_car01_crash"] = level.factory_car_chase_intro_side_car01;
var_0["factory_car_chase_intro_side_car02_crash"] = level.factory_car_chase_intro_side_car02;
var_1 = getent( "car_chase_intro", "script_noteworthy" );
var_1 thread maps\_anim::anim_single( var_0, "car_chase_intro_car_crash" );
var_2 = [];
var_2["heavy_weapon_opfor_car"] = level.blockade_vehicle_3;
var_2["het_cab"] = level.ally_vehicle;
var_2["het_trailer"] = level.ally_vehicle_trailer;
thread chase_blockade_crash();
thread car_crash_slowmo();
level.ally_vehicle thread maps\factory_parking_lot::parking_lot_blockade_vehicle_death_radius();
level.ally_vehicle notify( "suspend_drive_anims" );
level.ally_vehicle_trailer notify( "suspend_drive_anims" );
level.ally_vehicle thread maps\factory_audio::sfx_play_crash_scene();
var_1 thread maps\_anim::anim_single( var_2, "car_chase_intro_car_crash" );
level waittill( "player_switch" );
level.player playrumbleonentity( "light_1s" );
common_scripts\utility::exploder( "building_corner_01_exploder" );
thread maps\factory_anim::factory_car_chase_spawn();
chase_wait_for_semi_touch( "chase_entering_warehouse" );
var_0[var_0.size] = level.third_opfor_car;
var_0[var_0.size] = level.blockade_vehicle_3;
var_0[var_0.size] = level.factory_car_chase_intro_side_car03_blowup;
foreach ( var_4 in var_0 )
var_4 delete();
}
car_crash_slowmo()
{
wait 5.3333;
earthquake( 0.5, 1.5, level.player.origin, 2500 );
level.player playrumbleonentity( "artillery_rumble" );
}
semi_trailer_death_trigger()
{
level endon( "semi_stopped" );
var_0 = getent( "trailer_intro_kill_trigger", "targetname" );
var_0 enablelinkto();
var_0 linkto( level.ally_vehicle_trailer );
var_0 thread semi_trailer_death_trigger_delete();
common_scripts\utility::flag_wait( "flag_trailer_intro_kill" );
level notify( "new_quote_string" );
setdvar( "ui_deadquote", &"FACTORY_FAIL_HIT_BY_TRAILER" );
level.player kill();
maps\_utility::missionfailedwrapper();
}
semi_trailer_death_trigger_delete()
{
level waittill( "semi_stopped" );
self delete();
}
chase_wait_for_semi_touch( var_0 )
{
var_1 = getent( var_0, "targetname" );
while ( !level.ally_vehicle_front istouching( var_1 ) )
wait 0.05;
}
chase_spawn_drone_group( var_0, var_1, var_2 )
{
chase_wait_for_semi_touch( var_0 );
var_3 = maps\_utility::array_spawn_targetname( var_1 );
if ( isdefined( var_2 ) )
{
chase_wait_for_semi_touch( var_2 );
foreach ( var_5 in var_3 )
var_5 delete();
}
}
enemy_vehicle_twitch()
{
self endon( "death" );
self endon( "non_physics_vehicle" );
if ( !self vehicle_isphysveh() )
level notify( "non_physics_vehicle" );
for (;;)
{
self waittill( "damage" );
physicsjolt( self.origin, 20, 20, ( 1, 1, 1 ) );
}
}
vehicle_catch_fire_when_shot()
{
self endon( "death" );
self.vehicle_stays_alive = 1;
var_0 = ( self.maxhealth - self.healthbuffer ) * 0.5;
while ( self.health - self.healthbuffer > var_0 )
{
self waittill( "damage" );
waittillframeend;
}
playfxontag( level._effect["factory_car_fire_runner"], self, "tag_origin" );
while ( self.health > 0 )
{
self waittill( "damage" );
waittillframeend;
if ( self.health < self.healthbuffer )
break;
}
maps\_vehicle::godon();
if ( self vehicle_isphysveh() )
{
var_1 = self.origin;
wait 0.1;
var_2 = self.origin - var_1;
self stopanimscripted();
self vehicle_teleport( self.origin + ( 0, 0, 10 ), self.angles );
self vehphys_setspeed( 60.0 );
var_3 = 4 * var_2 + ( 0, 0, randomintrange( 200, 250 ) );
self vehphys_crash();
}
playfx( level._effect["lynxexplode"], self.origin, anglestoup( self.angles ) );
self playsound( "car_explode_factory" );
maps\_vehicle::vehicle_lights_off( "headlights" );
self setmodel( "vehicle_iveco_lynx_destroyed_iw6" );
common_scripts\utility::array_thread( self.riders, ::vehicle_crash_guy, self );
}
vehicle_crash_guy( var_0 )
{
if ( !isdefined( self ) || self.vehicle_position == 0 )
return;
else
{
self.deathanim = undefined;
self.noragdoll = undefined;
var_0.riders = common_scripts\utility::array_remove( var_0.riders, self );
self.ragdoll_immediate = 1;
if ( isdefined( self ) )
{
if ( !isdefined( self.magic_bullet_shield ) )
self kill();
}
}
var_0 vehicle_crash_launch_guys();
}
vehicle_crash_launch_guys()
{
wait 0.1;
if ( isdefined( self ) )
{
var_0 = self gettagorigin( "tag_guy1" );
physicsexplosioncylinder( var_0, 300, 300, 0.25 );
}
}