572 lines
29 KiB
Plaintext
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 ) );
|
|
}
|