IW4-Dump-Files/maps/roadkill.gsc

2127 lines
58 KiB
Plaintext
Raw Permalink Blame History

#include maps\roadkill_code;
#include maps\_utility;
#include common_scripts\utility;
#include maps\_anim;
#include maps\_vehicle;
#include maps\_hud_util;
main()
{
setdvar( "newintro", 1 );
SetSavedDvar( "physVeh_collideWithClipOnly", 1 );
level.toffset = 0;
level.nocompass = true;
PreCacheItem( "m14_scoped" );
PreCacheItem( "littlebird_FFAR" );
maps\_drone_ai::init();
maps\createart\roadkill_art::main();
maps\createfx\roadkill_audio::main();
maps\roadkill_anim::main();
maps\roadkill_precache::main();
maps\roadkill_fx::main();
maps\createart\roadkill_fog::main();
setup_player_killer_orgs();
set_default_start( "riverbank" );
add_start( "riverbank", ::start_riverbank, "riverbank", ::roadkill_riverbank );
// add_start( "move_out", ::start_move_out, "riverbank", ::roadkill_riverbank );
add_start( "convoy", ::start_convoy, "convoy", ::roadkill_convoy );
add_start( "ride", ::start_ride, "ride", ::roadkill_ride );
add_start( "ambush", ::start_crazy_ride, "ambush", ::roadkill_crazy_ride );
add_start( "ride_later", ::start_crazy_ride_later, "ride_later", ::roadkill_crazy_ride_later );
// add_start( "ride_end", ::start_ride_end, "ride_end", ::roadkill_ride_end );
add_start( "dismount", ::start_dismount, "dismount", ::roadkill_convoy_dismounts );
add_start( "school", ::start_roadkill_school_fight, "school", ::roadkill_school_fight );
add_start( "endfight", ::start_roadkill_endfight, "end", ::roadkill_the_end );
add_start( "end", ::start_roadkill_end, "end", ::roadkill_the_end );
PreCacheTurret( "humvee_50cal_mg" );
PreCacheTurret( "rpd_bipod_prone" );
PreCacheTurret( "rpd_bipod_crouch" );
PreCacheModel( "weapon_m16" );
PreCacheModel( "weapon_rpd_mg_setup" );
PreCacheModel( "com_soup_can" );
PreCacheModel( "com_bottle1" );
PreCacheModel( "me_plastic_crate1" );
PreCacheModel( "mil_mre_chocolate01" );
PreCacheModel( "weapon_binocular" );
PreCacheModel( "vehicle_hummer_seat_rb_obj" );
PreCacheModel( "viewhands_player_us_army" );
PreCacheModel( "weapon_suburban_minigun_viewmodel" );
PreCacheRumble( "collapsing_building" );
PreCacheModel( "me_woodcrateclosed" );
PreCacheModel( "com_cardboardboxshortclosed_2" );
PreCacheModel( "com_hand_radio" );
PreCacheItem( "scripted_silent" );
precachestring( &"ROADKILL_BRIDGELAYER_DESTROYED" );
precachestring( &"ROADKILL_HOLD_TO_BOARD" );
precachestring( &"ROADKILL_SHOT_TOO_MUCH" );
precachestring( &"ROADKILL_OBJECTIVE_BRIDGELAYER" );
precachestring( &"ROADKILL_OBJECTIVE_HUMVEE" );
precachestring( &"ROADKILL_OBJECTIVE_AIRSTRIKE" );
precachestring( &"ROADKILL_OBJECTIVE_SCAN" );
precachestring( &"ROADKILL_OBJECTIVE_TARGETS" );
precachestring( &"ROADKILL_OBJECTIVE_DISMOUNT" );
precachestring( &"ROADKILL_OBJECTIVE_SCHOOL" );
precachestring( &"ROADKILL_OBJECTIVE_REPORT" );
precachestring( &"ROADKILL_GOT_SNIPED" );
precachestring( &"ROADKILL_SHOT_UNARMED" );
precachestring( &"SCRIPT_MISSIONFAIL_KILLTEAM_AMERICAN" );
precachestring( &"SCRIPT_LEARN_JAVELIN" );
precachestring( &"SCRIPT_PLATFORM_HINT_FLASH" );
precachestring( &"SCRIPT_LEARN_GRENADE_LAUNCHER" );
precachestring( &"SCRIPT_WAYPOINT_TARGETS" );
level.roadkill_feedline_delay = ::introlines_delay;
//thread rpg_flies_by_view();
level.crazy_ride_convoy = [];
level.crazy_ride_convoy[ "detour" ] = SpawnStruct();// for start points
level.crazy_ride_convoy[ "max" ] = 4;
level.convoy_dialogue_guy = [];
level.school_baddies = [];
trapper_clip = GetEnt( "trapper_clip", "targetname" );
trapper_clip ConnectPaths();
trapper_clip Delete();
// Press ^3[{weapnext}]^7 to switch to the Javelin
PreCacheString( &"SCRIPT_LEARN_JAVELIN" );
maps\_empty::main( "tag_origin" );
maps\_load::main();
maps\_javelin::init();
// civ failure
add_global_spawn_function( "neutral", ::fail_for_civ_kill );
flag_init( "riverbank_baddies_retreat" );
flag_init( "binoc_explosion" );
flag_init( "player_gets_in" );
flag_init( "player_humvee_stops" );
flag_init( "shepherd_moves_out" );
flag_init( "shepherd_vehicles_leave" );
flag_init( "ambush_auto_adjust_speed" );
flag_init( "player_knocked_down" );
flag_init( "resume_the_path" );
flag_init( "bridgelayer_crosses" );
flag_init( "time_to_go" );
flag_init( "get_on_the_line" );
flag_init( "guys_get_in_convoy_vehicles" );
flag_init( "convoy_moment" );
flag_init( "lets_go_trigger" );
flag_init( "room_was_flashed" );
flag_init( "we're cut off" );
flag_init( "retreaters_run" );
flag_init( "final_objective" );
flag_init( "friendlies_run_to_school" );
flag_init( "leaving_riverbank" );
flag_init( "player_attacked_bridge_enemy" );
flag_init( "player_switched_to_javelin" );
flag_init( "missile_fire_1" );
flag_init( "missile_fire_2" );
flag_init( "missile_fire_3" );
flag_init( "push_through" );
flag_init( "100ton_bomb_goes_off" );
flag_init( "bridge_baddies_retreat" );
flag_init( "player_is_dismounted" );
flag_init( "hidden_guy_opens_fire" );
flag_init( "bridgelayer_starts" );
flag_init( "roadkill_school_10" );
flag_init( "roadkill_school_11" );
flag_init( "pull_garage" );
flag_init( "rpg_end" );
flag_init( "friendlies_suppress_school" );
flag_init( "intro_lines_complete" );
flag_init( "fight_back" );
flag_init( "trapper_spawners_ignoreme" );
flag_init( "riverbank_scene_starts" );
flag_init( "player_closes_gap" );
flag_init( "bridgelayer_complete" );
flag_init( "convoy_oscar_mike_after_explosion" );
flag_init( "bridge_layer_attacked_by_bridge_baddies" );
flag_init( "shot_rings_out" );
flag_init( "humvees_spin_up" );
flag_init( "video_tapers_react" );
flag_init( "playground_baddies_retreat" );
flag_init( "sweep_dismount_building" );
maps\_potted_plant::potted_plant_init();
// Press ^3[{weapnext}]^7 to switch to the Javelin
add_hint_string( "learn_javelin", &"SCRIPT_LEARN_JAVELIN", ::player_learned_javelin );
// Press ^3[{+smoke}]^7 to throw a flash bang.
add_hint_string( "learn_flash", &"SCRIPT_PLATFORM_HINT_FLASH", ::player_learned_flash );
add_hint_string( "learn_m203", &"SCRIPT_LEARN_GRENADE_LAUNCHER", ::player_learned_m203 );
add_global_spawn_function( "allies", ::get_in_moving_vehicle );
add_global_spawn_function( "axis", ::balcony_check );
run_thread_on_noteworthy( "fire_missile", maps\_attack_heli::boneyard_style_heli_missile_attack_linked );
run_thread_on_noteworthy( "plane_sound", maps\_f15::plane_sound_node );
run_thread_on_targetname( "helper_model", ::self_delete );
run_thread_on_targetname( "barbwire_ride_cutoff", ::hide_helper_model );
run_thread_on_targetname( "vehicle_break", ::vehicle_break );
run_thread_on_targetname( "ent_flag_set_trigger", ::ent_flag_set_trigger );
run_thread_on_targetname( "trigger_delete_axis_not_in_volume", ::trigger_delete_axis_not_in_volume );
level.crash_friendly = [];
level.spark_presets = [];
run_thread_on_targetname( "spark_preset", ::spark_preset );
run_thread_on_targetname( "vehicle_spark_trigger", ::vehicle_spark_trigger );
maps\_compass::setupMiniMap( "compass_map_roadkill" );
run_thread_on_targetname( "deleteme", ::self_delete );
run_thread_on_targetname( "damage_targ_trigger", ::damage_targ_trigger_think );
run_thread_on_targetname( "wave_right_trigger", ::wave_right_trigger );
// array_spawn_function_noteworthy( "player_humvee", ::player_humvee );
// array_spawn_function_noteworthy( "rear_vehicle", ::rear_vehicle );
// array_spawn_function_noteworthy( "front_vehicle", ::front_vehicle );
// array_spawn_function_noteworthy( "near_vehicle", ::near_vehicle );
// array_spawn_function_targetname( "intro_convoy", ::intro_convoy );
//xx
array_spawn_function_targetname( "riverbank_tank", ::riverbank_tank );
array_spawn_function_noteworthy( "retreat_spawner", ::retreat_spawner );
level.forced_bcs_callouts = 0;
array_spawn_function_noteworthy( "extra_retreat_spawner", ::extra_retreat_spawner );
array_spawn_function_noteworthy( "convoy_gunner", ::convoy_gunner_think );
array_spawn_function_noteworthy( "dismount_macey", ::dismount_foley );
array_spawn_function_noteworthy( "dismount_dunn", ::dismount_dunn );
//array_spawn_function_noteworthy( "ignore_and_delete", ::ignore_and_delete );
array_spawn_function_noteworthy( "school_unreachable_spawner", ::school_unreachable_spawner );
//thread street_walk_scene();
thread wobbly_fans();
//array_spawn_function_noteworthy( "hargrove", ::hargrove_spawner );
array_spawn_function_targetname( "foley_spawner", ::foley_spawner );
array_spawn_function_noteworthy( "dunn_spawner", ::dunn_spawner );
array_spawn_function_noteworthy( "shepherd_spawner", ::shepherd_spawner );
level.ambushed_hummers = [];
array_spawn_function_targetname( "ambushed_hummer", ::ambushed_hummer );
//array_spawn_function_noteworthy( "near_turret_guy", ::turret_guy_in_near_humvee );
//array_spawn_function_noteworthy( "intro_rundown_friendly_spawner", ::intro_rundown_friendly_spawner );
level.more_street_spawners = GetEntArray( "more_street_spawner", "script_noteworthy" );
level.school_ambush_spawners = GetEntArray( "school_ambush", "targetname" );
array_spawn_function( level.school_ambush_spawners, ::school_spawner_think );
level.color_doesnt_care_about_classname = true;
level.color_doesnt_care_about_heroes = true;
level.dialogue_function_stack_struct = SpawnStruct();
level.arab_function_stack_struct = spawnstruct();
level.special_weapon_dof_funcs[ "javelin" ] = maps\_art::javelin_dof;
blockers = GetEntArray( "player_backtrack_blocker_model", "targetname" );
foreach ( blocker in blockers )
{
blocker Hide();
}
blockers = GetEntArray( "player_backtrack_blocker_brush", "targetname" );
foreach ( blocker in blockers )
{
blocker Hide();
blocker NotSolid();
}
models = GetEntArray( "dead_vehicle_spawner", "targetname" );
foreach ( model in models )
{
model.oldcontents = model SetContents( 0 );
model Hide();
}
thread ps3_hide();
thread maps\roadkill_amb::main();
maps\_utility::set_vision_set( "roadkill", 0 );
thread roadkill_startpoint_catchup_thread();
CreateThreatBiasGroup( "axis_school" );
CreateThreatBiasGroup( "axis_school_unreachable" );
CreateThreatBiasGroup( "axis_ambush_house" );
CreateThreatBiasGroup( "axis_dismount_attackers" );
CreateThreatBiasGroup( "ally_with_player" );
CreateThreatBiasGroup( "ally_outside_school" );
CreateThreatBiasGroup( "bridge_attackers" );
CreateThreatBiasGroup( "just_player" );
// player uses just_player until dismount
level.player SetThreatBiasGroup( "just_player" );
SetIgnoreMeGroup( "ally_with_player", "axis_school_unreachable" );
SetIgnoreMeGroup( "axis_school_unreachable", "ally_with_player" );
SetIgnoreMeGroup( "ally_with_player", "axis_school" );
SetIgnoreMeGroup( "axis_school", "ally_with_player" );
SetThreatBias( "ally_outside_school", "axis_ambush_house", 750 );
thread roadkill_objective_thread();
thread roadkill_music();
waittillframeend;// needs to happen after init
level.player.bcNameID = undefined;// player isn't roach
thread lights();
}
start_empty()
{
}
roadkill_intro_common()
{
thread blend_sm_sunsamplesizenear();
thread intro_runner_path_breaker();
//thread intro_shepherd();
bridge_layer_clipbrush = GetEnt( "bridge_layer_clipbrush", "targetname" );
bridge_layer_clipbrush DisconnectPaths();
destroyed_humvee_models = GetEntArray( "destroyed_humvee_model", "targetname" );
array_thread( destroyed_humvee_models, ::hide_notsolid );
array_spawn_function_noteworthy( "enemy_riverbank_rpg_spawner", ::enemy_riverbank_rpg_spawner );
// no spawn funcs on drones so rewrite this for our drone
//array_spawn_function_noteworthy( "humvee_rider_spawner", ::humvee_rider_spawner );
thread humvee_rider_spawner();
//array_spawn_function_targetname( "idle_commander", ::idle_commander );
array_spawn_function_targetname( "foley_spawner", ::idle_commander );
array_spawn_function_noteworthy( "stryker", ::stryker_think );
array_spawn_function_noteworthy( "network_chatter_spawner1", ::put_noteworthy_in_magic_chatter );
array_spawn_function_noteworthy( "network_chatter_spawner2", ::put_noteworthy_in_magic_chatter );
add_global_spawn_function( "allies", ::ai_invulnerable );
array_spawn_targetname( "foley_spawner" );
if ( is_default_start() )
{
array_spawn_noteworthy( "shepherd_spawner" );
thread roadkill_foley_shepherd_intro();
}
disable_all_vehicle_mgs();
level.allied_riverbank_ai = [];
array_spawn_function_targetname( "riverbank_spawner", ::allied_riverbank_spawner );
//xx
thread roadkill_bridge_layer();
thread binoc_scene();
// these guys spawn once the bridge is halfway done, then try to shoot it
array_spawn_function_targetname( "enemy_bridge_spawner", ::enemy_bridge_spawner );
if ( is_default_start() )
{
thread radio_scene();
run_thread_on_targetname( "cover_scene_rock", ::cover_scene );
run_thread_on_targetname( "candy_man", ::candy_bar_scene );
run_thread_on_targetname( "riverbank_mg", ::riverbank_mg );
}
// run_thread_on_targetname( "cover_scene", ::cover_scene );
array_spawn_function_targetname( "enemy_riverbank_spawner", ::riverbank_guy_dies_on_retreat );
array_spawn_targetname( "enemy_riverbank_spawner" );
//spawn_vehicle_from_targetname( "riverbank_stryker" );
array_spawn_function_noteworthy( "player_personal_convoy", ::player_personal_convoy );
add_global_spawn_function( "allies", ::set_dontshootwhilemoving, true );
//xx
spawn_vehicles_from_targetname( "riverbank_tank" );
run_thread_on_targetname( "mortar_org", ::roadkill_mortars );
array_spawn_targetname( "riverbank_spawner" );
level.stair_block_guys = [];
array_spawn_function_targetname( "stair_block_guy", ::stair_block_guy );
if ( is_default_start() )
array_spawn_targetname( "stair_block_guy" );
// wall on the front of a building breaks off during exploder
run_thread_on_targetname( "broken_wall", ::broken_wall );
}
start_riverbank()
{
SetSavedDvar( "g_friendlyNameDist", 0 );
noself_delayCall( 3, ::setsaveddvar, "g_friendlyNameDist", 15000 );
roadkill_intro_common();
//xx
if ( getdvarint( "newintro" ) )
{
level.player ShellShock( "default", 5.8 );
//struct = getstruct( "player_intro_struct", "targetname" );
//level.player SetOrigin( struct.origin );
//level.player SetPlayerAngles( struct.angles );
//level.player setstance( "prone" );
// level.player freezecontrols( true );
level.player disableweapons();
black_overlay = create_client_overlay( "black", 0, level.player );
black_overlay.alpha = 1;
wait( 1 );
black_overlay FadeOverTime( 2 );
black_overlay.alpha = 0;
level waittill ( "get_on_the_line" );
// level.player freezecontrols( false );
level.player enableweapons();
//level.player setstance( "stand" );
}
}
start_move_out()
{
thread roadkill_intro_common();
//xx
/*
level.player SwitchToWeapon( "javelin" );
level endon( "bmps_destroyed" );
count = 0;
for ( ;; )
{
bmps = GetEntArray( "script_vehicle_bmp_woodland", "classname" );
foreach ( bmp in bmps )
{
if ( IsAlive( bmp ) )
{
bmp Vehicle_SetSpeed( 80, 80, 80 );
if ( IsDefined( bmp.javelin_targettable ) )
{
bmp godoff();
RadiusDamage( bmp.origin, 150, bmp.health + 500, bmp.health + 500 );
count++;
flag_set( "missile_fire_" + count );
}
}
}
wait( 1 );
}
*/
}
roadkill_riverbank()
{
enemy_riverhouse_spawners = GetEntArray( "enemy_riverhouse_spawner", "targetname" );
enemy_riverside_spawners = GetEntArray( "enemy_riverside_spawner", "targetname" );
array_spawn_function( enemy_riverhouse_spawners, ::riverbank_spawner_retreat_think );
array_spawn_function( enemy_riverside_spawners, ::riverbank_spawner_retreat_think );
thread riverside_house_manager( enemy_riverhouse_spawners );
thread riverside_flood_manager( enemy_riverside_spawners );
//array_thread( enemy_riverhouse_spawners, ::riverside_flood_think, 10, 15 );
delayThread( 5, ::spawn_vehicles_from_targetname_and_drive, "littlebird_attacks" );
delayThread( 10, ::spawn_vehicles_from_targetname_and_drive, "littlebird_attacks_2" );
}
start_convoy()
{
roadkill_intro_common();
start_ride_player = getstruct( "start_ride_player", "targetname" );
level.player SetOrigin( start_ride_player.origin );
level.player SetPlayerAngles( start_ride_player.angles );
}
roadkill_convoy()
{
// add_wait( ::flag_wait, "missile_fire_3" );
// add_func( ::axis_flee_riverbank );
// thread do_wait();
blocker = GetEnt( "friendly_video_blocker", "targetname" );
blocker Solid();
blocker ConnectPaths();
blocker NotSolid();
level.runnings_to_convoy_count = 0;
// level.player.attackeraccuracy = 0;
// level.player.IgnoreRandomBulletDamage = true;
// run_thread_on_targetname( "intro_orders", ::intro_orders );
thread player_fights_bmps();
array_spawn_function_targetname( "riverbank_bmp", ::riverbank_tank );
thread riverbank_bmp();
thread detect_if_player_tries_to_cross_bridge();
//array_spawn_function_targetname( "ride_vehicle_starts_spawned", ::ride_vehicle_starts_moving );
//spawn_vehicles_from_targetname( "ride_vehicle_starts_spawned" );
array_spawn_function_targetname( "lead_vehicle_spawner", ::common_ride_vehicle_init );
array_spawn_function_targetname( "ride_vehicle_starts_spawned", ::common_ride_vehicle_init );
//xx
spawn_vehicles_from_targetname_and_drive( "ride_vehicle_starts_spawned" );
level.npc_ride_vehicles = [];
level.guy_gets_in_vehicle_targets = [];
guy_gets_in_vehicle = GetEnt( "guy_gets_in_vehicle", "targetname" );
guy_gets_in_vehicle thread trigger_guy_gets_in_vehicle();
//xx
// wait( 1 );
//pre_bridge_vehicle_brush = GetEnt( "pre_bridge_vehicle_brush", "targetname" );
//pre_bridge_vehicle_brush ConnectPaths();
//pre_bridge_vehicle_brush Delete();
stairs_blocker = GetEnt( "stairs_blocker", "targetname" );
stairs_blocker ConnectPaths();
stairs_blocker Delete();
//post_bridge_vehicle_brush = GetEnt( "post_bridge_vehicle_brush", "targetname" );
//post_bridge_vehicle_brush ConnectPaths();
//post_bridge_vehicle_brush NotSolid();
friendly_midroad_blocker = GetEnt( "friendly_midroad_blocker", "targetname" );
friendly_midroad_blocker ConnectPaths();
friendly_midroad_blocker Delete();
blockers = GetEntArray( "player_backtrack_blocker_model", "targetname" );
foreach ( blocker in blockers )
{
blocker Show();
}
blockers = GetEntArray( "player_backtrack_blocker_brush", "targetname" );
foreach ( blocker in blockers )
{
blocker Show();
blocker Solid();
}
array_spawn_function_noteworthy( "friendly_open_humvee", ::friendly_open_humvee );
array_spawn_function_targetname( "player_ride_vehicle", ::player_ride_vehicle );
array_spawn_function_targetname( "ride_vehicle_starts_moving", ::ride_vehicle_starts_moving );
// xx
if ( !is_default_start() )
wait( 0.1 );
spawn_vehicle_from_targetname( "player_ride_vehicle" );
spawn_vehicles_from_targetname( "ride_vehicle_starts_moving" );
// wait( 0.05 ); // for the start points
thread riverbank_player_learns_m203();
flag_wait_or_timeout( "player_enters_riverbank", 10 );
flag_set( "riverbank_scene_starts" );
if ( is_default_start() )
{
add_func( ::enter_riverbank_foley_shepherd_dialogue );
add_func( ::airstrike_call_in_dialogue );
thread do_funcs();
}
flag_wait( "bridge_baddies_retreat" );
autosave_by_name( "bridge_baddies_retreat" );
flag_wait( "bridgelayer_crosses" );
bridge_layer_clipbrush = GetEnt( "bridge_layer_clipbrush", "targetname" );
bridge_layer_clipbrush ConnectPaths();
bridge_layer_clipbrush Delete();
add_wait( ::flag_wait, "leaving_riverbank" );
add_func( ::flag_set, "time_to_go" );
add_func( ::allies_leave_riverbank );
add_func( ::convoy_moves_out_dialogue );
add_func( ::autosave_by_name, "leaving_riverbank" );
do_wait();
stair_wave_spawner = getent( "stair_wave_spawner", "targetname" );
stair_wave_spawner add_spawn_function( ::stair_wave_spawner );
stair_wave_spawner stalingradspawn();
spawner = GetEnt( "player_humvee_passenger_spawner", "targetname" );
spawner add_spawn_function( ::guy_gets_in_player_humvee );
spawner spawn_ai();
battlechatter_off( "allies" );
// array_spawn_function_targetname( "airstrike_blocker_spawner", ::airstrike_spawner );
// array_spawn_targetname( "airstrike_blocker_spawner" );
// array_spawn_function_targetname( "airstrike_spawner", ::airstrike_spawner );
// airstrike_spawners = GetEntArray( "airstrike_spawner", "targetname" );
// array_thread( airstrike_spawners, ::spawn_ai );
flag_wait( "player_climbs_stairs" );
battlechatter_off( "axis" );
array_spawn_function_targetname( "escape_block_spawner", ::escape_block_spawner );
array_spawn_targetname( "escape_block_spawner" );
flag_set( "convoy_moment" );
//run_thread_on_targetname( "cover_scene", ::cover_scene );
ai = GetAIArray( "axis" );
foreach ( guy in ai )
{
time = RandomFloat( 2 );
guy delayCall( time, ::Kill );
}
delayThread( 4.5, ::flag_set, "guys_get_in_convoy_vehicles" );
thread player_get_in_reminder();
flag_wait( "player_gets_in" );
thread baddies_on_building_get_your_attention();
delayThread( 0, ::spawn_vehicles_from_targetname_and_drive, "apache_show_building_spawner" );
SetSavedDvar( "sm_sunSampleSizeNear", "0.6" );// a little more shadow for the start
ClearAllCorpses();
autosave_by_name( "player_gets_in" );
ai = GetAIArray( "allies" );
foreach ( guy in ai )
{
if ( IsDefined( guy.magic_bullet_shield ) )
guy stop_magic_bullet_shield();
guy.ignoreall = false;
}
// level.player.attackeraccuracy = 1;
// level.player.IgnoreRandomBulletDamage = false;
array_spawn_function_targetname( "extra_bmp", ::extra_bmp_blows_up );
spawn_vehicles_from_targetname_and_drive( "extra_bmp" );
thread airstrike_completion_dialogue_and_exploder();
wait( 3.5 );
blocker = GetEnt( "friendly_video_blocker", "targetname" );
blocker Solid();
blocker DisconnectPaths();
jeep_rider_spawners = GetEntArray( "jeep_rider_spawner", "targetname" );
array_spawn_function( jeep_rider_spawners, ::jeep_rider_spawner_think );
array_thread( jeep_rider_spawners, ::spawn_ai );
run_thread_on_targetname( "film_org", ::guys_film_explosion );
// post_bridge_vehicle_brush Solid();
// post_bridge_vehicle_brush DisconnectPaths();
// wait( 0.5 );
// player_got_in_spawners = GetEntArray( "player_got_in_spawner", "targetname" );
// array_spawn_function( player_got_in_spawners , ::magic_bullet_shield );
// array_thread( player_got_in_spawners, ::spawn_ai );
thread street_walk_scene();
// wait( 7 );
//flag_set( "time_to_pull_out" );
flag_wait( "convoy_oscar_mike_after_explosion" );
// wait( 4 );
delayThread( 2.2, ::flag_set, "lead_vehicle_rolls_out" );
waits = [];
waits[ 1 ] = 0.7;
waits[ 2 ] = 0.6;
waits[ 3 ] = 0.1;
waits[ 4 ] = 3.2;
waits[ 5 ] = 0.4;
waits[ 6 ] = 0;
//delaythread( 1.4, ::exploder, "town_bombed" );
for ( i = 1; i <= 6; i++ )
{
// convoy_crosses_bridge1
if ( flag_exist( "convoy_crosses_bridge" + i ) )
flag_set( "convoy_crosses_bridge" + i );
wait( waits[ i ] );
}
start_ride_common( false );
}
start_ride()
{
setup_ride_path_targets( "start_vehicle_ride" );
start_ride_common( true );
}
start_ride_common( from_start_point )
{
add_global_spawn_function( "axis", ::set_ignoreSuppression, true );
set_custom_gameskill_func( ::roadkill_gameskill_ride_settings );
//setsaveddvar( "player_radiusdamagemultiplier", "0.1" );
handle_start_points_for_detour_humvee();
destroyed_humvee_models = GetEntArray( "destroyed_humvee_model", "targetname" );
array_thread( destroyed_humvee_models, ::hide_notsolid );
level.createRpgRepulsors = false;
level.player EnableDeathShield( true );
thread player_doesnt_die_in_red_flashing();
level.player DisableWeapons();
level.player ent_flag_clear( "near_death_vision_enabled" );
level.player_repulsor = Missile_CreateRepulsorEnt( level.player, 2000, 500 );
level.convoy_gunners = [];
// ai
array_spawn_function_noteworthy( "run_away_die", ::run_away_die );
// vehicles
// array_spawn_function_noteworthy( "lead_vehicle", ::lead_vehicle_func );
array_spawn_function_noteworthy( "start_player_crazy_ride", ::player_turret_humvee );
array_spawn_function_targetname( "ride_vehicle_spawner", ::player_personal_convoy );
array_spawn_function_noteworthy( "traffic_jam_truck", ::traffic_jam_truck );
array_spawn_function_noteworthy( "ignore_until_attack", ::ignore_until_attack );
array_spawn_function_noteworthy( "trapper_spawner", ::trapper_spawner );
array_spawn_function_noteworthy( "rpg_ambush_spawner", ::rpg_ambush_spawner );
thread trapper_killer_trigger();
//array_spawn_function_noteworthy( "ambusher_spawner", ::ambusher_spawner );
// driver that tries to block
array_spawn_function_noteworthy( "blocker_driver", ::blocker_driver );
// guy that ends the ride
array_spawn_function_noteworthy( "ride_killer", ::ride_killer );
if ( from_start_point )
spawn_vehicles_from_targetname_and_drive( "ride_vehicle_spawner" );
add_global_spawn_function( "axis", ::no_grenades );
//ambushed_hummers = GetEntArray( "ambushed_hummer", "targetname" );
//array_thread( ambushed_hummers, ::hide_notsolid );
// spread the vehicles out a bit on the ride
thread ride_adjust_convoy_speed_trigger();
thread ride_scenes();
}
roadkill_ride()
{
ai = GetAIArray();
foreach ( guy in ai )
{
if ( IsAlive( level.detour_gunner ) && guy == level.detour_gunner )
continue;
if ( IsDefined( guy.magic_bullet_shield ) )
{
guy stop_magic_bullet_shield();
}
}
flag_wait( "roadkill_town_dialogue" );
thread maps\_introscreen::ramp_out_sunsample_over_time( 2 );
autosave_by_name( "roadkill_town_dialogue" );
thread player_vehicle_catches_up();
waittillframeend;// wait for the ride vehicles to get defined
if ( level.start_point != "ride" )
{
start_time = gettime();
wait( 0.6 ); // 2.5
// Hunter two breaking away.
thread radio_dialogue_generic( "roadkill_fly_breakingaway" );
wait( 2.1 ); // 2.5
// Copy Hunter Two.
thread radio_dialogue_generic( "roadkill_hqr_copyhunter2" );
wait_for_buffer_time_to_pass( start_time, 6.5 );
// All Hunter Two victors, keep an eye out for civvies, we<77>re not cleared to engage unless they fire first.
thread radio_dialogue_generic( "roadkill_fly_eyeoutforciv" );
wait( 6.5 );
// Scan the rooftops for hostiles. Stay frosty.
thread radio_dialogue_generic( "roadkill_fly_scanrooftops" );
wait( 4.8 );
wait_for_buffer_time_to_pass( start_time, 17.8 );
}
// You see anything?
thread driver_line( "roadkill_cpd_seeanything" );
wait( 2.2 );
// I got nothin'. This place is dead.
thread dunn_line( "roadkill_cpd_placeisdead" );
wait( 2.3 );
// Huah.
thread driver_line( "roadkill_ar3_huah" );
wait( 2.5 );
// Overlord, Hunter Two-One. We're passing tunnel Harvey, cross street Elizabeth.
thread radio_dialogue_generic( "roadkill_fly_crossstreeteliz" );
wait( 4.5 );
// Roger that, Hunter Two-One, proceed with caution.
thread radio_dialogue_generic( "roadkill_hqr_caution" );
wait( 4.0 );
flag_wait( "civie_dialogue" );
wait( 2.9 );
// Stay frosty guys, this is the Wild West.
thread dunn_line( "roadkill_cpd_wildwest" );
wait( 2.6 );
// Roger that.
thread driver_line( "roadkill_ar3_rogerthat" );
flag_wait( "start_runner" );
ai = GetAIArray( "allies" );
foreach ( guy in ai )
{
if ( IsDefined( guy.ridingVehicle ) )
continue;
guy safe_delete();
}
thread gaz_balcony_guys();
// Watch the alleys.
delayThread( 6.0, ::radio_dialogue_generic, "roadkill_fly_watchalleys" );
// Covering.
delayThread( 8.0, ::radio_dialogue_generic, "roadkill_ar3_covering" );
wait( 13.7 );
// Three foot-mobiles, balcony 12 o'clock. Probable militia.
thread radio_dialogue_generic( "roadkill_ar1_probablemilitia" );
wait( 3.5 );
// Are they armed?
thread radio_dialogue_generic( "roadkill_fly_aretheyarmed" );
wait( 2.2 );
// Negative, they're just watching us.
thread radio_dialogue_generic( "roadkill_ar1_watchingus" );
wait( 5.1 );
// Bet they're scouting us.
thread dunn_line( "roadkill_cpd_scoutingus" );
wait( 2.0 );
// Doesn<73>t mean we can shoot 'em.
thread driver_line( "roadkill_fly_doesntmean" );
/*
wait( 24.5 );
// Hold off, it<69>s a civilian.
add_func( ::foley_line, "roadkill_fly_holdoff" );
// Bet he<68>s scouting us.
add_func( ::dunn_line, "roadkill_cpd_scoutingus" );
// Doesn<73>t mean you can shoot him.
add_func( ::foley_line, "roadkill_fly_doesntmean" );
do_funcs();
// Wonder what's got him all worked up?
add_wait( ::flag_wait, "worked_up" );
add_func( ::dunn_line, "roadkill_cpd_allworkedup" );
thread do_wait();
*/
/*
// Watch your sector!
foley_line( "roadkill_fly_watchsector" );
wait( 4 );
// You see anything?
dunn_line( "roadkill_cpd_seeanything" );
wait( 6 );
// Stay frosty!
foley_line( "roadkill_fly_stayfrosty" );
*/
// array_spawn_function_noteworthy( "rooftop_drone", ::rooftop_drone );
}
start_crazy_ride()
{
setup_ride_path_targets( "start_vehicle_crazy_ride" );
start_ride_common( true );
}
roadkill_crazy_ride()
{
run_thread_on_targetname( "shot_fired_trigger", ::shot_fired_trigger );
flag_wait( "shot_rings_out" );
thread player_convoy_encounters_baddies();
thread crazy_ride_dialogue();
thread roadkill_ride_kill_drones();
flag_wait( "ambush_spawn" );
ai = GetAIArray();
foreach ( guy in ai )
{
if ( IsDefined( guy GetTurret() ) )
continue;
if ( guy.team != "neutral" )
continue;
guy safe_delete();
}
// dont want the player getting hit after the enemies retreat
level.player.ignoreme = false;
level.player.IgnoreRandomBulletDamage = false;
array_thread( level.school_ambush_spawners, ::spawn_ai );
flag_wait( "ambush" );
//SetHalfResParticles( true );
battlechatter_on( "axis" );
add_global_spawn_function( "axis", ::die_after_awhile );
level.old_physics_force = GetDvarFloat( "physveh_explodeforce", 0 );
SetSavedDvar( "physveh_explodeforce", 0 );
//array_spawn_targetname( "school_ambush_lower_floor" );
// delayThread( 2, ::array_spawn_targetname, "school_ambush_outside_spawner" );
wait( 3 );
autosave_by_name( "ambush" );
}
crazy_ride_dialogue()
{
flag_wait( "shot_rings_out" );
wait( 1 );
// Can you see 'em? Can you see 'em?
thread passenger_line( "roadkill_ar2_seeem" );
wait( 1.5 );
// I don't see jack!
thread dunn_line( "roadkill_cpd_dontseejack" );
wait( 1.5 );
// All Hunter victors, this is Sergeant Foley. Prepare to engage, we're taking sniper fire from multiple directions.
thread radio_dialogue_generic( "roadkill_fly_prepeng" );
wait( 3.8 );
// Prepare to engage!! We're goin' in!!!
thread dunn_line( "roadkill_cpd_goinin" );
wait( 1.8 );
// This is it!!! Spin 'em up!!
thread driver_line( "roadkill_ar1_spinemup" );
wait( 1.5 );
flag_set( "humvees_spin_up" );
// Watch twelve and six!
thread ahead_line( "roadkill_ar3_12and6" );
wait( 0.5 );
// We got a ton of contacts front and back!
thread way_ahead_line( "roadkill_ar4_tonacontacts" );
wait( 1.5 );
// // Watch for movement!
// thread dunn_line( "roadkill_cpd_watchmvmnt" );
// Taking fire, multiple contacts at long range!
thread way_ahead_line( "roadkill_ar5_longrange" );
wait( 1.0 );
// Goin' forward!!
thread ahead_line( "roadkill_ar2_goinforward" );
wait( 2.0 );
battlechatter_on( "axis" );
// There they are!!!! Right there!
//thread radio_dialogue_generic( "roadkill_ar1_rightthere" );
// wait( 4.5 );
// Shut that thing off!
//thread dunn_line( "roadkill_cpd_shutitoff" );
// wait( 3.8 );
// There they are, light 'em up!!
thread dunn_line( "roadkill_cpd_lightemup" );
// Here they come!
delaythread( 0.5, ::arab_line, "roadkill_AB2_heretheycome" );
// Use your RPGs! Target the humvees!
delaythread( 2.5, ::arab_line, "roadkill_AB2_rpgshumvees" );
flag_wait( "ambush" );
wait( 5.0 );
// There's too many of 'em! Back up back up!!!
thread dunn_line( "roadkill_cpd_backup" );
wait( 2 );
// Get us outta here! Drive!
thread dunn_line( "roadkill_cpd_outtahere" );
// Hassan! Move across the street for a better vantage point!
delaythread( 3.5, ::arab_line, "roadkill_AB2_hassanmove" );
// Die you American dogs!
delaythread( 6.5, ::arab_line, "roadkill_AB2_diedogs" );
// Move move move!!
delaythread( 8.5, ::arab_line, "roadkill_AB2_movex3" );
// Hunter 2-1, this is Hunter 2-3, our humvee got shot up and we're cut off from you, over!
// radio_line( "roadkill_ar2_shotup" );
// Solid copy Hunter 2-3! Hang tight! We'll make our way back to you, over!
// foley_line( "roadkill_fly_hangtight" );
// Hunter 2-3 solid copy!
// radio_line( "roadkill_ar2_solidcopy" );
}
start_crazy_ride_later()
{
setup_ride_path_targets( "start_vehicle_ride_later" );
start_ride_common( true );
}
roadkill_crazy_ride_later()
{
thread ride_later_dialogue();
// makes the player and technical brake
player_brake_trigger = GetEnt( "player_brake_trigger", "targetname" );
player_brake_trigger thread player_pushes_truck_down_alley();
lead_vehicle = level.crazy_ride_convoy[ 0 ];
player_vehicle = level.crazy_ride_convoy[ 1 ];
rear_vehicle = level.crazy_ride_convoy[ 2 ];
player_vehicle VehPhys_DisableCrashing();
level.player EnableDeathShield( false );
wait( 0.05 );// wait for level.lead_vehicle to get set.
thread convoy_gunners_pick_targets();
thread enemy_ai_accuracy_effected_by_player_humvee();
flag_wait( "lead_vehicle_speeds_up" );
//lead_vehicle Vehicle_SetSpeed( 26, 1, 1 );
// player_vehicle thread radius_damage_in_front();
// flag_wait( "traffic_jam" );
level.old_physics_force = GetDvarFloat( "physveh_explodeforce", 0 );
SetSavedDvar( "physveh_explodeforce", 0 );
flag_wait( "resume_the_path" );
SetPlayerIgnoreRadiusDamage( true );
// player_vehicle ResumeSpeed( 5 );
// player_vehicle Vehicle_SetSpeed( 10, 2, 2 );
// technical Vehicle_SetSpeedImmediate( 5, 1, 1 );
// technical delayThread( 0.01, ::set_brakes, 0 );
// technical delayCall( 0.01, ::vehicle_setspeedimmediate, 8, 1, 1 );
// player_vehicle.veh_brake = 0.0;
//wait( 1.2 );
//wait( 0.6 );
delayThread( 0.25, ::force_player_vehicle_speed, 12 );
delayThread( 0.2, ::player_impact_earthquake );
delayThread( 0.2, ::traffic_truck_pushed );
delayThread( 1.25, ::force_player_vehicle_speed, 8 );
flag_wait( "player_is_pushing_truck" );
level.traffic_jam_truck godoff();
level.traffic_jam_truck delayCall( 1, ::vehicle_setspeedimmediate, 0, 1, 1 );
push_truck = GetVehicleNode( "push_truck", "targetname" );
player_vehicle StartPath( push_truck );
rear_vehicle.veh_brake = 0.5;
lead_vehicle.veh_brake = 0.5;
flag_wait( "player_goes_in_reverse" );
level notify( "stop_updating_player_vehicle_speed" );
player_vehicle.veh_transmission = "reverse";
player_vehicle.veh_pathdir = "reverse";
wait( 1 );
player_vehicle.veh_transmission = "forward";
player_vehicle.veh_pathdir = "forward";
player_reattach_route = GetVehicleNode( "player_reattach_route", "script_noteworthy" );
player_vehicle StartPath( player_reattach_route );
rear_vehicle.veh_brake = 0;
lead_vehicle thread lead_vehicle_starts_going_again();
player_vehicle ResumeSpeed( 5 );
flag_set( "push_complete" );
level notify( "stop_updating_player_vehicle_speed" );
SetPlayerIgnoreRadiusDamage( false );
thread ride_end_dialogue();
lead_vehicle = level.crazy_ride_convoy[ 0 ];
player_vehicle = level.crazy_ride_convoy[ 1 ];
rear_vehicle = level.crazy_ride_convoy[ 2 ];
flag_wait( "player_vehicle_wipes_out" );
//SetHalfResParticles( false );
player_vehicle Vehicle_SetSpeed( 14, 2, 2 );
rear_vehicle Vehicle_SetSpeed( 14, 2, 2 );
// wait( 0.5 );
last_building_spawners = GetEntArray( "last_building_spawner", "targetname" );
array_spawn( last_building_spawners );
Missile_DeleteAttractor( level.player_repulsor );
missile_target = GetEnt( "missile_target", "targetname" );
attract_ent = GetEnt( missile_target.target, "targetname" );
attractor = Missile_CreateAttractorEnt( attract_ent, 50000, 50000, level.ride_killer );
// recover and dont get hurt while you get out
set_player_attacker_accuracy( 0.0 );
level.player.IgnoreRandomBulletDamage = true;
thread player_gets_max_health_for_dismount();
wait( 2 );
player_vehicle Vehicle_SetSpeed( 10, 2, 2 );
rear_vehicle Vehicle_SetSpeed( 10, 2, 2 );
level.player EnableDeathShield( true );
rocket = undefined;
for ( ;; )
{
found_rocket = false;
rockets = GetEntArray( "rocket", "classname" );
foreach ( rocket in rockets )
{
if ( Distance( rocket.origin, level.player.origin ) < 750 )
{
found_rocket = true;
break;
}
}
if ( found_rocket )
break;
wait( 0.05 );
}
dot = get_dot( level.player GetEye(), level.player GetPlayerAngles(), rocket.origin );
PrintLn( "dot " + dot );
slowmo = dot >= 0.8;
if ( slowmo )
{
slowmo_start();
slowmo_setspeed_slow( 0.65 );
slowmo_setlerptime_in( 0.2 );
slowmo_lerp_in();
}
for ( ;; )
{
if ( !isdefined( rocket ) )
break;
if ( Distance( rocket.origin, level.player.origin ) < 150 )
{
if ( slowmo )
{
slowmo = false;
slowmo_setlerptime_out( 0.0 );
slowmo_lerp_out();
slowmo_end();
}
}
if ( Distance( rocket.origin, level.player.origin ) < 75 )
break;
wait( 0.05 );
}
if ( slowmo )
{
slowmo_setlerptime_out( 0.0 );
slowmo_lerp_out();
slowmo_end();
}
thread player_becomes_normal_gameskill();
//ignoresuppression
org = level.player.origin;
// level.player FreezeControls( true );
level.player Unlink();
// level.player_turret UseBy( level.player );
level.player_turret Delete();// UseBy( level.player );
level.player SetOrigin( org );
level notify( "ride_ends" );
level.player maps\_gameskill::update_player_attacker_accuracy();
ai = GetAIArray( "allies" );
foreach ( guy in ai )
{
if ( IsDefined( guy.magic_bullet_shield ) )
guy stop_magic_bullet_shield();
}
// I banish ye to vehicle hell
vehicles = [];
vehicles[ 0 ] = lead_vehicle;
vehicles[ 1 ] = player_vehicle;
vehicles[ 2 ] = rear_vehicle;
vehicle_hell = GetVehicleNode( "vehicle_hell", "targetname" );
foreach ( vehicle in vehicles )
{
vehicle thread goes_to_hell( vehicle_hell );
}
SetSavedDvar( "physveh_explodeforce", level.old_physics_force );
}
ride_later_dialogue()
{
flag_wait( "lead_vehicle_speeds_up" );
start_time = GetTime();
// Slow down, we're getting strung out!
// wait( 2.5 );
thread foley_line( "roadkill_fly_strungout" );
// wait_for_buffer_time_to_pass( start_time, 4.2 );
flag_wait( "we're cut off" );
// We're cut off!
dunn_line( "roadkill_cpd_cutoff" );
//wait_for_buffer_time_to_pass( start_time, 7.2 );
flag_wait( "push_through" );
// Push through!
foley_line( "roadkill_fly_pushthrough" );
}
ride_end_dialogue()
{
flag_wait( "player_vehicle_wipes_out" );
//wait( 1 );
// Heads up!
foley_line( "roadkill_fly_headsup" );
}
start_dismount()
{
level.player DisableWeapons();
slide_org = getstruct( "slide_org", "targetname" );
level.player SetOrigin( slide_org.origin );
}
roadkill_convoy_dismounts()
{
SetSavedDvar( "compass", 1 );
flag_set( "kill_drones" );
remove_global_spawn_function( "axis", ::no_grenades );
thread handle_player_exposing_himself_in_front_of_school();
if ( IsDefined( level.crazy_ride_convoy[ "detour" ] ) && IsDefined( level.crazy_ride_convoy[ "detour" ].classname ) )
{
level.crazy_ride_convoy[ "detour" ].deathfx_ent Delete();
level.crazy_ride_convoy[ "detour" ] Delete();
}
exploder( "smoke_column" );
destroyed_humvee_models = GetEntArray( "destroyed_humvee_model", "targetname" );
array_thread( destroyed_humvee_models, ::show_solid );
if ( level.start_point != "dismount" )
thread maps\_autosave::_autosave_game_now_nochecks();
thread dismount_dialogue_and_friendly_progression_logic();
array_spawn_function( level.school_ambush_spawners, ::join_school_threatbias_group_and_damage_func );
// array_spawn_function_noteworthy( "school_spawner", ::join_school_threatbias_group );
array_spawn_function_noteworthy( "school_spawner", ::enable_danger_react, 5000 );
array_spawn_function_noteworthy( "school_spawner", ::school_spawner_think );
//thread school_spawner_flee_node();
run_thread_on_targetname( "barbwire_ride_cutoff", ::show_helper_model );
activate_trigger_with_targetname( "friendlies_flee_ambush_trigger" );
delayThread( 0.95, ::crash_physics_explosion );
level.player ShellShock( "default", 5 );
Earthquake( 1, 2, level.player.origin, 2000 );
models = GetEntArray( "dead_vehicle_spawner", "targetname" );
foreach ( model in models )
{
model SetContents( model.oldcontents );
model Show();
}
//(-6404 8583 362) : 270 345
player_slide_crash = getstruct( "player_slide_crash", "targetname" );
slideModel = spawn_tag_origin();
slideModel.origin = level.player.origin;
slideModel.angles = level.player.angles;
level.player PlayerLinkTo( slideModel, "tag_origin", 1, 0, 0, 0, 0, 0 );
movetime = 0.3;
slideModel MoveTo( player_slide_crash.origin, movetime, movetime * 0.6, movetime * 0.4 );
slideModel RotateTo( player_slide_crash.angles, movetime, movetime * 0.6, movetime * 0.4 );
wait( movetime );
slideModel Delete();
level.player SetOrigin( player_slide_crash.origin );
// level.player SetPlayerAngles( player_slide_crash.angles );
level.player SetStance( "prone" );
level.player AllowCrouch( true );
level.player AllowProne( true );
// temporary thing to delete far away axis to save me a recompile
ai = GetAIArray( "axis" );
get_array_of_closest( level.player.origin, ai );
for ( i = ai.size - 1; i >= 0 && i >= ai.size - 4; i-- )
{
if ( IsDefined( ai[ i ].magic_bullet_shield ) )
continue;
ai[ i ] Kill();
}
friendly_crash_spawners = GetEntArray( "friendly_crash_spawner", "targetname" );
array_spawn_function( friendly_crash_spawners, ::friendly_crash_think );
array_thread( friendly_crash_spawners, ::move_flashed_spawner_and_spawn );
level.player SetThreatBiasGroup( "ally_with_player" );
flag_set( "player_knocked_down" );
battlechatter_on( "allies" );
// rooftop enemies show up
//thread modify_dismount_spawner_threatbias();
array_spawn_function_targetname( "dismount_enemy_spawner", ::dismount_enemy_spawner );
array_spawn_targetname( "dismount_enemy_spawner" );
// autosave_by_name( "dismount" );
exploder( "crashed_humvees" );
remove_global_spawn_function( "axis", ::die_after_awhile );
remove_global_spawn_function( "axis", ::set_ignoreSuppression );
// level.player thread EndSliding();
wait( 0.5 );
timer = 5;
frames = timer * 20;
for ( i = 0; i < frames; i++ )
{
if ( level.player GetStance() != "prone" )
break;
wait( 0.05 );
}
weapons = level.player GetWeaponsListPrimaries();
other_weapon = undefined;
foreach ( weapon in weapons )
{
if ( weapon == "javelin" )
{
level.player TakeWeapon( weapon );
continue;
}
other_weapon = weapon;
}
if ( IsDefined( other_weapon ) )
level.player SwitchToWeapon( other_weapon );
level.player delayCall( 4, ::EnableDeathShield, false );
level.player EnableWeapons();
// lead_vehicle Vehicle_SetSpeedImmediate( 32, 2, 2 );
// player_wipe_out_path = GetVehicleNode( "player_wipe_out_path", "targetname" );
// player_vehicle StartPath( player_wipe_out_path );
set_promotion_order( "g", "c" );// if a green guy dies, cyan becomes green
flag_set( "player_is_dismounted" );
//thread grenade_barrage_if_you_delay();
// player needs full health.
// maps\_gameskill::updateAllDifficulty();
flag_wait( "player_enters_ambush_house" );
//thread staircase_grenade();
level.ambush_allies_outside_vehicle = 0;
ambush_ally_spawners = GetEntArray( "ambush_ally_spawner", "targetname" );
array_spawn_function( ambush_ally_spawners, ::ambush_ally_spawner_think );
array_thread( ambush_ally_spawners, ::spawn_ai );
ambush_house_spawners = GetEntArray( "ambush_house_spawner", "targetname" );
array_spawn_function_noteworthy( "slowbie", ::ambush_house_slowbie );
array_spawn_function( ambush_house_spawners, ::ambush_house_spawner_think );
//array_thread( ambush_house_spawners, ::spawn_ai );
add_wait( ::flag_wait, "player_looks_at_staircase" );
add_wait( ::flag_wait, "player_progresses_in_ambush_house" );
add_func( ::array_spawn_targetname, "ambush_house_spawner" );
thread do_wait_any();
/*
flag_wait( "ambush_house_enemies_came_down_stairs" );
volume = GetEnt( "ambush_house_lower_volume", "targetname" );
volume waittill_volume_dead_or_dying();
*/
add_wait( ::flag_wait, "sweep_dismount_building" );
add_wait( ::flag_wait, "player_progresses_in_ambush_house" );
do_wait_any();
activate_trigger_with_targetname( "ambush_house_friendlies_progress_downstairs" );
//flag_wait( "staircase_grenade" );
flag_wait( "dismount_friendlies_go_for_staircase" );
activate_trigger_with_targetname( "ambush_house_friendlies_reach_staircase" );
spawn_vehicles_from_targetname( "ambushed_hummer" );
remove_car = GetEnt( "remove_car", "script_noteworthy" );
remove_car Delete();
add_wait( ::flag_wait, "foley_flashbang" );
add_func( ::learn_flash );
thread do_wait();
// thread learn_flash( start_time );
flag_wait( "ambush_house_player_goes_upstairs" );
thread detect_room_was_flashed();
level.enemy_playground_enemies = [];
// spawn the badguys in front of the school
array_spawn_function_noteworthy( "enemy_playground_spawner", ::enemy_playground_spawner );
array_spawn_noteworthy( "enemy_playground_spawner" );
// the school attacks!
foreach ( spawner in level.school_ambush_spawners )
{
spawner.count = 1;
spawner.script_accuracy = 1;
spawner spawn_ai();
}
start_time = GetTime();
volume = GetEnt( "ambush_house_upstairs_first_room", "targetname" );
volume add_wait( ::waittill_volume_dead_or_dying );
add_wait( ::flag_wait, "player_leaves_ambush_house" );
do_wait_any();
activate_trigger_with_targetname( "ambush_house_friendlies_upstairs_trigger" );
//flag_wait_either( "ambush_house_player_goes_last_room", "room_was_flashed" );
flag_wait_or_timeout( "ambush_house_player_goes_last_room", 12 );
/*
if ( !flag( "player_leaves_ambush_house" ) )
{
volume = GetEnt( "ambush_house_last_room", "targetname" );
volume add_wait( ::waittill_volume_dead_or_dying );
add_wait( ::flag_wait, "player_leaves_ambush_house" );
do_wait_any();
}
if ( !flag( "player_leaves_ambush_house" ) )
{
activate_trigger_with_targetname( "ambush_house_friendlies_last_room_trigger" );
wait( 3 );
}
*/
activate_trigger_with_targetname( "ambush_house_friendlies_last_room_trigger" );
level.foley set_force_color( "b" );
level.dunn set_force_color( "p" );
flag_wait( "playground_baddies_retreat" );
activate_trigger_with_targetname( "ambush_house_friendlies_leave_trigger" );
flag_wait( "player_leaves_ambush_house" );
// level.player SetThreatBiasGroup( "allies" );
}
dismount_dialogue_and_friendly_progression_logic()
{
wait( 4 );
// We need to get off the street!
thread foley_line( "roadkill_fly_getoffstreet" );
flag_wait( "player_is_dismounted" );
wait( 0.5 );
flag_wait( "player_enters_ambush_house" );
wait( 3.0 );
// Is everybody ok?
foley_line( "roadkill_fly_everybodyok" );
wait( 0.5 );
dunn_line( "roadkill_cpd_huah" );
thread play_sound_in_space( "scn_roadkill_interior_scuffle1", level.dunn.origin + (0,0,120) );
//other_two_guys_say_huah();
wait( 0.45 );
// They're movin' around upstairs!
dunn_line( "roadkill_cpd_movinaroundup" );
// Get the hell away from those windows and secure the top floor! Move! Move!
foley_line( "roadkill_fly_securetopfloor" );
flag_set( "sweep_dismount_building" );
//flag_wait( "ambush_house_player_goes_last_room" );
flag_wait( "eyes_on_school" );
if ( !flag( "lets_go_trigger" ) )
{
add_endon( "lets_go_trigger" );
volume = GetEnt( "ambush_house_last_room", "targetname" );
volume add_wait( ::waittill_volume_dead );
add_wait( ::_wait, 4 );
do_wait_any();
}
thread foley_gets_eyes_on_school_dialogue();
add_wait( ::flag_wait, "player_leaves_ambush_house" );
add_wait( ::flag_wait, "playground_baddies_retreat" );
add_wait( ::_wait, 20 );
do_wait_any();
flag_set( "playground_baddies_retreat" );
wait_for_chance_to_charge_school();
/#
// should be no more cyan guys now
guys = get_force_color_guys( "allies", "c" );
AssertEx( !guys.size, "Found cyan guys!" );
#/
delayThread( 1.1, ::flag_set, "friendlies_run_to_school" );
// Follow me let's go!
thread foley_line( "roadkill_fly_followme" );
flag_wait( "friendlies_run_to_school" );
ai = level.crash_friendly;
level.crash_friendly = array_removeDead( level.crash_friendly );
foreach ( guy in level.crash_friendly )
{
guy enable_heat_behavior();
}
activate_trigger_with_targetname( "school_friendlies_gather_outside_trigger" );
run_thread_on_targetname( "stop_sprinting_trigger", ::stop_sprinting_trigger );
}
start_roadkill_school_fight()
{
struct = getstruct( "school_start_player", "targetname" );
level.player teleport_ent( struct );
array_spawn_noteworthy( "dismount_macey" );
array_spawn_noteworthy( "dismount_dunn" );
waittillframeend;// wait till they spawn
struct = getstruct( "school_start_foley", "targetname" );
level.foley teleport_ent( struct );
level.foley magic_bullet_shield();
struct = getstruct( "school_start_dunn", "targetname" );
level.dunn teleport_ent( struct );
level.dunn magic_bullet_shield();
level.foley set_force_color( "b" );
level.dunn set_force_color( "p" );
activate_trigger_with_targetname( "school_friendlies_gather_outside_trigger" );
}
roadkill_school_fight()
{
thread school_enemies_retreat_dialogue();
thread friendlies_traverse_school();
array_spawn_function_noteworthy( "hidden_room_spawner", ::hidden_room_spawner );
thread dunn_says_clear_on_room_clear();
thread cutting_history_class_dialogue();
flag_set( "lets_go_trigger" );
flag_wait( "roadkill_school_2" );
// Watch it! Some of 'em just went in that classroom on the right!
dunn_line( "roadkill_cpd_classonright" );
wait( 2 );
// Hunter 2-3, Hunter 2-1, we're in the school. Heavy resistance.
add_func( ::foley_line, "roadkill_fly_intheschool" );
// Copy that Hunter 2-1.
add_func( ::shepherd_line, "roadkill_shp_copythat21" );
thread do_funcs();
flag_wait( "roadkill_school_3" );
// clear out the ally threatbias group
SetThreatBias( "axis_school", "ally_with_player", 0 );
SetThreatBias( "ally_with_player", "axis_school", 0 );
flag_wait( "roadkill_school_5" );
add_wait( ::player_is_safe );
add_wait( ::_wait, 3.5 );
add_func( ::foley_line, "roadkill_fly_pressureoff" );
thread do_wait_any();
flag_wait( "roadkill_school_6" );
respawn_dead_school_window_guys();
trigger = GetEnt( "player_shoot_detection_trigger", "targetname" );
trigger thread player_shoot_detection_trigger();
array_spawn_function_noteworthy( "fleeing_baddie_spawner", ::fleeing_baddie_spawner );
flag_wait( "roadkill_school_9" );
flag_set( "shepherd_moves_out" );
flag_wait( "roadkill_school_13" );
thread roadkill_ending_run_dialogue();
thread school_badguy_cleanup();
}
school_enemies_retreat_dialogue()
{
flag_wait( "retreaters_run" );
wait( 2 );
// Hunter 2-1 this is Shepherd, thanks for the assist! This town's almost ours - let's finish the job, huah?
shepherd_line( "roadkill_shp_thanksforassist" );
// Huah. Roger that 2-3. Rangers lead the way sir!
foley_line( "roadkill_fly_allthewaysir" );
}
roadkill_ending_run_dialogue()
{
if ( flag( "player_rounds_end_corner" ) )
return;
level endon( "player_rounds_end_corner" );
roadkill_school_14 = GetEnt( "roadkill_school_14", "targetname" );
volume = roadkill_school_14 get_color_volume_from_trigger();
volume waittill_volume_dead_or_dying();
wait( 1 );
// All the way! We'll see you on the flipside Hunter 2-1, Shepherd out.
// shepherd_line( "roadkill_shp_alltheway" );
// Hunter 2-1 Actual to Goliath.
foley_line( "roadkill_fly_togoliath" );
// Hunter 2-1 Actual this is Goliath, send traffic.
radio_line( "roadkill_ar3_sendtraffic" );
// Copy Goliath, the school is secure and hostiles are withdrawing from the area. We're just moppin' up now.
foley_line( "roadkill_fly_schoolsecure" );
// Copy that Hunter 2-1 Actual, proceed with caution to the rally point. EPWs may still be in the area. Over.
radio_line( "roadkill_ar3_rallypoint" );
// Roger that Goliath, thanks for the tip. Hunter 2-1 Actual out.
foley_line( "roadkill_fly_thanksfortip" );
// Squad, watch for enemy stragglers! Let's get to that rally point!
foley_line( "roadkill_fly_watchstragglers" );
flag_set( "final_objective" );
}
start_roadkill_end()
{
slide_org = getstruct( "start_player_end", "targetname" );
level.player SetOrigin( slide_org.origin );
level.player SetPlayerAngles( slide_org.angles );
}
start_roadkill_endfight()
{
start = getstruct( "start_player_endfight", "targetname" );
level.player SetOrigin( start.origin );
level.player SetPlayerAngles( start.angles );
ally_starts = getstructarray( "start_ally_endfight", "targetname" );
foley_spawner = GetEnt( "dismount_macey", "script_noteworthy" );
foley_spawner.origin = ally_starts[ 0 ].origin;
dunn_spawner = GetEnt( "dismount_dunn", "script_noteworthy" );
dunn_spawner.origin = ally_starts[ 1 ].origin;
foley_spawner StalingradSpawn();
dunn_spawner StalingradSpawn();
for ( i = 0; i <= 16; i++ )
{
if ( flag_exist( "roadkill_school_" + i ) )
{
flag_set( "roadkill_school_" + i );
}
}
thread friendlies_traverse_school();
//Line( start, end, color, alpha, depthTest, duration );
waittillframeend;
level.foley set_force_color( "b" );
level.dunn set_force_color( "p" );
}
roadkill_the_end()
{
array_spawn_function_targetname( "shepherd_ending_spawner", ::shepherd_ending_spawner );
array_spawn_function_targetname( "ending_hangout_spawner", ::ending_hangout_spawner );
level.ending_vehicles = [];
array_spawn_function_noteworthy( "ending_vehicle", ::ending_vehicle );
array_spawn_function_noteworthy( "shepherd_ending_vehicle", ::shepherd_ending_vehicle );
array_spawn_function_noteworthy( "pistol_walk_spawner", ::roadkill_pistol_guy );
array_spawn_function_noteworthy( "pistol_killer_spawner", ::pistol_killer_spawner );
run_thread_on_targetname( "friendlies_get_on_exit_convoy_trigger", ::friendlies_get_on_exit_convoy_trigger );
flag_wait( "roadkill_school_20" );
//link_heli_to_landing();
level.heli_guy_left = [];
level.heli_guy_right = [];
array_spawn_function_noteworthy( "heli_spawner_left", ::heli_spawner_left );
array_spawn_noteworthy( "heli_spawner_left" );
array_spawn_function_noteworthy( "heli_spawner_right", ::heli_spawner_right );
array_spawn_noteworthy( "heli_spawner_right" );
array_spawn_function_targetname( "ending_takeoff_heli_spawner", ::ending_takeoff_heli_spawner );
array_spawn_targetname( "ending_takeoff_heli_spawner" );
flag_wait( "pistol_runner_died" );
activate_trigger_with_targetname( "final_friendly_trigger" );
// Clear! That's the last of 'em!
if ( IsAlive( level.pistol_killer ) )
level.pistol_killer thread generic_dialogue_queue( "roadkill_fly_lastofem" );
flag_wait( "player_rounds_end_corner" );
spawner = GetEnt( "shepherd_ending_spawner", "targetname" );
spawner spawn_ai();
array_spawn_targetname( "ending_hangout_spawner" );
flag_wait( "approaching_end" );
spawner = GetEnt( "stryker_blocker_spawner", "targetname" );
spawner spawn_vehicle();
//thread roadkill_ending_chatter();
thread ending_fadeout_nextmission();
flag_wait( "the_end" );
ai = get_force_color_guys( "allies", "c" );
foreach ( guy in ai )
{
if ( IsDefined( guy.magic_bullet_shield ) )
{
guy stop_magic_bullet_shield();
}
guy Delete();
}
//jet_time = 2;
//delayThread( jet_time, ::spawn_vehicle_from_targetname_and_drive, "ending_f15_flyby" );
//delayThread( jet_time + 3.1, ::exploder, "end_bomb" );
axis = GetAIArray( "axis" );
foreach ( guy in axis )
{
guy Kill();
}
array_spawn_function_targetname( "friendly_ending_runner_spawner", ::friendly_ending_runner_spawner );
array_spawn_targetname( "friendly_ending_runner_spawner" );
//iprintlnbold( "End of scripted level" );
}
roadkill_ending_chatter()
{
// We're oscar mike!
thread random_ai_line( "roadkill_ar2_oscarmike2" );
wait( 1.2 );
// Stow your gear and move out!
thread random_ai_line( "roadkill_ar3_stowyourgear" );
wait( 0.7 );
flag_wait( "the_end" );
// I want that Mark 19 up and running in five mikes!
thread random_ai_line( "roadkill_ar4_upandrunning" );
wait( 2.1 );
// Anybody got a spare MRE?
thread random_ai_line( "roadkill_ar1_sparemre" );
wait( 0.3 );
// Battalion is oscar mike!!!
thread random_ai_line( "roadkill_ar4_oscarmike" );
wait( 0.4 );
// Mount up!
thread random_ai_line( "roadkill_fly_mountup" );
wait( 1.2 );
// We're moving out now!
thread random_ai_line( "roadkill_fly_movingout" );
}
roadkill_startpoint_catchup_thread()
{
waittillframeend;// let the actual start functions run before this one
start = level.start_point;
if ( start == "intro" )
return;
if ( start == "riverbank" )
return;
if ( start == "move_out" )
return;
flag_set( "bridgelayer_crosses" );
flag_set( "riverbank_baddies_retreat" );
flag_set( "leaving_riverbank" );
flag_set( "player_enters_riverbank" );
flag_set( "bridge_baddies_retreat" );
// player_stair_blocker = GetEnt( "player_stair_blocker", "targetname" );
// player_stair_blocker Delete();
battlechatter_off( "allies" );
if ( start == "convoy" )
return;
battlechatter_off( "axis" );
flag_set( "player_gets_in" );
flag_set( "roadkill_town_dialogue" );
flag_set( "100ton_bomb_goes_off" );
if ( start == "ride" )
return;
flag_set( "fight_back" );
// flag_set( "ambush_spawner_angry" );
if ( start == "ambush" )
return;
flag_set( "detour_convoy_slows_down" );
flag_set( "ambush_spawn" );
flag_set( "ambush" );
if ( start == "ride_later" )
return;
if ( start == "ride_end" )
return;
set_player_attacker_accuracy( 0.0 );
level.player.IgnoreRandomBulletDamage = true;
thread player_becomes_normal_gameskill();
if ( start == "dismount" )
return;
battlechatter_on( "allies" );
flag_set( "player_enters_ambush_house" );
flag_set( "player_is_dismounted" );
if ( start == "school" )
return;
flag_set( "final_objective" );
flag_set( "roadkill_school_20" );
flag_set( "school_back_baddies_dead" );
if ( start == "endfight" )
return;
if ( start == "end" )
return;
AssertMsg( "Unhandled start point " + start );
}
roadkill_objective_thread()
{
switch ( level.start_point )
{
case "default":
case "intro":
case "riverbank":
case "move_out":
case "convoy":
roadkill_riverbank_objective();
case "ride":
case "ride_later":
case "ride_end":
case "ambush":
roadkill_ride_objective();
case "dismount":
roadkill_dismount_objective();
roadkill_school_objective();
case "school":
case "endfight":
case "end":
roadkill_exfil_objective();
break;
default:
AssertMsg( "Unhandled start point " + level.start_point );
break;
}
}
roadkill_music()
{
switch ( level.start_point )
{
case "default":
case "intro":
flag_wait( "get_on_the_line" );
case "riverbank":
case "move_out":
case "convoy":
MusicPlayWrapper( "roadkill_intro" );
flag_wait( "player_starts_stairs" );
MusicStop( 10 );
flag_wait( "player_gets_in" );
case "ride":
case "ride_later":
case "ride_end":
case "ambush":
case "dismount":
case "school":
case "endfight":
thread MusicLoop( "roadkill_armored_and_combat" ); // 8 minutes 24 seconds
case "end":
flag_wait( "start_shepherd_end" );
level notify( "stop_music" );
MusicStop( 5 );
level.player play_sound_on_entity( "roadkill_finish" );
break;
default:
AssertMsg( "Unhandled start point " + level.start_point );
break;
}
}