#using scripts\codescripts\struct; #using scripts\mp\gametypes\_spawning; #using scripts\shared\clientfield_shared; #using scripts\shared\compass; #using scripts\shared\exploder_shared; #using scripts\mp\_load; #using scripts\mp\_util; #using scripts\mp\mp_spire_amb; #using scripts\mp\mp_spire_fx; #precache( "model", "p7_street_safety_cone" ); #precache( "model", "p7_cai_cookware_metal_jug" ); #precache( "model", "p7_ammo_can_small" ); #precache( "model", "p7_cai_cookware_metal_steamer" ); #precache( "model", "p7_box_cardboard_d_closed" ); #precache( "model", "p7_vase_clay_egyptian_02_dmg" ); #precache( "model", "p7_cai_trashcan_metal_off" ); #precache( "model", "p7_roof_vent_tall_01_metal_white" ); #precache( "model", "p7_cai_chair_lounge_greek" ); #precache( "model", "p7_surveillance_rack_shell" ); #precache( "model", "p7_rug_cloth_rolled_med_01" ); #precache( "model", "p7_barrel_plastic_blue" ); #precache( "model", "p7_bench_antique" ); #precache( "model", "p7_crate_plastic_tech_01" ); #precache( "model", "p7_trash_bin_single_02_green" ); #precache( "model", "p7_cai_apart_fence_post_tall_dmg_01" ); #precache( "model", "p7_barrel_plastic_crushed_yellow" ); #precache( "model", "p7_cai_apt_window_arch_02_shutter_right" ); #precache( "model", "p7_3d_printer_safehouse_01_harddrive" ); #precache( "model", "p7_spire_hotel_floor_couches_large" ); #precache( "model", "p7_vending_machine_soda" ); #precache( "model", "p7_light_spotlight_generator_02" ); #precache( "model", "p7_door_metal_industrial_02_left_white" ); #precache( "model", "p7_ac_unit_metal_5_ton_ph" ); #precache( "model", "p7_rooftop_hvac_metal_unit_01_ph" ); #precache( "model", "p7_porter_potty" ); #precache( "string", "MPUI_CALLSIGN_MAPNAME_A" ); #precache( "string", "MPUI_CALLSIGN_MAPNAME_B" ); #precache( "string", "MPUI_CALLSIGN_MAPNAME_C" ); #precache( "string", "MPUI_CALLSIGN_MAPNAME_D" ); #precache( "string", "MPUI_CALLSIGN_MAPNAME_E" ); #precache( "model", "collision_clip_ramp_64x24" ); #precache( "model", "collision_clip_wall_128x128x10" ); #precache( "model", "collision_clip_wall_256x256x10" ); #precache( "model", "collision_clip_wall_32x32x10" ); #precache( "model", "collision_clip_wall_64x64x10" ); function main() { clientfield::register( "world", "mpSpireExteriorBillboard", 1, 2, "int" ); //needs to be first for create fx mp_spire_fx::main(); level.add_raps_omit_locations = &add_raps_omit_locations; load::main(); //compass map function, uncomment when adding the minimap compass::setupMiniMap("compass_map_mp_spire"); //Spawning ramped clip at doorway of coalescence offices to prevent getting hung on unsmoothed clip spawncollision("collision_clip_ramp_64x24","collider",( 4168.34 , 708.791 , -12.0068 ), ( 0, 0, 0)); spawncollision("collision_clip_ramp_64x24","collider",( 4105.71 , 708.791 , -12.0068 ), ( 0 , 0 , 0)); //Spawning clip on palace billboard spawncollision("collision_clip_wall_256x256x10","collider",( 2424.57 , -1527.01 , 263.799 ), ( 2, 0, 0)); //Spawning clip railing facing glass wallrun spawncollision("collision_clip_wall_64x64x10","collider",( 2970.36 , -1757.79 , -21.7815 ), ( 342 , 0 , 0 )); //Spawning clip on ramped sides of buildings spawncollision("collision_clip_wall_128x128x10","collider",( 1604.54 , -1050.26 , -120.822 ), ( 31 , 270 , 0 )); spawncollision("collision_clip_wall_128x128x10","collider",( 1478.62 , -1050.26 , -120.822 ), ( 31 , 270 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1353.01 , -1050.26 , -120.822 ), ( 31 , 270 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1142.36 , -120.822 ), ( 31 , 360 , 0 )); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1268.28 , -120.822 ), ( 31 , 360 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1393.89 , -120.822 ), ( 31 , 360 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1514.1, -120.822 ), ( 31 , 360 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1640.02 , -120.822 ), ( 31 , 360 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 1265.75 , -1730.95 , -120.822 ), ( 31 , 360 , 0)); //Spawning clip on ramped sides of buildings spawncollision("collision_clip_wall_128x128x10","collider",( 3653.42 , -1756.59 , -75.2497 ), ( 24 , 90 , 0 )); spawncollision("collision_clip_wall_128x128x10","collider",( 3744.35 , -1756.59 , -75.2497 ), ( 24 , 90 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 3867.22 , -1756.58 , -75.2495 ), ( 24 , 90 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 3932.69 , -1756.58 , -75.2495 ), ( 24 , 90 , 0 )); spawncollision("collision_clip_wall_128x128x10","collider",( 4023.62 , -1756.58 , -75.2495 ), ( 24 , 90 , 0 )); spawncollision("collision_clip_wall_128x128x10","collider",( 4101.56 , -1679.67 , -75.2495 ), ( 24 , 180 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 4101.56 , -1598.22 , -75.2495 ), ( 24 , 180 , 0)); spawncollision("collision_clip_wall_128x128x10","collider",( 4101.56 , -1507.29 , -75.2495 ), ( 24 , 180 , 0 )); //Spawning clip on palace columns facing middle //spawncollision("collision_clip_wall_128x128x10","collider",( 3010.09 , -900.957 , 228.447 ), ( 33 , 270 , 0 )); //spawncollision("collision_clip_wall_128x128x10","collider",( 2715.04 , -900.957 , 228.447 ), ( 33 , 270 , 0 )); //Spawning clip on statue over water fountain area near greenhouse spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 86.0638 , 179.294 ), ( 0 , 0 , 0 )); spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 79.3592 , 179.294 ), ( 0 , 0 , 0)); spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 86.0638 , 241.08 ), ( 0 , 0 , 0)); spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 79.3592 , 241.08 ), ( 0 , 0 , 0 )); spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 86.0638 , 300.684 ), ( 0 , 0 , 0 )); spawncollision("collision_clip_wall_64x64x10","collider",( 1261.61 , 79.3592 , 300.684 ), ( 0 , 0 , 0)); //Spawning clip over wall outside of north of palace //spawncollision("collision_clip_wall_128x128x10","collider",( 3727 , -1412.5 , 198 ), ( 1 , 270 , 0 )); //Spawning clip over wall inset allowing wallbreach of hotel facade to windows facing middle Devtrack issue 165673 spawncollision("collision_clip_ramp_64x24","collider",( 3792 , -1413 , 140 ), ( 0 , 0 , -90 )); spawncollision("collision_clip_ramp_64x24","collider",( 3792 , -1413 , 204 ), ( 0 , 180 , 90 )); spawncollision("collision_clip_ramp_64x24","collider",( 3728 , -1413 , 140 ), ( 0 , 0 , -90 )); spawncollision("collision_clip_ramp_64x24","collider",( 3728 , -1413 , 204 ), ( 0 , 180 , 90 )); spawncollision("collision_clip_ramp_64x24","collider",( 3664 , -1413 , 140 ), ( 0 , 0 , -90 )); spawncollision("collision_clip_ramp_64x24","collider",( 3664 , -1413 , 204 ), ( 0 , 180 , 90 )); //Spawning clip over exposed clip on top of pillars on hotel facade Devtrack issue 155395 spawncollision("collision_clip_ramp_64x24","collider",( 2994 , -892 , 204 ), ( 0 , 180 , 90 )); spawncollision("collision_clip_ramp_64x24","collider",( 2726 , -892 , 204 ), ( 0 , 180 , 90 )); if ( util::IsPropHuntGametype() ) { spawncollision("collision_clip_wall_256x256x10","collider", ( 1641 , -796 , 76 ), ( 0 , 0 , 0 )); } mp_spire_amb::main(); // Set up the default range of the compass SetDvar("compassmaxrange","2100"); // Set up some generic War Flag Names. // Example from COD5: CALLSIGN_SEELOW_A is the name of the 1st flag in Selow whose string is "Cottage" // The string must have MPUI_CALLSIGN_ and _A. Replace Mapname with the name of your map/bsp and in the // actual string enter a keyword that names the location (Roundhouse, Missle Silo, Launchpad, Guard Tower, etc) game["strings"]["war_callsign_a"] = &"MPUI_CALLSIGN_MAPNAME_A"; game["strings"]["war_callsign_b"] = &"MPUI_CALLSIGN_MAPNAME_B"; game["strings"]["war_callsign_c"] = &"MPUI_CALLSIGN_MAPNAME_C"; game["strings"]["war_callsign_d"] = &"MPUI_CALLSIGN_MAPNAME_D"; game["strings"]["war_callsign_e"] = &"MPUI_CALLSIGN_MAPNAME_E"; game["strings_menu"]["war_callsign_a"] = "@MPUI_CALLSIGN_MAPNAME_A"; game["strings_menu"]["war_callsign_b"] = "@MPUI_CALLSIGN_MAPNAME_B"; game["strings_menu"]["war_callsign_c"] = "@MPUI_CALLSIGN_MAPNAME_C"; game["strings_menu"]["war_callsign_d"] = "@MPUI_CALLSIGN_MAPNAME_D"; game["strings_menu"]["war_callsign_e"] = "@MPUI_CALLSIGN_MAPNAME_E"; level thread exterior_billboard_exploders(); // Stockpile hub points level.cleanDepositPoints = Array ( ( 2870.59 , -134.119 , 1.81104 ), ( 4107.7 , 1370.67 , 90.1926 ), ( 2856.95 , -1234.69 , -62.1478 ), ( 1233.53 , 930.651 , 2.22752 ), ( 3844.93 , -603.359 , 139.234 ) ); level spawnKillTrigger(); } function exterior_billboard_exploders() { currentExploder = RandomInt( 4 ); while( 1 ) { level clientfield::set( "mpSpireExteriorBillboard", currentExploder ); wait( 6 ); currentExploder++; if ( currentExploder >= 4 ) { currentExploder = 0; } } } 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]=( 2480, 1269, 67 );; // 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]=( 2609, 1440, 67 );; // omitting auto generated point near the entrance near "ZONE 2" sign, adding a better one below if ( !isdefined( omit_locations ) ) omit_locations = []; else if ( !IsArray( omit_locations ) ) omit_locations = array( omit_locations ); omit_locations[omit_locations.size]=( 3089, 1437, 69 );; // 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]=( 3223, 1224, 69 );; // omitting auto generated point near the entrance near "ZONE 2" sign, adding a better one below if ( !isdefined( omit_locations ) ) omit_locations = []; else if ( !IsArray( omit_locations ) ) omit_locations = array( omit_locations ); omit_locations[omit_locations.size]=( 2434, 1093, 67 );; // omitting auto generated point near the entrance near "ZONE 2" sign, adding a better one below } function spawnKillTrigger() { // Killtriggers for wallbreach into building near north spawn Devtrack issue 188282 trigger = spawn( "trigger_radius", ( 4303 , 1421 , 88 ), 0, 8, 72 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 4303 , 1449 , 88 ), 0, 8, 72 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 4303 , 1477 , 88 ), 0, 8, 72 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 4303 , 1505 , 88 ), 0, 8, 72 ); trigger thread watchKillTrigger(); // Killtriggers for wallbreach into hotel Devtrack issue 165673 trigger = spawn( "trigger_radius", ( 3776 , -1472 , 114 ), 0, 40, 128 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 3700 , -1472 , 114 ), 0, 40, 128 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 3624 , -1472 , 114 ), 0, 40, 128 ); trigger thread watchKillTrigger(); // Killtriggers in hotel window exploit related to Devtrack issue 165673 trigger = spawn( "trigger_radius", ( 3060 , -992 , 232 ), 0, 40, 72 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 2660 , -992 , 232 ), 0, 40, 72 ); trigger thread watchKillTrigger(); // Killtrigger for wallbreach into central building corner Devtrack issue 168498 trigger = spawn( "trigger_radius", ( 4052 , -544 , 88 ), 0, 16, 256 ); trigger thread watchKillTrigger(); trigger = spawn( "trigger_radius", ( 4084 , -512 , 88 ), 0, 48, 256 ); 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 ); } }