diff --git a/root/scripts/vscripts/community/maps/c10m1_caves.nut b/root/scripts/vscripts/community/maps/c10m1_caves.nut index d6b59c4d..c43ad4a6 100644 --- a/root/scripts/vscripts/community/maps/c10m1_caves.nut +++ b/root/scripts/vscripts/community/maps/c10m1_caves.nut @@ -28,6 +28,7 @@ function DoRoundFixes() make_clip( "_permstuck_endrockcorner", "Everyone", 1, "-8 -79 -186", "95 130 174", "-11277 -6770 193", "0 -35 0" ); make_clip( "_dispcrouch_endrocktinytop", "Everyone", 1, "-8 -37 0", "8 121 148", "-11216 -6525 62" ); make_clip( "_dispcrouch_endrockparkour", "Everyone", 1, "-8 -116 0", "8 56 115", "-12284 -6439 147", "0 9 0" ); + make_clip( "_spawnstuck_tunnelend", "SI Players and AI", 1, "-240 -550 0", "240 600 216", "-12998 -4435 -64" ); // Not confirmed canon -- but probably. @@ -61,4 +62,26 @@ function DoRoundFixes() make_prop( "dynamic", "_yesdrawcliff_rocks2", "models/props_wasteland/rock_cliff01.mdl", "-11429 -10350 520", "0 0 0", "shadow_no" ); make_trigmove( "_duckqol_trafficlight", "Duck", "-8 -8 -32", "8 16 32", "-12158 -9866 60" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Delete several specific clips along left side of map. Deleting + // all of them wouldn't be so bad since it's just Tanks, but let's + // not do that anyway in case more Infected ladders are added later. + + kill_funcinfclip( 1145.18 ); // Spawn left 1st + kill_funcinfclip( 1127.68 ); // Spawn left 2nd + kill_funcinfclip( 1110.42 ); // Spawn left 3rd + kill_funcinfclip( 1059.74 ); // Spawn left 4th + kill_funcinfclip( 1054.83 ); // Spawn left 5th + kill_funcinfclip( 1216.59 ); // Tunnelside + kill_funcinfclip( 1000.2 ); // Cliffside + kill_funcinfclip( 597.979 ); // End cave connection to map 2 (easter egg spot) + + // Prevent falling into a permstuck spot, opened up from above deletions. + + make_clip( "_tankstuck_tunnelside", "SI Players", 1, "-1700 -200 -1337", "1700 1024 610", "-13902 -10396 656", "0 45 0" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c10m2_drainage.nut b/root/scripts/vscripts/community/maps/c10m2_drainage.nut index 99311f36..893336fd 100644 --- a/root/scripts/vscripts/community/maps/c10m2_drainage.nut +++ b/root/scripts/vscripts/community/maps/c10m2_drainage.nut @@ -80,4 +80,37 @@ function DoRoundFixes() Entities.FindByClassnameNearest( "prop_physics", Vector( -7016, -6697, -206 ), 8 ).SetOrigin( Vector( -7016, -6747, -209 ) ); Entities.FindByClassnameNearest( "prop_physics", Vector( -7000, -6674, -205 ), 8 ).SetOrigin( Vector( -7000, -6724, -208 ) ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" ) + { + // Excessively problematic map for Taaannnk! Mutation, but not so much + // for Versus Survival. In the Survival area, there's 3 sewer tunnels + // with excess nav players could spawn behind -- this deletes all of them, + // and there's no way to get under the limited Survival arena. + + EntFire( "func_playerinfected_clip", "Kill" ); + + // Delete 1 *.LMP roadsidefence model to facilitate Infected player travel. + + kill_entity( Entities.FindByClassnameNearest( "prop_dynamic", Vector( -8972, -7890, -320 ), 1 ) ); + + // Add 3 Infected ladders to complement the "stacked blockers" meant + // for AI, which players cannot reasonably know the presence of. + + make_ladder( "_ladder_versussurvivalfence1_cloned_tunnelmid", "-9478.5 -7280 -384", "155 45 -410" ); + make_ladder( "_ladder_versussurvivalfence2_cloned_tunnelmid", "-9478.5 -7280 -384", "155 0 -410" ); + make_ladder( "_ladder_versussurvivalfence3_cloned_tunnelmid", "-9478.5 -7280 -384", "155 -45 -410" ); + } + + if ( g_MutaMode == "mutation19" ) + { + // Excessively problematic map, most specifically the end area, so just + // delete all of these -- Tanks can get out of the map and venture to + // its far extents, but only in end area, and the alternatives messier. + // Also 3 sewer tunnels in the event area that have clips but excess nav. + + EntFire( "func_playerinfected_clip", "Kill" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c10m3_ranchhouse.nut b/root/scripts/vscripts/community/maps/c10m3_ranchhouse.nut index aa50b9a3..84c3c28f 100644 --- a/root/scripts/vscripts/community/maps/c10m3_ranchhouse.nut +++ b/root/scripts/vscripts/community/maps/c10m3_ranchhouse.nut @@ -105,4 +105,22 @@ function DoRoundFixes() //make_prop( "dynamic", "_solidify_tree09", "models/props_foliage/trees_cluster02.mdl", "-7168 -880 -91.8731", "-6.18811 26.8478 12.0217", "shadow_no" ); make_prop( "dynamic", "_solidify_tree10", "models/props_foliage/trees_cluster02.mdl", "-9664 -1400 -36.5395", "-15.8186 151.677 -1.38363", "shadow_no" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Deleting all func_playerinfected_clip would create new exploits + // in the Survival/finale arena, so instead only delete specific ones. + // Luckily, the Survival arena itself is fine, so doesn't need any + // work, and all spawns fixed below are far away from Survival arena. + + kill_funcinfclip( 668.433 ); // Wrongway in beginning area + kill_funcinfclip( 2248.58 ); // Treeline after bus/shed + + // New clips to extend behind some func_playerinfected_clips. + + make_clip( "_tankstuck_cornerpath", "SI Players", 1, "-700 -800 -145", "800 790 1360", "-13598 -9362 68" ); + make_clip( "_tankstuck_mountainwedge", "SI Players", 1, "-100 -100 0", "100 100 1300", "-8388 -3525 300" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c10m4_mainstreet.nut b/root/scripts/vscripts/community/maps/c10m4_mainstreet.nut index 7bde26b1..eed7ebb0 100644 --- a/root/scripts/vscripts/community/maps/c10m4_mainstreet.nut +++ b/root/scripts/vscripts/community/maps/c10m4_mainstreet.nut @@ -161,4 +161,32 @@ function DoRoundFixes() EntFire( g_UpdateName + "_hittable_hellcarglass", "SetParent", g_UpdateName + "_hittable_hellcar" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" ) + { + // In Versus Survival's event area, block an inaccessible ladder + // (to be restored in the future) behind a barricade, and then + // also clip off excessive navmesh in far dark corner of the map. + + make_clip( "_tankstuck_endbarricade", "SI Players", 1, "-400 -900 0", "400 900 1700", "3822 -3970 0" ); + make_clip( "_tankstuck_excesscorner", "SI Players", 1, "-200 -100 0", "200 100 1700", "-2520 -5048 -64" ); + } + + if ( g_MutaMode == "mutation19" ) + { + // Tons of possibilities to spawn behind the long row of houses + // so just block them all off, tons of NODRAW and hostile clips. + // Players would only materialize back here in Taaannnk! Mutation. + + make_clip( "_tankstuck_houserow", "SI Players", 1, "-2260 -440 0", "3450 900 1850", "68 158 -100" ); + + // In Versus Survival's event area, block an inaccessible ladder + // (to be restored in the future) behind a barricade, and then + // also clip off excessive navmesh in far dark corner of the map. + + make_clip( "_tankstuck_endbarricade", "SI Players", 1, "-400 -900 0", "400 900 1700", "3822 -3970 0" ); + make_clip( "_tankstuck_excesscorner", "SI Players", 1, "-200 -100 0", "200 100 1700", "-2520 -5048 -64" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c11m1_greenhouse.nut b/root/scripts/vscripts/community/maps/c11m1_greenhouse.nut index 8d9a5bae..b0192ba9 100644 --- a/root/scripts/vscripts/community/maps/c11m1_greenhouse.nut +++ b/root/scripts/vscripts/community/maps/c11m1_greenhouse.nut @@ -29,7 +29,6 @@ function DoRoundFixes() make_clip( "_commonhop_greenhouse", "Survivors", 1, "0 -320 -176", "3 240 690", "5226 -752 1023" ); make_clip( "_cliprework_endpassage", "Survivors", 1, "-6 -224 0", "6 224 78", "4858 2552 274" ); - } if ( HasPlayerControlledZombies() ) @@ -78,6 +77,7 @@ function DoRoundFixes() make_prop( "dynamic", "_yesdrawgreenhouse_plywood", "models/props_update/c11m1_greenhouse_plywood.mdl", "5524 -717 968", "0 270 0", "shadow_no" ); make_prop( "dynamic", "_yesdrawgreenhouse_wrongwaya", "models/props_misc/wrongway_sign01_optimized.mdl", "6305 -633 1148", "0 180 0", "shadow_no", "solid_no", "255 255 255", 500, 17 ); make_prop( "dynamic", "_yesdrawgreenhouse_wrongwayb", "models/props_misc/wrongway_sign01_optimized.mdl", "6305 -395 1148", "0 180 0", "shadow_no", "solid_no", "255 255 255", 500, 17 ); + local strEndUpperWalkway = clone_model( Entities.FindByClassnameNearest( "func_illusionary", Vector( 4063, 2331, 49.83 ), 1 ) ); if ( strEndUpperWalkway != null ) @@ -91,4 +91,13 @@ function DoRoundFixes() } ); } } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Delete 1 clip, opens up a lot to explore but no exploits. + + kill_funcinfclip( 1154.43 ); // End area fence barricade + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c11m2_offices.nut b/root/scripts/vscripts/community/maps/c11m2_offices.nut index 5ef7dcc4..4be5f346 100644 --- a/root/scripts/vscripts/community/maps/c11m2_offices.nut +++ b/root/scripts/vscripts/community/maps/c11m2_offices.nut @@ -73,4 +73,25 @@ function DoRoundFixes() patch_ladder( "8596 5497.5 92.3941", "0 4 0" ); patch_ladder( "8260 5497.5 92.3941", "0 4 0" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" ) + { + // Final street wrongway barricades -- only left Versus Survival relevant. + + kill_funcinfclip( 1043.94 ); // Final street left barricade + } + + if ( g_MutaMode == "mutation19" ) + { + // Block an excess nav area that's quite far behind a fence. + + make_clip( "_tankstuck_fencenavarea", "SI Players", 1, "-64 -64 0", "64 64 1400", "10314 3862 16" ); + + // Final street wrongway barricades. + + kill_funcinfclip( 1043.94 ); // Final street left barricade + kill_funcinfclip( 1493.36 ); // Final street right barricade + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c11m3_garage.nut b/root/scripts/vscripts/community/maps/c11m3_garage.nut index 7eb4f5ff..5fcbb2aa 100644 --- a/root/scripts/vscripts/community/maps/c11m3_garage.nut +++ b/root/scripts/vscripts/community/maps/c11m3_garage.nut @@ -146,4 +146,14 @@ function DoRoundFixes() patch_ladder( "-1539.5 1472 192.315", "-1 0 0" ); patch_ladder( "-3352 2426 110", "0 -1 0" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // When Survivors leave the safe room, Tanks can immediately spawn + // stuck behind the fence. Block it off until future ladder rework. + + make_clip( "_tankstuck_startfence", "SI Players", 1, "-1200 -80 0", "720 58 1800", "-4947 -3786 16" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c11m4_terminal.nut b/root/scripts/vscripts/community/maps/c11m4_terminal.nut index 2b84bc5e..f7ebb3bc 100644 --- a/root/scripts/vscripts/community/maps/c11m4_terminal.nut +++ b/root/scripts/vscripts/community/maps/c11m4_terminal.nut @@ -46,6 +46,13 @@ function DoRoundFixes() EntFire( "securityrotator1", "AddOutput", "origin 1025.7 1750.9 125.456", 0 ); EntFire( "securityspotlight1", "AddOutput", "origin 1025.7 1750.9 125.456", 1 ); + // Rubble axiswarp with QoL and OoB clips to reduce stuck bot and player Tank spawns + + make_axiswarp( "_spawnstuck_rubble", "x+", 64, "-8 -88 0", "7 120 192", "-604 5248 296" ); + + make_clip( "_spawnstuck_rubble_qol", "SI Players and AI", 1, "-95 -128 0", "60 128 4", "-720 5248 360", "-45 0 0" ); + make_clip( "_spawnstuck_rubble_oob", "SI Players", 1, "-2 -56 -32", "2 56 56", "-906 5256 344" ); + if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); @@ -53,8 +60,8 @@ function DoRoundFixes() // FIXES patch_spawninfront( "2552 4080 152", "0 -16 0", "614 16 244" ); - } + if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); @@ -64,7 +71,6 @@ function DoRoundFixes() patch_spawninfront( "2552 4080 152", "0 -16 0", "614 16 244" ); make_clip( "_altpath_escalator", "Survivors", 1, "-37 -6 -35", "25 6 175", "2289 1737 51", "0 0 -2.5" ); - } if ( HasPlayerControlledZombies() ) diff --git a/root/scripts/vscripts/community/maps/c12m1_hilltop.nut b/root/scripts/vscripts/community/maps/c12m1_hilltop.nut index 3cd1378c..d19190e3 100644 --- a/root/scripts/vscripts/community/maps/c12m1_hilltop.nut +++ b/root/scripts/vscripts/community/maps/c12m1_hilltop.nut @@ -22,7 +22,6 @@ function DoRoundFixes() // FIXES make_clip( "_nav_quarrybeams", "Survivors", 1, "-152 -7 0", "152 1 288", "-7808 -9481 512" ); - } if ( HasPlayerControlledZombies() ) @@ -49,8 +48,8 @@ function DoRoundFixes() make_clip( "_meticulous_funcinfclip05", "SI Players", 1, "-280 0 -640", "210 32 1635", "-11103 -9082 557", "0 70 0" ); make_clip( "_meticulous_funcinfclip06", "SI Players", 1, "-8 -320 0", "8 320 1454", "-9996 -8345 738", "0 -36 0" ); make_clip( "_meticulous_funcinfclip07", "SI Players", 1, "-8 -160 0", "8 160 1372", "-6728 -7101 820" ); - make_clip( "_meticulous_funcinfclip08", "SI Players", 1, "-777 -8 0", "1000 8 1372", "-5988 -6941 820" ); - make_clip( "_meticulous_funcinfclip09", "SI Players", 1, "-205 -8 0", "1000 8 885", "-5988 -6941 -65" ); + make_clip( "_meticulous_funcinfclip08", "SI Players", 1, "-777 -8 0", "1000 960 1372", "-5988 -6941 820" ); + make_clip( "_meticulous_funcinfclip09", "SI Players", 1, "-205 -8 0", "1000 960 885", "-5988 -6941 -65" ); make_clip( "_meticulous_stuckspot", "SI Players", 1, "-420 -128 -640", "640 32 600", "-9801 -13140 120", "-20 -40 0" ); make_clip( "_meticulous_slidespot", "SI Players", 1, "-108 -56 0", "643 16 88", "-10932 -8918 432" ); make_ladder( "_ladder_1stcliffback_cloned_startwide", "-8180.8638 -14508.2334 12.3855", "-12520 3632 3095", "0 37.14 10", "-0.61 0.79 0" ); @@ -68,4 +67,18 @@ function DoRoundFixes() make_ladder( "_ladder_skybridgerightT_cloned_trackstoshed", "-7726 -8871.5 120", "-242 -597.45 321", "0 0 -2" ); patch_ladder( "-10213 -12939 834.173", "22 0 0" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Thicken 2 wrongway's func_playerinfected_clip. Note this + // works for Taaannnk! Mutation but is a bad ladder to add + // to the vanilla game since it blocks climbability of a + // ladder that'd be climbable for custom servers that delete + // all func_playerinfected_clip. + + make_clip( "_tankstuck_wrongwayone", "SI Players", 1, "-320 -800 0", "0 750 1740", "-11967 -10090 450" ); + make_clip( "_tankstuck_wrongwaytwo", "SI Players", 1, "-610 0 0", "180 460 1740", "-11604 -9345 450" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c12m2_traintunnel.nut b/root/scripts/vscripts/community/maps/c12m2_traintunnel.nut index 123c1ce0..4d1a70b2 100644 --- a/root/scripts/vscripts/community/maps/c12m2_traintunnel.nut +++ b/root/scripts/vscripts/community/maps/c12m2_traintunnel.nut @@ -39,6 +39,7 @@ function DoRoundFixes() make_clip( "_ladder_indoorventduct_clip", "Everyone", 1, "-22 -32 0", "42 32 223", "-8170 -6300 -64" ); make_clip( "_ladder_parkourvent_clip", "SI Players", 1, "-1 -17 0", "0 17 64", "-8723 -7415 163" ); make_clip( "_meticulous_funcinfclip01", "SI Players", 1, "-492 -6 -977", "553 6 657", "-7806 -7614 1536", "0 38 0" ); + make_clip( "_permstuck_tunnelend", "SI Players", 1, "-16 -16 -16", "16 16 32", "-1445 -10327 -4" ); make_ladder( "_ladder_boxcarbm1mirr_cloned_firstwindow", "-6728.5 -6458 72", "-2053 -15104 -120", "0 -90 0", "0 1 0" ); make_ladder( "_ladder_boxcarcm1mirr_cloned_firstwindow", "-6728.5 -6458 72", "-14627 -1792 -120", "0 90 0", "0 -1 0" ); make_ladder( "_ladder_eventdoorback_cloned_triplepipes", "-7252 -8080.5 370", "-15712 -333 -250", "0 90 0", "1 0 0" ); @@ -66,4 +67,15 @@ function DoRoundFixes() kill_entity( Entities.FindByClassnameNearest( "func_brush", Vector( -8600, -7524, -8.13 ), 1 ) ); EntFire( "emergency_door_sign", "DisableCollision", 1 ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // No issues in the Survival arena, but the end for Taaannnk! can + // result in stuck spawns here. Note this blocks "map 3 easter egg" + // accessible area, and is NOT ideal for vanilla Versus. + + make_clip( "_tankstuck_tunnelend", "SI Players", 1, "-320 -800 -120", "450 258 240", "-1551 -10785 50" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c12m3_bridge.nut b/root/scripts/vscripts/community/maps/c12m3_bridge.nut index ab72c2c6..40470ec0 100644 --- a/root/scripts/vscripts/community/maps/c12m3_bridge.nut +++ b/root/scripts/vscripts/community/maps/c12m3_bridge.nut @@ -16,6 +16,7 @@ function DoRoundFixes() make_clip( "_nav_bridgecollapsea", "Survivors", 1, "-9 -10 0", "19 19 310", "5854 -12656 -41.3", "5 0 0" ); make_clip( "_nav_bridgecollapseb", "Survivors", 1, "-9 -10 0", "19 19 310", "6000 -12656 -41.3", "-5 0 0" ); make_clip( "_stuckwarp_endtunnel", "Everyone", 1, "-18 -60 0", "48 68 84", "968 -12932 20" ); + make_clip( "_permstuck_shedtree", "Everyone", 1, "-14 -14 -164", "14 14 1640", "3085 -14120 88" ); make_clip( "_permstuck_terribadcliff", "Everyone", 1, "-68 -1 0", "68 46 148", "7317 -11487 451" ); con_comment( "MOVER:\tClip \"_bridge_dynamic_clip\" simulated to move when bridge collapses." ); @@ -30,8 +31,8 @@ function DoRoundFixes() // FIXES patch_spawninfront( "7136 -11876 394", "0 -164 -24", "800 4 134" ); - } + if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); @@ -39,8 +40,8 @@ function DoRoundFixes() // FIXES patch_spawninfront( "7136 -11876 394", "0 -164 -24", "800 4 134" ); - } + if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); @@ -52,7 +53,6 @@ function DoRoundFixes() make_clip( "_missing_tree_2", "Survivors", 1, "-23 -23 0", "23 23 1302", "3066 -14082 418" ); make_clip( "_missing_tree_3", "Survivors", 1, "-23 -23 0", "23 23 1302", "4214 -12710 418" ); make_clip( "_missing_tree_4", "Survivors", 1, "-23 -23 0", "23 23 1302", "3730 -14198 418" ); - } if ( HasPlayerControlledZombies() ) @@ -67,18 +67,18 @@ function DoRoundFixes() make_clip( "_ladder_startventshaft_clipleft", "Everyone", 1, "-10 -12 0", "0 0 233", "-1030 -10911 -32", "0 -47 0" ); make_clip( "_ladder_startventshaft_clipright", "Everyone", 1, "-10 -12 0", "0 0 233", "-1005 -10903 -32", "0 47 0" ); make_clip( "_meticulous_funcinfclip01", "SI Players", 1, "-17 -515 -216", "150 721 1408", "-688 -10708 321" ); - make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-1000 -17 -170", "1150 17 1408", "262 -11524 321", "0 -21 0" ); - make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-34 -238 0", "57 260 1408", "1323 -12178 321" ); - make_clip( "_meticulous_funcinfclip04", "SI Players", 1, "-310 -17 159", "724 17 1408", "1616 -12255 321" ); + make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-1000 -120 -170", "1150 17 1408", "262 -11524 321", "0 -21 0" ); + make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-340 -238 0", "57 260 1408", "1323 -12178 321" ); + make_clip( "_meticulous_funcinfclip04", "SI Players", 1, "-310 -420 159", "724 17 1408", "1616 -12255 321" ); make_clip( "_meticulous_funcinfclip05", "SI Players", 1, "-1000 -310 -170", "850 187 1408", "262 -11524 321" ); make_clip( "_meticulous_funcinfclip06", "SI Players", 1, "-235 -165 64", "525 260 1408", "2560 -12100 321" ); - make_clip( "_meticulous_funcinfclip07", "SI Players", 1, "-48 -555 -216", "17 1414 1408", "3276 -11409 321", "0 -24 0" ); - make_clip( "_meticulous_funcinfclip08", "SI Players", 1, "-34 -120 -216", "17 700 1408", "3821 -10047 321", "0 24 0" ); - make_clip( "_meticulous_funcinfclip09", "SI Players", 1, "-1600 -30 -216", "1600 17 1408", "1980 -9420 321" ); - make_clip( "_meticulous_funcinfclip10", "SI Players", 1, "-600 -70 -216", "600 17 1408", "-132 -9696 321", "0 27 0" ); + make_clip( "_meticulous_funcinfclip07", "SI Players", 1, "-48 -555 -216", "180 1414 1408", "3276 -11409 321", "0 -24 0" ); + make_clip( "_meticulous_funcinfclip08", "SI Players", 1, "-34 -120 -216", "260 700 1408", "3821 -10047 321", "0 24 0" ); + make_clip( "_meticulous_funcinfclip09", "SI Players", 1, "-1600 -30 -216", "1600 70 1408", "1980 -9420 321" ); + make_clip( "_meticulous_funcinfclip10", "SI Players", 1, "-600 -70 -216", "600 170 1408", "-132 -9696 321", "0 27 0" ); make_clip( "_meticulous_funcinfclip11", "SI Players", 1, "-17 -555 -55", "17 1414 1408", "2361 -13935 321" ); - make_clip( "_meticulous_funcinfclip12", "SI Players", 1, "-3000 -17 -216", "3000 17 1408", "5344 -14507 321" ); - make_clip( "_meticulous_funcinfclip13", "SI Players", 1, "-800 -17 -216", "500 17 1408", "9070 -14172 321", "0 25 0" ); + make_clip( "_meticulous_funcinfclip12", "SI Players", 1, "-3000 -410 -216", "3000 17 1408", "5344 -14507 321" ); + make_clip( "_meticulous_funcinfclip13", "SI Players", 1, "-800 -170 -216", "500 17 1408", "9070 -14172 321", "0 25 0" ); make_clip( "_meticulous_funcinfclip14", "SI Players", 1, "-17 -761 -420", "17 1248 1408", "9216 -13284 321", "0 25 0" ); make_clip( "_meticulous_funcinfclip15", "SI Players", 1, "-320 -17 -216", "216 17 1408", "8456 -12150 321" ); make_clip( "_meticulous_funcinfclip16", "SI Players", 1, "-17 -170 -216", "17 610 1408", "8153 -11970 321" ); @@ -123,4 +123,14 @@ function DoRoundFixes() make_prop( "dynamic", "_tunneltopcliff_wrongwayc", "models/props_misc/wrongway_sign01_optimized.mdl", "3390 -12400 820", "0 0 0", "shadow_no", "solid_no", "255 255 255", "17", "217" ); make_prop( "dynamic", "_tunneltopcliff_wrongwayd", "models/props_misc/wrongway_sign01_optimized.mdl", "3390 -12590 730", "0 0 0", "shadow_no", "solid_no", "255 255 255", "17", "217" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" || g_MutaMode == "mutation19" ) + { + // Delete 1 wrongway clip. May not be necessary for Survival + // but too close to call; delete for it and Taaannnk! to be safe. + + kill_funcinfclip( 311.003 ); // Wrongway at end of train tunnel + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c12m4_barn.nut b/root/scripts/vscripts/community/maps/c12m4_barn.nut index c717b871..bcdcf678 100644 --- a/root/scripts/vscripts/community/maps/c12m4_barn.nut +++ b/root/scripts/vscripts/community/maps/c12m4_barn.nut @@ -31,7 +31,6 @@ function DoRoundFixes() make_prop( "dynamic", "_solidify_survivorchimney", "models/props/cs_militia/fireplacechimney01.mdl", "10862.2 -6085.53 120.492", "0 135 0", "shadow_no" ); - // FIX: Prevent skipping bridge horde by forcing it even if fence is jumped. con_comment( "TRIG:\tNew trigger will enforce onslaught even if fence is jumped." ); @@ -74,7 +73,6 @@ function DoRoundFixes() EntFire( g_UpdateName + "_eventskip_fence_trigonce", "AddOutput", "OnTrigger onslaught:GenerateGameEvent::1:-1" ); EntFire( g_UpdateName + "_eventskip_fence_trigonce", "AddOutput", "OnTrigger director:BeginScript:c12m4_onslaught:1.5:-1" ); - if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); @@ -84,8 +82,8 @@ function DoRoundFixes() con_comment( "TRIG_UNDO:\tDelete blockers which prevent train car commonhop skip for Coop-only." ); EntFire( g_UpdateName + "_eventskip_commonhop*", "Kill", null, 4 ); - } + if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); @@ -97,7 +95,6 @@ function DoRoundFixes() make_clip( "_shortcut_warehouse", "Survivors", 1, "0 -32 -32", "8 64 256", "10272 -7848 152" ); make_clip( "_commonhop_traintruss", "Survivors", 1, "-160 -120 -55", "160 120 1545", "10879 -7463 116" ); - } if ( HasPlayerControlledZombies() ) @@ -139,6 +136,17 @@ function DoRoundFixes() make_prop( "dynamic", "_solidify_finalchimney2", "models/props/cs_militia/fireplacechimney01.mdl", "11020 -4073 329", "0 135 0", "shadow_no" ); patch_ladder( "11314.7 -4535 -259.108", "0 -22 9" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // There's 60 func_playerinfected_clip on this map but most smooth + // perimeter fences and all are thick enough to block excess nav. + // Only exception appears to be behind the starting safe room. + + make_clip( "_tankstuck_safeback", "SI Players", 1, "-170 -640 -100", "170 225 1700", "7704 -11710 425" ); + } } function DoTankWarp( hndTank ) diff --git a/root/scripts/vscripts/community/maps/c13m2_southpinestream.nut b/root/scripts/vscripts/community/maps/c13m2_southpinestream.nut index 52298392..4c1c2b76 100644 --- a/root/scripts/vscripts/community/maps/c13m2_southpinestream.nut +++ b/root/scripts/vscripts/community/maps/c13m2_southpinestream.nut @@ -26,6 +26,8 @@ function DoRoundFixes() make_clip( "_permstuck_tree_j", "Everyone", 1, "-17 -17 -32", "17 17 0", "1153 5929 981" ); make_clip( "_stuckwarp_yellowbarrels", "Everyone", 1, "-108 -16 0", "59 13 128", "4861 2732 608", "0 -17 0" ); make_clip( "_permstuck_taito_ftw", "Everyone", 1, "-8 -8 -8", "28 24 28", "2552 2292 460" ); + make_clip( "_shortcut_eventfence", "Survivors", 1, "-32 -80 0", "32 2 345", "928 5775 415" ); + make_clip( "_permstuck_eventfence", "Everyone", 1, "-8 -40 0", "8 40 32", "905 5829 341" ); patch_spawninfront( "78 8574 -405", "-70 -8 0", "70 8 256" ); if ( g_BaseMode == "versus" ) @@ -37,7 +39,6 @@ function DoRoundFixes() make_clip( "_shortcut_easybigskip1", "Survivors", 1, "-8 -56 0", "8 56 2442", "506 4983 253", "0 46 0" ); make_clip( "_shortcut_easybigskip2", "Survivors", 1, "-64 -66 0", "8 260 2442", "503 4713 253", "0 -10 0" ); make_clip( "_shortcut_easybigskip3", "Survivors", 1, "-64 -316 0", "8 96 2442", "483 4553 253", "0 -4 0" ); - } if ( HasPlayerControlledZombies() ) diff --git a/root/scripts/vscripts/community/maps/c1m2_streets.nut b/root/scripts/vscripts/community/maps/c1m2_streets.nut index 4ad20a18..6440827e 100644 --- a/root/scripts/vscripts/community/maps/c1m2_streets.nut +++ b/root/scripts/vscripts/community/maps/c1m2_streets.nut @@ -198,6 +198,18 @@ function DoRoundFixes() con_comment( "FIX/ANTI-GRIEF:\tRemoved trigger which disables common infected spawns in Save 4 Less area for Versus only." ); kill_entity( Entities.FindByClassnameNearest( "trigger_once", Vector( -5128, -992, 548 ), 1 ) ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" || g_MutaMode == "mutation19" ) + { + // Delete all. Extremely problematic map with countless stuck + // spawns, but Skybox stops most opportunities to get under + // the map and the only way to get out of bounds is limited. + + EntFire( "func_playerinfected_clip", "Kill" ); + EntFire( g_UpdateName + "_yeswayturnpike_clipb", "Kill" ); + } } function DoTankWarp( hndTank ) diff --git a/root/scripts/vscripts/community/maps/c2m2_fairgrounds.nut b/root/scripts/vscripts/community/maps/c2m2_fairgrounds.nut index ef4e8cc3..680355ef 100644 --- a/root/scripts/vscripts/community/maps/c2m2_fairgrounds.nut +++ b/root/scripts/vscripts/community/maps/c2m2_fairgrounds.nut @@ -85,7 +85,7 @@ function DoRoundFixes() make_clip( "_propladder_acvent_qolclip", "SI Players", 1, "-36 -28 -4", "32 32 12", "-1155 -6870 80" ); make_clip( "_tolentrance_base_collision", "Everyone", 1, "-1 -155 0", "19 149 34", "-3924 -5493 144" ); make_clip( "_tolentrance_main_collision", "Everyone", 1, "-1 -155 0", "4 149 165", "-3924 -5493 144" ); - make_clip( "_yeswayfairback_funcinfclip", "SI Players", 1, "-1824 -8 -384", "1824 17 384", "-2272 1824 384" ); + make_clip( "_yeswayfairback_funcinfclip", "SI Players", 1, "-1824 -8 -384", "1824 452 384", "-2272 1824 384" ); make_ladder( "_ladder_appleshedge_cloned_endelecboxback", "-3689 -6048 1", "2926 1156 -64" ); make_ladder( "_ladder_brickbackend_cloned_whiteawnings", "-2736 -6652 16", "-10057 2274 158", "0 90 0", "-1 0 0" ); make_ladder( "_ladder_brickbannerB_cloned_icemachine", "3855 784 98.6349", "868 292 26", "0 180 0", "1 0 0" ); @@ -168,6 +168,17 @@ function DoRoundFixes() NetProps.SetPropInt( Entities.FindByName( null, g_UpdateName + "_hittable_2009forklift" ), "m_iMinHealthDmg", 400 ); NetProps.SetPropInt( Entities.FindByName( null, g_UpdateName + "_hittable_2009forklift" ), "m_takedamage", 3 ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Delete all. Extremely problematic map with countless stuck + // spawns, but Skybox stops all methods of getting under the map. + // No Survival on this map, so we can assume they'll always be Tank. + + EntFire( "func_playerinfected_clip", "Kill" ); + } } function DoMapSpawnFixes() diff --git a/root/scripts/vscripts/community/maps/c2m3_coaster.nut b/root/scripts/vscripts/community/maps/c2m3_coaster.nut index 00eacdcc..c0054d00 100644 --- a/root/scripts/vscripts/community/maps/c2m3_coaster.nut +++ b/root/scripts/vscripts/community/maps/c2m3_coaster.nut @@ -99,7 +99,7 @@ function DoRoundFixes() make_clip( "_onewaybreakwall_elecbox", "Everyone", 1, "-64 -4 0", "64 4 236", "-64 3524 100" ); make_clip( "_propladder_airconda_qol", "SI Players", 1, "-22 -20 12", "22 -1 32", "-1938 739 195" ); make_clip( "_startwindow_cheese", "Survivors", 1, "-47.6 0 0", "49.6 1 135", "2783 1920 105" ); - make_clip( "_trailerfence_clip", "SI Players", 1, "-114 -39 3", "126 761 963", "-1150 2887 -3" ); + make_clip( "_trailerfence_clip", "SI Players", 1, "-114 -39 3", "702 761 963", "-1150 2887 -3" ); make_ladder( "_ladder_buttonlegT_cloned_buttonlegB", "-3518 1780 102", "0 2.1 118" ); make_ladder( "_ladder_coastertowerB_cloned_finalleg", "-4164 2274 128", "-510 5513 168", "0 90 0", "0 1 0" ); make_ladder( "_ladder_coastertowerT_cloned_shrubberytilt", "-2976 886.5 258", "-5760 2209 264", "0 180 0", "0 1 0" ); diff --git a/root/scripts/vscripts/community/maps/c2m4_barns.nut b/root/scripts/vscripts/community/maps/c2m4_barns.nut index e30e61ec..2d6cc7a4 100644 --- a/root/scripts/vscripts/community/maps/c2m4_barns.nut +++ b/root/scripts/vscripts/community/maps/c2m4_barns.nut @@ -119,7 +119,7 @@ function DoRoundFixes() make_brush( "_losfix_start_trailer1a", "-102 -1 -8", "102 1 8", "2347 3295 -185" ); make_brush( "_losfix_start_trailer1b", "-1 -40 -8", "1 40 8", "2244 3333 -185" ); make_brush( "_losfix_start_trailer2", "-102 -1 -8", "102 1 8", "2814 2614 -185" ); - make_clip( "_eventfence_wrongway", "SI Players", 1, "-210 -20 -608", "200 20 672", "-200 2652 352" ); + make_clip( "_eventfence_wrongway", "SI Players", 1, "-800 -20 -608", "200 676 672", "-200 2652 352" ); make_clip( "_eventrooftop_smoother1", "SI Players", 1, "-343 0 0", "249 140 8", "-3305 1312 195", "0 0 -44" ); make_clip( "_eventrooftop_smoother2", "SI Players", 1, "-249 140 0", "343 0 8", "-3305 1312 195", "0 180 -44" ); make_clip( "_ladder_askewhedgeshared_clip", "SI Players and AI", 1, "-3 -279 -7", "3 245 79", "593 1177 -63" ); diff --git a/root/scripts/vscripts/community/maps/c3m1_plankcountry.nut b/root/scripts/vscripts/community/maps/c3m1_plankcountry.nut index a42c13a5..8af64d84 100644 --- a/root/scripts/vscripts/community/maps/c3m1_plankcountry.nut +++ b/root/scripts/vscripts/community/maps/c3m1_plankcountry.nut @@ -102,9 +102,9 @@ function DoRoundFixes() make_brush( "_losfix_start_train5c", "-2 -128 -12", "2 128 12", "-12754 9197 210" ); make_clip( "_ladder_earlsgatorvillage_clip", "Everyone", 1, "-5 -2 0", "2 32 222", "-7462 7696 32" ); make_clip( "_meticulous_funcinfclip01", "SI Players", 1, "-1053 -17 -123", "1029 17 935", "-484 9840 90" ); - make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-733 -8 0", "640 8 768", "-2668 416 256" ); - make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-198 -16 0", "198 16 961", "-3516 543 61", "0 -50 0" ); - make_clip( "_meticulous_funcinfclip04", "SI Players", 1, "-198 -16 0", "1375 16 961", "-1846 433 61", "0 10 0" ); + make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-733 -100 0", "640 8 768", "-2668 416 256" ); + make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-198 -100 0", "320 16 961", "-3516 543 61", "0 -50 0" ); + make_clip( "_meticulous_funcinfclip04", "SI Players", 1, "-198 -360 0", "1375 16 961", "-1846 433 61", "0 10 0" ); make_clip( "_starttrains_badredclip", "SI Players", 1, "-64 -36 -24", "64 36 -17", "-12728 9028 216", "0 -48 0" ); make_ladder( "_ladder_bridgetunnelleft_cloned_shacklegback", "-427 7088 76", "-505 -2151 116" ); make_ladder( "_ladder_bridgetunnelright_cloned_shacklegfront", "-579 7088 76", "-537 -2151 116" ); @@ -138,4 +138,20 @@ function DoRoundFixes() make_prop( "dynamic", "_start_fencea", "models/props_urban/fence_cover001_256.mdl", "-11265 9665 167.25", "0 270 0", "shadow_no" ); make_prop( "dynamic", "_start_fenceb", "models/props_urban/fence_cover001_64.mdl", "-10968 9586.1 167.25", "0 270 0", "shadow_no" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" || g_MutaMode == "mutation19" ) + { + // Delete all, terrible for stuck spawns. Likely won't allow + // players under the map, and this makes dozens of unused + // perimeter ladders accessible preventing tons of permstucks. + + EntFire( "func_playerinfected_clip", "Kill" ); + EntFire( g_UpdateName + "_meticulous_funcinfclip01", "Kill" ); + + // Warp players through one-side invisible solid treeline. + + make_axiswarp( "_axiswarp_semitrailer", "y-", 96, "-550 -8 0", "740 8 256", "-9505 10720 155" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c5m2_park.nut b/root/scripts/vscripts/community/maps/c5m2_park.nut index 7f62c819..57fe87c3 100644 --- a/root/scripts/vscripts/community/maps/c5m2_park.nut +++ b/root/scripts/vscripts/community/maps/c5m2_park.nut @@ -114,4 +114,14 @@ function DoRoundFixes() make_prop( "physics", "_hittable_dumpster", "models/props_junk/dumpster_2.mdl", "-8095 -600 -246", "0 0 0", "shadow_no" ); patch_ladder( "-9260 -5130 -152", "1 14 0" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Starting rooftop with a wrongway sign has excess nav behind + // it -- block access to it, which also blocks a permstuck. + + make_clip( "_tankstuck_startroof", "SI Players", 1, "-106 -240 0", "86 240 196", "-2936 -816 -58" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c5m3_cemetery.nut b/root/scripts/vscripts/community/maps/c5m3_cemetery.nut index 140509f9..6f3c4d44 100644 --- a/root/scripts/vscripts/community/maps/c5m3_cemetery.nut +++ b/root/scripts/vscripts/community/maps/c5m3_cemetery.nut @@ -108,6 +108,7 @@ function DoRoundFixes() make_ladder( "_ladder_onewayleftfence_cloned_firstcrypt", "7022 -4849 197.016", "-560 985 -20" ); make_ladder( "_ladder_overpassfence_cloned_flamingofence", "4830 3840 57", "2793 2190 1399", "17 -90 0", "0 1 0" ); make_ladder( "_ladder_overpassjumpqol_cloned_startfence", "5940 8462 89.6381", "-2301 14862 210", "0 -90 0", "-1 0 0" ); + make_ladder( "_ladder_permstuckmanhole_cloned_manholeblownwall", "3778 656 100", "3769 2954 -42", "0 -90 0", "0 -1 0" ); make_ladder( "_ladder_pinkhouseB_cloned_manholeblownwall", "3778 656 100", "69 3452 -12" ); make_ladder( "_ladder_pinkhouseT_cloned_manholeblownwall", "3778 656 100", "69 3452 180" ); make_ladder( "_ladder_sewerhole1_cloned_flamingofence", "4830 3840 57", "9345 -3869 -274", "0 90 0", "0 -1 0" ); diff --git a/root/scripts/vscripts/community/maps/c5m4_quarter.nut b/root/scripts/vscripts/community/maps/c5m4_quarter.nut index e5cffa09..ff4074de 100644 --- a/root/scripts/vscripts/community/maps/c5m4_quarter.nut +++ b/root/scripts/vscripts/community/maps/c5m4_quarter.nut @@ -87,4 +87,15 @@ function DoRoundFixes() make_ladder( "_ladder_prefloatalley_cloned_unusedwrongway", "-26 1728 234", "-1852 1566 -4", "0 -90 0", "0 -1 0" ); make_ladder( "_ladder_unusedareain_cloned_onewayvanfence", "-2512 2434 144", "270 765 0" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" || g_MutaMode == "mutation19" ) + { + // Worst map for stuck spawns. Delete all, Skybox and clipping + // bounds the player in and unused perimeter ladders will be put + // to use. There's not even any walkable void under this map. + + EntFire( "func_playerinfected_clip", "Kill" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c6m1_riverbank.nut b/root/scripts/vscripts/community/maps/c6m1_riverbank.nut index 47ad3f56..c11a81e9 100644 --- a/root/scripts/vscripts/community/maps/c6m1_riverbank.nut +++ b/root/scripts/vscripts/community/maps/c6m1_riverbank.nut @@ -110,7 +110,7 @@ function DoRoundFixes() make_clip( "_ladder_startalternativeB_clipleft", "Everyone", 1, "-8 -16 0", "8 16 249", "701 4025 96", "0 -45 0" ); make_clip( "_ladder_startalternativeB_clipright", "Everyone", 1, "-8 -16 0", "8 16 249", "701 4071 96", "0 45 0" ); make_clip( "_ladder_upperbalconynear_clip", "Everyone", 1, "-3 0 0", "3 16 372", "3968 1822 199", "0 11 0" ); - make_clip( "_infected_mapescape", "SI Players", 1, "-40 -350 -20", "40 440 245", "-1997 1497 192" ); + make_clip( "_infected_mapescape", "SI Players", 1, "-1000 -350 -20", "40 808 245", "-1997 1497 192" ); make_ladder( "_ladder_brideentryleft_cloned_brideentryright", "196 422 574", "1199 -13 -20" ); make_ladder( "_ladder_elecbox_cloned_bluebin", "2528 1030 342", "-2652 -253 42" ); make_ladder( "_ladder_elecboxsafehouse_cloned_bluebin", "2528 1030 342", "-6434 498 516" ); @@ -137,4 +137,14 @@ function DoRoundFixes() make_prop( "dynamic", "_solidify_endchimney", "models/props_urban/chimney007.mdl", "-4027.48 830.86 1056", "2 270 0", "shadow_no" ); make_prop( "dynamic", "_tankfence_wrongway", "models/props_misc/wrongway_sign01_optimized.mdl", "-2025 1527 259", "0 326.5 0", "shadow_no", "solid_no", "255 255 255", "17", "217" ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // At the start area, extend a func_playerinfected_clip back a + // bit more to prevent a stuck spawn if Survivors stand back to fence. + + make_clip( "_tankstuck_startfence", "SI Players", 1, "-251 -760 0", "173 216 1513", "-261 2872 87" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c7m2_barge.nut b/root/scripts/vscripts/community/maps/c7m2_barge.nut index fc0a9f81..9f4d44fd 100644 --- a/root/scripts/vscripts/community/maps/c7m2_barge.nut +++ b/root/scripts/vscripts/community/maps/c7m2_barge.nut @@ -27,11 +27,12 @@ function DoRoundFixes() // FIXES make_clip( "_scavenge_jump_woodbrush", "Survivors", 1, "-842 -8 0", "216 8 988", "-9100 392 262" ); - } if ( HasPlayerControlledZombies() ) { + kill_funcinfclip( 196.497 ); // Allow SI access into end closet (the only funcinfclip in entire map) + make_ladder( "_ladder_bluecontback_cloned_bluecontfront", "6787.2104 2431.76 196", "13183 4909 -6", "0 180 0", "-1 0 0" ); make_ladder( "_ladder_comicboatsleftL_cloned_toolhouse", "-633 2008 254.462", "2764 -592 -344", "6 64.4 0", "0.43 0.9 0" ); make_ladder( "_ladder_comicboatsleftR_cloned_toolhouse", "-633 2008 254.462", "2738 -580 -344", "6 64.4 0", "0.43 0.9 0" ); diff --git a/root/scripts/vscripts/community/maps/c8m1_apartment.nut b/root/scripts/vscripts/community/maps/c8m1_apartment.nut index fd34903f..2d6c36fb 100644 --- a/root/scripts/vscripts/community/maps/c8m1_apartment.nut +++ b/root/scripts/vscripts/community/maps/c8m1_apartment.nut @@ -70,7 +70,7 @@ function DoRoundFixes() make_clip( "_ladder_subwaybricks_clip", "Everyone", 1, "-1 -8 0", "2 8 128", "2814 4104 16" ); make_clip( "_meticulous_funcinfclip01", "SI Players", 1, "-1 -28 0", "3 28 74", "2293 850 322" ); make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-8 -619 0", "185 629 1089", "3175 3371 832" ); - make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-153 -812 0", "293 308 4132", "153 2988 352" ); + make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-153 -812 -336", "293 308 4132", "153 2988 352" ); make_clip( "_meticulous_funcinfclip04", "SI Players", 1, "0 -846 0", "389 794 687", "-5 4298 466" ); make_clip( "_meticulous_funcinfclip05", "SI Players", 1, "-153 -128 -336", "104 0 4132", "153 2176 352" ); make_clip( "_yesdraw_dairy_clipa", "SI Players", 1, "-330 -231 0", "311 249 3952", "1737 5767 528" ); @@ -136,4 +136,19 @@ function DoRoundFixes() DoEntFire( "!self", "AddOutput", "angles 90 20 0", 0.0, null, Entities.FindByClassnameNearest( "func_illusionary", Vector( 2296, 1340, 349.91 ), 1 ) ); DoEntFire( "!self", "AddOutput", "origin 2391 1335 16", 0.0, null, Entities.FindByClassnameNearest( "func_illusionary", Vector( 2296, 1340, 349.91 ), 1 ) ); } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // No Survival on this map, and no Tanks in Scavenge, so extend + // a few func_playerinfected_clip with these. + + make_clip( "_tankstuck_alleystart", "SI Players", 1, "-105 -711 0", "823 57 4132", "2473 455 16" ); + make_clip( "_tankstuck_alleymiddle", "SI Players", 1, "-127 -257 0", "209 256 4468", "-129 3584 16" ); + + // And preserve an actually cool Tank spawn by deleting 1 clip. + + kill_funcinfclip( 1060.85 ); // Delete clip that blocks the rubble and a cool unique spawn + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c8m2_subway.nut b/root/scripts/vscripts/community/maps/c8m2_subway.nut index 7ef302fd..732eff90 100644 --- a/root/scripts/vscripts/community/maps/c8m2_subway.nut +++ b/root/scripts/vscripts/community/maps/c8m2_subway.nut @@ -6,6 +6,7 @@ PrecacheModel( "models/props_update/c8m2_generatorroom.mdl" ); PrecacheModel( "models/props_swamp/plank001b_192.mdl" ); PrecacheModel( "models/props_update/c8m1_rooftop_3.mdl" ); PrecacheModel( "models/props_misc/wrongway_sign01_optimized.mdl" ); +PrecacheModel( "models/props/cs_office/vending_machine.mdl" ); function DoRoundFixes() { @@ -76,9 +77,9 @@ function DoRoundFixes() make_clip( "_generator_qolstep1", "SI Players", 1, "0 -96 0", "0.1 96 8", "8021 2880 16" ); make_clip( "_generator_qolstep2", "SI Players", 1, "0 -96 0", "0.1 96 8", "8021 3168 16" ); make_clip( "_ladder_deadendrubble_clip", "Everyone", 1, "-18 -39 -87", "13 107 -5", "2149 3922 -242", "0 14 0" ); - make_clip( "_ladder_generatorwindow_clipa", "SI Players", 1, "-4 -40 -56", "4 128 231", "7944 2512 425" ); - make_clip( "_ladder_generatorwindow_clipb", "SI Players", 1, "-4 -40 -56", "4 128 231", "7568 2512 425" ); - make_clip( "_ladder_generatorwindow_clipc", "SI Players", 1, "-170 -10 -56", "214 10 231", "7734 2462 425" ); + make_clip( "_ladder_generatorwindow_clipa", "SI Players", 1, "-4 -40 -56", "376 128 231", "7944 2512 425" ); + make_clip( "_ladder_generatorwindow_clipb", "SI Players", 1, "-400 -40 -56", "4 128 231", "7568 2512 425" ); + make_clip( "_ladder_generatorwindow_clipc", "SI Players", 1, "-566 -216 -56", "586 10 231", "7734 2462 425" ); make_clip( "_ladder_tanksubqol_clip", "Everyone", 1, "-22 3 0", "9 7 152", "6290 3284 -336", "0 -20 0" ); make_clip( "_ladder_tanksubway_clip", "SI Players", 1, "-17 -43 0", "16 -2 8", "6999 2919 -188" ); make_clip( "_ladder_tanksubwreck_clip", "Everyone", 1, "-38 -6 0", "38 1 8", "4306 4053 -231", "0 -21 0" ); @@ -119,4 +120,32 @@ function DoRoundFixes() unsolidify_model( "models/props/de_nuke/IndustrialLight01.mdl" ); } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" ) + { + // Multiple stuck spawns are only relevant to Taaannnk! Mutation, + // except for this: copy the invisible vending machine so players + // have a visible "step" to get back in bounds. (Not actually stuck) + + make_prop( "dynamic", "_cosmetic_oobstep", "models/props/cs_office/vending_machine.mdl", "7366 3801 270", "90 0 0", "shadow_no", "solid_no" ); + } + + if ( g_MutaMode == "mutation19" ) + { + // Multiple tunnel stuck spawns that aren't accessible in Survival, + // that need to only be fixed for Taaannnk! Mutation. Navmesh is + // excessive and extends too far behind these rubbles/wrongways. + + make_clip( "_tankstuck_rubblestart", "SI Players", 1, "-139 -107 0", "119 99 177", "1621 3617 -337", "0 42 0" ); + make_clip( "_tankstuck_rubblemiddle", "SI Players", 1, "-189 -145 0", "300 179 240", "6766 5299 -336", "0 -68 0" ); + make_clip( "_tankstuck_rubblefinal", "SI Players", 1, "-189 -253 0", "140 320 176", "8249 3222 -336", "0 -53 0" ); + + // Multiple difficult-but-possible to spawn stuck areas in end area. + + make_clip( "_tankstuck_endalley1", "SI Players", 1, "-480 -855 0", "65 293 1400", "10303 3479 16" ); + make_clip( "_tankstuck_endalley2", "SI Players", 1, "-373 -96 0", "395 99 1400", "11637 5342 16" ); + make_clip( "_tankstuck_widestreet", "SI Players", 1, "-842 0 0", "386 555 1400", "10110 6784 8" ); + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c8m3_sewers.nut b/root/scripts/vscripts/community/maps/c8m3_sewers.nut index c8ffe706..31672452 100644 --- a/root/scripts/vscripts/community/maps/c8m3_sewers.nut +++ b/root/scripts/vscripts/community/maps/c8m3_sewers.nut @@ -6,6 +6,7 @@ PrecacheModel( "models/props_misc/wrongway_sign01_optimized.mdl" ); PrecacheModel( "models/props_mill/pipeset08d_64_001a.mdl" ); PrecacheModel( "models/props_industrial/wire_spool_02.mdl" ); PrecacheModel( "models/props_rooftop/acvent02.mdl" ); +PrecacheModel( "models/props_fairgrounds/alligator.mdl" ); function DoRoundFixes() { @@ -45,6 +46,11 @@ function DoRoundFixes() EntFire( "washer_lift_button2", "AddOutput", "OnPressed " + g_UpdateName + "_ladderqol_scissorlift:AddOutput:origin 12687 7170 200:10:-1" ); EntFire( "washer_lift_button2", "AddOutput", "OnPressed " + g_UpdateName + "_ladderqol_scissorlift:Kill::12:-1" ); + // Mitigator for getting stuck in scissor lift + + make_axiswarp( "_axiswarp_scissorlift", "y-", 50, "-53 0 -183", "7 7 42", "12687 7171 16" ); + EntFire( "washer_lift_button2", "AddOutput", "OnPressed " + g_UpdateName + "_axiswarp_scissorlift_trigmult:AddOutput:origin 12687 7171 62:4:-1" ); + EntFire( "washer_lift_button2", "AddOutput", "OnPressed " + g_UpdateName + "_axiswarp_scissorlift_trigmult:Kill::6:-1" ); if ( g_BaseMode == "versus" ) { @@ -62,8 +68,8 @@ function DoRoundFixes() make_clip( "_shortcut_booster_TMP2", "Survivors", 1, "-24 -303 0", "24 304 972", "11032 7048 252" ); EntFire( "washer_lift_button2", "AddOutput", "OnPressed " + g_UpdateName + "_shortcut_booster_TMP*:Kill::0:-1" ); - } + if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); @@ -73,7 +79,6 @@ function DoRoundFixes() con_comment( "LOGIC:\tGas Station explosion will alternatively start Survival timer." ); EntFire( "gas_explosion_sound_relay", "AddOutput", "OnTrigger director:PanicEvent::2:-1" ); - } function c8m3_DynamicLadder() @@ -104,9 +109,9 @@ function DoRoundFixes() make_brush( "_losfix_sewage_tank2a", "-132 -1 -6", "132 1 6", "13042 7891 -251" ); make_brush( "_losfix_sewage_tank2b", "-132 -1 -6", "132 1 6", "13042 8120 -251" ); make_brush( "_losfix_sewage_tank2c", "-132 -1 -6", "132 1 6", "13040 8300 -251" ); - make_clip( "_burgerfence_blocker1", "SI Players", 1, "-419 -675 0", "-409 615 1202", "10137 6395 8" ); + make_clip( "_burgerfence_blocker1", "SI Players", 1, "-537 -675 0", "-409 615 1202", "10137 6395 8" ); make_clip( "_burgerfence_blocker2", "SI Players", 1, "-419 -675 0", "384 -665 1202", "10137 6395 8" ); - make_clip( "_burgerfence_blocker3", "SI Players", 1, "-419 605 0", "384 615 1202", "10137 6395 8" ); + make_clip( "_burgerfence_blocker3", "SI Players", 1, "-880 605 0", "384 2372 1202", "10137 6395 8" ); make_clip( "_ladder_burgerfenceshared_clip", "SI Players", 1, "0 -434 0", "6 398 149", "10521 6386 8" ); make_clip( "_ladder_scissormini_clipleft", "Everyone", 1, "-18 -8 0", "18 8 106", "12044 7545 323", "0 -45 0" ); make_clip( "_ladder_scissormini_clipright", "Everyone", 1, "-18 -8 0", "18 8 106", "12094 7545 323", "0 45 0" ); @@ -115,6 +120,7 @@ function DoRoundFixes() make_clip( "_meticulous_funcinfclip01", "SI Players", 1, "-8 -295 0", "8 319 601", "15184 11445 608" ); make_clip( "_meticulous_funcinfclip02", "SI Players", 1, "-156 -6 0", "228 6 473", "14964 11156 736" ); make_clip( "_meticulous_funcinfclip03", "SI Players", 1, "-207 -16 0", "175 61.5 463", "13584 10754 746" ); + make_clip( "_tankqol_warehousestrip", "SI Players", 1, "-16 -813 0", "48 731 666", "10488 7589 540" ); make_clip( "_waterworks_blocker", "SI Players", 1, "-8 -728 0", "8 358 412", "13008 7408 800" ); make_clip( "_waterworks_collision", "SI Players", 1, "-41 -245 0", "32 247 110", "12761 7407 857" ); make_ladder( "_ladder_brickapartment_cloned_unusedmercyback", "11899.5 12470 232", "-460 -6825 112" ); @@ -152,4 +158,59 @@ function DoRoundFixes() EntFire( "gas_explosion_sound_relay", "AddOutput", "OnTrigger worldspawn:CallScriptFunction:c8m3_DynamicLadder:2:-1" ); } + + // Fire once and only for Clients (Survivor+Infected). Scurries away after + // 1 second when viewed at any angle, even if only Fred sees the player + // for that long. 1 in 4 chance spawn, but realistically rarer. Fred is + // child to the func_movelinear which is Killed. + + if ( RandomInt( 1, 4 ) == 4 ) + { + make_prop( "dynamic", "_fred", "models/props_fairgrounds/alligator.mdl", "13103 11543 -25", "0 125 0", "shadow_no", "solid_no" ); + + SpawnEntityFromTable( "func_movelinear", + { + targetname = g_UpdateName + "_fred_movelinear", + spawnflags = 0, + movedistance = 100, + speed = 60, + startposition = 0, + movedir = Vector( 0, 37, 0 ), + origin = Vector( 13099, 11539, -25 ) + } ); + + EntFire( g_UpdateName + "_fred", "SetParent", g_UpdateName + "_fred_movelinear" ); + + SpawnEntityFromTable( "trigger_look", + { + targetname = g_UpdateName + "_fred_triglook", + target = g_UpdateName + "_fred", + spawnflags = 129, + LookTime = 1, + FieldOfView = -1, + origin = Vector( 13072, 11520, -25 ) + } ); + + EntFire( g_UpdateName + "_fred_triglook", "AddOutput", "mins -42 -38 -480" ); + EntFire( g_UpdateName + "_fred_triglook", "AddOutput", "maxs 42 38 0" ); + EntFire( g_UpdateName + "_fred_triglook", "AddOutput", "solid 2" ); + EntFire( g_UpdateName + "_fred_triglook", "AddOutput", "OnTrigger " + g_UpdateName + "_fred_movelinear:Open::0:-1" ); + EntFire( g_UpdateName + "_fred_triglook", "AddOutput", "OnTrigger " + g_UpdateName + "_fred_movelinear:Kill::2:-1" ); + } + + // Resolve stuck Tank spawns for Taaannnk! Mutation. + + if ( g_MutaMode == "mutation19" ) + { + // Only problems at beginning (due to func_playerinfected_clip, + // which note bot SI can also spawn behind but at least move + // through that), and several end clips -- nothing in Survival area, + // also supplemented with anv_ file make_clip() thickenings. + + make_clip( "_tankstuck_startrooftops", "SI Players", 1, "-1749 -380 0", "219 332 750", "12261 4212 464" ); + + kill_funcinfclip( 606.217 ); // Delete clip behind a fence and inaccessible ladder + kill_funcinfclip( 733.138 ); // Delete clip for end area backstreet wrongway sign left + kill_funcinfclip( 762.564 ); // Delete clip for end area backstreet wrongway sign right + } } \ No newline at end of file diff --git a/root/scripts/vscripts/community/maps/c9m2_lots.nut b/root/scripts/vscripts/community/maps/c9m2_lots.nut index 2b8cd9f4..3160c1e1 100644 --- a/root/scripts/vscripts/community/maps/c9m2_lots.nut +++ b/root/scripts/vscripts/community/maps/c9m2_lots.nut @@ -78,4 +78,21 @@ function DoRoundFixes() kill_funcinfclip( 159.458 ); // Delete clip in 6th closet EntFire( "worldspawn", "RunScriptCode", "kill_funcinfclip( 159.458 )", 1 ); // Delete clip in 7th closet (same) } + + // Resolve stuck Tank spawns for Versus Survival & Taaannnk! Mutation. + + if ( g_MutaMode == "mutation15" ) + { + // Delete 1 *.LMP roadsidefence model to facilitate Infected player travel. + + kill_entity( Entities.FindByClassnameNearest( "prop_dynamic", Vector( 8521, 5815, 348 ), 1 ) ); + } + + if ( g_MutaMode == "mutation19" ) + { + // Slightly extend a func_playerinfected_clip back further behind + // starting safe room to fully block all navmesh behind there. + + make_clip( "_tankstuck_startback", "SI Players", 1, "-120 -900 0", "120 900 1370", "-835 -110 -223" ); + } } \ No newline at end of file