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

183 lines
16 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\compass;
#using scripts\shared\util_shared;
#using scripts\shared\_oob;
#using scripts\mp\_load;
#using scripts\mp\_util;
#using scripts\mp\gametypes\_ball_utils;
#using scripts\mp\mp_banzai_fx;
#using scripts\mp\mp_banzai_sound;
#precache( "model", "collision_physics_wall_512x512x10" );
#precache( "model", "collision_physics_wall_64x64x10" );
#precache( "model", "collision_clip_wall_64x64x10" );
#precache( "model", "collision_clip_wall_128x128x10" );
#precache( "model", "p7_dock_wooden_post_256_dmg" );
#precache( "model", "collision_clip_cylinder_32x128" );
#precache( "model", "collision_clip_cylinder_32x128" );
#precache( "model", "p7_ban_rock_cluster_01" );
#precache( "model", "collision_physics_64x64x64" );
#precache( "model", "collision_clip_256x256x256" );
#precache( "model", "collision_physics_64x64x64" );
#precache( "model", "p7_dock_wood_rustic_board_single_wide" );
#precache( "model", "collision_clip_wall_32x32x10" );
#precache( "model", "collision_clip_ramp_64x24" );
function main()
{
precache();
level.update_escort_robot_path = &update_escort_robot_path;
// Spawn a radius trigger to disable the capturing of a Hardpoint outside of kitchen
level.levelkothDisable = [];
//level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", position, 0, radius, height );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -1045.5 , -389 ), 0, 100, 350 );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -910 , -389 ), 0, 100, 350 );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -780.5 , -389 ), 0, 100, 350 );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -453 , -389 ), 0, 100, 350 );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -317.5 , -389 ), 0, 100, 350 );
level.levelkothDisable[ level.levelkothDisable.size ] = Spawn( "trigger_radius", ( 1363 , -188 , -389 ), 0, 100, 350 );
//trigger = spawn( "trigger_radius_out_of_bounds", (3895.81 , -1026.7 , -392.451), 0, 100, 200 );
//trigger thread oob::run_oob_trigger();
trigger = spawn( "trigger_radius_out_of_bounds", (211 , -4924 , -210.5), 0, 1000, 400 );
trigger thread oob::run_oob_trigger();
trigger = spawn( "trigger_radius_out_of_bounds", (1308 , -4924 , -210.5), 0, 1000, 400 );
trigger thread oob::run_oob_trigger();
mp_banzai_fx::main();
mp_banzai_sound::main();
load::main();
compass::setupMiniMap("compass_map_mp_banzai");
SetDvar( "compassmaxrange", "2100" ); // Set up the default range of the compass
//Spawning phys clip over water outside of playspace
spawncollision("collision_physics_wall_512x512x10","collider",( -593 , -641 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -904 , -1065 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -1097 , -553 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -1601.5 , -485 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -1610.5 , -972 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -1414 , -1065 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -2062.5 , -1315 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -2062.5 , -811 , -538 ), ( 270 , 0 , 0 ));
spawncollision("collision_physics_wall_512x512x10","collider",( -2060.5 , -313 , -538 ), ( 270 , 0 , 0 ));
//Spawning clip on boat tailgate
//spawncollision("collision_clip_wall_64x64x10","collider",( 831 , -744 , -533 ), ( 0 , 344 , 0 ));
//spawncollision("collision_clip_wall_64x64x10","collider",( 836 , -725 , -533 ), ( 0 , 344 , 0 ));
//spawncollision("collision_physics_wall_64x64x10","collider",( 831 , -744 , -533 ), ( 0 , 344 , 0 ));
//spawncollision("collision_physics_wall_64x64x10","collider",( 836 , -725 , -533 ), ( 0 , 344 , 0 ));
// Spawn log near street side graffiti building for umbra dt 164076
//log1 = spawn("script_model",( 2232.5 , -2894.04 , -366.721 ));
//log1.angles = ( 360 , 283 , -1);
//log1 SetModel("p7_dock_wooden_post_256_dmg");
//log2 = spawn("script_model",( 2185.04 , -2743.34 , -267.69 ));
//log2.angles = ( 272 , 64 , 41 );
//log2 SetModel("p7_dock_wood_rustic_board_single_wide");
//cylinder over above log
//spawncollision("collision_clip_cylinder_32x128","collider",( 2242.5 , -2890 , -265 ), ( 5 , 0 , 0 ));
//spawncollision("collision_clip_cylinder_32x128","collider",( 2188.5 , -2734 , -265.5 ), ( 5 , 0 , 0 ));
//spawncollision("collision_clip_wall_64x64x10","collider",( 2234 , -2887.5 , -197.5 ), ( 18 , 14 , 0 ));
//spawncollision("collision_clip_wall_64x64x10","collider",( 2190.5 , -2739 , -179 ), ( 18 , 14 , 0 ));
//Spawning above bridge overwatch boat side dt 163736
spawncollision("collision_clip_wall_128x128x10","collider",( 903 , -563.5 , -89.5 ), ( 18 , 360 , 0 ));
spawncollision("collision_clip_wall_128x128x10","collider",( 902.5 , -685 , -89.5 ), ( 18 , 360 , 0 ));
//Spawning above bridge over B DOM
spawncollision("collision_clip_wall_128x128x10","collider",( 1301.5 , -688 , -68.5152 ), ( 21 , 180 , 0 ));
spawncollision("collision_clip_wall_128x128x10","collider",( 1302 , -561.5 , -68.4848 ), ( 21 , 180 , 0 ));
spawncollision("collision_clip_wall_128x128x10","collider",( 1270 , -530 , -10.0151 ), ( 17 , 359 , 0 ));
//Spawning phys clip over water outside of playspace
spawncollision("collision_physics_128x128x128","collider",( 2279.5 , -493 , -102.5 ), ( 341 , 21 , -1 ));
spawncollision("collision_physics_128x128x128","collider",( 2389 , -450.5 , -73 ), ( 341.999 , 21 , -1 ));
spawncollision("collision_physics_128x128x128","collider",( 2492 , -410.5 , -50 ), ( 353.899 , 21 , -4 ));
spawncollision("collision_physics_128x128x128","collider",( 2605.5 , -366 , -38.5 ), ( 357 , 21 , 6 ));
spawncollision("collision_physics_128x128x128","collider",( 2723 , -320 , -32.5 ), ( 357 , 21 , 6 ));
spawncollision("collision_physics_128x128x128","collider",( 2292.5 , -357 , -98 ), ( 0 , 10 , 0 ));
spawncollision("collision_physics_128x128x128","collider",( 2407.5 , -368 , -98 ), ( 0 , 360 , 0 ));
spawncollision("collision_physics_128x128x128","collider",( 2516.5 , -368 , -98 ), ( 0 , 360 , 0 ));
//Spawning clip under bridge to prevent umbra issue dt 164062
//spawncollision("collision_clip_wall_128x128x10","collider",( 992.5 , -330.5 , -410.5 ), ( 58 , 270 , 0 ));
//spawncollision("collision_clip_wall_128x128x10","collider",( 1113.5 , -330.5 , -410.5 ), ( 58 , 270 , 0 ));
//spawncollision("collision_clip_wall_128x128x10","collider",( 992.5 , -376.004 , -394.456 ), ( 69 , 270 , 0 ));
//spawncollision("collision_clip_wall_128x128x10","collider",( 1113.5 , -375.996 , -394.544 ), ( 69 , 270 , 0 ));
//Spawning clip on street side end of bridge to prevent standing above bridge
//spawncollision("collision_clip_wall_32x32x10","collider",( 1297 , -1666.5 , -10 ), ( 0 , 0 , -17 ));
//Spawning clip in bar to preventing mantling into wall
spawncollision("collision_clip_wall_64x64x10","collider",( 1260.5 , 1724 , -252 ), ( 0 , 270 , 0 ));
spawncollision("collision_clip_wall_64x64x10","collider",( 1260.5 , 1724 , -189.5 ), ( 0 , 270 , 0 ));
spawncollision("collision_clip_wall_64x64x10","collider",( 1260.5 , 1724 , -171.5 ), ( 0 , 270 , 0 ));
//Spawning clip under bridge to prevent umbra issue dt 164062
//spawncollision("collision_clip_ramp_64x24","collider",( 368.831 , -34.1943 , -438.277 ), ( 360 , 155 , -6 ));
//spawncollision("collision_clip_ramp_64x24","collider",( 384.169 , -1.3057 , -434.223 ), ( 360 , 335 , 6 ));
//spawncollision("collision_clip_ramp_64x24","collider",( 1322.64 , -263.606 , -517.114 ), ( 359 , 161 , 0 ));
//spawncollision("collision_clip_ramp_64x24","collider",( 1341.86 , -203.394 , -517.386 ), ( 1 , 341 , 0 ));
// Spawn log near street side graffiti building for umbra dt 164076
log1 = spawn("script_model",( 2309.41 , -550.189 , -592.779 ));
log1.angles = ( 83 , 358 , 1 );
log1 SetModel("p7_ban_rock_cluster_01");
level.add_raps_omit_locations = &add_raps_omit_locations;
level spawnKillTrigger();
// Stockpile hub points
level.cleanDepositPoints = Array ( ( 1345.41 , -628 , -319.875 ),
( 2762.61 , -2015.93 , -251.875 ),
( 2722.25 , -247.549 , -511.875 ),
( 705.101 , 951.137 , -295.875 ) );
}
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]=( 829, -1115, -517 );; // omitting any points near the "librarie" by the ascending ground
if ( !isdefined( omit_locations ) ) omit_locations = []; else if ( !IsArray( omit_locations ) ) omit_locations = array( omit_locations ); omit_locations[omit_locations.size]=( 687, -1457, -459 );; // omitting any points near the stables across from the church by the ascending ground
}
function spawnKillTrigger()
{
trigger = spawn( "trigger_radius", ( 1274.5 , 1676.5 , -277.5 ), 0, 30, 128 );
trigger thread watchKillTrigger();
ball::add_ball_return_trigger( trigger );
}
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 );
}
}
function update_escort_robot_path( &pathArray )
{
ArrayInsert( pathArray, ( 2430.69 , -363.477 , -664.185 ), 13 ); // fixes escort robot chosing to path around the "Vehicle Diagnostics" room if the door is blocked
}