boiii-scripts/mp/mp_city.gsc
2023-04-13 17:30:38 +02:00

572 lines
29 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\util_shared;
#using scripts\shared\compass;
#using scripts\shared\exploder_shared;
#using scripts\shared\scene_shared;
#using scripts\shared\flag_shared;
#using scripts\shared\array_shared;
#using scripts\shared\clientfield_shared;
#using scripts\mp\_load;
#using scripts\mp\_util;
#using scripts\mp\mp_city_fx;
#using scripts\mp\mp_city_sound;
#using scripts\mp\_vehicle;
#using scripts\mp\vehicles\_quadtank;
#using scripts\mp\vehicles\_siegebot;
#using scripts\mp\vehicles\_siegebot_theia;
//Wait time between start and the init going
//Wait time between init playing and main playing
// values grabbed from mp_city on 2016-08-29
#precache( "fx", "vehicle/fx_siegebot_spawn_teleport" );
#precache( "fx", "vehicle/fx_siegebot_spawn_teleport_light_green" );
#precache( "fx", "vehicle/fx_siegebot_spawn_teleport_light_yellow" );
#precache( "fx", "vehicle/fx_siegebot_spawn_teleport_light_red" );
#precache( "model", "collision_clip_128x128x128" );
#precache( "model", "collision_clip_wall_128x128x10" );
#precache( "model", "collision_clip_64x64x256" );
#precache( "model", "collision_physics_32x32x32" );
#precache( "model", "collision_physics_64x64x64" );
#precache( "model", "collision_physics_128x128x128" );
#precache( "model", "collision_clip_wall_64x64x10" );
#precache( "model", "p7_out_modular_ac_unit_01" );
#precache( "model", "p7_ntx_dom_cover_crates" );
function main()
{
clientfield::register( "scriptmover", "ring_state", 15000, 2, "int" );
// fix for siegebot pushing players through geo
push_out_threshold = GetDvarFloat( "tu16_physicsPushOutThreshold", -1.0 );
if ( push_out_threshold != -1.0 )
SetDvar( "tu16_physicsPushOutThreshold", 10.0 );
precache();
level.vehicle_about_to_spawn = &vehicle_about_to_spawn;
level.vehicle_spawner_init = &vehicle_spawner_init;
level.vehicle_destroyed = &vehicle_destroyed;
level.vehicle_spawners_init_finished = &vehicle_spawners_init_finished;
level.allow_vehicle_challenge_check = true;
setup_vehicle_spawner_mesh_info();
level flag::init( "city_vortex_sequence_playing" );
mp_city_fx::main();
mp_city_sound::main();
load::main();
compass::setupMiniMap( "compass_map_mp_city" );
SetDvar( "compassmaxrange", "2100" ); // Set up the default range of the compass
// Spawn ac unit models and collision on science bldg 01 to block walker
// block1 = spawn("script_model",( -2870 , -2600 , -1792 ));
// block1.angles = ( 270 , 270 , -90 );
// block1 SetModel("p7_out_modular_ac_unit_01");
// block2 = spawn("script_model",( -2924 , -2495 , -1792 ));
// block2.angles = ( 270 , 90 , 0 );
// block2 SetModel("p7_out_modular_ac_unit_01");
// block3 = spawn("script_model",( -2957 , -2600 , -1792 ));
// block3.angles = ( 270 , 270 , -90 );
// block3 SetModel("p7_out_modular_ac_unit_01");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1746 ), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -2892 , -2560 , -1728 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1618 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1490 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1362 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1234 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -1106 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -978 ), ( 0, 0, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2892 , -2560 , -850 ), ( 0, 0, 0 ));
// Spawn ac unit models and collision on science bldg 04 to block walker
// block1 = spawn("script_model",( -2510 , -1935 , -1765 ));
// block1.angles = ( 270 , 270 , 60 );
// block1 SetModel("p7_out_modular_ac_unit_01");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1719 ), ( 0, 240, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -2581 , -1931 , -1701 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1591 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1463 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1335 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1207 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -1079 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -951 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2581 , -1931 , -823 ), ( 0, 240, 0 ));
// block1 = spawn("script_model",( -2209 , -1477 , -1733 ));
// block1.angles = ( 270 , 90 , -30 );
// block1 SetModel("p7_out_modular_ac_unit_01");
// block2 = spawn("script_model",( -2092 , -1484 , -1733 ));
// block2.angles = ( 270 , 270 , 60 );
// block2 SetModel("p7_out_modular_ac_unit_01");
// block3 = spawn("script_model",( -2167 , -1404 , -1733 ));
// block3.angles = ( 270 , 90 , -30 );
// block3 SetModel("p7_out_modular_ac_unit_01");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1687 ), ( 0, 240, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -2164 , -1479 , -1669 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1559 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1431 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1303 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1175 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -1047 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -919 ), ( 0, 240, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2164 , -1479 , -791 ), ( 0, 240, 0 ));
// block1 = spawn("script_model",( -2702 , -966 , -1765 ));
// block1.angles = ( 270 , 90 , 60 );
// block1 SetModel("p7_out_modular_ac_unit_01");
// block2 = spawn("script_model",( -2695 , -849 , -1765 ));
// block2.angles = ( 270 , 90 , -30 );
// block2 SetModel("p7_out_modular_ac_unit_01");
// block3 = spawn("script_model",( -2775 , -924 , -1765 ));
// block3.angles = ( 270 , 90 , 60 );
// block3 SetModel("p7_out_modular_ac_unit_01");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1719 ), ( 0, 330, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -2692 , -907 , -1701 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1591 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1463 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1335 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1207 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -1079 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -951 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2692 , -907 , -823 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1719 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1591 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1463 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1335 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1207 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -1079 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -951 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2796 , -847 , -823 ), ( 0, 330, 0 ));
// block1 = spawn("script_model",( -2910 , -846 , -1765 ));
// block1.angles = ( 270 , 90 , 60 );
// block1 SetModel("p7_out_modular_ac_unit_01");
// block2 = spawn("script_model",( -2903 , -729 , -1765 ));
// block2.angles = ( 270 , 90 , -30 );
// block2 SetModel("p7_out_modular_ac_unit_01");
// block3 = spawn("script_model",( -2983 , -804 , -1765 ));
// block3.angles = ( 270 , 90 , 60 );
// block3 SetModel("p7_out_modular_ac_unit_01");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1719 ), ( 0, 330, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -2900 , -787 , -1701 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1591 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1463 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1335 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1207 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -1079 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -951 ), ( 0, 330, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -2900 , -787 , -823 ), ( 0, 330, 0 ));
// block1 = spawn("script_model",( -3240 , -1011 , -1750 ));
// block1.angles = ( 0 , 330 , 180 );
// block1 SetModel("p7_ntx_dom_cover_crates");
// block2 = spawn("script_model",( -3286 , -1091 , -1750 ));
// block2.angles = ( 0 , 330 , 180 );
// block2 SetModel("p7_ntx_dom_cover_crates");
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1740 ), ( 0, 60, 0 ));
// SpawnCollision("collision_physics_128x128x128", "collider", ( -3209 , -1070 , -1720 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1612 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1484 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1356 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1228 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -1100 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -972 ), ( 0, 60, 0 ));
// SpawnCollision("collision_clip_128x128x128", "collider", ( -3209 , -1070 , -844 ), ( 0, 60, 0 ));
// Missing Phys Clip on crates on Blue building 04
// SpawnCollision("collision_physics_32x32x32", "collider", ( -1936 , 1286 , -1508), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_32x32x32", "collider", ( -1968 , 1286 , -1508), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_32x32x32", "collider", ( -1970 , 1058 , -1508), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_32x32x32", "collider", ( -1938 , 1058 , -1508), ( 0, 0, 0 ));
// Missing Phys Clip on rotating canisters in Monorail Station3
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -670 , -1546), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -720 , -1546), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -670 , -1504), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -720 , -1504), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -464 , -1546), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -424 , -1546), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -464 , -1504), ( 0, 0, 0 ));
// SpawnCollision("collision_physics_64x64x64", "collider", ( 230 , -424 , -1504), ( 0, 0, 0 ));
// Spawning clip near science building crates DT 181677
// SpawnCollision("collision_clip_wall_128x128x10", "collider", ( -2716.5 , -1138.5 , -1828.5), ( 0, 329, 0 ));
// SpawnCollision("collision_clip_wall_128x128x10", "collider", ( -2716.5 , -1138.5 , -1703), ( 0, 329, 0 ));
// Spawning clip beside monorail3 window to prevent clipping through geo (DT 181678)
// SpawnCollision("collision_clip_wall_64x64x10", "collider", ( 722 , -386.5 , -1591.5 ), ( 0, 270, 0 ));
// SpawnCollision("collision_clip_wall_64x64x10", "collider", ( 722 , -386.5 , -1532 ), ( 0, 270, 0 ));
// SpawnCollision("collision_clip_wall_64x64x10", "collider", ( 722 , -386.5 , -1491 ), ( 0, 270, 0 ));
// DT #181782 Spawning clip to prevent mantle bug into model geo
// SpawnCollision("collision_clip_wall_128x128x10", "collider", ( -1980 , 334 , -1704 ), ( 0, 90, 0 ));
// SpawnCollision("collision_clip_wall_128x128x10", "collider", ( -1986 , 334 , -1704 ), ( 0, 90, 0 ));
// DT #181756 Spawning clip on monorail3 outer wall to prevent mantle bug into wall geo
// SpawnCollision("collision_clip_64x64x256", "collider", ( 192 , -744 , -1352 ), ( 0, 0, 0 ));
// Spawning clip on monorail3 inner wall to prevent exploitable spot
// SpawnCollision("collision_clip_wall_128x128x10", "collider", ( 100 , -733 , -1288 ), ( 0, 270, 0 ));
// Stockpile hub points
level.cleanDepositPoints = Array ( ( -137.668 , 68.4889 , -1567.88 ),
( 1252.24 , -1316.22 , -1688.46 ),
( 1150.05 , 2627.64 , -1311.88 ),
( -1944.21 , -742.548 , -1767.88 ) );
vehicle::InitVehicleMap();
level city_vortex_init();
level thread city_vortex_think();
}
function precache()
{
// DO ALL PRECACHING HERE
}
function setup_vehicle_spawner_mesh_info()
{
level.teleport_pad_meshes = [];
for ( i = 0; i < 4; i++ )
level.teleport_pad_meshes[i] = SpawnStruct();
level.teleport_pad_meshes[0].origin = ( -2468.5 , -2125.5 , -1901 );
level.teleport_pad_meshes[0].angles = ( 359.4 , 309.5 , 3.5 );
level.teleport_pad_meshes[1].origin = ( -582 , -2689 , -1580 );
level.teleport_pad_meshes[1].angles = ( 0 , 0 , 0 );
level.teleport_pad_meshes[2].origin = ( 3043.14 , 713.521 , -1393.5 );
level.teleport_pad_meshes[2].angles = ( 0 , 270 , 0 );
level.teleport_pad_meshes[3].origin = ( 1129 , 3182 , -1310 );
level.teleport_pad_meshes[3].angles = ( 0 , 0 , 0 );
}
function find_teleport_mesh_index( origin )
{
for ( i = 0; i < 4; i++ )
{
if ( DistanceSquared( origin, level.teleport_pad_meshes[ i ].origin ) < ( (24) * (24) ) )
return i;
}
return 0; // failsafe but bad
}
function city_vortex_init()
{
scene::add_scene_func( "p7_fxanim_mp_city_vista_energy_ball_bundle", &city_vortex_advancer, "done" );
level thread city_vortex_init_rings();
/#
mapname = GetDvarString( "mapname" );
AddDebugCommand( "devgui_cmd \"|" + mapname + "|/Debug Vortex Sequence/Start Sequence\" \"set level_notify city_vortex_sequence_start \"\n" );
AddDebugCommand( "devgui_cmd \"|" + mapname + "|/Debug Vortex Sequence/Reset Sequence\" \"set level_notify city_vortex_sequence_reset \"\n" );
#/
}
function set_all_ring_state( state )
{
foreach( ring in level.ringArray )
{
ring clientfield::set( "ring_state", state );
}
}
function set_specific_ring_state( ringIndex, state )
{
ringStringIndex = "" + ringIndex;
rings = level.rings[ ringStringIndex ];
foreach( ring in rings )
{
ring clientfield::set( "ring_state", state );
}
}
function city_vortex_init_rings()
{
level.ringArray = GetEntArray( "city_ring", "targetname" );
level.rings = [];
level.rings[ "1" ] = [];
level.rings[ "2" ] = [];
level.rings[ "3" ] = [];
level.rings[ "4" ] = [];
for( i = 0; i < level.ringArray.size; i++ )
{
index = level.ringArray[i].script_noteworthy;
level.rings[ index ][ level.rings[ index ].size ] = level.ringArray[i];
}
set_all_ring_state( 3 );
}
function city_vortex_think()
{
level thread city_vortex_launcher();
level city_rings_watchers();
level thread city_vortex_start();
level thread city_vortex_reset();
}
function city_vortex_launcher()
{
played = 0;
while( played < 2 )
{
waittime = RandomIntRange( 120, 360 );
wait( waittime );
played++;
level notify( "city_vortex_sequence_start" );
}
}
function city_vortex_start()
{
level scene::init( "p7_fxanim_mp_city_vista_energy_ball_bundle" );
level endon ( "city_vortex_sequence_reset" );
for ( ;; )
{
level waittill( "city_vortex_sequence_start" );
level flag::set( "city_vortex_sequence_playing" );
level thread scene::play( "p7_fxanim_mp_city_vista_energy_ball_bundle" );
level array::thread_all( level.a_e_pa_speakers_all, &mp_city_sound::play_alarm_sfx );
}
}
function city_rings_watchers()
{
level thread watch_ramp();
level thread watch_on();
level thread watch_flicker();
level thread watch_off();
}
function watch_ramp()
{
for( ;; )
{
level waittill ( "ring_ramp" );
set_specific_ring_state( 1, 0 );
wait( 1 );
set_specific_ring_state( 2, 0 );
wait( 1 );
set_specific_ring_state( 3, 0 );
wait( 1 );
set_specific_ring_state( 4, 0 );
}
}
function watch_on()
{
for( ;; )
{
level waittill ( "ring_on" );
set_all_ring_state( 1 );
}
}
function watch_flicker()
{
for( ;; )
{
level waittill ( "ring_flicker" );
set_all_ring_state( 2 );
}
}
function watch_off()
{
for( ;; )
{
level waittill ( "ring_off" );
set_all_ring_state( 3 );
}
}
function city_vortex_advancer( ents )
{
level thread scene::init( "p7_fxanim_mp_city_vista_energy_ball_bundle" );
}
function city_vortex_reset()
{
for ( ;; )
{
level waittill( "city_vortex_sequence_reset" );
level flag::clear( "city_vortex_sequence_playing" );
level thread city_vortex_start();
set_all_ring_state( 3 );
}
}
function vehicle_spawner_init( veh_spawner_id, veh_name, origin, angles )
{
if(!isdefined(level.map_vehicle_spawners))level.map_vehicle_spawners=[];
mesh_index = find_teleport_mesh_index( origin );
mesh_origin = level.teleport_pad_meshes[ mesh_index ].origin;
mesh_angles = level.teleport_pad_meshes[ mesh_index ].angles;
forward = AnglesToForward( mesh_angles );
up = AnglesToUp( mesh_angles );
fx_spawner_info = SpawnStruct();
// fx_spawner_info.fx_green = SpawnFx( SPAWNER_GREEN_FX, mesh_origin, forward, up );
fx_spawner_info.fx_yellow = SpawnFx( "vehicle/fx_siegebot_spawn_teleport_light_yellow", mesh_origin, forward, up );
fx_spawner_info.fx_red = SpawnFx( "vehicle/fx_siegebot_spawn_teleport_light_red", mesh_origin, forward, up );
level.map_vehicle_spawners[ veh_spawner_id ] = fx_spawner_info;
level thread trigger_spawner_fx( veh_spawner_id, 1.0 );
}
function vehicle_spawners_init_finished()
{
// free up some script vars no longer needed
wait 5.0;
level.teleport_pad_meshes = [];
level.vehicle_spawner_init = [];
wait 1.0;
}
function trigger_spawner_fx( veh_spawner_id, delay )
{
wait delay;
// triggerfx( level.map_vehicle_spawners[ veh_spawner_id ].fx_green );
triggerfx( level.map_vehicle_spawners[ veh_spawner_id ].fx_yellow );
triggerfx( level.map_vehicle_spawners[ veh_spawner_id ].fx_red );
wait 0.1;
level.map_vehicle_spawners[ veh_spawner_id ].fx_yellow Hide();
level.map_vehicle_spawners[ veh_spawner_id ].fx_red Hide();
}
function vehicle_about_to_spawn( veh_spawner_id, veh_name, origin, angles, time_before_spawn )
{
PlayFx( "vehicle/fx_siegebot_spawn_teleport", origin, AnglesToForward( angles ), AnglesToUp( angles ) );
level.map_vehicle_spawners[ veh_spawner_id ].fx_red Hide();
level thread vehicle_spawn_sequence( veh_spawner_id, veh_name, origin, angles, time_before_spawn );
}
function vehicle_spawn_sequence( veh_spawner_id, veh_name, origin, angles, time_before_spawn )
{
remaining_time = float( time_before_spawn );
yellow_fx = level.map_vehicle_spawners[ veh_spawner_id ].fx_yellow;
while ( remaining_time >= 0.2 )
{
PlaySoundAtPosition( "evt_siegepad_yellow", level.map_vehicle_spawners[ veh_spawner_id ].fx_yellow.origin + ( 0, 0, 10 ) );
yellow_fx Show();
flash_wait = Max( remaining_time / 20.0, Min( 0.1, remaining_time ) );
wait flash_wait;
yellow_fx Hide();
wait 0.1;
remaining_time -= ( flash_wait + 0.1 );
}
if ( remaining_time > 0.0 )
wait remaining_time;
level.map_vehicle_spawners[ veh_spawner_id ].fx_yellow Hide();
// level.map_vehicle_spawners[ veh_spawner_id ].fx_green Show();
PlaySoundAtPosition( "evt_siegepad_green", origin + ( 0, 0, 10 ) );
}
function vehicle_destroyed( veh_spawner_id )
{
level.map_vehicle_spawners[ veh_spawner_id ].fx_red Show();
// level.map_vehicle_spawners[ veh_spawner_id ].fx_green Hide();
PlaySoundAtPosition( "evt_siegepad_red", level.map_vehicle_spawners[ veh_spawner_id ].fx_red.origin + ( 0, 0, 10 ) );
}