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

226 lines
17 KiB
Plaintext

#using scripts\codescripts\struct;
#using scripts\shared\_oob;
#using scripts\shared\util_shared;
#using scripts\shared\compass;
#using scripts\mp\_load;
#using scripts\mp\_util;
#using scripts\mp\gametypes\_spawnlogic;
#using scripts\mp\mp_kung_fu_fx;
#using scripts\mp\mp_kung_fu_sound;
#precache( "model", "collision_clip_wall_64x64x10" );
#precache( "model", "collision_clip_wall_32x32x10" );
#precache( "model", "p7_debris_wood_plank_old_64_splintered" );
#precache( "model", "p7_kfu_gong_wall_decor" );
#precache( "model", "collision_clip_wall_256x256x10" );
#precache( "model", "collision_clip_wall_128x128x10" );
#precache( "model", "collision_physics_64x64x64" );
#precache( "model", "collision_clip_256x256x256" );
#precache( "model", "collision_clip_wall_32x32x10" );
#precache( "model", "collision_clip_32x32x32" );
function main()
{
precache();
trigger = spawn( "trigger_radius_out_of_bounds", (674 , 2622.5 , 137.5), 0, 256, 300 );
trigger thread oob::run_oob_trigger();
mp_kung_fu_fx::main();
mp_kung_fu_sound::main();
load::main();
compass::setupMiniMap( "compass_map_mp_kung_fu" );
SetDvar( "compassmaxrange", "2100" ); // Set up the default range of the compass
link_traversals( "under_bridge", "targetname", true );
//Spawning clip on blue shingles above lilly pad pond
//spawncollision("collision_clip_wall_64x64x10","collider",( 191.466 , -1858.57 , 432.435 ), ( 332 , 270 , 0 ));
//spawncollision("collision_clip_wall_64x64x10","collider",( 229.553 , -1815.83 , 432.435 ), ( 341 , 0 , 0 ));
//spawncollision("collision_clip_wall_32x32x10","collider",( 224.5 , -1852 , 410 ), ( 329 , 318 , -3 ));
//spawncollision("collision_clip_wall_32x32x10","collider",( 232 , -1858.5 , 394 ), ( 329 , 318 , -3 ));
// Spawn piece of wood to cover up a minor umbra issue - between concrete barrel thing and red pillar that faces accross the middle toward the disco DT 160457
//tree1 = spawn("script_model",( -1407 , -542 , 263 ));
// tree1.angles = ( 0 , 0 , -90);
//tree1 SetModel("p7_debris_wood_plank_old_64_splintered");
// Spawn decorative pieces outside of disco room for umbra issue DT 163028
block1 = spawn("script_model",( -1341.5 , 121 , 388 ));
block1.angles = ( 0 , 0 , 0);
block1 SetModel("p7_kfu_gong_wall_decor");
block2 = spawn("script_model",( -1325 , 121 , 388 ));
block2.angles = ( 0 , 0 , 0);
block2 SetModel("p7_kfu_gong_wall_decor");
block3 = spawn("script_model",( -1308.5 , 121 , 388 ));
block3.angles = ( 0 , 0 , 0);
block3 SetModel("p7_kfu_gong_wall_decor");
block4 = spawn("script_model",( -1292 , 121 , 388 ));
block4.angles = ( 0 , 0 , 0);
block4 SetModel("p7_kfu_gong_wall_decor");
block5 = spawn("script_model",( -1275.5 , 121 , 388 ));
block5.angles = ( 0 , 0 , 0);
block5 SetModel("p7_kfu_gong_wall_decor");
block6 = spawn("script_model",( -1259 , 121 , 388 ));
block6.angles = ( 0 , 0 , 0);
block6 SetModel("p7_kfu_gong_wall_decor");
block7 = spawn("script_model",( -1242.5 , 121 , 388 ));
block7.angles = ( 0 , 0 , 0);
block7 SetModel("p7_kfu_gong_wall_decor");
block8 = spawn("script_model",( -1350 , 122.25 , 391.75 ));
block8.angles = ( 270 , 180 , 90 );
block8 SetModel("p7_kfu_gong_wall_decor");
block9 = spawn("script_model",( -1352 , 121.75 , 391.75 ));
block9.angles = ( 270 , 180 , 90 );
block9 SetModel("p7_kfu_gong_wall_decor");
block10 = spawn("script_model",( -1234 , 122.25 , 391.75 ));
block10.angles = ( 90 , 180 , 90 );
block10 SetModel("p7_kfu_gong_wall_decor");
block11 = spawn("script_model",( -1232 , 121.75 , 391.75 ));
block11.angles = ( 90 , 180 , 90 );
block11 SetModel("p7_kfu_gong_wall_decor");
//Fix for small ledge player could stand on along the bridge hallway
//spawncollision("collision_clip_wall_256x256x10","collider",( -365 , -1818 , 522 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_256x256x10","collider",( -365 , -1818 , 778 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_256x256x10","collider",( -365 , -1818 , 1034 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_256x256x10","collider",( -365 , -1818 , 1290 ), ( 0 , 0 , 0));
//Fix for small ledge player could stand on on the wrong side of the railing by the cliff edge
//spawncollision("collision_clip_wall_64x64x10","collider",( -1645 , -698 , 248 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1645 , -762 , 248 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1645 , -826 , 248 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1645 , -878 , 248 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1645 , -931 , 248 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1624 , -982 , 248 ), ( 0 , 45 , 0));
//spawncollision("collision_clip_wall_64x64x10","collider",( -1607 , -999 , 248 ), ( 0 , 45 , 0));
// Spawn black models above trophy room roof to close up seam / umbra issue dt 164483
block1 = spawn("script_model",( 331 , -39.5 , 508.5 ));
block1.angles = ( 290 , 180 , 0);
block1 SetModel("collision_clip_wall_128x128x10");
block2 = spawn("script_model",( 331 , -104.5 , 508.5 ));
block2.angles = ( 290 , 180 , 0);
block2 SetModel("collision_clip_wall_128x128x10");
block3 = spawn("script_model",( 331 , -225.5 , 508.5 ));
block3.angles = ( 290 , 180 , 0);
block3 SetModel("collision_clip_wall_128x128x10");
//Fix for player cam clipping into the edge of gate at center of gong run
spawncollision("collision_clip_256x256x256","collider",( 1488 , -16 , 580 ), ( 0 , 270 , 0));
spawncollision("collision_clip_256x256x256","collider",( 1488 , -208 , 580 ), ( 0 , 270 , 0));
spawncollision("collision_clip_256x256x256","collider",( 1488 , -208 , 836 ), ( 0 , 270 , 0));
spawncollision("collision_clip_256x256x256","collider",( 1488 , -208 , 1092 ), ( 0 , 270 , 0));
spawncollision("collision_clip_256x256x256","collider",( 1488 , -208 , 1348 ), ( 0 , 270 , 0));
//Spawning phys clip over water outside of playspace
//spawncollision("collision_physics_64x64x64","collider",( 304.5 , -2900 , 406 ), ( 0 , 0 , 0 ));
//spawncollision("collision_physics_64x64x64","collider",( 304.5 , -2960 , 406 ), ( 0 , 0 , 0 ));
//spawncollision("collision_physics_64x64x64","collider",( 368 , -2900 , 406 ), ( 0 , 0 , 0 ));
//spawncollision("collision_physics_64x64x64","collider",( 368 , -2960 , 406 ), ( 0 , 0 , 0 ));
//spawncollision("collision_physics_64x64x64","collider",( 326.5 , -2925.5 , 436.5 ), ( 0 , 0 , 0 ));
//spawncollision("collision_physics_64x64x64","collider",( 326.5 , -2961.5 , 436.5 ), ( 0 , 0 , 0 ));
//Fix for small ledge player could stand on on the gate next to the cliff path
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 548 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 676 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 804 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 932 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 1060 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 1188 ), ( 0 , 0 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( -1555 , -492 , 1316 ), ( 0 , 0 , 0));
//Fix for mantling through training area start spawn wall
spawncollision("collision_clip_wall_32x32x10","collider",( 43.5 , 3073 , 175.5 ), ( 0 , 270 , 0));
spawncollision("collision_clip_wall_32x32x10","collider",( 43.5 , 3073 , 207 ), ( 0 , 270 , 0));
spawncollision("collision_clip_wall_32x32x10","collider",( 43.5 , 3073 , 238.5 ), ( 0 , 270 , 0));
spawncollision("collision_clip_wall_32x32x10","collider",( 43.5 , 3073 , 270 ), ( 0 , 270 , 0));
spawncollision("collision_clip_wall_32x32x10","collider",( 43.5 , 3073 , 300 ), ( 0 , 270 , 0));
//Fix for missing clip over rocks by red veranda
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 492 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 617 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 742 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 866 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 990.5 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 1217.5 ), ( 0 , 270 , 0));
//spawncollision("collision_clip_wall_128x128x10","collider",( 607 , -1139 , 1295 ), ( 0 , 270 , 0));
//Spawning clip beside staircase outside of disco
// spawncollision("collision_clip_32x32x32","collider",( -1616 , 130.5 , 216 ), ( 0 , 350 , 0 ));
//Spawning clip beside staircase outside of disco
//spawncollision("collision_clip_wall_64x64x10","collider",( 1071 , 734.5 , 181.5 ), ( 336 , 270 , 0 ));
//Fix for missing clip over rocks by red veranda
spawncollision("collision_clip_wall_256x256x10","collider",( -1021 , 332.5 , 583 ), ( 0 , 0 , 0));
spawncollision("collision_clip_wall_256x256x10","collider",( -1021 , 332.5 , 821 ), ( 0 , 0 , 0));
spawncollision("collision_clip_wall_256x256x10","collider",( -1021 , 332.5 , 1064 ), ( 0 , 0 , 0));
//Fix for missing clip over rocks by red veranda
spawncollision("collision_clip_32x32x32","collider",( -712 , 2387.5 , 138 ), ( 0 , 0 , 0));
spawncollision("collision_clip_32x32x32","collider",( -712 , 2415.5 , 141.5 ), ( 0 , 0 , 0));
spawncollision("collision_clip_32x32x32","collider",( -733 , 2415.5 , 141.5 ), ( 0 , 0 , 0));
//Adding clip on the side of back temple near water to prevent proning into the hole
spawncollision("collision_clip_wall_128x128x10","collider",( -808.5 , -2795 , 250.5 ), ( 0 , 270 , 0));
spawncollision("collision_clip_wall_128x128x10","collider",( -808.5 , -2795 , 319 ), ( 0 , 270 , 0));
// Stockpile hub points
level.cleanDepositPoints = Array ( ( -776.619 , -125.086 , 305 ),
( -783.119 , -1153.59 , 250.68 ),
( 1113.38 , -123.586 , 282.18 ),
( -1258.62 , 640.914 , 257.18 ) );
level spawnKillTrigger();
}
function precache()
{
// DO ALL PRECACHING HERE
}
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 spawnKillTrigger()
{
trigger = spawn( "trigger_radius", ( 3.5 , 3155.5 , 155 ), 0, 80, 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 );
}
}