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

108 lines
10 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\_oob;
#using scripts\shared\compass;
#using scripts\shared\util_shared;
#using scripts\mp\_load;
#using scripts\mp\_util;
#using scripts\mp\mp_sector_fx;
#using scripts\mp\mp_sector_sound;
#precache( "model", "p7_boots_safehouse_01" ); #precache( "model", "p7_foliage_cactus_barrel_round_flower_ph" ); #precache( "model", "p7_foliage_bamboo_planter_cluster_sway" ); #precache( "model", "p7_pottery_terracotta_d_orange_soil" ); #precache( "model", "p7_consumer_grade_pc_tower" ); #precache( "model", "p7_light_fixture_led_wall_01" ); #precache( "model", "p7_bio_scanner_01_ph" ); #precache( "model", "p7_wheel_barrow_street_vendor" ); #precache( "model", "p7_cai_monitor_wall_large" ); #precache( "model", "p7_luggage_hardshell_handle_up_white" ); #precache( "model", "p7_tank_nitrogen_metal_grey" ); #precache( "model", "p7_crate_plastic_tech_01" ); #precache( "model", "p7_crate_plastic_tech_02" ); #precache( "model", "p7_barrel_plastic_green" ); #precache( "model", "p7_water_container_plastic_large_level_04" ); #precache( "model", "p7_trashcan_metal_modern_glass" ); #precache( "model", "p7_barricade_concrete_modular_01" ); #precache( "model", "p7_recliner_leather" ); #precache( "model", "p7_couch_cloth_modern_01" ); #precache( "model", "p7_foliage_palm_doum_set_medium_sway_ph" ); #precache( "model", "p7_door_metal_industrial_02_left_white" ); #precache( "model", "p7_cai_rock_park_02" ); #precache( "model", "p7_foliage_tree_albizia_tall_full_sway_ph" );
#precache( "model", "collision_clip_wall_128x128x10" );
function main()
{
precache();
trigger = spawn( "trigger_radius_out_of_bounds", ( 687.5 , 2679 , -356.5 ), 0, 300, 400 );
trigger thread oob::run_oob_trigger();
mp_sector_fx::main();
mp_sector_sound::main();
level.add_raps_omit_locations = &add_raps_omit_locations;
level.add_raps_drop_locations = &add_raps_drop_locations;
level.remotemissile_kill_z = -680;
load::main();
SetDvar( "compassmaxrange", "2100" ); // Set up the default range of the compass
compass::setupMiniMap("compass_map_mp_sector");
link_traversals( "under_bridge", "targetname", true );
//Spawning clip on roof near wall run side to prevent players from sitting on roof and shooting over middle bridge
spawncollision("collision_clip_wall_128x128x10","collider",( 597.185 , -523.817 , 584.206 ), ( -5 , 90 , 0));
level spawnKillTrigger();
// Stockpile hub points
level.cleanDepositPoints = Array ( ( -1.72432 , 176.047 , 172.125 ),
( 715.139 , 1279.47 , 158.417 ),
( -825.34 , 171.066 , 106.517 ),
( -108.124 , -751.785 , 154.839 ) );
}
function link_traversals( str_value, str_key, b_enable )
{
a_nodes = GetNodeArray( str_value, str_key );
foreach ( node in a_nodes )
{
if ( b_enable )
{
LinkTraversal( node );
}
else
{
UnlinkTraversal( node );
}
}
}
function precache()
{
// DO ALL PRECACHING HERE
}
function add_raps_omit_locations( &omit_locations )
{
if ( !isdefined( omit_locations ) ) omit_locations = []; else if ( !IsArray( omit_locations ) ) omit_locations = array( omit_locations ); omit_locations[omit_locations.size]=( 32, 710, 189 );; // omitting any points near west side of center bridge; there is a bad physics triangle blocking raps
if ( !isdefined( omit_locations ) ) omit_locations = []; else if ( !IsArray( omit_locations ) ) omit_locations = array( omit_locations ); omit_locations[omit_locations.size]=( -960, 1020, 168 );; // omitting auto generated point near the entrance near "ZONE 2" sign, adding a better one below
}
function add_raps_drop_locations( &drop_candidate_array )
{
if ( !isdefined( drop_candidate_array ) ) drop_candidate_array = []; else if ( !IsArray( drop_candidate_array ) ) drop_candidate_array = array( drop_candidate_array ); drop_candidate_array[drop_candidate_array.size]=( -1100, 860, 145 );; // near big "ZONE 2" sign, by a green top machine
if ( !isdefined( drop_candidate_array ) ) drop_candidate_array = []; else if ( !IsArray( drop_candidate_array ) ) drop_candidate_array = array( drop_candidate_array ); drop_candidate_array[drop_candidate_array.size]=( 0, 520, 163 );; // west of the center bridge
}
function spawnKillTrigger()
{
trigger = spawn( "trigger_radius", ( -480.116 , 3217.5 , 119.108 ), 0, 150, 200 );
trigger thread watchKillTrigger();
trigger = spawn( "trigger_radius", ( -480.115 , 3309.66 , 119.108 ), 0, 150, 200 );
trigger thread watchKillTrigger();
}
function watchKillTrigger()
{
level endon( "game_ended" );
trigger = self;
while(1)
{
trigger waittill( "trigger", player );
player DoDamage(1000, trigger.origin + (0, 0, 0), trigger, trigger, "none", "MOD_SUICIDE", 0 );
}
}