printl( "VSCRIPT: Running anv_mapfixes.nut" ); /***************************************************************************** ** This file is RunScriptFile'd on "worldspawn" by mapspawn.nut and its function ** for spawning in the map-specific fixes exists forever in its scope. Fixes ** add or modify entities once per round, unlike mapspawn.nut which only runs ** once per load session. This will be the most-updated file. ** ** Originally a func_orator hack was required to get mapname from the Response ** System with a new "GetQueryData" -- Kerry's C++ updates made all this easy. *****************************************************************************/ // Deleted super hacky code. Thank you Kerry for making our lives so much better! /***************************************************************************** ** Game Event "player_connect_full" fires when a player has sent final message ** in connection sequence. Infected ladder VSSM's exist narrowly before this ** so in most cases InfectedLadders_Spawn() will complete instantly, but it's ** still there as backup. Required because some maps like Dead Center 1 fire ** the much-earlier "round_start" before this file has even loaded (and that ** was regardless of mapspawn.nut run order and file sizes)! ** ** A 3-state Boolean ensures only the first "player_connect_full" will spawn ** in that round's entities, which then hands off all subsequent round entity ** spawns to "round_start" -- Infected ladder VSSM's exist forever, as well. ** While possible to spawn in new clips/props instantly, that's incompatible ** with EntFire() on BSP-spawned entities -- of which delays ensure existence. ** Hand-off was tested with spammy events like "player_entered_start_area". ** ** There's minor SourceMod rumors that "player_connect_full" isn't 100% stable ** given various bugged connection states, but it'll always fire for somebody. ** Functions like patch_nav_obscured() rely on "g_UpdateRanOnce == false" to ** only apply NAV changes once (which exist for all rounds) -- it's set "true" ** at the end of this file with a one second delay for RunScriptFile cushion. ** Last line needed as we're not already running as a Mutation in Scripted Mode. *****************************************************************************/ function OnGameEvent_player_connect_full( params ) { if ( g_UpdateRanOnce == null ) { g_UpdateRanOnce = false; Apply_Quadmode_Map_Specific_Fixes(); } } function OnGameEvent_round_start( params ) { if ( g_UpdateRanOnce == true ) { Apply_Quadmode_Map_Specific_Fixes(); } } __CollectEventCallbacks( this, "OnGameEvent_", "GameEventCallbacks", RegisterScriptGameEventListener ); /***************************************************************************** ** Function that spawns in the map-specific fixes for any Mutation/Base mode. ** ** If highly specific Mutation fixes are to be applied, caution using "break;" ** to ensure we're only patching that Mutation (i.e. VS Survival is "mutation15"). ** ** This is run on every "round_start" GameEvent which guarantees map entities ** will have already loaded in allowing for direct AddOutputs to modify logic. ** Elaborate fixes are put in separate files and RunScriptFile'd here. ** ** Note that basemode "coop" does not include "realism", but if base "realism" ** the player experience will always be equivalent to that of Coop -- so check ** for both, and don't worry about "VS Realism" because that's base "versus". ** Resolves issue with Versus-only fixes undesirably existing for Realism Coop. ** ** Speedy code goes in, speedy fix comes out. *****************************************************************************/ ::Apply_Quadmode_Map_Specific_Fixes <- function() { // Add reliably-named Survivor and Infected team filters to every map. // These are deleted if it's a "COMMUNITY" (unknown) map. SpawnGlobalFilters(); // Fixes requiring new trigger_multiple and trigger_once entity spawns // are pooled separately. While anv_mapfixes.nut is designed for high // density with "make_" functions or modifying logic by piggybacking on // existing I/O, anv_maptrigs.nut houses all lengthy one-off fixes in // a standalone switch-case. Only console logs if it's a matching map. EntFire( "worldspawn", "RunScriptFile", "anv_maptrigs" ); // Versus-specific content which only spawns if HasPlayerControlledZombies() // is true. Includes new Infected ladders and any supporting props i.e. pipes. // Exclude VS Survival (mutation15) from only overtly obvious new props. //by_Harry //just load the god damn "anv_versus.nut" Script anyway if ( HasPlayerControlledZombies() == true || HasPlayerControlledZombies() == false ) { EntFire( "worldspawn", "RunScriptFile", "anv_versus" ); // If it's VS Survival (mutation15), delete new props that obstruct // Survivor movement since their play space is already limited. This // includes c2m5's hittable dumpsters, c3m3's hittable log, & c10m5's // LOS blocker props/clips/navblocks and its log/rock hittables. if ( g_MutaMode == "mutation15" ) { EntFire( g_UpdateName + "_hittable_dump*", "Kill", null, 0.1 ); EntFire( g_UpdateName + "_hittable_fallentree", "Kill", null, 0.1 ); EntFire( g_UpdateName + "_rock*", "Kill", null, 0.1 ); EntFire( g_UpdateName + "_hittable_log", "Kill", null, 0.1 ); EntFire( g_UpdateName + "_hittable_rock", "Kill", null, 0.1 ); } } // Map fixes for Valve. // Dev Thread: https://steamcommunity.com/app/550/discussions/1/1651043320659915818/ // Fix forklifts so they can start obstructed but still be destroyed. local forklift = null; while ( forklift = Entities.FindByModel( forklift, "models/props/cs_assault/forklift.mdl" ) ) { if ( forklift.IsValid() ) { NetProps.SetPropInt( forklift, "m_iMinHealthDmg", 400 ); NetProps.SetPropInt( forklift, "m_takedamage", 3 ); } } switch( g_MapName ) { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*============================== || || || DEATH TOLL || || || ==============================*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c10m2_drainage": { g_Chapter = "DEATH TOLL - THE DRAINS"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_commonhop_cisterntunnela", "Survivors", 1, "-17 -80 0", "17 80 164", "-9477 -7279 -308" ); make_clip( "_commonhop_cisterntunnelb", "Survivors", 1, "-80 -17 0", "80 17 164", "-9872 -6886 -308" ); make_clip( "_commonhop_bagstoroof", "Survivors", 1, "-420 -1600 -100", "420 171 920", "-7118 -6111 351" ); make_clip( "_unattackable_pipea", "Survivors", 1, "-80 -4 -56", "80 669 88", "-7790 -8110 -388" ); make_clip( "_unattackable_pipeb", "Survivors", 1, "-4 -80 -56", "669 80 88", "-8339 -9043 -388" ); make_clip( "_unattackable_pipec", "Survivors", 1, "-4 -80 -56", "669 80 88", "-9144 -9043 -388" ); make_clip( "_nav_electricalbox", "Survivors", 1, "-6 -30 0", "3 27 172", "-10806 -8537 -347", "0 -45 0" ); make_clip( "_unattackable_debrisfall", "Survivors", 1, "-119 -137 0", "74 113 12", "-9870 -8168 -180" ); make_clip( "_cliprework_cisternroof", "Survivors", 1, "-124 -136 12", "132 120 22", "-9860 -7288 -98" ); make_clip( "_cliprework_endrooftop1", "Survivors", 1, "-270 -550 -151", "270 514 662", "-6448 -6730 620" ); make_clip( "_cliprework_endrooftop2", "Survivors", 1, "-8 -366 0", "8 318 1026", "-7500 -5634 256" ); make_clip( "_nav_cistern_anomaly", "Survivors", 1, "-17 -6 0", "11 4 127", "-9859 -7064 -221" ); make_clip( "_nav_cistern_highpipe1", "Survivors", 1, "-23 -56 0", "23 56 97", "-9935 -6961 -191" ); make_clip( "_nav_cistern_highpipe2", "Survivors", 1, "-21 -60 0", "29 59 75", "-9812 -6957 -169" ); make_clip( "_nav_cistern_highpipe3", "Survivors", 1, "-42 -16 0", "39 16 83", "-9533 -7217 -169" ); make_clip( "_nav_cistern_tunnelexit", "Survivors", 1, "-80 -11 0", "82 13 125", "-9872 -7669 -219" ); make_clip( "_nav_cistern_angpipe1", "Survivors", 1, "-31 -93 0", "20 128 135", "-9988 -7555 -229", "0 -20 0" ); make_clip( "_nav_cistern_angpipe2", "Survivors", 1, "-31 -93 0", "20 128 135", "-10155 -7450 -229", "0 -60 0" ); make_clip( "_nav_cistern_angpipe3", "Survivors", 1, "-31 -93 0", "20 128 135", "-10166 -7137 -229", "0 -110 0" ); make_clip( "_nav_cistern_angpipe4", "Survivors", 1, "-31 -93 0", "20 128 135", "-9723 -6991 -229", "0 -195 0" ); make_clip( "_nav_cistern_angpipe5", "Survivors", 1, "-31 -93 0", "20 128 135", "-9727 -7542 -229", "0 -150 0" ); make_clip( "_ledgehang_endsaferoof", "Survivors", 1, "-279 -66 0", "231 66 93", "-8361 -5553 131" ); make_clip( "_smoother_pipes1", "Everyone", 1, "-640 -2 -28", "204 2 32", "-8712 -7404 -609", "-19 0 36" ); make_clip( "_smoother_pipes2", "Everyone", 1, "-640 -2 -28", "204 2 32", "-8712 -7159 -615", "-19 0 -36" ); make_clip( "_smoother_pipes3", "Everyone", 1, "-207 -2 -28", "243 2 32", "-8307 -7154.5 -541", "0 0 -36" ); make_clip( "_chargerassist_eventbutton", "Survivors", 1, "-82 -16 0", "82 64 100", "-8706 -7744 -308" ); make_clip( "_chargerassist_footlocker", "Survivors", 1, "-64 -82 0", "8 82 100", "-8992 -8554 -308" ); make_clip( "_grating_smoothera", "Everyone", 1, "-326 -450 -2", "0 0 1", "-8642 -7855 -528.613" ); make_clip( "_grating_smootherb", "Everyone", 1, "-326 -495 -2", "-45 -450 1", "-8642 -7855 -528.613" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES make_clip( "_shortcut_commonhop", "Survivors", 1, "-25 69 -89", "-22 73 91", "-8050 -8422 -487" ); make_clip( "_bunnyhop_endwindow", "Survivors", 1, "-606 -7 0", "100 7 128", "-7998 -6007 -48" ); make_clip( "_commonhop_pipe", "Survivors", 1, "-4 -104 -56", "4 104 56", "-8044 -7280 -408" ); make_clip( "_cliprework_commonhop", "Survivors", 1, "-172 -8 -44", "172 8 44", "-6452 -6008 136" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_shortcut_commonhop", "Survivors", 1, "-25 69 -89", "-22 73 91", "-8050 -8422 -487" ); make_clip( "_bunnyhop_endwindow", "Survivors", 1, "-606 -7 0", "100 7 128", "-7998 -6007 -48" ); make_clip( "_commonhop_pipe", "Survivors", 1, "-4 -104 -56", "4 104 56", "-8044 -7280 -408" ); make_clip( "_cliprework_commonhop", "Survivors", 1, "-172 -8 -44", "172 8 44", "-6452 -6008 136" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c10m3_ranchhouse": { g_Chapter = "DEATH TOLL - THE CHURCH"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_commonhop_saferoom", "Survivors", 1, "-576 -2892 -165", "576 368 1000", "-8080 -5684 421" ); make_clip( "_commonhop_traintoroof", "Survivors", 1, "-789 -626 -165", "744 762 994", "-12000 -8094 286" ); make_clip( "_commonhop_stationroof", "Survivors", 1, "-184 -430 -200", "174 380 470", "-12632 -6040 500" ); make_clip( "_dispcrouch_flatcartunnel", "Everyone", 1, "-100 -38 -64", "38 38 256", "-12534 -3574 -36" ); make_clip( "_holdoutsafe_cabinmountain", "Survivors", 1, "-340 -50 -245", "340 50 1122", "-7518 -2770 307" ); make_clip( "_cliprework_watchtower", "Survivors", 1, "0 -358 0", "358 0 180", "-10438 -6325 542" ); make_clip( "_cliprework_rockcliff01", "Survivors", 1, "-600 -160 -592", "911 160 592", "-6272 -2688 848" ); make_clip( "_cliprework_roadblock", "Survivors", 1, "-45 -1200 0", "45 455 512", "-4585 -944 496" ); make_clip( "_cliprework_churchlonga", "Survivors", 1, "-45 -9 -555", "2310 9 944", "-4533 -503 496" ); make_clip( "_cliprework_rockcliff02", "Survivors", 1, "-145 -360 -420", "180 216 592", "-7043 -3005 848" ); make_clip( "_cliprework_churchlongb", "Survivors", 1, "-9 -45 -369", "9 2400 1166", "-2232 -467 290" ); make_clip( "_clipextend_trainstationa", "Survivors", 1, "-24 -1300 0", "24 1300 640", "-12811 -7486 344" ); make_clip( "_clipextend_trainstationb", "Survivors", 1, "-1200 -9 0", "216 77 690", "-13001 -5725.4 344" ); make_clip( "_dipscrouch_multicliff", "Everyone", 1, "-487 -60 -100", "86 4 39", "-13282 -3756 240", "0 43 0" ); make_clip( "_cliprework_church01", "Survivors", 1, "-260 -169 -80", "286 9 864", "-3070 25 576" ); make_clip( "_cliprework_church02", "Survivors", 1, "-618 -80 -80", "486 32 864", "-2710 1072 576" ); make_clip( "_cliprework_church03", "Survivors", 1, "-554 -102 -80", "486 62 864", "-3798 930 576" ); make_clip( "_cliprework_church04", "Survivors", 1, "-218 -102 -80", "206 250 864", "-4538 578 576" ); make_clip( "_cliprework_church05", "Survivors", 1, "-430 -10 -80", "206 10 864", "-4962 712 576" ); make_clip( "_cliprework_church06", "Survivors", 1, "-10 -545 -80", "10 430 864", "-5528 137 576" ); make_clip( "_cliprework_church07", "Survivors", 1, "-180 -9 -80", "80 9 864", "-3390 -135 576" ); make_clip( "_cliprework_church08", "Survivors", 1, "-100 -100 -80", "100 0 864", "-5492 667 576", "0 45 0" ); make_clip( "_cliprework_church09", "Survivors", 1, "-40 -175 -80", "20 175 864", "-3612 -319 576", "0 -24 0" ); make_clip( "_cliprework_church10", "Survivors", 1, "-80 -490 -80", "32 486 864", "-2256 506 576" ); make_clip( "_cliprework_church11", "Survivors", 1, "-144 -160 -80", "144 160 704", "-2928 448 736" ); make_clip( "_cliprework_church12", "Survivors", 1, "-226 -284 -80", "222 420 704", "-2558 220 736" ); make_clip( "_cliprework_corner1", "Survivors", 1, "-487 -60 39", "86 4 784", "-13282 -3756 240", "0 43 0" ); make_clip( "_cliprework_corner2", "Survivors", 1, "-550 -60 -17", "711 4 784", "-12651 -3566 400", "0 14 0" ); make_clip( "_tankpunch_booster", "Survivors", 1, "-8 -302 -110", "158 960 1322", "-8838 -4633 124", "0 51 0" ); make_clip( "_permstuck_triplerock", "Everyone", 1, "-78 -86 -80", "88 96 32", "-9539 -4313 16", "0 41 0" ); make_clip( "_cliprework_vulnerable", "Survivors", 1, "-1085 -16 -90", "1048 16 1192", "-8709 -3352 269", "0 34 0" ); make_clip( "_cliprework_churchwindows", "Survivors", 1, "-4 -120 0", "4 120 100", "-2372 192 194" ); make_clip( "_clipextend_padlockgate", "Survivors", 1, "-14 -311 0", "14 405 1102", "-8594 -5033 344" ); make_clip( "_permstuck_openedrockcliff", "SI Players", 1, "-17 -17 0", "17 17 32", "-9247 -3950 412" ); make_clip( "_permstuck_fatcliffladder1", "SI Players", 1, "-17 -34 0", "17 17 32", "-8302 -3322 383" ); make_clip( "_permstuck_fatcliffladder2", "SI Players", 1, "-17 -34 0", "17 17 32", "-8224 -3527 378" ); make_clip( "_chargerassist_brokenwall", "Survivors", 1, "-128 0 0", "128 64 275", "-2480 1104 221" ); make_clip( "_booster_watertowerclip", "Survivors", 1, "-538 -16 0", "348 66 900", "-6472 -871 1024", "0 15 0" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES make_clip( "_cliprework_smokertrolling", "Survivors", 1, "-207 -21 0", "219 8 259", "-11857 -5323 85" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_cliprework_smokertrolling", "Survivors", 1, "-207 -21 0", "219 8 259", "-11857 -5323 85" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c10m4_mainstreet": { g_Chapter = "DEATH TOLL - THE TOWN"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_commonhop_bankwindow", "Survivors", 1, "-120 -5 0", "120 17 1612", "-672 -4351 176" ); make_clip( "_cliprework_church", "Survivors", 1, "-256 -16 -164", "256 16 1040", "-3010 30 720.9" ); make_clip( "_cliprework_buses", "Survivors", 1, "-160 -6 -164", "160 6 620", "-1437 -461 1124" ); make_clip( "_cliprework_houses01", "Survivors", 1, "-8 -80 -0", "8 80 1221", "744 -324 512" ); make_clip( "_cliprework_houses02", "Survivors", 1, "-100 -8 -170", "100 8 1221", "854 -272 512" ); make_clip( "_cliprework_houses03", "Survivors", 1, "-100 -8 -100", "100 8 1221", "1400 -158 512" ); make_clip( "_cliprework_houses04", "Survivors", 1, "-32 -8 -70", "32 8 1221", "1993 -254 512" ); make_clip( "_cliprework_houses05", "Survivors", 1, "-400 -8 -150", "32 216 1221", "2883 -465 602" ); make_clip( "_dispcrouch_spawn", "Everyone", 1, "-140 -32 -64", "100 32 90", "-4294 -1729 -2", "0 -5 0" ); make_clip( "_cliprework_unattackable", "Survivors", 1, "-8 -396 -164", "24 216 850", "-1608 -2368 884" ); make_clip( "_cliprework_electricalbox", "Survivors", 1, "-6 -33 0", "5 25 406", "2667 -1769 164" ); make_clip( "_cliprework_windows", "Survivors", 1, "-16 -304 -20", "0 288 68", "2688 -2136 372" ); make_clip( "_cliprework_balcony", "Survivors", 1, "-86 -50 0", "84 46 1392", "2822 -1694 336" ); make_clip( "_cliprework_awning", "Survivors", 1, "-68 -103 -68", "43 107 1431", "2885 -1580 297" ); make_trighurt( "_instakill_deathcharger", "Survivor", "-256 -453 -17", "256 453 0", "-2449 122 -43" ); patch_spawninfront( "288 -5284 93", "0 -96 0", "544 96 17" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES make_clip( "_cliprework_trucknuke", "Survivors", 1, "-180 -60 -2", "115 60 1624", "693 -1867 105", "0 43 0" ); make_clip( "_cliprework_eventskip1", "Survivors", 1, "-55 -1 0", "58 1 1588", "852 -2433 140" ); make_clip( "_cliprework_eventskip2", "Survivors", 1, "-209 -2 0", "192 2 1588", "661 -2569 140", "0 45 0" ); make_clip( "_cliprework_eventskip3", "Survivors", 1, "-156 -1 0", "141 1 1588", "372 -2717 140" ); make_clip( "_cliprework_eventskip4", "Survivors", 1, "-26 -59 0", "-24 41 1588", "242 -2757 140" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_cliprework_trucknuke", "Survivors", 1, "-180 -60 -2", "115 60 1624", "693 -1867 105", "0 43 0" ); make_clip( "_cliprework_eventskip1", "Survivors", 1, "-55 -1 0", "58 1 1588", "852 -2433 140" ); make_clip( "_cliprework_eventskip2", "Survivors", 1, "-209 -2 0", "192 2 1588", "661 -2569 140", "0 45 0" ); make_clip( "_cliprework_eventskip3", "Survivors", 1, "-156 -1 0", "141 1 1588", "372 -2717 140" ); make_clip( "_cliprework_eventskip4", "Survivors", 1, "-26 -59 0", "-24 41 1588", "242 -2757 140" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES make_clip( "_booster_eatsign", "Survivors", 1, "-10 -64 -48", "10 69 1442", "-1649 -3723 293" ); break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c10m5_houseboat": { g_Chapter = "DEATH TOLL - BOAT HOUSE FINALE"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_cliprework_startarea02", "Survivors", 1, "-1500 -16 -124", "1500 16 880", "2738 3824 412" ); make_clip( "_cliprework_startarea01", "Survivors", 1, "-16 -1080 -216", "16 0 700", "1311.5 3785 596" ); make_clip( "_cliprework_startarea03", "Survivors", 1, "-16 -1710 -450", "16 0 500", "4250 3811 792" ); make_clip( "_permstuck_cornertree", "SI Players", 1, "-17 -17 -17", "17 17 17", "4414.32 1858 17" ); make_clip( "_solidify_railposta", "Everyone", 1, "-6 -2 0", "6 2 33.8", "3924 -4516 -24" ); make_clip( "_solidify_railpostb", "Everyone", 1, "-6 -2 0", "6 2 33.8", "4020 -4516 -24" ); make_clip( "_solidify_railpostc", "Everyone", 1, "-2 -6 0", "2 6 33.8", "4116 -4228 -24" ); make_clip( "_solidify_railpostd", "Everyone", 1, "-2 -6 0", "2 6 33.8", "4116 -4132 -24" ); make_clip( "_solidify_railposte", "Everyone", 1, "-2 -6 0", "2 6 33.8", "4116 -4036 -24" ); make_clip( "_solidify_railpostf", "Everyone", 1, "-6 -2 0", "6 2 33.8", "4020 -3940 -24" ); make_clip( "_commonhop_backyard1", "Survivors", 1, "-1 -315 0", "1 315 922", "2689 2237 347" ); make_clip( "_commonhop_backyard2", "Survivors", 1, "-502 94 -180", "511 96 922", "2179 2456 360" ); make_clip( "_commonhop_backyard3", "Survivors", 1, "-242 94 -180", "146 96 922", "1505 2509 360", "0 -24 0" ); make_clip( "_commonhop_backyard4", "Survivors", 1, "-43 -54 -1", "34 28 1", "2175 2582 219" ); make_clip( "_nav_rockcliff_complete", "Survivors", 1, "-96 -348 -440", "15 276 1058", "6430 -4504 222", "0 6 0" ); make_clip( "_permstuck_rockclipwedge", "Survivors", 1, "-44 -246 -111", "38 166 1037", "1386 -4758 -161" ); // Not confirmed canon. Drainage fence or ranchhouse padlock are equally open-ended. make_prop( "dynamic", "_laststand_truck", "models/props_vehicles/pickup_truck_2004.mdl", "1261.08 1237.97 -207.962", "3.2 191.071 3.5", "shadow_yes", "solid_yes", "67 108 112" ); make_prop( "dynamic", "_laststand_truckglass", "models/props_vehicles/pickup_truck_2004_glass.mdl", "1261.08 1237.97 -207.962", "3.2 191.071 3.5", "shadow_no", "solid_yes", "67 108 112" ); make_prop( "dynamic", "_laststand_ammocan1", "models/props/de_prodigy/ammo_can_02.mdl", "1345.13 1232.73 -158.673", "-1.487 280.487 1.214" ); make_prop( "dynamic", "_laststand_ammocan2", "models/props/de_prodigy/ammo_can_02.mdl", "1337.56 1234.67 -164.912", "-1.487 280.487 1.214" ); make_prop( "dynamic", "_laststand_oldmanmurray", "models/props_crates/static_crate_40.mdl", "1310 1260.02 -166.166", "1.214 190.519 1.488" ); make_prop( "dynamic", "_laststand_ammocan3", "models/props/de_prodigy/ammo_can_02.mdl", "1305.72 1280.81 -142.713", "1.188 191.518 85.509" ); make_prop( "dynamic", "_laststand_lantern", "models/props_unique/spawn_apartment/lantern.mdl", "1340 1251 -163.04", "1.201 191.019 3.498", "shadow_no", "solid_no" ); // The only finale without a one-way point-of-no-return... until now! (No delay needed for this trigger_finale inject) con_comment( "LOGIC:\tRockslide and point-of-no-return entities will spawn when finale is started." ); function c10m5_rockslide() { make_prop( "dynamic", "_rockslide_permtree", "models/props_foliage/trees_cluster01.mdl", "4220 -314 -221.9", "-11.9 255.7 -2.05", "shadow_no" ); make_prop( "dynamic", "_rockslide_static_1a", "models/props/cs_militia/militiarock01.mdl", "4759 169 -96.8125", "18.3691 139.3506 313.0225", "shadow_no", "solid_yes", "255 255 255" ); make_prop( "dynamic", "_rockslide_static_1b", "models/props/cs_militia/militiarock01.mdl", "4378.5313 -104.9063 -86.4063", "348.2227 79.4092 234.6680", "shadow_no", "solid_yes", "222 222 222" ); make_prop( "dynamic", "_rockslide_static_1c", "models/props/cs_militia/militiarock01.mdl", "4480.125 -2.7188 -149.9375", "2.6807 26.7188 148.2275", "shadow_no", "solid_yes", "177 177 177" ); make_prop( "dynamic", "_rockslide_static_2a", "models/props/cs_militia/militiarock02.mdl", "4606.125 98.625 -81.7813", "321.9873 261.167 46.4941", "shadow_no", "solid_yes", "255 255 255" ); make_prop( "dynamic", "_rockslide_static_2b", "models/props/cs_militia/militiarock02.mdl", "4494.4688 -23.4688 -136.5", "10.415 39.7266 329.0625", "shadow_no", "solid_yes", "222 222 222" ); make_prop( "dynamic", "_rockslide_static_2c", "models/props/cs_militia/militiarock02.mdl", "4450.1875 -119.8125 -83.0938", "342.1143 278.4375 110.7861", "shadow_no", "solid_yes", "177 177 177" ); //make_navblock( "_rockslide_navblockera", "Everyone", "Apply", "-1116 -128 -216", "0 128 666", "5194 245 -216" ); //make_navblock( "_rockslide_navblockerb", "Everyone", "Apply", "-128 -845 -216", "128 500 666", "3950 -127 -216" ); //make_navblock( "_rockslide_navblockerc", "Everyone", "Apply", "-1337 -32 -216", "216 64 666", "6310 501 -216" ); make_clip( "_rockslide_survivorclipa", "Survivors", 1, "-572 -120 0", "399 -100 1100", "4455 -54 -224", "0 35 0" ); make_clip( "_rockslide_survivorclipb", "Survivors", 1, "-17 -17 -17", "17 17 17", "4187 -415 -153" ); make_clip( "_rockslide_survivorclipc", "Everyone", 1, "-17 -17 -17", "17 17 17", "4226 -192 -132" ); make_trighurt( "_rockslide_trighurta", "Infected", "-128 -116 0", "148 96 225", "4417 -83 -221" ); make_trighurt( "_rockslide_trighurtb", "Infected", "-128 -116 0", "148 96 225", "4667 157 -221" ); EntFire( g_UpdateName + "_rockslide_trighurt*", "Kill", "", 1 ); } EntFire( "trigger_finale", "AddOutput", "UseStart worldspawn:CallScriptFunction:c10m5_rockslide:0:-1" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES make_clip( "_indoor_roof", "Survivors", 1, "-60 -84 -28", "60 84 28", "2244 4076 100" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_indoor_roof", "Survivors", 1, "-60 -84 -28", "60 84 28", "2244 4076 100" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES make_clip( "_survival_docksrocks", "Survivors", 1, "-78 -161 0", "87 153 1462", "2201 -4720 -174", "0 24 0" ); break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*============================== || || || BLOOD HARVEST || || || ==============================*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c12m1_hilltop": { g_Chapter = "BLOOD HARVEST - THE WOODS"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_curvejump_fence", "Survivors", 1, "-1024 -51 -90", "120 51 777", "-10342 -8897 517" ); make_clip( "_cliprework_unattackable", "Survivors", 1, "-112 -192 -335", "0 274 1024", "-8080 -8448 880.6" ); make_clip( "_permstuck_treeandrock", "Everyone", 1, "-19 -22 0", "26 32 46", "-11270 -9471 447" ); make_clip( "_tankpunch_deflector", "Survivors", 1, "-434 -46 0", "288 -19 1481", "-11503 -10981 375" ); make_clip( "_dispcrouch_smoker", "Everyone", 1, "4 -200 -64", "61 70 58", "-10650 -15068 -46", "0 -19 0" ); make_trighurt( "_instakill_longperimeter1", "Survivor", "-1158 -2015 0", "1158 2015 170", "-11827 -13824 -84" ); make_trighurt( "_instakill_longperimeter2", "Survivor", "-868 -1895 0", "508 2145 170", "-12855 -10361 -84" ); make_trighurt( "_instakill_fallrevivefence", "Survivor", "-17 -337 0", "17 367 17", "-8883 -8543 87" ); make_trighurt( "_instakill_fallrevivenoper", "Survivor", "-744 -527 0", "1304 877 96", "-9496 -7665 -96" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES make_clip( "_nav_quarrybeams", "Survivors", 1, "-152 -7 0", "152 1 288", "-7808 -9481 512" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_nav_quarrybeams", "Survivors", 1, "-152 -7 0", "152 1 288", "-7808 -9481 512" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c12m2_traintunnel": { g_Chapter = "BLOOD HARVEST - THE TUNNEL"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_nav_eventlight1", "Survivors", 1, "-5 -10 0", "5 10 129", "-8021 -7500 191" ); make_clip( "_nav_eventlight2", "Survivors", 1, "-5 -10 0", "5 10 73", "-6613 -7752 247" ); make_clip( "_stuckwarp_rocketdude", "Everyone", 1, "-24 -48 0", "24 48 71", "-5430 -8170 217" ); make_clip( "_rubble_smoother", "Everyone", 1, "-38 -166 0", "20 190 32", "-1777 -9480 -25", "33 23 28" ); make_trigduck( "_duckqol_ventduct", "-5 -26 -28", "5 26 28", "-8728 -7494 92" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES make_clip( "_nav_wareshelf", "Survivors", 1, "-25 -85 -234", "44 80 252", "-8740 -6996 170" ); make_navblock( "_survival_navblock_stairs", "Everyone", "Apply", "-4 -101 0", "4 0 32", "-6688 -7711 -80" ); break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c12m3_bridge": { g_Chapter = "BLOOD HARVEST - THE BRIDGE"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_dispcrouch_preslope", "Everyone", 1, "-64 -128 -64", "64 256 88", "3090 -10118 -23", "20 0 0" ); make_clip( "_dispcrouch_trains", "Everyone", 1, "-500 -50 -169", "500 50 169", "4120 -14380 88", "0 6 0" ); make_clip( "_dispcrouch_eventlever", "Everyone", 1, "-412 -8 -61", "380 42 120", "8302 -13946 21", "0 -149 0" ); make_clip( "_dispcrouch_recompilefail", "Everyone", 1, "-620 -17 0", "620 17 70", "5930 -14086 -70", "0 3 0" ); make_clip( "_permstuck_eventlever", "Everyone", 1, "-17 -17 -17", "17 17 17", "8150 -13811 57" ); 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_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." ); make_clip( "_bridge_dynamic_clip", "Survivors", 1, "-69 -926 0", "69 6 1450", "5932 -13314 272" ); EntFire( "train_engine_button", "AddOutput", "OnPressed anv_mapfixes_bridge_dynamic_clip:AddOutput:origin 5932 -13784 272:0:-1" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES patch_spawninfront( "7136 -11876 394", "0 -164 -24", "800 4 134" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES patch_spawninfront( "7136 -11876 394", "0 -164 -24", "800 4 134" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES make_clip( "_booster_sandtower", "Survivors", 1, "-106 -78 0", "82 75 1162", "4911 -13119 568" ); make_clip( "_missing_tree_1", "Survivors", 1, "-23 -23 0", "23 23 1302", "2678 -13830 418" ); 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" ); break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c12m4_barn": { g_Chapter = "BLOOD HARVEST - THE TRAIN STATION"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_dispcrouch_traintracka", "Everyone", 1, "-420 -355 -16", "16 64 555", "10250 -10145 -78" ); make_clip( "_dispcrouch_traintrackb", "Everyone", 1, "-420 -255 -16", "16 99 555", "10120 -10600 -78" ); make_clip( "_curvejump_bridgeend", "Survivors", 1, "-70 -6 -218", "70 6 218", "10230 -486 154" ); make_clip( "_dispcrouch_trainwall_one", "Everyone", 1, "-64 -640 -32", "8 0 36", "10203 -6505 -58", "0 2.5 0" ); make_clip( "_dispcrouch_trainwall_two", "Everyone", 1, "-64 -100 -32", "17 140 36", "10177 -6376 -58", "0 6 0" ); make_clip( "_dispcrouch_trainwall_three", "Everyone", 1, "-45 -320 -77", "21 216 64", "9813 -4120 0", "0 -7 0" ); make_clip( "_permstuck_clifftree", "Everyone", 1, "-17 -7 -7", "17 17 17", "10193 -6483 137" ); make_clip( "_permstuck_theonetheonly", "Everyone", 1, "-8 -15 0", "15 11 472", "11327 -8674 -64" ); make_clip( "_cliprework_pullcharge", "Survivors", 1, "-278 -17 -803", "1849 17 1042", "9272 -11114 646" ); make_clip( "_permstuck_forgottena", "Everyone", 1, "-17 -17 -17", "17 17 17", "9477 -11134 602" ); make_clip( "_permstuck_forgottenb", "Everyone", 1, "-17 -17 -17", "17 17 17", "9268 -10468 565" ); make_clip( "_permstuck_forgottenc", "Everyone", 1, "-17 -17 -17", "17 17 17", "9236 -9823 415" ); make_clip( "_permstuck_forgottend", "Everyone", 1, "-17 -17 -17", "17 17 17", "10118 -9681 527" ); make_clip( "_permstuck_forgottene", "Everyone", 1, "-17 -17 -17", "17 17 17", "9742 -9561 499" ); make_clip( "_permstuck_forgottenf", "Everyone", 1, "-17 -17 -17", "17 17 17", "9740 -9194 435" ); make_clip( "_permstuck_forgotteng", "Everyone", 1, "-17 -17 -17", "17 17 17", "10077 -9388 447" ); make_clip( "_permstuck_forgottenh", "Everyone", 1, "-17 -17 -17", "17 17 17", "10103 -8810 320" ); make_clip( "_permstuck_thanksagain", "Everyone", 1, "-14 -42 0", "34 47 32", "11403 -4579 -402" ); make_clip( "_event_window", "SI Players and AI", 1, "-12 -26 0", "12 26 16", "10876 -4166 88" ); patch_spawninfront( "10454 -1032 -64", "-142 -8 0", "142 8 420" ); make_prop( "dynamic", "_solidify_survivorchimney", "models/props/cs_militia/fireplacechimney01.mdl", "10862.2 -6085.53 120.492", "0 135 0", "shadow_no" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES con_comment( "TRIG_UNDO:\tDelete anv_maptrigs.nut blockers which prevent train car commonhop skip for Coop-only." ); EntFire( g_UpdateName + "_eventskip_commonhop*", "Kill", null, 4 ); make_clip( "_commonhop_roadsidefence", "Survivors", 1, "-3 -29 0", "5 27 1608", "10647 -7547 84" ); make_clip( "_clipextend_traintruss", "Survivors", 1, "-204 -4 0", "208 128 1462", "10444 -7516 232" ); 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" ); break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES make_clip( "_commonhop_roadsidefence", "Survivors", 1, "-3 -29 0", "5 27 1608", "10647 -7547 84" ); make_clip( "_clipextend_traintruss", "Survivors", 1, "-204 -4 0", "208 128 1462", "10444 -7516 232" ); 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" ); break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "c12m5_cornfield": { g_Chapter = "BLOOD HARVEST - FARMHOUSE FINALE"; devchap( "ALL MODES" ); // FIXES_ALL make_clip( "_dispcrouch_spawn_right", "Everyone", 1, "-12 -216 -100", "200 216 128", "11102 150 -115" ); make_clip( "_dispcrouch_spawn_left", "Everyone", 1, "-26 -216 -100", "26 216 128", "10210 1423 -29" ); make_clip( "_permstuck_tree_a", "Everyone", 1, "-16 -16 -16", "16 16 16", "10675 528 -7" ); make_clip( "_permstuck_tree_b", "Everyone", 1, "-16 -16 -16", "16 16 16", "10794 1843 -27" ); make_clip( "_permstuck_tree_c", "Everyone", 1, "-16 -16 -16", "16 16 16", "10456 3463 4" ); make_clip( "_permstuck_tree_d", "Everyone", 1, "-16 -16 -16", "16 16 16", "11064 4373 -10" ); make_clip( "_permstuck_tree_e", "Everyone", 1, "-16 -16 -16", "16 16 1600", "7710 1651 270" ); make_clip( "_permstuck_tree_f", "Everyone", 1, "-16 -16 -16", "16 16 1600", "6852 -750 252" ); make_clip( "_permstuck_tree_g", "Everyone", 1, "-16 -16 -16", "16 16 1600", "6448 3092 260" ); make_clip( "_permstuck_tree_h", "Everyone", 1, "-16 -16 -16", "16 16 1600", "5624 3236 260" ); make_clip( "_clip_anomaly", "Survivors", 1, "-384 -40 -740", "450 40 720", "5504 3304 1136" ); make_clip( "_wrongway_clipa", "Everyone", 1, "-1600 -61 0", "401 128 1640", "6044 3997 196" ); make_clip( "_wrongway_clipb", "Everyone", 1, "-288 -61 0", "600 128 1640", "6706 4072 196", "0 16 0" ); make_clip( "_booster_barnroof", "Survivors", 1, "-8 -434 0", "8 434 360", "6986 -154 548" ); make_clip( "_booster_haybarn", "Survivors", 1, "-364 -293 0", "352 425 1317", "8459 424 539.5" ); //make_clip( "_booster_estateroof", "Survivors", 1, "-575 -261 0", "325 389 1258", "6837 1124 598" ); make_clip( "_booster_dualsilos", "Survivors", 1, "-360 -234 0", "360 187 995", "7362 2650 861" ); make_clip( "_clip_anomaly_ugh", "Survivors", 1, "-8 -20 -751", "448 13 751", "6216 3331 1101" ); make_clip( "_undermap_exploit", "Survivors", 1, "-81 -166 0", "85 76 1385", "4473 3860 451" ); make_clip( "_cooponly_idle_warp", "Survivors", 1, "-81 -37 0", "55 35 1102", "8849 3493 760" ); make_clip( "_nav_and_stuckwarp", "Everyone", 1, "-45 -2 -62", "163 6 58", "6485 1090 308" ); // For some maps the trigger_finale might exist after "round_start" and require delay -- but not here either! con_comment( "LOGIC:\tPoint-of-no-return clip will be Enabled when finale is started." ); make_clip( "_point_of_no_return", "Survivors", 0, "-148 -16 0", "148 26 1660", "9017 3511 202" ); EntFire( "trigger_finale", "AddOutput", "FinaleStart anv_mapfixes_point_of_no_return:Enable::0:-1" ); if ( g_BaseMode == "coop" || g_BaseMode == "realism" ) { devchap( "BASE COOP" ); // FIXES break; } if ( g_BaseMode == "versus" ) { devchap( "BASE VERSUS" ); // FIXES break; } if ( g_BaseMode == "survival" ) { devchap( "BASE SURVIVAL" ); // FIXES break; } if ( g_BaseMode == "scavenge" ) { devchap( "BASE SCAVENGE" ); // FIXES break; } break; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*============================== || || || COMMUNITY || || || ==============================*/ // If it's not a Valve map, delete the new Survivor/Infected activator // filters. Also skip DEVELOPER MODE function call and do nothing else. default: { EntFire( "anv_globalfixes_filter_*", "Kill" ); return; } } // Now that we know it's a vanilla map, all of them will reach this code so // instead of calling these separately for each map, call both just once here. // // UPDATE: Ladders now spawn with vecMins/vecMaxs instead which doesn't require // any dynamic delay, and all Versus entities were moved to anv_versus.nut. // // InfectedLadders_Spawn(); // InfectedHumEnts_Spawn(); // If "developer 1" map names are stamped to console, followed by information // about all the fixes applied. If "developer 0" let the user know the feature // exists but only print the line once per load session. devchap( "TUTORIAL" ); // We've run once so set mapspawn.nut's global variable to "true". This allows // anv_mapfixes.nut and other RunScriptFile'd *.nut's to only declare functions // once (outside of mapspawn.nut's natural doing so). Also to only patch NAV once. // If 0 second delay it'd be set "true" before switch-case RunScriptFile's ran. EntFire( "worldspawn", "RunScriptCode", "g_UpdateRanOnce = true", 1 ); }