diff --git a/README.md b/README.md index a61a4447..2e69b831 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,22 @@ # bizzymod Bizzymod was designed with simple idea that games should try to be fun and this is the spirit behind Bizzy's L4D2 servers and their playmodes. -Bizzy's development server Bizzy's Playhouse is a simple Linux dedicated L4D2 server currently residing in Chicago. +Bizzy's best server, Bizzy's Moon Mod, is quite possibly the greatest Linux dedicated L4D2 server in existance, currently residing in Chicago (US-East). -Current Server: -74.91.113.130:27015 +Moon Mod was designed with the simple idea that people shouldn't ever have to play shit mod. + +Current Server IP: +connect 74.91.113.130:27019 Tickrate Settings: -cl_cmdrate 100;cl_updaterate 100;rate 100000;cl_interp_ratio 0;cl_interp 0 +;rate 144000;net_maxroutable 1200;net_splitrate 1;net_splitpacket_maxrate 30000;cl_cmdrate 120;cl_updaterate 120;cl_interp_ratio 0;cl_interp 0.0; + +# About +## Moon Mod +Moon Mod is Bizzy's creation for Moon so that Moon can fix Left 4 Dead 2 in ways that its retarded developers didn't get right somehow. It's very underappreciated because most people are idiots and don't know what quality gameplay is (their brains have been corrupted by years of shit mod). -# modes ## numbersmod -numbersmod is Bizzy's creation for numbers the numblers. It's played a lot more cause he's famous. +numbersmod is Bizzy's creation for numbers the numblers. It's played a lot more because his job is being a famous twitch streamer. His mod includes: * realism * tier 1 only, plus 1 allowed hunting rifle @@ -28,7 +33,8 @@ numbersmod is Bizzy's creation for numbers the numblers. It's played a lot more * various fixes and balancing touches ## bizzymod -bizzymod is Bizzy's wild and crazy realism mod, which isn't wild and crazy as much as it is hard and painful. +bizzymod is Bizzy's wild and crazy realism mod, which isn't wild and crazy as much as it is hard and painful. His mod includes: + * crazy horde * realism * hidden and sparse tier 2 diff --git a/addons/sourcemod/configs/admin_levels.cfg b/addons/sourcemod/configs/admin_levels.cfg new file mode 100644 index 00000000..e250ef7d --- /dev/null +++ b/addons/sourcemod/configs/admin_levels.cfg @@ -0,0 +1,51 @@ +/** + * There is no reason to edit this file. Core uses this to map each named + * access type to a given ASCII character. The names are all pre-defined. + */ +Levels +{ + /** + * These are the default role flag mappings. + * You can assign new letters for custom purposes, however you should + * not change the default names, as SourceMod hardcodes these. + */ + Flags + { + "reservation" "a" // Reserved slots + "generic" "b" // Generic admin, required for admins + "unban" "e" // Removing bans + "changemap" "g" // Changing the map + "chat" "j" // Special chat privileges + "vote" "k" // Voting + + "slay" "f" // Slaying other players + "kick" "c" // Kick other players + "ban" "d" // Banning other players + + "cvars" "h" // Changing cvars + "config" "i" // Changing configs + "password" "l" // Password the server + "rcon" "m" // Remote console + "cheats" "n" // Change sv_cheats and related commands + + /** + * Custom flags can be used by plugins, but they can also be used to + * for you to expand on the previous groups, using Overrides. + */ + + "custom1" "o" + "custom2" "p" + "custom3" "q" + "custom4" "r" + "custom5" "s" + "custom6" "t" + + /** + * Root is a magic access flag that grants all permissions. + * This should only be given to trusted administrators. + * Root users can target anyone regardless of immunity, + * however, they themselves are not automatically immune. + */ + "root" "z" + } +} diff --git a/addons/sourcemod/configs/adminmenu_maplist.ini b/addons/sourcemod/configs/adminmenu_maplist.ini index 5415bef9..e1ed7029 100644 --- a/addons/sourcemod/configs/adminmenu_maplist.ini +++ b/addons/sourcemod/configs/adminmenu_maplist.ini @@ -1,14 +1,107 @@ c1m1_hotel +c6m1_riverbank c2m1_highway c3m1_plankcountry c4m1_milltown_a c5m1_waterfront -c6m1_riverbank +c13m1_alpinecreek +c8m1_apartment +c9m1_alleys +c10m1_caves +c11m1_greenhouse +c12m1_hilltop c7m1_docks +c14m1_junkyard +c1m1_hotel +c1m2_streets +c1m3_mall +c1m4_atrium + + + +c6m1_riverbank +c6m2_bedlam +c6m3_port + + + + +c2m1_highway +c2m2_fairgrounds +c2m3_coaster +c2m4_barns +c2m5_concert + + +c3m1_plankcountry +c3m2_swamp +c3m3_shantytown +c3m4_plantation + + + +c4m1_milltown_a +c4m2_sugarmill_a +c4m3_sugarmill_b +c4m4_milltown_b +c4m5_milltown_escape + + +c5m1_waterfront +c5m2_park +c5m3_cemetary +c5m4_quarter +c5m5_bridge + + c8m1_apartment +c8m2_subway +c8m3_sewers +c8m4_interior +c8m5_rooftop + + c9m1_alleys +c9m2_lots + + + + + c10m1_caves +c10m2_drainage +c10m3_ranchhouse +c10m4_mainstreet +c10m5_houseboat + + c11m1_greenhouse -C12m1_hilltop +c11m2_offices +c11m3_garage +c11m4_terminal +c11m5_runway + + +c12m1_hilltop +c12m2_traintunnel +c12m3_bridge +c12m4_barn +c12m5_cornfield + + +c7m1_docks +c7m2_barge +c7m3_port + + + + c13m1_alpinecreek -c14m1_junkyard \ No newline at end of file +c13m2_southpinestream +c13m3_memorialbridge +c13m4_cutthroatcreek + + + +c14m1_junkyard +c14m2_lighthouse diff --git a/addons/sourcemod/configs/admins_simple.ini b/addons/sourcemod/configs/admins_simple.ini index 04634761..532b3298 100644 --- a/addons/sourcemod/configs/admins_simple.ini +++ b/addons/sourcemod/configs/admins_simple.ini @@ -16,12 +16,12 @@ // "@Full Admins" // // You can also specify immunity values. Two examples: -// "83:abcdefgh" //Immunity is 83, flags are abcdefgh -// "6:@Full Admins" //Immunity is 6, group is "Full Admins" +// "83:abcdefgh" // Immunity is 83, flags are abcdefgh +// "6:@Full Admins" // Immunity is 6, group is "Full Admins" // // Immunity values can be any number. An admin cannot target an admin with // a higher access value (see sm_immunity_mode to tweak the rules). Default -// immunity value is 0 (no immunity). +// immunity value is 0 (no immunity). // // PASSWORDS: // Passwords are generally not needed unless you have name-based authentication. @@ -34,24 +34,72 @@ // changing names or connecting. Otherwise, SourceMod will automatically detect // the password being set. // -//////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Examples: (do not put // in front of real lines, as // means 'comment') // -// "STEAM_0:1:16" "bce" //generic, kick, unban for this steam ID, no immunity -// "!127.0.0.1" "99:z" //all permissions for this ip, immunity value is 99 -// "BAILOPAN" "abc" "Gab3n" //name BAILOPAN, password "Gab3n": gets reservation, generic, kick +// "STEAM_0:1:16" "bce" // generic, kick, unban for this steam ID, no immunity +// "!127.0.0.1" "99:z" // all permissions for this ip, immunity value is 99 +// "BAILOPAN" "abc" "Gab3n" // name BAILOPAN, password "Gab3n": gets reservation, generic, kick // -//////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////// - "STEAM_1:1:5563392" "99:z" //all permissions for this ip, immunity value is 99 - bizzy - "STEAM_1:0:59242024" "99:z" //all permissions for this ip, immunity value is 99 - numbers - "STEAM_1:0:65173943" "99:z" //all permissions for this ip, immunity value is 99 - cool buster - "STEAM_1:0:80286445" "99:z" //all permissions for this ip, immunity value is 99 - sin - "STEAM_1:0:9166582" "99:z" //all permissions for this ip, immunity value is 99 - bobby - "STEAM_0:0:541935496" "99:z" //all permissions for this ip, immunity value is 99 - banana - "STEAM_1:1:14386121" "99:z" //all permissions for this ip, immunity value is 99 - knee - "STEAM_1:0:21475933" "99:z" //all permissions for this ip, immunity value is 99 - opto - "STEAM_1:0:13393988" "99:z" //all permissions for this ip, immunity value is 99 - crater - "STEAM_1:0:30455027" "99:z" //all permissions for this ip, immunity value is 99 - surfer - "STEAM_1:0:25129595" "99:z" //all permissions for this ip, immunity value is 99 - knee2 - "STEAM_1:1:246325042" "99:z" //all permissions for this ip, immunity value is 99 - sai + "STEAM_0:1:121253576" "3:z" // all permissions for this ip, immunity value is 99 - Moon + "STEAM_1:1:5563392" "3:z" // all permissions for this ip, immunity value is 99 - Bizzy + "STEAM_1:0:59242024" "2:z" // all permissions for this ip, immunity value is 99 - Numbers + "STEAM_0:1:20035907" "2:z" // all permissions for this ip, immunity value is 99 - Numbers (Alt) + "STEAM_1:0:80286445" "2:z" // all permissions for this ip, immunity value is 99 - SiNsation + "STEAM_0:0:18298188" "2:z" // all permissions for this ip, immunity value is 99 - Corpiss Crispy + "STEAM_0:0:634252695" "1:z" // all permissions for this ip, immunity value is 99 - Amphibian + "STEAM_1:0:9166582" "1:z" // all permissions for this ip, immunity value is 99 - Bobby Baccala + "STEAM_0:1:28738054" "1:z" // all permissions for this ip, immunity value is 99 - Crown Jewel + "STEAM_1:0:30455027" "1:z" // all permissions for this ip, immunity value is 99 - Surfer + "STEAM_0:1:29757090" "1:z" // all permissions for this ip, immunity value is 99 - PsYcHo + "STEAM_0:1:37488726" "2:z" // all permissions for this ip, immunity value is 99 - Sortscier + "STEAM_1:1:14386121" "2:z" // all permissions for this ip, immunity value is 99 - KneeTM + "STEAM_1:0:65173943" "1:z" // all permissions for this ip, immunity value is 99 - Cool Buster + "STEAM_0:1:24624332" "2:z" // all permissions for this ip, immunity value is 99 - Polter + "STEAM_0:1:12383697" "1:z" // all permissions for this ip, immunity value is 99 - Perma + "STEAM_0:0:638604628" "2:z" // all permissions for this ip, immunity value is 99 - Brinny Brin + "STEAM_0:1:17437576" "2:z" // all permissions for this ip, immunity value is 99 - Imperial + "STEAM_0:0:27040240" "1:z" // all permissions for this ip, immunity value is 99 - Powerless Electrons + "STEAM_0:0:26333996" "2:z" // all permissions for this ip, immunity value is 99 - Violin + "STEAM_0:1:57934025" "2:z" // all permissions for this ip, immunity value is 99 - Doomsday + "STEAM_0:0:14666472" "1:z" // all permissions for this ip, immunity value is 99 - Handsum Robot + "STEAM_1:0:13393988" "3:z" // all permissions for this ip, immunity value is 99 - Crater Creator + "STEAM_1:0:25129595" "3:z" // all permissions for this ip, immunity value is 99 - Knee + "STEAM_1:0:21475933" "3:z" // all permissions for this ip, immunity value is 99 - Opto + "STEAM_1:1:246325042" "2:z" // all permissions for this ip, immunity value is 99 - Sai + "STEAM_0:1:13501614" "2:z" // all permissions for this ip, immunity value is 99 - LumbaJack + "STEAM_0:0:6344615" "2:z" // all permissions for this ip, immunity value is 99 - Implication + "STEAM_0:0:19299397" "3:z" // all permissions for this ip, immunity value is 99 - Brometheus + "STEAM_0:0:233963096" "3:z" // all permissions for this ip, immunity value is 99 - Strange Diplomat + "STEAM_0:1:516494249" "3:z" // all permissions for this ip, immunity value is 99 - Hardhat + "STEAM_0:1:519181265" "3:z" // all permissions for this ip, immunity value is 99 - BigManAxl + "STEAM_0:0:5092399" "3:z" // all permissions for this ip, immunity value is 99 - Steve Jabbs + "STEAM_0:0:558067263" "2:z" // all permissions for this ip, immunity value is 99 - Dani + "STEAM_0:1:180945474" "3:z" // all permissions for this ip, immunity value is 99 - AltegoSTX + "STEAM_0:1:42301277" "2:Z" // all permissions for this ip, immunity value is 99 - DanBan + "STEAM_0:1:232120456" "1:z" // all permissions for this ip, immunity value is 99 - Monte + "STEAM_0:0:181931352" "2:z" // all permissions for this ip, immunity value is 99 - Nurft + "STEAM_0:0:85370100" "2:z" // all permissions for this ip, immunity value is 99 - Synergy + "STEAM_0:1:709150412" "2:z" // all permissions for this ip, immunity value is 99 - Yusuke + "STEAM_0:1:588520413" "2:z" // all permissions for this ip, immunity value is 99 - Gucci Boi + "STEAM_0:0:810380106" "2:z" // all permissions for this ip, immunity value is 99 - Sporty + "STEAM_0:0:25613909" "2:z" // all permissions for this ip, immunity value is 99 - BRONSON + "STEAM_0:1:438880698" "2:z" // all permissions for this ip, immunity value is 99 - Edge + "STEAM_0:0:624136466" "2:z" // all permissions for this ip, immunity value is 99 - Fire Head Elite + "STEAM_0:0:21577462" "3:z" // all permissions for this ip, immunity value is 99 - LarryV + "STEAM_0:0:212370939" "1:z" // all permissions for this ip, immunity value is 99 - Tak + "STEAM_0:0:145366485" "1:z" // all permissions for this ip, immunity value is 99 - (Sic) + "STEAM_0:0:90856252" "2:z" // all permissions for this ip, immunity value is 99 - FROZENZERO + "STEAM_0:1:766085705" "1:z" // all permissions for this ip, immunity value is 99 - American Muscle + "STEAM_0:0:133154324" "2:z" // all permissions for this ip, immunity value is 99 - Slim Charles + "STEAM_0:0:144372315" "2:z" // all permissions for this ip, immunity value is 99 - Grank Fallager + "STEAM_0:0:21302035" "3:z" // all permissions for this ip, immunity value is 99 - Mr. Mistix + "STEAM_0:1:863682219" "3:z" // all permissions for this ip, immunity value is 99 - Ms. Tiffany + "STEAM_0:0:553225951" "3:z" // all permissions for this ip, immunity value is 99 - Ms. Tiffany (Alt) + "STEAM_0:0:2420630" "3:z" // all permissions for this ip, immunity value is 99 - Gravity + "STEAM_0:1:59461687" "3:z" // all permissions for this ip, immunity value is 99 - JAiZ + "STEAM_0:1:597487209" "3:z" // all permissions for this ip, immunity value is 99 - Buckethead + "STEAM_0:1:83944706" "3:z" // all permissions for this ip, immunity value is 99 - Babylumpkins + "STEAM_0:1:609857316" "3:z" // all permissions for this ip, immunity value is 99 - Kataklysm diff --git a/addons/sourcemod/configs/matchmodes.txt b/addons/sourcemod/configs/matchmodes.txt index 69b1a853..8c8e6b3e 100644 --- a/addons/sourcemod/configs/matchmodes.txt +++ b/addons/sourcemod/configs/matchmodes.txt @@ -1,38 +1,38 @@ "MatchModes" -{ - "Bizzymod Configs" +{ + "Game Modes" { "numbersmod" { "name" "numbersmod 6.9.420" } - "barrymod" + "sportymod" { - "name" "barrymod 70.0.0" + "name" "sportymod 0.0" } - "spacemod" + "surfmod" { - "name" "spacemod -1.0" + "name" "surfmod 1.0" } - "thundermod" + "pissmod" { - "name" "ThunderMod 0.5" + "name" "pissmod 0.0" } - "acv" + "barrymod" { - "name" "Advanced Versus 2.0" + "name" "marrymod 1.0" } "bizzymod" { - "name" "bizzymod 0.8" + "name" "bizzymod 1.0" } - "zonereal" + "kneemod" { - "name" "zonemod realism 6.9" + "name" "kneemod 2.5" } - "kneemod" + "busmod" { - "name" "kneemod 2.3" + "name" "busmod 69.69.69" } "bobbymod" { @@ -42,14 +42,93 @@ { "name" "seltzermod 4.20" } + "bananamod" + { + "name" "bananamod 0.75" + } + "spacemod" + { + "name" "spacemod -1.0" + } + "heizemod" + { + "name" "heizemod 1.0" + } + "flatmod" + { + "name" "flatmod 0.1" + } + "onemod" + { + "name" "OneMod 1.3" + } + "powermod" + { + "name" "powermod 4.0" + } + "invokemod" + { + "name" "invokemod 0.0.69.2" + } + "deadmanX" + { + "name" "deadman 6.1" + } + "goldengun" + { + "name" "goldengun 0.0" + } + } + "Bizzymod Configs" + { + "numbersmod" + { + "name" "numbersmod 6.9.420" + } + "sportymod" + { + "name" "sportymod 0.0" + } + "surfmod" + { + "name" "surfmod 6.9.420" + } + "pissmod" + { + "name" "pissmod 6.9.420" + } + "barrymod" + { + "name" "barrymod 70.0.0" + } + "bizzymod" + { + "name" "bizzymod 0.8" + } + "kneemod" + { + "name" "kneemod 2.3" + } "busmod" { "name" "busmod 69.69.69" } + "bobbymod" + { + "name" "bobbymod 0.5" + } + "seltzermod" + { + "name" "seltzermod 4.20" + } "bananamod" { "name" "bananamod 0.7" } + "spacemod" + { + "name" "spacemod -1.0" + } "heizemod" { "name" "heizemod 1.0" @@ -74,9 +153,25 @@ { "name" "deadman 6.1" } + "goldengun" + { + "name" "goldengun 0.0" + } } "ZoneMod Configs" { + "thundermod" + { + "name" "ThunderMod 1.0" + } + "acv" + { + "name" "Advanced Versus 2.5" + } + "zonereal" + { + "name" "zonemod realism 6.9" + } "zonemod" { "name" "ZoneMod" @@ -226,4 +321,4 @@ "name" "1v1 ZoneHunters" } } -} \ No newline at end of file +} diff --git a/addons/sourcemod/configs/sourcebans/sourcecomms.cfg b/addons/sourcemod/configs/sourcebans/sourcecomms.cfg index 54b68895..6d7addd4 100644 --- a/addons/sourcemod/configs/sourcebans/sourcecomms.cfg +++ b/addons/sourcemod/configs/sourcebans/sourcecomms.cfg @@ -8,7 +8,7 @@ { "Config" { - "DefaultTime" "30" // default time in minutes. if < 0 -> blocking for session. Permanent (0) - is not allowed! + "DefaultTime" "1" // default time in minutes. if < 0 -> blocking for session. Permanent (0) - is not allowed! "DisableUnblockImmunityCheck" "0" // 0, 1. If 1, player can be ungagged only by issuer admin, console or admin with special flag // Also, If 0 player maybe unblocked by Admin with higher immunity level then issuer admin. // Default value is 0 @@ -63,4 +63,4 @@ "id" "0" // Web Punishments (from sourcebans web pages) // "id" "3" // for example: uncommenting this line will add server with ServerID 3 to white list. } -} \ No newline at end of file +} diff --git a/addons/sourcemod/gamedata/go_afk_unlock.txt b/addons/sourcemod/gamedata/go_afk_unlock.txt new file mode 100644 index 00000000..1b9ff56e --- /dev/null +++ b/addons/sourcemod/gamedata/go_afk_unlock.txt @@ -0,0 +1,99 @@ +"Games" +{ + "#default" + { + "Addresses" + { + "PlayerPreThink" + { + "signature" "CTerrorPlayer::PreThink" + } + } + + "Signatures" + { + "CTerrorPlayer::PreThink" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer8PreThinkEv" + } + } + } + "left4dead" + { + "Offsets" + { + "PreThink_CompetitiveCondition" + { + "windows" "290" + "linux" "134" + } + "PreThink_HumanSurvivorsCondition" + { + "windows" "406" + "linux" "1036" + } + } + + "Signatures" + { + "CTerrorPlayer::PreThink" + { + "library" "server" + "windows" "\x83\x2A\x2A\x56\x57\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x8B" + /* 83 ? ? 56 57 8B ? E8 ? ? ? ? 8B ? E8 ? ? ? ? 8B ? 8B */ + } + } + } + "left4dead2" + { + "Addresses" + { + "PlayerGoingAFK" + { + "signature" "CTerrorPlayer::Input_GoAwayFromKeyboard" + } + } + + "Offsets" + { + "PreThink_CompetitiveCondition" + { + "windows" "309" + "linux" "295" + } + "PreThink_HumanSurvivorsCondition" + { + "windows" "428" + "linux" "450" + } + "GoAFKInput_CompetitiveCondition" + { + "windows" "10" + "linux" "14" + } + "GoAFKInput_HumanSurvivorsCondition" + { + "windows" "38" + "linux" "130" + } + } + + "Signatures" + { + "CTerrorPlayer::PreThink" + { + "library" "server" + "windows" "\x55\x8B\x2A\x83\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x89\x2A\x2A\x56\x57\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\xE8" + /* 55 8B ? 83 ? ? A1 ? ? ? ? 33 ? 89 ? ? 56 57 8B ? E8 ? ? ? ? 8B ? E8 */ + } + "CTerrorPlayer::Input_GoAwayFromKeyboard" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer24Input_GoAwayFromKeyboardEv" + "windows" "\x57\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x75\x2A\x56\x6A" + /* 57 8B ? E8 ? ? ? ? 84 ? 75 ? 56 6A */ + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d2_boomer_ladder_fix.txt b/addons/sourcemod/gamedata/l4d2_boomer_ladder_fix.txt new file mode 100644 index 00000000..b1e069c4 --- /dev/null +++ b/addons/sourcemod/gamedata/l4d2_boomer_ladder_fix.txt @@ -0,0 +1,46 @@ +"Games" +{ + "left4dead2" + { + "MemPatches" + { + "CTerrorGameMovement::CheckForLadders" + { + "signature" "CTerrorGameMovement::CheckForLadders" + + "linux" + { + "offset" "355h" + "verify" "\x0F\x84\xC9\xFE\xFF\xFF" + "patch" "\x90\x90\x90\x90\x90\x90" + } + + "windows" + { + "offset" "6Fh" + "verify" "\x74" + "patch" "\xEB" + } + } + } + + "Addresses" + { + "CTerrorGameMovement::CheckForLadders" + { + "signature" "CTerrorGameMovement::CheckForLadders" + } + } + + "Signatures" + { + "CTerrorGameMovement::CheckForLadders" + { + /* 55 8B EC 56 8B F1 83 BE 10 08 00 00 00 */ + + "windows" "\x55\x8B\xEC\x56\x8B\xF1\x83\xBE\x10\x08\x00\x00\x00" + "linux" "@_ZN19CTerrorGameMovement15CheckForLaddersEb" + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d2_side_dolls.txt b/addons/sourcemod/gamedata/l4d2_side_dolls.txt new file mode 100644 index 00000000..e19cb9bd --- /dev/null +++ b/addons/sourcemod/gamedata/l4d2_side_dolls.txt @@ -0,0 +1,16 @@ +"Games" +{ + "left4dead2" + { + "Signatures" // Linux signature found by BHaType, Windows signature by Shadowysn + { + "CreateServerRagdoll" + { + "library" "server" + "windows" "\x53\x8B\x2A\x83\x2A\x2A\x83\x2A\x2A\x83\x2A\x2A\x55\x8B\x2A\x2A\x89\x2A\x2A\x2A\x8B\x2A\xB8\x78" + /* 53 8B ? 83 ? ? 83 ? ? 83 ? ? 55 8B ? ? 89 ? ? ? 8B ? B8 78 */ + "linux" "@_Z19CreateServerRagdollP14CBaseAnimatingiRK15CTakeDamageInfoib" + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d2_spitter_acid_damage.txt b/addons/sourcemod/gamedata/l4d2_spitter_acid_damage.txt new file mode 100644 index 00000000..c0452e28 --- /dev/null +++ b/addons/sourcemod/gamedata/l4d2_spitter_acid_damage.txt @@ -0,0 +1,41 @@ +"Games" +{ + "#default" + { + "Functions" + { + "CInsectSwarm::CanHarm" + { + "signature" "CInsectSwarm::CanHarm" + "callconv" "thiscall" + "return" "int" + "this" "ignore" + "arguments" + { + "CBaseEntity" + { + "type" "cbaseentity" + } + } + } + } + } + + "left4dead2" + { + "Signatures" + { + /* + * CInsectSwarm::CanHarm(CInsectSwarm *this, CBaseEntity *) + */ + "CInsectSwarm::CanHarm" + { + "library" "server" + "linux" "@_ZNK12CInsectSwarm7CanHarmEP11CBaseEntity" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x84\x2A\x74\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x50\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\x5E\x5D" + /* ? ? ? ? ? ? ? 8B ? 8B ? ? ? ? ? 8B ? FF ? 84 ? 74 ? 8B ? E8 ? ? ? ? 50 E8 ? ? ? ? 83 ? ? 5E 5D */ + /* Search: "spitter_areaofdenial". Few entries down in vtable. */ + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_god_frames.txt b/addons/sourcemod/gamedata/l4d_god_frames.txt new file mode 100644 index 00000000..3c894d50 --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_god_frames.txt @@ -0,0 +1,44 @@ +"Games" +{ + "#default" + { + "Functions" + { + "CTerrorPlayer::IsInvulnerable" + { + "signature" "CTerrorPlayer::IsInvulnerable" + "callconv" "thiscall" + "return" "bool" + "this" "entity" + } + } + + "Signatures" + { + /* + * CTerrorPlayer::IsInvulnerable(CTerrorPlayer *this) + */ + "CTerrorPlayer::IsInvulnerable" + { + "library" "server" + "linux" "@_ZNK13CTerrorPlayer14IsInvulnerableEv" + "windows" "\x56\x8B\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x84\x2A\x74\x2A\xB0\x2A\x5E\xC3" + /* 56 8B ? 8B ? 8B ? ? ? ? ? ? ? 84 ? 74 ? B0 ? 5E C3 */ + /* Search: "weapon_%s" for "CTerrorPlayer::RestoreWeapons", vtable down, called from "CTerrorPlayer::CanBeShoved" */ + } + } + } + + "left4dead" + { + "Offsets" + { + /* v1 or a1 * 4 - 8 */ + "m_invulnerabilityTimer" + { + "windows" "7092" + "linux" "7112" + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_late_model_precacher.txt b/addons/sourcemod/gamedata/l4d_late_model_precacher.txt new file mode 100644 index 00000000..2199a3ff --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_late_model_precacher.txt @@ -0,0 +1,62 @@ +"Games" +{ + "#default" + { + "#supported" + { + "game" "left4dead" + "game" "left4dead2" + } + + "Functions" + { + "LMPDetour_UTIL_SetModel" + { + "signature" "UTIL_SetModel" + "callconv" "cdecl" + "return" "void" + "arguments" + { + "entity" + { + "type" "cbaseentity" + } + "model" + { + "type" "charptr" + } + } + } + } + } + + "left4dead" + { + "Signatures" + { + "UTIL_SetModel" + { + "library" "server" + "linux" "@_Z13UTIL_SetModelP11CBaseEntityPKc" + "mac" "@_Z13UTIL_SetModelP11CBaseEntityPKc" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x83\x2A\x2A\x53\x8B" + /* ? ? ? ? ? ? 8B ? 8B ? ? 83 ? ? 53 8B */ + } + } + } + + "left4dead2" + { + "Signatures" + { + "UTIL_SetModel" + { + "library" "server" + "linux" "@_Z13UTIL_SetModelP11CBaseEntityPKc" + "mac" "@_Z13UTIL_SetModelP11CBaseEntityPKc" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x83\x2A\x2A\x53\x8B\x2A\x2A\x56\x57\x53\xFF" + /* ? ? ? ? ? ? ? ? ? 8B ? 8B ? ? 83 ? ? 53 8B ? ? 56 57 53 FF */ + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_pipebomb_ignore.txt b/addons/sourcemod/gamedata/l4d_pipebomb_ignore.txt new file mode 100644 index 00000000..d8d3048f --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_pipebomb_ignore.txt @@ -0,0 +1,48 @@ +"Games" +{ + "#default" + { + "Functions" + { + "CDirector::AuditActivePipeBombs" + { + "signature" "CDirector::AuditActivePipeBombs" + "callconv" "thiscall" + "return" "int" + "this" "ignore" + } + } + } + + "left4dead" + { + "Signatures" + { + /* CDirector::AuditActivePipeBombs(CDirector *this) */ + "CDirector::AuditActivePipeBombs" + { + "library" "server" + "linux" "@_ZN8Director20AuditActivePipeBombsEv" + "windows" "\x56\x57\x8B\x2A\x8D\x2A\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\xD8\x2A\x2A\xDF\x2A\xF6\x2A\x2A\x0F\x85" + /* 56 57 8B ? 8D ? ? ? ? ? 8B ? E8 ? ? ? ? D8 ? ? DF ? F6 ? ? 0F 85 */ + /* Search: "pipe_bomb_projectile". Visually match compared to Linux function. */ + } + } + } + + "left4dead2" + { + "Signatures" + { + /* CDirector::AuditActivePipeBombs(CDirector *this) */ + "CDirector::AuditActivePipeBombs" + { + "library" "server" + "linux" "@_ZN9CDirector20AuditActivePipeBombsEv" + "windows" "\x55\x8B\x2A\x51\x53\x56\x8B\x2A\x57\x8D\x2A\x2A\x2A\x2A\x2A\x8D\x2A\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xD9\x2A\xD9\x2A\xDF\x2A\xDD\x2A\x0F" + /* 55 8B ? 51 53 56 8B ? 57 8D ? ? ? ? ? 8D ? ? ? ? ? E8 ? ? ? ? D9 ? D9 ? DF ? DD ? 0F */ + /* Search: "pipe_bomb_projectile". Visually match compared to Linux function. */ + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_sm_respawn.phrases.txt b/addons/sourcemod/gamedata/l4d_sm_respawn.phrases.txt new file mode 100644 index 00000000..1f84ba6d --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_sm_respawn.phrases.txt @@ -0,0 +1,24 @@ +"Phrases" +{ + "List_Players" + { + "en" "Who do you want to respawn?" + "ru" "Кого оживить?" + "hu" "Kit szeretnél visszahozni?" + "es" "¿A quien quieres reaparecer?" + } + "Respawn_Player" + { + "en" "Respawn player" + "ru" "Оживить игрока" + "hu" "Játékos visszahozása" + "es" "Reaparecer jugador" + } + "Respawn_Info" + { + "en" "Respawned player '%N'" + "ru" "Оживлён игрок '%N'" + "hu" "Játékos visszahozva '%N'" + "es" "Reapareciste a '%N'" + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_sm_vsbugfix.phrases.txt b/addons/sourcemod/gamedata/l4d_sm_vsbugfix.phrases.txt new file mode 100644 index 00000000..73f1f055 --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_sm_vsbugfix.phrases.txt @@ -0,0 +1,29 @@ +"Phrases" +{ + //""Normal \x01 + //""Verde \x03 + //""Amarelo \x04 + //""Verde \x05 + + "BOTsAreUnfrozen" + { + "en" "BOTs are unfrozen." + "pt" "BOTs estão descongelados." + "ru" "БОТы разморожены." + } + + "GodOn" + { + "en" "You had God Mode turned on." + "pt" "Você teve o modo Deus ativado." + "ru" "Вы включили режим Бога." + } + + "GodOff" + { + "en" "You had God Mode turned off." + "pt" "Você teve o modo Deus desativado." + "ru" "Вы отключили режим Бога." + } + +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/l4d_stat_reset.txt b/addons/sourcemod/gamedata/l4d_stat_reset.txt new file mode 100644 index 00000000..429e8581 --- /dev/null +++ b/addons/sourcemod/gamedata/l4d_stat_reset.txt @@ -0,0 +1,32 @@ +"Games" +{ + "left4dead" + { + "Signatures" + { + "CTerrorPlayer::ResetCheckpointStats" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer20ResetCheckpointStatsEv" + "windows" "\x51\x53\x55\x56\x8B\xE9\x8D\xB5\x2A\x2A\x2A\x2A\x33\xDB\x39\x1E\x57" + /* 51 53 55 56 8B E9 8D B5 2A 2A 2A 2A 33 DB 39 1E 57 */ + /* Found by XRef from CTerrorPlayer::RoundRespawn */ + } + } + } + + "left4dead2" + { + "Signatures" + { + "CTerrorPlayer::ResetCheckpointStats" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer20ResetCheckpointStatsEv" + "windows" "\x53\x56\x8B\xF1\x33\xDB\x57\x39\x9E\x2A\x2A\x2A\x2A\x74\x29" + /* 53 56 8B F1 33 DB 57 39 9E ? ? ? ? 74 29 */ + /* Found by XRef from CTerrorPlayer::RoundRespawn */ + } + } + } +} diff --git a/addons/sourcemod/gamedata/l4dswitchplayers.txt b/addons/sourcemod/gamedata/l4dswitchplayers.txt new file mode 100644 index 00000000..bea0a1b2 --- /dev/null +++ b/addons/sourcemod/gamedata/l4dswitchplayers.txt @@ -0,0 +1,40 @@ +"Games" +{ + "left4dead" + { + "Signatures" + { + "TakeOverBot" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer11TakeOverBotEb" + "windows" "\x81\x2A\x2A\x2A\x2A\x2A\x53\x55\x56\x57\x8D\x2A\x2A\x2A\x8B\xF9\x33\xDB\x50" + } + "SetHumanSpec" + { + "library" "server" + "linux" "@_ZN11SurvivorBot17SetHumanSpectatorEP13CTerrorPlayer" + "windows" "\x53\x8B\xD9\x83\x2A\x2A\x2A\x2A\x2A\x2A\x56\x8D\x2A\x2A\x2A\x2A\x2A\x7E\x07\x5E\x32\xC0\x5B\xC2\x04\x00" + } + } + } + + "left4dead2" + { + "Signatures" + { + "TakeOverBot" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer11TakeOverBotEb" + "windows" "\x81*****\x53\x55\x56\x8D***\x57\x8B\xF1\x33\xDB" + } + "SetHumanSpec" + { + "library" "server" + "linux" "@_ZN11SurvivorBot17SetHumanSpectatorEP13CTerrorPlayer" + "windows" "\x53\x56\x8B\xF1\x33\xDB\x39*******\x5E\x32\xC0\x5B" + } + } + } +} diff --git a/addons/sourcemod/gamedata/lfd_both_fixSG552.txt b/addons/sourcemod/gamedata/lfd_both_fixSG552.txt new file mode 100644 index 00000000..8f6fd17d --- /dev/null +++ b/addons/sourcemod/gamedata/lfd_both_fixSG552.txt @@ -0,0 +1,48 @@ +// Credits: https://forums.alliedmods.net/showthread.php?t=317662 +"Games" +{ + "left4dead2" + { + "MemPatches" + { + "zoom" + { + "signature" "CTerrorGun::ShouldUnzoom" + + "linux" + { + "offset" "2Ah" + "verify" "\x0F\x84\xA7\x00\x00\x00" + "patch" "\x90\x90\x90\x90\x90\x90" + } + + "windows" + { + "offset" "1Dh" + "verify" "\x75" + "patch" "\xEB" + } + } + } + + "Offsets" + { + "CTerrorGun::CycleZoom" + { + "windows" "395" + "linux" "396" + } + } + + "Signatures" + { + "CTerrorGun::ShouldUnzoom" + { + "library" "server" + "linux" "@_ZNK10CTerrorGun12ShouldUnzoomEv" + "windows" "\x56\x57\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x85\x2A\x75\x2A\x5F\x32\x2A\x5E\xC3\x8B\x2A\xE8" + /* 56 57 8B ? E8 ? ? ? ? 8B ? 85 ? 75 ? 5F 32 ? 5E C3 8B ? E8 */ + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/pistol_reload_fix.txt b/addons/sourcemod/gamedata/pistol_reload_fix.txt new file mode 100644 index 00000000..6f058af9 --- /dev/null +++ b/addons/sourcemod/gamedata/pistol_reload_fix.txt @@ -0,0 +1,16 @@ +"Games" +{ + "left4dead2" + { + "Signatures" + { + "CTerrorPlayer::DoAnimationEvent" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer16DoAnimationEventE17PlayerAnimEvent_ti" + "windows" "\x55\x8B\x2A\x56\x8B\x2A\x2A\x57\x8B\x2A\x83\x2A\x2A\x74\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A" + "mac" "@_ZN13CTerrorPlayer16DoAnimationEventE17PlayerAnimEvent_ti" + } + } + } +} \ No newline at end of file diff --git a/addons/sourcemod/gamedata/remove_touch_links.txt b/addons/sourcemod/gamedata/remove_touch_links.txt new file mode 100644 index 00000000..bb522e93 --- /dev/null +++ b/addons/sourcemod/gamedata/remove_touch_links.txt @@ -0,0 +1,43 @@ +"Games" +{ + "#default" + { + "Signatures" + { + "CBaseEntity::PhysicsRemoveTouchedList" + { + "library" "server" + "linux" "@_ZN11CBaseEntity24PhysicsRemoveTouchedListEPS_" + "mac" "@_ZN11CBaseEntity24PhysicsRemoveTouchedListEPS_" + } + } + } + + "left4dead" + { + "Signatures" + { + "CBaseEntity::PhysicsRemoveTouchedList" + { + "library" "server" + // Look for "remove 0x%x: %s-%s (%d-%d)", pick xref with a while loop + // 83 EC ? 55 8B ? ? ? 8B ? ? ? ? ? D1 + "windows" "\x83\xEC\x2A\x55\x8B\x2A\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xD1" + } + } + } + + "left4dead2" + { + "Signatures" + { + "CBaseEntity::PhysicsRemoveTouchedList" + { + "library" "server" + // Look for "remove 0x%x: %s-%s (%d-%d)", pick xref with a while loop + // 55 8B EC 83 EC 08 53 8B 5D 08 8B 83 B8 03 00 00 + "windows" "\x55\x8B\xEC\x83\xEC\x08\x53\x8B\x5D\x08\x8B\x83\xB8\x03\x00\x00" + } + } + } +} diff --git a/addons/sourcemod/gamedata/spawn_infected_nolimit.txt b/addons/sourcemod/gamedata/spawn_infected_nolimit.txt new file mode 100644 index 00000000..91e29279 --- /dev/null +++ b/addons/sourcemod/gamedata/spawn_infected_nolimit.txt @@ -0,0 +1,122 @@ +"Games" +{ + "left4dead" + { + "Signatures" + { + "Infected::AttackSurvivorTeam" + { + "library" "server" + "linux" "@_ZN8Infected18AttackSurvivorTeamEv" + "windows" "\x80\xB9\x99" + "mac" "@_ZN8Infected18AttackSurvivorTeamEv" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6SmokerEPT_PKc" + "windows" "\x83\x2A\x2A\x56\x57\x68\x20\xED" + "mac" "@_Z22NextBotCreatePlayerBotI6SmokerEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6BoomerEPT_PKc" + "windows" "\x83\x2A\x2A\x56\x57\x68\x10" + "mac" "@_Z22NextBotCreatePlayerBotI6BoomerEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6HunterEPT_PKc" + "windows" "\x83\x2A\x2A\x56\x57\x68\x20\x35" + "mac" "@_Z22NextBotCreatePlayerBotI6HunterEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI4TankEPT_PKc" + "windows" "\x83\x2A\x2A\x56\x57\x68\x80" + "mac" "@_Z22NextBotCreatePlayerBotI4TankEPT_PKc" + } + } + } + "left4dead2" + { + "Addresses" + { + "NextBotCreatePlayerBot.jumptable" + { + "windows" + { + "signature" "CTerrorPlayer::ReplaceWithBot.jumptable" + "offset" "7" + } + } + } + "Signatures" + { + "Infected::AttackSurvivorTeam" + { + "library" "server" + "linux" "@_ZN8Infected18AttackSurvivorTeamEv" + "windows" "\x56\x8B\x2A\x80\xBE\xC1\x1C\x00\x00\x01\x74\x2A\x80" + "mac" "@_ZN8Infected18AttackSurvivorTeamEv" + } + "CTerrorPlayer::ReplaceWithBot.jumptable" + { + "library" "server" + // Switch jump with a bunch of cases matching... + // PUSH rel32 + // CALL rel32 + // JUMP rel8 + // There are acutally 2 matches of this in the windows binary, + // but they appear to be the same functionality--so it doesn't matter which we get. + /* FF 24 85 ? ? ? ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 */ + "windows" "\xFF\x24\x85\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xEB\x2A\x68\x2A\x2A\x2A\x2A\xE8" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6SmokerEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI6SmokerEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6BoomerEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI6BoomerEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6HunterEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI6HunterEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI7SpitterEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI7SpitterEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI6JockeyEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI6JockeyEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI7ChargerEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI7ChargerEPT_PKc" + } + "NextBotCreatePlayerBot" + { + "library" "server" + "linux" "@_Z22NextBotCreatePlayerBotI4TankEPT_PKc" + "mac" "@_Z22NextBotCreatePlayerBotI4TankEPT_PKc" + } + } + } +} diff --git a/addons/sourcemod/gamedata/transition_restore_fix.txt b/addons/sourcemod/gamedata/transition_restore_fix.txt new file mode 100644 index 00000000..23d9aa5a --- /dev/null +++ b/addons/sourcemod/gamedata/transition_restore_fix.txt @@ -0,0 +1,275 @@ +// Many thanks to Psykotikism for sharing the Windows signature (https://github.com/Psykotikism/L4D1-2_Signatures) +"Games" +{ + "#default" + { + "Offsets" + { + "OS" + { + "linux" "1" + "windows" "0" + } + } + } + + "left4dead2" + { + "Functions" + { + "DD::CDirector::Restart" + { + "signature" "CDirector::Restart" + "callconv" "thiscall" + "return" "int" + "this" "address" + } + + "DD::CTerrorPlayer::TransitionRestore" + { + "signature" "CTerrorPlayer::TransitionRestore" + "callconv" "thiscall" + "return" "int" + "this" "entity" + } + + "DD::PlayerSaveData::Restore" + { + "signature" "PlayerSaveData::Restore" + "callconv" "thiscall" + "return" "void" + "this" "address" + "arguments" + { + "Player" + { + "type" "cbaseentity" + } + } + } + + "DD::CDirector::IsHumanSpectatorValid" + { + "signature" "CDirector::IsHumanSpectatorValid" + "callconv" "thiscall" + "return" "int" + "this" "address" + "arguments" + { + "SurvivorBot" + { + "type" "cbaseentity" + } + } + } + + "DD::CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots" + { + "signature" "CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots" + "callconv" "thiscall" + "return" "int" + "this" "address" + } + } + + "MemPatches" + { + "CTerrorPlayer::TransitionRestore::RestoreByUserId" + { + "signature" "CTerrorPlayer::TransitionRestore" + + "linux" + { + "offset" "64h" + "verify" "\x0F\x85\x36\x01\x00\x00" + "patch" "\x90\x90\x90\x90\x90\x90" + } + + "windows" + { + "offset" "55h" + "verify" "\x0F\x84\x22\x01\x00\x00" + "patch" "\x90\xE9\x22\x01\x00\x00" + } + } + + "RestoreTransitionedSurvivorBots::MaxRestoreSurvivorBots" + { + "signature" "RestoreTransitionedSurvivorBots" + + "linux" + { + "offset" "6Ah" + "verify" "\x83\xF8\x03" + "patch" "\x83\xF8\x03" + "preserve" "\xFF\xFF\xFF" + } + + "windows" + { + "offset" "50h" + "verify" "\x83\xF8\x04" + "patch" "\x83\xF8\x04" + "preserve" "\xFF\xFF\xFF" + } + } + } + + "Addresses" + { + "SavedPlayersCount" + { + "linux" + { + "signature" "CTerrorPlayer::TransitionRestore" + "read" "107" + } + "windows" + { + "signature" "CTerrorPlayer::TransitionRestore" + "read" "446" + } + } + + "SavedSurvivorBotsCount" + { + "linux" + { + "signature" "RestoreTransitionedSurvivorBots" + "read" "57" + } + "windows" + { + "signature" "RestoreTransitionedSurvivorBots" + "read" "53" + } + } + + "SavedLevelRestartSurvivorBotsCount" + { + "linux" + { + "signature" "CTerrorPlayer::TransitionRestore" + "read" "593" + } + "windows" + { + "signature" "CTerrorPlayer::TransitionRestore" + "read" "225" + } + } + + "CDirector" + { + "linux" + { + "signature" "TheDirector" + } + "windows" + { + "signature" "CDirectorMusicBanks::OnRoundStart" + "read" "12" + } + "read" "0" + } + } + + "Signatures" + { + /* CDirector::Restart(CDirector *__hidden this) */ + "CDirector::Restart" + { + "library" "server" + "linux" "@_ZN9CDirector7RestartEv" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x89\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x53\x56\x57\x8B" + /* ? ? ? ? ? ? ? ? ? A1 ? ? ? ? 33 ? 89 ? ? A1 ? ? ? ? 8B ? ? 53 56 57 8B */ + } + + /* CTerrorPlayer::TransitionRestore(CTerrorPlayer *__hidden this) */ + "CTerrorPlayer::TransitionRestore" + { + "library" "server" + "linux" "@_ZN13CTerrorPlayer17TransitionRestoreEv" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x80\xBE\x2A\x2A\x2A\x2A\x2A\x75\x2A\x33\x2A\x5E\x8B\x2A\x5D\xC3" + /* ? ? ? ? ? ? ? 80 BE ? ? ? ? ? 75 ? 33 ? 5E 8B ? 5D C3 */ + } + + /* PlayerSaveData::Restore(PlayerSaveData *__hidden this, CTerrorPlayer *) */ + "PlayerSaveData::Restore" + { + "library" "server" + "linux" "@_ZN14PlayerSaveData7RestoreEP13CTerrorPlayer" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x53\x8B\x2A\x2A\x8B\x2A\x2A\x56\x8B\x2A\x8B\x0D" + /* ? ? ? ? ? ? 53 8B ? ? 8B ? ? 56 8B ? 8B 0D */ + } + + /* CDirector::IsHumanSpectatorValid(CDirector *__hidden this, SurvivorBot *) */ + "CDirector::IsHumanSpectatorValid" + { + "library" "server" + "linux" "@_ZN9CDirector21IsHumanSpectatorValidEP11SurvivorBot" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x86\x2A\x2A\x2A\x2A\x50\xE8\x2A\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x8B\x8E" + /* ? ? ? ? ? ? ? 8B 86 ? ? ? ? 50 E8 ? ? ? ? 83 ? ? 85 ? 74 ? 8B 8E */ + } + + /* RestoreTransitionedSurvivorBots(void) */ + "RestoreTransitionedSurvivorBots" + { + "library" "server" + "linux" "@_Z31RestoreTransitionedSurvivorBotsv" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x85\x2A\x0F\x84\x2A\x2A\x2A\x2A\x53\x56\x57\x50\x68" + /* ? ? ? ? ? ? ? ? 83 ? ? 85 ? 0F 84 ? ? ? ? 53 56 57 50 68 */ + } + + /* CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots(CDirectorSessionManager *__hidden this) */ + "CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots" + { + "library" "server" + "linux" "@_ZN23CDirectorSessionManager38FillRemainingSurvivorTeamSlotsWithBotsEv" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x83\x2A\x2A\x85\x2A\x74\x2A\x8B\x2A\x8B\x90\x2A\x2A\x2A\x2A\x8B\x2A\xFF\x2A\x83" + /* ? ? ? ? ? ? ? ? 8B ? 83 ? ? 85 ? 74 ? 8B ? 8B 90 ? ? ? ? 8B ? FF ? 83 */ + } + + /* KeyValues::GetString(KeyValues *__hidden this, const char *, const char *) */ + "KeyValues::GetString" + { + "library" "server" + "linux" "@_ZN9KeyValues9GetStringEPKcS1_" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\x2A\x89\x2A\x2A\x53\x8B\x2A\x2A\x56\x57\x6A\x2A\x53\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x85\x2A\x0F\x84\x2A\x2A\x2A\x2A\x0F\x2A\x2A\x2A\x48\x83\x2A\x2A\x0F\x87\x2A\x2A\x2A\x2A\xFF\x24\x2A\x2A\x2A\x2A\x2A\xD9\x2A\x2A\x83\x2A\x2A\xDD\x2A\x2A\x68" + /* ? ? ? ? ? ? ? ? ? A1 ? ? ? ? 33 ? 89 ? ? 53 8B ? ? 56 57 6A ? 53 8B ? E8 ? ? ? ? 8B ? 85 ? 0F 84 ? ? ? ? 0F ? ? ? 48 83 ? ? 0F 87 ? ? ? ? FF 24 ? ? ? ? ? D9 ? ? 83 ? ? DD ? ? 68 */ + } + + /* KeyValues::SetString(KeyValues *__hidden this, const char *s, const char *) */ + "KeyValues::SetString" + { + "library" "server" + "linux" "@_ZN9KeyValues9SetStringEPKcS1_" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x56\x6A\x2A\x50\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x85\x2A\x74\x2A\x8B\x2A\x2A\x53\x57\x51\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x52\xE8\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x83\x2A\x2A\xC7\x46\x2A\x2A\x2A\x2A\x2A\x85\x2A\x75\x2A\xBB\x2A\x2A\x2A\x2A\x53" + /* ? ? ? ? ? ? 56 6A ? 50 E8 ? ? ? ? 8B ? 85 ? 74 ? 8B ? ? 53 57 51 E8 ? ? ? ? 8B ? ? 52 E8 ? ? ? ? 8B ? ? 83 ? ? C7 46 ? ? ? ? ? 85 ? 75 ? BB ? ? ? ? 53 */ + } + + "TheDirector" + { + "library" "server" + "linux" "@TheDirector" + } + + /* CDirectorMusicBanks::OnRoundStart(CDirectorMusicBanks *__hidden this) */ + "CDirectorMusicBanks::OnRoundStart" + { + "library" "server" + "windows" "\x2A\x2A\x2A\x2A\x2A\x2A\x56\x57\x8B\x2A\x8B\x0D\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x84\x2A\x0F" + /* ? ? ? ? ? ? 56 57 8B ? 8B 0D ? ? ? ? E8 ? ? ? ? 84 ? 0F */ + } + + /* CDirector::IsInTransition(CDirector *__hidden this) */ + "CDirector::IsInTransition" + { + "library" "server" + "linux" "@_ZNK9CDirector14IsInTransitionEv" + "windows" "\x80\x3D\x2A\x2A\x2A\x2A\x00\x75\x2A\x80\xB9\x8C\x02\x00\x00\x00" + /* 80 3D ? ? ? ? 00 75 ? 80 B9 8C 02 00 00 00 */ + } + } + } +} diff --git a/addons/sourcemod/plugins/bizzymod/HealthExpolitFixes.smx b/addons/sourcemod/plugins/bizzymod/HealthExpolitFixes.smx new file mode 100644 index 00000000..964c7c45 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/HealthExpolitFixes.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/L4DSwitchPlayers.smx b/addons/sourcemod/plugins/bizzymod/L4DSwitchPlayers.smx new file mode 100644 index 00000000..44ba6ec8 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/L4DSwitchPlayers.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/SaferoomNaps.smx b/addons/sourcemod/plugins/bizzymod/SaferoomNaps.smx new file mode 100644 index 00000000..edb24988 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/SaferoomNaps.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/boomer_gibs_restore.smx b/addons/sourcemod/plugins/bizzymod/boomer_gibs_restore.smx new file mode 100644 index 00000000..e81e50eb Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/boomer_gibs_restore.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/botbarrelfix.smx b/addons/sourcemod/plugins/bizzymod/botbarrelfix.smx new file mode 100644 index 00000000..e7df361d Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/botbarrelfix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/charger_clipbrush_fix.smx b/addons/sourcemod/plugins/bizzymod/charger_clipbrush_fix.smx new file mode 100644 index 00000000..e4821454 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/charger_clipbrush_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/game_files_precacher-l4d2.smx b/addons/sourcemod/plugins/bizzymod/game_files_precacher-l4d2.smx new file mode 100644 index 00000000..bdf7705c Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/game_files_precacher-l4d2.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/go_afk_unlock.smx b/addons/sourcemod/plugins/bizzymod/go_afk_unlock.smx new file mode 100644 index 00000000..823d1fcc Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/go_afk_unlock.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/jockey_ride_stuck_fix.smx b/addons/sourcemod/plugins/bizzymod/jockey_ride_stuck_fix.smx new file mode 100644 index 00000000..e3948c54 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/jockey_ride_stuck_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/join_clear_menu.smx b/addons/sourcemod/plugins/bizzymod/join_clear_menu.smx new file mode 100644 index 00000000..aba85a06 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/join_clear_menu.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_additional_deathmsg.ru.smx b/addons/sourcemod/plugins/bizzymod/l4d2_additional_deathmsg.ru.smx new file mode 100644 index 00000000..88035269 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_additional_deathmsg.ru.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_antimelee.smx b/addons/sourcemod/plugins/bizzymod/l4d2_antimelee.smx deleted file mode 100644 index 72fe0911..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d2_antimelee.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_deathcheck_final.smx b/addons/sourcemod/plugins/bizzymod/l4d2_deathcheck_final.smx new file mode 100644 index 00000000..5ed45c2a Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_deathcheck_final.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_deleteweapon.smx b/addons/sourcemod/plugins/bizzymod/l4d2_deleteweapon.smx deleted file mode 100644 index 2e39c72c..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d2_deleteweapon.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_fall_scream_fix.smx b/addons/sourcemod/plugins/bizzymod/l4d2_fall_scream_fix.smx new file mode 100644 index 00000000..9a14c683 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_fall_scream_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_finaleghostrangemod.smx b/addons/sourcemod/plugins/bizzymod/l4d2_finaleghostrangemod.smx new file mode 100644 index 00000000..ddf042ad Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_finaleghostrangemod.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_freeroam.smx b/addons/sourcemod/plugins/bizzymod/l4d2_freeroam.smx new file mode 100644 index 00000000..80393e8c Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_freeroam.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_godframesbegone.smx b/addons/sourcemod/plugins/bizzymod/l4d2_godframesbegone.smx new file mode 100644 index 00000000..9b595d62 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_godframesbegone.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_launcher_unlock_autocomplete.smx b/addons/sourcemod/plugins/bizzymod/l4d2_launcher_unlock_autocomplete.smx new file mode 100644 index 00000000..6991c736 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_launcher_unlock_autocomplete.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_model_precacher.smx b/addons/sourcemod/plugins/bizzymod/l4d2_model_precacher.smx new file mode 100644 index 00000000..92fbb6b4 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_model_precacher.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_navigation_fixes.smx b/addons/sourcemod/plugins/bizzymod/l4d2_navigation_fixes.smx new file mode 100644 index 00000000..2c8b64f1 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_navigation_fixes.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_pistol_reload_empty_fix.smx b/addons/sourcemod/plugins/bizzymod/l4d2_pistol_reload_empty_fix.smx new file mode 100644 index 00000000..b4432262 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_pistol_reload_empty_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_realism_namecheck.smx b/addons/sourcemod/plugins/bizzymod/l4d2_realism_namecheck.smx new file mode 100644 index 00000000..cf868d37 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_realism_namecheck.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_riot_penetration.smx b/addons/sourcemod/plugins/bizzymod/l4d2_riot_penetration.smx new file mode 100644 index 00000000..8bc48e8f Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_riot_penetration.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_sacrifice_fix.smx b/addons/sourcemod/plugins/bizzymod/l4d2_sacrifice_fix.smx new file mode 100644 index 00000000..17bddb10 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_sacrifice_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_scav_fix_nm5.smx b/addons/sourcemod/plugins/bizzymod/l4d2_scav_fix_nm5.smx new file mode 100644 index 00000000..f464d903 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_scav_fix_nm5.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_sgfix.smx b/addons/sourcemod/plugins/bizzymod/l4d2_sgfix.smx new file mode 100644 index 00000000..d7ae3ef2 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_sgfix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_showhp.smx b/addons/sourcemod/plugins/bizzymod/l4d2_showhp.smx new file mode 100644 index 00000000..62ee1dac Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_showhp.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2_ty_saveweapon.smx b/addons/sourcemod/plugins/bizzymod/l4d2_ty_saveweapon.smx new file mode 100644 index 00000000..367bee3a Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2_ty_saveweapon.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2sicooplimit.smx b/addons/sourcemod/plugins/bizzymod/l4d2sicooplimit.smx new file mode 100644 index 00000000..d5056524 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2sicooplimit.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d2witchprecache.smx b/addons/sourcemod/plugins/bizzymod/l4d2witchprecache.smx new file mode 100644 index 00000000..bcb9e117 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d2witchprecache.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_RespawnStat.smx b/addons/sourcemod/plugins/bizzymod/l4d_RespawnStat.smx new file mode 100644 index 00000000..c16dc7b1 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_RespawnStat.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_afk_commands.smx b/addons/sourcemod/plugins/bizzymod/l4d_afk_commands.smx new file mode 100644 index 00000000..7c931753 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_afk_commands.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_bot_sniper_rifle_aifix.smx b/addons/sourcemod/plugins/bizzymod/l4d_bot_sniper_rifle_aifix.smx new file mode 100644 index 00000000..d55f407d Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_bot_sniper_rifle_aifix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_client_timeout_override.smx b/addons/sourcemod/plugins/bizzymod/l4d_client_timeout_override.smx new file mode 100644 index 00000000..58191b2c Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_client_timeout_override.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_console_spam.smx b/addons/sourcemod/plugins/bizzymod/l4d_console_spam.smx new file mode 100644 index 00000000..502b910b Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_console_spam.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_freezesrceen unlock.smx b/addons/sourcemod/plugins/bizzymod/l4d_freezesrceen unlock.smx new file mode 100644 index 00000000..d5dad648 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_freezesrceen unlock.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_god_frames.smx b/addons/sourcemod/plugins/bizzymod/l4d_god_frames.smx new file mode 100644 index 00000000..d30d8266 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_god_frames.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_grenade_transfer.smx b/addons/sourcemod/plugins/bizzymod/l4d_grenade_transfer.smx new file mode 100644 index 00000000..b45eb8e7 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_grenade_transfer.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_heal_revive_fix.smx b/addons/sourcemod/plugins/bizzymod/l4d_heal_revive_fix.smx deleted file mode 100644 index e13db166..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d_heal_revive_fix.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_heartbeat.smx b/addons/sourcemod/plugins/bizzymod/l4d_heartbeat.smx new file mode 100644 index 00000000..5d0d3ae8 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_heartbeat.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_late_model_precacher.smx b/addons/sourcemod/plugins/bizzymod/l4d_late_model_precacher.smx new file mode 100644 index 00000000..50e69c8b Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_late_model_precacher.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_notank.smx b/addons/sourcemod/plugins/bizzymod/l4d_notank.smx deleted file mode 100644 index aa1dcf79..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d_notank.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_nowitch.smx b/addons/sourcemod/plugins/bizzymod/l4d_nowitch.smx deleted file mode 100644 index 511060ae..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d_nowitch.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_passing_Tank_no_instant_respawn.smx b/addons/sourcemod/plugins/bizzymod/l4d_passing_Tank_no_instant_respawn.smx deleted file mode 100644 index c6b982e2..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4d_passing_Tank_no_instant_respawn.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_pause_message.smx b/addons/sourcemod/plugins/bizzymod/l4d_pause_message.smx new file mode 100644 index 00000000..62eafd3b Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_pause_message.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_pipebomb_ignore.smx b/addons/sourcemod/plugins/bizzymod/l4d_pipebomb_ignore.smx new file mode 100644 index 00000000..d8c9aaaf Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_pipebomb_ignore.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_sb.smx b/addons/sourcemod/plugins/bizzymod/l4d_sb.smx new file mode 100644 index 00000000..35b01017 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_sb.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_skip_intro.smx b/addons/sourcemod/plugins/bizzymod/l4d_skip_intro.smx index 4697c787..c02c0f77 100644 Binary files a/addons/sourcemod/plugins/bizzymod/l4d_skip_intro.smx and b/addons/sourcemod/plugins/bizzymod/l4d_skip_intro.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_sm_respawn.smx b/addons/sourcemod/plugins/bizzymod/l4d_sm_respawn.smx new file mode 100644 index 00000000..43ca0a84 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_sm_respawn.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_stuckzombiemeleefix.smx b/addons/sourcemod/plugins/bizzymod/l4d_stuckzombiemeleefix.smx new file mode 100644 index 00000000..82fb24d5 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_stuckzombiemeleefix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_superversus.smx b/addons/sourcemod/plugins/bizzymod/l4d_superversus.smx new file mode 100644 index 00000000..e745ac19 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_superversus.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_survivor_spawnpos_fix.smx b/addons/sourcemod/plugins/bizzymod/l4d_survivor_spawnpos_fix.smx new file mode 100644 index 00000000..f2278f97 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_survivor_spawnpos_fix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_survivorai_pouncedfix.smx b/addons/sourcemod/plugins/bizzymod/l4d_survivorai_pouncedfix.smx new file mode 100644 index 00000000..33578b54 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_survivorai_pouncedfix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4d_survivorai_triggerfix.smx b/addons/sourcemod/plugins/bizzymod/l4d_survivorai_triggerfix.smx new file mode 100644 index 00000000..f4864bd4 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4d_survivorai_triggerfix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4dafkfix.smx b/addons/sourcemod/plugins/bizzymod/l4dafkfix.smx new file mode 100644 index 00000000..2fe5cd6c Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4dafkfix.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/l4dpistoldelay.smx b/addons/sourcemod/plugins/bizzymod/l4dpistoldelay.smx deleted file mode 100644 index 34a5d081..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/l4dpistoldelay.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/l4dunreservelobby.smx b/addons/sourcemod/plugins/bizzymod/l4dunreservelobby.smx new file mode 100644 index 00000000..fc2b9fe6 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/l4dunreservelobby.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/lagpreventor.smx b/addons/sourcemod/plugins/bizzymod/lagpreventor.smx new file mode 100644 index 00000000..5aedca05 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/lagpreventor.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/lfd_both_csm_voice.smx b/addons/sourcemod/plugins/bizzymod/lfd_both_csm_voice.smx new file mode 100644 index 00000000..98f52f8c Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/lfd_both_csm_voice.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/noteam_nudging.smx b/addons/sourcemod/plugins/bizzymod/noteam_nudging.smx new file mode 100644 index 00000000..210c1784 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/noteam_nudging.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/sacrifice_finale_revamp.smx b/addons/sourcemod/plugins/bizzymod/sacrifice_finale_revamp.smx new file mode 100644 index 00000000..b22abdf3 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/sacrifice_finale_revamp.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/sm_give.smx b/addons/sourcemod/plugins/bizzymod/sm_give.smx new file mode 100644 index 00000000..f65ee2e4 Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/sm_give.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/spawn_infected_nolimit.smx b/addons/sourcemod/plugins/bizzymod/spawn_infected_nolimit.smx new file mode 100644 index 00000000..c7ce87bb Binary files /dev/null and b/addons/sourcemod/plugins/bizzymod/spawn_infected_nolimit.smx differ diff --git a/addons/sourcemod/plugins/bizzymod/tank_and_nowitch_ifier.smx b/addons/sourcemod/plugins/bizzymod/tank_and_nowitch_ifier.smx deleted file mode 100644 index 527fce09..00000000 Binary files a/addons/sourcemod/plugins/bizzymod/tank_and_nowitch_ifier.smx and /dev/null differ diff --git a/addons/sourcemod/plugins/bizzymod/tankdoorfix.smx b/addons/sourcemod/plugins/bizzymod/tankdoorfix.smx index 6be9ba35..13489e9b 100644 Binary files a/addons/sourcemod/plugins/bizzymod/tankdoorfix.smx and b/addons/sourcemod/plugins/bizzymod/tankdoorfix.smx differ diff --git a/addons/sourcemod/scripting/Anti_double_SI_patch.sp b/addons/sourcemod/scripting/Anti_double_SI_patch.sp new file mode 100644 index 00000000..c3cbbd7b --- /dev/null +++ b/addons/sourcemod/scripting/Anti_double_SI_patch.sp @@ -0,0 +1,230 @@ +#pragma semicolon 1 +#include +#include + +new bool:SmokerAlive = false; +new bool:HunterAlive = false; + +bool WasFirstSmoker[MAXPLAYERS + 1] = false; +bool WasFirstHunter[MAXPLAYERS + 1] = false; + +public Plugin myinfo = +{ + name = "Anti double SI patch", + author = "Lunatix", + description = "Fix the problem when there are double smoker/hunter", + version = "1.4", + url = "http" +}; + +public void OnPluginStart() +{ + HookEvent("player_disconnect", playerDisconnect); + HookEvent("player_bot_replace", BotReplacedPlayer); + HookEvent("player_spawn", PlayerSpawn_Event, EventHookMode_PostNoCopy); + HookEvent("player_death", PlayerDeath_Event, EventHookMode_PostNoCopy); + HookEvent("round_end", Event_RoundEndResetFirstSI, EventHookMode_PostNoCopy); +} + +public OnMapStart() +{ + for (int client = 1; client <= MaxClients; client++) + { + if (client > 0 && IsClientInGame(client)) + { + WasFirstSmoker[client] = false; + WasFirstHunter [client] = false; + SmokerAlive = false; + HunterAlive = false; + //PrintToChatAll("[Debug] First hunter and smoker bools reset for every client."); + } + } +} + +public void Event_RoundEndResetFirstSI(Event hEvent, const char[] name, bool dontBroadcast) +{ + for (int client = 1; client <= MaxClients; client++) + { + if (client > 0 && IsClientInGame(client)) + { + WasFirstSmoker[client] = false; + WasFirstHunter [client] = false; + SmokerAlive = false; + HunterAlive = false; + //PrintToChatAll("[Debug] First hunter and smoker bools reset for every client."); + } + } +} + +public playerDisconnect(Handle:event, const String:name[], bool:dontBroadcast) +{ + new client = GetClientOfUserId(GetEventInt(event, "userid")); + if (client <= 0 || client > MaxClients) return; + + if (WasFirstSmoker[client] == true) + { + WasFirstSmoker[client] = false; + SmokerAlive = false; + //PrintToChatAll("[Debug] First smoker %N disconnected", client); + } + + if (WasFirstHunter[client] == true) + { + WasFirstHunter [client] = false; + HunterAlive = false; + //PrintToChatAll("[Debug] First hunter %N disconnected", client); + } + +} + +public void BotReplacedPlayer(Event hEvent, const char[] sEntityName, bool bDontBroadcast) +{ + int client = GetClientOfUserId(hEvent.GetInt("player")); + int iBot = GetClientOfUserId(hEvent.GetInt("bot")); + + if (client > 0 && WasFirstSmoker[client] == true) + { + //SmokerAlive = true; + WasFirstSmoker[client] = false; + //PrintToChatAll("[Debug] First smoker %N becomes tank and is replaced by bot", client); + } + + if (client > 0 && WasFirstHunter[client] == true) + { + //HunterAlive = true; + WasFirstHunter[client] = false; + //PrintToChatAll("[Debug] First hunter %N becomes tank and is replaced by bot", client); + } + + if (GetEntProp(iBot, Prop_Send, "m_zombieClass") == 1) //change is so it is at the same level than player + { + WasFirstSmoker[iBot] = true; + //SmokerAlive = true; + //PrintToChatAll("[Debug] Bot is now the new first smoker"); + } + + if (GetEntProp(iBot, Prop_Send, "m_zombieClass") == 3) + { + WasFirstHunter[iBot] = true; + //HunterAlive = true; + //PrintToChatAll("[Debug] Bot is now the new first hunter"); + } +} + +public void PlayerSpawn_Event(Event event, const char[] eName, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + + if (client <= 0 || client > MaxClients) return; + + if (IsClientInGame(client) && GetClientTeam(client) == 3) + { + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 1) + { + if (SmokerAlive == false) + { + WasFirstSmoker[client] = true; + SmokerAlive = true; + //PrintToChatAll("[Debug] %N is now the new first smoker", client); + } + + if (SmokerAlive == true && IsFakeClient(client)) + { + CreateTimer(0.1, TimerCheckDoubleSmoker); + } + } + + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 3) + { + if (HunterAlive == false) + { + WasFirstHunter [client] = true; + HunterAlive = true; + //PrintToChatAll("[Debug] %N is now the new first hunter", client); + } + + if (HunterAlive == true && IsFakeClient(client)) + { + CreateTimer(0.1, TimerCheckDoubleHunter); + } + } + } + +} + +public Action:TimerCheckDoubleSmoker(Handle:timer) +{ + for (int client = 1; client <= MaxClients; client++) + { + if (client <= 0 || client > MaxClients) return; + + if (IsClientConnected(client) && IsFakeClient(client) && WasFirstSmoker[client] == false) + { + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 1) + { + if (L4D2_IsInfectedBusy(client) == false) + { + KickClient(client); + //PrintToChatAll("[Debug] Double smoker detected, bot killed as he was not first."); + } + } + } + } +} + +public Action:TimerCheckDoubleHunter(Handle:timer) +{ + for (int client = 1; client <= MaxClients; client++) + { + if (client <= 0 || client > MaxClients) return; + + if (IsClientConnected(client) && IsFakeClient(client) && WasFirstHunter[client] == false) + { + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 3) + { + if (L4D2_IsInfectedBusy(client) == false) + { + KickClient(client); + //PrintToChatAll("[Debug] Double hunter detected, bot killed as he was not first."); + } + } + } + } +} + +public void PlayerDeath_Event(Event event, const char[] eName, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + + if (client > 0 && IsClientInGame(client) && GetClientTeam(client) == 3) + { + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 1) + { + if (WasFirstSmoker[client] == true) + { + WasFirstSmoker[client] = false; + SmokerAlive = false; + //PrintToChatAll("[Debug] First smoker %N is now dead, waiting for next one.", client); + } + } + + if (GetEntProp(client, Prop_Send, "m_zombieClass") == 3) + { + if (WasFirstHunter[client] == true) + { + WasFirstHunter [client] = false; + HunterAlive = false; + //PrintToChatAll("[Debug] First hunter %N is now dead, waiting for next one.", client); + } + } + } +} + +stock bool L4D2_IsInfectedBusy(int client) +{ + return GetEntPropEnt(client, Prop_Send, "m_pummelVictim") > 0 || + GetEntPropEnt(client, Prop_Send, "m_carryVictim") > 0 || + GetEntPropEnt(client, Prop_Send, "m_pounceVictim") > 0 || + GetEntPropEnt(client, Prop_Send, "m_jockeyVictim") > 0 || + GetEntPropEnt(client, Prop_Send, "m_tongueVictim") > 0; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/HealthExpolitFixes.sp b/addons/sourcemod/scripting/HealthExpolitFixes.sp new file mode 100644 index 00000000..b88fe315 --- /dev/null +++ b/addons/sourcemod/scripting/HealthExpolitFixes.sp @@ -0,0 +1,113 @@ +#define PLUGIN_VERSION "1.0" + +#pragma semicolon 1 +#include + +#define debug 0 + +public Plugin:myinfo = +{ + name = "Health Expolit Fixes", + author = "raziEiL [disawar1]", + description = "Plugin fixes 3 health expolit caused when survivor hanging on a ledge and after it", + version = PLUGIN_VERSION, + url = "http://steamcommunity.com/id/raziEiL" +} + +static Handle:g_hDecayRate, Float:g_fTempHp[MAXPLAYERS+1]; + +public OnPluginStart() +{ + CreateConVar("healthexpolit_fix_version", PLUGIN_VERSION, "Health Expolit Fixes plugin version", FCVAR_REPLICATED|FCVAR_NOTIFY); + + g_hDecayRate = FindConVar("pain_pills_decay_rate"); + + HookEvent("player_ledge_grab", HE_PlayerLedgeGrab); + HookEvent("revive_success", HE_ReviveSuccess); + + #if debug + RegAdminCmd("sm_he", CmdHE, ADMFLAG_ROOT); + #endif +} + +#if debug +public Action:CmdHE(client, args) +{ + if (!args){ + + ReplyToCommand(client, "g_fTempHp = %f", g_fTempHp[client]); + return Plugin_Handled; + } + + decl String:sCmdLine[64]; + GetCmdArg(1, sCmdLine, 64); + + g_fTempHp[client] = StringToFloat(sCmdLine); + SetSurvivorTempHealth(client); + + ReplyToCommand(client, "input %f", g_fTempHp[client]); + return Plugin_Handled; +} +#endif + +public Action:HE_PlayerLedgeGrab(Handle:event, const String:name[], bool:dontBroadcast) +{ + new client = GetClientOfUserId(GetEventInt(event, "userid")); + + if ((g_fTempHp[client] = GetSuvivorTempHealth(client))) + SetEntPropFloat(client, Prop_Send, "m_healthBuffer", 0.0); + + #if debug + PrintToChatAll("save %f over heal", g_fTempHp[client]); + #endif +} + +public Action:HE_ReviveSuccess(Handle:event, const String:name[], bool:dontBroadcast) +{ + if (!GetEventBool(event, "ledge_hang")) return; + + new client = GetClientOfUserId(GetEventInt(event, "subject")); + + if (g_fTempHp[client]) + CreateTimer(0.0, HE_t_PreRestoreHealth, client); + else if (GetClientHealth(client) < 30) + SetSurvivorTempHealth(client); +} + +public Action:HE_t_PreRestoreHealth(Handle:timer, any:client) +{ + SetSurvivorTempHealth(client); +} + +Float:GetSuvivorTempHealth(client) +{ + new Float:fHealth = GetEntPropFloat(client, Prop_Send, "m_healthBuffer"); + fHealth -= (GetGameTime() - GetEntPropFloat(client, Prop_Send, "m_healthBufferTime")) * GetConVarFloat(g_hDecayRate); + return fHealth < 0.0 ? 0.0 : fHealth; +} + +SetSurvivorTempHealth(client) +{ + SetEntPropFloat(client, Prop_Send, "m_healthBufferTime", GetGameTime()); + SetEntPropFloat(client, Prop_Send, "m_healthBuffer", g_fTempHp[client]); + + #if debug + PrintToChatAll("%f restore", g_fTempHp[client]); + #endif +} + +public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +{ + if (!IsDedicatedServer()) + return APLRes_Failure; + + decl String:sBuffer[64]; + GetGameFolderName(sBuffer, 64); + + if (strcmp(sBuffer, "left4dead") == 0) + return APLRes_Success; + + Format(sBuffer, 64, "Plugin not support \"%s\" game", sBuffer); + strcopy(error, err_max, sBuffer); + return APLRes_Failure; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/JockeyPounce.sp b/addons/sourcemod/scripting/JockeyPounce.sp index fa321849..37f9b1dd 100644 --- a/addons/sourcemod/scripting/JockeyPounce.sp +++ b/addons/sourcemod/scripting/JockeyPounce.sp @@ -38,11 +38,11 @@ public OnPluginStart() SetFailState( "Jockey pounce damage supports Left 4 Dead 2 only" ); g_hEnabled = CreateConVar( "l4d2_JockeyPounce_enabled", "1", "Should the plugin be enabled", FCVAR_PLUGIN ); - g_hBlindAmount = CreateConVar( "l4d2_JockeyPounce_blind", "150", "How much the jockey should blind the player (0: non, 255:completely)", FCVAR_PLUGIN ); + g_hBlindAmount = CreateConVar( "l4d2_JockeyPounce_blind", "0", "How much the jockey should blind the player (0: non, 255:completely)", FCVAR_PLUGIN ); g_hPounceScale = CreateConVar( "l4d2_JockeyPounce_scale", "1.0", "Scale how much damage the pounce does (e.g. 0.5 will half the default damage, 5 will make it 5 times more powerfull)", FCVAR_PLUGIN ); g_hPounceCap = CreateConVar( "l4d2_JockeyPounce_cap", "100", "Cap of the maximum damage a pounce can do", FCVAR_PLUGIN ); g_hPounceMinShow = CreateConVar( "l4d2_JockeyPounce_minshow", "3", "Minimum damage a pounce should do to show the pounce message", FCVAR_PLUGIN ); - g_hPounceDisplay = CreateConVar( "l4d2_JockeyPounce_display", "2", "How message should be shown, 0 - Disabled, 1 - Chat message, 2 - Hint Message", FCVAR_PLUGIN ); + g_hPounceDisplay = CreateConVar( "l4d2_JockeyPounce_display", "0", "How message should be shown, 0 - Disabled, 1 - Chat message, 2 - Hint Message", FCVAR_PLUGIN ); g_hPounceDisplayMax = CreateConVar( "l4d2_JockeyPounce_display_max", "0", "Show the damagecap in the display message", FCVAR_PLUGIN ); g_hPounceStoreStats = CreateConVar( "l4d2_JockeyPounce_store_stats", "1", "Save the pounces in a database", FCVAR_PLUGIN ); AutoExecConfig( true, "[L4D2]JockeyPounce" ); @@ -289,4 +289,4 @@ public Action:timer_stock_applyDamage(Handle:timer, Handle:dataPack) DispatchKeyValue(entPointHurt, "classname", "point_hurt"); DispatchKeyValue(victim, "targetname", "null"); RemoveEdict(entPointHurt); -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/L4DSwitchPlayers.sp b/addons/sourcemod/scripting/L4DSwitchPlayers.sp new file mode 100644 index 00000000..008e406e --- /dev/null +++ b/addons/sourcemod/scripting/L4DSwitchPlayers.sp @@ -0,0 +1,451 @@ +/******************************************************************************************** +* Plugin : L4DSwitchPlayers +* Version : 1.4 +* Game : Left 4 Dead 2 +* Author : SkyDavid (djromero) +* Website : www.sky.zebgames.com +* +* Purpose : This plugin allows admins to switch player's teams or swap 2 players +* +* Version 1.0: +* - Initial release +* +* Version 1.1: +* - Added check to prevent switching a player to a team that is already full +* +* Version 1.2: +* - Added cvar to bypass team full check (l4dswitch_checkteams). Default = 1. +* Change to 0 to disable it. +* - Added new Swap Players option, that allows to immediately swap 2 player's teams. +* (2 lines of code taken from Downtown1's L4d Ready up plugin) +* Version 1.2.1: +* - Added public cvar. +* Version 1.3: +* - Fixed plubic cvar to disable check of full teams. +* - Added validations to prevent log errors when a player leaves the game before it +* gets switched/swapped. +* Version 1.4: +* - Added support for L4D2. Thanks to AtomicStryker for finding the new signature. +* +*********************************************************************************************/ + +#define PLUGIN_VERSION "1.4" +#pragma semicolon 1 +#include +#include +#include +#undef REQUIRE_PLUGIN +#include + + +// top menu +new Handle:hTopMenu = INVALID_HANDLE; + +// Sdk calls +new Handle:gConf = INVALID_HANDLE; +new Handle:fSHS = INVALID_HANDLE; +new Handle:fTOB = INVALID_HANDLE; + +new Handle:Survivor_Limit; +new Handle:Infected_Limit; +new Handle:h_Switch_CheckTeams; + +new bool:IsSwapPlayers; +new SwapPlayer1; +new SwapPlayer2; + + +public Plugin:myinfo = +{ + name = "L4DSwitchPlayers", + author = "SkyDavid (djromero)", + description = "Adds optiosn to players commands menu to switch and swap players' team", + version = PLUGIN_VERSION, + url = "www.sky.zebgames.com" +} + +public OnPluginStart() +{ + LoadTranslations("common.phrases"); + + // We register the version cvar + CreateConVar("l4d_switchplayers_version", PLUGIN_VERSION, "Version of L4D Switch Players plugin", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); + + + // SDK Calls: Copied from L4DUnscrambler plugin, made by Fyren (http://forums.alliedmods.net/showthread.php?p=730278) + gConf = LoadGameConfigFile("l4dswitchplayers"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(gConf, SDKConf_Signature, "SetHumanSpec"); + PrepSDKCall_AddParameter(SDKType_CBasePlayer, SDKPass_Pointer); + fSHS = EndPrepSDKCall(); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(gConf, SDKConf_Signature, "TakeOverBot"); + PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); + fTOB = EndPrepSDKCall(); + + Survivor_Limit = FindConVar("survivor_limit"); + Infected_Limit = FindConVar("z_max_player_zombies"); + + // New console variables + h_Switch_CheckTeams = CreateConVar("l4dswitch_checkteams", "1", "Determines if the function should check if target team is full", ADMFLAG_KICK, true, 0.0, true, 1.0); + + // First we check if menu is ready .. + if (LibraryExists("adminmenu") && ((hTopMenu = GetAdminTopMenu()) != INVALID_HANDLE)) + { + OnAdminMenuReady(hTopMenu); + } +} +new g_SwitchTo; +new g_SwitchTarget; + +public OnLibraryRemoved(const String:name[]) +{ + if (StrEqual(name, "adminmenu")) + { + hTopMenu = INVALID_HANDLE; + } +} + +public OnAdminMenuReady(Handle:topmenu) +{ + // Check .. + if (topmenu == hTopMenu) return; + + // We save the handle + hTopMenu = topmenu; + + // Find player's menu ... + new TopMenuObject:players_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_PLAYERCOMMANDS); + + // now we add the function ... + if (players_commands != INVALID_TOPMENUOBJECT) + { + AddToTopMenu (hTopMenu, "l4dteamswitch", TopMenuObject_Item, SkyAdmin_SwitchPlayer, players_commands, "l4dteamswitch", ADMFLAG_KICK); + AddToTopMenu (hTopMenu, "l4dswapplayers", TopMenuObject_Item, SkyAdmin_SwapPlayers, players_commands, "l4dswapplayers", ADMFLAG_KICK); + } +} + +public SkyAdmin_SwitchPlayer(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength) +{ + IsSwapPlayers = false; + SwapPlayer1 = -1; + SwapPlayer2 = -1; + + if (action == TopMenuAction_DisplayOption) + { + Format(buffer, maxlength, "Switch player", "", param); + } + else if (action == TopMenuAction_SelectOption) + { + //DisplaySwitchPlayerToMenu(param); + DisplaySwitchPlayerMenu(param); + } +} + +public SkyAdmin_SwapPlayers(Handle:topmenu, TopMenuAction:action, TopMenuObject:object_id, param, String:buffer[], maxlength) +{ + IsSwapPlayers = true; + SwapPlayer1 = -1; + SwapPlayer2 = -1; + + if (action == TopMenuAction_DisplayOption) + { + Format(buffer, maxlength, "Swap players", "", param); + } + else if (action == TopMenuAction_SelectOption) + { + //DisplaySwitchPlayerToMenu(param); + DisplaySwitchPlayerMenu(param); + } +} + + +DisplaySwitchPlayerMenu(client) +{ + new Handle:menu = CreateMenu(MenuHandler_SwitchPlayer); + + decl String:title[100]; + if (!IsSwapPlayers) + Format(title, sizeof(title), "Switch player", "", client); + else + { + if (SwapPlayer1 == -1) + Format(title, sizeof(title), "Player 1", "", client); + else + Format(title, sizeof(title), "Player 2", "", client); + } + SetMenuTitle(menu, title); + SetMenuExitBackButton(menu, true); + + AddTargetsToMenu2(menu, client, COMMAND_FILTER_CONNECTED | COMMAND_FILTER_NO_BOTS); + + DisplayMenu(menu, client, MENU_TIME_FOREVER); +} + +public MenuHandler_SwitchPlayer(Handle:menu, MenuAction:action, param1, param2) +{ + if (action == MenuAction_End) + { + CloseHandle(menu); + } + else if (action == MenuAction_Cancel) + { + if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE) + { + DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); + } + } + else if (action == MenuAction_Select) + { + decl String:info[32]; + new userid, target; + + GetMenuItem(menu, param2, info, sizeof(info)); + userid = StringToInt(info); + + if ((target = GetClientOfUserId(userid)) == 0) + { + PrintToChat(param1, "[SM] %t", "Player no longer available"); + } + else if (!CanUserTarget(param1, target)) + { + PrintToChat(param1, "[SM] %t", "Unable to target"); + } + + if (IsSwapPlayers) + { + if (SwapPlayer1 == -1) + SwapPlayer1 = target; + else + SwapPlayer2 = target; + + if ((SwapPlayer1 != -1)&&(SwapPlayer2 != -1)) + { + PerformSwap(param1); + DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); + } + else + DisplaySwitchPlayerMenu(param1); + + } + else + { + g_SwitchTarget = target; + DisplaySwitchPlayerToMenu(param1); + } + } +} + +DisplaySwitchPlayerToMenu(client) +{ + new Handle:menu = CreateMenu(MenuHandler_SwitchPlayerTo); + + decl String:title[100]; + Format(title, sizeof(title), "Choose team", "", client); + SetMenuTitle(menu, title); + SetMenuExitBackButton(menu, true); + + AddMenuItem(menu, "1", "Spectators"); + AddMenuItem(menu, "2", "Survivors"); + AddMenuItem(menu, "3", "Infected"); + + DisplayMenu(menu, client, MENU_TIME_FOREVER); +} + +public MenuHandler_SwitchPlayerTo(Handle:menu, MenuAction:action, param1, param2) +{ + if (action == MenuAction_End) + { + CloseHandle(menu); + } + else if (action == MenuAction_Cancel) + { + if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE) + { + DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); + } + } + else if (action == MenuAction_Select) + { + decl String:info[32]; + + GetMenuItem(menu, param2, info, sizeof(info)); + g_SwitchTo = StringToInt(info); + + PerformSwitch(param1, g_SwitchTarget, g_SwitchTo, false); + + DisplaySwitchPlayerMenu(param1); + } +} + + +bool:IsTeamFull (team) +{ + // Spectator's team is never full :P + if (team == 1) + return false; + + new max; + new count; + new i; + + // we count the players in the survivor's team + if (team == 2) + { + max = GetConVarInt(Survivor_Limit); + count = 0; + for (i=1;i= max) + return true; + else + return false; +} + + +PerformSwap (client) +{ + // If client 1 and 2 are the same ... + if (SwapPlayer1 == SwapPlayer2) + { + PrintToChat(client, "[SM] Can't swap this player with himself."); + return; + } + + // Check if 1st player is still valid ... + if ((!IsClientConnected(SwapPlayer1)) || (!IsClientInGame(SwapPlayer1))) + { + PrintToChat(client, "[SM] First player is not available anymore."); + return; + } + + // Check if 2nd player is still valid .... + if ((!IsClientConnected(SwapPlayer2)) || (!IsClientInGame(SwapPlayer2))) + { + PrintToChat(client, "[SM] Second player is not available anymore."); + return; + } + + // get the teams of each player + new team1 = GetClientTeam(SwapPlayer1); + new team2 = GetClientTeam(SwapPlayer2); + + // If both players are on the same team ... + if (team1 == team2) + { + PrintToChat(client, "[SM] Can't swap players that are on the same team."); + return; + } + + // Just in case survivor's team becomes empty (copied from Downtown1's L4d Ready up plugin) + SetConVarInt(FindConVar("sb_all_bot_team"), 1); + + // first we move both clients to spectators + PerformSwitch(client, SwapPlayer1, 1, true); + PerformSwitch(client, SwapPlayer2, 1, true); + + // Now we move each client to their respective team + PerformSwitch(client, SwapPlayer1, team2, true); + PerformSwitch(client, SwapPlayer2, team1, true); + + // Just in case survivor's team becomes empty + ResetConVar(FindConVar("sb_all_bot_team")); + + + // Print swap info .. + new String:PlayerName1[200]; + new String:PlayerName2[200]; + GetClientName(SwapPlayer1, PlayerName1, sizeof(PlayerName1)); + GetClientName(SwapPlayer2, PlayerName2, sizeof(PlayerName2)); + PrintToChatAll("\x01[SM] \x03%s \x01has been swapped with \x03%s", PlayerName1, PlayerName2); +} + + +PerformSwitch (client, target, team, bool:silent) +{ + if ((!IsClientConnected(client)) || (!IsClientInGame(client))) + { + PrintToChat(client, "[SM] The player is not avilable anymore."); + return; + } + + // If teams are the same ... + if (GetClientTeam(target) == team) + { + PrintToChat(client, "[SM] That player is already on that team."); + return; + } + + // If we should check if teams are fulll ... + if (GetConVarBool(h_Switch_CheckTeams)) + { + // We check if target team is full... + if (IsTeamFull(team)) + { + if (team == 2) + PrintToChat(client, "[SM] The \x03Survivor\x01's team is already full."); + else + PrintToChat(client, "[SM] The \x03Infected\x01's team is already full."); + return; + } + } + + // If player was on infected .... + if (GetClientTeam(target) == 3) + { + // ... and he wasn't a tank ... + new String:iClass[100]; + GetClientModel(target, iClass, sizeof(iClass)); + if (StrContains(iClass, "hulk", false) == -1) + ForcePlayerSuicide(target); // we kill him + } + + // If target is survivors .... we need to do a little trick .... + if (team == 2) + { + // first we switch to spectators .. + ChangeClientTeam(target, 1); + + // Search for an empty bot + new bot = 1; + while !(IsClientConnected(bot) && IsFakeClient(bot) && (GetClientTeam(bot) == 2)) do bot++; + + // force player to spec humans + SDKCall(fSHS, bot, target); + + // force player to take over bot + SDKCall(fTOB, target, true); + } + else // We change it's team ... + { + ChangeClientTeam(target, team); + } + + // Print switch info .. + new String:PlayerName[200]; + GetClientName(target, PlayerName, sizeof(PlayerName)); + + if (!silent) + { + if (team == 1) + PrintToChatAll("\x01[SM] \x03%s \x01has been moved to \x03Spectators", PlayerName); + else if (team == 2) + PrintToChatAll("\x01[SM] \x03%s \x01has been moved to \x03Survivors", PlayerName); + else if (team == 3) + PrintToChatAll("\x01[SM] \x03%s \x01has been moved to \x03Infected", PlayerName); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/SaferoomNaps.sp b/addons/sourcemod/scripting/SaferoomNaps.sp new file mode 100644 index 00000000..1c1ff47c --- /dev/null +++ b/addons/sourcemod/scripting/SaferoomNaps.sp @@ -0,0 +1,86 @@ +#pragma semicolon 1 +#include +#include +#define PLUGIN_VERSION "1.0" + + +public Plugin:myinfo = +{ + name = "Saferoom Naps: Spawn Next Map With 50 HP", + author = "ConnerRia", + description = "Prevent metagaming in harder gamemodes. If you have less than 50hp, spawn in saferooms with 50hp. ", + version = PLUGIN_VERSION, + url = "N/A" +} + +int iSurvivorRespawnHealth, iCustomSaferoomHealth, iUseCustomValue, iRemoveBlackAndWhite, iHealthToSet; +ConVar hUseCustomValue, hCustomSaferoomHealth, hRemoveBlackAndWhite, hTempHealthMultiplier, hVeryHealthyTempHealthMultiplier; +float fTempHealthMultiplier, fCurrentBufferHealth, fVeryHealthyTempHealthMultiplier; + +public void OnPluginStart() +{ + decl String:game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false) && !StrEqual(game_name, "left4dead", false)) + { + SetFailState("Plugin supports Left 4 Dead series only."); + } + + CreateConVar("SafeRoomNaps_Version", PLUGIN_VERSION, "SafeRoomNaps Version", FCVAR_NOTIFY|FCVAR_REPLICATED|FCVAR_DONTRECORD); + + hUseCustomValue = CreateConVar("SafeRoomNaps_CanWeUseCustomValue", "0", "Set to 1 if you want to input your own saferoom hp value. Uses the z_survivor_respawn_health value otherwise. Disabled by default.", FCVAR_NOTIFY|FCVAR_REPLICATED); + hCustomSaferoomHealth = CreateConVar("SafeRoomNaps_CustomSaferoomHealth", "50", "Not used unless hUseCustomValue is enabled. If your health is lower than the set value, it will be modified to that value when the next map loads. ", FCVAR_NOTIFY|FCVAR_REPLICATED); + hRemoveBlackAndWhite = CreateConVar("SafeRoomNaps_RemoveBlackAndWhite", "1.0", "Whether to remove black-and-white from players. Set to 0 to disable this feature. ", FCVAR_NOTIFY|FCVAR_REPLICATED); + hTempHealthMultiplier = CreateConVar("SafeRoomNaps_TempHealthMultiplier", "0.0", "Multiplier of buffer health (from incap revive, pain pills, adrenaline) to keep for low health players. Default is 0.0, which means temp health is not kept at all. A value of 1 means all buffer health is kept. ", FCVAR_NOTIFY|FCVAR_REPLICATED); + hVeryHealthyTempHealthMultiplier = CreateConVar("SafeRoomNaps_VeryHealthyTempHealthMultiplier", "1.0", "Multiplier of buffer health to keep for high health players who have not been incapped.(those above 50 real hp or the set saferoom health value). Default is 1.0, which means all their temp health is kept.", FCVAR_NOTIFY|FCVAR_REPLICATED); + + AutoExecConfig(true, "SaferoomNaps"); + + HookEvent("map_transition", Event_MapTransition, EventHookMode_Pre); + +} + +public Action: Event_MapTransition(Handle:event, const String:name[], bool:dontBroadcast) +{ + + iCustomSaferoomHealth = hCustomSaferoomHealth.IntValue; + iUseCustomValue = hUseCustomValue.IntValue; + iSurvivorRespawnHealth = FindConVar("z_survivor_respawn_health").IntValue; + iRemoveBlackAndWhite = hRemoveBlackAndWhite.IntValue; + fTempHealthMultiplier = hTempHealthMultiplier.FloatValue; + fVeryHealthyTempHealthMultiplier = hVeryHealthyTempHealthMultiplier.FloatValue; + + if (iUseCustomValue == 1) + { + iHealthToSet = iCustomSaferoomHealth; + } + else + { + iHealthToSet = iSurvivorRespawnHealth; + } + for (new i = 1; i <= MaxClients; i++) + { + if (IsClientConnected(i) && GetClientTeam(i) == 2) + { + SetEntProp(i, Prop_Send, "m_iHideHUD", 64); + if (iRemoveBlackAndWhite == 1) + { + SetEntProp(i, Prop_Send, "m_currentReviveCount", 0); + SetEntProp(i, Prop_Send, "m_bIsOnThirdStrike", 0); + StopSound(i, SNDCHAN_AUTO, "player/heartbeatloop.wav"); + } + if (GetClientHealth(i) < iHealthToSet) + { + fCurrentBufferHealth = GetEntPropFloat(i, Prop_Send, "m_healthBuffer"); + SetEntPropFloat(i, Prop_Send, "m_healthBuffer", fCurrentBufferHealth * fTempHealthMultiplier); + SetEntityHealth(i, iHealthToSet); + } + else + { + fCurrentBufferHealth = GetEntPropFloat(i, Prop_Send, "m_healthBuffer"); + SetEntPropFloat(i, Prop_Send, "m_healthBuffer", fCurrentBufferHealth * fVeryHealthyTempHealthMultiplier); + } + } + } +} + diff --git a/addons/sourcemod/scripting/antiflood.sp b/addons/sourcemod/scripting/antiflood.sp deleted file mode 100644 index 901327a2..00000000 --- a/addons/sourcemod/scripting/antiflood.sp +++ /dev/null @@ -1,123 +0,0 @@ -/** - * vim: set ts=4 : - * ============================================================================= - * SourceMod Anti-Flood Plugin - * Protects against chat flooding. - * - * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. - * ============================================================================= - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 3.0, as published by the - * Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along with - * this program. If not, see . - * - * As a special exception, AlliedModders LLC gives you permission to link the - * code of this program (as well as its derivative works) to "Half-Life 2," the - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software - * by the Valve Corporation. You must obey the GNU General Public License in - * all respects for all other code used. Additionally, AlliedModders LLC grants - * this exception to all derivative works. AlliedModders LLC defines further - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), - * or . - * - * Version: $Id$ - */ - -#pragma semicolon 1 - -#include - -#pragma newdecls required - -public Plugin myinfo = -{ - name = "Anti-Flood", - author = "AlliedModders LLC", - description = "Protects against chat flooding", - version = SOURCEMOD_VERSION, - url = "http://www.sourcemod.net/" -}; - -enum struct PlayerInfo { - float lastTime; /* Last time player used say or say_team */ - int tokenCount; /* Number of flood tokens player has */ -} - -PlayerInfo playerinfo[MAXPLAYERS+1]; - -ConVar sm_flood_time; /* Handle to sm_flood_time convar */ -float max_chat; -public void OnPluginStart() -{ - sm_flood_time = CreateConVar("sm_flood_time", "0.75", "Amount of time allowed between chat messages"); -} - -public void OnClientPutInServer(int client) -{ - playerinfo[client].lastTime = 0.0; - playerinfo[client].tokenCount = 0; -} - - -public bool OnClientFloodCheck(int client) -{ - max_chat = sm_flood_time.FloatValue; - - if (max_chat <= 0.0 - || CheckCommandAccess(client, "sm_flood_access", ADMFLAG_ROOT, true)) - { - return false; - } - - if (playerinfo[client].lastTime >= GetGameTime()) - { - /* If player has 3 or more flood tokens, block their message */ - if (playerinfo[client].tokenCount >= 3) - { - return true; - } - } - - return false; -} - -public void OnClientFloodResult(int client, bool blocked) -{ - if (max_chat <= 0.0 - || CheckCommandAccess(client, "sm_flood_access", ADMFLAG_ROOT, true)) - { - return; - } - - float curTime = GetGameTime(); - float newTime = curTime + max_chat; - - if (playerinfo[client].lastTime >= curTime) - { - /* If the last message was blocked, update their time limit */ - if (blocked) - { - newTime += 3.0; - } - /* Add one flood token when player goes over chat time limit */ - else if (playerinfo[client].tokenCount < 3) - { - playerinfo[client].tokenCount++; - } - } - else if (playerinfo[client].tokenCount > 0) - { - /* Remove one flood token when player chats within time limit (slow decay) */ - playerinfo[client].tokenCount--; - } - - playerinfo[client].lastTime = newTime; -} diff --git a/addons/sourcemod/scripting/bizzykits.sp b/addons/sourcemod/scripting/bizzykits.sp index a038fe35..3b6c6189 100644 --- a/addons/sourcemod/scripting/bizzykits.sp +++ b/addons/sourcemod/scripting/bizzykits.sp @@ -43,7 +43,7 @@ public Plugin:myinfo = public OnPluginStart() { - hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "1", "Enable temp health medkits"); + hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "0", "Enable temp health medkits"); HookConVarChange(hEnabled, Enabled_Change); bEnabled = GetConVarBool(hEnabled); @@ -144,4 +144,4 @@ stock SetBlackAndWhite(target, health, temp_health) SetEntityHealth(target, health); SetSurvivorTempHealth(target, temp_health); } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/bizzykits_legacy.sp b/addons/sourcemod/scripting/bizzykits_legacy.sp index 862a49bd..9eb2f5de 100644 --- a/addons/sourcemod/scripting/bizzykits_legacy.sp +++ b/addons/sourcemod/scripting/bizzykits_legacy.sp @@ -43,7 +43,7 @@ public Plugin:myinfo = public OnPluginStart() { - hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "1", "Enable temp health medkits"); + hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "0", "Enable temp health medkits"); HookConVarChange(hEnabled, Enabled_Change); bEnabled = GetConVarBool(hEnabled); @@ -143,4 +143,4 @@ stock SetBlackAndWhite(target, health, temp_health) SetEntityHealth(target, health); SetSurvivorTempHealth(target, temp_health); } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/boomer_gibs_restore.sp b/addons/sourcemod/scripting/boomer_gibs_restore.sp new file mode 100644 index 00000000..7fbb6d3a --- /dev/null +++ b/addons/sourcemod/scripting/boomer_gibs_restore.sp @@ -0,0 +1,242 @@ +/* +* Copyright (C) 2019 LuxLuma acceliacat@gmail.com +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + + +#pragma semicolon 1 + +#include +#include + +#pragma newdecls required + +#define PLUGIN_VERSION "1.0.2" + +#define INT_(%1) view_as(%1) + +#define ENTITY_SAFE_LIMIT 1900 + +#define ZOMBIECLASS_BOOMER 2 +#define GIBMODELS 5 +#define MAX_FLESH_PARTS 12 //changeme for more flesh parts bewarned setting too high will make some gibs despawn instantly depends on client settings from testing 15 total seems to be consisten regardless of settings + +enum BoomerGib +{ + BoomerGib_Head = 0, + BoomerGib_Arm, + BoomerGib_Flesh1, + BoomerGib_Flesh2, + BoomerGib_Flesh3 +} + +char g_sBoomerGibModel[GIBMODELS][] = +{ + "models/infected/limbs/exploded_boomer_head.mdl", + "models/infected/limbs/exploded_boomer_rarm.mdl",// only right arm exists O.o + "models/infected/limbs/exploded_boomer_steak1.mdl", + "models/infected/limbs/exploded_boomer_steak2.mdl", + "models/infected/limbs/exploded_boomer_steak3.mdl" +}; + + +float g_flTickInterval; + + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion CurrentEngine = GetEngineVersion(); + if(CurrentEngine != Engine_Left4Dead2) + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 2"); + return APLRes_SilentFailure; + } + return APLRes_Success; +} + +public Plugin myinfo = +{ + name = "[L4D2]boomer_gibs_restore", + author = "Lux", + description = "Replicates the clientside cheat z_boomer_gibs", + version = PLUGIN_VERSION, + url = "https://github.com/LuxLuma/L4D_boomer_gibs_restore" +}; + +public void OnPluginStart() +{ + CreateConVar("boomer_gibs_restore_version", PLUGIN_VERSION, "", FCVAR_NOTIFY|FCVAR_DONTRECORD); + HookEvent("player_death", ePlayerDeath); +} + +public void OnMapStart() +{ + g_flTickInterval = GetTickInterval(); + + for(int i; i < sizeof(g_sBoomerGibModel); i++) + PrecacheModel(g_sBoomerGibModel[i], true); +} + +public void ePlayerDeath(Event hEvent, const char[] sEventName, bool bDontBroadcast) +{ + int iVictim = GetClientOfUserId(hEvent.GetInt("userid")); + if(iVictim < 1 || !IsClientInGame(iVictim) || GetClientTeam(iVictim) != 3) + return; + + if(GetEntProp(iVictim, Prop_Send, "m_zombieClass") != ZOMBIECLASS_BOOMER) + return; + + static float vecPos[3]; + static float vecAng[3]; + + GetEntityMidOrigin(iVictim, vecPos); + GetClientAbsAngles(iVictim, vecAng); + + SpawnBoomerGibs(vecPos, vecAng); + + TE_SetupExplodeForce(vecPos, 75.0, 20.0); + TE_SendToAll(g_flTickInterval); +} + +void SpawnBoomerGibs(float vecPos[3], float vecAng[3]) +{ + static float vecPosCopy[3]; + static float vecAngCopy[3]; + + vecPosCopy = vecPos; + vecPosCopy[2] += 30.0; + if(CreateBoomerGib(vecPosCopy, vecAng, BoomerGib_Head))//head + return; + + vecAngCopy = vecAng; + vecPosCopy = vecPos; + vecAngCopy[1] += 45.0; + + GetDirection(vecPosCopy, vecAngCopy, 30.0); + if(CreateBoomerGib(vecPosCopy, vecAng, BoomerGib_Arm))//arm + return; + + vecAngCopy = vecAng; + vecPosCopy = vecPos; + vecAngCopy[1] += -45.0; + + GetDirection(vecPosCopy, vecAngCopy, 30.0); + if(CreateBoomerGib(vecPosCopy, vecAng, BoomerGib_Arm))//flesh parts + return; + + int iFleshyParts = GetRandomInt(MAX_FLESH_PARTS / 2, MAX_FLESH_PARTS);// add random amount + for(int i = 1; i <= iFleshyParts; i++) + { + vecPosCopy[0] = vecPos[0] + GetRandomFloat(-20.0, 20.0); + vecPosCopy[1] = vecPos[1] + GetRandomFloat(-20.0, 20.0); + vecPosCopy[2] = vecPos[2] + GetRandomFloat(-20.0, 20.0); + + if(CreateBoomerGib(vecPosCopy, vecAng, view_as(GetRandomInt(INT_(BoomerGib_Flesh1), INT_(BoomerGib_Flesh3))))) + return; + } +} + +bool CreateBoomerGib(float vecPos[3], float vecAng[3], BoomerGib GibType) +{ + int iGib = CreateEntityByName("prop_dynamic_override"); + if(iGib == -1) + return false; + + bool bAtEntityLimit = (iGib >= ENTITY_SAFE_LIMIT); + + DispatchKeyValue(iGib, "model", g_sBoomerGibModel[GibType]); + DispatchKeyValue(iGib, "solid", "0"); + + TeleportEntity(iGib, vecPos, vecAng, NULL_VECTOR); + DispatchSpawn(iGib); + + + static char sBuf[64]; + Format(sBuf, sizeof(sBuf), "OnUser1 !self:BecomeRagdoll::%f:-1", g_flTickInterval); + SetVariantString(sBuf); + AcceptEntityInput(iGib, "AddOutput"); + AcceptEntityInput(iGib, "FireUser1"); + + return bAtEntityLimit; +} + +void GetEntityMidOrigin(int iEntity, float fOrigin[3]) +{ + float fMins[3]; + float fMaxs[3]; + GetEntPropVector(iEntity, Prop_Send, "m_vecOrigin", fOrigin); + GetEntPropVector(iEntity, Prop_Send, "m_vecMins", fMins); + GetEntPropVector(iEntity, Prop_Send, "m_vecMaxs", fMaxs); + + fOrigin[0] += (fMins[0] + fMaxs[0]) * 0.5; + fOrigin[1] += (fMins[1] + fMaxs[1]) * 0.5; + fOrigin[2] += (fMins[2] + fMaxs[2]) * 0.5; +} + +void GetDirection(float vecPos[3], float vecAng[3], float flDistance=0.0) +{ + float vecDirection[3]; + GetAngleVectors(vecAng, vecDirection, NULL_VECTOR, NULL_VECTOR); + + vecPos[0] = vecPos[0] + vecDirection[0] * flDistance; + vecPos[1] = vecPos[1] + vecDirection[1] * flDistance; + vecPos[2] = vecPos[2] + vecDirection[2] * flDistance; +} + +stock void TE_SetupExplodeForce(float vecPos[3], float flRadius, float flForce) +{ + static int iEffectIndex = INVALID_STRING_INDEX; + if(iEffectIndex < 0) + { + iEffectIndex = __FindStringIndex2(FindStringTable("EffectDispatch"), "ExplosionForce"); + if(iEffectIndex == INVALID_STRING_INDEX) + SetFailState("Unable to find EffectDispatch/ExplosionForce indexes"); + + } + + TE_Start("EffectDispatch"); + TE_WriteNum("m_iEffectName", iEffectIndex); + TE_WriteFloat("m_vOrigin.x", vecPos[0]); + TE_WriteFloat("m_vOrigin.y", vecPos[1]); + TE_WriteFloat("m_vOrigin.z", vecPos[2]); + TE_WriteFloat("m_flRadius", flRadius); + TE_WriteFloat("m_flMagnitude", flForce); +} + +//Credit smlib https://github.com/bcserv/smlib +/* + * Rewrite of FindStringIndex, because in my tests + * FindStringIndex failed to work correctly. + * Searches for the index of a given string in a string table. + * + * @param tableidx A string table index. + * @param str String to find. + * @return String index if found, INVALID_STRING_INDEX otherwise. + */ +stock int __FindStringIndex2(int tableidx, const char[] str) +{ + char buf[1024]; + + int numStrings = GetStringTableNumStrings(tableidx); + for (int i=0; i < numStrings; i++) { + ReadStringTable(tableidx, i, buf, sizeof(buf)); + + if (StrEqual(buf, str)) { + return i; + } + } + + return INVALID_STRING_INDEX; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/botbarrelfix.sp b/addons/sourcemod/scripting/botbarrelfix.sp new file mode 100644 index 00000000..11db296e --- /dev/null +++ b/addons/sourcemod/scripting/botbarrelfix.sp @@ -0,0 +1,45 @@ +#pragma semicolon 1 + +#include +#include +#include + +public Plugin:myinfo = +{ + name = "Fuel Barrel Bot Fix", + author = "tRololo312312", + description = "Prevents bots from exploding fuel barrels.", + version = "1.0", + url = "http://www.sourcemod.net/" +}; + +public OnEntityCreated(entity, const String:classname[]) +{ + if(StrEqual(classname, "prop_fuel_barrel")) + { + if(IsValidEntity(entity)) + { + SDKHook(entity, SDKHook_OnTakeDamage, FuelDamage); + } + } +} + +public Action:FuelDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype, &weapon, Float:damageForce[3], Float:damagePosition[3]) +{ + if(IsValidClient(attacker)) + { + if(IsFakeClient(attacker) && GetClientTeam(attacker) == 2) + { + damage = 0.0; + return Plugin_Changed; + } + } + return Plugin_Continue; +} + +stock bool:IsValidClient(client) +{ + if(!(1 <= client <= MaxClients ) || !IsClientInGame(client)) + return false; + return true; +} diff --git a/addons/sourcemod/scripting/charger_clipbrush_fix.sp b/addons/sourcemod/scripting/charger_clipbrush_fix.sp new file mode 100644 index 00000000..3a46acc8 --- /dev/null +++ b/addons/sourcemod/scripting/charger_clipbrush_fix.sp @@ -0,0 +1,59 @@ +#include +#include + +#pragma semicolon 1 + +public Plugin:myinfo = +{ + name = "[L4D2] Charger Invisible Wall Grab FIX", + author = "AntiQar & Spumer", + description = "", + version = "1.0.1", + url = "http://zo-zo.org/" +} + + +static Float:g_fChargers[33][3]; + +public OnPluginStart() { + HookEvent("charger_carry_start", Event_HookStart, EventHookMode_Pre); + HookEvent("charger_carry_end", Event_HookEnd); +} + +public Action:Event_HookStart(Handle:event, const String:name[], bool:dontBroadcast) { + new Float:vPos[3]; + + new attacker = GetClientOfUserId(GetEventInt(event, "userid")); + if (attacker > 0) { + new victim = GetClientOfUserId(GetEventInt(event, "victim")); + if (victim > 0) { + GetClientAbsOrigin(victim, vPos); + } + g_fChargers[attacker] = vPos; + } + + return Plugin_Continue; +} + +public Event_HookEnd(Handle:event, const String:name[], bool:dontBroadcast) { + new client = GetClientOfUserId(GetEventInt(event, "userid")); + if (client == 0) { + return; + } + + decl Float:vMin[3], Float:vMax[3]; + GetClientMins(client, vMin); + GetClientMaxs(client, vMax); + + decl Float:vVec[3]; + + GetClientAbsOrigin(client, vVec); + vVec[2] += 64.0; + + new Handle:hTrace = TR_TraceHullEx(vVec, vVec, vMin, vMax, CONTENTS_PLAYERCLIP); + if(TR_DidHit(hTrace)) { + if(GetVectorDistance(vVec, g_fChargers[client]) <= 150.0) + TeleportEntity(client, g_fChargers[client], NULL_VECTOR, NULL_VECTOR); + } + CloseHandle(hTrace); +} diff --git a/addons/sourcemod/scripting/game_files_precacher-l4d2.sp b/addons/sourcemod/scripting/game_files_precacher-l4d2.sp new file mode 100644 index 00000000..497a7a25 --- /dev/null +++ b/addons/sourcemod/scripting/game_files_precacher-l4d2.sp @@ -0,0 +1,168 @@ +#pragma semicolon 1 +#pragma newdecls required +#include +#include + +#define PLUGIN_VERSION "1.8" + +public Plugin myinfo = +{ + name = "[L4D2] Game Files Precacher", + author = "cravenge", + description = "Precaches Game Files To Prevent Crashes.", + version = PLUGIN_VERSION, + url = "forums.alliedmods.net" +}; + +public void OnPluginStart() +{ + char game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false)) + { + SetFailState("[GFP] Plugin Supports L4D2 Only!"); + } +} + +public void OnMapStart() +{ + PrecacheModel("models/survivors/survivor_gambler.mdl", true); + PrecacheModel("models/survivors/survivor_producer.mdl", true); + PrecacheModel("models/survivors/survivor_coach.mdl", true); + PrecacheModel("models/survivors/survivor_mechanic.mdl", true); + PrecacheModel("models/survivors/survivor_namvet.mdl", true); + PrecacheModel("models/survivors/survivor_teenangst.mdl", true); + PrecacheModel("models/survivors/survivor_biker.mdl", true); + PrecacheModel("models/survivors/survivor_manager.mdl", true); + PrecacheModel("models/survivors/survivor_adawong.mdl", true); + + PrecacheModel("models/weapons/arms/v_arms_gambler_new.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_producer_new.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_coach_new.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_mechanic_new.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_bill.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_zoey.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_francis.mdl", true); + PrecacheModel("models/weapons/arms/v_arms_louis.mdl", true); + + PrecacheModel("models/v_models/v_grenade_launcher.mdl", true); + PrecacheModel("models/w_models/weapons/w_grenade_launcher.mdl", true); + PrecacheModel("models/v_models/v_m60.mdl", true); + PrecacheModel("models/w_models/weapons/w_m60.mdl", true); + PrecacheModel("models/w_models/weapons/w_minigun.mdl", true); + PrecacheModel("models/w_models/weapons/50cal.mdl", true); + + PrecacheModel("models/v_models/v_rif_sg552.mdl", true); + PrecacheModel("models/w_models/weapons/w_rifle_sg552.mdl", true); + PrecacheModel("models/v_models/v_snip_awp.mdl", true); + PrecacheModel("models/w_models/weapons/w_sniper_awp.mdl", true); + PrecacheModel("models/v_models/v_snip_scout.mdl", true); + PrecacheModel("models/w_models/weapons/w_sniper_scout.mdl", true); + PrecacheModel("models/v_models/v_smg_mp5.mdl", true); + PrecacheModel("models/w_models/weapons/w_smg_mp5.mdl", true); + PrecacheModel("models/v_models/v_knife_t.mdl", true); + PrecacheModel("models/w_models/weapons/w_knife_t.mdl", true); + PrecacheModel("models/weapons/melee/v_riotshield.mdl", true); + PrecacheModel("models/weapons/melee/w_riotshield.mdl", true); + + PrecacheModel("models/weapons/melee/v_bat.mdl", true); + PrecacheModel("models/weapons/melee/w_bat.mdl", true); + PrecacheModel("models/weapons/melee/v_cricket_bat.mdl", true); + PrecacheModel("models/weapons/melee/w_cricket_bat.mdl", true); + PrecacheModel("models/weapons/melee/v_crowbar.mdl", true); + PrecacheModel("models/weapons/melee/w_crowbar.mdl", true); + PrecacheModel("models/weapons/melee/v_electric_guitar.mdl", true); + PrecacheModel("models/weapons/melee/w_electric_guitar.mdl", true); + PrecacheModel("models/weapons/melee/v_fireaxe.mdl", true); + PrecacheModel("models/weapons/melee/w_fireaxe.mdl", true); + PrecacheModel("models/bunny/weapons/melee/v_b_foamfinger.mdl", true); + PrecacheModel("models/bunny/weapons/melee/w_b_foamfinger.mdl", true); + PrecacheModel("models/weapons/melee/v_frying_pan.mdl", true); + PrecacheModel("models/weapons/melee/w_frying_pan.mdl", true); + PrecacheModel("models/weapons/melee/v_golfclub.mdl", true); + PrecacheModel("models/weapons/melee/w_golfclub.mdl", true); + PrecacheModel("models/weapons/melee/v_katana.mdl", true); + PrecacheModel("models/weapons/melee/w_katana.mdl", true); + PrecacheModel("models/weapons/melee/v_machete.mdl", true); + PrecacheModel("models/weapons/melee/w_machete.mdl", true); + PrecacheModel("models/weapons/melee/v_paintrain.mdl", true); + PrecacheModel("models/weapons/melee/w_paintrain.mdl", true); + PrecacheModel("models/weapons/melee/v_sledgehammer.mdl", true); + PrecacheModel("models/weapons/melee/w_sledgehammer.mdl", true); + PrecacheModel("models/weapons/melee/v_tonfa.mdl", true); + PrecacheModel("models/weapons/melee/w_tonfa.mdl", true); + PrecacheModel("models/weapons/melee/v_tonfa_riot.mdl", true); + PrecacheModel("models/weapons/melee/w_tonfa_riot.mdl", true); + + PrecacheModel("models/sblitz/foam_finger.mdl", true); + PrecacheModel("models/bunny/b_ghostanim5.mdl", true); + PrecacheModel("models/weapons/melee/v_crowbaa.mdl", true); + PrecacheModel("models/weapons/melee/v_electric_guitaa.mdl", true); + + PrecacheModel("models/v_models/v_incendiary_ammopack.mdl", true); + PrecacheModel("models/w_models/weapons/w_eq_incendiary_ammopack.mdl", true); + PrecacheModel("models/v_models/v_explosive_ammopack.mdl", true); + PrecacheModel("models/w_models/weapons/w_eq_explosive_ammopack.mdl", true); + + PrecacheModel("models/v_models/v_bile_flask.mdl", true); + PrecacheModel("models/w_models/weapons/w_eq_bile_flask.mdl", true); + PrecacheModel("models/w_models/weapons/v_cola.mdl", true); + PrecacheModel("models/w_models/weapons/w_cola.mdl", true); + PrecacheModel("models/weapons/melee/v_gnome.mdl", true); + PrecacheModel("models/weapons/melee/w_gnome.mdl", true); + + PrecacheModel("models/infected/hulk.mdl", true); + PrecacheModel("models/infected/hulk_dlc3.mdl", true); + PrecacheModel("models/infected/fs_glowtank.mdl", true); + + PrecacheModel("models/infected/witch.mdl", true); + PrecacheModel("models/infected/witch_bride.mdl", true); + + PrecacheModel("models/infected/boomette.mdl", true); + PrecacheModel("models/infected/common_male_ceda.mdl", true); + PrecacheModel("models/infected/common_male_clown.mdl", true); + PrecacheModel("models/infected/common_male_fallen_survivor.mdl", true); + PrecacheModel("models/infected/common_male_jimmy.mdl", true); + PrecacheModel("models/infected/common_male_mud.mdl", true); + PrecacheModel("models/infected/common_male_riot.mdl", true); + PrecacheModel("models/infected/common_male_roadcrew.mdl", true); + + PrecacheModel("models/props_junk/gascan001a.mdl", true); + PrecacheModel("models/props_junk/explosive_box001.mdl", true); + PrecacheModel("models/props_junk/propanecanister001a.mdl", true); + PrecacheModel("models/props_vehicles/tire001c_car.mdl", true); + PrecacheModel("models/props_unique/airport/atlas_break_ball.mdl", true); + + PrecacheSound("player/survivor/voice/teengirl/hordeattack10.wav", true); + PrecacheSound("ambient/fire/gascan_ignite1.wav", true); + PrecacheSound("player/charger/hit/charger_smash_02.wav", true); + PrecacheSound("npc/infected/action/die/male/death_42.wav", true); + PrecacheSound("npc/infected/action/die/male/death_43.wav", true); + PrecacheSound("ambient/energy/zap1.wav", true); + PrecacheSound("ambient/energy/zap5.wav", true); + PrecacheSound("ambient/energy/zap7.wav", true); + PrecacheSound("player/spitter/voice/warn/spitter_spit_02.wav", true); + PrecacheSound("player/tank/voice/growl/tank_climb_01.wav", true); + PrecacheSound("player/tank/voice/growl/tank_climb_02.wav", true); + PrecacheSound("player/tank/voice/growl/tank_climb_03.wav", true); + PrecacheSound("player/tank/voice/growl/tank_climb_04.wav", true); + + PrecacheGeneric("scripts/melee/baseball_bat.txt", true); + PrecacheGeneric("scripts/melee/cricket_bat.txt", true); + PrecacheGeneric("scripts/melee/crowbar.txt", true); + PrecacheGeneric("scripts/melee/fireaxe.txt", true); + PrecacheGeneric("scripts/melee/foam_finger.txt", true); + PrecacheGeneric("scripts/melee/frying_pan.txt", true); + PrecacheGeneric("scripts/melee/golfclub.txt", true); + PrecacheGeneric("scripts/melee/hunting_knife.txt", true); + PrecacheGeneric("scripts/melee/katana.txt", true); + PrecacheGeneric("scripts/melee/knife.txt", true); + PrecacheGeneric("scripts/melee/machete.txt", true); + PrecacheGeneric("scripts/melee/melee_manifest.txt", true); + PrecacheGeneric("scripts/melee/nail_board.txt", true); + PrecacheGeneric("scripts/melee/riotshield.txt", true); + PrecacheGeneric("scripts/melee/sledgehammer.txt", true); + PrecacheGeneric("scripts/melee/tonfa.txt", true); + PrecacheGeneric("scripts/melee/tonfa_riotshield.txt", true); +} + diff --git a/addons/sourcemod/scripting/go_afk_unlock.sp b/addons/sourcemod/scripting/go_afk_unlock.sp new file mode 100644 index 00000000..771ef94e --- /dev/null +++ b/addons/sourcemod/scripting/go_afk_unlock.sp @@ -0,0 +1,335 @@ +#pragma semicolon 1 +#include + +#define PLUGIN_VERSION "0.3" + +bool bIsL4D; +Address aGoAFK[4] = {Address_Null, ...}; + +static int iOriginalBytes_GoAFK[8] = {-1, ...}; + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion ev_RetVal = GetEngineVersion(); + if (ev_RetVal != Engine_Left4Dead && ev_RetVal != Engine_Left4Dead2) + { + strcopy(error, err_max, "[GoAFK Unlock] Plugin Supports L4D And L4D2 Only!"); + return APLRes_SilentFailure; + } + + bIsL4D = (ev_RetVal == Engine_Left4Dead); + return APLRes_Success; +} + +public Plugin myinfo = +{ + name = "[L4D/L4D2] \"go_away_from_keyboard\" Unlock", + author = "cravenge", + description = "Lets Players Be Able To Idle All The Time.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=333815" +}; + +public void OnPluginStart() +{ + GameData gd_GoAFK = FetchGameData("go_afk_unlock"); + if (gd_GoAFK == null) + { + SetFailState("[GoAFK Unlock] Game Data Not Found!"); + } + + int iOffset_GoAFK; + + aGoAFK[0] = gd_GoAFK.GetAddress("PlayerPreThink"); + if (aGoAFK[0] != Address_Null) + { + aGoAFK[1] = aGoAFK[0]; + + iOffset_GoAFK = gd_GoAFK.GetOffset("PreThink_CompetitiveCondition"); + if (iOffset_GoAFK != -1) + { + if (LoadFromAddress(aGoAFK[0] + view_as
(iOffset_GoAFK), NumberType_Int8) == 0x0F) + { + aGoAFK[0] += view_as
(iOffset_GoAFK); + + for (int i = 0; i < 6; i++) + { + iOriginalBytes_GoAFK[i] = LoadFromAddress(aGoAFK[0] + view_as
(i), NumberType_Int8); + + StoreToAddress(aGoAFK[0] + view_as
(i), 0x90, NumberType_Int8); + } + + PrintToServer("[GoAFK Unlock] Idling Is Now Unrestricted!"); + } + else + { + SetFailState("[GoAFK Unlock] Offset \"PreThink_CompetitiveCondition\" Incorrect!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Offset \"PreThink_CompetitiveCondition\" Missing!"); + } + + iOffset_GoAFK = gd_GoAFK.GetOffset("PreThink_HumanSurvivorsCondition"); + if (iOffset_GoAFK != -1) + { + if (LoadFromAddress(aGoAFK[1] + view_as
(iOffset_GoAFK), NumberType_Int8) == 0x01) + { + aGoAFK[1] += view_as
(iOffset_GoAFK); + + StoreToAddress(aGoAFK[1], 0x00, NumberType_Int8); + + PrintToServer("[GoAFK Unlock] Auto Idle Now Works Everytime!"); + } + else + { + SetFailState("[GoAFK Unlock] Offset \"PreThink_HumanSurvivorsCondition\" Incorrect!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Offset \"PreThink_HumanSurvivorsCondition\" Missing!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Address \"PlayerPreThink\" Missing!"); + } + + if (!bIsL4D) + { + aGoAFK[2] = gd_GoAFK.GetAddress("PlayerGoingAFK"); + if (aGoAFK[2] != Address_Null) + { + aGoAFK[3] = aGoAFK[2]; + + iOffset_GoAFK = gd_GoAFK.GetOffset("GoAFKInput_CompetitiveCondition"); + if (iOffset_GoAFK != -1) + { + int iByte = LoadFromAddress(aGoAFK[2] + view_as
(iOffset_GoAFK), NumberType_Int8); + if (iByte == 0x75 || iByte == 0x74) + { + aGoAFK[2] += view_as
(iOffset_GoAFK); + + for (int i = 0; i < 2; i++) + { + iOriginalBytes_GoAFK[i + 6] = LoadFromAddress(aGoAFK[2] + view_as
(i), NumberType_Int8); + } + + StoreToAddress(aGoAFK[2], (iByte != 0x74) ? 0x90 : 0xEB, NumberType_Int8); + if (iByte != 0x74) + { + StoreToAddress(aGoAFK[2] + view_as
(1), 0x90, NumberType_Int8); + } + + PrintToServer("[GoAFK Unlock] \"go_away_from_keyboard\" Is Now Unrestricted!"); + } + else + { + SetFailState("[GoAFK Unlock] Offset \"GoAFKInput_CompetitiveCondition\" Incorrect!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Offset \"GoAFKInput_CompetitiveCondition\" Missing!"); + } + + iOffset_GoAFK = gd_GoAFK.GetOffset("GoAFKInput_HumanSurvivorsCondition"); + if (iOffset_GoAFK != -1) + { + if (LoadFromAddress(aGoAFK[3] + view_as
(iOffset_GoAFK), NumberType_Int8) == 0x01) + { + aGoAFK[3] += view_as
(iOffset_GoAFK); + + StoreToAddress(aGoAFK[3], 0x00, NumberType_Int8); + + PrintToServer("[GoAFK Unlock] \"go_away_from_keyboard\" Now Works Everytime!"); + } + else + { + SetFailState("[GoAFK Unlock] Offset \"GoAFKInput_HumanSurvivorsCondition\" Incorrect!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Offset \"GoAFKInput_HumanSurvivorsCondition\" Missing!"); + } + } + else + { + SetFailState("[GoAFK Unlock] Address \"PlayerGoingAFK\" Missing!"); + } + } + + delete gd_GoAFK; + + CreateConVar("go_afk_unlock_version", PLUGIN_VERSION, "\"go_away_from_keyboard\" Unlock Version", FCVAR_NOTIFY|FCVAR_DONTRECORD); +} + +public void OnPluginEnd() +{ + int i; + + if (aGoAFK[0] != Address_Null) + { + PrintToServer("[GoAFK Unlock] Bringing Back Restriction Of Idling..."); + + for (i = 0; i < 6; i++) + { + StoreToAddress(aGoAFK[0] + view_as
(i), iOriginalBytes_GoAFK[i], NumberType_Int8); + + iOriginalBytes_GoAFK[i] = -1; + } + } + + if (aGoAFK[1] != Address_Null) + { + PrintToServer("[GoAFK Unlock] Restoring Original Behavior Of Auto Idle..."); + + StoreToAddress(aGoAFK[1], 0x01, NumberType_Int8); + } + + if (bIsL4D) + { + return; + } + + if (aGoAFK[2] != Address_Null) + { + PrintToServer("[GoAFK Unlock] Bringing Back Restriction Of \"go_away_from_keyboard\"..."); + + for (i = 0; i < 2; i++) + { + StoreToAddress(aGoAFK[2] + view_as
(i), iOriginalBytes_GoAFK[i + 6], NumberType_Int8); + + iOriginalBytes_GoAFK[i + 6] = -1; + } + } + + if (aGoAFK[3] != Address_Null) + { + PrintToServer("[GoAFK Unlock] Restoring Original Behavior Of \"go_away_from_keyboard\"..."); + + StoreToAddress(aGoAFK[3], 0x01, NumberType_Int8); + } +} + +GameData FetchGameData(const char[] file) +{ + char sFilePath[128]; + BuildPath(Path_SM, sFilePath, sizeof(sFilePath), "gamedata/%s.txt", file); + if (!FileExists(sFilePath)) + { + File fileTemp = OpenFile(sFilePath, "w"); + if (fileTemp == null) + { + SetFailState("[GoAFK Unlock] Game Data Creation Aborted!"); + } + + fileTemp.WriteLine("\"Games\""); + fileTemp.WriteLine("{"); + fileTemp.WriteLine(" \"#default\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"Addresses\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"PlayerPreThink\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"signature\" \"CTerrorPlayer::PreThink\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" "); + fileTemp.WriteLine(" \"Signatures\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"CTerrorPlayer::PreThink\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"library\" \"server\""); + fileTemp.WriteLine(" \"linux\" \"@_ZN13CTerrorPlayer8PreThinkEv\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"left4dead\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"Offsets\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"PreThink_CompetitiveCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"290\""); + fileTemp.WriteLine(" \"linux\" \"134\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"PreThink_HumanSurvivorsCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"406\""); + fileTemp.WriteLine(" \"linux\" \"1036\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" "); + fileTemp.WriteLine(" \"Signatures\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"CTerrorPlayer::PreThink\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"library\" \"server\""); + fileTemp.WriteLine(" \"windows\" \"\\x83\\x2A\\x2A\\x56\\x57\\x8B\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\x8B\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\x8B\\x2A\\x8B\""); + fileTemp.WriteLine(" /* 83 ? ? 56 57 8B ? E8 ? ? ? ? 8B ? E8 ? ? ? ? 8B ? 8B */"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"left4dead2\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"Addresses\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"PlayerGoingAFK\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"signature\" \"CTerrorPlayer::Input_GoAwayFromKeyboard\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" "); + fileTemp.WriteLine(" \"Offsets\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"PreThink_CompetitiveCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"309\""); + fileTemp.WriteLine(" \"linux\" \"295\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"PreThink_HumanSurvivorsCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"428\""); + fileTemp.WriteLine(" \"linux\" \"450\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"GoAFKInput_CompetitiveCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"10\""); + fileTemp.WriteLine(" \"linux\" \"14\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"GoAFKInput_HumanSurvivorsCondition\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"windows\" \"38\""); + fileTemp.WriteLine(" \"linux\" \"130\""); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" "); + fileTemp.WriteLine(" \"Signatures\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"CTerrorPlayer::PreThink\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"library\" \"server\""); + fileTemp.WriteLine(" \"windows\" \"\\x55\\x8B\\x2A\\x83\\x2A\\x2A\\xA1\\x2A\\x2A\\x2A\\x2A\\x33\\x2A\\x89\\x2A\\x2A\\x56\\x57\\x8B\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\x8B\\x2A\\xE8\""); + fileTemp.WriteLine(" /* 55 8B ? 83 ? ? A1 ? ? ? ? 33 ? 89 ? ? 56 57 8B ? E8 ? ? ? ? 8B ? E8 */"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" \"CTerrorPlayer::Input_GoAwayFromKeyboard\""); + fileTemp.WriteLine(" {"); + fileTemp.WriteLine(" \"library\" \"server\""); + fileTemp.WriteLine(" \"linux\" \"@_ZN13CTerrorPlayer24Input_GoAwayFromKeyboardEv\""); + fileTemp.WriteLine(" \"windows\" \"\\x57\\x8B\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\x84\\x2A\\x75\\x2A\\x56\\x6A\""); + fileTemp.WriteLine(" /* 57 8B ? E8 ? ? ? ? 84 ? 75 ? 56 6A */"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine(" }"); + fileTemp.WriteLine("}"); + + fileTemp.Close(); + } + + return new GameData(file); +} + diff --git a/addons/sourcemod/scripting/jockey_ride_stuck_fix.sp b/addons/sourcemod/scripting/jockey_ride_stuck_fix.sp new file mode 100644 index 00000000..9e1874be --- /dev/null +++ b/addons/sourcemod/scripting/jockey_ride_stuck_fix.sp @@ -0,0 +1,36 @@ +#pragma semicolon 1 +#pragma newdecls required +#include + +#define PLUGIN_NAME "Jockey Ride Stuck Fix" +#define PLUGIN_AUTHOR "sorallll" +#define PLUGIN_DESCRIPTION "When the survivor bot controlled by jockey is kicked out of the game, jockey will get stuck in the air, this plugin fixes it" +#define PLUGIN_VERSION "1.0.1" +#define PLUGIN_URL "https://forums.alliedmods.net/showthread.php?p=2756577" + +public Plugin myinfo = { + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESCRIPTION, + version = PLUGIN_VERSION, + url = PLUGIN_URL +}; + +public void OnPluginStart() { + CreateConVar("jockey ride stuck fix_version", PLUGIN_VERSION, "Jockey Ride Stuck Fix plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + HookEvent("player_disconnect", Event_PlayerDisconnect, EventHookMode_Pre); +} + +void Event_PlayerDisconnect(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + if (!client || !IsClientInGame(client) || !IsFakeClient(client) || GetClientTeam(client) != 2) + return; + + int jockey = GetEntPropEnt(client, Prop_Send, "m_jockeyAttacker"); + if (jockey != -1) { + int flags = GetCommandFlags("dismount"); + SetCommandFlags("dismount", flags & ~FCVAR_CHEAT); + FakeClientCommand(jockey, "dismount"); + SetCommandFlags("dismount", flags); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/join_clear_menu.sp b/addons/sourcemod/scripting/join_clear_menu.sp new file mode 100644 index 00000000..2dc65e08 --- /dev/null +++ b/addons/sourcemod/scripting/join_clear_menu.sp @@ -0,0 +1,38 @@ +#define PLUGIN_VERSION "1.0" + +#pragma semicolon 1 +#pragma newdecls required +#include + +public Plugin myinfo = +{ + name = "Join Clear Menu", + author = "little_froy", + description = "game play", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=351419" +}; + +public void OnClientPutInServer(int client) +{ + if(IsFakeClient(client)) + { + return; + } + ClientCommand(client, "slot10"); +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + if(GetEngineVersion() != Engine_Left4Dead2) + { + strcopy(error, err_max, "this plugin only runs in \"Left 4 Dead 2\""); + return APLRes_SilentFailure; + } + return APLRes_Success; +} + +public void OnPluginStart() +{ + CreateConVar("join_clear_menu_version", PLUGIN_VERSION, "version of Join Clear Menu", FCVAR_NOTIFY | FCVAR_DONTRECORD); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_additional_deathmsg.ru.sp b/addons/sourcemod/scripting/l4d2_additional_deathmsg.ru.sp new file mode 100644 index 00000000..19854ed1 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_additional_deathmsg.ru.sp @@ -0,0 +1,288 @@ +#define HUD_WIDTH 0.3 +#define HUD_SLOT 4 + +/** + * [Changes] + * v0.1 (December-19-2023) + * - internal release + * v0.1.1 (December-21-2023) + * - hide SI suicide messages + * v1.0 (December-24-2023) + * - just released + * + * [Intro] + * - show extra death messages those not included by game + * - since hud shared by all players, these only be static language, if translation needed just modify yourself and compiles. + * - plugin required L4DD, and default used HUD element 4, would not compatible with those 'used hud element 4 plugin' or 'used all hud resource like "[L4D2] Scripted HUD"' + * + * [Special Thanks] + * - Nyamorizilla: helps me debug and test even i doesnt have any tool, the screenshot also provide by he. + * - a guy i dont known how call he, this dude found this file and sent it to me after i lost data on my computer, otherwise the plugin would have been lost! + * + * [Note] + * - Since HUD resources are shared by all players, there is no translation feature (unless the translation target is dynamically selected) so there is no support for translation or time to support it + * - Since my computer's L4D2 folder was reset to Vanilla status for an unknown reason, my mods and plugins were deleted to the bone, and this should be my last plugin + * - Please modify the key-value pairs(ENTITY_KEYs and ENTITY_VALUEs) in the source code if you need the translation to show the new entity name. + */ + +#define PLUGIN_VERSION "1.0" +#define PLUGIN_PREFIX "l4d2_" +#define PLUGIN_NAME "additional_deathmsg" +#define PLUGIN_NAME_FULL "[L4D2] Additional Death Messages on HUD" +#define PLUGIN_DESCRIPTION "show extra death messages those not included by game" +#define PLUGIN_AUTHOR "NoroHime" +#define PLUGIN_LINK "https://forums.alliedmods.net/showthread.php?t=344957" + +#pragma newdecls required +#pragma semicolon 1 + +#include +#include +// #include +// #include + +native bool L4D2_ExecVScriptCode(char[] code); +#define IsClient(%1) ((1 <= %1 <= MaxClients) && IsClientInGame(%1)) + +#define L4D2_ZOMBIECLASS_TANK 8 + +public Plugin myinfo = { + name = PLUGIN_NAME_FULL, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESCRIPTION, + version = PLUGIN_VERSION, + url = PLUGIN_LINK +}; + +static const char ENTITY_KEYs[][] = { + "Infected", + "Witch", + "CInferno", + "CPipeBombProjectile", + "CWorld", + "CEntityFlame", + "CInsectSwarm", + "CBaseTrigger", +}; + +static const char ENTITY_VALUEs[][] = { + "Обычный Зомби", + "Ведьма", + "Пламя", + "Взрыв", + "Мир", + "Огонь", + "Плевальщица", + "Карта", +}; + +// noro.inc start +#define HUD_FLAG_NONE 0 // no flag +#define HUD_FLAG_PRESTR 1 // do you want a string/value pair to start(pre) with the string (default is PRE) +#define HUD_FLAG_POSTSTR 2 // do you want a string/value pair to end(post) with the string +#define HUD_FLAG_BEEP 4 // Makes a countdown timer blink +#define HUD_FLAG_BLINK 8 // do you want this field to be blinking +#define HUD_FLAG_AS_TIME 16 // ? +#define HUD_FLAG_COUNTDOWN_WARN 32 // auto blink when the timer gets under 10 seconds +#define HUD_FLAG_NOBG 64 // dont draw the background box for this UI element +#define HUD_FLAG_ALLOWNEGTIMER 128 // by default Timers stop on 0:00 to avoid briefly going negative over network, this keeps that from happening +#define HUD_FLAG_ALIGN_LEFT 256 // Left justify this text +#define HUD_FLAG_ALIGN_CENTER 512 // Center justify this text +#define HUD_FLAG_ALIGN_RIGHT 768 // Right justify this text +#define HUD_FLAG_TEAM_SURVIVORS 1024 // only show to the survivor team +#define HUD_FLAG_TEAM_INFECTED 2048 // only show to the special infected team +#define HUD_FLAG_TEAM_MASK 3072 // ? +#define HUD_FLAG_UNKNOWN1 4096 // ? +#define HUD_FLAG_TEXT 8192 // ? +#define HUD_FLAG_NOTVISIBLE 16384 // if you want to keep the slot data but keep it from displaying + + +stock void ScriptedHUDSetParams(int element = 0, const char[] text = "", int flags = 0, float posX = 0.0, float posY = 0.0, float width = 1.0, float height = 0.026) { + ScriptedHUDSetPosition(posX, posY, element); + ScriptedHUDSetSize(width, height, element); + ScriptedHUDSetText(text, element); + ScriptedHUDSetFlags(flags, element); +} + +stock void ScriptedHUDSetPosition(float posX, float posY, int element) { + GameRules_SetPropFloat("m_fScriptedHUDPosX", posX, element); + GameRules_SetPropFloat("m_fScriptedHUDPosY", posY, element); +} + +stock void ScriptedHUDSetSize(float width, float height, int element) { + GameRules_SetPropFloat("m_fScriptedHUDWidth", width, element); + GameRules_SetPropFloat("m_fScriptedHUDHeight", height, element); +} + +stock void ScriptedHUDSetText(const char[] text, int element) { + GameRules_SetPropString("m_szScriptedHUDStringSet", text, _, element); +} + +stock void ScriptedHUDSetFlags(int flags, int element) { + GameRules_SetProp("m_iScriptedHUDFlags", flags, _, element); +} + +stock int ScriptedHUDGetFlags(int element) { + return GameRules_GetProp("m_iScriptedHUDFlags", _, element); +} + +stock void ScriptedHUDAddFlags(int flags, int element) { + ScriptedHUDSetFlags(ScriptedHUDGetFlags(element) | flags, element); +} + +stock void ScriptedHUDRemoveFlags(int flags, int element) { + ScriptedHUDSetFlags(ScriptedHUDGetFlags(element) & ~flags, element); +} + +stock void ScriptedHUDSetTimerBase(float time, int element) { + GameRules_SetPropFloat("m_fScriptedHUDTimerBase", time, element); +} + +stock float ScriptedHUDGetTimerBase(float time, int element) { + return GameRules_GetPropFloat("m_fScriptedHUDTimerBase", element); +} + +stock void ScriptedHUDSetTimerAdd(float time, int element) { + GameRules_SetPropFloat("m_fScriptedHUDTimerAdd", time, element); +} + +stock float ScriptedHUDGetTimerAdd(float time, int element) { + return GameRules_GetPropFloat("m_fScriptedHUDTimerAdd", element); +} + +stock void ScriptedHUDSetTimerMode(float time, int element) { + GameRules_SetPropFloat("m_fScriptedHUDTimerMode", time, element); +} + +stock float ScriptedHUDGetTimerMode(float time, int element) { + return GameRules_GetPropFloat("m_fScriptedHUDTimerMode", element); +} + +stock void ScriptedHUDSetEnabled(bool enable) { + GameRules_SetProp("m_bChallengeModeActive", view_as(enable)); +} + +// noro.inc end + + +StringMap mapNetClassToName; +public void OnPluginStart() { + + CreateConVar(PLUGIN_NAME ... "_version", PLUGIN_VERSION, "Plugin Version of " ... PLUGIN_NAME_FULL, FCVAR_SPONLY|FCVAR_DONTRECORD|FCVAR_REPLICATED|FCVAR_NOTIFY); + + mapNetClassToName = new StringMap(); + + for (int i = 0; i < sizeof(ENTITY_KEYs); i++) + mapNetClassToName.SetString(ENTITY_KEYs[i], ENTITY_VALUEs[i]); + + HookEvent("player_incapacitated", OnPlayerIncapacitated); + HookEvent("player_death", OnPlayerDeath); + HookEvent("witch_killed", OnWitchKilled); + +} + +char[] GetEntityTranslatedName(int entity) { + + static char result[32]; + + if (IsClient(entity)) { + + if (GetEntProp(entity, Prop_Send, "m_zombieClass") == L4D2_ZOMBIECLASS_TANK && IsFakeClient(entity)) + result = "Tank"; + else + FormatEx(result, sizeof(result), "%N", entity); + + } else { + + GetEntityNetClass(entity, result, sizeof(result)); + mapNetClassToName.GetString(result, result, sizeof(result)); + } + + return result; +} + +public void OnMapStart() { + L4D2_ExecVScriptCode("g_ModeScript"); + ScriptedHUDSetEnabled(true); + CreateTimer(1.0, MapGlobalTimer, _, TIMER_FLAG_NO_MAPCHANGE|TIMER_REPEAT); +} + +float timeDeathMessageLastDisplayed; + +char output[128]; + +void OnWitchKilled(Event event, const char[] name, bool dontBroadcast) { + + int attacker = GetClientOfUserId(event.GetInt("userid")); + + if (IsClient(attacker)) { + + FormatEx(output, sizeof(output), " %s Killed Witch", GetEntityTranslatedName(attacker)); + ScriptedHUDSetParams(4, output, HUD_FLAG_TEXT|HUD_FLAG_BLINK|HUD_FLAG_ALIGN_LEFT, 0.01, 0.07, HUD_SLOT); + timeDeathMessageLastDisplayed = GetEngineTime(); + } +} + + +void OnPlayerDeath(Event event, const char[] name, bool dontBroadcast) { + + int victim = GetClientOfUserId(event.GetInt("userid")), + attacker = GetClientOfUserId(event.GetInt("attacker")); + + if (attacker == 0) + attacker = event.GetInt("attackerentid"); + + if (IsClient(victim)) { + + if (!IsClient(attacker)) + FormatEx(output, sizeof(output), " %s Killed %s", GetEntityTranslatedName(attacker), GetEntityTranslatedName(victim)); + else if (attacker == victim && GetClientTeam(victim) == 2) + FormatEx(output, sizeof(output), " %s Died by Bleeding", GetEntityTranslatedName(victim)); + else + return; + + ScriptedHUDSetParams(4, output, HUD_FLAG_TEXT|HUD_FLAG_BLINK|HUD_FLAG_ALIGN_LEFT, 0.01, 0.07, HUD_SLOT); + timeDeathMessageLastDisplayed = GetEngineTime(); + + } else + return; +} + +void OnPlayerIncapacitated(Event event, const char[] name, bool dontBroadcast) { + + int victim = GetClientOfUserId(event.GetInt("userid")); + + if (IsClient(victim)) { + + int attacker = GetClientOfUserId(event.GetInt("attacker")); + + if (attacker == 0) + attacker = event.GetInt("attackerentid"); + + if (attacker == victim && GetClientTeam(attacker) == 2) { + + FormatEx(output, sizeof(output), " %s Incapped Self", GetEntityTranslatedName(victim)); + + // player => tank + } else if (GetEntProp(victim, Prop_Send, "m_zombieClass") == L4D2_ZOMBIECLASS_TANK) { + + FormatEx(output, sizeof(output), " %s Killed %s", GetEntityTranslatedName(attacker), GetEntityTranslatedName(victim)); + + // entity => player + } else if (!IsClient(attacker)) + FormatEx(output, sizeof(output), " %s Incapped %s", GetEntityTranslatedName(attacker), GetEntityTranslatedName(victim)); + else + return; + + ScriptedHUDSetParams(HUD_SLOT, output, HUD_FLAG_TEXT|HUD_FLAG_BLINK|HUD_FLAG_ALIGN_LEFT, 0.01, 0.07, HUD_WIDTH); + timeDeathMessageLastDisplayed = GetEngineTime(); + } +} + +Action MapGlobalTimer(Handle timer) { + + if (GetEngineTime() - timeDeathMessageLastDisplayed > 5) + ScriptedHUDSetFlags(HUD_FLAG_NOTVISIBLE, HUD_SLOT); + + return Plugin_Continue; +} diff --git a/addons/sourcemod/scripting/l4d2_antimelee.sp b/addons/sourcemod/scripting/l4d2_antimelee.sp deleted file mode 100644 index e33f057b..00000000 --- a/addons/sourcemod/scripting/l4d2_antimelee.sp +++ /dev/null @@ -1,80 +0,0 @@ -#pragma semicolon 1 - -#include -#include -#include - -new Handle:hCvarMeleeNerfPercentage; -new bool:lateLoad; - -public Plugin:myinfo = -{ - name = "L4D2 AntiMelee", - description = "Nerfes melee damage against tanks by a set amount of %", - author = "Visor", - version = "1.0", - url = "https://github.com/Attano/L4D2-Competitive-Framework" -}; - -public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax) -{ - lateLoad = late; - return APLRes_Success; -} - -public OnPluginStart() -{ - hCvarMeleeNerfPercentage = CreateConVar("l4d2_melee_tank_nerf", "0", "Percentage of melee damage nerf against tank", FCVAR_CHEAT|FCVAR_NOTIFY, true, 0.0, true, 100.0); - if (lateLoad) - { - for (new i = 1; i <= MaxClients; i++) - { - if (IsClientInGame(i)) - { - OnClientPutInServer(i); - } - } - } -} - -public OnClientPutInServer(client) -{ - SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage); -} - -public OnClientDisconnect(client) -{ - SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage); -} - -public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damageType, &weapon, Float:damageForce[3], Float:damagePosition[3]) -{ - if (!IsSurvivor(attacker) || !IsTank(victim) || !IsMelee(weapon)) - { - return Plugin_Continue; - } - damage = damage / 100.0 * (100.0 - GetConVarFloat(hCvarMeleeNerfPercentage)); - return Plugin_Changed; -} - -bool:IsMelee(entity) -{ - if (entity > 0 && IsValidEntity(entity) && IsValidEdict(entity)) - { - decl String:strClassName[64]; - GetEdictClassname(entity, strClassName, 64); - return StrContains(strClassName, "melee", false) != -1; - } - return false; -} - -bool:IsSurvivor(client) -{ - return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2; -} - -bool:IsTank(client) -{ - return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 3 && GetEntProp(client, Prop_Send, "m_zombieClass", 4, 0) == 8; -} - diff --git a/addons/sourcemod/scripting/l4d2_boomer_ladder_fix.sp b/addons/sourcemod/scripting/l4d2_boomer_ladder_fix.sp new file mode 100644 index 00000000..485f10d5 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_boomer_ladder_fix.sp @@ -0,0 +1,55 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#include + +public Plugin myinfo = +{ + name = "[L4D2] Boomer Ladder Fix", + author = "BHaType" +}; + +MemoryPatch gLadderPatch; + +public void OnPluginStart() +{ + GameData data = new GameData("l4d2_boomer_ladder_fix"); + + gLadderPatch = MemoryPatch.CreateFromConf(data, "CTerrorGameMovement::CheckForLadders"); + + delete data; + + Patch(true); + + RegAdminCmd("sm_boomer_ladder_fix_toggle", sm_boomer_ladder_fix_toggle, ADMFLAG_ROOT); +} + +public Action sm_boomer_ladder_fix_toggle( int client, int args ) +{ + Patch(3); + return Plugin_Handled; +} + +void Patch( int state ) +{ + static bool set; + + if ( state == 3 ) + { + state = !set; + } + + if ( set && !state ) + { + gLadderPatch.Disable(); + set = false; + } + else if ( !set && state ) + { + gLadderPatch.Enable(); + set = true; + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_boomerbitchslap.sp b/addons/sourcemod/scripting/l4d2_boomerbitchslap.sp index b3b14519..e768f3d8 100644 --- a/addons/sourcemod/scripting/l4d2_boomerbitchslap.sp +++ b/addons/sourcemod/scripting/l4d2_boomerbitchslap.sp @@ -51,10 +51,10 @@ public OnPluginStart() CreateConVar("l4d2_boomerbitchslap_version", PLUGIN_VERSION, " L4D2 Boomer Bitch Slap Plugin Version ", CVAR_FLAGS|FCVAR_DONTRECORD); - cvar_enabled = CreateConVar("l4d2_boomerbitchslap_enabled", "1", " Enable/Disable the Boomer Bitch Slap Plugin ", CVAR_FLAGS); - cvar_slapPower = CreateConVar("l4d2_boomerbitchslap_power", "150.0", " How much Force is applied to the victim ", CVAR_FLAGS); - cvar_slapCooldownTime = CreateConVar("l4d2_boomerbitchslap_cooldown", "15.0", " How many seconds before Boomer can Slap again ", CVAR_FLAGS); - cvar_slapAnnounceMode = CreateConVar("l4d2_boomerbitchslap_announce", "1", " Do Slaps get announced in the Chat Area ", CVAR_FLAGS); + cvar_enabled = CreateConVar("l4d2_boomerbitchslap_enabled", "0", " Enable/Disable the Boomer Bitch Slap Plugin ", CVAR_FLAGS); + cvar_slapPower = CreateConVar("l4d2_boomerbitchslap_power", "100.0", " How much Force is applied to the victim ", CVAR_FLAGS); + cvar_slapCooldownTime = CreateConVar("l4d2_boomerbitchslap_cooldown", "10.0", " How many seconds before Boomer can Slap again ", CVAR_FLAGS); + cvar_slapAnnounceMode = CreateConVar("l4d2_boomerbitchslap_announce", "0", " Do Slaps get announced in the Chat Area ", CVAR_FLAGS); cvar_slapOffLedges = CreateConVar("l4d2_boomerbitchslap_ledgeslap", "0", " Enable/Disable Slapping hanging people off ledges ", CVAR_FLAGS); AutoExecConfig(true, "l4d2_boomerbitchslap"); @@ -240,4 +240,4 @@ static GetSurvivorPainSound(target, String:painSound[STRING_LENGHT-1]) } } } -*/ \ No newline at end of file +*/ diff --git a/addons/sourcemod/scripting/l4d2_boss_spawn.sp b/addons/sourcemod/scripting/l4d2_boss_spawn.sp index c9e4aa09..9775369f 100644 --- a/addons/sourcemod/scripting/l4d2_boss_spawn.sp +++ b/addons/sourcemod/scripting/l4d2_boss_spawn.sp @@ -49,7 +49,7 @@ public Plugin myinfo = public void OnPluginStart() { - cvarPluginEnable = CreateConVar("boss_spawn", "1", "0:Disable, 1:Enable Plugin", FCVAR_NONE, true, 0.0, true, 1.0 ); + cvarPluginEnable = CreateConVar("boss_spawn", "0", "0:Disable, 1:Enable Plugin", FCVAR_NONE, true, 0.0, true, 1.0 ); cvarInterval = CreateConVar("boss_spawn_interval", "0.5", "Set interval time check to spawn", FCVAR_NONE, true, 0.1); cvarTanks = CreateConVar("boss_spawn_tanks", "1", "Set Tanks to spawn simultaneously"); cvarTanksRandom = CreateConVar("boss_spawn_tanks_rng", "0", "Set max random Tanks to spawn simultaneously, 0:Disable Random value"); @@ -435,4 +435,4 @@ stock bool IsValidClient(int client){ stock bool IsValidEnt(int entity){ return (entity > MaxClients && IsValidEntity(entity) && entity != INVALID_ENT_REFERENCE); -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_bugfix_deathspit.sp b/addons/sourcemod/scripting/l4d2_bugfix_deathspit.sp new file mode 100644 index 00000000..826d6868 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_bugfix_deathspit.sp @@ -0,0 +1,123 @@ +/* +Bug Fix - Death Spit +Copyright (C) 2014 Buster "Mr. Zero" Nielsen + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma semicolon 1 +#pragma newdecls required +/* Includes */ +#include +#include +#include + +/* Globals */ +#define PLUGIN_VERSION "1.0" +#define CVAR_FLAGS FCVAR_NOTIFY +#define DEBUG 0 +#define DEBUG_TAG "BugFix_DeathSpit" +#define MAXENTITIES 2048 +#define MAXEDICTS 4096 + +/* Plugin Information */ +public Plugin myinfo = +{ + name = "Bug Fix - Death Spit", + author = "Buster \"Mr. Zero\" Nielsen", + description = "Fixes the invisible spit area from killing a Spitter", + version = PLUGIN_VERSION, + url = "mrzerodk@gmail.com" +} + +ConVar hPluginOn; +bool bHooked = false; + +/* Plugin Functions */ +public void OnPluginStart() +{ + CreateConVar("l4d2_bug_fix_death_spit_version", PLUGIN_VERSION, "Version of the Bug Fix - Death Spit plugin.", CVAR_FLAGS|FCVAR_SPONLY|FCVAR_DONTRECORD); + hPluginOn = CreateConVar("l4d2_bug_fix_death_spit_plugin_on", "1", "Plugin On/Off.", CVAR_FLAGS); + hPluginOn.AddChangeHook(OnConVarChanged_Allow); + AutoExecConfig(true, "l4d2_bug_fix_death_spit"); +} + +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +void OnConVarChanged_Allow(ConVar cvar, const char[] sOldValue, const char[] sNewValue) +{ + IsAllowed(); +} + +void IsAllowed() +{ + bool bPluginOn = hPluginOn.BoolValue; + if(bPluginOn && !bHooked) + { + HookEvent("spitter_killed", SpitterKilled_Event, EventHookMode_PostNoCopy); + } + else if(!bPluginOn && bHooked) + { + UnhookEvent("spitter_killed", SpitterKilled_Event, EventHookMode_PostNoCopy); + } +} + +void SpitterKilled_Event(Event event, const char[] name, bool dontBroadcast) +{ +#if DEBUG + Debug_PrintText("Spitter Killed"); +#endif + CreateTimer(1.0, FindDeathSpit_Timer); +} + +Action FindDeathSpit_Timer(Handle timer) +{ + int entity = -1; + while ((entity = FindEntityByClassname(entity, "insect_swarm")) != -1) + { + int maxFlames = L4D2Direct_GetInfernoMaxFlames(entity); + int currentFlames = GetEntProp(entity, Prop_Send, "m_fireCount"); + if (maxFlames == 2 && currentFlames == 2) + { + SetEntProp(entity, Prop_Send, "m_fireCount", 1); + L4D2Direct_SetInfernoMaxFlames(entity, 1); + } + } + return Plugin_Stop; +} + +#if DEBUG +stock void Debug_PrintText(const char[] format, any ...) +{ + char buffer[256]; + VFormat(buffer, sizeof(buffer), format, 2); + + LogMessage(buffer); + + AdminId adminId + for (int client = 1; client <= MaxClients; client++) + { + if (IsClientInGame(client) && IsFakeClient(client)) + { + adminId = GetUserAdmin(client) + if (adminId != INVALID_ADMIN_ID && GetAdminFlag(adminId, Admin_Root)) + { + PrintToChat(client, "[%s] %s", DEBUG_TAG, buffer); + } + } + } +} +#endif diff --git a/addons/sourcemod/scripting/l4d2_charger_getup_fix.sp b/addons/sourcemod/scripting/l4d2_charger_getup_fix.sp index 284dc111..3f7e573f 100644 --- a/addons/sourcemod/scripting/l4d2_charger_getup_fix.sp +++ b/addons/sourcemod/scripting/l4d2_charger_getup_fix.sp @@ -79,7 +79,7 @@ public void OnPluginStart() HookEvent("bot_player_replace", Event_BotPlayerReplace, EventHookMode_Post); g_hChargeDuration = FindConVar("gfc_charger_duration"); - g_hLongChargeDuration = CreateConVar("gfc_long_charger_duration", "2.2", "God frame duration for long charger getup animations"); + g_hLongChargeDuration = CreateConVar("gfc_long_charger_duration", "2.0", "God frame duration for long charger getup animations"); // Cvars @@ -626,4 +626,4 @@ stock bool IsSurvivor(int client) stock bool IsInfected(int client) { return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 3; -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_deleteweapon.sp b/addons/sourcemod/scripting/l4d2_deleteweapon.sp deleted file mode 100644 index c5024b6f..00000000 --- a/addons/sourcemod/scripting/l4d2_deleteweapon.sp +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include - -public Plugin:myinfo = -{ - name = "[L4D2] Weapon Remove", - author = "Rain_orel", - description = "Removes weapon spawn", - version = "1.0", - url = "http://www.sourcemod.net/" -}; - -new ent_table[64][2]; -new new_ent_counter = 0; -new Handle:hCount; - -public OnPluginStart() -{ - HookEvent("spawner_give_item", Event_SpawnerGiveItem); - hCount = CreateConVar("l4d2_usecount", "1", "How many times a weapon spawn can be used before it will be removed.") -} - -public OnMapStart() -{ - for(new i=0;i<63;i++) - { - ent_table[i][0]=-1; - ent_table[i][1]=-1; - } - new_ent_counter = 0 -} - -public OnMapEnd(){} - -public Event_SpawnerGiveItem(Handle:event, const String:name[], bool:dontBroadcast) -{ - //decl String:item_name[32] - //GetEventString(event, "item", item_name, 32); No need yet - new entity_id = GetEventInt(event, "spawner") - - - if(GetUseCount(entity_id)==-1) - { - ent_table[new_ent_counter][0]=entity_id; - ent_table[new_ent_counter][1]=0; - new_ent_counter++; - } - - SetUseCount(entity_id); - - if(GetUseCount(entity_id)==GetConVarInt(hCount))RemoveEdict(entity_id); -} - -GetUseCount(entid) -{ - for(new i=0;i<63;i++) - { - if(ent_table[i][0]==entid)return ent_table[i][1] - } - return -1 -} - -SetUseCount(entid) -{ - for(new j=0;j<63;j++) - { - if(ent_table[j][0]==entid)ent_table[j][1]++; - } -} - - \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_drop.sp b/addons/sourcemod/scripting/l4d2_drop.sp new file mode 100644 index 00000000..4cc05055 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_drop.sp @@ -0,0 +1,191 @@ +#define PLUGIN_VERSION "1.5.0" + +#include +#include +#include + +new MODEL_DEFIB; +new const String:WeaponNames[][] = +{ + "weapon_pumpshotgun", + "weapon_autoshotgun", + "weapon_rifle", + "weapon_smg", + "weapon_hunting_rifle", + "weapon_sniper_scout", + "weapon_sniper_military", + "weapon_sniper_awp", + "weapon_smg_silenced", + "weapon_smg_mp5", + "weapon_shotgun_spas", + "weapon_shotgun_chrome", + "weapon_rifle_sg552", + "weapon_rifle_desert", + "weapon_rifle_ak47", + "weapon_grenade_launcher", + "weapon_rifle_m60", //0-16 + "weapon_pistol", + "weapon_pistol_magnum", + "weapon_chainsaw", + "weapon_melee", //17-20 + "weapon_pipe_bomb", + "weapon_molotov", + "weapon_vomitjar", //21-23 + "weapon_first_aid_kit", + "weapon_defibrillator", + "weapon_upgradepack_explosive", + "weapon_upgradepack_incendiary", //24-27 + "weapon_pain_pills", + "weapon_adrenaline", //28-29 + "weapon_gascan", + "weapon_propanetank", + "weapon_oxygentank", + "weapon_gnome", + "weapon_cola_bottles", + "weapon_fireworkcrate" //30-35 +} + +public Plugin:myinfo = +{ + name = "[L4D2] Weapon Drop", + author = "Machine, dcx2, Electr000999", + description = "Allows players to drop the weapon they are holding", + version = PLUGIN_VERSION, + url = "www.AlliedMods.net" +}; + +public OnPluginStart() +{ + RegConsoleCmd("sm_drop", Command_Drop); + CreateConVar("sm_drop_version", PLUGIN_VERSION, "[L4D2] Weapon Drop Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); + + LoadTranslations("common.phrases"); +} +public OnMapStart() +{ + MODEL_DEFIB = PrecacheModel("models/w_models/weapons/w_eq_defibrillator.mdl", true); +} +public Action:Command_Drop(client, args) +{ + if (args == 1 || args > 2) + { + if (GetAdminFlag(GetUserAdmin(client), Admin_Root)) + ReplyToCommand(client, "[SM] Usage: sm_drop <#userid|name> "); + } + else if (args < 1) + { + new slot; + decl String:weapon[32]; + GetClientWeapon(client, weapon, sizeof(weapon)); + for (new count=0; count<=35; count++) + { + switch(count) + { + case 17: slot = 1; + case 21: slot = 2; + case 24: slot = 3; + case 28: slot = 4; + case 30: slot = 5; + } + if (StrEqual(weapon, WeaponNames[count])) + { + DropSlot(client, slot); + } + } + } + else if (args == 2) + { + if (GetAdminFlag(GetUserAdmin(client), Admin_Root)) + { + new String:target[MAX_TARGET_LENGTH], String:arg[8]; + GetCmdArg(1, target, sizeof(target)); + GetCmdArg(2, arg, sizeof(arg)); + new slot = StringToInt(arg); + + new targetid = StringToInt(target); + if (targetid > 0 && IsClientInGame(targetid)) + { + DropSlot(targetid, slot); + return Plugin_Handled; + } + + decl String:target_name[MAX_TARGET_LENGTH]; + decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml; + + if ((target_count = ProcessTargetString( + target, + client, + target_list, + MAXPLAYERS, + 0, + target_name, + sizeof(target_name), + tn_is_ml)) <= 0) + { + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + for (new i=0; i 0 && IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2) + { + if (GetPlayerWeaponSlot(client, slot) > 0) + { + new weapon = GetPlayerWeaponSlot(client, slot); + SDKCallWeaponDrop(client, weapon); + } + } +} + +stock SDKCallWeaponDrop(client, weapon) +{ + decl String:classname[32], Float:vecAngles[3], Float:vecTarget[3], Float:vecVelocity[3]; + if (GetPlayerEye(client, vecTarget)) + { + GetClientEyeAngles(client, vecAngles); + GetAngleVectors(vecAngles, vecVelocity, NULL_VECTOR, NULL_VECTOR) + vecVelocity[0] *= 300.0; + vecVelocity[1] *= 300.0; + vecVelocity[2] *= 300.0; + + SDKHooks_DropWeapon(client, weapon, NULL_VECTOR, NULL_VECTOR); + + TeleportEntity(weapon, NULL_VECTOR, NULL_VECTOR, vecVelocity) + GetEdictClassname(weapon, classname, sizeof(classname)); + if (StrEqual(classname,"weapon_defibrillator")) + { + SetEntProp(weapon, Prop_Send, "m_iWorldModelIndex", MODEL_DEFIB); + } + } +} +stock bool:GetPlayerEye(client, Float:vecTarget[3]) +{ + decl Float:Origin[3], Float:Angles[3]; + GetClientEyePosition(client, Origin); + GetClientEyeAngles(client, Angles); + + new Handle:trace = TR_TraceRayFilterEx(Origin, Angles, MASK_SHOT, RayType_Infinite, TraceEntityFilterPlayer); + if (TR_DidHit(trace)) + { + TR_GetEndPosition(vecTarget, trace); + CloseHandle(trace); + return true; + } + CloseHandle(trace); + return false; +} + +public bool:TraceEntityFilterPlayer(entity, contentsMask) +{ + return entity > GetMaxClients() || !entity; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_fall_scream_fix.sp b/addons/sourcemod/scripting/l4d2_fall_scream_fix.sp new file mode 100644 index 00000000..d920fdea --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_fall_scream_fix.sp @@ -0,0 +1,129 @@ +#include +#include +#include +#define MAX_ENTITIES 4096 + +new bool:NotGround[MAXPLAYERS + 1] = false; + +ConVar EllisAdditionalScream; + +#define PLUGIN_NAME "[L4D2] Fall Scream Fix" +#define PLUGIN_AUTHOR "Edison1318" +#define PLUGIN_DESC "Restore Zoey, Louis and Francis survivors scream fix while falling." +#define PLUGIN_VERSION "1.0.0" +#define PLUGIN_URL "" + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + if(GetEngineVersion() == Engine_Left4Dead2) + { + return APLRes_Success; + } + strcopy(error, err_max, "Plugin only supports Left 4 Dead 2."); + return APLRes_SilentFailure; +} + +public Plugin myinfo = +{ + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESC, + version = PLUGIN_VERSION, + url = PLUGIN_URL +} + +public OnPluginStart() +{ + EllisAdditionalScream = CreateConVar("l4d2_ellis_extra_scream", "1" , "Enables Ellis extra scream while falling", _, true, 0.0, true, 1.0); + + AddNormalSoundHook(SoundHook); + AutoExecConfig(true, "l4d2_fall_scream_fix"); +} + +public OnMapStart() +{ + PrefetchSound("player/survivor/voice/mechanic/ledgehangfall02.wav"); + PrecacheSound("player/survivor/voice/mechanic/ledgehangfall02.wav", true); +} + +public Action:SoundHook(clients[64], &numClients, String:sound[PLATFORM_MAX_PATH], &entity, &channel, &Float:volume, &level, &pitch, &flags) +{ + if (entity <= 0 || entity > MAX_ENTITIES) + { + return Plugin_Continue; + } + + if (EllisAdditionalScream.IntValue) + { + if (entity > 0 && entity <= MaxClients && StrContains(sound, "mechanic/fall0", false) > -1) + { + if (NotGround[entity]) + { + new chance = GetRandomInt(1, 5); + if (chance == 5) + { + Format(sound, sizeof(sound), "player/survivor/voice/mechanic/ledgehangfall02.wav"); + } + return Plugin_Changed; + } + } + } + else if (entity > 0 && entity <= MaxClients && StrContains(sound, "teengirl/fall04", false) > -1) + { + if (NotGround[entity]) + { + new random = GetRandomInt(0, 2); + switch(random) + { + case 0:Format(sound, sizeof(sound), "player/survivor/voice/teengirl/fall01.wav"); + case 1:Format(sound, sizeof(sound), "player/survivor/voice/teengirl/fall02.wav"); + case 2:Format(sound, sizeof(sound), "player/survivor/voice/teengirl/fall03.wav"); + } + return Plugin_Changed; + } + } + else if (entity > 0 && entity <= MaxClients && StrContains(sound, "manager/fall04", false) > -1) + { + if (NotGround[entity]) + { + new random = GetRandomInt(0, 2); + switch(random) + { + case 0:Format(sound, sizeof(sound), "player/survivor/voice/manager/fall01.wav"); + case 1:Format(sound, sizeof(sound), "player/survivor/voice/manager/fall02.wav"); + case 2:Format(sound, sizeof(sound), "player/survivor/voice/manager/fall03.wav"); + } + return Plugin_Changed; + } + } + else if (entity > 0 && entity <= MaxClients && StrContains(sound, "biker/fall04", false) > -1) + { + if (NotGround[entity]) + { + new random = GetRandomInt(0, 2); + switch(random) + { + case 0:Format(sound, sizeof(sound), "player/survivor/voice/biker/fall01.wav"); + case 1:Format(sound, sizeof(sound), "player/survivor/voice/biker/fall02.wav"); + case 2:Format(sound, sizeof(sound), "player/survivor/voice/biker/fall03.wav"); + } + return Plugin_Changed; + } + } + return Plugin_Continue; +} + +public Action:OnPlayerRunCmd(int client, int &buttons) +{ + if (IsPlayerAlive(client)) + { + if (!(GetEntityFlags(client) & FL_ONGROUND)) + { + NotGround[client] = true; + return Plugin_Continue; + } + } + + NotGround[client] = false; + return Plugin_Continue; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_finaleghostrangemod.sp b/addons/sourcemod/scripting/l4d2_finaleghostrangemod.sp new file mode 100644 index 00000000..6282c8df --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_finaleghostrangemod.sp @@ -0,0 +1,196 @@ +#pragma semicolon 1 +#include +#include +#include +#define PLUGIN_VERSION "1.0.0" + +/* +static const STATE_ROUNDHASNTSTARTED = 2; +static const STATE_CANBESEEN = 128; +*/ + +static Handle:cvarEnabled = INVALID_HANDLE; +static Handle:cvarRangeSetting = INVALID_HANDLE; + +static const STATE_SPAWNREADY = 0; +static const STATE_TOOCLOSE = 256; + +static propinfoghost = -1; +static cvarEnabledValue = 1; +static bool:isFinale = false; +static Float:cvarRangeValue = 150.0; + +new survivorCount = 0; +new survivorIndex[MAXPLAYERS+1] = 0; +static const Float: INDEX_REBUILD_DELAY = 0.3; + +#define FOR_EACH_ALIVE_SURVIVOR_INDEXED(%1) \ + for(new %1 = 0, indexnumber = 1; indexnumber <= survivorCount; indexnumber++) \ + if(((%1 = survivorIndex[indexnumber])) || true) + +public Plugin:myinfo = +{ + name = "L4D2 Finale Ghost Range Mod", + author = "AtomicStryker", + description = " Revert Valves Stupid Range Decision ", + version = PLUGIN_VERSION, + url = "" +} + +public OnPluginStart() +{ + RequireL4D2(); + + CreateConVar("l4d2_finaleghost_rangemod_version", PLUGIN_VERSION, " Version of L4D2 Finale Ghost Range Mod on this Server ", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); + + propinfoghost = FindSendPropInfo("CTerrorPlayer", "m_isGhost"); + + cvarEnabled = CreateConVar("l4d2_finaleghost_rangemod_enabled", "1", " Turn the Range Mod on or off ", FCVAR_PLUGIN|FCVAR_NOTIFY); + + cvarRangeSetting = CreateConVar("l4d2_finaleghost_rangemod_range", "150.0", " How close to the Survivors are you allowed to spawn ", FCVAR_PLUGIN|FCVAR_NOTIFY); + + HookConVarChange(cvarEnabled, RM_ConvarsChanged); + HookConVarChange(cvarRangeSetting, RM_ConvarsChanged); + + HookEvent("round_start", SI_TempStop_Event, EventHookMode_PostNoCopy); + HookEvent("round_end", SI_TempStop_Event, EventHookMode_PostNoCopy); + HookEvent("player_spawn", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("player_disconnect", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("player_death", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("player_bot_replace", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("bot_player_replace", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("defibrillator_used", RebuildIndex_Event, EventHookMode_PostNoCopy); + HookEvent("player_team", SI_DelayedIndexRebuild_Event, EventHookMode_PostNoCopy); + + HookEvent("round_start", RM_Round_Event, EventHookMode_PostNoCopy); + HookEvent("round_end", RM_Round_Event, EventHookMode_PostNoCopy); + HookEvent("finale_start", RM_FinaleStart_Event, EventHookMode_PostNoCopy); +} + +public RM_ConvarsChanged(Handle:convar, const String:oldValue[], const String:newValue[]) +{ + cvarEnabledValue = GetConVarBool(cvarEnabled); + cvarRangeValue = GetConVarFloat(cvarRangeSetting); +} + +public Action:RM_Round_Event(Handle:event, const String:name[], bool:dontBroadcast) +{ + isFinale = false; +} + +public Action:RM_FinaleStart_Event(Handle:event, const String:name[], bool:dontBroadcast) +{ + isFinale = true; +} + +public OnClientPostAdminCheck(client) +{ + SDKHook(client, SDKHook_PreThinkPost, HookCallback); +} + +public HookCallback(client) +{ + if (!cvarEnabledValue || !isFinale) return; + if (GetClientTeam(client) != 3) return; + if (!IsPlayerAlive(client)) return; + if (!IsPlayerSpawnGhost(client)) return; + + if (GetEntProp(client, Prop_Send, "m_ghostSpawnState") == STATE_TOOCLOSE) + { + if (GetDistanceToNearestSurvivor(client) >= cvarRangeValue) + { + SetEntProp(client, Prop_Send, "m_ghostSpawnState", STATE_SPAWNREADY); + } + } +} + +Float:GetDistanceToNearestSurvivor(client) +{ + decl Float:infectedorigin[3], Float:survivororigin[3], Float:vector[3]; + GetClientAbsOrigin(client, infectedorigin); + + new Float:distance; + decl Float:comparevalue; + FOR_EACH_ALIVE_SURVIVOR_INDEXED(i) + { + GetClientAbsOrigin(i, survivororigin); + MakeVectorFromPoints(infectedorigin, survivororigin, vector); + + comparevalue = GetVectorLength(vector); + + if (distance > comparevalue || distance == 0.0) + { + distance = comparevalue; + } + } + + if (distance == 0.0) return 9999.9; + else return distance; +} + +stock RequireL4D2() +{ + decl String:gameName[24]; + GetGameFolderName(gameName, sizeof(gameName)); + if (!StrEqual(gameName, "left4dead2", .caseSensitive = false)) + { + SetFailState("Plugin supports Left 4 Dead 2 only."); + } +} + +stock bool:IsPlayerSpawnGhost(client) +{ + if (GetEntData(client, propinfoghost, 1)) + { + return true; + } + + return false; +} + +public OnMapStart() +{ + survivorCount = 0; +} + +public OnMapEnd() +{ + survivorCount = 0; +} + +public SI_DelayedIndexRebuild_Event(Handle:event, const String:name[], bool:dontBroadcast) +{ + CreateTimer(INDEX_REBUILD_DELAY, SI_RebuildIndex_Timer); +} + +public Action:SI_RebuildIndex_Timer(Handle:timer) +{ + SurvivorIndex_Rebuild(); +} + +public SI_TempStop_Event(Handle:event, const String:name[], bool:dontBroadcast) +{ + survivorCount = 0; // to get rid of GetEntProp Entity errors before and after Mapchange + CreateTimer(INDEX_REBUILD_DELAY, SI_RebuildIndex_Timer); +} + +public RebuildIndex_Event(Handle:event, const String:name[], bool:dontBroadcast) +{ + SurvivorIndex_Rebuild(); +} + +SurvivorIndex_Rebuild() +{ + if (!IsServerProcessing()) return; + + survivorCount = 0; + for (new i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i)) continue; + if (GetClientTeam(i) !=2) continue; + if (!IsPlayerAlive(i)) continue; + + survivorCount++; + survivorIndex[survivorCount] = i; + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_fix_safedoor_use.sp b/addons/sourcemod/scripting/l4d2_fix_safedoor_use.sp new file mode 100644 index 00000000..29826019 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_fix_safedoor_use.sp @@ -0,0 +1,576 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include +#include + +#define PLUGIN_VERSION "1.3" + +#define DEBUG 0 + +public Plugin myinfo = +{ + name = "[L4D2] Fix saferoom door +use", + author = "glhf3000", + description = "Fixes annoying +USE bug when there are props/survivors between player and the door", + version = PLUGIN_VERSION, + url = "" +} + +/////////////////// + +#define MAX_BUTTONS 25 +int g_LastButtons[MAXPLAYERS+1]; + +/////////////////// + +enum struct doorEnum { + int id; + float origin[3]; + float center[3]; + float sideMinsCenter[3]; + float sideMaxsCenter[3]; + int spawnflags; +} + +doorEnum doors[2]; + +/////////////////// + +enum struct toogleData { + int client; + int entity; +} + +/////////////////// + +ConVar cvDistanceToOpen; +ConVar cvDistanceToClose; +ConVar cvWaitForPermissionToWork; + +float distanceToOpen, distanceToClose; +float distanceToOpen2, distanceToClose2; +float distanceToTraceToOpen, distanceToTraceToClose; + +bool waitForPermissionToWork; + +bool enabled = false; +bool lateLoad; + +/////////////////// + +char logFilePath[PLATFORM_MAX_PATH]; +char date[16]; + +public void OnPluginStart() +{ + //////////// + HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); + HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); + + //////////// + cvDistanceToOpen = CreateConVar("l4d2_fix_safedoor_use_distance_to_open", "100", "You will be able to OPEN doors from this distance"); + cvDistanceToClose = CreateConVar("l4d2_fix_safedoor_use_distance_to_close", "115", "You will be able to CLOSE doors from this distance"); + cvWaitForPermissionToWork = CreateConVar("l4d2_fix_safedoor_use_wait_permission_from_other_plugin", "0", "In case you use unscrambler or door locker, wait for it (to use native)"); + + CreateConVar("l4d2_fix_safedoor_use_version", PLUGIN_VERSION, "Saferoom Door Fix Use plugin version", FCVAR_NOTIFY|FCVAR_DONTRECORD); + + AutoExecConfig(true, "l4d2_fix_safedoor_use"); + + //////////// + cvDistanceToOpen.AddChangeHook(ConVarChanged); + cvDistanceToClose.AddChangeHook(ConVarChanged); + cvWaitForPermissionToWork.AddChangeHook(ConVarChanged); + + //////////// + setVars(); + + if(lateLoad) + { + #if DEBUG + LogDebug(""); + LogDebug("OnPluginStart> lateLoad: %i", lateLoad); + #endif + + enabled = true; + + findDoors(); + } +} + +void ConVarChanged(Handle convar, const char[] oldValue, const char[] newValue) +{ + setVars(); +} + +void setVars() +{ + distanceToOpen = float(cvDistanceToOpen.IntValue); + distanceToClose = float(cvDistanceToClose.IntValue); + + distanceToOpen2 = distanceToOpen*distanceToOpen; + distanceToClose2 = distanceToClose*distanceToClose; + + distanceToTraceToOpen = distanceToOpen*2; + distanceToTraceToClose = distanceToClose*2; + + waitForPermissionToWork = cvWaitForPermissionToWork.BoolValue; +} + +void Event_RoundStart(Event event, const char[] name, bool dontBroadcast) +{ + #if DEBUG + LogDebug(""); + LogDebug("Event_RoundStart> "); + #endif + + findDoors(); + + enabled = !waitForPermissionToWork; +} + +void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) +{ + enabled = false; +} + +// start here +void findDoors() +{ + doors[0].id = -1; + doors[1].id = -1; + + int entDoorFirst = L4D_GetCheckpointFirst(); + int entDoorLast = L4D_GetCheckpointLast(); + + if(entDoorFirst > 0) + { + fillDoorInfo(entDoorFirst, doors[0]); + + HookSingleEntityOutput(entDoorFirst, "OnOpen", OnOpen); + } + + if(entDoorLast > 0) + { + fillDoorInfo(entDoorLast, doors[1]); + + HookSingleEntityOutput(entDoorLast, "OnOpen", OnOpen); + HookSingleEntityOutput(entDoorLast, "OnClose", OnClose); + } + + #if DEBUG + LogDebug("findDoors> %i / %i", doors[0].id, doors[1].id); + #endif +} + +bool fillDoorInfo(int entity, doorEnum door) +{ + float origin[3], mins[3], maxs[3], angles[3]; + float center[3], sideMinsCenter[3], sideMaxsCenter[3]; + float centerRot[3], sideMinsCenterRot[3], sideMaxsCenterRot[3]; + + GetEntPropVector(entity, Prop_Data, "m_vecAbsOrigin", origin); + GetEntPropVector(entity, Prop_Send, "m_vecMins", mins); + GetEntPropVector(entity, Prop_Send, "m_vecMaxs", maxs); + GetEntPropVector(entity, Prop_Send, "m_angRotation", angles); + + door.spawnflags = GetEntProp(entity, Prop_Send, "m_spawnflags"); + + ////////////////////////////////// + center[0] = (mins[0] + maxs[0])/2.0; + center[1] = (mins[1] + maxs[1])/2.0; + center[2] = (mins[2] + maxs[2])/2.0; + + sideMinsCenter[0] = center[0]; + sideMinsCenter[1] = mins [1]; + sideMinsCenter[2] = center[2]; + + sideMaxsCenter[0] = center[0]; + sideMaxsCenter[1] = maxs [1]; + sideMaxsCenter[2] = center[2]; + + ////////////////////////////////// + rotateVector(center, angles, centerRot); + rotateVector(sideMinsCenter, angles, sideMinsCenterRot); + rotateVector(sideMaxsCenter, angles, sideMaxsCenterRot); + + ////////////////////////////////// + AddVectors(centerRot, origin, door.center); + AddVectors(sideMinsCenterRot, origin, door.sideMinsCenter); + AddVectors(sideMaxsCenterRot, origin, door.sideMaxsCenter); + + ////////////////////////////////// + door.id = entity; + door.origin = origin; + + return true; +} + +public void OnUsePress(int client) +{ + float origin[3]; + int state; + + float distToCompareTo2, distToTrace; + + GetClientEyePosition(client, origin); + + for(int i = 1; i >= 0; i--) + { + if(doors[i].id <= 0) continue; + + #if DEBUG + LogDebug(""); + #endif + + // last door on c10m3 or elsewhere + if(i == 1 && doors[i].spawnflags & DOOR_FLAG_STARTS_LOCKED) + { + #if DEBUG + LogDebug("OnUsePress> door[%i] has DOOR_FLAG_STARTS_LOCKED set, skip", i); + #endif + + continue; + } + + state = GetEntProp(doors[i].id, Prop_Send, "m_eDoorState"); + + #if DEBUG + LogDebug("OnUsePress> state: %i", state); + #endif + + if(state == DOOR_STATE_OPENED) + { + distToCompareTo2 = distanceToClose2; // square + + distToTrace = distanceToTraceToClose; // hit can be < center/mins/maxs + } + else if (state == DOOR_STATE_CLOSED) + { + distToCompareTo2 = distanceToOpen2; // square + + distToTrace = distanceToTraceToOpen; // hit can be < center/mins/maxs + } + else + { + #if DEBUG + LogDebug("OnUsePress> door is opening/closing, ignored"); + #endif + + continue; + } + + #if DEBUG + float distToCompareTo, distCenter, distMinsSide, distMaxsSide; + + if(state == DOOR_STATE_OPENED) + { + distToCompareTo = distanceToClose; + } + else if (state == DOOR_STATE_CLOSED) + { + distToCompareTo = distanceToOpen; + } + + distCenter = GetVectorDistance(origin, doors[i].center, false); + distMinsSide = GetVectorDistance(origin, doors[i].sideMinsCenter, false); + distMaxsSide = GetVectorDistance(origin, doors[i].sideMaxsCenter, false); + + LogDebug("OnUsePress> door - cent/side1/side2 - compareTo: %i - %.1f / %.1f / %.1f - %.1f", doors[i].id, distCenter, distMinsSide, distMaxsSide, distToCompareTo); + #endif + + if( GetVectorDistance(origin, doors[i].center, true) <= distToCompareTo2 || // squares + GetVectorDistance(origin, doors[i].sideMinsCenter, true) <= distToCompareTo2 || + GetVectorDistance(origin, doors[i].sideMaxsCenter, true) <= distToCompareTo2) + { + traceDoor(client, origin, distToTrace); + + #if DEBUG + LogDebug("OnUsePress> close to door %i", doors[i].id); + #endif + + continue; + } + } +} + +void traceDoor(int client, float origin[3], float distToTrace) +{ + float angles[3], endPoint[3]; + float fwd[3], right[3], up[3]; + + GetClientEyePosition(client, origin); + GetClientEyeAngles(client, angles); + + GetAngleVectors(angles, fwd, right, up); + + for (int i = 0; i <= 2; i++) + { + endPoint[i] = origin[i] + (fwd[i] * distToTrace); + } + + TR_EnumerateEntities(origin, endPoint, PARTITION_SOLID_EDICTS, RayType_EndPoint, enumerateEnts, client); +} + +bool enumerateEnts(int entity, int client) +{ + char classname[64]; + if(!IsValidEntity(entity)) return true; + + GetEntPropString(entity, Prop_Data, "m_iClassname", classname, sizeof(classname)); + + #if DEBUG + LogDebug("enumerate> %i - %s", entity, classname); + #endif + + ///// + if(!StrEqual(classname, "prop_door_rotating_checkpoint")) + return true; + + ///// + DataPack hPack = new DataPack(); + hPack.WriteCell(client); + hPack.WriteCell(entity); + + RequestFrame(toggleDoor, hPack); + + #if DEBUG + LogDebug("enumerateEnts> +"); + #endif + + return false; +} + +void toggleDoor(Handle hDataPack) +{ + DataPack hPack = view_as(hDataPack); + hPack.Reset(); + + int client = hPack.ReadCell(); + int entity = hPack.ReadCell(); + + delete hPack; + + int state = GetEntProp(entity, Prop_Send, "m_eDoorState"); + int spawnflags = GetEntProp(entity, Prop_Send, "m_spawnflags"); + + if(spawnflags & DOOR_FLAG_IGNORE_USE) + { + #if DEBUG + LogDebug("toggleDoor> door: %i, spawnflags: %i, skip as DOOR_FLAG_IGNORE_USE is set", entity, spawnflags); + #endif + + return; + } + + #if DEBUG + LogDebug("toggleDoor> state: %i", state); + #endif + + if(state == DOOR_STATE_OPENING_IN_PROGRESS || state == DOOR_STATE_CLOSING_IN_PROGRESS) + { + #if DEBUG + LogDebug("toggleDoor> opening/closing already, skip"); + #endif + + return; + } + + SetEntProp(entity, Prop_Send, "m_bLocked", 0); + + // SetEntProp(entity, Prop_Data, "m_eOpenDirection", 0); // ??? + // AcceptEntityInput(entity, "Toggle", client, client); // direction? + + if(state == DOOR_STATE_CLOSED) + AcceptEntityInput(entity, "PlayerOpen", client, client); + else + AcceptEntityInput(entity, "PlayerClose", client, client); + + sendUseEvent(client, entity); + + #if DEBUG + LogDebug("toggleDoor> +"); + #endif + + return; +} + +void sendUseEvent(int client, int target) +{ + Event event = CreateEvent("player_use"); + if (event == null) + { + return; + } + + event.SetInt("userid", GetClientUserId(client)); + event.SetInt("targetid", target); + event.Fire(); + + #if DEBUG + LogDebug("sendUseEvent> client %i -> door %i", client, target); + #endif +} + +void OnClose(const char[] output, int entity, int activator, float delay) +{ + RequestFrame(trackDoor, 1); + + #if DEBUG + LogDebug("OnClose> state: %i", GetEntProp(entity, Prop_Send, "m_eDoorState")); + #endif +} + +void OnOpen(const char[] output, int entity, int activator, float delay) +{ + for(int i = 1; i >= 0; i--) + { + if(doors[i].id == entity) + { + if(i == 1) + { + RequestFrame(trackDoor, i); + } + else + { + UnhookSingleEntityOutput(entity, "OnOpen", OnOpen); + doors[i].id = -1; + } + + #if DEBUG + LogDebug("OnOpen> state: %i", GetEntProp(entity, Prop_Send, "m_eDoorState")); + #endif + + break; + } + } +} + +void trackDoor(int doorIndex) +{ + int state = GetEntProp(doors[doorIndex].id, Prop_Send, "m_eDoorState"); + + if(state == DOOR_STATE_OPENING_IN_PROGRESS || state == DOOR_STATE_CLOSING_IN_PROGRESS) + { + RequestFrame(trackDoor, doorIndex); + + #if DEBUG + LogDebug("trackDoor> %i - %i", doors[doorIndex].id, state); + #endif + } + else + { + fillDoorInfo(doors[doorIndex].id, doors[doorIndex]); + } +} + +void rotateVector(float vec[3], float angles[3], float result[3]) +{ + // angles.x = impulse.y; + // angles.y = impulse.z; + // angles.z = impulse.x; + // int x = 0; + // int y = 1; + // int z = 2; + // -> + int x = 2; + int y = 0; + int z = 1; + + if(angles[x] != 0.0) + { + // x'=x; + // y':=y*cos(L)+z*sin(L) ; + // z':=-y*sin(L)+z*cos(L) ; + + result[0] = vec[0]; + result[1] = vec[1] * Cosine(DegToRad(angles[x])) + vec[2] * Sine(DegToRad(angles[x])); + result[2] = -vec[1] * Sine(DegToRad(angles[x])) + vec[2] * Cosine(DegToRad(angles[x])); + } + + if(angles[y] != 0.0) + { + // x'=x*cos(L)+z*sin(L); + // y'=y; + // z'=-x*sin(L)+z*cos(L); + result[0] = vec[0] * Cosine(DegToRad(angles[y])) + vec[2] * Sine(DegToRad(angles[y])); + result[1] = vec[1]; + result[2] = -vec[0] * Sine(DegToRad(angles[y])) + vec[2] * Cosine(DegToRad(angles[y])); + } + + if(angles[z] != 0.0) + { + // x'=x*cos(L)-y*sin(L); + // y'=-x*sin(L)+y*cos(L); + // z'=z; + + result[0] = vec[0] * Cosine(DegToRad(angles[z])) - vec[1] * Sine(DegToRad(angles[z])); + result[1] = -vec[0] * Sine(DegToRad(angles[z])) + vec[1] * Cosine(DegToRad(angles[z])); + result[2] = vec[2]; + } +} + +public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, int cmdnum, int tickcount, int seed, const int mouse[2]) +{ + if(client < 1 || client > MaxClients) return; + if(!enabled || IsFakeClient(client) || GetClientTeam(client) != 2) return; + + for (int i = 0; i < MAX_BUTTONS; i++) + { + int button = (1 << i); + + if ((buttons & button)) + { + if (!(g_LastButtons[client] & button) && (button & IN_USE)) + { + OnUsePress(client); + } + } + } + + g_LastButtons[client] = buttons; +} + +public void OnClientDisconnect_Post(int client) +{ + g_LastButtons[client] = 0; +} + +public void Native_FixSafedoorUseEnable(Handle plugin, int numParams) +{ + bool value = true; + + if(numParams > 0) + value = GetNativeCell(1); + + enabled = value; +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + RegPluginLibrary("l4d2_fix_safedoor_use"); + CreateNative("FixSafedoorUseEnable", Native_FixSafedoorUseEnable); + + lateLoad = late; + + FormatTime(date, sizeof(date), "%Y%m%d", GetTime()); + BuildPath(Path_SM, logFilePath, sizeof(logFilePath), "logs/fix_safedoor_use_%s.log", date); + + return APLRes_Success; +} + + +#if DEBUG + void LogDebug(const char[] szFormat, any ...) + { + int iLen = strlen(szFormat) + 255; + char[] szBuffer = new char[iLen]; + VFormat(szBuffer, iLen, szFormat, 2); + + LogToFile(logFilePath, "[%i] %s", GetGameTickCount(), szBuffer); + + // PrintToServer(szBuffer); + } +#endif \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_freeroam.sp b/addons/sourcemod/scripting/l4d2_freeroam.sp new file mode 100644 index 00000000..7b25b6fd --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_freeroam.sp @@ -0,0 +1,49 @@ +#pragma semicolon 1 +#include +#include + +#define PLUGIN_VERSION "1.1" + +public Plugin:myinfo = +{ + name = "L4D2 Take a break Free Roam", + author = "EHG", + description = "L4D2 Take a break Free Roam", + version = PLUGIN_VERSION, + url = "" +}; + + +public OnPluginStart() +{ + CreateConVar("l4d2_takeabreak_freeroam_version", PLUGIN_VERSION, "L4D2 Enable Spectator Free Roam Version", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_DONTRECORD | FCVAR_NOTIFY); + RegConsoleCmd("sm_freeroam", Command_Freeroam); + HookEvent("player_team", Event_PlayerTeam); +} + + +public Action:Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast) +{ + new client = GetClientOfUserId(GetEventInt(event, "userid")); + + if (GetEventInt(event,"team") == 1) + { + PrintToChat(client, "Type /freeroam in chat or sm_freeroam in console to enter the free roam camera"); + } +} + + + +public Action:Command_Freeroam(client, args) +{ + if (GetClientTeam(client) == 1) + { + SetEntProp(client, Prop_Data, "m_iObserverMode", 6); + return Plugin_Handled; + } + return Plugin_Handled; +} + + + + diff --git a/addons/sourcemod/scripting/l4d2_godframesbegone.sp b/addons/sourcemod/scripting/l4d2_godframesbegone.sp new file mode 100644 index 00000000..3a3ca250 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_godframesbegone.sp @@ -0,0 +1,341 @@ +#pragma semicolon 1 +#include +#include +#include +#define PLUGIN_VERSION "1.0.7" + +#define STRINGLENGTH 32 +#define STRINGLENGTH_DEBUG 192 + +static const OUT_SERVER = 1; +static const OUT_LOG = 2; +static const OUT_CHAT = 4; +static const L4D2_TEAM_INFECTED = 3; +static const TEMP_HEALTH_ERROR_MARGIN = 1; +static const ZOMBIECLASS_SPITTER = 4; + +static const Float:GOD_FRAME_CHECK_DURATION = 3.0; +static const Float:DAMAGE_CHECK_DELAY = 0.1; +static const Float:HEAL_CHECKSTOP_RATIO = 1.2; + +static const String:EVENT_STRING_VICTIM[] = "victim"; +static const String:EVENT_STRING_SUBJECT[] = "subject"; +static const String:EVENT_STRING_USER_ID[] = "userid"; +static const String:CVAR_TEMP_HEALTH_DECAY[] = "pain_pills_decay_rate"; +static const String:ENTPROP_HARD_HEALTH[] = "m_iHealth"; +static const String:ENTPROP_TEMP_HEALTH[] = "m_healthBuffer"; +static const String:ENTPROP_TEMP_HEALTH_DECAY[] = "m_healthBufferTime"; +static const String:ENTPROP_ZOMBIECLASS[] = "m_zombieClass"; + + +static Handle:cvarEnabled = INVALID_HANDLE; +static Handle:cvarTempHealthDecay = INVALID_HANDLE; +static Handle:cvarDebugOut = INVALID_HANDLE; +static Handle:cvarCommonsEnabled = INVALID_HANDLE; +static Handle:cvarSpitterOverrides = INVALID_HANDLE; +static Float:lastSavedGodFrameBegin[MAXPLAYERS+1] = 0.0; +static bool:justHealed[MAXPLAYERS+1] = false; +static LEFT4DEAD = 0; +static MaxPlayerClients = 16; + + +public Plugin:myinfo = +{ + name = "L4D2 God Frames be gone", + author = "AtomicStryker", + description = "Remove invincibility time spans for Survivors", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?p=1192013" +}; + +public OnPluginStart() +{ + decl String:game_name[STRINGLENGTH]; + GetGameFolderName(game_name, sizeof(game_name)); + if (StrEqual(game_name, "left4dead", false)) + { + LEFT4DEAD = 1; + } + else if (StrEqual(game_name, "left4dead2", false)) + { + LEFT4DEAD = 2; + } + else + { + SetFailState("Plugin only supports L4D and L4D2"); + } + + CreateConVar("l4d2_god_frames_be_gone_version", PLUGIN_VERSION, "L4D2 God Frames be gone Version", FCVAR_PLUGIN|FCVAR_REPLICATED|FCVAR_DONTRECORD); + cvarEnabled = CreateConVar("l4d2_god_frames_be_gone_enabled", "1", "Enable or Disable God Frame Damage Override", FCVAR_PLUGIN|FCVAR_NOTIFY); + cvarCommonsEnabled = CreateConVar("l4d2_god_frames_be_gone_commons", "0", "Enable or Disable Common Infected attacks to override", FCVAR_PLUGIN|FCVAR_NOTIFY); + cvarDebugOut = CreateConVar("l4d2_god_frames_be_gone_debug", "0", "Sum of debug flags for debug outputs (1-console, 2-log, 4-chat)", FCVAR_PLUGIN|FCVAR_NOTIFY); + cvarSpitterOverrides = CreateConVar("l4d2_god_frames_be_gone_4spitter", "1", "Is Spitter damage included in Damage Overriding", FCVAR_PLUGIN|FCVAR_NOTIFY); + + cvarTempHealthDecay = FindConVar(CVAR_TEMP_HEALTH_DECAY); + + HookEvent("tongue_grab", _GF_CheckForGodFrames); + HookEvent("tongue_release", _GF_CheckForGodFrames); + HookEvent("lunge_pounce", _GF_CheckForGodFrames); + HookEvent("pounce_stopped", _GF_CheckForGodFrames); + HookEventEx("jockey_ride", _GF_CheckForGodFrames); + HookEventEx("jockey_ride_end", _GF_CheckForGodFrames); + HookEventEx("charger_carry_start", _GF_CheckForGodFrames); + HookEventEx("charger_carry_end", _GF_CheckForGodFrames); + HookEventEx("charger_pummel_start", _GF_CheckForGodFrames); + HookEventEx("charger_pummel_end", _GF_CheckForGodFrames); + + HookEvent("heal_success", _GF_HealEvent); + HookEvent("pills_used", _GF_HealEvent); + HookEventEx("adrenaline_used", _GF_HealEvent); + + HookEvent("player_incapacitated", _GF_IncapEvent); // being incapped 'heals' you from 1 to 300 hard health +} + +public OnConfigsExecuted() +{ + new Handle:cvar = FindConVar("l4d_maxplayers"); + + if (cvar != INVALID_HANDLE) + { + MaxPlayerClients = GetConVarInt(cvar); + return; + } + + cvar = FindConVar("sv_maxplayers"); + + if (cvar != INVALID_HANDLE) + { + MaxPlayerClients = GetConVarInt(cvar); + } + + if (cvar != INVALID_HANDLE) + { + CloseHandle(cvar); + } +} + +public _GF_CheckForGodFrames(Handle:event, const String:name[], bool:dontBroadcast) +{ + new victim = GetClientOfUserId(GetEventInt(event, EVENT_STRING_VICTIM)); + if (!victim) return; + lastSavedGodFrameBegin[victim] = GetEngineTime(); +} + +public _GF_HealEvent(Handle:event, const String:name[], bool:dontBroadcast) +{ + new subject = GetClientOfUserId(GetEventInt(event, EVENT_STRING_SUBJECT)); + justHealed[subject] = true; + CreateTimer(DAMAGE_CHECK_DELAY * HEAL_CHECKSTOP_RATIO, _GF_timer_ResetHealBool, subject); +} + +public _GF_IncapEvent(Handle:event, const String:name[], bool:dontBroadcast) +{ + new subject = GetClientOfUserId(GetEventInt(event, EVENT_STRING_USER_ID)); + justHealed[subject] = true; + CreateTimer(DAMAGE_CHECK_DELAY * HEAL_CHECKSTOP_RATIO, _GF_timer_ResetHealBool, subject); +} + +public Action:_GF_timer_ResetHealBool(Handle:timer, any:subject) +{ + justHealed[subject] = false; +} + +public OnClientPostAdminCheck(client) +{ + SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage); +} + +public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype) +{ + DebugPrintToAll("OnTakeDamage: victim %i attacker %i inflictor %i damage %i type %i", victim, attacker, inflictor, RoundToNearest(damage), damagetype); + + switch (LEFT4DEAD) + { + case 1: + { + if (!GetConVarBool(cvarEnabled) + || !IsValidEdict(victim) + || !IsValidEdict(attacker) + || victim > MaxPlayerClients + || !IsClientInGame(victim) + || GetClientTeam(victim) == L4D2_TEAM_INFECTED + || (attacker < MaxPlayerClients && IsClientInGame(attacker) && GetClientTeam(attacker) != L4D2_TEAM_INFECTED)) + { + return Plugin_Continue; // establish the victim is a valid Survivor attacked by Infected + } + } + case 2: + { + if (!GetConVarBool(cvarEnabled) + || !IsValidEdict(victim) + || !IsValidEdict(attacker) + || victim > MaxPlayerClients + || !IsClientInGame(victim) + || GetClientTeam(victim) == L4D2_TEAM_INFECTED) + { + return Plugin_Continue; // establish the victim is a valid Survivor attacked by Infected + } + } + } + + new bool:playerattacker = (attacker > 0 + && attacker < MaxPlayerClients + && IsClientInGame(attacker) + && GetClientTeam(attacker) == L4D2_TEAM_INFECTED); + + if (!playerattacker && !GetConVarBool(cvarCommonsEnabled) // case common override disabled and attacker common + || lastSavedGodFrameBegin[victim] == 0.0 // case no god frames on record + || GetEngineTime() - lastSavedGodFrameBegin[victim] > GOD_FRAME_CHECK_DURATION) // case attack not within god frame time window + { + return Plugin_Continue; + } + + if (playerattacker && GetEntProp(attacker, Prop_Send, ENTPROP_ZOMBIECLASS) == ZOMBIECLASS_SPITTER && !GetConVarBool(cvarSpitterOverrides)) + { + return Plugin_Continue; + } + + new hardhealth = GetHardHealth(victim); + new supposeddamage = RoundToNearest(damage); + + new resulthardhealth = hardhealth - supposeddamage; // damage formula: subtract damage from hard health + new resulttemphealth = GetAccurateTempHealth(victim); + + if (resulthardhealth < 1) // if negative hard health would result + { + supposeddamage = resulthardhealth * -1; // the negative hard health equals whatever should transition to temp health + resulthardhealth = 1; // set expected hard health 1 for now + + resulttemphealth -= supposeddamage; // try to pull the damage from temp health + if (resulttemphealth < 0) // if that results in negative too + { + resulthardhealth = 0; + resulttemphealth = 0; // mark the victim as 'to be killed' + } + } + + new Handle:data = CreateDataPack(); + WritePackCell(data, victim); + WritePackCell(data, resulthardhealth); + WritePackCell(data, resulttemphealth); + WritePackCell(data, attacker); + + CreateTimer(DAMAGE_CHECK_DELAY, _GF_timer_CheckForGodMode, data); + + return Plugin_Continue; +} + +public Action:_GF_timer_CheckForGodMode(Handle:timer, Handle:data) +{ + ResetPack(data); + new victim = ReadPackCell(data); + new targethardhealth = ReadPackCell(data); + new targettemphealth = ReadPackCell(data); + new attacker = ReadPackCell(data); + CloseHandle(data); + + if (justHealed[victim] || !IsClientInGame(victim)) return; + + new hardhealth = GetHardHealth(victim); + new temphealth = GetAccurateTempHealth(victim); + + if (hardhealth > targethardhealth) + { + DebugPrintToAll("HAAAX! God Frames detected, hard health of %N is %i, supposed to be %i", victim, hardhealth, targethardhealth); + applyDamage(targethardhealth - hardhealth, victim, attacker); + } + + if (temphealth > targettemphealth + TEMP_HEALTH_ERROR_MARGIN) + { + DebugPrintToAll("HAAAX! God Frames detected, temp health of %N is %i, supposed to be %i", victim, temphealth, targettemphealth); + applyDamage(targettemphealth - temphealth, victim, attacker); + } +} + +static GetHardHealth(client) +{ + return GetEntProp(client, Prop_Send, ENTPROP_HARD_HEALTH); +} + +static GetAccurateTempHealth(client) +{ + new value = RoundToCeil(GetEntPropFloat(client, Prop_Send, ENTPROP_TEMP_HEALTH) - ((GetGameTime() - GetEntPropFloat(client, Prop_Send, ENTPROP_TEMP_HEALTH_DECAY)) * GetConVarFloat(cvarTempHealthDecay))) - 1; + + if (value > 0) + { + return value; + } + else + { + return 0; + } +} + +static DebugPrintToAll(const String:format[], any:...) +{ + new outflags = GetConVarInt(cvarDebugOut); + if (!outflags) return; + + decl String:buffer[STRINGLENGTH_DEBUG]; + + VFormat(buffer, sizeof(buffer), format, 2); + + if(outflags & OUT_SERVER) + { + PrintToConsole(0, "[SM] %s", buffer); + } + if(outflags & OUT_CHAT) + { + PrintToChatAll("[SM] %s", buffer); + } + if(outflags & OUT_LOG) + { + LogMessage("%s", buffer); + } +} + +// timer idea by dirtyminuth, damage dealing by pimpinjuice http://forums.alliedmods.net/showthread.php?t=111684 +// added some L4D2 specific checks +static applyDamage(damage, victim, attacker) +{ + new Handle:dataPack = CreateDataPack(); + WritePackCell(dataPack, damage); + WritePackCell(dataPack, victim); + WritePackCell(dataPack, attacker); + + CreateTimer(0.10, timer_stock_applyDamage, dataPack); +} + +public Action:timer_stock_applyDamage(Handle:timer, Handle:dataPack) +{ + ResetPack(dataPack); + new damage = ReadPackCell(dataPack); + new victim = ReadPackCell(dataPack); + new attacker = ReadPackCell(dataPack); + CloseHandle(dataPack); + + decl Float:victimPos[3], String:strDamage[16], String:strDamageTarget[16]; + + GetClientEyePosition(victim, victimPos); + IntToString(damage, strDamage, sizeof(strDamage)); + Format(strDamageTarget, sizeof(strDamageTarget), "hurtme%d", victim); + + new entPointHurt = CreateEntityByName("point_hurt"); + if(!entPointHurt) return; + + // Config, create point_hurt + DispatchKeyValue(victim, "targetname", strDamageTarget); + DispatchKeyValue(entPointHurt, "DamageTarget", strDamageTarget); + DispatchKeyValue(entPointHurt, "Damage", strDamage); + DispatchKeyValue(entPointHurt, "DamageType", "0"); // DMG_GENERIC + DispatchSpawn(entPointHurt); + + // Teleport, activate point_hurt + TeleportEntity(entPointHurt, victimPos, NULL_VECTOR, NULL_VECTOR); + AcceptEntityInput(entPointHurt, "Hurt", (attacker && attacker < MaxPlayerClients && IsClientInGame(attacker)) ? attacker : -1); + + // Config, delete point_hurt + DispatchKeyValue(entPointHurt, "classname", "point_hurt"); + DispatchKeyValue(victim, "targetname", "null"); + RemoveEdict(entPointHurt); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_incapped_crawling.sp b/addons/sourcemod/scripting/l4d2_incapped_crawling.sp index aad9f3da..97ebbfc5 100644 --- a/addons/sourcemod/scripting/l4d2_incapped_crawling.sp +++ b/addons/sourcemod/scripting/l4d2_incapped_crawling.sp @@ -326,19 +326,19 @@ public void OnPluginStart() g_bTranslation = true; } - g_hCvarAllow = CreateConVar( "l4d2_crawling", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS); + g_hCvarAllow = CreateConVar( "l4d2_crawling", "0", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS); g_hCvarCrazy = CreateConVar( "l4d2_crawling_crazy", "0", "0=Off. 1=Use crazy faces (original before version 2.0).", CVAR_FLAGS); g_hCvarGlow = CreateConVar( "l4d2_crawling_glow", "0", "0=Disables survivor glow on crawling, 1=Enables glow if not realism.", CVAR_FLAGS); - g_hCvarHint = CreateConVar( "l4d2_crawling_hint", "2", "0=Dislables, 1=Chat text, 2=Hint box.", CVAR_FLAGS); - g_hCvarHintS = CreateConVar( "l4d2_crawling_hint_num", "2", "How many times to display hints.", CVAR_FLAGS); - g_hCvarHurt = CreateConVar( "l4d2_crawling_hurt", "2", "Damage to apply every second of crawling, 0=No damage when crawling.", CVAR_FLAGS); + g_hCvarHint = CreateConVar( "l4d2_crawling_hint", "0", "0=Dislables, 1=Chat text, 2=Hint box.", CVAR_FLAGS); + g_hCvarHintS = CreateConVar( "l4d2_crawling_hint_num", "0", "How many times to display hints.", CVAR_FLAGS); + g_hCvarHurt = CreateConVar( "l4d2_crawling_hurt", "0", "Damage to apply every second of crawling, 0=No damage when crawling.", CVAR_FLAGS); g_hCvarModes = CreateConVar( "l4d2_crawling_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); g_hCvarModesOff = CreateConVar( "l4d2_crawling_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); g_hCvarModesTog = CreateConVar( "l4d2_crawling_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); - g_hCvarRate = CreateConVar( "l4d2_crawling_rate", "15", "Sets the playback speed of the crawling animation.", CVAR_FLAGS); - g_hCvarSpeeds = CreateConVar( "l4d2_crawling_speed", "15", "Changes 'survivor_crawl_speed' cvar.", CVAR_FLAGS); + g_hCvarRate = CreateConVar( "l4d2_crawling_rate", "100", "Sets the playback speed of the crawling animation.", CVAR_FLAGS); + g_hCvarSpeeds = CreateConVar( "l4d2_crawling_speed", "100", "Changes 'survivor_crawl_speed' cvar.", CVAR_FLAGS); g_hCvarSpit = CreateConVar( "l4d2_crawling_spit", "1", "0=Disables crawling in spitter acid, 1=Enables crawling in spit.", CVAR_FLAGS); - g_hCvarView = CreateConVar( "l4d2_crawling_view", "1", "0=Firstperson view when crawling, 1=Thirdperson view when crawling. 2=Firstperson view when crawling and hides own animation.", CVAR_FLAGS); + g_hCvarView = CreateConVar( "l4d2_crawling_view", "0", "0=Firstperson view when crawling, 1=Thirdperson view when crawling. 2=Firstperson view when crawling and hides own animation.", CVAR_FLAGS); CreateConVar( "l4d2_crawling_version", PLUGIN_VERSION, "Incapped Crawling plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); AutoExecConfig(true, "l4d2_incapped_crawling"); @@ -948,4 +948,4 @@ stock void SetAttached(int iEntToAttach, int iEntToAttachTo) SetEntProp(iEntToAttach, Prop_Data, "m_usSolidFlags", iFlags, 2); TeleportEntity(iEntToAttach, view_as({0.0, 0.0, 0.0}), view_as({0.0, 0.0, 0.0}), NULL_VECTOR); -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_melee_fix.sp b/addons/sourcemod/scripting/l4d2_melee_fix.sp index 6fd090c9..6e600f04 100644 --- a/addons/sourcemod/scripting/l4d2_melee_fix.sp +++ b/addons/sourcemod/scripting/l4d2_melee_fix.sp @@ -23,7 +23,7 @@ public APLRes AskPluginLoad2(Handle plugin, bool late, char[] error, int errMax) public void OnPluginStart() { - hCvarDmg = CreateConVar("melee_damage_charger", "0.0", "Damage dealt to Chargers per swing, 0.0 to leave in default behaviour"); + hCvarDmg = CreateConVar("melee_damage_charger", "0", "Damage dealt to Chargers per swing, 0.0 to leave in default behaviour"); fCvarDmg = GetConVarFloat(hCvarDmg); HookConVarChange(hCvarDmg, cvarChanged); @@ -94,4 +94,4 @@ stock bool IsSi(int client) public void cvarChanged(Handle cvar, char[] oldValue, char[] newValue) { fCvarDmg = GetConVarFloat(hCvarDmg); -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_melee_in_the_saferoom.sp b/addons/sourcemod/scripting/l4d2_melee_in_the_saferoom.sp index 9f23c7b9..21d52d7a 100644 --- a/addons/sourcemod/scripting/l4d2_melee_in_the_saferoom.sp +++ b/addons/sourcemod/scripting/l4d2_melee_in_the_saferoom.sp @@ -204,25 +204,25 @@ public void OnPluginStart() { // Create Convars CreateConVar( "l4d2_MITSR_Version", VERSION, "The version of Melee In The Saferoom"); - Cvar_Enabled = CreateConVar( "l4d2_MITSR_Enabled", "1", "Should the plugin be enabled", _, true, 0.0, true, 1.0); - Cvar_WeaponSpawnType = CreateConVar( "l4d2_MITSR_Spawn_Type", "2", "0 = Custom list, 1 = Random Weapon and 2 = Map based weapons.", _, true, 0.0, true, 2.0); - Cvar_WeaponRandomAmount = CreateConVar( "l4d2_MITSR_Random_Amount", "10","Number of weapons to spawn if l4d2_MITSR_Spawn_Type is set to 1.", _, true, 0.0, true, 10.0); + Cvar_Enabled = CreateConVar( "l4d2_MITSR_Enabled", "0", "Should the plugin be enabled", _, true, 0.0, true, 1.0); + Cvar_WeaponSpawnType = CreateConVar( "l4d2_MITSR_Spawn_Type", "1", "0 = Custom list, 1 = Random Weapon and 2 = Map based weapons.", _, true, 0.0, true, 2.0); + Cvar_WeaponRandomAmount = CreateConVar( "l4d2_MITSR_Random_Amount", "1","Number of weapons to spawn if l4d2_MITSR_Spawn_Type is set to 1.", _, true, 0.0, true, 10.0); Cvar_MapBaseAmount = CreateConVar( "l4d2_MITSR_MapBase_Amount", "1", "Number multiple if l4d2_MITSR_Spawn_Type is set to 2.", _, true, 0.0, true, 4.0); Cvar_Debug = CreateConVar( "l4d2_MITSR_Debug", "0", "0 = off, 1 = Chat message, 2 = Log to file. Check logs/meleeinthesaferoom.txt", _, true, 0.0, true, 2.0); Cvar_Items[0] = CreateConVar( "l4d2_MITSR_BaseballBat", "1", "Number of baseball bats to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[1] = CreateConVar( "l4d2_MITSR_CricketBat", "1", "Number of cricket bats to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[2] = CreateConVar( "l4d2_MITSR_Crowbar", "1", "Number of crowbars to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[3] = CreateConVar( "l4d2_MITSR_ElecGuitar", "1", "Number of electric guitars to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[4] = CreateConVar( "l4d2_MITSR_FireAxe", "1", "Number of fireaxes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[5] = CreateConVar( "l4d2_MITSR_FryingPan", "1", "Number of frying pans to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[6] = CreateConVar( "l4d2_MITSR_GolfClub", "1", "Number of golf clubs to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[7] = CreateConVar( "l4d2_MITSR_Knife", "1", "Number of knifes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[8] = CreateConVar( "l4d2_MITSR_Katana", "1", "Number of katanas to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[9] = CreateConVar( "l4d2_MITSR_Machete", "1", "Number of machetes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[10] = CreateConVar( "l4d2_MITSR_Tonfa", "1", "Number of tonfas to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[11] = CreateConVar( "l4d2_MITSR_PitchFork", "1", "Number of pitchforks to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); - Cvar_Items[12] = CreateConVar( "l4d2_MITSR_Shovel", "1", "Number of shovels to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[1] = CreateConVar( "l4d2_MITSR_CricketBat", "0", "Number of cricket bats to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[2] = CreateConVar( "l4d2_MITSR_Crowbar", "0", "Number of crowbars to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[3] = CreateConVar( "l4d2_MITSR_ElecGuitar", "0", "Number of electric guitars to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[4] = CreateConVar( "l4d2_MITSR_FireAxe", "0", "Number of fireaxes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[5] = CreateConVar( "l4d2_MITSR_FryingPan", "0", "Number of frying pans to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[6] = CreateConVar( "l4d2_MITSR_GolfClub", "0", "Number of golf clubs to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[7] = CreateConVar( "l4d2_MITSR_Knife", "0", "Number of knifes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[8] = CreateConVar( "l4d2_MITSR_Katana", "0", "Number of katanas to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[9] = CreateConVar( "l4d2_MITSR_Machete", "0", "Number of machetes to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[10] = CreateConVar( "l4d2_MITSR_Tonfa", "0", "Number of tonfas to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[11] = CreateConVar( "l4d2_MITSR_PitchFork", "0", "Number of pitchforks to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); + Cvar_Items[12] = CreateConVar( "l4d2_MITSR_Shovel", "0", "Number of shovels to spawn (l4d2_MITSR_Spawn_Type must be 0)", _, true, 0.0, true, 10.0); // Autocreate the config file AutoExecConfig( true, "l4d2_melee_in_the_saferoom" ); @@ -508,4 +508,4 @@ stock void LogAcitivity(const char[] format, any ...) LogToFile(LogFilePath, "%s", buffer); } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_model_precacher.sp b/addons/sourcemod/scripting/l4d2_model_precacher.sp new file mode 100644 index 00000000..c432bb1f --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_model_precacher.sp @@ -0,0 +1,122 @@ +#pragma semicolon 1 +#include + +#define PLUGIN_VERSION "1.666.1" + +public Plugin:myinfo = +{ + name = "[L4D2] Model Precacher", + author = "satannuts", + description = "Precaches models so z_spawn use doesn't crash the server.", + version = PLUGIN_VERSION, + url = "forums.alliedmods.net" +}; + +new Handle:h_billEnabled = INVALID_HANDLE; +new Handle:h_survivorsEnabled = INVALID_HANDLE; + +new Handle:h_m60Enabled = INVALID_HANDLE; +new Handle:h_cssweaponsEnabled = INVALID_HANDLE; +new Handle:h_meleeEnabled = INVALID_HANDLE; + +new Handle:h_miscEnabled = INVALID_HANDLE; + +new Handle:h_tankEnabled = INVALID_HANDLE; +new Handle:h_witchEnabled = INVALID_HANDLE; +new Handle:h_infectedEnabled = INVALID_HANDLE; + +public OnPluginStart() +{ + decl String:game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false)) + { + SetFailState("Plugin supports Left 4 Dead 2 only."); + } + + h_billEnabled = CreateConVar("l4d2_precache_bill", "1", "Toggle precaching of Bill's model to prevent crashes caused by sb_add", FCVAR_NOTIFY|FCVAR_PLUGIN); + h_survivorsEnabled = CreateConVar("l4d2_precache_survivors", "1", "Toggle precaching of L4D1 survivor models to prevent crashes after the passing update", FCVAR_NOTIFY|FCVAR_PLUGIN); + + h_m60Enabled = CreateConVar("l4d2_precache_m60", "1", "Toggle precaching of the m60 model to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + h_cssweaponsEnabled = CreateConVar("l4d2_precache_cssweapons", "1", "Toggle precaching of css weapon models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + h_meleeEnabled = CreateConVar("l4d2_precache_melee", "1", "Toggle precaching of melee weapon models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + + h_miscEnabled = CreateConVar("l4d2_precache_misc", "1", "Toggle precaching of miscellaneous models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + + h_tankEnabled = CreateConVar("l4d2_precache_tank", "1", "Toggle precaching of tank models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + h_witchEnabled = CreateConVar("l4d2_precache_witch", "1", "Toggle precaching of witch models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + h_infectedEnabled = CreateConVar("l4d2_precache_infected", "1", "Toggle precaching of infected models to prevent crashes caused by z_spawn", FCVAR_NOTIFY|FCVAR_PLUGIN); + AutoExecConfig(true, "l4d2_model_precacher"); +} + +public OnMapStart() + +{ + //Precache Bill + if (!GetConVarBool(h_billEnabled)) return; + if (!IsModelPrecached("models/survivors/survivor_namvet.mdl")) PrecacheModel("models/survivors/survivor_namvet.mdl"); + + //Precache L4D1 Survivors + if (!GetConVarBool(h_survivorsEnabled)) return; + if (!IsModelPrecached("models/survivors/survivor_teenangst.mdl")) PrecacheModel("models/survivors/survivor_teenangst.mdl"); + if (!IsModelPrecached("models/survivors/survivor_biker.mdl")) PrecacheModel("models/survivors/survivor_biker.mdl"); + if (!IsModelPrecached("models/survivors/survivor_manager.mdl")) PrecacheModel("models/survivors/survivor_manager.mdl"); + + //Precache M60 + if (!GetConVarBool(h_m60Enabled)) return; + if (!IsModelPrecached("models/v_models/v_m60.mdl")) PrecacheModel("models/v_models/v_m60.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_m60.mdl")) PrecacheModel("models/w_models/weapons/w_m60.mdl"); + + //Precache CSS Weapons + if (!GetConVarBool(h_cssweaponsEnabled)) return; + if (!IsModelPrecached("models/v_models/v_rif_sg552.mdl")) PrecacheModel("models/v_models/v_rif_sg552.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_rifle_sg552.mdl")) PrecacheModel("models/w_models/weapons/w_rifle_sg552.mdl"); + if (!IsModelPrecached("models/v_models/v_snip_awp.mdl")) PrecacheModel("models/v_models/v_snip_awp.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_sniper_awp.mdl")) PrecacheModel("models/w_models/weapons/w_sniper_awp.mdl"); + if (!IsModelPrecached("models/v_models/v_snip_scout.mdl")) PrecacheModel("models/v_models/v_snip_scout .mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_sniper_scout.mdl")) PrecacheModel("models/w_models/weapons/w_sniper_scout.mdl"); + if (!IsModelPrecached("models/v_models/v_smg_mp5.mdl")) PrecacheModel("models/v_models/v_smg_mp5.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_smg_mp5.mdl")) PrecacheModel("models/w_models/weapons/w_smg_mp5.mdl"); + if (!IsModelPrecached("models/v_models/v_knife_t.mdl")) PrecacheModel("models/v_models/v_knife_t.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_knife_t.mdl")) PrecacheModel("models/w_models/weapons/w_knife_t.mdl"); + + //Precache Melee Weapons + if (!GetConVarBool(h_meleeEnabled)) return; + if (!IsModelPrecached("models/weapons/melee/v_golfculb.mdl")) PrecacheModel("models/weapons/melee/v_golfculb.mdl"); + if (!IsModelPrecached("models/weapons/melee/w_golfculb.mdl")) PrecacheModel("models/weapons/melee/w_golfculb.mdl"); + if (!IsModelPrecached("models/weapons/melee/v_bat.mdl")) PrecacheModel("models/weapons/melee/v_bat.mdl"); + if (!IsModelPrecached("models/weapons/melee/w_bat.mdl")) PrecacheModel("models/weapons/melee/w_bat.mdl"); + if (!IsModelPrecached("models/weapons/melee/v_riotshield.mdl")) PrecacheModel("models/weapons/melee/v_riotshield.mdl"); + if (!IsModelPrecached("models/weapons/melee/w_riotshield.mdl")) PrecacheModel("models/weapons/melee/w_riotshield.mdl"); + if (!IsModelPrecached("models/weapons/melee/v_tonfa.mdl")) PrecacheModel("models/weapons/melee/v_tonfa.mdl"); + if (!IsModelPrecached("models/weapons/melee/w_tonfa.mdl")) PrecacheModel("models/weapons/melee/w_tonfa.mdl"); + + //Precache Misc + if (!GetConVarBool(h_miscEnabled)) return; + if (!IsModelPrecached("models/v_models/v_bile_flask.mdl")) PrecacheModel("models/v_models/v_bile_flask.mdl"); + if (!IsModelPrecached("models/w_models/weapons/w_eq_bile_flask.mdl")) PrecacheModel("models/w_models/weapons/w_eq_bile_flask.mdl"); + if (!IsModelPrecached("models/w_models/weapons/v_cola.mdl")) PrecacheModel("models/w_models/weapons/v_cola.mdl"); + if (!IsModelPrecached("models/w_models/weapons/W_cola.mdl")) PrecacheModel("models/w_models/weapons/W_cola.mdl"); + if (!IsModelPrecached("models/weapons/melee/v_gnome.mdl")) PrecacheModel("models/weapons/melee/v_gnome.mdl"); + if (!IsModelPrecached("models/weapons/melee/w_gnome.mdl")) PrecacheModel("models/weapons/melee/w_gnome.mdl"); + + //Precache Tank + if (!GetConVarBool(h_tankEnabled)) return; + if (!IsModelPrecached("models/infected/hulk.mdl")) PrecacheModel("models/infected/hulk.mdl"); + + //Precache Witch + if (!GetConVarBool(h_witchEnabled)) return; + if (!IsModelPrecached("models/infected/witch.mdl")) PrecacheModel("models/infected/witch.mdl"); + if (!IsModelPrecached("models/infected/witch_bride.mdl")) PrecacheModel("models/infected/witch_bride.mdl"); + + //Precache Infected + if (!GetConVarBool(h_infectedEnabled)) return; + if (!IsModelPrecached("models/infected/boomette.mdl")) PrecacheModel("models/infected/boomette.mdl"); + if (!IsModelPrecached("models/infected/common_male_ceda.mdl")) PrecacheModel("models/infected/common_male_ceda.mdl"); + if (!IsModelPrecached("models/infected/common_male_clown.mdl")) PrecacheModel("models/infected/common_male_clown.mdl"); + if (!IsModelPrecached("models/infected/common_male_fallen_survivor.mdl")) PrecacheModel("models/infected/common_male_fallen_survivor.mdl"); + if (!IsModelPrecached("models/infected/common_male_jimmy.mdl")) PrecacheModel("models/infected/common_male_jimmy.mdl"); + if (!IsModelPrecached("models/infected/common_male_mud.mdl")) PrecacheModel("models/infected/common_male_mud.mdl"); + if (!IsModelPrecached("models/infected/common_male_riot.mdl")) PrecacheModel("models/infected/common_male_riot.mdl"); + if (!IsModelPrecached("models/infected/common_male_roadcrew.mdl")) PrecacheModel("models/infected/common_male_roadcrew.mdl"); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_navigation_fixes.sp b/addons/sourcemod/scripting/l4d2_navigation_fixes.sp new file mode 100644 index 00000000..cdb40b0a --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_navigation_fixes.sp @@ -0,0 +1,183 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#define MAXFIXES 64 +#define CONFIG_NAME "data/l4d2_navigation_fix.cfg" + +Address TheNavAreas; +int TheCount; +bool g_bLateload; +any g_iPatches[MAXFIXES][3]; + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + g_bLateload = late; + return APLRes_Success; +} + +public void OnPluginStart() +{ + HookEvent("round_start_post_nav", eNavigation); + + if (g_bLateload) + LoadConfig(); +} + +public void OnMapStart() +{ + GameData hData = new GameData("l4d2_nav_loot"); + + TheNavAreas = hData.GetAddress("TheNavAreas"); + TheCount = LoadFromAddress(hData.GetAddress("TheCount"), NumberType_Int32); + + delete hData; + + if (TheNavAreas == Address_Null || !TheCount) + SetFailState("[Navigation Fixes] Bad data, please check your gamedata"); +} + +public void eNavigation (Event event, const char[] name, bool dontbroadcast) +{ + CreateTimer(1.0, tStart); +} + +public Action tStart (Handle timer) +{ + LoadConfig(); +} + +void LoadConfig() +{ + char szPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, szPath, sizeof szPath, "%s", CONFIG_NAME); + + KeyValues hKeyValues; + + if ((hKeyValues = ConfigOpen(szPath)) == null) + { + delete hKeyValues; + return; + } + + char szName[36], szTemp[4]; + int index, iBase, iSpawn, iCounter, iHammerID, entity; + bool bPatched; + Address iArea; + + GetCurrentMap(szName, sizeof szName); + + hKeyValues.JumpToKey(szName); + + for (int i = 1; i <= MAXFIXES; i++) + { + IntToString(i, szTemp, sizeof szTemp); + + if (hKeyValues.JumpToKey(szTemp)) + { + index = hKeyValues.GetNum("Area"); + + if (index < 0) + { + LogError("Invalid nagivation index %i", index); + hKeyValues.GoBack(); + continue; + } + + iBase = hKeyValues.GetNum("Base Flags"); + iSpawn = hKeyValues.GetNum("Spawn Flags"); + iHammerID = hKeyValues.GetNum("Wall"); + + for (int l = 1; l <= TheCount; l++) + { + if (l != index) + continue; + + iArea = view_as
(LoadFromAddress(TheNavAreas + view_as
(4 * l), NumberType_Int32)); + + StoreToAddress(iArea + view_as
(84), iBase, NumberType_Int32); + StoreToAddress(iArea + view_as
(127), iSpawn, NumberType_Int32); + + bPatched = true; + break; + } + + if (iHammerID > 0) + { + entity = FindEntity(iHammerID); + + if (entity == -1) + { + LogError("Invalid wall hammerid %i", iHammerID); + continue; + } + + SetEntProp(entity, Prop_Data, "m_iHammerID", i); + HookSingleEntityOutput(entity, "OnBreak", OnOutput, true); + + g_iPatches[i][0] = iArea; + g_iPatches[i][1] = iBase; + g_iPatches[i][2] = iSpawn; + } + + if (!bPatched) + { + LogError("Nagivation area with index %i does not exist (map %s)", index, szName); + hKeyValues.GoBack(); + continue; + } + + iCounter++; + hKeyValues.GoBack(); + } + + bPatched = false; + } + + hKeyValues.Rewind(); + delete hKeyValues; + + if (iCounter) + PrintToServer("[Nav Fixes] Pathing areas has been finished (%i areas patched)", iCounter); +} + +public void OnOutput(const char[] output, int caller, int activator, float delay) +{ + CreateTimer(0.1, tPatch, GetEntProp(caller, Prop_Data, "m_iHammerID")); +} + +public Action tPatch (Handle timer, int index) +{ + StoreToAddress(g_iPatches[index][0] + view_as
(84), g_iPatches[index][1], NumberType_Int32); + StoreToAddress(g_iPatches[index][0] + view_as
(127), g_iPatches[index][2], NumberType_Int32); +} + +int FindEntity (int index) +{ + for (int i = MaxClients; i <= 2048; i++) + if (IsValidEntity(i) && GetEntProp(i, Prop_Data, "m_iHammerID") == index) + return i; + return -1; +} + +KeyValues ConfigOpen(const char[] szPath) +{ + if (!FileExists(szPath)) + { + File hFile = OpenFile(szPath, "w"); + hFile.WriteLine(""); + delete hFile; + } + + KeyValues hFile = new KeyValues("Nav Data"); + + if (!hFile.ImportFromFile(szPath)) + { + delete hFile; + return null; + } + + return hFile; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_pistol_reload_empty_fix.sp b/addons/sourcemod/scripting/l4d2_pistol_reload_empty_fix.sp new file mode 100644 index 00000000..31665811 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_pistol_reload_empty_fix.sp @@ -0,0 +1,82 @@ +#include +#include +#include + +#pragma semicolon 1 + +Handle DoAnimEvent; + +public OnPluginStart() +{ + HookEvent("weapon_reload", reload); + + Handle hGamedata = LoadGameConfigFile("pistol_reload_fix"); + + StartPrepSDKCall(SDKCall_Player); + if(!PrepSDKCall_SetFromConf(hGamedata, SDKConf_Signature, "CTerrorPlayer::DoAnimationEvent")) + SetFailState("unable to find signiture CTerrorPlayer::DoAnimationEvent"); + PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain); + PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain); + DoAnimEvent = EndPrepSDKCall(); + + if(DoAnimEvent == null) + SetFailState("unable to prep CTerrorPlayer::DoAnimationEvent sdkcall"); + + delete hGamedata; +} + +public void reload(Handle event, const char[] name, bool dontBroadcast) +{ + int iClient = GetClientOfUserId(GetEventInt(event, "userid")); + + if(iClient < 1 || !IsPlayerAlive(iClient)) + return; + + int iActiveWeapon = Client_GetActiveWeapon(iClient); + if(iActiveWeapon == INVALID_ENT_REFERENCE) + return; + + static char sWeaponName[32]; + GetClientWeapon(iClient, sWeaponName, sizeof(sWeaponName)); + + if (strcmp(sWeaponName, "weapon_pistol_magnum", false) == 0 ) + { + if (GetEntProp(iActiveWeapon, Prop_Send, "m_iClip1") <= 0) + SDKCall(DoAnimEvent, iClient, 4, 1); + } + else if (strcmp(sWeaponName, "weapon_pistol", false) == 0 ) + { + int pistolclip = GetEntProp(iActiveWeapon, Prop_Send, "m_iClip1"); + if(pistolclip > 1) + return; + + if (GetEntProp(iActiveWeapon, Prop_Send, "m_isDualWielding") > 0) + { + if (pistolclip <= 1) + { + SDKCall(DoAnimEvent, iClient, 4, 1); + } + } + else if (pistolclip == 0) + { + SDKCall(DoAnimEvent, iClient, 4, 1); + } + } +} + +/** + * Gets the current/active weapon of a client + * + * @param client Client Index. + * @return Weapon Index or INVALID_ENT_REFERENCE if the client has no active weapon. + */ +stock Client_GetActiveWeapon(client) +{ + new weapon = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon"); + + if (!IsValidEntity(weapon)) { + return INVALID_ENT_REFERENCE; + } + + return weapon; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_realism_namecheck.sp b/addons/sourcemod/scripting/l4d2_realism_namecheck.sp new file mode 100644 index 00000000..ed2e7a62 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_realism_namecheck.sp @@ -0,0 +1,59 @@ +#include +#pragma newdecls required + +#define PLUGIN_VERSION "1.0.3" + +ConVar DisableDelay, IsAnnoucementOn, glowSurvivors; + +public Plugin myinfo = +{ + name = "[L4D2] Realism Name Check", + author = "V1sual", + description = "Allows admins to turn on names in realism versus/coop realism to catch teamkillers, cheaters and exploit users", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?p=1174387" +}; + +public void OnPluginStart() +{ + char game[12]; + GetGameFolderName(game, sizeof(game)); + if (StrContains(game, "left4dead2") == -1) SetFailState("This plugin will only work on L4D2"); + + RegAdminCmd("sm_checkname", RealismCheck, ADMFLAG_CHAT); + RegAdminCmd("sm_namecheck", RealismCheck, ADMFLAG_CHAT); + RegAdminCmd("sm_names", RealismCheck, ADMFLAG_CHAT); + + glowSurvivors = FindConVar("sv_disable_glow_survivors"); + + DisableDelay = CreateConVar("l4d2_namecheckdisabletime", "15.0", "Delay before realism name check is disabled (in seconds)", FCVAR_NOTIFY); + IsAnnoucementOn = CreateConVar("l4d2_namecheckannounce", "1", "Should we tell players if an admin turns on names?", FCVAR_NOTIFY); + CreateConVar("l4d2_realism_namecheck", PLUGIN_VERSION, "Realism Name Check Version", FCVAR_DONTRECORD|FCVAR_NOTIFY); + + AutoExecConfig(true, "l4d2_realism_namecheck"); +} + +public Action RealismCheck(int client, int args) +{ + glowSurvivors.SetInt(0); + + if (IsAnnoucementOn.BoolValue) + { + PrintToChatAll("\x05(ADMIN)\x01 Enabled player names for all survivors."); + } + + CreateTimer(DisableDelay.FloatValue, TimerDisableDelay); + + return Plugin_Handled; +} + +public Action TimerDisableDelay(Handle timer) +{ + glowSurvivors.SetInt(1); + + if (IsAnnoucementOn.BoolValue) + { + PrintToChatAll("\x05(ADMIN)\x01 Disabled player names for all survivors."); + } +} + diff --git a/addons/sourcemod/scripting/l4d2_riot_penetration.sp b/addons/sourcemod/scripting/l4d2_riot_penetration.sp new file mode 100644 index 00000000..ba1a75ab --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_riot_penetration.sp @@ -0,0 +1,380 @@ +/* +* Riot Uncommon Penetration +* Copyright (C) 2023 Silvers +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + + + +#define PLUGIN_VERSION "1.2" + +/*======================================================================================= + Plugin Info: + +* Name : [L4D2] Riot Uncommon Penetration +* Author : SilverShot +* Descrp : Allows bullets to penetrate Riot uncommon infected. +* Link : https://forums.alliedmods.net/showthread.php?t=341750 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +1.2 (01-Jul-2023) + - Fixed random rare invalid edict error. Thanks to "Sev" for reporting. + +1.1 (10-Feb-2023) + - Updated plugin and config to support Mounted Machine Guns and Mini Guns. Thanks to "Iizuka07" for reporting. + +1.0 (10-Feb-2023) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY +#define CONFIG_DATA "data/l4d2_riot_penetration.cfg" + + +ConVar g_hCvarAllow, g_hCvarMPGameMode, g_hCvarModes, g_hCvarModesOff, g_hCvarModesTog, g_hCvarDamage; +bool g_bCvarAllow; +float g_fCvarDamage; +float g_fDamage[2048]; +StringMap g_hWeapons; + + + +// ==================================================================================================== +// PLUGIN INFO / START / END +// ==================================================================================================== +public Plugin myinfo = +{ + name = "[L4D2] Riot Uncommon Penetration", + author = "SilverShot", + description = "Allows bullets to penetrate Riot uncommon infected.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=341750" +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test != Engine_Left4Dead && test != Engine_Left4Dead2 ) + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + + return APLRes_Success; +} + +public void OnPluginStart() +{ + // ==================== + // CVARS + // ==================== + g_hCvarAllow = CreateConVar( "l4d2_riot_penetration_allow", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS ); + g_hCvarModes = CreateConVar( "l4d2_riot_penetration_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); + g_hCvarModesOff = CreateConVar( "l4d2_riot_penetration_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); + g_hCvarModesTog = CreateConVar( "l4d2_riot_penetration_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); + g_hCvarDamage = CreateConVar( "l4d2_riot_penetration_damage", "1.0", "Percentage of invulnerable damage received to apply on Riot Uncommon common (1.0 = 100%), or scales data config value.", CVAR_FLAGS ); + CreateConVar( "l4d2_riot_penetration_version", PLUGIN_VERSION, "Riot Uncommon Penetration plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + AutoExecConfig(true, "l4d2_riot_penetration"); + + g_hCvarMPGameMode = FindConVar("mp_gamemode"); + g_hCvarMPGameMode.AddChangeHook(ConVarChanged_Allow); + g_hCvarModes.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesOff.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesTog.AddChangeHook(ConVarChanged_Allow); + g_hCvarAllow.AddChangeHook(ConVarChanged_Allow); + g_hCvarDamage.AddChangeHook(ConVarChanged_Cvars); +} + +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +void ConVarChanged_Allow(Handle convar, const char[] oldValue, const char[] newValue) +{ + IsAllowed(); +} + +void ConVarChanged_Cvars(Handle convar, const char[] oldValue, const char[] newValue) +{ + GetCvars(); +} + +void GetCvars() +{ + g_fCvarDamage = g_hCvarDamage.FloatValue; +} + +void IsAllowed() +{ + bool bCvarAllow = g_hCvarAllow.BoolValue; + bool bAllowMode = IsAllowedGameMode(); + GetCvars(); + + if( g_bCvarAllow == false && bCvarAllow == true && bAllowMode == true ) + { + g_bCvarAllow = true; + + int entity = -1; + while( (entity = FindEntityByClassname(entity, "infected")) != INVALID_ENT_REFERENCE ) + { + if( IsValidCommon(entity) ) + { + SDKHook(entity, SDKHook_OnTakeDamage, OnTakeDamage); + SDKHook(entity, SDKHook_OnTakeDamageAlive, OnTakeAlive); + SDKHook(entity, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + } + } + + else if( g_bCvarAllow == true && (bCvarAllow == false || bAllowMode == false) ) + { + g_bCvarAllow = false; + + int entity = -1; + while( (entity = FindEntityByClassname(entity, "infected")) != INVALID_ENT_REFERENCE ) + { + if( IsValidCommon(entity) ) + { + SDKUnhook(entity, SDKHook_OnTakeDamage, OnTakeDamage); + SDKUnhook(entity, SDKHook_OnTakeDamageAlive, OnTakeAlive); + SDKUnhook(entity, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + } + } +} + +int g_iCurrentMode; +bool IsAllowedGameMode() +{ + if( g_hCvarMPGameMode == null ) + return false; + + int iCvarModesTog = g_hCvarModesTog.IntValue; + + g_iCurrentMode = 0; + + int entity = CreateEntityByName("info_gamemode"); + if( IsValidEntity(entity) ) + { + DispatchSpawn(entity); + HookSingleEntityOutput(entity, "OnCoop", OnGamemode, true); + HookSingleEntityOutput(entity, "OnSurvival", OnGamemode, true); + HookSingleEntityOutput(entity, "OnVersus", OnGamemode, true); + HookSingleEntityOutput(entity, "OnScavenge", OnGamemode, true); + ActivateEntity(entity); + AcceptEntityInput(entity, "PostSpawnActivate"); + if( IsValidEntity(entity) ) // Because sometimes "PostSpawnActivate" seems to kill the ent. + RemoveEdict(entity); // Because multiple plugins creating at once, avoid too many duplicate ents in the same frame + } + + if( iCvarModesTog != 0 ) + { + if( g_iCurrentMode == 0 ) + return false; + + if( !(iCvarModesTog & g_iCurrentMode) ) + return false; + } + + char sGameModes[64], sGameMode[64]; + g_hCvarMPGameMode.GetString(sGameMode, sizeof(sGameMode)); + Format(sGameMode, sizeof(sGameMode), ",%s,", sGameMode); + + g_hCvarModes.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) == -1 ) + return false; + } + + g_hCvarModesOff.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) != -1 ) + return false; + } + + return true; +} + +void OnGamemode(const char[] output, int caller, int activator, float delay) +{ + if( strcmp(output, "OnCoop") == 0 ) + g_iCurrentMode = 1; + else if( strcmp(output, "OnSurvival") == 0 ) + g_iCurrentMode = 2; + else if( strcmp(output, "OnVersus") == 0 ) + g_iCurrentMode = 4; + else if( strcmp(output, "OnScavenge") == 0 ) + g_iCurrentMode = 8; +} + + + +// ==================================================================================================== +// CONFIG +// ==================================================================================================== +public void OnMapStart() +{ + LoadConfig(); +} + +void LoadConfig() +{ + char sPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sPath, sizeof(sPath), CONFIG_DATA); + if( FileExists(sPath) == false ) SetFailState("\n==========\nMissing required file: \"%s\".\nRead installation instructions again.\n==========", sPath); + + KeyValues hFile = new KeyValues("weapons"); + if( !hFile.ImportFromFile(sPath) ) + { + SetFailState("Error loading file: \"%s\". Try replacing the file with the original.", sPath); + } + + // ==================== + // FILL ARRAY + // ==================== + delete g_hWeapons; + g_hWeapons = new StringMap(); + + g_hWeapons.SetValue("weapon_melee", 3.14); + + char sClass[64]; + hFile.GotoFirstSubKey(); + do + { + hFile.GetSectionName(sClass, sizeof(sClass)); + g_hWeapons.SetValue(sClass, hFile.GetFloat("damage")); + } while (hFile.GotoNextKey()); + + delete hFile; +} + + + +// ==================================================================================================== +// EVENTS +// ==================================================================================================== +public void OnEntityCreated(int entity, const char[] classname) +{ + if( g_bCvarAllow && strcmp(classname, "infected") == 0 ) + { + SDKHook(entity, SDKHook_SpawnPost, OnSpawn); + } +} + +void OnSpawn(int entity) +{ + SDKUnhook(entity, SDKHook_SpawnPost, OnSpawn); + + if( IsValidCommon(entity) ) + { + SDKHook(entity, SDKHook_OnTakeDamage, OnTakeDamage); + SDKHook(entity, SDKHook_OnTakeDamageAlive, OnTakeAlive); + SDKHook(entity, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } +} + +bool IsValidCommon(int entity) +{ + static char sTemp[35]; + GetEntPropString(entity, Prop_Data, "m_ModelName", sTemp, sizeof(sTemp)); + + if( strncmp(sTemp, "models/infected/common_male_riot", 32) == 0 ) + { + return true; + } + + return false; +} + +// Called 1st +Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3]) +{ + // PrintToChatAll("A %d %d %d %f %d %d", victim, attacker, inflictor, damage, damagetype, weapon); + + g_fDamage[victim] = damage; + return Plugin_Continue; +} + +// Called 2nd, if damage is applied, otherwise it's skipped and they are invulnerable to damage +Action OnTakeAlive(int victim, int &attacker, int &inflictor, float &damage, int &damagetype) +{ + // PrintToChatAll("B %d %d %d %f %d", victim, attacker, inflictor, damage, damagetype); + + g_fDamage[victim] = 0.0; + return Plugin_Continue; +} + +// Called 3rd +void OnTakeDamagePost(int victim, int attacker, int inflictor, float damage, int damagetype, int weapon, const float damageForce[3], const float damagePosition[3]) +{ + // PrintToChatAll("C %d %d %d %f %d %d", victim, attacker, inflictor, damage, damagetype, weapon); + + if( g_fDamage[victim] ) + { + damage = g_fDamage[victim]; + + if( weapon == -1 && inflictor > MaxClients ) + weapon = inflictor; + + // Get weapon + if( weapon > 0 && IsValidEdict(weapon) ) + { + static char sTemp[64]; + GetEdictClassname(weapon, sTemp, sizeof(sTemp)); + float dmg; + + // Get damage for weapon + if( g_hWeapons.GetValue(sTemp, dmg) ) + { + // Get melee weapon damage + if( dmg == 3.14 ) + { + GetEntPropString(weapon, Prop_Data, "m_strMapSetScriptName", sTemp, sizeof(sTemp)); + if( g_hWeapons.GetValue(sTemp, dmg) ) + { + damage = dmg; + } + } + else + { + damage = dmg; + } + } + } + + damage *= g_fCvarDamage; + g_fDamage[victim] = 0.0; + + if( inflictor == -1 ) inflictor = 0; + + SDKHooks_TakeDamage(victim, inflictor, attacker, damage, damagetype|DMG_GENERIC); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_sacrifice_fix.sp b/addons/sourcemod/scripting/l4d2_sacrifice_fix.sp new file mode 100644 index 00000000..7325fafe --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_sacrifice_fix.sp @@ -0,0 +1,72 @@ +#define PLUGIN_VERSION "1.0" + +#include +#pragma semicolon 1 + +/*===================== + * Tag * +=======================*/ +#define FS "[Sacrifice Fix]" + +public Plugin:myinfo = +{ + name = "[L4D2] Sacrifice Bug Fix", + author = "raziEiL [disawar1]", + description = "Sacrifice Bug Fix for survival mode", + version = PLUGIN_VERSION, + url = "www.27days-support.at.ua" +} + +/*===================== + * PLUGIN START! * +=======================*/ +public OnPluginStart() +{ + decl String:game[32]; + GetGameFolderName(game, sizeof(game)); + if (!StrEqual(game, "left4dead2", false)) + SetFailState("Plugin only supports Left4Dead 2."); + + CreateConVar("sacrifice_fix_version", PLUGIN_VERSION, "Sacrifice Bug Fix plugin version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); + + //RegConsoleCmd("fx", CmdFix); +} + +public OnMapStart() +{ + ValidMode(); +} + +public Action:CmdFix(client, args) +{ + ValidMode(); +} + +public ValidMode() +{ + decl String:mode[32]; + new Handle:g_Mode=FindConVar("mp_gamemode"); + GetConVarString(g_Mode, mode, sizeof(mode)); + + if (strcmp(mode, "survival") == 0){ + LogMessage("%s Valid mode \"%s\"", FS, mode); + ValidMap(); + } + else LogMessage("%s Invalid mode \"%s\"", FS, mode); +} + +public ValidMap() +{ + decl String:map[64]; + GetCurrentMap(map, sizeof(map)); + + if (strcmp(map, "c7m1_docks") == 0 || + strcmp(map, "c7m3_port") == 0) + { + LogMessage("%s Valid map \"%s\"", FS, map); + new Handle:g_Rest=FindConVar("mp_restartgame"); + SetConVarInt(g_Rest, 1); + LogMessage("%s Bug is fixed!", FS); + } + else LogMessage("%s Invalid map \"%s\"", FS, map); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_scav_fix_nm5.sp b/addons/sourcemod/scripting/l4d2_scav_fix_nm5.sp new file mode 100644 index 00000000..b59c3348 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_scav_fix_nm5.sp @@ -0,0 +1,78 @@ +#pragma semicolon 1 + +#include +#include + +#define PLUGIN_VERSION "1.0" + +//Timer +new Handle:TimerH = INVALID_HANDLE; +new Handle:cvarGameMode = INVALID_HANDLE; + +public Plugin:myinfo = +{ + name = "L4D2 No Mercy Rooftop Scavenge Fix", + author = "Ratchet", + description = "Fixes No Mercy 5 scavenge.", + version = PLUGIN_VERSION, + url = "" +} + +public OnMapStart() +{ + decl String:mapname[128]; + GetCurrentMap(mapname, sizeof(mapname)); + + if( TimerH != INVALID_HANDLE ) + KillTimer(TimerH); + + TimerH = INVALID_HANDLE; + + if (strcmp(mapname, "c8m5_rooftop") != 0) + return; + + cvarGameMode = FindConVar("mp_gamemode"); + + decl String:sGameMode[32]; + GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode)); + if (strcmp(sGameMode, "scavenge") != 0) + return; + + TimerH = CreateTimer(15.0, ScavTimerH, _, TIMER_REPEAT); +} + +public Action:ScavTimerH(Handle:Timer, any:Client) +{ + FindMisplacedCans(); +} + +stock FindMisplacedCans() +{ + new ent = -1; + + while ((ent = FindEntityByClassname(ent, "weapon_gascan")) != -1) + { + if (!IsValidEntity(ent)) + continue; + + new Float:position[3]; + GetEntPropVector(ent, Prop_Send, "m_vecOrigin", position); + + if( position[2] <= 500.0 ) + if( position[0] > 0.0 && position[1] > 0.0 && position[2] ) //HACK HACK! Although it's impossible for can to go to 0 0 0 in NM5 + Ignite( ent ); + } +} + + +stock Ignite(entity) +{ + AcceptEntityInput(entity, "ignite"); + PrintToChatAll( "Gascan out of bounds! Ignited!" ); +} + +stock FindEntityByClassname2(startEnt, const String:classname[]) +{ + while (startEnt > -1 && !IsValidEntity(startEnt)) startEnt--; + return FindEntityByClassname(startEnt, classname); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_server_ragdoll.sp b/addons/sourcemod/scripting/l4d2_server_ragdoll.sp new file mode 100644 index 00000000..668b4d4e --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_server_ragdoll.sp @@ -0,0 +1,140 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include + +#define MAX 32 + +public Plugin myinfo = +{ + name = "[L4D2] Server Side Ragdolls", + author = "BHaType", + description = "Creates server side regdoll", + version = "0.2", + url = "" +}; + +Handle g_hRagdoll; +ConVar sm_side_dolls_invisible_body, sm_side_dolls_remove; + +bool g_bInvisible, g_bRemove; +int g_iRagdolls[MAX]; +MemoryBlock memory; + +public void OnPluginStart() +{ + memory = new MemoryBlock(0x4C); + + sm_side_dolls_invisible_body = CreateConVar("sm_side_dolls_invisible_body" , "0"); + sm_side_dolls_remove = CreateConVar("sm_side_dolls_remove" , "0"); + + sm_side_dolls_invisible_body.AddChangeHook(OnConVarChanged); + sm_side_dolls_remove.AddChangeHook(OnConVarChanged); + + g_bInvisible = sm_side_dolls_invisible_body.BoolValue; + g_bRemove = sm_side_dolls_remove.BoolValue; + + AutoExecConfig(true, "server_side_ragdolls"); + + Handle hData = LoadGameConfigFile("l4d2_side_dolls"); + + StartPrepSDKCall(SDKCall_Static); + PrepSDKCall_SetFromConf(hData, SDKConf_Signature, "CreateServerRagdoll"); + PrepSDKCall_AddParameter(SDKType_CBasePlayer, SDKPass_Pointer); + PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain); + PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain); + PrepSDKCall_AddParameter(SDKType_PlainOldData, SDKPass_Plain); + PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); + PrepSDKCall_SetReturnInfo(SDKType_CBaseEntity, SDKPass_Pointer); + g_hRagdoll = EndPrepSDKCall(); + + delete hData; + + HookEvent("player_death", player_death, EventHookMode_Pre); + + HookEvent("defibrillator_used", player_respawn, EventHookMode_Pre); + HookEvent("survivor_rescued", player_respawn, EventHookMode_Pre); +} + +public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) +{ + g_bInvisible = sm_side_dolls_invisible_body.BoolValue; + g_bRemove = sm_side_dolls_remove.BoolValue; +} + +public void OnEntityCreated (int entity, const char[] name) +{ + if (g_bInvisible && strcmp(name, "survivor_death_model") == 0) + SetEntityRenderMode(entity, RENDER_NONE); +} + +public void player_respawn(Event event, const char[] name, bool dontbroadcast) +{ + if (!g_bRemove) + return; + + int client = GetClientOfUserId(event.GetInt("subject")); + + if (!client) + client = GetClientOfUserId(event.GetInt("victim")); + + if (!client || GetClientTeam(client) != 2) + return; + + int index = GetIndex(client); + + if (index == -1) + return; + + AcceptEntityInput (index, "kill"); +} + +public void player_death(Event event, const char[] name, bool dontbroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + + if (!client || GetClientTeam(client) != 2) + return; + + int entity = SDKCall(g_hRagdoll, client, GetEntProp(client, Prop_Send, "m_nForceBone"), memory.Address, 3, true); + + if (g_bRemove) + { + SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", client); + g_iRagdolls[GetIndex()] = EntIndexToEntRef(entity); + } +} + +int GetIndex (int client = -1) +{ + int entity; + + if (client != -1) + { + for (int i; i < MAX; i++) + { + if ((entity = EntRefToEntIndex(g_iRagdolls[i])) <= 0 || !IsValidEntity(entity)) + continue; + + if (client == GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity")) + { + g_iRagdolls[i] = 0; + return entity; + } + } + + return -1; + } + + for (int i; i < MAX; i++) + { + if ((entity = EntRefToEntIndex(g_iRagdolls[i])) > 0 && IsValidEntity(entity)) + continue; + + return i; + } + + return -1; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_sgfix.sp b/addons/sourcemod/scripting/l4d2_sgfix.sp new file mode 100644 index 00000000..2e96006e --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_sgfix.sp @@ -0,0 +1,43 @@ +#pragma semicolon 1 +#include +#include + +#define PLUGIN_VERSION "1.0" + +public Plugin:myinfo = +{ + name = "[L4D2] SG552 Reload Fix", + author = "McFlurry", + description = "Fixes the reload time of SG552", + version = PLUGIN_VERSION, + url = "N/A" +} + +public OnPluginStart() +{ + decl String:game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false)) + { + SetFailState("Plugin supports Left 4 Dead 2 only."); + } + CreateConVar("l4d2_sg552fix_version", PLUGIN_VERSION, "Installed version of SG552 Reload Fix on this server", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED); + HookEvent("weapon_reload", Event_ReloadStart); +} + +public Action:Event_ReloadStart(Handle:event, const String:name[], bool:dontBroadcast) +{ + new userid = GetEventInt(event, "userid"); + new client = GetClientOfUserId(userid); + new weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); + new String:classname[256]; + GetEntityClassname(weapon, classname, sizeof(classname)); + if(StrContains(classname, "sg552", false) > -1) + { + new Float:nextattack; + nextattack = GetEntPropFloat(client, Prop_Send, "m_flNextAttack"); + nextattack -= 0.6; + SetEntPropFloat(client, Prop_Send, "m_flNextAttack", nextattack); + SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", nextattack); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_showhp.sp b/addons/sourcemod/scripting/l4d2_showhp.sp new file mode 100644 index 00000000..8565bb86 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_showhp.sp @@ -0,0 +1,130 @@ +#include +#include + +int SurvivorVictim[MAXPLAYERS+1]; +int InfectedAttacker[MAXPLAYERS+1]; + + +ConVar pain_pills_decay_rate; + +public Plugin myinfo = +{ + name = "[L4D2] Show HP", + author = "XeroX", + description = "Shows HP of the survivor and infected when the infected controls a survivor", + version = "1.0.0", + url = "https://forums.alliedmods.net/showthread.php?p=2773708" +}; + +public void OnPluginStart() +{ + HookEvent("choke_start", Event_PlayerControlledByInfected); + HookEvent("lunge_pounce", Event_PlayerControlledByInfected); + HookEvent("jockey_ride", Event_PlayerControlledByInfected); + HookEvent("charger_pummel_start", Event_PlayerControlledByInfected); + + HookEvent("jockey_ride_end", Event_PlayerControlledByInfectedEnd); + HookEvent("choke_end", Event_PlayerControlledByInfectedEnd); + HookEvent("charger_pummel_end", Event_PlayerControlledByInfectedEnd); + HookEvent("tongue_release", Event_PlayerControlledByInfectedEnd); + HookEvent("pounce_stopped", Event_PlayerControlledByInfectedEnd); + + for(int i = 1; i<= MaxClients; i++) + { + if(!IsClientInGame(i)) continue; + OnClientPutInServer(i); + } + + CreateTimer(1.0, t_GlobalTimer, .flags=TIMER_REPEAT); + + pain_pills_decay_rate = FindConVar("pain_pills_decay_rate"); +} + +public void Event_PlayerControlledByInfected(Event event, const char[] szName, bool dontBroadcast) +{ + + int victim = GetClientOfUserId(event.GetInt("victim")); + int attacker = GetClientOfUserId(event.GetInt("userid")); + + SurvivorVictim[attacker] = GetClientSerial(victim); + InfectedAttacker[victim] = GetClientSerial(attacker); +} + +public void Event_PlayerControlledByInfectedEnd(Event event, const char[] szName, bool dontBroadcast) +{ + + int victim = GetClientOfUserId(event.GetInt("victim")); + int attacker = GetClientOfUserId(event.GetInt("userid")); + + SurvivorVictim[attacker] = INVALID_ENT_REFERENCE; + InfectedAttacker[victim] = INVALID_ENT_REFERENCE; +} + +public void OnClientPutInServer(int client) +{ + SurvivorVictim[client] = INVALID_ENT_REFERENCE; + InfectedAttacker[client] = INVALID_ENT_REFERENCE; +} + +public Action t_GlobalTimer(Handle timer) +{ + int client = INVALID_ENT_REFERENCE; + for(int i = 1; i <= MaxClients; i++) + { + if(!IsClientInGame(i)) continue; + if(IsFakeClient(i)) continue; // don't send Hint messages to bots. + client = GetClientFromSerial(SurvivorVictim[i]); + if(client > 0 && IsClientInGame(client)) + { + PrintHintText(i, "Survivor: %N - Health: %d\nInfected: %N - Health: %d", client, GetClientRealHealth(client), i, GetClientHealth(i)); + } + client = GetClientFromSerial(InfectedAttacker[i]); + if(client > 0 && IsClientInGame(client)) + { + PrintHintText(i, "Infected: %N - Health: %d\nSurvivor: %N - Health: %d", client, GetClientHealth(client), i, GetClientRealHealth(i)); + } + } +} + +// Based on the code here: https://forums.alliedmods.net/showthread.php?t=144780 +int GetClientRealHealth(int client) +{ + //First, we get the amount of temporal health the client has + float buffer = GetEntPropFloat(client, Prop_Send, "m_healthBuffer"); + + //We declare the permanent and temporal health variables + float TempHealth; + int PermHealth = GetClientHealth(client); + + //In case the buffer is 0 or less, we set the temporal health as 0, because the client has not used any pills or adrenaline yet + if(buffer <= 0.0) + { + TempHealth = 0.0; + } + + //In case it is higher than 0, we proceed to calculate the temporl health + else + { + //This is the difference between the time we used the temporal item, and the current time + float difference = GetGameTime() - GetEntPropFloat(client, Prop_Send, "m_healthBufferTime"); + + //We get the decay rate from this convar (Note: Adrenaline uses this value) + float decay = pain_pills_decay_rate.FloatValue; + + //This is a constant we create to determine the amount of health. This is the amount of time it has to pass + //before 1 Temporal HP is consumed. + float constant = 1.0/decay; + + //Then we do the calcs + TempHealth = buffer - (difference / constant); + } + + //If the temporal health resulted less than 0, then it is just 0. + if(TempHealth < 0.0) + { + TempHealth = 0.0; + } + + //Return the value + return RoundToFloor(PermHealth + TempHealth); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_smg_reload_tweak.sp b/addons/sourcemod/scripting/l4d2_smg_reload_tweak.sp index 578500d6..1a8e219f 100644 --- a/addons/sourcemod/scripting/l4d2_smg_reload_tweak.sp +++ b/addons/sourcemod/scripting/l4d2_smg_reload_tweak.sp @@ -24,8 +24,8 @@ public Plugin myinfo = public void OnPluginStart() { - hCvarReloadSpeedUzi = CreateConVar("l4d2_reload_speed_uzi", "0", "Reload duration of Uzi(normal SMG)", FCVAR_CHEAT|FCVAR_NOTIFY, true, 0.0, true, 10.0); - hCvarReloadSpeedSilencedSmg = CreateConVar("l4d2_reload_speed_silenced_smg", "0", "Reload duration of Silenced SMG", FCVAR_CHEAT|FCVAR_NOTIFY, true, 0.0, true, 10.0); + hCvarReloadSpeedUzi = CreateConVar("l4d2_reload_speed_uzi", "2.2", "Reload duration of Uzi(normal SMG)", FCVAR_CHEAT|FCVAR_NOTIFY, true, 0.0, true, 10.0); + hCvarReloadSpeedSilencedSmg = CreateConVar("l4d2_reload_speed_silenced_smg", "2.2", "Reload duration of Silenced SMG", FCVAR_CHEAT|FCVAR_NOTIFY, true, 0.0, true, 10.0); HookEvent("weapon_reload", OnWeaponReload, EventHookMode_Post); } diff --git a/addons/sourcemod/scripting/l4d2_spawnpos_fix.sp b/addons/sourcemod/scripting/l4d2_spawnpos_fix.sp new file mode 100644 index 00000000..8c06ca07 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_spawnpos_fix.sp @@ -0,0 +1,469 @@ +#pragma semicolon 1 + +#define PLUGIN_NAME "Survivor Spawn Position Fix (Gabu's Version)" +#define PLUGIN_AUTHOR "gabuch2" +#define PLUGIN_DESCRIPTION "Fixes survivor spawns on some maps where other survivors might spawn in a non-intended area." +#define PLUGIN_VERSION "2.1" +#define PLUGIN_URL "https://github.com/gabuch2/l4d2_spawnpos_fix" + +#define DEBUG false + +// BASE CHARACTER IDs +#define NICK 0 +#define ROCHELLE 1 +#define COACH 2 +#define ELLIS 3 + +// L4D1 CHARACTER IDs +#define BILL 4 +#define ZOEY 5 +#define FRANCIS 6 +#define LOUIS 7 + +#include +#include +#include + +#pragma newdecls required + +ConVar g_cvarEnabled; +int g_iSurvivorCharacter[MAXPLAYERS+1]; +bool g_bIsL4D1 = false; +bool g_bShouldIgnoreTP[MAXPLAYERS+1] = { false, ... }; +bool g_bFinaleWon = false; +bool g_bShouldLockPlayers = false; +float g_fDesiredPos[3] = {0.0, 0.0, 0.0}; + +public Plugin myinfo = +{ + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESCRIPTION, + version = PLUGIN_VERSION, + url = PLUGIN_URL +} + +public void OnPluginStart() +{ + g_cvarEnabled = CreateConVar("sm_l4d2_spawnpos_enabled", "1", "Enables Survivor Spawn Position Fix (Gabu's Version)", FCVAR_DONTRECORD | FCVAR_NOTIFY); + CreateConVar("sm_l4d2_spawnpos_version", PLUGIN_VERSION, "Version of Survivor Spawn Position Fix (Gabu's Version)", FCVAR_DONTRECORD | FCVAR_NOTIFY); + + if(GetConVarBool(g_cvarEnabled)) + { + HookEvent("round_start", Event_RoundStart, EventHookMode_Post); + HookEvent("round_end", Event_RoundEnd, EventHookMode_Pre); + HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post); + HookEvent("player_death", Event_PlayerIgnoreTP, EventHookMode_Post); + HookEvent("finale_win", Event_RoundEnd, EventHookMode_Pre); + + HookEvent("survivor_call_for_help", Event_PlayerIgnoreTP, EventHookMode_Post); + + RegConsoleCmd("sm_resetpos", Cmd_ResetPos, "Resets your position to a desired spawnpoint, if available."); + } +} + +public void Event_FinaleWin(Handle event, const char[] name, bool dontBroadcast) +{ + g_bFinaleWon = true; +} + +public Action Cmd_ResetPos(int iClient, int iArgs) +{ + if((g_fDesiredPos[0] != 0.0 || g_fDesiredPos[1] != 0.0 || g_fDesiredPos[2] != 0.0)) + { + //Don't know if this will work on non-coop and non-versus gamemodes + //please test and let me know + if(L4D_HasAnySurvivorLeftSafeArea()) + { + PrintToChat(iClient, "* Round has started, you can't use this command now."); + return Plugin_Continue; + } + + TeleportEntity(iClient, g_fDesiredPos, NULL_VECTOR, {1.0, 1.0, 0.0}); + return Plugin_Continue; + } + else + { + PrintToChat(iClient, "* You can't use this command at this moment."); + return Plugin_Continue; + } +} + +public void L4D_OnForceSurvivorPositions_Pre() +{ + #if DEBUG + PrintToServer("ONFORCE_PRE CALLED"); + #endif + turn_survivors_into_original(); + LockAllPlayerMovement(); + g_bShouldLockPlayers = true; +} + +public void L4D_OnForceSurvivorPositions() +{ + #if DEBUG + PrintToServer("ONFORCE_POST CALLED"); + #endif + restore_survivors(); +} + +public void L4D_OnReleaseSurvivorPositions() +{ + #if DEBUG + PrintToServer("ONRELEASE CALLED"); + #endif + g_bShouldLockPlayers = false; + AllowAllPlayerMovement(); + + //this fixes campaigns that change the original survivor position after the initial cutscene + FixSpawns(); +} + +public void OnMapStart() +{ + g_bIsL4D1 = L4D2_GetSurvivorSetMap() == 2 ? false : true; + #if DEBUG + PrintToServer("OnMapStart CALLED"); + #endif + g_fDesiredPos = {0.0, 0.0, 0.0}; + CreateTimer(10.0, Timer_MapStart); + g_bShouldLockPlayers = false; + g_bFinaleWon = false; +} + +public Action Timer_MapStart(Handle timer) +{ + //sometimes round_start doesn't trigger for the first time + #if DEBUG + PrintToServer("OnMapStart TIMER CALLED"); + #endif + FixSpawns(); + EnsureSpawns(); + + return Plugin_Continue; +} + +public void Event_PlayerIgnoreTP(Handle event, const char[] name, bool dontBroadcast) +{ + int iClient = GetClientOfUserId(GetEventInt(event, "userid")); + g_bShouldIgnoreTP[iClient] = true; +} + +public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast) +{ + EnsureSpawns(); + g_bFinaleWon = false; +} + +public Action Timer_EnsureSpawns(Handle timer) +{ + EnsureSpawns(); + + return Plugin_Continue; +} + +public void EnsureSpawns() +{ + if(!g_bFinaleWon) + { + if(g_fDesiredPos[0] != 0.0 || g_fDesiredPos[1] != 0.0 || g_fDesiredPos[2] != 0.0) + { + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + //TeleportEntity(iClient, g_fDesiredPos, NULL_VECTOR, {1.0, 1.0, 0.0}); + AllowSinglePlayerMovement(iClient); + TeleportEntity(iClient, g_fDesiredPos, NULL_VECTOR, {1.0, 1.0, 0.0}); + if(g_bShouldLockPlayers) + LockSinglePlayerMovement(iClient); + //char sTimer[5]; + //Format(sTimer, sizeof(sTimer), "0.%d", iClient); + //CreateTimer(StringToFloat(sTimer), Timer_TeleportSinglePlayer, iClient); + } + } + } + } +} + +public Action Timer_TeleportSinglePlayer(Handle timer, int iClient) +{ + //testing revealed that the game will refuse to teleport players if another player + //is in exactly the same position but with a small delay between teleports and velocity + //we can work around this + + TeleportEntity(iClient, g_fDesiredPos, NULL_VECTOR, {1.0, 1.0, 0.0}); + if(g_bShouldLockPlayers) + LockSinglePlayerMovement(iClient); + return Plugin_Continue; +} + +public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + g_bShouldIgnoreTP[iClient] = false; + + //g_fDesiredPos = {0.0, 0.0, 0.0}; +} + +public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) +{ + int iClient = GetClientOfUserId(GetEventInt(event, "userid")); + //SendProxy_HookPropChangeSafe(const int iEntity, const char[] cPropName, const SendPropType stType, const PropChangedCallback pCallback); + if(GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + if((g_fDesiredPos[0] != 0.0 || g_fDesiredPos[1] != 0.0 || g_fDesiredPos[2] != 0.0) && !g_bShouldIgnoreTP[iClient] && !L4D_HasAnySurvivorLeftSafeArea()) + { + //this is only possible on spawns after round_start, on round start we need to TP everyone again + #if DEBUG + PrintToServer("Debug: A player spawned! Conditions met so we're TPing him"); + #endif + AllowSinglePlayerMovement(iClient); + TeleportEntity(iClient, g_fDesiredPos, NULL_VECTOR, {1.0, 1.0, 0.0}); + if(g_bShouldLockPlayers) + LockSinglePlayerMovement(iClient); + //CreateTimer(0.1, Timer_TeleportSinglePlayer, iClient); + } + } +} + +void FixSpawns() +{ + #if DEBUG + PrintToServer("Debug: Calling FixSpawns()"); + #endif + if(GetConVarBool(g_cvarEnabled)) + { + // Determine if the spawns are standarized + // This is quite complex by the way because we need to check both the gamemode + // and their proper spawns and all the possible ways a survivor can spawn + ConVar cvarGameMode = FindConVar("mp_gamemode"); + char sGameMode[32]; + GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode)); + + bool bFoundNamedSpawnPoint = false; + + if(L4D_IsFirstMapInScenario()) + { + #if DEBUG + PrintToServer("Debug: Is the first map in the scenario"); + #endif + //first map in scenario + int iEnt = -1; + while ((iEnt = FindEntityByClassname(iEnt, "info_survivor_position")) != -1) + { + #if DEBUG + PrintToServer("Debug: %d spawnpoint", iEnt); + #endif + char sSpawnGameMode[32], sSurvivorName[32]; + GetEntPropString(iEnt, Prop_Data, "m_iszGameMode", sSpawnGameMode, sizeof(sSpawnGameMode)); + GetEntPropString(iEnt, Prop_Data, "m_iszSurvivorName", sSurvivorName, sizeof(sSurvivorName)); + #if DEBUG + PrintToServer("Debug: %d spawnpoint gamemode: %s", iEnt, sSpawnGameMode); + PrintToServer("Debug: %d spawnpoint survivor: %s", iEnt, sSurvivorName); + #endif + if(((StrEqual(sGameMode, "coop") && (strlen(sSpawnGameMode) == 0 || StrContains(sSpawnGameMode, sGameMode) >= 0)) || StrContains(sSpawnGameMode, sGameMode) >= 0)) + { + if(StrEqual(sSurvivorName, g_bIsL4D1 ? "Bill" : "Nick", false) || + StrEqual(sSurvivorName, g_bIsL4D1 ? "Louis" : "Coach", false) || + StrEqual(sSurvivorName, g_bIsL4D1 ? "Francis" : "Ellis", false) || + StrEqual(sSurvivorName, g_bIsL4D1 ? "Zoey" : "Rochelle", false)) + { + bFoundNamedSpawnPoint = true; + GetEntPropVector(iEnt, Prop_Send, "m_vecOrigin", g_fDesiredPos); + } + } + } + + #if DEBUG + PrintToServer("Debug: Checking bFoundNamedSpawnPoint"); + #endif + if(bFoundNamedSpawnPoint) + { + //we found named spawnpoint + //now we need to create the new logic + + //cleanup + iEnt = -1; + while ((iEnt = FindEntityByClassname(iEnt, "info_survivor_position")) != -1) + { + char sSpawnGameMode[32], sSurvivorName[32]; + GetEntPropString(iEnt, Prop_Data, "m_iszGameMode", sSpawnGameMode, sizeof(sSpawnGameMode)); + GetEntPropString(iEnt, Prop_Data, "m_iszSurvivorName", sSurvivorName, sizeof(sSurvivorName)); + if((StrEqual(sGameMode, "coop") && ((strlen(sSpawnGameMode) > 0 && StrContains(sSpawnGameMode, sGameMode) == -1) ||(strlen(sSpawnGameMode) == 0 && strlen(sSurvivorName) == 0))) || (!StrEqual(sGameMode, "coop") && StrContains(sSpawnGameMode, sGameMode) == -1)) + { + #if DEBUG + PrintToServer("Debug: Removing info_survivor_position %d", iEnt); + #endif + RemoveEntity(iEnt); + } + } + + iEnt = -1; + while ((iEnt = FindEntityByClassname(iEnt, "info_player_start")) != -1) + { + #if DEBUG + PrintToServer("Debug: Removing info_player_start %d", iEnt); + #endif + RemoveEntity(iEnt); + } + } + else + { + // We didn't find a named spawn point + // We need to try with Ordered spawn points now + iEnt = -1; + bool bFoundOrderedSpawnPoint = false; + while ((iEnt = FindEntityByClassname(iEnt, "info_survivor_position")) != -1) + { + if(GetEntProp(iEnt, Prop_Data, "m_order") > 0) + { + GetEntPropVector(iEnt, Prop_Send, "m_vecOrigin", g_fDesiredPos); + break; + } + } + + if(bFoundOrderedSpawnPoint) + { + //cleanup + iEnt = -1; + while ((iEnt = FindEntityByClassname(iEnt, "info_survivor_position")) != -1) + { + if(GetEntProp(iEnt, Prop_Data, "m_order") == 0) + RemoveEntity(iEnt); + } + + iEnt = -1; + while ((iEnt = FindEntityByClassname(iEnt, "info_player_start")) != -1) + RemoveEntity(iEnt); + } + else + { + // We didn't find an Ordered spawn point + // We need to try with info_player_spawn points now + while ((iEnt = FindEntityByClassname(iEnt, "info_player_spawn")) != -1) + { + GetEntPropVector(iEnt, Prop_Send, "m_vecOrigin", g_fDesiredPos); + break; + } + } + } + } + else if(StrEqual("coop", sGameMode) || StrEqual("versus", sGameMode)) + { + // not first map, so we need to check if a player spawned first + // check his position and spawn users there + // there's no really other way to do it + // some people put info_player_spawn way ahead of the initial safehouse so checking it + // is notsecure + + // we need a timer becase at this moment they will still have the origins from the + // previous map + LockAllPlayerMovement(); + CreateTimer(7.5, Timer_FindFirstSpawned); + } + + // If everything above failed to trigger, the mapper decided to just use info_player_start for player spawns. + // In that case we don't need to do anything because AFAIK you can't set individual spawns with those. + } +} + +public Action Timer_FindFirstSpawned(Handle timer) +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + GetEntPropVector(iClient, Prop_Send, "m_vecOrigin", g_fDesiredPos); + break; + } + } + EnsureSpawns(); + AllowAllPlayerMovement(); + + return Plugin_Continue; +} + +void LockAllPlayerMovement() +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + int pFlags = GetEntityFlags(iClient); + SetEntityFlags(iClient, (pFlags | FL_FROZEN)); + } + } +} + +void LockSinglePlayerMovement(int iClient) +{ + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + int pFlags = GetEntityFlags(iClient); + SetEntityFlags(iClient, (pFlags | FL_FROZEN)); + } +} + +void AllowSinglePlayerMovement(int iClient) +{ + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + int pFlags = GetEntityFlags(iClient); + SetEntityFlags(iClient, (pFlags & ~FL_FROZEN)); + } +} + +void AllowAllPlayerMovement() +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + int pFlags = GetEntityFlags(iClient); + SetEntityFlags(iClient, (pFlags & ~FL_FROZEN)); + } + } +} + +void turn_survivors_into_original() +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + { + int iSurvivorChar = GetEntProp(iClient, Prop_Send, "m_survivorCharacter"); + g_iSurvivorCharacter[iClient] = iSurvivorChar; + + switch(iSurvivorChar) + { + case COACH, LOUIS: + { + SetEntProp(iClient, Prop_Send, "m_survivorCharacter", g_bIsL4D1 ? LOUIS : COACH); + } + case ROCHELLE, ZOEY: + { + SetEntProp(iClient, Prop_Send, "m_survivorCharacter", g_bIsL4D1 ? ZOEY : ROCHELLE); + } + case ELLIS, FRANCIS: + { + SetEntProp(iClient, Prop_Send, "m_survivorCharacter", g_bIsL4D1 ? FRANCIS : ELLIS); + } + default: + { + //incl custom survivor + SetEntProp(iClient, Prop_Send, "m_survivorCharacter", g_bIsL4D1 ? BILL : NICK); + } + } + } + } +} + +void restore_survivors() +{ + for(int iClient=1; iClient <= MaxClients; iClient++) + { + if(IsClientInGame(iClient) && GetClientTeam(iClient) == L4D_TEAM_SURVIVOR) + SetEntProp(iClient, Prop_Send, "m_survivorCharacter", g_iSurvivorCharacter[iClient]); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2_tank_props_glow.sp b/addons/sourcemod/scripting/l4d2_tank_props_glow.sp index 913e907d..60d86c6e 100644 --- a/addons/sourcemod/scripting/l4d2_tank_props_glow.sp +++ b/addons/sourcemod/scripting/l4d2_tank_props_glow.sp @@ -26,10 +26,10 @@ public Plugin myinfo = { public void OnPluginStart() { g_hCvartankPropsGlow = CreateConVar("l4d_tank_props_glow", "1", "Show Hittable Glow for infected team while the tank is alive", FCVAR_NOTIFY); g_hCvarColor = CreateConVar( "l4d2_tank_prop_glow_color", "255 255 255", "Prop Glow Color, three values between 0-255 separated by spaces. RGB Color255 - Red Green Blue.", FCVAR_NOTIFY); - g_hCvarRange = CreateConVar( "l4d2_tank_prop_glow_range", "4500", "How near to props do players need to be to enable their glow.", FCVAR_NOTIFY); + g_hCvarRange = CreateConVar( "l4d2_tank_prop_glow_range", "2147483647", "How near to props do players need to be to enable their glow.", FCVAR_NOTIFY); g_hCvarTankOnly = CreateConVar( "l4d2_tank_prop_glow_only", "0", "Only Tank can see the glow", FCVAR_NOTIFY); g_hCvarTankSpec = CreateConVar( "l4d2_tank_prop_glow_spectators", "1", "Spectators can see the glow too", FCVAR_NOTIFY); - g_hCvarTankPropsBeGone = CreateConVar("l4d2_tank_prop_dissapear_time", "10.0", "Time it takes for hittables that were punched by Tank to dissapear after the Tank dies.", FCVAR_NOTIFY); + g_hCvarTankPropsBeGone = CreateConVar("l4d2_tank_prop_dissapear_time", "5.0", "Time it takes for hittables that were punched by Tank to dissapear after the Tank dies.", FCVAR_NOTIFY); GetCvars(); g_hCvartankPropsGlow.AddChangeHook(TankPropsGlowAllow); @@ -420,4 +420,4 @@ void PropSpawned(int entity) AcceptEntityInput(entity, "Kill"); } } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_temphealthmedkits.sp b/addons/sourcemod/scripting/l4d2_temphealthmedkits.sp index d05b2419..e15f0bae 100644 --- a/addons/sourcemod/scripting/l4d2_temphealthmedkits.sp +++ b/addons/sourcemod/scripting/l4d2_temphealthmedkits.sp @@ -43,7 +43,7 @@ public Plugin:myinfo = public OnPluginStart() { - hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "1", "Enable temp health medkits"); + hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "0", "Enable temp health medkits"); HookConVarChange(hEnabled, Enabled_Change); bEnabled = GetConVarBool(hEnabled); @@ -155,4 +155,4 @@ stock SetBlackAndWhite(target, health, temp_health) SetEntityHealth(target, health); SetSurvivorTempHealth(target, temp_health); } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d2_ty_saveweapon.sp b/addons/sourcemod/scripting/l4d2_ty_saveweapon.sp new file mode 100644 index 00000000..e85d3617 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2_ty_saveweapon.sp @@ -0,0 +1,713 @@ +// ============================================================================= +// L4D2 coop save weapon +// ============================================================================= +// +// Saved: equipment, ammo, health, revivecount, b&w status, prop & model +// Going idle / quitting the game will transfer saved data to the replacement bot +// Taking over a bot will transfer the saved data to the player +// + +#pragma semicolon 1 + +#include +#include + +#pragma newdecls required +#define PLUGIN_VERSION "4.3" + +enum() +{ + iClip = 0, + iClipSlot1, + iAmmo, + iUpgrade, + iUpAmmo, + iHealth, + iHealthTemp, + iHealthTime, + iReviveCount, + iGoingToDie, + iThirdStrike, + iProp, + iRecorded, + iSpawned +}; + +enum() +{ + Slot0 = 0, + Slot1, + Slot2, + Slot3, + Slot4, + Model +}; + +char gameMode[16]; +bool g_bGiveWeapon; +bool g_bCanAppropriate = true; + +int g_iWeaponInfo[MAXPLAYERS+1][14]; +char g_sWeaponInfo[MAXPLAYERS+1][6][64]; +bool g_bValidMapChange = false; + +ConVar g_hNoob, g_hClearAfterCampaign; + +// ********************************************************************************* +// METHODS FOR GAME START & END +// ********************************************************************************* +public Plugin myinfo = +{ + name = "[L4D2] Save Weapon", + author = "MAKS, Electr0, Merudo", + description = "L4D2 coop save weapon", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?p=2398822#post2398822" +} + +public void OnPluginStart() +{ + CreateConVar("l4d2_ty_saveweapon", PLUGIN_VERSION, "L4D2 Save Weapon version", FCVAR_NOTIFY); + + HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); + HookEvent("finale_win", Event_FinaleWin); + HookEvent("map_transition", Event_MapTransition); + + HookEvent("player_spawn", Event_PlayerSpawn); + HookEvent("player_bot_replace", Event_Player_Bot_Replace); + HookEvent("bot_player_replace", Event_Bot_Player_Replace); + + g_hNoob = CreateConVar("l4d2_ty_noob", "0", "Give SMG after join", FCVAR_NOTIFY); + g_hClearAfterCampaign = CreateConVar("l4d2_ty_clear_after_campaign", "1", "Wipe weapons after campaign", FCVAR_NOTIFY); + + RegAdminCmd("sm_save_weap", CMD_SaveWeap, ADMFLAG_CHEATS, "Save equipment"); + RegAdminCmd("sm_save_weap_all", CMD_SaveWeapAll, ADMFLAG_CHEATS, "Save equipment of all survivors"); + RegAdminCmd("sm_load_weap", CMD_LoadWeap, ADMFLAG_CHEATS, "Load equipment"); + RegAdminCmd("sm_load_weap_all", CMD_LoadWeapAll, ADMFLAG_CHEATS, "Load equipment of all survivors"); + + AutoExecConfig(true, "l4d2_ty_saveweapon"); +} + +// -------------------------------------- +// Modes where weapons should be saved between maps +// -------------------------------------- +char saveweapon_modes[20][] = +{ + "coop", "realism", + "m60s", "hardcore", "l4d1coop", + "mutation2", "mutation3", "mutation4", + "mutation5", "mutation6", "mutation7", "mutation8", + "mutation9", "mutation10", "mutation16", "mutation17", "mutation20", + "community1", "community2", "community5" +}; + + +public void OnMapStart() +{ + // Identify if weapons should be saved + ////////////////////////////////////// + GetConVarString(FindConVar("mp_gamemode"), gameMode, sizeof(gameMode)); + + g_bGiveWeapon = false; + for (int i = 0; i < sizeof(saveweapon_modes); i++) + { + if (StrEqual(gameMode, saveweapon_modes[i], false)) + { + g_bGiveWeapon = true; + } + } + + // Clean up weapon data if new campaign / versus mode + ////////////////////////////////////// + if ( (!g_bValidMapChange && g_hClearAfterCampaign.BoolValue) || !g_bGiveWeapon) TyCleanAll(); + + g_bValidMapChange = false; // Map changes between map start and transition are considered invalid + + if (!g_hClearAfterCampaign.BoolValue && g_bGiveWeapon) TyPrecache(); // Precache if we allow carrying weapons across campaigns +} + +// -------------------------------------- +// Reset weapon spawn status (it is 1 if spawned in the round previously) +// -------------------------------------- +public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast) +{ + for( int i = 1; i <= MaxClients; i++) g_iWeaponInfo[i][iSpawned] = 0; + g_bCanAppropriate = true; +} + +// -------------------------------------- +// Save weapon when transition after safe house +// -------------------------------------- +public Action Event_MapTransition(Event event, const char[] name, bool dontBroadcast) +{ + TyCleanAll(); + TySaveWeaponAll(); + g_bValidMapChange = true; // only map changes between transition and new map are valid +} + +// -------------------------------------- +// Save weapons at end of campaign (may be overwritten by OnMapStart() ) +// -------------------------------------- +public Action Event_FinaleWin(Event event, const char[] name, bool dontBroadcast) +{ + TyCleanAll(); + TySaveWeaponAll(); +} + +// -------------------------------------- +// Load weapons on spawn +// -------------------------------------- +public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) +{ + int userid = GetEventInt(event, "userid"); + CreateTimer(0.2, timer_Give, userid, TIMER_FLAG_NO_MAPCHANGE); + + return Plugin_Continue; +} + +// -------------------------------------- +// Load weapons. Delayed to not deal with bogus fake clients +// -------------------------------------- +public Action timer_Give(Handle handle, int userid) +{ + int client = GetClientOfUserId(userid); + + // if since then disconnected, don't do anything + if (!client || !IsClientInGame(client) || GetClientTeam(client) != 2 || !g_bGiveWeapon) return; + + if (g_bCanAppropriate) CreateTimer(10.0, timer_StopAppropriate, TIMER_FLAG_NO_MAPCHANGE); + + // If not recorded, search if there is a missing record not yet spawned. For bots only + if (g_iWeaponInfo[client][iRecorded] != 1 && g_iWeaponInfo[client][iSpawned] == 0 && IsFakeClient(client) && g_bCanAppropriate) + { + AppropriateUnusedSave(client); + } + + // If not yet spawned in the round + if (g_iWeaponInfo[client][iSpawned] == 0) + { + if (g_iWeaponInfo[client][iRecorded] == 1) TyGiveWeapon(client); + else if (g_hNoob.BoolValue && g_bCanAppropriate) // If start of round, no weapons saved & g_bNoob enabled + { + int iSlot = GetPlayerWeaponSlot(client, 0); + if (iSlot <= 0) CheatCommand(client, "give", "weapon_smg",""); + } + g_iWeaponInfo[client][iSpawned] = 1; + } +} + +// -------------------------------------- +// Turns off appropriation after 10 sec, to prevent idle bots from getting different stuff +// -------------------------------------- +public Action timer_StopAppropriate(Handle handle, int client) {g_bCanAppropriate = false;} + +// -------------------------------------- +// Bot -> Player +// -------------------------------------- +public Action Event_Bot_Player_Replace(Handle event, char[] name, bool dontBroadcast) +{ + int player = GetClientOfUserId(GetEventInt(event, "player")); + int bot = GetClientOfUserId(GetEventInt(event, "bot")); + + if (IsFakeClient(player)) return; // do nothing if bot replace other bot (byproduct of creating survivor bots) + + if (GetClientTeam(player) == 2) + { + CopyWeaponFromTo(bot, player); + TyCleanW(bot); + } +} + +// -------------------------------------- +// Player -> Bot +// -------------------------------------- +public Action Event_Player_Bot_Replace(Handle event, char[] name, bool dontBroadcast) +{ + int player = GetClientOfUserId(GetEventInt(event, "player")); + int bot = GetClientOfUserId(GetEventInt(event, "bot")); + + if (IsFakeClient(player)) return; // do nothing if bot replace other bot (byproduct of creating survivor bots) + + if (GetClientTeam(bot) == 2) + { + CopyWeaponFromTo(player, bot); + TyCleanW(player); + } +} + +// -------------------------------------- +// Find abandoned saved data (from player leaving between levels, bots autokicked at end of map, etc) and appropriate it +// -------------------------------------- +void AppropriateUnusedSave(int client) +{ + for (int i = 1; i <= MaxClients; i++) + { + if (!IsClientConnected(i) && g_iWeaponInfo[i][iRecorded] == 1 && client != i) + { + CopyWeaponFromTo(i, client); + TyCleanW(i); + return; + } + } +} + +void CopyWeaponFromTo(int Fclient, int Tclient) +{ + for (int i = 0; i < sizeof(g_iWeaponInfo[]) ; i++) + { + g_iWeaponInfo[Tclient][i] = g_iWeaponInfo[Fclient][i]; + } + for (int i = 0; i < sizeof(g_sWeaponInfo[]) ; i++) + { + strcopy(g_sWeaponInfo[Tclient][i], sizeof(g_sWeaponInfo[][]), g_sWeaponInfo[Fclient][i]); + } +} + +// ********************************************************************************* +// Save & Load Weapons functions +// ********************************************************************************* + +void TySaveWeaponAll() +{ + for (int i = 1; i <= MaxClients; i++) + { + if (IsClientInGame(i) && GetClientTeam(i) == 2) TySaveWeapon(i); + } +} + +void TyGiveWeaponAll() +{ + for (int i = 1; i <= MaxClients; i++) + { + if (IsClientInGame(i) && GetClientTeam(i) == 2) TyGiveWeapon(i); + } +} + +void TySaveWeapon(int client) +{ + TyCleanW(client); + + if (GetClientTeam(client) != 2) return; + + // Store model + GetClientModel(client, g_sWeaponInfo[client][Model], 64); + + // Store prop + g_iWeaponInfo[client][iProp] = GetEntProp(client, Prop_Send, "m_survivorCharacter"); + + g_iWeaponInfo[client][iRecorded] = 1; + + // if dead, set ressurected state + if (!IsPlayerAlive(client)) + { + g_iWeaponInfo[client][iHealth] = 50; + return; + } + + // Save health + g_iWeaponInfo[client][iReviveCount] = GetEntProp(client, Prop_Send, "m_currentReviveCount"); + g_iWeaponInfo[client][iThirdStrike] = GetEntProp(client, Prop_Send, "m_bIsOnThirdStrike"); + + if (GetEntProp(client, Prop_Send, "m_isIncapacitated") == 1) + { + g_iWeaponInfo[client][iHealth] = 1; + g_iWeaponInfo[client][iHealthTemp] = 30; + g_iWeaponInfo[client][iHealthTime] = 0; + g_iWeaponInfo[client][iGoingToDie] = 1; + } + else + { + g_iWeaponInfo[client][iHealth] = GetEntData(client, FindDataMapInfo(client, "m_iHealth"), 4); + g_iWeaponInfo[client][iHealthTemp] = RoundToNearest( GetEntPropFloat(client, Prop_Send, "m_healthBuffer") ); + g_iWeaponInfo[client][iHealthTime] = RoundToNearest( GetGameTime() - GetEntPropFloat(client, Prop_Send, "m_healthBufferTime") ); + g_iWeaponInfo[client][iGoingToDie] = GetEntProp(client, Prop_Send, "m_isGoingToDie"); + } + + // Save equipment + int iSlot0 = GetPlayerWeaponSlot(client, 0); + int iSlot1 = GetPlayerWeaponSlot(client, 1); + int iSlot2 = GetPlayerWeaponSlot(client, 2); + int iSlot3 = GetPlayerWeaponSlot(client, 3); + int iSlot4 = GetPlayerWeaponSlot(client, 4); + + if (iSlot0 > 0) + { + GetEdictClassname(iSlot0, g_sWeaponInfo[client][Slot0], 64); + + g_iWeaponInfo[client][iClip] = GetEntProp(iSlot0, Prop_Send, "m_iClip1", 4); + g_iWeaponInfo[client][iAmmo] = GetClientAmmo(client, g_sWeaponInfo[client][Slot0]); + g_iWeaponInfo[client][iUpgrade] = GetEntProp(iSlot0, Prop_Send, "m_upgradeBitVec", 4); + g_iWeaponInfo[client][iUpAmmo] = GetEntProp(iSlot0, Prop_Send, "m_nUpgradedPrimaryAmmoLoaded", 4); + } + if (iSlot1 > 0) TySaveSlot1(client, iSlot1); + if (iSlot2 > 0) GetEdictClassname(iSlot2, g_sWeaponInfo[client][2], 64); + if (iSlot3 > 0) GetEdictClassname(iSlot3, g_sWeaponInfo[client][3], 64); + if (iSlot4 > 0) GetEdictClassname(iSlot4, g_sWeaponInfo[client][4], 64); +} + +// -------------------------------------- +// Special code to save slot 1 (because of melee weapons) +// -------------------------------------- +void TySaveSlot1(int client, int iSlot1) +{ + char className[64]; + char modelName[64]; + + GetEdictClassname(iSlot1, className, sizeof(className)); + + if (!strcmp(className, "weapon_melee", true)) // if melee + { + GetEntPropString(iSlot1, Prop_Data, "m_strMapSetScriptName", g_sWeaponInfo[client][Slot1], 64); + } + else if (!strcmp(className, "weapon_pistol", true)) // if pistol + { + if (GetEntProp(iSlot1, Prop_Send, "m_hasDualWeapons" ) == 1) g_sWeaponInfo[client][Slot1] = "dual_pistol"; + else g_sWeaponInfo[client][Slot1] = "weapon_pistol"; + } + else // if non-melee, non-pistol + { + g_sWeaponInfo[client][Slot1] = className; + } + + // IF model checking is required + if (g_sWeaponInfo[client][Slot1][0] == '\0') + { + GetEntPropString(iSlot1, Prop_Data, "m_ModelName", modelName, sizeof(modelName)); + + if (StrContains(modelName, "v_pistolA.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "weapon_pistol"; + else if (StrContains(modelName, "v_dual_pistolA.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "dual_pistol"; + else if (StrContains(modelName, "v_desert_eagle.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "weapon_pistol_magnum"; + else if (StrContains(modelName, "v_bat.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "baseball_bat"; + else if (StrContains(modelName, "v_cricket_bat.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "cricket_bat"; + else if (StrContains(modelName, "v_crowbar.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "crowbar"; + else if (StrContains(modelName, "v_fireaxe.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "fireaxe"; + else if (StrContains(modelName, "v_katana.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "katana"; + else if (StrContains(modelName, "v_golfclub.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "golfclub"; + else if (StrContains(modelName, "v_machete.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "machete"; + else if (StrContains(modelName, "v_tonfa.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "tonfa"; + else if (StrContains(modelName, "v_electric_guitar.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "electric_guitar"; + else if (StrContains(modelName, "v_frying_pan.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "frying_pan"; + else if (StrContains(modelName, "v_knife_t.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "knife"; + else if (StrContains(modelName, "v_chainsaw.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "weapon_chainsaw"; + else if (StrContains(modelName, "v_riotshield.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "riotshield"; + else if (StrContains(modelName, "v_foamfinger.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "b_foamfinger"; + else if (StrContains(modelName, "v_fubar.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "fubar"; + else if (StrContains(modelName, "v_paintrain.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "nail_board"; + else if (StrContains(modelName, "v_sledgehammer.mdl", true) != -1) g_sWeaponInfo[client][Slot1] = "sledgehammer"; + } + + if (!strcmp(g_sWeaponInfo[client][Slot1], "dual_pistol", true) || !strcmp(g_sWeaponInfo[client][Slot1], "weapon_pistol", true) + || !strcmp(g_sWeaponInfo[client][Slot1], "weapon_pistol_magnum", true) || !strcmp(g_sWeaponInfo[client][Slot1], "weapon_chainsaw", true)) + { + g_iWeaponInfo[client][iClipSlot1] = GetEntProp(iSlot1, Prop_Send, "m_iClip1", 4); + } +} + +char survivor_names[8][] = { "Nick", "Rochelle", "Coach", "Ellis", "Bill", "Zoey", "Francis", "Louis"}; +char survivor_models[8][] = +{ + "models/survivors/survivor_gambler.mdl", + "models/survivors/survivor_producer.mdl", + "models/survivors/survivor_coach.mdl", + "models/survivors/survivor_mechanic.mdl", + "models/survivors/survivor_namvet.mdl", + "models/survivors/survivor_teenangst.mdl", + "models/survivors/survivor_biker.mdl", + "models/survivors/survivor_manager.mdl" +}; + +void TyGiveWeapon(int client) +{ + if (!IsClientInGame(client) || g_iWeaponInfo[client][iRecorded] == 0) return; + + g_iWeaponInfo[client][iSpawned] = 1; + + // Update model & props + SetEntProp(client, Prop_Send, "m_survivorCharacter", g_iWeaponInfo[client][iProp]); + SetEntityModel(client, g_sWeaponInfo[client][Model]); + + if (IsFakeClient(client)) // if bot, replace name + { + for (int i = 0; i < 8; i++) + { + if (StrEqual(g_sWeaponInfo[client][Model], survivor_models[i])) SetClientInfo(client, "name", survivor_names[i]); + } + } + + if (!IsPlayerAlive(client)) return; + + // Restore health + if (GetEntProp(client, Prop_Send, "m_isIncapacitated") == 1) SetEntProp(client, Prop_Send, "m_isIncapacitated", 0); + + SetEntProp(client, Prop_Send, "m_currentReviveCount", g_iWeaponInfo[client][iReviveCount]); + SetEntProp(client, Prop_Send, "m_isGoingToDie", g_iWeaponInfo[client][iGoingToDie]); + SetEntProp(client, Prop_Send, "m_bIsOnThirdStrike", g_iWeaponInfo[client][iThirdStrike]); + + SetEntProp(client, Prop_Send, "m_iHealth", g_iWeaponInfo[client][iHealth], 1); + SetEntPropFloat(client, Prop_Send, "m_healthBuffer", 1.0*g_iWeaponInfo[client][iHealthTemp]); + SetEntPropFloat(client, Prop_Send, "m_healthBufferTime", GetGameTime() - 1.0*g_iWeaponInfo[client][iHealthTime]); + + // Disable heart beat sound if not B&W + if (!g_iWeaponInfo[client][iThirdStrike]) for (int i = 0; i <= 255; i++) StopSound(client, i, "player/heartbeatloop.wav"); + + // Remove previous equipment + DeletePlayerSlotAll(client); + + // Give saved equipment + if (g_sWeaponInfo[client][2][0] != '\0') CheatCommand(client, "give", g_sWeaponInfo[client][2],""); + if (g_sWeaponInfo[client][3][0] != '\0') CheatCommand(client, "give", g_sWeaponInfo[client][3],""); + if (g_sWeaponInfo[client][4][0] != '\0') CheatCommand(client, "give", g_sWeaponInfo[client][4],""); + + int iSlot; + + if (g_sWeaponInfo[client][1][0] != '\0') + { + if (!strcmp(g_sWeaponInfo[client][1], "dual_pistol", true)) + { + CheatCommand(client, "give", "weapon_pistol",""); + CheatCommand(client, "give", "weapon_pistol",""); + } + else + { + CheatCommand(client, "give", g_sWeaponInfo[client][1],""); + } + + // Restore chainsaw fuel + if (!strcmp(g_sWeaponInfo[client][1], "weapon_chainsaw", true)) + { + iSlot = GetPlayerWeaponSlot(client, 1); + if (iSlot > 0) + { + SetEntProp(iSlot, Prop_Send, "m_iClip1", g_iWeaponInfo[client][iClipSlot1], 4); + } + } + } + else + { + CheatCommand(client, "give", "weapon_pistol",""); + } + + // Give primary weapon last so its the one yielded + if (g_sWeaponInfo[client][0][0] != '\0') + { + CheatCommand(client, "give", g_sWeaponInfo[client][0],""); + iSlot = GetPlayerWeaponSlot(client, 0); + if (iSlot > 0) + { + SetEntProp(iSlot, Prop_Send, "m_iClip1", g_iWeaponInfo[client][iClip], 4); + SetClientAmmo(client, g_sWeaponInfo[client][0], g_iWeaponInfo[client][iAmmo]); + SetEntProp(iSlot, Prop_Send, "m_upgradeBitVec", g_iWeaponInfo[client][iUpgrade], 4); + SetEntProp(iSlot, Prop_Send, "m_nUpgradedPrimaryAmmoLoaded", g_iWeaponInfo[client][iUpAmmo], 4); + } + } + else if (g_hNoob.BoolValue) CheatCommand(client, "give", "weapon_smg",""); +} + +void TyCleanW(int client) +{ + g_iWeaponInfo[client][iClip] = 0; + g_iWeaponInfo[client][iClipSlot1] = 0; + g_iWeaponInfo[client][iAmmo] = 0; + g_iWeaponInfo[client][iUpgrade] = 0; + g_iWeaponInfo[client][iUpAmmo] = 0; + g_iWeaponInfo[client][iProp] = -1; + + g_iWeaponInfo[client][iHealth] = 100; + g_iWeaponInfo[client][iReviveCount] = 0; + g_iWeaponInfo[client][iGoingToDie] = 0; + g_iWeaponInfo[client][iHealthTemp] = 0; + g_iWeaponInfo[client][iHealthTime] = 0; + g_iWeaponInfo[client][iThirdStrike] = 0; + + g_iWeaponInfo[client][iRecorded] = 0; + g_iWeaponInfo[client][iSpawned] = 0; + + g_sWeaponInfo[client][Slot0][0] = '\0'; + g_sWeaponInfo[client][Slot1][0] = '\0'; + g_sWeaponInfo[client][Slot2][0] = '\0'; + g_sWeaponInfo[client][Slot3][0] = '\0'; + g_sWeaponInfo[client][Slot4][0] = '\0'; + g_sWeaponInfo[client][Model][0] = '\0'; +} + +void TyCleanAll() +{ + for (int i = 1; i <= MaxClients; i++) TyCleanW(i); +} + +// ********************************************************************************* +// Commands +// ********************************************************************************* + +public Action CMD_SaveWeap(int client, int args) +{ + if (client && GetClientTeam(client) == 2) TySaveWeapon(client); + return Plugin_Continue; +} + +public Action CMD_SaveWeapAll(int client, int args) +{ + TySaveWeaponAll(); + PrintToChat(client, "Weapons Saved"); + return Plugin_Continue; +} + +public Action CMD_LoadWeap(int client, int args) +{ + if (client && GetClientTeam(client) == 2) TyGiveWeapon(client); + return Plugin_Continue; +} + +public Action CMD_LoadWeapAll(int client, int args) +{ + TyGiveWeaponAll(); + PrintToChat(client, "Weapons Loaded"); + return Plugin_Continue; +} +// ********************************************************************************* +// Get/Set ammo +// ********************************************************************************* + +int GetWeaponOffset(char[] weapon) +{ + int weapon_offset; + + if (StrEqual(weapon, "weapon_rifle") || StrEqual(weapon, "weapon_rifle_sg552") || StrEqual(weapon, "weapon_rifle_desert") || StrEqual(weapon, "weapon_rifle_ak47")) + { + weapon_offset = 12; + } + else if (StrEqual(weapon, "weapon_rifle_m60")) + { + weapon_offset = 24; + } + else if (StrEqual(weapon, "weapon_smg") || StrEqual(weapon, "weapon_smg_silenced") || StrEqual(weapon, "weapon_smg_mp5")) + { + weapon_offset = 20; + } + else if (StrEqual(weapon, "weapon_pumpshotgun") || StrEqual(weapon, "weapon_shotgun_chrome")) + { + weapon_offset = 28; + } + else if (StrEqual(weapon, "weapon_autoshotgun") || StrEqual(weapon, "weapon_shotgun_spas")) + { + weapon_offset = 32; + } + else if (StrEqual(weapon, "weapon_hunting_rifle")) + { + weapon_offset = 36; + } + else if (StrEqual(weapon, "weapon_sniper_scout") || StrEqual(weapon, "weapon_sniper_military") || StrEqual(weapon, "weapon_sniper_awp")) + { + weapon_offset = 40; + } + else if (StrEqual(weapon, "weapon_grenade_launcher")) + { + weapon_offset = 68; + } + + return weapon_offset; +} + +int GetClientAmmo(int client, char[] weapon) +{ + int weapon_offset = GetWeaponOffset(weapon); + int iAmmoOffset = FindSendPropInfo("CTerrorPlayer", "m_iAmmo"); + + return weapon_offset > 0 ? GetEntData(client, iAmmoOffset+weapon_offset) : 0; +} + +void SetClientAmmo(int client, char[] weapon, int count) +{ + int weapon_offset = GetWeaponOffset(weapon); + int iAmmoOffset = FindSendPropInfo("CTerrorPlayer", "m_iAmmo"); + + if (weapon_offset > 0) SetEntData(client, iAmmoOffset+weapon_offset, count); +} + +// ********************************************************************************* +// Commands to create / delete weapons +// ********************************************************************************* + +void CheatCommand(int client, const char[] command, const char[] argument1, const char[] argument2) +{ + int userFlags = GetUserFlagBits(client); + SetUserFlagBits(client, ADMFLAG_ROOT); + int flags = GetCommandFlags(command); + SetCommandFlags(command, flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "%s %s %s", command, argument1, argument2); + SetCommandFlags(command, flags); + SetUserFlagBits(client, userFlags); +} + +void DeletePlayerSlot(int client, int weapon) +{ + if(RemovePlayerItem(client, weapon)) AcceptEntityInput(weapon, "Kill"); +} + +void DeletePlayerSlotAll(int client) +{ + int iSlot; + for (int i; i < 5; i++) + { + iSlot = GetPlayerWeaponSlot(client, i); + if (iSlot > 0) DeletePlayerSlot(client, iSlot); + } +} + +// ********************************************************************************* +// Precache +// ********************************************************************************* +public void TyPrecache() +{ + // Survivors + if (!IsModelPrecached("models/survivors/survivor_biker.mdl")) PrecacheModel("models/survivors/survivor_biker.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_manager.mdl")) PrecacheModel("models/survivors/survivor_manager.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_teenangst.mdl")) PrecacheModel("models/survivors/survivor_teenangst.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_coach.mdl")) PrecacheModel("models/survivors/survivor_coach.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_gambler.mdl")) PrecacheModel("models/survivors/survivor_gambler.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_mechanic.mdl")) PrecacheModel("models/survivors/survivor_mechanic.mdl", true); + if (!IsModelPrecached("models/survivors/survivor_producer.mdl")) PrecacheModel("models/survivors/survivor_producer.mdl", true); + + + // CS weapons + if (!IsModelPrecached("models/v_models/v_rif_sg552.mdl")) PrecacheModel("models/v_models/v_rif_sg552.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_rifle_sg552.mdl")) PrecacheModel("models/w_models/weapons/w_rifle_sg552.mdl", true); + if (!IsModelPrecached("models/v_models/v_smg_mp5.mdl")) PrecacheModel("models/v_models/v_smg_mp5.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_smg_mp5.mdl")) PrecacheModel("models/w_models/weapons/w_smg_mp5.mdl", true); + if (!IsModelPrecached("models/v_models/v_snip_awp.mdl")) PrecacheModel("models/v_models/v_snip_awp.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_sniper_awp.mdl")) PrecacheModel("models/w_models/weapons/w_sniper_awp.mdl", true); + if (!IsModelPrecached("models/v_models/v_snip_scout.mdl")) PrecacheModel("models/v_models/v_snip_scout.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_sniper_scout.mdl"))PrecacheModel("models/w_models/weapons/w_sniper_scout.mdl"); + if (!IsModelPrecached("models/v_models/v_knife_t.mdl")) PrecacheModel("models/v_models/v_knife_t.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_knife_t.mdl")) PrecacheModel("models/w_models/weapons/w_knife_t.mdl", true); + if (!IsModelPrecached("models/v_models/v_snip_scout.mdl")) PrecacheModel("models/v_models/v_snip_scout.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_sniper_scout.mdl"))PrecacheModel("models/w_models/weapons/w_sniper_scout.mdl", true); + + // M60 + if (!IsModelPrecached("models/v_models/v_m60.mdl")) PrecacheModel("models/v_models/v_m60.mdl", true); + if (!IsModelPrecached("models/w_models/weapons/w_m60.mdl")) PrecacheModel("models/w_models/weapons/w_m60.mdl", true); + + // Melee weapons + if (!IsModelPrecached("models/weapons/melee/v_bat.mdl")) PrecacheModel("models/weapons/melee/v_bat.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_bat.mdl")) PrecacheModel("models/weapons/melee/w_bat.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_cricket_bat.mdl")) PrecacheModel("models/weapons/melee/v_cricket_bat.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_cricket_bat.mdl")) PrecacheModel("models/weapons/melee/w_cricket_bat.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_crowbar.mdl")) PrecacheModel("models/weapons/melee/v_crowbar.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_crowbar.mdl")) PrecacheModel("models/weapons/melee/w_crowbar.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_electric_guitar.mdl"))PrecacheModel("models/weapons/melee/v_electric_guitar.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_electric_guitar.mdl"))PrecacheModel("models/weapons/melee/w_electric_guitar.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_fireaxe.mdl")) PrecacheModel("models/weapons/melee/v_fireaxe.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_fireaxe.mdl")) PrecacheModel("models/weapons/melee/w_fireaxe.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_frying_pan.mdl")) PrecacheModel("models/weapons/melee/v_frying_pan.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_frying_pan.mdl")) PrecacheModel("models/weapons/melee/w_frying_pan.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_golfculb.mdl")) PrecacheModel("models/weapons/melee/v_golfculb.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_golfculb.mdl")) PrecacheModel("models/weapons/melee/w_golfculb.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_katana.mdl")) PrecacheModel("models/weapons/melee/v_katana.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_katana.mdl")) PrecacheModel("models/weapons/melee/w_katana.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_machete.mdl")) PrecacheModel("models/weapons/melee/v_machete.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_machete.mdl")) PrecacheModel("models/weapons/melee/w_machete.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_riotshield.mdl")) PrecacheModel("models/weapons/melee/v_riotshield.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_riotshield.mdl")) PrecacheModel("models/weapons/melee/w_riotshield.mdl", true); + if (!IsModelPrecached("models/weapons/melee/v_tonfa.mdl")) PrecacheModel("models/weapons/melee/v_tonfa.mdl", true); + if (!IsModelPrecached("models/weapons/melee/w_tonfa.mdl")) PrecacheModel("models/weapons/melee/w_tonfa.mdl", true); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d2sicooplimit.sp b/addons/sourcemod/scripting/l4d2sicooplimit.sp new file mode 100644 index 00000000..18722727 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2sicooplimit.sp @@ -0,0 +1,90 @@ + +#include +#include + +#define PLUGIN_VERSION "1.1" + +public Plugin:myinfo = +{ + name = "[L4D2] SI Coop Limit Bypass", + author = "MI 5", + description = "Allows admins to spawn SI that can get around the SI coop limit with a command", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/index.php" +} + +public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +{ + // This plugin will only work on L4D2 + decl String:GameName[64] + GetGameFolderName(GameName, sizeof(GameName)) + if (!StrEqual(GameName, "left4dead2", false)) + return APLRes_Failure + else + return APLRes_Success +} + +public OnPluginStart() +{ + CreateConVar("l4d_si_limit_bypass_version", PLUGIN_VERSION, "Version of L4D2 SI Coop Limit Removal", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD) + + RegAdminCmd("sm_ibspawn", Command_SpawnSI, ADMFLAG_CHEATS, "sm_ibspawn - Spawns an Infected bot that can bypass the coop limit") +} + + +public Action:Command_SpawnSI(client, args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_ibspawn - Spawns an Infected bot that can bypass the coop limit"); + return Plugin_Handled; + } + + decl String:infected[64], String:parameter[64]; + + GetCmdArg(1, infected, sizeof(infected)); + GetCmdArg(2, parameter, sizeof(parameter)); + + new bot = CreateFakeClient("Infected Bot"); + if (bot != 0) + { + ChangeClientTeam(bot,3); + CreateTimer(0.1,kickbot,bot); + } + + new anyclient = GetAnyValidClient(); + + CheatCommand(anyclient, "z_spawn", infected, parameter); + + return Plugin_Handled; +} + +stock GetAnyValidClient() +{ + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) return target; + } + return -1; +} + +public Action:kickbot(Handle:timer, any:client) +{ + if (IsClientInGame(client) && (!IsClientInKickQueue(client))) + { + if (IsFakeClient(client)) KickClient(client); + } +} + + +stock CheatCommand(client, String:command[], String:argument1[], String:argument2[]) +{ + new userFlags = GetUserFlagBits(client); + SetUserFlagBits(client, ADMFLAG_ROOT); + new flags = GetCommandFlags(command); + SetCommandFlags(command, flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "%s %s %s", command, argument1, argument2); + SetCommandFlags(command, flags); + SetUserFlagBits(client, userFlags); +} + diff --git a/addons/sourcemod/scripting/l4d2witchprecache.sp b/addons/sourcemod/scripting/l4d2witchprecache.sp new file mode 100644 index 00000000..4c57d302 --- /dev/null +++ b/addons/sourcemod/scripting/l4d2witchprecache.sp @@ -0,0 +1,35 @@ +#pragma semicolon 1 +#include + +#define PLUGIN_VERSION "1.0" + +public Plugin:myinfo = +{ + name = "[L4D2] Witch Precache", + author = "CanadaRox", + description = "Precaches both witch models so z_spawn witch/witch_bride doesn't crash the server.", + version = PLUGIN_VERSION, + url = "forums.alliedmods.net" +}; + +new Handle:g_hEnabled; + +public OnPluginStart() +{ + decl String:game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false)) + { + SetFailState("Plugin supports Left 4 Dead 2 only."); + } + + g_hEnabled = CreateConVar("l4d2_witchprecache_enable", "1", "Toggle precaching of witch models to prevent crashes caused by z_spawn witch/witch_bride", FCVAR_NOTIFY|FCVAR_PLUGIN); +} + +public OnMapStart() +{ + if (!GetConVarBool(g_hEnabled)) return; + + if (!IsModelPrecached("models/infected/witch.mdl")) PrecacheModel("models/infected/witch.mdl"); + if (!IsModelPrecached("models/infected/witch_bride.mdl")) PrecacheModel("models/infected/witch_bride.mdl"); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_RespawnStat.sp b/addons/sourcemod/scripting/l4d_RespawnStat.sp new file mode 100644 index 00000000..69c37ada --- /dev/null +++ b/addons/sourcemod/scripting/l4d_RespawnStat.sp @@ -0,0 +1,313 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY + +#define PLUGIN_VERSION "1.5" + +public Plugin myinfo = +{ + name = "RespawnStat", + author = "Dragokas & SilverShot", + description = "Save statistics of player on manual respawn doing by any plugin", + version = PLUGIN_VERSION, + url = "https://github.com/dragokas" +} + +/* + ChangeLog: + + 1.5 (05-Dec-2018) + - Added additional events to be extra safe in clearing statistics on round start. + + 1.4 (17-Sep-2018) + - Added the list of L4d2 properties (thanks to cravenge). + + 1.3 (15-Sep-2018) + - The last try to fix annoying bug with moving statistics between rounds. + + 1.2 (10-Sep-2018) + - Finally fix bug with case when previous level stat has loaded on some servers where player_spawn event happens twice for each player. + + 1.1 (10-Sep-2018) + - Fixed bug when previous level stat has loaded. + + 1.0 Alpha (30-May-2018) + - Initial release (wrapper for Silvers' SaveLoadStat code) +*/ + +char g_sPlayerSave[45][] = // Thanks to SilverShot & cravenge +{ + "m_checkpointAwardCounts", + "m_missionAwardCounts", + "m_checkpointZombieKills", + "m_missionZombieKills", + "m_checkpointSurvivorDamage", + "m_missionSurvivorDamage", + "m_classSpawnCount", + "m_checkpointMedkitsUsed", + "m_checkpointPillsUsed", + "m_missionMedkitsUsed", + "m_checkpointMolotovsUsed", + "m_missionMolotovsUsed", + "m_checkpointPipebombsUsed", + "m_missionPipebombsUsed", + "m_missionPillsUsed", + "m_checkpointDamageTaken", + "m_missionDamageTaken", + "m_checkpointReviveOtherCount", + "m_missionReviveOtherCount", + "m_checkpointFirstAidShared", + "m_missionFirstAidShared", + "m_checkpointIncaps", + "m_missionIncaps", + "m_checkpointDamageToTank", + "m_checkpointDamageToWitch", + "m_missionAccuracy", + "m_checkpointHeadshots", + "m_checkpointHeadshotAccuracy", + "m_missionHeadshotAccuracy", + "m_checkpointDeaths", + "m_missionDeaths", + "m_checkpointPZIncaps", + "m_checkpointPZTankDamage", + "m_checkpointPZHunterDamage", + "m_checkpointPZSmokerDamage", + "m_checkpointPZBoomerDamage", + "m_checkpointPZKills", + "m_checkpointPZPounces", + "m_checkpointPZPushes", + "m_checkpointPZTankPunches", + "m_checkpointPZTankThrows", + "m_checkpointPZHung", + "m_checkpointPZPulled", + "m_checkpointPZBombed", + "m_checkpointPZVomited" +}; +char g_sPlayerSave_L4d2[15][] = +{ + "m_checkpointBoomerBilesUsed", + "m_missionBoomerBilesUsed", + "m_checkpointAdrenalinesUsed", + "m_missionAdrenalinesUsed", + "m_checkpointDefibrillatorsUsed", + "m_missionDefibrillatorsUsed", + "m_checkpointMeleeKills", + "m_missionMeleeKills", + "m_checkpointPZJockeyDamage", + "m_checkpointPZSpitterDamage", + "m_checkpointPZChargerDamage", + "m_checkpointPZHighestDmgPounce", + "m_checkpointPZLongestSmokerGrab", + "m_checkpointPZLongestJockeyRide", + "m_checkpointPZNumChargeVictims" +}; + +#define TEAM_SURVIVOR 2 +#define TEAM_INFECTED 3 + +ConVar g_hCvarEnable; +ConVar g_hCvarTeamReq; + +int g_bEnabled; +int g_iTeamReq; +int g_iPlayerData[MAXPLAYERS+1][sizeof(g_sPlayerSave)]; +int g_iPlayerData_L4d2[MAXPLAYERS+1][sizeof(g_sPlayerSave_L4d2)]; +int g_iUserIdBind[MAXPLAYERS+1]; + +float g_fPlayerData[MAXPLAYERS+1][2]; + +bool g_bLockSave[MAXPLAYERS+1]; +bool g_bDead[MAXPLAYERS+1]; +//bool g_bLeft4Dead1 = false; +bool g_bLeft4Dead2 = false; + + +public void OnPluginStart() +{ + g_hCvarEnable = CreateConVar( "l4d_repawn_stat_enable", "1", "Enable RespawnStat plugin (1 - On / 0 - Off)", CVAR_FLAGS ); + g_hCvarTeamReq = CreateConVar( "l4d_repawn_stat_team", "4", "What team should statistics be saved for (4 - Survivors only, 8 - Infected only, 16 - Both)", CVAR_FLAGS ); + CreateConVar( "l4d_repawn_stat_version", PLUGIN_VERSION, "RespawnStat plugin version", FCVAR_DONTRECORD ); + + AutoExecConfig(true, "l4d_repawn_stat"); + + HookConVarChange(g_hCvarEnable, ConVarChanged); + GetCvars(); +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if (test == Engine_Left4Dead) { + //g_bLeft4Dead1 = true; + } + else if (test == Engine_Left4Dead2) { + g_bLeft4Dead2 = true; + } + else + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + return APLRes_Success; +} + +public void ConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) +{ + GetCvars(); +} + +void GetCvars() +{ + g_bEnabled = g_hCvarEnable.BoolValue; + g_iTeamReq = g_hCvarTeamReq.IntValue; + InitHook(); +} + +void InitHook() +{ + static bool bHooked; + + if (g_bEnabled) { + if (!bHooked) { + HookEvent("player_spawn", Event_PlayerSpawn); + HookEvent("player_death", Event_PlayerDeath); + HookEvent("round_start", Event_RoundEnd, EventHookMode_PostNoCopy); + HookEvent("map_transition", Event_RoundEnd, EventHookMode_PostNoCopy); + HookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); + HookEvent("finale_win", Event_RoundEnd, EventHookMode_PostNoCopy); + HookEvent("mission_lost", Event_RoundEnd, EventHookMode_PostNoCopy); + bHooked = true; + } + } else { + if (bHooked) { + UnhookEvent("player_spawn", Event_PlayerSpawn); + UnhookEvent("player_death", Event_PlayerDeath); + UnhookEvent("round_start", Event_RoundEnd, EventHookMode_PostNoCopy); + UnhookEvent("map_transition", Event_RoundEnd, EventHookMode_PostNoCopy); + UnhookEvent("round_end", Event_RoundEnd, EventHookMode_PostNoCopy); + UnhookEvent("finale_win", Event_RoundEnd, EventHookMode_PostNoCopy); + UnhookEvent("mission_lost", Event_RoundEnd, EventHookMode_PostNoCopy); + bHooked = false; + } + } +} + +public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) +{ + int UserId = event.GetInt("userid"); + int client = GetClientOfUserId(UserId); + + if( client > 0 && IsTeamComply(client)) { + g_bLockSave[client] = true; + + // don't load stat on first spawn (stat should be 0) + if (g_bDead[client]) + { + g_bDead[client] = false; + CreateTimer(1.0, Timer_LoadStatDelayed, UserId, TIMER_FLAG_NO_MAPCHANGE); + } + } + return Plugin_Continue; +} + +public Action Timer_LoadStatDelayed(Handle timer, int UserId) +{ + int client = GetClientOfUserId(UserId); + + if( client > 0 && IsClientInGame(client)) { + + // not died in 1.0 sec after spawn? + if (IsPlayerAlive(client)) { + + // is client <-> UserId binding still actual? , otherwise, it's another player + if (g_iUserIdBind[client] == UserId) + LoadStats(client); + } + } + g_bLockSave[client] = false; +} + +void ResetDeadState() +{ + for (int i = 1; i <= MaxClients; i++) + g_bDead[i] = false; +} + +public void OnMapStart() +{ + ResetDeadState(); +} + +public void OnMapEnd() +{ + ResetDeadState(); +} + +public Action Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) +{ + ResetDeadState(); + return Plugin_Continue; +} + +public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) +{ + int UserId = event.GetInt("userid"); + if (UserId > 0) { + int client = GetClientOfUserId(UserId); + g_bDead[client] = true; + + if( client > 0 && !g_bLockSave[client]) { + + if (IsClientInGame(client) && IsTeamComply(client)) { + g_iUserIdBind[client] = UserId; + SaveStats(client); + } + } + } + return Plugin_Continue; +} + +bool IsTeamComply(int client) +{ + return view_as((1 << GetClientTeam(client)) & g_iTeamReq); +} + +void SaveStats(int client) // Thanks to SilverShot +{ + g_fPlayerData[client][0] = GetEntPropFloat(client, Prop_Send, "m_maxDeadDuration"); + g_fPlayerData[client][1] = GetEntPropFloat(client, Prop_Send, "m_totalDeadDuration"); + + for( int i = 0; i < sizeof(g_iPlayerData[]); i++ ) + { + g_iPlayerData[client][i] = GetEntProp(client, Prop_Send, g_sPlayerSave[i]); + } + if (g_bLeft4Dead2) + { + for( int i = 0; i < sizeof(g_iPlayerData_L4d2[]); i++ ) + { + g_iPlayerData_L4d2[client][i] = GetEntProp(client, Prop_Send, g_sPlayerSave_L4d2[i]); + } + } +} + +void LoadStats(int client) // Thanks to SilverShot +{ + SetEntPropFloat(client, Prop_Send, "m_maxDeadDuration", g_fPlayerData[client][0]); + SetEntPropFloat(client, Prop_Send, "m_totalDeadDuration", g_fPlayerData[client][1]); + + for( int i = 0; i < sizeof(g_iPlayerData[]); i++ ) + { + SetEntProp(client, Prop_Send, g_sPlayerSave[i], g_iPlayerData[client][i]); + } + if (g_bLeft4Dead2) + { + for( int i = 0; i < sizeof(g_iPlayerData_L4d2[]); i++ ) + { + SetEntProp(client, Prop_Send, g_sPlayerSave_L4d2[i], g_iPlayerData_L4d2[client][i]); + } + } +} diff --git a/addons/sourcemod/scripting/l4d_afk_commands.sp b/addons/sourcemod/scripting/l4d_afk_commands.sp new file mode 100644 index 00000000..218d975b --- /dev/null +++ b/addons/sourcemod/scripting/l4d_afk_commands.sp @@ -0,0 +1,120 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * [L4D(2)] AFK and Join Team Commands (1.1) * + * * + * V 1.1 - Easy Editing and Changelog. * + * Added a changelog on this topic and in the .SP file. * + * Added a editing guide for adding/removing commands in the .SP file. * + * * + * V 1.0 - Initial Release : * + * Changelog starts here on the .SP file and on the site. * + * * + * V Beta - Tested on my server: * + * Creating/Testing the plugin on my server and in PawnStudio. * + * * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * EDITING THE COMMANDS: * + * Scroll down a bit, and you'll see for example a line like this: * + * * + * "RegConsoleCmd("sm_afk", AFKTurnClientToSpectate);" * + * * + * Broken apart: * + * "RegConsoleCmd" The command to make a command. * + * "("sm_afk"... * + * "sm_afk" is the command, anything which you type in chat with a '!' or * + * "/" before it MUST start with "sm_", after "sm_" you put the word. * + * Example: "sm_imgoingtospectate", if you wanna use that command, * + * you have to type "!imgoingtospectate" in the console. * + * * + * Yet, after "("sm_afk"" there's something else... * + * "("sm_afk", AFKTurnClientToSpectate); * + * If you look deeper into the code, you see: * + * public Action:AFKTurnClientToSpectate(client, argCount) * + * What's between the '(' and ')' doesn't matter for you. * + * Basicly, "AFKTurnClientToSpectate" if a name to forward to. * + * You have: * + * * + * -AFKTurnClientToSpectate : Moves the client to spectator team. * + * -AFKTurnClientToSurvivors : Moves the client to infected team. * + * -AFKTurnClientToInfected : Moves the client to survivors team. * + * * + * So, you want for example, when you type "!imgoingafk" in chat, * + * you want to go spectate... * + * * + * RegConsoleCmd ("sm_imgoingafk", AFKTurnClientToSpectate); * + * Remember to place the ';' behind it! * + * * + * Now you want, when you type "!iwannaplayinfected" in chat, * + * you want to go infected... * + * * + * RegConsoleCmd ("sm_iwannaplayinfected", AFKTurnClientToInfected); * + * Again, make sure to place the ';' behind it. * + * * + * So, that's how to custimize it! Have fun with this, and * + * when you like it, please leave behind a message on the forum topic. * + * * + * Remember, editing it correctly is safe, check if your line is like the others * + * and you'll be fine, after editing, go to: * + * "MODDIR/addons/sourcemod/scripting" and paste the .SP file in there. * + * Then drag the .SP file into "compile.exe" and let it compile. * + * Then go to the "compiled" folder and voilla, your edited plugin is there! * + * * + * NOTE: if you edit the plugin wrong, it won't compile or with errors... * + * * * * * * * * * * * * + * NOTE: This is CASE-SENSITIVE! * + * so: "!ImGoingToSpectate" isn't the same as "!imgoingtospectate"... * + * And doing so won't make it work... * + * Since people like to type everything in Lower-Case, i'd advise you to do too. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * End of Commentry, editing behind these few lines may lead to a non working, * + * unstable plugin causing crashes or bugs, editing at own risk. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#define PLUGIN_VERSION "1.1" +#define PLUGIN_NAME "[L4D(2)] AFK and Join Team Commands" + +#include + +public Plugin:myinfo = +{ + name = PLUGIN_NAME, + author = "MasterMe", + description = "Adds commands to let the player spectate and join team. (!afk, !survivors, !infected, etc.)", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?t=122476" +}; + +public OnPluginStart() +{ + CreateConVar("afk_spectate_commands_version", PLUGIN_VERSION, "Lasersight plugin version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); + + RegConsoleCmd("sm_afk", AFKTurnClientToSpectate); + RegConsoleCmd("sm_away", AFKTurnClientToSpectate); + RegConsoleCmd("sm_idle", AFKTurnClientToSpectate); + RegConsoleCmd("sm_spectate", AFKTurnClientToSpectate); + RegConsoleCmd("sm_spectators", AFKTurnClientToSpectate); + RegConsoleCmd("sm_joinspectators", AFKTurnClientToSpectate); + RegConsoleCmd("sm_jointeam1", AFKTurnClientToSpectate); + RegConsoleCmd("sm_survivors", AFKTurnClientToSurvivors); + RegConsoleCmd("sm_joinsurvivors", AFKTurnClientToSurvivors); + RegConsoleCmd("sm_jointeam2", AFKTurnClientToSurvivors); + RegConsoleCmd("sm_infected", AFKTurnClientToInfected); + RegConsoleCmd("sm_joininfected", AFKTurnClientToInfected); + RegConsoleCmd("sm_jointeam3", AFKTurnClientToInfected); + } + +public Action:AFKTurnClientToSpectate(client, argCount) +{ + ChangeClientTeam(client, 1) + return Plugin_Handled; +} + +public Action:AFKTurnClientToSurvivors(client, args) +{ + ClientCommand(client, "jointeam 2"); + return Plugin_Handled; +} +public Action:AFKTurnClientToInfected(client, args) +{ + ClientCommand(client, "jointeam 3"); + return Plugin_Handled; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_bot_sniper_rifle_aifix.sp b/addons/sourcemod/scripting/l4d_bot_sniper_rifle_aifix.sp new file mode 100644 index 00000000..6b0bcfd0 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_bot_sniper_rifle_aifix.sp @@ -0,0 +1,106 @@ +#include +#include +#include + +#pragma semicolon 1 + +#define CVAR_FLAGS FCVAR_PLUGIN +#define PLUGIN_VERSION "1.1" + +new ammoOffset; +new ammotype; + +public Plugin:myinfo = +{ + name = "[L4D & L4D2] Bot Sniper Rifle AI Fix", + author = "sereky", + description = "Survivor bots will not prefer pistols if they have sniper rifle.", + version = PLUGIN_VERSION, + url = "URL" +} + +public OnPluginStart() +{ + ammotype = 8; + + decl String:game_name[64]; + GetGameFolderName(game_name, sizeof(game_name)); + if (StrEqual(game_name, "left4dead2", false)) + { + ammotype = 36; + } + + ammoOffset = FindSendPropInfo("CTerrorPlayer", "m_iAmmo"); + + CreateConVar("l4d_bot_sniper_aifix_ver", PLUGIN_VERSION, "Version of the plugin.", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY); +} + +public OnClientPutInServer(client) +{ + SDKHook(client, SDKHook_WeaponSwitch, OnWeaponSwitch); +} + +public Action:OnWeaponSwitch(client, weapon) +{ + if (IsClientConnected(client)) + { + if (IsFakeClient(client)) + { + if (!IsIncapacitated(client)) + { + decl String:sClassname[32]; + GetEdictClassname(weapon, sClassname, sizeof(sClassname)); + if (StrEqual(sClassname, "weapon_pistol")) + { + new i_Weapon = GetPlayerWeaponSlot(client, 0); + + if (i_Weapon != -1) + { + new String:sniper[32]; + GetEdictClassname(GetPlayerWeaponSlot(client, 0), sniper, 32); + if (StrEqual(sniper, "weapon_hunting_rifle")) + { + new ammohunr = GetEntData(client, ammoOffset+(ammotype)); + if (ammohunr != 0) + { + return Plugin_Handled; + } + } + else if (StrEqual(sniper, "weapon_sniper_scout")) + { + new ammosnip = GetEntData(client, ammoOffset+(40)); + if (ammosnip != 0) + { + return Plugin_Handled; + } + } + else if (StrEqual(sniper, "weapon_sniper_military")) + { + new ammosnip = GetEntData(client, ammoOffset+(40)); + if (ammosnip != 0) + { + return Plugin_Handled; + } + } + else if (StrEqual(sniper, "weapon_sniper_awp")) + { + new ammosnip = GetEntData(client, ammoOffset+(40)); + if (ammosnip != 0) + { + return Plugin_Handled; + } + } + } + } + } + } + } + return Plugin_Continue; +} + +stock bool:IsIncapacitated(client) +{ + if( GetEntProp(client, Prop_Send, "m_isIncapacitated", 1) > 0 ) + return true; + return false; +} diff --git a/addons/sourcemod/scripting/l4d_client_timeout_override.sp b/addons/sourcemod/scripting/l4d_client_timeout_override.sp new file mode 100644 index 00000000..e5f798d4 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_client_timeout_override.sp @@ -0,0 +1,56 @@ +#include +#pragma semicolon 1 +#define PLUGIN_VERSION "1.0" + +public Plugin:myinfo = { + name = "[L4D] Client timeout override", + author = "djromero (SkyDavid)", + description = "Overrides client's timeout to prevent disconnect on long map changes", + version = PLUGIN_VERSION, + url = "www.theskyclan.com" +} + + +new Handle:h_timeout_value; +new TimeOut_Value; + + +public OnPluginStart() +{ + // We register the version cvar + CreateConVar("l4d_client_timeout_override_version", PLUGIN_VERSION, "Version of L4D Client timeout override plugin", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); + + // cvar for timeout value + h_timeout_value = CreateConVar("l4d_client_timeout_value", "120", "Value to override client's timeout", ADMFLAG_KICK, false, 0.0, false, 0.0); + TimeOut_Value = GetConVarInt(h_timeout_value); + HookConVarChange(h_timeout_value, ConVarTimeoutValue); +} + +public ConVarTimeoutValue(Handle:convar, const String:oldValue[], const String:newValue[]) +{ + TimeOut_Value = GetConVarInt(h_timeout_value); +} + +public OnClientPutInServer(client) +{ + if(!IsFakeClient(client)) + { + SetTimeOut(client); + } +} + +SetTimeOut(client) +{ + decl String:ipaddr[24]; + decl String:cmd[100]; + GetClientIP(client, ipaddr, sizeof(ipaddr)); + + if (!StrEqual(ipaddr,"loopback",false)) + { + // We change the timeout + Format (cmd, sizeof(cmd), "cl_timeout %i", TimeOut_Value); + ClientCommand(client, cmd); + } +} + + diff --git a/addons/sourcemod/scripting/l4d_freezesrceen unlock.sp b/addons/sourcemod/scripting/l4d_freezesrceen unlock.sp new file mode 100644 index 00000000..dafceacf --- /dev/null +++ b/addons/sourcemod/scripting/l4d_freezesrceen unlock.sp @@ -0,0 +1,67 @@ +#include +#include +#define PLUGIN_VERSION "1.0" +static bool IsFinale; + +public Plugin:myinfo = +{ + name = "Unlock screen freeze", + author = "ZBzibing", + description = "After the rescue was initiated, all players failed. When restarting, the perspective of the bystander was permanently frozen.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?p=2766144" +}; + +new Handle:Remove_camerafinale; + +public OnPluginStart() +{ + CreateConVar("sm_REC_version", PLUGIN_VERSION, "Plugins Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); + Remove_camerafinale = CreateConVar("l4d_REC_Swich", "1", "Plug-in switch.0:off 1:on", FCVAR_PLUGIN|FCVAR_REPLICATED|FCVAR_NOTIFY); + HookEventEx("round_start", REC, EventHookMode_Post); +} + +public Action:REC(Handle:event,const String:name[],bool:dontBroadcast) +{ + IsFinale = FindEntityByClassname(-1, "trigger_finale") != INVALID_ENT_REFERENCE; + if (!GetConVarBool(Remove_camerafinale)) + { + return Plugin_Continue; + } + new maxent = GetMaxEntities(), String:Removeview[64]; + for (new i=GetMaxClients();i. +*/ + + + +#define PLUGIN_VERSION "1.7" + +/*====================================================================================== + Plugin Info: + +* Name : [L4D & L4D2] God Frames Patch +* Author : SilverShot +* Descrp : Removes the IsInvulnerable function. +* Link : https://forums.alliedmods.net/showthread.php?t=320023 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +1.7 (26-Oct-2023) + - Fixed errors if the "m_zombieClass" is out of range. Thanks to "chungocanh12" for reporting. + +1.6 (29-Apr-2022) + - Added cvar "l4d_god_frames_incapacitated" to control damage on Incapacitated players. Requested by "ZBzibing". + - Changed cvar "l4d_god_frames_allow" to allow the value "2" which only enables the forward. + - Changed forward "OnTakeDamage_Invulnerable" params to show the damage type. + - Potentially fixed reviving players instantly being incapacitated. Thanks to "Eyal282" for reporting. + +1.5 (10-May-2020) + - Added better error log message when gamedata file is missing. + - Extra checks to prevent "IsAllowedGameMode" throwing errors. + - Fixed delay cvars being read wrong for: world, fire, common, witch, tank. + - Various changes to tidy up code. + +1.4 (01-Apr-2020) + - Fixed "IsAllowedGameMode" from throwing errors when the "_tog" cvar was changed before MapStart. + +1.3 (05-Feb-2020) + - Moved forward creation to the correct place. Was rushed for demonstration. + +1.2 (21-Jan-2020) + - Fixed L4D1 not using IsInvulnerable function in OnTakeDamage. Thanks to "fbef0102" for reporting. + - Thanks to Lux for various help. L4D1 now reads and sets the IsInvulnerable timer directly. + - L4D1 gamedata update required. + - L4D2 gamedata update required if updating from 1.0. + +1.1.2 beta (13-Jan-2020) + - Added forward "OnTakeDamage_Invulnerable" to allow 3rd party plugins to modify invulnerable damage. + +1.1.1 beta (13-Jan-2020) + - Fixed not resetting delay timers OnMapEnd. + +1.1 beta (13-Jan-2020) + - Added a heap of new cvars to control damage for individual infected etc. + - New gamedata required. + +1.0 (01-Dec-2019) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY +#define GAMEDATA "l4d_god_frames" +#define MAX_CVARS 12 + + +ConVar g_hCvarAllow, g_hCvarMPGameMode, g_hCvarModes, g_hCvarModesOff, g_hCvarModesTog, g_hCvarIncap; +ConVar g_hCvarDmg[MAX_CVARS], g_hCvarDel[MAX_CVARS]; +float g_fCvarDmg[MAX_CVARS], g_fCvarDel[MAX_CVARS]; +float g_fLastHit[MAXPLAYERS+1][MAX_CVARS]; +bool g_bCvarAllow, g_bCvarFoward, g_bMapStarted, g_bLateLoad, g_bLeft4Dead2, g_bCvarIncap; + +Handle g_hDetour, g_hForwardInvul; +bool g_bInvulnerable[MAXPLAYERS+1]; +float g_fIncapacitated[MAXPLAYERS+1]; +int m_invulnerabilityTimer, g_iClassTank; +float g_fInvulDurr[MAXPLAYERS+1]; +float g_fInvulTime[MAXPLAYERS+1]; + + + +// ==================================================================================================== +// PLUGIN +// ==================================================================================================== +public Plugin myinfo = +{ + name = "[L4D & L4D2] God Frames Patch", + author = "SilverShot", + description = "Removes the IsInvulnerable function.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=320023" +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test == Engine_Left4Dead ) g_bLeft4Dead2 = false; + else if( test == Engine_Left4Dead2 ) g_bLeft4Dead2 = true; + else + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + + RegPluginLibrary("l4d_god_frames"); + + g_hForwardInvul = CreateGlobalForward("OnTakeDamage_Invulnerable", ET_Hook, Param_Cell, Param_Cell, Param_FloatByRef, Param_CellByRef); + + g_bLateLoad = late; + return APLRes_Success; +} + +public void OnPluginStart() +{ + // ==================================================================================================== + // GAMEDATA + // ==================================================================================================== + char sPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sPath, sizeof(sPath), "gamedata/%s.txt", GAMEDATA); + if( FileExists(sPath) == false ) SetFailState("\n==========\nMissing required file: \"%s\".\nRead installation instructions again.\n==========", sPath); + + Handle hGameData = LoadGameConfigFile(GAMEDATA); + if( hGameData == null ) SetFailState("Failed to load \"%s.txt\" gamedata.", GAMEDATA); + + if( g_bLeft4Dead2 == false ) + { + m_invulnerabilityTimer = GameConfGetOffset(hGameData, "m_invulnerabilityTimer"); + if( m_invulnerabilityTimer == -1 ) + SetFailState("Failed to find \"m_invulnerabilityTimer\" offset."); + } + + g_hDetour = DHookCreateFromConf(hGameData, "CTerrorPlayer::IsInvulnerable"); + if( !g_hDetour ) + SetFailState("Failed to find \"CTerrorPlayer::IsInvulnerable\" signature."); + + delete hGameData; + + + + // ==================================================================================================== + // CVARS + // ==================================================================================================== + g_hCvarAllow = CreateConVar( "l4d_god_frames_allow", "1", "0=Plugin off, 1=Plugin on, 2=Enable forward only.", CVAR_FLAGS ); + g_hCvarDmg[0] = CreateConVar( "l4d_god_frames_damage_survivor", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by other Survivors.", CVAR_FLAGS ); + g_hCvarDmg[1] = CreateConVar( "l4d_god_frames_damage_world", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by World.", CVAR_FLAGS ); + g_hCvarDmg[2] = CreateConVar( "l4d_god_frames_damage_fire", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Fire.", CVAR_FLAGS ); + g_hCvarDmg[3] = CreateConVar( "l4d_god_frames_damage_common", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Common Infected.", CVAR_FLAGS ); + g_hCvarDmg[4] = CreateConVar( "l4d_god_frames_damage_witch", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Witch.", CVAR_FLAGS ); + g_hCvarDmg[5] = CreateConVar( "l4d_god_frames_damage_tank", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Tank.", CVAR_FLAGS ); + g_hCvarDmg[6] = CreateConVar( "l4d_god_frames_damage_smoker", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Smoker.", CVAR_FLAGS ); + g_hCvarDmg[7] = CreateConVar( "l4d_god_frames_damage_boomer", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Boomer.", CVAR_FLAGS ); + g_hCvarDmg[8] = CreateConVar( "l4d_god_frames_damage_hunter", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Hunter.", CVAR_FLAGS ); + + g_hCvarDel[0] = CreateConVar( "l4d_god_frames_delay_survivor", "0.0", "0.0=None. Minimum time before damage can be dealt again by other Survivors.", CVAR_FLAGS ); + g_hCvarDel[1] = CreateConVar( "l4d_god_frames_delay_world", "0.0", "0.0=None. Minimum time before damage can be dealt again by World.", CVAR_FLAGS ); + g_hCvarDel[2] = CreateConVar( "l4d_god_frames_delay_fire", "0.0", "0.0=None. Minimum time before damage can be dealt again by Fire.", CVAR_FLAGS ); + g_hCvarDel[3] = CreateConVar( "l4d_god_frames_delay_common", "0.0", "0.0=None. Minimum time before damage can be dealt again by Common Infected.", CVAR_FLAGS ); + g_hCvarDel[4] = CreateConVar( "l4d_god_frames_delay_witch", "0.0", "0.0=None. Minimum time before damage can be dealt again by Witch.", CVAR_FLAGS ); + g_hCvarDel[5] = CreateConVar( "l4d_god_frames_delay_tank", "0.0", "0.0=None. Minimum time before damage can be dealt again by Tank.", CVAR_FLAGS ); + g_hCvarDel[6] = CreateConVar( "l4d_god_frames_delay_smoker", "0.0", "0.0=None. Minimum time before damage can be dealt again by Smoker.", CVAR_FLAGS ); + g_hCvarDel[7] = CreateConVar( "l4d_god_frames_delay_boomer", "0.0", "0.0=None. Minimum time before damage can be dealt again by Boomer.", CVAR_FLAGS ); + g_hCvarDel[8] = CreateConVar( "l4d_god_frames_delay_hunter", "0.0", "0.0=None. Minimum time before damage can be dealt again by Hunter.", CVAR_FLAGS ); + + if( g_bLeft4Dead2 ) + { + g_hCvarDmg[9] = CreateConVar( "l4d_god_frames_damage_spitter", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Spitter.", CVAR_FLAGS ); + g_hCvarDmg[10] = CreateConVar( "l4d_god_frames_damage_jockey", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Jockey.", CVAR_FLAGS ); + g_hCvarDmg[11] = CreateConVar( "l4d_god_frames_damage_charger", "1.0", "0.0=None. 1.0=Full. Scale damage dealt by Charger.", CVAR_FLAGS ); + + g_hCvarDel[9] = CreateConVar( "l4d_god_frames_delay_spitter", "0.5", "0.0=None. Minimum time before damage can be dealt again by Spitter.", CVAR_FLAGS ); + g_hCvarDel[10] = CreateConVar( "l4d_god_frames_delay_jockey", "0.0", "0.0=None. Minimum time before damage can be dealt again by Jockey.", CVAR_FLAGS ); + g_hCvarDel[11] = CreateConVar( "l4d_god_frames_delay_charger", "0.0", "0.0=None. Minimum time before damage can be dealt again by Charger.", CVAR_FLAGS ); + } + + g_hCvarIncap = CreateConVar( "l4d_god_frames_incapacitated", "0", "0=Remove God Frames from incapacitated players, 1=Allow God Frames.", CVAR_FLAGS ); + + g_hCvarModes = CreateConVar( "l4d_god_frames_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); + g_hCvarModesOff = CreateConVar( "l4d_god_frames_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); + g_hCvarModesTog = CreateConVar( "l4d_god_frames_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); + CreateConVar( "l4d_god_frames_version", PLUGIN_VERSION, "God Frames Patch plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + AutoExecConfig(true, "l4d_god_frames"); + + g_hCvarMPGameMode = FindConVar("mp_gamemode"); + g_hCvarMPGameMode.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesTog.AddChangeHook(ConVarChanged_Allow); + g_hCvarModes.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesOff.AddChangeHook(ConVarChanged_Allow); + g_hCvarAllow.AddChangeHook(ConVarChanged_Allow); + + for( int i = 0; i < MAX_CVARS; i++ ) + { + if( g_bLeft4Dead2 == false && i == 9 ) break; + g_hCvarDmg[i].AddChangeHook(ConVarChanged_Cvars); + g_hCvarDel[i].AddChangeHook(ConVarChanged_Cvars); + } + + g_hCvarIncap.AddChangeHook(ConVarChanged_Cvars); + + g_iClassTank = g_bLeft4Dead2 ? 13 : 10; +} + +public void OnPluginEnd() +{ + DetourAddress(false); +} + +public void OnMapStart() +{ + g_bMapStarted = true; +} + +public void OnMapEnd() +{ + g_bMapStarted = false; + + ResetPlugin(); +} + +void ResetPlugin() +{ + for( int i = 0; i <= MAXPLAYERS; i++ ) + { + g_fIncapacitated[i] = 0.0; + + for( int x = 0; x < MAX_CVARS; x++ ) + { + g_fLastHit[i][x] = 0.0; + } + } +} + + +// ==================================================================================================== +// CVARS +// ==================================================================================================== +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +void ConVarChanged_Cvars(Handle convar, const char[] oldValue, const char[] newValue) +{ + GetCvars(); +} + +void GetCvars() +{ + for( int i = 0; i < MAX_CVARS; i++ ) + { + if( g_bLeft4Dead2 == false && i == 9 ) break; + g_fCvarDmg[i] = g_hCvarDmg[i].FloatValue; + g_fCvarDel[i] = g_hCvarDel[i].FloatValue; + } + + g_bCvarIncap = g_hCvarIncap.BoolValue; +} + +void ConVarChanged_Allow(Handle convar, const char[] oldValue, const char[] newValue) +{ + IsAllowed(); +} + +void IsAllowed() +{ + g_bCvarFoward = g_hCvarAllow.IntValue == 2; + bool bCvarAllow = g_hCvarAllow.BoolValue; + bool bAllowMode = IsAllowedGameMode(); + GetCvars(); + + if( g_bCvarAllow == false && bCvarAllow == true && bAllowMode == true ) + { + DetourAddress(true); + g_bCvarAllow = true; + + HookEvent("round_start", Event_RoundStart); + HookEvent("revive_success", Event_Revive); + + if( g_bLateLoad ) // Only on lateload, or if re-enabled. + { + for( int i = 1; i <= MaxClients; i++ ) + { + if( IsClientInGame(i) ) + { + OnClientPutInServer(i); + } + } + } + } + + else if( g_bCvarAllow == true && (bCvarAllow == false || bAllowMode == false) ) + { + DetourAddress(false); + g_bCvarAllow = false; + g_bLateLoad = true; // So SDKHooks can re-hook damage if re-enabled. + + UnhookEvent("round_start", Event_RoundStart); + UnhookEvent("revive_success", Event_Revive); + + for( int i = 1; i <= MaxClients; i++ ) + { + if( IsClientInGame(i) ) + { + if( g_bLeft4Dead2 == false ) + SDKUnhook(i, SDKHook_OnTakeDamage, OnTakeDamagePre); + SDKUnhook(i, SDKHook_OnTakeDamageAlive, OnTakeDamage); + } + } + } +} + +int g_iCurrentMode; +bool IsAllowedGameMode() +{ + if( g_hCvarMPGameMode == null ) + return false; + + int iCvarModesTog = g_hCvarModesTog.IntValue; + if( iCvarModesTog != 0 ) + { + if( g_bMapStarted == false ) + return false; + + g_iCurrentMode = 0; + + int entity = CreateEntityByName("info_gamemode"); + if( IsValidEntity(entity) ) + { + DispatchSpawn(entity); + HookSingleEntityOutput(entity, "OnCoop", OnGamemode, true); + HookSingleEntityOutput(entity, "OnSurvival", OnGamemode, true); + HookSingleEntityOutput(entity, "OnVersus", OnGamemode, true); + HookSingleEntityOutput(entity, "OnScavenge", OnGamemode, true); + ActivateEntity(entity); + AcceptEntityInput(entity, "PostSpawnActivate"); + if( IsValidEntity(entity) ) // Because sometimes "PostSpawnActivate" seems to kill the ent. + RemoveEdict(entity); // Because multiple plugins creating at once, avoid too many duplicate ents in the same frame + } + + if( g_iCurrentMode == 0 ) + return false; + + if( !(iCvarModesTog & g_iCurrentMode) ) + return false; + } + + char sGameModes[64], sGameMode[64]; + g_hCvarMPGameMode.GetString(sGameMode, sizeof(sGameMode)); + Format(sGameMode, sizeof(sGameMode), ",%s,", sGameMode); + + g_hCvarModes.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) == -1 ) + return false; + } + + g_hCvarModesOff.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) != -1 ) + return false; + } + + return true; +} + +void OnGamemode(const char[] output, int caller, int activator, float delay) +{ + if( strcmp(output, "OnCoop") == 0 ) + g_iCurrentMode = 1; + else if( strcmp(output, "OnSurvival") == 0 ) + g_iCurrentMode = 2; + else if( strcmp(output, "OnVersus") == 0 ) + g_iCurrentMode = 4; + else if( strcmp(output, "OnScavenge") == 0 ) + g_iCurrentMode = 8; +} + + + +// ==================================================================================================== +// EVENTS +// ==================================================================================================== +void Event_RoundStart(Event event, const char[] name, bool dontBroadcast) +{ + ResetPlugin(); +} + +void Event_Revive(Event event, const char[] name, bool dontBroadcast) +{ + if( event.GetInt("ledge_hang") == 1 ) return; + + int client = GetClientOfUserId(event.GetInt("subject")); + g_fIncapacitated[client] = GetGameTime() + 0.1; +} + + + +// ==================================================================================================== +// DAMAGE +// ==================================================================================================== +public void OnClientPutInServer(int client) +{ + if( g_bLeft4Dead2 == false ) + SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamagePre); + SDKHook(client, SDKHook_OnTakeDamageAlive, OnTakeDamage); +} + +Action OnTakeDamagePre(int client, int &attacker, int &inflictor, float &damage, int &damagetype) +{ + if( GetGameTime() < g_fIncapacitated[client] ) + { + g_fIncapacitated[client] = 0.0; + return Plugin_Continue; + } + + float timestamp = view_as(LoadFromAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 8), NumberType_Int32)); + if( timestamp >= GetGameTime() ) + { + // Instead of storing the timestamp inside this plugin on first detection which would make it inaccurate if the game ever changed it. + // We'll remove timer to make vulnerable and... + g_fInvulDurr[client] = view_as(LoadFromAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 4), NumberType_Int32)); + g_fInvulTime[client] = timestamp; + g_bInvulnerable[client] = true; + StoreToAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 4), view_as(0.0), NumberType_Int32); // m_duration + StoreToAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 8), view_as(0.0), NumberType_Int32); // m_timestamp + } + else + { + g_bInvulnerable[client] = false; + } + + return Plugin_Continue; +} + +Action OnTakeDamage(int client, int &attacker, int &inflictor, float &damage, int &damagetype) +{ + if( g_bInvulnerable[client] ) + { + // ... restore timer to continue tracking invul. Pre/Post. + if( g_bLeft4Dead2 == false ) + { + StoreToAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 4), view_as(g_fInvulDurr[client]), NumberType_Int32); // m_duration + StoreToAddress(GetEntityAddress(client) + view_as
(m_invulnerabilityTimer + 8), view_as(g_fInvulTime[client]), NumberType_Int32); // m_timestamp + } + + // Allow god frames on incapped + if( g_bCvarIncap && GetEntProp(client, Prop_Send, "m_isIncapacitated", 1) && GetEntProp(client, Prop_Send, "m_isHangingFromLedge", 1) == 0 ) + { + damage = 0.0; + return Plugin_Changed; + } + + // Allow God Frames when revived for 0.1 to prevent instant incap + if( GetGameTime() < g_fIncapacitated[client] ) + { + g_fIncapacitated[client] = 0.0; + return Plugin_Continue; + } + + // Forward + Action aResult = Plugin_Continue; + Call_StartForward(g_hForwardInvul); + Call_PushCell(client); + Call_PushCell(attacker); + Call_PushFloatRef(damage); + Call_PushCellRef(damagetype); + Call_Finish(aResult); + if( aResult != Plugin_Continue ) return aResult; + + // Only trigger the forward, allow god frames + if( g_bCvarFoward ) + { + damage = 0.0; + return Plugin_Changed; + } + + + + // Main subroutine + if( attacker >= 1 && attacker <= MaxClients ) + { + if( GetClientTeam(attacker) == 3 ) + { + // Special Infected + int index = GetEntProp(attacker, Prop_Send, "m_zombieClass") + 5; + if( index == g_iClassTank ) index = 5; // Tank zombieClass == 8 (L4D2) or 5 (L4D1), and 5 in our indexing. + if( index >= MAX_CVARS ) return Plugin_Continue; + + if( IsClientInvul(client, index) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[index]; // Scaled damage + return Plugin_Changed; + } else { // Can be team 2 or 4 (support for some mods) + // Survivors + if( IsClientInvul(client, 0) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[0]; // Scaled damage + return Plugin_Changed; + } + } else { + char classname[6]; + GetEdictClassname(attacker, classname, sizeof(classname)); + + switch( classname[3] ) + { + case 'l': // "worldspawn" + { + if( IsClientInvul(client, 1) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[1]; // Scaled damage + return Plugin_Changed; + } + case 'i': // "entityflame" + { + if( IsClientInvul(client, 2) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[2]; // Scaled damage + return Plugin_Changed; + } + case 'e': // "infected" + { + if( IsClientInvul(client, 3) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[3]; // Scaled damage + return Plugin_Changed; + } + case 'c': // "witch" + { + if( IsClientInvul(client, 4) ) // Time delay between god frame damage. + { + damage = 0.0; + return Plugin_Handled; + } + + damage *= g_fCvarDmg[4]; // Scaled damage + return Plugin_Changed; + } + } + } + } + return Plugin_Continue; +} + +bool IsClientInvul(int client, int index) +{ + if( g_fCvarDel[index] ) + { + float time = GetGameTime(); + if( time < g_fLastHit[client][index] ) + { + return true; + } + g_fLastHit[client][index] = g_fCvarDel[index] + time; + } + return false; +} + + + +// ==================================================================================================== +// DETOUR +// ==================================================================================================== +void DetourAddress(bool patch) +{ + static bool patched; + + if( !patched && patch ) + { + if( !DHookEnableDetour(g_hDetour, false, IsInvulnerablePre) ) + SetFailState("Failed to detour pre \"CTerrorPlayer::IsInvulnerable\"."); + + if( !DHookEnableDetour(g_hDetour, true, IsInvulnerablePost) ) + SetFailState("Failed to detour post \"CTerrorPlayer::IsInvulnerable\"."); + } + else if( patched && !patch ) + { + if( !DHookDisableDetour(g_hDetour, false, IsInvulnerablePre) ) + SetFailState("Failed to disable detour pre \"CTerrorPlayer::IsInvulnerable\"."); + + if( !DHookDisableDetour(g_hDetour, true, IsInvulnerablePost) ) + SetFailState("Failed to disable detour post \"CTerrorPlayer::IsInvulnerable\"."); + } +} + +MRESReturn IsInvulnerablePre() +{ + // Unused but pre hook required to prevent crashing. + return MRES_Ignored; +} + +MRESReturn IsInvulnerablePost(int pThis, Handle hReturn) +{ + bool invul = DHookGetReturn(hReturn); + g_bInvulnerable[pThis] = invul; + + if( invul ) + { + DHookSetReturn(hReturn, 0); + return MRES_Supercede; + } + + return MRES_Ignored; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_grenade_transfer.sp b/addons/sourcemod/scripting/l4d_grenade_transfer.sp new file mode 100644 index 00000000..88428278 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_grenade_transfer.sp @@ -0,0 +1,110 @@ +/* + + Created by DJ_WEST + + Web: http://amx-x.ru + AMX Mod X and SourceMod Russian Community + +*/ + +#include +#include + +#define PLUGIN_VERSION "1.0" + +#define TEAM_SURVIVOR 2 +#define SOUND_BIGREWARD "UI/BigReward.wav" +#define SOUND_LITTLEREWARD "UI/LittleReward.wav" + +new g_ActiveWeaponOffset + +new const String:g_Weapons[3][] = +{ + "weapon_molotov", + "weapon_pipe_bomb", + "weapon_vomitjar" +} + +public Plugin:myinfo = +{ + name = "Grenade Transfer", + author = "DJ_WEST", + description = "Transfer a pipebomb/molotov/vomitjar to your teammates", + version = PLUGIN_VERSION, + url = "http://amx-x.ru" +} + +public OnPluginStart() +{ + decl String:s_Game[12], Handle:h_Version + + GetGameFolderName(s_Game, sizeof(s_Game)) + if (!StrEqual(s_Game, "left4dead") && !StrEqual(s_Game, "left4dead2")) + SetFailState("Grenade Transfer supports Left 4 Dead and Left 4 Dead 2 only!") + + h_Version = CreateConVar("grenade_transfer_version", PLUGIN_VERSION, "Grenade Transfer version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY) + + g_ActiveWeaponOffset = FindSendPropInfo("CBasePlayer", "m_hActiveWeapon") + + HookEvent("player_shoved", EventPlayerShoved) + + SetConVarString(h_Version, PLUGIN_VERSION) +} + +public OnMapStart() +{ + if (!IsSoundPrecached(SOUND_BIGREWARD)) + PrecacheSound(SOUND_BIGREWARD, true) + + if (!IsSoundPrecached(SOUND_LITTLEREWARD)) + PrecacheSound(SOUND_LITTLEREWARD, true) +} + +public Action:EventPlayerShoved(Handle:h_Event, const String:s_Name[], bool:b_DontBroadcast) +{ + decl i_UserID, i_Victim, i_Attacker + + i_UserID = GetEventInt(h_Event, "userid") + i_Victim = GetClientOfUserId(i_UserID) + i_UserID = GetEventInt(h_Event, "attacker") + i_Attacker = GetClientOfUserId(i_UserID) + + if (GetClientTeam(i_Victim) != TEAM_SURVIVOR) + return Plugin_Continue + + decl String:s_Weapon[32], i + + GetClientWeapon(i_Attacker, s_Weapon, sizeof(s_Weapon)) + + for (i = 0; i < sizeof(g_Weapons); i++) + if (StrEqual(s_Weapon, g_Weapons[i])) + { + decl i_Weapon + + i_Weapon = GetEntDataEnt2(i_Attacker, g_ActiveWeaponOffset) + + if (IsValidEntity(i_Weapon) && IsValidEdict(i_Weapon) && GetPlayerWeaponSlot(i_Victim, 2) == -1) + { + RemoveEdict(i_Weapon) + PlaySound(i_Attacker, SOUND_BIGREWARD) + GiveGrenade(i_Victim, s_Weapon) + PlaySound(i_Victim, SOUND_LITTLEREWARD) + + break + } + } + + return Plugin_Continue +} + +public PlaySound(i_Client, const String:s_Sound[32]) + EmitSoundToClient(i_Client, s_Sound, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL, -1, NULL_VECTOR, NULL_VECTOR, true, 0.0) + +public GiveGrenade(i_Client, String:s_Class[32]) +{ + decl i_Ent + + i_Ent = CreateEntityByName(s_Class) + DispatchSpawn(i_Ent) + EquipPlayerWeapon(i_Client, i_Ent) +} diff --git a/addons/sourcemod/scripting/l4d_heal_revive_fix.sp b/addons/sourcemod/scripting/l4d_heal_revive_fix.sp deleted file mode 100644 index a47f8304..00000000 --- a/addons/sourcemod/scripting/l4d_heal_revive_fix.sp +++ /dev/null @@ -1,128 +0,0 @@ -/* -* Heal Revive Exploit Bug Fix -* Copyright (C) 2021 Silvers -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - - - -#define PLUGIN_VERSION "1.4a" - -/*======================================================================================= - Plugin Info: - -* Name : [L4D2] Heal Revive Exploit Bug Fix -* Author : SilverShot -* Descrp : Prevents survivors self healing and reviving players at the same time. -* Link : https://forums.alliedmods.net/showthread.php?t=297585 -* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers - -======================================================================================== - Change Log: - -1.4a (09-Jul-2021) - - L4D2: GameData file updated. Thanks to "Crasher_3637" for updating. - -1.4 (10-May-2020) - - Added better error log message when gamedata file is missing. - - Various changes to tidy up code. - -1.3 (26-Jun-2018) - - Fixed invalid entity error - Thanks to "midnight9" for reporting. - -1.2 (05-May-2018) - - Converted plugin source to the latest syntax utilizing methodmaps. Requires SourceMod 1.8 or newer. - -1.1 (28-Jun-2017) - - Converted to new syntax. - - Now only supports L4D2. - -1.0 (18-May-2017) - - Initial release. - -======================================================================================*/ - -#pragma semicolon 1 -#pragma newdecls required - -#include -#include - -#define GAMEDATA "l4d_revive_end" - -Handle g_hEndRev; - - - -// ==================================================================================================== -// PLUGIN INFO / START / END -// ==================================================================================================== -public Plugin myinfo = -{ - name = "[L4D2] Heal Revive Exploit Bug Fix", - author = "SilverShot", - description = "Prevents survivors self healing and reviving players at the same time.", - version = PLUGIN_VERSION, - url = "https://forums.alliedmods.net/showthread.php?t=297585" -} - -public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) -{ - EngineVersion test = GetEngineVersion(); - if( test != Engine_Left4Dead2 ) - { - strcopy(error, err_max, "Plugin only supports Left 4 Dead 2."); - return APLRes_SilentFailure; - } - return APLRes_Success; -} - -public void OnPluginStart() -{ - char sPath[PLATFORM_MAX_PATH]; - BuildPath(Path_SM, sPath, sizeof(sPath), "gamedata/%s.txt", GAMEDATA); - if( FileExists(sPath) == false ) SetFailState("\n==========\nMissing required file: \"%s\".\nRead installation instructions again.\n==========", sPath); - - Handle hGameData = LoadGameConfigFile(GAMEDATA); - if( hGameData == null ) SetFailState("Failed to load \"%s.txt\" gamedata.", GAMEDATA); - - StartPrepSDKCall(SDKCall_Player); - PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "CTerrorPlayer::StopRevivingSomeone"); - PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); - g_hEndRev = EndPrepSDKCall(); - if( g_hEndRev == null ) SetFailState("Unable to find the \"CTerrorPlayer::StopRevivingSomeone\" signature."); - - delete hGameData; - - HookEvent("revive_begin", Event_Revive); - - CreateConVar("l4d_heal_revive_fix", PLUGIN_VERSION, "Heal Revive Exploit Bug Fix version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); -} - -public Action Event_Revive(Event event, const char[] name, bool dontBroadcast) -{ - int userid = event.GetInt("userid"); - CreateTimer(0.1, TimerBlock, userid); -} - -public Action TimerBlock(Handle timer, any client) -{ - client = GetClientOfUserId(client); - if( client && IsClientInGame(client) ) - { - int m_useActionTarget = GetEntPropEnt(client, Prop_Send, "m_useActionTarget"); - if( m_useActionTarget == client ) SDKCall(g_hEndRev, client, true); - } -} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_heartbeat.sp b/addons/sourcemod/scripting/l4d_heartbeat.sp new file mode 100644 index 00000000..dbd2051a --- /dev/null +++ b/addons/sourcemod/scripting/l4d_heartbeat.sp @@ -0,0 +1,855 @@ +/* +* Heartbeat (Revive Fix - Post Revive Options) +* Copyright (C) 2025 Silvers +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + + + +#define PLUGIN_VERSION "1.17" + +/*====================================================================================== + Plugin Info: + +* Name : [L4D & L4D2] Heartbeat (Revive Fix - Post Revive Options) +* Author : SilverShot +* Descrp : Fixes survivor_max_incapacitated_count cvar increased values reverting black and white screen. Also some extra options. +* Link : https://forums.alliedmods.net/showthread.php?t=322132 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +1.17 (21-May-2025) + - Fixed client not in game errors. Thanks to "ioioio" for reporting. + +1.16 (21-Apr-2024) + - Fixed revive count increasing by 2 instead of 1 under certain circumstances. Thanks to "S.A.S" for reporting. + +1.15 (16-Apr-2024) + - Removed gamedata method patching the game which created a health bug. Thanks to "S.A.S" for reporting. + - Fixed issues with "m_isGoingToDie" being set to 0 not damaging the player. + +1.14 (12-Mar-2024) + - Fixed native "Heartbeat_SetRevives" not setting the correct revive count if "reviveLogic" bool was set to false. Thanks to "little_froy" for reporting and testing. + - Fixed clients not receiving damage from behind when on Easy difficulty, due to "m_isGoingToDie" being set to 0. Thanks to "little_froy" for reporting and testing. + - Fixed client not in game error. Thanks to "HarryPotter" for reporting. + - New GameData file required for the plugin to operate. + +1.13 (10-Mar-2023) + - Delayed revive logic by 1 frame to fix settings sometimes not being applied due to self revive plugins. Thanks to "Shao" for reporting. + +1.12 (19-Feb-2023) + - Added cvar "l4d_heartbeat_incap" to set black and white status when someone is incapped, not after revive. Requested by "Jestery". + - Fixed heartbeat sound being stopped when other players respawn. + +1.11 (03-Dec-2022) + - Plugin now resets the heartbeat sound for spectators. + +1.10 (15-Nov-2022) + - Fixed the revive count not carrying over when switching to/from idle state. Thanks to "NoroHime" for reporting. + +1.9 (02-Nov-2022) + - Fixed screen turning black and white when they're not read to die. Thanks to "Iciaria" for reporting and lots of help testing. + - Various changes to simplify the code. + +1.8 (25-Aug-2022) + - Changes to fix warnings when compiling on SM 1.11. + - Fixed native "Heartbeat_GetRevives" return type wrongfully set as void instead of int. + +1.7 (31-Mar-2021) + - Added command "sm_heartbeat" to toggle or specify someone as black and white health status. + +1.6 (15-Feb-2021) + - Fixed heartbeat sound playing when replacing a bot. Thanks to "Endoyurei Shirokuro" for reporting. + +1.5 (15-Jul-2020) + - Added more StopSound calls on player spawn. Thanks to "Endoyurei Shirokuro" for reporting. + +1.4 (10-May-2020) + - Various changes to tidy up code. + +1.3 (26-Apr-2020) + - Added native "Heartbeat_GetRevives" for 3rd party plugins to get a players current incap count. + - Added native "Heartbeat_SetRevives" for 3rd party plugins to set a players current incap count. + - Changes to prevent duplicate heartbeat sounds playing. + - Extra checks to prevent "IsAllowedGameMode" throwing errors. + +1.2 (11-Apr-2020) + - Fixed not resetting the heartbeat sound on player death. + +1.1 (01-Apr-2020) + - Fixed "IsAllowedGameMode" from throwing errors when the "_tog" cvar was changed before MapStart. + +1.0 (17-Mar-2020) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY +#define SOUND_HEART "player/heartbeatloop.wav" +#define DEBUG 0 + +#if DEBUG +#include +#endif + + +ConVar g_hCvarAllow, g_hCvarMPGameMode, g_hCvarModes, g_hCvarModesOff, g_hCvarModesTog, g_hCvarIncap, g_hCvarRevives, g_hCvarScreen, g_hCvarSound, g_hCvarVocal, g_hCvarMaxIncap, g_hCvarDecay; +bool g_bCvarAllow, g_bCvarIncap, g_bMapStarted, g_bLeft4Dead2; +float g_fDecayDecay, g_fTimeRevive; +int g_iCvarRevives, g_iCvarScreen, g_iCvarSound, g_iCvarVocal; +int g_iReviveCount[MAXPLAYERS+1]; +bool g_bHookedDamage[MAXPLAYERS+1]; +bool g_bIsGoingToDie[MAXPLAYERS+1]; + + +/** + * @brief Gets the revive count of a client. + * @remarks Because this plugin overwrites "m_currentReviveCount" netprop in L4D1, this native allows you to get the actual revive value for clients. + * + * @param client Client index to affect. + * + * @return Number or revives + */ +native int Heartbeat_GetRevives(int client); + +/** + * @brief Sets the revive count on a client. + * @remarks Because this plugin overwrites "m_currentReviveCount" netprop in L4D1, this native allows you to set the actual revive value for clients. + * + * @param client Client index to affect. + * @param reviveCount The Survivors revive count. + * @param reviveLogic Triggers the revive logic which determines if someones screen is black and white, if the heartbeat should play etc. + * Setting to false would only set their revive count and the Heartbeat settings would not be followed. Should probably always be default: true. + * + * @noreturn + */ +native void Heartbeat_SetRevives(int client, int reviveCount, bool reviveLogic = true); + +/* +// 3rd party respawn style plugins can optionally use this native when the Heartbeat plugin is detected with the following code: + +// Globals +native void Heartbeat_SetRevives(int client, int reviveCount, bool reviveLogic = true); // To allow calling the native +bool g_bHeartbeatPlugin; + +// Plugin start detect +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + MarkNativeAsOptional("Heartbeat_SetRevives"); +} + +public void OnAllPluginsLoaded() +{ + if( GetFeatureStatus(FeatureType_Native, "Heartbeat_SetRevives") != FeatureStatus_Unknown ) + { + g_bHeartbeatPlugin = true; + } +} + +// Code to put in your function. +void YourFunction() +{ + if( g_bHeartbeatPlugin ) + { + // Set to specific value; + Heartbeat_SetRevives(client, 2); // Set the number of current revives, 0 or greater + + // Increment + int revives = Heartbeat_GetRevives(client); + Heartbeat_SetRevives(client, revives + 1); + } +} +// */ + + + +// ==================================================================================================== +// PLUGIN INFO / START / END +// ==================================================================================================== +public Plugin myinfo = +{ + name = "[L4D & L4D2] Heartbeat (Revive Fix - Post Revive Options)", + author = "SilverShot", + description = "Fixes survivor_max_incapacitated_count cvar increased values reverting black and white screen. Also some extra options.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=322132" +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test == Engine_Left4Dead ) g_bLeft4Dead2 = false; + else if( test == Engine_Left4Dead2 ) g_bLeft4Dead2 = true; + else + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + + CreateNative("Heartbeat_GetRevives", Native_GetRevives); + CreateNative("Heartbeat_SetRevives", Native_SetRevives); + + RegPluginLibrary("l4d_heartbeat"); + + return APLRes_Success; +} + +public void OnPluginStart() +{ + LoadTranslations("common.phrases"); + + // ==================== + // CVARS + // ==================== + g_hCvarAllow = CreateConVar( "l4d_heartbeat_allow", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS ); + g_hCvarModes = CreateConVar( "l4d_heartbeat_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); + g_hCvarModesOff = CreateConVar( "l4d_heartbeat_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); + g_hCvarModesTog = CreateConVar( "l4d_heartbeat_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); + g_hCvarIncap = CreateConVar( "l4d_heartbeat_incap", "0", "0=Off. 1=Set black and white status when someone is incapped, not after revive.", CVAR_FLAGS ); + g_hCvarRevives = CreateConVar( "l4d_heartbeat_revives", "2", "How many revives are allowed before a player is killed (wrapper to overwrite survivor_max_incapacitated_count cvar).", CVAR_FLAGS ); + g_hCvarScreen = CreateConVar( "l4d_heartbeat_screen", "2", "How many revives until the black and white screen overlay starts.", CVAR_FLAGS ); + g_hCvarSound = CreateConVar( "l4d_heartbeat_sound", "2", "How many revives until the heartbeat sound starts playing.", CVAR_FLAGS ); + g_hCvarVocal = CreateConVar( "l4d_heartbeat_vocalize", "2", "How many revives until the player starts vocalizing that they're about to die.", CVAR_FLAGS ); + CreateConVar( "l4d_heartbeat_version", PLUGIN_VERSION, "Heartbeat plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + AutoExecConfig(true, "l4d_heartbeat"); + + g_hCvarDecay = FindConVar("pain_pills_decay_rate"); + g_hCvarMaxIncap = FindConVar("survivor_max_incapacitated_count"); + g_hCvarMPGameMode = FindConVar("mp_gamemode"); + g_hCvarMPGameMode.AddChangeHook(ConVarChanged_Allow); + g_hCvarModes.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesOff.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesTog.AddChangeHook(ConVarChanged_Allow); + g_hCvarAllow.AddChangeHook(ConVarChanged_Allow); + g_hCvarIncap.AddChangeHook(ConVarChanged_Cvars); + g_hCvarRevives.AddChangeHook(ConVarChanged_Cvars); + g_hCvarScreen.AddChangeHook(ConVarChanged_Cvars); + g_hCvarSound.AddChangeHook(ConVarChanged_Cvars); + g_hCvarVocal.AddChangeHook(ConVarChanged_Cvars); + g_hCvarDecay.AddChangeHook(ConVarChanged_Cvars); + g_hCvarMaxIncap.AddChangeHook(ConVarChanged_Cvars); + + IsAllowed(); + + + + // ==================== + // COMMANDS + // ==================== + AddCommandListener(CommandListener, "give"); + + RegAdminCmd("sm_heartbeat", CmdHeatbeat, ADMFLAG_ROOT, "Set someone as black and white health status or toggle their state. Usage: sm_heartbeat [#userid|name] [state: 0=Healed. 1=Black and white.]"); + + #if DEBUG + RegAdminCmd("sm_temphealth", CmdTempHealth, ADMFLAG_ROOT); + #endif + + + + // ==================== + // LATE LOAD + // ==================== + for( int i = 1; i <= MaxClients; i++ ) + { + if( IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) ) + { + g_iReviveCount[i] = GetEntProp(i, Prop_Send, "m_currentReviveCount"); + + if( !g_bHookedDamage[i] && g_iReviveCount[i] >= g_iCvarRevives ) + { + g_bHookedDamage[i] = true; + SDKHook(i, g_bLeft4Dead2 ? SDKHook_OnTakeDamageAlive : SDKHook_OnTakeDamage, OnTakeDamage); + SDKHook(i, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + } + } +} + +// DEBUG TESTING +#if DEBUG +Action CmdTempHealth(int client, int args) +{ + g_hCvarDecay.FloatValue = 0.0; + + L4D_ReviveSurvivor(client); + + SetTempHealth(client, 100.0); + return Plugin_Handled; +} + +void SetTempHealth(int client, float fHealth) +{ + SetEntPropFloat(client, Prop_Send, "m_healthBuffer", fHealth < 0.0 ? 0.0 : fHealth); + SetEntPropFloat(client, Prop_Send, "m_healthBufferTime", GetGameTime()); +} +#endif + +Action CmdHeatbeat(int client, int args) +{ + int state; + + if( args ) + { + char sArg[32], target_name[MAX_TARGET_LENGTH]; + + if( args == 2 ) + { + GetCmdArg(2, sArg, sizeof(sArg)); + state = StringToInt(sArg) + 1; + } + + GetCmdArg(1, sArg, sizeof(sArg)); + + int target_list[MAXPLAYERS], target_count; + bool tn_is_ml; + + if( (target_count = ProcessTargetString( + sArg, + client, + target_list, + MAXPLAYERS, + COMMAND_FILTER_ALIVE, /* Only allow alive players */ + target_name, + sizeof(target_name), + tn_is_ml)) <= 0 ) + { + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + + GetCmdArgString(sArg, sizeof(sArg)); + for( int i = 0; i < target_count; i++ ) + { + if( GetClientTeam(target_list[i]) == 2 ) + { + // Heal + if( state != 2 && g_iReviveCount[target_list[i]] >= g_iCvarScreen ) + { + // Toggle main health to temp health: + // SetEntityHealth(target_list[i], RoundToCeil(GetEntPropFloat(target_list[i], Prop_Send, "m_healthBuffer"))); + // SetEntPropFloat(target_list[i], Prop_Send, "m_healthBuffer", 0.0); + // SetEntPropFloat(target_list[i], Prop_Send, "m_healthBufferTime", GetGameTime()); + + ResetCount(target_list[i]); + ReviveLogic(target_list[i]); + } + else if( state != 1 && g_iReviveCount[target_list[i]] < g_iCvarScreen ) + { + // Toggle main health to temp health: + // SetEntPropFloat(target_list[i], Prop_Send, "m_healthBuffer", float(GetClientHealth(target_list[i]))); + // SetEntPropFloat(target_list[i], Prop_Send, "m_healthBufferTime", GetGameTime()); + // SetEntityHealth(target_list[i], 1); + + g_iReviveCount[target_list[i]] = g_iCvarScreen; + ReviveLogic(target_list[i]); + } + } + } + } + else + { + if( !client ) + { + ReplyToCommand(client, "Command can only be used %s", IsDedicatedServer() ? "in game on a dedicated server." : "in chat on a Listen server."); + return Plugin_Handled; + } + + // Heal + if( g_iReviveCount[client] >= g_iCvarScreen ) + { + // Toggle main health to temp health: + // SetEntityHealth(client, RoundToCeil(GetEntPropFloat(client, Prop_Send, "m_healthBuffer"))); + // SetEntPropFloat(client, Prop_Send, "m_healthBuffer", 0.0); + // SetEntPropFloat(client, Prop_Send, "m_healthBufferTime", GetGameTime()); + + ResetCount(client); + ReviveLogic(client); + } + else + { + // Toggle main health to temp health: + // SetEntPropFloat(client, Prop_Send, "m_healthBuffer", float(GetClientHealth(client))); + // SetEntPropFloat(client, Prop_Send, "m_healthBufferTime", GetGameTime()); + // SetEntityHealth(client, 1); + + g_iReviveCount[client] = g_iCvarScreen; + ReviveLogic(client); + } + } + + return Plugin_Handled; +} + +Action CommandListener(int client, const char[] command, int args) +{ + if( args > 0 ) + { + char buffer[8]; + GetCmdArg(1, buffer, sizeof(buffer)); + + if( strcmp(buffer, "health") == 0 ) + { + g_fTimeRevive = GetGameTime() + 0.1; + ResetCount(client); + } + } + + return Plugin_Continue; +} + +int Native_GetRevives(Handle plugin, int numParams) +{ + return g_iReviveCount[GetNativeCell(1)]; +} + +int Native_SetRevives(Handle plugin, int numParams) +{ + int client = GetNativeCell(1); + g_iReviveCount[client] = GetNativeCell(2); + + if( numParams != 3 || GetNativeCell(3) ) + { + ReviveLogic(client); + } + else + { + SetEntProp(client, Prop_Send, "m_currentReviveCount", g_iReviveCount[client]); + } + + return 0; +} + + + +// ==================================================================================================== +// CVARS +// ==================================================================================================== +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +void ConVarChanged_Allow(Handle convar, const char[] oldValue, const char[] newValue) +{ + IsAllowed(); +} + +void ConVarChanged_Cvars(Handle convar, const char[] oldValue, const char[] newValue) +{ + GetCvars(); +} + +void GetCvars() +{ + g_bCvarIncap = g_hCvarIncap.BoolValue; + g_iCvarRevives = g_hCvarRevives.IntValue; + g_iCvarScreen = g_hCvarScreen.IntValue; + g_iCvarSound = g_hCvarSound.IntValue; + g_iCvarVocal = g_hCvarVocal.IntValue; + g_fDecayDecay = g_hCvarDecay.FloatValue; + + SetConVarInt(g_hCvarMaxIncap, g_iCvarRevives, true); +} + +void IsAllowed() +{ + bool bCvarAllow = g_hCvarAllow.BoolValue; + bool bAllowMode = IsAllowedGameMode(); + GetCvars(); + + if( g_bCvarAllow == false && bCvarAllow == true && bAllowMode == true ) + { + g_bCvarAllow = true; + HookEvent("bot_player_replace", Event_BotReplace); + HookEvent("player_bot_replace", Event_ReplaceBot); + HookEvent("player_death", Event_Spawned); + HookEvent("player_spawn", Event_Spawned); + HookEvent("player_incapacitated", Event_Incapped); + HookEvent("heal_success", Event_Healed); + HookEvent("revive_success", Event_Revive); + } + + else if( g_bCvarAllow == true && (bCvarAllow == false || bAllowMode == false) ) + { + g_bCvarAllow = false; + UnhookEvent("bot_player_replace", Event_BotReplace); + UnhookEvent("player_bot_replace", Event_ReplaceBot); + UnhookEvent("player_death", Event_Spawned); + UnhookEvent("player_spawn", Event_Spawned); + UnhookEvent("player_incapacitated", Event_Incapped); + UnhookEvent("heal_success", Event_Healed); + UnhookEvent("revive_success", Event_Revive); + } +} + +int g_iCurrentMode; +bool IsAllowedGameMode() +{ + if( g_hCvarMPGameMode == null ) + return false; + + int iCvarModesTog = g_hCvarModesTog.IntValue; + if( iCvarModesTog != 0 ) + { + if( g_bMapStarted == false ) + return false; + + g_iCurrentMode = 0; + + int entity = CreateEntityByName("info_gamemode"); + DispatchSpawn(entity); + HookSingleEntityOutput(entity, "OnCoop", OnGamemode, true); + HookSingleEntityOutput(entity, "OnSurvival", OnGamemode, true); + HookSingleEntityOutput(entity, "OnVersus", OnGamemode, true); + HookSingleEntityOutput(entity, "OnScavenge", OnGamemode, true); + ActivateEntity(entity); + AcceptEntityInput(entity, "PostSpawnActivate"); + if( IsValidEntity(entity) ) // Because sometimes "PostSpawnActivate" seems to kill the ent. + RemoveEdict(entity); // Because multiple plugins creating at once, avoid too many duplicate ents in the same frame + + if( g_iCurrentMode == 0 ) + return false; + + if( !(iCvarModesTog & g_iCurrentMode) ) + return false; + } + + char sGameModes[64], sGameMode[64]; + g_hCvarMPGameMode.GetString(sGameMode, sizeof(sGameMode)); + Format(sGameMode, sizeof(sGameMode), ",%s,", sGameMode); + + g_hCvarModes.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) == -1 ) + return false; + } + + g_hCvarModesOff.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) != -1 ) + return false; + } + + return true; +} + +void OnGamemode(const char[] output, int caller, int activator, float delay) +{ + if( strcmp(output, "OnCoop") == 0 ) + g_iCurrentMode = 1; + else if( strcmp(output, "OnSurvival") == 0 ) + g_iCurrentMode = 2; + else if( strcmp(output, "OnVersus") == 0 ) + g_iCurrentMode = 4; + else if( strcmp(output, "OnScavenge") == 0 ) + g_iCurrentMode = 8; +} + + + +// ==================================================================================================== +// STUFF +// ==================================================================================================== +public void OnMapStart() +{ + g_fTimeRevive = 0.0; + g_bMapStarted = true; + PrecacheSound(SOUND_HEART); +} + +public void OnMapEnd() +{ + g_bMapStarted = false; +} + +void ResetCount(int client) +{ + g_bIsGoingToDie[client] = false; + g_iReviveCount[client] = 0; + ResetSoundObs(client); + ResetSound(client); + + if( g_bHookedDamage[client] ) + { + g_bHookedDamage[client] = false; + SDKUnhook(client, g_bLeft4Dead2 ? SDKHook_OnTakeDamageAlive : SDKHook_OnTakeDamage, OnTakeDamage); + SDKUnhook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } +} + +float GetTempHealth(int client) +{ + float fHealth = GetEntPropFloat(client, Prop_Send, "m_healthBuffer"); + fHealth -= (GetGameTime() - GetEntPropFloat(client, Prop_Send, "m_healthBufferTime")) * g_fDecayDecay; + return fHealth < 0.0 ? 0.0 : fHealth; +} + +void OnTakeDamagePost(int client, int attacker, int inflictor, float damage, int damagetype, int weapon, float damageForce[3], float damagePosition[3]) +{ + // Prevent yelling + if( g_iReviveCount[client] < g_iCvarVocal ) + { + g_bIsGoingToDie[client] = GetEntProp(client, Prop_Send, "m_isGoingToDie") == 1; + + if( g_bIsGoingToDie[client] ) + { + SetEntProp(client, Prop_Send, "m_isGoingToDie", 0); + } + } +} + +Action OnTakeDamage(int client, int &attacker, int &inflictor, float &damage, int &damagetype) +{ + // Prevent yelling + if( g_iReviveCount[client] < g_iCvarVocal ) + { + if( g_bIsGoingToDie[client] ) + { + SetEntProp(client, Prop_Send, "m_isGoingToDie", 1); + } + } + + // Allow to die + if( g_iReviveCount[client] >= g_iCvarRevives ) + { + int health = GetClientHealth(client) + RoundToFloor(GetTempHealth(client)); + + if( health <= 0.0 || (!g_bLeft4Dead2 && health - damage < 0.0) ) + { + // PrintToServer("Heartbeat: Allow die %N (%d/%d)", client, g_iReviveCount[client], g_iCvarRevives); + ResetSoundObs(client); + ResetSound(client); + + // Allow to die + if( g_bLeft4Dead2 ) + SetEntProp(client, Prop_Send, "m_bIsOnThirdStrike", 1); + else + SetEntProp(client, Prop_Send, "m_currentReviveCount", g_iCvarRevives); + + // Unhook + if( g_bHookedDamage[client] ) + { + g_bHookedDamage[client] = false; + SDKUnhook(client, g_bLeft4Dead2 ? SDKHook_OnTakeDamageAlive : SDKHook_OnTakeDamage, OnTakeDamage); + SDKUnhook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + } + } + + return Plugin_Continue; +} + + + +// ==================================================================================================== +// EVENTS +// ==================================================================================================== +void Event_BotReplace(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("player")); + int bot = GetClientOfUserId(event.GetInt("bot")); + if( client ) + { + ResetSound(client); + ResetSound(client); + ResetSound(client); + ResetSoundObs(client); + } + + g_iReviveCount[client] = g_iReviveCount[bot]; +} + +void Event_ReplaceBot(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("player")); + int bot = GetClientOfUserId(event.GetInt("bot")); + + g_iReviveCount[bot] = g_iReviveCount[client]; +} + +void Event_Spawned(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + if( client ) + { + ResetCount(client); + ResetSound(client); + ResetSound(client); + ResetSound(client); + ResetSoundObs(client); + } +} + +void Event_Incapped(Event event, const char[] name, bool dontBroadcast) +{ + if( g_bCvarIncap ) + { + int client = GetClientOfUserId(event.GetInt("userid")); + + g_iReviveCount[client]++; + ReviveLogic(client); + g_iReviveCount[client]--; + } +} + +void Event_Healed(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("subject")); + ResetCount(client); +} + +void Event_Revive(Event event, const char[] name, bool dontBroadcast) +{ + if( g_fTimeRevive >= GetGameTime() ) return; + + int userid; + if( (userid = event.GetInt("subject")) && event.GetInt("ledge_hang") == 0 ) + { + int client = GetClientOfUserId(userid); + if( client ) + { + RequestFrame(OnFrameRevive, userid); + } + } +} + +void OnFrameRevive(int client) +{ + client = GetClientOfUserId(client); + if( client && IsClientInGame(client) ) + { + g_iReviveCount[client]++; + ReviveLogic(client); + } +} + +void ReviveLogic(int client) +{ + // PrintToServer("Revives: %N (%d)", client, g_iReviveCount[client]); + + // Monitor for death + if( !g_bHookedDamage[client] && g_iReviveCount[client] >= g_iCvarRevives ) + { + g_bHookedDamage[client] = true; + SDKHook(client, g_bLeft4Dead2 ? SDKHook_OnTakeDamageAlive : SDKHook_OnTakeDamage, OnTakeDamage); + SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + + if( g_bLeft4Dead2 ) + { + SetEntProp(client, Prop_Send, "m_currentReviveCount", g_iReviveCount[client]); + } + + // Set black and white or not + if( g_iReviveCount[client] >= g_iCvarScreen ) + { + if( g_bLeft4Dead2 ) + SetEntProp(client, Prop_Send, "m_bIsOnThirdStrike", 1); + else + SetEntProp(client, Prop_Send, "m_currentReviveCount", 2); + } + else + { + if( g_bLeft4Dead2 ) + SetEntProp(client, Prop_Send, "m_bIsOnThirdStrike", 0); + else + SetEntProp(client, Prop_Send, "m_currentReviveCount", g_iReviveCount[client] == 2 ? 1 : g_iReviveCount[client]); + } + + // Vocalize death + if( g_iReviveCount[client] < g_iCvarVocal ) + { + if( !g_bHookedDamage[client] ) + { + g_bHookedDamage[client] = true; + SDKHook(client, g_bLeft4Dead2 ? SDKHook_OnTakeDamageAlive : SDKHook_OnTakeDamage, OnTakeDamage); + SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost); + } + + SetEntProp(client, Prop_Send, "m_isGoingToDie", 0); + } + else + { + SetEntProp(client, Prop_Send, "m_isGoingToDie", 1); + } + + // Heartbeat sound, stop dupe sound bug, only way. + RequestFrame(OnFrameSound, GetClientUserId(client)); + ResetSound(client); + ResetSound(client); + ResetSound(client); + ResetSound(client); + ResetSoundObs(client); + + if( g_iReviveCount[client] >= g_iCvarSound ) + { + // if( g_bLeft4Dead2 && fromEvent && g_iReviveCount[client] == g_iCvarRevives ) return; // Game emits itself, would duplicate sound even with stop... Seems to work fine now with multiple resets..? + CreateTimer(0.1, TimerSound, GetClientUserId(client)); + } +} + +void ResetSoundObs(int client) +{ + for( int i = 1; i <= MaxClients; i++ ) + { + if( IsClientInGame(i) && !IsPlayerAlive(i) && GetEntPropEnt(i, Prop_Send, "m_hObserverTarget") == client ) + { + RequestFrame(OnFrameSound, GetClientUserId(i)); + ResetSound(i); + ResetSound(i); + ResetSound(i); + ResetSound(i); + } + } +} + +void OnFrameSound(int client) +{ + client = GetClientOfUserId(client); + if( client && IsClientInGame(client) ) + { + ResetSound(client); + } +} + +void ResetSound(int client) +{ + StopSound(client, SNDCHAN_AUTO, SOUND_HEART); + StopSound(client, SNDCHAN_STATIC, SOUND_HEART); +} + +Action TimerSound(Handle timer, int client) +{ + client = GetClientOfUserId(client); + if( client && IsClientInGame(client) ) + { + EmitSoundToClient(client, SOUND_HEART, SOUND_FROM_PLAYER, SNDCHAN_STATIC); + } + + return Plugin_Continue; +} diff --git a/addons/sourcemod/scripting/l4d_late_model_precacher.sp b/addons/sourcemod/scripting/l4d_late_model_precacher.sp new file mode 100644 index 00000000..a78b8952 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_late_model_precacher.sp @@ -0,0 +1,93 @@ +/** + * Late Model Precacher: a L4D/L4D2 SourceMod Plugin + * Copyright (C) 2022 Alfred "Psyk0tik" Llagas + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + **/ + +#include +#include + +#define LMP_VERSION "1.0" + +public Plugin myinfo = +{ + name = "[L4D & L4D2] Late Model Precacher", + author = "Psyk0tik", + description = "Catches unprecached models and tries to precache them to prevent crashes.", + version = LMP_VERSION, + url = "https://github.com/Psykotikism/Late_Model_Precacher" +}; + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion evEngine = GetEngineVersion(); + if (evEngine != Engine_Left4Dead && evEngine != Engine_Left4Dead2) + { + strcopy(error, err_max, "\"Late Model Precacher\" only supports Left 4 Dead 1 & 2."); + + return APLRes_SilentFailure; + } + + return APLRes_Success; +} + +DynamicDetour g_ddUTILSetModelDetour; + +public void OnPluginStart() +{ + CreateConVar("l4d_late_model_precacher_version", LMP_VERSION, "Late Model Precacher Version", FCVAR_DONTRECORD|FCVAR_NOTIFY|FCVAR_REPLICATED|FCVAR_SPONLY); + + GameData gdLMP = new GameData("l4d_late_model_precacher"); + if (gdLMP == null) + { + SetFailState("Unable to load the \"l4d_late_model_precacher\" gamedata file."); + } + + g_ddUTILSetModelDetour = DynamicDetour.FromConf(gdLMP, "LMPDetour_UTIL_SetModel"); + if (g_ddUTILSetModelDetour == null) + { + delete gdLMP; + + SetFailState("Failed to detour: LMPDetour_UTIL_SetModel"); + } + + delete gdLMP; + + if (!g_ddUTILSetModelDetour.Enable(Hook_Pre, mreUTILSetModel)) + { + LogError("Failed to enable the pre-hook detour for the \"LMPDetour_UTIL_SetModel\" function."); + } +} + +public void OnPluginEnd() +{ + if (!g_ddUTILSetModelDetour.Disable(Hook_Pre, mreUTILSetModel)) + { + LogError("Failed to disable the pre-hook detour for the \"LMPDetour_UTIL_SetModel\" function."); + } +} + +MRESReturn mreUTILSetModel(DHookParam hParams) +{ + char sModel[PLATFORM_MAX_PATH]; + hParams.GetString(2, sModel, sizeof sModel); + if (!IsModelPrecached(sModel)) + { + LogError("UTIL_SetModel: Model %s is not precached. Precaching late.", sModel); + PrecacheModel(sModel, true); + + if (!IsModelPrecached(sModel)) + { + LogError("UTIL_SetModel: Model %s failed to late-precache. Aborting function.", sModel); + + return MRES_Supercede; + } + } + + return MRES_Ignored; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_notank.sp b/addons/sourcemod/scripting/l4d_notank.sp deleted file mode 100644 index 782e8a99..00000000 --- a/addons/sourcemod/scripting/l4d_notank.sp +++ /dev/null @@ -1,33 +0,0 @@ -#pragma semicolon 1 - -#include -#include - -public Plugin myinfo = -{ - name = "No Tank", - author = "Don, Forgetest", - description = "Slays any tanks that spawn. Designed for 1v1 configs.", - version = "1.2", - url = "https://github.com/SirPlease/L4D2-Competitive-Rework" -} - -public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) -{ - char sGame[12]; - GetGameFolderName(sGame, sizeof(sGame)); - if (StrEqual(sGame, "left4dead") || StrEqual(sGame, "left4dead2")) // Only load the plugin if the server is running Left 4 Dead or Left 4 Dead 2. - { - return APLRes_Success; - } - else - { - strcopy(error, err_max, "Plugin only supports L4D1/2"); - return APLRes_Failure; - } -} - -public Action L4D_OnSpawnTank(const float vecPos[3], const float vecAng[3]) -{ - return Plugin_Handled; -} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_nowitch.sp b/addons/sourcemod/scripting/l4d_nowitch.sp deleted file mode 100644 index d4dc152a..00000000 --- a/addons/sourcemod/scripting/l4d_nowitch.sp +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -public Plugin:myinfo = -{ - name = "No Witch", - author = "Sir", - description = "Slays any Witch that spwns", - version = "1", - url = "Nuh-uh" -} - -public OnPluginStart() -{ - HookEvent("witch_spawn", WitchSpawn); -} - -public WitchSpawn(Handle:event, const String:name[], bool:dontBroadcast) -{ - new iEnt = GetEventInt(event, "witchid"); - if (IsValidEntity(iEnt)) - { - AcceptEntityInput(iEnt, "Kill" ); - } -} diff --git a/addons/sourcemod/scripting/l4d_passing_Tank_no_instant_respawn.sp b/addons/sourcemod/scripting/l4d_passing_Tank_no_instant_respawn.sp deleted file mode 100644 index 055be28e..00000000 --- a/addons/sourcemod/scripting/l4d_passing_Tank_no_instant_respawn.sp +++ /dev/null @@ -1,65 +0,0 @@ -#pragma semicolon 1 - -#include -#include -#include - -new lastHumanTank = -1; - -public Plugin:myinfo = -{ - name = "L4D passing Tank no instant respawn", - author = "Visor, L4D1 port by Harry", - description = "Passing control to AI tank will no longer be rewarded with an instant respawn", - version = "0.3", - url = "https://github.com/Attano/Equilibrium" -}; - -public OnPluginStart() -{ - HookEvent("tank_frustrated", OnTankFrustrated, EventHookMode_Post); -} - -public OnTankFrustrated(Handle:event, const String:name[], bool:dontBroadcast) -{ - new tank = GetClientOfUserId(GetEventInt(event, "userid")); - if (!IsFakeClient(tank)) - { - lastHumanTank = tank; - CreateTimer(0.1, CheckForAITank, _, TIMER_FLAG_NO_MAPCHANGE); - } -} - -public Action:CheckForAITank(Handle:timer) -{ - for (new i = 1; i <= MaxClients; i++) - { - if (IsTank(i)) - { - if (IsInfected(lastHumanTank)&&IsFakeClient(i))//Tank is AI - { - TeleportEntity(lastHumanTank, - Float:{0.0, 0.0, 0.0}, // Teleport to map center - NULL_VECTOR, - NULL_VECTOR); - ForcePlayerSuicide(lastHumanTank); - CPrintToChat(lastHumanTank,"{default}[{olive}TS{default}] %T","No Instant Spawn",lastHumanTank); - for (new j = 1; j < MaxClients; j++) - if (IsClientInGame(j) && IsClientConnected(j) && !IsFakeClient(j) && (GetClientTeam(j) == 1 || GetClientTeam(j) == 3)) - CPrintToChat(j,"{default}[{olive}TS{default}] %N is given to AI Tank!",lastHumanTank); - } - return Plugin_Handled; - } - } - return Plugin_Handled; -} - -bool:IsTank(client) -{ - return (IsInfected(client) && GetEntProp(client, Prop_Send, "m_zombieClass") == 5); -} - -bool:IsInfected(client) -{ - return (client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 3); -} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_pause_message.sp b/addons/sourcemod/scripting/l4d_pause_message.sp new file mode 100644 index 00000000..1e309dc1 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_pause_message.sp @@ -0,0 +1,116 @@ +/* +* Pause Messages Block +* Copyright (C) 2021 Silvers +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + + + +#define PLUGIN_VERSION "1.1" + +/*======================================================================================= + Plugin Info: + +* Name : [L4D & L4D2] Pause Messages Block +* Author : SilverShot +* Descrp : Blocks the player paused and unpaused message spam in client consoles. +* Link : https://forums.alliedmods.net/showthread.php?t=321343 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +1.1 (20-Jul-2021) + - Added support for the "Pause plugin" by "CanadaRox, Sir, Forgetest". Thanks to "Tank Rush" for reporting. + +1.0 (06-Feb-2020) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +bool g_bLeft4Dead2; +ConVar g_hCvarPause; + + + +// ==================================================================================================== +// PLUGIN +// ==================================================================================================== +public Plugin myinfo = +{ + name = "[L4D & L4D2] Pause Messages Block", + author = "SilverShot", + description = "Blocks the player paused and unpaused message spam in client consoles.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=321343" +} + +public void OnPluginStart() +{ + CreateConVar("l4d_pause_message_version", PLUGIN_VERSION, "Pause Messages Block plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + + g_hCvarPause = FindConVar("sv_pausable"); +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test == Engine_Left4Dead ) g_bLeft4Dead2 = false; + else if( test == Engine_Left4Dead2 ) g_bLeft4Dead2 = true; + else + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + return APLRes_Success; +} + +// Doing this to detect if "Pause" plugin was added or removed on map changes. Otherwise it could block the plugin functioning correctly. +public void OnConfigsExecuted() +{ + static bool hooked; + + if( !g_bLeft4Dead2 || FindConVar("l4d2_pause_force_only") == null ) + { + if( !hooked ) + { + hooked = true; + AddCommandListener(CommandBlock, "pause"); + AddCommandListener(CommandBlock, "setpause"); + AddCommandListener(CommandBlock, "unpause"); + } + } else { + if( hooked ) + { + hooked = false; + RemoveCommandListener(CommandBlock, "pause"); + RemoveCommandListener(CommandBlock, "setpause"); + RemoveCommandListener(CommandBlock, "unpause"); + } + } +} + +public Action CommandBlock(int client, const char[] command, int argc) +{ + if( g_hCvarPause.IntValue == 0) // Check if games pausable and allow, otherwise block. + return Plugin_Handled; + return Plugin_Continue; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_pipebomb_ignore.sp b/addons/sourcemod/scripting/l4d_pipebomb_ignore.sp new file mode 100644 index 00000000..60bdab4f --- /dev/null +++ b/addons/sourcemod/scripting/l4d_pipebomb_ignore.sp @@ -0,0 +1,253 @@ +/* +* Bots Ignore PipeBombs and Shoot +* Copyright (C) 2021 Silvers +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + + + +#define PLUGIN_VERSION "2.0" + +/*====================================================================================== + Plugin Info: + +* Name : [L4D & L4D2] Bots Ignore PipeBombs and Shoot +* Author : SilverShot +* Descrp : Allows bots to shoot while a PipeBomb projectile is active on the map. +* Link : https://forums.alliedmods.net/showthread.php?t=333464 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +2.0 (28-Sep-2021) + - New method of patching the game. + - Now requires DHooks. + - Fixed common ignoring the pipebomb when Survivors are vomited on. Thanks to "Maur0" for reporting. + +1.1 (14-Jul-2021) + - Compatibility update for "Common Infected - Damage Received" and "PipeBomb Damage Modifier" plugins. + +1.0 (13-Jul-2021) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY +#define GAMEDATA "l4d_pipebomb_ignore" + + +ConVar g_hCvarAllow, g_hCvarModes, g_hCvarModesOff, g_hCvarModesTog, g_hCvarMPGameMode; +bool g_bCvarAllow, g_bMapStarted; + +Handle g_hDetour; + + + +// ==================================================================================================== +// PLUGIN START / END +// ==================================================================================================== +public Plugin myinfo = +{ + name = "[L4D & L4D2] Bots Ignore PipeBombs and Shoot", + author = "SilverShot", + description = "Allows bots to shoot while a PipeBomb projectile is active on the map.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=333464" +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test == Engine_Left4Dead && test == Engine_Left4Dead2 ) + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + + return APLRes_Success; +} + +public void OnPluginStart() +{ + // ==================================================================================================== + // CVARS + // ==================================================================================================== + g_hCvarAllow = CreateConVar( "l4d_pipebomb_ignore_allow", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS ); + g_hCvarModes = CreateConVar( "l4d_pipebomb_ignore_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); + g_hCvarModesOff = CreateConVar( "l4d_pipebomb_ignore_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); + g_hCvarModesTog = CreateConVar( "l4d_pipebomb_ignore_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); + CreateConVar( "l4d_pipebomb_ignore_version", PLUGIN_VERSION, "Bots Ignore PipeBombs and Shoot plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + AutoExecConfig(true, "l4d_pipebomb_ignore"); + + g_hCvarMPGameMode = FindConVar("mp_gamemode"); + g_hCvarMPGameMode.AddChangeHook(ConVarChanged_Allow); + g_hCvarModes.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesOff.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesTog.AddChangeHook(ConVarChanged_Allow); + g_hCvarAllow.AddChangeHook(ConVarChanged_Allow); + + + + // ==================================================================================================== + // Detours + // ==================================================================================================== + char sPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sPath, sizeof(sPath), "gamedata/%s.txt", GAMEDATA); + if( FileExists(sPath) == false ) SetFailState("\n==========\nMissing required file: \"%s\".\nRead installation instructions again.\n==========", sPath); + + Handle hGameData = LoadGameConfigFile(GAMEDATA); + if( hGameData == null ) SetFailState("Failed to load \"%s.txt\" gamedata.", GAMEDATA); + + g_hDetour = DHookCreateFromConf(hGameData, "CDirector::AuditActivePipeBombs"); + if( !g_hDetour ) + SetFailState("Failed to find \"CDirector::AuditActivePipeBombs\" signature."); + + delete hGameData; +} + + + +// ==================================================================================================== +// CVARS +// ==================================================================================================== +public void OnMapStart() +{ + g_bMapStarted = true; +} + +public void OnMapEnd() +{ + g_bMapStarted = false; +} + +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +public void ConVarChanged_Allow(Handle convar, const char[] oldValue, const char[] newValue) +{ + IsAllowed(); +} + +void IsAllowed() +{ + bool bCvarAllow = g_hCvarAllow.BoolValue; + bool bAllowMode = IsAllowedGameMode(); + + if( g_bCvarAllow == false && bCvarAllow == true && bAllowMode == true ) + { + g_bCvarAllow = true; + + if( !DHookEnableDetour(g_hDetour, false, AuditActivePipeBombs) ) + SetFailState("Failed to detour \"CDirector::AuditActivePipeBombs\" function."); + } + + else if( g_bCvarAllow == true && (bCvarAllow == false || bAllowMode == false) ) + { + g_bCvarAllow = false; + + if( !DHookDisableDetour(g_hDetour, false, AuditActivePipeBombs) ) + SetFailState("Failed to disable detour \"CDirector::AuditActivePipeBombs\" function."); + } +} + +int g_iCurrentMode; +bool IsAllowedGameMode() +{ + if( g_hCvarMPGameMode == null ) + return false; + + int iCvarModesTog = g_hCvarModesTog.IntValue; + if( iCvarModesTog != 0 ) + { + if( g_bMapStarted == false ) + return false; + + g_iCurrentMode = 0; + + int entity = CreateEntityByName("info_gamemode"); + if( IsValidEntity(entity) ) + { + DispatchSpawn(entity); + HookSingleEntityOutput(entity, "OnCoop", OnGamemode, true); + HookSingleEntityOutput(entity, "OnSurvival", OnGamemode, true); + HookSingleEntityOutput(entity, "OnVersus", OnGamemode, true); + HookSingleEntityOutput(entity, "OnScavenge", OnGamemode, true); + ActivateEntity(entity); + AcceptEntityInput(entity, "PostSpawnActivate"); + if( IsValidEntity(entity) ) // Because sometimes "PostSpawnActivate" seems to kill the ent. + RemoveEdict(entity); // Because multiple plugins creating at once, avoid too many duplicate ents in the same frame + } + + if( g_iCurrentMode == 0 ) + return false; + + if( !(iCvarModesTog & g_iCurrentMode) ) + return false; + } + + char sGameModes[64], sGameMode[64]; + g_hCvarMPGameMode.GetString(sGameMode, sizeof(sGameMode)); + Format(sGameMode, sizeof(sGameMode), ",%s,", sGameMode); + + g_hCvarModes.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) == -1 ) + return false; + } + + g_hCvarModesOff.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) != -1 ) + return false; + } + + return true; +} + +public void OnGamemode(const char[] output, int caller, int activator, float delay) +{ + if( strcmp(output, "OnCoop") == 0 ) + g_iCurrentMode = 1; + else if( strcmp(output, "OnSurvival") == 0 ) + g_iCurrentMode = 2; + else if( strcmp(output, "OnVersus") == 0 ) + g_iCurrentMode = 4; + else if( strcmp(output, "OnScavenge") == 0 ) + g_iCurrentMode = 8; +} + + + +// ==================================================================================================== +// DETOURS +// ==================================================================================================== +public MRESReturn AuditActivePipeBombs(Handle hReturn) +{ + DHookSetReturn(hReturn, 0); + return MRES_Supercede; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_sb.sp b/addons/sourcemod/scripting/l4d_sb.sp new file mode 100644 index 00000000..d64acb7e --- /dev/null +++ b/addons/sourcemod/scripting/l4d_sb.sp @@ -0,0 +1,99 @@ +/* Plugin Template generated by Pawn Studio */ + +#include +#include +#include +public Plugin:myinfo = +{ + name = "sb_takecontrol", + author = "pan xiaohai", + description = "<- Description ->", + version = "1.0", + url = "<- URL ->" +} + +public OnPluginStart() +{ + decl String:GameName[16]; + new GameMode; + GetConVarString(FindConVar("mp_gamemode"), GameName, sizeof(GameName)); + + if (StrEqual(GameName, "survival", false)) + GameMode = 3; + else if (StrEqual(GameName, "versus", false) || StrEqual(GameName, "teamversus", false) || StrEqual(GameName, "scavenge", false) || StrEqual(GameName, "teamscavenge", false)) + GameMode = 2; + else if (StrEqual(GameName, "coop", false) || StrEqual(GameName, "realism", false)) + GameMode = 1; + else + { + GameMode = 0; + } + if(GameMode!=2) + { + RegConsoleCmd("sm_kickabot",sm_kickabot, "kick a survivor bot "); + RegConsoleCmd("sm_addabot",sm_addabot, "create a survivor bot "); + RegConsoleCmd("sm_join",sm_join, "spectator join survivor team"); + RegConsoleCmd("sm_sb", sm_sb, "sb_takecontrol, need watch the bot after you dead"); + } +} +public Action:sm_sb(client, args) +{ + StripAndExecuteClientCommand(client, "sb_takecontrol", "", "", ""); + return Plugin_Handled; +} +public Action:sm_addabot(client, args) +{ + new bot = CreateFakeClient("I am not real."); + if(bot != 0) + { + ChangeClientTeam(bot, 2); + if(DispatchKeyValue(bot, "classname", "SurvivorBot") == false) + { + PrintToChatAll("\x01Create bot failed"); + return Plugin_Handled; + } + + if(DispatchSpawn(bot) == false) + { + PrintToChatAll("\x01Create bot failed"); + return Plugin_Handled; + } + SetEntityRenderColor(bot, 128, 0, 0, 255); + + CreateTimer(1.0, kick, bot, TIMER_FLAG_NO_MAPCHANGE); + PrintToChatAll("\x01Create bot sucessfully, spectators type !join to join survivors"); + } + return Plugin_Handled; +} +public Action:kick(Handle:timer, any:bot) +{ + KickClient(bot, "fake player"); + return Plugin_Stop; +} +public Action:sm_kickabot(client, args) +{ + for(new i=1; i. +*/ + + + +#define PLUGIN_VERSION "1.13" + +/*====================================================================================== + Plugin Info: + +* Name : [L4D & L4D2] First Map - Skip Intro Cutscenes +* Author : SilverShot +* Descrp : Makes players skip seeing the intro cutscene on first maps, so they can move right away. +* Link : https://forums.alliedmods.net/showthread.php?t=321993 +* Plugins : https://sourcemod.net/plugins.php?exact=exact&sortby=title&search=1&author=Silvers + +======================================================================================== + Change Log: + +1.13 (10-Apr-2022) + - Fixed the "l4d_skip_intro_modes_tog" cvar always turning off the plugin. Thanks to "Thefollors" for reporting. + +1.12 (01-Dec-2021) + - Changes to fix warnings when compiling on SourceMod 1.11. + - Minor change to fix bad coding practice. + +1.11 (11-Jul-2021) + - Slight optimization and change to fix the unhook event errors. + +1.10 (21-Jun-2021) + - Changes to fix the last update potentially not working for all maps. + +1.9 (20-Jun-2021) + - Changed some code to prevent adding multiple identical outputs. + +1.8 (15-Feb-2021) + - Blocked working on finale maps when not using left4dhooks. Thanks to "Zheldorg" for reporting. + +1.7 (10-Oct-2020) + - Minor change again to hopefully fix unhook event errors. + +1.6 (05-Oct-2020) + - Changes to hopefully fix unhook event errors. + +1.5 (01-Oct-2020) + - Changes to support "The Last Stand" update. + - Fixed lateload not enabling the plugin. + +1.4 (10-May-2020) + - Added cvars: "l4d_skip_intro_allow", "l4d_skip_intro_modes", "l4d_skip_intro_modes_off" and "l4d_skip_intro_modes_tog". + - Cvar config saved as "l4d_skip_intro.cfg" in "cfgs/sourcemod" folder. + - Extra checks to skip intro on some addon maps that use a different entity. + - Thanks to "TiTz" for reporting. + +1.3 (29-Apr-2020) + - Increased the timer delay from 0.1 to 1.0 due to some conditions failing to skip intro. Thanks to "TiTz" for reporting. + +1.2 (08-Apr-2020) + - Added a check incase the director entity was not found. Thanks to "TiTz" for reporting. + +1.1 (16-Mar-2020) + - Fixed not working on all maps when info_director is named differently. + +1.0 (10-Mar-2020) + - Initial release. + +======================================================================================*/ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY + + +ConVar g_hCvarAllow, g_hCvarMPGameMode, g_hCvarModes, g_hCvarModesOff, g_hCvarModesTog; +bool g_bCvarAllow, g_bMapStarted, g_bLeft4DHooks, g_bFaded, g_bOutput1, g_bOutput2; + + + +// ==================================================================================================== +// PLUGIN INFO / START +// ==================================================================================================== +native bool L4D_IsFirstMapInScenario(); // So it compiles on forum, optional native. + +public Plugin myinfo = +{ + name = "[L4D & L4D2] First Map - Skip Intro Cutscenes", + author = "SilverShot", + description = "Makes players skip seeing the intro cutscene on first maps, so they can move right away.", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=321993" +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + EngineVersion test = GetEngineVersion(); + if( test != Engine_Left4Dead && test != Engine_Left4Dead2 ) + { + strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2."); + return APLRes_SilentFailure; + } + + MarkNativeAsOptional("L4D_IsFirstMapInScenario"); + + return APLRes_Success; +} + +public void OnAllPluginsLoaded() +{ + g_bLeft4DHooks = GetFeatureStatus(FeatureType_Native, "L4D_IsFirstMapInScenario") == FeatureStatus_Available; +} + +public void OnPluginStart() +{ + g_hCvarAllow = CreateConVar( "l4d_skip_intro_allow", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS ); + g_hCvarModes = CreateConVar( "l4d_skip_intro_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); + g_hCvarModesOff = CreateConVar( "l4d_skip_intro_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); + g_hCvarModesTog = CreateConVar( "l4d_skip_intro_modes_tog", "0", "Turn on the plugin in these game modes. 0=All, 1=Coop, 2=Survival, 4=Versus, 8=Scavenge. Add numbers together.", CVAR_FLAGS ); + CreateConVar( "l4d_skip_intro_version", PLUGIN_VERSION, "Skip Intro plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + AutoExecConfig(true, "l4d_skip_intro"); + + g_hCvarMPGameMode = FindConVar("mp_gamemode"); + g_hCvarMPGameMode.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesTog.AddChangeHook(ConVarChanged_Allow); + g_hCvarModes.AddChangeHook(ConVarChanged_Allow); + g_hCvarModesOff.AddChangeHook(ConVarChanged_Allow); + g_hCvarAllow.AddChangeHook(ConVarChanged_Allow); + + HookEvent("gameinstructor_nodraw", Event_NoDraw, EventHookMode_PostNoCopy); // Because round_start can be too early when clients are not in-game. This triggers when the cutscene starts. +} + + + +// ==================================================================================================== +// CVARS +// ==================================================================================================== +public void OnConfigsExecuted() +{ + IsAllowed(); +} + +public void OnMapStart() +{ + g_bMapStarted = true; +} + +public void OnMapEnd() +{ + g_bMapStarted = false; +} + +public void ConVarChanged_Allow(Handle convar, const char[] oldValue, const char[] newValue) +{ + IsAllowed(); +} + +void IsAllowed() +{ + bool bCvarAllow = g_hCvarAllow.BoolValue; + bool bAllowMode = IsAllowedGameMode(); + + if( g_bCvarAllow == false && bCvarAllow == true && bAllowMode == true ) + { + g_bCvarAllow = true; + } + + else if( g_bCvarAllow == true && (bCvarAllow == false || bAllowMode == false) ) + { + g_bCvarAllow = false; + } +} + +int g_iCurrentMode; +bool IsAllowedGameMode() +{ + if( g_hCvarMPGameMode == null ) + return false; + + int iCvarModesTog = g_hCvarModesTog.IntValue; + if( iCvarModesTog != 0 ) + { + if( g_bMapStarted == false ) + return false; + + g_iCurrentMode = 0; + + int entity = CreateEntityByName("info_gamemode"); + if( IsValidEntity(entity) ) + { + DispatchSpawn(entity); + HookSingleEntityOutput(entity, "OnCoop", OnGamemode, true); + HookSingleEntityOutput(entity, "OnSurvival", OnGamemode, true); + HookSingleEntityOutput(entity, "OnVersus", OnGamemode, true); + HookSingleEntityOutput(entity, "OnScavenge", OnGamemode, true); + ActivateEntity(entity); + AcceptEntityInput(entity, "PostSpawnActivate"); + if( IsValidEntity(entity) ) // Because sometimes "PostSpawnActivate" seems to kill the ent. + RemoveEdict(entity); // Because multiple plugins creating at once, avoid too many duplicate ents in the same frame + } + + if( g_iCurrentMode == 0 ) + return false; + + if( !(iCvarModesTog & g_iCurrentMode) ) + return false; + } + + char sGameModes[64], sGameMode[64]; + g_hCvarMPGameMode.GetString(sGameMode, sizeof(sGameMode)); + Format(sGameMode, sizeof(sGameMode), ",%s,", sGameMode); + + g_hCvarModes.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) == -1 ) + return false; + } + + g_hCvarModesOff.GetString(sGameModes, sizeof(sGameModes)); + if( sGameModes[0] ) + { + Format(sGameModes, sizeof(sGameModes), ",%s,", sGameModes); + if( StrContains(sGameModes, sGameMode, false) != -1 ) + return false; + } + + return true; +} + +public void OnGamemode(const char[] output, int caller, int activator, float delay) +{ + if( strcmp(output, "OnCoop") == 0 ) + g_iCurrentMode = 1; + else if( strcmp(output, "OnSurvival") == 0 ) + g_iCurrentMode = 2; + else if( strcmp(output, "OnVersus") == 0 ) + g_iCurrentMode = 4; + else if( strcmp(output, "OnScavenge") == 0 ) + g_iCurrentMode = 8; +} + + + +// ==================================================================================================== +// EVENTS +// ==================================================================================================== +public void Event_NoDraw(Event event, const char[] name, bool dontBroadcast) +{ + if( g_bCvarAllow && (!g_bLeft4DHooks || L4D_IsFirstMapInScenario()) ) + { + // Block finale + if( !g_bLeft4DHooks && FindEntityByClassname(-1, "trigger_finale") != INVALID_ENT_REFERENCE ) + return; + + g_bFaded = false; + g_bOutput1 = false; + g_bOutput2 = false; + + // Multiple times to make sure it works + CreateTimer(1.0, TimerStart); + CreateTimer(5.0, TimerStart); + CreateTimer(6.0, TimerStart); + CreateTimer(6.5, TimerStart); + CreateTimer(7.0, TimerStart); + CreateTimer(8.0, TimerStart); + } +} + +public Action TimerStart(Handle timer) +{ + char buffer[128]; // 128 should be long enough, 3rd party maps could be longer than Valves ~52 chars (including OnUser1 below)? + + char director[32]; + int entity = FindEntityByClassname(-1, "info_director"); // Every map should have a director, but apparently some still throw -1 error. + if( entity != -1 ) + { + GetEntPropString(entity, Prop_Data, "m_iName", director, sizeof(director)); + + for( int i = 0; i < 2; i++ ) + { + entity = -1; + while( (entity = FindEntityByClassname(entity, i == 0 ? "point_viewcontrol_survivor" : "point_viewcontrol_multiplayer")) != INVALID_ENT_REFERENCE ) + { + // ALLOW CONTROL + if( (i == 0 && !g_bOutput1) || (i == 1 && !g_bOutput2) ) + { + // Testing outputs + // static int tester; + // FormatEx(buffer, sizeof(buffer), "OnUser1 silvers_point_cmd:Command:say test%d:0:-1", tester++); + // SetVariantString(buffer); + // AcceptEntityInput(entity, "AddOutput"); + + // ALLOW MOVEMENT + FormatEx(buffer, sizeof(buffer), "OnUser1 %s:ReleaseSurvivorPositions::0:-1", director); + SetVariantString(buffer); + AcceptEntityInput(entity, "AddOutput"); + + FormatEx(buffer, sizeof(buffer), "OnUser1 %s:FinishIntro::0:-1", director); + SetVariantString(buffer); + AcceptEntityInput(entity, "AddOutput"); + + AcceptEntityInput(entity, "FireUser1"); + + if( i == 0 ) g_bOutput1 = true; + else if( i == 1 ) g_bOutput2 = true; + } else { + AcceptEntityInput(entity, "FireUser1"); + } + + // STOP SCENE + SetVariantString("!self"); + AcceptEntityInput(entity, "StartMovement"); + + // RemoveEntity(entity); // Kill works good, but maybe some 3rd party maps use this for other scenes, so better to not kill.. especially if no left4dhooks and checking every map. + } + } + + // FADE IN + if( (g_bOutput1 || g_bOutput2 ) && !g_bFaded ) + { + g_bFaded = true; + + entity = CreateEntityByName("env_fade"); + DispatchKeyValue(entity, "spawnflags", "1"); + DispatchKeyValue(entity, "rendercolor", "0 0 0"); + DispatchKeyValue(entity, "renderamt", "255"); + DispatchKeyValue(entity, "holdtime", "1"); + DispatchKeyValue(entity, "duration", "1"); + DispatchSpawn(entity); + AcceptEntityInput(entity, "Fade"); + + SetVariantString("OnUser1 !self:Kill::2.5:-1"); + AcceptEntityInput(entity, "AddOutput"); + AcceptEntityInput(entity, "FireUser1"); + + // Testing outputs + // entity = CreateEntityByName("point_servercommand"); + // DispatchKeyValue(entity, "targetname", "silvers_point_cmd"); + // DispatchSpawn(entity); + } + } + + return Plugin_Continue; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_sm_respawn.sp b/addons/sourcemod/scripting/l4d_sm_respawn.sp new file mode 100644 index 00000000..ce8d48ee --- /dev/null +++ b/addons/sourcemod/scripting/l4d_sm_respawn.sp @@ -0,0 +1,193 @@ +#pragma semicolon 1 +#include +#include + +#define PLUGIN_VERSION "1.9.3" + + +public Plugin:myinfo = +{ + name = "L4D SM Respawn", + author = "AtomicStryker & Ivailosp", + description = "Let's you respawn Players by console", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?t=96249" +} + +static Float:g_pos[3]; +static Handle:hRoundRespawn = INVALID_HANDLE; +static Handle:hBecomeGhost = INVALID_HANDLE; +static Handle:hState_Transition = INVALID_HANDLE; +static Handle:hGameConf = INVALID_HANDLE; + +public OnPluginStart() +{ + decl String:game_name[24]; + GetGameFolderName(game_name, sizeof(game_name)); + if (!StrEqual(game_name, "left4dead2", false) && !StrEqual(game_name, "left4dead", false)) + { + SetFailState("Plugin supports Left 4 Dead and L4D2 only."); + } + + LoadTranslations("common.phrases"); + hGameConf = LoadGameConfigFile("l4drespawn"); + + CreateConVar("l4d_sm_respawn_version", PLUGIN_VERSION, "L4D SM Respawn Version", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY); + RegAdminCmd("sm_respawn", Command_Respawn, ADMFLAG_BAN, "sm_respawn [player2] ... [playerN] - respawn all listed players and teleport them where you aim"); + + if (hGameConf != INVALID_HANDLE) + { + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "RoundRespawn"); + hRoundRespawn = EndPrepSDKCall(); + if (hRoundRespawn == INVALID_HANDLE) SetFailState("L4D_SM_Respawn: RoundRespawn Signature broken"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "BecomeGhost"); + PrepSDKCall_AddParameter(SDKType_PlainOldData , SDKPass_Plain); + hBecomeGhost = EndPrepSDKCall(); + if (hBecomeGhost == INVALID_HANDLE && StrEqual(game_name, "left4dead2", false)) + LogError("L4D_SM_Respawn: BecomeGhost Signature broken"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "State_Transition"); + PrepSDKCall_AddParameter(SDKType_PlainOldData , SDKPass_Plain); + hState_Transition = EndPrepSDKCall(); + if (hState_Transition == INVALID_HANDLE && StrEqual(game_name, "left4dead2", false)) + LogError("L4D_SM_Respawn: State_Transition Signature broken"); + } + else + { + SetFailState("could not find gamedata file at addons/sourcemod/gamedata/l4drespawn.txt , you FAILED AT INSTALLING"); + } +} + +public Action:Command_Respawn(client, args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_respawn [player2] ... [playerN] - respawn all listed players"); + return Plugin_Handled; + } + + decl String:arg1[MAX_TARGET_LENGTH]; + decl String:target_name[MAX_TARGET_LENGTH]; + new target_list[MAXPLAYERS]; + new target_count; + new bool:tn_is_ml; + + GetCmdArg(1, arg1, sizeof(arg1)); + + if ((target_count = ProcessTargetString( + arg1, + client, + target_list, + MAXPLAYERS, + 0, // no filtering + target_name, + sizeof(target_name), + tn_is_ml)) <= 0) + { + /* This function replies to the admin with a failure message */ + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + + for (new i = 0; i < target_count; i++) + { + RespawnPlayer(client, target_list[i]); + } + + ShowActivity2(client, "[SM] ", "Respawned target '%s'", target_name); + + return Plugin_Handled; +} + +static RespawnPlayer(client, player_id) +{ + switch(GetClientTeam(player_id)) + { + case 2: + { + new bool:canTeleport = SetTeleportEndPoint(client); + + SDKCall(hRoundRespawn, player_id); + + CheatCommand(player_id, "give", "first_aid_kit"); + CheatCommand(player_id, "give", "smg"); + + if(canTeleport) + { + PerformTeleport(client,player_id,g_pos); + } + } + + case 3: + { + decl String:game_name[24]; + GetGameFolderName(game_name, sizeof(game_name)); + if (StrEqual(game_name, "left4dead", false)) return; + + SDKCall(hState_Transition, player_id, 8); + SDKCall(hBecomeGhost, player_id, 1); + SDKCall(hState_Transition, player_id, 6); + SDKCall(hBecomeGhost, player_id, 1); + } + } +} + +public bool:TraceEntityFilterPlayer(entity, contentsMask) +{ + return entity > MaxClients || !entity; +} + +static bool:SetTeleportEndPoint(client) +{ + decl Float:vAngles[3], Float:vOrigin[3]; + + GetClientEyePosition(client,vOrigin); + GetClientEyeAngles(client, vAngles); + + //get endpoint for teleport + new Handle:trace = TR_TraceRayFilterEx(vOrigin, vAngles, MASK_SHOT, RayType_Infinite, TraceEntityFilterPlayer); + + if(TR_DidHit(trace)) + { + decl Float:vBuffer[3], Float:vStart[3]; + + TR_GetEndPosition(vStart, trace); + GetVectorDistance(vOrigin, vStart, false); + new Float:Distance = -35.0; + GetAngleVectors(vAngles, vBuffer, NULL_VECTOR, NULL_VECTOR); + g_pos[0] = vStart[0] + (vBuffer[0]*Distance); + g_pos[1] = vStart[1] + (vBuffer[1]*Distance); + g_pos[2] = vStart[2] + (vBuffer[2]*Distance); + } + else + { + PrintToChat(client, "[SM] %s", "Could not teleport player after respawn"); + CloseHandle(trace); + return false; + } + CloseHandle(trace); + return true; +} + +PerformTeleport(client, target, Float:pos[3]) +{ + pos[2]+=40.0; + TeleportEntity(target, pos, NULL_VECTOR, NULL_VECTOR); + + LogAction(client,target, "\"%L\" teleported \"%L\" after respawning him" , client, target); +} + +stock CheatCommand(client, String:command[], String:arguments[]="") +{ + new userflags = GetUserFlagBits(client); + SetUserFlagBits(client, ADMFLAG_ROOT); + new flags = GetCommandFlags(command); + SetCommandFlags(command, flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "%s %s", command, arguments); + SetCommandFlags(command, flags); + SetUserFlagBits(client, userflags); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_stuckzombiemeleefix.sp b/addons/sourcemod/scripting/l4d_stuckzombiemeleefix.sp new file mode 100644 index 00000000..1435ba13 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_stuckzombiemeleefix.sp @@ -0,0 +1,158 @@ +#include +#include +#define DEBUG 0 + +#define PLUGIN_VERSION "1.0.4" + +public Plugin:myinfo = +{ + name = "Stuck Zombie Melee Fix", + author = "AtomicStryker", + description = "Smash nonstaggering Zombies", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?p=932416" +} + +public OnPluginStart() +{ + HookEvent("entity_shoved", Event_EntShoved); + AddNormalSoundHook(NormalSHook:HookSound_Callback); //my melee hook since they didnt include an event for it + + CreateConVar("l4d_stuckzombiemeleefix_version", PLUGIN_VERSION, " Version of L4D Stuck Zombie Melee Fix on this server ", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); +} + +new bool:MeleeDelay[MAXPLAYERS+1]; + +public Action:HookSound_Callback(Clients[64], &NumClients, String:StrSample[PLATFORM_MAX_PATH], &Entity) +{ + //to work only on melee sounds, its 'swish' or 'weaponswing' + if (StrContains(StrSample, "Swish", false) == -1) return Plugin_Continue; + //so the client has the melee sound playing. OMG HES MELEEING! + + if (Entity > MAXPLAYERS) return Plugin_Continue; // bugfix for some people on L4D2 + + //add in a 1 second delay so this doesnt fire every frame + if (MeleeDelay[Entity]) return Plugin_Continue; //note 'Entity' means 'client' here + MeleeDelay[Entity] = true; + CreateTimer(1.0, ResetMeleeDelay, Entity); + + #if DEBUG + PrintToChatAll("Melee detected via soundhook."); + #endif + + new entid = GetClientAimTarget(Entity, false); + if (entid <= 0) return Plugin_Continue; + + decl String:entclass[96]; + GetEntityNetClass(entid, entclass, sizeof(entclass)); + if (!StrEqual(entclass, "Infected")) return Plugin_Continue; + + decl Float:clientpos[3], Float:entpos[3]; + GetEntityAbsOrigin(entid, entpos); + GetClientEyePosition(Entity, clientpos); + if (GetVectorDistance(clientpos, entpos) < 50) return Plugin_Continue; //else you could 'jedi melee' Zombies from a distance + + #if DEBUG + PrintToChatAll("Youre meleeing and looking at Zombie id #%i", entid); + #endif + + //now to make this Zombie fire a event to be caught by the actual 'fix' + + new Handle:newEvent = CreateEvent("entity_shoved", true); + SetEventInt(newEvent, "attacker", Entity); //the client being called Entity is a bit unfortunate + SetEventInt(newEvent, "entityid", entid); + FireEvent(newEvent, true); + + return Plugin_Continue; +} + +public Action:ResetMeleeDelay(Handle:timer, any:client) +{ + MeleeDelay[client] = false; +} + +public Event_EntShoved(Handle:event, const String:name[], bool:dontBroadcast) +{ + new entid = GetEventInt(event, "entityid"); //get the events shoved entity id + + decl String:entclass[96]; + GetEntityNetClass(entid, entclass, sizeof(entclass)); + if (!StrEqual(entclass, "Infected")) return; //make sure it IS a zombie. + + new Handle:data = CreateDataPack() //a data pack because i need multiple values saved + CreateTimer(0.5, CheckForMovement, data); //0.5 seemed both long enough for a normal zombie to stumble away and for a stuck one to DIEEEEE + + WritePackCell(data, entid); //save the Zombie id + + decl Float:pos[3]; + GetEntityAbsOrigin(entid, pos); //get the Zombies position + WritePackFloat(data, pos[0]); //save the Zombies position + WritePackFloat(data, pos[1]); + WritePackFloat(data, pos[2]); + + #if DEBUG + PrintToChatAll("Meleed Zombie detected."); + #endif +} + +public Action:CheckForMovement(Handle:timer, Handle:data) +{ + ResetPack(data); //this resets our 'reading' position in the data pack, to start from the beginning + + new zombieid = ReadPackCell(data); //get the Zombie id + if (!IsValidEntity(zombieid)) return Plugin_Handled; //did the zombie get disappear somehow? + + decl String:entclass[96]; + GetEntityNetClass(zombieid, entclass, sizeof(entclass)); + if (!StrEqual(entclass, "Infected")) return Plugin_Handled; //make sure it STILL IS a zombie. + + decl Float:oldpos[3]; + oldpos[0] = ReadPackFloat(data); //get the old Zombie position (half a sec ago) + oldpos[1] = ReadPackFloat(data); + oldpos[2] = ReadPackFloat(data); + + CloseHandle(data); //Dispose of the Handle. It shouldn't have messed with the family + + decl Float:newpos[3]; + GetEntityAbsOrigin(zombieid, newpos); //get the Zombies current position + + if (GetVectorDistance(oldpos, newpos) > 5) return Plugin_Handled; //if the positions differ, the zombie was correctly shoved and is now staggering. Plugin End + + #if DEBUG + PrintToChatAll("Stuck meleed Zombie detected."); + #endif + + //now i could simply slay the stuck zombie. but this would also instantkill any zombie you meleed into a corner or against a wall + //so instead i coded a two-punts-it-doesnt-move-so-slay-it command + + new zombiehealth = GetEntProp(zombieid, Prop_Data, "m_iHealth"); + new zombiehealthmax = GetConVarInt(FindConVar("z_health")); + + if (zombiehealth - (zombiehealthmax / 2) <= 0) // if the zombies health is less than half + { + //SetEntProp(zombieid, Prop_Data, "m_iHealth", 0); //CRUSH HIM!!!!!! - ragdoll bug, unused + AcceptEntityInput(zombieid, "BecomeRagdoll"); //Damizean pointed this one out, Cheers to him. + + #if DEBUG + PrintToChatAll("Slayed Stuck Zombie."); + #endif + } + + else SetEntProp(zombieid, Prop_Data, "m_iHealth", zombiehealth - (zombiehealthmax / 2)) //else remove half of its health, so the zombie dies from the next melee blow + + return Plugin_Handled; +} + +//entity abs origin code from here +//http://forums.alliedmods.net/showpost.php?s=e5dce96f11b8e938274902a8ad8e75e9&p=885168&postcount=3 +public Action:GetEntityAbsOrigin(entity,Float:origin[3]) +{ + decl Float:mins[3], Float:maxs[3]; + GetEntPropVector(entity,Prop_Send,"m_vecOrigin",origin); + GetEntPropVector(entity,Prop_Send,"m_vecMins",mins); + GetEntPropVector(entity,Prop_Send,"m_vecMaxs",maxs); + + origin[0] += (mins[0] + maxs[0]) * 0.5; + origin[1] += (mins[1] + maxs[1]) * 0.5; + origin[2] += (mins[2] + maxs[2]) * 0.5; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_superversus.sp b/addons/sourcemod/scripting/l4d_superversus.sp new file mode 100644 index 00000000..85d46004 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_superversus.sp @@ -0,0 +1,473 @@ +/* ======================================================== + * L4D SuperVersus + * ======================================================== + * Created by DDRKhat + * Based upon Damizean's "L4D Spawn Missing Survivors" + * ======================================================== +v1.5.4 +-Hooked Round_Start. (Should Improve TankHP and Bot spawning) + v1.5.3 +-Improved setting of TankHP (Should be definite now?) +v1.5.2 +-Adjusted Survivor Spawning. (Should be the end of Survivor Spawning issues) +-Changed Finale Vehicle Handling. (Thanks to Damizean for the EntProp value!) +-Bot Booter only boots "Useless Bots" (Bots not directly involved with Useful/incap system) +v1.5.1 +-Survivor Spawning moved "player_first_spawn" once more. +v1.5 +-Official Left4Dead2 support +-Added client check on bot kicker (No more "Free Slot." disconnections) +-Bot Kicker message changed to "Kicking fake client" to help distinquish. +-XtraHP medpack spawning moved (Possibly fixes crashing on windows servers?) +-Survivor spawning moved to round_start, instant spawns survivors now +-Tank's Health is now using the server CVAR, could cause conflictions with other plugins. +v1.4 +-Fixed Cvar forcing on survivor and infected limits +-CVAR Handle code improvements. +-Config file added (l4d_superversus.cfg inside of cfg/Soucemod) +-Tank HP changing now affects HUD +-Improved Tank monitoring +-Improved Left4DownTown checks +v1.3 +-Fixed oversight preventing survivor joining +-Join commands now obey vs_max_team_switches +-Added Finale check. Makes saved survivors safe (To protect points) +-Added (If Left4Downtown 0.3.0 or later exists) Lobby Unreserving +-Fixed rare extra survivor +-Added option for Extra medpacks for extra survivors. +v1.2 +-Increased Survivor/Infected limit to 18 +-Added text-commands to join both teams (for those without console when the GUI fails) ++!jointeam2 / !joinsurvivor - Text equivalent of console command: jointeam 2 ++!jointeam3 / !joininfected - Text equivalent of console command: jointeam 3 +-Fixed stupid programming sight. Tank spawning fixed as a result. +-Various code cleanup +V1.1 +-Adjusts the games built-in variables for handling survivor/infected limit +-Added a text-command people can use to join infected (Where the Switch Team GUI might fail) +-Added a command to increase zombie count. +V1.0 +-Initial Release +*/ + +// ********************************************************************************* +// PREPROCESSOR +// ********************************************************************************* +// ********************************************************************************* +#pragma semicolon 1 // Force strict semicolon mode. +// INCLUDES +// ********************************************************************************* +#include +#include +#include +// ********************************************************************************* +// OPTIONALS - If these exist, we use them. If not, we do nothing. +// ********************************************************************************* +native L4D_LobbyUnreserve(); +native L4D_LobbyIsReserved(); +// ********************************************************************************* +// CONSTANTS +// ********************************************************************************* +#define CONSISTENCY_CHECK 1.0 +#define DEBUG 0 +#define PLUGIN_VERSION "1.5.4" +#define CVAR_FLAGS FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD +// ********************************************************************************* +// VARS +// ********************************************************************************* +new Handle:SpawnTimer = INVALID_HANDLE; +new Handle:KickTimer = INVALID_HANDLE; +new Handle:SurvivorLimit = INVALID_HANDLE; +new Handle:InfectedLimit = INVALID_HANDLE; +new Handle:L4DSurvivorLimit = INVALID_HANDLE; +new Handle:L4DInfectedLimit = INVALID_HANDLE; +new Handle:SuperTank = INVALID_HANDLE; +new Handle:hpMulti = INVALID_HANDLE; +new Handle:XtraHP = INVALID_HANDLE; +new Handle:KillRes = INVALID_HANDLE; +new Handle:CvarTankHP = INVALID_HANDLE; +new TankHP; +new bool:Useful[MAXPLAYERS+1]; +#if DEBUG +new String:KhatID[] = "STEAM_1:1:2038252"; +#endif +// ********************************************************************************* +// PLUGIN +// ********************************************************************************* +public Plugin:myinfo = +{ + name = "L4D SuperVersus", + author = "DDRKhat", + description = "Allow versus to become up to 18vs18", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?t=92713" +}; +// ********************************************************************************* +// METHODS +// ********************************************************************************* +// ------------------------------------------------------------------------ +// OnPluginStart() +// ------------------------------------------------------------------------ +public OnPluginStart() +{ + ////////// + // Left4Dead Dependant + ////////// + decl String:ModName[50]; + GetGameFolderName(ModName, sizeof(ModName)); + if(!StrEqual(ModName, "left4dead", false)&&!StrEqual(ModName, "left4dead2", false)) SetFailState("Use this in Left 4 Dead (2) only."); + ////////// + // Convars + ////////// + CreateConVar("sm_superversus_version", PLUGIN_VERSION, "L4D Super Versus", CVAR_FLAGS); + CvarTankHP = FindConVar("z_tank_health"); + L4DSurvivorLimit = FindConVar("survivor_limit"); + L4DInfectedLimit = FindConVar("z_max_player_zombies"); + SurvivorLimit = CreateConVar("l4d_survivor_limit","4","Maximum amount of survivors", CVAR_FLAGS,true,4.00,true,18.00); + InfectedLimit = CreateConVar("l4d_infected_limit","4","Max amount of infected (will not affect bots)", CVAR_FLAGS,true,4.00,true,18.00); + SuperTank = CreateConVar("l4d_supertank","0","Set tanks HP based on Survivor Count", CVAR_FLAGS,true,0.0,true,1.0); + XtraHP = CreateConVar("l4d_XtraHP","0","Give extra survivors HP packs? (1 for extra medpacks)", CVAR_FLAGS,true,0.0,true,1.0); + hpMulti = CreateConVar("l4d_tank_hpmulti","0.25","Tanks HP Multiplier (multi*(survivors-4))", CVAR_FLAGS,true,0.01,true,1.00); + KillRes = CreateConVar("l4d_killreservation","0","Should we clear Lobby reservaton? (For use with Left4DownTown extension ONLY)", CVAR_FLAGS,true,0.0,true,1.0); + ////////// + // Convar handling + ////////// + SetConVarBounds(L4DSurvivorLimit, ConVarBound_Upper, true, 18.0); + SetConVarBounds(L4DInfectedLimit, ConVarBound_Upper, true, 18.0); + HookConVarChange(L4DSurvivorLimit, FSL); + HookConVarChange(SurvivorLimit, FSL); + HookConVarChange(L4DInfectedLimit, FIL); + HookConVarChange(InfectedLimit, FIL); + HookConVarChange(CvarTankHP, TankHPCvar); + HookConVarChange(hpMulti, TankHPCvar); + ////////// + // Commands + ////////// + #if DEBUG + RegConsoleCmd("sm_ddr", KhatCommand, "You know what you doing, take off every zig!!"); + #endif + RegAdminCmd("sm_hardzombies", HardZombies, ADMFLAG_KICK, "How many zombies you want. (In multiples of 30. Recommended: 3 Max: 6)"); + RegConsoleCmd("sm_jointeam3", JoinTeam, "Jointeam 3 - Without dev console"); + RegConsoleCmd("sm_joininfected", JoinTeam, "Jointeam 3 - Without dev console"); + RegConsoleCmd("sm_jointeam2", JoinTeam2, "Jointeam 2 - Without dev console"); + RegConsoleCmd("sm_joinsurvivor", JoinTeam2, "Jointeam 2 - Without dev console"); + ////////// + // Events + ////////// + HookEvent("round_start",Event_RoundStart); + HookEvent("heal_begin",Event_UsefulBegin); + HookEvent("heal_end",Event_UsefulEnd); + HookEvent("revive_begin",Event_UsefulBegin); + HookEvent("revive_end",Event_UsefulEnd); + HookEvent("finale_vehicle_leaving", Event_FinaleVehicleLeaving); + ////////// + // Load our config + ////////// + AutoExecConfig(true, "l4d_superversus"); +} +// ------------------------------------------------------------------------ +// OnAskPluginLoad() && OnLibraryRemoved && l4dt +// ------------------------------------------------------------------------ +public bool:AskPluginLoad() {MarkNativeAsOptional("L4D_LobbyUnreserve");MarkNativeAsOptional("L4D_LobbyIsReserved");return true;} +public bool:l4dt() +{ + if(GetConVarFloat(FindConVar("left4downtown_version"))>0.00) return true; + else return false; +} +public OnLibraryRemoved(const String:name[]) {if(StrEqual(name,"Left 4 Downtown Extension")) SetConVarInt(KillRes,0);} +// ------------------------------------------------------------------------ +// OnConvarChange() +// ------------------------------------------------------------------------ +#define FORCE_INT_CHANGE(%1,%2,%3) public %1 (Handle:c, const String:o[], const String:n[]) { SetConVarInt(%2,%3); } +FORCE_INT_CHANGE(FSL,L4DSurvivorLimit,GetConVarInt(SurvivorLimit)) +FORCE_INT_CHANGE(FIL,L4DInfectedLimit,GetConVarInt(InfectedLimit)) +// ------------------------------------------------------------------------ +// OnMapEnd() +// ------------------------------------------------------------------------ +public OnMapEnd() {if (SpawnTimer != INVALID_HANDLE){KillTimer(SpawnTimer);SpawnTimer = INVALID_HANDLE;}} +// ------------------------------------------------------------------------ +// jointeam2 && jointeam3 +// ------------------------------------------------------------------------ +public Action:JoinTeam(client, args) {FakeClientCommand(client,"jointeam 3");return Plugin_Handled;} +public Action:JoinTeam2(client, args) {FakeClientCommand(client,"jointeam 2");return Plugin_Handled;} +// ------------------------------------------------------------------------ +// OnClientPutInServer - We have to use this because AIDirector Puts bots in, doesn't connect them. +// ------------------------------------------------------------------------ +public OnClientPutInServer(client) +{ + if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT); + SetTankHP(); + if(GetConVarInt(KillRes)) + { + if(l4dt()) if(L4D_LobbyIsReserved()) L4D_LobbyUnreserve(); + } +} +// ------------------------------------------------------------------------ +// TeamPlayers() arg = teamnum +// ------------------------------------------------------------------------ +public TeamPlayers(any:team) +{ + new int=0; + for (new i=1; i<=MaxClients; i++) + { + if (!IsClientConnected(i)) continue; + if (!IsClientInGame(i)) continue; + if (GetClientTeam(i) != team) continue; + int++; + } + return int; +} +// ------------------------------------------------------------------------ +// RealPlayersInGame() +// ------------------------------------------------------------------------ +bool:RealPlayersInGame () +{ + for (new i=1;i<=GetMaxClients();i++) + if (IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i)) + return true; + return false; +} +// ------------------------------------------------------------------------ +// OnClientDisconnect() +// ------------------------------------------------------------------------ +public OnClientDisconnect(client) +{ + if (IsFakeClient(client)) return; + if (!RealPlayersInGame()) { new i; for (i=1;i<=GetMaxClients();i++) CreateTimer(0.1, KickFakeClient, i); } +} +// ------------------------------------------------------------------------ +// SpawnFakeClient() +// ------------------------------------------------------------------------ +SpawnFakeClient() +{ + // Spawn bot survivor. + new Bot = CreateFakeClient("SurvivorBot"); + if (Bot == 0) return; + + ChangeClientTeam(Bot, 2); + DispatchKeyValue(Bot, "classname", "SurvivorBot"); + if(GetConVarInt(XtraHP)) + { + new med = GivePlayerItem(Bot,"weapon_first_aid_kit"); + if(med) EquipPlayerWeapon(Bot,med); + } + CreateTimer(0.1, KickFakeClient, Bot); +} +// ------------------------------------------------------------------------ +// SpawnTick() +// ------------------------------------------------------------------------ +public Action:SpawnTick(Handle:hTimer, any:Junk) +{ + #if DEBUG + LogMessage("SpawnTick> Init"); + #endif + // Determine the number of survivors and fill the empty + // slots. + new NumSurvivors = TeamPlayers(2); + new MaxSurvivors = GetConVarInt(SurvivorLimit); + #if DEBUG + LogMessage("SpawnTick> Survivors: [%i/%i]",NumSurvivors,MaxSurvivors); + #endif + if (NumSurvivors < 4) + { + #if DEBUG + LogMessage("SpawnTick> Less than 4 Survivors, Ending!"); + #endif + KillTimer(SpawnTimer); + SpawnTimer = INVALID_HANDLE; + return Plugin_Stop; + } + // Create missing bots + for (;NumSurvivors < MaxSurvivors; NumSurvivors++) + { + #if DEBUG + LogMessage("SpawnTick> Spawning Surivvor. Survivors: [%i/%i]",NumSurvivors,MaxSurvivors); + #endif + SpawnFakeClient(); + } + // Once the missing bots are made, dispose of the timer + #if DEBUG + LogMessage("SpawnTick> Ending"); + #endif + KillTimer(SpawnTimer); + SpawnTimer = INVALID_HANDLE; + return Plugin_Stop; +} +// ------------------------------------------------------------------------ +// KickTick() +// ------------------------------------------------------------------------ +public Action:KickTick(Handle:hTimer, any:Junk) +{ + #if DEBUG + LogMessage("KickTick> Init"); + #endif + new NumSurvivors = TeamPlayers(2); + new MaxSurvivors = GetConVarInt(SurvivorLimit); + #if DEBUG + LogMessage("KickTick> Survivors: [%i/%i]",NumSurvivors,MaxSurvivors); + #endif + if (NumSurvivors < 4) + { + #if DEBUG + LogMessage("KickTick> Less than 4 Survivors, Ending!"); + #endif + KillTimer(SpawnTimer); + SpawnTimer = INVALID_HANDLE; + return Plugin_Stop; + } + for (new i=1;i<=GetMaxClients();i++) + { + if(IsClientConnected(i)&&IsFakeClient(i)&&IsUseless(i)&&NumSurvivors>MaxSurvivors) + #if DEBUG + LogMessage("KickTick> Found Useless Bot Survivors: [%i/%i]",NumSurvivors,MaxSurvivors); + #endif + CreateTimer(0.0, KickFakeClient, i); + NumSurvivors--; + } + #if DEBUG + LogMessage("KickTick> Ending"); + #endif + KillTimer(KickTimer); + KickTimer = INVALID_HANDLE; + return Plugin_Stop; +} +// ------------------------------------------------------------------------ +// KickFakeClient() +// ------------------------------------------------------------------------ +public Action:KickFakeClient(Handle:hTimer, any:Client) +{ + if(IsClientConnected(Client) && IsFakeClient(Client)) + { + KickClient(Client, "Kicking Fake Client."); + } + return Plugin_Handled; +} +// ------------------------------------------------------------------------ +// IsUseless() // Are we helping/being helped? +// ------------------------------------------------------------------------ +bool:IsUseless(client) +{ + if(Useful[client] == false) return true; + return false; +} +// ------------------------------------------------------------------------ +// SetTankHP() +// ------------------------------------------------------------------------ +bool:SetTankHP() // this delay is necassary or it fails. +{ + if(GetConVarInt(SuperTank)) + { + new Float:extrasurvivors=(float(TeamPlayers(2))-4.0); + if(RoundFloat(extrasurvivors)>0.0) + { + TankHP = RoundFloat((4000*(1.0+(GetConVarFloat(hpMulti)*extrasurvivors)))); + if(TankHP>65535) TankHP=65535; + } + else TankHP=4000; + } +} +// ------------------------------------------------------------------------ +// TankHPCvar() +// ------------------------------------------------------------------------ +public TankHPCvar(Handle:c, const String:o[], const String:n[]) +{ + SetTankHP(); + SetConVarInt(CvarTankHP,TankHP); +} +// ------------------------------------------------------------------------ +// KhatCommand() +// ------------------------------------------------------------------------ +#if DEBUG +public Action:KhatCommand(client, args) +{ + new String:SteamID[64]; + GetClientAuthString(client, SteamID, sizeof(SteamID)); + if(StrEqual(SteamID,KhatID,true)) + { + ReplyToCommand(client,"Hello DDRKhat. Command Executed."); + if(IsUseless(client)) ReplyToCommand(client,"You are considered Useless!"); + if(!IsUseless(client)) ReplyToCommand(client,"You are considered not Useless!"); + if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT); + } + else + { + ReplyToCommand(client,"Sorry, only DDRKhat may execute this command."); + PrintToChatAll("Someone attempted to activate the DDRKhat Command.!"); + } +} +#endif +// ------------------------------------------------------------------------ +// HardZombies() +// ------------------------------------------------------------------------ +public Action:HardZombies(client, args) +{ + new String:arg[8]; + GetCmdArg(1,arg,8); + new Input=StringToInt(arg[0]); + if(Input==1) + { + SetConVarInt(FindConVar("z_common_limit"), 30); // Default + SetConVarInt(FindConVar("z_mob_spawn_min_size"), 10); // Default + SetConVarInt(FindConVar("z_mob_spawn_max_size"), 30); // Default + SetConVarInt(FindConVar("z_mob_spawn_finale_size"), 20); // Default + SetConVarInt(FindConVar("z_mega_mob_size"), 45); // Default + } + else if(Input>1&&Input<7) + { + SetConVarInt(FindConVar("z_common_limit"), 30*Input); // Default 30 + SetConVarInt(FindConVar("z_mob_spawn_min_size"), 30*Input); // Default 10 + SetConVarInt(FindConVar("z_mob_spawn_max_size"), 30*Input); // Default 30 + SetConVarInt(FindConVar("z_mob_spawn_finale_size"), 30*Input); // Default 20 + SetConVarInt(FindConVar("z_mega_mob_size"), 30*Input); // Default 45 + } + else {ReplyToCommand(client, "\x01[SM] Usage: How many zombies you want. (In multiples of 30. Recommended: 3 Max: 6)");ReplyToCommand(client, "\x01 : Anything above 3 may cause moments of lag 1 resets the defaults");} + return Plugin_Handled; +} +// ------------------------------------------------------------------------ +// FinaleEnd() Thanks to Damizean for smarter method of detecting safe survivors. +// ------------------------------------------------------------------------ +public Event_FinaleVehicleLeaving(Handle:event, const String:name[], bool:dontBroadcast) +{ + new edict_index = FindEntityByClassname(-1, "info_survivor_position"); + if (edict_index != -1) + { + new Float:pos[3]; + GetEntPropVector(edict_index, Prop_Send, "m_vecOrigin", pos); + for(new i=1; i <= MaxClients; i++) + { + if (!IsClientConnected(i)) continue; + if (!IsClientInGame(i)) continue; + if (GetClientTeam(i) != 2) continue; + if (!IsPlayerAlive(i)) continue; + if (GetEntProp(i, Prop_Send, "m_isIncapacitated", 1) == 1) continue; + TeleportEntity(i, pos, NULL_VECTOR, NULL_VECTOR); + } + } +} +// ------------------------------------------------------------------------ +// Event_UsefulBegin() +// ------------------------------------------------------------------------ +public Event_UsefulBegin(Handle:event, const String:name[], bool:dontBroadcast) +{ + Useful[GetClientOfUserId(GetEventInt(event, "userid"))] = true; //Healer + Useful[GetClientOfUserId(GetEventInt(event, "subject"))] = true; //Target +} +// ------------------------------------------------------------------------ +// Event_UsefulEnd() +// ------------------------------------------------------------------------ +public Event_UsefulEnd(Handle:event, const String:name[], bool:dontBroadcast) +{ + Useful[GetClientOfUserId(GetEventInt(event, "userid"))] = false; //Healer + Useful[GetClientOfUserId(GetEventInt(event, "subject"))] = false; //Target +} +// ------------------------------------------------------------------------ +// Event_RoundStart() +// ------------------------------------------------------------------------ +public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) +{ + SetTankHP(); + if (SpawnTimer == INVALID_HANDLE&&TeamPlayers(2)GetConVarInt(SurvivorLimit)) KickTimer = CreateTimer(CONSISTENCY_CHECK, KickTick, _, TIMER_REPEAT); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_survivor_spawnpos_fix.sp b/addons/sourcemod/scripting/l4d_survivor_spawnpos_fix.sp new file mode 100644 index 00000000..7952d896 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_survivor_spawnpos_fix.sp @@ -0,0 +1,514 @@ +#define PLUGIN_VERSION "1.3" + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#define CVAR_FLAGS FCVAR_NOTIFY +#define DEBUG 0 + +enum +{ + TELEPORT_METHOD_WARP, + TELEPORT_METHOD_TELEPORT +} + +public Plugin myinfo = +{ + name = "[L4D] Survivor Spawn Position Fix", + author = "Alex Dragokas", + description = "Force teleport survivors on bugged maps when they spawn underground", + version = PLUGIN_VERSION, + url = "https://github.com/dragokas" +}; + +/* + ChangeLog: + + 1.0 (13-Jul-2022) + - Initial release. + + 1.1 (13-Jul-2022) + - Better distance detection (count the minimum distance to all of spawn entities). + - Prevented possible teleport in mid-game. + + 1.2 (17-Jul-2022) + - Fix 5+ survivors spawned in other warp place, wrongly defined by map makers (e.g. map: l4d_garage01_alleys). + - Fixed code bug: "info_player_start" and "info_survivor_position" is mixed up, so entire logic was a kind broken. + + 1.3 (14-Aug-2022) + - All debug commands are now compatible with disable cvar. +*/ + +const float DISTANCE_TO_WARP_MAX = 150.0; +const float DISTANCE_TO_OTHER_SURVIVOR_MAX = 100.0; +const float MID_GAME_START_TIME = 60.0; + +ConVar g_ConVarEnable; +bool g_bEnabled, g_bEntitiesCached, g_bSecondSpawn; +int g_iSurvivorCount, g_iInfoSurvPos[4], g_iInfoPlayerStart; + +public void OnPluginStart() +{ + CreateConVar("l4d_surv_spawnpos_version", PLUGIN_VERSION, "Plugin version", FCVAR_DONTRECORD | CVAR_FLAGS); + + g_ConVarEnable = CreateConVar("l4d_surv_spawnpos_enabled", "1", "Enable plugin (1 - On / 0 - Off)", CVAR_FLAGS); + + AutoExecConfig(true, "l4d_surv_spawnpos"); + + HookConVarChange(g_ConVarEnable, ConVarChanged); + GetCvars(); + + #if defined DEBUG + RegConsoleCmd("sm_spawnpos", CmdSpawnPos, "Show pre-defined spawn entity position"); + RegConsoleCmd("sm_spawnwarp", CmdSpawnWarp, "Warp to survivor position using director command"); + RegConsoleCmd("sm_spawntel", CmdSpawnTel, "Teleport to survivor position entity"); + #endif +} + +stock void DistanceInfo(int client) +{ + float dist; + GetMinimumDistanceToWarp(client, dist); + bool bStuck = IsClientStuck(client); + PrintToChatAll("%N distance = %f. Stuck? %b", client, dist, bStuck); +} + +stock bool SurvivorEntityInfo() +{ + float pos[3]; + if( !GetSpawnPosition(pos) ) + { + PrintToChatAll("Failed to find spawn position!"); + return false; + } + else { + PrintToChatAll("survivor warp position: %f %f %f", pos[0], pos[1], pos[2]); + } + return true; +} + +//========================== +// COMMANDS +//========================= + +Action CmdSpawnPos(int client, int args) +{ + if( !g_bEnabled ) + { + PrintToChat(client, "Command is disabled."); + return Plugin_Handled; + } + if( SurvivorEntityInfo() ) + { + for( int i = 1; i <= MaxClients; i++ ) + { + if( IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) ) + { + DistanceInfo(i); + } + } + } + return Plugin_Handled; +} + +Action CmdSpawnWarp(int client, int args) +{ + if( !g_bEnabled ) + { + PrintToChat(client, "Command is disabled."); + return Plugin_Handled; + } + TeleportToSafeRoom(client, TELEPORT_METHOD_WARP); + PrintToChat(client, "%N warped to saferoom.", client); + return Plugin_Handled; +} + +Action CmdSpawnTel(int client, int args) +{ + if( !g_bEnabled ) + { + PrintToChat(client, "Command is disabled."); + return Plugin_Handled; + } + if( TeleportToSafeRoom(client, TELEPORT_METHOD_TELEPORT) ) + { + PrintToChat(client, "%N teleported to saferoom.", client); + } + else { + PrintToChat(client, "Failed to find spawn position!"); + } + return Plugin_Handled; +} + +//========================== +// CON VARIABLES +//========================= + +public void ConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) +{ + GetCvars(); +} + +void GetCvars() +{ + g_bEnabled = g_ConVarEnable.BoolValue; + InitHook(); +} + +void InitHook() +{ + static bool bHooked; + + if( g_bEnabled ) { + if( !bHooked ) { + HookEvent("player_first_spawn", Event_PlayerFirstSpawn, EventHookMode_Post); + HookEvent("player_left_start_area", Event_PlayerLeftStartArea); + bHooked = true; + } + } else { + if( bHooked ) { + UnhookEvent("player_first_spawn", Event_PlayerFirstSpawn, EventHookMode_Post); + UnhookEvent("player_left_start_area", Event_PlayerLeftStartArea); + bHooked = false; + } + } +} + +//========================== +// HOOKS +//========================== + +public void OnMapStart() +{ + g_bSecondSpawn = false; + g_iInfoPlayerStart = 0; + for( int i = 0; i < sizeof(g_iInfoSurvPos); i++ ) + { + g_iInfoSurvPos[i] = 0; + } + // when survivor left safe area, distance should be also measured to other survivors (not only to "info_survivor_position" entity). + // so, we set this flag "MiddleGame" in case: + // - 60.0 seconds elapsed since Map Started + // - more than 4 survivors already spawned + // - survivor left safe area event raised + // P.S. Also, we don't care "Round_End / Round_Start" at all. I observed that bug doesn't happen on round lost. + SetMiddleGameState(false); + CreateTimer(MID_GAME_START_TIME, Timer_SetMiddleGame, _, TIMER_FLAG_NO_MAPCHANGE); +} + +public void OnMapEnd() +{ + g_bEntitiesCached = false; +} + +Action Timer_SetMiddleGame(Handle timer) +{ + SetMiddleGameState(true); + return Plugin_Stop; +} + +bool Cache_SpawnPositionEntities() // precache indeces for optimization +{ + static bool bStatus = false; + if( g_bEntitiesCached ) return bStatus; + + int count, entity = INVALID_ENT_REFERENCE; + g_iInfoPlayerStart = FindEntityByClassname(INVALID_ENT_REFERENCE, "info_player_start"); + if( g_iInfoPlayerStart != INVALID_ENT_REFERENCE ) bStatus = true; + + while( INVALID_ENT_REFERENCE != (entity = FindEntityByClassname(entity, "info_survivor_position")) ) + { + g_iInfoSurvPos[count++] = entity; + bStatus = true; + if( count >= sizeof(g_iInfoSurvPos) ) break; + } + g_bEntitiesCached = true; + return bStatus; +} + +stock bool IsValidEntity_Safe(int entity) +{ + return ( entity && entity != INVALID_ENT_REFERENCE && IsValidEntity(entity) ); +} + +// for warp +// we took position of first known entity - usually, first "info_player_start" (there are 4 on the map) +bool GetSpawnPosition(float vector[3]) +{ + if( !Cache_SpawnPositionEntities() ) return false; + + for( int i = 0; i < sizeof(g_iInfoSurvPos); i++ ) + { + if( IsValidEntity_Safe(g_iInfoSurvPos[i]) ) + { + GetEntPropVector(g_iInfoSurvPos[i], Prop_Data, "m_vecOrigin", vector); + return true; + } + } + if( IsValidEntity_Safe(g_iInfoPlayerStart) ) + { + GetEntPropVector(g_iInfoPlayerStart, Prop_Data, "m_vecOrigin", vector); + return true; + } + return false; +} + +// for bug detection +// we testing distance to each of entities of classes: +// * info_survivor_position +// * info_player_start +bool GetMinimumDistanceToWarp(int client, float& out_distance) +{ + if( !Cache_SpawnPositionEntities() ) return false; + + float mindist = 9999.0, dist; + float vMe[3], vector[3]; + GetClientAbsOrigin(client, vMe); + + for( int i = 0; i < sizeof(g_iInfoSurvPos); i++ ) + { + if( IsValidEntity_Safe(g_iInfoSurvPos[i]) ) + { + GetEntPropVector(g_iInfoSurvPos[i], Prop_Data, "m_vecOrigin", vector); + dist = GetVectorDistance(vector, vMe); + if( dist < mindist ) mindist = dist; + } + } + if( IsValidEntity_Safe(g_iInfoPlayerStart) ) + { + GetEntPropVector(g_iInfoPlayerStart, Prop_Data, "m_vecOrigin", vector); + dist = GetVectorDistance(vector, vMe); + if( dist < mindist ) mindist = dist; + } + out_distance = mindist; + return true; +} + +// Checks the closest distance to every survivor +// (if survivor spawned next to other survivor, we don't need to teleport him: in case, he is 5+, +// which means other 1-4 survivors already teleported in correct position. +bool IsCloseToOtherSurvivors(int client) +{ + float dist, vOrigin[3], vMe[3]; + GetClientAbsOrigin(client, vMe); + + for( int i = 1; i <= MaxClients; i++ ) + { + if( i != client && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) ) + { + GetClientAbsOrigin(i, vOrigin); + dist = GetVectorDistance(vOrigin, vMe); + if( dist < DISTANCE_TO_OTHER_SURVIVOR_MAX ) + return true; + } + } + return false; +} + +void SetMiddleGameState(bool bEnable) +{ + if( bEnable ) + { + g_iSurvivorCount = 5; + } + else { + g_iSurvivorCount = 0; + } +} + +bool IsMiddleGame() +{ + return (g_iSurvivorCount > 4); +} + +bool IsClientSpawnBugged(int client) +{ + float dist; + if( GetMinimumDistanceToWarp(client, dist) ) + { + if( dist > DISTANCE_TO_WARP_MAX ) + { + if( IsMiddleGame() ) + { + // in middle game, new survivor can spawn next to survivor located far from the "info_survivor_position" entity + if( !IsCloseToOtherSurvivors(client) ) + { + return true; + } + } + else { + return true; + } + } + if( IsClientStuck(client) ) + { + return true; + } + } + return false; +} + +void FixSpawnPosition(int client) +{ + if( IsClientSpawnBugged(client) ) + { + TeleportToSafeRoom(client, TELEPORT_METHOD_WARP); + CreateTimer(0.1, Timer_Ensure, GetClientUserId(client), TIMER_FLAG_NO_MAPCHANGE); + } +} + +Action Timer_Ensure(Handle timer, int UserId) +{ + int client = GetClientOfUserId(UserId); + if( client && IsClientInGame(client) ) + { + if( IsClientSpawnBugged(client) ) + { + TeleportToSafeRoom(client, TELEPORT_METHOD_TELEPORT); + } + } + return Plugin_Stop; +} + +public void Event_PlayerLeftStartArea(Event event, const char[] name, bool dontBroadcast) +{ + SetMiddleGameState(true); + + #if DEBUG + PrintToChatAll("Event_PlayerLeftStartArea"); + #endif +} + +public void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + if( client && IsClientInGame(client) && GetClientTeam(client) == 2 ) + { + if( !g_bSecondSpawn ) + { + g_bSecondSpawn = true; + Fix_InfoPlayerStartEntity(); + } + + ++ g_iSurvivorCount; + + FixSpawnPosition(client); + + #if DEBUG + SurvivorEntityInfo(); + DistanceInfo(client); + #endif + } +} + +// Get distance of all info_survivor_position to info_player_start, sort them, +// and teleport elapsed 5+ info_survivor_position to the one most close to info_player_start. +void Fix_InfoPlayerStartEntity() +{ + int entity = FindEntityByClassname(INVALID_ENT_REFERENCE, "info_player_start"); + if( entity == INVALID_ENT_REFERENCE ) return; + + int count; + float vecSurv[3], vecStart[3], dist; + GetEntPropVector(entity, Prop_Data, "m_vecOrigin", vecSurv); + + ArrayList al = new ArrayList(ByteCountToCells(8)); // 4 bytes per block (int + float) + + const int IDX_ENTITY = 1, IDX_DIST = 0; + + entity = INVALID_ENT_REFERENCE; + while( INVALID_ENT_REFERENCE != (entity = FindEntityByClassname(entity, "info_survivor_position")) ) + { + GetEntPropVector(entity, Prop_Data, "m_vecOrigin", vecStart); + dist = GetVectorDistance(vecSurv, vecStart); + al.Resize(count + 1); + al.Set(count, dist, IDX_DIST); + al.Set(count, entity, IDX_ENTITY); + ++ count; + } + + if( count > 4 ) + { + #if DEBUG + PrintToChatAll("Found %i info_survivor_position entities.", count); + #endif + + al.Sort(Sort_Ascending, Sort_Float); + + float vecFirst[3]; + int iEntityFirst = al.Get(0, IDX_ENTITY); + GetEntPropVector(iEntityFirst, Prop_Data, "m_vecOrigin", vecFirst); + + for( int i = 4; i < count; i++ ) + { + entity = al.Get(i, IDX_ENTITY); + dist = al.Get(i, IDX_DIST); + + if( dist > DISTANCE_TO_WARP_MAX ) + { + TeleportEntity(entity, vecFirst, NULL_VECTOR, NULL_VECTOR); + #if DEBUG + PrintToChatAll("info_survivor_position %i teleported to %i.", entity, iEntityFirst); + #endif + } + } + } + delete al; +} + +bool TeleportToSafeRoom(int client, int method) +{ + switch( method ) + { + case TELEPORT_METHOD_WARP: + { + int warp_flags = GetCommandFlags("warp_to_start_area"); + SetCommandFlags("warp_to_start_area", warp_flags & ~FCVAR_CHEAT); + int give_flags = GetCommandFlags("give"); + SetCommandFlags("give", give_flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "warp_to_start_area"); + SetCommandFlags("warp_to_start_area", warp_flags); + SetCommandFlags("give", give_flags); + } + case TELEPORT_METHOD_TELEPORT: + { + float pos[3]; + if( !GetSpawnPosition(pos) ) + { + return false; + } + else { + TeleportEntity(client, pos, NULL_VECTOR, NULL_VECTOR); + } + } + } + return true; +} + +bool IsClientStuck(int iClient) +{ + float vMin[3], vMax[3], vOrigin[3]; + bool bHit; + GetClientMins(iClient, vMin); + GetClientMaxs(iClient, vMax); + GetClientAbsOrigin(iClient, vOrigin); + Handle hTrace = TR_TraceHullFilterEx(vOrigin, vOrigin, vMin, vMax, MASK_PLAYERSOLID, TraceRay_NoPlayers, iClient); + if (hTrace != INVALID_HANDLE) + { + bHit = TR_DidHit(hTrace); + CloseHandle(hTrace); + } + return bHit; +} + +public bool TraceRay_NoPlayers(int entity, int mask, any data) +{ + if(entity == data || (entity >= 1 && entity <= MaxClients)) + { + return false; + } + return true; +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_survivorai_pouncedfix.sp b/addons/sourcemod/scripting/l4d_survivorai_pouncedfix.sp new file mode 100644 index 00000000..54e0af43 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_survivorai_pouncedfix.sp @@ -0,0 +1,123 @@ +#include +#include + +#define PLUGIN_VERSION "1.0.5" +#define PLUGIN_NAME "L4D Survivor AI Pounced Fix" + + +public Plugin:myinfo = { + name = PLUGIN_NAME, + author = " AtomicStryker ", + description = " Fixes Survivor Bots neglecting Teammates in need ", + version = PLUGIN_VERSION, + url = "" +}; + +static bool:IsL4D2 = false; + + +public OnPluginStart() +{ + HookEvent("player_hurt", Event_PlayerHurt); + + CreateConVar("l4d_survivoraipouncedfix_version", PLUGIN_VERSION, " Version of L4D Survivor AI Pounced Fix on this server ", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); + + CheckGame(); +} + +public Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) +{ + new attacker = GetClientOfUserId(GetEventInt(event, "attacker")); + new victim = GetClientOfUserId(GetEventInt(event, "userid")); + + if (!victim + || !attacker + || !IsClientInGame(attacker) + || GetClientTeam(attacker) == 2) + { + return; + } + + if (NeedsTeammateHelp(victim)) + { + decl Float:position[3]; + GetClientAbsOrigin(attacker, position); + + CallBots(position, attacker); + } +} + +static CallBots(Float:position[3], attacker) +{ + decl Float:targetPos[3]; + + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) + { + if (GetClientHealth(target) > 0 + && GetClientTeam(target) == 2 + && IsFakeClient(target)) // make sure target is a live Survivor Bot + { + GetClientAbsOrigin(target, targetPos); + + if (GetVectorDistance(targetPos, position) < 500) + { + ScriptCommand(target, "script", + "CommandABot({cmd=0,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", + GetClientUserId(target), + GetClientUserId(attacker)); + } + } + } + } +} + +stock bool:NeedsTeammateHelp(client) +{ + if (HasValidEnt(client, "m_tongueOwner") // Smoked + || HasValidEnt(client, "m_pounceAttacker") // Huntered + || (IsL4D2 + && HasValidEnt(client, "m_jockeyAttacker")) // Ridden + || (IsL4D2 + && HasValidEnt(client, "m_pummelAttacker"))) // Charged + { + return true; + } + + return false; +} + +stock bool:HasValidEnt(client, const String:entprop[]) +{ + new ent = GetEntPropEnt(client, Prop_Send, entprop); + + return (ent > 0 + && IsClientInGame(ent)); +} + +stock ScriptCommand(client, const String:command[], const String:arguments[], any:...) +{ + new String:vscript[PLATFORM_MAX_PATH]; + VFormat(vscript, sizeof(vscript), arguments, 4); + + new flags = GetCommandFlags(command); + SetCommandFlags(command, flags^FCVAR_CHEAT); + FakeClientCommand(client, "%s %s", command, vscript); + SetCommandFlags(command, flags | FCVAR_CHEAT); +} + +static CheckGame() +{ + decl String:game[32]; + GetGameFolderName(game, sizeof(game)); + + if (StrEqual(game, "left4dead", false)) + IsL4D2 = false; + + else if (StrEqual(game, "left4dead2", false)) + IsL4D2 = true; + + else + SetFailState("Plugin is for Left For Dead 1/2 only"); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_survivorai_triggerfix.sp b/addons/sourcemod/scripting/l4d_survivorai_triggerfix.sp new file mode 100644 index 00000000..bc123ce5 --- /dev/null +++ b/addons/sourcemod/scripting/l4d_survivorai_triggerfix.sp @@ -0,0 +1,855 @@ +#include +#include + +#define PLUGIN_VERSION "1.1.0" +#define PLUGIN_NAME "L4D Survivor AI Trigger Fix" + +new bool:MapTrigger; +new TriggeringBot; + +new PlayerReachedSafeRoom[MAXPLAYERS+1]; +new bool:ReachedSafeRoom; + +new bool:FinaleHasStarted; +new bool:RoundHasEnded; + +public Plugin:myinfo = { + name = PLUGIN_NAME, + author = " AtomicStryker", + description = " Fixes Survivor Bots not advancing at Crescendos or closing Saferooms ", + version = PLUGIN_VERSION, + url = "http://forums.alliedmods.net/showthread.php?p=912391" +}; + +/* + +Big cheers to mi123645 for his assistance + +Find the entity of an Crescendo that needs activating using sm_findentity and the class given. + + +How to trigger Crescendos: + +Buttons: (class func_button, name NM4: elevator_button) - this applies for elevator buttons, the BH3 Train release, the DA3 Dumpster Lever... +AcceptEntityInput(func_button_entity, "Press"); +Use MagTrigger bool to make sure you do this ONCE only. This ignores buttons being already pressed, so screws up majorly if done twice. + +DA3 Gas Cans: (class prop_physics, name barricade_gas_can) +AcceptEntityInput(barricade_gas_can_entity, "Ignite"); + +Found many Doors and Finales workarounds, ent_fire commands, with mi123645s help + +*/ + +public OnPluginStart() +{ + CreateConVar("l4d_survivoraitriggerfix_version", PLUGIN_VERSION, " Version of L4D Survivor AI Trigger Fix on this server ", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD); + + RegAdminCmd("sm_findentitybyclass", Cmd_FindEntityByClass, ADMFLAG_BAN, "sm_findentitybyclass - find an entity by classname and starting index."); + RegAdminCmd("sm_findentitybyname", Cmd_FindEntityByName, ADMFLAG_BAN, "sm_findentitybyname - find an entity by name and starting index."); + RegAdminCmd("sm_listentities", Cmd_ListEntities, ADMFLAG_BAN, "sm_listentities - server console dump of all valid entities"); + RegAdminCmd("sm_findnearentities", Cmd_FindNearEntities, ADMFLAG_BAN, "sm_findnearentities - find all Entities in a radius around you."); + RegAdminCmd("sm_sendentityinput", Cmd_SendEntityInput, ADMFLAG_BAN, "sm_entityinput - sends an Input to said Entity."); + RegAdminCmd("sm_findentprop", Cmd_FindEntPropVal, ADMFLAG_BAN, "sm_findentprop - returns an entity property value in yourself"); + + CreateTimer(3.0, CheckAroundTriggers, 0, TIMER_REPEAT); + + HookEvent("finale_start", FinaleBegins); + HookEvent("round_end", GameEnds); + HookEvent("map_transition", GameEnds); + HookEvent("mission_lost", GameEnds); + HookEvent("finale_win", GameEnds); + + HookEvent("player_entered_checkpoint", Event_PlayerEnterRescueZone); + HookEvent("player_left_checkpoint", Event_PlayerLeavesRescueZone); +} + +public OnMapStart() +{ + MapTrigger = false; + ReachedSafeRoom = false; + FinaleHasStarted = false; + RoundHasEnded = false; + + for (new i = 1; i <= MaxClients; i++) + { + PlayerReachedSafeRoom[i] = 0; + } +} + +public OnMapEnd() +{ + MapTrigger = false; + ReachedSafeRoom = false; + FinaleHasStarted = false; + + for (new i = 1; i <= MaxClients; i++) + { + PlayerReachedSafeRoom[i] = 0; + } +} + +public OnClientPutInServer(client) +{ + if (!IsFakeClient(client)) SetConVarInt(FindConVar("sb_all_bot_team"), 1); +} + +public OnClientDisconnect(client) +{ + if (IsFakeClient(client)) return; + + for (new client2 = 1; client2 <= MaxClients; client2++) + { + if (IsClientInGame(client2)) + if (!IsFakeClient(client2)) return; + } + + SetConVarInt(FindConVar("sb_all_bot_team"), 0); +} + +public Action:GameEnds(Handle:event, const String:name[], bool:dontBroadcast) +{ + CreateTimer(7.0, DelayedBoolReset, 0); + ReachedSafeRoom = false; + FinaleHasStarted = false; + RoundHasEnded = true; + + for (new i = 1; i <= MaxClients; i++) + { + PlayerReachedSafeRoom[i] = 0; + } +} + +public Action:FinaleBegins(Handle:event, const String:name[], bool:dontBroadcast) +{ + FinaleHasStarted = true; +} + +public Action:DelayedBoolReset(Handle:Timer) +{ + MapTrigger = false; // to circumvent bugs with slow-ass l4d engine. + RoundHasEnded = false; +} + + +public Action:CheckAroundTriggers(Handle:timer) +{ + if (!AllBotTeam()) return Plugin_Continue; + + decl String:mapname[256]; + GetCurrentMap(mapname, sizeof(mapname)); + + if (StrContains(mapname, "hospital03_sewers", false) != -1) + { + //NM3. requested gas station blowup, entities: prop_physics, names pump01_breakable and pump02_breakable + + new gaspump = FindEntityByName("pump01_breakable", -1); + + if (gaspump == -1) // has it been destroyed already? continue without doing anything. + { + MapTrigger = true; + return Plugin_Continue; + } + + // using coordinates for approach. Pumps can misfire because range is too high. + // 11180.7 6559.1 78.0; + decl Float:pos1[3]; + pos1[0] = 11180.7 + pos1[1] = 6559.1 + pos1[2] = 78.0 + + if (CheckforBots(pos1, 300.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found approaching the gas station. 'Sploding Stuff Now."); + AcceptEntityInput(gaspump, "Ignite"); + MapTrigger = true; + } + } + + if (StrContains(mapname, "hospital04_interior", false) != -1) + { + //NM4: func_button, VS entids 134 and 1616 + //NM4 second elevator button coordinates: 13501 15133 486 + //coordinates first button: setpos 13488.7 15093.5 479.8; setang 5.0 -86.0 0.0 + + // map is No Mercy 4, using coordinates for elevator button + decl Float:pos1[3]; + pos1[0] = 13488.7 + pos1[1] = 15093.5 + pos1[2] = 479.8 + + if (CheckforBots(pos1, 200.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the first elevator button. Executing a fake call"); + AcceptEntityInput(134, "Press"); + MapTrigger = true; + + // elevator takes about 1 minute to descend, lets use 75 secs + CreateTimer(75.0, NoMercy4ElevatorTeleport, 0); + } + } + + if (StrContains(mapname, "hospital05_rooftop", false) != -1) + { + if (MapTrigger) return Plugin_Continue; + // map is No Mercy 5 + decl Float:pos1[3]; + new button = FindEntityByClassname(-1, "func_button"); + + if (!IsValidEntity(button)) + { + MapTrigger = true; + CreateTimer(20.0, FinaleStart, 0); + return Plugin_Continue; + } + + GetEntityAbsOrigin(button, pos1); + if (CheckforBots(pos1, 200.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the Radio. Executing a fake call"); + AcceptEntityInput(button, "Press"); + MapTrigger = true; + + CreateTimer(20.0, FinaleStart, 0); + } + } + + if (StrContains(mapname, "farm02_traintunnel", false) != -1) + { + // map is BH2 + decl Float:posdoor[3], Float:postriggerer[3], Float:anglestriggerer[3]; + + posdoor[0] = -8605.0 + posdoor[1] = -7530.0 + posdoor[2] = -21.0 + + postriggerer[0] = -8600.0 + postriggerer[1] = -7504.0 + postriggerer[2] = -60.0 + + anglestriggerer[0] = 8.0 + anglestriggerer[1] = -90.0 + anglestriggerer[2] = 0.0 + + if (CheckforBots(posdoor, 300.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the Alarm Door. Trying to get him to open it"); + MapTrigger = true; + + TeleportEntity(TriggeringBot, postriggerer, anglestriggerer, NULL_VECTOR); // move bot infront of the door, facing it + + /*new buttons = GetEntProp(TriggeringBot, Prop_Data, "m_nButtons"); + buttons &= IN_USE; + buttons &= IN_ATTACK; + buttons &= ~IN_ATTACK2; + SetEntProp(TriggeringBot, Prop_Data, "m_nButtons", buttons);*/ // fake execute a Use ... doesnt work + + //FakeClientCommand(TriggeringBot, "+use"); // doesnt work + + UnflagAndExecuteCommand(TriggeringBot, "ent_fire", "emergency_door", "open"); + } + } + + if (StrContains(mapname, "farm03_bridge", false) != -1) + { + // map is Blood Harvest 3 + decl Float:pos1[3]; + new button = FindEntityByClassname(-1, "func_button"); + + if (!IsValidEntity(button) && !MapTrigger) + { + MapTrigger = true; + //CreateTimer(30.0, BloodHarvest3RampTeleport, 0); + return Plugin_Continue; + } + + if (!IsValidEntity(button)) return Plugin_Continue; + + GetEntityAbsOrigin(button, pos1); + + if (CheckforBots(pos1, 1500.0) && MapTrigger == false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found somewhat close to the Train Car button. Executing a fake call"); + AcceptEntityInput(button, "Press"); + MapTrigger = true; + //CreateTimer(30.0, BloodHarvest3RampTeleport, 0); + } + } + + if (StrContains(mapname, "smalltown03_ranchhouse", false) != -1) + { + // map is Death Toll 3 + decl Float:pos1[3]; + new button = FindEntityByClassname(-1, "func_button"); + GetEntityAbsOrigin(button, pos1); + + if (CheckforBots(pos1, 400.0) && MapTrigger == false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the Church Guy Door. Triggering..."); + UnflagAndExecuteCommand(TriggeringBot, "ent_fire", "button_safedoor_panic", ""); + AcceptEntityInput(FindEntityByClassname(-1, "func_orator"), "Kill"); // shut up Church Guy, for he wont stop talking + MapTrigger = true; + } + } + + if (StrContains(mapname, "smalltown05_houseboat", false) != -1) + { + if (MapTrigger) return Plugin_Continue; + // map is Death Toll 5 + decl Float:pos1[3]; + new button = FindEntityByClassname(-1, "func_button"); + + if (!IsValidEntity(button)) + { + MapTrigger = true; + CreateTimer(20.0, FinaleStart, 0); + return Plugin_Continue; + } + + GetEntityAbsOrigin(button, pos1); + if (CheckforBots(pos1, 500.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the Radio. Executing a fake call"); + AcceptEntityInput(button, "Press"); + AcceptEntityInput(FindEntityByClassname(-1, "func_orator"), "Kill"); // shut up John Slater, for he wont stop talking + MapTrigger = true; + + CreateTimer(20.0, FinaleStart, 0); + } + } + + if (StrContains(mapname, "airport03_garage", false) != -1) + { + // map is Dead Air 3. VS entity id of the gas cans is 963 + // name is "barricade_gas_can" + + new gascans = FindEntityByName("barricade_gas_can", -1); + + if (gascans == -1) // has it been destroyed already? continue without doing anything. + { + MapTrigger = true; + return Plugin_Continue; + } + + decl Float:pos1[3]; + GetEntityAbsOrigin(gascans, pos1); + + if (CheckforBots(pos1, 900.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the gas can barricade. Triggering Crescendo."); + AcceptEntityInput(gascans, "Ignite"); + MapTrigger = true; + } + } + + if (StrContains(mapname, "airport05_runway", false) != -1) + { + // map is Dead Air 5 + if (MapTrigger) return Plugin_Continue; + + new button = FindEntityByClassname(-1, "func_button"); + + if (!IsValidEntity(button) && MapTrigger==false) + { + MapTrigger = true; + CreateTimer(10.0, FinaleStart, 0); + return Plugin_Continue; + } + + decl Float:pos1[3]; + GetEntityAbsOrigin(button, pos1); + if (CheckforBots(pos1, 400.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the Radio. Executing a fake call"); + AcceptEntityInput(button, "Press"); + MapTrigger = true; + + CreateTimer(10.0, FinaleStart, 0); + } + } + + if (StrContains(mapname, "garage02_lots", false) != -1) + { + // map is CC2 + decl Float:stuckpos[3]; + + stuckpos[0] = 3227.0; + stuckpos[1] = -24.0; + stuckpos[2] = -200.0; + + if (CheckforBots(stuckpos, 300.0) && MapTrigger==false) + { + PrintToChatAll("\x04[BOTFIX] \x01Bot found close to the evil stuck spot. Warping them FAR ahead in 25 seconds."); + MapTrigger = true; + + CreateTimer(25.0, CrashCourse2StuckFix, 0); + } + } + return Plugin_Continue; +} + +public Action:CrashCourse2StuckFix(Handle:Timer) +{ + PrintToChatAll("\x04[BOTFIX] \x01Warping Bots ahead, far away from their huddling spot."); + PrintToChatAll("\x04[BOTFIX] \x01It has to be that far away, because they keep running back."); + + decl Float:warpto[3]; + + warpto[0] = 5404.0 + warpto[1] = 68.0 + warpto[2] = -60.0 + + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) + { + if (IsPlayerAlive(target) && GetClientTeam(target) == 2 && IsFakeClient(target)) // make sure target is a Survivor Bot + { + TeleportEntity(target, warpto, NULL_VECTOR, NULL_VECTOR); + } + } + } +} + +/* +public Action:BloodHarvest3RampTeleport(Handle:Timer) +{ + PrintToChatAll("\x04[BOTFIX] \x01Shoving Bots onto the Ramp."); + + decl Float:postriggerer[3]; + + postriggerer[0] = 13500.0 + postriggerer[1] = 15163.0 + postriggerer[2] = 427.0 + + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) + { + if (IsPlayerAlive(target) && GetClientTeam(target) == 2 && IsFakeClient(target)) // make sure target is a Survivor Bot + { + TeleportEntity(target, postriggerer, NULL_VECTOR, NULL_VECTOR); + } + } + } +} +*/ + +public Action:NoMercy4ElevatorTeleport(Handle:Timer) +{ + PrintToChatAll("\x04[BOTFIX] \x01Shoving Bots into that Elevator."); + + decl Float:postriggerer[3], Float:anglestriggerer[3]; + + postriggerer[0] = 13500.0 + postriggerer[1] = 15163.0 + postriggerer[2] = 427.0 + anglestriggerer[0] = 8.0 + anglestriggerer[1] = -89.0 + anglestriggerer[2] = 0.0 + + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) + { + if (IsPlayerAlive(target) && GetClientTeam(target) == 2 && IsFakeClient(target)) // make sure target is a Survivor Bot + { + TeleportEntity(target, postriggerer, anglestriggerer, NULL_VECTOR); + TriggeringBot = target; + } + } + } + CreateTimer(1.0, ElevatorCall, 0); +} + +public Action:ElevatorCall(Handle:Timer) +{ + UnflagAndExecuteCommand(TriggeringBot, "ent_fire", "elevator_button", "use"); +} + +public Action:FinaleStart(Handle:Timer) +{ + if (FinaleHasStarted) return Plugin_Continue; + + if (!TriggeringBot) TriggeringBot = GetAnyValidClient(); + else if (!IsClientInGame(TriggeringBot)) TriggeringBot = GetAnyValidClient(); + + if (!TriggeringBot) return Plugin_Continue; + UnflagAndExecuteCommand(TriggeringBot, "ent_fire", "trigger_finale", ""); + PrintToChatAll("\x04[BOTFIX] \x01Executing fake Finale Call."); + return Plugin_Continue; +} + +GetAnyValidClient() +{ + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) return target; + } + return 1; +} + + +public Action:Event_PlayerEnterRescueZone(Handle:event, const String:name[], bool:dontBroadcast) +{ + if (RoundHasEnded) return Plugin_Continue; + decl String:door[64]; + GetEventString(event, "doorname", door, sizeof(door)); + + if (StrEqual(door, "checkpoint_entrance", false) || StrEqual(door, "door_checkpointentrance", false)) + { + new client = GetClientOfUserId(GetEventInt(event, "userid")); + new door_id = GetEventInt(event, "door"); + + if (client != 0 && IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2) + { + PlayerReachedSafeRoom[client] = 1; + ReachedSafeRoom = true; + + if (!AllBotTeam()) return Plugin_Continue; + + if (SurvivorsSafe() >= SurvivorsAlive()) + { + // all Survivors in Saferoom. + PrintToChatAll("\x04[BOTFIX] \x01All Bot Survivors in Safe Room. Force Shutting Door."); + AcceptEntityInput(door_id, "Close"); + } + } + return Plugin_Continue; + } + return Plugin_Continue; +} + +public Action:Event_PlayerLeavesRescueZone(Handle:event, const String:name[], bool:dontBroadcast) +{ + if (RoundHasEnded) return Plugin_Continue; + if (ReachedSafeRoom) + { + new client = GetClientOfUserId(GetEventInt(event, "userid")); + if (client != 0 && IsClientInGame(client) && GetClientTeam(client) == 2) + { + PlayerReachedSafeRoom[client] = 0; + } + } + return Plugin_Continue; +} + +SurvivorsAlive() +{ + new Survivors = 0; + for (new client = 1; client <= MaxClients; client++) + { + if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2) + Survivors++; + } + + return Survivors; +} + +SurvivorsSafe() +{ + new Survivors; + for (new i = 1; i <= MaxClients; i++) + { + if (PlayerReachedSafeRoom[i] == 1) + Survivors++; + } + + return Survivors; +} + +// this bool return true if a Bot was found in a radius around the given position, and sets TriggeringBot to it. +public bool:CheckforBots(Float:position[3], Float:distancesetting) +{ + for (new target = 1; target <= MaxClients; target++) + { + if (IsClientInGame(target)) + { + if (IsPlayerAlive(target) && GetClientTeam(target) == 2 && IsFakeClient(target)) // make sure target is a Survivor Bot + { + decl Float:targetPos[3]; + GetClientAbsOrigin(target, targetPos); + new Float:distance = GetVectorDistance(targetPos, position); // check Survivor Bot Distance from checking point + + if (distance < distancesetting) + { + TriggeringBot = target; + return true; + } + else + { + continue; + } + } + } + } + return false; +} + +public bool:AllBotTeam() +{ + for (new client = 1; client <= MaxClients; client++) + { + if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2) + { + if (!IsFakeClient(client)) return false; + } + } + return true; +} + + +// this console command is for finding entities and their id +public Action:Cmd_FindEntityByClass(client, args) +{ + if (args < 2) + { + ReplyToCommand(client, "[SM] Usage: sm_findentitybyclass - find an entity class starting from index number"); + return Plugin_Handled; + } + + decl String:name[64], String:startnum[12]; + GetCmdArg(1, name, 64); + GetCmdArg(2, startnum, 12); + new entid = FindEntityByClassname(StringToInt(startnum), name); + if (entid == -1) + { + PrintToChat(client, "Found no Entity of that class."); + return Plugin_Handled; + } + + + decl Float:clientpos[3], Float:entpos[3]; + GetClientAbsOrigin(client, clientpos); + GetEntityAbsOrigin(entid, entpos); + new Float:distance = GetVectorDistance(clientpos, entpos); + + GetEntPropString(entid, Prop_Data, "m_iName", name, sizeof(name)); + PrintToChat(client, "Found Entity Id %i, of name: %s; distance from you: %f", entid, name, distance); + + return Plugin_Handled; +} + +public Action:Cmd_FindEntityByName(client, args) +{ + if (args < 2) + { + ReplyToCommand(client, "[SM] Usage: sm_findentitybyname - find an entity by name starting from index number"); + return Plugin_Handled; + } + + decl String:entname[64], String:number[12]; + GetCmdArg(1, entname, 64); + GetCmdArg(2, number, 64); + + new foundid = FindEntityByName(entname, StringToInt(number)); + if (foundid == -1) PrintToChatAll("Nothing by that name found."); + else PrintToChatAll("Found Entity: %i by name %s", foundid, entname); + + return Plugin_Handled; +} + +//this sends Entity Inputs like "Kill" or "Activate" +public Action:Cmd_SendEntityInput(client, args) +{ + if (args < 2) + { + ReplyToCommand(client, "[SM] Usage: sm_entityinput - sends an Input to said Entity"); + return Plugin_Handled; + } + + decl String:entid[64], String:input[12]; + GetCmdArg(1, entid, 64); + GetCmdArg(2, input, 64); + + AcceptEntityInput(StringToInt(entid), input); + + return Plugin_Handled; +} + + +//entity abs origin code from here +//http://forums.alliedmods.net/showpost.php?s=e5dce96f11b8e938274902a8ad8e75e9&p=885168&postcount=3 +public Action:GetEntityAbsOrigin(entity,Float:origin[3]) +{ + decl Float:mins[3], Float:maxs[3]; + + GetEntPropVector(entity,Prop_Send,"m_vecOrigin",origin); + GetEntPropVector(entity,Prop_Send,"m_vecMins",mins); + GetEntPropVector(entity,Prop_Send,"m_vecMaxs",maxs); + + origin[0] += (mins[0] + maxs[0]) * 0.5; + origin[1] += (mins[1] + maxs[1]) * 0.5; + origin[2] += (mins[2] + maxs[2]) * 0.5; +} + +// this finds entites - who have a position - in a radius around you +public Action:Cmd_FindNearEntities(client, args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_findnearentities - find all Entities with a position close to you"); + return Plugin_Handled; + } + decl String:value[64]; + GetCmdArg(1, value, 64); + new Float:radius = StringToFloat(value); + + decl Float:entpos[3], Float:clientpos[3], String:name[128], String:classname[128]; + GetClientAbsOrigin(client, clientpos); + new maxentities = GetMaxEntities(); + + for (new i = 1; i <= maxentities; i++) + { + if (!IsValidEntity(i)) continue; // exclude invalid entities. + + GetEntPropString(i, Prop_Data, "m_iName", name, sizeof(name)); + GetEdictClassname(i, classname, 128) + + // you wouldn't believe how long this took me. + if (strcmp(classname, "cs_team_manager") == 0) continue; + if (strcmp(classname, "terror_player_manager") == 0) continue; + if (strcmp(classname, "terror_gamerules") == 0) continue; + if (strcmp(classname, "soundent") == 0) continue; + if (strcmp(classname, "vote_controller") == 0) continue; + if (strcmp(classname, "move_rope") == 0) continue; + if (strcmp(classname, "keyframe_rope") == 0) continue; + if (strcmp(classname, "water_lod_control") == 0) continue; + if (strcmp(classname, "predicted_viewmodel") == 0) continue; + if (strcmp(classname, "beam") == 0) continue; + if (strcmp(classname, "info_particle_system") == 0) continue; + if (strcmp(classname, "color_correction") == 0) continue; + if (strcmp(classname, "shadow_control") == 0) continue; + if (strcmp(classname, "env_fog_controller") == 0) continue; + if (strcmp(classname, "ability_lunge") == 0) continue; + if (strcmp(classname, "cs_ragdoll") == 0) continue; + if (strcmp(classname, "instanced_scripted_scene") == 0) continue; + if (strcmp(classname, "ability_vomit") == 0) continue; + if (strcmp(classname, "ability_tongue") == 0) continue; + if (strcmp(classname, "env_wind") == 0) continue; + if (strcmp(classname, "env_detail_controller") == 0) continue; + if (strcmp(classname, "func_occluder") == 0) continue; + if (strcmp(classname, "logic_choreographed_scene") == 0) continue; + + GetEntityAbsOrigin(i, entpos); + if (GetVectorDistance(entpos, clientpos) < radius) + { + PrintToChat(client, "Found: Entid %i, name %s, class %s", i, name, classname); + } + } + return Plugin_Handled; +} + + +// dumps a list of all map entities into your servers console. if you localhost that is YOUR console ^^ +public Action:Cmd_ListEntities(client, args) +{ + new maxentities = GetMaxEntities(); + decl String:name[128], String:classname[128]; + + for (new i = 0; i <= maxentities; i++) + { + if (!IsValidEntity(i)) continue; // exclude invalid entities. + + GetEntPropString(i, Prop_Data, "m_iName", name, sizeof(name)); + GetEdictClassname(i, classname, 128) + PrintToServer("%i: name %s, classname %s", i, name, classname); + + } + return Plugin_Handled; +} + +public FindEntityByName(String:name[], any:startcount) +{ + decl String:classname[128]; + new maxentities = GetMaxEntities(); + + for (new i = startcount; i <= maxentities; i++) + { + if (!IsValidEntity(i)) continue; // exclude invalid entities. + + GetEdictClassname(i, classname, 128) + + // you wouldn't believe how long this took me. + if (strcmp(classname, "cs_team_manager") == 0) continue; + if (strcmp(classname, "terror_player_manager") == 0) continue; + if (strcmp(classname, "terror_gamerules") == 0) continue; + if (strcmp(classname, "soundent") == 0) continue; + if (strcmp(classname, "vote_controller") == 0) continue; + if (strcmp(classname, "move_rope") == 0) continue; + if (strcmp(classname, "keyframe_rope") == 0) continue; + if (strcmp(classname, "water_lod_control") == 0) continue; + if (strcmp(classname, "predicted_viewmodel") == 0) continue; + if (strcmp(classname, "beam") == 0) continue; + if (strcmp(classname, "info_particle_system") == 0) continue; + if (strcmp(classname, "color_correction") == 0) continue; + if (strcmp(classname, "shadow_control") == 0) continue; + if (strcmp(classname, "env_fog_controller") == 0) continue; + if (strcmp(classname, "ability_lunge") == 0) continue; + if (strcmp(classname, "cs_ragdoll") == 0) continue; + if (strcmp(classname, "instanced_scripted_scene") == 0) continue; + if (strcmp(classname, "ability_vomit") == 0) continue; + if (strcmp(classname, "ability_tongue") == 0) continue; + if (strcmp(classname, "env_wind") == 0) continue; + if (strcmp(classname, "env_detail_controller") == 0) continue; + if (strcmp(classname, "func_occluder") == 0) continue; + if (strcmp(classname, "logic_choreographed_scene") == 0) continue; + + decl String:iname[128]; + GetEntPropString(i, Prop_Data, "m_iName", iname, sizeof(iname)); + if (strcmp(name,iname,false) == 0) return i; + } + return -1; +} + +public Action:Cmd_FindEntPropVal(client, args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_findentprop - returns an entity property value in yourself"); + return Plugin_Handled; + } + + decl String:prop[64]; + GetCmdArg(1, prop, sizeof(prop)); + + new offset = FindSendPropInfo("CTerrorPlayer", prop); + + if (offset == -1) + { + PrintToChat(client, "No such property: %s", prop) + return Plugin_Handled; + } + + else if (offset == 0) + { + PrintToChat(client, "No offset found for: %s", prop) + return Plugin_Handled; + } + + PrintToChat(client, "Value of %s: %i", prop, GetEntData(client, offset)); + return Plugin_Handled; +} + +public Action:UnflagAndExecuteCommand(client, String:command[], String:parameter1[], String:parameter2[]) +{ + if (client == 0 || !IsClientConnected(client)) + { + for (new i = 1; i <= MaxClients; i++) + { + if (IsClientConnected(i) && IsClientInGame(i)) + { + client = i + break; + } + } + } + + new userflags = GetUserFlagBits(client); + SetUserFlagBits(client, ADMFLAG_ROOT); + new flags = GetCommandFlags(command); + SetCommandFlags(command, flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "%s %s %s", command, parameter1, parameter2) + SetCommandFlags(command, flags); + SetUserFlagBits(client, userflags); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4d_temphealthmedkits.sp b/addons/sourcemod/scripting/l4d_temphealthmedkits.sp index 1ea75809..284ff64e 100644 --- a/addons/sourcemod/scripting/l4d_temphealthmedkits.sp +++ b/addons/sourcemod/scripting/l4d_temphealthmedkits.sp @@ -43,7 +43,7 @@ public Plugin:myinfo = public OnPluginStart() { - hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "1", "Enable temp health medkits"); + hEnabled = CreateConVar("l4d2_temphealthmedkits_enable", "0", "Enable temp health medkits"); HookConVarChange(hEnabled, Enabled_Change); bEnabled = GetConVarBool(hEnabled); @@ -154,4 +154,4 @@ stock SetBlackAndWhite(target, health, temp_health) SetEntityHealth(target, health); SetSurvivorTempHealth(target, temp_health); } -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4d_witch_damage.sp b/addons/sourcemod/scripting/l4d_witch_damage.sp index 1a6d28d5..f6810357 100644 --- a/addons/sourcemod/scripting/l4d_witch_damage.sp +++ b/addons/sourcemod/scripting/l4d_witch_damage.sp @@ -77,7 +77,7 @@ public void OnPluginStart() // CVARS g_hCvarAllow = CreateConVar( "l4d_witch_damage_allow", "1", "0=Plugin off, 1=Plugin on.", CVAR_FLAGS ); g_hCvarDamage = CreateConVar( "l4d_witch_damage_damage", "100", "Damage applied when survivor is not incapped. Scaled with scale cvar depending on the game difficulty.", CVAR_FLAGS ); - g_hCvarIncap = CreateConVar( "l4d_witch_damage_incapped", "30", "Damage applied when survivor is incapped. Scaled with scale cvar depending on the game difficulty.", CVAR_FLAGS ); + g_hCvarIncap = CreateConVar( "l4d_witch_damage_incapped", "25", "Damage applied when survivor is incapped. Scaled with scale cvar depending on the game difficulty.", CVAR_FLAGS ); g_hCvarScale = CreateConVar( "l4d_witch_damage_scale", "100,100,100,100", "Scales damage depending on game difficulty, each comma separated: 1st = Easy. 2nd = Normal. 3rd = Advanced. 4th = Expert.", CVAR_FLAGS ); g_hCvarModes = CreateConVar( "l4d_witch_damage_modes", "", "Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all).", CVAR_FLAGS ); g_hCvarModesOff = CreateConVar( "l4d_witch_damage_modes_off", "", "Turn off the plugin in these game modes, separate by commas (no spaces). (Empty = none).", CVAR_FLAGS ); @@ -318,4 +318,4 @@ public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &dam void HurtEntity(int target) { SDKHooks_TakeDamage(target, 0, 0, 100.0, DMG_GENERIC); -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/l4dafkfix.sp b/addons/sourcemod/scripting/l4dafkfix.sp new file mode 100644 index 00000000..5649f6c5 --- /dev/null +++ b/addons/sourcemod/scripting/l4dafkfix.sp @@ -0,0 +1,409 @@ +#include +#include + +#pragma semicolon 1 + +#define PLUGIN_VERSION "1.2" +#define DEBUG 0 +#define TEAM_SURVIVORS 2 + +// Bools +new bool:PlayerWentAFK[MAXPLAYERS+1]; +new bool:g_bL4DVersion; + +// Variables +new SurvivorCharacter[MAXPLAYERS+1]; + +public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +{ + // Checks to see if the game is a L4D game. If it is, check if its the sequel. L4DVersion is L4D if false, L4D2 if true. + decl String:GameName[64]; + GetGameFolderName(GameName, sizeof(GameName)); + if(StrContains(GameName, "left4dead", false) == -1) + return APLRes_Failure; + else if(StrEqual(GameName, "left4dead2", false)) + g_bL4DVersion = true; + + return APLRes_Success; +} + +public Plugin:myinfo = +{ + name = "[L4D(2)] 4+ Survivor Afk Fix", + author = "MI 5, SwiftReal", + description = "Fixes issue where player does not go IDLE on a bot in 4+ survivors games", + version = PLUGIN_VERSION, + url = "N/A" +} + + +public OnPluginStart() +{ + // Register a version cvar + CreateConVar("l4dafkfix_version", PLUGIN_VERSION, "Version of L4D 4+ Survivor AFK Fix", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD); + SetConVarString(FindConVar("l4dafkfix_version"), PLUGIN_VERSION); + + RegConsoleCmd("sm_idle", GoAwayFromKeyboard, "Take a break and spectate own survivor bot"); + RegConsoleCmd("sm_afk", GoAwayFromKeyboard, "Take a break and spectate own survivor bot"); + + // Hook the player_bot_replace event and player_afk event + HookEvent("player_afk", Event_PlayerWentAFK, EventHookMode_Pre); + HookEvent("player_bot_replace", Event_BotReplacedPlayer); + HookEvent("player_death", Event_PlayerDeath, EventHookMode_Pre); + HookEvent("round_end", Event_RoundEnded, EventHookMode_Pre); + HookEvent("bot_player_replace", Event_PlayerReplacedBot); +} + +public Action:GoAwayFromKeyboard(client, args) +{ + FakeClientCommand(client, "go_away_from_keyboard"); + return Plugin_Handled; +} + +public Action:Event_PlayerWentAFK(Handle:event, const String:name[], bool:dontBroadcast) +{ + // Event is triggered when a player goes AFK + + #if DEBUG + PrintToChatAll("Player went AFK"); + #endif + new client = GetClientOfUserId(GetEventInt(event, "player")); + PlayerWentAFK[client] = true; + SurvivorCharacter[client] = GetEntProp(client, Prop_Send, "m_survivorCharacter"); +} + +public Action:Event_BotReplacedPlayer(Handle:event, const String:name[], bool:dontBroadcast) +{ + // Event is triggered when a bot takes over a player + #if DEBUG + PrintToChatAll("Bot Replaced Player"); + #endif + + new client = GetClientOfUserId(GetEventInt(event, "player")); + new bot = GetClientOfUserId(GetEventInt(event, "bot")); + + // Create a datapack as we are moving 2+ pieces of data through a timer + if(GetClientTeam(bot)==TEAM_SURVIVORS) + { + if(client) + { + if(IsClientConnected(client) && IsClientInGame(client)) + { + SurvivorCharacter[bot] = SurvivorCharacter[client]; + + if(g_bL4DVersion) + SetSurvivorCharacter(bot); + else + SetSurvivorCharacterL4D1(bot); + + new Handle:datapack = CreateDataPack(); + WritePackCell(datapack, client); + WritePackCell(datapack, bot); + CreateTimer(0.5, Timer_ActivateFix, datapack, TIMER_FLAG_NO_MAPCHANGE); + } + } + } +} + +public Action:Event_PlayerReplacedBot(Handle:event, const String:name[], bool:dontBroadcast) +{ + // Event is triggered when a player takes over a bot + #if DEBUG + PrintToChatAll("Player replaced bot"); + #endif + + new client = GetClientOfUserId(GetEventInt(event, "player")); + + if(client) + { + if(IsClientConnected(client)) + { + if(IsClientInGame(client)) + { + if(GetClientTeam(client) == TEAM_SURVIVORS) + { + if(g_bL4DVersion) + SetSurvivorCharacter(client); + else + SetSurvivorCharacterL4D1(client); + } + } + } + } + +} + +public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) +{ + // Event is triggered when a player dies + new client = GetClientOfUserId(GetEventInt(event, "userid")); + if(!client) return; + if(!IsClientInGame(client)) return; + + // If the client is a bot and has a player idle on it, force the player to take over the bot + if(IsFakeClient(client) && GetClientTeam(client)==TEAM_SURVIVORS && HasIdlePlayer(client)) + { + new idleplayer = FindidOfIdlePlayer(client); + if(idleplayer != 0) + TakeOverBot(idleplayer, client); + } +} + +public Action:Timer_ActivateFix(Handle:Timer, any:datapack) +{ + // Reset the data pack + ResetPack(datapack); + + // Retrieve values from datapack + new client = ReadPackCell(datapack); + new bot = ReadPackCell(datapack); + + // Check to see if the player successfully went AFK, and if the player did, forget this plugin + if(IsClientIdle(client, bot)) + { + PlayerWentAFK[client] = false; + return; + } + + // If the player went AFK and failed, continue on + if(PlayerWentAFK[client]) + { + PlayerWentAFK[client] = false; + SetHumanIdle(client, bot); + } +} + +stock SetHumanIdle(client, bot) +{ + #if DEBUG + PrintToChatAll("Player went idle"); + #endif + + static Handle:hSpec; + if(hSpec == INVALID_HANDLE) + { + new Handle:hGameConf; + + hGameConf = LoadGameConfigFile("l4dafkfix"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "SetHumanSpec"); + PrepSDKCall_AddParameter(SDKType_CBasePlayer, SDKPass_Pointer); + hSpec = EndPrepSDKCall(); + } + SDKCall(hSpec, bot, client); + SetEntProp(client, Prop_Send, "m_iObserverMode", 5); + if(g_bL4DVersion) + SetSurvivorCharacter(bot); + else + SetSurvivorCharacterL4D1(bot); + return; +} + +stock TakeOverBot(client, bot) +{ + #if DEBUG + PrintToChatAll("Taking over bot because it died"); + #endif + + static Handle:hSpec; + if(hSpec == INVALID_HANDLE) + { + new Handle:hGameConf; + + hGameConf = LoadGameConfigFile("l4dafkfix"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "SetHumanSpec"); + PrepSDKCall_AddParameter(SDKType_CBasePlayer, SDKPass_Pointer); + hSpec = EndPrepSDKCall(); + } + + static Handle:hSwitch; + if(hSwitch == INVALID_HANDLE) + { + new Handle:hGameConf; + + hGameConf = LoadGameConfigFile("l4dafkfix"); + + StartPrepSDKCall(SDKCall_Player); + PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "TakeOverBot"); + PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); + hSwitch = EndPrepSDKCall(); + } + + SDKCall(hSpec, bot, client); + SDKCall(hSwitch, client, true); + if(g_bL4DVersion) + SetSurvivorCharacter(client); + else + SetSurvivorCharacterL4D1(client); + return; +} + +public OnClientPutInServer(client) +{ + SurvivorCharacter[client] = -1; +} + +public Action:Event_RoundEnded(Handle:event, const String:name[], bool:dontBroadcast) +{ + for(new i = 1; i >= MaxClients; i++) + { + if(IsClientConnected(i) && IsClientInGame(i) && IsFakeClient(i) && IsAlive(i) && HasIdlePlayer(i)) + TakeOverBot(FindidOfIdlePlayer(i), i); + } +} + +public OnMapEnd() +{ + for(new i = 1; i >= MaxClients; i++) + { + if(IsClientConnected(i) && IsClientInGame(i) && IsFakeClient(i) && IsAlive(i) && HasIdlePlayer(i)) + TakeOverBot(FindidOfIdlePlayer(i), i); + } +} + +public OnClientDisconnect(client) +{ + // Reset the arrays on the client when the client disconnects + PlayerWentAFK[client] = false; + SurvivorCharacter[client] = -1; +} + +stock bool:IsClientIdle(client, bot) +{ + // Taken from cigs code + + if(IsValidEntity(bot)) + { + new spectator_userid = GetEntProp(bot, Prop_Send, "m_humanSpectatorUserID"); + new spectator_client = GetClientOfUserId(spectator_userid); + + if(spectator_client == client) + return true; + } + return false; +} + +stock bool:HasIdlePlayer(bot) +{ + // Taken from cigs code + + new userid = GetEntProp(bot, Prop_Send, "m_humanSpectatorUserID"); + new client = GetClientOfUserId(userid); + + if(client) + { + // Do not count bots + // Do not count 3rd person view players + if(IsClientInGame(client) && !IsFakeClient(client) && (GetClientTeam(client) != TEAM_SURVIVORS)) + return true; + } + return false; +} + +stock bool:IsAlive(client) +{ + if(!GetEntProp(client, Prop_Send, "m_lifeState")) + return true; + + return false; +} + +stock FindidOfIdlePlayer(bot) +{ + // Taken from cigs code + + new userid = GetEntProp(bot, Prop_Send, "m_humanSpectatorUserID"); + new client = GetClientOfUserId(userid); + + if(client) + { + // Do not count bots + // Do not count 3rd person view players + if(IsClientInGame(client) && !IsFakeClient(client) && (GetClientTeam(client) != TEAM_SURVIVORS)) + return client; + } + + #if DEBUG + PrintToChatAll("Unable to find an idle player"); + #endif + return 0; +} + +stock SetSurvivorCharacter(client) +{ + switch(SurvivorCharacter[client]) + { + case 0: // Nick + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 0); + SetEntityModel(client, "models/survivors/survivor_gambler.mdl"); + } + case 1: // Rochelle + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 1); + SetEntityModel(client, "models/survivors/survivor_producer.mdl"); + } + case 2: // Coach + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 2); + SetEntityModel(client, "models/survivors/survivor_coach.mdl"); + } + case 3: // Ellis + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 3); + SetEntityModel(client, "models/survivors/survivor_mechanic.mdl"); + } + case 4: // Bill + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 4); + SetEntityModel(client, "models/survivors/survivor_namvet.mdl"); + } + case 5: // Zoey + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 5); + SetEntityModel(client, "models/survivors/survivor_teenangst.mdl"); + } + case 6: // Francis + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 6); + SetEntityModel(client, "models/survivors/survivor_biker.mdl"); + } + case 7: // Louis + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 7); + SetEntityModel(client, "models/survivors/survivor_manager.mdl"); + } + } +} + +stock SetSurvivorCharacterL4D1(client) +{ + switch(SurvivorCharacter[client]) + { + case 0: // Bill + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 0); + SetEntityModel(client, "models/survivors/survivor_namvet.mdl"); + } + case 1: // Zoey + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 1); + SetEntityModel(client, "models/survivors/survivor_teenangst.mdl"); + } + case 2: // Francis + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 2); + SetEntityModel(client, "models/survivors/survivor_biker.mdl"); + } + case 3: // Louis + { + SetEntProp(client, Prop_Send, "m_survivorCharacter", 3); + SetEntityModel(client, "models/survivors/survivor_manager.mdl"); + } + } +} + +/////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/addons/sourcemod/scripting/l4dpistoldelay.sp b/addons/sourcemod/scripting/l4dpistoldelay.sp deleted file mode 100644 index 8ae8a0a0..00000000 --- a/addons/sourcemod/scripting/l4dpistoldelay.sp +++ /dev/null @@ -1,157 +0,0 @@ -/* - SourcePawn is Copyright (C) 2006-2015 AlliedModders LLC. All rights reserved. - SourceMod is Copyright (C) 2006-2015 AlliedModders LLC. All rights reserved. - Pawn and SMALL are Copyright (C) 1997-2015 ITB CompuPhase. - Source is Copyright (C) Valve Corporation. - All trademarks are property of their respective owners. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation, either version 3 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program. If not, see . -*/ -#include -#include -#include - -public Plugin:myinfo = -{ - name = "L4D Pistol Delayer", - author = "Griffin, darkid", - description = "Limits pistol fire rate & allows slow fire while holding m1.", - version = "0.3", - url = "https://github.com/jacob404/Pro-Mod-4.0/releases/latest" -}; - -new Float:g_fNextAttack[MAXPLAYERS + 1]; -new Float:g_fNextAutoFire[MAXPLAYERS + 1]; -new Handle:g_hPistolDelayDualies = INVALID_HANDLE; -new Handle:g_hPistolDelaySingle = INVALID_HANDLE; -new Handle:g_hPistolDelayIncapped = INVALID_HANDLE; -new Handle:g_hPistolSlowFire = INVALID_HANDLE; - -public OnPluginStart() -{ - for (new client = 1; client <= MaxClients; client++) - { - if (!IsClientInGame(client)) continue; - SDKHook(client, SDKHook_PostThinkPost, Hook_OnPostThinkPost); - } - // Defaults are from fastest firing on 30tick - g_hPistolDelayDualies = CreateConVar("l4d_pistol_delay_dualies", "0.1", "Minimum time (in seconds) between dual pistol shots", - FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY, true, 0.0, true, 5.0); - g_hPistolDelaySingle = CreateConVar("l4d_pistol_delay_single", "0.2", "Minimum time (in seconds) between single pistol shots", - FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY, true, 0.0, true, 5.0); - g_hPistolDelayIncapped = CreateConVar("l4d_pistol_delay_incapped", "0.3", "Minimum time (in seconds) between pistol shots while incapped", - FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY, true, 0.0, true, 5.0); - g_hPistolSlowFire = CreateConVar("l4d_pistol_autofire_rate", "0.3", "Auto-fire rate for dualies (seconds per shot) while holding mouse1.", - FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY, true, 0.0, true, 5.0); - - HookEvent("weapon_fire", Event_WeaponFire); -} - -public OnMapStart() -{ - for (new client = 1; client <= MaxClients; client++) - { - g_fNextAttack[client] = 0.0; - } -} - -public OnClientPutInServer(client) -{ - SDKHook(client, SDKHook_PreThink, Hook_OnPostThinkPost); - g_fNextAttack[client] = 0.0; -} - -public Hook_OnPostThinkPost(client) -{ - // Human survivors only - if (!IsClientInGame(client) || IsFakeClient(client) || GetClientTeam(client) != 2) return; - new activeweapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); - if (!IsValidEdict(activeweapon)) return; - decl String:weaponname[64]; - GetEdictClassname(activeweapon, weaponname, sizeof(weaponname)); - if (strcmp(weaponname, "weapon_pistol") != 0) return; - - new Float:old_value = GetEntPropFloat(activeweapon, Prop_Send, "m_flNextPrimaryAttack"); - new Float:new_value = g_fNextAttack[client]; - - // Never accidentally speed up fire rate - if (new_value > old_value) - { - // PrintToChatAll("Readjusting delay: Old=%f, New=%f", old_value, new_value); - SetEntPropFloat(activeweapon, Prop_Send, "m_flNextPrimaryAttack", new_value); - } -} - -public Action:Event_WeaponFire(Handle:event, const String:name[], bool:dontBroadcast) -{ - new client = GetClientOfUserId(GetEventInt(event, "userid")); - if (!IsClientInGame(client) || IsFakeClient(client) || GetClientTeam(client) != 2) return; - new activeweapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); - if (!IsValidEdict(activeweapon)) return; - decl String:weaponname[64]; - GetEdictClassname(activeweapon, weaponname, sizeof(weaponname)); - if (strcmp(weaponname, "weapon_pistol") != 0) return; - // new dualies = GetEntProp(activeweapon, Prop_Send, "m_hasDualWeapons"); - if (GetEntProp(client, Prop_Send, "m_isIncapacitated")) - { - g_fNextAttack[client] = GetGameTime() + GetConVarFloat(g_hPistolDelayIncapped); - } - // What is the difference between m_isDualWielding and m_hasDualWeapons ? - else if (GetEntProp(activeweapon, Prop_Send, "m_isDualWielding")) - { - g_fNextAttack[client] = GetGameTime() + GetConVarFloat(g_hPistolDelayDualies); - } - else - { - g_fNextAttack[client] = GetGameTime() + GetConVarFloat(g_hPistolDelaySingle); - } -} - - -public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) { - if (client <= 0 || client > MaxClients) return Plugin_Continue; - if (!IsClientInGame(client)) return Plugin_Continue; - if (IsFakeClient(client)) return Plugin_Continue; - if (GetClientTeam(client) != 2) return Plugin_Continue; - new activeweapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); - if (!IsValidEdict(activeweapon)) return Plugin_Continue; - decl String:weaponname[64]; - GetEdictClassname(activeweapon, weaponname, sizeof(weaponname)); - if (strcmp(weaponname, "weapon_pistol") != 0) return Plugin_Continue; - - if (buttons & IN_RELOAD == IN_RELOAD) { - // Otherwise the user can't reload while their pistol is on cooldown. - // If the delay is longer than the reload anim (~2.4 sec), they will not get credit for reloading until the cooldown wears off. - // The reload will be canceled if weapons are changed during this time. - SetEntPropFloat(activeweapon, Prop_Send, "m_flNextPrimaryAttack", GetGameTime()); - } - - if (GetEntProp(client, Prop_Send, "m_isIncapacitated")) return Plugin_Continue; - if (!GetEntProp(activeweapon, Prop_Send, "m_isDualWielding")) return Plugin_Continue; - - if (buttons & IN_ATTACK == IN_ATTACK) { - if (g_fNextAutoFire[client] == 0.0) { // Signal - g_fNextAutoFire[client] = GetGameTime() + GetConVarFloat(g_hPistolSlowFire); - } else if (GetGameTime() > g_fNextAutoFire[client]) { - buttons &= ~IN_ATTACK; // Release M1 for them so the game thinks that they're clicking again next frame. - g_fNextAutoFire[client] = GetGameTime() + GetConVarFloat(g_hPistolSlowFire); - EmitSoundToAll("weapons/pistol/gunfire/pistol_dual_fire.wav", client, SNDCHAN_VOICE); - return Plugin_Changed; - } - } else { - g_fNextAutoFire[client] = 0.0; // Signals client not attacking - } - - return Plugin_Continue; -} diff --git a/addons/sourcemod/scripting/l4dunreservelobby.sp b/addons/sourcemod/scripting/l4dunreservelobby.sp new file mode 100644 index 00000000..a957f1b8 --- /dev/null +++ b/addons/sourcemod/scripting/l4dunreservelobby.sp @@ -0,0 +1,149 @@ +#include +#include +#include "left4downtown.inc" + +#define UNRESERVE_VERSION "1.1.1" + +#define UNRESERVE_DEBUG 0 +#define UNRESERVE_DEBUG_LOG 0 + +#define L4D_MAXCLIENTS MaxClients +#define L4D_MAXCLIENTS_PLUS1 (L4D_MAXCLIENTS + 1) + +#define L4D_MAXHUMANS_LOBBY_VERSUS 8 +#define L4D_MAXHUMANS_LOBBY_OTHER 4 + +new Handle:cvarGameMode = INVALID_HANDLE; + +public Plugin:myinfo = +{ + name = "L4D1/2 Remove Lobby Reservation", + author = "Downtown1", + description = "Removes lobby reservation when server is full", + version = UNRESERVE_VERSION, + url = "http://forums.alliedmods.net/showthread.php?t=87759" +} + +new Handle:cvarUnreserve = INVALID_HANDLE; + +public OnPluginStart() +{ + LoadTranslations("common.phrases"); + + RegAdminCmd("sm_unreserve", Command_Unreserve, ADMFLAG_BAN, "sm_unreserve - manually force removes the lobby reservation"); + + cvarUnreserve = CreateConVar("l4d_unreserve_full", "1", "Automatically unreserve server after a full lobby joins", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY); + CreateConVar("l4d_unreserve_version", UNRESERVE_VERSION, "Version of the Lobby Unreserve plugin.", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY); + + cvarGameMode = FindConVar("mp_gamemode"); +} + +bool:IsScavengeMode() +{ + decl String:sGameMode[32]; + GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode)); + if (StrContains(sGameMode, "scavenge") > -1) + { + return true; + } + else + { + return false; + } +} + +bool:IsVersusMode() +{ + decl String:sGameMode[32]; + GetConVarString(cvarGameMode, sGameMode, sizeof(sGameMode)); + if (StrContains(sGameMode, "versus") > -1) + { + return true; + } + else + { + return false; + } +} + +IsServerLobbyFull() +{ + new humans = GetHumanCount(); + + DebugPrintToAll("IsServerLobbyFull : humans = %d", humans); + + if(IsVersusMode() || IsScavengeMode()) + { + return humans >= L4D_MAXHUMANS_LOBBY_VERSUS; + } + return humans >= L4D_MAXHUMANS_LOBBY_OTHER; +} + +public OnClientPutInServer(client) +{ + DebugPrintToAll("Client put in server %N", client); + + if(GetConVarBool(cvarUnreserve) && /*L4D_LobbyIsReserved() &&*/ IsServerLobbyFull()) + { + //PrintToChatAll("[SM] A full lobby has connected, automatically unreserving the server."); + L4D_LobbyUnreserve(); + } +} + +public Action:Command_Unreserve(client, args) +{ + /*if(!L4D_LobbyIsReserved()) + { + ReplyToCommand(client, "[SM] Server is already unreserved."); + }*/ + + L4D_LobbyUnreserve(); + PrintToChatAll("[SM] Lobby reservation has been removed."); + + return Plugin_Handled; +} + + +//client is in-game and not a bot +stock bool:IsClientInGameHuman(client) +{ + return IsClientInGame(client) && !IsFakeClient(client); +} + +stock GetHumanCount() +{ + new humans = 0; + + new i; + for(i = 1; i < L4D_MAXCLIENTS_PLUS1; i++) + { + if(IsClientInGameHuman(i)) + { + humans++ + } + } + + return humans; +} + +DebugPrintToAll(const String:format[], any:...) +{ + #if UNRESERVE_DEBUG || UNRESERVE_DEBUG_LOG + decl String:buffer[192]; + + VFormat(buffer, sizeof(buffer), format, 2); + + #if UNRESERVE_DEBUG + PrintToChatAll("[UNRESERVE] %s", buffer); + PrintToConsole(0, "[UNRESERVE] %s", buffer); + #endif + + LogMessage("%s", buffer); + #else + //suppress "format" never used warning + if(format[0]) + return; + else + return; + #endif +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/lagpreventor.sp b/addons/sourcemod/scripting/lagpreventor.sp new file mode 100644 index 00000000..2e3d2b1d --- /dev/null +++ b/addons/sourcemod/scripting/lagpreventor.sp @@ -0,0 +1,74 @@ +#pragma semicolon 1 + +#include +#include +#include + +new Float:EntPos[2048][3]; +new bool:PosChange[2048]; + +public Plugin:myinfo = +{ + name = "LagFixer", + author = "tRololo312312", + description = "Might solve some lag issues on some maps.", + version = "1.1", + url = "https://steamcommunity.com/profiles/76561198039186809/" +}; + +public OnPluginStart() +{ + CreateTimer(7.0, CheckPos, _, TIMER_REPEAT); +} + +public Action:CheckPos(Handle:timer) +{ + decl Float:currentPos[3]; + new index; + new i = -1; + while((i = FindEntityByClassname(i, "phys_bone_follower")) != INVALID_ENT_REFERENCE) + { + if(IsValidEntity(i)) + { + GetEntPropVector(i, Prop_Send, "m_vecOrigin", currentPos); + if(EntPos[i][0] != 0.0) + { + for(index = 0; index < 3; index++) + { + if(currentPos[index] != EntPos[i][index]) + { + PosChange[i] = true; + break; + } + else if(PosChange[i] && index == 2) + PosChange[i] = false; + } + } + + for(index = 0; index < 3; index++) + { + EntPos[i][index] = currentPos[index]; + } + } + } +} + +public OnEntityCreated(entity, const String:classname[]) +{ + if(StrEqual(classname, "phys_bone_follower")) + { + if(IsValidEntity(entity)) + { + SDKHook(entity, SDKHook_SetTransmit, HideIt); + EntPos[entity] = Float:{0.0, 0.0, 0.0}; + PosChange[entity] = false; + } + } +} + +public Action HideIt(int iEntity, int iClient) +{ + if(!IsFakeClient(iClient) && PosChange[iEntity]) + return Plugin_Handled; + return Plugin_Continue; +} diff --git a/addons/sourcemod/scripting/lfd_both_chainsaw.sp b/addons/sourcemod/scripting/lfd_both_chainsaw.sp new file mode 100644 index 00000000..f9241ad5 --- /dev/null +++ b/addons/sourcemod/scripting/lfd_both_chainsaw.sp @@ -0,0 +1,41 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include + +public Plugin myinfo = +{ + name = "[L4D2] Unlimited Chainsaw", + author = "bullet28", + description = "Chainsaw fuel always at 100%", + version = "1", + url = "" +} + +public void OnPluginStart() { + HookEvent("weapon_fire", eventWeaponFire); +} + +public Action eventWeaponFire(Event event, const char[] name, bool dontBroadcast) { + if (event.GetInt("weaponid") == 20) { + int client = GetClientOfUserId(event.GetInt("userid")); + if (!isPlayerAliveSurvivor(client)) return; + + int activeWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); + if (!isValidEntity(activeWeapon)) return; + + char classname[32]; + GetEntityClassname(activeWeapon, classname, sizeof(classname)); + if (!StrEqual(classname, "weapon_chainsaw")) return; + + SetEntProp(activeWeapon, Prop_Data, "m_iClip1", 30); + } +} + +bool isPlayerAliveSurvivor(int client) { + return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && IsPlayerAlive(client); +} + +bool isValidEntity(int entity) { + return entity > 0 && entity <= 2048 && IsValidEdict(entity) && IsValidEntity(entity); +} diff --git a/addons/sourcemod/scripting/lfd_both_csm_voice.sp b/addons/sourcemod/scripting/lfd_both_csm_voice.sp new file mode 100644 index 00000000..fcfd6030 --- /dev/null +++ b/addons/sourcemod/scripting/lfd_both_csm_voice.sp @@ -0,0 +1,98 @@ +#pragma semicolon 1 +#include +#include +#include +#pragma newdecls required + +public Plugin myinfo = +{ + name = "Wrong Voice Owner Fix", + author = "bullet28", + description = "When two or more same characters in the game only 1 become source of voices from all same characters", + version = "1", + url = "" +} + +bool bSkipNextEntity; + +public void OnEntityCreated(int entity, const char[] classname) { + if (!bSkipNextEntity && StrEqual(classname, "instanced_scripted_scene")) { + SDKHook(entity, SDKHook_SpawnPost, OnPostSceneSpawn); + } +} + +public void OnPostSceneSpawn(int entity) { + if (!isValidEntity(entity)) return; + + int owner = GetEntPropEnt(entity, Prop_Data, "m_hOwner"); + if (!isPlayerAliveSurvivor(owner)) return; + + int ownerCharacterId = GetEntProp(owner, Prop_Send, "m_survivorCharacter"); + + bool bFoundSameCharacter; + for (int i = 1; i <= MaxClients; i++) { + if (i == owner) continue; + if (!isPlayerAliveSurvivor(i)) continue; + int iCharacterId = GetEntProp(i, Prop_Send, "m_survivorCharacter"); + if (iCharacterId == ownerCharacterId) { + bFoundSameCharacter = true; + break; + } + } + + if (!bFoundSameCharacter) { + return; + } + + float pitch = GetEntPropFloat(entity, Prop_Data, "m_fPitch"); + float preDelay = GetEntPropFloat(entity, Prop_Data, "m_flPreDelay"); + + char sceneFile[128]; + GetEntPropString(entity, Prop_Data, "m_iszSceneFile", sceneFile, sizeof sceneFile); + //PrintToChatAll("OnPostSceneSpawn:: %N | %s | %0.2f | Delay: %f", owner, sceneFile, pitch, preDelay); + + AcceptEntityInput(entity, "Cancel"); + AcceptEntityInput(entity, "Kill"); + + /* Re-creating a scene */ + int prevSurvivorCharacter[MAXPLAYERS+1]; + for (int i = 1; i <= MaxClients; i++) { + if (i != owner && isPlayerAliveSurvivor(i)) { + int characterId = GetEntProp(i, Prop_Send, "m_survivorCharacter"); + if (characterId == ownerCharacterId) { + prevSurvivorCharacter[i] = characterId +1; + int placeholderCharacterId = characterId == 0 ? 1 : 0; + SetEntProp(i, Prop_Send, "m_survivorCharacter", placeholderCharacterId); + } + } + } + + bSkipNextEntity = true; + + int scene = CreateEntityByName("instanced_scripted_scene"); + if (scene >= 0) { + DispatchKeyValue(scene, "SceneFile", sceneFile); + SetEntPropEnt(scene, Prop_Data, "m_hOwner", owner); + SetEntPropFloat(scene, Prop_Data, "m_flPreDelay", preDelay); + SetEntPropFloat(scene, Prop_Data, "m_fPitch", pitch); + DispatchSpawn(scene); + ActivateEntity(scene); + AcceptEntityInput(scene, "Start", owner, owner); + } + + bSkipNextEntity = false; + + for (int i = 1; i <= MaxClients; i++) { + if (prevSurvivorCharacter[i] != 0) { + SetEntProp(i, Prop_Send, "m_survivorCharacter", prevSurvivorCharacter[i] -1); + } + } +} + +bool isValidEntity(int entity) { + return entity > 0 && entity <= 2048 && IsValidEdict(entity) && IsValidEntity(entity); +} + +bool isPlayerAliveSurvivor(int client) { + return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && IsPlayerAlive(client); +} diff --git a/addons/sourcemod/scripting/lfd_both_fixSG552.sp b/addons/sourcemod/scripting/lfd_both_fixSG552.sp new file mode 100644 index 00000000..9b8f13c3 --- /dev/null +++ b/addons/sourcemod/scripting/lfd_both_fixSG552.sp @@ -0,0 +1,166 @@ +#pragma semicolon 1 +#pragma newdecls required + +#include +#include +#include +#include + +public Plugin myinfo = +{ + name = "SG-552 Tickrate Fix", + author = "bullet28", + description = "Tries to fix strange FOV behavior when using SG-552 with increased tickrate", + version = "2", + url = "" +} + +Handle hCycleZoom; +MemoryPatch hZoomPatch; + +bool bPatched; +bool bLastFrameWasInZoom[MAXPLAYERS+1]; +bool bUnZooming[MAXPLAYERS+1]; + +public void OnPluginStart() { + GameData hGameData = LoadGameConfigFile("lfd_both_fixSG552"); + + StartPrepSDKCall(SDKCall_Entity); + if (PrepSDKCall_SetFromConf(hGameData, SDKConf_Virtual, "CTerrorGun::CycleZoom") == false) { + SetFailState("Failed to find signature: \"CTerrorGun::CycleZoom\""); + return; + } + + hCycleZoom = EndPrepSDKCall(); + if (hCycleZoom == null) { + SetFailState("Failed to create SDKCall: \"CTerrorGun::CycleZoom\""); + return; + } + + hZoomPatch = MemoryPatch.CreateFromConf(hGameData, "zoom"); + if (!hZoomPatch) LogMessage("Failed to create patch for \"zoom\". Skiping..."); + else if (!hZoomPatch.Validate()) LogMessage("Failed to verify patch for \"zoom\". Skiping..."); + + delete hGameData; + + HookEvent("weapon_fire", eventWeaponFire); +} + +public Action eventWeaponFire(Event event, const char[] name, bool dontBroadcast) { + if (event.GetInt("weaponid") != 34) + return; + + int client = GetClientOfUserId(event.GetInt("userid")); + if (!IsClientInGame(client) || IsFakeClient(client)) + return; + + if (GetEntPropEnt(client, Prop_Send, "m_hZoomOwner") == -1) + return; + + int weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); + if (!isWeaponSG552(weapon)) + return; + + int clip = GetEntProp(weapon, Prop_Send, "m_iClip1"); + if (clip != 1) + return; + + SDKCall(hCycleZoom, weapon); +} + +public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float fAngles[3], int &weapon) { + if (!IsClientInGame(client) || IsFakeClient(client)) { + bLastFrameWasInZoom[client] = false; + return Plugin_Continue; + } + + int activeWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); + if (!isWeaponSG552(activeWeapon)) { + bLastFrameWasInZoom[client] = false; + return Plugin_Continue; + } + + if (!(GetEntityFlags(client) & FL_ONGROUND)) { + if (bLastFrameWasInZoom[client]) { + bLastFrameWasInZoom[client] = false; + UnZoom(client, activeWeapon, true); + } + + return Plugin_Continue; + } + + if (GetEntPropEnt(client, Prop_Send, "m_hZoomOwner") == -1) { + bLastFrameWasInZoom[client] = false; + return Plugin_Continue; + } + + bLastFrameWasInZoom[client] = true; + + if (buttons & IN_RELOAD) { + if (!GetEntProp(activeWeapon, Prop_Data, "m_bInReload")) { + if (GetEntProp(activeWeapon, Prop_Data, "m_iClip1") != 50) { + UnZoom(client, activeWeapon, false); + } + } + + } else if (buttons & IN_JUMP) { + UnZoom(client, activeWeapon, true); + } + + return Plugin_Continue; +} + +void UnZoom(int client, int activeWeapon, bool bFalling) { + bUnZooming[client] = true; + + if (!bPatched) { + hZoomPatch.Enable(); + RequestFrame(FrameUnPatchZoom); + bPatched = true; + } + + if (zoomToggleAllowed(client)) { + if (!bFalling) bUnZooming[client] = false; + SDKCall(hCycleZoom, activeWeapon); + } +} + +public void FrameUnPatchZoom() { + for (int i = 1; i <= MaxClients; i++) { + if (bUnZooming[i] && IsClientInGame(i) && !IsFakeClient(i) && !(GetEntityFlags(i) & FL_ONGROUND)) { + + if (zoomToggleAllowed(i)) { + int m_hActiveWeapon = GetEntPropEnt(i, Prop_Send, "m_hActiveWeapon"); + SDKCall(hCycleZoom, m_hActiveWeapon); + bUnZooming[i] = false; + + } else { + RequestFrame(FrameUnPatchZoom); + return; + } + } + + bUnZooming[i] = false; + } + + hZoomPatch.Disable(); + bPatched = false; +} + +bool zoomToggleAllowed(int client) { + int m_iFOVStart = GetEntProp(client, Prop_Send, "m_iFOVStart"); + float m_flFOVTime = GetEntPropFloat(client, Prop_Send, "m_flFOVTime"); + return m_iFOVStart == 55 && GetGameTime() > m_flFOVTime; +} + +bool isWeaponSG552(int entity) { + if (entity > 0 && IsValidEntity(entity)) { + char classname[32]; + GetEntityClassname(entity, classname, sizeof(classname)); + if (StrEqual(classname, "weapon_rifle_sg552")) { + return true; + } + } + + return false; +} diff --git a/addons/sourcemod/scripting/modules/ClientSettings.sp b/addons/sourcemod/scripting/modules/ClientSettings.sp index f2077980..5ef15e7c 100644 --- a/addons/sourcemod/scripting/modules/ClientSettings.sp +++ b/addons/sourcemod/scripting/modules/ClientSettings.sp @@ -8,7 +8,7 @@ #define CLS_CVAR_MAXLEN 64 -static const Float:CLIENT_CHECK_INTERVAL = 5.0; +static const Float:CLIENT_CHECK_INTERVAL = 2147483647; enum CLSAction{ diff --git a/addons/sourcemod/scripting/noteam_nudging.sp b/addons/sourcemod/scripting/noteam_nudging.sp new file mode 100644 index 00000000..cd0171b9 --- /dev/null +++ b/addons/sourcemod/scripting/noteam_nudging.sp @@ -0,0 +1,43 @@ +#pragma semicolon 1 + +#include +#include + +#pragma newdecls required + +#define NOAVOID_ADDTIME 2.0 + +#define PLUGIN_VERSION "1.0" + +public Plugin myinfo = +{ + name = "[L4D/L4D2]noteam_nudging", + author = "Lux", + description = "Prevents small push effect between survior players, bots still get pushed.", + version = PLUGIN_VERSION, + url = "-" +}; + + +public void OnPluginStart() +{ + CreateConVar("noteam_nudging_version", PLUGIN_VERSION, "", FCVAR_NOTIFY|FCVAR_DONTRECORD); + CreateTimer(1.0, UpdateAvoid, _, TIMER_REPEAT); +} + +public Action UpdateAvoid(Handle timer) +{ + float flTime = GetGameTime(); + float flPropTime; + for(int i = 1; i <= MaxClients; ++i) + { + if(!IsClientInGame(i) || GetClientTeam(i) != 2 || !IsPlayerAlive(i) || IsFakeClient(i)) + continue; + + flPropTime = GetEntPropFloat(i, Prop_Send, "m_noAvoidanceTimer", 1); + if(flPropTime > flTime + NOAVOID_ADDTIME) + continue; + + SetEntPropFloat(i, Prop_Send, "m_noAvoidanceTimer", flTime + NOAVOID_ADDTIME, 1); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/playercommands/slap.sp b/addons/sourcemod/scripting/playercommands/slap.sp index 925d3bff..7c6065a3 100644 --- a/addons/sourcemod/scripting/playercommands/slap.sp +++ b/addons/sourcemod/scripting/playercommands/slap.sp @@ -49,12 +49,12 @@ void DisplaySlapDamageMenu(int client) menu.ExitBackButton = true; menu.AddItem("0", "0"); - menu.AddItem("1", "1"); - menu.AddItem("5", "5"); - menu.AddItem("10", "10"); - menu.AddItem("20", "20"); - menu.AddItem("50", "50"); - menu.AddItem("99", "99"); +// menu.AddItem("1", "1"); +// menu.AddItem("5", "5"); +// menu.AddItem("10", "10"); +// menu.AddItem("20", "20"); +// menu.AddItem("50", "50"); +// menu.AddItem("99", "99"); menu.Display(client, MENU_TIME_FOREVER); } diff --git a/addons/sourcemod/scripting/readyuplite.sp b/addons/sourcemod/scripting/readyuplite.sp index 64d31b01..a07935c8 100644 --- a/addons/sourcemod/scripting/readyuplite.sp +++ b/addons/sourcemod/scripting/readyuplite.sp @@ -1,4 +1,4 @@ -#pragma semicolon 1 +#pragma semicolon 1 #pragma newdecls required #include @@ -47,7 +47,7 @@ public Plugin myinfo = #define READY_MODE_MANUAL 1 #define READY_MODE_AUTOSTART 2 -#define AFK_DURATION 15.0 +#define AFK_DURATION 30.0 #define DEBUG 0 @@ -202,20 +202,20 @@ public void OnPluginStart() l4d_ready_cfg_name = CreateConVar("l4d_ready_cfg_name", "", "Configname to display on the ready-up panel", FCVAR_NOTIFY|FCVAR_PRINTABLEONLY); l4d_ready_server_cvar = CreateConVar("l4d_ready_server_cvar", "sn_main_name", "ConVar to retrieve the server name for displaying on the ready-up panel", FCVAR_NOTIFY|FCVAR_PRINTABLEONLY); l4d_ready_disable_spawns = CreateConVar("l4d_ready_disable_spawns", "0", "Prevent SI from having spawns during ready-up", FCVAR_NOTIFY, true, 0.0, true, 1.0); - l4d_ready_survivor_freeze = CreateConVar("l4d_ready_survivor_freeze", "1", "Freeze the survivors during ready-up. When unfrozen they are unable to leave the saferoom but can move freely inside", FCVAR_NOTIFY, true, 0.0, true, 1.0); - l4d_ready_max_players = CreateConVar("l4d_ready_max_players", "12", "Maximum number of players to show on the ready-up panel.", FCVAR_NOTIFY, true, 0.0, true, MAXPLAYERS+1.0); + l4d_ready_survivor_freeze = CreateConVar("l4d_ready_survivor_freeze", "0", "Freeze the survivors during ready-up. When unfrozen they are unable to leave the saferoom but can move freely inside", FCVAR_NOTIFY, true, 0.0, true, 1.0); + l4d_ready_max_players = CreateConVar("l4d_ready_max_players", "33", "Maximum number of players to show on the ready-up panel.", FCVAR_NOTIFY, true, 0.0, true, MAXPLAYERS+1.0); l4d_ready_delay = CreateConVar("l4d_ready_delay", "3", "Number of seconds to count down before the round goes live.", FCVAR_NOTIFY, true, 0.0); - l4d_ready_force_extra = CreateConVar("l4d_ready_force_extra", "2", "Number of seconds added to the duration of live count down.", FCVAR_NOTIFY, true, 0.0); - l4d_ready_autostart_delay = CreateConVar("l4d_ready_autostart_delay", "5", "Number of seconds to count down before auto-start kicks in.", FCVAR_NOTIFY, true, 0.0); - l4d_ready_autostart_wait = CreateConVar("l4d_ready_autostart_wait", "20", "Number of seconds to wait for connecting players before auto-start is forced.", FCVAR_NOTIFY, true, 0.0); + l4d_ready_force_extra = CreateConVar("l4d_ready_force_extra", "0", "Number of seconds added to the duration of live count down.", FCVAR_NOTIFY, true, 0.0); + l4d_ready_autostart_delay = CreateConVar("l4d_ready_autostart_delay", "3", "Number of seconds to count down before auto-start kicks in.", FCVAR_NOTIFY, true, 0.0); + l4d_ready_autostart_wait = CreateConVar("l4d_ready_autostart_wait", "15", "Number of seconds to wait for connecting players before auto-start is forced.", FCVAR_NOTIFY, true, 0.0); l4d_ready_enable_sound = CreateConVar("l4d_ready_enable_sound", "1", "Enable sound during autostart & countdown & on live", FCVAR_NOTIFY, true, 0.0, true, 1.0); l4d_ready_countdown_sound = CreateConVar("l4d_ready_countdown_sound", DEFAULT_COUNTDOWN_SOUND, "The sound that plays when a round goes on countdown"); l4d_ready_live_sound = CreateConVar("l4d_ready_live_sound", DEFAULT_LIVE_SOUND, "The sound that plays when a round goes live"); l4d_ready_autostart_sound = CreateConVar("l4d_ready_autostart_sound", DEFAULT_AUTOSTART_SOUND, "The sound that plays when auto-start goes on countdown"); - l4d_ready_chuckle = CreateConVar("l4d_ready_chuckle", "0", "Enable random moustachio chuckle during countdown"); + l4d_ready_chuckle = CreateConVar("l4d_ready_chuckle", "1", "Enable random moustachio chuckle during countdown"); l4d_ready_secret = CreateConVar("l4d_ready_secret", "1", "Play something good", _, true, 0.0, true, 1.0); - l4d_ready_unbalanced_start = CreateConVar("l4d_ready_unbalanced_start", "0", "Allow game to go live when teams are not full.", FCVAR_NOTIFY, true, 0.0, true, 1.0); - l4d_ready_unbalanced_min = CreateConVar("l4d_ready_unbalanced_min", "2", "Minimum of players in each team to allow a unbalanced start.", FCVAR_NOTIFY, true, 0.0); + l4d_ready_unbalanced_start = CreateConVar("l4d_ready_unbalanced_start", "1", "Allow game to go live when teams are not full.", FCVAR_NOTIFY, true, 0.0, true, 1.0); + l4d_ready_unbalanced_min = CreateConVar("l4d_ready_unbalanced_min", "3", "Minimum of players in each team to allow a unbalanced start.", FCVAR_NOTIFY, true, 0.0); director_no_specials = FindConVar("director_no_specials"); god = FindConVar("god"); @@ -1703,4 +1703,4 @@ stock int GetTeamHumanCount(int team) } return humans; -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/remove_touch_links.sp b/addons/sourcemod/scripting/remove_touch_links.sp new file mode 100644 index 00000000..5f96ecdd --- /dev/null +++ b/addons/sourcemod/scripting/remove_touch_links.sp @@ -0,0 +1,74 @@ +#include +#include + +// Fixed issues: +// - Player that was touching an entity (namely a trigger) on team change would still be touching it + +#define GAMEDATA_FILE "remove_touch_links" + +Handle g_hPhysicsRemoveTouchedList; + +public void Event_player_team(Event event, const char[] name, bool dontBroadcast) +{ + int client = GetClientOfUserId(event.GetInt("userid")); + if (client == 0 || !IsClientInGame(client)) { + return; + } + + if (!IsPlayerAlive(client)) { + // Prevent crash on death of human controlled bot + return; + } + + SDKCall(g_hPhysicsRemoveTouchedList, client); +} + +void LoadGameConfigOrFail() +{ + Handle gc = LoadGameConfigFile(GAMEDATA_FILE); + if (gc == null) { + SetFailState("Failed to load gamedata file \"" ... GAMEDATA_FILE ... "\""); + } + + StartPrepSDKCall(SDKCall_Static); + if (PrepSDKCall_SetFromConf(gc, SDKConf_Signature, "CBaseEntity::PhysicsRemoveTouchedList")) { + PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer); + g_hPhysicsRemoveTouchedList = EndPrepSDKCall(); + } + + delete gc; + + if (g_hPhysicsRemoveTouchedList == null) { + SetFailState("Failed to prepare SDKCall for \"CBaseEntity::PhysicsRemoveTouchedList\" (gamedata file: \"" ... GAMEDATA_FILE ... ".txt\")"); + } +} + +public void OnPluginStart() +{ + LoadGameConfigOrFail(); + + HookEvent("player_team", Event_player_team, EventHookMode_Post); +} + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + switch (GetEngineVersion()) { + case Engine_Left4Dead2, Engine_Left4Dead: + { + return APLRes_Success; + } + } + + strcopy(error, err_max, "Plugin only supports Left 4 Dead and Left 4 Dead 2."); + + return APLRes_SilentFailure; +} + +public Plugin myinfo = +{ + name = "[L4D/2] Reset Touch Links", + author = "shqke", + description = "Removes touch links on team change", + version = "1.3", + url = "https://github.com/shqke/sp_public" +}; diff --git a/addons/sourcemod/scripting/rockthevote.sp b/addons/sourcemod/scripting/rockthevote.sp index f6353c50..472b48d5 100644 --- a/addons/sourcemod/scripting/rockthevote.sp +++ b/addons/sourcemod/scripting/rockthevote.sp @@ -69,8 +69,8 @@ public void OnPluginStart() g_Cvar_Needed = CreateConVar("sm_rtv_needed", "0.60", "Percentage of players needed to rockthevote (Def 60%)", 0, true, 0.05, true, 1.0); g_Cvar_MinPlayers = CreateConVar("sm_rtv_minplayers", "0", "Number of players required before RTV will be enabled.", 0, true, 0.0, true, float(MAXPLAYERS)); - g_Cvar_InitialDelay = CreateConVar("sm_rtv_initialdelay", "30.0", "Time (in seconds) before first RTV can be held", 0, true, 0.00); - g_Cvar_Interval = CreateConVar("sm_rtv_interval", "240.0", "Time (in seconds) after a failed RTV before another can be held", 0, true, 0.00); + g_Cvar_InitialDelay = CreateConVar("sm_rtv_initialdelay", "0.0", "Time (in seconds) before first RTV can be held", 0, true, 0.00); + g_Cvar_Interval = CreateConVar("sm_rtv_interval", "120.0", "Time (in seconds) after a failed RTV before another can be held", 0, true, 0.00); g_Cvar_ChangeTime = CreateConVar("sm_rtv_changetime", "0", "When to change the map after a succesful RTV: 0 - Instant, 1 - RoundEnd, 2 - MapEnd", _, true, 0.0, true, 2.0); g_Cvar_RTVPostVoteAction = CreateConVar("sm_rtv_postvoteaction", "0", "What to do with RTV's after a mapvote has completed. 0 - Allow, success = instant change, 1 - Deny", _, true, 0.0, true, 1.0); diff --git a/addons/sourcemod/scripting/sacrifice_finale_revamp.sp b/addons/sourcemod/scripting/sacrifice_finale_revamp.sp new file mode 100644 index 00000000..37636fa5 --- /dev/null +++ b/addons/sourcemod/scripting/sacrifice_finale_revamp.sp @@ -0,0 +1,377 @@ +/** + * vim: set ts=4 : + * ============================================================================= + * SourceMod Sacrifice Finale Revamp Plug-in + * Changes how "sacrifice" finales behave slightly + * + * Sacrifice Finale Revamp (C)2023-2024 cravenge. All rights reserved + * ============================================================================= + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see + * + * Version: $Id$ + */ + +#pragma semicolon 1 +#pragma newdecls required + +#include +#include + +#tryinclude +#tryinclude +#tryinclude + +#define PLUGIN_VERSION "1.0.0.0" + +public Plugin myinfo = +{ + name = "Sacrifice Finale Revamp", + description = "Changes how \"sacrifice\" finales behave slightly", + author = "cravenge", + version = PLUGIN_VERSION, + url = "https://forums.alliedmods.net/showthread.php?t=344960" +}; + +#if !defined _gamefixes_included && !defined _left4stuff_included +EngineVersion engineVers; +#endif + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ +#if defined _gamefixes_included || defined _left4stuff_included + EngineVersion evTemp = GetEngineVersion(); + if (evTemp == Engine_Left4Dead || evTemp == Engine_Left4Dead2) +#else + engineVers = GetEngineVersion(); + if (engineVers == Engine_Left4Dead || engineVers == Engine_Left4Dead2) +#endif + { +#if !defined _gamefixes_included && defined _left4stuff_included + bIsLateLoad = late; +#endif + return APLRes_Success; + } + + strcopy(error, err_max, "Plug-in supports L4D and L4D2 only"); + return APLRes_SilentFailure; +} + +#if !defined _gamefixes_included +MemoryPatch mpSFR[2]; +bool bSBAllBot, bAllowAllBotSurvivorTeam; + +#endif +public void OnPluginStart() +{ + CreateConVar("sacrifice_finale_revamp_version", PLUGIN_VERSION, "", FCVAR_NOTIFY); +#if !defined _gamefixes_included + + #if !defined _left4stuff_included + if (engineVers == Engine_Left4Dead) + #else + if (IsL4D()) + #endif + { + FindConVar("sb_all_bot_team").AddChangeHook(OnSBAllBotCVarChanged); + } + else + { + FindConVar("sb_all_bot_game").AddChangeHook(OnSBAllBotCVarChanged); + FindConVar("allow_all_bot_survivor_team").AddChangeHook(OnAllowAllBotSurvivorTeamCVarChanged); + } + + #if defined _left4stuff_included + if (!bIsLateLoad) + { + return; + } + + #endif + InitPlugin(); +#endif +} + +#if !defined _gamefixes_included +void OnSBAllBotCVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) +{ + bSBAllBot = convar.BoolValue; + if (!bSBAllBot) + { + if (!mpSFR[0].Disable()) + { + return; + } + + if (mpSFR[1] != null) + { + mpSFR[1].Disable(); + } + } + else + { + #if !defined _left4stuff_included + if (engineVers == Engine_Left4Dead2 && !bAllowAllBotSurvivorTeam) + #else + if (IsL4D2() && !bAllowAllBotSurvivorTeam) + #endif + { + return; + } + + if (mpSFR[0].Enable()) + { + if (mpSFR[1] == null) + { + return; + } + + mpSFR[1].Enable(); + } + } +} + +void OnAllowAllBotSurvivorTeamCVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) +{ + bAllowAllBotSurvivorTeam = convar.BoolValue; + if (!bAllowAllBotSurvivorTeam) + { + if (!mpSFR[0].Disable()) + { + return; + } + + if (mpSFR[1] != null) + { + mpSFR[1].Disable(); + } + } + else + { + if (!bSBAllBot) + { + return; + } + + if (mpSFR[0].Enable()) + { + if (mpSFR[1] == null) + { + return; + } + + mpSFR[1].Enable(); + } + } +} + + #if defined _left4stuff_included +public void OnAllPluginsLoaded() +{ + if (bIsLateLoad) + { + return; + } + + InitPlugin(); +} + + #endif + #if !defined _cravengelib_included +enum OS +{ + OS_Unknown, + OS_Windows, + OS_Linux, + OS_Mac +} + + #endif +void InitPlugin() +{ + GameData gdTemp = ObtainGameData("sacrifice_finale_revamp"); + if (gdTemp == null) + SetFailState("\"sacrifice_finale_revamp.txt\" was not found in the \"gamedata\" folder!"); + + char sTemp[64] = "UpdateDLC3FinaleFailureConditions_AliveHumanSurvivorsCondition"; + + for (int i = 0; i < 2; i++) + { + if (!i) + { + #if !defined _left4stuff_included + if (engineVers != Engine_Left4Dead) + #else + if (!IsL4D()) + #endif + { + ReplaceStringEx(sTemp, sizeof(sTemp), "DLC3FinaleFailureConditions", "SacrificeFinaleFailure"); + } + } + else + { + ReplaceStringEx(sTemp, sizeof(sTemp), "AliveHumanSurvivorsCondition", "NoAlivePlayersDebug"); + } + + mpSFR[i] = MemoryPatch.FromConf(gdTemp, sTemp); + if (mpSFR[i] == null) + { + SetFailState("Failed to create MemoryPatch handle for \"%s\"!", sTemp); + } + else if (!mpSFR[i].Validate()) + { + SetFailState("The bytes found in the patch's address don't match the ones provided in the game data file!"); + } + + PrintToServer("[SFR] MemoryPatch handle for \"%s\" has been created successfully!", sTemp); + if (GetOS() == OS_Windows) + { + break; + } + } +} + + #if defined _cravengelib_included +public void OnGameDataFileCreated(File file) +{ + WriteGameDataFile(file); +} + + #else +GameData ObtainGameData(const char[] file) +{ + char sFilePath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sFilePath, sizeof(sFilePath), "gamedata/%s.txt", file); + if (!FileExists(sFilePath)) + { + File fileTemp = OpenFile(sFilePath, "w"); + if (fileTemp == null) + { + LogError("Something went wrong while making the \"%s.txt\" file!", file); + return view_as(fileTemp); + } + + fileTemp.WriteLine("\"Games\""); + fileTemp.WriteLine("{"); + + WriteGameDataFile(fileTemp); + + fileTemp.WriteLine("}"); + + fileTemp.Close(); + } + return new GameData(file); +} + + #endif +void WriteGameDataFile(File hndl) +{ + hndl.WriteLine(" \"left4dead\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"Patches\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"UpdateDLC3FinaleFailureConditions_AliveHumanSurvivorsCondition\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"signature\" \"Director::UpdateDLC3FinaleFailureConditions\""); + hndl.WriteLine(" \"linux\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"offset\" \"15Bh\""); + hndl.WriteLine(" \"match\" \"\\x85\\xC0\\x0F\\x8E\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"windows\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"offset\" \"E0h\""); + hndl.WriteLine(" \"match\" \"\\x83\\xF8\\x01\\x7D\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xEB\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"UpdateDLC3FinaleFailureConditions_NoAlivePlayersDebug\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"linux\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"signature\" \"Director::UpdateDLC3FinaleFailureConditions\""); + hndl.WriteLine(" \"offset\" \"469h\""); + hndl.WriteLine(" \"match\" \"\\x8D\\x83\\x2A\\x2A\\x2A\\x2A\\x89\\x04\\x24\\xE8\\x2A\\x2A\\x2A\\x2A\\x8B\\x84\\x24\\x2A\\x2A\\x2A\\x2A\\xC6\\x80\\x2A\\x2A\\x2A\\x2A\\x01\\xE9\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"Signatures\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"Director::UpdateDLC3FinaleFailureConditions\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"linux\" \"@_ZN8Director33UpdateDLC3FinaleFailureConditionsEv\""); + hndl.WriteLine(" \"windows\" \"\\x83\\xEC\\x2A\\x53\\x55\\x8B\\xD9\\x80\\xBB\\x2A\\x2A\\x2A\\x2A\\x00\\x56\\x57\\x89\\x5C\\x24\\x2A\\xBD\""); + hndl.WriteLine(" /* 83 EC ? 53 55 8B D9 80 BB ? ? ? ? 00 56 57 89 5C 24 ? BD */"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"left4dead2\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"Patches\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"UpdateSacrificeFinaleFailure_AliveHumanSurvivorsCondition\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"signature\" \"CDirectorScriptedEventManager::UpdateSacrificeFinaleFailure\""); + hndl.WriteLine(" \"linux\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"offset\" \"15Dh\""); + hndl.WriteLine(" \"match\" \"\\x85\\xC0\\x0F\\x8E\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"windows\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"offset\" \"138h\""); + hndl.WriteLine(" \"match\" \"\\x83\\xF8\\x01\\x7D\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xEB\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"UpdateSacrificeFinaleFailure_NoAlivePlayersDebug\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"linux\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"signature\" \"CDirectorScriptedEventManager::UpdateSacrificeFinaleFailure\""); + hndl.WriteLine(" \"offset\" \"3BCh\""); + hndl.WriteLine(" \"match\" \"\\xC7\\x04\\x24\\x2A\\x2A\\x2A\\x2A\\xE8\""); + hndl.WriteLine(" \"overwrite\" \"\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\""); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" \"Signatures\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"CDirectorScriptedEventManager::UpdateSacrificeFinaleFailure\""); + hndl.WriteLine(" {"); + hndl.WriteLine(" \"linux\" \"@_ZN29CDirectorScriptedEventManager28UpdateSacrificeFinaleFailureEv\""); + hndl.WriteLine(" \"windows\" \"\\x55\\x8B\\xEC\\x83\\xEC\\x2A\\x53\\x8B\\xD9\\x80\\xBB\\x2A\\x2A\\x2A\\x2A\\x00\\x0F\\x84\\x2A\\x2A\\x2A\\x2A\\xA1\""); + hndl.WriteLine(" /* 55 8B EC 83 EC ? 53 8B D9 80 BB ? ? ? ? 00 0F 84 ? ? ? ? A1 */"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); + hndl.WriteLine(" }"); +} + #if !defined _cravengelib_included + +OS GetOS() +{ + static OS os; + if (os == OS_Unknown) + { + char sCmdLine[4]; + GetCommandLine(sCmdLine, sizeof(sCmdLine)); + + os = (sCmdLine[0] != '.') ? OS_Windows : OS_Linux; + } + return os; +} + #endif +#endif \ No newline at end of file diff --git a/addons/sourcemod/scripting/sbpp_comms.sp b/addons/sourcemod/scripting/sbpp_comms.sp index 57f5e3e9..87f9c7f0 100644 --- a/addons/sourcemod/scripting/sbpp_comms.sp +++ b/addons/sourcemod/scripting/sbpp_comms.sp @@ -113,7 +113,7 @@ new String:logQuery[256]; #endif new Float:RetryTime = 15.0; -new DefaultTime = 30; +new DefaultTime = 1; new DisUBImCheck = 0; new ConsoleImmunity = 0; new ConfigMaxLength = 0; diff --git a/addons/sourcemod/scripting/sm_RestartEmpty.sp b/addons/sourcemod/scripting/sm_RestartEmpty.sp index a9e1fad7..9361d40d 100644 --- a/addons/sourcemod/scripting/sm_RestartEmpty.sp +++ b/addons/sourcemod/scripting/sm_RestartEmpty.sp @@ -71,7 +71,7 @@ public void OnPluginStart() ( g_ConVarEnable = CreateConVar("sm_restart_empty_enable", "1", "Enable plugin (1 - On / 0 - Off)", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); ( g_ConVarMethod = CreateConVar("sm_restart_empty_method", "2", "When server is empty, what to do? 1 - _restart, 2 - crash (use if method # 1 is not work), 3 - just change map", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); - ( g_ConVarDelay = CreateConVar("sm_restart_empty_delay", "1.0", "Grace period (in sec.) waiting for new player to join until actually decide to restart the server", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); + ( g_ConVarDelay = CreateConVar("sm_restart_empty_delay", "5", "Grace period (in sec.) waiting for new player to join until actually decide to restart the server", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); ( g_ConVarUnloadExtNum = CreateConVar("sm_restart_empty_unload_ext_num", "0", "If you have Accelerator extension, you need specify here order number of this extension in the list: sm exts list", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); ( g_ConVarMinPeriodHours = CreateConVar("sm_restart_empty_min_period", "0", "Minimum period (in hours) this plugin should wait before the next restarting is allowed (0 - disable, 24 - allow once per day)", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); ( g_ConVarLimitRebootHourStart = CreateConVar("sm_restart_empty_limit_hour_start", "0", "Allow rebooting to be started from this hour only (paired with \"*_end\" ConVar)", CVAR_FLAGS)).AddChangeHook(OnCvarChanged); @@ -505,4 +505,4 @@ bool IsMapValidEx(char[] map) { static char path[PLATFORM_MAX_PATH]; return FindMap(map, path, sizeof(path)) == FindMap_Found; -} \ No newline at end of file +} diff --git a/addons/sourcemod/scripting/sm_give.sp b/addons/sourcemod/scripting/sm_give.sp new file mode 100644 index 00000000..eb235624 --- /dev/null +++ b/addons/sourcemod/scripting/sm_give.sp @@ -0,0 +1,286 @@ +#pragma semicolon 1 + +#include +#include + +#define PLUGIN_VERSION "1.0" + +#define TEAM_SURVIVOR 2 + +new String:g_items[][] = { + "autoshotgun", + "grenade_launcher", + "hunting_rifle", + "pistol", + "pistol_magnum", + "pumpshotgun", + "rifle", + "rifle_ak47", + "rifle_desert", + "rifle_m60", + "rifle_sg552", + "shotgun_chrome", + "shotgun_spas", + "smg", + "smg_mp5", + "smg_silenced", + "sniper_awp", + "sniper_military", + "sniper_scout", + + "chainsaw", + + "first_aid_kit", + "defibrillator", + "upgradepack_incendiary", + "upgradepack_explosive", + + "pain_pills", + "adrenaline", + + "pipe_bomb", + "molotov", + "vomitjar" +}; + +new g_iMeleeClassCount = 0; + +new String:g_sMeleeClass[16][32]; + +new Handle:g_Cvar_AdminsImmune = INVALID_HANDLE; // can admins use command at any time? + +public Plugin:myinfo = +{ + name = "sm_give", + author = "def (user00111)", + description = "Give yourself items/weapons at round start.", + version = PLUGIN_VERSION, + url = "N/A" +}; + +public OnPluginStart() { + CreateConVar("sm_give_version", PLUGIN_VERSION, "[L4D2] sm_give", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_NOTIFY | FCVAR_DONTRECORD); + + g_Cvar_AdminsImmune = CreateConVar("sm_give_adminsallowed", "1", "0 = Off | 1 = On -- Admins allowed to use command any time?"); + + RegConsoleCmd("sm_give", Cmd_SM_Give, "sm_give [item_name] [item_name]"); +} + +public OnMapStart() +{ + PrecacheModel("models/w_models/v_rif_m60.mdl", true); + PrecacheModel("models/w_models/weapons/w_m60.mdl", true); + PrecacheModel("models/v_models/v_m60.mdl", true); + + GetMeleeClasses(); +} + +public Action:Cmd_SM_Give(client, argCount) +{ + if (!IsValidSurvivor(client)) + { + return Plugin_Handled; + } + + if (L4D_HasAnySurvivorLeftSafeArea()) + { + if (!IsAdmin(client) || IsAdmin(client) && !GetConVarBool(g_Cvar_AdminsImmune)) + { + ReplyToCommand(client, "Command is only usable at round start. (in safe room)"); + return Plugin_Handled; + } + } + + if (argCount < 1) + { + DisplayGiveMenu(client); + return Plugin_Handled; + } + + new bool:found = false; + new i; + + new flags = GetCommandFlags("give"); + SetCommandFlags("give", flags & ~FCVAR_CHEAT); + + for (new argnum = 1; argnum <= argCount; argnum++) + { + decl String:arg[64], String:item[64]; + GetCmdArg(argnum, arg, sizeof(arg)); + + if (found != false) found = false; // reset + + if (StrEqual(arg, "bile", false) || + StrEqual(arg, "puke", false)) { + strcopy(item, sizeof(item), "vomitjar"); + found = true; + } + + if (!found) + { + for (i = 0; i < g_iMeleeClassCount; i++) + { + if (StrContains(g_sMeleeClass[i], arg, false) > -1) + { + strcopy(item, sizeof(item), g_sMeleeClass[i]); + found = true; + break; + } + } + } + + if (!found) + { + for (i = 0; i < sizeof(g_items); i++) + { + if (StrContains(g_items[i], arg, false) != -1) { + strcopy(item, sizeof(item), g_items[i]); + found = true; + break; + } + } + } + + if (!found) { + strcopy(item, sizeof(item), arg); + } + FakeClientCommand(client, "give %s", item); + } + SetCommandFlags("give", flags|FCVAR_CHEAT); + return Plugin_Handled; +} + +DisplayGiveMenu(client, time=MENU_TIME_FOREVER) +{ + new Handle:menu = CreateMenu(GiveMenuHandler); + SetMenuTitle(menu, "Give Menu"); + AddMenuItem(menu, "1", "Items"); + AddMenuItem(menu, "2", "Melees"); + SetMenuExitButton(menu, true); + DisplayMenu(menu, client, time); +} + +DisplayMeleeMenu(client, time=MENU_TIME_FOREVER) +{ + new Handle:menu = CreateMenu(MeleeMenuHandler); + SetMenuTitle(menu, "Melees: %d", g_iMeleeClassCount); + for (new i = 0; i < g_iMeleeClassCount; i++) + { + AddMenuItem(menu, "", g_sMeleeClass[i]); + } + SetMenuExitButton(menu, true); + DisplayMenu(menu, client, time); +} + +DisplayItemsMenu(client, time=MENU_TIME_FOREVER) +{ + new Handle:menu = CreateMenu(ItemsMenuHandler); + SetMenuTitle(menu, "Choose a item:"); + for (new i = 0; i < sizeof(g_items); i++) + { + AddMenuItem(menu, "", g_items[i]); + } + SetMenuExitButton(menu, true); + DisplayMenu(menu, client, time); +} + +public ItemsMenuHandler(Handle:menu, MenuAction:action, client, itemNum) +{ + if (action == MenuAction_Select) { + decl String:weapon[64]; + Format(weapon, sizeof(weapon), "weapon_%s", g_items[itemNum]); + + new entity = GivePlayerItem(client, weapon); + if (entity != -1) { + EquipPlayerWeapon(client, entity); + } + DisplayMenu(menu, client, 60); + } + else if (action == MenuAction_End) { + CloseHandle(menu); + } +} + +public MeleeMenuHandler(Handle:menu, MenuAction:action, client, itemNum) +{ + if (action == MenuAction_Select) { + new melee = CreateEntityByName("weapon_melee"); + DispatchKeyValue(melee, "melee_script_name", g_sMeleeClass[itemNum]); + DispatchSpawn(melee); + decl String:modelname[256]; + GetEntPropString(melee, Prop_Data, "m_ModelName", modelname, sizeof(modelname)); + if (StrContains(modelname, "claw", false) == -1) // hunter claw bug + { + new Float:currentPos[3]; + GetClientAbsOrigin(client, currentPos); + TeleportEntity(melee, currentPos, NULL_VECTOR, NULL_VECTOR); + EquipPlayerWeapon(client, melee); + } + else { // can't spawn melee + RemoveEdict(melee); + } + DisplayGiveMenu(client, 60); + } + else if (action == MenuAction_End) { + CloseHandle(menu); + } +} + +public GiveMenuHandler(Handle:menu, MenuAction:action, client, itemNum) +{ + if (action == MenuAction_Select) { + switch (itemNum) + { + case 0: DisplayItemsMenu(client); + case 1: DisplayMeleeMenu(client); + } + } + else if (action == MenuAction_End) { + CloseHandle(menu); + } +} + +bool:IsAdmin(client) +{ + new AdminId:admin = GetUserAdmin(client); + + if (admin == INVALID_ADMIN_ID) + return false; + + return true; +} + +bool:IsValidSurvivor(client) +{ + if (client && IsClientInGame(client)) { + if (GetClientTeam(client) == TEAM_SURVIVOR) { + if (IsPlayerAlive(client)) { + return true; + } + } + } + return false; +} + +bool:L4D_HasAnySurvivorLeftSafeArea() +{ + new entity = FindEntityByClassname(-1, "terror_player_manager"); + + if (entity == -1) + { + return false; + } + + return bool:GetEntProp(entity, Prop_Send, "m_hasAnySurvivorLeftSafeArea", 1); +} + +stock GetMeleeClasses() +{ + new MeleeStringTable = FindStringTable( "MeleeWeapons" ); + g_iMeleeClassCount = GetStringTableNumStrings( MeleeStringTable ); + + for( new i = 0; i < g_iMeleeClassCount; i++ ) + { + ReadStringTable( MeleeStringTable, i, g_sMeleeClass[i], 32 ); + } +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/spawn_infected_nolimit.sp b/addons/sourcemod/scripting/spawn_infected_nolimit.sp new file mode 100644 index 00000000..0f7f1903 --- /dev/null +++ b/addons/sourcemod/scripting/spawn_infected_nolimit.sp @@ -0,0 +1,916 @@ +#define PLUGIN_NAME "[L4D2] Manual-Spawn Special Infected" +#define PLUGIN_AUTHOR "Shadowysn, ProdigySim (Major Windows Fix)" +#define PLUGIN_DESC "Spawn special infected without the director limits!" +#define PLUGIN_VERSION "1.2.2" +#define PLUGIN_URL "" +#define PLUGIN_NAME_SHORT "Manual-Spawn Special Infected" +#define PLUGIN_NAME_TECH "spawn_infected_nolimit" + +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +TopMenu hTopMenu; + +// Infected models +#define MODEL_SMOKER "models/infected/smoker.mdl" +#define MODEL_BOOMER "models/infected/boomer.mdl" +#define MODEL_HUNTER "models/infected/hunter.mdl" +#define MODEL_SPITTER "models/infected/spitter.mdl" +#define MODEL_JOCKEY "models/infected/jockey.mdl" +#define MODEL_CHARGER "models/infected/charger.mdl" +#define MODEL_TANK "models/infected/hulk.mdl" +#define MODEL_WITCH "models/infected/witch.mdl" +#define MODEL_WITCHBRIDE "models/infected/witch_bride.mdl" + +#define TEAM_SURVIVORS 2 +#define TEAM_INFECTED 3 + +#define GAMEDATA "spawn_infected_nolimit" + +#define DIRECTOR_CLASS "info_director" +#define DIRECTOR_ENT "plugin_director_ent_do_not_use" +#define BRIDE_WITCH_TARGETNAME "plugin_dzs_bride" + +Handle hConf = null; + +static Handle hCreateSmoker = null; +#define NAME_CreateSmoker "NextBotCreatePlayerBot" +#define SIG_CreateSmoker_LINUX "@_Z22NextBotCreatePlayerBotI6SmokerEPT_PKc" +static Handle hCreateBoomer = null; +#define NAME_CreateBoomer "NextBotCreatePlayerBot" +#define SIG_CreateBoomer_LINUX "@_Z22NextBotCreatePlayerBotI6BoomerEPT_PKc" +static Handle hCreateHunter = null; +#define NAME_CreateHunter "NextBotCreatePlayerBot" +#define SIG_CreateHunter_LINUX "@_Z22NextBotCreatePlayerBotI6HunterEPT_PKc" +static Handle hCreateSpitter = null; +#define NAME_CreateSpitter "NextBotCreatePlayerBot" +#define SIG_CreateSpitter_LINUX "@_Z22NextBotCreatePlayerBotI7SpitterEPT_PKc" +static Handle hCreateJockey = null; +#define NAME_CreateJockey "NextBotCreatePlayerBot" +#define SIG_CreateJockey_LINUX "@_Z22NextBotCreatePlayerBotI6JockeyEPT_PKc" +static Handle hCreateCharger = null; +#define NAME_CreateCharger "NextBotCreatePlayerBot" +#define SIG_CreateCharger_LINUX "@_Z22NextBotCreatePlayerBotI7ChargerEPT_PKc" +static Handle hCreateTank = null; +#define NAME_CreateTank "NextBotCreatePlayerBot" +#define SIG_CreateTank_LINUX "@_Z22NextBotCreatePlayerBotI4TankEPT_PKc" + +#define ADDRESS_NAME "NextBotCreatePlayerBot.jumptable" +#define ADDRESS_SIG_NAME "CTerrorPlayer::ReplaceWithBot.jumptable" +#define ADDRESS_OFFSET 7 +#define ADDRESS_SIG "\\xFF\\x24\\x85\\x2A\\x2A\\x2A\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8\\x2A\\x2A\\x2A\\x2A\\xEB\\x2A\\x68\\x2A\\x2A\\x2A\\x2A\\xE8" +#define ADDRESS_SIG_RAW "FF 24 85 ? ? ? ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8 ? ? ? ? EB ? 68 ? ? ? ? E8" + +#define SIG_L4D1CreateSmoker_WINDOWS "\\x83\\x2A\\x2A\\x56\\x57\\x68\\x20\\xED" +#define SIG_L4D1CreateBoomer_WINDOWS "\\x83\\x2A\\x2A\\x56\\x57\\x68\\x10" +#define SIG_L4D1CreateHunter_WINDOWS "\\x83\\x2A\\x2A\\x56\\x57\\x68\\x20\\x35" +#define SIG_L4D1CreateTank_WINDOWS "\\x83\\x2A\\x2A\\x56\\x57\\x68\\x80" + +static Handle hInfectedAttackSurvivorTeam = null; +#define NAME_InfectedAttackSurvivorTeam "Infected::AttackSurvivorTeam" +#define SIG_InfectedAttackSurvivorTeam_LINUX "@_ZN8Infected18AttackSurvivorTeamEv" +#define SIG_InfectedAttackSurvivorTeam_WINDOWS "\\x56\\x8B\\x2A\\x80\\xBE\\xC1\\x1C\\x00\\x00\\x01\\x74\\x2A\\x80" + +#define SIG_L4D1InfectedAttackSurvivorTeam_WINDOWS "\\x80\\xB9\\x99" + +ConVar version_cvar; + +#define cmd_1 "sm_dzspawn" +static char cmd_1_desc[128]; +#define cmd_2 "sm_mdzs" +static char cmd_2_desc[128]; + +static bool g_isSequel = false; + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + if (GetEngineVersion() == Engine_Left4Dead2) + { + g_isSequel = true; + return APLRes_Success; + } + else if (GetEngineVersion() == Engine_Left4Dead) + { + g_isSequel = false; + return APLRes_Success; + } + strcopy(error, err_max, "Plugin only supports Left 4 Dead and Left 4 Dead 2."); + return APLRes_SilentFailure; +} + +public Plugin myinfo = +{ + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESC, + version = PLUGIN_VERSION, + url = PLUGIN_URL +} + +public void OnPluginStart() +{ + static char desc_str[64]; + Format(desc_str, sizeof(desc_str), "%s version.", PLUGIN_NAME_SHORT); + static char cmd_str[64]; + Format(cmd_str, sizeof(cmd_str), "sm_%s_version", PLUGIN_NAME_TECH); + version_cvar = CreateConVar(cmd_str, PLUGIN_VERSION, desc_str, FCVAR_NONE|FCVAR_NOTIFY|FCVAR_REPLICATED|FCVAR_DONTRECORD); + if (version_cvar != null) + SetConVarString(version_cvar, PLUGIN_VERSION); + + GetGamedata(); + + Format(cmd_1_desc, sizeof(cmd_1_desc), "%s - Spawn a special infected, bypassing the limit enforced by the game.", cmd_1); + Format(cmd_2_desc, sizeof(cmd_2_desc), "%s - Open a menu to spawn a special infected, bypassing the limit enforced by the game.", cmd_2); + RegAdminCmd(cmd_1, Command_Spawn, ADMFLAG_CHEATS, cmd_1_desc); + RegAdminCmd(cmd_2, Command_SpawnMenu, ADMFLAG_CHEATS, cmd_2_desc); + + HookEvent("witch_harasser_set", witch_harasser_set, EventHookMode_Post); + HookEvent("witch_killed", witch_killed, EventHookMode_Post); +} + +void CheckandPrecacheModel(const char[] model) +{ + if (!IsModelPrecached(model)) + PrecacheModel(model, true); +} + +public void OnMapStart() +{ + CheckandPrecacheModel(MODEL_SMOKER); + CheckandPrecacheModel(MODEL_BOOMER); + CheckandPrecacheModel(MODEL_HUNTER); + if (g_isSequel) + { + CheckandPrecacheModel(MODEL_SPITTER); + CheckandPrecacheModel(MODEL_JOCKEY); + CheckandPrecacheModel(MODEL_CHARGER); + CheckandPrecacheModel(MODEL_WITCHBRIDE); + } + CheckandPrecacheModel(MODEL_TANK); + CheckandPrecacheModel(MODEL_WITCH); +} + +void witch_harasser_set(Event event, const char[] name, bool dontBroadcast) +{ + int witch = event.GetInt("witchid"); + if (!RealValidEntity(witch)) return; + + static char witchName[17]; + GetEntPropString(witch, Prop_Data, "m_iName", witchName, sizeof(witchName)); + if (strcmp(witchName, BRIDE_WITCH_TARGETNAME, false) != 0) return; + + int dir_ent = CheckForDirectorEnt(); + if (!RealValidEntity(dir_ent)) return; + + PrintToServer("Bride startled"); + + DispatchKeyValue(witch, "targetname", ""); + AcceptEntityInput(dir_ent, "ForcePanicEvent"); +} + +void witch_killed(Event event, const char[] name, bool dontBroadcast) +{ + int witch = event.GetInt("witchid"); + if (!RealValidEntity(witch)) return; + + static char witchName[17]; + GetEntPropString(witch, Prop_Data, "m_iName", witchName, sizeof(witchName)); + if (strcmp(witchName, BRIDE_WITCH_TARGETNAME, false) != 0) return; + + int dir_ent = CheckForDirectorEnt(); + if (!RealValidEntity(dir_ent)) return; + + //if (!event.GetBool("oneshot")) return; + + PrintToServer("Bride killed"); + + DispatchKeyValue(witch, "targetname", ""); + AcceptEntityInput(dir_ent, "ForcePanicEvent"); +} + +int CheckForDirectorEnt() +{ + int result = FindEntityByClassname(-1, DIRECTOR_CLASS); + if (!RealValidEntity(result)) + { + result = CreateEntityByName(DIRECTOR_CLASS); + DispatchSpawn(result); + ActivateEntity(result); + } + return result; +} + +Action Command_SpawnMenu(int client, any args) +{ + if (client == 0) + { + ReplyToCommand(client, "[SM] Menu is in-game only."); + return Plugin_Handled; + } + + Handle menu = CreateMenu(SpawnMenu_Handler); + SetMenuTitle(menu, "Direct ZSpawn Menu"); + AddMenuItem(menu, "Smoker", "Smoker"); + AddMenuItem(menu, "Boomer", "Boomer"); + AddMenuItem(menu, "Hunter", "Hunter"); + if (g_isSequel) + { + AddMenuItem(menu, "Jockey", "Jockey"); + AddMenuItem(menu, "Spitter", "Spitter"); + AddMenuItem(menu, "Charger", "Charger"); + } + AddMenuItem(menu, "Tank", "Tank"); + AddMenuItem(menu, "Witch", "Witch"); + if (g_isSequel) + { AddMenuItem(menu, "witch_bride", "Bride Witch"); } + AddMenuItem(menu, "", "Common"); + AddMenuItem(menu, "chase", "Chasing Common"); + SetMenuExitButton(menu, true); + DisplayMenu(menu, client, MENU_TIME_FOREVER); + return Plugin_Handled; +} + +int SpawnMenu_Handler(Handle menu, MenuAction action, int client, int param) +{ + switch (action) + { + case MenuAction_Select: + { + static char zombie[12]; + GetMenuItem(menu, param, zombie, sizeof(zombie)); + + CreateInfectedWithParams(client, zombie); + Command_SpawnMenu(client, 0); + } + case MenuAction_Cancel: + { + if (param == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE) + { + DisplayTopMenu(hTopMenu, client, TopMenuPosition_LastCategory); + } + } + case MenuAction_End: + { + CloseHandle(menu); + } + } + return 0; +} + +Action Command_Spawn(int client, any args) +{ + int kick = 0; + if (!IsValidClient(client)) + { + ReplyToCommand(client, "[SM] Invalid client! Unable to get position and angles!"); + return Plugin_Handled; + } + if (args > 4) + { + ReplyToCommand(client, "[SM] Usage: %s", cmd_1_desc); + return Plugin_Handled; + } + + static char zomb[128], number[4], mode[2]; + GetCmdArg(1, zomb, sizeof(zomb)); + GetCmdArg(2, number, sizeof(number)); + GetCmdArg(3, mode, sizeof(mode)); + int mode_int = StringToInt(mode); + int number_int = StringToInt(number); + if (number_int < 1) + { number_int = 1; } + + if (GetClientCount(false) >= (MaxClients - number_int)) + { + ReplyToCommand(client, "[SM] Attempt to kick dead infected bots..."); + kick = KickDeadInfectedBots(client); + } + + if (kick <= 0) + { CreateInfectedWithParams(client, zomb, mode_int, number_int); } + else + { + DataPack data = CreateDataPack(); + CreateDataTimer(0.01, Timer_CreateInfected, data); + data.WriteCell(GetClientUserId(client)); + data.WriteString(zomb); + data.WriteCell(mode_int); + data.WriteCell(number_int); + } + + return Plugin_Handled; +} + +Action Timer_CreateInfected(Handle timer, DataPack data) +{ + data.Reset(); + int client = GetClientOfUserId(data.ReadCell()); + static char zomb[128]; + data.ReadString(zomb, sizeof(zomb)); + int mode_int = data.ReadCell(); + int number_int = data.ReadCell(); + + CreateInfectedWithParams(client, zomb, mode_int, number_int); + return Plugin_Continue; +} + +void CreateInfectedWithParams(int client, const char[] zomb, int mode = 0, int number = 1) +{ + float pos[3]; + float ang[3]; + GetClientAbsOrigin(client, pos); + GetClientAbsAngles(client, ang); + if (mode <= 0) + { + GetClientEyePosition(client, pos); + GetClientEyeAngles(client, ang); + TR_TraceRayFilter(pos, ang, MASK_OPAQUE, RayType_Infinite, TraceRayDontHitPlayers, client); + if (TR_DidHit(null)) + { + TR_GetEndPosition(pos); + } + else + { + PrintToChat(client, "[SM] Vector out of world geometry. Teleporting on origin instead"); + } + } + ang[0] = 0.0;ang[2] = 0.0; + int failed_Count = 0; + for (int i = 0;i < number;i++) + { + int infected = CreateInfected(zomb, pos, ang); + if (!RealValidEntity(infected)) + { failed_Count += 1; } + } + if (failed_Count > 1) + { PrintToChat(client, "[SM] Failed to spawn %i %s infected!", failed_Count, zomb); } + else if (failed_Count > 0) + { PrintToChat(client, "[SM] Failed to spawn %s infected!", zomb); } +} +bool TraceRayDontHitPlayers(int entity, int mask, any data) +{ + if (IsValidClient(data)) + { + return false; + } + return true; +} + +int CreateInfected(const char[] zomb, float pos[3], float ang[3]) +{ + int bot = -1; + + if (strncmp(zomb, "witch", 5, false) == 0 || (g_isSequel && strncmp(zomb, "witch_bride", 11, false) == 0)) + { + int witch = CreateEntityByName("witch"); + TeleportEntity(witch, pos, ang, NULL_VECTOR); + DispatchSpawn(witch); + ActivateEntity(witch); + if (g_isSequel && strncmp(zomb, "witch_bride", 11, false) == 0) + { + SetEntityModel(witch, MODEL_WITCHBRIDE); + //AssignPanicToWitch(witch); + DispatchKeyValue(witch, "targetname", BRIDE_WITCH_TARGETNAME); + } + return witch; + } + else if (strncmp(zomb, "smoker", 6, false) == 0) + { + bot = SDKCall(hCreateSmoker, "Smoker"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_SMOKER); + } + else if (strncmp(zomb, "boomer", 6, false) == 0) + { + bot = SDKCall(hCreateBoomer, "Boomer"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_BOOMER); + } + else if (strncmp(zomb, "hunter", 6, false) == 0) + { + bot = SDKCall(hCreateHunter, "Hunter"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_HUNTER); + } + else if (strncmp(zomb, "spitter", 7, false) == 0 && g_isSequel) + { + bot = SDKCall(hCreateSpitter, "Spitter"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_SPITTER); + } + else if (strncmp(zomb, "jockey", 6, false) == 0 && g_isSequel) + { + bot = SDKCall(hCreateJockey, "Jockey"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_JOCKEY); + } + else if (strncmp(zomb, "charger", 7, false) == 0 && g_isSequel) + { + bot = SDKCall(hCreateCharger, "Charger"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_CHARGER); + } + else if (strncmp(zomb, "tank", 4, false) == 0) + { + bot = SDKCall(hCreateTank, "Tank"); + if (IsValidClient(bot)) SetEntityModel(bot, MODEL_TANK); + } + else + { + int infected = CreateEntityByName("infected"); + TeleportEntity(infected, pos, ang, NULL_VECTOR); + DispatchSpawn(infected); + ActivateEntity(infected); + if (hInfectedAttackSurvivorTeam != null && StrContains(zomb, "chase", false) > -1) + { CreateTimer(0.4, Timer_Chase, EntIndexToEntRef(infected)); } + return infected; + } + + if (IsValidClient(bot)) + { + ChangeClientTeam(bot, 3); + SetEntProp(bot, Prop_Send, "m_usSolidFlags", 16); + SetEntProp(bot, Prop_Send, "movetype", 2); + SetEntProp(bot, Prop_Send, "deadflag", 0); + SetEntProp(bot, Prop_Send, "m_lifeState", 0); + //SetEntProp(bot, Prop_Send, "m_fFlags", 129); + SetEntProp(bot, Prop_Send, "m_iObserverMode", 0); + SetEntProp(bot, Prop_Send, "m_iPlayerState", 0); + SetEntProp(bot, Prop_Send, "m_zombieState", 0); + DispatchSpawn(bot); + ActivateEntity(bot); + + DataPack data = CreateDataPack(); + data.WriteFloat(pos[0]); + data.WriteFloat(pos[1]); + data.WriteFloat(pos[2]); + data.WriteFloat(ang[1]); + data.WriteCell(bot); + RequestFrame(RequestFrame_SetPos, data); + } + + return bot; +} + +/*void AssignPanicToWitch(int witch) +{ +// Logic_RunScript("Msg(\"Bride Witch spawned by DZS\\n\")\; +// function OnGameEvent_witch_harasser_set( params ) +// { +// if (!(\"witchid\" in params)) { return\; } +// local witch = EntIndexToHScript(params[\"witchid\"])\; +// +// if (\"userid\" in params) +// { local client = GetPlayerFromUserID(params[\"userid\"])\; } +// +// if (self && self.IsValid() && witch && witch.IsValid() && witch == self) +// { DoEntFire(FindByClassname(null, \"info_director\"), \"ForcePanicEvent\", \"\", 0.0, null, witch)\; } +// } +// __CollectEventCallbacks(this, \"OnGameEvent_\", \"GameEventCallbacks\", RegisterScriptGameEventListener)\;"); + +// SetVariantString("Msg(\"Bride Witch spawned by DZS\\n\"); function OnGameEvent_witch_harasser_set( params ) { if (!(\"witchid\" in params)) { return; } local witch = EntIndexToHScript(params[\"witchid\"]); if (\"userid\" in params) { local client = GetPlayerFromUserID(params[\"userid\"]); } if (self && self.IsValid() && witch && witch.IsValid() && witch == self) { DoEntFire(FindByClassname(null, \"info_director\"), \"ForcePanicEvent\", \"\", 0.0, client, witch); } } __CollectEventCallbacks(this, \"OnGameEvent_\", \"GameEventCallbacks\", RegisterScriptGameEventListener);"); +// SetVariantString("function OnGameEvent_witch_harasser_set( params ) { if (!(\"witchid\" in params)) { return; } local witch = EntIndexToHScript(params[\"witchid\"]); if (self && self.IsValid() && witch && witch.IsValid() && witch == self) { DoEntFire(FindByClassname(null, \"info_director\"), \"ForcePanicEvent\", \"\", 0.0, client, witch); } } __CollectEventCallbacks(this, \"OnGameEvent_\", \"GameEventCallbacks\", RegisterScriptGameEventListener);"); +// AcceptEntityInput(witch, "RunScriptCode"); + SetVariantString("OnStartled info_director:ForcePanicEvent::0.0:1"); + AcceptEntityInput(witch, "AddOutput"); +}*/ + +/*#define PLUGIN_SCRIPTLOGIC "plugin_scripting_logic_entity" + +static int g_iScriptLogic = 0; + +void Logic_RunScript(const char[] sCode, any ...) +{ + int iScriptLogic = 0; + if (!RealValidEntity(g_iScriptLogic)) + { + iScriptLogic = FindEntityByTargetname(-1, PLUGIN_SCRIPTLOGIC); + if (!RealValidEntity(iScriptLogic)) + { + iScriptLogic = CreateEntityByName("logic_script"); + DispatchKeyValue(iScriptLogic, "targetname", PLUGIN_SCRIPTLOGIC); + DispatchSpawn(iScriptLogic); + g_iScriptLogic = iScriptLogic; + } + } + else + { + iScriptLogic = g_iScriptLogic; + } + + static char sBuffer[512]; + VFormat(sBuffer, sizeof(sBuffer), sCode, 2); + + SetVariantString(sBuffer); + AcceptEntityInput(iScriptLogic, "RunScriptCode"); +} + +int FindEntityByTargetname(int index, const char[] findname, bool onlyNetworked = false) +{ + for (int i = index; i < (onlyNetworked ? GetMaxEntities() : (GetMaxEntities()*2)); i++) { + if (!RealValidEntity(i)) continue; + static char name[128]; + GetEntPropString(i, Prop_Data, "m_iName", name, sizeof(name)); + if (strcmp(name, findname, false) != 0) continue; + return i; + } + return -1; +}*/ + +Action Timer_Chase(Handle timer, int inf_ref) +{ + int infected = EntRefToEntIndex(inf_ref); + if (!RealValidEntity(infected)) return Plugin_Continue; + static char class[9]; + GetEntityClassname(infected, class, sizeof(class)); + if (strcmp(class, "infected", false) != 0) return Plugin_Continue; + + SDKCall(hInfectedAttackSurvivorTeam, infected); + return Plugin_Continue; +} + +void RequestFrame_SetPos(DataPack data) +{ + data.Reset(); + float pos0 = data.ReadFloat(); + float pos1 = data.ReadFloat(); + float pos2 = data.ReadFloat(); + float ang1 = data.ReadFloat(); + int bot = data.ReadCell(); + if (data != null) + { CloseHandle(data); } + + float pos[3];pos[0]=pos0;pos[1]=pos1;pos[2]=pos2; + float ang[3];ang[0]=0.0;ang[1]=ang1;ang[2]=0.0; + + TeleportEntity(bot, pos, ang, NULL_VECTOR); +} + +int KickDeadInfectedBots(int client) +{ + int kicked_Bots = 0; + for (int loopclient = 1; loopclient <= MaxClients; loopclient++) + { + if (!IsValidClient(loopclient)) continue; + if (!IsInfected(loopclient) || !IsFakeClient(loopclient) || IsPlayerAlive(loopclient)) continue; + KickClient(loopclient); + kicked_Bots += 1; + } + if (kicked_Bots > 0) + { PrintToChat(client, "Kicked %i bots.", kicked_Bots); } + return kicked_Bots; +} + +void GetGamedata() +{ + static char filePath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, filePath, sizeof(filePath), "gamedata/%s.txt", GAMEDATA); + if ( FileExists(filePath) ) + { + hConf = LoadGameConfigFile(GAMEDATA); // For some reason this doesn't return null even for invalid files, so check they exist first. + } + else + { + PrintToServer("[SM] %s unable to get %s.txt gamedata file. Generating...", PLUGIN_NAME, GAMEDATA); + + Handle fileHandle = OpenFile(filePath, "w"); + if (fileHandle == null) + { SetFailState("[SM] Couldn't generate gamedata file!"); } + + WriteFileLine(fileHandle, "\"Games\""); + WriteFileLine(fileHandle, "{"); + WriteFileLine(fileHandle, " \"left4dead\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"Signatures\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"%s\"", NAME_InfectedAttackSurvivorTeam); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_InfectedAttackSurvivorTeam_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_L4D1InfectedAttackSurvivorTeam_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_InfectedAttackSurvivorTeam_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateSmoker); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateSmoker_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_L4D1CreateSmoker_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateSmoker_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateBoomer); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateBoomer_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_L4D1CreateBoomer_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateBoomer_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateHunter); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateHunter_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_L4D1CreateHunter_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateHunter_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateTank); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateTank_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_L4D1CreateTank_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateTank_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"left4dead2\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"Addresses\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"%s\"", ADDRESS_NAME); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"windows\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"signature\" \"%s\"", ADDRESS_SIG_NAME); + WriteFileLine(fileHandle, " \"offset\" \"%i\"", ADDRESS_OFFSET); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"Signatures\""); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"%s\"", NAME_InfectedAttackSurvivorTeam); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_InfectedAttackSurvivorTeam_LINUX); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", SIG_InfectedAttackSurvivorTeam_WINDOWS); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_InfectedAttackSurvivorTeam_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", ADDRESS_SIG_NAME); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " // Switch jump with a bunch of cases matching..."); + WriteFileLine(fileHandle, " // PUSH rel32"); + WriteFileLine(fileHandle, " // CALL rel32"); + WriteFileLine(fileHandle, " // JUMP rel8"); + WriteFileLine(fileHandle, " // There are acutally 2 matches of this in the windows binary, "); + WriteFileLine(fileHandle, " // but they appear to be the same functionality--so it doesn't matter which we get."); + WriteFileLine(fileHandle, " /* %s */", ADDRESS_SIG_RAW); + WriteFileLine(fileHandle, " \"windows\" \"%s\"", ADDRESS_SIG); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateSmoker); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateSmoker_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateSmoker_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateBoomer); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateBoomer_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateBoomer_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateHunter); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateHunter_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateHunter_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateSpitter); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateSpitter_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateSpitter_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateJockey); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateJockey_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateJockey_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateCharger); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateCharger_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateCharger_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " \"%s\"", NAME_CreateTank); + WriteFileLine(fileHandle, " {"); + WriteFileLine(fileHandle, " \"library\" \"server\""); + WriteFileLine(fileHandle, " \"linux\" \"%s\"", SIG_CreateTank_LINUX); + WriteFileLine(fileHandle, " \"mac\" \"%s\"", SIG_CreateTank_LINUX); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, " }"); + WriteFileLine(fileHandle, "}"); + + CloseHandle(fileHandle); + hConf = LoadGameConfigFile(GAMEDATA); + if (hConf == null) + { SetFailState("[SM] Failed to load auto-generated gamedata file!"); } + + PrintToServer("[SM] %s successfully generated %s.txt gamedata file!", PLUGIN_NAME, GAMEDATA); + } + PrepSDKCall(); +} + +void LoadStringFromAdddress(Address addr, char[] buffer, int maxlength) { + int i = 0; + while(i < maxlength) { + char val = LoadFromAddress(addr + view_as
(i), NumberType_Int8); + if (val == 0) { + buffer[i] = 0; + break; + } + buffer[i] = val; + i++; + } + buffer[maxlength - 1] = 0; +} + +Handle PrepCreateBotCallFromAddress(Handle hSiFuncTrie, const char[] siName) { + Address addr; + StartPrepSDKCall(SDKCall_Static); + if (!GetTrieValue(hSiFuncTrie, siName, addr) || !PrepSDKCall_SetAddress(addr)) + { + SetFailState("Unable to find NextBotCreatePlayer<%s> address in memory.", siName); + return null; + } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + return EndPrepSDKCall(); +} + +void PrepWindowsCreateBotCalls(Address jumpTableAddr) { + Handle hInfectedFuncs = CreateTrie(); + // We have the address of the jump table, starting at the first PUSH instruction of the + // PUSH mem32 (5 bytes) + // CALL rel32 (5 bytes) + // JUMP rel8 (2 bytes) + // repeated pattern. + + // Each push is pushing the address of a string onto the stack. Let's grab these strings to identify each case. + // "Hunter" / "Smoker" / etc. + for(int i = 0; i < 7; i++) { + // 12 bytes in PUSH32, CALL32, JMP8. + Address caseBase = jumpTableAddr + view_as
(i * 12); + Address siStringAddr = view_as
(LoadFromAddress(caseBase + view_as
(1), NumberType_Int32)); + static char siName[32]; + LoadStringFromAdddress(siStringAddr, siName, sizeof(siName)); + + Address funcRefAddr = caseBase + view_as
(6); // 2nd byte of call, 5+1 byte offset. + int funcRelOffset = LoadFromAddress(funcRefAddr, NumberType_Int32); + Address callOffsetBase = caseBase + view_as
(10); // first byte of next instruction after the CALL instruction + Address nextBotCreatePlayerBotTAddr = callOffsetBase + view_as
(funcRelOffset); + PrintToServer("Found NextBotCreatePlayerBot<%s>() @ %08x", siName, nextBotCreatePlayerBotTAddr); + SetTrieValue(hInfectedFuncs, siName, nextBotCreatePlayerBotTAddr); + } + + hCreateSmoker = PrepCreateBotCallFromAddress(hInfectedFuncs, "Smoker"); + if (hCreateSmoker == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateSmoker); return; } + + hCreateBoomer = PrepCreateBotCallFromAddress(hInfectedFuncs, "Boomer"); + if (hCreateBoomer == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateBoomer); return; } + + hCreateHunter = PrepCreateBotCallFromAddress(hInfectedFuncs, "Hunter"); + if (hCreateHunter == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateHunter); return; } + + hCreateTank = PrepCreateBotCallFromAddress(hInfectedFuncs, "Tank"); + if (hCreateTank == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateTank); return; } + + hCreateSpitter = PrepCreateBotCallFromAddress(hInfectedFuncs, "Spitter"); + if (hCreateSpitter == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateSpitter); return; } + + hCreateJockey = PrepCreateBotCallFromAddress(hInfectedFuncs, "Jockey"); + if (hCreateJockey == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateJockey); return; } + + hCreateCharger = PrepCreateBotCallFromAddress(hInfectedFuncs, "Charger"); + if (hCreateCharger == null) + { SetFailState("Cannot initialize %s SDKCall, address lookup failed.", NAME_CreateCharger); return; } +} + +void PrepL4D2CreateBotCalls() { + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateSpitter)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateSpitter); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateSpitter = EndPrepSDKCall(); + if (hCreateSpitter == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateSpitter); return; } + + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateJockey)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateJockey); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateJockey = EndPrepSDKCall(); + if (hCreateJockey == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateJockey); return; } + + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateCharger)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateCharger); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateCharger = EndPrepSDKCall(); + if (hCreateCharger == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateCharger); return; } +} + +void PrepL4D1CreateBotCalls() { + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateSmoker)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateSmoker); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateSmoker = EndPrepSDKCall(); + if (hCreateSmoker == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateSmoker); return; } + + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateBoomer)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateBoomer); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateBoomer = EndPrepSDKCall(); + if (hCreateBoomer == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateBoomer); return; } + + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateHunter)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateHunter); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateHunter = EndPrepSDKCall(); + if (hCreateHunter == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateHunter); return; } + + StartPrepSDKCall(SDKCall_Static); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_CreateTank)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_CreateTank); return; } + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_CBasePlayer, SDKPass_Pointer); + hCreateTank = EndPrepSDKCall(); + if (hCreateTank == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_CreateTank); return; } +} + +void PrepSDKCall() +{ + if (hConf == null) + { SetFailState("Unable to find %s.txt gamedata.", GAMEDATA); return; } + + Address replaceWithBot = GameConfGetAddress(hConf, ADDRESS_NAME); + + if (replaceWithBot != Address_Null && LoadFromAddress(replaceWithBot, NumberType_Int8) == 0x68) { + // We're on L4D2 and linux + PrepWindowsCreateBotCalls(replaceWithBot); + } + else + { + if (g_isSequel) + { + PrepL4D2CreateBotCalls(); + } + else + { delete hCreateSpitter; delete hCreateJockey; delete hCreateCharger; } + + PrepL4D1CreateBotCalls(); + } + + /*StartPrepSDKCall(SDKCall_Player); + if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_RoundRespawn)) + { SetFailState("Unable to find %s signature in gamedata file.", NAME_RoundRespawn); return; } + hRoundRespawn = EndPrepSDKCall(); + if (hRoundRespawn == null) + { SetFailState("Cannot initialize %s SDKCall, signature is broken.", NAME_RoundRespawn); return; }*/ + + StartPrepSDKCall(SDKCall_Entity); + PrepSDKCall_SetFromConf(hConf, SDKConf_Signature, NAME_InfectedAttackSurvivorTeam); + hInfectedAttackSurvivorTeam = EndPrepSDKCall(); + if (hInfectedAttackSurvivorTeam == null) + { PrintToServer("WARNING: Cannot initialize %s SDKCall, signature is broken. Chase infected spawn is disabled.", NAME_InfectedAttackSurvivorTeam); } +} + +bool IsInfected(int client) +{ + if (!IsValidClient(client)) return false; + if (GetClientTeam(client) == TEAM_INFECTED) return true; + return false; +} + +bool IsValidClient(int client, bool replaycheck = true) +{ + if (client <= 0 || client > MaxClients) return false; + if (!IsClientInGame(client)) return false; + //if (GetEntProp(client, Prop_Send, "m_bIsCoaching")) return false; + if (replaycheck) + { + if (IsClientSourceTV(client) || IsClientReplay(client)) return false; + } + return true; +} + +bool RealValidEntity(int entity) +{ return (entity > 0 && IsValidEntity(entity)); } \ No newline at end of file diff --git a/addons/sourcemod/scripting/tank_and_nowitch_ifier.sp b/addons/sourcemod/scripting/tank_and_nowitch_ifier.sp deleted file mode 100644 index 5923dfd7..00000000 --- a/addons/sourcemod/scripting/tank_and_nowitch_ifier.sp +++ /dev/null @@ -1,201 +0,0 @@ -#pragma semicolon 1 - -#define DEBUG 0 - -#include -#include -#include -#define L4D2UTIL_STOCKS_ONLY -#include -#include - -#define MAX(%0,%1) (((%0) > (%1)) ? (%0) : (%1)) -#define MIN(%0,%1) (((%0) < (%1)) ? (%0) : (%1)) - -public Plugin:myinfo = { - name = "Tank and no Witch ifier!", - author = "CanadaRox, Sir, devilesk", - version = "2.2.2", - description = "Sets a tank spawn and removes witch spawn point on every map", - url = "https://github.com/devilesk/rl4d2l-plugins" -}; - -new Handle:g_hVsBossBuffer; -new Handle:g_hVsBossFlowMax; -new Handle:g_hVsBossFlowMin; -new Handle:hStaticTankMaps; -new Handle:g_hCvarDebug = INVALID_HANDLE; -new bool:bValidSpawn[101]; - -public OnPluginStart() { - g_hCvarDebug = CreateConVar("sm_tank_nowitch_debug", "0", "Tank and no Witch ifier debug mode", 0, true, 0.0, true, 1.0); - - g_hVsBossBuffer = FindConVar("versus_boss_buffer"); - g_hVsBossFlowMax = FindConVar("versus_boss_flow_max"); - g_hVsBossFlowMin = FindConVar("versus_boss_flow_min"); - hStaticTankMaps = CreateTrie(); - - HookEvent("round_start", RoundStartEvent, EventHookMode_PostNoCopy); - RegServerCmd("static_tank_map", StaticTank_Command); - RegServerCmd("reset_static_maps", Reset_Command); - - RegAdminCmd("sm_tank_nowitch_debug_info", Info_Cmd, ADMFLAG_KICK, "Dump spawn state info"); - -#if DEBUG - RegConsoleCmd("sm_tank_nowitch_debug_test", Test_Cmd); -#endif -} - -public Action:L4D_OnSpawnWitch(const Float:vector[3], const Float:qangle[3]) { - return Plugin_Handled; -} - -public Action:L4D_OnSpawnWitchBride(const Float:vector[3], const Float:qangle[3]) { - return Plugin_Handled; -} - -public Action:StaticTank_Command(args) { - decl String:mapname[64]; - GetCmdArg(1, mapname, sizeof(mapname)); - StrToLower(mapname); - SetTrieValue(hStaticTankMaps, mapname, true); -#if DEBUG - PrintDebug("[StaticTank_Command] Added: %s", mapname); -#endif -} - -public Action:Reset_Command(args) { - ClearTrie(hStaticTankMaps); -} - -public RoundStartEvent(Handle:event, const String:name[], bool:dontBroadcast) { - CreateTimer(0.5, AdjustBossFlow, _, TIMER_FLAG_NO_MAPCHANGE); -} - -public Action:Info_Cmd(client, args) { - PrintDebugInfoDump(); -} -#if DEBUG -public Action:Test_Cmd(client, args) { - PrintDebug("[Test_Cmd] Starting AdjustBossFlow timer..."); - CreateTimer(0.5, AdjustBossFlow, _, TIMER_FLAG_NO_MAPCHANGE); -} -#endif - -public Action:AdjustBossFlow(Handle:timer) { - if (InSecondHalfOfRound()) return; - - decl String:sCurMap[64]; - decl dummy; - GetCurrentMapLower(sCurMap, sizeof(sCurMap)); - - // javascript implementation to test algorithm: https://jsfiddle.net/4ncw70Lv/ - - if (!GetTrieValue(hStaticTankMaps, sCurMap, dummy)) { - PrintDebug("[AdjustBossFlow] Not static tank map. Flow tank enabled."); - - new iCvarMinFlow = RoundFloat(GetConVarFloat(g_hVsBossFlowMin) * 100); - new iCvarMaxFlow = RoundFloat(GetConVarFloat(g_hVsBossFlowMax) * 100); - - // mapinfo override - iCvarMinFlow = L4D2_GetMapValueInt("versus_boss_flow_min", iCvarMinFlow); - iCvarMaxFlow = L4D2_GetMapValueInt("versus_boss_flow_max", iCvarMaxFlow); - - new iMinBanFlow = L4D2_GetMapValueInt("tank_ban_flow_min", -1); - new iMaxBanFlow = L4D2_GetMapValueInt("tank_ban_flow_max", -1); - new iMinBanFlowB = L4D2_GetMapValueInt("tank_ban_flow_min_b", -1); - new iMaxBanFlowB = L4D2_GetMapValueInt("tank_ban_flow_max_b", -1); - new iMinBanFlowC = L4D2_GetMapValueInt("tank_ban_flow_min_c", -1); - new iMaxBanFlowC = L4D2_GetMapValueInt("tank_ban_flow_max_c", -1); - - PrintDebug("[AdjustBossFlow] flow: (%i, %i). ban (%i, %i). ban b (%i, %i). ban c (%i, %i)", iCvarMinFlow, iCvarMaxFlow, iMinBanFlow, iMaxBanFlow, iMinBanFlowB, iMaxBanFlowB, iMinBanFlowC, iMaxBanFlowC); - - // check each array index to see if it is within a ban range - new iValidSpawnTotal = 0; - for (new i = 0; i <= 100; i++) { - bValidSpawn[i] = (iCvarMinFlow <= i && i <= iCvarMaxFlow) && !(iMinBanFlow <= i && i <= iMaxBanFlow) && !(iMinBanFlowB <= i && i <= iMaxBanFlowB) && !(iMinBanFlowC <= i && i <= iMaxBanFlowC); - if (bValidSpawn[i]) iValidSpawnTotal++; - } - - if (iValidSpawnTotal == 0) { - L4D2Direct_SetVSTankToSpawnThisRound(0, false); - L4D2Direct_SetVSTankToSpawnThisRound(1, false); - PrintDebug("[AdjustBossFlow] Ban range covers entire flow range. Flow tank disabled."); - } - else { - new n = Math_GetRandomInt(1, iValidSpawnTotal); - - // the nth valid spawn index is the chosen tank flow % - for (new iTankFlow = 0; iTankFlow <= 100; iTankFlow++) { - if (bValidSpawn[iTankFlow]) { - n--; - if (n == 0) { - new Float:fTankFlow = iTankFlow / 100.0; - PrintDebug("[AdjustBossFlow] iTankFlow: %i, fTankFlow: %f. iValidSpawnTotal: %i", iTankFlow, fTankFlow, iValidSpawnTotal); - L4D2Direct_SetVSTankToSpawnThisRound(0, true); - L4D2Direct_SetVSTankToSpawnThisRound(1, true); - L4D2Direct_SetVSTankFlowPercent(0, fTankFlow); - L4D2Direct_SetVSTankFlowPercent(1, fTankFlow); - break; - } - } - } - } - } - else { - L4D2Direct_SetVSTankToSpawnThisRound(0, false); - L4D2Direct_SetVSTankToSpawnThisRound(1, false); - - PrintDebug("[AdjustBossFlow] Static tank map. Flow tank disabled."); - } - L4D2Direct_SetVSWitchToSpawnThisRound(0, false); - L4D2Direct_SetVSWitchToSpawnThisRound(1, false); - - PrintDebugInfoDump(); -} - -stock Float:GetTankFlow(round) { - return L4D2Direct_GetVSTankFlowPercent(round) - GetConVarFloat(g_hVsBossBuffer) / L4D2Direct_GetMapMaxFlowDistance(); -} - -stock PrintDebugInfoDump() { - if (GetConVarBool(g_hCvarDebug)) { - PrintDebug("[Round 1] tank enabled: %i, tank flow: %f, display: %f, witch enabled: %i", L4D2Direct_GetVSTankToSpawnThisRound(0), L4D2Direct_GetVSTankFlowPercent(0), GetTankFlow(0), L4D2Direct_GetVSWitchToSpawnThisRound(0)); - PrintDebug("[Round 2] tank enabled: %i, tank flow: %f, display: %f, witch enabled: %i", L4D2Direct_GetVSTankToSpawnThisRound(1), L4D2Direct_GetVSTankFlowPercent(1), GetTankFlow(1), L4D2Direct_GetVSWitchToSpawnThisRound(1)); - } -} - -stock PrintDebug(const String:Message[], any:...) { - if (GetConVarBool(g_hCvarDebug)) { - decl String:DebugBuff[256]; - VFormat(DebugBuff, sizeof(DebugBuff), Message, 2); - LogMessage(DebugBuff); -#if DEBUG - PrintToChatAll(DebugBuff); -#endif - } -} - -#define SIZE_OF_INT 2147483647 // without 0 -stock Math_GetRandomInt(min, max) -{ - new random = GetURandomInt(); - - if (random == 0) { - random++; - } - - return RoundToCeil(float(random) / (float(SIZE_OF_INT) / float(max - min + 1))) + min - 1; -} - -stock StrToLower(String:arg[]) { - for (new i = 0; i < strlen(arg); i++) { - arg[i] = CharToLower(arg[i]); - } -} - -stock GetCurrentMapLower(String:buffer[], buflen) { - new iBytesWritten = GetCurrentMap(buffer, buflen); - StrToLower(buffer); - return iBytesWritten; -} \ No newline at end of file diff --git a/addons/sourcemod/scripting/tankbots.sp b/addons/sourcemod/scripting/tankbots.sp new file mode 100644 index 00000000..01aad469 --- /dev/null +++ b/addons/sourcemod/scripting/tankbots.sp @@ -0,0 +1,116 @@ +#define PLUGIN_VERSION "0.2" +#include +#include "left4downtown.inc" + +new Handle:g_TankPlayers; +new Handle:f_TimePeriod; +new Handle:b_SamePlayers; +new bool:bActiveRound; +new String:GameTypeCurrent[128]; + +public Plugin:myinfo = { + name = "Some Tank Thingy", + author = "Sky", + description = "Spawns tanky things", + version = PLUGIN_VERSION, + url = "mikel.toth@gmail.com" +} + +public OnPluginStart() +{ + g_TankPlayers = CreateConVar("sm_tank_count","8","How many tanks you would like active at any point."); + f_TimePeriod = CreateConVar("sm_time_count","15.0","How long to wait after a player dies to check tank count."); + b_SamePlayers = CreateConVar("sm_same_count","0","If enabled, overrides sm_tank_count and maintains same-as-survivors."); + HookEvent("round_end", Round_End); + HookEvent("player_death", Player_Death); + HookEvent("player_left_start_area", Player_Left_Start_Area); + AutoExecConfig(true, "tankConfig_conf"); +} + +public Action:Player_Death(Handle:event, String:event_name[], bool:dontBroadcast) +{ + new client = GetClientOfUserId(GetEventInt(event, "userid")); + if (!bActiveRound) return; + if (IsClientInGame(client) && IsFakeClient(client) && GetClientTeam(client) == 3) CreateTimer(GetConVarFloat(f_TimePeriod), Timer_CheckPlayerCount); +} + +public Action:Round_End(Handle:event, String:event_name[], bool:dontBroadcast) { bActiveRound = false; } + +// When a player leaves, we check to see if there are humans, because if there aren't, +// we need to tell it to create the bot tanks anyway. +public Action:Player_Left_Start_Area(Handle:event, String:event_name[], bool:dontBroadcast) +{ + if (!bActiveRound) + { + bActiveRound = true; + CreateTimer(GetConVarFloat(f_TimePeriod), Timer_CheckActiveCount); + } +} + +// Check if it is only bots - and create the tanks if this is the case, +// as the other method requires there to be humans. +public Action:Timer_CheckActiveCount(Handle:timer) +{ + new survivorCount = 0; + new infectedCount = 0; + new spawnRemaining = 0; + new client = 0; + for (new i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i)) continue; + if (GetClientTeam(i) == 2) survivorCount++; + else if (GetClientTeam(i) == 3 && GetEntProp(i, Prop_Send, "m_zombieClass") == 8) infectedCount++; + if (GetClientTeam(i) == 3) client = i; + } + // if we have found a player, ignore. + if (client != 0) return Plugin_Stop; + client = CreateFakeClient("FakeClient"); + if (GetConVarInt(b_SamePlayers) == 1) spawnRemaining = survivorCount - infectedCount; + else spawnRemaining = GetConVarInt(g_TankPlayers) - infectedCount; + while (spawnRemaining > 0) + { + CreateTimer(0.1, spawnTank, client); + spawnRemaining--; + } + CreateTimer(0.1, kickFakeClient, client); + return Plugin_Stop; +} + +public Action:kickFakeClient(Handle:timer, any:client) { KickClient(client, "FakeClient"); } + +public Action:Timer_CheckPlayerCount(Handle:timer) +{ + if (!bActiveRound) return Plugin_Stop; + new infectedCount = 0; + new survivorCount = 0; + new spawnRemaining = 0; + new client = 0; + for (new i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i)) continue; + if (GetClientTeam(i) == 2) survivorCount++; + else if (GetClientTeam(i) == 3 && GetEntProp(i, Prop_Send, "m_zombieClass") == 8) infectedCount++; + client = i; + } + if (GetConVarInt(b_SamePlayers) == 1) spawnRemaining = survivorCount - infectedCount; + else spawnRemaining = 1; + while (spawnRemaining > 0) + { + CreateTimer(0.1, spawnTank, client); + spawnRemaining--; + } + return Plugin_Stop; +} + +public Action:spawnTank(Handle:timer, any:client) { ExecCheatCommand(client, "z_spawn", "tank auto"); } + +ExecCheatCommand(client = 0,const String:command[],const String:parameters[] = "") +{ + new iFlags = GetCommandFlags(command); + SetCommandFlags(command,iFlags & ~FCVAR_CHEAT); + + FakeClientCommand(client,"%s %s",command,parameters); + + SetCommandFlags(command,iFlags); + SetCommandFlags(command,iFlags|FCVAR_CHEAT); +} \ No newline at end of file diff --git a/addons/sourcemod/scripting/tankdoorfix.sp b/addons/sourcemod/scripting/tankdoorfix.sp index 0ad6c267..422e970b 100644 --- a/addons/sourcemod/scripting/tankdoorfix.sp +++ b/addons/sourcemod/scripting/tankdoorfix.sp @@ -1,182 +1,178 @@ -/* Plugin Template generated by Pawn Studio */ - -#pragma semicolon 1 - -#include -#include -#include -#include - -#define VERSION "1.4.1" - -//Found ent 'prop_door_rotating', id: 163 - -/* -* -* -Member: m_hActiveWeapon (offset 2100) (type integer) (bits 21) -* -* Sub-Class Table (2 Deep): DT_LocalActiveWeaponData -*-Member: m_flNextPrimaryAttack (offset 1156) (type float) (bits 0) -*-Member: m_flNextSecondaryAttack (offset 1160) (type float) (bits 0) -* -* -* Test 696.716674 697.950012 -* Test 700.016723 697.966674 - -*/ - -new tankCount; - -new Float:nextTankPunchAllowed[MAXPLAYERS+1]; - -new tankClassIndex; - -public Plugin:myinfo = -{ - name = "TankDoorFix", - author = "PP(R)TH: Dr. Gregory House", - description = "This should at some point fix the case in which the tank misses the door he's supposed to destroy by using his punch", - version = VERSION, - url = "http://forums.alliedmods.net/showthread.php?t=225087" -} - -public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) -{ - decl String:gameName[32]; - - GetGameFolderName(gameName, sizeof(gameName)); - - if(StrEqual(gameName, "left4dead")) - { - tankClassIndex = 5; - } - else - { - if(StrContains(gameName, "left4dead2") > -1) - { - tankClassIndex = 8; - } - else - { - strcopy(error, err_max, "This plugin only supports L4D(2)."); - return APLRes_SilentFailure; - } - } - return APLRes_Success; -} - -public OnPluginStart() -{ - HookEvent("tank_spawn", Event_TankSpawn); - HookEvent("tank_killed", Event_TankKilled); - - CreateConVar("tankdoorfix_version", VERSION, "TankDoorFix Version", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); -} - -public OnMapStart() -{ - tankCount = 0; -} - -public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) -{ - if(tankCount > 0) - { - if(IsValidClient(client) && GetClientTeam(client) == 3 && GetEntProp(client, Prop_Send, "m_zombieClass") == tankClassIndex) - { - if(buttons & IN_ATTACK) - { - new tankweapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); - - if(tankweapon > 0) - { - new Float:gameTime = GetGameTime(); - - if(GetEntPropFloat(tankweapon, Prop_Send, "m_flTimeWeaponIdle") <= gameTime && nextTankPunchAllowed[client] <= gameTime) - { - nextTankPunchAllowed[client] = gameTime + 2.0; - - CreateTimer(1.0, Timer_DoorCheck, GetClientUserId(client)); - } - } - } - } - } - - return Plugin_Continue; -} - -public Action:Timer_DoorCheck(Handle:timer, any:clientUserID) -{ - new client = GetClientOfUserId(clientUserID); - - if(client > 0 && IsClientInGame(client)) - { - decl Float:direction[3]; - - new result = IsLookingAtBreakableDoor(client, direction); - - if(result > 0) - { - SDKHooks_TakeDamage(result, client, client, 1200.0, 128, _, direction); - } - } -} - -public Event_TankSpawn(Handle:event, const String:name[], bool:dontBroadcast) -{ - tankCount++; - - nextTankPunchAllowed[GetClientOfUserId(GetEventInt(event, "userid"))] = GetGameTime() + 0.8; -} - -public Event_TankKilled(Handle:event, const String:name[], bool:dontBroadcast) -{ - tankCount--; -} - -stock IsLookingAtBreakableDoor(client, Float:direction[3]) -{ - new target = GetClientAimTarget(client, false); - - if(target > 0) - { - decl String:entName[MAX_NAME_LENGTH]; - - GetEntityClassname(target, entName, sizeof(entName)); - - if(StrEqual(entName, "prop_door_rotating")) - { - //Compare distances, i.e. "is in range to destroy the door" - decl Float:clientPos[3]; - decl Float:doorPos[3]; - - GetClientAbsOrigin(client, clientPos); - GetEntPropVector(target, Prop_Send, "m_vecOrigin", doorPos); - //90.0 - if(GetVectorDistance(clientPos, doorPos) <= 90.0) - { - SubtractVectors(doorPos, clientPos, direction); - return target; - } - else - { - return -2; - } - } - else - { - return 0; - } - } - else - { - return -1; - } -} - -bool:IsValidClient(client) -{ - if (client <= 0 || client > MaxClients || !IsClientConnected(client)) return false; - return IsClientInGame(client); -} \ No newline at end of file +/* Plugin Template generated by Pawn Studio */ + +#pragma semicolon 1 + +#include +#include +#include +#include + +#define VERSION "1.4" + +//Found ent 'prop_door_rotating', id: 163 + +/* +* +* -Member: m_hActiveWeapon (offset 2100) (type integer) (bits 21) +* +* Sub-Class Table (2 Deep): DT_LocalActiveWeaponData +*-Member: m_flNextPrimaryAttack (offset 1156) (type float) (bits 0) +*-Member: m_flNextSecondaryAttack (offset 1160) (type float) (bits 0) +* +* +* Test 696.716674 697.950012 +* Test 700.016723 697.966674 + +*/ + +new tankCount; + +new Float:nextTankPunchAllowed[19]; + +new tankClassIndex; + +public Plugin:myinfo = +{ + name = "TankDoorFix", + author = "PP(R)TH: Dr. Gregory House", + description = "This should at some point fix the case in which the tank misses the door he's supposed to destroy by using his punch", + version = VERSION, + url = "http://forums.alliedmods.net/showthread.php?t=225087" +} + +public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) +{ + decl String:gameName[32]; + + GetGameFolderName(gameName, sizeof(gameName)); + + if(StrEqual(gameName, "left4dead")) + { + tankClassIndex = 5; + } + else + { + if(StrContains(gameName, "left4dead2") > -1) + { + tankClassIndex = 8; + } + else + { + strcopy(error, err_max, "This plugin only supports L4D(2)."); + return APLRes_SilentFailure; + } + } + return APLRes_Success; +} + +public OnPluginStart() +{ + HookEvent("tank_spawn", Event_TankSpawn); + HookEvent("tank_killed", Event_TankKilled); + + CreateConVar("tankdoorfix_version", VERSION, "TankDoorFix Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY); +} + +public OnMapStart() +{ + tankCount = 0; +} + +public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) +{ + if(tankCount > 0) + { + if(GetClientTeam(client) == 3 && GetEntProp(client, Prop_Send, "m_zombieClass") == tankClassIndex) + { + if(buttons & IN_ATTACK) + { + new tankweapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); + + if(tankweapon > 0) + { + new Float:gameTime = GetGameTime(); + + if(GetEntPropFloat(tankweapon, Prop_Send, "m_flTimeWeaponIdle") <= gameTime && nextTankPunchAllowed[client] <= gameTime) + { + nextTankPunchAllowed[client] = gameTime + 2.0; + + CreateTimer(1.0, Timer_DoorCheck, GetClientUserId(client)); + } + } + } + } + } + + return Plugin_Continue; +} + +public Action:Timer_DoorCheck(Handle:timer, any:clientUserID) +{ + new client = GetClientOfUserId(clientUserID); + + if(client > 0 && IsClientInGame(client)) + { + decl Float:direction[3]; + + new result = IsLookingAtBreakableDoor(client, direction); + + if(result > 0) + { + LogMessage("Door bug circumvented."); + PrintToChat(client, "Door bug circumvented."); + SDKHooks_TakeDamage(result, client, client, 1200.0, 128, _, direction); + } + } +} + +public Event_TankSpawn(Handle:event, const String:name[], bool:dontBroadcast) +{ + tankCount++; + + nextTankPunchAllowed[GetClientOfUserId(GetEventInt(event, "userid"))] = GetGameTime() + 0.8; +} + +public Event_TankKilled(Handle:event, const String:name[], bool:dontBroadcast) +{ + tankCount--; +} + +stock IsLookingAtBreakableDoor(client, Float:direction[3]) +{ + new target = GetClientAimTarget(client, false); + + if(target > 0) + { + decl String:entName[MAX_NAME_LENGTH]; + + GetEntityClassname(target, entName, sizeof(entName)); + + if(StrEqual(entName, "prop_door_rotating")) + { + //Compare distances, i.e. "is in range to destroy the door" + decl Float:clientPos[3]; + decl Float:doorPos[3]; + + GetClientAbsOrigin(client, clientPos); + GetEntPropVector(target, Prop_Send, "m_vecOrigin", doorPos); + //90.0 + if(GetVectorDistance(clientPos, doorPos) <= 90.0) + { + SubtractVectors(doorPos, clientPos, direction); + return target; + } + else + { + return -2; + } + } + else + { + return 0; + } + } + else + { + return -1; + } +} diff --git a/addons/sourcemod/scripting/transition_restore_fix.sp b/addons/sourcemod/scripting/transition_restore_fix.sp new file mode 100644 index 00000000..2efa677f --- /dev/null +++ b/addons/sourcemod/scripting/transition_restore_fix.sp @@ -0,0 +1,437 @@ +#pragma semicolon 1 +#pragma newdecls required +#include +#include +#include + +#define PLUGIN_NAME "Transition Restore Fix" +#define PLUGIN_AUTHOR "sorallll" +#define PLUGIN_DESCRIPTION "Restoring transition data by player's UserId instead of character" +#define PLUGIN_VERSION "1.2.5" +#define PLUGIN_URL "https://forums.alliedmods.net/showthread.php?t=336287" + +#define GAMEDATA "transition_restore_fix" + +Handle + g_hSDK_KeyValues_GetString, + g_hSDK_KeyValues_SetString, + g_hSDK_CDirector_IsInTransition; + +ConVar + g_cChooseBotData, + g_cvPrecacheAllSur; + +ArrayList + g_aBotData; + +Address + g_pThis, + g_pData, + g_pDirector, + g_pSavedPlayersCount, + g_pSavedSurvivorBotsCount, + g_pSavedLevelRestartSurvivorBotsCount; + +MemoryPatch + g_mpRestoreByUserId; + +bool + g_bOnRestart, + g_bChooseBotData; + +enum struct PlayerSaveData { + char ModelName[128]; + char character[4]; +} + +PlayerSaveData + g_eSavedData; + +public Plugin myinfo = { + name = PLUGIN_NAME, + author = PLUGIN_AUTHOR, + description = PLUGIN_DESCRIPTION, + version = PLUGIN_VERSION, + url = PLUGIN_URL +}; + +public void OnPluginStart() { + InitGameData(); + g_aBotData = new ArrayList(); + + CreateConVar("transition_restore_fix_version", PLUGIN_VERSION, "Transition Restore Fix plugin version.", FCVAR_NOTIFY|FCVAR_DONTRECORD); + g_cChooseBotData = CreateConVar("choose_bot_data", "0", "What to choose bot data according to after restart? (0=Model Name, otherwise=Character)", FCVAR_NOTIFY); + g_cvPrecacheAllSur = FindConVar("precache_all_survivors"); + + g_cChooseBotData.AddChangeHook(CvarChanged); + AutoExecConfig(true); +} + +public void OnPluginEnd() { + if (g_pThis) + StoreToAddress(g_pThis, g_pData, NumberType_Int32); +} + +public void OnConfigsExecuted() { + GetCvars(); +} + +void CvarChanged(ConVar convar, const char[] oldValue, const char[] newValue) { + GetCvars(); +} + +void GetCvars() { + g_bChooseBotData = g_cChooseBotData.BoolValue; +} + +public void OnMapStart() { + g_cvPrecacheAllSur.SetInt(1); +} + +void InitGameData() { + char buffer[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, buffer, sizeof buffer, "gamedata/%s.txt", GAMEDATA); + if (!FileExists(buffer)) + SetFailState("\n==========\nMissing required file: \"%s\".\n==========", buffer); + + GameData hGameData = new GameData(GAMEDATA); + if (!hGameData) + SetFailState("Failed to load \"%s.txt\" gamedata.", GAMEDATA); + + g_pDirector = hGameData.GetAddress("CDirector"); + if (!g_pDirector) + SetFailState("Failed to find address: \"CDirector\""); + + g_pSavedPlayersCount = hGameData.GetAddress("SavedPlayersCount"); + if (!g_pSavedPlayersCount) + SetFailState("Failed to find address: \"SavedPlayersCount\""); + + g_pSavedSurvivorBotsCount = hGameData.GetAddress("SavedSurvivorBotsCount"); + if (!g_pSavedSurvivorBotsCount) + SetFailState("Failed to find address: \"SavedSurvivorBotsCount\""); + + g_pSavedLevelRestartSurvivorBotsCount = hGameData.GetAddress("SavedLevelRestartSurvivorBotsCount"); + if (!g_pSavedLevelRestartSurvivorBotsCount) + SetFailState("Failed to find address: \"SavedLevelRestartSurvivorBotsCount\""); + + StartPrepSDKCall(SDKCall_Raw); + if (!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "KeyValues::GetString")) + SetFailState("Failed to find signature: \"KeyValues::GetString\""); + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_SetReturnInfo(SDKType_String, SDKPass_Pointer); + if (!(g_hSDK_KeyValues_GetString = EndPrepSDKCall())) + SetFailState("Failed to create SDKCall: \"KeyValues::GetString\""); + + StartPrepSDKCall(SDKCall_Raw); + if (!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "KeyValues::SetString")) + SetFailState("Failed to find signature: \"KeyValues::SetString\""); + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); + if (!(g_hSDK_KeyValues_SetString = EndPrepSDKCall())) + SetFailState("Failed to create SDKCall: \"KeyValues::SetString\""); + + StartPrepSDKCall(SDKCall_Raw); + if (!PrepSDKCall_SetFromConf(hGameData, SDKConf_Signature, "CDirector::IsInTransition")) + SetFailState("Failed to find signature: \"CDirector::IsInTransition\""); + PrepSDKCall_SetReturnInfo(SDKType_Bool, SDKPass_Plain); + if (!(g_hSDK_CDirector_IsInTransition = EndPrepSDKCall())) + SetFailState("Failed to create SDKCall: \"CDirector::IsInTransition\""); + + InitPatchs(hGameData); + SetupDetours(hGameData); + + delete hGameData; +} + +void InitPatchs(GameData hGameData = null) { + g_mpRestoreByUserId = MemoryPatch.CreateFromConf(hGameData, "CTerrorPlayer::TransitionRestore::RestoreByUserId"); + if (!g_mpRestoreByUserId.Validate()) + SetFailState("Failed to verify patch: \"CTerrorPlayer::TransitionRestore::RestoreByUserId\""); + + MemoryPatch patch = MemoryPatch.CreateFromConf(hGameData, "RestoreTransitionedSurvivorBots::MaxRestoreSurvivorBots"); + if (!patch.Validate()) + SetFailState("Failed to verify patch: \"RestoreTransitionedSurvivorBots::MaxRestoreSurvivorBots\""); + else if (patch.Enable()) { + StoreToAddress(patch.Address + view_as
(2), !hGameData.GetOffset("OS") ? MaxClients : MaxClients - 1, NumberType_Int8); + PrintToServer("[%s] Enabled patch: \"RestoreTransitionedSurvivorBots::MaxRestoreSurvivorBots\"", GAMEDATA); + } +} + +void SetupDetours(GameData hGameData = null) { + DynamicDetour dDetour = DynamicDetour.FromConf(hGameData, "DD::CDirector::Restart"); + if (!dDetour) + SetFailState("Failed to create DynamicDetour: \"DD::CDirector::Restart\""); + + if (!dDetour.Enable(Hook_Pre, DD_CDirector_Restart_Pre)) + SetFailState("Failed to detour pre: \"DD::CDirector::Restart\""); + + if (!dDetour.Enable(Hook_Post, DD_CDirector_Restart_Post)) + SetFailState("Failed to detour post: \"DD::CDirector::Restart\""); + + dDetour = DynamicDetour.FromConf(hGameData, "DD::CTerrorPlayer::TransitionRestore"); + if (!dDetour) + SetFailState("Failed to create DynamicDetour: \"DD::CTerrorPlayer::TransitionRestore\""); + + if (!dDetour.Enable(Hook_Pre, DD_CTerrorPlayer_TransitionRestore_Pre)) + SetFailState("Failed to detour pre: \"DD::CTerrorPlayer::TransitionRestore\""); + + if (!dDetour.Enable(Hook_Post, DD_CTerrorPlayer_TransitionRestore_Post)) + SetFailState("Failed to detour post: \"DD::CTerrorPlayer::TransitionRestore\""); + + dDetour = DynamicDetour.FromConf(hGameData, "DD::PlayerSaveData::Restore"); + if (!dDetour) + SetFailState("Failed to create DynamicDetour: \"DD::PlayerSaveData::Restore\""); + + if (!dDetour.Enable(Hook_Pre, DD_PlayerSaveData_Restore_Pre)) + SetFailState("Failed to detour pre: \"DD::PlayerSaveData::Restore\""); + + if (!dDetour.Enable(Hook_Post, DD_PlayerSaveData_Restore_Post)) + SetFailState("Failed to detour post: \"DD::PlayerSaveData::Restore\""); + + dDetour = DynamicDetour.FromConf(hGameData, "DD::CDirector::IsHumanSpectatorValid"); + if (!dDetour) + SetFailState("Failed to create DynamicDetour: \"DD::CDirector::IsHumanSpectatorValid\""); + + if (!dDetour.Enable(Hook_Pre, DD_CDirector_IsHumanSpectatorValid_Pre)) + SetFailState("Failed to detour pre: \"DD::CDirector::IsHumanSpectatorValid\""); + + dDetour = DynamicDetour.FromConf(hGameData, "DD::CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots"); + if (!dDetour) + SetFailState("Failed to create DynamicDetour: \"DD::CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots\""); + + if (!dDetour.Enable(Hook_Pre, DD_CDSManager_FillRemainingSurvivorTeamSlotsWithBots_Pre)) + SetFailState("Failed to detour pre: \"DD::CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots\""); +} + +MRESReturn DD_CDirector_Restart_Pre(Address pThis, DHookReturn hReturn) { + g_aBotData.Clear(); + g_bOnRestart = true; + return MRES_Ignored; +} + +MRESReturn DD_CDirector_Restart_Post(Address pThis, DHookReturn hReturn) { + g_bOnRestart = false; + return MRES_Ignored; +} + +MRESReturn DD_CTerrorPlayer_TransitionRestore_Pre(int pThis, DHookReturn hReturn) { + if (IsFakeClient(pThis) || GetClientTeam(pThis) > 2) + return MRES_Ignored; + + Address pData = FindPlayerDataByUserId(GetClientUserId(pThis)); + if (!pData) + return MRES_Ignored; + + char value[4]; + SDKCall(g_hSDK_KeyValues_GetString, pData, value, sizeof value, "teamNumber", "0"); + if (StringToInt(value) != 2) + return MRES_Ignored; + + g_mpRestoreByUserId.Enable(); + return MRES_Ignored; +} + +MRESReturn DD_CTerrorPlayer_TransitionRestore_Post(int pThis, DHookReturn hReturn) { + g_mpRestoreByUserId.Disable(); + return MRES_Ignored; +} + +MRESReturn DD_PlayerSaveData_Restore_Pre(Address pThis, DHookParam hParams) { + if (!g_bOnRestart) + return MRES_Ignored; + + int player = hParams.Get(1); + if (GetClientTeam(player) > 2) + return MRES_Ignored; + + Address pData; + char ModelName[128]; + int m_survivorCharacter = GetEntProp(player, Prop_Send, "m_survivorCharacter"); + if (IsFakeClient(player) || !FindPlayerDataByUserId(GetClientUserId(player))) { + GetClientModel(player, ModelName, sizeof ModelName); + pData = !g_bChooseBotData ? FindBotDataByModelName(ModelName) : FindBotDataByCharacter(m_survivorCharacter); + if (pData) { + g_pThis = pThis; + g_pData = LoadFromAddress(pThis, NumberType_Int32); + StoreToAddress(pThis, pData, NumberType_Int32); + } + } + + if (!pData) { + pData = LoadFromAddress(pThis, NumberType_Int32); + + char value[4]; + SDKCall(g_hSDK_KeyValues_GetString, pData, value, sizeof value, "teamNumber", "0"); + if (StringToInt(value) != 2) + return MRES_Ignored; + } + + char character[4]; + SDKCall(g_hSDK_KeyValues_GetString, pData, ModelName, sizeof ModelName, "ModelName", ""); + SDKCall(g_hSDK_KeyValues_GetString, pData, character, sizeof character, "character", "0"); + strcopy(g_eSavedData.ModelName, sizeof PlayerSaveData::ModelName, ModelName); + strcopy(g_eSavedData.character, sizeof PlayerSaveData::character, character); + + GetClientModel(player, ModelName, sizeof ModelName); + SDKCall(g_hSDK_KeyValues_SetString, pData, "ModelName", ModelName); + + IntToString(m_survivorCharacter, character, sizeof character); + SDKCall(g_hSDK_KeyValues_SetString, pData, "character", character); + + return MRES_Ignored; +} + +MRESReturn DD_PlayerSaveData_Restore_Post(Address pThis, DHookParam hParams) { + if (!g_bOnRestart) + return MRES_Ignored; + + if (g_eSavedData.character[0]) { + Address pData = LoadFromAddress(pThis, NumberType_Int32); + if (pData) { + SDKCall(g_hSDK_KeyValues_SetString, pData, "ModelName", g_eSavedData.ModelName); + SDKCall(g_hSDK_KeyValues_SetString, pData, "character", g_eSavedData.character); + } + + g_eSavedData.ModelName[0] = '\0'; + g_eSavedData.character[0] = '\0'; + } + + if (g_pThis) + StoreToAddress(g_pThis, g_pData, NumberType_Int32); + + g_pThis = Address_Null; + g_pData = Address_Null; + return MRES_Ignored; +} + +/** +* Prevents players joining the game during transition from taking over the Survivor Bot of transitioning players +**/ +MRESReturn DD_CDirector_IsHumanSpectatorValid_Pre(Address pThis, DHookReturn hReturn, DHookParam hParams) { + if (!GetClientOfUserId(GetEntProp(hParams.Get(1), Prop_Send, "m_humanSpectatorUserID"))) + return MRES_Ignored; + + hReturn.Value = 1; + return MRES_Supercede; +} + +/** +* Prevent CDirectorSessionManager::FillRemainingSurvivorTeamSlotsWithBots from triggering before RestoreTransitionedSurvivorBots(void) during transition +**/ +MRESReturn DD_CDSManager_FillRemainingSurvivorTeamSlotsWithBots_Pre(Address pThis, DHookReturn hReturn) { + if (!SDKCall(g_hSDK_CDirector_IsInTransition, g_pDirector)) + return MRES_Ignored; + + if (!LoadFromAddress(g_pSavedSurvivorBotsCount, NumberType_Int32)) + return MRES_Ignored; + + hReturn.Value = 0; + return MRES_Supercede; +} + +// 读取玩家过关时保存的userID +Address FindPlayerDataByUserId(int userid) { + int count = LoadFromAddress(g_pSavedPlayersCount, NumberType_Int32); + if (!count) + return Address_Null; + + Address kv = view_as
(LoadFromAddress(g_pSavedPlayersCount + view_as
(4), NumberType_Int32)); + if (!kv) + return Address_Null; + + Address ptr; + char value[12]; + for (int i; i < count; i++) { + ptr = view_as
(LoadFromAddress(kv + view_as
(4 * i), NumberType_Int32)); + if (!ptr) + continue; + + SDKCall(g_hSDK_KeyValues_GetString, ptr, value, sizeof value, "userID", "0"); + if (StringToInt(value) == userid) + return ptr; + } + + return Address_Null; +} + +//数据选用优先级 +//没有用过且ModelName相同的数据 >= 没有用过且ModelName不相同的数据 >= 用过且ModelName相同的数据 >= 用过且ModelName不相同的数据 +Address FindBotDataByModelName(const char[] model) { + int count = LoadFromAddress(g_pSavedLevelRestartSurvivorBotsCount, NumberType_Int32); + if (!count) + return Address_Null; + + Address kv = view_as
(LoadFromAddress(g_pSavedLevelRestartSurvivorBotsCount + view_as
(4), NumberType_Int32)); + if (!kv) + return Address_Null; + + Address ptr; + char value[128]; + ArrayList al_Kv = new ArrayList(2); + for (int i; i < count; i++) { + ptr = view_as
(LoadFromAddress(kv + view_as
(4 * i), NumberType_Int32)); + if (!ptr) + continue; + + SDKCall(g_hSDK_KeyValues_GetString, ptr, value, sizeof value, "teamNumber", "0"); + if (StringToInt(value) != 2) + continue; + + SDKCall(g_hSDK_KeyValues_GetString, ptr, value, sizeof value, "ModelName", ""); + al_Kv.Set(al_Kv.Push(g_aBotData.FindValue(ptr) == -1 ? (strcmp(value, model, false) == 0 ? 0 : 1) : strcmp(value, model, false) == 0 ? 2 : 3), ptr, 1); + } + + if (!al_Kv.Length) + ptr = Address_Null; + else { + al_Kv.Sort(Sort_Ascending, Sort_Integer); + + ptr = al_Kv.Get(0, 1); + if (al_Kv.Get(0, 0) < 2) + g_aBotData.Push(ptr); + } + + delete al_Kv; + return ptr; +} + +//没有用过且character相同的数据 >= 没有用过且character不相同的数据 >= 用过且character相同的数据 >= 用过且character不相同的数据 +Address FindBotDataByCharacter(int character) { + int count = LoadFromAddress(g_pSavedLevelRestartSurvivorBotsCount, NumberType_Int32); + if (!count) + return Address_Null; + + Address kv = view_as
(LoadFromAddress(g_pSavedLevelRestartSurvivorBotsCount + view_as
(4), NumberType_Int32)); + if (!kv) + return Address_Null; + + Address ptr; + char value[128]; + ArrayList al_Kv = new ArrayList(2); + for (int i; i < count; i++) { + ptr = view_as
(LoadFromAddress(kv + view_as
(4 * i), NumberType_Int32)); + if (!ptr) + continue; + + SDKCall(g_hSDK_KeyValues_GetString, ptr, value, sizeof value, "teamNumber", "0"); + if (StringToInt(value) != 2) + continue; + + SDKCall(g_hSDK_KeyValues_GetString, ptr, value, sizeof value, "character", "0"); + al_Kv.Set(al_Kv.Push(g_aBotData.FindValue(ptr) == -1 ? (StringToInt(value) == character ? 0 : 1) : StringToInt(value) == character ? 2 : 3), ptr, 1); + } + + if (!al_Kv.Length) + ptr = Address_Null; + else { + al_Kv.Sort(Sort_Ascending, Sort_Integer); + + ptr = al_Kv.Get(0, 1); + if (al_Kv.Get(0, 0) < 2) + g_aBotData.Push(ptr); + } + + delete al_Kv; + return ptr; +} diff --git a/cfg/alphabetical.cfg b/cfg/alphabetical.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/alphabetical.cfg @@ -0,0 +1 @@ + diff --git a/cfg/auto.cfg b/cfg/auto.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/auto.cfg @@ -0,0 +1 @@ + diff --git a/cfg/automatic.cfg b/cfg/automatic.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/automatic.cfg @@ -0,0 +1 @@ + diff --git a/cfg/ban.cfg b/cfg/ban.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/ban.cfg @@ -0,0 +1 @@ + diff --git a/cfg/boss.cfg b/cfg/boss.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/boss.cfg @@ -0,0 +1 @@ + diff --git a/cfg/bot.cfg b/cfg/bot.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/bot.cfg @@ -0,0 +1 @@ + diff --git a/cfg/campaign.cfg b/cfg/campaign.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/campaign.cfg @@ -0,0 +1 @@ + diff --git a/cfg/cfgogl/acv/acv.cfg b/cfg/cfgogl/acv/acv.cfg index e5187667..8d99e07e 100644 --- a/cfg/cfgogl/acv/acv.cfg +++ b/cfg/cfgogl/acv/acv.cfg @@ -1,9 +1,9 @@ // ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= @@ -24,18 +24,18 @@ confogl_addcvar l4d_witch_percent 1 confogl_addcvar l4d_boss_vote 1 // [l4d2_tongue_timer.smx] -confogl_addcvar l4d2_tongue_delay_tank 8.0 -confogl_addcvar l4d2_tongue_delay_survivor 4.0 +confogl_addcvar l4d2_tongue_delay_tank 8 +confogl_addcvar l4d2_tongue_delay_survivor 4 // [l4d2_nobhaps.smx] -confogl_addcvar simple_antibhop_enable 1 -confogl_addcvar bhop_allow_survivor 0 -confogl_addcvar bhop_except_si_flags 16 // only jockey +confogl_addcvar simple_antibhop_enable 0 +confogl_addcvar bhop_allow_survivor 1 +confogl_addcvar bhop_except_si_flags 0 // [boomer_horde_equalizer_refactored.smx] -confogl_addcvar boomer_horde_equalizer 1 +confogl_addcvar boomer_horde_equalizer 1 confogl_addcvar boomer_horde_equalizer_events_default 1 -confogl_addcvar z_notice_it_range 1000 +confogl_addcvar z_notice_it_range 2000 boomer_horde_amount 1 15 // 15 Common spawned for the 1st Survivor boomed + Wandering common in z_notice_it_range boomer_horde_amount 2 15 // 15 Common spawned for the 2nd Survivor boomed + Wandering common in z_notice_it_range boomer_horde_amount 3 15 // 15 Common spawned for the 3rd Survivor boomed + Wandering common in z_notice_it_range @@ -46,25 +46,18 @@ confogl_addcvar autopause_enable 1 confogl_addcvar autopause_force 1 confogl_addcvar autopause_apdebug 0 -// [l4d_weapon_limits.smx] -l4d_wlimits_add 5 1 weapon_uzi -l4d_wlimits_add 5 1 weapon_smg_silenced -l4d_wlimits_add 5 1 weapon_smg_mp5 -l4d_wlimits_add 5 1 weapon_pumpshotgun -l4d_wlimits_add 5 1 weapon_shotgun_chrome -l4d_wlimits_add 5 1 weapon_pistol_magnum -l4d_wlimits_add 1 1 weapon_hunting_rifle weapon_sniper_scout weapon_sniper_awp - // [l4d2_melee_shenanigans.smx] -confogl_addcvar l4d2_melee_drop_method 2 +confogl_addcvar l4d2_melee_drop_method 0 +confogl_addcvar l4d2_melee_damage_tank_nerf 0 +confogl_addcvar l4d2_melee_damage_charger 400 // [l4d2_playstats.smx + survivor_mvp] confogl_addcvar sm_survivor_mvp_brevity 0 confogl_addcvar sm_survivor_mvp_brevity_latest 111 -confogl_addcvar sm_stats_autoprint_vs_round 8372 +confogl_addcvar sm_stats_autoprint_vs_round 174773 // [l4d2_skill_detect.smx] confogl_addcvar sm_skill_report_enable 1 // Shared Settings -exec cfgogl/acv/shared_settings.cfg +wait 1000;exec cfgogl/acv/shared_settings.cfg diff --git a/cfg/cfgogl/acv/confogl.cfg b/cfg/cfgogl/acv/confogl.cfg index 1ab23081..24928f80 100644 --- a/cfg/cfgogl/acv/confogl.cfg +++ b/cfg/cfgogl/acv/confogl.cfg @@ -3,88 +3,114 @@ // Author: Moon // Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= // ReadyUp Cvars -l4d_ready_cfg_name "Advanced Realism Versus v2.0" +l4d_ready_cfg_name "Advanced Versus 2.5" // Confogl Cvars -confogl_addcvar mp_gamemode "versus" -confogl_addcvar z_difficulty "normal" +confogl_addcvar mp_gamemode "Versus" +confogl_addcvar z_difficulty "Impossible" confogl_addcvar confogl_pills_limit 4 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value // ACV 4v4 Cvars -confogl_addcvar z_common_limit 40 +sv_lan 0 +sv_region 0 +sv_cheats 0 +sv_consistency 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_visiblemaxplayers 32 +sv_voiceenable 1 +sv_alltalk 1 +sv_pauseable 0 +mp_roundlimit 5 +motd_enabled 1 +confogl_addcvar z_chance 100 +confogl_addcvar z_finale_chance 100 +confogl_addcvar z_ghost_spawn_in_start 1 +confogl_addcvar z_fog_spawn 1 +confogl_addcvar z_ghost_group_spawn 0 +confogl_addcvar z_finale_ghost_player_spawn_on_survivor 0 confogl_addcvar z_ghost_delay_min 20 confogl_addcvar z_ghost_delay_max 20 +confogl_addcvar z_respawn_distance 0 +confogl_addcvar z_respawn_interval 0 +confogl_addcvar z_common_limit 40 +confogl_addcvar z_background_limit 40 confogl_addcvar z_mega_mob_size 60 confogl_addcvar z_mob_spawn_min_size 20 confogl_addcvar z_mob_spawn_max_size 20 +confogl_addcvar z_mob_spawn_min_interval_easy 60 +confogl_addcvar z_mob_spawn_max_interval_easy 120 confogl_addcvar z_mob_spawn_min_interval_normal 60 confogl_addcvar z_mob_spawn_max_interval_normal 120 +confogl_addcvar z_mob_spawn_min_interval_hard 60 +confogl_addcvar z_mob_spawn_max_interval_hard 120 +confogl_addcvar z_mob_spawn_min_interval_expert 60 +confogl_addcvar z_mob_spawn_max_interval_expert 120 confogl_addcvar z_pounce_damage 4 confogl_addcvar z_pounce_damage_interval 0.4 -confogl_addcvar hunter_pz_claw_dmg 7 +confogl_addcvar hunter_pz_claw_dmg 8 confogl_addcvar tongue_drag_damage_amount 4 - confogl_addcvar z_restrict_team_change 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar vs_max_team_switches 2147483647 confogl_addcvar sv_voiceenable 1 confogl_addcvar sv_alltalk 1 -confogl_addcvar sv_accelerate 5.2 -confogl_addcvar sv_friction 3.9 -confogl_addcvar sv_airaccelerate 10 +confogl_addcvar sv_accelerate 5.25 +confogl_addcvar sv_friction 4.125 +confogl_addcvar sv_airaccelerate 15 confogl_addcvar sv_gravity 760 -confogl_addcvar sv_wateraccelerate 10 -confogl_addcvar sv_waterfriction 1.1 -confogl_addcvar sv_noclipaccelerate 6.0 -confogl_addcvar sv_noclipspeed 5.5 -confogl_addcvar sv_noclipfriction 4.5 -confogl_addcvar sv_specaccelerate 6.0 -confogl_addcvar sv_specspeed 5.5 - +confogl_addcvar sv_wateraccelerate 20 +confogl_addcvar sv_waterfriction 0 +confogl_addcvar sv_noclipaccelerate 5 +confogl_addcvar sv_noclipfriction 4 +confogl_addcvar sv_noclipspeed 3 +confogl_addcvar sv_specaccelerate 5 +confogl_addcvar sv_specspeed 3 + +confogl_addcvar sv_vote_creation_timer 0 confogl_addcvar sv_vote_timer_duration 10 -confogl_addcvar sv_vote_command_delay 1.1 +confogl_addcvar sv_vote_command_delay 1.5 confogl_addcvar sv_vote_failure_timer 0 -confogl_addcvar sv_vote_creation_timer 30 -confogl_addcvar sv_vote_plr_map_limit 9999 +confogl_addcvar sv_vote_plr_map_limit 2147483647 confogl_addcvar sv_vote_kick_ban_duration 0 -confogl_addcvar versus_level_restart_delay 1.1 +confogl_addcvar versus_level_restart_delay 2 confogl_addcvar versus_round_restarttimer 10 confogl_addcvar versus_round_restarttimer_finale 10 -confogl_addcvar versus_force_start_time 9999 +confogl_addcvar versus_force_start_time 600 confogl_addcvar sv_gameinstructor_disable 1 -confogl_addcvar versus_marker_num 3 +confogl_addcvar versus_marker_num 0 confogl_addcvar vs_tiebreak_bonus 0 confogl_addcvar vs_survival_bonus 0 confogl_addcvar versus_stats_highlight_interval 4 -confogl_addcvar director_cs_weapon_spawn_chance 0 +confogl_addcvar director_cs_weapon_spawn_chance 0.333333 -confogl_addcvar director_vs_convert_pills 0 -confogl_addcvar director_convert_pills 0 +confogl_addcvar director_convert_pills 1 +confogl_addcvar director_vs_convert_pills 1 confogl_addcvar director_convert_pills_critical_health 0 confogl_addcvar director_convert_pills_to_defib_health 0 -confogl_addcvar z_holiday_gift_drop_chance 0.1 +confogl_addcvar z_holiday_gift_drop_chance 1.0 confogl_addcvar player_throwforce 2500 -confogl_addcvar sv_player_stuck_tolerance 2.5 +confogl_addcvar sv_player_stuck_tolerance 2.0 confogl_addcvar z_door_reopen_interval 0.1 confogl_addcvar z_door_retry_interval 0.1 -confogl_addcvar sb_close_checkpoint_door_interval 9999 -confogl_addcvar z_door_pound_damage 9999 -confogl_addcvar z_breakable_damage 9999 -confogl_addcvar z_pounce_door_damage 9999 +confogl_addcvar sb_close_checkpoint_door_interval 0.5 +confogl_addcvar z_breakable_damage 50 +confogl_addcvar z_door_pound_damage 500 +confogl_addcvar z_pounce_door_damage 1000 -confogl_addcvar z_special_burn_dmg_scale 2.0 -confogl_addcvar z_witch_burn_time 15 +confogl_addcvar z_special_burn_dmg_scale 1 +confogl_addcvar z_witch_burn_time 20 confogl_addcvar tank_burn_duration 60 confogl_addcvar car_alarm_distance 800 @@ -93,198 +119,219 @@ confogl_addcvar car_alarm_duration 10 confogl_addcvar elevator_movedelay 0 -confogl_addcvar cola_bottles_use_range 90 +confogl_addcvar cola_bottles_use_range 100 confogl_addcvar cola_bottles_use_tolerance 0 -confogl_addcvar cola_bottles_use_duration 1.2 +confogl_addcvar cola_bottles_use_duration 1.5 -confogl_addcvar z_spawn_safety_range 0 -confogl_addcvar z_finale_spawn_safety_range 0 -confogl_addcvar z_finale_spawn_mob_safety_range 600 -confogl_addcvar z_finale_spawn_tank_safety_range 600 +confogl_addcvar z_spawn_safety_range 150 +confogl_addcvar z_finale_spawn_safety_range 150 +confogl_addcvar z_finale_spawn_mob_safety_range 300 +confogl_addcvar z_finale_spawn_tank_safety_range 300 confogl_addcvar gascan_use_range 80 -confogl_addcvar gas_can_use_duration 1.6 -confogl_addcvar scavenge_item_respawn_delay 10 -confogl_addcvar gascan_spit_time 1.9 +confogl_addcvar gas_can_use_duration 1.8 +confogl_addcvar scavenge_item_respawn_delay 15 +confogl_addcvar gascan_spit_time 2.4 -confogl_addcvar sv_pz_endgame_vote_period 15 -confogl_addcvar sv_pz_endgame_vote_post_period 1.5 +confogl_addcvar sv_pz_endgame_vote_period 25 +confogl_addcvar sv_pz_endgame_vote_post_period 5 confogl_addcvar sb_min_attention_notice_time 0 -confogl_addcvar survivor_crouch_speed 80 -confogl_addcvar decalfrequency 0.9 +confogl_addcvar sb_orphan_time_to_cover 0 +confogl_addcvar survivor_crouch_speed 75 +confogl_addcvar decalfrequency 1.5 +confogl_addcvar tauntfrequency 0 confogl_addcvar z_round_start_attack_prevention 0 confogl_addcvar sb_pushscale 0.0 confogl_addcvar sv_disable_glow_survivors 1 confogl_addcvar sv_disable_glow_faritems 1 -confogl_addcvar z_gun_range 70 -confogl_addcvar z_gun_swing_interval 0.7 -confogl_addcvar z_gun_swing_duration 0.10 -confogl_addcvar z_gun_swing_vs_min_penalty 9999 -confogl_addcvar z_gun_swing_vs_max_penalty 9999 +confogl_addcvar z_gun_range 80 +confogl_addcvar z_gun_swing_interval 0.666667 +confogl_addcvar z_gun_swing_duration 0.133333 +confogl_addcvar z_gun_swing_vs_min_penalty 2147483647 +confogl_addcvar z_gun_swing_vs_max_penalty 2147483647 confogl_addcvar z_gun_swing_vs_amt_penalty 0 confogl_addcvar z_gun_swing_vs_cooldown 0 confogl_addcvar z_gun_swing_vs_restore_time 0 confogl_addcvar z_gun_survivor_friend_push 1 -confogl_addcvar survivor_team_hit_pitch_max 0 -confogl_addcvar survivor_team_hit_pitch_min -5 -confogl_addcvar survivor_team_hit_yaw_max 0 -confogl_addcvar survivor_team_hit_yaw_min 0 +confogl_addcvar survivor_team_hit_pitch_min -10 +confogl_addcvar survivor_team_hit_pitch_max 10 +confogl_addcvar survivor_team_hit_yaw_min -5 +confogl_addcvar survivor_team_hit_yaw_max 5 + +confogl_addcvar l4d2_MITSR_Enabled 1 +confogl_addcvar l4d2_MITSR_Spawn_Type 0 +confogl_addcvar l4d2_MITSR_Random_Amount 0 +confogl_addcvar l4d2_MITSR_MapBase_Amount 0 +confogl_addcvar l4d2_MITSR_BaseballBat 4 +confogl_addcvar l4d2_MITSR_CricketBat 0 +confogl_addcvar l4d2_MITSR_Crowbar 0 +confogl_addcvar l4d2_MITSR_ElecGuitar 0 +confogl_addcvar l4d2_MITSR_FireAxe 0 +confogl_addcvar l4d2_MITSR_FryingPan 0 +confogl_addcvar l4d2_MITSR_GolfClub 0 +confogl_addcvar l4d2_MITSR_Knife 0 +confogl_addcvar l4d2_MITSR_Katana 0 +confogl_addcvar l4d2_MITSR_Machete 0 +confogl_addcvar l4d2_MITSR_Tonfa 0 +confogl_addcvar l4d2_MITSR_PitchFork 0 +confogl_addcvar l4d2_MITSR_Shovel 0 +confogl_addcvar sb_max_team_melee_weapons 4 +confogl_addcvar melee_range 84 -confogl_addcvar ammo_smg_max 550 -confogl_addcvar ammo_shotgun_max 56 +confogl_addcvar ammo_smg_max 850 +confogl_addcvar ammo_shotgun_max 112 confogl_addcvar z_shotgun_bonus_damage_range 300 confogl_addcvar z_shotgun_bonus_damage_multiplier 1.5 confogl_addcvar shotgun_reload_cancel_delay 0 confogl_addcvar z_reload_chatter_nearby_friend_range 800 -confogl_addcvar z_reload_chatter_recent_enemy 2.0 -confogl_addcvar z_reload_chatter_shotgun_ammo_threshold 8 +confogl_addcvar z_reload_chatter_recent_enemy 2 +confogl_addcvar z_reload_chatter_shotgun_ammo_threshold 10 confogl_addcvar z_reload_chatter_shotgun_interval 5 confogl_addcvar z_non_head_damage_factor_normal 1.0 -confogl_addcvar sb_max_team_melee_weapons 4 -confogl_addcvar melee_range 80 - confogl_addcvar survivor_friendly_fire_factor_normal 0.2 confogl_addcvar survivor_ff_avoidance_pitch 0 confogl_addcvar survivor_ff_avoidance_yaw 0 -confogl_addcvar inferno_flame_lifetime 8 +confogl_addcvar inferno_flame_lifetime 15 confogl_addcvar inferno_damage 50 -confogl_addcvar survivor_burn_factor_normal 0.3 +confogl_addcvar survivor_burn_factor_normal 0.2 confogl_addcvar inferno_friendly_fire_duration 4 -confogl_addcvar pipe_bomb_timer_duration 6 +confogl_addcvar pipe_bomb_timer_duration 7.5 +confogl_addcvar pipe_bomb_beep_interval_delta 0.02 confogl_addcvar pipe_bomb_shake_radius 800 confogl_addcvar pipe_bomb_shake_amplitude 100 confogl_addcvar upgrade_pack_use_duration 1.5 -confogl_addcvar incendiary_ammo_burn_time 2.0 +confogl_addcvar incendiary_ammo_burn_time 3 confogl_addcvar sb_friend_immobilized_reaction_time_vs 0 confogl_addcvar survivor_limp_health 40 -confogl_addcvar survivor_limp_walk_speed 90 -confogl_addcvar survivor_fumes_walk_speed 90 +confogl_addcvar survivor_limp_walk_speed 100 +confogl_addcvar survivor_fumes_walk_speed 100 confogl_addcvar survivor_incap_health 300 -confogl_addcvar survivor_knockdown_roll 0 -confogl_addcvar survivor_incapacitated_roll 0 -confogl_addcvar survivor_incapacitated_eye_height 30 -confogl_addcvar survivor_incapacitated_dizzy_severity 0 -confogl_addcvar survivor_incapacitated_dizzy_timer 0 -confogl_addcvar survivor_incapacitated_accuracy_penalty 0.05 +confogl_addcvar survivor_knockdown_roll -15 +confogl_addcvar survivor_incapacitated_roll 15 +confogl_addcvar survivor_incapacitated_eye_height 24 +confogl_addcvar survivor_incapacitated_dizzy_severity 0.0 +confogl_addcvar survivor_incapacitated_dizzy_timer 5 +confogl_addcvar survivor_incapacitated_accuracy_penalty 0.0 confogl_addcvar survivor_incapacitated_reload_multiplier 1.0 -confogl_addcvar survivor_incap_decay_rate 5 +confogl_addcvar survivor_incap_decay_rate 3 confogl_addcvar survivor_hanging_eye_height 100 -confogl_addcvar player_incap_use_radius 120 -confogl_addcvar sb_revive_friend_distance 150 +confogl_addcvar player_incap_use_radius 100 +confogl_addcvar sb_revive_friend_distance 120 confogl_addcvar survivor_revive_duration 4.5 confogl_addcvar survivor_revive_health 39 -confogl_addcvar survivor_ledge_scales_health 0.6 -confogl_addcvar pain_pills_health_threshold 98 +confogl_addcvar survivor_ledge_scales_health 1 +confogl_addcvar pain_pills_health_threshold 99 confogl_addcvar pain_pills_health_value 50 -confogl_addcvar pain_pills_decay_rate 0.2 +confogl_addcvar pain_pills_decay_rate 0.166667 confogl_addcvar survivor_max_incapacitated_count 2 confogl_addcvar survivor_incap_hopeless_decay_rate 0 confogl_addcvar adrenaline_duration 20 -confogl_addcvar adrenaline_health_buffer 0 -confogl_addcvar adrenaline_run_speed 240 -confogl_addcvar adrenaline_revive_speedup 0.6 -confogl_addcvar adrenaline_backpack_speedup 0.6 +confogl_addcvar adrenaline_health_buffer 30 +confogl_addcvar adrenaline_run_speed 260 +confogl_addcvar adrenaline_revive_speedup 0.5 +confogl_addcvar adrenaline_backpack_speedup 0.5 confogl_addcvar fall_speed_safe 550 -confogl_addcvar fall_speed_fatal 700 -confogl_addcvar survivor_incap_max_fall_damage 300 +confogl_addcvar fall_speed_fatal 750 +confogl_addcvar survivor_incap_max_fall_damage 250 -confogl_addcvar survivor_damage_speed_factor 0.5 -confogl_addcvar z_claw_hit_pitch_max 0 -confogl_addcvar z_claw_hit_pitch_min -5 -confogl_addcvar z_claw_hit_yaw_max 5 -confogl_addcvar z_claw_hit_yaw_min -5 +confogl_addcvar survivor_damage_speed_factor 0.333333 +confogl_addcvar z_claw_hit_pitch_min -10 +confogl_addcvar z_claw_hit_pitch_max 10 +confogl_addcvar z_claw_hit_yaw_min -10 +confogl_addcvar z_claw_hit_yaw_max 10 -confogl_addcvar z_vomit_hit_pitch_max 2.5 -confogl_addcvar z_vomit_hit_pitch_min -2.5 -confogl_addcvar z_vomit_hit_yaw_max 7.5 -confogl_addcvar z_vomit_hit_yaw_min -7.5 +confogl_addcvar z_vomit_hit_pitch_min -10 +confogl_addcvar z_vomit_hit_pitch_max 10 +confogl_addcvar z_vomit_hit_yaw_min -15 +confogl_addcvar z_vomit_hit_yaw_max 15 -confogl_addcvar tongue_victim_accuracy_penalty 0.05 +confogl_addcvar tongue_victim_accuracy_penalty 0.0 confogl_addcvar survivor_hanging_from_tongue_eye_height 60 -confogl_addcvar tongue_release_fatigue_penalty 0 -confogl_addcvar tongue_player_dropping_to_ground_time 0 -confogl_addcvar z_cough_cloud_radius 0 +confogl_addcvar tongue_release_fatigue_penalty 20000 +confogl_addcvar tongue_player_dropping_to_ground_time 0.1 +confogl_addcvar z_cough_cloud_radius 150 confogl_addcvar z_cough_cloud_initial_cough_delay 0 -confogl_addcvar z_cough_cloud_expire 0 +confogl_addcvar z_cough_cloud_expire 3 -confogl_addcvar survivor_pounce_victim_eye_height 50 +confogl_addcvar survivor_pounce_victim_eye_height 30 confogl_addcvar z_pounce_shake_radius 300 -confogl_addcvar z_pounce_shake_amplitude 4 +confogl_addcvar z_pounce_shake_amplitude 6 confogl_addcvar z_pounce_shake_duration 1.5 confogl_addcvar z_tank_footstep_shake_radius 800 -confogl_addcvar z_tank_footstep_shake_amplitude 3 +confogl_addcvar z_tank_footstep_shake_amplitude 5 confogl_addcvar z_tank_footstep_shake_interval 0.1 confogl_addcvar z_tank_footstep_shake_duration 0.1 confogl_addcvar tank_ground_pound_duration 0.1 confogl_addcvar z_common_limit 40 confogl_addcvar z_background_limit 20 -confogl_addcvar z_health 75 +confogl_addcvar z_health 100 confogl_addcvar z_non_head_damage_factor_normal 1.0 confogl_addcvar z_non_head_damage_factor_multiplier 1.0 confogl_addcvar z_hit_from_behind_factor 1.0 -confogl_addcvar z_throttle_hit_interval_normal 0.2 -confogl_addcvar z_pushaway_force 0 +confogl_addcvar z_throttle_hit_interval_normal 0.25 +confogl_addcvar z_pushaway_force 1000 confogl_addcvar z_hit_incap_factor_normal 1.0 confogl_addcvar z_attack_incapacitated_damage 5 confogl_addcvar nav_lying_down_percent 0 confogl_addcvar z_must_wander 1 confogl_addcvar z_brawl_chance 0 -confogl_addcvar z_burning_lifetime 10 -confogl_addcvar z_attack_infected_it_damage 0 -confogl_addcvar z_attack_pz_it_damage 10 +confogl_addcvar z_burning_lifetime 15 +confogl_addcvar z_attack_infected_it_damage 1 +confogl_addcvar z_attack_pz_it_damage 50 confogl_addcvar z_mob_spawn_min_interval_normal 60 confogl_addcvar z_mob_spawn_max_interval_normal 120 -confogl_addcvar z_spawn_mobs_behind_chance 100 +confogl_addcvar z_spawn_mobs_behind_chance 0 confogl_addcvar z_mob_spawn_min_size 20 -confogl_addcvar z_mob_spawn_max_size 20 +confogl_addcvar z_mob_spawn_max_size 40 confogl_addcvar z_mega_mob_size 60 -confogl_addcvar z_mob_spawn_finale_size 20 +confogl_addcvar z_mob_spawn_finale_size 40 -confogl_addcvar sv_infected_ceda_vomitjar_probability 0.0 -confogl_addcvar sv_infected_police_tonfa_probability 0.2 -confogl_addcvar sv_infected_riot_control_tonfa_probability 0.2 -confogl_addcvar z_fallen_max_count 0 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.0625 +confogl_addcvar sv_infected_police_tonfa_probability 0.25 +confogl_addcvar sv_infected_riot_control_tonfa_probability 0.25 +confogl_addcvar z_fallen_max_count 1 confogl_addcvar z_fallen_kill_suppress_time 180 confogl_addcvar sv_fallen_survivor_health_multiplier 2.0 -confogl_addcvar z_ghost_friction 1.7 +confogl_addcvar z_ghost_friction 1.75 confogl_addcvar z_forwardspeed 500 confogl_addcvar z_sidespeed 500 confogl_addcvar z_backspeed 500 -confogl_addcvar z_ghost_speed 460 -confogl_addcvar z_spawn_speed 460 -confogl_addcvar z_walk_speed 120 -confogl_addcvar z_crouch_speed 100 +confogl_addcvar z_ghost_speed 450 +confogl_addcvar z_spawn_speed 450 +confogl_addcvar z_walk_speed 100 +confogl_addcvar z_crouch_speed 80 confogl_addcvar z_safe_spawn_range 0 -confogl_addcvar z_discard_min_range 800 +confogl_addcvar z_discard_min_range 32 confogl_addcvar z_discard_range 1000 confogl_addcvar z_ghost_travel_distance 0 -confogl_addcvar z_ghost_delay_min 20 -confogl_addcvar z_ghost_delay_max 20 -confogl_addcvar z_respawn_interval 30 -confogl_addcvar z_ghost_checkpoint_spawn_interval 20 -confogl_addcvar z_ghost_finale_spawn_interval 20 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +confogl_addcvar z_ghost_delay_minspawn 1 +confogl_addcvar z_respawn_interval 5 +confogl_addcvar z_ghost_checkpoint_spawn_interval 15 +confogl_addcvar z_ghost_finale_spawn_interval 15 confogl_addcvar claw_range 60 -confogl_addcvar claw_range_down 80 -confogl_addcvar claw_swing_duration 0.15 -confogl_addcvar claw_swing_interval 0.9 -confogl_addcvar z_attack_movement_penalty 0.7 -confogl_addcvar z_max_stagger_duration 0.5 +confogl_addcvar claw_range_down 100 +confogl_addcvar claw_swing_interval 0.95 +confogl_addcvar claw_swing_duration 0.166667 +confogl_addcvar z_attack_movement_penalty 0.6 +confogl_addcvar z_max_stagger_duration 0.75 confogl_addcvar vs_incap_bonus 25 confogl_addcvar z_max_survivor_damage 300 @@ -292,15 +339,15 @@ confogl_addcvar z_versus_boomer_limit 1 confogl_addcvar z_female_boomer_spawn_chance 100 confogl_addcvar z_exploding_health 75 confogl_addcvar z_exploding_speed 200 -confogl_addcvar z_vomit_fatigue 2100 -confogl_addcvar z_vomit_velocity 1800 +confogl_addcvar z_vomit_fatigue 2250 +confogl_addcvar z_vomit_velocity 2000 confogl_addcvar z_vomit_interval 20 confogl_addcvar boomer_pz_claw_dmg 8 confogl_addcvar z_exploding_shove_min 3 confogl_addcvar z_exploding_shove_max 4 confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar boomer_exposed_time_tolerance 0 -confogl_addcvar z_exploding_splat 9999 +confogl_addcvar boomer_exposed_time_tolerance 2147483647 +confogl_addcvar z_exploding_splat 0 confogl_addcvar z_splat_survivor_shake_radius 50 confogl_addcvar z_splat_survivor_shake_amplitude 50 confogl_addcvar z_splat_survivor_shake_frequency 200 @@ -314,110 +361,116 @@ confogl_addcvar z_versus_spitter_limit 1 confogl_addcvar z_spitter_health 150 confogl_addcvar z_spitter_speed 240 confogl_addcvar z_spit_range 1000 -confogl_addcvar z_spit_latency 0.15 -confogl_addcvar z_spit_velocity 1200 -confogl_addcvar z_spit_spread_delay 0.0 +confogl_addcvar z_spit_latency 0.25 +confogl_addcvar z_spit_velocity 1000 +confogl_addcvar z_spit_spread_delay 0 confogl_addcvar z_spit_interval 16 confogl_addcvar spitter_pz_claw_dmg 6 confogl_addcvar z_versus_smoker_limit 1 confogl_addcvar z_gas_health 300 confogl_addcvar z_gas_speed 220 -confogl_addcvar tongue_vs_cone_start_tolerance 0.015 +confogl_addcvar tongue_vs_cone_start_tolerance 0.025 confogl_addcvar tongue_range 900 -confogl_addcvar tongue_miss_delay 2.1 -confogl_addcvar tongue_fly_speed 1300 -confogl_addcvar tongue_los_forgiveness_time 0.8 +confogl_addcvar tongue_miss_delay 2.5 +confogl_addcvar tongue_fly_speed 1100 +confogl_addcvar tongue_los_forgiveness_time 2 confogl_addcvar z_witch_tongue_range 0 confogl_addcvar tongue_allow_voluntary_release 0 confogl_addcvar tongue_health 300 confogl_addcvar tongue_break_from_damage_amount 300 confogl_addcvar tongue_start_pull_delay 0 -confogl_addcvar tongue_victim_acceleration 220 -confogl_addcvar tongue_victim_max_speed 220 -confogl_addcvar tongue_choke_damage_interval 0.4 -confogl_addcvar tongue_drag_damage_amount 3 -confogl_addcvar tongue_bullet_radius 10 -confogl_addcvar tongue_no_progress_choke_time 0 -confogl_addcvar tongue_choke_damage_amount 3 +confogl_addcvar tongue_victim_acceleration 10 +confogl_addcvar tongue_victim_max_speed 200 +confogl_addcvar tongue_choke_damage_interval 0.5 +confogl_addcvar tongue_drag_damage_amount 4 +confogl_addcvar tongue_bullet_radius 8 +confogl_addcvar tongue_no_progress_choke_time 0.25 +confogl_addcvar tongue_choke_damage_amount 4 confogl_addcvar survivor_incap_tongued_decay_rate 15 -confogl_addcvar tongue_vertical_choke_height 9999 +confogl_addcvar tongue_vertical_choke_height 8192 confogl_addcvar tongue_vertical_choke_time_off_ground 0 confogl_addcvar tongue_hit_delay 12 -confogl_addcvar smoker_pz_claw_dmg 7 +confogl_addcvar smoker_pz_claw_dmg 8 confogl_addcvar smoker_tongue_delay 0 -confogl_addcvar smoker_escape_range 0 +confogl_addcvar smoker_escape_range 32768 confogl_addcvar z_versus_hunter_limit 1 confogl_addcvar z_hunter_health 300 confogl_addcvar z_hunter_speed 260 confogl_addcvar z_pounce_crouch_delay 0.75 -confogl_addcvar z_lunge_power 610 -confogl_addcvar z_pounce_silence_range 9999 +confogl_addcvar z_lunge_power 612.5 +confogl_addcvar z_pounce_silence_range 400 +confogl_addcvar versus_shove_hunter_fov 60 +confogl_addcvar versus_shove_hunter_fov_leaping 30 confogl_addcvar z_hunter_max_pounce_bonus_damage 29 -confogl_addcvar z_pounce_damage_delay 0.10 -confogl_addcvar z_pounce_damage_interval 0.4 -confogl_addcvar z_pounce_damage 4 -confogl_addcvar hunter_pz_claw_dmg 7 +confogl_addcvar z_pounce_damage_delay 0.0 +confogl_addcvar z_pounce_damage_interval 0.5 +confogl_addcvar z_pounce_damage 5 +confogl_addcvar hunter_pz_claw_dmg 8 confogl_addcvar hunter_pounce_ready_range 1200 confogl_addcvar hunter_committed_attack_range 600 confogl_addcvar z_max_hunter_pounce_stagger_duration 0.4 confogl_addcvar z_pounce_stumble_radius 200 -confogl_addcvar z_pounce_stumble_force 4 +confogl_addcvar z_pounce_stumble_force 6 confogl_addcvar z_pounce_damage_interrupt 300 -confogl_addcvar hunter_leap_away_give_up_range 9999 +confogl_addcvar hunter_leap_away_give_up_range 32768 confogl_addcvar z_versus_jockey_limit 1 confogl_addcvar z_jockey_health 450 confogl_addcvar z_jockey_speed 280 -confogl_addcvar z_leap_power 420 -confogl_addcvar z_leap_interval 0.4 +confogl_addcvar z_leap_power 425 +confogl_addcvar z_leap_interval 0.45 confogl_addcvar versus_shove_jockey_fov_leaping 30 confogl_addcvar z_jockey_control_min 1.0 confogl_addcvar z_jockey_control_max 1.0 -confogl_addcvar z_jockey_control_variance 0 -confogl_addcvar z_jockey_min_mounted_speed 0.7 +confogl_addcvar z_jockey_control_variance 0.0 +confogl_addcvar z_jockey_min_mounted_speed 0.6 confogl_addcvar z_jockey_ride_damage_delay 0.0 -confogl_addcvar z_jockey_ride_damage_interval 0.3 +confogl_addcvar z_jockey_ride_damage_interval 0.333333 confogl_addcvar z_jockey_ride_damage 2 confogl_addcvar jockey_pz_claw_dmg 6 -confogl_addcvar z_leap_interval_post_ride 4.2 +confogl_addcvar z_leap_interval_post_ride 5 confogl_addcvar z_leap_interval_post_incap 16 -confogl_addcvar z_leap_interval_post_ledge_hang 10 +confogl_addcvar z_leap_interval_post_ledge_hang 12 confogl_addcvar z_versus_charger_limit 1 confogl_addcvar z_charger_health 600 confogl_addcvar z_speed 260 -confogl_addcvar z_charge_warmup 0 -confogl_addcvar z_charge_start_speed 510 -confogl_addcvar z_charge_max_speed 510 -confogl_addcvar z_charge_duration 2.2 +confogl_addcvar z_charge_warmup 0.5 +confogl_addcvar z_charge_start_speed 512.5 +confogl_addcvar z_charge_max_speed 512.5 +confogl_addcvar z_charge_duration 2.25 confogl_addcvar z_charge_min_force 600 confogl_addcvar z_charge_max_force 800 -confogl_addcvar z_charge_impact_radius 200 +confogl_addcvar z_charge_impact_radius 150 confogl_addcvar z_charger_pound_dmg 15 confogl_addcvar z_charge_interval 12 confogl_addcvar charger_pz_claw_dmg 8 confogl_addcvar z_charger_allow_shove 0 -confogl_addcvar versus_boss_flow_min_intro 0.15 -confogl_addcvar versus_boss_flow_max_intro 0.75 -confogl_addcvar versus_boss_flow_min 0.15 -confogl_addcvar versus_boss_flow_max 0.75 -confogl_addcvar versus_boss_flow_min_finale 0.30 -confogl_addcvar versus_boss_flow_max_finale 0.75 -confogl_addcvar versus_boss_padding_min 0.15 -confogl_addcvar versus_boss_padding_max 0.45 - confogl_addcvar versus_witch_chance_intro 1.0 confogl_addcvar versus_witch_chance 1.0 confogl_addcvar versus_witch_chance_finale 1.0 confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.15 +confogl_addcvar versus_boss_flow_max 0.75 +confogl_addcvar versus_boss_flow_min_intro 0.20 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_finale 0.25 +confogl_addcvar versus_boss_flow_max_finale 0.85 +confogl_addcvar versus_boss_padding_min 0.10 +confogl_addcvar versus_boss_padding_max 0.20 + confogl_addcvar sv_force_time_of_day 0 confogl_addcvar z_witch_health 1500 confogl_addcvar z_witch_threat_normal_range 600 confogl_addcvar z_witch_threat_hostile_range 800 -confogl_addcvar z_witch_flashlight_range 800 +confogl_addcvar z_witch_flashlight_range 600 confogl_addcvar z_witch_personal_space 400 confogl_addcvar z_witch_anger_rate 0.4 confogl_addcvar z_witch_relax_rate 0.1 @@ -425,55 +478,50 @@ confogl_addcvar z_witch_min_threat_time 0 confogl_addcvar z_witch_max_threat_time 0 confogl_addcvar z_witch_speed 300 confogl_addcvar z_witch_speed_inured 300 -confogl_addcvar z_witch_attack_range 70 +confogl_addcvar z_witch_attack_range 60 confogl_addcvar z_witch_always_kills 0 +confogl_addcvar z_witch_damage 100 confogl_addcvar z_witch_damage_per_kill_hit 25 -confogl_addcvar z_witch_min_retreat_range 0 -confogl_addcvar z_witch_max_retreat_range 0 -confogl_addcvar z_witch_retreat_min_duration 0 -confogl_addcvar z_witch_retreat_exit_range 0 -confogl_addcvar z_witch_retreat_exit_hidden_duration 0 +confogl_addcvar z_witch_min_retreat_range 1000 +confogl_addcvar z_witch_max_retreat_range 2000 +confogl_addcvar z_witch_retreat_min_duration 5 +confogl_addcvar z_witch_retreat_exit_range 1000 +confogl_addcvar z_witch_retreat_exit_hidden_duration 5 -confogl_addcvar versus_tank_chance_intro 1.0 -confogl_addcvar versus_tank_chance 1.0 -confogl_addcvar versus_tank_chance_finale 1.0 -confogl_addcvar versus_tank_flow_team_variation 0.0 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar director_tank_lottery_entry_time 0.1 -confogl_addcvar director_tank_lottery_selection_time 2.5 +confogl_addcvar director_tank_lottery_selection_time 3 confogl_addcvar z_tank_health 4000 confogl_addcvar z_tank_speed_vs 200 -confogl_addcvar z_tank_walk_speed 130 +confogl_addcvar z_tank_walk_speed 120 confogl_addcvar z_tank_damage_slow_min_range 0 confogl_addcvar z_tank_damage_slow_max_range 0 -confogl_addcvar tank_windup_time 0.45 -confogl_addcvar tank_swing_duration 0.20 +confogl_addcvar tank_windup_time 0.466667 +confogl_addcvar tank_swing_duration 0.166667 confogl_addcvar tank_swing_range 60 -confogl_addcvar tank_swing_interval 1.4 +confogl_addcvar tank_swing_interval 1.45 confogl_addcvar z_tank_throw_health 50 -confogl_addcvar z_tank_throw_force 820 +confogl_addcvar z_tank_throw_force 825 confogl_addcvar z_tank_rock_radius 80 -confogl_addcvar z_tank_throw_interval 4.4 -confogl_addcvar tank_swing_physics_prop_force 3.2 +confogl_addcvar z_tank_throw_interval 4.5 +confogl_addcvar tank_swing_physics_prop_force 3.0 confogl_addcvar z_frustration_spawn_delay 15 confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar z_frustration_lifetime 15 -confogl_addcvar z_frustration_blink_percent 0.5 -confogl_addcvar z_frustration_blink_rate 20 -confogl_addcvar vs_tank_damage 20 +confogl_addcvar vs_tank_damage 25 confogl_addcvar vs_tank_rock_damage 25 -confogl_addcvar tank_throw_min_interval 4.4 -confogl_addcvar z_tank_grenade_roll 0 -confogl_addcvar z_tanks_block_molotovs 0 -confogl_addcvar tank_stuck_time_choose_new_target 0 -confogl_addcvar tank_stuck_time_suicide 9999 -confogl_addcvar tank_visibility_tolerance_suicide 9999 - -confogl_addcvar sm_readyup_lerp_changes 1 +confogl_addcvar tank_throw_min_interval 4 +confogl_addcvar z_tank_grenade_roll -15 +confogl_addcvar z_tanks_block_molotovs 1 +confogl_addcvar tank_stuck_time_choose_new_target 0.1 +confogl_addcvar tank_stuck_time_suicide 2147483647 +confogl_addcvar tank_visibility_tolerance_suicide 2147483647 + +confogl_addcvar sm_readyup_lerp_changes 20 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_allowed_lerp_changes 5 -confogl_addcvar sm_min_lerp 0.00 -confogl_addcvar sm_max_lerp 0.10 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 confogl_addcvar l4d_ready_enabled 1 confogl_addcvar l4d_ready_survivor_freeze 0 @@ -495,9 +543,9 @@ confogl_addcvar l4d2_MITSR_Katana 4 confogl_addcvar l4d2_MITSR_Machete 4 confogl_addcvar l4d2_MITSR_Tonfa 4 -confogl_addcvar l4d2_reload_speed_uzi 2.2 -confogl_addcvar l4d2_reload_speed_silenced_smg 2.0 -confogl_addcvar l4d2_reload_speed_smg_mp5 2.4 +confogl_addcvar l4d2_reload_speed_uzi 2.4 +confogl_addcvar l4d2_reload_speed_silenced_smg 2.2 +confogl_addcvar l4d2_reload_speed_smg_mp5 2.6 confogl_addcvar l4d2_shotgun_ff_min 2 confogl_addcvar l4d2_shotgun_ff_max 10 @@ -510,7 +558,7 @@ confogl_addcvar l4d_pills_hot_total 0 confogl_addcvar l4d_no_cans 0 confogl_addcvar l4d_no_propane 0 confogl_addcvar l4d_no_oxygen 0 -confogl_addcvar l4d_no_fireworks 1 +confogl_addcvar l4d_no_fireworks 0 confogl_addcvar l4d2_antibaiter_delay 10 confogl_addcvar l4d2_antibaiter_horde_timer 20 @@ -526,15 +574,15 @@ confogl_addcvar l4d2_spit_max_ticks 25 confogl_addcvar l4d2_spit_dmg 2 confogl_addcvar l4d2_spit_alternate_dmg 3 -confogl_addcvar tongue_drag_first_damage_interval 0.10 -confogl_addcvar tongue_drag_first_damage 3 -confogl_addcvar l4d2_tongue_delay_survivor 4.0 +confogl_addcvar tongue_drag_first_damage_interval 0.0 +confogl_addcvar tongue_drag_first_damage 4 +confogl_addcvar l4d2_tongue_delay_survivor 4 confogl_addcvar l4d2_m2_smoker_penalty 1 confogl_addcvar sm_unsilentjockey_enabled 1 confogl_addcvar sm_unsilentjockey_always 1 confogl_addcvar sm_unsilentjockey_time 0.1 -confogl_addcvar sm_unsilentjockey_interval 2.0 +confogl_addcvar sm_unsilentjockey_interval 2 confogl_addcvar l4d2_m2_jockey_penalty 1 confogl_addcvar z_leap_interval_post_ledge_hang 12 @@ -545,15 +593,15 @@ confogl_addcvar charger_dmg_impact 10 confogl_addcvar charger_dmg_incapped 30 confogl_addcvar charger_dmg_firstpunch 8 confogl_addcvar charger_dmg_cappedvictim 10 -confogl_addcvar melee_damage_charger 250 +confogl_addcvar melee_damage_charger 400 -confogl_addcvar gfc_ff_min_time 0.0 +confogl_addcvar gfc_ff_min_time 1.0 confogl_addcvar gfc_spit_extra_time 0.5 -confogl_addcvar gfc_common_extra_time 0.0 +confogl_addcvar gfc_common_extra_time 0.5 confogl_addcvar gfc_jockey_duration 0.0 confogl_addcvar gfc_smoker_duration 0.0 -confogl_addcvar gfc_hunter_duration 1.5 -confogl_addcvar gfc_charger_duration 2.0 +confogl_addcvar gfc_hunter_duration 1.0 +confogl_addcvar gfc_charger_duration 1.5 confogl_addcvar l4d_no_bash_kills 1 confogl_addcvar l4d2_slowdown_gunfire_si 0 @@ -563,7 +611,7 @@ confogl_addcvar infected_fire_immunity 0 confogl_addcvar sm_witch_can_spawn 1 confogl_addcvar sm_tank_can_spawn 1 -confogl_addcvar l4d_global_percent 0 +confogl_addcvar l4d_global_percent 1 confogl_addcvar l4d_witch_percent 1 confogl_addcvar l4d_tank_percent 1 confogl_addcvar l4d_boss_vote 1 @@ -583,11 +631,11 @@ confogl_addcvar l4d2_infected_ff_allow_tank 1 confogl_addcvar collision_tankrock_common 1 confogl_addcvar collision_smoker_common 0 confogl_addcvar l4d2_rock_jockey_dismount 0 -confogl_addcvar l4d2_tongue_delay_tank 8.0 +confogl_addcvar l4d2_tongue_delay_tank 8 confogl_addcvar l4d2_slowdown_water_tank 0 confogl_addcvar l4d2_slowdown_water_survivors -1 -confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 200 confogl_addcvar simple_antibhop_enable 1 confogl_addcvar bhop_allow_survivor 0 @@ -613,11 +661,11 @@ confogl_addcvar l4d_equalise_alarm_start_disabled 1 confogl_addcvar l4d2_car_alarm_settings 3 confogl_addcvar l4d_tank_props_glow 1 -confogl_addcvar l4d2_tank_prop_glow_range 4000 -confogl_addcvar l4d2_tank_prop_glow_range_min 200 +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 confogl_addcvar l4d2_tank_prop_glow_only 0 confogl_addcvar l4d2_tank_prop_glow_spectators 1 -confogl_addcvar l4d2_tank_prop_dissapear_time 10.0 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 confogl_addcvar l4d_obey_boss_spawn_cvars 1 confogl_addcvar l4d_obey_boss_spawn_except_static 1 @@ -626,7 +674,7 @@ confogl_addcvar confogl_boss_tank 1 confogl_addcvar confogl_boss_unprohibit 0 confogl_addcvar confogl_lock_boss_spawns 1 confogl_addcvar confogl_remove_escape_tank 1 -confogl_addcvar confogl_disable_tank_hordes 0 +confogl_addcvar confogl_disable_tank_hordes 1 confogl_addcvar confogl_block_punch_rock 0 confogl_addcvar confogl_blockinfectedbots 0 confogl_addcvar confogl_reduce_finalespawnrange 1 @@ -657,7 +705,7 @@ confogl_addcvar confogl_limit_tier2 0 confogl_addcvar confogl_limit_tier2_saferoom 0 // ACV Shared Cvars -exec cfgogl/acv/shared_cvars.cfg +wait 1000;exec cfgogl/acv/shared_cvars.cfg // Config Cvars -exec cfgogl/acv/acv.cfg +wait 2000;exec cfgogl/acv/acv.cfg diff --git a/cfg/cfgogl/acv/confogl_off.cfg b/cfg/cfgogl/acv/confogl_off.cfg index 176f2281..26c2597c 100644 --- a/cfg/cfgogl/acv/confogl_off.cfg +++ b/cfg/cfgogl/acv/confogl_off.cfg @@ -1,14 +1,15 @@ // ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= // Disable ReadyUp l4d_ready_enabled 0 +sm_cvar l4d_ready_enabled 0 // Reset Default Common Limit, Static Spawns, and String Count reset_static_maps diff --git a/cfg/cfgogl/acv/confogl_plugins.cfg b/cfg/cfgogl/acv/confogl_plugins.cfg index 8570a84a..afe10d08 100644 --- a/cfg/cfgogl/acv/confogl_plugins.cfg +++ b/cfg/cfgogl/acv/confogl_plugins.cfg @@ -1,9 +1,9 @@ // ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= @@ -25,4 +25,7 @@ sm plugins load optional/l4d2_tongue_timer.smx sm plugins load bizzymod/SpecListener.smx sm plugins load bizzymod/l4d_witch_damage.smx sm plugins load optional/l4d_witch_damage_announce.smx +sm plugins load bizzymod/l4d2_melee_in_the_saferoom.smx +sm plugins load optional/l4d2_melee_in_the_saferoom.smx sm plugins load bizzymod/l4d_gear_transfer.smx +sm plugins load optional/l4d_gear_transfer.smx diff --git a/cfg/cfgogl/acv/mapinfo.txt b/cfg/cfgogl/acv/mapinfo.txt index de759e6d..a559a836 100644 --- a/cfg/cfgogl/acv/mapinfo.txt +++ b/cfg/cfgogl/acv/mapinfo.txt @@ -3,35 +3,35 @@ "c1m1_hotel" { "start_point" "427.606232 5739.467773 2926.982178" - "end_point" "2045.685913 4429.264160 1246.031250" + "end_point" "2045.685913 4429.264160 1246.031250" "start_dist" "100.000000" "start_extra_dist" "0.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "tank_z_fix" "1" "max_tank_z" "1200.000000" "tank_warpto" "2168.357666 5803.427734 2464.031250" "max_distance" "400" "tank_ban_flow" { - "Before elevator exit" + "Early spawns" { - "min" "38" + "min" "0" "max" "79" } - "Early spawns" + "Before elevator exit" { - "min" "0" - "max" "24" + "min" "38" + "max" "79" } } } "c1m2_streets" { "start_point" "2395.007813 4964.173340 522.224670" - "end_point" "-7688.886230 -4694.720703 463.251282" + "end_point" "-7688.886230 -4694.720703 463.251282" "start_dist" "50.000000" "start_extra_dist" "250.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "700" "horde_limit" "150" "tank_ban_flow" @@ -46,10 +46,10 @@ "c1m3_mall" { "start_point" "6520.577148 -1477.425659 103.001579" - "end_point" "-2182.585938 -4630.097168 615.226501" + "end_point" "-2182.585938 -4630.097168 615.226501" "start_dist" "50.000000" "start_extra_dist" "150.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "700" "horde_limit" "200" "tank_ban_flow" @@ -72,24 +72,20 @@ "c1m4_atrium" { "start_point" "-2207.119141 -4694.244141 615.226318" - "end_point" "-4467.291016 -4060.759277 88.031250" + "end_point" "-4467.291016 -4060.759277 88.031250" "start_dist" "50.000000" "start_extra_dist" "150.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "600" - "ItemLimits" - { - "pain_pills" "0" - } "horde_tank" "1" } "c2m1_highway" { "start_point" "10678.891602 7860.774414 -496.546509" - "end_point" "-820.387512 -2532.216064 -1004.767700" + "end_point" "-820.387512 -2532.216064 -1004.767700" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "500" "witch_ban_flow" { @@ -103,10 +99,10 @@ "c2m2_fairgrounds" { "start_point" "1718.106934 2897.631592 83.232269" - "end_point" "-4797.248047 -5396.388184 15.232277" + "end_point" "-4797.248047 -5396.388184 15.232277" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "600" "horde_limit" "150" "tank_ban_flow" @@ -134,10 +130,10 @@ "c2m3_coaster" { "start_point" "4106.046387 2151.258301 15.232275" - "end_point" "-5442.394043 1928.548462 66.031250" + "end_point" "-5442.394043 1928.548462 66.031250" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "800" "horde_limit" "300" "tank_ban_flow" @@ -160,10 +156,10 @@ "c2m4_barns" { "start_point" "2918.205078 3847.128174 -125.968750" - "end_point" "-772.226257 2221.974365 -193.969513" + "end_point" "-772.226257 2221.974365 -193.969513" "start_dist" "100.000000" "start_extra_dist" "150.000000" - "end_dist" "250.000000" + "end_dist" "250.000000" "max_distance" "600" "horde_limit" "200" "witch_ban_flow" @@ -178,23 +174,19 @@ "c2m5_concert" { "start_point" "-648.774109 2223.472168 -176.998734" - "end_point" "-2209.094238 3460.875244 -99.968750" + "end_point" "-2209.094238 3460.875244 -99.968750" "start_dist" "100.000000" "start_extra_dist" "300.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "700" - "ItemLimits" - { - "pain_pills" "0" - } } "c3m1_plankcountry" { "start_point" "-12468.835938 10519.109375 319.434265" - "end_point" "-2710.059326 483.648499 131.811050" + "end_point" "-2710.059326 483.648499 131.811050" "start_dist" "100.000000" "start_extra_dist" "0.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "500" "tank_ban_flow" { @@ -208,41 +200,37 @@ "c3m2_swamp" { "start_point" "-8213.404297 7624.283203 88.810654" - "end_point" "7550.402344 -1061.843262 215.226273" + "end_point" "7550.402344 -1061.843262 215.226273" "start_dist" "100.000000" "start_extra_dist" "200.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "600" } "c3m3_shantytown" { "start_point" "-5705.945801 2006.518921 215.226288" - "end_point" "5025.185059 -3697.070557 427.435242" + "end_point" "5025.185059 -3697.070557 427.435242" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "600" } "c3m4_plantation" { "start_point" "-5023.209473 -1574.434448 -20.564751" - "end_point" "1056.862549 806.977112 208.031250" + "end_point" "1056.862549 806.977112 208.031250" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "800" - "ItemLimits" - { - "pain_pills" "0" - } } "c4m1_milltown_a" { "start_point" "-6008.747070 7381.954590 192.909424" - "end_point" "3993.458008 -1598.952271 294.281250" + "end_point" "3993.458008 -1598.952271 294.281250" "start_dist" "100.000000" "start_extra_dist" "500.000000" - "end_dist" "275.000000" + "end_dist" "275.000000" "max_distance" "400" "tank_ban_flow" { @@ -256,10 +244,10 @@ "c4m2_sugarmill_a" { "start_point" "3780.781250 -1684.738770 306.723663" - "end_point" "-1790.401970 -13713.732422 174.281250" + "end_point" "-1790.401970 -13713.732422 174.281250" "start_dist" "100.000000" "start_extra_dist" "250.000000" - "end_dist" "150.000000" + "end_dist" "150.000000" "max_distance" "600" "tank_ban_flow" { @@ -281,10 +269,10 @@ "c4m3_sugarmill_b" { "start_point" "-1804.696167 -13811.134766 186.994522" - "end_point" "3729.135010 -1578.550781 294.281250" + "end_point" "3729.135010 -1578.550781 294.281250" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "300.000000" + "end_dist" "300.000000" "max_distance" "600" "tank_ban_flow" { @@ -306,10 +294,10 @@ "c4m4_milltown_b" { "start_point" "4037.589355 -1547.009277 306.473663" - "end_point" "-3241.400879 7849.852539 182.031250" + "end_point" "-3241.400879 7849.852539 182.031250" "start_dist" "50.000000" "start_extra_dist" "275.000000" - "end_dist" "200.000000" + "end_dist" "200.000000" "max_distance" "400" "witch_ban_flow" { @@ -323,23 +311,19 @@ "c4m5_milltown_escape" { "start_point" "-3378.816895 7770.011230 182.031250" - "end_point" "-6006.484375 7381.770508 192.909409" + "end_point" "-6006.484375 7381.770508 192.909409" "start_dist" "50.000000" "start_extra_dist" "350.000000" - "end_dist" "100.000000" + "end_dist" "100.000000" "max_distance" "600" - "ItemLimits" - { - "pain_pills" "0" - } } "c5m1_waterfront" { "start_point" "735.921692 730.683960 -437.968750" - "end_point" "-4386.030273 -1280.031250 -281.968750" + "end_point" "-4386.030273 -1280.031250 -281.968750" "start_dist" "75.000000" "start_extra_dist" "0.000000" - "end_dist" "250.000000" + "end_dist" "250.000000" "max_distance" "300" "tank_ban_flow" { @@ -353,10 +337,10 @@ "c5m2_park" { "start_point" "-4331.246094 -1133.826660 -299.968750" - "end_point" "-9787.088867 -8134.997559 -193.968750" + "end_point" "-9787.088867 -8134.997559 -193.968750" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "250.000000" + "end_dist" "250.000000" "max_distance" "600" "horde_limit" "250" "tank_ban_flow" @@ -371,10 +355,10 @@ "c5m3_cemetery" { "start_point" "6292.211426 8216.120117 79.232285" - "end_point" "7424.436035 -9671.151367 183.226273" + "end_point" "7424.436035 -9671.151367 183.226273" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "250.000000" + "end_dist" "250.000000" "max_distance" "700" "tank_ban_flow" { @@ -401,10 +385,10 @@ "c5m4_quarter" { "start_point" "-3065.877686 4776.646484 147.226166" - "end_point" "1475.194214 -3489.227295 297.716370" + "end_point" "1475.194214 -3489.227295 297.716370" "start_dist" "50.000000" "start_extra_dist" "200.000000" - "end_dist" "350.000000" + "end_dist" "350.000000" "max_distance" "700" "tank_ban_flow" { @@ -420,17 +404,24 @@ "start_point" "-11921.506836 5976.045410 547.226318" "start_dist" "70.112122" "start_extra_dist" "264.157257" - "end_point" "3001.944092 6272.879395 494.284149" - "end_dist" "130.807541" + "end_point" "3001.944092 6272.879395 494.284149" + "end_dist" "130.807541" "max_distance" "600" + { + "Broken flow" + { + "min" "16" + "max" "100" + } + } } "c6m1_riverbank" { "start_point" "930.36016 3843.36181 94.029960" - "end_point" "-4140.35009 1483.70129 765.001281" + "end_point" "-4140.35009 1483.70129 765.001281" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "50.000000" + "end_dist" "50.000000" "max_distance" "500" "tank_ban_flow" { @@ -444,10 +435,10 @@ "c6m2_bedlam" { "start_point" "3062.55200 -1122.89624 -258.998718" - "end_point" "11405.46093 4912.65869 -590.962768" + "end_point" "11405.46093 4912.65869 -590.962768" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "50.000000" + "end_dist" "50.000000" "max_distance" "900" "horde_limit" "200" "tank_ban_flow" @@ -467,32 +458,28 @@ "c6m3_port" { "start_point" "-2259.96948 -606.96893 -214.962753" - "end_point" "-283.08215 -823.07836 37.001598" + "end_point" "-283.08215 -823.07836 37.001598" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "50.000000" + "end_dist" "50.000000" "max_distance" "800" - "ItemLimits" - { - "pain_pills" "0" - } } "c7m1_docks" { "start_point" "13552.489258 2207.394043 5.524101" - "end_point" "1975.615234 2353.251465 270.336121" + "end_point" "1975.615234 2353.251465 270.336121" "start_dist" "75.000000" "start_extra_dist" "0.000000" - "end_dist" "50.000000" + "end_dist" "50.000000" "max_distance" "700" } "c7m2_barge" { "start_point" "10743.761719 2343.008789 270.807251" - "end_point" "-11288.833008 3128.797363 270.430115" + "end_point" "-11288.833008 3128.797363 270.430115" "start_dist" "75.000000" "start_extra_dist" "0.000000" - "end_dist" "50.000000" + "end_dist" "50.000000" "max_distance" "800" "tank_ban_flow" { @@ -506,23 +493,19 @@ "c7m3_port" { "start_point" "960.031250 3247.345459 262.430115" - "end_point" "-272.031250 -834.873291 97.001595" + "end_point" "-272.031250 -834.873291 97.001595" "start_dist" "75.000000" "start_extra_dist" "0.000000" - "end_dist" "75.000000" + "end_dist" "75.000000" "max_distance" "500" - "ItemLimits" - { - "pain_pills" "0" - } } "c8m1_apartment" { "start_point" "1888.341675 917.455017 476.342407" "start_dist" "267.108032" "start_extra_dist" "605.247620" - "end_point" "2883.220703 2962.613037 -204.742737" - "end_dist" "336.442200" + "end_point" "2883.220703 2962.613037 -204.742737" + "end_dist" "336.442200" "max_distance" "400" } "c8m2_subway" @@ -530,17 +513,17 @@ "start_point" "2882.260986 2977.796387 51.257275" "start_dist" "164.919525" "start_extra_dist" "323.406708" - "end_point" "11008.688477 4657.793945 49.151138" - "end_dist" "180.738693" + "end_point" "11008.688477 4657.793945 49.151138" + "end_dist" "180.738693" "max_distance" "500" } "c8m3_sewers" { "start_point" "10936.943359 4650.031250 90.761696" - "end_point" "12288.031250 12235.729492 78.031250" + "end_point" "12288.031250 12235.729492 78.031250" "start_dist" "50.000000" "start_extra_dist" "0.000000" - "end_dist" "75.000000" + "end_dist" "75.000000" "max_distance" "700" "tank_ban_flow" { @@ -574,8 +557,8 @@ "start_point" "12297.031250 12247.379883 16.031250" "start_dist" "165.464249" "start_extra_dist" "409.338440" - "end_point" "11459.563477 15087.968750 5565.974609" - "end_dist" "332.486664" + "end_point" "11459.563477 15087.968750 5565.974609" + "end_dist" "332.486664" "tank_z_fix" "1" "max_tank_z" "4000.000000" "tank_warpto" "13439 15017 450" @@ -597,10 +580,6 @@ "end_point" "5675.121582 8443.446289 6142.031250" "end_dist" "100.000000" "max_distance" "700" - "ItemLimits" - { - "pain_pills" "0" - } "tank_ban_flow" { "Early spawn" @@ -615,8 +594,8 @@ "start_point" "-9862.552734 -8714.114258 -5.783222" "start_dist" "138.332581" "start_extra_dist" "1502.202637" - "end_point" "153.076584 -1426.919556 -139.968750" - "end_dist" "210.283035" + "end_point" "153.076584 -1426.919556 -139.968750" + "end_dist" "210.283035" "max_distance" "700" } "c9m2_lots" @@ -624,21 +603,17 @@ "start_point" "150.086899 -1372.455322 -139.968750" "start_dist" "90.983040" "start_extra_dist" "301.270020" - "end_point" "7095.529297 6474.146484 45.645901" - "end_dist" "1387.183838" + "end_point" "7095.529297 6474.146484 45.645901" + "end_dist" "1387.183838" "max_distance" "900" - "ItemLimits" - { - "pain_pills" "0" - } } "c10m1_caves" { "start_point" "-11747.106445 -14618.416016 -197.777359" "start_dist" "86.396400" "start_extra_dist" "587.266541" - "end_point" "-10784.895508 -4906.771973 318.224670" - "end_dist" "403.989594" + "end_point" "-10784.895508 -4906.771973 318.224670" + "end_dist" "403.989594" "max_distance" "400" "witch_ban_flow" { @@ -654,8 +629,8 @@ "start_point" "-11079.036133 -8946.167969 -562.025330" "start_dist" "78.842514" "start_extra_dist" "399.942505" - "end_point" "-8339.282227 -5592.915039 0.031253" - "end_dist" "322.081451" + "end_point" "-8339.282227 -5592.915039 0.031253" + "end_dist" "322.081451" "max_distance" "500" } "c10m3_ranchhouse" @@ -663,8 +638,8 @@ "start_point" "-8334.761719 -5592.995117 6.031253" "start_dist" "82.983238" "start_extra_dist" "327.413300" - "end_point" "-2673.776611 107.736259 316.727081" - "end_dist" "327.768036" + "end_point" "-2673.776611 107.736259 316.727081" + "end_dist" "327.768036" "max_distance" "400" } "c10m4_mainstreet" @@ -672,8 +647,8 @@ "start_point" "-3155.918945 107.783440 328.031250" "start_dist" "99.209229" "start_extra_dist" "307.155029" - "end_point" "1309.379883 -5479.276367 -26.821182" - "end_dist" "324.451355" + "end_point" "1309.379883 -5479.276367 -26.821182" + "end_dist" "324.451355" "max_distance" "600" "horde_limit" "150" "tank_ban_flow" @@ -690,21 +665,17 @@ "start_point" "2019.751953 4538.839844 -34.821182" "start_dist" "76.933571" "start_extra_dist" "317.183868" - "end_point" "3805.135254 -4660.525391 -151.968750" - "end_dist" "795.922058" + "end_point" "3805.135254 -4660.525391 -151.968750" + "end_dist" "795.922058" "max_distance" "800" - "ItemLimits" - { - "pain_pills" "0" - } } "c11m1_greenhouse" { "start_point" "6753.771484 -534.288940 804.342407" "start_dist" "65.117729" "start_extra_dist" "577.638000" - "end_point" "5274.120605 2715.548584 88.261955" - "end_dist" "314.896759" + "end_point" "5274.120605 2715.548584 88.261955" + "end_dist" "314.896759" "max_distance" "300" } "c11m2_offices" @@ -712,8 +683,8 @@ "start_point" "5295.039062 2718.428467 88.261955" "start_dist" "60.237633" "start_extra_dist" "333.408081" - "end_point" "7934.695801 6070.557617 48.318222" - "end_dist" "310.929138" + "end_point" "7934.695801 6070.557617 48.318222" + "end_dist" "310.929138" "max_distance" "600" } "c11m3_garage" @@ -721,8 +692,8 @@ "start_point" "-5393.304199 -3161.442627 48.318222" "start_dist" "56.400623" "start_extra_dist" "304.760986" - "end_point" "-343.016815 3583.830566 332.031250" - "end_dist" "187.318344" + "end_point" "-343.016815 3583.830566 332.031250" + "end_dist" "187.318344" "max_distance" "700" } "c11m4_terminal" @@ -730,8 +701,8 @@ "start_point" "-326.099091 3588.496338 277.327820" "start_dist" "63.233967" "start_extra_dist" "206.287918" - "end_point" "3276.041992 4504.324707 181.974670" - "end_dist" "343.399078" + "end_point" "3276.041992 4504.324707 181.974670" + "end_dist" "343.399078" "max_distance" "600" "witch_ban_flow" { @@ -747,21 +718,17 @@ "start_point" "-6726.473145 12007.691406 181.974670" "start_dist" "75.086731" "start_extra_dist" "344.831299" - "end_point" "-5196.772949 9229.695312 -191.968750" - "end_dist" "538.437988" + "end_point" "-5196.772949 9229.695312 -191.968750" + "end_dist" "538.437988" "max_distance" "600" - "ItemLimits" - { - "pain_pills" "0" - } } "c12m1_hilltop" { "start_point" "-7888.898926 -14891.244141 337.681976" "start_dist" "88.897858" "start_extra_dist" "753.082764" - "end_point" "-6468.546387 -6767.946777 377.974670" - "end_dist" "275.937225" + "end_point" "-6468.546387 -6767.946777 377.974670" + "end_dist" "275.937225" "max_distance" "300" "tank_ban_flow" { @@ -777,8 +744,8 @@ "start_point" "-6472.856445 -6769.449707 377.974670" "start_dist" "78.032898" "start_extra_dist" "270.500549" - "end_point" "-870.702148 -10408.813477 -63.968750" - "end_dist" "261.087494" + "end_point" "-870.702148 -10408.813477 -63.968750" + "end_dist" "261.087494" "max_distance" "400" } "c12m3_bridge" @@ -786,8 +753,8 @@ "start_point" "-870.702148 -10415.481445 -63.968750" "start_dist" "71.034355" "start_extra_dist" "264.843231" - "end_point" "7754.335938 -11443.834961 440.031250" - "end_dist" "264.020966" + "end_point" "7754.335938 -11443.834961 440.031250" + "end_dist" "264.020966" "horde_limit" "150" "max_distance" "500" "tank_ban_flow" @@ -804,8 +771,8 @@ "start_point" "7755.584961 -11443.834961 440.031250" "start_dist" "85.814095" "start_extra_dist" "264.932068" - "end_point" "10398.775391 -310.353424 2.031253" - "end_dist" "316.505157" + "end_point" "10398.775391 -310.353424 2.031253" + "end_dist" "316.505157" "horde_limit" "150" "max_distance" "500" "tank_ban_flow" @@ -822,13 +789,9 @@ "start_point" "10399.091797 -312.162628 2.031253" "start_dist" "97.089050" "start_extra_dist" "315.198547" - "end_point" "6972.038086 1354.824463 274.312256" - "end_dist" "183.031281" + "end_point" "6972.038086 1354.824463 274.312256" + "end_dist" "183.031281" "max_distance" "800" - "ItemLimits" - { - "pain_pills" "0" - } "tank_ban_flow" { "After one way drop" @@ -843,8 +806,8 @@ "start_point" "-3046.889648 -705.233765 75.031250" "start_dist" "75.765724" "start_extra_dist" "437.938110" - "end_point" "1186.061401 -1247.817627 389.251373" - "end_dist" "604.894531" + "end_point" "1186.061401 -1247.817627 389.251373" + "end_dist" "604.894531" "max_distance" "300" "tank_ban_flow" { @@ -860,8 +823,8 @@ "start_point" "8691.102539 7056.350586 533.251343" "start_dist" "80.806526" "start_extra_dist" "604.901245" - "end_point" "470.932892 8823.397461 -368.968750" - "end_dist" "324.996063" + "end_point" "470.932892 8823.397461 -368.968750" + "end_dist" "324.996063" "max_distance" "600" "horde_limit" "150" "tank_ban_flow" @@ -878,8 +841,8 @@ "start_point" "-4194.461914 -5143.972168 132.031250" "start_dist" "77.191292" "start_extra_dist" "321.877747" - "end_point" "6097.708496 -6337.365234 422.031250" - "end_dist" "356.709808" + "end_point" "6097.708496 -6337.365234 422.031250" + "end_dist" "356.709808" "max_distance" "600" "tank_ban_flow" { @@ -895,8 +858,8 @@ "start_point" "-3374.723633 -9166.667969 396.031250" "start_dist" "84.812645" "start_extra_dist" "349.184357" - "end_point" "-1823.846191 -1815.961670 -250.417389" - "end_dist" "254.989624" + "end_point" "-1823.846191 -1815.961670 -250.417389" + "end_dist" "254.989624" "max_distance" "500" } "c14m1_junkyard" @@ -904,8 +867,8 @@ "start_point" "-4255.190918 -10576.644531 -267.087708" "start_dist" "50.000000" "start_extra_dist" "500.000000" - "end_point" "-2992.162842 10403.122070 -92.863403" - "end_dist" "350.000000" + "end_point" "-2992.162842 10403.122070 -92.863403" + "end_dist" "350.000000" "max_distance" "1000" } "c14m2_lighthouse" @@ -913,13 +876,9 @@ "start_point" "2369.292969 -986.074829 483.136597" "start_dist" "50.000000" "start_extra_dist" "350.000000" - "end_point" "-4318.968750 3638.318115 872.031250" - "end_dist" "500.000000" + "end_point" "-4318.968750 3638.318115 872.031250" + "end_dist" "500.000000" "max_distance" "1000" - "ItemLimits" - { - "pain_pills" "0" - } "tank_ban_flow" { "Early spawns" diff --git a/cfg/cfgogl/acv/shared_cvars.cfg b/cfg/cfgogl/acv/shared_cvars.cfg index 23193c34..5880ebe5 100644 --- a/cfg/cfgogl/acv/shared_cvars.cfg +++ b/cfg/cfgogl/acv/shared_cvars.cfg @@ -1,41 +1,73 @@ // ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= // Server Cvars -sv_pure 2 +sv_steamgroup 38693222 +sv_steamgroup_exclusive 1 +sv_lan 0 +sv_region 0 +sv_cheats 0 +sv_consistency 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_allow_lobby_connect_only 0 +sv_visiblemaxplayers 32 +sv_pauseable 1 +sv_voiceenable 1 sv_alltalk 1 +mp_roundlimit 5 +motd_enabled 1 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 +confogl_addcvar mp_allowspectators 1 +confogl_addcvar director_min_start_players 1 confogl_addcvar sv_cheats 0 -confogl_addcvar sv_consistency 1 -confogl_addcvar sv_pure_kick_clients 1 +confogl_addcvar sv_consistency 0 +confogl_addcvar sv_pure_kick_clients 0 +confogl_addcvar sv_allow_lobby_connect_only 0 +confogl_addcvar sv_pauseable 1 confogl_addcvar sv_voiceenable 1 +confogl_addcvar sv_alltalk 1 confogl_addcvar sv_log_onefile 0 confogl_addcvar sv_logbans 1 confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 -confogl_addcvar versus_marker_num 3 +confogl_addcvar vs_max_team_switches 2147483647 +confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar sv_vote_plr_map_limit 2147483647 +confogl_addcvar versus_force_start_time 0 +confogl_addcvar versus_marker_num 0 +confogl_addcvar vs_survival_bonus 25 +confogl_addcvar vs_incap_bonus 25 +confogl_addcvar vs_defib_penalty 0 +confogl_addcvar vs_tiebreak_bonus 25 +confogl_addcvar sv_noclipduringpause 0 -confogl_addcvar sv_client_min_interp_ratio -1 -confogl_addcvar sv_client_max_interp_ratio -1 -confogl_addcvar sv_minrate 100000 -confogl_addcvar sv_maxrate 100000 -confogl_addcvar sv_minupdaterate 100 -confogl_addcvar sv_maxupdaterate 100 -confogl_addcvar sv_mincmdrate 100 -confogl_addcvar sv_maxcmdrate 100 -confogl_addcvar nb_update_frequency 0.01 +confogl_addcvar sv_client_min_interp_ratio 0 +confogl_addcvar sv_client_max_interp_ratio 10 +confogl_addcvar sv_minrate 72000 +confogl_addcvar sv_maxrate 144000 +confogl_addcvar sv_minupdaterate 60 +confogl_addcvar sv_maxupdaterate 120 +confogl_addcvar sv_mincmdrate 60 +confogl_addcvar sv_maxcmdrate 120 +confogl_addcvar nb_update_frequency 0 +confogl_addcvar nb_update_framelimit 10 +confogl_addcvar nb_update_maxslide 10 // Bandwidth Cvars exec confogl_rates.cfg // ReadyUp Cvars l4d_ready_enabled 1 - +confogl_addcvar l4d_ready_enabled 1 confogl_addcvar l4d_ready_survivor_freeze 0 confogl_addcvar l4d_ready_delay 3 confogl_addcvar l4d_ready_enable_sound 1 @@ -51,14 +83,13 @@ confogl_match_killlobbyres "1" // Sets whet confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested // Confogl Cvars -confogl_addcvar confogl_boss_tank "1" // Tank can't be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player +confogl_addcvar confogl_boss_tank "0" // Tank can't be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even through they normally aren't allowed confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales) confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales confogl_addcvar confogl_disable_tank_hordes "0" // Disables natural hordes while tanks are in play -confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time +confogl_addcvar confogl_block_punch_rock "0" // Block tanks from punching and throwing a rock at the same time confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank) -confogl_addcvar director_allow_infected_bots "0" confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws confogl_addcvar confogl_remove_defib "1" // Remove all defibrillators @@ -87,63 +118,105 @@ confogl_addcvar confogl_limit_tier2 0 confogl_addcvar confogl_limit_tier2_saferoom 0 // Balancing Cvars -confogl_addcvar director_vs_convert_pills 0 -confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix -confogl_addcvar z_fallen_max_count 0 -confogl_addcvar sv_infected_ceda_vomitjar_probability 0.0 +confogl_addcvar director_molotov_density 2 +confogl_addcvar director_pipe_bomb_density 2 +confogl_addcvar director_vomitjar_density 2 +confogl_addcvar director_upgradepack_density 2 +confogl_addcvar director_defibrillator_density 0 +confogl_addcvar director_pain_pill_density 2 // Pain pill spawn density per 100 square yards. +confogl_addcvar director_adrenaline_density 2 // Adrenaline shot spawn density per 100 square yards. +confogl_addcvar director_gas_can_density 4 // Gas can spawn density per 100 square yards. +confogl_addcvar director_propane_tank_density 4 // Propane tank spawn density per 100 square yards. +confogl_addcvar director_oxygen_tank_density 4 // Oxygen tank spawn density per 100 square yards. +confogl_addcvar director_vs_convert_pills 1 +confogl_addcvar z_finale_spawn_safety_range 300 +confogl_addcvar z_fallen_max_count 1 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.05 confogl_addcvar sv_force_time_of_day 0 -confogl_addcvar z_brawl_chance 0.0 +confogl_addcvar z_brawl_chance 10 confogl_addcvar z_female_boomer_spawn_chance 100 confogl_addcvar nav_lying_down_percent 0 confogl_addcvar z_must_wander 1 // Competitive Cvars -confogl_addcvar z_pushaway_force 0.0 -confogl_addcvar z_gun_swing_vs_min_penalty 9999 -confogl_addcvar z_gun_swing_vs_max_penalty 9999 +confogl_addcvar z_push_force 0 +confogl_addcvar z_pushaway_force 0 +confogl_addcvar z_push_mass_max 0 +confogl_addcvar z_carry_max_mass 0 +confogl_addcvar z_avoidpower 0 +confogl_addcvar z_avoidforce 0 +confogl_addcvar z_avoid_min_range 20 +confogl_addcvar z_avoid_max_range 40 +confogl_addcvar z_max_neighbor_range 40 +confogl_addcvar z_gun_swing_vs_min_penalty 2147483647 +confogl_addcvar z_gun_swing_vs_max_penalty 2147483647 +confogl_addcvar z_leap_interval_post_ride 5 confogl_addcvar z_leap_interval_post_incap 16 confogl_addcvar z_jockey_control_variance 0.0 confogl_addcvar z_exploding_shove_min 3 -confogl_addcvar z_exploding_shove_max 4 -confogl_addcvar gascan_spit_time 1.9 +confogl_addcvar z_exploding_shove_max 3 +confogl_addcvar z_exploding_shove_interval 4 +confogl_addcvar action_progress_reset_interval 0.666667 +confogl_addcvar gas_can_use_duration 1.75 +confogl_addcvar gascan_spit_time 2.5 +confogl_addcvar scavenge_item_respawn_delay 14 confogl_addcvar z_vomit_interval 20 -confogl_addcvar sv_gameinstructor_disable 1 -confogl_addcvar z_cough_cloud_radius 0 +confogl_addcvar sv_gameinstructor_disable 0 +confogl_addcvar z_cough_cloud_radius 150 confogl_addcvar z_spit_interval 16 confogl_addcvar tongue_hit_delay 12 -confogl_addcvar z_pounce_silence_range 9999 +confogl_addcvar z_pounce_silence_range 400 +confogl_addcvar versus_shove_hunter_fov 60 +confogl_addcvar versus_shove_hunter_fov_leaping 30 confogl_addcvar versus_shove_jockey_fov_leaping 30 -confogl_addcvar z_holiday_gift_drop_chance 0.1 -confogl_addcvar z_door_pound_damage 9999 -confogl_addcvar z_pounce_door_damage 9999 -confogl_addcvar tongue_release_fatigue_penalty 0 +confogl_addcvar z_holiday_gift_drop_chance 1.0 +confogl_addcvar z_breakable_damage 100 +confogl_addcvar z_door_pound_damage 1000 +confogl_addcvar z_pounce_door_damage 1000 +confogl_addcvar z_charge_prop_damage 1000 +confogl_addcvar tongue_release_fatigue_penalty 2500 confogl_addcvar z_gun_survivor_friend_push 1 -confogl_addcvar z_respawn_interval 30 +confogl_addcvar z_respawn_distance 0 +confogl_addcvar z_respawn_interval 0 confogl_addcvar sb_max_team_melee_weapons 4 -confogl_addcvar z_charge_warmup 0 +confogl_addcvar z_charge_warmup 0.5 confogl_addcvar charger_pz_claw_dmg 10 -confogl_addcvar tongue_vertical_choke_height 9999 +confogl_addcvar tongue_vertical_choke_height 8192 confogl_addcvar z_hit_from_behind_factor 1.0 -// Unintended "unledge" fix. +// Unintended "unledge" fix confogl_addcvar survivor_ledge_grab_ground_check_time 1.0 // AI Improvement Cvars -confogl_addcvar boomer_exposed_time_tolerance 0 +confogl_addcvar director_allow_infected_bots 0 +confogl_addcvar boomer_exposed_time_tolerance 2147483647 confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar hunter_pounce_ready_range 1200 +confogl_addcvar hunter_pounce_ready_range 800 confogl_addcvar hunter_committed_attack_range 600 // Tank/Witch Cvars -confogl_addcvar versus_tank_flow_team_variation 0 -confogl_addcvar versus_boss_flow_max 0.75 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 confogl_addcvar versus_boss_flow_min 0.15 -confogl_addcvar tank_stuck_time_suicide 9999 -confogl_addcvar director_tank_lottery_selection_time 2.5 +confogl_addcvar versus_boss_flow_max 0.75 +confogl_addcvar versus_boss_flow_min_intro 0.25 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_intro 0.30 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_padding_min 0.0 +confogl_addcvar versus_boss_padding_max 0.0 +confogl_addcvar tank_stuck_time_suicide 2147483647 +confogl_addcvar director_tank_lottery_selection_time 3 confogl_addcvar z_frustration_spawn_delay 15 confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar tank_ground_pound_duration 0.1 // Stripper Path -confogl_addcvar stripper_cfg_path cfg/stripper/acv +// confogl_addcvar stripper_cfg_path cfg/stripper/acv diff --git a/cfg/cfgogl/acv/shared_plugins.cfg b/cfg/cfgogl/acv/shared_plugins.cfg index 52e88ffb..60bf4553 100644 --- a/cfg/cfgogl/acv/shared_plugins.cfg +++ b/cfg/cfgogl/acv/shared_plugins.cfg @@ -1,9 +1,9 @@ // ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= @@ -22,24 +22,22 @@ sm plugins load playercommands.smx //---------------------------------- // General Competitive Plugins //---------------------------------- -sm plugins load optional/l4d2_pickup.smx sm plugins load optional/blockheatseekingchargers.smx -sm plugins load optional/blocktrolls.smx +//sm plugins load optional/blocktrolls.smx sm plugins load optional/bossspawningfix.smx sm plugins load optional/botpopstop.smx sm plugins load optional/coinflip.smx sm plugins load optional/current.smx sm plugins load optional/finalefix.smx -sm plugins load optional/l4d2_ghost_warp.smx sm plugins load optional/l4d2_blind_infected.smx -sm plugins load optional/l4d2_nobhaps.smx +//sm plugins load optional/l4d2_nobhaps.smx sm plugins load optional/l4d2_nospitterduringtank.smx -sm plugins load optional/l4d2_saferoom_detect.smx +//sm plugins load optional/l4d2_saferoom_detect.smx sm plugins load optional/l4d2_setscores.smx sm plugins load optional/l4d2_si_ffblock.smx -sm plugins load optional/l4d2_spec_stays_spec.smx +//sm plugins load optional/l4d2_spec_stays_spec.smx sm plugins load optional/l4d2_unsilent_jockey.smx -sm plugins load optional/l4d2_weaponrules.smx +//sm plugins load optional/l4d2_weaponrules.smx sm plugins load optional/l4d_bash_kills.smx sm plugins load optional/l4d_equalise_alarm_cars.smx sm plugins load optional/l4d_jockey_ledgehang.smx @@ -50,6 +48,7 @@ sm plugins load optional/lerpmonitor.smx sm plugins load optional/nosaferoomkits.smx sm plugins load optional/pill_passer.smx sm plugins load optional/ratemonitor.smx +sm plugins load optional/specrates.smx sm plugins load optional/rock_stumble_block.smx sm plugins load optional/si_fire_immunity.smx sm plugins load optional/smart_ai_rock.smx @@ -61,9 +60,9 @@ sm plugins load optional/temphealthfix.smx // Equilibrium Plugins //---------------------- sm plugins load optional/eq_finale_tanks.smx -sm plugins load optional/l4d2_drop_secondary.smx -sm plugins load optional/l4d2_m2_control_eq.smx -sm plugins load optional/l4d2_nosecondchances.smx +//sm plugins load optional/l4d2_drop_secondary.smx +//sm plugins load optional/l4d2_m2_control_eq.smx +//sm plugins load optional/l4d2_nosecondchances.smx sm plugins load optional/l4d2_si_staggers.smx sm plugins load optional/l4d2_slowdown_control.smx sm plugins load optional/l4d2_spitblock.smx @@ -77,7 +76,6 @@ sm plugins load optional/l4d_texture_manager_block.smx sm plugins load optional/l4d_tankpunchstuckfix.smx sm plugins load optional/despawn_health.smx sm plugins load optional/checkpoint-rage-control.smx -sm plugins load optional/l4d2_profitless_ai_tank.smx sm plugins load optional/l4d2_hunter_no_deadstops.smx sm plugins load optional/l4d2_tank_attack_control.smx sm plugins load optional/l4d2_tank_announce.smx @@ -89,25 +87,22 @@ sm plugins load optional/l4d2_hybrid_scoremod_zone.smx sm plugins load optional/fix_engine.smx sm plugins load optional/l4d2_collision_adjustments.smx sm plugins load optional/l4d2_stats.smx -sm plugins load optional/specrates.smx sm plugins load optional/l4d2_dominatorscontrol.smx sm plugins load optional/l4d2_fix_spawn_order.smx sm plugins load optional/l4dhots.smx sm plugins load optional/l4d_tank_rush.smx sm plugins load optional/l4d2_ladder_rambos.smx -sm plugins load optional/noteam_nudging.smx +//sm plugins load optional/noteam_nudging.smx sm plugins load optional/l4d2_tank_horde_monitor.smx sm plugins load optional/charger_incap_damage.smx sm plugins load optional/l4d2_steady_boost.smx sm plugins load optional/staggersolver.smx -sm plugins load optional/l4d2_nobackjumps.smx -sm plugins load optional/l4d_common_ragdolls_be_gone.smx //---------------------- // Static shotgun spread //---------------------- -sm plugins load optional/l4d2_weapon_attributes.smx -sm plugins load optional/l4d2_static_shotgun_spread.smx +//sm plugins load optional/l4d2_weapon_attributes.smx +//sm plugins load optional/l4d2_static_shotgun_spread.smx //--------------------------------------------- // Merged FF Plugins, needs to be loaded here diff --git a/cfg/cfgogl/acv/shared_settings.cfg b/cfg/cfgogl/acv/shared_settings.cfg index 6fa615d2..ad950968 100644 --- a/cfg/cfgogl/acv/shared_settings.cfg +++ b/cfg/cfgogl/acv/shared_settings.cfg @@ -1,9 +1,9 @@ -d// ======================================================================================= +// ======================================================================================= // Advanced Realism Versus - Competitive L4D2 Configuration // Author: Moon -// Contributions: Bizzy, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob, Forgetest, A1m +// Contributions: Bizzy // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) -// Version 2.0 +// Version 2.5 // https://github.com/draxios/bizzymod // ======================================================================================= @@ -16,21 +16,21 @@ confogl_addcvar l4d2_steady_boost_flags 2 // Infected only // [l4d2_ghost_warp.smx] confogl_addcvar l4d2_ghost_warp_flag 1 // Enable ghost warp with command only 'sm_warp' -confogl_addcvar l4d2_ghost_warp_delay 0.45 +confogl_addcvar l4d2_ghost_warp_delay 0 // [l4d_static_punch_getup.smx] -confogl_addcvar tank_punch_getup_scale 0.5 // 54 frames / 30 fps * 0.5 = 0.9s +confogl_addcvar tank_punch_getup_scale 0.25 // 54 frames / 30 fps * 0.25 = 0.45s // [l4d2_rock_trace_unblock.smx] confogl_addcvar l4d2_rock_trace_unblock_flag 1 confogl_addcvar l4d2_rock_jockey_dismount 0 // [charger_incap_damage] -confogl_addcvar charger_dmg_incapped "30.0" // Default 15 +confogl_addcvar charger_dmg_incapped 30 // Default 15 // [l4d2_spit_spread_patch.smx] confogl_addcvar l4d2_spit_spread_saferoom 1 -confogl_addcvar l4d2_deathspit_trace_height 9999.9 +confogl_addcvar l4d2_deathspit_trace_height 8192 confogl_addcvar l4d2_spit_max_flames 10 confogl_addcvar l4d2_spit_water_collision 1 @@ -42,19 +42,21 @@ confogl_addcvar cssladders_allow_shotgun_reload 1 confogl_addcvar cssladders_allow_switch 1 // [l4d2_tank_props_glow.smx] -confogl_addcvar l4d_tank_props_glow 1 -confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" -confogl_addcvar l4d2_tank_prop_glow_range 4000 -confogl_addcvar l4d2_tank_prop_glow_range_min 200 -confogl_addcvar l4d2_tank_prop_glow_only 0 -confogl_addcvar l4d2_tank_prop_glow_spectators 1 -confogl_addcvar l4d2_tank_prop_dissapear_time 10.0 +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 +confogl_addcvar l4d_ammo_spawn_glow_color "255 255 255" // [l4d2_sound_manipulation.smx] confogl_addcvar sound_flags 7 // [fix_engine.smx] -confogl_addcvar engine_fix_flags 28 +//confogl_addcvar engine_fix_flags 28 +confogl_addcvar engine_fix_flags 0 // [l4d_tank_rush] confogl_addcvar l4d_no_tank_rush 1 @@ -72,7 +74,7 @@ confogl_addcvar crc_global 1 confogl_addcvar infected_fire_immunity 0 // [l4d2_nosecondchances.smx] -confogl_addcvar bot_kick_delay 0 +confogl_addcvar bot_kick_delay 10.0 // [l4d2_saferoom_item_remove.smx] confogl_addcvar sm_safeitemkill_saferooms 3 @@ -92,15 +94,16 @@ confogl_addcvar l4d_equalise_alarm_start_disabled 1 confogl_addcvar z_leap_interval_post_ledge_hang 12 // [l4d2_slowdown_control.smx] +confogl_addcvar z_tank_speed 240 confogl_addcvar z_tank_speed_vs 200 -confogl_addcvar z_tank_damage_slow_min_range 0 -confogl_addcvar z_tank_damage_slow_max_range 0 +confogl_addcvar z_tank_damage_slow_min_range 32 +confogl_addcvar z_tank_damage_slow_max_range 32 confogl_addcvar l4d2_slowdown_gunfire_si 0 confogl_addcvar l4d2_slowdown_gunfire_tank 0 -confogl_addcvar l4d2_slowdown_water_tank 0 -confogl_addcvar l4d2_slowdown_water_survivors -1 -confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220 -confogl_addcvar l4d2_slowdown_crouch_speed_mod 1.2 +confogl_addcvar l4d2_slowdown_water_tank 180 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 +confogl_addcvar l4d2_slowdown_crouch_speed_mod 2.0 // [l4d_tank_damage_announce.smx] confogl_addcvar l4d_tankdamage_enabled 1 @@ -123,50 +126,30 @@ confogl_addcvar vs_tank_pound_damage 50 confogl_addcvar vs_tank_rock_damage 25 // [l4d2_pickup.smx] -confogl_addcvar pickup_switch_flags 2 -confogl_addcvar pickup_incap_flags 2 +confogl_addcvar l4d2_usecount 2147483647 +confogl_addcvar pickup_switch_flags 0 +confogl_addcvar pickup_incap_flags 0 // [l4d2_car_alarm_hittable_fix.smx] confogl_addcvar l4d2_car_alarm_settings 3 confogl_addcvar l4d2_car_alarm_touch_capped 0 -// [l4d2_spitblock.smx] -// Official Campaigns -spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator -spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator -spit_block_square c5m3_cemetery 4160 333.04 4297 291.01 // At the drop into the sewer - -//Custom Campaigns -spit_block_square l4d_dbd2dc_clean_up -4232 3608 -4432 3544 // In the vent -spit_block_square l4d_dbd2dc_undead_center -6902.102539 8809.659180 -7872.751953 8522.269531 -spit_block_square l4d2_fallindeath03 4562.987793 -1769.313721 4446.680664 -1623.422729 -spit_block_square l4d2_fallindeath04 1656.737061 -325.227692 1531.636108 -187.895630 -spit_block_square cdta_03warehouse 6311.086 -13217.889 6192.448 -13347.204 // At the final ladder in the sewer -spit_block_square downpour_sugarmill_a -1444.891235 -9514.031250 -1514.214478 -9575.968750 -spit_block_square downpour_sugarmill_b -1434.379028 -9517.581055 -1514.214478 -9575.968750 -spit_block_square l4d2_darkblood02_engine 2515 5610 2664 5770 -spit_block_square x1m2_path 6303 10742 6522 10893 -spit_block_square cotd03_mall 8713 3405 8890 3115 -spit_block_square l4d2_daybreak03_bridge -7365.97 -1889.97 -7294.03 -1754 -spit_block_square l4d2_daybreak04_cruise 8064.77 -6594.97 8141 -6525 -spit_block_square l4d2_stadium1_apartment 268 587 409 417 // In the elevator (RBT 6 Hotfix) - // [l4d2_godframes_control.smx + l4d2_getup_fixes.smx] confogl_addcvar gfc_hittable_override 1 confogl_addcvar gfc_hittable_rage_override 1 confogl_addcvar gfc_rock_override 0 confogl_addcvar gfc_rock_rage_override 1 -confogl_addcvar gfc_spit_extra_time 0.5 +confogl_addcvar gfc_spit_extra_time 0.0 confogl_addcvar gfc_common_extra_time 0.0 -confogl_addcvar gfc_hunter_duration 1.5 -confogl_addcvar gfc_jockey_duration 0.0 -confogl_addcvar gfc_smoker_duration 0.0 -confogl_addcvar gfc_charger_duration 2.0 // frames: 85, fps 30, length: 2.833 -confogl_addcvar gfc_long_charger_duration 2.0 // wall-slam: 3.867, ground-slam: 3.967 +confogl_addcvar gfc_hunter_duration 0.0 +confogl_addcvar gfc_jockey_duration -1.0 +confogl_addcvar gfc_smoker_duration -1.0 +confogl_addcvar gfc_charger_duration 0.5 // frames: 85, fps 30, length: 2.833 +confogl_addcvar gfc_long_charger_duration 1.0 // wall-slam: 3.867, ground-slam: 3.967 confogl_addcvar gfc_common_zc_flags 9 confogl_addcvar gfc_spit_zc_flags 6 confogl_addcvar gfc_godframe_glows 1 -confogl_addcvar gfc_ff_min_time 0.0 +confogl_addcvar gfc_ff_min_time 2.0 // [l4dhots.smx] confogl_addcvar l4d_pills_hot 0 @@ -181,40 +164,41 @@ confogl_addcvar l4d2_m2_jockey_penalty 1 confogl_addcvar l4d2_m2_smoker_penalty 1 // [l4d2_melee_damage_control.smx] +confogl_addcvar l4d2_melee_drop_method 0 confogl_addcvar l4d2_melee_damage_tank_nerf 0 // Percentage of melee damage nerf against tank (210 dmg) - Default damage is 300. -confogl_addcvar l4d2_melee_damage_charger 250.0 +confogl_addcvar l4d2_melee_damage_charger 400 // [l4d2_dominatorscontrol.smx] confogl_addcvar l4d2_dominators 0 // [l4d2_uniform_spit.smx] -confogl_addcvar l4d2_spit_dmg 2 -confogl_addcvar l4d2_spit_alternate_dmg 3 -confogl_addcvar l4d2_spit_max_ticks 25 -confogl_addcvar l4d2_spit_godframe_ticks 5 +confogl_addcvar l4d2_spit_dmg 1 +confogl_addcvar l4d2_spit_alternate_dmg 1 +confogl_addcvar l4d2_spit_max_ticks 0 +confogl_addcvar l4d2_spit_godframe_ticks 0 // [l4d2_hittable_control.smx] -confogl_addcvar hc_gauntlet_finale_multiplier 0.5 -confogl_addcvar hc_broken_forklift_standing_damage 100.0 -confogl_addcvar hc_sflog_standing_damage 100.0 -confogl_addcvar hc_bhlog_standing_damage 100.0 -confogl_addcvar hc_handtruck_standing_damage 50.0 -confogl_addcvar hc_car_standing_damage 100.0 -confogl_addcvar hc_bumpercar_standing_damage 100.0 -confogl_addcvar hc_forklift_standing_damage 100.0 -confogl_addcvar hc_dumpster_standing_damage 100.0 -confogl_addcvar hc_haybale_standing_damage 100.0 -confogl_addcvar hc_baggage_standing_damage 100.0 -confogl_addcvar hc_generator_trailer_standing_damage 100.0 -confogl_addcvar hc_militia_rock_standing_damage 100.0 -confogl_addcvar hc_sofa_chair_standing_damage 100.0 -confogl_addcvar hc_atlas_ball_standing_damage 100.0 -confogl_addcvar hc_ibeam_standing_damage 50.0 -confogl_addcvar hc_diescraper_ball_standing_damage 100.0 -confogl_addcvar hc_van_standing_damage 100.0 +confogl_addcvar hc_gauntlet_finale_multiplier 1.0 +confogl_addcvar hc_broken_forklift_standing_damage 1000 +confogl_addcvar hc_sflog_standing_damage 1000 +confogl_addcvar hc_bhlog_standing_damage 1000 +confogl_addcvar hc_handtruck_standing_damage 1000 +confogl_addcvar hc_car_standing_damage 1000 +confogl_addcvar hc_bumpercar_standing_damage 1000 +confogl_addcvar hc_forklift_standing_damage 1000 +confogl_addcvar hc_dumpster_standing_damage 1000 +confogl_addcvar hc_haybale_standing_damage 1000 +confogl_addcvar hc_baggage_standing_damage 1000 +confogl_addcvar hc_generator_trailer_standing_damage 1000 +confogl_addcvar hc_militia_rock_standing_damage 1000 +confogl_addcvar hc_sofa_chair_standing_damage 1000 +confogl_addcvar hc_atlas_ball_standing_damage 1000 +confogl_addcvar hc_ibeam_standing_damage 1000 +confogl_addcvar hc_diescraper_ball_standing_damage 1000 +confogl_addcvar hc_van_standing_damage 1000 confogl_addcvar hc_incap_standard_damage -2 confogl_addcvar hc_disable_self_damage 1 -confogl_addcvar hc_overhit_time 1.4 +confogl_addcvar hc_overhit_time 0.0 confogl_addcvar hc_unbreakable_forklifts 1 // [l4d2_si_staggers.smx] @@ -225,14 +209,40 @@ confogl_addcvar l4d2_block_infected_ff 1 confogl_addcvar l4d2_infected_ff_allow_tank 1 // [l4d2_survivor_ff.smx] -confogl_addcvar l4d2_undoff_enable 7 -confogl_addcvar l4d2_undoff_blockzerodmg 7 -confogl_addcvar l4d2_undoff_permdmgfrac 1.0 +confogl_addcvar l4d2_undoff_enable 7 +confogl_addcvar l4d2_undoff_blockzerodmg 7 +confogl_addcvar l4d2_undoff_permdmgfrac 1.0 // [l4d2_unsilent_jockey.smx] -confogl_addcvar sm_unsilentjockey_interval 2.0 +confogl_addcvar sm_unsilentjockey_interval 10.0 // [l4d2_weaponrules.smx] +l4d2_addweaponrule ammo ammo +l4d2_addweaponrule coffee ammo +l4d2_addweaponrule ammocoffee ammo +l4d2_addweaponrule ammo_coffee ammo +l4d2_addweaponrule ammocoffeecan ammo +l4d2_addweaponrule ammo_coffeecan ammo +l4d2_addweaponrule ammocoffee_can ammo +l4d2_addweaponrule ammo_coffee_can ammo +l4d2_addweaponrule ammo ammopile +l4d2_addweaponrule coffee ammopile +l4d2_addweaponrule ammocoffee ammopile +l4d2_addweaponrule ammo_coffee ammopile +l4d2_addweaponrule ammocoffeecan ammopile +l4d2_addweaponrule ammo_coffeecan ammopile +l4d2_addweaponrule ammocoffee_can ammopile +l4d2_addweaponrule ammo_coffee_can ammopile +l4d2_addweaponrule ammo ammo_pile +l4d2_addweaponrule coffee ammo_pile +l4d2_addweaponrule ammocoffee ammo_pile +l4d2_addweaponrule ammo_coffee ammo_pile +l4d2_addweaponrule ammocoffeecan ammo_pile +l4d2_addweaponrule ammo_coffeecan ammo_pile +l4d2_addweaponrule ammocoffee_can ammo_pile +l4d2_addweaponrule ammo_coffee_can ammo_pile +l4d2_addweaponrule pistol pistol +l4d2_addweaponrule pistol_magnum pistol_magnum l4d2_addweaponrule smg smg l4d2_addweaponrule smg_silenced smg_silenced l4d2_addweaponrule smg_mp5 smg @@ -246,13 +256,37 @@ l4d2_addweaponrule autoshotgun pumpshotgun l4d2_addweaponrule shotgun_spas shotgun_chrome l4d2_addweaponrule hunting_rifle shotgun_chrome l4d2_addweaponrule sniper_military smg -l4d2_addweaponrule sniper_scout pistol -l4d2_addweaponrule sniper_awp pistol -l4d2_addweaponrule grenade_launcher pumpshotgun -l4d2_addweaponrule rifle_m60 smg_silenced -l4d2_addweaponrule chainsaw pistol_magnum -l4d2_addweaponrule ammo ammo -l4d2_addweaponrule ammo_coffee ammo +l4d2_addweaponrule sniper_scout smg +l4d2_addweaponrule sniper_awp smg_silenced +l4d2_addweaponrule grenade_launcher baseball_bat +l4d2_addweaponrule rifle_m60 baseball_bat +l4d2_addweaponrule chainsaw baseball_bat +l4d2_addweaponrule knife baseball_bat +l4d2_addweaponrule knife baseballbat +l4d2_addweaponrule knife bat +l4d2_addweaponrule huntingknife baseball_bat +l4d2_addweaponrule huntingknife baseballbat +l4d2_addweaponrule huntingknife bat +l4d2_addweaponrule hunting_knife baseball_bat +l4d2_addweaponrule hunting_knife baseballbat +l4d2_addweaponrule hunting_knife bat +l4d2_addweaponrule upgradepack_incendiary upgradepack_explosive +l4d2_addweaponrule first_aid_kit pain_pills +l4d2_addweaponrule defibrillator pain_pills +l4d2_addweaponrule minigun minigun +l4d2_addweaponrule minigun minigun_l4d2 +l4d2_addweaponrule minigun mountedgun +l4d2_addweaponrule minigun mounted_gun +l4d2_addweaponrule minigun mountedmachinegun +l4d2_addweaponrule minigun mounted_machinegun +l4d2_addweaponrule minigun mountedmachine_gun +l4d2_addweaponrule minigun_l4d1 minigun +l4d2_addweaponrule minigun_l4d1 minigun_l4d2 +l4d2_addweaponrule minigun_l4d1 mountedgun +l4d2_addweaponrule minigun_l4d1 mounted_gun +l4d2_addweaponrule minigun_l4d1 mountedmachinegun +l4d2_addweaponrule minigun_l4d1 mounted_machinegun +l4d2_addweaponrule minigun_l4d1 mountedmachine_gun // [l4d2_collision_adjustments.smx] confogl_addcvar collision_tankrock_common 1 @@ -260,30 +294,29 @@ confogl_addcvar collision_smoker_common 0 confogl_addcvar collision_tankrock_incap 1 // [l4d_stuckpunchfix] -confogl_addcvar sm_punchstuckfix_unstucktime 0.5 +confogl_addcvar sm_punchstuckfix_unstucktime 0.0 confogl_addcvar tpsf_debug_print 0 // [l4d2_shotgun_ff.smx] confogl_addcvar l4d2_shotgun_ff_multi 0.5 -confogl_addcvar l4d2_shotgun_ff_min 2.0 -confogl_addcvar l4d2_shotgun_ff_max 10.0 +confogl_addcvar l4d2_shotgun_ff_min 2 +confogl_addcvar l4d2_shotgun_ff_max 10 // [l4d2_uncommon_blocker.smx] confogl_addcvar sm_uncinfblock_enabled 0 -confogl_addcvar sm_uncinfblock_flags 55 // [lerpmonitor.smx] confogl_addcvar sm_allowed_lerp_changes 5 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_readyup_lerp_changes 1 -confogl_addcvar sm_min_lerp 0.000 -confogl_addcvar sm_max_lerp 0.100 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 // [starting_items.smx] confogl_addcvar starting_item_flags 4 // [cfg_motd.smx] -confogl_addcvar sm_cfgmotd_title "Advanced Versus 0.1" +confogl_addcvar sm_cfgmotd_title "Advanced Realism Versus 2.5" confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" // [l4d2_hybrid_scoremod.smx] @@ -293,7 +326,31 @@ confogl_addcvar sm2_pills_hp_factor 1.0 confogl_addcvar sm2_pills_max_bonus 25 // [l4d2_tank_horde_monitor.smx] -confogl_addcvar l4d2_tank_bypass_extra_flow 1500 +confogl_addcvar l4d2_tank_bypass_extra_flow 2000 + +// Max Range For All Weapons +sm_weapon pistol range 8192 +sm_weapon pistol_magnum range 8192 +sm_weapon smg range 8192 +sm_weapon smg_silenced range 8192 +sm_weapon smg_mp5 range 8192 +sm_weapon rifle range 8192 +sm_weapon rifle_ak47 range 8192 +sm_weapon rifle_desert range 8192 +sm_weapon rifle_sg552 range 8192 +sm_weapon rifle_m60 range 8192 +sm_weapon pumpshotgun range 8192 +sm_weapon shotgun_chrome range 8192 +sm_weapon autoshotgun range 8192 +sm_weapon shotgun_spas range 8192 +sm_weapon hunting_rifle range 8192 +sm_weapon sniper_military range 8192 +sm_weapon sniper_awp range 8192 +sm_weapon sniper_scout range 8192 +sm_weapon grenade_launcher range 8192 +sm_weapon minigun range 8192 +sm_weapon mounted_gun range 8192 +sm_weapon mounted_machine_gun range 8192 ///////////////////////////// // [Static shotgun spread] // @@ -301,14 +358,14 @@ confogl_addcvar l4d2_tank_bypass_extra_flow 1500 // First ring settings confogl_addcvar sgspread_ring1_bullets 8 -confogl_addcvar sgspread_ring1_factor 2 // Does not affect the actual first ring, just the distance between ring 1 and 2 (Only affects pump) +confogl_addcvar sgspread_ring1_factor 4 // Does not affect the actual first ring, just the distance between ring 1 and 2 (Only affects pump) confogl_addcvar sgspread_center_pellet 0 ///////////////////////////// // [SMG Tweaks 'n Stuff] // ///////////////////////////// -sm_weapon smg carrycapacity 550 +sm_weapon smg carrycapacity 850 sm_weapon smg clipsize 50 sm_weapon smg spreadpershot 0.20 sm_weapon smg minstandingspread 0.5 @@ -316,13 +373,13 @@ sm_weapon smg minduckingspread 0.25 sm_weapon smg mininairspread 1.5 sm_weapon smg maxmovespread 2.0 sm_weapon smg verticalpunch 1.0 -sm_weapon smg cycletime 0.07 -sm_weapon smg damage 25 +sm_weapon smg cycletime 0.066667 +sm_weapon smg damage 26 sm_weapon smg penetrationpower 50 -sm_weapon smg range 3000 -sm_weapon smg rangemod 0.85 -sm_weapon smg reloadduration 2.2 -sm_weapon smg_silenced carrycapacity 550 +sm_weapon smg range 8192 +sm_weapon smg rangemod 0.90 +sm_weapon smg reloadduration 2.4 +sm_weapon smg_silenced carrycapacity 850 sm_weapon smg_silenced clipsize 50 sm_weapon smg_silenced spreadpershot 0.30 sm_weapon smg_silenced minstandingspread 1.0 @@ -330,13 +387,13 @@ sm_weapon smg_silenced minduckingspread 0.5 sm_weapon smg_silenced mininairspread 2.0 sm_weapon smg_silenced maxmovespread 3.0 sm_weapon smg_silenced verticalpunch 1.0 -sm_weapon smg_silenced cycletime 0.065 -sm_weapon smg_silenced damage 25 +sm_weapon smg_silenced cycletime 0.066667 +sm_weapon smg_silenced damage 28 sm_weapon smg_silenced penetrationpower 40 -sm_weapon smg_silenced range 2500 -sm_weapon smg_silenced rangemod 0.75 -sm_weapon smg_silenced reloadduration 2.0 -sm_weapon smg_mp5 carrycapacity 550 +sm_weapon smg_silenced range 8192 +sm_weapon smg_silenced rangemod 0.85 +sm_weapon smg_silenced reloadduration 2.2 +sm_weapon smg_mp5 carrycapacity 850 sm_weapon smg_mp5 clipsize 50 sm_weapon smg_mp5 verticalpunch 1.0 sm_weapon smg_mp5 spreadpershot 0.85 @@ -344,17 +401,18 @@ sm_weapon smg_mp5 minstandingspread 0.5 sm_weapon smg_mp5 minduckingspread 0.1 sm_weapon smg_mp5 mininairspread 2.0 sm_weapon smg_mp5 maxmovespread 5.0 -sm_weapon smg_mp5 damage 28 +sm_weapon smg_mp5 cycletime 0.075 +sm_weapon smg_mp5 damage 30 sm_weapon smg_mp5 penetrationpower 50 -sm_weapon smg_mp5 range 4000 +sm_weapon smg_mp5 range 8192 sm_weapon smg_mp5 rangemod 0.95 -sm_weapon smg_mp5 reloadduration 2.4 +sm_weapon smg_mp5 reloadduration 2.6 ///////////////////////////////// // [Shotgun Tweaks 'n Stuff] // ///////////////////////////////// -sm_weapon pumpshotgun carrycapacity 56 +sm_weapon pumpshotgun carrycapacity 112 sm_weapon pumpshotgun clipsize 8 sm_weapon pumpshotgun scatterpitch 4.0 sm_weapon pumpshotgun scatteryaw 4.0 @@ -364,13 +422,13 @@ sm_weapon pumpshotgun minduckingspread 0.0 sm_weapon pumpshotgun mininairspread 1.0 sm_weapon pumpshotgun maxmovespread 1.0 sm_weapon pumpshotgun verticalpunch 3.0 -sm_weapon pumpshotgun cycletime 0.7 -sm_weapon pumpshotgun bullets 15 +sm_weapon pumpshotgun cycletime 0.0 +sm_weapon pumpshotgun bullets 16 sm_weapon pumpshotgun damage 20 sm_weapon pumpshotgun penetrationpower 40 -sm_weapon pumpshotgun rangemod 0.70 -sm_weapon pumpshotgun range 3000 -sm_weapon shotgun_chrome carrycapacity 56 +sm_weapon pumpshotgun rangemod 0.75 +sm_weapon pumpshotgun range 8192 +sm_weapon shotgun_chrome carrycapacity 112 sm_weapon shotgun_chrome clipsize 8 sm_weapon shotgun_chrome scatterpitch 3.0 sm_weapon shotgun_chrome scatteryaw 3.0 @@ -380,20 +438,21 @@ sm_weapon shotgun_chrome minduckingspread 0.0 sm_weapon shotgun_chrome mininairspread 0.5 sm_weapon shotgun_chrome maxmovespread 0.5 sm_weapon shotgun_chrome verticalpunch 3.0 -sm_weapon shotgun_chrome cycletime 0.7 +sm_weapon shotgun_chrome cycletime 0.0 sm_weapon shotgun_chrome bullets 10 -sm_weapon shotgun_chrome damage 28 +sm_weapon shotgun_chrome damage 30 sm_weapon shotgun_chrome penetrationpower 50 -sm_weapon shotgun_chrome rangemod 0.80 -sm_weapon shotgun_chrome range 3500 +sm_weapon shotgun_chrome rangemod 0.85 +sm_weapon shotgun_chrome range 8192 ///////////////////////////////// // [Pistol Tweaks 'n Stuff] // ///////////////////////////////// -sm_weapon pistol deployduration 0.4 -sm_weapon pistol dualdeployduration 0.5 +sm_weapon pistol deployduration 0.3 +sm_weapon pistol dualdeployduration 0.4 sm_weapon pistol clipsize 15 +sm_weapon pistol cycletime 0.083333 sm_weapon pistol verticalpunch 1.5 Sm_weapon pistol spreadpershot 1.0 sm_weapon pistol minstandingspread 0.5 @@ -402,21 +461,24 @@ sm_weapon pistol mininairspread 1.0 sm_weapon pistol maxmovespread 1.5 sm_weapon pistol damage 45 sm_weapon pistol penetrationpower 50 -sm_weapon pistol range 3500 -sm_weapon pistol rangemod 0.85 -sm_weapon pistol_magnum deployduration 0.5 -sm_weapon pistol_magnum dualdeployduration 0.6 +sm_weapon pistol range 8192 +sm_weapon pistol rangemod 0.95 +sm_weapon pistol reloadduration 1 +sm_weapon pistol_magnum deployduration 0.3 +sm_weapon pistol_magnum dualdeployduration 0.4 sm_weapon pistol_magnum clipsize 8 +sm_weapon pistol_magnum cycletime 0.283333 sm_weapon pistol_magnum verticalpunch 2.0 Sm_weapon pistol_magnum spreadpershot 1.0 sm_weapon pistol_magnum minstandingspread 1.0 sm_weapon pistol_magnum minduckingspread 0.4 sm_weapon pistol_magnum mininairspread 1.5 sm_weapon pistol_magnum maxmovespread 2.0 -sm_weapon pistol_magnum damage 80 +sm_weapon pistol_magnum damage 90 sm_weapon pistol_magnum penetrationpower 60 -sm_weapon pistol_magnum rangemod 0.9 -sm_weapon pistol_magnum range 4000 +sm_weapon pistol_magnum rangemod 0.975 +sm_weapon pistol_magnum range 8192 +sm_weapon pistol_magnum reloadduration 1 /////////////////// // [Boss tweaks] // @@ -474,9 +536,6 @@ static_witch_map dkr_m3_tunneloflove static_witch_map dkr_m4_ferris static_witch_map dkr_m5_stadium -// Map transition rules -sm_add_map_transition c6m2_bedlam c6m3_port - // Spit spread exceptions spit_spread_saferoom_except c3m1_plankcountry spit_spread_saferoom_except c5m1_waterfront @@ -487,9 +546,4 @@ exec confogl_personalize.cfg // Confogl Additional confogl_setcvars confogl_resetclientcvars - -// Client Cvar Tracking -confogl_trackclientcvar "mat_hdr_level" "1" "2.0" "0" "0.0" -confogl_startclientchecking - sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/barrymod/barrymod.cfg b/cfg/cfgogl/barrymod/barrymod.cfg index 1f41da97..2388d1ba 100644 --- a/cfg/cfgogl/barrymod/barrymod.cfg +++ b/cfg/cfgogl/barrymod/barrymod.cfg @@ -1,20 +1,21 @@ // ======================================================================================= // barrymod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 70.0.0 // https://github.com/draxios/bizzymod // ======================================================================================= // [lerpmonitor.smx] -confogl_addcvar sm_allowed_lerp_changes 3 +confogl_addcvar sm_allowed_lerp_changes 20 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_readyup_lerp_changes 1 -confogl_addcvar sm_min_lerp 0.0000 -confogl_addcvar sm_max_lerp 0.1000 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 // [l4d_boss_percent.smx] +confogl_addcvar sm_tank_can_spawn 1 +confogl_addcvar sm_witch_can_spawn 1 confogl_addcvar l4d_global_percent 0 confogl_addcvar l4d_tank_percent 1 confogl_addcvar l4d_witch_percent 1 @@ -29,6 +30,11 @@ confogl_addcvar autopause_enable 1 confogl_addcvar autopause_force 0 confogl_addcvar autopause_apdebug 0 +// [l4d_weapon_limits.smx] +l4d_wlimits_add 1 1 weapon_rifle_m60 +l4d_wlimits_add 1 1 weapon_grenade_launcher +l4d_wlimits_lock + // [l4d2_playstats.smx + survivor_mvp] confogl_addcvar sm_survivor_mvp_brevity 0 confogl_addcvar sm_survivor_mvp_brevity_latest 111 @@ -38,4 +44,4 @@ confogl_addcvar sm_stats_autoprint_vs_round 8372 confogl_addcvar sm_skill_report_enable 1 // Shared Settings -exec cfgogl/barrymod/shared_settings.cfg \ No newline at end of file +exec cfgogl/barrymod/shared_settings.cfg diff --git a/cfg/cfgogl/barrymod/confogl.cfg b/cfg/cfgogl/barrymod/confogl.cfg index 3b7e9d76..77f63929 100644 --- a/cfg/cfgogl/barrymod/confogl.cfg +++ b/cfg/cfgogl/barrymod/confogl.cfg @@ -1,31 +1,40 @@ // ======================================================================================= // barrymod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 70.0.0 // https://github.com/draxios/bizzymod // ======================================================================================= // ReadyUp Cvars -l4d_ready_cfg_name "barrymod 70.0.0" +l4d_ready_cfg_name "marrymod 1.0" // Confogl Cvars -confogl_addcvar mp_gamemode "mutation12" -confogl_addcvar z_difficulty "normal" +confogl_addcvar mp_gamemode "Mutation12" +confogl_addcvar z_difficulty "Impossible" +confogl_addcvar sv_disable_glow_faritems 0 +confogl_addcvar z_non_headshot_damage_factor_multiplier 1.0 +confogl_addcvar l4d2_temphealthmedkits_enable 1 confogl_addcvar adrenaline_health_buffer 30 -confogl_addcvar confogl_pills_limit 3 +confogl_addcvar l4d_gear_transfer_method 2 +confogl_addcvar confogl_pills_limit 4 // numbermod 4v4 Cvars -confogl_addcvar z_common_limit 35 -confogl_addcvar z_mega_mob_size 50 -confogl_addcvar z_mob_spawn_min_size 16 -confogl_addcvar z_mob_spawn_max_size 16 -confogl_addcvar z_mob_spawn_min_interval_normal 3400 -confogl_addcvar z_mob_spawn_max_interval_normal 3400 +confogl_addcvar z_health 100 +confogl_addcvar z_common_limit 40 +confogl_addcvar z_background_limit 20 +confogl_addcvar z_wandering_density 0.03 +confogl_addcvar versus_wandering_density 0.03 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 +confogl_addcvar z_hit_from_behind_factor 1.0 +confogl_addcvar cleared_wanderer_respawn_chance 0 // barrymod Shared Cvars exec cfgogl/barrymod/shared_cvars.cfg // Config Cvars -exec cfgogl/barrymod/barrymod.cfg \ No newline at end of file +exec cfgogl/barrymod/barrymod.cfg diff --git a/cfg/cfgogl/barrymod/confogl_off.cfg b/cfg/cfgogl/barrymod/confogl_off.cfg index f3aa5017..c8e3ade7 100644 --- a/cfg/cfgogl/barrymod/confogl_off.cfg +++ b/cfg/cfgogl/barrymod/confogl_off.cfg @@ -1,7 +1,6 @@ // ======================================================================================= // barrymod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 70.0.0 // https://github.com/draxios/bizzymod @@ -17,4 +16,4 @@ sm_resetstringcount // Unlock Plugins and reload defaults confogl_resetclientcvars confogl_resetcvars -pred_unload_plugins \ No newline at end of file +pred_unload_plugins diff --git a/cfg/cfgogl/barrymod/confogl_plugins.cfg b/cfg/cfgogl/barrymod/confogl_plugins.cfg index 7b7a8fc3..b43b3c35 100644 --- a/cfg/cfgogl/barrymod/confogl_plugins.cfg +++ b/cfg/cfgogl/barrymod/confogl_plugins.cfg @@ -1,7 +1,6 @@ // ======================================================================================= // barrymod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 70.0.0 // https://github.com/draxios/bizzymod @@ -28,5 +27,4 @@ sm plugins load optional/autopause.smx sm plugins load bizzymod/bizzykits.smx sm plugins load bizzymod/SpecListener.smx sm plugins load bizzymod/vscript_replacer.smx -sm plugins load bizzymod/l4d_heal_revive_fix.smx -sm plugins load bizzymod/l4d_gear_transfer.smx \ No newline at end of file +sm plugins load bizzymod/l4d_gear_transfer.smx diff --git a/cfg/cfgogl/barrymod/shared_cvars.cfg b/cfg/cfgogl/barrymod/shared_cvars.cfg index 45a2c4b7..3aeed4fe 100644 --- a/cfg/cfgogl/barrymod/shared_cvars.cfg +++ b/cfg/cfgogl/barrymod/shared_cvars.cfg @@ -1,38 +1,53 @@ // ======================================================================================= // barrymod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 70.0.0 // https://github.com/draxios/bizzymod // ======================================================================================= // Server Cvars -sv_pure 2 -sv_alltalk 0 +sv_pure 0 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 +confogl_addcvar mp_allowspectators 1 confogl_addcvar sv_cheats 0 -confogl_addcvar sv_consistency 1 -confogl_addcvar sv_pure_kick_clients 1 +confogl_addcvar sv_consistency 0 +confogl_addcvar sv_pure_kick_clients 0 confogl_addcvar sv_voiceenable 1 -confogl_addcvar sv_log_onefile 0 +confogl_addcvar motd_enabled 1 +confogl_addcvar sv_log_onefile 1 confogl_addcvar sv_logbans 1 confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar vs_max_team_switches 2147483647 confogl_addcvar versus_marker_num 0 confogl_addcvar sv_vote_kick_ban_duration 0 -confogl_addcvar sv_pz_endgame_vote_period 20 +confogl_addcvar sv_vote_plr_map_limit 2147483647 +confogl_addcvar changelevel_pause_interval 10 +confogl_addcvar sv_pz_endgame_vote_period 15 +confogl_addcvar sv_pz_endgame_vote_post_period 3 +confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar l4d2_addons_eclipse -1 +confogl_addcvar sv_downloadurl "Bizzymod Steam Group - steamcommunity.com/groups/bizzymod | Crater Creator's Team Balance Spreadsheet - https://docs.google.com/spreadsheets/d/16_tMQkTEUG-hnxx6ArtYVTzhbnfZjFWd4hYFMeHLH7E/edit?gid=1227741290#gid=1227741290" // Bandwidth Cvars exec confogl_rates.cfg // ReadyUp Cvars l4d_ready_enabled 1 - +confogl_addcvar l4d_ready_disable_spawns 0 confogl_addcvar l4d_ready_survivor_freeze 0 +confogl_addcvar l4d_ready_max_players 33 confogl_addcvar l4d_ready_delay 3 +confogl_addcvar l4d_ready_force_extra 0 confogl_addcvar l4d_ready_enable_sound 1 -confogl_addcvar l4d_ready_chuckle 0 +confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_secret 1 confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar l4d_ready_unbalanced_start 1 +confogl_addcvar l4d_ready_unbalanced_min 3 confogl_addcvar coinflip_delay -1 confogl_addcvar teamflip_delay -1 @@ -50,7 +65,6 @@ confogl_addcvar confogl_remove_escape_tank "0" // Removes t confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank) -confogl_addcvar director_allow_infected_bots "0" confogl_addcvar confogl_ghost_warp "1" // Sets whether infected ghosts can right click for warp to next survivor confogl_addcvar confogl_disable_ghost_hurt "1" // Prevents ghost infected from dying when falling into water or off c1m1 confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range @@ -72,7 +86,7 @@ confogl_addcvar confogl_waterslowdown "1" // Sets whet confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round2. confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits -confogl_addcvar confogl_adrenaline_limit "3" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_adrenaline_limit "4" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value confogl_addcvar confogl_pipebomb_limit "4" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value confogl_addcvar confogl_molotov_limit "3" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value confogl_addcvar confogl_vomitjar_limit "3" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value @@ -88,8 +102,8 @@ confogl_addcvar director_vs_convert_pills 1 confogl_addcvar director_convert_pills 1 confogl_addcvar director_convert_pills_critical_health 0 confogl_addcvar director_convert_pills_to_defib_health 0 -confogl_addcvar pain_pills_decay_rate 0.27 // Original is 0.27 -confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix +confogl_addcvar pain_pills_decay_rate 0.2 // Original is 0.27 +confogl_addcvar z_finale_spawn_safety_range 300 // Tank finale bugfix confogl_addcvar sv_force_time_of_day 0 confogl_addcvar z_brawl_chance 0 confogl_addcvar z_female_boomer_spawn_chance 50 @@ -97,42 +111,57 @@ confogl_addcvar nav_lying_down_percent 0 confogl_addcvar z_must_wander 1 // Competitive Cvars -confogl_addcvar ammo_shotgun_max 100 -confogl_addcvar ammo_smg_max 800 -//confogl_addcvar ammo_sniperrifle_max 80 - +confogl_addcvar ammo_smg_max 850 +confogl_addcvar ammo_shotgun_max 112 +confogl_addcvar ammo_chainsaw_max 30 +confogl_addcvar ammo_m60_max 0 +confogl_addcvar z_leap_interval_post_ride 6 confogl_addcvar z_leap_interval_post_incap 16 +confogl_addcvar z_jockey_control_min 1.0 +confogl_addcvar z_jockey_control_max 1.0 confogl_addcvar z_jockey_control_variance 0.0 confogl_addcvar z_vomit_interval 20 confogl_addcvar sv_gameinstructor_disable 1 confogl_addcvar z_spit_interval 16 confogl_addcvar tongue_hit_delay 12 -confogl_addcvar z_door_pound_damage 160 -confogl_addcvar z_pounce_door_damage 500 -confogl_addcvar tongue_release_fatigue_penalty 0 -confogl_addcvar z_charge_warmup 0 +confogl_addcvar z_door_pound_damage 500 +confogl_addcvar z_pounce_door_damage 1000 +confogl_addcvar tongue_release_fatigue_penalty 2500 +confogl_addcvar z_charge_warmup 0.5 // AI Improvement Cvars -confogl_addcvar boomer_exposed_time_tolerance 0 -confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar hunter_pounce_ready_range 1000 +confogl_addcvar director_allow_infected_bots 0 +confogl_addcvar z_minion_limit 4 +confogl_addcvar boomer_exposed_time_tolerance 30 +confogl_addcvar boomer_vomit_delay 0.0 +confogl_addcvar hunter_pounce_ready_range 800 confogl_addcvar hunter_committed_attack_range 600 // Tank/Witch Cvars confogl_addcvar z_witch_anger_rate 0.4 -confogl_addcvar versus_witch_chance 1 -confogl_addcvar versus_witch_chance_finale 1 -confogl_addcvar versus_witch_chance_intro 1 -confogl_addcvar versus_tank_flow_team_variation 0 -confogl_addcvar versus_boss_flow_max 0.85 +confogl_addcvar z_witch_relax_rate 0.2 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 confogl_addcvar versus_boss_flow_min 0.20 -confogl_addcvar tank_stuck_time_suicide 999999999 -confogl_addcvar director_tank_lottery_selection_time 3 -confogl_addcvar z_frustration_spawn_delay 30 -confogl_addcvar z_frustration_los_delay 1.2 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min_intro 0.25 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_finale 0.30 +confogl_addcvar versus_boss_flow_max_finale 0.80 +confogl_addcvar tank_stuck_time_suicide 86400 +confogl_addcvar tank_stuck_visibility_tolerance_suicide 86400 +confogl_addcvar director_tank_lottery_selection_time 4 +confogl_addcvar z_frustration_spawn_delay 20 +confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar tank_ground_pound_duration 0.1 -confogl_addcvar z_tank_health 4666 +confogl_addcvar z_tank_health 4667 // Stripper Path -//confogl_addcvar stripper_cfg_path cfg/stripper/barrymod \ No newline at end of file +// confogl_addcvar stripper_cfg_path cfg/stripper/barrymod diff --git a/cfg/cfgogl/barrymod/shared_plugins.cfg b/cfg/cfgogl/barrymod/shared_plugins.cfg index 195aae07..c3cbb4c1 100644 --- a/cfg/cfgogl/barrymod/shared_plugins.cfg +++ b/cfg/cfgogl/barrymod/shared_plugins.cfg @@ -79,8 +79,6 @@ sm plugins load optional/l4d2_tank_damage_cvars.smx sm plugins load optional/fix_engine.smx sm plugins load optional/l4d2_collision_adjustments.smx sm plugins load optional/l4d2_stats.smx -sm plugins load optional/l4d2_melee_shenanigans.smx -sm plugins load optional/specrates.smx //---------------------- // Static shotgun spread @@ -113,4 +111,4 @@ sm plugins load optional/witch_and_tankifier.smx // Letzzzz go. sm plugins load confoglcompmod.smx -sm plugins load match_vote.smx \ No newline at end of file +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/barrymod/shared_settings.cfg b/cfg/cfgogl/barrymod/shared_settings.cfg index ac5bbaf7..16120f72 100644 --- a/cfg/cfgogl/barrymod/shared_settings.cfg +++ b/cfg/cfgogl/barrymod/shared_settings.cfg @@ -21,6 +21,9 @@ sm_lockstrings // [checkpoint-rage-control.smx] confogl_addcvar crc_global 1 +// [l4d_static_punch_getup.smx] +confogl_addcvar tank_punch_getup_scale 0.333333 // 54 frames / 30 fps * 0.25 = 0.6s + // [ghost_hurt.smx] confogl_addcvar ghost_hurt_type 1 @@ -35,7 +38,7 @@ confogl_addcvar l4d_obey_boss_spawn_except_static 1 confogl_addcvar l4d_no_bash_kills 1 // [l4d_jockey_ledgehang.smx] -confogl_addcvar z_leap_interval_post_ledge_hang 5 +confogl_addcvar z_leap_interval_post_ledge_hang 12 // [l4d_tank_damage_announce.smx] confogl_addcvar l4d_tankdamage_enabled 1 @@ -51,14 +54,16 @@ confogl_addcvar l4d_tank_painfade_duration 300 confogl_addcvar l4d_tank_painfade_flags 8 // [l4d2_slowdown_control.smx] -confogl_addcvar z_tank_speed_vs 210 -confogl_addcvar z_tank_damage_slow_min_range 0 -confogl_addcvar z_tank_damage_slow_max_range 0 +confogl_addcvar z_tank_speed 220 +confogl_addcvar z_tank_speed_vs 220 +confogl_addcvar z_tank_damage_slow_min_range 32 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar z_tank_autoshotgun_dmg_scale 0.8 confogl_addcvar l4d2_slowdown_gunfire_si 0 confogl_addcvar l4d2_slowdown_gunfire_tank 0 -//confogl_addcvar l4d2_slowdown_water_tank 0 -//confogl_addcvar l4d2_slowdown_water_survivors -1 -//confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220 +confogl_addcvar l4d2_slowdown_water_tank 180 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 // [l4d2_pickup.smx] confogl_addcvar pickup_switch_flags 2 @@ -89,16 +94,17 @@ spit_block_square l4d2_stadium1_apartment 268 587 409 417 // In the elevator (RB confogl_addcvar gfc_hittable_override 1 confogl_addcvar gfc_hittable_rage_override 1 confogl_addcvar gfc_rock_rage_override 1 -confogl_addcvar gfc_spit_extra_time 0.4 -confogl_addcvar gfc_common_extra_time 0.6 -confogl_addcvar gfc_hunter_duration 0 -confogl_addcvar gfc_jockey_duration 0 -confogl_addcvar gfc_smoker_duration 0 -confogl_addcvar gfc_charger_duration 0 +confogl_addcvar gfc_spit_extra_time 0.0 +confogl_addcvar gfc_common_extra_time 0.0 +confogl_addcvar gfc_hunter_duration 0.0 +confogl_addcvar gfc_jockey_duration 0.0 +confogl_addcvar gfc_smoker_duration 0.0 +confogl_addcvar gfc_charger_duration 0.5 +confogl_addcvar gfc_long_charger_duration 1.0 confogl_addcvar gfc_common_zc_flags 9 confogl_addcvar gfc_spit_zc_flags 6 confogl_addcvar gfc_godframe_glows 1 -confogl_addcvar gfc_ff_min_time 0.8 +confogl_addcvar gfc_ff_min_time 2.0 confogl_addcvar gfc_witch_override 1 // [l4d2_m2_control.smx] @@ -108,12 +114,12 @@ confogl_addcvar l4d2_m2_jockey_penalty 4 confogl_addcvar l4d2_m2_smoker_penalty 2 // [l4d2_hittable_control.smx] -confogl_addcvar hc_bridge_car_damage 24.0 +confogl_addcvar hc_bridge_car_damage 25.0 confogl_addcvar hc_stadium_car_damage 25.0 confogl_addcvar hc_broken_forklift_standing_damage 100.0 confogl_addcvar hc_sflog_standing_damage 100.0 confogl_addcvar hc_bhlog_standing_damage 100.0 -confogl_addcvar hc_handtruck_standing_damage 8.0 +confogl_addcvar hc_handtruck_standing_damage 25.0 confogl_addcvar hc_car_standing_damage 100.0 confogl_addcvar hc_bumpercar_standing_damage 100.0 confogl_addcvar hc_forklift_standing_damage 100.0 @@ -122,7 +128,7 @@ confogl_addcvar hc_haybale_standing_damage 100.0 confogl_addcvar hc_baggage_standing_damage 100.0 confogl_addcvar hc_incap_standard_damage -2 confogl_addcvar hc_disable_self_damage 1 -confogl_addcvar hc_overhit_time 1.4 +confogl_addcvar hc_overhit_time 1.375 // [l4d2_si_staggers.smx] confogl_addcvar l4d2_disable_si_friendly_staggers 2 @@ -142,7 +148,7 @@ confogl_addcvar sm_punchstuckfix_unstucktime 0.5 confogl_addcvar tpsf_debug_print 0 // [cfg_motd.smx] -confogl_addcvar sm_cfgmotd_title "barrymod 70.0.0" +confogl_addcvar sm_cfgmotd_title "marrymod 1.0" confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" ///////////////////////////// @@ -155,14 +161,14 @@ codepatch_patch sgspread // Pump settings sm_weapon pumpshotgun damage 15 sm_weapon pumpshotgun bullets 20 -sm_weapon pumpshotgun scatterpitch 4.25 -sm_weapon pumpshotgun scatteryaw 4.25 +sm_weapon pumpshotgun scatterpitch 4.5 +sm_weapon pumpshotgun scatteryaw 4.5 // Chrome settings -sm_weapon shotgun_chrome damage 16 -sm_weapon shotgun_chrome bullets 16 -sm_weapon shotgun_chrome scatterpitch 3.25 -sm_weapon shotgun_chrome scatteryaw 3.25 +sm_weapon shotgun_chrome damage 20 +sm_weapon shotgun_chrome bullets 15 +sm_weapon shotgun_chrome scatterpitch 3.5 +sm_weapon shotgun_chrome scatteryaw 3.5 // First ring settings confogl_addcvar sgspread_ring1_bullets 8 @@ -170,8 +176,8 @@ confogl_addcvar sgspread_ring1_factor 3 confogl_addcvar sgspread_center_pellet 0 // Common damage settings -confogl_addcvar z_shotgun_bonus_damage_range 60 -confogl_addcvar z_shotgun_bonus_damage_multiplier 7 +confogl_addcvar z_shotgun_bonus_damage_range 40 +confogl_addcvar z_shotgun_bonus_damage_multiplier 2.0 /////////////////// // [Boss tweaks] // @@ -207,9 +213,4 @@ exec confogl_personalize.cfg // Confogl Additional confogl_setcvars confogl_resetclientcvars - -// Client Cvar Tracking -confogl_trackclientcvar "mat_hdr_level" "1" "2.0" "0" "0.0" -confogl_startclientchecking - -sm_killlobbyres // Removes the lobby reservation cookie \ No newline at end of file +sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/bobbymod/confogl.cfg b/cfg/cfgogl/bobbymod/confogl.cfg index 526dc765..5cc593a3 100644 --- a/cfg/cfgogl/bobbymod/confogl.cfg +++ b/cfg/cfgogl/bobbymod/confogl.cfg @@ -11,27 +11,27 @@ confogl_addcvar l4d_ready_cfg_name "bobbymod 0.5" // Confogl Cvars -confogl_addcvar mp_gamemode "versus" -confogl_addcvar z_difficulty "normal" -confogl_addcvar confogl_pills_limit 5 +confogl_addcvar mp_gamemode "Mutation12" +confogl_addcvar z_difficulty "Impossible" +confogl_addcvar confogl_pills_limit 6 // bobbymod 4v4 Cvars -confogl_addcvar z_common_limit 30 -confogl_addcvar z_ghost_delay_min 11 +confogl_addcvar z_common_limit 50 +confogl_addcvar z_ghost_delay_min 12 confogl_addcvar z_ghost_delay_max 12 confogl_addcvar z_mega_mob_size 75 confogl_addcvar z_mob_spawn_min_size 20 confogl_addcvar z_mob_spawn_max_size 20 -confogl_addcvar z_mob_spawn_min_interval_normal 500 -confogl_addcvar z_mob_spawn_max_interval_normal 1000 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 //Mean witches confogl_addcvar z_witch_anger_rate 0.4 confogl_addcvar z_witch_flashlight_range 600 confogl_addcvar z_witch_max_threat_time 6 confogl_addcvar z_witch_min_threat_time 4 -confogl_addcvar z_witch_threat_hostile_range 750 -confogl_addcvar z_witch_threat_normal_range 450 +confogl_addcvar z_witch_threat_hostile_range 800 +confogl_addcvar z_witch_threat_normal_range 600 // BOBBY! confogl_addcvar z_cough_cloud_radius 1000 @@ -42,7 +42,6 @@ confogl_addcvar z_vomit_range 1200 confogl_addcvar tongue_range 1600 confogl_addcvar boomer_pz_claw_dmg 10 -confogl_addcvar z_versus_boomer_limit 2 confogl_addcvar z_versus_charger_limit 2 confogl_addcvar z_versus_hunter_limit 2 confogl_addcvar z_versus_jockey_limit 2 @@ -53,7 +52,7 @@ confogl_addcvar z_gun_swing_vs_restore_time 1 confogl_addcvar z_witch_health 2000 confogl_addcvar z_witch_always_kills 1 -//Stats - confogl +// Stats - confogl confogl_addcvar l4d_stats_announcemotd "0" confogl_addcvar l4d_stats_announceplayerjoined "0" confogl_addcvar l4d_stats_announcespecial "0" @@ -67,13 +66,13 @@ confogl_addcvar l4d_stats_ffire_mode "0" confogl_addcvar l4d_stats_silencechat "1" confogl_addcvar l4d_stats_disabledmessages "0" confogl_addcvar l4d_stats_insaferoom "0" -confogl_addcvar l4d_stats_restart "0" -confogl_addcvar l4d_stats_fkill "100" -confogl_addcvar l4d_stats_fincap "0" +confogl_addcvar l4d_stats_restart "1" +confogl_addcvar l4d_stats_fkill "1" +confogl_addcvar l4d_stats_fincap "1" confogl_addcvar l4d_stats_ffire "1" // ZoneMod Shared Cvars exec cfgogl/bobbymod/shared_cvars.cfg // Config Cvars -exec cfgogl/bobbymod/bobbymod.cfg \ No newline at end of file +exec cfgogl/bobbymod/bobbymod.cfg diff --git a/cfg/cfgogl/busmod/busmod.cfg b/cfg/cfgogl/busmod/busmod.cfg index 4f0109e9..2d42a10c 100644 --- a/cfg/cfgogl/busmod/busmod.cfg +++ b/cfg/cfgogl/busmod/busmod.cfg @@ -8,11 +8,11 @@ // ======================================================================================= // These are the settings for the lerp monitor -confogl_addcvar sm_allowed_lerp_changes 3 +confogl_addcvar sm_allowed_lerp_changes 20 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_readyup_lerp_changes 1 -confogl_addcvar sm_min_lerp 0.0000 -confogl_addcvar sm_max_lerp 0.1000 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 // Displays the % for the users confogl_addcvar l4d_global_percent 0 @@ -25,20 +25,20 @@ confogl_addcvar bhop_allow_survivor 0 // autopause settings confogl_addcvar autopause_enable 1 -confogl_addcvar autopause_force 0 +confogl_addcvar autopause_force 1 confogl_addcvar autopause_apdebug 0 // crawling -confogl_addcvar l4d2_crawling "1" +confogl_addcvar l4d2_crawling 1 /big pounce -//confogl_addcvar l4d2_pounce_damage_allow "1" +//confogl_addcvar l4d2_pounce_damage_allow 1 //vscript debug -//confogl_addcvar vscript_replacer_debug "7" +//confogl_addcvar vscript_replacer_debug 7 //once use weapons -confogl_addcvar l4d2_usecount 1 +confogl_addcvar l4d2_usecount 2147483647 // [l4d2_weaponrules.smx] l4d2_addweaponrule rifle rifle_ak47 @@ -69,4 +69,4 @@ confogl_addcvar sm_stats_autoprint_vs_round 8372 confogl_addcvar sm_skill_report_enable 1 // Shared Settings -exec cfgogl/busmod/shared_settings.cfg \ No newline at end of file +exec cfgogl/busmod/shared_settings.cfg diff --git a/cfg/cfgogl/busmod/shared_cvars.cfg b/cfg/cfgogl/busmod/shared_cvars.cfg index 53657a93..f76fcefb 100644 --- a/cfg/cfgogl/busmod/shared_cvars.cfg +++ b/cfg/cfgogl/busmod/shared_cvars.cfg @@ -8,7 +8,7 @@ // ======================================================================================= // Server Cvars -sv_pure 2 +sv_pure 0 sv_alltalk 1 confogl_addcvar sv_alltalk 1 confogl_addcvar sv_cheats 0 @@ -18,7 +18,7 @@ confogl_addcvar sv_voiceenable 1 confogl_addcvar sv_log_onefile 0 confogl_addcvar sv_logbans 1 confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar vs_max_team_switches 2147483647 confogl_addcvar versus_marker_num 0 // ReadyUp Cvars @@ -84,8 +84,8 @@ confogl_addcvar director_vs_convert_pills 1 confogl_addcvar director_convert_pills 1 confogl_addcvar director_convert_pills_critical_health 0 confogl_addcvar director_convert_pills_to_defib_health 1 -confogl_addcvar pain_pills_decay_rate 0.27 // Original is 0.27 -confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix +confogl_addcvar pain_pills_decay_rate 0.166667 // Original is 0.27 +confogl_addcvar z_finale_spawn_safety_range 300 // Tank finale bugfix confogl_addcvar sv_force_time_of_day 0 confogl_addcvar z_brawl_chance 0 confogl_addcvar z_female_boomer_spawn_chance 50 @@ -100,39 +100,39 @@ confogl_addcvar ammo_assaultrifle_max 360 confogl_addcvar z_leap_interval_post_incap 16 confogl_addcvar z_jockey_control_variance 0.0 -confogl_addcvar z_vomit_interval 20 +confogl_addcvar z_vomit_interval 18 confogl_addcvar sv_gameinstructor_disable 1 -confogl_addcvar z_spit_interval 16 -confogl_addcvar tongue_hit_delay 12 -confogl_addcvar z_door_pound_damage 160 -confogl_addcvar z_pounce_door_damage 500 -confogl_addcvar tongue_release_fatigue_penalty 0 -confogl_addcvar z_charge_warmup 0 +confogl_addcvar z_spit_interval 15 +confogl_addcvar tongue_hit_delay 10 +confogl_addcvar z_door_pound_damage 1000 +confogl_addcvar z_pounce_door_damage 1000 +confogl_addcvar tongue_release_fatigue_penalty 2500 +confogl_addcvar z_charge_warmup 0.5 // AI Improvement Cvars -confogl_addcvar boomer_exposed_time_tolerance 0.2 +confogl_addcvar boomer_exposed_time_tolerance 30 confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar hunter_pounce_ready_range 1000 +confogl_addcvar hunter_pounce_ready_range 800 confogl_addcvar hunter_committed_attack_range 600 // Tank/Witch Cvars -confogl_addcvar versus_tank_flow_team_variation 0 +confogl_addcvar versus_tank_flow_team_variation 0.0 confogl_addcvar versus_tank_chance 1 confogl_addcvar versus_tank_chance_finale 1 confogl_addcvar versus_tank_chance_intro 1 confogl_addcvar versus_witch_chance 1 confogl_addcvar versus_witch_chance_finale 1 confogl_addcvar versus_witch_chance_intro 1 -confogl_addcvar versus_boss_flow_max 0.85 -confogl_addcvar versus_boss_flow_min 0.25 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min 0.20 -confogl_addcvar tank_stuck_time_suicide 999999999 +confogl_addcvar tank_stuck_time_suicide 86400 confogl_addcvar director_tank_lottery_selection_time 3 -confogl_addcvar z_frustration_spawn_delay 25 -confogl_addcvar z_frustration_los_delay 1.2 +confogl_addcvar z_frustration_spawn_delay 20 +confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar tank_ground_pound_duration 0.1 -confogl_addcvar z_tank_health 4666 +confogl_addcvar z_tank_health 4667 // Stripper Path -confogl_addcvar stripper_cfg_path cfg/stripper/busmod \ No newline at end of file +confogl_addcvar stripper_cfg_path cfg/stripper/busmod diff --git a/cfg/cfgogl/goldengun/confogl.cfg b/cfg/cfgogl/goldengun/confogl.cfg new file mode 100644 index 00000000..c849b553 --- /dev/null +++ b/cfg/cfgogl/goldengun/confogl.cfg @@ -0,0 +1,556 @@ +// ======================================================================================= +// Golden Gun +// Author: dani & Moon +// Contributions: Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +confogl_addcvar l4d_ready_cfg_name "goldengun 0.0" + +// Realism Confogl Cvars +confogl_addcvar mp_gamemode "Versus" +confogl_addcvar z_difficulty "Impossible" + +// danimod 4v4 Cvars +confogl_addcvar z_common_limit 10 +confogl_addcvar z_background_limit 20 +confogl_addcvar z_mega_mob_size 20 +confogl_addcvar z_mob_spawn_min_size 3 +confogl_addcvar z_mob_spawn_max_size 3 +confogl_addcvar z_mob_spawn_finale_size 3 +confogl_addcvar z_mob_spawn_min_interval_normal 600 +confogl_addcvar z_mob_spawn_max_interval_normal 600 +// confogl_addcvar z_spawn_mobs_behind_chance 0 +// confogl_addcvar z_vision_range 2000 +// confogl_addcvar z_vision_range_daylight 2000 +// confogl_addcvar z_vision_range_alert 2000 +// confogl_addcvar z_vision_range_obscured 1000 +// confogl_addcvar z_vision_range_obscured_alert 1000 +// confogl_addcvar z_acquire_far_range 2000 +// confogl_addcvar z_acquire_far_time 1.0 +// confogl_addcvar z_acquire_near_range 500 +// confogl_addcvar z_acquire_time_variance_factor 0.0 +// confogl_addcvar z_hear_runner_far_range 500 +// confogl_addcvar z_hear_runner_near_range 250 +// confogl_addcvar z_hear_gunfire_range 250 +// confogl_addcvar z_force_attack_from_sound_range 500 +// confogl_addcvar z_alert_dot 0.25 +// confogl_addcvar z_notice_near_range 100 +// confogl_addcvar z_notice_it_range 2000 +confogl_addcvar z_close_target_notice_distance 40 +confogl_addcvar z_attack_change_target_range 40 +confogl_addcvar z_attack_on_the_run_range 20 +confogl_addcvar z_hit_from_behind_cosine 1.0 +confogl_addcvar z_hit_from_behind_factor 100 +confogl_addcvar boomer_pz_claw_dmg 100 +confogl_addcvar spitter_pz_claw_dmg 100 +confogl_addcvar smoker_pz_claw_dmg 100 +confogl_addcvar hunter_pz_claw_dmg 100 +confogl_addcvar jockey_pz_claw_dmg 100 +confogl_addcvar charger_pz_claw_dmg 100 +confogl_addcvar z_claw_hit_pitch_min -10 +confogl_addcvar z_claw_hit_pitch_max 10 +confogl_addcvar z_claw_hit_yaw_min -10 +confogl_addcvar z_claw_hit_yaw_max 10 +// confogl_addcvar punch_angle_decay_rate 30 +// confogl_addcvar vs_survivor_damage_reduction 1.0 +confogl_addcvar survivor_damage_speed_factor 0.5 +confogl_addcvar z_throttle_hit_interval_normal 0.5 +// confogl_addcvar z_falling_land_speed 500 +// confogl_addcvar z_falling_land_hard_speed 500 +// confogl_addcvar z_falling_land_forward_speed 500 +// confogl_addcvar z_max_player_zombies 4 +// confogl_addcvar claw_range 50 +// confogl_addcvar claw_range_down 75 +// confogl_addcvar claw_swing_duration 0.166667 +confogl_addcvar z_ghost_delay_min 20 +confogl_addcvar z_ghost_delay_max 20 +// confogl_addcvar z_ghost_delay_minspawn 1 +// confogl_addcvar z_ghost_spawn_interval 20 +// confogl_addcvar z_ghost_checkpoint_spawn_interval 20 +// confogl_addcvar z_ghost_finale_spawn_interval 20 +// confogl_addcvar z_ghost_offer_spawn_safety_time 20 +// confogl_addcvar z_ghost_spawn_distance 250 +// confogl_addcvar z_ghost_ahead_flow 250 +// confogl_addcvar z_ghost_travel_distance 500 +// confogl_addcvar z_respawn_interval 30 +// confogl_addcvar z_respawn_distance 250 +// confogl_addcvar z_safe_spawn_range 500 +// confogl_addcvar z_discard_range 2000 +// confogl_addcvar z_discard_min_range 0 +// confogl_addcvar z_cull_timeout 10 + +// Balancing Cvars +// confogl_addcvar z_spawn_safety_range 250 +// confogl_addcvar z_cooldown_spawn_safety_range 250 +// confogl_addcvar z_finale_spawn_safety_range 250 +// confogl_addcvar z_finale_spawn_mob_safety_range 250 +// confogl_addcvar z_finale_spawn_tank_safety_range 500 +// confogl_addcvar z_fallen_max_count 1 +// confogl_addcvar sv_fallen_survivor_health_multiplier 1.0 +// confogl_addcvar z_fallen_kill_suppress_time 180 +// confogl_addcvar sv_infected_ceda_vomitjar_probability 0.10 +// confogl_addcvar sv_infected_riot_control_tonfa_probability 0.00 +// confogl_addcvar sv_infected_police_tonfa_probability 0.00 +// confogl_addcvar z_holiday_gift_drop_chance 1.00 +// confogl_addcvar z_brawl_chance 0 +// confogl_addcvar z_female_boomer_spawn_chance 50 +// confogl_addcvar director_always_allow_wanderers 1 +// confogl_addcvar z_must_wander 1 +// confogl_addcvar nav_lying_down_percent 0 +// confogl_addcvar survivor_limit 4 +// confogl_addcvar survivor_speed 220 +// confogl_addcvar survivor_upgrade_reload_duration 0.75 +// confogl_addcvar z_ghost_friction 1.75 +// confogl_addcvar z_walk_speed 90 +// confogl_addcvar z_crouch_speed 80 +// confogl_addcvar sv_airaccelerate 15 +// confogl_addcvar sv_wateraccelerate 20 +// confogl_addcvar sv_waterfriction 10 +// confogl_addcvar sv_noclipaccelerate 5 +// confogl_addcvar sv_noclipfriction 4 +// confogl_addcvar sv_noclipspeed 3 +// confogl_addcvar sv_noclipduringpause 1 +// confogl_addcvar sv_specaccelerate 5 +// confogl_addcvar sv_specspeed 3 +// confogl_addcvar sv_waterdist 0 +// confogl_addcvar sv_rollspeed 100 +// confogl_addcvar mp_freezetime 0 +// confogl_addcvar fuel_barrel_health 50 +// confogl_addcvar fuel_barrel_damage_radius 250 +// confogl_addcvar fuel_barrel_screen_shake_amplitude 25 +// confogl_addcvar func_break_max_pieces 30 +// confogl_addcvar car_alarm_distance 900 +// confogl_addcvar car_alarm_chirp_distance 400 +// confogl_addcvar z_door_reopen_interval 0.25 +// confogl_addcvar ladder_autocenter 0 +// confogl_addcvar z_use_tolerance 0.8 +// confogl_addcvar intensity_factor 0.5 +// confogl_addcvar intensity_decay_time 20 +// confogl_addcvar intensity_enemy_death_near_range 250 +// confogl_addcvar director_build_up_min_interval 10 +// confogl_addcvar director_sustain_peak_min_time 5 +// confogl_addcvar director_sustain_peak_max_time 10 +// confogl_addcvar director_relax_min_interval 20 +// confogl_addcvar director_relax_max_interval 30 +// confogl_addcvar director_intensity_threshold 0.5 +// confogl_addcvar director_intensity_relax_threshold 0.5 +// confogl_addcvar director_intensity_relax_allow_wanderers_threshold 1.0 +// confogl_addcvar survivor_calm_intensity 0.0 +// confogl_addcvar survivor_calm_deploy_delay 5 +// confogl_addcvar survivor_calm_weapon_delay 10 +// confogl_addcvar survivor_calm_damage_delay 10 +// confogl_addcvar survivor_calm_recent_enemy_delay 10 +// confogl_addcvar z_reload_chatter_intensity 0.0 +// confogl_addcvar z_reload_chatter_recent_enemy 5 +// confogl_addcvar z_reload_chatter_shotgun_ammo_threshold 10 +// confogl_addcvar shout_min_use_range 250 +// confogl_addcvar shout_max_warn_range 1500 +// confogl_addcvar shout_min_warn_interval 5 +// confogl_addcvar shout_min_special_warn_interval 1 +// confogl_addcvar shout_min_warn_interval 2 +// confogl_addcvar shout_threat_range 1500 +// confogl_addcvar z_vocalize_shot_interval 1 +// confogl_addcvar shout_going_to_die_interval 30 +// confogl_addcvar shout_make_way_interval 3 + + +// Competitive Cvars +// confogl_addcvar director_pistol_density -1.0 +// confogl_addcvar director_magnum_spawn_density -1.0 +// confogl_addcvar director_molotov_density 6.48074069840786 +// confogl_addcvar director_pipe_bomb_density 6.48074069840786 +// confogl_addcvar director_vomitjar_density 6.48074069840786 +// confogl_addcvar director_defibrillator_density 6.48074069840786 +// confogl_addcvar director_pain_pill_density 6.48074069840786 +// confogl_addcvar director_adrenaline_density 6.48074069840786 +// confogl_addcvar director_gas_can_density 6.48074069840786 +// confogl_addcvar director_propane_tank_density 6.48074069840786 +// confogl_addcvar director_oxygen_tank_density 6.48074069840786 +// confogl_addcvar director_configurable_weapon_spawn_density 0 +// confogl_addcvar director_ammo_density 0 +// confogl_addcvar director_melee_weapon_density 0 +// confogl_addcvar director_super_weapon_density 0 +// confogl_addcvar director_upgradepack_density 0 +confogl_addcvar director_cs_weapon_spawn_chance 0 +confogl_addcvar director_per_map_weapon_upgrade_chance 0 +confogl_addcvar director_convert_pills 1 +confogl_addcvar director_vs_convert_pills 1 +confogl_addcvar director_convert_pills_criticadral_health 100 +confogl_addcvar director_convert_pills_to_defib_health 0 +confogl_addcvar survivor_limp_health 25 +// confogl_addcvar survivor_max_incapacitated_count 3 +// confogl_addcvar survivor_revive_duration 4.5 +confogl_addcvar survivor_revive_health 50 +confogl_addcvar first_aid_kit_use_duration 4.5 +confogl_addcvar first_aid_heal_percent 1.0 +// confogl_addcvar defibrillator_use_duration 2 +// confogl_addcvar defibrillator_return_to_life_time 1 +confogl_addcvar z_survivor_respawn_health 100 +confogl_addcvar survivor_respawn_with_guns 1 +// confogl_addcvar pain_pills_health_value 75 +// confogl_addcvar pain_pills_decay_rate 0.1 +// confogl_addcvar adrenaline_duration 20 +// confogl_addcvar adrenaline_health_buffer 50 +// confogl_addcvar z_push_force 0 +// confogl_addcvar z_pushaway_force 0 +// confogl_addcvar z_push_mass_max 0 +// confogl_addcvar z_carry_max_mass 0 +// confogl_addcvar z_max_neighbor_range 40 +// confogl_addcvar z_avoid_max_range 20 +// confogl_addcvar z_avoid_min_range 10 +// confogl_addcvar z_avoid_power 0 +// confogl_addcvar z_avoidforce 0 +confogl_addcvar z_max_stagger_duration 2 +// confogl_addcvar z_gun_stun_duration 1 +// confogl_addcvar z_gun_swing_interval 0.666667 +// confogl_addcvar z_gun_swing_duration 0.166667 +// confogl_addcvar z_gun_range 60 +// confogl_addcvar z_gun_damage 50 +confogl_addcvar z_gun_swing_vs_min_penalty 4 +confogl_addcvar z_gun_swing_vs_max_penalty 6 +confogl_addcvar z_gun_swing_vs_restore_time 1 +confogl_addcvar z_gun_survivor_friend_push 1 +// confogl_addcvar z_gun_survivor_shove_dot 1.0 +// confogl_addcvar z_shove_friend_speed 220 +confogl_addcvar z_jockey_control_min 1.0 +// confogl_addcvar z_jockey_control_max 1.0 +// confogl_addcvar z_jockey_control_variance 0.0 +confogl_addcvar z_jockey_min_mounted_speed 1.0 +// confogl_addcvar z_jockey_ride_damage_delay 0.0 +confogl_addcvar z_jockey_ride_damage_interval 0.1 +confogl_addcvar z_jockey_ride_damage 100 +// confogl_addcvar z_leap_interval_post_ride 8 +// confogl_addcvar z_leap_interval_post_incap 16 +// confogl_addcvar z_exploding_speed 180 +// confogl_addcvar z_vomit_duration 1.25 +// confogl_addcvar z_vomit_velocity 2000.0 +// confogl_addcvar z_vomit_drag 1.0 +// confogl_addcvar z_vomit_float -100.0 +// confogl_addcvar z_vomit_boxsize 2.0 +// confogl_addcvar z_vomit_maxdamagedist 400.0 +// confogl_addcvar z_vomit_fatigue 2500 +// confogl_addcvar z_vomit_interval 20 +// confogl_addcvar z_vomit_hit_pitch_min -10 +// confogl_addcvar z_vomit_hit_pitch_max 10 +// confogl_addcvar survivor_it_duration 25 +// confogl_addcvar z_exploding_inner_radius 175 +// confogl_addcvar z_exploding_outer_radius 200 +// confogl_addcvar z_exploding_shove_min 3 +// confogl_addcvar z_exploding_shove_max 3 +// confogl_addcvar z_exploding_shove_interval 4 +// confogl_addcvar z_exploding_splat 0 +// confogl_addcvar z_exploding_splat_radius 250 +// confogl_addcvar z_splat_survivor_shake_radius 300 +// confogl_addcvar z_splat_survivor_shake_amplitude 100 +// confogl_addcvar z_splat_survivor_shake_frequency 200 +// confogl_addcvar z_splat_survivor_pitch_min -10 +// confogl_addcvar z_splat_survivor_pitch_max 10 +// confogl_addcvar gascan_spit_time 2.75 +// confogl_addcvar scavenge_item_respawn_delay 15 +// confogl_addcvar z_cough_cloud_radius 150 +// confogl_addcvar z_cough_cloud_initial_cough_delay 0 +// confogl_addcvar z_cough_cloud_expire 6 +// confogl_addcvar survivor_fog_vocalize_percent 1.0 +// confogl_addcvar z_fog_spawn 1 +// confogl_addcvar z_spitter_speed 210 +// confogl_addcvar z_spit_range 950 +// confogl_addcvar z_spit_velocity 1000 +// confogl_addcvar z_spit_latency 0.25 +// confogl_addcvar z_spit_spread_delay 0.0 +// confogl_addcvar spit_scaling_min_scale 1.0 +// confogl_addcvar z_spit_interval 12 +// confogl_addcvar inferno_acid_spawn_angle 45 +// confogl_addcvar inferno_max_range 250 +// confogl_addcvar inferno_flame_lifetime 12 +// confogl_addcvar inferno_friendly_fire_duration 12 +// confogl_addcvar z_special_burn_dmg_scale 4 +// confogl_addcvar z_burning_lifetime 20 +// confogl_addcvar vomitjar_radius 125 +// confogl_addcvar vomitjar_duration_infected_bot 25 +// confogl_addcvar vomitjar_duration_infected_pz 25 +// confogl_addcvar vomitjar_duration_survivor 0 +// confogl_addcvar z_attack_infected_it_damage 100 +// confogl_addcvar z_attack_pz_it_damage 100 +// confogl_addcvar tongue_los_forgiveness_time 0.5 +// confogl_addcvar tongue_bullet_radius 8.0 +// confogl_addcvar tongue_bend_point_deflection 4.0 +// confogl_addcvar tongue_start_pull_delay 0.1 +// confogl_addcvar tongue_victim_acceleration 10 +// confogl_addcvar tongue_victim_max_speed 150 +// confogl_addcvar tongue_victim_accuracy_penalty 0.1 +// confogl_addcvar survivor_incap_tongued_decay_rate 15 +// confogl_addcvar survivor_hanging_from_tongue_eye_height 50 +// confogl_addcvar tongue_release_fatigue_penalty 0 +// confogl_addcvar tongue_miss_delay 4 +// confogl_addcvar tongue_hit_delay 12 +// confogl_addcvar tongue_vertical_choke_height 8192 +// confogl_addcvar z_hunter_ground_normal 0.1 +// confogl_addcvar z_lunge_interval 0 +// confogl_addcvar z_lunge_cooldown 0 +confogl_addcvar z_hunter_max_pounce_bonus_damage 99 +// confogl_addcvar z_pounce_shake_amplitude 4 +// confogl_addcvar z_pounce_stumble_radius 125 +// confogl_addcvar z_pounce_damage_delay 0.0 +// confogl_addcvar z_pounce_damage_interval 0.1 +confogl_addcvar z_pounce_damage 100 +// confogl_addcvar survivor_pounce_victim_eye_height 20 +// confogl_addcvar versus_shove_hunter_fov 60 +// confogl_addcvar versus_shove_hunter_fov_pouncing 0 +// confogl_addcvar z_charge_duration 2.5 +// confogl_addcvar z_charge_warmup 0.0 +// confogl_addcvar z_charge_start_speed 250 +// confogl_addcvar z_charger_impact_epsilon 4 +// confogl_addcvar z_charge_impact_radius 100 +// confogl_addcvar z_charge_min_force 0 +// confogl_addcvar z_charge_max_force 0 +// confogl_addcvar z_charger_probe_alone 20 +// confogl_addcvar z_charger_probe_attack 20 +confogl_addcvar z_charge_max_damage 100 +confogl_addcvar z_charger_pound_dmg 100 +// confogl_addcvar z_breakable_damage 25 +// confogl_addcvar z_door_pound_damage 500 +// confogl_addcvar z_pounce_door_damage 1000 +// confogl_addcvar z_charge_prop_damage 25 +// confogl_addcvar z_charger_max_prop_force 5000 +// confogl_addcvar survivor_incapacitated_eye_height 25 +// confogl_addcvar survivor_incapacitated_dizzy_severity 1.0 +// confogl_addcvar survivor_incapacitated_dizzy_timer 5 +// confogl_addcvar survivor_incapacitated_accuracy_penalty 0.3 +// confogl_addcvar survivor_incapacitated_reload_multiplier 1.0 +// confogl_addcvar survivor_hanging_eye_height 100 +// confogl_addcvar survivor_incap_max_fall_damage 300 +// confogl_addcvar survivor_ledge_grab_ground_check_time 1.0 +// confogl_addcvar survivor_incap_hopeless_decay_rate 0 + +// AI Improvement Cvars +// confogl_addcvar sb_l4d1_survivor_behavior 0 +// confogl_addcvar survivor_vision_range 500 +// confogl_addcvar survivor_vision_range_obscured 500 +// confogl_addcvar sb_path_lookahead_range 500 +// confogl_addcvar sb_far_hearing_range 2000 +// confogl_addcvar sb_near_hearing_range 1000 +// confogl_addcvar sb_use_button_range 500 +// confogl_addcvar sb_normal_saccade_speed 1000 +// confogl_addcvar sb_combat_saccade_speed 1000 +// confogl_addcvar sb_separation_danger_max_range 300 +// confogl_addcvar sb_separation_danger_min_range 100 +// confogl_addcvar sb_separation_range 200 +// confogl_addcvar sb_max_battlestation_range_from_human 300 +// confogl_addcvar sb_battlestation_give_up_range_from_human 100 +// confogl_addcvar sb_battlestation_human_hold_time 0.25 +// confogl_addcvar sb_max_scavenge_separation 400 +// confogl_addcvar sb_neighbor_range 100 +// confogl_addcvar sb_locomotion_wait_threshold 0 +// confogl_addcvar sb_enforce_proximity_range 400 +// confogl_addcvar sb_enforce_proximity_lookat_timeout 0.5 +// confogl_addcvar sb_debug_apoproach_wait_time 0 +// confogl_addcvar sb_reachability_cache_lifetime 0 +// confogl_addcvar sb_follow_stress_factor 0.0 +// confogl_addcvar sb_allow_shoot_through_survivors 0 +// confogl_addcvar sb_sidestep_for_horde 1 +// confogl_addcvar sb_hindrance_range 100 +// confogl_addcvar survivor_ff_avoidance 1 +// confogl_addcvar survivor_ff_avoidance_pitch 20 +// confogl_addcvar survivor_ff_avoidance_pitch 20 +// confogl_addcvar survivor_ff_tolerance 0 +// confogl_addcvar sb_vomit_blind_time 10 +// confogl_addcvar sb_min_attention_notice_time 0.0 +// confogl_addcvar sb_min_orphan_time_to_cover 0.0 +// confogl_addcvar sb_friend_immobilized_reaction_time_vs 0.1 +// confogl_addcvar sb_revive_friend_distance 150.0 +// confogl_addcvar sb_temp_health_consider_factor 1.0 +// confogl_addcvar sb_toughness_buffer 0 +// confogl_addcvar survivor_give_attract_timeout 15 +// confogl_addcvar sb_narrow_corridor_width 64 +// confogl_addcvar sb_close_checkpoint_door_interval 0.5 +// confogl_addcvar sb_rescue_vehicle_loading_range 50 +// confogl_addcvar nb_update_frequency 0.01 +// confogl_addcvar nb_update_framelimit 10 +// confogl_addcvar nb_update_maxslide 1 +// confogl_addcvar nb_player_move_direct 1 +// confogl_addcvar nb_avoid 0 +// confogl_addcvar nb_avoid_interval 0.01 +// confogl_addcvar nb_path_draw_inc 10000 +// confogl_addcvar nb_path_segment_influence_radius 10000 +// confogl_addcvar nb_goal_look_ahead_range 1000 +// confogl_addcvar nb_speed_look_ahead_range 300 +// confogl_addcvar nb_vision_notice_hidden_range 50 +// confogl_addcvar nb_saccade_speed 1000 +// confogl_addcvar nb_saccade_time 0.10 +// confogl_addcvar nb_head_aim_steady_max_rate 1000 +// confogl_addcvar nb_head_aim_settle_duration 0.10 +// confogl_addcvar nb_friction_forward 0 +// confogl_addcvar nb_friction_sideways 2 +// confogl_addcvar nb_lean_rate 3.0 +// confogl_addcvar nb_lean_forward_accel 150 +// confogl_addcvar nb_lean_max_angle 30 +// confogl_addcvar nb_chase_lead_time 0.0 +// confogl_addcvar nb_ladder_align_range 150 +// confogl_addcvar z_minion_limit 6 +// confogl_addcvar z_minion_aim_tolerance 0.10 +// confogl_addcvar boomer_exposed_time_tolerance 86400 +// confogl_addcvar z_boomer_near_dist 32768 +// confogl_addcvar boomer_vomit_delay 0.0 +// confogl_addcvar z_spitter_high_chance 100 +// confogl_addcvar z_spitter_range 1000 +// confogl_addcvar z_spit_detonate_delay 0.0 +// confogl_addcvar z_spitter_max_wait_time 0 +// confogl_addcvar tongue_cone_start_tolerance 0.1 +// confogl_addcvar smoker_tongue_delay 0 +confogl_addcvar tongue_drag_damage_amount 100 +confogl_addcvar tongue_choke_damage_amount +// confogl_addcvar tongue_dropping_to_ground_time 0.5 +// confogl_addcvar tongue_player_dropping_to_ground_time 0.5 +// confogl_addcvar tongue_break_from_damage_amount 300 +// confogl_addcvar smoker_escape_range 32768 +// confogl_addcvar hunter_pounce_ready_range 1000 +// confogl_addcvar hunter_committed_attack_range 800 +// confogl_addcvar z_hunter_lunge_distance 800 +// confogl_addcvar z_hunter_lunge_pitch 30 +// confogl_addcvar z_pounce_damage_interrupt 300 +// confogl_addcvar hunter_pounce_loft_rate 0.0325 +// confogl_addcvar hunter_pounce_max_loft_angle 90 +// confogl_addcvar z_jockey_leap_time 0.5 +// confogl_addcvar z_jockey_leap_range 250 +// confogl_addcvar z_leap_max_distance 300.0 +// confogl_addcvar jockey_pounce_loft_rate 0.0375 +// confogl_addcvar jockey_pounce_max_loft_angle 90 +// confogl_addcvar jockey_pounce_air_speed 500 +// confogl_addcvar z_jockey_ride_scan_interval 1 +// confogl_addcvar z_jockey_leap_again_timer 4 + +// Tank/Witch Cvars +// confogl_addcvar vs_threat_initial_distance_min 2000 +// confogl_addcvar vs_threat_initial_distance_max 8000 +// confogl_addcvar vs_threat_initial_distance_first_map_min 2000 +// confogl_addcvar vs_threat_initial_distance_first_map_min 8000 +// confogl_addcvar director_threat_radius 1000 +// confogl_addcvar vs_threat_radius 1000 +// confogl_addcvar director_max_threat_areas 2 +// confogl_addcvar director_threat_min_separation 4000 +// confogl_addcvar director_threat_max_separation 6000 +// confogl_addcvar director_threat_clear_radius 0 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +// confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +// confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.2 +confogl_addcvar versus_boss_flow_max 0.6 +confogl_addcvar versus_boss_flow_min_intro 0.3 +confogl_addcvar versus_boss_flow_max_intro 0.7 +confogl_addcvar versus_boss_flow_min_finale 0.4 +confogl_addcvar versus_boss_flow_max_finale 0.8 +// confogl_addcvar versus_boss_padding_min 0.1 +// confogl_addcvar versus_boss_padding_max 0.2 +// confogl_addcvar versus_boss_buffer 2000 + +//Mean Witches +// confogl_addcvar director_force_witch 1 +confogl_addcvar sv_force_time_of_day 0 +confogl_addcvar z_witch_health 500 +// confogl_addcvar z_witch_speed 300 +// confogl_addcvar z_witch_speed_inured 240 +// confogl_addcvar z_witch_always_kills 0 +// confogl_addcvar z_witch_allow_change_victim 1 +// confogl_addcvar z_witch_threat_hostile_range 800 +// confogl_addcvar z_witch_threat_normal_range 600 +// confogl_addcvar z_witch_flashlight_range 600 +// confogl_addcvar z_witch_personal_space 200 +// confogl_addcvar z_witch_wander_hear_radius 400 +// confogl_addcvar z_witch_wander_personal_space 300 +// confogl_addcvar z_witch_berserk_range 300 +// confogl_addcvar z_witch_min_threat_time 4 +// confogl_addcvar z_witch_max_threat_time 6 +// confogl_addcvar z_witch_wander_personal_time 4 +confogl_addcvar z_witch_anger_rate 0.4 +confogl_addcvar z_witch_relax_rate 0.2 +// confogl_addcvar witch_rage_ramp_duration 4 +// confogl_addcvar z_witch_tongue_range 0 +// confogl_addcvar z_witch_attack_range 50 +// confogl_addcvar z_witch_damage_per_kill_hit 30 +// confogl_addcvar z_witch_burn_time 15 +// confogl_addcvar z_witch_min_retreat_range 500 +// confogl_addcvar z_witch_max_retreat_range 1000 +// confogl_addcvar z_witch_retreat_min_duration 5 +// confogl_addcvar z_witch_retreat_exit_range 1000 +// confogl_addcvar z_witch_retreat_exit_hidden_duration 5 +// confogl_addcvar z_witch_discard_range 1000 + +//Mean Tanks +// confogl_addcvar director_force_tank 0 +// confogl_addcvar director_ai_tanks 0 +// confogl_addcvar director_tank_lottery_entry_time 0.1 +confogl_addcvar director_tank_lottery_selection_time 3 +confogl_addcvar z_frustration_spawn_delay 30 +// confogl_addcvar z_frustration_los_delay 0.5 +confogl_addcvar z_tank_health 1333.4 +// confogl_addcvar z_tank_walk_speed 120 +// confogl_addcvar vs_tank_damage 25 +// confogl_addcvar tank_attack_range 60 +// confogl_addcvar tank_swing_range 60 +// confogl_addcvar tank_fist_radius 20 +// confogl_addcvar tank_windup_time 0.475 +// confogl_addcvar tank_swing_duration 0.25 +// confogl_addcvar tank_swing_interval 1.5 +// confogl_addcvar z_tank_attack_interval 1.0 +// confogl_addcvar tank_swing_miss_interval 0.75 +// confogl_addcvar tank_swing_fast_interval 0.5 +// confogl_addcvar tank_swing_yaw 90 +// confogl_addcvar z_tank_throw_force 825 +// confogl_addcvar z_tank_throw_interval 4.75 +// confogl_addcvar z_tank_rock_radius 96 +// confogl_addcvar tank_throw_allow_range 400 +// confogl_addcvar tank_throw_lead_time_factor 0.25 +// confogl_addcvar tank_throw_loft_rate 0.015 +// confogl_addcvar tank_throw_max_loft_angle 90 +// confogl_addcvar tank_throw_min_interval 5 +confogl_addcvar tank_burn_duration 60 +confogl_addcvar tankcontrol_print_all 1 +// confogl_addcvar tank_ground_pound_reveal_distance 400 +// confogl_addcvar tank_ground_pound_duration 1.0 +// confogl_addcvar z_tank_footstep_shake_interval 0.1 +// confogl_addcvar z_tank_footstep_shake_duration 1.0 +// confogl_addcvar z_tank_footstep_shake_radius 600 +// confogl_addcvar z_tank_footstep_shake_amplitude 4 +// confogl_addcvar z_tank_footstep_shake_amplitude 4 +// confogl_addcvar tank_swing_physics_prop_force 3.0 +// confogl_addcvar tank_stuck_time_choose_new_target 0.1 +// confogl_addcvar tank_stuck_time_suicide 86400 +// confogl_addcvar tank_stuck_visibility_tolerance_choose_new_target 0.1 +// confogl_addcvar tank_stuck_visibility_tolerance_suicide 86400 + +// Stats +comp_roundlimitnfogl_addcvar l4d_stats_announcemotd "0" +confogl_addcvar l4d_stats_announceplayerjoined "0" +confogl_addcvar l4d_stats_announcespecial "0" +confogl_addcvar l4d_stats_announcemode "0" +confogl_addcvar l4d_stats_announcerank "0" +confogl_addcvar l4d_stats_rankonjoin "0" +confogl_addcvar l4d_stats_soundsenabled "0" +confogl_addcvar l4d_stats_adm_cleanoldplayers "0" +confogl_addcvar l4d_stats_adm_cleanplaytime "0" +confogl_addcvar l4d_stats_ffire_mode "0" +confogl_addcvar l4d_stats_silencechat "1" +confogl_addcvar l4d_stats_disabledmessages "0" +confogl_addcvar l4d_stats_insaferoom "1" +confogl_addcvar l4d_stats_restart "1" +confogl_addcvar l4d_stats_fkill "1" +confogl_addcvar l4d_stats_fincap "1" +confogl_addcvar l4d_stats_ffire "1" + +// Golden Gun Shared Cvars +exec cfgogl/goldengun/shared_cvars.cfg + +// Shared Settings +exec cfgogl/goldengun/shared_settings.cfg + +// Config Cvars +exec cfgogl/goldengun/goldengun.cfg diff --git a/cfg/cfgogl/goldengun/confogl_off.cfg b/cfg/cfgogl/goldengun/confogl_off.cfg new file mode 100644 index 00000000..9bcf9638 --- /dev/null +++ b/cfg/cfgogl/goldengun/confogl_off.cfg @@ -0,0 +1,40 @@ +// ======================================================================================= +// Golden Gun +// Author: dani & Moon +// Contributions: Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Disable ReadyUp +l4d_ready_enabled 0 +sv_steamgroup_exclusive 1 + +// Reset Default Common Limit, Static Spawns, and String Count +reset_static_maps +sm_resetstringcount + +// Unlock Plugins and reload defaults +confogl_resetclientcvars +confogl_resetcvars +pred_unload_plugins + +//reset the stats plugin to not show up on unload +confogl_addcvar l4d_stats_announcemotd "0" +confogl_addcvar l4d_stats_announceplayerjoined "0" +confogl_addcvar l4d_stats_announcespecial "0" +confogl_addcvar l4d_stats_announcemode "0" +confogl_addcvar l4d_stats_announcerank "0" +confogl_addcvar l4d_stats_rankonjoin "0" +confogl_addcvar l4d_stats_soundsenabled "0" +confogl_addcvar l4d_stats_adm_cleanoldplayers "0" +confogl_addcvar l4d_stats_adm_cleanplaytime "0" +confogl_addcvar l4d_stats_ffire_mode "0" +confogl_addcvar l4d_stats_silencechat "1" +confogl_addcvar l4d_stats_disabledmessages "0" +confogl_addcvar l4d_stats_insaferoom "1" +confogl_addcvar l4d_stats_restart "1" +confogl_addcvar l4d_stats_fkill "1" +confogl_addcvar l4d_stats_fincap "1" +confogl_addcvar l4d_stats_ffire "1" diff --git a/cfg/cfgogl/goldengun/confogl_plugins.cfg b/cfg/cfgogl/goldengun/confogl_plugins.cfg new file mode 100644 index 00000000..4fe84e2a --- /dev/null +++ b/cfg/cfgogl/goldengun/confogl_plugins.cfg @@ -0,0 +1,37 @@ +// ======================================================================================= +// Golden Gun +// Author: dani & Moon +// Contributions: Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------------------------- +// shared plugins +//------------------------------------------- +exec cfgogl/danimod/shared_plugins.cfg + +//------------------------------------------- +// danimod 4v4 +//------------------------------------------- +sm plugins load optional/l4d2_playstats.smx +sm plugins load optional/l4d2_skill_detect.smx +sm plugins load optional/l4d2_stats.smx +sm plugins load optional/witch_and_tankifier.smx +sm plugins load bizzykits2.smx +sm plugins load bizzyvotemute.smx +sm plugins load SpecListener.smx +sm plugins load vscript_replacer.smx +sm plugins load l4d_witch_damage.smx +sm plugins load l4d2scores.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d2_reload_fix.smx +sm plugins load optional/l4d_witch_damage_announce.smx +sm plugins load optional/l4d_gear_transfer.smx + +//------------------------------------------- +// player stats +//------------------------------------------- +sm plugins load l4d_stats.smx diff --git a/cfg/cfgogl/goldengun/goldengun.cfg b/cfg/cfgogl/goldengun/goldengun.cfg new file mode 100644 index 00000000..3026f49a --- /dev/null +++ b/cfg/cfgogl/goldengun/goldengun.cfg @@ -0,0 +1,156 @@ +// ======================================================================================= +// Golden Gun +// Author: dani +// Contributions: Moon & Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Server Settings + +// sv_steamgroup 38693222 +sv_steamgroup_exclusive 0 +// sv_region 0 +// sv_cheats 0 +// sv_pure 0 +// sv_allow_lobby_connect_only 0 +// sv_consistency 0 +// sv_pure_kick_clients 0 +// sv_log_onefile 0 +// sv_logbans 1 +// sv_voiceenable 1 +// sv_alltalk 0 +// sv_allow_wait_command 1 +// sv_pausable 0 +// sv_forcepreload 1 +motd_enabled 1 + +// Server Cvars + +// confogl_addcvar sv_steamgroup 38693222 +// confogl_addcvar sv_steamgroup_exclusive 0 +// confogl_addcvar sv_region 0 +// confogl_addcvar sv_cheats 0 +// confogl_addcvar sv_log_onefile 0 +// confogl_addcvar sv_logbans 1 +// confogl_addcvar sv_voiceenable 1 +// confogl_addcvar sv_alltalk 0 +// confogl_addcvar sv_allow_lobby_connect_only 0 +// confogl_addcvar sv_consistency 0 +// confogl_addcvar sv_pure_kick_clients 0 +// confogl_addcvar sv_allow_wait_command 1 +// confogl_addcvar sv_forcepreload 1 +// confogl_addcvar sv_pausable 0 +// confogl_addcvar sv_pausable_dev 0 +// confogl_addcvar motd_enabled 0 +// confogl_addcvar l4d_stats_nogameplaycheck 1 +// confogl_addcvar sv_visiblemaxplayers 32 +// confogl_addcvar sv_multiplayer_maxtempentities 32 +// confogl_addcvar sv_multiplayer_sounds 32 +// confogl_addcvar sv_parallel_packentities 2 +// confogl_addcvar sv_parallel_sendsnapshot 2 +// confogl_addcvar precache_all_survivors 1 +// confogl_addcvar director_afk_timeout 15 +// confogl_addcvar allow_all_bot_survivor_team 1 +// confogl_addcvar sb_all_bot_game 1 +// confogl_addcvar mp_roundlimit 5 +// confogl_addcvar mp_playerid 0 +// confogl_addcvar mp_playerid_hold 0.2 +// confogl_addcvar mp_limitteams 0 +// confogl_addcvar mp_teams_unbalance_limit 0 +// confogl_addcvar mp_autoteambalance 0 +// confogl_addcvar z_restrict_team_change 0 +// confogl_addcvar vs_max_team_switches 2147483647 +// confogl_addcvar sv_vote_creation_timer 30 +// confogl_addcvar sv_vote_timer_duration 12.5 +// confogl_addcvar sv_vote_command_delay 1.5 +// confogl_addcvar sv_vote_kick_ban_duration 0 +// confogl_addcvar sv_vote_plr_map_limit 2147483647 +// confogl_addcvar sv_pz_endgame_vote_period 15 +// confogl_addcvar sv_pz_endgame_vote_post_period 5 +// confogl_addcvar mp_chattime 30 +// confogl_addcvar changelevel_pause_interval 7.5 +// confogl_addcvar z_round_start_attack_prevention 0 +// confogl_addcvar mp_spawnprotectiontime 0 +// confogl_addcvar versus_force_start_time 300 +// confogl_addcvar versus_round_restarttimer 10 +// confogl_addcvar versus_level_restart_delay 2 +// confogl_addcvar versus_marker_num 3 +// confogl_addcvar z_max_survivor_damage 2147483647 +// confogl_addcvar vs_score_pp_health 1.0 +// confogl_addcvar vs_score_pp_healthbuffer 1.0 +// confogl_addcvar vs_survival_bonus 25 +// confogl_addcvar vs_incap_bonus 25 +// confogl_addcvar vs_tiebreak_bonus 25 +// confogl_addcvar vs_defib_penalty 0 +// confogl_addcvar director_ready_radius 250 +// confogl_addcvar director_ready_duration 30 +// confogl_addcvar scavenge_round_setup_time 30 +// confogl_addcvar scavenge_round_initial_time 90 +// confogl_addcvar scavenge_score_bonus_time 30 +// confogl_addcvar scavenge_round_restart_delay_tied 10 +// confogl_addcvar scavenge_wanderer_respawn_chance 100 + +// Network Cvars + +// confogl_addcvar fps_max 128 +// confogl_addcvar fps_max_splitscreen 128 +// confogl_addcvar net_splitrate 1 +// confogl_addcvar net_splitpacket_maxrate 72000 +// confogl_addcvar net_maxcleartime 0.016667 +// confogl_addcvar net_compresspackets_minsize 1200 +// confogl_addcvar net_maxfilesize 64 +// confogl_addcvar sv_timeout 30 +// confogl_addcvar cl_resend 1.5 +// confogl_addcvar sv_unlag 1 +// confogl_addcvar sv_maxunlag 1.0 +// confogl_addcvar sv_lagcompensationforcerestore 1 +// confogl_addcvar sv_max_queries_sec 12 +// confogl_addcvar sv_max_queries_sec_global 240 +// confogl_addcvar sv_max_queries_window 120 +// confogl_addcvar sv_rcon_minfailuretime 30 +// confogl_addcvar cl_consistencycheck_interval 2147483647 +// confogl_addcvar sv_clockcorrection_msecs 50 +// confogl_addcvar cl_clock_correction_adjustment_max_offset 50 +// confogl_addcvar sv_minrate 72000 +// confogl_addcvar sv_maxrate 72000 +// confogl_addcvar sv_minupdaterate 60 +// confogl_addcvar sv_maxupdaterate 120 +// confogl_addcvar sv_mincmdrate 60 +// confogl_addcvar sv_maxcmdrate 120 +// confogl_addcvar sv_client_cmdrate_difference 0 +// confogl_addcvar sv_client_min_interp_ratio 0 +// confogl_addcvar sv_client_max_interp_ratio 10 +// confogl_addcvar sv_client_predict 1 +// confogl_addcvar think_limit 0 + +// [lerpmonitor.smx] +confogl_addcvar sm_allowed_lerp_changes 20 +confogl_addcvar sm_lerp_change_spec 1 +confogl_addcvar sm_readyup_lerp_changes 1 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 + +// [l4d_boss_percent.smx] +confogl_addcvar l4d_global_percent 0 +confogl_addcvar l4d_tank_percent 1 +confogl_addcvar l4d_witch_percent 1 +confogl_addcvar l4d_boss_vote 1 + +// [l4d2_nobhaps.smx] +confogl_addcvar simple_antibhop_enable 0 +confogl_addcvar bhop_allow_survivor 1 + +// [autopause.smx] +confogl_addcvar autopause_enable 1 +confogl_addcvar autopause_force 0 +confogl_addcvar autopause_apdebug 0 + +// [l4d2_playstats.smx + survivor_mvp] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 + +// [l4d2_skill_detect.smx] +confogl_addcvar sm_skill_report_enable 1 diff --git a/cfg/cfgogl/goldengun/shared_cvars.cfg b/cfg/cfgogl/goldengun/shared_cvars.cfg new file mode 100644 index 00000000..9e81ea6f --- /dev/null +++ b/cfg/cfgogl/goldengun/shared_cvars.cfg @@ -0,0 +1,68 @@ +// ======================================================================================= +// Golden Gun +// Author: dani +// Contributions: Moon & Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +l4d_ready_enabled 0 + +confogl_addcvar l4d_ready_survivor_freeze 0 +confogl_addcvar l4d_ready_delay 0 +confogl_addcvar l4d_ready_enable_sound 1 +confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar coinflip_delay -1 +confogl_addcvar teamflip_delay -1 + +// Config Cvars +confogl_match_execcfg_off "confogl_off.cfg" // Execute this config file upon match mode ends. +confogl_match_execcfg_on "confogl.cfg" // Execute this config file upon match mode starts. +confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun +confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested + +// Confogl Cvars +confogl_addcvar confogl_boss_tank "1" // Tank can't be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player +confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even though they normally aren't allowed +confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales) +confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales +confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play +confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time +confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank) +confogl_addcvar director_allow_infected_bots "1" +confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor +confogl_addcvar confogl_disable_ghost_hurt "0" // Prevents ghost infected from dying when falling into water or off c1m1 +confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range +confogl_addcvar confogl_remove_parachutist "0" // Removes the parachutist (and his items) from c3m2_swamp. +confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws +confogl_addcvar confogl_remove_defib "0" // Remove all defibrillators +confogl_addcvar confogl_remove_grenade "1" // Remove all grenade launchers +confogl_addcvar confogl_remove_m60 "1" // Remove all M60 rifles +confogl_addcvar confogl_remove_lasersight "1" // Remove all laser sight upgrades +confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits) +confogl_addcvar confogl_remove_upg_explosive "1" // Remove all explosive upgrade packs +confogl_addcvar confogl_remove_upg_incendiary "1" // Remove all incendiary upgrade packs +confogl_addcvar confogl_replace_cssweapons "1" // Replace CSS weapons with normal L4D2 weapons +confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills +confogl_addcvar confogl_replace_finalekits "0" // Replace medkits during finale with pain pills +confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10% +confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings +confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round2. +confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits +confogl_addcvar confogl_pills_limit "6" // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_adrenaline_limit "6" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_pipebomb_limit "4" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_molotov_limit "4" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_vomitjar_limit "4" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring +confogl_addcvar confogl_replace_tier2 0 +confogl_addcvar confogl_replace_tier2_finale 0 +confogl_addcvar confogl_replace_tier2_all 0 +confogl_addcvar confogl_limit_tier2 0 +confogl_addcvar confogl_limit_tier2_saferoom 0 + +// Stripper Path +// confogl_addcvar stripper_cfg_path cfg/stripper/goldengun diff --git a/cfg/cfgogl/goldengun/shared_plugins.cfg b/cfg/cfgogl/goldengun/shared_plugins.cfg new file mode 100644 index 00000000..9674b146 --- /dev/null +++ b/cfg/cfgogl/goldengun/shared_plugins.cfg @@ -0,0 +1,147 @@ +// ======================================================================================= +// Golden Gun +// Author: dani +// Contributions: Moon & Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +sm plugins load basecommands.smx +sm plugins load basecomm.smx +sm plugins load basechat.smx +sm plugins load admin-flatfile.smx +sm plugins load adminhelp.smx +sm plugins load adminmenu.smx +sm plugins load funcommands.smx +sm plugins load playercommands.smx +sm plugins load funvotes.smx + +//------------------------------------------- +// Sourcebans +//------------------------------------------- +sm plugins load sbpp_admcfg.smx +sm plugins load sbpp_checker.smx +sm plugins load sbpp_comms.smx +sm plugins load sbpp_main.smx +sm plugins load sbpp_report.smx +sm plugins load sbpp_sleuth.smx + +sm plugins load optional/starting_items.smx +sm plugins load optional/nosaferoomkits.smx +sm plugins load optional/blockheatseekingchargers.smx +sm plugins load optional/blocktrolls.smx +sm plugins load optional/bossspawningfix.smx +sm plugins load optional/coinflip.smx +sm plugins load optional/8ball.smx +sm plugins load optional/changelog.smx +sm plugins load optional/current.smx +sm plugins load optional/finalefix.smx +sm plugins load optional/ghost_hurt.smx +sm plugins load optional/infected_flow_warp.smx +sm plugins load optional/l4d2_fix_deathspit.smx +sm plugins load optional/l4d2_saferoom_detect.smx +sm plugins load optional/l4d2_setscores.smx +sm plugins load optional/l4d2_spec_stays_spec.smx +sm plugins load optional/l4d2_unsilent_jockey.smx +sm plugins load optional/l4d2_weaponrules.smx +sm plugins load optional/l4d_bash_kills.smx +sm plugins load optional/l4d_jockey_ledgehang.smx +sm plugins load optional/l4d_pounceprotect.smx +sm plugins load optional/l4d_stuckzombiemeleefix.smx +sm plugins load optional/l4d_tank_damage_announce.smx +sm plugins load optional/lerpmonitor.smx +sm plugins load optional/pill_passer.smx +sm plugins load optional/ratemonitor.smx +sm plugins load optional/rock_stumble_block.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load optional/starting_items.smx +sm plugins load optional/tankdoorfix.smx +sm plugins load optional/teamflip.smx +sm plugins load optional/temphealthfix.smx +sm plugins load optional/l4d2_drop_secondary.smx +sm plugins load optional/l4d2_m2_control_eq.smx +sm plugins load optional/l4d2_nosecondchances.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d_texture_manager_block.smx +sm plugins load optional/l4d_tankpunchstuckfix.smx +sm plugins load optional/checkpoint-rage-control.smx +sm plugins load optional/l4d2_profitless_ai_tank.smx +sm plugins load optional/l4d2_tank_attack_control.smx +sm plugins load optional/l4d2_tank_announce.smx +sm plugins load optional/l4d2_bw_rock_hit.smx +sm plugins load optional/l4d2_getupfix.smx +sm plugins load optional/l4d_equalise_alarm_cars.smx +sm plugins load optional/nm3_ladder_damage.smx +sm plugins load optional/fix_engine.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load optional/l4d2_charger_getup_fix.smx +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load optional/l4d2_hittable_control.smx +sm plugins load optional/l4d2_stats.smx +sm plugins load optional/l4d2_weapon_attributes.smx +sm plugins load optional/teamflip.smx + +sm plugins load optional/fix_engine.smx +sm plugins load fixes/sv_consistency_fix.smx +sm plugins load fixes/l4d2_lagcomp_manager.smx +sm plugins load optional/l4d_texture_manager_block.smx +sm plugins load fixes/l4d_console_spam.smx +sm plugins load fixes/l4d_votepoll_fix.smx +sm plugins load fixes/l4d2_fix_team_shuffle.smx +sm plugins load optional/noteam_nudging.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_getup_slide_fix.smx +sm plugins load optional/l4d2_static_shotgun_spread.smx +sm plugins load fixes/l4d2_sg552_zoom_fix.smx +sm plugins load fixes/l4d_fix_common_shove.smx +sm plugins load fixes/l4d_fix_punch_block.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_si_ffblock.smx +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load fixes/l4d2_boomer_ladder_fix.smx +sm plugins load fixes/l4d_tongue_bend_fix.smx +sm plugins load fixes/l4d_tongue_block_fix.smx +sm plugins load fixes/l4d_tongue_float_fix.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d2_uniform_spit.smx +sm plugins load fixes/l4d2_spit_spread_patch.smx +sm plugins load fixes/l4d2_spit_cooldown_frozen_fix.smx +sm plugins load fixes/l4d2_jockey_hitbox_fix.smx +sm plugins load fixes/l4d2_jockey_jumpcap_patch.smx +sm plugins load optional/charger_incap_damage.smx +sm plugins load optional/l4d2_tank_damage_cvars.smx +sm plugins load fixes/l4d_static_punch_getup.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load fixes/l4d2_rock_trace_unblock.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load fixes/l4d_checkpoint_rock_patch.smx +sm plugins load optional/l4d2_tank_props_glow.smx +sm plugins load optional/l4d2_hittable_control.smx +sm plugins load fixes/frozen_tank_fix.smx +sm plugins load fixes/l4d_fix_finale_breakable.smx +sm plugins load fixes/l4d_consistent_escaperoute.smx +sm plugins load fixes/l4d_fix_deathfall_cam.smx +sm plugins load fixes/l4d2_hltv_crash_fix.smx +sm plugins load fixes/annoyance_exploit_fixes.smx + +// Code Patcher (Fixes Waterslowdown performance issues on Vanilla and Configs) +sm plugins load optional/code_patcher.smx + +//MATCHMAKING +sm plugins load optional/autopause.smx +sm plugins load optional/readyup.smx +sm plugins load optional/l4d_tank_control_eq.smx +sm plugins load optional/survivor_mvp.smx +sm plugins load optional/cfg_motd.smx +sm plugins load optional/l4d_boss_percent.smx +sm plugins load optional/caster_addons.smx +sm plugins load optional/caster_assister.smx +sm plugins load optional/pause.smx +sm plugins load optional/panel_text.smx +sm plugins load optional/spechud.smx +sm plugins load optional/slots_vote.smx + +sm plugins load confoglcompmod.smx +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/goldengun/shared_settings.cfg b/cfg/cfgogl/goldengun/shared_settings.cfg new file mode 100644 index 00000000..86e43250 --- /dev/null +++ b/cfg/cfgogl/goldengun/shared_settings.cfg @@ -0,0 +1,311 @@ +// ======================================================================================= +// Golden Gun +// Author: dani +// Contributions: Moon & Bizzy +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [starting_items.smx] +//give adren? (1: Kit, 2: Defib, 4: Pills, 8: Adren, 16: Pipebomb, 32: Molotov, 64: Bile +confogl_addcvar starting_item_flags 1 + +// [fix_engine.smx] +confogl_addcvar engine_fix_flags 12 + +// [panel_text.smx] +sm_addreadystring " " +sm_lockstrings + +// [checkpoint-rage-control.smx] +confogl_addcvar crc_global 1 + +// [l4d2_ghost_warp.smx] +confogl_addcvar l4d2_ghost_warp_flag 0 // Enable ghost warp with command only 'sm_warp' +confogl_addcvar l4d2_ghost_warp_delay 0 + +// [l4d_static_punch_getup.smx] +// confogl_addcvar tank_punch_getup_scale 0.25 // 54 frames / 30 fps * 0.25 = 0.45s + +// [ghost_hurt.smx] +confogl_addcvar ghost_hurt_type 1 + +// [l4d2_nosecondchances.smx] +confogl_addcvar bot_kick_delay 86400 + +// [bossspawningfix.smx] +confogl_addcvar l4d_obey_boss_spawn_cvars 1 +confogl_addcvar l4d_obey_boss_spawn_except_static 1 + +// [l4d_bash_kills.smx] +confogl_addcvar l4d_no_bash_kills 1 + +// [l4d_jockey_ledgehang.smx] +confogl_addcvar z_leap_interval_post_ledge_hang 12 + +// [l4d_tank_damage_announce.smx] +confogl_addcvar l4d_tankdamage_enabled 1 + +// [l4d2_tank_attack_control.smx] +confogl_addcvar l4d2_block_punch_rock 1 +confogl_addcvar l4d2_block_jump_rock 1 +confogl_addcvar tank_overhand_only 0 + +// [l4d2_collision_adjustments.smx] +confogl_addcvar collision_tankrock_common 1 +confogl_addcvar collision_smoker_common 1 +confogl_addcvar collision_tankrock_incap 1 + +// [l4d2_rock_trace_unblock.smx] +confogl_addcvar l4d2_rock_trace_unblock_flag 1 +confogl_addcvar l4d2_rock_jockey_dismount 0 + +// [l4d_stuckpunchfix] +confogl_addcvar sm_punchstuckfix_unstucktime 0.5 +confogl_addcvar tpsf_debug_print 0 + +// [charger_incap_damage] +confogl_addcvar charger_dmg_incapped 20 +// confogl_addcvar melee_damage_charger 400 + +// [l4d2_spit_spread_patch.smx] +confogl_addcvar l4d2_spit_spread_saferoom 1 +confogl_addcvar l4d2_deathspit_trace_height 8192 +confogl_addcvar l4d2_spit_max_flames 16 +confogl_addcvar l4d2_spit_water_collision 1 + +// [l4d2_uniform_spit.smx] +confogl_addcvar l4d2_spit_dmg 3 +confogl_addcvar l4d2_spit_alternate_dmg 3 +confogl_addcvar l4d2_spit_max_ticks 25 +confogl_addcvar l4d2_spit_godframe_ticks 5 + +// [l4d_tank_painfade.smx] +confogl_addcvar l4d_tank_painfade 1 +confogl_addcvar l4d_tank_painfade_duration 300 +confogl_addcvar l4d_tank_painfade_flags 8 + +// [l4d2_tank_damage_cvars.smx] +confogl_addcvar vs_tank_pound_damage 36 +confogl_addcvar vs_tank_rock_damage 24 + +// [l4d2_slowdown_control.smx] +confogl_addcvar z_tank_speed_vs 210 +confogl_addcvar z_tank_damage_slow_min_range 32 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar l4d2_slowdown_gunfire_si 0 +confogl_addcvar l4d2_slowdown_gunfire_tank 0 +confogl_addcvar l4d2_slowdown_water_tank 0 +confogl_addcvar l4d2_slowdown_water_survivors -1 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 + +// [l4d2_tank_props_glow.smx] +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483648 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 + +// [l4d2_spitblock.smx] +spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 +spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 +spit_block_square l4d_dbd2dc_clean_up -4194.448242 3614.163818 -4625.936523 3539.908936 +spit_block_square l4d_dbd2dc_undead_center -6902.102539 8809.659180 -7872.751953 8522.269531 +spit_block_square l4d2_fallindeath03 4562.987793 -1769.313721 4446.680664 -1623.422729 +spit_block_square l4d2_fallindeath04 1656.737061 -325.227692 1531.636108 -187.895630 +spit_block_square cdta_03warehouse 6311.086 -13217.889 6192.448 -13347.204 +spit_block_square downpour_sugarmill_a -1444.891235 -9514.031250 -1514.214478 -9575.968750 +spit_block_square downpour_sugarmill_b -1434.379028 -9517.581055 -1514.214478 -9575.968750 +spit_block_square l4d2_darkblood02_engine 2515 5610 2664 5770 +spit_block_square x1m2_path 6303 10742 6522 10893 +spit_block_square c1m1_hotel 2087 5736 2249 5890 +spit_block_square c1m4_atrium -3960 -3324 -4120 -3483 +spit_block_square cotd03_mall 8713 3405 8890 3115 +spit_block_square l4d2_daybreak03_bridge -7365.97 -1889.97 -7294.03 -1754 +spit_block_square l4d2_daybreak04_cruise 8064.77 -6594.97 8141 -6525 + +// [l4d2_godframes_control.smx] +confogl_addcvar gfc_hittable_override 1 +confogl_addcvar gfc_hittable_rage_override 1 +confogl_addcvar gfc_rock_rage_override 1 +confogl_addcvar gfc_spit_extra_time 0.5 +confogl_addcvar gfc_common_extra_time 0.75 +confogl_addcvar gfc_hunter_duration 0.0 +confogl_addcvar gfc_jockey_duration 0.0 +confogl_addcvar gfc_smoker_duration 0.0 +confogl_addcvar gfc_charger_duration 0.25 +confogl_addcvar gfc_long_charger_duration 0.5 +confogl_addcvar gfc_common_zc_flags 9 +confogl_addcvar gfc_spit_zc_flags 6 +confogl_addcvar gfc_godframe_glows 1 +confogl_addcvar gfc_ff_min_time 1.0 +confogl_addcvar gfc_witch_override 1 + +// [l4d2_m2_control.smx] +confogl_addcvar z_max_hunter_pounce_stagger_duration 1 +confogl_addcvar l4d2_m2_hunter_penalty 4 +confogl_addcvar l4d2_m2_jockey_penalty 4 +confogl_addcvar l4d2_m2_smoker_penalty 2 + +// [l4d2_hittable_control.smx] +confogl_addcvar hc_gauntlet_finale_multiplier 1.0 +confogl_addcvar hc_bridge_car_damage 100.0 +confogl_addcvar hc_stadium_car_damage 100.0 +confogl_addcvar hc_broken_forklift_standing_damage 100.0 +confogl_addcvar hc_sflog_standing_damage 100.0 +confogl_addcvar hc_bhlog_standing_damage 100.0 +confogl_addcvar hc_handtruck_standing_damage 100.0 +confogl_addcvar hc_car_standing_damage 100.0 +confogl_addcvar hc_bumpercar_standing_damage 100.0 +confogl_addcvar hc_forklift_standing_damage 100.0 +confogl_addcvar hc_dumpster_standing_damage 100.0 +confogl_addcvar hc_haybale_standing_damage 100.0 +confogl_addcvar hc_baggage_standing_damage 100.0 +confogl_addcvar hc_incap_standard_damage -2 +confogl_addcvar hc_disable_self_damage 1 +confogl_addcvar hc_overhit_time 1.5 + +// [l4d2_si_staggers.smx] +confogl_addcvar l4d2_disable_si_friendly_staggers 2 + +// [l4d2_si_ffblock.smx] +confogl_addcvar l4d2_block_infected_ff 1 +confogl_addcvar l4d2_infected_ff_allow_tank 1 + +// [l4d2_unsilent_jockey.smx] +confogl_addcvar sm_unsilentjockey_enabled 1 +confogl_addcvar sm_unsilentjockey_always 1 +confogl_addcvar sm_unsilentjockey_time 2 + +// [l4d2_weaponrules.smx] + +// l4d2_addweaponrule pistol pistol +l4d2_addweaponrule pistol_magnum pistol_magnum +l4d2_addweaponrule smg pistol_magnum +l4d2_addweaponrule smg_silenced pistol_magnum +l4d2_addweaponrule smg_mp5 pistol_magnum +l4d2_addweaponrule pumpshotgun pistol_magnum +l4d2_addweaponrule shotgun_chrome pistol_magnum +l4d2_addweaponrule rifle pistol_magnum +l4d2_addweaponrule rifle_ak47 pistol_magnum +l4d2_addweaponrule rifle_desert pistol_magnum +l4d2_addweaponrule rifle_sg552 pistol_magnum +l4d2_addweaponrule autoshotgun pistol_magnum +l4d2_addweaponrule shotgun_spas pistol_magnum +l4d2_addweaponrule hunting_rifle pistol_magnum +l4d2_addweaponrule sniper_military pistol_magnum +l4d2_addweaponrule sniper_scout pistol_magnum +l4d2_addweaponrule sniper_awp pistol_magnum +l4d2_addweaponrule grenade_launcher pistol_magnum +l4d2_addweaponrule rifle_m60 pistol_magnum +l4d2_addweaponrule fireaxe pistol_magnum +l4d2_addweaponrule crowbar pistol_magnum +l4d2_addweaponrule baseball_bat pistol_magnum +l4d2_addweaponrule cricket_bat pistol_magnum +l4d2_addweaponrule katana pistol_magnum +l4d2_addweaponrule golfclub pistol_magnum +l4d2_addweaponrule electric_guitar pistol_magnum +l4d2_addweaponrule frying_pan pistol_magnum +l4d2_addweaponrule machete pistol_magnum +l4d2_addweaponrule tonfa pistol_magnum +l4d2_addweaponrule shovel pistol_magnum +l4d2_addweaponrule pitchfork pistol_magnum +l4d2_addweaponrule knife pistol_magnum +l4d2_addweaponrule riotshield pistol_magnum +l4d2_addweaponrule chainsaw pistol_magnum +l4d2_addweaponrule ammo pistol_magnum +l4d2_addweaponrule ammo_coffee pistol_magnum + +// [l4d2_reload_fix.smx] +confogl_addcvar l4d2_reload_pistol_magnum 2.0 +confogl_addcvar l4d2_reload_speed_uzi 2.0 +confogl_addcvar l4d2_reload_speed_silenced_smg 2.2 +confogl_addcvar l4d2_reload_speed_smg_mp5 2.4 + +// [l4d2_shotgun_ff.smx] +confogl_addcvar l4d2_shotgun_ff_multi 0.5 +confogl_addcvar l4d2_shotgun_ff_min 2 +confogl_addcvar l4d2_shotgun_ff_max 10 + +// [cfg_motd.smx] +confogl_addcvar sm_cfgmotd_title "GoldenGun 0.0" +confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" + +///////////////////////////// +// [Static shotgun spread] // +///////////////////////////// + +// Apply binary patch +//codepatch_patch sgspread + +// First ring settings +//confogl_addcvar sgspread_ring1_bullets 8 +//confogl_addcvar sgspread_ring1_factor 4 +//confogl_addcvar sgspread_center_pellet 0 + +//////////////// +// [Pistol] // +//////////////// + +sm_weapon pistol clipsize 1 +sm_weapon pistol range 8192 +sm_weapon pistol penetrationpower 100 +sm_weapon pistol penetrationnumlayers 3 +sm_weapon pistol damage 100 +sm_weapon pistol rangemod 1.0 + +//////////////// +// [Deagle] // +//////////////// + +sm_weapon pistol_magnum clipsize 1 +sm_weapon pistol_magnum damage 100 +sm_weapon pistol_magnum range 8192 +sm_weapon pistol_magnum rangemod 1.0 +sm_weapon pistol_magnum penetrationpower 100 +sm_weapon pistol_magnum penetrationnumlayers 3 + +/////////////////// +// [Boss tweaks] // +/////////////////// + +// Static Tank maps / flow Tank disabled +static_tank_map c1m4_atrium +static_tank_map c2m5_concert +static_tank_map c4m5_milltown_escape +static_tank_map c5m5_bridge +static_tank_map c7m1_docks +static_tank_map c7m3_port +static_tank_map c8m5_rooftop +static_tank_map c11m5_runway +static_tank_map c13m2_southpinestream +static_tank_map c13m4_cutthroatcreek +static_tank_map l4d2_darkblood04_extraction +static_tank_map x1m5_salvation +static_tank_map uf4_airfield +static_tank_map dprm5_milltown_escape +static_tank_map l4d2_diescraper4_top_361 +static_tank_map dkr_m1_motel +static_tank_map dkr_m2_carnival +static_tank_map dkr_m3_tunneloflove +static_tank_map dkr_m4_ferris +static_tank_map dkr_m5_stadium + +// Static Witch Maps +static_witch_map c4m5_milltown_escape +static_witch_map c5m5_bridge +static_witch_map c6m1_riverbank +static_witch_map c6m3_port +static_witch_map c7m3_port +static_witch_map c13m4_cutthroatcreek + +// Personalized settings +exec confogl_personalize.cfg + +// Confogl Additional +confogl_setcvars +confogl_resetclientcvars +sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/kneemod/confogl.cfg b/cfg/cfgogl/kneemod/confogl.cfg index d8211fe4..b67311a8 100644 --- a/cfg/cfgogl/kneemod/confogl.cfg +++ b/cfg/cfgogl/kneemod/confogl.cfg @@ -8,49 +8,49 @@ // ======================================================================================= // ReadyUp Cvars -confogl_addcvar l4d_ready_cfg_name "kneemod 2.3" +confogl_addcvar l4d_ready_cfg_name "kneemod 2.5" // Confogl Cvars confogl_addcvar mp_gamemode "mutation12" -confogl_addcvar z_difficulty "normal" +confogl_addcvar z_difficulty "Impossible" confogl_addcvar confogl_pills_limit 6 -confogl_addcvar z_health 10 -confogl_addcvar adrenaline_health_buffer 50 +confogl_addcvar z_health 50 +confogl_addcvar adrenaline_health_buffer 40 +confogl_addcvar pain_pills_health_value 60 // kneemod 4v4 Cvars confogl_addcvar z_common_limit 50 confogl_addcvar z_mega_mob_size 75 -confogl_addcvar z_mob_spawn_min_size 28 -confogl_addcvar z_mob_spawn_max_size 30 -confogl_addcvar z_mob_spawn_min_interval_normal 2000 -confogl_addcvar z_mob_spawn_max_interval_normal 2000 +confogl_addcvar z_mob_spawn_min_size 25 +confogl_addcvar z_mob_spawn_max_size 50 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 // kneemod FF -confogl_addcvar survivor_ff_tolerance 5 -confogl_addcvar survivor_friendly_fire_factor_normal 1.75 +confogl_addcvar survivor_ff_tolerance 0 +confogl_addcvar survivor_friendly_fire_factor_normal 1.0 confogl_addcvar grenadelauncher_ff_scale 0.5 confogl_addcvar grenadelauncher_ff_scale_self 0.5 -confogl_addcvar inferno_friendly_fire_duration 10 +confogl_addcvar inferno_friendly_fire_duration 15 confogl_addcvar z_friendly_fire_forgiveness 0 confogl_addcvar inferno_damage 50 -confogl_addcvar inferno_fire 10 -confogl_addcvar inferno_flame_spacing 60 // tank stuffz confogl_addcvar z_tank_speed_vs 225 // m2 control -confogl_addcvar z_gun_swing_vs_max_penalty 4 -confogl_addcvar z_gun_swing_vs_min_penalty 2 +confogl_addcvar z_gun_swing_vs_max_penalty 6 +confogl_addcvar z_gun_swing_vs_min_penalty 4 // crawling -confogl_addcvar l4d2_crawling "1" +confogl_addcvar survivor_allow_crawling 1 +confogl_addcvar l4d2_crawling 1 // give'em weakness -confogl_addcvar z_jockey_health 280 -confogl_addcvar z_hunter_health 225 +confogl_addcvar z_jockey_health 300 +confogl_addcvar z_hunter_health 250 confogl_addcvar z_charger_health 500 -confogl_addcvar z_spitter_health 90 +confogl_addcvar z_spitter_health 100 // give'em power confogl_addcvar hunter_pz_claw_dmg 12 @@ -76,7 +76,7 @@ confogl_addcvar z_witch_flashlight_range 600 confogl_addcvar z_witch_max_threat_time 6 confogl_addcvar z_witch_min_threat_time 4 confogl_addcvar z_witch_threat_hostile_range 750 -confogl_addcvar z_witch_threat_normal_range 450 +confogl_addcvar z_witch_threat_normal_range 500 //Stats confogl_addcvar l4d_stats_announcemotd "0" @@ -91,14 +91,14 @@ confogl_addcvar l4d_stats_adm_cleanplaytime "0" confogl_addcvar l4d_stats_ffire_mode "0" confogl_addcvar l4d_stats_silencechat "1" confogl_addcvar l4d_stats_disabledmessages "0" -confogl_addcvar l4d_stats_insaferoom "0" +confogl_addcvar l4d_stats_insaferoom "1" confogl_addcvar l4d_stats_restart "0" -confogl_addcvar l4d_stats_fkill "100" -confogl_addcvar l4d_stats_fincap "0" +confogl_addcvar l4d_stats_fkill "1" +confogl_addcvar l4d_stats_fincap "1" confogl_addcvar l4d_stats_ffire "1" // kneemod Shared Cvars exec cfgogl/kneemod/shared_cvars.cfg // Config Cvars -exec cfgogl/kneemod/kneemod.cfg \ No newline at end of file +exec cfgogl/kneemod/kneemod.cfg diff --git a/cfg/cfgogl/kneemod/kneemod.cfg b/cfg/cfgogl/kneemod/kneemod.cfg index 70deb752..862daafd 100644 --- a/cfg/cfgogl/kneemod/kneemod.cfg +++ b/cfg/cfgogl/kneemod/kneemod.cfg @@ -8,11 +8,11 @@ // ======================================================================================= // [lerpmonitor.smx] -confogl_addcvar sm_allowed_lerp_changes 3 +confogl_addcvar sm_allowed_lerp_changes 20 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_readyup_lerp_changes 1 -confogl_addcvar sm_min_lerp 0.0000 -confogl_addcvar sm_max_lerp 0.1000 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 // [l4d_boss_percent.smx] confogl_addcvar l4d_global_percent 0 @@ -37,4 +37,4 @@ confogl_addcvar sm_stats_autoprint_vs_round 8372 confogl_addcvar sm_skill_report_enable 1 // Shared Settings -exec cfgogl/kneemod/shared_settings.cfg \ No newline at end of file +exec cfgogl/kneemod/shared_settings.cfg diff --git a/cfg/cfgogl/kneemod/shared_cvars.cfg b/cfg/cfgogl/kneemod/shared_cvars.cfg index 7b4c0e6a..05049b8f 100644 --- a/cfg/cfgogl/kneemod/shared_cvars.cfg +++ b/cfg/cfgogl/kneemod/shared_cvars.cfg @@ -8,17 +8,21 @@ // ======================================================================================= // Server Cvars -sv_pure 2 -sv_alltalk 1 -confogl_addcvar sv_alltalk 1 +sv_pure 0 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 confogl_addcvar sv_cheats 0 -confogl_addcvar sv_consistency 1 -confogl_addcvar sv_pure_kick_clients 1 +confogl_addcvar sv_consistency 0 +confogl_addcvar sv_pure_kick_clients 0 +confogl_addcvar sv_allow_lobby_connect_only 0 +confogl_addcvar motd_enabled 1 confogl_addcvar sv_voiceenable 1 +confogl_addcvar sv_alltalk 1 confogl_addcvar sv_log_onefile 0 confogl_addcvar sv_logbans 1 -confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar vs_max_team_switches 2147483647 confogl_addcvar versus_marker_num 0 // ReadyUp Cvars @@ -69,9 +73,9 @@ confogl_addcvar confogl_enable_itemtracking "1" // Enable th confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round2. confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits confogl_addcvar confogl_adrenaline_limit "6" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_pipebomb_limit "3" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_molotov_limit "2" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_vomitjar_limit "2" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_pipebomb_limit "6" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_molotov_limit "4" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_vomitjar_limit "4" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring confogl_addcvar confogl_replace_tier2 0 confogl_addcvar confogl_replace_tier2_finale 0 @@ -82,10 +86,10 @@ confogl_addcvar confogl_limit_tier2_saferoom 0 // Balancing Cvars confogl_addcvar director_vs_convert_pills 1 confogl_addcvar director_convert_pills 1 -confogl_addcvar director_convert_pills_critical_health 1 +confogl_addcvar director_convert_pills_critical_health 0 confogl_addcvar director_convert_pills_to_defib_health 0 -confogl_addcvar pain_pills_decay_rate 0.675 // Original is 0.27 -confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix +confogl_addcvar pain_pills_decay_rate 0.333333 // Original is 0.27 +confogl_addcvar z_finale_spawn_safety_range 300 // Tank finale bugfix confogl_addcvar sv_force_time_of_day 0 confogl_addcvar z_brawl_chance 0 confogl_addcvar z_female_boomer_spawn_chance 50 @@ -101,41 +105,41 @@ confogl_addcvar ammo_autoshotgun_max 40 confogl_addcvar ammo_chainsaw_max 50 confogl_addcvar ammo_huntingrifle_max 60 -confogl_addcvar z_leap_interval_post_incap 16 +confogl_addcvar z_leap_interval_post_incap 15 confogl_addcvar z_jockey_control_variance 0.0 -confogl_addcvar z_vomit_interval 21 +confogl_addcvar z_vomit_interval 18 confogl_addcvar sv_gameinstructor_disable 1 -confogl_addcvar z_spit_interval 17 -confogl_addcvar tongue_hit_delay 12 -confogl_addcvar z_door_pound_damage 160 -confogl_addcvar z_pounce_door_damage 500 -confogl_addcvar tongue_release_fatigue_penalty 0 -confogl_addcvar z_charge_warmup 0 +confogl_addcvar z_spit_interval 15 +confogl_addcvar tongue_hit_delay 10 +confogl_addcvar z_door_pound_damage 1000 +confogl_addcvar z_pounce_door_damage 1000 +confogl_addcvar tongue_release_fatigue_penalty 2500 +confogl_addcvar z_charge_warmup 0.5 // AI Improvement Cvars -confogl_addcvar boomer_exposed_time_tolerance 0 +confogl_addcvar boomer_exposed_time_tolerance 30 confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar hunter_pounce_ready_range 1000 +confogl_addcvar hunter_pounce_ready_range 800 confogl_addcvar hunter_committed_attack_range 600 // Tank/Witch Cvars -confogl_addcvar versus_tank_flow_team_variation 0 -confogl_addcvar versus_tank_chance 1 -confogl_addcvar versus_tank_chance_finale 1 -confogl_addcvar versus_tank_chance_intro 1 -confogl_addcvar versus_witch_chance 1 -confogl_addcvar versus_witch_chance_finale 1 -confogl_addcvar versus_witch_chance_intro 1 -//confogl_addcvar versus_boss_flow_max 0.80 -//confogl_addcvar versus_boss_flow_min 0.25 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min 0.20 -confogl_addcvar tank_stuck_time_suicide 999999999 +confogl_addcvar tank_stuck_time_suicide 86400 confogl_addcvar director_tank_lottery_selection_time 3 -confogl_addcvar z_frustration_spawn_delay 25 -confogl_addcvar z_frustration_los_delay 1.2 +confogl_addcvar z_frustration_spawn_delay 20 +confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar tank_ground_pound_duration 0.1 -confogl_addcvar z_tank_health 3333 +confogl_addcvar z_tank_health 4000 // Stripper Path -//confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod \ No newline at end of file +//confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod diff --git a/cfg/cfgogl/numbersmod/confogl.cfg b/cfg/cfgogl/numbersmod/confogl.cfg index 6044c86d..50be365e 100644 --- a/cfg/cfgogl/numbersmod/confogl.cfg +++ b/cfg/cfgogl/numbersmod/confogl.cfg @@ -1,7 +1,7 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod @@ -11,30 +11,95 @@ confogl_addcvar l4d_ready_cfg_name "numbersmod 6.9.420" // Confogl Cvars -confogl_addcvar mp_gamemode "mutation12" -confogl_addcvar z_difficulty "normal" -confogl_addcvar confogl_pills_limit 3 -confogl_addcvar z_health 40 +confogl_addcvar mp_gamemode Versus +confogl_addcvar z_difficulty Impossible +confogl_addcvar sv_disable_glow_survivors 1 +confogl_addcvar sv_disable_glow_faritems 0 +confogl_addcvar l4d2_temphealthmedkits_enable 1 +confogl_addcvar first_aid_heal_percent 0.85 +confogl_addcvar confogl_pills_limit 4 +// confogl_addcvar pain_pills_health_value 50 +// confogl_addcvar pain_pills_decay_rate 0.166667 +// confogl_addcvar adrenaline_duration 20 +// confogl_addcvar adrenaline_run_speed 260 confogl_addcvar adrenaline_health_buffer 30 +confogl_addcvar l4d_gear_transfer_method 2 // numbermod 4v4 Cvars +confogl_addcvar z_health 100 +// confogl_addcvar z_non_head_damage_factor_easy 2 +confogl_addcvar z_non_head_damage_factor_normal 1 +// confogl_addcvar z_non_head_damage_factor_hard 1 +// confogl_addcvar z_non_head_damage_factor_expert 1 +confogl_addcvar z_non_head_damage_factor_multiplier 1 +confogl_addcvar z_head_damage_causes_wounds 1 +confogl_addcvar z_shotgun_bonus_damage_range 100 +confogl_addcvar z_shotgun_bonus_damage_multiplier 1.5 confogl_addcvar z_common_limit 40 -confogl_addcvar z_mega_mob_size 75 -confogl_addcvar z_mob_spawn_min_size 20 -confogl_addcvar z_mob_spawn_max_size 20 -confogl_addcvar z_mob_spawn_min_interval_normal 2500 -confogl_addcvar z_mob_spawn_max_interval_normal 2500 +// confogl_addcvar z_background_limit 40 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_finale_size 40 +// confogl_addcvar z_mob_spawn_min_interval_easy 120 +// confogl_addcvar z_mob_spawn_max_interval_easy 240 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 +// confogl_addcvar z_mob_spawn_min_interval_hard 120 +// confogl_addcvar z_mob_spawn_max_interval_hard 240 +// confogl_addcvar z_mob_spawn_min_interval_expert 120 +// confogl_addcvar z_mob_spawn_max_interval_expert 240 +// confogl_addcvar z_spawn_mobs_behind_chance 50 +confogl_addcvar cleared_wanderer_respawn_chance 0 +// confogl_addcvar z_hit_from_behind_cosine 1.0 +confogl_addcvar z_hit_from_behind_factor 1.0 +// confogl_addcvar z_claw_hit_pitch_min -12.5 +// confogl_addcvar z_claw_hit_pitch_max 12.5 +// confogl_addcvar z_claw_hit_yaw_min -12.5 +// confogl_addcvar z_claw_hit_yaw_max 12.5 +// confogl_addcvar survivor_damage_speed_factor 0.3 +confogl_addcvar z_smoker_limit 1 +confogl_addcvar z_hunter_limit 1 +// confogl_addcvar z_attack_movement_penalty 0.7 //Mean witches -confogl_addcvar z_witch_anger_rate 0.5 +confogl_addcvar sv_force_time_of_day 0 +confogl_addcvar z_witch_health 2000 +confogl_addcvar z_witch_anger_rate 0.4 +confogl_addcvar z_witch_relax_rate 0.2 confogl_addcvar z_witch_flashlight_range 600 -confogl_addcvar z_witch_max_threat_time 6 +confogl_addcvar z_witch_max_threat_time 4 confogl_addcvar z_witch_min_threat_time 4 -confogl_addcvar z_witch_threat_hostile_range 850 -confogl_addcvar z_witch_threat_normal_range 550 +confogl_addcvar z_witch_threat_hostile_range 800 +confogl_addcvar z_witch_threat_normal_range 600 +confogl_addcvar z_witch_personal_space 200 +confogl_addcvar z_witch_berserk_range 400 +// confogl_addcvar z_witch_damage 100 +confogl_addcvar z_witch_damage_per_kill_hit 25 + +//Stats +comp_roundlimitnfogl_addcvar l4d_stats_announcemotd 0 +confogl_addcvar l4d_stats_announceplayerjoined 0 +confogl_addcvar l4d_stats_announcespecial 0 +confogl_addcvar l4d_stats_announcemode 0 +confogl_addcvar l4d_stats_announcerank 0 +confogl_addcvar l4d_stats_rankonjoin 0 +confogl_addcvar l4d_stats_soundsenabled 1 +confogl_addcvar l4d_stats_adm_cleanoldplayers 0 +confogl_addcvar l4d_stats_adm_cleanplaytime 0 +confogl_addcvar l4d_stats_ffire_mode 0 +confogl_addcvar l4d_stats_silencechat 1 +confogl_addcvar l4d_stats_disabledmessages 0 +confogl_addcvar l4d_stats_insaferoom 1 +confogl_addcvar l4d_stats_restart 1 +confogl_addcvar l4d_stats_fkill 1 +confogl_addcvar l4d_stats_fincap 1 +confogl_addcvar l4d_stats_ffire 1 // numbersmod Shared Cvars -exec cfgogl/numbersmod/shared_cvars.cfg +wait 150;exec cfgogl/numbersmod/shared_cvars.cfg // Config Cvars -exec cfgogl/numbersmod/numbersmod.cfg \ No newline at end of file +wait 300;exec cfgogl/numbersmod/numbersmod.cfg diff --git a/cfg/cfgogl/numbersmod/confogl_off.cfg b/cfg/cfgogl/numbersmod/confogl_off.cfg index 6ca17aeb..022e0256 100644 --- a/cfg/cfgogl/numbersmod/confogl_off.cfg +++ b/cfg/cfgogl/numbersmod/confogl_off.cfg @@ -1,7 +1,7 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod @@ -17,4 +17,4 @@ sm_resetstringcount // Unlock Plugins and reload defaults confogl_resetclientcvars confogl_resetcvars -pred_unload_plugins \ No newline at end of file +pred_unload_plugins diff --git a/cfg/cfgogl/numbersmod/confogl_plugins.cfg b/cfg/cfgogl/numbersmod/confogl_plugins.cfg index ece2e6aa..34638f72 100644 --- a/cfg/cfgogl/numbersmod/confogl_plugins.cfg +++ b/cfg/cfgogl/numbersmod/confogl_plugins.cfg @@ -1,7 +1,7 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod @@ -28,5 +28,5 @@ sm plugins load optional/autopause.smx sm plugins load bizzymod/bizzykits.smx sm plugins load bizzymod/SpecListener.smx sm plugins load bizzymod/vscript_replacer.smx -sm plugins load bizzymod/l4d_heal_revive_fix.smx -sm plugins load bizzymod/l4d_witch_damage.smx \ No newline at end of file +sm plugins load bizzymod/l4d_witch_damage.smx +sm plugins load bizzymod/l4d_gear_transfer.smx diff --git a/cfg/cfgogl/numbersmod/numbersmod.cfg b/cfg/cfgogl/numbersmod/numbersmod.cfg index c91b0746..f70a3159 100644 --- a/cfg/cfgogl/numbersmod/numbersmod.cfg +++ b/cfg/cfgogl/numbersmod/numbersmod.cfg @@ -1,20 +1,22 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod // ======================================================================================= // [lerpmonitor.smx] -confogl_addcvar sm_allowed_lerp_changes 3 +confogl_addcvar sm_allowed_lerp_changes 20 confogl_addcvar sm_lerp_change_spec 1 confogl_addcvar sm_readyup_lerp_changes 1 -confogl_addcvar sm_min_lerp 0.0000 -confogl_addcvar sm_max_lerp 0.1000 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 // [l4d_boss_percent.smx] +confogl_addcvar sm_tank_can_spawn 1 +confogl_addcvar sm_witch_can_spawn 1 confogl_addcvar l4d_global_percent 0 confogl_addcvar l4d_tank_percent 1 confogl_addcvar l4d_witch_percent 1 @@ -24,6 +26,15 @@ confogl_addcvar l4d_boss_vote 1 confogl_addcvar simple_antibhop_enable 1 confogl_addcvar bhop_allow_survivor 0 +// [boomer_horde_equalizer_refactored.smx] +confogl_addcvar boomer_horde_equalizer 1 +confogl_addcvar boomer_horde_equalizer_events_default 1 +confogl_addcvar z_notice_it_range 2000 +boomer_horde_amount 1 10 // 10 Common spawned for the 1st Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 2 10 // 10 Common spawned for the 2nd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 3 10 // 10 Common spawned for the 3rd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 4 10 // 10 Common spawned for the 4th Survivor boomed + Wandering common in z_notice_it_range + // [autopause.smx] confogl_addcvar autopause_enable 1 confogl_addcvar autopause_force 1 @@ -33,6 +44,10 @@ confogl_addcvar autopause_apdebug 0 l4d_wlimits_add 1 1 weapon_hunting_rifle weapon_sniper_scout weapon_sniper_awp l4d_wlimits_lock +// [l4d2_melee_shenanigans.smx] +confogl_addcvar l4d2_melee_drop_method 0 +confogl_addcvar l4d2_melee_tank_nerf 0 + // [l4d2_playstats.smx + survivor_mvp] confogl_addcvar sm_survivor_mvp_brevity 0 confogl_addcvar sm_survivor_mvp_brevity_latest 111 @@ -42,4 +57,4 @@ confogl_addcvar sm_stats_autoprint_vs_round 8372 confogl_addcvar sm_skill_report_enable 1 // Shared Settings -exec cfgogl/numbersmod/shared_settings.cfg \ No newline at end of file +wait 300;exec cfgogl/numbersmod/shared_settings.cfg diff --git a/cfg/cfgogl/numbersmod/shared_cvars.cfg b/cfg/cfgogl/numbersmod/shared_cvars.cfg index f89c9b54..69ca876e 100644 --- a/cfg/cfgogl/numbersmod/shared_cvars.cfg +++ b/cfg/cfgogl/numbersmod/shared_cvars.cfg @@ -1,78 +1,95 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod // ======================================================================================= // Server Cvars -sv_pure 2 -sv_alltalk 1 -confogl_addcvar sv_alltalk 1 +sv_pure 0 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 +confogl_addcvar director_min_start_players 1 +confogl_addcvar mp_allowspectators 1 confogl_addcvar sv_cheats 0 -confogl_addcvar sv_consistency 1 -confogl_addcvar sv_pure_kick_clients 1 confogl_addcvar sv_voiceenable 1 -confogl_addcvar sv_log_onefile 1 -confogl_addcvar sv_logbans 1 -confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar sv_alltalk 1 +confogl_addcvar motd_enabled 1 +confogl_addcvar versus_force_start_time 10 confogl_addcvar versus_marker_num 0 -confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar vs_survival_bonus 25 +confogl_addcvar vs_incap_bonus 25 +confogl_addcvar vs_defib_penalty 0 +confogl_addcvar vs_tiebreak_bonus 25 +confogl_addcvar changelevel_pause_interval 12 +confogl_addcvar versus_round_restarttimer 20 +confogl_addcvar versus_round_restarttimer_finale 20 confogl_addcvar sv_pz_endgame_vote_period 20 +confogl_addcvar sv_pz_endgame_vote_post_period 10 +confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar sv_noclipduringpause 0 +confogl_addcvar l4d2_addons_eclipse -1 // ReadyUp Cvars l4d_ready_enabled 1 - +confogl_addcvar l4d_ready_disable_spawns 0 confogl_addcvar l4d_ready_survivor_freeze 0 -confogl_addcvar l4d_ready_delay 3 +confogl_addcvar l4d_ready_max_players 33 +confogl_addcvar l4d_ready_delay 2 +confogl_addcvar l4d_ready_force_extra 0 confogl_addcvar l4d_ready_enable_sound 1 confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_secret 1 confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar l4d_ready_unbalanced_start 1 +confogl_addcvar l4d_ready_unbalanced_min 3 confogl_addcvar coinflip_delay -1 confogl_addcvar teamflip_delay -1 // Config Cvars confogl_match_execcfg_off "confogl_off.cfg" // Execute this config file upon match mode ends. confogl_match_execcfg_on "confogl.cfg" // Execute this config file upon match mode starts. -confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun -confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested +confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun. +confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested. // Confogl Cvars -confogl_addcvar confogl_boss_tank "1" // Tank can't be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player -confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even through they normally aren't allowed -confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales) -confogl_addcvar confogl_remove_escape_tank "0" // Removes tanks which spawn as the rescue vehicle arrives on finales -confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play -confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time -confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank) -confogl_addcvar director_allow_infected_bots "0" -confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor -confogl_addcvar confogl_disable_ghost_hurt "0" // Prevents ghost infected from dying when falling into water or off c1m1 -confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range +confogl_addcvar confogl_boss_tank "0" // Tank cant be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player. +confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even through they normally arent allowed. +confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales). +confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales. +confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play. +confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time. +confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank). +confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor. +confogl_addcvar confogl_disable_ghost_hurt "1" // Prevents ghost infected from dying when falling into water or off c1m1_hotel. +confogl_addcvar confogl_remove_inf_clips "1" // Removes all infected clip brushes. This fixes tanks getting stuck on Dark Carnival 5 and allows a bit more area for infected to spawn on a few maps. +confogl_addcvar confogl_remove_c5m4_hurts "1" // Removes nonlethal explosion hurt triggers from c5m4_quarter, including some for up to 50 damage. +confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range. confogl_addcvar confogl_remove_parachutist "0" // Removes the parachutist (and his items) from c3m2_swamp. -confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws -confogl_addcvar confogl_remove_defib "1" // Remove all defibrillators -confogl_addcvar confogl_remove_grenade "1" // Remove all grenade launchers -confogl_addcvar confogl_remove_m60 "1" // Remove all M60 rifles -confogl_addcvar confogl_remove_lasersight "0" // Remove all laser sight upgrades -confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits) -confogl_addcvar confogl_remove_upg_explosive "1" // Remove all explosive upgrade packs -confogl_addcvar confogl_remove_upg_incendiary "0" // Remove all incendiary upgrade packs -confogl_addcvar confogl_replace_cssweapons "0" // Replace CSS weapons with normal L4D2 weapons -confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills -confogl_addcvar confogl_replace_finalekits "1" // Replace medkits during finale with pain pills -confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10% -confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings -confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round2. -confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits -confogl_addcvar confogl_adrenaline_limit "6" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_pipebomb_limit "3" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_molotov_limit "2" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_vomitjar_limit "2" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value -confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring +confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws. +confogl_addcvar confogl_remove_defib "0" // Remove all defibrillators. +confogl_addcvar confogl_remove_grenade "1" // Remove all grenade launchers. +confogl_addcvar confogl_remove_m60 "1" // Remove all M60 rifles. +confogl_addcvar confogl_remove_lasersight "0" // Remove all laser sight upgrades. +confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits). +confogl_addcvar confogl_remove_upg_explosive "1" // Remove all explosive upgrade packs. +confogl_addcvar confogl_remove_upg_incendiary "0" // Remove all incendiary upgrade packs. +confogl_addcvar confogl_replace_cssweapons "0" // Replace CSS weapons with normal L4D2 weapons. +confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills. +confogl_addcvar confogl_replace_finalekits "1" // Replace medkits during finale with pain pills. +confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10%. +confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings. +confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round 2. +confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits. +confogl_addcvar confogl_adrenaline_limit "4" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_pipebomb_limit "6" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_molotov_limit "4" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_vomitjar_limit "4" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring. confogl_addcvar confogl_replace_tier2 0 confogl_addcvar confogl_replace_tier2_finale 0 confogl_addcvar confogl_replace_tier2_all 0 @@ -80,58 +97,162 @@ confogl_addcvar confogl_limit_tier2 0 confogl_addcvar confogl_limit_tier2_saferoom 0 // Balancing Cvars -confogl_addcvar director_vs_convert_pills 1 +// confogl_addcvar director_cs_weapon_spawn_chance 0.5 +confogl_addcvar director_per_map_weapon_upgrade_chance 0.5 confogl_addcvar director_convert_pills 1 -confogl_addcvar director_convert_pills_critical_health 0 -confogl_addcvar director_convert_pills_to_defib_health 0 -confogl_addcvar pain_pills_decay_rate 0.27 // Original is 0.27 -confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix +confogl_addcvar director_vs_convert_pills 1.0 +// confogl_addcvar director_convert_pills_critical_health 0 +// confogl_addcvar director_convert_pills_to_defib_health 0 +// confogl_addcvar first_aid_heal_percent 0.9 +// confogl_addcvar pain_pills_health_value 50 +// confogl_addcvar pain_pills_decay_rate 0.166667 +confogl_addcvar sv_fallen_survivor_health_multiplier 1.0 +confogl_addcvar z_fallen_kill_suppress_time 60 +// confogl_addcvar sv_infected_riot_control_tonfa_probability 0.25 +// confogl_addcvar sv_infected_police_tonfa_probability 0.25 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.05 confogl_addcvar sv_force_time_of_day 0 -confogl_addcvar z_brawl_chance 0 -confogl_addcvar z_female_boomer_spawn_chance 50 +// confogl_addcvar director_always_allow_wanderers 1 confogl_addcvar nav_lying_down_percent 0 confogl_addcvar z_must_wander 1 +// confogl_addcvar survivor_incapacitated_dizzy_severity 0 +// confogl_addcvar survivor_incapacitated_dizzy_timer 5 +confogl_addcvar survivor_incapacitated_accuracy_penalty 0.05 +// confogl_addcvar survivor_incapacitated_cycle_time 0.283333 // Competitive Cvars confogl_addcvar ammo_shotgun_max 90 confogl_addcvar ammo_smg_max 800 confogl_addcvar ammo_huntingrifle_max 45 +confogl_addcvar ammo_chainsaw_max 30 +confogl_addcvar z_gun_swing_vs_min_penalty 4 +confogl_addcvar z_gun_swing_vs_max_penalty 8 +// confogl_addcvar inferno_max_range 250 +confogl_addcvar vomitjar_radius 300 +// confogl_addcvar vomitjar_duration_infected_pz 30 +// confogl_addcvar vomitjar_duration_infected_bot 30 +// confogl_addcvar ammo_pack_use_duration 1.5 +// confogl_addcvar upgrade_pack_use_duration 1.5 +confogl_addcvar upgrade_laser_sight_spread_factor 0.5 +confogl_addcvar player_throwforce 2250 +// confogl_addcvar z_gun_damage 5 +confogl_addcvar fuel_barrel_health 10 +// confogl_addcvar ladder_autocenter 1 -confogl_addcvar z_leap_interval_post_incap 16 -confogl_addcvar z_jockey_control_variance 0.0 -confogl_addcvar z_vomit_interval 21 -confogl_addcvar sv_gameinstructor_disable 1 -confogl_addcvar z_spit_interval 17 -confogl_addcvar tongue_hit_delay 12 -confogl_addcvar z_door_pound_damage 160 -confogl_addcvar z_pounce_door_damage 500 -confogl_addcvar tongue_release_fatigue_penalty 0 -confogl_addcvar z_charge_warmup 0 +// AI Improvements +confogl_addcvar sb_allow_leading 1 +// confogl_addcvar z_leap_interval_post_incap 15 +confogl_addcvar z_leap_power 425 +// confogl_addcvar z_jockey_control_min 0.8 +// confogl_addcvar z_jockey_control_max 1.0 +// confogl_addcvar z_jockey_control_variance 0.0 +// confogl_addcvar jockey_pz_claw_dmg 4 +// confogl_addcvar z_exploding_shove_min 3 +confogl_addcvar z_exploding_shove_max 3 +confogl_addcvar z_exploding_shove_interval 4 +// confogl_addcvar z_exploding_inner_radius 200 +confogl_addcvar z_exploding_outer_radius 200 +confogl_addcvar boomer_pz_claw_dmg 6 +confogl_addcvar gas_can_use_duration 1.75 +// confogl_addcvar action_progress_reset_interval 0.5 +confogl_addcvar gascan_spit_time 2.75 +// confogl_addcvar scavenge_item_respawn_delay 10 +confogl_addcvar cola_bottles_use_duration 1.5 +confogl_addcvar ai_talk_idle_enabled 0 +// confogl_addcvar z_cough_cloud_radius 150 +// confogl_addcvar z_cough_cloud_initial_cough_delay 0 +// confogl_addcvar z_cough_cloud_expire 6 +// confogl_addcvar spitter_pz_claw_dmg 4 +confogl_addcvar tongue_miss_delay 2.75 +confogl_addcvar tongue_hit_delay 11 +confogl_addcvar smoker_pz_claw_dmg 6 +// confogl_addcvar z_breakable_damage 25 +// confogl_addcvar z_door_pound_damage 1000 +// confogl_addcvar z_pounce_door_damage 1000 +// confogl_addcvar z_charge_prop_damage 1000 +confogl_addcvar z_exploding_force 1000 +confogl_addcvar z_charger_max_prop_force 1000 +// confogl_addcvar z_pounce_crouch_delay 0.9 +confogl_addcvar z_lunge_power 600 +// confogl_addcvar z_pounce_damage_delay 0.0 +// confogl_addcvar z_pounce_stumble_radius 150 +confogl_addcvar hunter_pz_claw_dmg 8 +// confogl_addcvar versus_shove_hunter_fov 90 +// onfogl_addcvar versus_shove_hunter_fov_pouncing 45 +confogl_addcvar tongue_health 200 +confogl_addcvar tongue_range 850 +confogl_addcvar tongue_fly_speed 1050 +// confogl_addcvar tongue_victim_acceleration 10 +// confogl_addcvar tongue_victim_max_speed 200 +// confogl_addcvar tongue_victim_accuracy_penalty 0 +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +// confogl_addcvar survivor_incap_tongued_decay_rate 20 +confogl_addcvar tongue_release_fatigue_penalty 2500 +// confogl_addcvar z_vomit_duration 1.25 +// confogl_addcvar z_vomit_fatigue 2001 +confogl_addcvar z_max_stagger_duration 0.8 +confogl_addcvar sv_gravity 735 +// confogl_addcvar z_discard_range 2000 +// confogl_addcvar z_discard_min_range 0 +confogl_addcvar sb_max_team_melee_weapons 4 +// confogl_addcvar z_charge_warmup 0.5 +confogl_addcvar z_charge_max_speed 500 +confogl_addcvar z_charge_duration 2.4 +confogl_addcvar charger_pz_claw_dmg 8 // AI Improvement Cvars -confogl_addcvar boomer_exposed_time_tolerance 0 -confogl_addcvar boomer_vomit_delay 0 -confogl_addcvar hunter_pounce_ready_range 1000 -confogl_addcvar hunter_committed_attack_range 600 +confogl_addcvar director_allow_infected_bots 0 +// confogl_addcvar z_minion_limit 4 +confogl_addcvar z_vomit_velocity 2000 +confogl_addcvar z_tank_rock_radius 96 +// confogl_addcvar z_hunter_ground_normal 0.1 +// confogl_addcvar hunter_pounce_ready_range 800 +// confogl_addcvar hunter_committed_attack_range 600 +confogl_addcvar hunter_leap_away_give_up_range 2000 +// confogl_addcvar hunter_pounce_loft_rate 0.03 +// confogl_addcvar jockey_pounce_loft_rate 0.03 // Tank/Witch Cvars -confogl_addcvar versus_tank_flow_team_variation 0 -confogl_addcvar versus_tank_chance 1 -confogl_addcvar versus_tank_chance_finale 1 -confogl_addcvar versus_tank_chance_intro 1 -confogl_addcvar versus_witch_chance 1 -confogl_addcvar versus_witch_chance_finale 1 -confogl_addcvar versus_witch_chance_intro 1 -confogl_addcvar versus_boss_flow_max 0.85 -confogl_addcvar versus_boss_flow_min 0.25 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.20 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min_intro 0.25 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_finale 0.30 +confogl_addcvar versus_boss_flow_max_finale 0.80 +confogl_addcvar versus_boss_padding_min 0.0 +confogl_addcvar versus_boss_padding_max 0.1 -confogl_addcvar tank_stuck_time_suicide 999999999 -confogl_addcvar director_tank_lottery_selection_time 3 -confogl_addcvar z_frustration_spawn_delay 25 -confogl_addcvar z_frustration_los_delay 1.2 +confogl_addcvar tank_stuck_time_suicide 86400 +confogl_addcvar tank_stuck_visibility_tolerance_suicide 86400 +confogl_addcvar director_tank_lottery_selection_time 4 +confogl_addcvar z_frustration_spawn_delay 10 +confogl_addcvar z_frustration_lifetime 20 +// confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 -confogl_addcvar tank_ground_pound_duration 0.1 +// confogl_addcvar tank_ground_pound_duration 2 confogl_addcvar z_tank_health 4666 +// confogl_addcvar z_tank_attack_interval 1.45 +// confogl_addcvar tank_swing_interval 1.45 +// confogl_addcvar tank_swing_duration 0.2 +// confogl_addcvar tank_fist_radius 16 +// confogl_addcvar tank_throw_allow_range 600 +// confogl_addcvar tank_throw_loft_rate 0.015 +// confogl_addcvar z_tank_throw_health 50 +// confogl_addcvar z_tank_rock_radius 96 +confogl_addcvar z_tank_throw_force 825 +confogl_addcvar tank_burn_duration 90 +confogl_addcvar phys_pushscale 1.0 +confogl_addcvar tank_swing_physics_prop_force 3.0 +confogl_addcvar car_alarm_distance 900 // Stripper Path -//confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod \ No newline at end of file +// confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod diff --git a/cfg/cfgogl/numbersmod/shared_plugins.cfg b/cfg/cfgogl/numbersmod/shared_plugins.cfg index 1581a976..7dce7d83 100644 --- a/cfg/cfgogl/numbersmod/shared_plugins.cfg +++ b/cfg/cfgogl/numbersmod/shared_plugins.cfg @@ -1,7 +1,7 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod @@ -24,7 +24,6 @@ sm plugins load funvotes.smx // General Competitive Plugins //---------------------------------- sm plugins load optional/ghost_hurt.smx -sm plugins load optional/l4d2_pickup.smx sm plugins load optional/blockheatseekingchargers.smx sm plugins load optional/blocktrolls.smx sm plugins load optional/bossspawningfix.smx @@ -32,7 +31,6 @@ sm plugins load optional/coinflip.smx sm plugins load optional/8ball.smx sm plugins load optional/current.smx sm plugins load optional/finalefix.smx -sm plugins load optional/l4d2_ghost_warp.smx sm plugins load optional/l4d2_nobhaps.smx sm plugins load optional/l4d2_saferoom_detect.smx sm plugins load optional/l4d2_setscores.smx @@ -44,7 +42,6 @@ sm plugins load optional/l4d_jockey_ledgehang.smx sm plugins load optional/l4d_pounceprotect.smx sm plugins load optional/l4d_stuckzombiemeleefix.smx sm plugins load optional/l4d_tank_damage_announce.smx -sm plugins load optional/l4d_thirdpersonshoulderblock.smx sm plugins load optional/l4d_weapon_limits.smx sm plugins load optional/lerpmonitor.smx sm plugins load optional/nosaferoomkits.smx @@ -73,7 +70,6 @@ sm plugins load optional/l4d_texture_manager_block.smx //---------------------- sm plugins load optional/l4d_tankpunchstuckfix.smx sm plugins load optional/checkpoint-rage-control.smx -sm plugins load optional/l4d2_profitless_ai_tank.smx sm plugins load optional/l4d2_tank_attack_control.smx sm plugins load optional/l4d2_tank_announce.smx sm plugins load optional/l4d2_bw_rock_hit.smx @@ -81,8 +77,6 @@ sm plugins load optional/l4d2_tank_damage_cvars.smx sm plugins load optional/fix_engine.smx sm plugins load optional/l4d2_collision_adjustments.smx sm plugins load optional/l4d2_stats.smx -sm plugins load optional/l4d2_melee_shenanigans.smx -sm plugins load optional/specrates.smx //---------------------- // Static shotgun spread @@ -115,4 +109,4 @@ sm plugins load optional/witch_and_tankifier.smx // Letzzzz go. sm plugins load confoglcompmod.smx -sm plugins load match_vote.smx \ No newline at end of file +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/numbersmod/shared_settings.cfg b/cfg/cfgogl/numbersmod/shared_settings.cfg index 3f24d301..7263d017 100644 --- a/cfg/cfgogl/numbersmod/shared_settings.cfg +++ b/cfg/cfgogl/numbersmod/shared_settings.cfg @@ -1,7 +1,7 @@ // ======================================================================================= // numbersmod // Author: Bizzy -// Contributions: Spoon, Sir, Visor, Jahze, ProdigySim, Vintik, CanadaRox, Blade, Tabun, Jacob +// Contributions: Moon // License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) // Version 6.9.420 // https://github.com/draxios/bizzymod @@ -21,6 +21,13 @@ sm_lockstrings // [checkpoint-rage-control.smx] confogl_addcvar crc_global 1 +// [l4d2_ghost_warp.smx] +confogl_addcvar l4d2_ghost_warp_flag 0 // Enable ghost warp with command only 'sm_warp' +confogl_addcvar l4d2_ghost_warp_delay 0 + +// [l4d_static_punch_getup.smx] +confogl_addcvar tank_punch_getup_scale 0.333333 // 54 frames / 30 fps * 0.25 = 0.6s + // [ghost_hurt.smx] confogl_addcvar ghost_hurt_type 1 @@ -35,7 +42,7 @@ confogl_addcvar l4d_obey_boss_spawn_except_static 1 confogl_addcvar l4d_no_bash_kills 1 // [l4d_jockey_ledgehang.smx] -confogl_addcvar z_leap_interval_post_ledge_hang 5 +confogl_addcvar z_leap_interval_post_ledge_hang 12 // [l4d_tank_damage_announce.smx] confogl_addcvar l4d_tankdamage_enabled 1 @@ -51,54 +58,53 @@ confogl_addcvar l4d_tank_painfade_duration 300 confogl_addcvar l4d_tank_painfade_flags 8 // [l4d2_slowdown_control.smx] -confogl_addcvar z_tank_speed_vs 210 -confogl_addcvar z_tank_damage_slow_min_range 0 -confogl_addcvar z_tank_damage_slow_max_range 0 +confogl_addcvar z_tank_speed 220 +confogl_addcvar z_tank_speed_vs 220 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar z_tank_damage_slow_min_range 32 confogl_addcvar l4d2_slowdown_gunfire_si 0 confogl_addcvar l4d2_slowdown_gunfire_tank 0 -//confogl_addcvar l4d2_slowdown_water_tank 0 -//confogl_addcvar l4d2_slowdown_water_survivors -1 -//confogl_addcvar l4d2_slowdown_water_survivors_during_tank 220 +confogl_addcvar l4d2_slowdown_water_tank 180 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 + +// [l4d2_tank_props_glow.smx] +confogl_addcvar sv_tankpropfade 1 +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 +confogl_addcvar l4d_ammo_spawn_glow_color "255 255 255" // [l4d2_pickup.smx] +confogl_addcvar l4d2_usecount 2147483647 confogl_addcvar pickup_switch_flags 2 confogl_addcvar pickup_incap_flags 2 // [l4d2_spitblock.smx] // Official Campaigns -spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator -spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator -spit_block_square c5m3_cemetery 4160 333.04 4297 291.01 // At the drop into the sewer - -//Custom Campaigns -spit_block_square l4d_dbd2dc_clean_up -4232 3608 -4432 3544 // In the vent -spit_block_square l4d_dbd2dc_undead_center -6902.102539 8809.659180 -7872.751953 8522.269531 -spit_block_square l4d2_fallindeath03 4562.987793 -1769.313721 4446.680664 -1623.422729 -spit_block_square l4d2_fallindeath04 1656.737061 -325.227692 1531.636108 -187.895630 -spit_block_square cdta_03warehouse 6311.086 -13217.889 6192.448 -13347.204 // At the final ladder in the sewer -spit_block_square downpour_sugarmill_a -1444.891235 -9514.031250 -1514.214478 -9575.968750 -spit_block_square downpour_sugarmill_b -1434.379028 -9517.581055 -1514.214478 -9575.968750 -spit_block_square l4d2_darkblood02_engine 2515 5610 2664 5770 -spit_block_square x1m2_path 6303 10742 6522 10893 -spit_block_square cotd03_mall 8713 3405 8890 3115 -spit_block_square l4d2_daybreak03_bridge -7365.97 -1889.97 -7294.03 -1754 -spit_block_square l4d2_daybreak04_cruise 8064.77 -6594.97 8141 -6525 -spit_block_square l4d2_stadium1_apartment 268 587 409 417 // In the elevator (RBT 6 Hotfix) +spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c5m3_cemetery 4160 333.04 4297 291.01 // At the drop into the sewer. // [l4d2_godframes_control.smx] confogl_addcvar gfc_hittable_override 1 confogl_addcvar gfc_hittable_rage_override 1 confogl_addcvar gfc_rock_rage_override 1 -confogl_addcvar gfc_spit_extra_time 0.4 -confogl_addcvar gfc_common_extra_time 0.6 +confogl_addcvar gfc_spit_extra_time 0 +confogl_addcvar gfc_common_extra_time 0 confogl_addcvar gfc_hunter_duration 0 confogl_addcvar gfc_jockey_duration 0 confogl_addcvar gfc_smoker_duration 0 -confogl_addcvar gfc_charger_duration 0 +confogl_addcvar gfc_charger_duration 0.5 +confogl_addcvar gfc_long_charger_duration 1 confogl_addcvar gfc_common_zc_flags 9 confogl_addcvar gfc_spit_zc_flags 6 confogl_addcvar gfc_godframe_glows 1 -confogl_addcvar gfc_ff_min_time 0.8 +confogl_addcvar gfc_ff_min_time 2 confogl_addcvar gfc_witch_override 1 // [l4d2_m2_control.smx] @@ -108,21 +114,22 @@ confogl_addcvar l4d2_m2_jockey_penalty 4 confogl_addcvar l4d2_m2_smoker_penalty 2 // [l4d2_hittable_control.smx] -confogl_addcvar hc_bridge_car_damage 24.0 -confogl_addcvar hc_stadium_car_damage 25.0 -confogl_addcvar hc_broken_forklift_standing_damage 100.0 -confogl_addcvar hc_sflog_standing_damage 100.0 -confogl_addcvar hc_bhlog_standing_damage 100.0 -confogl_addcvar hc_handtruck_standing_damage 8.0 -confogl_addcvar hc_car_standing_damage 100.0 -confogl_addcvar hc_bumpercar_standing_damage 100.0 -confogl_addcvar hc_forklift_standing_damage 100.0 -confogl_addcvar hc_dumpster_standing_damage 100.0 -confogl_addcvar hc_haybale_standing_damage 100.0 -confogl_addcvar hc_baggage_standing_damage 100.0 +confogl_addcvar hc_bridge_car_damage 50 +confogl_addcvar hc_stadium_car_damage 50 +confogl_addcvar hc_broken_forklift_standing_damage 100 +confogl_addcvar hc_sflog_standing_damage 100 +confogl_addcvar hc_bhlog_standing_damage 100 +confogl_addcvar hc_handtruck_standing_damage 50 +confogl_addcvar hc_car_standing_damage 100 +confogl_addcvar hc_bumpercar_standing_damage 100 +confogl_addcvar hc_forklift_standing_damage 100 +confogl_addcvar hc_dumpster_standing_damage 100 +confogl_addcvar hc_haybale_standing_damage 100 +confogl_addcvar hc_baggage_standing_damage 100 confogl_addcvar hc_incap_standard_damage -2 confogl_addcvar hc_disable_self_damage 1 -confogl_addcvar hc_overhit_time 1.4 +confogl_addcvar hc_overhit_time 1.375 +confogl_addcvar hc_unbreakable_forklifts 1 // [l4d2_si_staggers.smx] confogl_addcvar l4d2_disable_si_friendly_staggers 2 @@ -130,21 +137,29 @@ confogl_addcvar l4d2_disable_si_friendly_staggers 2 // [l4d2_unsilent_jockey.smx] confogl_addcvar sm_unsilentjockey_enabled 1 confogl_addcvar sm_unsilentjockey_always 1 -confogl_addcvar sm_unsilentjockey_time 0.1 +confogl_addcvar sm_unsilentjockey_time 2 // [l4d2_weaponrules.smx] +l4d2_addweaponrule smg smg +l4d2_addweaponrule smg_silenced smg_silenced l4d2_addweaponrule smg_mp5 smg_silenced +l4d2_addweaponrule pumpshotgun pumpshotgun +l4d2_addweaponrule shotgun_chrome shotgun_chrome l4d2_addweaponrule rifle smg -l4d2_addweaponrule rifle_desert smg -l4d2_addweaponrule rifle_ak47 smg_silenced l4d2_addweaponrule rifle_sg552 smg +l4d2_addweaponrule rifle_ak47 smg_silenced +l4d2_addweaponrule rifle_desert smg_silenced l4d2_addweaponrule autoshotgun pumpshotgun l4d2_addweaponrule shotgun_spas shotgun_chrome +l4d2_addweaponrule hunting_rifle hunting_rifle l4d2_addweaponrule sniper_military hunting_rifle -l4d2_addweaponrule sniper_scout pumpshotgun l4d2_addweaponrule sniper_awp pumpshotgun +l4d2_addweaponrule sniper_scout shotgun_chrome l4d2_addweaponrule grenade_launcher hunting_rifle l4d2_addweaponrule rifle_m60 hunting_rifle +l4d2_addweaponrule knife baseball_bat +l4d2_addweaponrule upgradepack_explosive upgradepack_incendiary +l4d2_addweaponrule defibrillator pain_pills // [l4d2_collision_adjustments.smx] confogl_addcvar collision_tankrock_common 1 @@ -166,41 +181,74 @@ confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" // Apply binary patch //codepatch_patch sgspread +// Pistol settings +sm_weapon pistol deployduration 0.4 +sm_weapon pistol dualdeployduration 0.5 +sm_weapon pistol damage 40 +sm_weapon pistol rangemod 0.9 + +// Magnum settings +sm_weapon pistol_magnum deployduration 0.4 +sm_weapon pistol_magnum dualdeployduration 0.5 +sm_weapon pistol_magnum cycletime 0.283333 +sm_weapon pistol_magnum damage 90 +sm_weapon pistol_magnum rangemod 0.9 + +// SMG settings +sm_weapon smg damage 24 +sm_weapon smg rangemod 0.9 +sm_weapon smg_silenced damage 26 +sm_weapon smg_silenced rangemod 0.85 +sm_weapon smg_mp5 damage 28 +sm_weapon smg_mp5 rangemod 0.9 + // Pump settings -//sm_weapon pumpshotgun damage 15 -//sm_weapon pumpshotgun bullets 20 -//sm_weapon pumpshotgun scatterpitch 4.25 -//sm_weapon pumpshotgun scatteryaw 4.25 +sm_weapon pumpshotgun scatterpitch 6 +sm_weapon pumpshotgun scatteryaw 6 +sm_weapon pumpshotgun bullets 16 +sm_weapon pumpshotgun damage 20 +sm_weapon pumpshotgun rangemod 0.8 // Chrome settings -//sm_weapon shotgun_chrome damage 16 -//sm_weapon shotgun_chrome bullets 16 -//sm_weapon shotgun_chrome scatterpitch 3.25 -//sm_weapon shotgun_chrome scatteryaw 3.25 +sm_weapon shotgun_chrome scatterpitch 5 +sm_weapon shotgun_chrome scatteryaw 5 +sm_weapon shotgun_chrome bullets 12 +sm_weapon shotgun_chrome damage 25 +sm_weapon shotgun_chrome rangemod 0.85 // First ring settings -//confogl_addcvar sgspread_ring1_bullets 8 -//confogl_addcvar sgspread_ring1_factor 3 -//confogl_addcvar sgspread_center_pellet 0 +// confogl_addcvar sgspread_ring1_bullets 6 +// confogl_addcvar sgspread_ring1_factor 4 +// confogl_addcvar sgspread_center_pellet 0 -// Common damage settings -//confogl_addcvar z_shotgun_bonus_damage_range 60 -//confogl_addcvar z_shotgun_bonus_damage_multiplier 7 +// [l4d2_shotgun_ff.smx] +confogl_addcvar l4d2_shotgun_ff_multi 0.5 +confogl_addcvar l4d2_shotgun_ff_min 1 +confogl_addcvar l4d2_shotgun_ff_max 4 + +// Hunting rifle settings + +sm_weapon hunting_rifle cycletime 0.25 +sm_weapon hunting_rifle damage 100 +sm_weapon hunting_rifle rangemod 0.8 /////////////////// // [Boss tweaks] // /////////////////// // Static Tank maps / flow Tank disabled -static_tank_map c11m5_runway -static_tank_map c8m5_rooftop static_tank_map c1m4_atrium static_tank_map c4m5_milltown_escape static_tank_map c5m5_bridge +static_tank_map c6m3_port static_tank_map c7m1_docks static_tank_map c7m3_port -static_tank_map c9m2_alleys +static_tank_map c8m5_rooftop +static_tank_map c9m2_lots +static_tank_map c11m5_runway static_tank_map c13m2_southpinestream +static_tank_map c13m14_cutthroatcreek +static_tank_map c14m2_lighthouse static_tank_map l4d2_darkblood04_extraction static_tank_map x1m5_salvation static_tank_map uf4_airfield @@ -211,19 +259,18 @@ static_tank_map dkr_m2_carnival static_tank_map dkr_m3_tunneloflove static_tank_map dkr_m4_ferris static_tank_map dkr_m5_stadium -static_tank_map c14m2_lighthouse -static_tank_map c9m2_lots // Static Witch Maps -//static_witch_map c4m5_milltown_escape -//static_witch_map c5m5_bridge +static_witch_map c4m5_milltown_escape +static_witch_map c5m5_bridge static_witch_map c6m1_riverbank static_witch_map c6m3_port static_witch_map c7m3_port -//static_witch_map c13m4_cutthroatcreek +static_witch_map c13m4_cutthroatcreek // Finales with a single first event Tank tank_map_only_first_event c5m5_bridge +tank_map_only_first_event c13m4_cutthroatcreek // Personalized settings exec confogl_personalize.cfg @@ -231,9 +278,4 @@ exec confogl_personalize.cfg // Confogl Additional confogl_setcvars confogl_resetclientcvars - -// Client Cvar Tracking -confogl_trackclientcvar "mat_hdr_level" "1" "2.0" "0" "0.0" -confogl_startclientchecking - -sm_killlobbyres // Removes the lobby reservation cookie \ No newline at end of file +sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/pissmod/confogl.cfg b/cfg/cfgogl/pissmod/confogl.cfg new file mode 100644 index 00000000..c53433da --- /dev/null +++ b/cfg/cfgogl/pissmod/confogl.cfg @@ -0,0 +1,531 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +confogl_addcvar l4d_ready_cfg_name "pissmod 0.0" +confogl_addcvar sm_cfgmotd_title "pissmod 0.0" +confogl_addcvar sm_cfgmotd_url "steamcommunity.com/groups/bizzymod" + +// Realism Confogl Cvars +confogl_addcvar mp_gamemode Versus +confogl_addcvar z_difficulty Impossible +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar sv_disable_glow_survivors 1 +confogl_addcvar sv_disable_glow_faritems 0 +confogl_addcvar sv_force_time_of_day -1 +confogl_addcvar z_health 100 +confogl_addcvar z_witch_health 2000 +confogl_addcvar z_head_damage_causes_wounds 1 +confogl_addcvar l4d2_temphealthmedkits_enable 1 +confogl_addcvar l4d_gear_transfer_method 2 + +// Pissmod 4v4 Cvars +//confogl_addcvar z_chance 100 +//confogl_addcvar z_finale_chance 100 +//confogl_addcvar z_background_limit 80 +confogl_addcvar z_common_limit 50 +//confogl_addcvar director_always_allow_wanderers 1 +confogl_addcvar z_attention_range_sitting_modifier 1.0 +confogl_addcvar z_attention_range_lying_modifier 1.0 +confogl_addcvar nav_lying_down_percent 0 +//confogl_addcvar z_reserved_wanderers 0 +confogl_addcvar z_must_wander 1 +confogl_addcvar z_health 100 +//confogl_addcvar z_puking_eye_height 50 +//confogl_addcvar z_vision_range 1000 +//confogl_addcvar z_vision_range_daylight 3000 +//confogl_addcvar z_vision_range_alert 2000 +//confogl_addcvar z_vision_range_obscured 1000 +//confogl_addcvar z_vision_range_obscured_alert 1000 +//confogl_addcvar z_acquire_far_range 2000 +//confogl_addcvar z_acquire_far_time 1 +//confogl_addcvar z_acquire_near_range 500 +//confogl_addcvar z_acquire_near_time 0.5 +//confogl_addcvar z_acquire_time_variance_factor 0.0 +//confogl_addcvar z_hear_runner_far_range 1000 +//confogl_addcvar z_hear_runner_near_range 500 +//confogl_addcvar z_hear_gunfire_range 500 +//confogl_addcvar z_force_attack_from_sound_range 1000 +//confogl_addcvar z_alert_dot 0.25 +//confogl_addcvar z_notice_near_range 250 +//confogl_addcvar z_notice_it_range 2000 +//confogl_addcvar z_close_target_notice_distance 100 +//confogl_addcvar z_attack_change_target_range 100 +//confogl_addcvar z_attack_on_the_run_range 30 +//confogl_addcvar z_attack_max_range 30 +//confogl_addcvar z_attack_min_range 10 +//confogl_addcvar z_run_exertion_interval 0 +//confogl_addcvar z_attack_interval 0 +//confogl_addcvar z_prevent_burrowing 1 +//confogl_addcvar z_avoidteammates 1 +//confogl_addcvar z_avoid_power 10 +//confogl_addcvar z_avoidforce 1000 +//confogl_addcvar z_push_force 1000 +//confogl_addcvar z_pushaway_force 100 +//confogl_addcvar z_push_mass_max 100 +//confogl_addcvar z_carry_max_mass 100 +//confogl_addcvar z_avoid_max_range 100 +//confogl_addcvar z_avoid_min_range 20 +//confogl_addcvar z_max_neighbor_range 100 +//confogl_addcvar z_brawl_chance 10 +//confogl_addcvar z_zombie_lunge_push 0 +//confogl_addcvar z_zombie_knockoff_death 0 +//confogl_addcvar sv_zombie_touch_trigger_delay 0.5 + +//confogl_addcvar z_use_next_difficulty_damage_factor 0 +confogl_addcvar z_hit_from_behind_cosine 1.0 +confogl_addcvar z_hit_from_behind_factor 1.0 +//confogl_addcvar z_hit_incap_factor_easy 1.0 +//confogl_addcvar z_hit_incap_factor_normal 1.0 +//confogl_addcvar z_hit_incap_factor_hard 1.0 +//confogl_addcvar z_hit_incap_factor_expert 1.0 +//confogl_addcvar z_attack_incapacitated_damage 10 +//confogl_addcvar z_claw_hit_pitch_min -10 +//confogl_addcvar z_claw_hit_pitch_max 10 +//confogl_addcvar z_claw_hit_yaw_min -10 +//confogl_addcvar z_claw_hit_yaw_max 10 +//confogl_addcvar z_stomp_always 0 +//confogl_addcvar mp_slammoveyaw 0 +//confogl_addcvar z_damage_screen_fade_alpha 32 +//confogl_addcvar z_damage_screen_fade_duration 0.666667 +//confogl_addcvar z_throttle_hit_interval_easy 0.25 +//confogl_addcvar z_throttle_hit_interval_normal 0.25 +//confogl_addcvar z_throttle_hit_interval_hard 0.25 +//confogl_addcvar z_throttle_hit_interval_expert 0.5 +confogl_addcvar survivor_damage_speed_factor 0.3 +//confogl_addcvar vs_survivor_damage_reduction 1.0 +//confogl_addcvar common_dps_window 0 +//confogl_addcvar common_dps_spew 0 +confogl_addcvar sv_infected_riot_control_tonfa_probability 0.25 +confogl_addcvar sv_infected_police_tonfa_probability 0.25 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.0625 +//confogl_addcvar z_fallen_max_count 1 +confogl_addcvar z_fallen_kill_suppress_time 60 +confogl_addcvar sv_fallen_survivor_health_multiplier 5.0 + +confogl_addcvar z_mob_spawn_min_size 25 +confogl_addcvar z_mob_spawn_max_size 25 +confogl_addcvar z_mob_spawn_finale_size 25 +confogl_addcvar z_mob_min_notify_count 10 +confogl_addcvar z_mob_music_size 10 +confogl_addcvar z_mega_mob_size 75 +confogl_addcvar z_mob_spawn_min_interval_easy 300 +confogl_addcvar z_mob_spawn_max_interval_easy 300 +confogl_addcvar z_mob_spawn_min_interval_normal 300 +confogl_addcvar z_mob_spawn_max_interval_normal 300 +confogl_addcvar z_mob_spawn_min_interval_hard 300 +confogl_addcvar z_mob_spawn_max_interval_hard 300 +confogl_addcvar z_mob_spawn_min_interval_expert 300 +confogl_addcvar z_mob_spawn_max_interval_expert 300 +confogl_addcvar z_mega_mob_spawn_min_interval 300 +confogl_addcvar z_mega_mob_spawn_max_interval 300 +//confogl_addcvar z_spawn_mobs_behind_chance 0 +//confogl_addcvar spawn_behind_survivors_distance 0 +//confogl_addcvar z_scout_mob_spawn_range 1500 +//confogl_addcvar z_skirmish_spawn_min_size 1 +//confogl_addcvar z_skirmish_spawn_max_size 4 +//confogl_addcvar z_skirmish_spawn_min_interval 30 +//confogl_addcvar z_skirmish_spawn_max_interval 60 +//confogl_addcvar fidget_min_interval 15 +//confogl_addcvar fidget_max_interval 30 +//confogl_addcvar cleared_wanderer_respawn_chance 50 +//confogl_addcvar director_panic_wave_pause_max 4 +//confogl_addcvar director_panic_wave_pause_min 4 +//confogl_addcvar director_finale_stage_delay 4 +//confogl_addcvar director_finale_panic_waves 2 +//confogl_addcvar z_mob_sacrifice_timeout 4 +//confogl_addcvar z_cull_timeout 4 +//confogl_addcvar z_large_volume_mob_too_far_xy 2000 +//confogl_addcvar z_large_volume_mob_too_far_z 200 + +// Infected Ghost Cvars +//confogl_addcvar z_infected_flashlight 1 +//confogl_addcvar z_ghost_friction 1.625 +//confogl_addcvar z_ghost_speed 450 +//confogl_addcvar z_spawn_speed 450 +//confogl_addcvar z_fog_spawn 1 +//confogl_addcvar z_ghost_group_spawn 0 +//confogl_addcvar z_ghost_spawn_in_start 0 +//confogl_addcvar z_finale_ghost_player_spawn_on_survivor 1 +//confogl_addcvar z_safe_spawn_range 0 +//confogl_addcvar z_spawn_safety_range 200 +//confogl_addcvar z_cooldown_spawn_safety_range 200 +//confogl_addcvar z_finale_spawn_safety_range 200 +//confogl_addcvar z_finale_spawn_mob_safety_range 400 +//confogl_addcvar z_finale_spawn_tank_safety_range 400 +//confogl_addcvar versus_special_respawn_interval 15 +//confogl_addcvar z_ghost_spawn_interval 15 +//confogl_addcvar z_ghost_checkpoint_spawn_interval 15 +//confogl_addcvar z_ghost_finale_spawn_interval 15 +//confogl_addcvar z_ghost_offer_spawn_safety_time 15 +//confogl_addcvar z_director_special_spawn_delay 0 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +confogl_addcvar z_ghost_delay_minspawn 1 +//confogl_addcvar z_ghost_duration 1 +//confogl_addcvar z_ghost_spawn_distance 200 +//confogl_addcvar z_ghost_ahead_flow 200 +//confogl_addcvar z_ghost_travel_distance 0 +//confogl_addcvar z_respawn_interval 5 +//confogl_addcvar z_respawn_distance 0 +//confogl_addcvar z_max_path_length 4000 +//confogl_addcvar z_boundary_max_range 4000 +//confogl_addcvar z_boundary_spread_speed 1000 +//confogl_addcvar z_boundary_clear_type 1 +//confogl_addcvar z_scrimmage_sphere 1 +//confogl_addcvar z_scrimmage_creep_delay 20 +//confogl_addcvar z_scrimmage_creep_rate 100 +confogl_addcvar z_discard_range 1500 +confogl_addcvar z_discard_min_range 0 +//confogl_addcvar z_award_debug 1 +//confogl_addcvar z_holiday_gift_drop_chance 1.0 + +// Special Infected Cvars +//confogl_addcvar z_boomer_limit 1 +//confogl_addcvar z_spitter_limit 1 +confogl_addcvar z_smoker_limit 1 +confogl_addcvar z_hunter_limit 1 +//confogl_addcvar z_jockey_limit 1 +//confogl_addcvar z_charger_limit 1 +//confogl_addcvar z_versus_boomer_limit 1 +//confogl_addcvar z_versus_spitter_limit 1 +//confogl_addcvar z_versus_smoker_limit 1 +//confogl_addcvar z_versus_hunter_limit 1 +//confogl_addcvar z_versus_jockey_limit 1 +//confogl_addcvar z_versus_charger_limit 1 +//confogl_addcvar boomer_leaker_chance 0 +//confogl_addcvar z_female_boomer_spawn_chance 50 +confogl_addcvar z_spitter_high_chance 100 +//confogl_addcvar z_exploding_health 50 +//confogl_addcvar z_spitter_health 100 +//confogl_addcvar z_gas_health 250 +//confogl_addcvar z_hunter_health 250 +//confogl_addcvar z_jockey_health 325 +//confogl_addcvar z_charger_health 600 +confogl_addcvar z_speed 260 +confogl_addcvar z_exploding_speed 200 +confogl_addcvar z_spitter_speed 240 +//confogl_addcvar z_gas_speed 220 +confogl_addcvar z_hunter_speed 260 +confogl_addcvar z_jockey_speed 280 +confogl_addcvar claw_range 60 +confogl_addcvar claw_range_down 80 +//confogl_addcvar claw_force 100 +//confogl_addcvar claw_swing_interval 0.966667 +//confogl_addcvar claw_swing_miss_interval 0.966667 +//confogl_addcvar claw_swing_duration 0.166667 +confogl_addcvar boomer_pz_claw_dmg 6 +//confogl_addcvar spitter_pz_claw_dmg 4 +confogl_addcvar smoker_pz_claw_dmg 6 +confogl_addcvar hunter_pz_claw_dmg 6 +//confogl_addcvar jockey_pz_claw_dmg 4 +confogl_addcvar charger_pz_claw_dmg 10 +confogl_addcvar z_attack_movement_penalty 0.6 +//confogl_addcvar z_max_survivor_damage 2147483647 + +//confogl_addcvar z_vomit_duration 1.333333 +//confogl_addcvar z_vomit_velocity 2000 +//confogl_addcvar z_vomit_drag 1.0 +//confogl_addcvar z_vomit_float -100 +//confogl_addcvar z_vomit_boxsize 2.0 +//confogl_addcvar z_vomit_maxdamagedist 400 +//confogl_addcvar z_vomit_fatigue 2250 +//confogl_addcvar z_vomit_interval 20 +//confogl_addcvar z_vomit_hit_pitch_min -10 +//confogl_addcvar z_vomit_hit_pitch_max 10 +//confogl_addcvar z_vomit_hit_yaw_min -10 +//confogl_addcvar z_vomit_hit_yaw_max 10 +//confogl_addcvar survivor_it_duration 20 +confogl_addcvar z_exploding_shove_min 4 +confogl_addcvar z_exploding_shove_max 5 +confogl_addcvar z_exploding_shove_interval 7.5 +//confogl_addcvar z_exploding_splat 0 +//confogl_addcvar z_exploding_splat_radius 250 +//confogl_addcvar z_splat_survivor_shake_radius 300 +//confogl_addcvar z_splat_survivor_shake_amplitude 100 +//confogl_addcvar z_splat_survivor_shake_frequency 200 +//confogl_addcvar z_splat_survivor_pitch_min -10 +//confogl_addcvar z_splat_survivor_pitch_max 10 +//confogl_addcvar z_splat_survivor_yaw_min -15 +//confogl_addcvar z_splat_survivor_yaw_max 15 +confogl_addcvar z_exploding_inner_radius 200 +confogl_addcvar z_exploding_outer_radius 200 +confogl_addcvar z_exploding_force 5000 + +confogl_addcvar z_spit_range 925 +confogl_addcvar z_spit_velocity 925 +confogl_addcvar z_spit_latency 0.25 +confogl_addcvar z_spit_spread_delay 0.0 +confogl_addcvar z_spit_interval 16 +//confogl_addcvar inferno_acid_spawn_angle 45 +//confogl_addcvar spit_scaling_min_scale 1.0 + +confogl_addcvar tongue_health 150 +confogl_addcvar tongue_range 800 +confogl_addcvar tongue_vs_cone_start_tolerance 0.02 +confogl_addcvar tongue_los_forgiveness_time 2.0 +//confogl_addcvar tongue_fly_speed 1000 +//confogl_addcvar tongue_bullet_radius 8 +//confogl_addcvar tongue_bend_point_deflection 4 +//confogl_addcvar tongue_bend_point_needs_LOS 0 +//confogl_addcvar tongue_allow_voluntary_release 0 +confogl_addcvar tongue_start_pull_delay 0.0 +confogl_addcvar tongue_victim_acceleration 10 +confogl_addcvar tongue_victim_max_speed 200 +confogl_addcvar tongue_victim_accuracy_penalty 0.1 +confogl_addcvar tongue_drag_damage_amount 4 +confogl_addcvar tongue_choke_damage_amount 6 +confogl_addcvar tongue_choke_damage_interval 0.75 +confogl_addcvar survivor_incap_tongued_decay_rate 15 +confogl_addcvar survivor_hanging_from_tongue_eye_height 60 +//confogl_addcvar tongue_release_fatigue_penalty 2500 +confogl_addcvar tongue_miss_delay 2.9 +confogl_addcvar tongue_hit_delay 12 +//confogl_addcvar tongue_vertical_choke_height 64 +//confogl_addcvar tongue_vertical_choke_time_off_ground 0.333333 + +confogl_addcvar z_hunter_ground_normal 0.1 +confogl_addcvar z_pounce_silence_range 400 +//confogl_addcvar z_pounce_allow_partial_hidden 1 +confogl_addcvar z_pounce_crouch_delay 0.8 +//confogl_addcvar z_lunge_power 600 +confogl_addcvar z_player_lunge_up 125 +//confogl_addcvar z_lunge_reflect 1 +//confogl_addcvar z_lunge_interval 0 +//confogl_addcvar z_lunge_cooldown 0 +//confogl_addcvar z_pounce_delay 0 +confogl_addcvar z_player_zombie_land_delay 0.4 +confogl_addcvar z_pounce_damage_delay 0.0 +confogl_addcvar z_pounce_damage_interval 0.5 +confogl_addcvar z_pounce_damage 5 +confogl_addcvar z_pounce_stumble_radius 150 +confogl_addcvar z_pounce_shake_amplitude 5 +confogl_addcvar survivor_pounce_victim_eye_height 30 +//confogl_addcvar z_max_hunter_pounce_stagger_duration 0.5 +//confogl_addcvar z_hunter_max_pounce_bonus_damage 24 + +confogl_addcvar z_leap_power 425 +confogl_addcvar z_leap_interval 0.45 +confogl_addcvar z_jockey_control_min 0.8 +confogl_addcvar z_jockey_control_max 1.0 +confogl_addcvar z_jockey_control_variance 0.0 +confogl_addcvar z_jockey_min_mounted_speed 0.6 +confogl_addcvar z_jockey_ride_damage_delay 0.0 +confogl_addcvar z_jockey_ride_damage_interval 0.5 +confogl_addcvar z_jockey_ride_damage 2 +//confogl_addcvar z_jockey_pounced_surv_bark 1 +confogl_addcvar z_leap_interval_post_ride 5 +confogl_addcvar z_leap_interval_post_incap 16 + +//confogl_addcvar z_charger_allow_shove 0 +//confogl_addcvar z_charge_tooshort 0 +//confogl_addcvar z_charge_warmup 0.5 +//confogl_addcvar z_charge_start_speed 300 +confogl_addcvar z_charge_min_force 600 +confogl_addcvar z_charge_max_force 800 +confogl_addcvar z_charge_duration 2.375 +confogl_addcvar z_charge_impact_radius 125 +//confogl_addcvar z_charge_impact_angle 0.6 +//confogl_addcvar z_charger_impact_epsilon 0 +//confogl_addcvar z_charger_probe_alone 16 +//confogl_addcvar z_charger_probe_attack 16 +//confogl_addcvar z_charge_interval 12 + +// Infected Bot Cvars +confogl_addcvar director_allow_infected_bots 1 +//confogl_addcvar z_minion_limit 4 +//confogl_addcvar z_minion_aim_tolerance 1.0 +//confogl_addcvar boomer_exposed_time_tolerance 600 +//confogl_addcvar z_boomer_near_dist 65536 +//confogl_addcvar boomer_vomit_delay 0.0 +confogl_addcvar z_spitter_range 1000 +//confogl_addcvar z_spit_detonate_delay 0 +//confogl_addcvar z_spitter_max_wait_time 600 + +//confogl_addcvar tongue_cone_start_tolerance 1.0 +//confogl_addcvar smoker_tongue_delay 0.0 +confogl_addcvar tongue_dropping_to_ground_time 0.5 +confogl_addcvar tongue_player_dropping_to_ground_time 0.5 +//confogl_addcvar tongue_break_from_damage_amount 300 +//confogl_addcvar smoker_escape_range 65536 + +confogl_addcvar hunter_pounce_ready_range 1000 +confogl_addcvar hunter_committed_attack_range 800 +//confogl_addcvar z_hunter_lunge_distance 800 +//confogl_addcvar z_hunter_lunge_pitch 45 +//confogl_addcvar hunter_pounce_air_speed 750 +//confogl_addcvar z_pounce_damage_interrupt 300 +//confogl_addcvar hunter_pounce_loft_rate 0.03 +//confogl_addcvar hunter_pounce_max_loft_angle 90 +//confogl_addcvar hunter_leap_away_give_up_range 65536 +//confogl_addcvar versus_shove_hunter_fov 60 +//confogl_addcvar versus_shove_hunter_fov_pouncing 30 + +confogl_addcvar z_jockey_leap_time 0.45 +//confogl_addcvar z_jockey_leap_range 250 +//confogl_addcvar z_leap_max_distance 300 +//confogl_addcvar jockey_pounce_loft_rate 0.03 +//confogl_addcvar jockey_pounce_max_loft_angle 90 +//confogl_addcvar jockey_pounce_air_speed 500 +//confogl_addcvar z_leap_attach_distance 40 +//confogl_addcvar z_leap_force_attach_distance 40 +confogl_addcvar z_leap_far_attach_delay 0.3 +//confogl_addcvar versus_shove_jockey_fov_leaping 45 +confogl_addcvar z_jockey_ride_scan_interval 1.0 +confogl_addcvar z_jockey_leap_again_timer 4 + +// Tank/Witch Cvars +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.2 +confogl_addcvar versus_boss_flow_max 0.7 +confogl_addcvar versus_boss_flow_min_intro 0.3 +confogl_addcvar versus_boss_flow_max_intro 0.8 +confogl_addcvar versus_boss_flow_min_finale 0.4 +confogl_addcvar versus_boss_flow_max_finale 0.9 +//confogl_addcvar versus_boss_padding_min 0.1 +//confogl_addcvar versus_boss_padding_max 0.2 +//confogl_addcvar versus_boss_buffer 2000 +//confogl_addcvar vs_threat_radius 1000 +//confogl_addcvar vs_threat_initial_distance_min 2000 +//confogl_addcvar vs_threat_initial_distance_max 8000 +//confogl_addcvar vs_threat_initial_distance_first_map_min 2000 +//confogl_addcvar vs_threat_initial_distance_first_map_min 8000 +//confogl_addcvar director_threat_min_separation 4000 +//confogl_addcvar director_threat_max_separation 4000 +//confogl_addcvar director_threat_radius 1000 +//confogl_addcvar director_threat_clear_radius 500 +//confogl_addcvar director_max_threat_areas 2 + +//Mean Witches +//confogl_addcvar director_force_witch 1 +//confogl_addcvar witch_force_wander 0 +//confogl_addcvar z_witch_allow_change_victim 1 +//confogl_addcvar z_witch_always_kills 0 +confogl_addcvar z_witch_health 2000 +//confogl_addcvar z_witch_speed 300 +//confogl_addcvar z_witch_speed_inured 240 +confogl_addcvar z_witch_threat_hostile_range 900 +confogl_addcvar z_witch_threat_normal_range 600 +confogl_addcvar z_witch_flashlight_range 600 +confogl_addcvar z_witch_personal_space 300 +confogl_addcvar z_witch_wander_hear_radius 400 +confogl_addcvar z_witch_wander_personal_space 400 +confogl_addcvar z_witch_wander_music_min_interval 3 +confogl_addcvar z_witch_wander_music_max_interval 30 +confogl_addcvar z_witch_wander_music_min_dist 2147483647 +confogl_addcvar z_witch_wander_music_max_dist 2147483647 +confogl_addcvar z_witch_berserk_range 400 +confogl_addcvar z_witch_min_threat_time 4 +confogl_addcvar z_witch_max_threat_time 4 +confogl_addcvar z_witch_wander_personal_time 4 +confogl_addcvar z_witch_anger_rate 0.4 +confogl_addcvar z_witch_relax_rate 0.1 +confogl_addcvar witch_rage_ramp_duration 4 +//confogl_addcvar z_witch_tongue_range 0 +//confogl_addcvar z_witch_attack_range 60 +//confogl_addcvar z_witch_damage 100 +confogl_addcvar z_witch_damage_per_kill_hit 25 +//confogl_addcvar z_witch_burn_time 15 +//confogl_addcvar z_witch_min_retreat_range 500 +//confogl_addcvar z_witch_max_retreat_range 1000 +//confogl_addcvar z_witch_retreat_min_duration 5 +//confogl_addcvar z_witch_retreat_exit_range 500 +//confogl_addcvar z_witch_retreat_exit_hidden_duration 5 +//confogl_addcvar z_witch_discard_range 1000 + +//Mean Tanks +//confogl_addcvar director_force_tank 0 +//confogl_addcvar director_ai_tanks 0 +//confogl_addcvar director_tank_max_interval 300 +//confogl_addcvar director_tank_min_interval 300 +//confogl_addcvar director_tank_lottery_entry_time 0.1 +confogl_addcvar director_tank_lottery_selection_time 4 +//confogl_addcvar z_frustration 1 +confogl_addcvar z_frustration_spawn_delay 20 +//confogl_addcvar z_frustration_lifetime 20 +confogl_addcvar z_frustration_los_delay 0.0 +//confogl_addcvar tank_run_spawn_delay 10 +//confogl_addcvar tank_pz_forward -0.25 +confogl_addcvar z_tank_health 4667 +confogl_addcvar z_tank_incapacitated_health 1000 +//confogl_addcvar z_tank_incapacitated_decay_rate 1 +confogl_addcvar z_tank_speed 220 +confogl_addcvar z_tank_speed_vs 200 +confogl_addcvar z_tank_walk_speed 120 +confogl_addcvar tank_attack_range 60 +confogl_addcvar tank_swing_range 60 +confogl_addcvar tank_fist_radius 20 +confogl_addcvar tank_windup_time 0.45 +confogl_addcvar tank_swing_interval 1.45 +confogl_addcvar tank_swing_duration 0.15 +confogl_addcvar z_tank_attack_interval 0.75 +confogl_addcvar tank_swing_miss_interval 0.75 +//confogl_addcvar tank_swing_fast_interval 0 +confogl_addcvar tank_swing_yaw 120 +confogl_addcvar z_tank_throw_health 50 +confogl_addcvar z_tank_throw_force 825 +confogl_addcvar z_tank_throw_interval 4.666667 +confogl_addcvar z_tank_rock_radius 96 +confogl_addcvar tank_throw_allow_range 600 +//confogl_addcvar tank_rock_overhead_percent 100 +//confogl_addcvar tank_throw_aim_error 0 +confogl_addcvar tank_throw_lead_time_factor 0.333333 +confogl_addcvar tank_throw_loft_rate 0.01 +confogl_addcvar tank_throw_max_loft_angle 45 +confogl_addcvar tank_throw_min_interval 4 +//confogl_addcvar z_tank_throw_fail_interval 0 +//confogl_addcvar vs_tank_damage 24 +confogl_addcvar tank_burn_duration 70 +confogl_addcvar tank_burn_duration_hard 70 +confogl_addcvar tank_burn_duration_expert 70 +confogl_addcvar tankcontrol_print_all 1 +confogl_addcvar tank_ground_pound_reveal_distance 600 +confogl_addcvar tank_ground_pound_duration 1.0 +confogl_addcvar z_tank_footstep_shake_radius 800 +confogl_addcvar z_tank_footstep_shake_interval 0.1 +confogl_addcvar z_tank_footstep_shake_duration 1.0 +confogl_addcvar tank_swing_physics_prop_force 3.2 +//confogl_addcvar sv_tankpropfade 1 +//confogl_addcvar tank_stuck_failsafe 1 +confogl_addcvar tank_stuck_time_choose_new_target 0.1 +confogl_addcvar tank_stuck_time_suicide 600 +confogl_addcvar tank_stuck_visibility_tolerance_choose_new_target 0.1 +confogl_addcvar tank_stuck_visibility_tolerance_suicide 600 + +//Stats +comp_roundlimitnfogl_addcvar l4d_stats_announcemotd "0" +confogl_addcvar l4d_stats_announceplayerjoined "0" +confogl_addcvar l4d_stats_announcespecial "0" +confogl_addcvar l4d_stats_announcemode "0" +confogl_addcvar l4d_stats_announcerank "0" +confogl_addcvar l4d_stats_rankonjoin "0" +confogl_addcvar l4d_stats_soundsenabled "1" +confogl_addcvar l4d_stats_adm_cleanoldplayers "0" +confogl_addcvar l4d_stats_adm_cleanplaytime "0" +confogl_addcvar l4d_stats_ffire_mode "0" +confogl_addcvar l4d_stats_silencechat "1" +confogl_addcvar l4d_stats_disabledmessages "0" +confogl_addcvar l4d_stats_insaferoom "1" +confogl_addcvar l4d_stats_restart "1" +confogl_addcvar l4d_stats_fkill "1" +confogl_addcvar l4d_stats_fincap "1" +confogl_addcvar l4d_stats_ffire "1" + +// Pissmod Shared Cvars +wait 300;exec cfgogl/pissmod/shared_cvars.cfg + +// Config Cvars +wait 600;exec cfgogl/pissmod/pissmod.cfg diff --git a/cfg/cfgogl/pissmod/confogl_off.cfg b/cfg/cfgogl/pissmod/confogl_off.cfg new file mode 100644 index 00000000..b844c62b --- /dev/null +++ b/cfg/cfgogl/pissmod/confogl_off.cfg @@ -0,0 +1,39 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Disable ReadyUp +l4d_ready_enabled 0 + +// Reset Default Common Limit, Static Spawns, and String Count +reset_static_maps +sm_resetstringcount + +// Unlock Plugins and reload defaults +confogl_resetclientcvars +confogl_resetcvars +pred_unload_plugins + +//reset the stats plugin to not show up on unload +confogl_addcvar l4d_stats_announcemotd "0" +confogl_addcvar l4d_stats_announceplayerjoined "0" +confogl_addcvar l4d_stats_announcespecial "0" +confogl_addcvar l4d_stats_announcemode "0" +confogl_addcvar l4d_stats_announcerank "0" +confogl_addcvar l4d_stats_rankonjoin "0" +confogl_addcvar l4d_stats_soundsenabled "0" +confogl_addcvar l4d_stats_adm_cleanoldplayers "0" +confogl_addcvar l4d_stats_adm_cleanplaytime "0" +confogl_addcvar l4d_stats_ffire_mode "0" +confogl_addcvar l4d_stats_silencechat "1" +confogl_addcvar l4d_stats_disabledmessages "0" +confogl_addcvar l4d_stats_insaferoom "1" +confogl_addcvar l4d_stats_restart "0" +confogl_addcvar l4d_stats_fkill "100" +confogl_addcvar l4d_stats_fincap "0" +confogl_addcvar l4d_stats_ffire "1" diff --git a/cfg/cfgogl/pissmod/confogl_plugins.cfg b/cfg/cfgogl/pissmod/confogl_plugins.cfg new file mode 100644 index 00000000..59944af2 --- /dev/null +++ b/cfg/cfgogl/pissmod/confogl_plugins.cfg @@ -0,0 +1,45 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------------------------- +// shared plugins +//------------------------------------------- +exec cfgogl/pissmod/shared_plugins.cfg + +//------------------------------------------- +// numbersmod 4v4 +//------------------------------------------- +sm plugins load optional/l4d2_playstats.smx +sm plugins load optional/l4d2_skill_detect.smx +sm plugins load optional/l4d2_stats.smx +sm plugins load optional/witch_and_tankifier.smx +sm plugins load randomcycle.smx +sm plugins load l4d2_mix.smx +sm plugins load bizzymod/bizzykits.smx +sm plugins load bizzykits2.smx +sm plugins load bizzyvotemute.smx +sm plugins load SpecListener.smx +sm plugins load vscript_replacer.smx +sm plugins load l4d_witch_damage.smx +sm plugins load l4d2scores.smx +sm plugins load optional/slots_vote.smx +sm plugins load optional/l4d2_setscores.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d2_reload_fix.smx +sm plugins load optional/l4d_witch_damage_announce.smx +sm plugins load optional/l4d_gear_transfer.smx + +//------------------------------------------- +// player stats +//------------------------------------------- +sm plugins load l4d_stats.smx +sm plugins load optional/l4d2_stats.smx +sm plugins load optional/l4d2_playstats.smx +sm plugins load optional/l4d2_skill_detect.smx diff --git a/cfg/cfgogl/pissmod/notes.txt b/cfg/cfgogl/pissmod/notes.txt new file mode 100644 index 00000000..6bab4750 --- /dev/null +++ b/cfg/cfgogl/pissmod/notes.txt @@ -0,0 +1,14 @@ +// [l4d2_playstats.smx] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 +//AUTO_MVPCHAT_ROUND 1 // chat: mvp for this round +//AUTO_MVPCON_ROUND 4 // console table: mvp this round +//AUTO_MVPCON_TANK 16 // console table: tankfight stats (this round) +//AUTO_FFCON_ROUND 32 // friendly fire +//AUTO_SKILLCON_ROUND 128 // special 'skill' stats: skeets, crowns, etc +//AUTO_ACCCON_ROUND 512 // accuracy general stats +//AUTO_ACCCON_MORE_ROUND 2048 // accuracy stats on SI / tank hits +//AUTO_FUNFACT_ROUND 8192 // fun fact, relevant to the round +//AUTO_MVPCON_MORE_ROUND 32768 // console table: more mvp stats, time alive, etc +//AUTO_INFCON_ROUND 131072 // console table: infected team stats diff --git a/cfg/cfgogl/pissmod/pissmod.cfg b/cfg/cfgogl/pissmod/pissmod.cfg new file mode 100644 index 00000000..eda3dc88 --- /dev/null +++ b/cfg/cfgogl/pissmod/pissmod.cfg @@ -0,0 +1,997 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Realism Confogl Cvars +confogl_addcvar mp_gamemode Versus +confogl_addcvar z_difficulty Hard +//confogl_addcvar Coop 1 +//confogl_addcvar Deathmatch 1 +//confogl_addcvar sv_maxplayers 32 +//confogl_addcvar sv_visiblemaxplayers 32 +//confogl_addcvar sv_unlockedchapters 64 +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar sv_disable_glow_survivors 1 +confogl_addcvar sv_disable_glow_faritems 0 +confogl_addcvar sv_force_time_of_day -1 +//confogl_addcvar sv_rescue_disabled 0 +//confogl_addcvar sv_permawipe 0 +//confogl_addcvar sv_bonus_challenge 0 + +// Player Cvars +//confogl_addcvar player_use_radius 100 +//confogl_addcvar player_incap_use_radius 120 +//confogl_addcvar z_use_tolerance 0.8 +//confogl_addcvar z_use_belt_item_tolerance 0.0 +//confogl_addcvar decalfrequency 1.5 +//confogl_addcvar tauntfrequency 0 +//confogl_addcvar intensity_lock -1 +//confogl_addcvar intensity_factor 10.0 +//confogl_addcvar intensity_decay_time 20 +//confogl_addcvar intensity_enemy_death_near_range 250 +//confogl_addcvar director_build_up_min_interval 10 +//confogl_addcvar director_sustain_peak_min_time 5 +//confogl_addcvar director_sustain_peak_max_time 10 +//confogl_addcvar director_relax_min_interval 10 +//confogl_addcvar director_relax_max_interval 20 +//confogl_addcvar director_intensity_threshold 0.1 +//confogl_addcvar director_intensity_relax_threshold 0.1 +//confogl_addcvar director_intensity_relax_allow_wanderers_threshold 1.0 +//confogl_addcvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 +//confogl_addcvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 +//confogl_addcvar survivor_calm_intensity 0.1 +//confogl_addcvar survivor_calm_no_flashlight 1 +//confogl_addcvar survivor_calm_deploy_delay 5 +//confogl_addcvar survivor_calm_weapon_delay 10 +//confogl_addcvar survivor_calm_damage_delay 10 +//confogl_addcvar survivor_calm_recent_enemy_delay 10 +//confogl_addcvar survivor_fog_vocalize_percent 0.5 +//confogl_addcvar z_reload_chatter_intensity 0.1 +//confogl_addcvar z_reload_chatter_recent_enemy 5 +//confogl_addcvar z_reload_chatter_shotgun_ammo_threshold 10 +//confogl_addcvar z_vocalize_shot_interval 1 +//confogl_addcvar z_vocalize_burn_min_interval 1 +//confogl_addcvar z_vocalize_burn_max_interval 2 +//confogl_addcvar survivor_give_attract_timeout 30 +//confogl_addcvar shout_min_use_range 500 +//confogl_addcvar shout_max_warn_range 2000 +//confogl_addcvar shout_min_warn_interval 2 +//confogl_addcvar shout_min_special_warn_interval 1 +//confogl_addcvar shout_threat_range 2000 +//confogl_addcvar shout_going_to_die_interval 15 +//confogl_addcvar shout_make_way_interval 3 +//confogl_addcvar rescue_min_dead_time 120 +//confogl_addcvar rescue_spawn_range 4000 +//confogl_addcvar rescue_distance 4000 +//confogl_addcvar rescue_ignore_distance 4000 +//confogl_addcvar rescue_range 2000 +//confogl_addcvar rescue_interval 2 +//confogl_addcvar rescue_yell_delay 0.5 +//confogl_addcvar rescue_yell_interval 10 +//confogl_addcvar z_cough_cloud_radius 150 +//confogl_addcvar z_cough_cloud_initial_cough_delay 0 +//confogl_addcvar z_cough_cloud_expire 6 +//confogl_addcvar ai_LOS_mode 1 +confogl_addcvar ai_talk_idle_enabled 0 +//confogl_addcvar ai_use_visibility_cache 1 +//confogl_addcvar ai_expression_optimization 1 +//confogl_addcvar ai_expression_frametime 0.033333 +//confogl_addcvar ai_post_frame_navigation 1 + +//confogl_addcvar mp_flashlight 1 +//confogl_addcvar mp_footsteps 1 +//confogl_addcvar sv_footstepinterval 0.166667 +//confogl_addcvar mp_feetmaxyawrate 90 +//confogl_addcvar mp_feetyawrate 120 +//confogl_addcvar mp_feetyawrate_max 180 +//confogl_addcvar mp_facefronttime 0.333333 +//confogl_addcvar sv_optimizedmovement 1 +//confogl_addcvar sv_stepsize 18 +//confogl_addcvar smoothstairs 1 +//confogl_addcvar mp_falldamage 0 +//confogl_addcvar mp_freezetime 0 +//confogl_addcvar mp_forcecamera 0 +//confogl_addcvar mp_fadetoblack 0 +//confogl_addcvar spec_freeze_time 0 +//confogl_addcvar spec_freeze_traveltime 0.01 +//confogl_addcvar sv_spectatoridletime 0 +//confogl_addcvar z_spec_nightvision 1 +//confogl_addcvar noclip_fixup 1 +//confogl_addcvar sv_waterdist 0 +//confogl_addcvar sv_rollspeed 450 +//confogl_addcvar sv_rollangle 0.1 +//confogl_addcvar view_offset 0.0 +//confogl_addcvar view_offset_up 0.0 +//confogl_addcvar view_offset_down 0.0 +//confogl_addcvar view_offset_forward 0.0 +//confogl_addcvar still_vel_limit 0 +//confogl_addcvar still_view_accel_limit 1000 +//confogl_addcvar z_anim_idle_speed_max 120 +//confogl_addcvar z_anim_idle_speed_min 60 +//confogl_addcvar z_noise_level_max 150 +//confogl_addcvar z_noise_level_footstep 150 +//confogl_addcvar z_noise_level_vocalize 150 +//confogl_addcvar z_noise_level_fade_rate 50 +//confogl_addcvar z_noise_level_hold_time 0.333333 +//confogl_addcvar z_deafen_radius_one 50 +//confogl_addcvar z_deafen_radius_two 100 +//confogl_addcvar z_deafen_radius_three 150 + +// Movement Cvars +//confogl_addcvar sv_maxvelocity 2000 +//confogl_addcvar sv_maxspeed 1000 +//confogl_addcvar sv_accelerate 5.125 +//confogl_addcvar sv_friction 4.0 +//confogl_addcvar sv_backspeed 1.0 +confogl_addcvar sv_stopspeed 70 +//confogl_addcvar z_forwardspeed 500 +//confogl_addcvar z_sidespeed 500 +//confogl_addcvar z_backspeed 500 +confogl_addcvar z_walk_speed 120 +confogl_addcvar z_crouch_speed 80 +confogl_addcvar sv_gravity 740 +confogl_addcvar sv_airaccelerate 20 +//confogl_addcvar sv_bounce 0.25 +//confogl_addcvar fall_speed_safe 550 +//confogl_addcvar fall_speed_fatal 750 +confogl_addcvar z_falling_land_speed 400 +confogl_addcvar z_falling_land_hard_speed 400 +confogl_addcvar z_falling_land_forward_speed 400 +//confogl_addcvar sv_player_stuck_tolerance 3 +//confogl_addcvar sv_wateraccelerate 30 +//confogl_addcvar sv_waterfriction 0 +//confogl_addcvar sv_noclipaccelerate 5 +//confogl_addcvar sv_noclipfriction 4 +//confogl_addcvar sv_noclipspeed 3 +//confogl_addcvar sv_noclipduringpause 1 +//confogl_addcvar sv_specaccelerate 5 +//confogl_addcvar sv_specspeed 3 + +// Survivor Cvars +//confogl_addcvar survivor_lean 1 +//confogl_addcvar survivor_push 1 +//confogl_addcvar survivor_speed 220 +//confogl_addcvar survivor_unstoppable_speed 175 +//confogl_addcvar survivor_sprint_multiplier 1.2 +//confogl_addcvar survivor_speed_boost_factor 1.2 +//confogl_addcvar survivor_crouch_speed 75 +//confogl_addcvar survivor_limp_health 40 +confogl_addcvar survivor_limp_walk_speed 100 +confogl_addcvar survivor_fumes_walk_speed 100 +//confogl_addcvar survivor_allow_crawling 0 +//confogl_addcvar survivor_crawl_speed 100 +//confogl_addcvar survivor_max_tug_distance 0 +//confogl_addcvar survivor_max_tug_duration 0 +//confogl_addcvar survivor_drag_type 0 +//confogl_addcvar survivor_drag_continuous_fire 1 +//confogl_addcvar survivor_revive_after_drag 1 +//confogl_addcvar survivor_drag_speed_multiplier 0.75 +//confogl_addcvar survivor_accuracy_upgrade_factor 0.75 +//confogl_addcvar survivor_upgrade_reload_duration 0.75 +//confogl_addcvar survivor_max_lunge_stagger_speed 300 +//confogl_addcvar survivor_max_lunge_stagger_distance 50 +//confogl_addcvar survivor_max_tongue_stagger_distance 200 +//confogl_addcvar survivor_max_tongue_stagger_duration 0.5 + +confogl_addcvar survivor_knockdown_roll -15 +//confogl_addcvar survivor_incap_health 300 +//confogl_addcvar survivor_incap_decay_rate 3 +confogl_addcvar survivor_incapacitated_roll 15 +//confogl_addcvar survivor_incapacitated_eye_height 24 +confogl_addcvar survivor_incapacitated_dizzy_severity 1.0 +confogl_addcvar survivor_incapacitated_dizzy_timer 5 +confogl_addcvar survivor_incapacitated_accuracy_penalty 0.2 +confogl_addcvar survivor_incapacitated_cycle_time 0.275 +confogl_addcvar survivor_incapacitated_reload_multiplier 1.0 +confogl_addcvar survivor_revive_duration 4.5 +//confogl_addcvar survivor_revive_health 30 +//confogl_addcvar survivor_max_incapacitated_count 2 +confogl_addcvar survivor_hanging_eye_height 100 +//confogl_addcvar survivor_incap_max_fall_damage 300 +//confogl_addcvar z_grab_force 0 +//confogl_addcvar z_grab_ledges_solo 0 +//confogl_addcvar survivor_ledge_grab_health 300 +//confogl_addcvar survivor_ledge_scales_health 1 +//confogl_addcvar survivor_ledge_grab_ground_check_time 1 +//confogl_addcvar survivor_incap_hopeless_decay_rate 3 +//confogl_addcvar survivor_helping_hand_inhibit_duration 0 + +confogl_addcvar z_gun_range 80 +confogl_addcvar z_gun_damage 10 +confogl_addcvar z_gun_force 250 +confogl_addcvar z_gun_physics_force 25 +//confogl_addcvar z_gun_stun_duration 1.0 +confogl_addcvar z_max_stagger_duration 0.8 +confogl_addcvar z_gun_swing_interval 0.666667 +confogl_addcvar z_gun_swing_duration 0.15 +//confogl_addcvar z_gun_swing_coop_min_penalty 2147483647 +//confogl_addcvar z_gun_swing_coop_max_penalty 2147483647 +confogl_addcvar z_gun_swing_vs_min_penalty 2147483647 +confogl_addcvar z_gun_swing_vs_max_penalty 2147483647 +confogl_addcvar z_gun_swing_vs_cooldown 0.0 +confogl_addcvar z_gun_swing_vs_amt_penalty 0.0 +confogl_addcvar z_gun_swing_vs_restore_time 0.0 +confogl_addcvar z_gun_survivor_friend_push 1 +//confogl_addcvar z_gun_survivor_shove_dot 1.0 +//confogl_addcvar survivor_team_hit_pitch_min -5 +//confogl_addcvar survivor_team_hit_pitch_max 5 +//confogl_addcvar survivor_team_hit_yaw_min -5 +//confogl_addcvar survivor_team_hit_yaw_max 5 +//confogl_addcvar z_shove_friend_speed 220 +//confogl_addcvar survivor_stun_immunity_duration 1 + +// Bot Cvars +//confogl_addcvar sb_skill survivor +confogl_addcvar sb_allow_leading 1 +//confogl_addcvar sb_escort 0 +//confogl_addcvar sb_unstick 1 +//confogl_addcvar sb_flashlight 0 +//confogl_addcvar sb_far_hearing_range 2000 +//confogl_addcvar sb_near_hearing_range 1500 +//confogl_addcvar survivor_vision_range 1000 +//confogl_addcvar survivor_vision_range_obscured 1000 +//confogl_addcvar sb_path_lookahead_range 500 +//confogl_addcvar sb_use_button_range 500 +//confogl_addcvar sb_normal_saccade_speed 1000 +//confogl_addcvar sb_combat_saccade_speed 1000 +//confogl_addcvar sb_separation_danger_max_range 300 +//confogl_addcvar sb_separation_danger_min_range 100 +//confogl_addcvar sb_separation_range 300 +//confogl_addcvar sb_neighbor_range 300 +//confogl_addcvar sb_pushscale 0.0 +//confogl_addcvar sb_follow_stress_factor 1.0 +//confogl_addcvar sb_max_battlestation_range_from_human 300 +//confogl_addcvar sb_battlestation_give_up_range_from_human 100 +//confogl_addcvar sb_battlestation_human_hold_time 1 +//confogl_addcvar sb_max_scavenge_separation 500 +//confogl_addcvar sb_enforce_proximity_range 500 +//confogl_addcvar sb_enforce_proximity_lookat_timeout 1 +//confogl_addcvar sb_locomotion_wait_threshold 0 +//confogl_addcvar sb_debug_apoproach_wait_time 0 +//confogl_addcvar sb_reachable_cache_paranoia 1 +//confogl_addcvar sb_reachability_cache_lifetime 10 +//confogl_addcvar sb_allow_shoot_through_survivors 0 +//confogl_addcvar sb_friendlyfire 0 +//confogl_addcvar survivor_ff_avoidance 1 +//confogl_addcvar survivor_ff_avoidance_pitch 10 +//confogl_addcvar survivor_ff_avoidance_yaw 10 +//confogl_addcvar survivor_ff_tolerance 100 +//confogl_addcvar sb_vomit_blind_time 0 +//confogl_addcvar sb_sidestep_for_horde 1 +//confogl_addcvar sb_hindrance_range 100 +confogl_addcvar sb_max_team_melee_weapons 2 +//confogl_addcvar sb_melee_approach_victim 0 +//confogl_addcvar sb_min_attention_notice_time 0 +//confogl_addcvar sb_min_orphan_time_to_cover 0 +//confogl_addcvar sb_friend_immobilized_reaction_time_normal 0 +//confogl_addcvar sb_friend_immobilized_reaction_time_hard 0 +//confogl_addcvar sb_friend_immobilized_reaction_time_expert 0 +//confogl_addcvar sb_friend_immobilized_reaction_time_vs 0 +//confogl_addcvar sb_revive_friend_distance 200 +//confogl_addcvar sb_temp_health_consider_factor 0.8 +confogl_addcvar sb_toughness_buffer 0 +confogl_addcvar sb_close_checkpoint_door_interval 0.5 +//confogl_addcvar sb_minigun_distance 32 +//confogl_addcvar sb_narrow_corridor_width 64 +//confogl_addcvar sb_rescue_vehicle_loading_range 100 +confogl_addcvar sb_threat_very_far_range 1000 +confogl_addcvar sb_threat_far_range 800 +confogl_addcvar sb_threat_medium_range 600 +confogl_addcvar sb_close_threat_range 400 +confogl_addcvar sb_threat_close_range 200 +confogl_addcvar sb_threat_very_close_range 200 +//confogl_addcvar sb_threat_exposure_walk 2147483647 +//confogl_addcvar sb_threat_exposure_stop 2147483647 +//confogl_addcvar sb_l4d1_survivor_behavior 0 +//confogl_addcvar l4d1_survivor_give_item 0 + +// Next Bot Cvars +//confogl_addcvar nb_update_frequency 0 +//confogl_addcvar nb_update_framelimit 10 +//confogl_addcvar nb_update_maxslide 1 +//confogl_addcvar nb_path_draw_inc 2147483647 +//confogl_addcvar nb_path_segment_influence_radius 2147483647 +//confogl_addcvar nb_goal_look_ahead_range 2147483647 +//confogl_addcvar nb_speed_look_ahead_range 500 +//confogl_addcvar nb_vision_notice_hidden_range 100 +//confogl_addcvar nb_player_move_direct 0 +//confogl_addcvar nb_allow_climbing 1 +//confogl_addcvar nb_allow_gap_jumping 1 +//confogl_addcvar nb_allow_avoiding 1 +//confogl_addcvar nb_avoid 0 +//confogl_addcvar nb_avoid_interval 0 +//confogl_addcvar nb_saccade_speed 1000 +//confogl_addcvar nb_saccade_time 0.1 +//confogl_addcvar nb_head_aim_steady_max_rate 1000 +//confogl_addcvar nb_head_aim_settle_duration 0.1 +//confogl_addcvar nb_yaw_rate 250 +//confogl_addcvar nb_acceleration 500 +//confogl_addcvar nb_friction_forward 1 +//confogl_addcvar nb_friction_sideways 2 +//confogl_addcvar nb_lean_rate 3 +//confogl_addcvar nb_lean_forward_accel 150 +//confogl_addcvar nb_lean_max_angle 30 +//confogl_addcvar nb_gravity 2000 +//confogl_addcvar nb_chase_lead_time 0 +//confogl_addcvar nb_ladder_align_range 150 + +//Extreme Blood, Violence, Gore, Carnage, & More +//confogl_addcvar mp_ik 1 +//confogl_addcvar skill 3 +//confogl_addcvar sk_player_head 3 +//confogl_addcvar sk_player_chest 2 +//confogl_addcvar sk_player_stomach 2 +//confogl_addcvar sk_player_arm 1 +//confogl_addcvar sk_player_leg 1 +//confogl_addcvar sk_autoaim_mode 1 +//confogl_addcvar player_old_armor 1 +//confogl_addcvar old_radiusdamage 0.0 +//confogl_addcvar survivor_model_selection -1 +//confogl_addcvar sv_infected_scale_min 1.025 +//confogl_addcvar sv_infected_scale_max 1.025 +//confogl_addcvar sv_pvsskipanimation 1 +//confogl_addcvar z_forcezombiemodel 0 +//confogl_addcvar z_forcezombiemodelname "common_male01" +//confogl_addcvar z_population c1streets +//confogl_addcvar z_randombodygroups 1 +//confogl_addcvar z_randomskins 1 +//confogl_addcvar z_expressions 1 +//confogl_addcvar mp_allowNPCs 1 +//confogl_addcvar npc_vphysics 1 +//confogl_addcvar npc_height_adjust 10 +//confogl_addcvar r_drawentities 0 +//confogl_addcvar r_drawbrushmodels 0 +//confogl_addcvar r_eyes 1 +//confogl_addcvar r_teeth 1 +//confogl_addcvar r_skin 1 +//confogl_addcvar r_flex 0 +//confogl_addcvar flex_talk 0 +//confogl_addcvar flex_expression "" +//confogl_addcvar r_hwmorph 0 +//confogl_addcvar mat_morphstats 1 +//confogl_addcvar morph_path 8 +//confogl_addcvar fish_dormant 1 +//confogl_addcvar sv_zoo_model_filter "" +//confogl_addcvar sv_zoo_spacing 64 +//confogl_addcvar sv_zoo_spacing_rows 128 +//confogl_addcvar sv_zoo_spacing_wrap 96 +//confogl_addcvar sv_zoo_wrap_skin 1 +//confogl_addcvar sv_zoo_tint_loop 1 +//confogl_addcvar sv_zoo_tint_clr "255 255 255 255" +confogl_addcvar violence_hblood 2 +confogl_addcvar violence_hgibs 2 +confogl_addcvar violence_ablood 2 +confogl_addcvar violence_agibs 2 +//confogl_addcvar sv_turbophysics 1 +//confogl_addcvar sv_turbophysics_shadow 0 +//confogl_addcvar cl_simdbones 1 +//confogl_addcvar cl_use_simd_bones 1 +//confogl_addcvar phys_enable_experimental_optimizations 1 +//confogl_addcvar phys_enable_simd_optimizations 1 +//confogl_addcvar phys_impactforcescale 1.0 +//confogl_addcvar phys_upimpactforcescale 0.5 +//confogl_addcvar phys_shoot_torque 1000000 +//confogl_addcvar z_skip_wounds 0 +confogl_addcvar z_head_damage_causes_wounds 1 +confogl_addcvar z_splatterdistance 200 +confogl_addcvar z_tank_has_special_blood 1 +confogl_addcvar z_minigun_atomize 1 +//confogl_addcvar z_vomit 1 +//confogl_addcvar z_bbq_min 0 +//confogl_addcvar z_bbq_rate 0.01 +//confogl_addcvar z_burn_rate 0.1 +//confogl_addcvar z_burn_max 1.0 +confogl_addcvar phys_explosion_force 5.0 +confogl_addcvar z_gib_force_factor 10.0 +confogl_addcvar z_gib_explosion_force_factor 0.5 +confogl_addcvar z_fatal_blast_min_ragdolls 4 +confogl_addcvar z_fatal_blast_max_ragdolls 40 +confogl_addcvar z_fatal_blast_incineration_probability 50 +confogl_addcvar ai_force_serverside_ragdoll 1 +confogl_addcvar phys_ragdoll_force_magnitude 0.5 +//confogl_addcvar ragdoll_collide 0 +//confogl_addcvar ragdoll_self_collision 0 +//confogl_addcvar ragdoll_slowdown 1 +confogl_addcvar ragdoll_slowdown_time 3 +confogl_addcvar ragdoll_sleepaftertime 3 +confogl_addcvar ragdoll_force_to_sleep_time 4 +//confogl_addcvar ragdoll_door_uncollide_time 1.0 +//confogl_addcvar collision_shake_amp 0.0 +//confogl_addcvar collision_shake_freq 0.0 +//confogl_addcvar collision_shake_time 0.0 +//confogl_addcvar g_ragdoll_max_fps 60 +//confogl_addcvar g_ragdoll_min_fps 30 +confogl_addcvar z_ragdoll_discard_range 65536 +//confogl_addcvar sv_ragdoll_maxcount 65536 +//confogl_addcvar sv_ragdoll_maxcount_generic 65536 +//confogl_addcvar sv_ragdoll_maxcount_gib 65536 +//confogl_addcvar sv_ragdoll_maxcount_special 65536 +//confogl_addcvar sv_ragdoll_maxcount_boss 65536 +//confogl_addcvar sv_ragdoll_maxcount_survivor 65536 +//confogl_addcvar sv__ragdoll_max_remove_per_frame 1 + +// Physics Cvars +//confogl_addcvar phys2_enable 0 +//confogl_addcvar PhysPMC 1 +//confogl_addcvar physx_valve_dll 1 +//confogl_addcvar phys_timescale 1.0 +confogl_addcvar phys_pushscale 1.125 +//confogl_addcvar sv_pushaway_clientside 2 +//confogl_addcvar sv_pushaway_clientside_size 10 +//confogl_addcvar sv_pushaway_min_player_speed 70 +//confogl_addcvar sv_pushaway_min_force 500 +//confogl_addcvar sv_pushaway_max_force 5000 +//confogl_addcvar sv_pushaway_force 200000 +//confogl_addcvar sv_pushaway_max_player_force 10000 +//confogl_addcvar sv_pushaway_player_force 100000 +//confogl_addcvar sv_player_max_separation_force 1000 +//confogl_addcvar pipeline_static_props 1 +confogl_addcvar prop_active_gib_limit 2147483647 +confogl_addcvar prop_active_gib_max_fade_time 2147483647 +//confogl_addcvar func_breakdmg_bullet 1.0 +//confogl_addcvar func_breakdmg_club 2.0 +//confogl_addcvar func_breakdmg_explosive 1.5 +//confogl_addcvar func_break_reduction_factor 1.0 +//confogl_addcvar func_break_max_pieces 30 +//confogl_addcvar props_break_max_pieces -1 +//confogl_addcvar props_break_max_pieces_perframe -1 +confogl_addcvar z_breakable_damage 50 +confogl_addcvar z_door_pound_damage 500 +confogl_addcvar z_pounce_door_damage 1000 +confogl_addcvar z_charge_prop_damage 100 +confogl_addcvar z_charger_max_prop_force 10000 +confogl_addcvar car_alarm_distance 850 +confogl_addcvar car_alarm_chirp_distance 400 +confogl_addcvar car_alarm_duration 10 +confogl_addcvar car_alarm_chirp_interval 2 +confogl_addcvar car_alarm_chirp_duration 1 +//confogl_addcvar tick_door_speed 1.0 +//confogl_addcvar z_door_reopen_interval 0.25 +//confogl_addcvar z_door_retry_interval 0.5 +//confogl_addcvar sv_prop_door_max_close_attempts 1 +//confogl_addcvar sv_doors_push_players 1 +//confogl_addcvar ladder_autocenter 0 +//confogl_addcvar ladder_horizon -0.25 +//confogl_addcvar ladder_console_controls 0 +//confogl_addcvar z_min_ladder_mount_dot 0.25 +//confogl_addcvar elevator_movedelay 0 +//confogl_addcvar hack_elevator_z_offset 12 +confogl_addcvar player_throwforce 2500 +//confogl_addcvar gascan_throw_force 50 +confogl_addcvar gascan_spit_time 2.8 +confogl_addcvar gascan_use_range 80 +//confogl_addcvar gascan_use_tolerance 0.1 +confogl_addcvar gas_can_use_duration 1.9 +confogl_addcvar cola_bottles_use_range 100 +//confogl_addcvar cola_bottles_use_tolerance 0.1 +confogl_addcvar cola_bottles_use_duration 1.5 +confogl_addcvar action_progress_reset_interval 2 +//confogl_addcvar fire_growthrate 1.0 +//confogl_addcvar fire_heatscale 1.0 +//confogl_addcvar fire_incomingheatscale 0.1 +//confogl_addcvar fire_dmgbase 1 +//confogl_addcvar fire_dmgscale 0.1 +//confogl_addcvar fire_dmginterval 1 +//confogl_addcvar fire_absorbrate 2 +//confogl_addcvar fire_extabsorb 10 +//confogl_addcvar fire_extscale 10 +//confogl_addcvar fire_maxabsorb 20 +//confogl_addcvar sv_vehicle_autoaim_scale 1.0 + +// Game Cvars +//confogl_addcvar sv_maxplayers 32 +//confogl_addcvar sv_visiblemaxplayers 32 +//confogl_addcvar sv_unlockedchapters 64 +//confogl_addcvar allow_all_bot_survivor_team 1 +//confogl_addcvar sb_all_bot_game 1 +//confogl_addcvar precache_all_survivors 1 +//confogl_addcvar survivor_limit 4 +//confogl_addcvar z_max_player_zombies 4 +//confogl_addcvar director_min_start_players 1 +//confogl_addcvar sv_parallel_packentities 2 +//confogl_addcvar sv_parallel_sendsnapshot 2 +//confogl_addcvar sv_multiplayer_maxtempentities 64 +//confogl_addcvar sv_multiplayer_sounds 64 +//confogl_addcvar mp_allowspectators 1 +//confogl_addcvar spec_filter any +confogl_addcvar spec_filter_survivors survivor +confogl_addcvar spec_filter_infected infected +//confogl_addcvar z_restrict_team_change 0 +//confogl_addcvar vs_max_team_switches 2147483647 +//confogl_addcvar director_unfreeze_time 0 +//confogl_addcvar director_afk_timeout 2147483647 +//confogl_addcvar mp_playerid 0 +//confogl_addcvar mp_playerid_hold 0.5 +//confogl_addcvar mp_logdetail 3 +//confogl_addcvar mp_teamoverride 1 +//confogl_addcvar mp_defaultteam 0 +//confogl_addcvar mp_limitteams 0 +//confogl_addcvar mp_humanteam survivors +//confogl_addcvar mp_teamlist "gambler,mechanic,coach,producer,namvet,biker,manager,girl" +//confogl_addcvar mp_autoteambalance 0 +//confogl_addcvar mp_teams_unbalance_limit 0 +//confogl_addcvar mp_spawnprotectiontime 0 +//confogl_addcvar mp_freezetime 0 +//confogl_addcvar mp_autokick 0 +//confogl_addcvar mp_tkpunish 0 +//confogl_addcvar sv_allow_votes 1 +//confogl_addcvar sv_vote_issue_change_mission_allowed 1 +//confogl_addcvar sv_vote_issue_change_map_now_allowed 1 +//confogl_addcvar sv_vote_issue_change_map_later_allowed 1 +//confogl_addcvar sv_vote_issue_restart_game_allowed 1 +//confogl_addcvar sv_vote_issue_change_difficulty_allowed 1 +//confogl_addcvar sv_vote_issue_kick_allowed 1 +//confogl_addcvar sv_vote_creation_timer 0 +//confogl_addcvar sv_vote_timer_duration 12 +//confogl_addcvar sv_vote_command_delay 1.5 +//confogl_addcvar sv_vote_failure_timer 0 +//confogl_addcvar sv_vote_kick_ban_duration 0 +//confogl_addcvar sv_vote_plr_map_limit 2147483647 +//confogl_addcvar changelevel_inhibit 0 +//confogl_addcvar changelevel_pause_interval 7.5 +//confogl_addcvar z_transitioning_players_remove 0 +//confogl_addcvar director_transition_timeout 180 +confogl_addcvar versus_round_restarttimer 10 +confogl_addcvar versus_round_restarttimer_finale 10 +confogl_addcvar versus_level_restart_delay 2 +confogl_addcvar scavenge_match_finished_delay 10 +confogl_addcvar sv_pz_endgame_vote_period 25 +confogl_addcvar sv_pz_endgame_vote_post_period 5 + +//confogl_addcvar z_round_start_attack_prevention 0 +//confogl_addcvar z_round_start_replacement_time 15 +//confogl_addcvar tf_arena_preround_time 10 +//confogl_addcvar tf_arena_round_time 0 +//confogl_addcvar versus_force_start_time 600 +//confogl_addcvar mp_roundlimit 5 +//confogl_addcvar mp_timelimit 0 +//confogl_addcvar mp_roundtime 10 +//confogl_addcvar mp_maxrounds 0 +//confogl_addcvar mp_winlimit 0 +//confogl_addcvar mp_weaponstay 0 +//confogl_addcvar mp_c4timer 30 +//confogl_addcvar mp_chattime 30 +//confogl_addcvar mp_startmoney 16383 +//confogl_addcvar mp_buytime 2147483647 +confogl_addcvar versus_marker_num 0 +//confogl_addcvar vs_score_pp_health 1.0 +//confogl_addcvar vs_score_pp_healthbuffer 1.0 +//confogl_addcvar vs_incap_bonus 25 +//confogl_addcvar vs_survival_bonus 25 +//confogl_addcvar vs_tiebreak_bonus 25 +confogl_addcvar vs_defib_penalty 0 +//confogl_addcvar tf_escort_score_rate 5 +//confogl_addcvar tf_arena_max_streak 10 +//confogl_addcvar versus_winning_team_goes_last 1 + +//confogl_addcvar director_ready_radius 400 +//confogl_addcvar director_ready_duration 30 +//confogl_addcvar director_weapon_cluster_range 200 +//confogl_addcvar scavenge_round_setup_time 30 +//confogl_addcvar scavenge_round_initial_time 60 +//confogl_addcvar scavenge_score_bonus_time 15 +//confogl_addcvar scavenge_cluster_bonus_time 15 +//confogl_addcvar scavenge_overtime_grace_time 1.5 +//confogl_addcvar scavenge_round_restart_delay 10 +//confogl_addcvar scavenge_round_restart_delay_tied 10 +//confogl_addcvar director_scavenge_item_override 0 +//confogl_addcvar director_must_create_all_scavenge_items 0 +//confogl_addcvar director_item_placement_method 1 +confogl_addcvar scavenge_item_respawn_delay 15 +//confogl_addcvar scavenge_wanderer_respawn_chance 100 + +//confogl_addcvar director_survival_setup_time 120 +//confogl_addcvar survival_lull_time 0 +//confogl_addcvar survival_lull_time_max 0 +//confogl_addcvar survival_lull_time_increment 0 +//confogl_addcvar survival_horde_stage_interval 20 +//confogl_addcvar survival_horde_stage_interval_decay 0 +//confogl_addcvar survival_special_stage_interval 10 +//confogl_addcvar survival_special_spawn_interval 10 +//confogl_addcvar survival_special_spawn_interval_decay 0 +//confogl_addcvar survival_tank_stage_interval 40 +//confogl_addcvar survival_tank_stage_interval_decay 0 +//confogl_addcvar survival_tank_multiple_spawn_delay 20 +//confogl_addcvar survival_max_specials 8 +//confogl_addcvar survival_max_boomers 2 +//confogl_addcvar survival_max_spitters 2 +//confogl_addcvar survival_max_smokers 2 +//confogl_addcvar survival_max_hunters 2 +//confogl_addcvar survival_max_jockeys 2 +//confogl_addcvar survival_max_chargers 2 +//confogl_addcvar survival_special_limit_increase 1 +//confogl_addcvar survival_boomer_limit_increase 1 +//confogl_addcvar survival_spitter_limit_increase 1 +//confogl_addcvar survival_smoker_limit_increase 1 +//confogl_addcvar survival_hunter_limit_increase 1 +//confogl_addcvar survival_jockey_limit_increase 1 +//confogl_addcvar survival_charger_limit_increase 1 +//confogl_addcvar survival_generate_fake_times 0 +//confogl_addcvar survival_round_restart_delay 10 + +// Server Settings +//confogl_addcvar name "Corpiss Crispy" +//confogl_addcvar name2 "Dominar Rygel XVI" +//confogl_addcvar sv_steamgroup 38693222 +//confogl_addcvar sv_steamgroup_exclusive 1 +//confogl_addcvar sv_region 255 +//confogl_addcvar sv_lan 0 +//confogl_addcvar sv_gametypes "Coop,L4D1Coop,Realism,Versus,TeamVersus,L4D1VS,RealismVersus,TeamRealismVersus,Survival,L4D1Survival,VersusSurvival,TeamVersusSurvival,Scavenge,TeamScavenge,Mutation,Community,GunBrain,Dash,Shootzones,Holdout,TankRun,RocketDude" +//confogl_addcvar sv_tags "Coop,L4D1Coop,Realism,Versus,TeamVersus,L4D1VS,RealismVersus,TeamRealismVersus,Survival,L4D1Survival,VersusSurvival,TeamVersusSurvival,Scavenge,TeamScavenge,Mutation,Community,GunBrain,Dash,Shootzones,Holdout,TankRun,RocketDude" +//confogl_addcvar host_profile 0 +//confogl_addcvar sv_hosting_lobby 0 +//confogl_addcvar sv_allow_lobby_connect_only 0 +//confogl_addcvar sv_forcepreload 1 +//confogl_addcvar sv_cheats 0 +//confogl_addcvar sv_consistency 0 +//confogl_addcvar sv_pure_trace 0 +//confogl_addcvar sv_pure_kick_clients 0 +//confogl_addcvar sv_allow_wait_command 1 +//confogl_addcvar sv_maxclientframes 2147483647 +//confogl_addcvar sv_quota_stringcmdspersecond 2147483647 +//confogl_addcvar sv_max_usercmd_future_ticks 100 +//confogl_addcvar sv_allowupload 1 +//confogl_addcvar sv_allowdownload 1 +//confogl_addcvar sv_downloadurl "steamcommunity.com/groups/bizzymod" +//confogl_addcvar sv_search_key "" +//confogl_addcvar sv_search_team_key "" +//confogl_addcvar mm_server_search_lan_ports "27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025" +//confogl_addcvar mm_server_search_update_interval 30 +//confogl_addcvar mm_server_search_server_lifetime 180 +//confogl_addcvar cl_resend 3 +//confogl_addcvar sv_rcon_maxfailures 10 +//confogl_addcvar sv_rcon_maxfailures 20 +//confogl_addcvar sv_rcon_minfailuretime 30 +//confogl_addcvar sv_rcon_log 0 +//confogl_addcvar sv_rcon_banpenalty 0 +//confogl_addcvar sv_timeout 60 +//confogl_addcvar sv_max_queries_sec 6 +//confogl_addcvar sv_max_queries_sec_global 120 +//confogl_addcvar sv_max_queries_window 60 +//confogl_addcvar sv_password "" +//confogl_addcvar rcon_password "" +//confogl_addcvar g_Language English +//confogl_addcvar l4d_stats_track 1 +//confogl_addcvar l4d_stats_nogameplaycheck 1 +//confogl_addcvar steamworks_immediate_upload 1 +//confogl_addcvar steamworks_server_sessionid 0 +//confogl_addcvar steamworks_show_uploads 0 +//confogl_addcvar steamworks_stats_disable 0 +//confogl_addcvar achievement_debug 1 +//confogl_addcvar achievement_disable 0 +confogl_addcvar motd_enabled 0 +confogl_addcvar sv_voiceenable 1 +confogl_addcvar sv_alltalk 1 +//confogl_addcvar sv_stats 0 +//confogl_addcvar sv_logfile 1 +//confogl_addcvar sv_log_onefile 0 +//confogl_addcvar sv_logecho 0 +//confogl_addcvar sv_logbans 1 +//confogl_addcvar sv_logflush 0 +//confogl_addcvar sv_logblocks 0 +//confogl_addcvar sv_logdownloadlist 0 +//confogl_addcvar sv_logsdir logs +//confogl_addcvar sv_pausable 0 +//confogl_addcvar sv_pausable_dev 0 +//confogl_addcvar sv_pausable_dev_ds 0 +//confogl_addcvar sv_reservation_grace 5 +//confogl_addcvar sv_reservation_timeout 60 +//confogl_addcvar sv_hibernate_when_empty 1 +//confogl_addcvar sv_hibernate_postgame_delay 10 +//confogl_addcvar sv_hibernate_ms 0 +//confogl_addcvar sv_hibernate_ms_vgui 0 +//confogl_addcvar host_flush_threshold 0 +//confogl_addcvar sys_minidumpexpandedspew 0 +//confogl_addcvar sys_minidumpspewlines 0 +//confogl_addcvar sv_always_full_flush 0 + +//Rate & Network Settings +//confogl_addcvar fps_max 144 +//confogl_addcvar fps_max_splitscreen 144 +//confogl_addcvar mat_queue_mode 2 +//confogl_addcvar mat_queue_report 0 +//confogl_addcvar mat_vsync 0 +//confogl_addcvar mat_triplebuffered 0 +//confogl_addcvar mat_maxframelatency 0 +//confogl_addcvar sv_alternateticks 0 +//confogl_addcvar sv_minrate 72000 +//confogl_addcvar sv_maxrate 120000 +//confogl_addcvar sv_minupdaterate 60 +//confogl_addcvar sv_maxupdaterate 100 +//confogl_addcvar sv_mincmdrate 60 +//confogl_addcvar sv_maxcmdrate 100 +//confogl_addcvar sv_client_cmdrate_difference 0 +//confogl_addcvar sv_client_min_interp_ratio 0 +//confogl_addcvar sv_client_max_interp_ratio 10 +//confogl_addcvar sv_client_predict 1 +//confogl_addcvar cl_interpolate 2 +//confogl_addcvar sv_clockcorrection_msecs 100 +//confogl_addcvar sv_cycle_latch_timer 0.1 +//confogl_addcvar cl_clock_correction 1 +//confogl_addcvar cl_clock_correction_force_server_tick 999 +//confogl_addcvar cl_clock_correction_adjustment_min_offset 10 +//confogl_addcvar cl_clock_correction_adjustment_max_offset 100 +//confogl_addcvar cl_clock_correction_adjustment_max_amount 200 +//confogl_addcvar cl_clockdrift_max_ms 200 +//confogl_addcvar cl_consistencycheck_interval 2147483647 +//confogl_addcvar sv_unlag 1 +//confogl_addcvar sv_unlag_fixstuck 1 +//confogl_addcvar sv_maxunlag 1.0 +//confogl_addcvar sv_lagpushticks 0 +//confogl_addcvar sv_lagcompensationforcerestore 1 +//confogl_addcvar sv_creationtickcheck 0 +//confogl_addcvar sv_thinktimecheck 0 +//confogl_addcvar tp_schedule_post_think 0 +//confogl_addcvar think_limit 0 +//confogl_addcvar tv_enable 0 +//confogl_addcvar tv_delay 1 +//confogl_addcvar tv_name "" +//confogl_addcvar tv_maxclients 64 +//confogl_addcvar tv_maxrate 0 +//confogl_addcvar tv_allow_camera_man 1 +//confogl_addcvar tv_allow_static_shots 1 +//confogl_addcvar tv_chatgroupsize 0 +//confogl_addcvar tv_chattimelimit 0 +//confogl_addcvar tv_delaymapchange 0 +//confogl_addcvar hl2_episodic 0 + +// Video & Sound Settings +//confogl_addcvar z_network_compression 2 +//confogl_addcvar sv_instancebaselines 1 +//confogl_addcvar sv_maxroutable 1200 +//confogl_addcvar net_maxroutable 1200 +//confogl_addcvar net_maxfragments 1200 +//confogl_addcvar net_minroutable 1200 +//confogl_addcvar net_compresspackets 1 +//confogl_addcvar net_compresspackets_minsize 1200 +//confogl_addcvar net_splitrate 1 +//confogl_addcvar net_splitpacket_maxrate 72000 +//confogl_addcvar net_queued_packet_thread 1 +confogl_addcvar net_maxcleartime 0.016667 +//confogl_addcvar net_maxfilesize 64 +//confogl_addcvar sv_netvisdist 100000 +//confogl_addcvar sv_memlimit 0 +//confogl_addcvar mem_min_heapsize 512 +//confogl_addcvar mem_max_heapsize 512 +//confogl_addcvar mem_max_heapsize_dedicated 512 +//confogl_addcvar mem_level 2 +//confogl_addcvar cpu_level 2 +//confogl_addcvar gpu_level 3 +//confogl_addcvar gpu_mem_level 2 +//confogl_addcvar mat_aaquality 0 +//confogl_addcvar mat_antialias 8 +//confogl_addcvar mat_forceaniso 16 +//confogl_addcvar mat_picmip -10 +//confogl_addcvar mat_phong 1 +//confogl_addcvar mat_specular 1 +//confogl_addcvar mat_hdr_level 2 +//confogl_addcvar mat_hdr_tonemapscale 16 +//confogl_addcvar mat_fullbright 1 +//confogl_addcvar mat_monitorgamma 1.6 +//confogl_addcvar mat_monitorgamma_tv_enabled 0 +//confogl_addcvar mat_monitorgamma_tv_exp 2.2 +//confogl_addcvar mat_monitorgamma_tv_range_min 0 +//confogl_addcvar mat_monitorgamma_tv_range_max 256 +//confogl_addcvar r_dynamic 1 +//confogl_addcvar r_rootlod 0 +//confogl_addcvar r_lod 0 +//confogl_addcvar r_drawstaticprops 1 +//confogl_addcvar r_staticprop_lod 0 +//confogl_addcvar studio_queue_mode 1 +//confogl_addcvar mat_loadtextures 1 +//confogl_addcvar mat_compressedtextures 1 +//confogl_addcvar mat_filtertextures 1 +//confogl_addcvar mat_mipmaptextures 1 +//confogl_addcvar mat_excludetextures 0 +//confogl_addcvar mat_parallelmapx 1 +//confogl_addcvar mat_fastspecular 1 +//confogl_addcvar mat_drawflat 0 +//confogl_addcvar mat_spewalloc 0 +//confogl_addcvar mat_proxy 0 +//confogl_addcvar mat_diffuse 0 +//confogl_addcvar mat_luxels 0 +//confogl_addcvar mat_fillrate 0 +//confogl_addcvar mat_shadowstate 0 +//confogl_addcvar mat_forcedynamic 1 +//confogl_addcvar mat_dynamiclightmaps 1 +//confogl_addcvar mat_supportflashlight 1 +//confogl_addcvar mat_forcehardwaresync 1 +//confogl_addcvar mat_lightmap_pfms 0 +//confogl_addcvar mat_force_vertexfog 0 +//confogl_addcvar mat_motion_blur_enabled 0 +//confogl_addcvar mat_normals 0 +//confogl_addcvar mat_normalmaps 0 +//confogl_addcvar mat_bumpmap 0 +//confogl_addcvar mat_bumpbasis 0 +//confogl_addcvar mat_fastnobump 0 +//confogl_addcvar mat_wireframe 1 +//confogl_addcvar mat_levelflush 1 +//confogl_addcvar mat_maxframelatency 1 +//confogl_addcvar r_fastzreject 0 +//confogl_addcvar r_colorstaticprops 0 +//confogl_addcvar r_lightaverage 0 +//confogl_addcvar r_lightinterp 0 +//confogl_addcvar r_visambient 0 +//confogl_addcvar r_ambientboost 0 +//confogl_addcvar r_ambientfactor 0 +//confogl_addcvar r_ambientfraction 0.0 +//confogl_addcvar r_ambientmin 0.0 +//confogl_addcvar r_glint_alwaysdraw 0 +//confogl_addcvar r_glint_procedural 0 +//confogl_addcvar r_occlusion 1 +//confogl_addcvar r_visocclusion 1 +//confogl_addcvar r_shadowlod 0 +//confogl_addcvar r_shadowlodbias 3 +//confogl_addcvar r_shadowrendertotexture 0 +//confogl_addcvar r_flashlightdepthtexture 0 +//confogl_addcvar r_visualizetraces 1 +//confogl_addcvar r_queued_decals 1 +//confogl_addcvar r_decalstaticprops 1 +//confogl_addcvar r_decals 65536 +//confogl_addcvar r_drawmodeldecals 1 +//confogl_addcvar r_maxmodeldecal 64 +//confogl_addcvar r_decal_cover_count 8 +//confogl_addcvar r_decal_overlap_area 0.5 +//confogl_addcvar r_spray_lifetime 65536 +//confogl_addcvar r_hunkalloclightmaps 0 +//confogl_addcvar hunk_track_allocation_types 0 +//confogl_addcvar z_added_light_min 0.1 +//confogl_addcvar z_added_light_max 1.0 +//confogl_addcvar fog_enable_water_fog 1 +//confogl_addcvar snd_gain_min 1.0 +//confogl_addcvar snd_gain_max 1.0 +//confogl_addcvar snd_gain 1.0 +//confogl_addcvar suitvolume 1.0 +//confogl_addcvar cc_showmissing 0 +//confogl_addcvar cc_norepeat 0 +//confogl_addcvar steam_controller_haptics 1 +//confogl_addcvar force_disablex360 0 +//confogl_addcvar xbox_autothrottle 1 +//confogl_addcvar xbox_throttlebias 100 +//confogl_addcvar xbox_throttlespoof 200 +//confogl_addcvar xbox_steering_deadzone 0.0 +//confogl_addcvar host_xbox_e3_restart 0 +//confogl_addcvar engine_no_focus_sleep 0 + +// Console Settings +//sv_pure 0 +//sv_voiceenable 1 +//sv_alltalk 1 +//sm_cvarlist_plugins 1 +//sm_flood_time 0 +//sm_vote_delay 30 +//sm_show_activity 16 +//sm_immunity_mode 0 +//sv_steamgroup 38693222 +//sv_steamgroup_exclusive 1 +//sv_downloadurl "steamcommunity.com/groups/bizzymod" +//sv_region 255 +//sv_lan 0 +//maxplayers 32 +//sv_visiblemaxplayers 32 +//sv_unlockedchapters 57 +//mp_roundlimit 5 +//sv_gametypes "Coop,L4D1Coop,Realism,Versus,TeamVersus,L4D1VS,RealismVersus,TeamRealismVersus,Survival,L4D1Survival,VersusSurvival,TeamVersusSurvival,Scavenge,TeamScavenge,Mutation,Community,GunBrain,Dash,Shootzones,Holdout,TankRun,RocketDude" +//sv_tags "Coop,L4D1Coop,Realism,Versus,TeamVersus,L4D1VS,RealismVersus,TeamRealismVersus,Survival,L4D1Survival,VersusSurvival,TeamVersusSurvival,Scavenge,TeamScavenge,Mutation,Community,GunBrain,Dash,Shootzones,Holdout,TankRun,RocketDude" +//sv_allow_lobby_connect_only 0 +//sv_cheats 0 +//sv_consistency 0 +//sv_pure_trace 0 +//sv_pure_kick_clients 0 +//sv_forcepreload 1 +//sv_pausable 0 +//sv_voiceenable 1 +//sv_alltalk 1 +//sv_logecho 0 +//sv_log_onefile 0 +//sv_logbans 1 +//sv_allow_wait_command 1 +//motd_enabled 0 +//sv_search_key "" +//sv_search_team_key "" +//cl_resend 3 +//sv_rcon_maxfailures 10 +//sv_rcon_maxfailures 20 +//sv_rcon_minfailuretime 30 +//sv_rcon_log 0 +//sv_rcon_banpenalty 0 +//sv_password "" +//rcon_password "" +//fps_max 144 +//mat_queue_mode 2 +//mat_queue_report 0 +//mat_monitorgamma 1.6 +//mat_monitorgamma_tv_enabled 1 +//mat_spewalloc 0 +//r_dynamic 1 +//sv_alternateticks 0 +//sv_minrate 72000 +//sv_maxrate 120000 +//sv_mincmdrate 60 +//sv_maxcmdrate 100 +//net_allow_multicast 1 +//net_maxroutable 1200 +//net_splitrate 1 +//net_splitpacket_maxrate 72000 +//suitvolume 1.0 +//think_limit 0 +//skill 3 +//sk_autoaim_mode 1 +//spit_scaling_min_scale 1.0 +//func_break_max_pieces 30 +//steam_controller_haptics 1 +//xbox_autothrottle 1 +//xbox_throttlebias 100 +//xbox_throttlespoof 200 +//host_xbox_e3_restart 15 +//host_flush_threshold 0 +//sys_minidumpspewlines 0 +//engine_no_focus_sleep 0 + +// [lerpmonitor.smx] +confogl_addcvar sm_allowed_lerp_changes 20 +confogl_addcvar sm_lerp_change_spec 1 +confogl_addcvar sm_readyup_lerp_changes 1 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 + +// [l4d_boss_percent.smx] +confogl_addcvar l4d_global_percent 0 +confogl_addcvar l4d_tank_percent 1 +confogl_addcvar l4d_witch_percent 1 +confogl_addcvar l4d_boss_vote 1 + +// [l4d2_nobhaps.smx] +confogl_addcvar simple_antibhop_enable 0 +confogl_addcvar bhop_allow_survivor 1 + +// [l4d_weapon_limits.smx] +//l4d_wlimits_add 8 1 weapon_uzi +//l4d_wlimits_add 8 1 weapon_smg_silenced +//l4d_wlimits_add 8 1 weapon_smg_mp5 +//l4d_wlimits_add 8 1 weapon_pumpshotgun +//l4d_wlimits_add 8 1 weapon_shotgun_chrome +//l4d_wlimits_add 8 1 weapon_pistol_magnum +l4d_wlimits_unlock + +// [l4d2_antibaiter.smx] +confogl_addcvar l4d2_antibaiter_delay 60 +confogl_addcvar l4d2_antibaiter_horde_timer 0 +confogl_addcvar l4d2_antibaiter_progress 0.01 +confogl_addcvar l4d2_antibaiter_bile_stop 0 + +// [boomer_horde_equalizer_refactored.smx] +confogl_addcvar boomer_horde_equalizer 1 +confogl_addcvar boomer_horde_equalizer_events_default 1 +boomer_horde_amount 1 15 // 15 Common spawned for the 1st Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 2 15 // 15 Common spawned for the 2nd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 3 15 // 15 Common spawned for the 3rd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 4 15 // 15 Common spawned for the 4th Survivor boomed + Wandering common in z_notice_it_range + +// [autopause.smx] +confogl_addcvar autopause_enable 1 +confogl_addcvar autopause_force 1 +confogl_addcvar autopause_apdebug 0 + +//limited use weapons +confogl_addcvar l4d2_usecount 8 + +// [l4d2_melee_shenanigans.smx] +confogl_addcvar l4d2_melee_drop_method 0 +confogl_addcvar l4d2_melee_tank_nerf 0 + +// [l4d2_playstats.smx + survivor_mvp] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 + +// [l4d2_skill_detect.smx] +confogl_addcvar sm_skill_report_enable 1 + +// Shared Settings +exec cfgogl/pissmod/shared_settings.cfg diff --git a/cfg/cfgogl/pissmod/shared_cvars.cfg b/cfg/cfgogl/pissmod/shared_cvars.cfg new file mode 100644 index 00000000..8cac9c42 --- /dev/null +++ b/cfg/cfgogl/pissmod/shared_cvars.cfg @@ -0,0 +1,300 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +l4d_ready_enabled 1 +confogl_addcvar l4d_ready_enabled 1 +confogl_addcvar l4d_ready_disable_spawns 0 +confogl_addcvar l4d_ready_survivor_freeze 0 +confogl_addcvar l4d_ready_max_players 33 +confogl_addcvar l4d_ready_delay 2 +confogl_addcvar l4d_ready_force_extra 0 +confogl_addcvar l4d_ready_enable_sound 1 +confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_secret 1 +confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar l4d_ready_unbalanced_start 1 +confogl_addcvar l4d_ready_unbalanced_min 3 +confogl_addcvar coinflip_delay -1 +confogl_addcvar teamflip_delay -1 + +// Config Cvars +confogl_match_execcfg_off "confogl_off.cfg" // Execute this config file upon match mode ends. +confogl_match_execcfg_on "confogl.cfg" // Execute this config file upon match mode starts. +confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun +confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested + +// Confogl Cvars +confogl_addcvar confogl_boss_tank "0" // Tank can not be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player +confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even though they normally aren not allowed +confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales) +confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales +confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play +confogl_addcvar confogl_block_punch_rock "0" // Block tanks from punching and throwing a rock at the same time +confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank) +confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor +confogl_addcvar confogl_disable_ghost_hurt "1" // Prevents ghost infected from dying when falling into water or off c1m1 +confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range +confogl_addcvar confogl_remove_inf_clips "1" // Removes all infected clip brushes. This fixes tanks getting stuck on Dark Carnival 5 and allows a bit more area for infected to spawn on a few maps +confogl_addcvar confogl_remove_c5m4_hurts "1" // Removes nonlethal explosion hurt triggers from c5m4, including some for up to 50 damage +confogl_addcvar confogl_remove_parachutist "0" // Removes the parachutist (and his items) from c3m2_swamp. +confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws +confogl_addcvar confogl_remove_defib "1" // Remove all defibrillators +confogl_addcvar confogl_remove_grenade "0" // Remove all grenade launchers +confogl_addcvar confogl_remove_m60 "0" // Remove all M60 rifles +confogl_addcvar confogl_remove_lasersight "0" // Remove all laser sight upgrades +confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits) +confogl_addcvar confogl_remove_upg_explosive "0" // Remove all explosive upgrade packs +confogl_addcvar confogl_remove_upg_incendiary "0" // Remove all incendiary upgrade packs +confogl_addcvar confogl_replace_cssweapons "0" // Replace CSS weapons with normal L4D2 weapons +confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills +confogl_addcvar confogl_replace_finalekits "1" // Replace medkits during finale with pain pills +confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10% +confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings +confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round2. +confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits +confogl_addcvar confogl_pills_limit "4" // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_adrenaline_limit "6" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_pipebomb_limit "6" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_molotov_limit "3" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_vomitjar_limit "3" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring +confogl_addcvar confogl_replace_tier2 0 +confogl_addcvar confogl_replace_tier2_finale 0 +confogl_addcvar confogl_replace_tier2_all 0 +confogl_addcvar confogl_limit_tier2 0 +confogl_addcvar confogl_limit_tier2_saferoom 0 + +// Director Cvars +// confogl_addcvar director_ammo_density -1 +// confogl_addcvar director_pistol_density -1 +// confogl_addcvar director_magnum_spawn_density -1 +// confogl_addcvar director_configurable_weapon_spawn_density -1 +// confogl_addcvar director_melee_weapon_density -1 +// confogl_addcvar director_super_weapon_density 4 +// confogl_addcvar director_molotov_density 4 +// confogl_addcvar director_pipe_bomb_density 4 +// confogl_addcvar director_vomitjar_density 4 +// confogl_addcvar director_upgradepack_density 4 +// confogl_addcvar director_pain_pill_density 4 +// confogl_addcvar director_adrenaline_density 4 +// confogl_addcvar director_gas_can_density 4 +// confogl_addcvar director_propane_tank_density 4 +// confogl_addcvar director_oxygen_tank_density 4 +// confogl_addcvar director_defibrillator_density 4 +confogl_addcvar director_cs_weapon_spawn_chance 0.333333 +confogl_addcvar director_per_map_weapon_upgrade_chance 0.5 +// confogl_addcvar director_finale_item_cluster_count 2 +confogl_addcvar director_convert_pills 1 +confogl_addcvar director_vs_convert_pills 1.0 +confogl_addcvar director_convert_pills_critical_health 0 +confogl_addcvar director_convert_pills_to_defib_health 0 + +// Weapon Cvars +// confogl_addcvar mp_weapon_usp_price FREE +// confogl_addcvar mp_weapon_glock_price FREE +// confogl_addcvar mp_weapon_p228_price FREE +// confogl_addcvar mp_weapon_fiveseven_price FREE +// confogl_addcvar mp_weapon_deagle_price FREE +// confogl_addcvar mp_weapon_elite_price FREE +// confogl_addcvar mp_weapon_mac10_price FREE +// confogl_addcvar mp_weapon_ump45_price FREE +// confogl_addcvar mp_weapon_mp5navy_price FREE +// confogl_addcvar mp_weapon_p90_price FREE +// confogl_addcvar mp_weapon_m3_price FREE +// confogl_addcvar mp_weapon_tmp_price FREE +// confogl_addcvar mp_weapon_scout_price FREE +// confogl_addcvar mp_weapon_awp_price FREE +// confogl_addcvar mp_weapon_famas_price FREE +// confogl_addcvar mp_weapon_galil_price FREE +// confogl_addcvar mp_weapon_m4a1_price FREE +// confogl_addcvar mp_weapon_ak47_price FREE +// confogl_addcvar mp_weapon_aug_price FREE +// confogl_addcvar mp_weapon_sg550_price FREE +// confogl_addcvar mp_weapon_sg552_price FREE +// confogl_addcvar mp_weapon_xm1014_price FREE +// confogl_addcvar mp_weapon_g3sg1_price FREE +// confogl_addcvar mp_weapon_m249_price FREE + +// confogl_addcvar ammo_pistol_max -2 +confogl_addcvar ammo_smg_max 850 +confogl_addcvar ammo_shotgun_max 112 +// confogl_addcvar ammo_assaultrifle_max 550 +// confogl_addcvar ammo_autoshotgun_max 190 +// confogl_addcvar ammo_huntingrifle_max 285 +// confogl_addcvar ammo_sniperrifle_max 270 +// confogl_addcvar ammo_m60_max 150 +// confogl_addcvar ammo_grenadelauncher_max 49 +// confogl_addcvar ammo_chainsaw_max 30 +// confogl_addcvar ammo_molotov_max 1 +// confogl_addcvar ammo_pipebomb_max 1 +// confogl_addcvar ammo_vomitjar_max 1 +// confogl_addcvar ammo_firstaid_max 1 +// confogl_addcvar ammo_painpills_max 1 +// confogl_addcvar ammo_adrenaline_max 1 +// confogl_addcvar ammo_minigun_max 1000 +// confogl_addcvar ammo_turret_max 500 +// confogl_addcvar ammo_turret_infected_damage 25 +// confogl_addcvar ammo_turret_pz_damage 25 +// confogl_addcvar ammo_turret_witch_damage 50 +// confogl_addcvar ammo_turret_tank_damage 50 +// confogl_addcvar ammo_turret_survivor_damage 0 +// confogl_addcvar terror_ammo_multiplier 1.0 + +// confogl_addcvar sv_suppress_viewpunch 0 +// confogl_addcvar z_gun_vertical_punch 1 +// confogl_addcvar z_gun_horiz_punch 0 +// confogl_addcvar z_gun_kick 0 +// confogl_addcvar punch_angle_decay_rate 15 +// confogl_addcvar survivor_friendly_fire_factor_easy 0.0 +// confogl_addcvar survivor_friendly_fire_factor_normal 0.1 +confogl_addcvar survivor_friendly_fire_factor_hard 0.1 +confogl_addcvar survivor_friendly_fire_factor_expert 0.1 +// confogl_addcvar z_friendly_fire_forgiveness 1 +// confogl_addcvar bullet_ff_through_walls 0 +// confogl_addcvar z_non_head_damage_factor_easy 2.0 +confogl_addcvar z_non_head_damage_factor_normal 1.0 +confogl_addcvar z_non_head_damage_factor_hard 1.0 +// confogl_addcvar z_non_head_damage_factor_expert 1.0 +confogl_addcvar z_non_head_damage_factor_multiplier 1.0 +confogl_addcvar z_shotgun_bonus_damage_range 200 +confogl_addcvar z_shotgun_bonus_damage_multiplier 10 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar z_tank_damage_slow_min_range 32 +// confogl_addcvar z_tank_autoshotgun_dmg_scale 1.0 +// confogl_addcvar shotgun_reload_cancel_delay 0 +// confogl_addcvar z_do_tracers 1 +// confogl_addcvar z_tracer_spacing 1 +// confogl_addcvar sv_tracereffects_limit_general 65536 + +confogl_addcvar melee_range 80 +// confogl_addcvar melee_collateral_shove_count 20 +// confogl_addcvar melee_combo_reset_time 1.0 +confogl_addcvar melee_force_scalar 50 +confogl_addcvar melee_force_scalar_combat_character 50 +confogl_addcvar chainsaw_attract_distance 1000 +confogl_addcvar chainsaw_attack_distance 60 +confogl_addcvar chainsaw_attack_cone 60 +confogl_addcvar chainsaw_hit_interval 0.02 +confogl_addcvar chainsaw_damage 20 +confogl_addcvar chainsaw_attack_force 10000 +// confogl_addcvar chainsaw_startup_fadeout_time 0 + +// confogl_addcvar grenadelauncher_startpos_up 0 +// confogl_addcvar grenadelauncher_startpos_right 4 +// confogl_addcvar grenadelauncher_startpos_forward 8 +// confogl_addcvar grenadelauncher_velocity 1250 +// confogl_addcvar grenadelauncher_vel_up 125 +// confogl_addcvar grenadelauncher_vel_variance 0.0 +confogl_addcvar grenadelauncher_damage 500 +confogl_addcvar grenadelauncher_radius_stumble 400 +confogl_addcvar grenadelauncher_radius_kill 200 +confogl_addcvar grenadelauncher_force_kill 1000 +// confogl_addcvar grenadelauncher_ff_scale 0.1 +// confogl_addcvar grenadelauncher_ff_scale_self 0.1 +confogl_addcvar z_tank_grenade_launcher_dmg_scale 3.0 +confogl_addcvar z_tank_grenade_damage 1000 +confogl_addcvar z_tank_grenade_roll -15 +// confogl_addcvar z_tank_max_stagger_duration 2 +// confogl_addcvar z_tank_max_stagger_distance 300 + +confogl_addcvar z_minigun_spread 4.0 +// confogl_addcvar z_minigun_spin_up_speed 20 +// confogl_addcvar z_minigun_firing_speed 20 +// confogl_addcvar z_minigun_spin_down_speed 10 +confogl_addcvar z_minigun_fire_think_interval 0.0 +confogl_addcvar z_minigun_rate_of_fire 3000 +confogl_addcvar z_minigun_damage_rate 60000 +// confogl_addcvar z_minigun_overheat_time 100 +// confogl_addcvar z_minigun_cooldown_time 0.1 +// confogl_addcvar z_minigun_stand_distance 32 +// confogl_addcvar z_mounted_gun_fire_think_interval 0.01 +confogl_addcvar mounted_gun_rate_of_fire 12 +// confogl_addcvar mounted_gun_overheat_time 100 +// confogl_addcvar mounted_gun_overheat_penalty_time 0 +// confogl_addcvar mounted_gun_cooldown_time 0.1 +// confogl_addcvar mounted_gun_mount_cooldown_time 0 + +// Item Cvars +// confogl_addcvar ammo_pack_use_duration 1.8 +confogl_addcvar upgrade_pack_use_duration 1.8 +// confogl_addcvar upgradepack_forward_dist 0 +// confogl_addcvar upgradepack_max_drop_dist 0 +confogl_addcvar incendiary_ammo_burn_time 5 +confogl_addcvar upgrade_explosive_bullet_force 5 +confogl_addcvar upgrade_explosive_slug_force 10 +confogl_addcvar upgrade_laser_sight_spread_factor 0.35 +// confogl_addcvar inferno_forward_reduction_factor 1.0 +// confogl_addcvar inferno_velocity_factor 0.02 +// confogl_addcvar inferno_velocity_normal_factor 0.02 +// confogl_addcvar inferno_velocity_decay_factor 0.25 +// confogl_addcvar inferno_initial_spawn_interval 0 +// confogl_addcvar inferno_spawn_angle 45 +// confogl_addcvar inferno_surface_offset 20 +// confogl_addcvar inferno_flame_lifetime 15 +// confogl_addcvar inferno_max_trace_per_tick 16 +// confogl_addcvar inferno_child_spawn_interval_multiplier 1.0 +// confogl_addcvar inferno_max_child_spawn_interval 1 +// confogl_addcvar inferno_child_spawn_max_depth 4 +// confogl_addcvar inferno_per_flame_spawn_duration 1 +confogl_addcvar inferno_max_range 250 +// confogl_addcvar inferno_flame_spacing 48 +// confogl_addcvar inferno_max_flames 32 +confogl_addcvar inferno_scorch_decals 1 +confogl_addcvar inferno_damage 50 +confogl_addcvar z_burning_lifetime 20 +confogl_addcvar z_special_burn_dmg_scale 1 +// confogl_addcvar z_tanks_block_molotovs 1 +// confogl_addcvar survivor_burn_factor_easy 0.0 +confogl_addcvar survivor_burn_factor_normal 0.1 +confogl_addcvar survivor_burn_factor_hard 0.1 +confogl_addcvar survivor_burn_factor_expert 0.1 +confogl_addcvar inferno_friendly_fire_duration 15 + +confogl_addcvar pipe_bomb_timer_duration 7.5 +confogl_addcvar pipe_bomb_initial_beep_interval 0.5 +confogl_addcvar pipe_bomb_beep_min_interval 0.1 +confogl_addcvar pipe_bomb_beep_interval_delta 0.02 +confogl_addcvar pipe_bomb_shake_radius 1000 +confogl_addcvar pipe_bomb_shake_amplitude 100 +confogl_addcvar vomitjar_radius 250 +// confogl_addcvar vomitjar_radius_survivors 0 +confogl_addcvar vomitjar_duration_infected_bot 30 +confogl_addcvar vomitjar_duration_infected_pz 30 +// confogl_addcvar vomitjar_duration_survivor 0 +confogl_addcvar z_attack_infected_it_damage 1 +confogl_addcvar z_attack_pz_it_damage 50 +confogl_addcvar fuel_barrel_health 10 +confogl_addcvar fuel_barrel_damage_radius 400 +confogl_addcvar fuel_barrel_damage_amount 25 +confogl_addcvar fuel_barrel_screen_shake_radius 1200 +confogl_addcvar fuel_barrel_screen_shake_frequency 2.5 +confogl_addcvar fuel_barrel_screen_shake_amplitude 50 +confogl_addcvar fuel_barrel_screen_shake_duration 1.5 +// confogl_addcvar fuel_barrel_flame_instances 8 + +// confogl_addcvar first_aid_kit_max_heal 101 +confogl_addcvar first_aid_heal_percent 0.9 +confogl_addcvar first_aid_kit_use_duration 4.5 +// confogl_addcvar defibrillator_use_duration 2.5 +// confogl_addcvar defibrillator_return_to_life_time 1 +// confogl_addcvar z_survivor_respawn_health 100 +// confogl_addcvar survivor_respawn_with_guns 2 +// confogl_addcvar pain_pills_health_threshold 99 +confogl_addcvar pain_pills_health_value 60 +confogl_addcvar pain_pills_decay_rate 0.2 +confogl_addcvar adrenaline_duration 20 +confogl_addcvar adrenaline_health_buffer 30 +confogl_addcvar adrenaline_run_speed 280 +confogl_addcvar adrenaline_revive_speedup 0.5 +confogl_addcvar adrenaline_backpack_speedup 0.5 +// confogl_addcvar sv_healing_gnome_replenish_rate 2.0 + +// Stripper Path +// confogl_addcvar stripper_cfg_path cfg/stripper/pissmod diff --git a/cfg/cfgogl/pissmod/shared_plugins.cfg b/cfg/cfgogl/pissmod/shared_plugins.cfg new file mode 100644 index 00000000..85e602bc --- /dev/null +++ b/cfg/cfgogl/pissmod/shared_plugins.cfg @@ -0,0 +1,145 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +sm plugins load basecommands.smx +sm plugins load basecomm.smx +sm plugins load basechat.smx +sm plugins load admin-flatfile.smx +sm plugins load adminhelp.smx +sm plugins load adminmenu.smx +sm plugins load funcommands.smx +sm plugins load playercommands.smx +sm plugins load funvotes.smx + +//------------------------------------------- +// Sourcebans +//------------------------------------------- +sm plugins load sbpp_admcfg.smx +sm plugins load sbpp_checker.smx +sm plugins load sbpp_comms.smx +sm plugins load sbpp_main.smx +sm plugins load sbpp_report.smx +sm plugins load sbpp_sleuth.smx + +sm plugins load optional/starting_items.smx +sm plugins load optional/nosaferoomkits.smx +sm plugins load optional/blockheatseekingchargers.smx +sm plugins load optional/blocktrolls.smx +sm plugins load optional/bossspawningfix.smx +sm plugins load optional/coinflip.smx +sm plugins load optional/8ball.smx +sm plugins load optional/changelog.smx +sm plugins load optional/current.smx +sm plugins load optional/finalefix.smx +sm plugins load optional/ghost_hurt.smx +sm plugins load optional/infected_flow_warp.smx +sm plugins load optional/l4d2_fix_deathspit.smx +//sm plugins load optional/l4d2_saferoom_detect.smx +sm plugins load optional/l4d2_setscores.smx +sm plugins load optional/l4d2_spec_stays_spec.smx +sm plugins load optional/l4d2_unsilent_jockey.smx +sm plugins load optional/l4d2_weaponrules.smx +sm plugins load optional/l4d_bash_kills.smx +sm plugins load optional/l4d_jockey_ledgehang.smx +sm plugins load optional/l4d_pounceprotect.smx +sm plugins load optional/l4d_stuckzombiemeleefix.smx +sm plugins load optional/l4d_tank_damage_announce.smx +//sm plugins load optional/lerpmonitor.smx +sm plugins load optional/pill_passer.smx +//sm plugins load optional/ratemonitor.smx +sm plugins load optional/rock_stumble_block.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load optional/starting_items.smx +sm plugins load optional/tankdoorfix.smx +sm plugins load optional/teamflip.smx +sm plugins load optional/temphealthfix.smx +//sm plugins load optional/l4d2_drop_secondary.smx +//sm plugins load optional/l4d2_m2_control_eq.smx +//sm plugins load optional/l4d2_nosecondchances.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d_texture_manager_block.smx +sm plugins load optional/l4d_tankpunchstuckfix.smx +sm plugins load optional/checkpoint-rage-control.smx +sm plugins load optional/l4d2_tank_attack_control.smx +sm plugins load optional/l4d2_tank_announce.smx +sm plugins load optional/l4d2_bw_rock_hit.smx +sm plugins load optional/l4d2_getupfix.smx +sm plugins load optional/l4d_equalise_alarm_cars.smx +sm plugins load optional/nm3_ladder_damage.smx +sm plugins load optional/fix_engine.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load optional/l4d2_charger_getup_fix.smx +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load optional/l4d2_hittable_control.smx +sm plugins load optional/l4d2_stats.smx +//sm plugins load optional/l4d2_weapon_attributes.smx +sm plugins load optional/teamflip.smx + +sm plugins load optional/fix_engine.smx +sm plugins load fixes/sv_consistency_fix.smx +sm plugins load fixes/l4d2_lagcomp_manager.smx +sm plugins load optional/l4d_texture_manager_block.smx +sm plugins load fixes/l4d_console_spam.smx +sm plugins load fixes/l4d_votepoll_fix.smx +sm plugins load fixes/l4d2_fix_team_shuffle.smx +sm plugins load optional/noteam_nudging.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_getup_slide_fix.smx +//sm plugins load optional/l4d2_static_shotgun_spread.smx +//sm plugins load fixes/l4d2_sg552_zoom_fix.smx +sm plugins load fixes/l4d_fix_common_shove.smx +sm plugins load fixes/l4d_fix_punch_block.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_si_ffblock.smx +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load fixes/l4d2_boomer_ladder_fix.smx +sm plugins load fixes/l4d_tongue_bend_fix.smx +sm plugins load fixes/l4d_tongue_block_fix.smx +sm plugins load fixes/l4d_tongue_float_fix.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d2_uniform_spit.smx +sm plugins load fixes/l4d2_spit_spread_patch.smx +sm plugins load fixes/l4d2_spit_cooldown_frozen_fix.smx +sm plugins load fixes/l4d2_jockey_hitbox_fix.smx +sm plugins load fixes/l4d2_jockey_jumpcap_patch.smx +sm plugins load optional/charger_incap_damage.smx +sm plugins load optional/l4d2_tank_damage_cvars.smx +sm plugins load fixes/l4d_static_punch_getup.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load fixes/l4d2_rock_trace_unblock.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load fixes/l4d_checkpoint_rock_patch.smx +sm plugins load optional/l4d2_tank_props_glow.smx +sm plugins load optional/l4d2_hittable_control.smx +sm plugins load fixes/frozen_tank_fix.smx +sm plugins load fixes/l4d_fix_finale_breakable.smx +sm plugins load fixes/l4d_consistent_escaperoute.smx +sm plugins load fixes/l4d_fix_deathfall_cam.smx +sm plugins load fixes/l4d2_hltv_crash_fix.smx +//sm plugins load fixes/annoyance_exploit_fixes.smx + +// Code Patcher (Fixes Waterslowdown performance issues on Vanilla and Configs) +sm plugins load optional/code_patcher.smx + +//MATCHMAKING +sm plugins load optional/autopause.smx +sm plugins load optional/readyup.smx +sm plugins load optional/l4d_tank_control_eq.smx +sm plugins load optional/survivor_mvp.smx +sm plugins load optional/cfg_motd.smx +sm plugins load optional/l4d_boss_percent.smx +sm plugins load optional/caster_addons.smx +sm plugins load optional/caster_assister.smx +sm plugins load optional/pause.smx +sm plugins load optional/panel_text.smx +sm plugins load optional/spechud.smx +sm plugins load optional/slots_vote.smx +sm plugins load confoglcompmod.smx +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/pissmod/shared_settings.cfg b/cfg/cfgogl/pissmod/shared_settings.cfg new file mode 100644 index 00000000..d59823b5 --- /dev/null +++ b/cfg/cfgogl/pissmod/shared_settings.cfg @@ -0,0 +1,447 @@ +// ======================================================================================= +// Pissmod +// Author: Corpiss Crispy & Moon +// Contributions: Bizzy & numbers +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [cfg_motd.smx] +confogl_addcvar sm_cfgmotd_title "pissmod 0.0" +confogl_addcvar sm_cfgmotd_url "steamcommunity.com/groups/bizzymod" + +// [starting_items.smx] +//give adren? (1: Kit, 2: Defib, 4: Pills, 8: Adren, 16: Pipebomb, 32: Molotov, 64: Bile +confogl_addcvar starting_item_flags 1 + +// [fix_engine.smx] +confogl_addcvar engine_fix_flags 12 + +// [panel_text.smx] +sm_addreadystring " " +sm_lockstrings + +// [checkpoint-rage-control.smx] +confogl_addcvar crc_global 1 + +// [l4d2_ghost_warp.smx] +confogl_addcvar l4d2_ghost_warp_flag 0 // Enable ghost warp with command only 'sm_warp' +confogl_addcvar l4d2_ghost_warp_delay 0 + +// [l4d_static_punch_getup.smx] +confogl_addcvar tank_punch_getup_scale 0.25 // 54 frames / 30 fps * 0.5 = 0.9s + +// [ghost_hurt.smx] +confogl_addcvar ghost_hurt_type 0 + +// [l4d2_nosecondchances.smx] +confogl_addcvar bot_kick_delay 86400 + +// [bossspawningfix.smx] +confogl_addcvar l4d_obey_boss_spawn_cvars 1 +confogl_addcvar l4d_obey_boss_spawn_except_static 1 + +// [l4d_bash_kills.smx] +confogl_addcvar l4d_no_bash_kills 1 + +// [l4d_jockey_ledgehang.smx] +confogl_addcvar z_leap_interval_post_ledge_hang 12 + +// [l4d_tank_damage_announce.smx] +confogl_addcvar l4d_tankdamage_enabled 1 + +// [l4d2_tank_attack_control.smx] +confogl_addcvar l4d2_block_punch_rock 0 +confogl_addcvar l4d2_block_jump_rock 0 +confogl_addcvar tank_overhand_only 0 + +// [l4d2_collision_adjustments.smx] +confogl_addcvar collision_tankrock_common 1 +confogl_addcvar collision_smoker_common 1 +confogl_addcvar collision_tankrock_incap 1 + +// [l4d2_rock_trace_unblock.smx] +confogl_addcvar l4d2_rock_trace_unblock_flag 1 +confogl_addcvar l4d2_rock_jockey_dismount 0 + +// [l4d_stuckpunchfix] +confogl_addcvar sm_punchstuckfix_unstucktime 0.5 +confogl_addcvar tpsf_debug_print 0 + +// [charger_incap_damage] +confogl_addcvar charger_dmg_incapped 20 +confogl_addcvar melee_damage_charger 400 + +// [l4d2_spit_spread_patch.smx] +confogl_addcvar l4d2_spit_spread_saferoom 1 +confogl_addcvar l4d2_deathspit_trace_height 8192 +confogl_addcvar l4d2_spit_max_flames 16 +confogl_addcvar l4d2_spit_water_collision 1 + +// [l4d2_uniform_spit.smx] +confogl_addcvar l4d2_spit_dmg 2 +confogl_addcvar l4d2_spit_alternate_dmg 3 +confogl_addcvar l4d2_spit_max_ticks 25 +confogl_addcvar l4d2_spit_godframe_ticks 5 + +// [l4d2_si_staggers.smx] +confogl_addcvar l4d2_disable_si_friendly_staggers 2 + +// [l4d2_si_ffblock.smx] +confogl_addcvar l4d2_block_infected_ff 1 +confogl_addcvar l4d2_infected_ff_allow_tank 1 + +// [l4d2_unsilent_jockey.smx] +confogl_addcvar sm_unsilentjockey_enabled 1 +confogl_addcvar sm_unsilentjockey_always 1 +confogl_addcvar sm_unsilentjockey_time 0.25 + +// [l4d_tank_painfade.smx] +confogl_addcvar l4d_tank_painfade 1 +confogl_addcvar l4d_tank_painfade_duration 300 +confogl_addcvar l4d_tank_painfade_flags 8 + +// [l4d_witch_damage.smx] +l4d_witch_damage_scale "100,100,100,100" +l4d_witch_damage_damage 100 +l4d_witch_damage_incapped 25 + +// [l4d2_tank_damage_cvars.smx] +confogl_addcvar vs_tank_pound_damage 36 +confogl_addcvar vs_tank_rock_damage 24 + +// [l4d2_slowdown_control.smx] +confogl_addcvar z_tank_speed_vs 210 +confogl_addcvar z_tank_damage_slow_min_range 32 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar l4d2_slowdown_gunfire_si 0 +confogl_addcvar l4d2_slowdown_gunfire_tank 0 +confogl_addcvar l4d2_slowdown_water_tank 180 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 + +// [l4d2_tank_props_glow.smx] +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 +confogl_addcvar l4d_ammo_spawn_glow_color "255 255 255" + +// [l4d2_spitblock.smx] + +// [l4d2_godframes_control.smx] +confogl_addcvar gfc_hittable_override 1 +confogl_addcvar gfc_hittable_rage_override 1 +confogl_addcvar gfc_rock_rage_override 1 +confogl_addcvar gfc_spit_extra_time 0.0 +confogl_addcvar gfc_common_extra_time 0.0 +confogl_addcvar gfc_hunter_duration 0.0 +confogl_addcvar gfc_jockey_duration 0.0 +confogl_addcvar gfc_smoker_duration 0.0 +confogl_addcvar gfc_charger_duration 0.5 +confogl_addcvar gfc_long_charger_duration 1.0 +confogl_addcvar gfc_common_zc_flags 9 +confogl_addcvar gfc_spit_zc_flags 6 +confogl_addcvar gfc_godframe_glows 1 +confogl_addcvar gfc_ff_min_time 2.0 +confogl_addcvar gfc_witch_override 1 + +// [l4d2_m2_control.smx] +confogl_addcvar l4d2_m2_hunter_penalty 4 +confogl_addcvar l4d2_m2_jockey_penalty 4 +confogl_addcvar l4d2_m2_smoker_penalty 2 + +// [l4d2_hittable_control.smx] +confogl_addcvar hc_gauntlet_finale_multiplier 0.5 +confogl_addcvar hc_bridge_car_damage 50 +confogl_addcvar hc_stadium_car_damage 50 +confogl_addcvar hc_broken_forklift_standing_damage 100 +confogl_addcvar hc_sflog_standing_damage 100 +confogl_addcvar hc_bhlog_standing_damage 100 +confogl_addcvar hc_handtruck_standing_damage 50 +confogl_addcvar hc_car_standing_damage 100 +confogl_addcvar hc_bumpercar_standing_damage 100 +confogl_addcvar hc_forklift_standing_damage 100 +confogl_addcvar hc_dumpster_standing_damage 100 +confogl_addcvar hc_haybale_standing_damage 100 +confogl_addcvar hc_baggage_standing_damage 100 +confogl_addcvar hc_incap_standard_damage -2 +confogl_addcvar hc_disable_self_damage 1 +confogl_addcvar hc_overhit_time 1.5 + +// [l4d2_ladder_rambos.smx] +confogl_addcvar cssladders_enabled 0 +confogl_addcvar cssladders_allow_m2 1 +confogl_addcvar cssladders_allow_reload 1 +confogl_addcvar cssladders_debug 0 + +// [l4d2_hybrid_scoremod.smx] +//confogl_addcvar sm2_bonus_per_survivor_multiplier 0.0 +//confogl_addcvar sm2_permament_health_proportion 0.0 +//confogl_addcvar sm2_pills_hp_factor 0.0 +//confogl_addcvar sm2_pills_max_bonus 0 + +// [l4d2_gear_transfer.smx] +confogl_addcvar l4d_gear_transfer_dist_grab 200 +confogl_addcvar l4d_gear_transfer_timeout 1 + +// [l4d2_weaponrules.smx] + +l4d2_addweaponrule smg smg +l4d2_addweaponrule smg_silenced smg_silenced +l4d2_addweaponrule smg_mp5 smg_mp5 +l4d2_addweaponrule pumpshotgun pumpshotgun +l4d2_addweaponrule shotgun_chrome shotgun_chrome +l4d2_addweaponrule rifle smg +l4d2_addweaponrule rifle_ak47 smg_silenced +l4d2_addweaponrule rifle_desert smg_mp5 +l4d2_addweaponrule rifle_sg552 smg_mp5 +l4d2_addweaponrule autoshotgun pumpshotgun +l4d2_addweaponrule shotgun_spas shotgun_chrome +l4d2_addweaponrule hunting_rifle smg +l4d2_addweaponrule sniper_military smg_silenced +l4d2_addweaponrule sniper_awp pumpshotgun +l4d2_addweaponrule sniper_scout shotgun_chrome +l4d2_addweaponrule grenade_launcher grenade_launcher +l4d2_addweaponrule rifle_m60 rifle_m60 +l4d2_addweaponrule knife baseball_bat +//l4d2_addweaponrule chainsaw chainsaw +//l4d2_addweaponrule defibrillator first_aid_kit + +// [l4d2_reload_fix.smx] +confogl_addcvar l4d2_reload_speed_uzi 2.2 +confogl_addcvar l4d2_reload_speed_silenced_smg 2.2 + +// [l4d2_survivor_ff.smx] +//confogl_addcvar l4d2_undoff_enable 7 +//confogl_addcvar l4d2_undoff_blockzerodmg 7 +//confogl_addcvar l4d2_undoff_permdmgfrac 1.0 + +// [l4d2_uncommon_blocker.smx] +confogl_addcvar sm_uncinfblock_enabled 0 + +// [l4d2_shotgun_ff.smx] +confogl_addcvar l4d2_shotgun_ff_multi 0.5 +confogl_addcvar l4d2_shotgun_ff_min 1 +confogl_addcvar l4d2_shotgun_ff_max 8 + +confogl_addcvar l4d_no_cans 0 +confogl_addcvar l4d_no_propane 0 +confogl_addcvar l4d_no_oxygen 0 +confogl_addcvar l4d_no_fireworks 0 + +/////////////////////////////// +// [Static Shotgun Spread] // +/////////////////////////////// + +// Apply binary patch +//codepatch_patch sgspread + +// First ring settings +//confogl_addcvar sgspread_ring1_bullets 8 +//confogl_addcvar sgspread_ring1_factor 4 +//confogl_addcvar sgspread_center_pellet 0 + +// Maximum Bullet Range + +sm_weapon pistol range 8192 +sm_weapon pistol_magnum range 8192 +sm_weapon smg range 8192 +sm_weapon smg_silenced range 8192 +sm_weapon smg_mp5 range 8192 +sm_weapon pumpshotgun range 8192 +sm_weapon shotgun_chrome range 8192 +sm_weapon rifle range 8192 +sm_weapon rifle_ak47 range 8192 +sm_weapon rifle_desert range 8192 +sm_weapon rifle_sg552 range 8192 +sm_weapon autoshotgun range 8192 +sm_weapon shotgun_spas range 8192 +sm_weapon hunting_rifle range 8192 +sm_weapon sniper_military range 8192 +sm_weapon sniper_awp range 8192 +sm_weapon sniper_scout range 8192 +sm_weapon rifle_m60 range 8192 +sm_weapon grenade_launcher range 8192 +sm_weapon minigun range 8192 +sm_weapon mounted_gun range 8192 +sm_weapon mounted_machine_gun range 8192 + +///////////////////////////////// +// [Pistol Stats & Settings] // +///////////////////////////////// + +sm_weapon pistol deployduration 0.45 +sm_weapon pistol dualdeployduration 0.55 +sm_weapon pistol rangemod 0.9 +sm_weapon pistol penetrationnumlayers 2 +sm_weapon pistol penetrationpower 60 +sm_weapon pistol damage 40 + +sm_weapon pistol_magnum deployduration 0.45 +sm_weapon pistol_magnum dualdeployduration 0.55 +sm_weapon pistol_magnum cycletime 0.3 +sm_weapon pistol_magnum rangemod 0.95 +sm_weapon pistol_magnum penetrationnumlayers 3 +sm_weapon pistol_magnum penetrationpower 75 +sm_weapon pistol_magnum damage 80 + +////////////////////////////// +// [SMG Stats & Settings] // +////////////////////////////// + +sm_weapon smg cycletime 0.063333 +sm_weapon smg damage 24 +sm_weapon smg rangemod 0.9 +sm_weapon smg penetrationnumlayers 2 +sm_weapon smg penetrationpower 50 +sm_weapon smg reloadduration 2.4 + +sm_weapon smg_silenced cycletime 0.063333 +sm_weapon smg_silenced damage 26 +sm_weapon smg_silenced rangemod 0.85 +sm_weapon smg_silenced penetrationnumlayers 2 +sm_weapon smg_silenced penetrationpower 50 +sm_weapon smg_silenced reloadduration 2.2 + +sm_weapon smg_mp5 cycletime 0.075 +sm_weapon smg_mp5 damage 28 +sm_weapon smg_mp5 rangemod 0.95 +sm_weapon smg_mp5 penetrationnumlayers 2 +sm_weapon smg_mp5 penetrationpower 60 +sm_weapon smg_mp5 reloadduration 2.6 + +////////////////////////////////// +// [Shotgun Stats & Settings] // +////////////////////////////////// + +sm_weapon pumpshotgun scatterpitch 6.0 +sm_weapon pumpshotgun scatteryaw 6.0 +sm_weapon pumpshotgun cycletime 0.333333 +sm_weapon pumpshotgun bullets 20 +sm_weapon pumpshotgun damage 14 +sm_weapon pumpshotgun rangemod 0.8 +sm_weapon pumpshotgun penetrationnumlayers 2 +sm_weapon pumpshotgun penetrationpower 50 +sm_weapon pumpshotgun reloadduration 0.4 + +sm_weapon shotgun_chrome scatterpitch 5.0 +sm_weapon shotgun_chrome scatteryaw 5.0 +sm_weapon shotgun_chrome cycletime 0.333333 +sm_weapon shotgun_chrome bullets 13 +sm_weapon shotgun_chrome damage 20 +sm_weapon shotgun_chrome rangemod 0.85 +sm_weapon shotgun_chrome penetrationnumlayers 2 +sm_weapon shotgun_chrome penetrationpower 50 +sm_weapon shotgun_chrome reloadduration 0.4 + +//////////////////////////////////////// +// [Assault Rifle Stats & Settings] // +//////////////////////////////////////// + +sm_weapon rifle damage 40 +sm_weapon rifle_desert damage 50 +sm_weapon rifle_ak47 damage 60 +sm_weapon rifle_sg552 damage 40 + +///////////////////////////////// +// [Tier 3 Stats & Settings] // +///////////////////////////////// + +sm_weapon rifle_m60 clipsize 250 +sm_weapon rifle_m60 cycletime 0.1 +sm_weapon rifle_m60 rangemod 0.975 +sm_weapon rifle_m60 penetrationnumlayers 3 +sm_weapon rifle_m60 penetrationpower 60 +sm_weapon rifle_m60 damage 40 +sm_weapon rifle_m60 reloadduration 2.4 + +sm_weapon grenade_launcher rangemod 1.0 +sm_weapon grenade_launcher cycletime 0.4 +sm_weapon grenade_launcher damage 500 +sm_weapon grenade_launcher reloadduration 3.2 + +////////////////////////////////////// +// [Machine Gun Stats & Settings] // +////////////////////////////////////// + +sm_weapon minigun penetrationnumlayers 3 +sm_weapon minigun penetrationpower 75 +sm_weapon minigun rangemod 0.9 + +sm_weapon mounted_gun penetrationnumlayers 4 +sm_weapon mounted_gun penetrationpower 100 +sm_weapon mounted_gun rangemod 1.0 + +sm_weapon mounted_machine_gun penetrationnumlayers 4 +sm_weapon mounted_machine_gun penetrationpower 100 +sm_weapon mounted_machine_gun rangemod 1.0 + +/////////////////////////// +// [Boss Specifications] // +/////////////////////////// + +// Static Tank Maps / flow Tank disabled +static_tank_map c1m4_atrium +static_tank_map c2m5_concert +static_tank_map c4m5_milltown_escape +static_tank_map c5m5_bridge +static_tank_map c7m1_docks +static_tank_map c7m3_port +static_tank_map c8m5_rooftop +static_tank_map c11m5_runway +static_tank_map c13m2_southpinestream +static_tank_map c13m4_cutthroatcreek + +// Static Tank Custom Maps / Tank Disabled +static_tank_map l4d2_darkblood04_extraction +static_tank_map x1m5_salvation +static_tank_map uf4_airfield +static_tank_map dprm5_milltown_escape +static_tank_map l4d2_diescraper4_top_361 +static_tank_map dkr_m1_motel +static_tank_map dkr_m2_carnival +static_tank_map dkr_m3_tunneloflove +static_tank_map dkr_m4_ferris +static_tank_map dkr_m5_stadium + +// Static Witch Maps +static_witch_map c4m5_milltown_escape +static_witch_map c5m5_bridge +static_witch_map c6m1_riverbank +static_witch_map c6m3_port +static_witch_map c7m3_port +static_witch_map c13m4_cutthroatcreek + +// Map transition rules +sm_add_map_transition c6m2_bedlam c7m1_docks +sm_add_map_transition c9m2_lots c14m1_junkyard +sm_add_map_transition c14m2_lighthouse c1m1_hotel + +// Personalized settings +exec confogl_personalize.cfg + +// Confogl Additional +confogl_setcvars +confogl_resetclientcvars +sv_force_unreserved 1 +sm_cvar sv_force_unreserved 1 +sm_cvar l4d2_addons_eclipse -1 +sm_killlobbyres // Removes the lobby reservation cookie + +// Client Cvar Tracking +//confogl_trackclientcvar "host_timescale" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "mat_hdr_level" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "mat_disable_bloom" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "fog_override" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "fog_enable" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "rate" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "cl_updaterate" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "cl_cmdrate" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "cl_interp_ratio" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "cl_interp" "0" "-2147483648" "0" "2147483647" +//confogl_trackclientcvar "c_thirdpersonshoulder" "0" "-2147483648" "0" "2147483647" diff --git a/cfg/cfgogl/spacemod/shared_cvars.cfg b/cfg/cfgogl/spacemod/shared_cvars.cfg index d068bbb8..4dfda92a 100644 --- a/cfg/cfgogl/spacemod/shared_cvars.cfg +++ b/cfg/cfgogl/spacemod/shared_cvars.cfg @@ -8,17 +8,17 @@ // ======================================================================================= // Server Cvars -sv_pure 2 +sv_pure 0 sv_alltalk 1 confogl_addcvar sv_alltalk 1 confogl_addcvar sv_cheats 0 -confogl_addcvar sv_consistency 1 -confogl_addcvar sv_pure_kick_clients 1 +confogl_addcvar sv_consistency 0 +confogl_addcvar sv_pure_kick_clients 0 confogl_addcvar sv_voiceenable 1 confogl_addcvar sv_log_onefile 0 confogl_addcvar sv_logbans 1 confogl_addcvar sv_allow_lobby_connect_only 0 -confogl_addcvar vs_max_team_switches 9999 +confogl_addcvar vs_max_team_switches 2147483647 confogl_addcvar versus_marker_num 0 // ReadyUp Cvars @@ -84,7 +84,7 @@ confogl_addcvar director_vs_convert_pills 1 confogl_addcvar director_convert_pills 1 confogl_addcvar director_convert_pills_critical_health 0 confogl_addcvar director_convert_pills_to_defib_health 0 -confogl_addcvar pain_pills_decay_rate 0.27 // Original is 0.27 +confogl_addcvar pain_pills_decay_rate 0.25 // Original is 0.27 confogl_addcvar z_finale_spawn_safety_range 600 // Tank finale bugfix confogl_addcvar sv_force_time_of_day 0 confogl_addcvar z_brawl_chance 0 @@ -124,10 +124,10 @@ confogl_addcvar versus_witch_chance_intro 1 confogl_addcvar versus_boss_flow_max 0.80 confogl_addcvar versus_boss_flow_min 0.25 -confogl_addcvar tank_stuck_time_suicide 999999999 +confogl_addcvar tank_stuck_time_suicide 2147483647 confogl_addcvar director_tank_lottery_selection_time 3 -confogl_addcvar z_frustration_spawn_delay 25 -confogl_addcvar z_frustration_los_delay 1.2 +confogl_addcvar z_frustration_spawn_delay 10 +confogl_addcvar z_frustration_los_delay 0.5 confogl_addcvar tankcontrol_print_all 1 confogl_addcvar tank_ground_pound_duration 0.1 confogl_addcvar z_tank_health 5000 @@ -137,4 +137,4 @@ confogl_addcvar confogl_itemtracking_savespawns 1 confogl_addcvar confogl_itemtracking_savespawns "1" // Stripper Path -//confogl_addcvar stripper_cfg_path cfg/stripper/spacemod \ No newline at end of file +//confogl_addcvar stripper_cfg_path cfg/stripper/spacemod diff --git a/cfg/cfgogl/sportymod/confogl.cfg b/cfg/cfgogl/sportymod/confogl.cfg new file mode 100644 index 00000000..3f04e2e0 --- /dev/null +++ b/cfg/cfgogl/sportymod/confogl.cfg @@ -0,0 +1,118 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +confogl_addcvar l4d_ready_cfg_name "sportymod 0.0" +confogl_addcvar sm_cfgmotd_title "sportymod 0.0" +confogl_addcvar sm_cfgmotd_url "steamcommunity.com/groups/bizzymod" + +// Confogl Cvars +confogl_addcvar mp_gamemode Versus +confogl_addcvar z_difficulty Impossible +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar sv_disable_glow_survivors 1 +confogl_addcvar sv_disable_glow_faritems 0 +// confogl_addcvar player_use_radius 125 +// confogl_addcvar player_incap_use_radius 150 +// confogl_addcvar z_use_tolerance 0.8 +confogl_addcvar z_non_head_damage_factor_normal 1 +confogl_addcvar z_non_head_damage_factor_multiplier 1 +confogl_addcvar z_shotgun_bonus_damage_range 300 +confogl_addcvar z_shotgun_bonus_damage_multiplier 1.5 +confogl_addcvar survivor_revive_duration 4.5 +// confogl_addcvar survivor_revive_health 30 +confogl_addcvar l4d_gear_transfer_method 2 +confogl_addcvar l4d2_temphealthmedkits_enable 1 +confogl_addcvar first_aid_kit_use_duration 4.5 +// confogl_addcvar first_aid_heal_percent 0.8 +confogl_addcvar confogl_pills_limit 4 +// confogl_addcvar pain_pills_health_value 50 +// confogl_addcvar pain_pills_decay_rate 0.166667 +// confogl_addcvar adrenaline_duration 20 +// confogl_addcvar adrenaline_run_speed 260 +confogl_addcvar adrenaline_health_buffer 30 +confogl_addcvar defibrillator_use_duration 2.5 +confogl_addcvar defibrillator_return_to_life_time 1.5 +confogl_addcvar z_survivor_respawn_health 40 +confogl_addcvar survivor_respawn_with_guns 1 + +// sportymod 4v4 Cvars +confogl_addcvar z_health 100 +confogl_addcvar z_common_limit 35 +// confogl_addcvar z_background_limit 40 +confogl_addcvar z_wandering_density 0.035 +confogl_addcvar versus_wandering_density 0.035 +confogl_addcvar z_mega_mob_size 50 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 30 +confogl_addcvar z_mob_spawn_finale_size 30 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 +confogl_addcvar z_spawn_mobs_behind_chance 50 +confogl_addcvar cleared_wanderer_respawn_chance 0 +confogl_addcvar z_hit_from_behind_cosine 1.0 +confogl_addcvar z_hit_from_behind_factor 1.0 +confogl_addcvar z_claw_hit_pitch_min -15 +confogl_addcvar z_claw_hit_pitch_max 15 +confogl_addcvar z_claw_hit_yaw_min -15 +confogl_addcvar z_claw_hit_yaw_max 15 +// confogl_addcvar survivor_damage_speed_factor 0.3 +confogl_addcvar z_attack_infected_it_damage 2 +// confogl_addcvar z_spawn_safety_range 150 +// confogl_addcvar z_cooldown_spawn_safety_range 150 +// confogl_addcvar z_finale_spawn_safety_range 150 +// confogl_addcvar z_finale_spawn_mob_safety_range 300 +// confogl_addcvar z_finale_spawn_tank_safety_range 300 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +// confogl_addcvar z_ghost_speed 450 +// confogl_addcvar z_spawn_speed 450 +confogl_addcvar z_smoker_limit 1 +confogl_addcvar z_hunter_limit 1 +confogl_addcvar z_attack_movement_penalty 0.7 + +//Mean witches +confogl_addcvar sv_force_time_of_day 0 +confogl_addcvar z_witch_health 2000 +confogl_addcvar z_witch_anger_rate 0.4 +confogl_addcvar z_witch_relax_rate 0.2 +confogl_addcvar z_witch_flashlight_range 600 +confogl_addcvar z_witch_max_threat_time 4 +confogl_addcvar z_witch_min_threat_time 4 +confogl_addcvar z_witch_threat_hostile_range 800 +confogl_addcvar z_witch_threat_normal_range 600 +confogl_addcvar z_witch_personal_space 200 +confogl_addcvar z_witch_berserk_range 400 +// confogl_addcvar z_witch_damage 100 +confogl_addcvar z_witch_damage_per_kill_hit 25 + +//Stats +comp_roundlimitnfogl_addcvar l4d_stats_announcemotd 0 +confogl_addcvar l4d_stats_announceplayerjoined 0 +confogl_addcvar l4d_stats_announcespecial 0 +confogl_addcvar l4d_stats_announcemode 0 +confogl_addcvar l4d_stats_announcerank 0 +confogl_addcvar l4d_stats_rankonjoin 0 +confogl_addcvar l4d_stats_soundsenabled 1 +confogl_addcvar l4d_stats_adm_cleanoldplayers 0 +confogl_addcvar l4d_stats_adm_cleanplaytime 0 +confogl_addcvar l4d_stats_ffire_mode 0 +confogl_addcvar l4d_stats_silencechat 1 +confogl_addcvar l4d_stats_disabledmessages 0 +confogl_addcvar l4d_stats_insaferoom 1 +confogl_addcvar l4d_stats_restart 1 +confogl_addcvar l4d_stats_fkill 1 +confogl_addcvar l4d_stats_fincap 1 +confogl_addcvar l4d_stats_ffire 1 + +// sportymod Shared Cvars +wait 0000;exec cfgogl/sportymod/shared_cvars.cfg + +// Config Cvars +wait 0000;exec cfgogl/sportymod/sportymod.cfg diff --git a/cfg/cfgogl/sportymod/confogl_off.cfg b/cfg/cfgogl/sportymod/confogl_off.cfg new file mode 100644 index 00000000..59e3e08e --- /dev/null +++ b/cfg/cfgogl/sportymod/confogl_off.cfg @@ -0,0 +1,20 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Disable ReadyUp +l4d_ready_enabled 0 + +// Reset Default Common Limit, Static Spawns, and String Count +reset_static_maps +sm_resetstringcount + +// Unlock Plugins and reload defaults +confogl_resetclientcvars +confogl_resetcvars +pred_unload_plugins diff --git a/cfg/cfgogl/sportymod/confogl_plugins.cfg b/cfg/cfgogl/sportymod/confogl_plugins.cfg new file mode 100644 index 00000000..ea394b2c --- /dev/null +++ b/cfg/cfgogl/sportymod/confogl_plugins.cfg @@ -0,0 +1,32 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------------------------- +// shared plugins +//------------------------------------------- +exec cfgogl/numbersmod/shared_plugins.cfg + +//------------------------------------------- +// numbersmod 4v4 +//------------------------------------------- +sm plugins load optional/l4d2_playstats.smx +sm plugins load optional/l4d2_skill_detect.smx +sm plugins load optional/witch_and_tankifier.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d2_reload_fix.smx +sm plugins load optional/l4d_witch_damage_announce.smx +sm plugins load optional/survivor_mvp.smx +sm plugins load optional/autopause.smx + +sm plugins load bizzymod/bizzykits.smx +sm plugins load bizzymod/SpecListener.smx +sm plugins load bizzymod/vscript_replacer.smx +sm plugins load bizzymod/l4d_witch_damage.smx +sm plugins load bizzymod/l4d_gear_transfer.smx diff --git a/cfg/cfgogl/sportymod/shared_cvars.cfg b/cfg/cfgogl/sportymod/shared_cvars.cfg new file mode 100644 index 00000000..d6e3e8c4 --- /dev/null +++ b/cfg/cfgogl/sportymod/shared_cvars.cfg @@ -0,0 +1,276 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Server Cvars +sv_cheats 0 +sv_consistency 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_allow_lobby_connect_only 0 +sv_visiblemaxplayers 32 +sv_voiceenable 1 +sv_alltalk 1 +motd_enabled 1 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 +confogl_addcvar mp_allowspectators 1 +confogl_addcvar director_min_start_players 1 +confogl_addcvar sv_cheats 0 +confogl_addcvar sv_voiceenable 1 +confogl_addcvar sv_alltalk 1 +confogl_addcvar motd_enabled 1 +confogl_addcvar versus_force_start_time 10 +confogl_addcvar versus_marker_num 0 +confogl_addcvar vs_survival_bonus 25 +confogl_addcvar vs_incap_bonus 25 +confogl_addcvar vs_defib_penalty 0 +confogl_addcvar vs_tiebreak_bonus 25 +confogl_addcvar changelevel_pause_interval 12 +confogl_addcvar versus_round_restarttimer 20 +confogl_addcvar versus_round_restarttimer_finale 20 +confogl_addcvar sv_pz_endgame_vote_period 20 +confogl_addcvar sv_pz_endgame_vote_post_period 10 +confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar sv_noclipduringpause 0 +confogl_addcvar l4d2_addons_eclipse -1 + +// ReadyUp Cvars +l4d_ready_enabled 1 +confogl_addcvar l4d_ready_disable_spawns 0 +confogl_addcvar l4d_ready_survivor_freeze 0 +confogl_addcvar l4d_ready_max_players 33 +confogl_addcvar l4d_ready_delay 2 +confogl_addcvar l4d_ready_force_extra 0 +confogl_addcvar l4d_ready_enable_sound 1 +confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_secret 1 +confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar l4d_ready_unbalanced_start 1 +confogl_addcvar l4d_ready_unbalanced_min 3 +confogl_addcvar coinflip_delay -1 +confogl_addcvar teamflip_delay -1 + +// Config Cvars +confogl_match_execcfg_off "confogl_off.cfg" // Execute this config file upon match mode ends. +confogl_match_execcfg_on "confogl.cfg" // Execute this config file upon match mode starts. +confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun. +confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested. + +// Confogl Cvars +confogl_addcvar confogl_boss_tank "0" // Tank cant be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player. +confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even through they normally arent allowed. +confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales). +confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales. +confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play. +confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time. +confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank). +confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor. +confogl_addcvar confogl_disable_ghost_hurt "1" // Prevents ghost infected from dying when falling into water or off c1m1_hotel. +confogl_addcvar confogl_remove_inf_clips "1" // Removes all infected clip brushes. This fixes tanks getting stuck on Dark Carnival 5 and allows a bit more area for infected to spawn on a few maps. +confogl_addcvar confogl_remove_c5m4_hurts "1" // Removes nonlethal explosion hurt triggers from c5m4_quarter, including some for up to 50 damage. +confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range. +confogl_addcvar confogl_remove_parachutist "0" // Removes the parachutist (and his items) from c3m2_swamp. +confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws. +confogl_addcvar confogl_remove_defib "0" // Remove all defibrillators. +confogl_addcvar confogl_remove_grenade "1" // Remove all grenade launchers. +confogl_addcvar confogl_remove_m60 "1" // Remove all M60 rifles. +confogl_addcvar confogl_remove_lasersight "0" // Remove all laser sight upgrades. +confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits). +confogl_addcvar confogl_remove_upg_explosive "1" // Remove all explosive upgrade packs. +confogl_addcvar confogl_remove_upg_incendiary "0" // Remove all incendiary upgrade packs. +confogl_addcvar confogl_replace_cssweapons "0" // Replace CSS weapons with normal L4D2 weapons. +confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills. +confogl_addcvar confogl_replace_finalekits "1" // Replace medkits during finale with pain pills. +confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10%. +confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings. +confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round 2. +confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits. +confogl_addcvar confogl_adrenaline_limit "4" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_pipebomb_limit "6" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_molotov_limit "4" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_vomitjar_limit "4" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring. +confogl_addcvar confogl_replace_tier2 0 +confogl_addcvar confogl_replace_tier2_finale 0 +confogl_addcvar confogl_replace_tier2_all 0 +confogl_addcvar confogl_limit_tier2 0 +confogl_addcvar confogl_limit_tier2_saferoom 0 + +// Balancing Cvars +// confogl_addcvar director_cs_weapon_spawn_chance 0.5 +confogl_addcvar director_per_map_weapon_upgrade_chance 0.5 +confogl_addcvar director_convert_pills 1 +confogl_addcvar director_vs_convert_pills 1.0 +// confogl_addcvar director_convert_pills_critical_health 0 +// confogl_addcvar director_convert_pills_to_defib_health 0 +confogl_addcvar sv_fallen_survivor_health_multiplier 1.0 +confogl_addcvar z_fallen_kill_suppress_time 60 +// confogl_addcvar sv_infected_riot_control_tonfa_probability 0.25 +// confogl_addcvar sv_infected_police_tonfa_probability 0.25 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.05 +confogl_addcvar sv_force_time_of_day 0 +// confogl_addcvar director_always_allow_wanderers 1 +confogl_addcvar nav_lying_down_percent 0 +confogl_addcvar z_must_wander 1 +// confogl_addcvar survivor_incapacitated_dizzy_severity 0 +// confogl_addcvar survivor_incapacitated_dizzy_timer 5 +confogl_addcvar survivor_incapacitated_accuracy_penalty 0.0 +// confogl_addcvar survivor_incapacitated_cycle_time 0.283333 + +// Competitive Cvars +confogl_addcvar ammo_smg_max 850 +confogl_addcvar ammo_shotgun_max 112 +confogl_addcvar ammo_sniperrifle_max 120 +confogl_addcvar ammo_huntingrifle_max 135 +confogl_addcvar ammo_chainsaw_max 30 +// confogl_addcvar z_gun_range 80 +// confogl_addcvar z_gun_swing_duration 0.183333 +confogl_addcvar z_gun_swing_vs_min_penalty 4 +confogl_addcvar z_gun_swing_vs_max_penalty 8 +// confogl_addcvar inferno_max_range 250 +// confogl_addcvar vomitjar_radius 300 +// confogl_addcvar vomitjar_duration_infected_pz 30 +// confogl_addcvar vomitjar_duration_infected_bot 30 +// confogl_addcvar ammo_pack_use_duration 1.5 +// confogl_addcvar upgrade_pack_use_duration 1.5 +confogl_addcvar upgrade_laser_sight_spread_factor 0.5 +confogl_addcvar player_throwforce 2250 +// confogl_addcvar z_gun_damage 5 +confogl_addcvar fuel_barrel_health 10 +// confogl_addcvar ladder_autocenter 1 + +// AI Improvements +confogl_addcvar sb_allow_leading 1 +// confogl_addcvar z_leap_interval_post_ride 6 +// confogl_addcvar z_leap_interval_post_incap 16 +// confogl_addcvar z_leap_power 400 +// confogl_addcvar z_jockey_control_min 0.8 +// confogl_addcvar z_jockey_control_max 1.0 +// confogl_addcvar z_jockey_control_variance 0.0 +// confogl_addcvar claw_range 60 +// confogl_addcvar claw_range_down 80 +// confogl_addcvar claw_swing_duration 0.2 +// confogl_addcvar jockey_pz_claw_dmg 4 +confogl_addcvar z_exploding_shove_min 3 +confogl_addcvar z_exploding_shove_max 3 +confogl_addcvar z_exploding_shove_interval 4 +// confogl_addcvar z_exploding_inner_radius 200 +confogl_addcvar z_exploding_outer_radius 200 +confogl_addcvar z_exploding_force 1000 +confogl_addcvar z_charger_max_prop_force 1000 +confogl_addcvar boomer_pz_claw_dmg 6 +confogl_addcvar gas_can_use_duration 1.9 +// confogl_addcvar action_progress_reset_interval 0.5 +confogl_addcvar gascan_spit_time 2.75 +// confogl_addcvar scavenge_item_respawn_delay 10 +confogl_addcvar cola_bottles_use_duration 1.5 +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar ai_talk_idle_enabled 0 +// confogl_addcvar z_cough_cloud_radius 150 +// confogl_addcvar z_cough_cloud_initial_cough_delay 0 +// confogl_addcvar z_cough_cloud_expire 6 +confogl_addcvar spitter_pz_claw_dmg 4 +confogl_addcvar tongue_miss_delay 2.75 +confogl_addcvar tongue_hit_delay 10 +confogl_addcvar smoker_pz_claw_dmg 6 +// confogl_addcvar z_breakable_damage 25 +// confogl_addcvar z_door_pound_damage 1000 +// confogl_addcvar z_pounce_door_damage 1000 +// confogl_addcvar z_charge_prop_damage 1000 +// confogl_addcvar z_pounce_crouch_delay 0.9 +// confogl_addcvar z_lunge_power 600 +// confogl_addcvar z_pounce_damage_delay 0.0 +// confogl_addcvar z_pounce_stumble_radius 150 +confogl_addcvar hunter_pz_claw_dmg 8 +// confogl_addcvar versus_shove_hunter_fov 90 +// confogl_addcvar versus_shove_hunter_fov_pouncing 45 +confogl_addcvar tongue_health 200 +confogl_addcvar tongue_range 850 +confogl_addcvar tongue_fly_speed 1050 +// confogl_addcvar tongue_victim_acceleration 10 +// confogl_addcvar tongue_victim_max_speed 200 +// confogl_addcvar tongue_victim_accuracy_penalty 0.0 +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +// confogl_addcvar survivor_incap_tongued_decay_rate 20 +confogl_addcvar tongue_release_fatigue_penalty 2500 +// confogl_addcvar z_vomit_duration 1.25 +// confogl_addcvar z_vomit_fatigue 2001 +confogl_addcvar z_max_stagger_duration 0.8 +confogl_addcvar sv_gravity 735 +// confogl_addcvar fall_speed_safe 540 +// confogl_addcvar fall_speed_fatal 720 +confogl_addccar survivor_incap_max_fall_damage 200 +// confogl_addcvar z_discard_range 2000 +// confogl_addcvar z_discard_min_range 0 +confogl_addcvar sb_max_team_melee_weapons 4 +// confogl_addcvar z_charge_warmup 0.5 +confogl_addcvar z_charge_max_speed 500 +confogl_addcvar z_charge_duration 2.4 +confogl_addcvar charger_pz_claw_dmg 8 + +// AI Improvement Cvars +confogl_addcvar director_allow_infected_bots 0 +// confogl_addcvar z_minion_limit 4 +// confogl_addcvar z_vomit_velocity 2000 +confogl_addcvar z_spitter_range 900 +confogl_addcvar tongue_cone_start_tolerance 1.0 +// confogl_addcvar tongue_vs_cone_start_tolerance 0.02 +// confogl_addcvar z_hunter_ground_normal 0.1 +// confogl_addcvar hunter_pounce_ready_range 800 +// confogl_addcvar hunter_committed_attack_range 600 +confogl_addcvar hunter_leap_away_give_up_range 2000 +// confogl_addcvar hunter_pounce_loft_rate 0.03 +// confogl_addcvar jockey_pounce_loft_rate 0.03 + +// Tank/Witch Cvars +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.20 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min_intro 0.25 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_finale 0.30 +confogl_addcvar versus_boss_flow_max_finale 0.80 +confogl_addcvar versus_boss_padding_min 0.0 +confogl_addcvar versus_boss_padding_max 0.1 + +confogl_addcvar tank_stuck_time_suicide 86400 +confogl_addcvar tank_stuck_visibility_tolerance_suicide 86400 +confogl_addcvar director_tank_lottery_selection_time 4 +confogl_addcvar z_frustration_spawn_delay 10 +confogl_addcvar z_frustration_lifetime 20 +// confogl_addcvar z_frustration_los_delay 0.5 +confogl_addcvar tankcontrol_print_all 1 +// confogl_addcvar tank_ground_pound_duration 2 +confogl_addcvar z_tank_health 4000 +// confogl_addcvar z_tank_attack_interval 1.45 +// confogl_addcvar tank_swing_interval 1.45 +// confogl_addcvar tank_swing_duration 0.2 +// confogl_addcvar tank_fist_radius 16 +// confogl_addcvar tank_throw_allow_range 600 +// confogl_addcvar tank_throw_loft_rate 0.015 +// confogl_addcvar z_tank_throw_health 50 +// confogl_addcvar z_tank_rock_radius 96 +confogl_addcvar z_tank_throw_force 825 +confogl_addcvar tank_burn_duration 90 +confogl_addcvar phys_pushscale 1.0 +confogl_addcvar tank_swing_physics_prop_force 3.0 +confogl_addcvar car_alarm_distance 1000 + +// Stripper Path +// confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod diff --git a/cfg/cfgogl/sportymod/shared_plugins.cfg b/cfg/cfgogl/sportymod/shared_plugins.cfg new file mode 100644 index 00000000..20248b0a --- /dev/null +++ b/cfg/cfgogl/sportymod/shared_plugins.cfg @@ -0,0 +1,117 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------ +// Sourcemod Basic Plugins +//------------------------ +sm plugins load basebans.smx +sm plugins load basecommands.smx +sm plugins load basecomm.smx +sm plugins load admin-flatfile.smx +sm plugins load adminhelp.smx +sm plugins load adminmenu.smx +sm plugins load funcommands.smx +sm plugins load playercommands.smx +sm plugins load funvotes.smx + +//---------------------------------- +// General Competitive Plugins +//---------------------------------- +sm plugins load optional/ghost_hurt.smx +sm plugins load optional/blockheatseekingchargers.smx +sm plugins load optional/blocktrolls.smx +sm plugins load optional/bossspawningfix.smx +sm plugins load optional/coinflip.smx +sm plugins load optional/8ball.smx +sm plugins load optional/current.smx +sm plugins load optional/finalefix.smx +sm plugins load optional/l4d2_nobhaps.smx +sm plugins load optional/l4d2_nospitterduringtank.smx +sm plugins load optional/boomer_horde_equalizer_refactored.smx +sm plugins load optional/l4d2_saferoom_detect.smx +sm plugins load optional/l4d2_setscores.smx +sm plugins load optional/l4d2_spec_stays_spec.smx +sm plugins load optional/l4d2_unsilent_jockey.smx +sm plugins load optional/l4d2_weaponrules.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_getup_slide_fix.smx +sm plugins load optional/l4d2_charger_getup_fix.smx +sm plugins load optional/l4d_bash_kills.smx +sm plugins load optional/l4d_jockey_ledgehang.smx +sm plugins load optional/l4d_pounceprotect.smx +sm plugins load optional/l4d_stuckzombiemeleefix.smx +sm plugins load optional/l4d_tank_damage_announce.smx +sm plugins load optional/lerpmonitor.smx +sm plugins load optional/nosaferoomkits.smx +sm plugins load optional/pill_passer.smx +sm plugins load optional/ratemonitor.smx +sm plugins load optional/rock_stumble_block.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load optional/starting_items.smx +sm plugins load optional/teamflip.smx +sm plugins load optional/temphealthfix.smx + +//---------------------- +// Equilibrium Plugins +//---------------------- +sm plugins load optional/l4d2_drop_secondary.smx +sm plugins load optional/l4d2_m2_control_eq.smx +sm plugins load optional/l4d2_nosecondchances.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d_texture_manager_block.smx + +//---------------------- +// EQ3 / Acemod / ZoneMod +//---------------------- +sm plugins load optional/l4d_tankpunchstuckfix.smx +sm plugins load optional/checkpoint-rage-control.smx +sm plugins load optional/l4d2_tank_attack_control.smx +sm plugins load optional/l4d2_tank_announce.smx +sm plugins load optional/l4d2_bw_rock_hit.smx +sm plugins load optional/l4d2_tank_damage_cvars.smx +sm plugins load optional/fix_engine.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load optional/l4d2_stats.smx +sm plugins load optional/l4d_tank_rush.smx + +//---------------------- +// Static shotgun spread +//---------------------- +sm plugins load optional/l4d2_weapon_attributes.smx +sm plugins load optional/l4d2_static_shotgun_spread.smx + +//--------------------------------------------- +// Merged FF Plugins, needs to be loaded here +//--------------------------------------------- +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_hittable_control.smx + +//--------------------------- +// Matchmaking Plugins +//--------------------------- +sm plugins load optional/readyup.smx +sm plugins load optional/l4d_tank_control_eq.smx +sm plugins load optional/cfg_motd.smx +sm plugins load optional/l4d_boss_percent.smx +sm plugins load optional/l4d_boss_vote.smx +sm plugins load optional/caster_system.smx +sm plugins load optional/caster_assister.smx +sm plugins load optional/pause.smx +sm plugins load optional/panel_text.smx +sm plugins load optional/spechud.smx +sm plugins load optional/slots_vote.smx +sm plugins load optional/witch_and_tankifier.smx + +// Letzzzz go. +sm plugins load confoglcompmod.smx +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/sportymod/shared_settings.cfg b/cfg/cfgogl/sportymod/shared_settings.cfg new file mode 100644 index 00000000..7895aceb --- /dev/null +++ b/cfg/cfgogl/sportymod/shared_settings.cfg @@ -0,0 +1,301 @@ + +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [starting_items.smx] +//give adren? (1: Kit, 2: Defib, 4: Pills, 8: Adren, 16: Pipebomb, 32: Molotov, 64: Bile +confogl_addcvar starting_item_flags 1 + +// [fix_engine.smx] +confogl_addcvar engine_fix_flags 12 + +// [l4d_tank_rush] +confogl_addcvar l4d_no_tank_rush 1 +confogl_addcvar l4d_no_tank_rush_unfreeze_saferoom 1 + +// [panel_text.smx] +sm_addreadystring " " +sm_lockstrings + +// [checkpoint-rage-control.smx] +confogl_addcvar crc_global 1 + +// [l4d2_ghost_warp.smx] +confogl_addcvar l4d2_ghost_warp_flag 0 // Enable ghost warp with command only 'sm_warp' +confogl_addcvar l4d2_ghost_warp_delay 0 + +// [l4d_static_punch_getup.smx] +confogl_addcvar tank_punch_getup_scale 0.333333 // 54 frames / 30 fps * 0.25 = 0.6s + +// [ghost_hurt.smx] +confogl_addcvar ghost_hurt_type 1 + +// [l4d2_nosecondchances.smx] +confogl_addcvar bot_kick_delay 0 + +// [bossspawningfix.smx] +confogl_addcvar l4d_obey_boss_spawn_cvars 1 +confogl_addcvar l4d_obey_boss_spawn_except_static 1 + +// [l4d_bash_kills.smx] +confogl_addcvar l4d_no_bash_kills 1 + +// [l4d_jockey_ledgehang.smx] +confogl_addcvar z_leap_interval_post_ledge_hang 12 + +// [l4d_tank_damage_announce.smx] +confogl_addcvar l4d_tankdamage_enabled 1 + +// [l4d2_tank_attack_control.smx] +confogl_addcvar l4d2_block_punch_rock 1 +confogl_addcvar l4d2_block_jump_rock 1 +confogl_addcvar tank_overhand_only 0 + +// [l4d_tank_painfade.smx] +confogl_addcvar l4d_tank_painfade 1 +confogl_addcvar l4d_tank_painfade_duration 300 +confogl_addcvar l4d_tank_painfade_flags 8 + +// [l4d2_slowdown_control.smx] +confogl_addcvar z_tank_speed 220 +confogl_addcvar z_tank_speed_vs 220 +confogl_addcvar z_tank_damage_slow_max_range 0 +confogl_addcvar z_tank_damage_slow_min_range 0 +confogl_addcvar l4d2_slowdown_gunfire_si 0 +confogl_addcvar l4d2_slowdown_gunfire_tank 0 +confogl_addcvar l4d2_slowdown_water_tank 200 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 200 + +// [l4d2_tank_props_glow.smx] +confogl_addcvar sv_tankpropfade 1 +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 +confogl_addcvar l4d_ammo_spawn_glow_color "255 255 255" + +// [l4d2_pickup.smx] +confogl_addcvar l4d2_usecount 2147483647 +confogl_addcvar pickup_switch_flags 2 +confogl_addcvar pickup_incap_flags 2 + +// [l4d2_spitblock.smx] +// Official Campaigns +spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c5m3_cemetery 4160 333.04 4297 291.01 // At the drop into the sewer. + +//Custom Campaigns +spit_block_square l4d_dbd2dc_clean_up -4232 3608 -4432 3544 // In the vent +spit_block_square l4d_dbd2dc_undead_center -6902.102539 8809.659180 -7872.751953 8522.269531 +spit_block_square l4d2_fallindeath03 4562.987793 -1769.313721 4446.680664 -1623.422729 +spit_block_square l4d2_fallindeath04 1656.737061 -325.227692 1531.636108 -187.895630 +spit_block_square cdta_03warehouse 6311.086 -13217.889 6192.448 -13347.204 // At the final ladder in the sewer +spit_block_square downpour_sugarmill_a -1444.891235 -9514.031250 -1514.214478 -9575.968750 +spit_block_square downpour_sugarmill_b -1434.379028 -9517.581055 -1514.214478 -9575.968750 +spit_block_square l4d2_darkblood02_engine 2515 5610 2664 5770 +spit_block_square x1m2_path 6303 10742 6522 10893 +spit_block_square cotd03_mall 8713 3405 8890 3115 +spit_block_square l4d2_daybreak03_bridge -7365.97 -1889.97 -7294.03 -1754 +spit_block_square l4d2_daybreak04_cruise 8064.77 -6594.97 8141 -6525 +spit_block_square l4d2_stadium1_apartment 268 587 409 417 // In the elevator (RBT 6 Hotfix) + +// [l4d2_godframes_control.smx] +confogl_addcvar gfc_hittable_override 1 +confogl_addcvar gfc_hittable_rage_override 1 +confogl_addcvar gfc_rock_rage_override 1 +confogl_addcvar gfc_spit_extra_time 0 +confogl_addcvar gfc_common_extra_time 0 +confogl_addcvar gfc_hunter_duration 0 +confogl_addcvar gfc_jockey_duration 0 +confogl_addcvar gfc_smoker_duration 0 +confogl_addcvar gfc_charger_duration 0.5 +confogl_addcvar gfc_long_charger_duration 1 +confogl_addcvar gfc_common_zc_flags 9 +confogl_addcvar gfc_spit_zc_flags 6 +confogl_addcvar gfc_godframe_glows 1 +confogl_addcvar gfc_ff_min_time 2 +confogl_addcvar gfc_witch_override 1 + +// [l4d2_uniform_spit.smx] +confogl_addcvar l4d2_spit_dmg 2 +confogl_addcvar l4d2_spit_alternate_dmg 3 + +// [l4d2_m2_control.smx] +confogl_addcvar z_max_hunter_pounce_stagger_duration 1 +confogl_addcvar l4d2_m2_hunter_penalty 4 +confogl_addcvar l4d2_m2_jockey_penalty 4 +confogl_addcvar l4d2_m2_smoker_penalty 2 + +// [l4d2_hittable_control.smx] +confogl_addcvar hc_bridge_car_damage 50 +confogl_addcvar hc_stadium_car_damage 50 +confogl_addcvar hc_broken_forklift_standing_damage 100 +confogl_addcvar hc_sflog_standing_damage 100 +confogl_addcvar hc_bhlog_standing_damage 100 +confogl_addcvar hc_handtruck_standing_damage 50 +confogl_addcvar hc_car_standing_damage 100 +confogl_addcvar hc_bumpercar_standing_damage 100 +confogl_addcvar hc_forklift_standing_damage 100 +confogl_addcvar hc_dumpster_standing_damage 100 +confogl_addcvar hc_haybale_standing_damage 100 +confogl_addcvar hc_baggage_standing_damage 100 +confogl_addcvar hc_incap_standard_damage -2 +confogl_addcvar hc_disable_self_damage 1 +confogl_addcvar hc_overhit_time 1.375 +confogl_addcvar hc_unbreakable_forklifts 1 + +// [l4d2_si_staggers.smx] +confogl_addcvar l4d2_disable_si_friendly_staggers 2 + +// [l4d2_unsilent_jockey.smx] +confogl_addcvar sm_unsilentjockey_enabled 1 +confogl_addcvar sm_unsilentjockey_always 1 +confogl_addcvar sm_unsilentjockey_time 2 + +// [l4d2_weaponrules.smx] +l4d2_addweaponrule smg smg +l4d2_addweaponrule smg_silenced smg_silenced +l4d2_addweaponrule smg_mp5 smg_mp5 +l4d2_addweaponrule pumpshotgun pumpshotgun +l4d2_addweaponrule shotgun_chrome shotgun_chrome +l4d2_addweaponrule rifle smg +l4d2_addweaponrule rifle_ak47 smg_silenced +l4d2_addweaponrule rifle_desert smg_mp5 +l4d2_addweaponrule rifle_sg552 smg +l4d2_addweaponrule autoshotgun pumpshotgun +l4d2_addweaponrule shotgun_spas shotgun_chrome +l4d2_addweaponrule hunting_rifle sniper_scout +l4d2_addweaponrule sniper_military sniper_awp +l4d2_addweaponrule sniper_scout sniper_scout +l4d2_addweaponrule sniper_awp sniper_awp +l4d2_addweaponrule grenade_launcher chainsaw +l4d2_addweaponrule rifle_m60 chainsaw +l4d2_addweaponrule knife baseball_bat +l4d2_addweaponrule upgradepack_explosive upgradepack_incendiary + +// [l4d2_collision_adjustments.smx] +confogl_addcvar collision_tankrock_common 1 +confogl_addcvar collision_smoker_common 1 +confogl_addcvar collision_tankrock_incap 1 + +// [l4d_stuckpunchfix] +confogl_addcvar sm_punchstuckfix_unstucktime 0.5 +confogl_addcvar tpsf_debug_print 0 + +// [cfg_motd.smx] +confogl_addcvar sm_cfgmotd_title "sportymod 0.0" +confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" + +///////////////////////////// +// [Static shotgun spread] // +///////////////////////////// + +// Apply binary patch +//codepatch_patch sgspread + +// Pistol settings +sm_weapon pistol deployduration 0.4 +sm_weapon pistol dualdeployduration 0.5 +sm_weapon pistol damage 40 +sm_weapon pistol rangemod 0.9 + +// Magnum settings +sm_weapon pistol_magnum deployduration 0.4 +sm_weapon pistol_magnum dualdeployduration 0.5 +sm_weapon pistol_magnum damage 90 +sm_weapon pistol_magnum rangemod 0.9 + +// SMG settings +sm_weapon smg damage 24 +sm_weapon smg rangemod 0.9 +sm_weapon smg_silenced damage 26 +sm_weapon smg_silenced rangemod 0.85 +sm_weapon smg_mp5 damage 28 +sm_weapon smg_mp5 rangemod 0.9 + +// Pump settings +sm_weapon pumpshotgun scatterpitch 6 +sm_weapon pumpshotgun scatteryaw 6 +sm_weapon pumpshotgun bullets 16 +sm_weapon pumpshotgun damage 20 +sm_weapon pumpshotgun rangemod 0.8 + +// Chrome settings +sm_weapon shotgun_chrome scatterpitch 5 +sm_weapon shotgun_chrome scatteryaw 5 +sm_weapon shotgun_chrome bullets 12 +sm_weapon shotgun_chrome damage 25 +sm_weapon shotgun_chrome rangemod 0.85 + +// First ring settings +// confogl_addcvar sgspread_ring1_bullets 6 +// confogl_addcvar sgspread_ring1_factor 4 +// confogl_addcvar sgspread_center_pellet 0 + +// [l4d2_shotgun_ff.smx] +confogl_addcvar l4d2_shotgun_ff_multi 0.5 +confogl_addcvar l4d2_shotgun_ff_min 1 +confogl_addcvar l4d2_shotgun_ff_max 4 + +// Sniper Settings +sm_weapon sniper_scout damage 100 +sm_weapon sniper_awp damage 120 + +/////////////////// +// [Boss tweaks] // +/////////////////// + +// Static Tank maps / flow Tank disabled +static_tank_map c1m4_atrium +static_tank_map c4m5_milltown_escape +static_tank_map c5m5_bridge +static_tank_map c6m3_port +static_tank_map c7m1_docks +static_tank_map c7m3_port +static_tank_map c8m5_rooftop +static_tank_map c9m2_lots +static_tank_map c11m5_runway +static_tank_map c13m2_southpinestream +static_tank_map c13m14_cutthroatcreek +static_tank_map c14m2_lighthouse +static_tank_map l4d2_darkblood04_extraction +static_tank_map x1m5_salvation +static_tank_map uf4_airfield +static_tank_map dprm5_milltown_escape +static_tank_map l4d2_diescraper4_top_361 +static_tank_map dkr_m1_motel +static_tank_map dkr_m2_carnival +static_tank_map dkr_m3_tunneloflove +static_tank_map dkr_m4_ferris +static_tank_map dkr_m5_stadium + +// Static Witch Maps +static_witch_map c4m5_milltown_escape +static_witch_map c5m5_bridge +static_witch_map c6m1_riverbank +static_witch_map c6m3_port +static_witch_map c7m3_port +static_witch_map c13m4_cutthroatcreek + +// Finales with a single first event Tank +tank_map_only_first_event c5m5_bridge +tank_map_only_first_event c13m4_cutthroatcreek + +// Personalized settings +exec confogl_personalize.cfg + +// Confogl Additional +confogl_setcvars +confogl_resetclientcvars +sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/sportymod/sportymod.cfg b/cfg/cfgogl/sportymod/sportymod.cfg new file mode 100644 index 00000000..cc8a7a77 --- /dev/null +++ b/cfg/cfgogl/sportymod/sportymod.cfg @@ -0,0 +1,56 @@ +// ======================================================================================= +// Sportymod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 0.0 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [lerpmonitor.smx] +confogl_addcvar sm_allowed_lerp_changes 20 +confogl_addcvar sm_lerp_change_spec 1 +confogl_addcvar sm_readyup_lerp_changes 1 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 + +// [l4d_boss_percent.smx] +confogl_addcvar sm_tank_can_spawn 1 +confogl_addcvar sm_witch_can_spawn 1 +confogl_addcvar l4d_global_percent 0 +confogl_addcvar l4d_tank_percent 1 +confogl_addcvar l4d_witch_percent 1 +confogl_addcvar l4d_boss_vote 1 + +// [l4d2_nobhaps.smx] +confogl_addcvar simple_antibhop_enable 1 +confogl_addcvar bhop_allow_survivor 0 + +// [boomer_horde_equalizer_refactored.smx] +confogl_addcvar boomer_horde_equalizer 1 +confogl_addcvar boomer_horde_equalizer_events_default 1 +confogl_addcvar z_notice_it_range 2000 +boomer_horde_amount 1 10 // 10 Common spawned for the 1st Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 2 10 // 10 Common spawned for the 2nd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 3 10 // 10 Common spawned for the 3rd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 4 10 // 10 Common spawned for the 4th Survivor boomed + Wandering common in z_notice_it_range + +// [autopause.smx] +confogl_addcvar autopause_enable 1 +confogl_addcvar autopause_force 1 +confogl_addcvar autopause_apdebug 0 + +// [l4d2_melee_shenanigans.smx] +confogl_addcvar l4d2_melee_drop_method 0 +confogl_addcvar l4d2_melee_tank_nerf 0 + +// [l4d2_playstats.smx + survivor_mvp] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 + +// [l4d2_skill_detect.smx] +confogl_addcvar sm_skill_report_enable 1 + +// Shared Settings +wait 0000;exec cfgogl/sportymod/shared_settings.cfg diff --git a/cfg/cfgogl/surfmod/confogl.cfg b/cfg/cfgogl/surfmod/confogl.cfg new file mode 100644 index 00000000..65125d3d --- /dev/null +++ b/cfg/cfgogl/surfmod/confogl.cfg @@ -0,0 +1,126 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// ReadyUp Cvars +confogl_addcvar l4d_ready_cfg_name "surfmod 1.0" +confogl_addcvar sm_cfgmotd_title "surfmod 1.0" +confogl_addcvar sm_cfgmotd_url "steamcommunity.com/groups/bizzymod" + +// Confogl Cvars +confogl_addcvar mp_gamemode Versus +confogl_addcvar z_difficulty Impossible +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar sv_disable_glow_survivors 1 +confogl_addcvar sv_disable_glow_faritems 0 +// confogl_addcvar player_use_radius 125 +// confogl_addcvar player_incap_use_radius 150 +// confogl_addcvar z_use_tolerance 0.8 +confogl_addcvar z_head_damage_causes_wounds 1 +confogl_addcvar z_non_head_damage_factor_easy 2 +confogl_addcvar z_non_head_damage_factor_normal 1 +confogl_addcvar z_non_head_damage_factor_hard 1 +confogl_addcvar z_non_head_damage_factor_expert 1 +confogl_addcvar z_non_head_damage_factor_multiplier 1 +confogl_addcvar z_shotgun_bonus_damage_range 200 +confogl_addcvar z_shotgun_bonus_damage_multiplier 1.5 +confogl_addcvar survivor_revive_duration 4.5 +// confogl_addcvar survivor_revive_health 30 +confogl_addcvar l4d_gear_transfer_method 2 +confogl_addcvar l4d2_temphealthmedkits_enable 1 +confogl_addcvar first_aid_kit_use_duration 4.5 +confogl_addcvar first_aid_heal_percent 0.85 +confogl_addcvar confogl_pills_limit 4 +// confogl_addcvar pain_pills_health_value 50 +// confogl_addcvar pain_pills_decay_rate 0.166667 +// confogl_addcvar adrenaline_duration 20 +// confogl_addcvar adrenaline_run_speed 260 +// confogl_addcvar adrenaline_health_buffer 30 +// confogl_addcvar defibrillator_use_duration 2 +confogl_addcvar defibrillator_return_to_life_time 1 +confogl_addcvar z_survivor_respawn_health 100 +confogl_addcvar survivor_respawn_with_guns 2 + +// Surfmod 4v4 Cvars +confogl_addcvar z_health 100 +confogl_addcvar z_common_limit 40 +// confogl_addcvar z_background_limit 40 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_finale_size 40 +// confogl_addcvar z_mob_spawn_min_interval_easy 120 +// confogl_addcvar z_mob_spawn_max_interval_easy 240 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 +// confogl_addcvar z_mob_spawn_min_interval_hard 120 +// confogl_addcvar z_mob_spawn_max_interval_hard 240 +// confogl_addcvar z_mob_spawn_min_interval_expert 120 +// confogl_addcvar z_mob_spawn_max_interval_expert 300 +confogl_addcvar z_spawn_mobs_behind_chance 50 +confogl_addcvar cleared_wanderer_respawn_chance 0 +confogl_addcvar z_hit_from_behind_cosine 1.0 +confogl_addcvar z_hit_from_behind_factor 1.0 +confogl_addcvar z_claw_hit_pitch_min -15 +confogl_addcvar z_claw_hit_pitch_max 15 +confogl_addcvar z_claw_hit_yaw_min -15 +confogl_addcvar z_claw_hit_yaw_max 15 +// confogl_addcvar survivor_damage_speed_factor 0.3 +confogl_addcvar z_attack_infected_it_damage 2 +// confogl_addcvar z_spawn_safety_range 150 +// confogl_addcvar z_cooldown_spawn_safety_range 150 +// confogl_addcvar z_finale_spawn_safety_range 150 +// confogl_addcvar z_finale_spawn_mob_safety_range 300 +// confogl_addcvar z_finale_spawn_tank_safety_range 300 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +// confogl_addcvar z_ghost_speed 450 +// confogl_addcvar z_spawn_speed 450 +confogl_addcvar z_smoker_limit 1 +confogl_addcvar z_hunter_limit 1 +confogl_addcvar z_attack_movement_penalty 0.7 + +// Mean witches +confogl_addcvar sv_force_time_of_day 0 +confogl_addcvar z_witch_health 2000 +confogl_addcvar z_witch_anger_rate 0.4 +confogl_addcvar z_witch_relax_rate 0.2 +confogl_addcvar z_witch_flashlight_range 600 +confogl_addcvar z_witch_max_threat_time 5 +confogl_addcvar z_witch_min_threat_time 4 +confogl_addcvar z_witch_threat_hostile_range 800 +confogl_addcvar z_witch_threat_normal_range 600 +confogl_addcvar z_witch_personal_space 200 +confogl_addcvar z_witch_berserk_range 400 +// confogl_addcvar z_witch_damage 100 +confogl_addcvar z_witch_damage_per_kill_hit 25 + +// Stats +comp_roundlimitnfogl_addcvar l4d_stats_announcemotd 0 +confogl_addcvar l4d_stats_announceplayerjoined 0 +confogl_addcvar l4d_stats_announcespecial 0 +confogl_addcvar l4d_stats_announcemode 0 +confogl_addcvar l4d_stats_announcerank 0 +confogl_addcvar l4d_stats_rankonjoin 0 +confogl_addcvar l4d_stats_soundsenabled 1 +confogl_addcvar l4d_stats_adm_cleanoldplayers 0 +confogl_addcvar l4d_stats_adm_cleanplaytime 0 +confogl_addcvar l4d_stats_ffire_mode 0 +confogl_addcvar l4d_stats_silencechat 1 +confogl_addcvar l4d_stats_disabledmessages 0 +confogl_addcvar l4d_stats_insaferoom 1 +confogl_addcvar l4d_stats_restart 1 +confogl_addcvar l4d_stats_fkill 1 +confogl_addcvar l4d_stats_fincap 1 +confogl_addcvar l4d_stats_ffire 1 + +// surfmod Shared Cvars +wait 150;exec cfgogl/surfmod/shared_cvars.cfg + +// Config Cvars +wait 300;exec cfgogl/surfmod/surfmod.cfg diff --git a/cfg/cfgogl/surfmod/confogl_off.cfg b/cfg/cfgogl/surfmod/confogl_off.cfg new file mode 100644 index 00000000..8c155d02 --- /dev/null +++ b/cfg/cfgogl/surfmod/confogl_off.cfg @@ -0,0 +1,20 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Disable ReadyUp +l4d_ready_enabled 0 + +// Reset Default Common Limit, Static Spawns, and String Count +reset_static_maps +sm_resetstringcount + +// Unlock Plugins and reload defaults +confogl_resetclientcvars +confogl_resetcvars +pred_unload_plugins diff --git a/cfg/cfgogl/surfmod/confogl_plugins.cfg b/cfg/cfgogl/surfmod/confogl_plugins.cfg new file mode 100644 index 00000000..b470f084 --- /dev/null +++ b/cfg/cfgogl/surfmod/confogl_plugins.cfg @@ -0,0 +1,32 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------------------------- +// shared plugins +//------------------------------------------- +exec cfgogl/numbersmod/shared_plugins.cfg + +//------------------------------------------- +// numbersmod 4v4 +//------------------------------------------- +sm plugins load optional/l4d2_playstats.smx +sm plugins load optional/l4d2_skill_detect.smx +sm plugins load optional/witch_and_tankifier.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d2_reload_fix.smx +sm plugins load optional/l4d_witch_damage_announce.smx +sm plugins load optional/survivor_mvp.smx +sm plugins load optional/autopause.smx + +sm plugins load bizzymod/bizzykits.smx +sm plugins load bizzymod/SpecListener.smx +sm plugins load bizzymod/vscript_replacer.smx +sm plugins load bizzymod/l4d_witch_damage.smx +sm plugins load bizzymod/l4d_gear_transfer.smx diff --git a/cfg/cfgogl/surfmod/mapinfoold.txt b/cfg/cfgogl/surfmod/mapinfoold.txt new file mode 100644 index 00000000..7c2f3e7a --- /dev/null +++ b/cfg/cfgogl/surfmod/mapinfoold.txt @@ -0,0 +1,1631 @@ +"MapInfo" +{ + "c1m1_hotel" + { + "start_point" "427.606232 5739.467773 2926.982178" + "end_point" "2045.685913 4429.264160 1246.031250" + "start_dist" "100.000000" + "start_extra_dist" "0.000000" + "end_dist" "200.000000" + "tank_z_fix" "1" + "max_tank_z" "1200.000000" + "tank_warpto" "2168.357666 5803.427734 2464.031250" + "tank_ban_flow_min" "28" + "tank_ban_flow_max" "82" + "max_distance" "400" + } + "c1m2_streets" + { + "start_point" "2395.007813 4964.173340 522.224670" + "end_point" "-7688.886230 -4694.720703 463.251282" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "200.000000" + "horde_limit" "120" + } + "c1m3_mall" + { + "start_point" "6520.577148 -1477.425659 103.001579" + "end_point" "-2182.585938 -4630.097168 615.226501" + "start_dist" "50.000000" + "start_extra_dist" "150.000000" + "end_dist" "200.000000" + "tank_ban_flow_min" "64" + "tank_ban_flow_max" "68" + "max_distance" "600" + "horde_limit" "180" + } + "c1m4_atrium" + { + "start_point" "-2207.119141 -4694.244141 615.226318" + "end_point" "-4467.291016 -4060.759277 88.031250" + "start_dist" "50.000000" + "start_extra_dist" "150.000000" + "end_dist" "150.000000" + "max_distance" "700" + "ItemLimits" + { + "pain_pills" "0" + } + "horde_tank" "1" + } + "c2m1_highway" + { + "start_point" "10678.891602 7860.774414 -496.546509" + "end_point" "-820.387512 -2532.216064 -1004.767700" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "150.000000" + } + "c2m2_fairgrounds" + { + "start_point" "1718.106934 2897.631592 83.232269" + "end_point" "-4797.248047 -5396.388184 15.232277" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "150.000000" + "max_distance" "500" + "horde_limit" "120" + } + "c2m3_coaster" + { + "start_point" "4106.046387 2151.258301 15.232275" + "end_point" "-5442.394043 1928.548462 66.031250" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "150.000000" + "max_distance" "600" + "horde_limit" "240" + "tank_ban_flow_min" "56" + "tank_ban_flow_max" "100" + } + "c2m4_barns" + { + "start_point" "2918.205078 3847.128174 -125.968750" + "end_point" "-772.226257 2221.974365 -193.969513" + "start_dist" "100.000000" + "start_extra_dist" "150.000000" + "end_dist" "250.000000" + "max_distance" "500" + "horde_limit" "150" + } + "c2m5_concert" + { + "start_point" "-648.774109 2223.472168 -176.998734" + "end_point" "-2209.094238 3460.875244 -99.968750" + "start_dist" "100.000000" + "start_extra_dist" "300.000000" + "end_dist" "150.000000" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c3m1_plankcountry" + { + "start_point" "-12468.835938 10519.109375 319.434265" + "end_point" "-2710.059326 483.648499 131.811050" + "start_dist" "100.000000" + "start_extra_dist" "0.000000" + "end_dist" "200.000000" + "max_distance" "500" + "tank_ban_flow_min" "45" + "tank_ban_flow_max" "60" + } + "c3m2_swamp" + { + "start_point" "-8213.404297 7624.283203 88.810654" + "end_point" "7550.402344 -1061.843262 215.226273" + "start_dist" "100.000000" + "start_extra_dist" "200.000000" + "end_dist" "200.000000" + "max_distance" "500" + } + "c3m3_shantytown" + { + "start_point" "-5705.945801 2006.518921 215.226288" + "end_point" "5025.185059 -3697.070557 427.435242" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "200.000000" + "max_distance" "500" + } + "c3m4_plantation" + { + "start_point" "-5023.209473 -1574.434448 -20.564751" + "end_point" "1056.862549 806.977112 208.031250" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "200.000000" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c4m1_milltown_a" + { + "start_point" "-6008.747070 7381.954590 192.909424" + "end_point" "3993.458008 -1598.952271 294.281250" + "start_dist" "100.000000" + "start_extra_dist" "500.000000" + "end_dist" "275.000000" + "max_distance" "400" + } + "c4m2_sugarmill_a" + { + "start_point" "3780.781250 -1684.738770 306.723663" + "end_point" "-1790.401970 -13713.732422 174.281250" + "start_dist" "100.000000" + "start_extra_dist" "250.000000" + "end_dist" "150.000000" + "max_distance" "600" + "tank_ban_flow_min" "80" + "tank_ban_flow_max" "100" + } + "c4m3_sugarmill_b" + { + "start_point" "-1804.696167 -13811.134766 186.994522" + "end_point" "3729.135010 -1578.550781 294.281250" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "300.000000" + "max_distance" "500" + "tank_ban_flow_min" "20" + "tank_ban_flow_max" "35" + } + "c4m4_milltown_b" + { + "start_point" "4037.589355 -1547.009277 306.473663" + "end_point" "-3241.400879 7849.852539 182.031250" + "start_dist" "50.000000" + "start_extra_dist" "275.000000" + "end_dist" "200.000000" + "max_distance" "400" + } + "c4m5_milltown_escape" + { + "start_point" "-3378.816895 7770.011230 182.031250" + "end_point" "-6006.484375 7381.770508 192.909409" + "start_dist" "50.000000" + "start_extra_dist" "350.000000" + "end_dist" "100.000000" + "max_distance" "400" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c5m1_waterfront" + { + "start_point" "735.921692 730.683960 -437.968750" + "end_point" "-4386.030273 -1280.031250 -281.968750" + "start_dist" "75.000000" + "start_extra_dist" "0.000000" + "end_dist" "250.000000" + "max_distance" "300" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "38" + } + "c5m2_park" + { + "start_point" "-4331.246094 -1133.826660 -299.968750" + "end_point" "-9787.088867 -8134.997559 -193.968750" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "250.000000" + "tank_ban_flow_min" "49" + "tank_ban_flow_max" "54" + "horde_limit" "240" + } + "c5m3_cemetery" + { + "start_point" "6292.211426 8216.120117 79.232285" + "end_point" "7424.436035 -9671.151367 183.226273" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "250.000000" + "tank_ban_flow_min" "50" + "tank_ban_flow_max" "70" + } + "c5m4_quarter" + { + "start_point" "-3065.877686 4776.646484 147.226166" + "end_point" "1475.194214 -3489.227295 297.716370" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "350.000000" + "tank_ban_flow_min" "80" + "tank_ban_flow_max" "100" + } + "c5m5_bridge" + { + "start_point" "-11921.506836 5976.045410 547.226318" + "start_dist" "70.112122" + "start_extra_dist" "264.157257" + "end_point" "3001.944092 6272.879395 494.284149" + "end_dist" "130.807541" + "max_distance" "600" + } + "c6m1_riverbank" + { + "start_point" "930.36016 3843.36181 94.029960" + "end_point" "-4140.35009 1483.70129 765.001281" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "50.000000" + "max_distance" "500" + } + "c6m2_bedlam" + { + "start_point" "3062.55200 -1122.89624 -258.998718" + "end_point" "11405.46093 4912.65869 -590.962768" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "50.000000" + "max_distance" "500" + "horde_limit" "150" + "tank_ban_flow_min" "70" + "tank_ban_flow_max" "100" + } + "c6m3_port" + { + "start_point" "-2259.96948 -606.96893 -214.962753" + "end_point" "-283.08215 -823.07836 37.001598" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "50.000000" + "max_distance" "700" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c7m1_docks" + { + "start_point" "13552.489258 2207.394043 5.524101" + "end_point" "1975.615234 2353.251465 270.336121" + "start_dist" "75.000000" + "start_extra_dist" "0.000000" + "end_dist" "50.000000" + "max_distance" "500" + } + "c7m2_barge" + { + "start_point" "10743.761719 2343.008789 270.807251" + "end_point" "-11288.833008 3128.797363 270.430115" + "start_dist" "75.000000" + "start_extra_dist" "0.000000" + "end_dist" "50.000000" + "max_distance" "500" + } + "c7m3_port" + { + "start_point" "960.031250 3247.345459 262.430115" + "end_point" "-272.031250 -834.873291 97.001595" + "start_dist" "75.000000" + "start_extra_dist" "0.000000" + "end_dist" "75.000000" + "max_distance" "700" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c8m1_apartment" + { + "start_point" "1888.341675 917.455017 476.342407" + "start_dist" "267.108032" + "start_extra_dist" "605.247620" + "end_point" "2883.220703 2962.613037 -204.742737" + "end_dist" "336.442200" + "max_distance" "300" + } + "c8m2_subway" + { + "start_point" "2882.260986 2977.796387 51.257275" + "start_dist" "164.919525" + "start_extra_dist" "323.406708" + "end_point" "11008.688477 4657.793945 49.151138" + "end_dist" "180.738693" + } + "c8m3_sewers" + { + "start_point" "10936.943359 4650.031250 90.761696" + "end_point" "12288.031250 12235.729492 78.031250" + "start_dist" "50.000000" + "start_extra_dist" "0.000000" + "end_dist" "75.000000" + "max_distance" "600" + "tank_ban_flow_min" "55" + "tank_ban_flow_max" "80" + } + "c8m4_interior" + { + "start_point" "12297.031250 12247.379883 16.031250" + "start_dist" "165.464249" + "start_extra_dist" "409.338440" + "end_point" "11459.563477 15087.968750 5565.974609" + "end_dist" "332.486664" + "tank_z_fix" "1" + "max_tank_z" "4000.000000" + "tank_warpto" "13428.627930 15072.313477 486.031250" + "max_distance" "500" + } + "c8m5_rooftop" + { + "start_point" "5287.943848 8467.129883 5536.031250" + "start_dist" "149.711517" + "start_extra_dist" "421.803650" + "end_point" "5675.121582 8443.446289 6142.031250" + "end_dist" "100.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "55" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c9m1_alleys" + { + "start_point" "-9862.552734 -8714.114258 -5.783222" + "start_dist" "138.332581" + "start_extra_dist" "1502.202637" + "end_point" "153.076584 -1426.919556 -139.968750" + "end_dist" "210.283035" + } + "c9m2_lots" + { + "start_point" "150.086899 -1372.455322 -139.968750" + "start_dist" "90.983040" + "start_extra_dist" "301.270020" + "end_point" "7095.529297 6474.146484 45.645901" + "end_dist" "1387.183838" + "max_distance" "800" + "ItemLimits" + { + "pain_pills" "2" + } + } + "c10m1_caves" + { + "start_point" "-11747.106445 -14618.416016 -197.777359" + "start_dist" "86.396400" + "start_extra_dist" "587.266541" + "end_point" "-10784.895508 -4906.771973 318.224670" + "end_dist" "403.989594" + "max_distance" "300" + } + "c10m2_drainage" + { + "start_point" "-11079.036133 -8946.167969 -562.025330" + "start_dist" "78.842514" + "start_extra_dist" "399.942505" + "end_point" "-8339.282227 -5592.915039 0.031253" + "end_dist" "322.081451" + "max_distance" "400" + } + "c10m3_ranchhouse" + { + "start_point" "-8334.761719 -5592.995117 6.031253" + "start_dist" "82.983238" + "start_extra_dist" "327.413300" + "end_point" "-2673.776611 107.736259 316.727081" + "end_dist" "327.768036" + "max_distance" "500" + } + "c10m4_mainstreet" + { + "start_point" "-3155.918945 107.783440 328.031250" + "start_dist" "99.209229" + "start_extra_dist" "307.155029" + "end_point" "1309.379883 -5479.276367 -26.821182" + "end_dist" "324.451355" + "horde_limit" "180" + } + "c10m5_houseboat" + { + "start_point" "2019.751953 4538.839844 -34.821182" + "start_dist" "76.933571" + "start_extra_dist" "317.183868" + "end_point" "3805.135254 -4660.525391 -151.968750" + "end_dist" "795.922058" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c11m1_greenhouse" + { + "start_point" "6753.771484 -534.288940 804.342407" + "start_dist" "65.117729" + "start_extra_dist" "577.638000" + "end_point" "5274.120605 2715.548584 88.261955" + "end_dist" "314.896759" + "max_distance" "300" + } + "c11m2_offices" + { + "start_point" "5295.039062 2718.428467 88.261955" + "start_dist" "60.237633" + "start_extra_dist" "333.408081" + "end_point" "7934.695801 6070.557617 48.318222" + "end_dist" "310.929138" + "max_distance" "600" + } + "c11m3_garage" + { + "start_point" "-5393.304199 -3161.442627 48.318222" + "start_dist" "56.400623" + "start_extra_dist" "304.760986" + "end_point" "-343.016815 3583.830566 332.031250" + "end_dist" "187.318344" + } + "c11m4_terminal" + { + "start_point" "-326.099091 3588.496338 277.327820" + "start_dist" "63.233967" + "start_extra_dist" "206.287918" + "end_point" "3276.041992 4504.324707 181.974670" + "end_dist" "343.399078" + "max_distance" "500" + } + "c11m5_runway" + { + "start_point" "-6726.473145 12007.691406 181.974670" + "start_dist" "75.086731" + "start_extra_dist" "344.831299" + "end_point" "-5196.772949 9229.695312 -191.968750" + "end_dist" "538.437988" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c12m1_hilltop" + { + "start_point" "-7888.898926 -14891.244141 337.681976" + "start_dist" "88.897858" + "start_extra_dist" "753.082764" + "end_point" "-6468.546387 -6767.946777 377.974670" + "end_dist" "275.937225" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "57" + "max_distance" "300" + } + "c12m2_traintunnel" + { + "start_point" "-6472.856445 -6769.449707 377.974670" + "start_dist" "78.032898" + "start_extra_dist" "270.500549" + "end_point" "-870.702148 -10408.813477 -63.968750" + "end_dist" "261.087494" + "max_distance" "400" + } + "c12m3_bridge" + { + "start_point" "-870.702148 -10415.481445 -63.968750" + "start_dist" "71.034355" + "start_extra_dist" "264.843231" + "end_point" "7754.335938 -11443.834961 440.031250" + "end_dist" "264.020966" + "tank_ban_flow_min" "70" + "tank_ban_flow_max" "100" + "max_distance" "400" + "horde_limit" "90" + } + "c12m4_barn" + { + "start_point" "7755.584961 -11443.834961 440.031250" + "start_dist" "85.814095" + "start_extra_dist" "264.932068" + "end_point" "10398.775391 -310.353424 2.031253" + "end_dist" "316.505157" + "max_distance" "400" + "horde_limit" "60" + } + "c12m5_cornfield" + { + "start_point" "10399.091797 -312.162628 2.031253" + "start_dist" "97.089050" + "start_extra_dist" "315.198547" + "end_point" "6972.038086 1354.824463 274.312256" + "end_dist" "183.031281" + "tank_ban_flow_min" "80" + "tank_ban_flow_max" "100" + "ItemLimits" + { + "pain_pills" "0" + } + } + "c13m1_alpinecreek" + { + "start_point" "-3046.889648 -705.233765 75.031250" + "start_dist" "75.765724" + "start_extra_dist" "437.938110" + "end_point" "1186.061401 -1247.817627 389.251373" + "end_dist" "604.894531" + } + "c13m2_southpinestream" + { + "start_point" "8691.102539 7056.350586 533.251343" + "start_dist" "80.806526" + "start_extra_dist" "604.901245" + "end_point" "470.932892 8823.397461 -368.968750" + "end_dist" "324.996063" + } + "c13m3_memorialbridge" + { + "start_point" "-4194.461914 -5143.972168 132.031250" + "start_dist" "77.191292" + "start_extra_dist" "321.877747" + "end_point" "6097.708496 -6337.365234 422.031250" + "end_dist" "356.709808" + } + "c13m4_cutthroatcreek" + { + "start_point" "-3374.723633 -9166.667969 396.031250" + "start_dist" "84.812645" + "start_extra_dist" "349.184357" + "end_point" "-1823.846191 -1815.961670 -250.417389" + "end_dist" "254.989624" + } + "c5m1_darkwaterfront" + { + "start_point" "735.921692 732.535217 -481.968750" + "start_dist" "57.458103" + "start_extra_dist" "804.191406" + "end_point" "-4351.050293 -1135.742554 -343.968750" + "end_dist" "591.145630" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "38" + "max_distance" "300" + } + "c5m2_darkpark" + { + "start_point" "-4331.847656 -1132.059937 -343.968750" + "start_dist" "90.058136" + "start_extra_dist" "604.716553" + "end_point" "-9823.082031 -8162.369141 -220.767731" + "end_dist" "487.969635" + } + "c5m3_darkcemetery" + { + "start_point" "6304.688477 8218.079102 35.232285" + "start_dist" "85.487289" + "start_extra_dist" "492.614685" + "end_point" "7466.641113 -9682.580078 139.226273" + "end_dist" "402.227936" + "tank_ban_flow_min" "50" + "tank_ban_flow_max" "70" + } + "c5m4_darkquarter" + { + "start_point" "-3064.031494 4778.493164 103.226173" + "start_dist" "75.451675" + "start_extra_dist" "404.631805" + "end_point" "1585.341553 -3387.864502 483.226257" + "end_dist" "591.899353" + "tank_ban_flow_min" "80" + "tank_ban_flow_max" "100" + } + "c5m5_darkbridge" + { + "start_point" "-11922.366211 5976.044922 547.226318" + "start_dist" "95.325073" + "start_extra_dist" "270.602844" + "end_point" "3015.024414 6265.400391 494.284149" + "end_dist" "149.938278" + "max_distance" "500" + } + "cdta_01detour" + { + "start_point" "-581.311157 4279.300293 129.100113" + "start_dist" "460.836548" + "start_extra_dist" "566.889465" + "end_point" "-2013.103882 -3279.305176 144.031250" + "end_dist" "276.152161" + } + "cdta_02road" + { + "start_point" "-3986.539551 -467.070282 -111.968750" + "start_dist" "180.229767" + "start_extra_dist" "285.327118" + "end_point" "-4824.578125 -7661.144043 566.031250" + "end_dist" "393.489532" + "horde_limit" "120" + } + "cdta_03warehouse" + { + "start_point" "-4868.136719 -7658.532715 566.031250" + "start_dist" "152.838638" + "start_extra_dist" "386.233795" + "end_point" "9837.693359 -12491.964844 776.031250" + "end_dist" "245.495361" + "tank_ban_flow_min" "55" + "tank_ban_flow_max" "78" + } + "cdta_04onarail" + { + "start_point" "-11160.266602 2500.985107 656.031250" + "start_dist" "248.178223" + "start_extra_dist" "251.028473" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "28" + "max_distance" "700" + } + "cdta_05finalroad" + { + "start_point" "-11259.937500 -12213.681641 1048.943604" + "start_dist" "191.200378" + "start_extra_dist" "269.938385" + "end_point" "-12561.050781 -11283.779297 985.953308" + "end_dist" "245.495361" + "tank_ban_flow_min" "1" + "tank_ban_flow_max" "70" + } + "l4d_deathaboard01_prison" + { + "start_point" "1172.334229 3525.726318 264.031250" + "start_dist" "359.071625" + "start_extra_dist" "854.892578" + "end_point" "1024.260742 -708.012878 -511.968750" + "end_dist" "437.646271" + } + "l4d_deathaboard02_yard" + { + "start_point" "583.303711 2430.031250 128.031250" + "start_dist" "193.628845" + "start_extra_dist" "414.816742" + "end_point" "2265.425537 386.693542 -231.968750" + "end_dist" "422.613495" + } + "l4d_deathaboard03_docks" + { + "start_point" "-699.597900 -135.347733 -95.968750" + "start_dist" "213.407654" + "start_extra_dist" "445.357971" + "end_point" "7204.936523 1781.486450 268.031250" + "end_dist" "129.135315" + "tank_ban_flow_min" "25" + "tank_ban_flow_max" "50" + } + "l4d_deathaboard04_ship" + { + "start_point" "-1490.525269 705.338257 32.031250" + "start_dist" "143.486145" + "start_extra_dist" "95.611107" + "end_point" "3464.061279 -922.227356 -263.968750" + "end_dist" "229.138062" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "40" + } + "l4d_deathaboard05_light" + { + "start_point" "-2383.999756 -2986.743652 88.031250" + "start_dist" "185.257492" + "start_extra_dist" "194.090973" + "ItemLimits" + { + "pain_pills" "0" + } + } + "l4d_ihm01_forest" + { + "start_point" "-1832.194580 152.090195 41.045280" + "start_dist" "228.211761" + "start_extra_dist" "387.249268" + "end_point" "1704.728271 -8333.527344 87.642601" + "end_dist" "247.891632" + } + "l4d_ihm02_manor" + { + "start_point" "601.349548 2955.968750 175.381592" + "start_dist" "207.611847" + "start_extra_dist" "237.150528" + "end_point" "-3221.213867 2582.877197 171.136597" + "end_dist" "250.894577" + } + "l4d_ihm03_underground" + { + "start_point" "8803.642578 -297.364868 35.136597" + "start_dist" "155.457993" + "start_extra_dist" "263.341949" + "end_point" "3271.968750 7977.582031 -2256.968750" + "end_dist" "335.011475" + } + "l4d_ihm04_lumberyard" + { + "start_point" "-10009.968750 -10641.541992 -177.968750" + "start_dist" "140.137665" + "start_extra_dist" "329.797272" + "end_point" "2004.079468 1037.415161 -188.618408" + "end_dist" "304.708099" + "max_distance" "600" + } + "l4d_ihm05_lakeside" + { + "start_point" "-684.040649 -4216.978027 -17.616570" + "start_dist" "170.021622" + "start_extra_dist" "346.297455" + "end_point" "5840.246094 9788.924805 60.349205" + "end_dist" "540.438049" + "ItemLimits" + { + "pain_pills" "0" + } + } + "bloodtracks_01" + { + "start_point" "3633.225098 9182.102539 305.031250" + "start_dist" "100.137680" + "start_extra_dist" "974.442017" + "end_point" "2489.081055 1259.860107 598.031250" + "end_dist" "279.215881" + } + "bloodtracks_02" + { + "end_point" "5533.325195 -7508.791016 -2049.168701" + "end_dist" "345.644775" + "start_point" "9041.178711 5355.283203 -2477.968750" + "start_dist" "78.584602" + "start_extra_dist" "264.419159" + } + "bloodtracks_03" + { + "start_point" "-6291.274414 9638.728516 -2755.968750" + "start_dist" "76.679153" + "start_extra_dist" "130.744766" + "end_point" "3956.997559 -4572.921875 -3026.025391" + "end_dist" "114.179108" + } + "bloodtracks_04" + { + "start_point" "3746.593018 -4707.327637 -3026.025391" + "start_dist" "113.105247" + "start_extra_dist" "216.522690" + "end_point" "4238.532715 -11658.243164 -2224.328857" + "end_dist" "1521.507202" + "ItemLimits" + { + "pain_pills" "0" + } + } + "cwm1_intro" + { + "start_point" "2012.118164 -2094.778809 18.982275" + "start_dist" "114.916298" + "start_extra_dist" "277.567169" + "end_point" "-1740.397949 9428.968750 437.031250" + "end_dist" "180.474869" + "max_distance" "400" + } + "cwm2_warehouse" + { + "start_point" "-1672.171265 -3640.306885 323.366241" + "start_dist" "88.376144" + "start_extra_dist" "265.292664" + "end_point" "9135.749023 5400.031250 -109.017723" + "end_dist" "225.499374" + "tank_ban_flow_min" "72" + "tank_ban_flow_max" "99" + "max_distance" "700" + "horde_limit" "90" + } + "cwm3_drain" + { + "start_point" "-1866.161865 88.182999 -349.017731" + "start_dist" "111.862396" + "start_extra_dist" "159.655685" + "end_point" "3538.319580 -2976.031250 29.974674" + "end_dist" "245.566330" + "max_distance" "600" + } + "cwm4_building" + { + "start_point" "729.522034 796.603210 -114.025330" + "start_dist" "99.067696" + "start_extra_dist" "330.218414" + "end_point" "950.599304 91.748909 1784.017456" + "end_dist" "1904.152710" + "max_distance" "700" + } + "l4d2_stadium1_apartment" + { + "start_point" "-350.822113 1008.031250 35.031250" + "start_dist" "106.649513" + "start_extra_dist" "410.564026" + "end_point" "6162.972168 -814.121765 -3936.968750" + "end_dist" "133.006638" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "45" + "max_distance" "400" + } + "l4d2_vs_stadium2_riverwalk" + { + "start_point" "-1329.243530 332.547577 -194.968750" + "start_dist" "88.429596" + "start_extra_dist" "149.953766" + "end_point" "524.056885 10057.031250 -806.850220" + "end_dist" "264.000458" + "max_distance" "600" + } + "l4d2_stadium3_city1" + { + "start_point" "1509.655640 6670.499512 -392.850189" + "start_dist" "70.232407" + "start_extra_dist" "162.199844" + "end_point" "6849.338867 6643.520020 -390.850189" + "end_dist" "298.808014" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "40" + "max_distance" "500" + } + "l4d2_stadium4_city2" + { + "start_point" "544.368713 -645.999207 -390.850189" + "start_dist" "106.220863" + "start_extra_dist" "259.126312" + "end_point" "-8466.472656 7044.023438 -334.468750" + "end_dist" "642.662781" + "max_distance" "600" + } + "l4d2_stadium5_stadium" + { + "start_point" "7589.871094 -5110.670898 12.781250" + "start_dist" "169.033142" + "start_extra_dist" "349.691711" + "end_point" "-8753.460938 -3717.820068 407.562927" + "end_dist" "2375.248535" + "max_distance" "700" + } + "l4d2_city17_01" + { + "start_point" "4062.740234 -5380.488770 -84.985329" + "start_dist" "133.048111" + "start_extra_dist" "334.703857" + "end_point" "1821.018677 -243.278412 140.031250" + "end_dist" "202.679367" + } + "l4d2_city17_02" + { + "start_point" "812.839783 2429.771729 52.031250" + "start_dist" "51.261543" + "start_extra_dist" "90.044106" + "end_point" "3584.326904 4702.048340 2152.031250" + "end_dist" "192.458542" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "80" + } + "l4d2_city17_03" + { + "start_point" "3964.807617 773.953186 0.031250" + "start_dist" "116.445244" + "start_extra_dist" "185.011871" + "end_point" "-7720.420410 2617.992676 -143.968750" + "end_dist" "149.220322" + "tank_ban_flow_min" "55" + "tank_ban_flow_max" "68" + } + "l4d2_city17_04" + { + "start_point" "-1784.939697 1920.992554 -127.968750" + "start_dist" "102.841270" + "start_extra_dist" "248.606247" + "end_point" "-8148.830078 5653.411133 34.031250" + "end_dist" "167.384216" + "tank_ban_flow_min" "25" + "tank_ban_flow_max" "68" + } + "l4d2_city17_05" + { + "start_point" "10037.169922 12202.440430 -631.864746" + "start_dist" "79.219292" + "start_extra_dist" "103.749420" + "end_point" "12230.234375 8827.060547 -551.968750" + "end_dist" "2195.812500" + "ItemLimits" + { + "pain_pills" "0" + } + } + "hf01_theforest" + { + "start_point" "-10749.938477 4779.373535 0.445169" + "start_dist" "212.760223" + "start_extra_dist" "261.492371" + "end_point" "-256.969452 -6424.031250 -196.863403" + "end_dist" "301.782318" + } + "hf02_thesteeple" + { + "start_point" "3307.178223 733.893616 34.136597" + "start_dist" "126.926369" + "start_extra_dist" "354.287750" + "end_point" "-2980.672607 -7486.620605 -191.968750" + "end_dist" "267.900513" + "horde_limit" "90" + } + "hf03_themansion" + { + "start_point" "2892.050049 507.968750 -53.968750" + "start_dist" "144.722931" + "start_extra_dist" "123.490318" + "end_point" "-3424.100586 1176.238281 440.031250" + "end_dist" "389.248535" + } + "hf04_escape" + { + "start_point" "121.300797 -15342.977539 -136.968750" + "start_dist" "161.615570" + "start_extra_dist" "409.378784" + "end_point" "1585.235596 8390.712891 -1028.968750" + "end_dist" "885.892273" + } + "ddg1_tower_v1_6" + { + "start_point" "274.642731 -719.995789 -224.017731" + "start_dist" "95.810226" + "start_extra_dist" "131.129135" + "end_point" "-6693.599121 -7526.025391 1069.340332" + "end_dist" "452.745697" + } + "ddg2_gristmill_v1_5" + { + "start_point" "-8199.602539 -11649.031250 1286.361938" + "start_dist" "153.030640" + "start_extra_dist" "111.767357" + "end_point" "-10563.800781 -537.866882 1622.086182" + "end_dist" "372.963531" + } + "ddg3_bluff_v1_5" + { + "start_point" "-1061.709961 -640.968750 -361.913879" + "start_dist" "90.773743" + "start_extra_dist" "122.307701" + "end_point" "1241.002563 4694.170898 1920.031250" + "end_dist" "1227.881958" + "ItemLimits" + { + "pain_pills" "0" + } + } + "l4d_dbd2dc_anna_is_gone" + { + "start_point" "3325.206787 -2614.453857 39.508949" + "start_dist" "112.968796" + "start_extra_dist" "357.132141" + "end_point" "2948.021729 7602.731445 -604.782043" + "end_dist" "142.267410" + "max_distance" "400" + } + "l4d_dbd2dc_the_mall" + { + "start_point" "-1018.316406 -2429.388672 -860.782043" + "start_dist" "203.891953" + "start_extra_dist" "577.908813" + "end_point" "137.894608 5129.338867 -637.909546" + "end_dist" "464.308899" + "max_distance" "600" + } + "l4d_dbd2dc_clean_up" + { + "start_point" "-365.654816 3180.702148 -636.909546" + "start_dist" "128.250610" + "start_extra_dist" "244.648331" + "end_point" "-2060.603027 6556.208496 -671.968750" + "end_dist" "286.359802" + "max_distance" "700" + } + "l4d_dbd2dc_undead_center" + { + "start_point" "-1953.168945 6571.233887 -671.968750" + "start_dist" "100.454994" + "start_extra_dist" "188.167191" + "end_point" "-7367.650391 8434.535156 -671.968750" + "end_dist" "365.062012" + "max_distance" "700" + } + "l4d_dbd2dc_new_dawn" + { + "start_point" "-3574.833740 2068.519531 -1279.968750" + "start_dist" "132.993073" + "start_extra_dist" "306.183685" + "end_point" "-463.786469 876.165771 -243.441345" + "end_dist" "1558.433960" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "70" + "max_distance" "800" + } + "uf1_boulevard" + { + "start_point" "-232.634720 -1984.366577 351.766357" + "start_dist" "95.445610" + "start_extra_dist" "220.139542" + "end_point" "-264.031250 8712.565430 -27.968758" + "end_dist" "268.509125" + } + "uf2_rooftops" + { + "start_point" "-1160.010376 -1646.275513 -27.968758" + "start_dist" "122.857811" + "start_extra_dist" "203.035721" + "end_point" "696.980591 8058.962891 0.031250" + "end_dist" "164.379135" + "tank_ban_flow_min" "60" + "tank_ban_flow_max" "100" + } + "uf3_harbor" + { + "start_point" "-255.164536 -10224.962891 0.031250" + "start_dist" "88.981186" + "start_extra_dist" "148.034637" + "end_point" "1857.567749 5826.479980 -3.932751" + "end_dist" "513.700989" + } + "uf4_airfield" + { + "start_point" "-3001.363525 1736.132202 28.067249" + "start_dist" "172.756744" + "start_extra_dist" "123.117989" + "end_point" "-697.423767 -182.836334 214.806290" + "end_dist" "1754.263794" + } + "l4d_149_1" + { + "start_point" "-1462.563477 -1781.392212 82.864456" + "start_dist" "146.754852" + "start_extra_dist" "241.007614" + "end_point" "1011.257202 -496.456573 -1408.878540" + "end_dist" "353.211945" + "tank_ban_flow_min" "30" + "tank_ban_flow_max" "62" + } + "l4d_149_2" + { + "start_point" "1030.149048 -459.791870 -1408.746948" + "start_dist" "82.774239" + "start_extra_dist" "229.293549" + "end_point" "7697.099609 5412.605469 -1288.989502" + "end_dist" "116.960152" + } + "l4d_149_3" + { + "start_point" "7692.622070 5411.134766 -1288.989502" + "start_dist" "108.442497" + "start_extra_dist" "209.354187" + "end_point" "9071.968750 1457.948853 -1434.025269" + "end_dist" "269.195496" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "75" + } + "l4d_149_4" + { + "start_point" "9071.881836 1483.660034 -1434.025269" + "start_dist" "128.356369" + "start_extra_dist" "218.735062" + "end_point" "6017.462402 -3480.372070 -1356.947998" + "end_dist" "146.841553" + "tank_ban_flow_min" "45" + "tank_ban_flow_max" "85" + } + "l4d_149_5" + { + "start_point" "6015.885742 -3480.465576 -1356.947998" + "start_dist" "95.855858" + "start_extra_dist" "391.300476" + "end_point" "8174.469238 -8135.983887 -2077.968750" + "end_dist" "1143.486694" + "ItemLimits" + { + "pain_pills" "0" + } + } + "eu01_residential_b16" + { + "start_point" "2261.835449 -2570.114990 771.031250" + "start_dist" "101.935509" + "start_extra_dist" "204.105286" + "end_point" "-8.031250 3685.870850 -404.742737" + "end_dist" "300.281189" + } + "eu02_castle_b16" + { + "start_point" "3094.181152 -3318.096680 -52.742722" + "start_dist" "134.198914" + "start_extra_dist" "189.860016" + "end_point" "-799.900696 2543.301758 -1549.968750" + "end_dist" "286.437347" + "tank_ban_flow_min" "55" + "tank_ban_flow_max" "100" + } + "eu03_oldtown_b16" + { + "start_point" "2015.968750 622.096680 98.149147" + "start_dist" "117.347237" + "start_extra_dist" "181.326752" + "end_point" "-4968.265137 4014.010254 -639.663879" + "end_dist" "233.640030" + } + "eu04_freeway_b16" + { + "start_point" "-9778.779297 2336.001709 -703.663879" + "start_dist" "92.092087" + "start_extra_dist" "263.408325" + "end_point" "-809.301636 -2075.790283 112.058319" + "end_dist" "274.439819" + } + "eu05_train_b16" + { + "start_point" "-800.569214 -2073.149658 112.058319" + "start_dist" "97.496170" + "start_extra_dist" "183.146271" + "end_point" "-2326.152588 -481.388062 -391.968750" + "end_dist" "1371.141602" + "ItemLimits" + { + "pain_pills" "0" + } + } + "srocchurch" + { + "start_point" "1084.297607 2462.667236 168.901855" + "start_dist" "205.314194" + "start_extra_dist" "1489.374390" + "end_point" "-2698.415771 -4883.087402 96.336136" + "end_dist" "321.482483" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "25" + "max_distance" "400" + } + "plaza_espana" + { + "start_point" "-8173.943848 -8988.014648 96.336136" + "start_dist" "124.527382" + "start_extra_dist" "113.680771" + "end_point" "-1100.709839 -8383.968750 -242.025330" + "end_dist" "236.288925" + "max_distance" "600" + "horde_limit" "90" + } + "maria_cristina" + { + "start_point" "-10153.728516 6304.031250 -142.025330" + "start_dist" "89.510788" + "start_extra_dist" "193.511887" + "end_point" "-8628.766602 -7242.274902 576.063660" + "end_dist" "278.292633" + "max_distance" "600" + "horde_limit" "90" + } + "mnac" + { + "start_point" "9040.031250 12497.177734 -4450.115234" + "start_dist" "150.790268" + "start_extra_dist" "96.800598" + "end_point" "7171.526855 -2417.946289 -1053.332031" + "end_dist" "1572.107178" + "max_distance" "800" + } + "jsarena201_town" + { + "start_point" "497.707031 -1611.576416 62.031250" + "end_point" "3112.440430 -594.903381 145.031250" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + } + "jsarena202_alley" + { + "start_point" "5414.663086 716.187561 145.031250" + "end_point" "-491.261719 471.349823 676.031250" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "35" + "tank_ban_flow_max" "70" + } + "jsarena203_roof" + { + "start_point" "3418.395264 3229.471436 674.031250" + "end_point" "-888.021973 474.375458 668.247681" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "72" + "tank_ban_flow_max" "99" + "max_distance" "600" + } + "jsarena204_arena" + { + "start_point" "4937.140137 -155.900192 668.247681" + "end_point" "-849.202332 -976.774170 531.078735" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "86" + "tank_ban_flow_max" "99" + } + "versus_1" + { + "start_point" "3422.058838 9965.772461 -1884.943359" + "end_point" "2661.990234 8446.703125 -1942.863403" + "start_dist" "25.000000" + "start_extra_dist" "225.000000" + "end_dist" "25.000000" + "tank_ban_flow_min" "84" + "tank_ban_flow_max" "99" + "max_distance" "400" + } + "versus_2" + { + "start_point" "2641.317627 8449.403320 -1942.863403" + "end_point" "8799.020508 2727.134033 -1466.025269" + "start_dist" "25.000000" + "start_extra_dist" "225.000000" + "end_dist" "25.000000" + "max_distance" "500" + } + "versus_3" + { + "start_point" "8792.213867 2715.910156 -1466.025269" + "end_point" "12202.734375 5155.361816 -1410.185425" + "start_dist" "25.000000" + "start_extra_dist" "250.000000" + "end_dist" "75.000000" + "max_distance" "600" + "tank_ban_flow_min" "30" + "tank_ban_flow_max" "78" + } + "versus_4" + { + "start_point" "12214.042969 5164.038574 -1410.825195" + "end_point" "9295.207031 -4650.206543 1218.068481" + "start_dist" "75.000000" + "start_extra_dist" "250.000000" + "end_dist" "100.000000" + "tank_ban_flow_min" "1" + "tank_ban_flow_max" "70" + "max_distance" "700" + } + "l4d2_bts01_forest" + { + "start_point" "4130.246582 -9368.455078 6046.454590" + "end_point" "-9542.071289 -2564.294922 5714.157227" + "start_dist" "50.000000" + "start_extra_dist" "300.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "1" + "tank_ban_flow_max" "50" + } + "l4d2_bts02_station" + { + "start_point" "4991.999023 -2604.749023 2771.566650" + "end_point" "-6369.087891 577.145386 2749.982178" + "start_dist" "50.000000" + "start_extra_dist" "300.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "1" + "tank_ban_flow_max" "40" + } + "l4d2_bts03_town" + { + "start_point" "2696.533936 -2262.290771 96.982269" + "end_point" "-2715.990479 5399.455566 -215.312866" + "start_dist" "50.000000" + "start_extra_dist" "300.000000" + "end_dist" "100.000000" + "max_distance" "800" + } + "l4d2_bts04_cinema" + { + "start_point" "-8031.139160 -1851.702393 4013.227051" + "end_point" "-2319.806885 -3634.134033 3992.008057" + "start_dist" "100.000000" + "start_extra_dist" "250.000000" + "end_dist" "100.000000" + } + "l4d2_bts05_church" + { + "start_point" "-2326.687500 -3631.203125 3991.338135" + "end_point" "8629.720703 6720.044434 3758.387695" + "start_dist" "100.000000" + "start_extra_dist" "350.000000" + "end_dist" "75.000000" + "max_distance" "800" + } + "l4d2_bts06_school" + { + "start_point" "-186.529556 -9786.741211 361.911438" + "end_point" "92.987526 676.283325 669.281250" + "start_dist" "250.000000" + "start_extra_dist" "350.000000" + "end_dist" "100.000000" + } + "AirCrash" + { + "start_point" "-2894.737061 832.790588 62.031250" + "end_point" "10004.405273 -3347.849121 442.031250" + "start_dist" "50.000000" + "start_extra_dist" "700.000000" + "end_dist" "100.000000" + } + "RiverMotel" + { + "start_point" "-4466.333984 6039.489746 -242.968750" + "end_point" "-7504.548828 -8078.171387 -417.226288" + "start_dist" "80.000000" + "start_extra_dist" "225.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "20" + "tank_ban_flow_max" "55" + } + "OutSkirts" + { + "start_point" "-1410.445923 1065.465820 103.773918" + "end_point" "-7270.211426 -1249.545410 -168.968750" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "180.000000" + } + "CityHall" + { + "start_point" "9595.025391 9285.395508 -441.968750" + "end_point" "5001.468750 -3361.346924 -873.968750" + "start_dist" "180.000000" + "start_extra_dist" "320.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "35" + "tank_ban_flow_max" "72" + "max_distance" "800" + } + "BombShelter" + { + "start_point" "895.680847 263.351044 -361.775330" + "end_point" "273.041870 -4326.456543 -411.968750" + "start_dist" "150.000000" + "start_extra_dist" "900.000000" + "end_dist" "75.000000" + } + "l4d2_diescraper1_apartment_361" + { + "start_point" "9000.979492 7243.940430 831.974670" + "end_point" "10251.913086 4722.644531 52.338150" + "start_dist" "50.000000" + "start_extra_dist" "400.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "30" + "tank_ban_flow_max" "50" + } + "l4d2_diescraper2_streets_361" + { + "start_point" "10250.208008 4723.329590 70.338150" + "end_point" "256.697845 144.240356 2.031250" + "start_dist" "50.000000" + "start_extra_dist" "350.000000" + "end_dist" "50.000000" + "horde_limit" "90" + } + "l4d2_diescraper3_mid_361" + { + "start_point" "286.949280 145.143188 -1841.968750" + "end_point" "-14.215425 -485.376556 510.031250" + "start_dist" "50.000000" + "start_extra_dist" "200.000000" + "end_dist" "50.000000" + "horde_limit" "60" + } + "l4d2_diescraper4_top_361" + { + "start_point" "-10.403743 -485.376556 -497.968750" + "end_point" "1307.318848 3.531982 -68.582138" + "start_dist" "50.000000" + "start_extra_dist" "400.000000" + "end_dist" "50.000000" + } + "damitdc1" + { + "start_point" "1733.933838 11597.541016 -606.293701" + "end_point" "-983.111633 -4413.025879 -1257.968750" + "start_dist" "80.000000" + "start_extra_dist" "270.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "30" + "tank_ban_flow_max" "50" + "max_distance" "600" + } + "damitdc2" + { + "start_point" "-990.591675 -4410.679199 -1257.968750" + "end_point" "-2508.393555 1425.824219 -839.968750" + "start_dist" "50.000000" + "start_extra_dist" "450.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "75" + "max_distance" "500" + } + "damitdc3" + { + "start_point" "-2506.914063 1422.134155 -839.968750" + "end_point" "-1643.718018 3088.899414 674.281250" + "start_dist" "50.000000" + "start_extra_dist" "350.000000" + "end_dist" "150.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "45" + "max_distance" "700" + } + "damitdc4" + { + "start_point" "-1649.614258 3086.075684 674.281250" + "end_point" "-3019.174805 -2739.631104 1150.908936" + "start_dist" "150.000000" + "start_extra_dist" "300.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "70" + } + "l4d_tbm_1" + { + "start_point" "5953.716797 -10323.491211 164.946655" + "end_point" "-4719.364258 -7518.160156 606.232300" + "start_dist" "75.000000" + "start_extra_dist" "1200.000000" + "end_dist" "50.000000" + } + "l4d_tbm_2" + { + "start_point" "-4716.017090 -7516.337891 606.232300" + "end_point" "4613.727539 3761.413574 107.974670" + "start_dist" "50.000000" + "start_extra_dist" "125.000000" + "end_dist" "75.000000" + "tank_ban_flow_min" "52" + "tank_ban_flow_max" "88" + "max_distance" "600" + "horde_limit" "60" + } + "l4d_tbm_3" + { + "start_point" "4616.124023 -846.119324 107.974670" + "end_point" "1119.971069 8550.123047 510.031250" + "start_dist" "75.000000" + "start_extra_dist" "350.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "60" + "tank_ban_flow_max" "80" + "max_distance" "500" + "horde_limit" "60" + } + "l4d_tbm_4" + { + "start_point" "-12124.754883 -9292.593750 -161.968750" + "end_point" "6286.219238 8830.492188 -605.968750" + "start_dist" "50.000000" + "start_extra_dist" "300.000000" + "end_dist" "75.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "25" + "max_distance" "700" + } + "l4d_tbm_5" + { + "start_point" "436.830170 -4734.862793 1026.031250" + "end_point" "7580.302734 4824.854004 381.113770" + "start_dist" "75.000000" + "start_extra_dist" "250.000000" + "end_dist" "100.000000" + "tank_ban_flow_min" "50" + "tank_ban_flow_max" "100" + "max_distance" "600" + } + "l4d2_fallindeath01" + { + "start_point" "214.333710 -1407.492676 222.812622" + "end_point" "-4109.611328 4095.184082 374.066864" + "start_dist" "100.000000" + "start_extra_dist" "150.000000" + "end_dist" "100.000000" + "max_distance" "500" + "max_distance" "500" + } + + "l4d2_fallindeath02" + { + "start_point" "-4109.611328 342.256897 382.066864" + "end_point" "11485.612305 7981.953613 506.440613" + "start_dist" "100.000000" + "start_extra_dist" "175.000000" + "end_dist" "50.000000" + "max_distance" "500" + } + "l4d2_fallindeath03" + { + "start_point" "-4568.857910 116.963791 59.737034" + "end_point" "5344.410645 -3423.376465 1587.031250" + "start_dist" "50.000000" + "start_extra_dist" "350.000000" + "end_dist" "50.000000" + "max_distance" "600" + } + "l4d2_fallindeath04" + { + "start_point" "-642.819702 -1240.376587 -960.968750" + "end_point" "-99.351852 922.977234 326.031250" + "start_dist" "50.000000" + "start_extra_dist" "325.000000" + "end_dist" "50.000000" + "max_distance" "800" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "40" + } + "l4d2_daybreak01_hotel" + { + "start_point" "90.343987 0.308769 62.031250" + "end point" "7032.421875 11570.696289 -700.968750" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "250.000000" + "max_distance" "500" + } + "l4d2_daybreak02_coastline" + { + "start_point" "-12713.225586 -11746.325195 235.031250" + "end point" "-1623.365356 3938.154541 454.031250" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + } + "l4d2_daybreak03_bridge" + { + "start_point" "-9400.212891 381.715149 -6131.968750" + "end point" "7837.872559 -1757.597534 -5001.968750" + "start_dist" "50.000000" + "start_extra_dist" "150.000000" + "end_dist" "250.000000" + } + "l4d2_daybreak04_cruise" + { + "start_point" "-7698.556152 -4633.521484 -5001.968750" + "end point" "1737.531982 -8322.154297 -6465.968750" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "50.000000" + "tank_ban_flow_min" "35" + "tank_ban_flow_max" "60" + "max_distance" "600" + } + "l4d2_daybreak05_rescue" + { + "start_point" "7626.222656 12266.819336 -6465.968750" + "end point" "5934.712891 6175.033203 -4417.968750" + "start_dist" "50.000000" + "start_extra_dist" "250.000000" + "end_dist" "150.000000" + "max_distance" "800" + } + "l4d2_ff04_plant" + { + "tank_ban_flow_min" "56" + "tank_ban_flow_max" "99" + "horde_limit" "200" + } + "c14m1_junkyard" + { + "start_point" "-4255.190918 -10576.644531 -267.087708" + "start_dist" "50.000000" + "start_extra_dist" "500.000000" + "end_point" "-2992.162842 10403.122070 -92.863403" + "end_dist" "350.000000" + } + "c14m2_lighthouse" + { + "start_point" "2369.292969 -986.074829 483.136597" + "start_dist" "50.000000" + "start_extra_dist" "350.000000" + "end_point" "-4318.968750 3638.318115 872.031250" + "end_dist" "500.000000" + "tank_ban_flow_min" "0" + "tank_ban_flow_max" "40" + } +} diff --git a/cfg/cfgogl/surfmod/notes.txt b/cfg/cfgogl/surfmod/notes.txt new file mode 100644 index 00000000..6bab4750 --- /dev/null +++ b/cfg/cfgogl/surfmod/notes.txt @@ -0,0 +1,14 @@ +// [l4d2_playstats.smx] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 +//AUTO_MVPCHAT_ROUND 1 // chat: mvp for this round +//AUTO_MVPCON_ROUND 4 // console table: mvp this round +//AUTO_MVPCON_TANK 16 // console table: tankfight stats (this round) +//AUTO_FFCON_ROUND 32 // friendly fire +//AUTO_SKILLCON_ROUND 128 // special 'skill' stats: skeets, crowns, etc +//AUTO_ACCCON_ROUND 512 // accuracy general stats +//AUTO_ACCCON_MORE_ROUND 2048 // accuracy stats on SI / tank hits +//AUTO_FUNFACT_ROUND 8192 // fun fact, relevant to the round +//AUTO_MVPCON_MORE_ROUND 32768 // console table: more mvp stats, time alive, etc +//AUTO_INFCON_ROUND 131072 // console table: infected team stats diff --git a/cfg/cfgogl/surfmod/shared_cvars.cfg b/cfg/cfgogl/surfmod/shared_cvars.cfg new file mode 100644 index 00000000..0561bcdb --- /dev/null +++ b/cfg/cfgogl/surfmod/shared_cvars.cfg @@ -0,0 +1,268 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// Server Cvars +sv_pure 0 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 +confogl_addcvar sv_visiblemaxplayers 32 +confogl_addcvar mp_allowspectators 1 +confogl_addcvar director_min_start_players 1 +confogl_addcvar sv_cheats 0 +confogl_addcvar sv_voiceenable 1 +confogl_addcvar sv_alltalk 1 +confogl_addcvar motd_enabled 1 +confogl_addcvar versus_force_start_time 10 +confogl_addcvar versus_marker_num 0 +confogl_addcvar vs_survival_bonus 25 +confogl_addcvar vs_incap_bonus 25 +confogl_addcvar vs_defib_penalty 0 +confogl_addcvar vs_tiebreak_bonus 25 +confogl_addcvar changelevel_pause_interval 12 +confogl_addcvar versus_round_restarttimer 20 +confogl_addcvar versus_round_restarttimer_finale 20 +confogl_addcvar sv_pz_endgame_vote_period 20 +confogl_addcvar sv_pz_endgame_vote_post_period 10 +confogl_addcvar sv_vote_kick_ban_duration 0 +confogl_addcvar sv_noclipduringpause 0 +confogl_addcvar l4d2_addons_eclipse -1 + +// ReadyUp Cvars +l4d_ready_enabled 1 +confogl_addcvar l4d_ready_disable_spawns 0 +confogl_addcvar l4d_ready_survivor_freeze 0 +confogl_addcvar l4d_ready_max_players 33 +confogl_addcvar l4d_ready_delay 3 +confogl_addcvar l4d_ready_force_extra 0 +confogl_addcvar l4d_ready_enable_sound 1 +confogl_addcvar l4d_ready_chuckle 1 +confogl_addcvar l4d_ready_secret 1 +confogl_addcvar l4d_ready_live_sound "ui/survival_medal.wav" +confogl_addcvar l4d_ready_unbalanced_start 1 +confogl_addcvar l4d_ready_unbalanced_min 3 +confogl_addcvar coinflip_delay -1 +confogl_addcvar teamflip_delay -1 + +// Config Cvars +confogl_match_execcfg_off "confogl_off.cfg" // Execute this config file upon match mode ends. +confogl_match_execcfg_on "confogl.cfg" // Execute this config file upon match mode starts. +confogl_match_killlobbyres "1" // Sets whether the plugin will clear lobby reservation once a match have begun. +confogl_match_restart "1" // Sets whether the plugin will restart the map upon match mode being forced or requested. + +// Confogl Cvars +confogl_addcvar confogl_boss_tank "0" // Tank cant be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player. +confogl_addcvar confogl_boss_unprohibit "0" // Enable bosses spawning on all maps, even through they normally arent allowed. +confogl_addcvar confogl_lock_boss_spawns "1" // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales). +confogl_addcvar confogl_remove_escape_tank "1" // Removes tanks which spawn as the rescue vehicle arrives on finales. +confogl_addcvar confogl_disable_tank_hordes "1" // Disables natural hordes while tanks are in play. +confogl_addcvar confogl_block_punch_rock "1" // Block tanks from punching and throwing a rock at the same time. +confogl_addcvar confogl_blockinfectedbots "0" // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank). +confogl_addcvar confogl_ghost_warp "0" // Sets whether infected ghosts can right click for warp to next survivor. +confogl_addcvar confogl_disable_ghost_hurt "1" // Prevents ghost infected from dying when falling into water or off c1m1_hotel. +confogl_addcvar confogl_remove_inf_clips "1" // Removes all infected clip brushes. This fixes tanks getting stuck on Dark Carnival 5 and allows a bit more area for infected to spawn on a few maps. +confogl_addcvar confogl_remove_c5m4_hurts "1" // Removes nonlethal explosion hurt triggers from c5m4_quarter, including some for up to 50 damage. +confogl_addcvar confogl_reduce_finalespawnrange "1" // Adjust the spawn range on finales for infected, to normal spawning range. +confogl_addcvar confogl_remove_parachutist "0" // Removes the parachutist (and his items) from c3m2_swamp. +confogl_addcvar confogl_remove_chainsaw "0" // Remove all chainsaws. +confogl_addcvar confogl_remove_defib "0" // Remove all defibrillators. +confogl_addcvar confogl_remove_grenade "1" // Remove all grenade launchers. +confogl_addcvar confogl_remove_m60 "1" // Remove all M60 rifles. +confogl_addcvar confogl_remove_lasersight "0" // Remove all laser sight upgrades. +confogl_addcvar confogl_remove_saferoomitems "0" // Remove all extra items inside saferooms (items for slot 3, 4 and 5, minus medkits). +confogl_addcvar confogl_remove_upg_explosive "1" // Remove all explosive upgrade packs. +confogl_addcvar confogl_remove_upg_incendiary "0" // Remove all incendiary upgrade packs. +confogl_addcvar confogl_replace_cssweapons "0" // Replace CSS weapons with normal L4D2 weapons. +confogl_addcvar confogl_replace_startkits "0" // Replace medkits at mission start with pain pills. +confogl_addcvar confogl_replace_finalekits "1" // Replace medkits during finale with pain pills. +confogl_addcvar confogl_waterslowdown "1" // Sets whether water will slowdown the survivors by another 10%. +confogl_addcvar confogl_enable_itemtracking "1" // Enable the itemtracking module, which controls and limits item spawns. Item Limits will be read from Cvars and mapinfo.txt, with preferences to mapinfo settings. +confogl_addcvar confogl_itemtracking_savespawns "1" // Keep item spawns the same on both rounds. Item spawns will be remembered from round1 and reproduced on round 2. +confogl_addcvar confogl_itemtracking_mapspecific "3" // Allow ConVar limits to be overridden by mapinfo.txt limits. +confogl_addcvar confogl_adrenaline_limit "4" // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_pipebomb_limit "6" // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_molotov_limit "4" // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_vomitjar_limit "4" // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +confogl_addcvar confogl_SM_enable "0" // Enable the health bonus style scoring. +confogl_addcvar confogl_replace_tier2 0 +confogl_addcvar confogl_replace_tier2_finale 0 +confogl_addcvar confogl_replace_tier2_all 0 +confogl_addcvar confogl_limit_tier2 0 +confogl_addcvar confogl_limit_tier2_saferoom 0 + +// Balancing Cvars +// confogl_addcvar director_cs_weapon_spawn_chance 0.5 +confogl_addcvar director_per_map_weapon_upgrade_chance 0.5 +confogl_addcvar director_convert_pills 1 +confogl_addcvar director_vs_convert_pills 1.0 +// confogl_addcvar director_convert_pills_critical_health 0 +// confogl_addcvar director_convert_pills_to_defib_health 0 +confogl_addcvar sv_fallen_survivor_health_multiplier 1.0 +confogl_addcvar z_fallen_kill_suppress_time 60 +// confogl_addcvar sv_infected_riot_control_tonfa_probability 0.25 +// confogl_addcvar sv_infected_police_tonfa_probability 0.25 +confogl_addcvar sv_infected_ceda_vomitjar_probability 0.05 +confogl_addcvar sv_force_time_of_day 0 +// confogl_addcvar director_always_allow_wanderers 1 +confogl_addcvar nav_lying_down_percent 0 +confogl_addcvar z_must_wander 1 +// confogl_addcvar survivor_incapacitated_dizzy_severity 0 +// confogl_addcvar survivor_incapacitated_dizzy_timer 5 +confogl_addcvar survivor_incapacitated_accuracy_penalty 0.05 +// confogl_addcvar survivor_incapacitated_cycle_time 0.283333 + +// Competitive Cvars +confogl_addcvar ammo_shotgun_max 112 +confogl_addcvar ammo_smg_max 850 +confogl_addcvar ammo_huntingrifle_max 135 +confogl_addcvar ammo_chainsaw_max 30 +// confogl_addcvar z_gun_range 80 +// confogl_addcvar z_gun_swing_duration 0.183333 +confogl_addcvar z_gun_swing_vs_min_penalty 4 +confogl_addcvar z_gun_swing_vs_max_penalty 8 +// confogl_addcvar inferno_max_range 250 +confogl_addcvar vomitjar_radius 300 +// confogl_addcvar vomitjar_duration_infected_pz 30 +// confogl_addcvar vomitjar_duration_infected_bot 30 +// confogl_addcvar ammo_pack_use_duration 1.5 +// confogl_addcvar upgrade_pack_use_duration 1.5 +confogl_addcvar upgrade_laser_sight_spread_factor 0.5 +confogl_addcvar player_throwforce 2250 +// confogl_addcvar z_gun_damage 5 +confogl_addcvar fuel_barrel_health 10 +// confogl_addcvar ladder_autocenter 1 + +// AI Improvements +confogl_addcvar sb_allow_leading 1 +// confogl_addcvar z_leap_interval_post_ride 5.75 +// confogl_addcvar z_leap_interval_post_incap 15 +confogl_addcvar z_leap_power 425 +// confogl_addcvar z_jockey_control_min 0.8 +// confogl_addcvar z_jockey_control_max 1.0 +// confogl_addcvar z_jockey_control_variance 0.0 +// confogl_addcvar claw_range 60 +// confogl_addcvar claw_range_down 80 +// confogl_addcvar claw_swing_duration 0.2 +confogl_addcvar jockey_pz_claw_dmg 4 +confogl_addcvar z_exploding_shove_min 3 +confogl_addcvar z_exploding_shove_max 3 +confogl_addcvar z_exploding_shove_interval 4 +// confogl_addcvar z_exploding_inner_radius 200 +confogl_addcvar z_exploding_outer_radius 200 +confogl_addcvar z_exploding_force 1000 +confogl_addcvar z_charger_max_prop_force 1000 +confogl_addcvar boomer_pz_claw_dmg 6 +confogl_addcvar gas_can_use_duration 1.75 +// confogl_addcvar action_progress_reset_interval 0.5 +confogl_addcvar gascan_spit_time 2.75 +// confogl_addcvar scavenge_item_respawn_delay 10 +confogl_addcvar cola_bottles_use_duration 1.5 +confogl_addcvar sv_gameinstructor_disable 1 +confogl_addcvar ai_talk_idle_enabled 0 +// confogl_addcvar z_cough_cloud_radius 150 +// confogl_addcvar z_cough_cloud_initial_cough_delay 0 +// confogl_addcvar z_cough_cloud_expire 6 +confogl_addcvar spitter_pz_claw_dmg 4 +confogl_addcvar tongue_miss_delay 2.75 +confogl_addcvar tongue_hit_delay 11 +confogl_addcvar smoker_pz_claw_dmg 6 +// confogl_addcvar z_holiday_gift_drop_chance 1.0 +// confogl_addcvar z_breakable_damage 25 +// confogl_addcvar z_door_pound_damage 1000 +// confogl_addcvar z_pounce_door_damage 1000 +// confogl_addcvar z_charge_prop_damage 1000 +// confogl_addcvar z_pounce_crouch_delay 0.9 +confogl_addcvar z_lunge_power 600 +// confogl_addcvar z_pounce_damage_delay 0.0 +// confogl_addcvar z_pounce_stumble_radius 150 +confogl_addcvar hunter_pz_claw_dmg 8 +// confogl_addcvar versus_shove_hunter_fov 90 +// confogl_addcvar versus_shove_hunter_fov_pouncing 45 +confogl_addcvar tongue_health 200 +confogl_addcvar tongue_range 850 +confogl_addcvar tongue_fly_speed 1050 +// confogl_addcvar tongue_victim_acceleration 10 +// confogl_addcvar tongue_victim_max_speed 200 +// confogl_addcvar tongue_victim_accuracy_penalty 0 +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +// confogl_addcvar survivor_incap_tongued_decay_rate 20 +confogl_addcvar tongue_release_fatigue_penalty 2500 +// confogl_addcvar z_vomit_duration 1.25 +// confogl_addcvar z_vomit_fatigue 2001 +confogl_addcvar z_max_stagger_duration 0.75 +confogl_addcvar sv_gravity 735 +// confogl_addcvar fall_speed_safe 540 +// confogl_addcvar fall_speed_fatal 720 +confogl_addccar survivor_incap_max_fall_damage 200 +// confogl_addcvar z_discard_range 2000 +// confogl_addcvar z_discard_min_range 0 +confogl_addcvar sb_max_team_melee_weapons 4 +// confogl_addcvar z_charge_warmup 0.5 +confogl_addcvar z_charge_max_speed 500 +confogl_addcvar z_charge_duration 2.4 +confogl_addcvar charger_pz_claw_dmg 8 + +// AI Improvement Cvars +confogl_addcvar director_allow_infected_bots 0 +// confogl_addcvar z_minion_limit 4 +confogl_addcvar z_vomit_velocity 2000 +confogl_addcvar z_spitter_range 900 +confogl_addcvar tongue_cone_start_tolerance 1.0 +// confogl_addcvar tongue_vs_cone_start_tolerance 0.02 +// confogl_addcvar z_hunter_ground_normal 0.1 +// confogl_addcvar hunter_pounce_ready_range 800 +// confogl_addcvar hunter_committed_attack_range 600 +confogl_addcvar hunter_leap_away_give_up_range 2000 +// confogl_addcvar hunter_pounce_loft_rate 0.03 +// confogl_addcvar jockey_pounce_loft_rate 0.03 + +// Tank/Witch Cvars +confogl_addcvar versus_tank_chance 1.0 +confogl_addcvar versus_tank_chance_intro 1.0 +confogl_addcvar versus_tank_chance_finale 1.0 +confogl_addcvar versus_tank_flow_team_variation 0.0 +confogl_addcvar versus_witch_chance 1.0 +confogl_addcvar versus_witch_chance_intro 1.0 +confogl_addcvar versus_witch_chance_finale 1.0 +confogl_addcvar versus_witch_flow_team_variation 0.0 +confogl_addcvar versus_boss_flow_min 0.20 +confogl_addcvar versus_boss_flow_max 0.80 +confogl_addcvar versus_boss_flow_min_intro 0.25 +confogl_addcvar versus_boss_flow_max_intro 0.80 +confogl_addcvar versus_boss_flow_min_finale 0.30 +confogl_addcvar versus_boss_flow_max_finale 0.80 +confogl_addcvar versus_boss_padding_min 0.0 +confogl_addcvar versus_boss_padding_max 0.1 + +confogl_addcvar tank_stuck_time_suicide 86400 +confogl_addcvar tank_stuck_visibility_tolerance_suicide 86400 +confogl_addcvar director_tank_lottery_selection_time 4 +confogl_addcvar z_frustration_spawn_delay 10 +confogl_addcvar z_frustration_lifetime 20 +// confogl_addcvar z_frustration_los_delay 0.5 +confogl_addcvar tankcontrol_print_all 1 +// confogl_addcvar tank_ground_pound_duration 2 +confogl_addcvar z_tank_health 4667 +// confogl_addcvar z_tank_attack_interval 1.45 +// confogl_addcvar tank_swing_interval 1.45 +// confogl_addcvar tank_swing_duration 0.2 +// confogl_addcvar tank_fist_radius 16 +// confogl_addcvar tank_throw_allow_range 600 +// confogl_addcvar tank_throw_loft_rate 0.015 +// confogl_addcvar z_tank_throw_health 50 +// confogl_addcvar z_tank_rock_radius 96 +confogl_addcvar z_tank_throw_force 825 +confogl_addcvar tank_burn_duration 90 +confogl_addcvar phys_pushscale 1.0 +confogl_addcvar tank_swing_physics_prop_force 3.0 +confogl_addcvar car_alarm_distance 900 + +// Stripper Path +// confogl_addcvar stripper_cfg_path cfg/stripper/numbersmod diff --git a/cfg/cfgogl/surfmod/shared_plugins.cfg b/cfg/cfgogl/surfmod/shared_plugins.cfg new file mode 100644 index 00000000..f173cbf2 --- /dev/null +++ b/cfg/cfgogl/surfmod/shared_plugins.cfg @@ -0,0 +1,116 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +//------------------------ +// Sourcemod Basic Plugins +//------------------------ +sm plugins load basebans.smx +sm plugins load basecommands.smx +sm plugins load basecomm.smx +sm plugins load admin-flatfile.smx +sm plugins load adminhelp.smx +sm plugins load adminmenu.smx +sm plugins load funcommands.smx +sm plugins load playercommands.smx +sm plugins load funvotes.smx + +//---------------------------------- +// General Competitive Plugins +//---------------------------------- +sm plugins load optional/ghost_hurt.smx +sm plugins load optional/blockheatseekingchargers.smx +sm plugins load optional/blocktrolls.smx +sm plugins load optional/bossspawningfix.smx +sm plugins load optional/coinflip.smx +sm plugins load optional/8ball.smx +sm plugins load optional/current.smx +sm plugins load optional/finalefix.smx +sm plugins load optional/l4d2_nobhaps.smx +sm plugins load optional/l4d2_nospitterduringtank.smx +sm plugins load optional/boomer_horde_equalizer_refactored.smx +sm plugins load optional/l4d2_saferoom_detect.smx +sm plugins load optional/l4d2_setscores.smx +sm plugins load optional/l4d2_spec_stays_spec.smx +sm plugins load optional/l4d2_unsilent_jockey.smx +sm plugins load optional/l4d2_weaponrules.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_getup_slide_fix.smx +sm plugins load optional/l4d2_charger_getup_fix.smx +sm plugins load optional/l4d_bash_kills.smx +sm plugins load optional/l4d_jockey_ledgehang.smx +sm plugins load optional/l4d_pounceprotect.smx +sm plugins load optional/l4d_stuckzombiemeleefix.smx +sm plugins load optional/l4d_tank_damage_announce.smx +sm plugins load optional/lerpmonitor.smx +sm plugins load optional/nosaferoomkits.smx +sm plugins load optional/pill_passer.smx +sm plugins load optional/ratemonitor.smx +sm plugins load optional/rock_stumble_block.smx +sm plugins load optional/smart_ai_rock.smx +sm plugins load optional/starting_items.smx +sm plugins load optional/teamflip.smx +sm plugins load optional/temphealthfix.smx + +//---------------------- +// Equilibrium Plugins +//---------------------- +sm plugins load optional/l4d2_drop_secondary.smx +sm plugins load optional/l4d2_m2_control_eq.smx +sm plugins load optional/l4d2_nosecondchances.smx +sm plugins load optional/l4d2_si_staggers.smx +sm plugins load optional/l4d2_spitblock.smx +sm plugins load optional/l4d2_slowdown_control.smx +sm plugins load optional/l4d_tank_painfade.smx +sm plugins load optional/l4d_texture_manager_block.smx + +//---------------------- +// EQ3 / Acemod / ZoneMod +//---------------------- +sm plugins load optional/l4d_tankpunchstuckfix.smx +sm plugins load optional/checkpoint-rage-control.smx +sm plugins load optional/l4d2_tank_attack_control.smx +sm plugins load optional/l4d2_tank_announce.smx +sm plugins load optional/l4d2_bw_rock_hit.smx +sm plugins load optional/l4d2_tank_damage_cvars.smx +sm plugins load optional/fix_engine.smx +sm plugins load optional/l4d2_collision_adjustments.smx +sm plugins load optional/l4d2_stats.smx + +//---------------------- +// Static shotgun spread +//---------------------- +sm plugins load optional/l4d2_weapon_attributes.smx +sm plugins load optional/l4d2_static_shotgun_spread.smx + +//--------------------------------------------- +// Merged FF Plugins, needs to be loaded here +//--------------------------------------------- +sm plugins load optional/l4d2_godframes_control_merge.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_hittable_control.smx + +//--------------------------- +// Matchmaking Plugins +//--------------------------- +sm plugins load optional/readyup.smx +sm plugins load optional/l4d_tank_control_eq.smx +sm plugins load optional/cfg_motd.smx +sm plugins load optional/l4d_boss_percent.smx +sm plugins load optional/l4d_boss_vote.smx +sm plugins load optional/caster_system.smx +sm plugins load optional/caster_assister.smx +sm plugins load optional/pause.smx +sm plugins load optional/panel_text.smx +sm plugins load optional/spechud.smx +sm plugins load optional/slots_vote.smx +sm plugins load optional/witch_and_tankifier.smx + +// Letzzzz go. +sm plugins load confoglcompmod.smx +sm plugins load match_vote.smx diff --git a/cfg/cfgogl/surfmod/shared_settings.cfg b/cfg/cfgogl/surfmod/shared_settings.cfg new file mode 100644 index 00000000..f0e3e61a --- /dev/null +++ b/cfg/cfgogl/surfmod/shared_settings.cfg @@ -0,0 +1,280 @@ + +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [starting_items.smx] +//give adren? (1: Kit, 2: Defib, 4: Pills, 8: Adren, 16: Pipebomb, 32: Molotov, 64: Bile +confogl_addcvar starting_item_flags 1 + +// [fix_engine.smx] +confogl_addcvar engine_fix_flags 12 + +// [panel_text.smx] +sm_addreadystring " " +sm_lockstrings + +// [checkpoint-rage-control.smx] +confogl_addcvar crc_global 1 + +// [l4d2_ghost_warp.smx] +confogl_addcvar l4d2_ghost_warp_flag 0 // Enable ghost warp with command only 'sm_warp' +confogl_addcvar l4d2_ghost_warp_delay 0 + +// [l4d_static_punch_getup.smx] +confogl_addcvar tank_punch_getup_scale 0.333333 // 54 frames / 30 fps * 0.25 = 0.6s + +// [ghost_hurt.smx] +confogl_addcvar ghost_hurt_type 1 + +// [l4d2_nosecondchances.smx] +confogl_addcvar bot_kick_delay 0 + +// [bossspawningfix.smx] +confogl_addcvar l4d_obey_boss_spawn_cvars 1 +confogl_addcvar l4d_obey_boss_spawn_except_static 1 + +// [l4d_bash_kills.smx] +confogl_addcvar l4d_no_bash_kills 1 + +// [l4d_jockey_ledgehang.smx] +confogl_addcvar z_leap_interval_post_ledge_hang 12 + +// [l4d_tank_damage_announce.smx] +confogl_addcvar l4d_tankdamage_enabled 1 + +// [l4d2_tank_attack_control.smx] +confogl_addcvar l4d2_block_punch_rock 1 +confogl_addcvar l4d2_block_jump_rock 1 +confogl_addcvar tank_overhand_only 0 + +// [l4d_tank_painfade.smx] +confogl_addcvar l4d_tank_painfade 1 +confogl_addcvar l4d_tank_painfade_duration 300 +confogl_addcvar l4d_tank_painfade_flags 8 + +// [l4d2_slowdown_control.smx] +confogl_addcvar z_tank_speed 220 +confogl_addcvar z_tank_speed_vs 220 +confogl_addcvar z_tank_damage_slow_max_range 32 +confogl_addcvar z_tank_damage_slow_min_range 32 +confogl_addcvar l4d2_slowdown_gunfire_si 0 +confogl_addcvar l4d2_slowdown_gunfire_tank 0 +confogl_addcvar l4d2_slowdown_water_tank 180 +confogl_addcvar l4d2_slowdown_water_survivors 180 +confogl_addcvar l4d2_slowdown_water_survivors_during_tank 180 + +// [l4d2_tank_props_glow.smx] +confogl_addcvar sv_tankpropfade 1 +confogl_addcvar l4d_tank_props_glow 1 +confogl_addcvar l4d2_tank_prop_glow_color "255 255 255" +confogl_addcvar l4d2_tank_prop_glow_range 2147483647 +confogl_addcvar l4d2_tank_prop_glow_range_min 0 +confogl_addcvar l4d2_tank_prop_glow_only 0 +confogl_addcvar l4d2_tank_prop_glow_spectators 1 +confogl_addcvar l4d2_tank_prop_dissapear_time 5 +confogl_addcvar l4d_ammo_spawn_glow_color "255 255 255" + +// [l4d2_pickup.smx] +confogl_addcvar l4d2_usecount 2147483647 +confogl_addcvar pickup_switch_flags 2 +confogl_addcvar pickup_incap_flags 2 + +// [l4d2_spitblock.smx] + +// Official Campaigns +spit_block_square c4m2_sugarmill_a -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c4m3_sugarmill_b -1411.940430 -9491.997070 -1545.875244 -9602.097656 // In the elevator. +spit_block_square c5m3_cemetery 4160 333.04 4297 291.01 // At the drop into the sewer. + +// [l4d2_godframes_control.smx] +confogl_addcvar gfc_hittable_override 1 +confogl_addcvar gfc_hittable_rage_override 1 +confogl_addcvar gfc_rock_rage_override 1 +confogl_addcvar gfc_spit_extra_time 0 +confogl_addcvar gfc_common_extra_time 0 +confogl_addcvar gfc_hunter_duration 0 +confogl_addcvar gfc_jockey_duration 0 +confogl_addcvar gfc_smoker_duration 0 +confogl_addcvar gfc_charger_duration 0.5 +confogl_addcvar gfc_long_charger_duration 1 +confogl_addcvar gfc_common_zc_flags 9 +confogl_addcvar gfc_spit_zc_flags 6 +confogl_addcvar gfc_godframe_glows 1 +confogl_addcvar gfc_ff_min_time 2 +confogl_addcvar gfc_witch_override 1 + +// [l4d2_uniform_spit.smx] +confogl_addcvar l4d2_spit_dmg 2 +confogl_addcvar l4d2_spit_alternate_dmg 2 + +// [l4d2_m2_control.smx] +confogl_addcvar z_max_hunter_pounce_stagger_duration 1 +confogl_addcvar l4d2_m2_hunter_penalty 4 +confogl_addcvar l4d2_m2_jockey_penalty 4 +confogl_addcvar l4d2_m2_smoker_penalty 2 + +// [l4d2_hittable_control.smx] +confogl_addcvar hc_bridge_car_damage 50 +confogl_addcvar hc_stadium_car_damage 50 +confogl_addcvar hc_broken_forklift_standing_damage 100 +confogl_addcvar hc_sflog_standing_damage 100 +confogl_addcvar hc_bhlog_standing_damage 100 +confogl_addcvar hc_handtruck_standing_damage 50 +confogl_addcvar hc_car_standing_damage 100 +confogl_addcvar hc_bumpercar_standing_damage 100 +confogl_addcvar hc_forklift_standing_damage 100 +confogl_addcvar hc_dumpster_standing_damage 100 +confogl_addcvar hc_haybale_standing_damage 100 +confogl_addcvar hc_baggage_standing_damage 100 +confogl_addcvar hc_incap_standard_damage -2 +confogl_addcvar hc_disable_self_damage 1 +confogl_addcvar hc_overhit_time 1.375 +confogl_addcvar hc_unbreakable_forklifts 1 + +// [l4d2_si_staggers.smx] +confogl_addcvar l4d2_disable_si_friendly_staggers 2 + +// [l4d2_unsilent_jockey.smx] +confogl_addcvar sm_unsilentjockey_enabled 1 +confogl_addcvar sm_unsilentjockey_always 1 +confogl_addcvar sm_unsilentjockey_time 2 + +// [l4d2_weaponrules.smx] +l4d2_addweaponrule smg smg +l4d2_addweaponrule smg_silenced smg_silenced +l4d2_addweaponrule smg_mp5 smg_mp5 +l4d2_addweaponrule pumpshotgun pumpshotgun +l4d2_addweaponrule shotgun_chrome shotgun_chrome +l4d2_addweaponrule rifle smg +l4d2_addweaponrule rifle_sg552 smg +l4d2_addweaponrule rifle_ak47 smg_silenced +l4d2_addweaponrule rifle_desert smg_mp5 +l4d2_addweaponrule autoshotgun pumpshotgun +l4d2_addweaponrule shotgun_spas shotgun_chrome +l4d2_addweaponrule hunting_rifle pumpshotgun +l4d2_addweaponrule sniper_military shotgun_chrome +l4d2_addweaponrule sniper_awp smg_silenced +l4d2_addweaponrule sniper_scout smg_mp5 +l4d2_addweaponrule grenade_launcher chainsaw +l4d2_addweaponrule rifle_m60 chainsaw +l4d2_addweaponrule knife baseball_bat +l4d2_addweaponrule upgradepack_explosive upgradepack_incendiary +l4d2_addweaponrule defibrillator pain_pills + +// [l4d2_collision_adjustments.smx] +confogl_addcvar collision_tankrock_common 1 +confogl_addcvar collision_smoker_common 1 +confogl_addcvar collision_tankrock_incap 1 + +// [l4d_stuckpunchfix] +confogl_addcvar sm_punchstuckfix_unstucktime 0.5 +confogl_addcvar tpsf_debug_print 0 + +// [cfg_motd.smx] +confogl_addcvar sm_cfgmotd_title "surfmod 1.0" +confogl_addcvar sm_cfgmotd_url "http://bizzymod.com" + +///////////////////////////// +// [Static shotgun spread] // +///////////////////////////// + +// Apply binary patch +//codepatch_patch sgspread + +// Pistol settings +sm_weapon pistol deployduration 0.4 +sm_weapon pistol dualdeployduration 0.5 +sm_weapon pistol damage 40 +sm_weapon pistol rangemod 0.9 + +// Magnum settings +sm_weapon pistol_magnum deployduration 0.4 +sm_weapon pistol_magnum dualdeployduration 0.5 +sm_weapon pistol_magnum damage 90 +sm_weapon pistol_magnum rangemod 0.9 + +// SMG settings +sm_weapon smg damage 24 +sm_weapon smg rangemod 0.9 +sm_weapon smg_silenced damage 26 +sm_weapon smg_silenced rangemod 0.85 +sm_weapon smg_mp5 damage 28 +sm_weapon smg_mp5 rangemod 0.9 + +// Pump settings +sm_weapon pumpshotgun scatterpitch 6 +sm_weapon pumpshotgun scatteryaw 6 +sm_weapon pumpshotgun damage 20 +sm_weapon pumpshotgun bullets 16 +sm_weapon pumpshotgun rangemod 0.8 + +// Chrome settings +sm_weapon shotgun_chrome scatterpitch 5 +sm_weapon shotgun_chrome scatteryaw 5 +sm_weapon shotgun_chrome damage 25 +sm_weapon shotgun_chrome bullets 12 +sm_weapon shotgun_chrome rangemod 0.85 + +// First ring settings +// confogl_addcvar sgspread_ring1_bullets 6 +// confogl_addcvar sgspread_ring1_factor 4 +// confogl_addcvar sgspread_center_pellet 0 + +// [l4d2_shotgun_ff.smx] +confogl_addcvar l4d2_shotgun_ff_multi 0.5 +confogl_addcvar l4d2_shotgun_ff_min 1 +confogl_addcvar l4d2_shotgun_ff_max 4 + +/////////////////// +// [Boss tweaks] // +/////////////////// + +// Static Tank maps / flow Tank disabled +static_tank_map c1m4_atrium +static_tank_map c4m5_milltown_escape +static_tank_map c5m5_bridge +static_tank_map c6m3_port +static_tank_map c7m1_docks +static_tank_map c7m3_port +static_tank_map c8m5_rooftop +static_tank_map c9m2_lots +static_tank_map c11m5_runway +static_tank_map c13m2_southpinestream +static_tank_map c13m14_cutthroatcreek +static_tank_map c14m2_lighthouse +static_tank_map l4d2_darkblood04_extraction +static_tank_map x1m5_salvation +static_tank_map uf4_airfield +static_tank_map dprm5_milltown_escape +static_tank_map l4d2_diescraper4_top_361 +static_tank_map dkr_m1_motel +static_tank_map dkr_m2_carnival +static_tank_map dkr_m3_tunneloflove +static_tank_map dkr_m4_ferris +static_tank_map dkr_m5_stadium + +// Static Witch Maps +static_witch_map c4m5_milltown_escape +static_witch_map c5m5_bridge +static_witch_map c6m1_riverbank +static_witch_map c6m3_port +static_witch_map c7m3_port +static_witch_map c13m4_cutthroatcreek + +// Finales with a single first event Tank +tank_map_only_first_event c5m5_bridge +tank_map_only_first_event c13m4_cutthroatcreek + +// Personalized settings +exec confogl_personalize.cfg + +// Confogl Additional +confogl_setcvars +confogl_resetclientcvars +sm_killlobbyres // Removes the lobby reservation cookie diff --git a/cfg/cfgogl/surfmod/surfmod.cfg b/cfg/cfgogl/surfmod/surfmod.cfg new file mode 100644 index 00000000..9eb1c855 --- /dev/null +++ b/cfg/cfgogl/surfmod/surfmod.cfg @@ -0,0 +1,56 @@ +// ======================================================================================= +// Surfmod +// Author: Bizzy +// Contributions: Moon +// License CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode) +// Version 6.9.420 +// https://github.com/draxios/bizzymod +// ======================================================================================= + +// [lerpmonitor.smx] +confogl_addcvar sm_allowed_lerp_changes 20 +confogl_addcvar sm_lerp_change_spec 1 +confogl_addcvar sm_readyup_lerp_changes 1 +confogl_addcvar sm_min_lerp 0.000000 +confogl_addcvar sm_max_lerp 0.500000 + +// [l4d_boss_percent.smx] +confogl_addcvar sm_tank_can_spawn 1 +confogl_addcvar sm_witch_can_spawn 1 +confogl_addcvar l4d_global_percent 0 +confogl_addcvar l4d_tank_percent 1 +confogl_addcvar l4d_witch_percent 1 +confogl_addcvar l4d_boss_vote 1 + +// [l4d2_nobhaps.smx] +confogl_addcvar simple_antibhop_enable 1 +confogl_addcvar bhop_allow_survivor 0 + +// [boomer_horde_equalizer_refactored.smx] +confogl_addcvar boomer_horde_equalizer 1 +confogl_addcvar boomer_horde_equalizer_events_default 1 +confogl_addcvar z_notice_it_range 2000 +boomer_horde_amount 1 10 // 10 Common spawned for the 1st Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 2 10 // 10 Common spawned for the 2nd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 3 10 // 10 Common spawned for the 3rd Survivor boomed + Wandering common in z_notice_it_range +boomer_horde_amount 4 10 // 10 Common spawned for the 4th Survivor boomed + Wandering common in z_notice_it_range + +// [autopause.smx] +confogl_addcvar autopause_enable 1 +confogl_addcvar autopause_force 1 +confogl_addcvar autopause_apdebug 0 + +// [l4d2_melee_shenanigans.smx] +confogl_addcvar l4d2_melee_drop_method 0 +confogl_addcvar l4d2_melee_tank_nerf 0 + +// [l4d2_playstats.smx + survivor_mvp] +confogl_addcvar sm_survivor_mvp_brevity 0 +confogl_addcvar sm_survivor_mvp_brevity_latest 111 +confogl_addcvar sm_stats_autoprint_vs_round 8372 + +// [l4d2_skill_detect.smx] +confogl_addcvar sm_skill_report_enable 1 + +// Shared Settings +wait 300;exec cfgogl/surfmod/shared_settings.cfg diff --git a/cfg/cfgogl/thundermod/shared_cvars.cfg b/cfg/cfgogl/thundermod/shared_cvars.cfg index 423053f3..2605259f 100644 --- a/cfg/cfgogl/thundermod/shared_cvars.cfg +++ b/cfg/cfgogl/thundermod/shared_cvars.cfg @@ -10,6 +10,9 @@ // Server Cvars sv_pure 2 sv_alltalk 0 +confogl_addcvar mv_maxplayers 31 +confogl_addcvar sv_maxplayers 31 +confogl_addcvar slots_max_slots 31 confogl_addcvar sv_cheats 0 confogl_addcvar sv_consistency 1 confogl_addcvar sv_pure_kick_clients 1 @@ -134,4 +137,4 @@ confogl_addcvar tank_ground_pound_duration 0.1 confogl_addcvar z_tank_health 5000 // Stripper Path -confogl_addcvar stripper_cfg_path cfg/stripper/thundermod \ No newline at end of file +confogl_addcvar stripper_cfg_path cfg/stripper/thundermod diff --git a/cfg/cfgogl/thundermod/thundermod.cfg b/cfg/cfgogl/thundermod/thundermod.cfg index 7d8a5e11..d26a0768 100644 --- a/cfg/cfgogl/thundermod/thundermod.cfg +++ b/cfg/cfgogl/thundermod/thundermod.cfg @@ -9,7 +9,7 @@ // [witch_and_tankifier.smx] confogl_addcvar sm_tank_can_spawn 1 -confogl_addcvar sm_witch_can_spawn 0 +confogl_addcvar sm_witch_can_spawn 1 // [l4d2_antibaiter.smx] confogl_addcvar l4d2_antibaiter_delay 15 @@ -33,7 +33,7 @@ confogl_addcvar bhop_except_si_flags 16 // only jockey // [autopause.smx] confogl_addcvar autopause_enable 1 -confogl_addcvar autopause_force 0 +confogl_addcvar autopause_force 1 confogl_addcvar autopause_apdebug 0 // [l4d_weapon_limits.smx] @@ -45,7 +45,7 @@ l4d_wlimits_add 0 1 weapon_hunting_rifle weapon_sniper_scout weapon_sniper_awp l4d_wlimits_lock // [l4d2_melee_shenanigans.smx] -confogl_addcvar l4d2_melee_drop_method 2 +confogl_addcvar l4d2_melee_drop_method 0 // [l4d2_playstats.smx + survivor_mvp] confogl_addcvar sm_survivor_mvp_brevity 0 diff --git a/cfg/cfgogl/zonemodX/confogl.cfg b/cfg/cfgogl/zonemodX/confogl.cfg index d2a6dce6..0b3014b5 100644 --- a/cfg/cfgogl/zonemodX/confogl.cfg +++ b/cfg/cfgogl/zonemodX/confogl.cfg @@ -11,19 +11,19 @@ l4d_ready_cfg_name "ZoneMod v2.5.1" // Confogl Cvars -confogl_addcvar mp_gamemode "versus" // Force Versus for the config. -confogl_addcvar z_difficulty "normal" // Force normal Difficulty to prevent co-op difficulty impacting the config. -confogl_addcvar confogl_pills_limit 2 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar mp_gamemode "Versus" // Force Versus for the config. +confogl_addcvar z_difficulty "Impossible" // Force normal Difficulty to prevent co-op difficulty impacting the config. +confogl_addcvar confogl_pills_limit 4 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value // ZoneMod 4v4 Cvars -confogl_addcvar z_common_limit 30 -confogl_addcvar z_ghost_delay_min 16 -confogl_addcvar z_ghost_delay_max 16 -confogl_addcvar z_mega_mob_size 50 -confogl_addcvar z_mob_spawn_min_size 15 -confogl_addcvar z_mob_spawn_max_size 15 -confogl_addcvar z_mob_spawn_min_interval_normal 3600 -confogl_addcvar z_mob_spawn_max_interval_normal 3600 +confogl_addcvar z_common_limit 40 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 confogl_addcvar z_jockey_ride_damage 1 confogl_addcvar z_jockey_ride_damage_interval 0.25 confogl_addcvar z_pounce_damage 2 @@ -31,13 +31,13 @@ confogl_addcvar z_pounce_damage_interval 0.2 confogl_addcvar hunter_pz_claw_dmg 6 confogl_addcvar tongue_drag_damage_amount 1 confogl_addcvar tongue_choke_damage_amount 1 -confogl_addcvar tongue_drag_first_damage_interval 1.0 -confogl_addcvar tongue_drag_first_damage 3.0 -confogl_addcvar tongue_drag_damage_interval 0.23 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +confogl_addcvar tongue_drag_damage_interval 0.2 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] confogl_addcvar tongue_choke_damage_interval 0.2 // ZoneMod Shared Cvars exec cfgogl/zonemodX/shared_cvars.cfg // Config Cvars -exec cfgogl/zonemodX/zonemod.cfg \ No newline at end of file +exec cfgogl/zonemodX/zonemod.cfg diff --git a/cfg/cfgogl/zonemodXX/confogl.cfg b/cfg/cfgogl/zonemodXX/confogl.cfg index cf9dbaa4..d92e559c 100644 --- a/cfg/cfgogl/zonemodXX/confogl.cfg +++ b/cfg/cfgogl/zonemodXX/confogl.cfg @@ -11,33 +11,33 @@ l4d_ready_cfg_name "ZoneMod v2.6.7" // Confogl Cvars -confogl_addcvar mp_gamemode "versus" // Force Versus for the config. -confogl_addcvar z_difficulty "normal" // Force normal Difficulty to prevent co-op difficulty impacting the config. -confogl_addcvar confogl_pills_limit 2 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value +confogl_addcvar mp_gamemode "Versus" // Force Versus for the config. +confogl_addcvar z_difficulty "Normal" // Force normal Difficulty to prevent co-op difficulty impacting the config. +confogl_addcvar confogl_pills_limit 4 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value // ZoneMod 4v4 Cvars -confogl_addcvar z_common_limit 30 -confogl_addcvar z_ghost_delay_min 17 -confogl_addcvar z_ghost_delay_max 17 +confogl_addcvar z_common_limit 40 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 confogl_addcvar z_mega_mob_size 50 -confogl_addcvar z_mob_spawn_min_size 15 -confogl_addcvar z_mob_spawn_max_size 15 -confogl_addcvar z_mob_spawn_min_interval_normal 3600 -confogl_addcvar z_mob_spawn_max_interval_normal 3600 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 confogl_addcvar z_jockey_ride_damage 1 -confogl_addcvar z_jockey_ride_damage_interval 0.25 +confogl_addcvar z_jockey_ride_damage_interval 0.2 confogl_addcvar z_pounce_damage 2 confogl_addcvar z_pounce_damage_interval 0.2 confogl_addcvar hunter_pz_claw_dmg 6 confogl_addcvar tongue_drag_damage_amount 1 confogl_addcvar tongue_choke_damage_amount 1 -confogl_addcvar tongue_drag_first_damage_interval 1.0 -confogl_addcvar tongue_drag_first_damage 3.0 -confogl_addcvar tongue_drag_damage_interval 0.23 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +confogl_addcvar tongue_drag_damage_interval 0.2 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] confogl_addcvar tongue_choke_damage_interval 0.2 // ZoneMod Shared Cvars exec cfgogl/zonemodXX/shared_cvars.cfg // Config Cvars -exec cfgogl/zonemodXX/zonemod.cfg \ No newline at end of file +exec cfgogl/zonemodXX/zonemod.cfg diff --git a/cfg/cfgogl/zonemodold/confogl.cfg b/cfg/cfgogl/zonemodold/confogl.cfg index 2af5dca2..c25feb7b 100644 --- a/cfg/cfgogl/zonemodold/confogl.cfg +++ b/cfg/cfgogl/zonemodold/confogl.cfg @@ -11,33 +11,33 @@ l4d_ready_cfg_name "Zonemod v1.9.16" // Confogl Cvars -confogl_addcvar mp_gamemode "versus" // Force Versus for the config. -confogl_addcvar z_difficulty "normal" // Force normal Difficulty to prevent co-op difficulty impacting the config. +confogl_addcvar mp_gamemode "Versus" // Force Versus for the config. +confogl_addcvar z_difficulty "Impossible" // Force normal Difficulty to prevent co-op difficulty impacting the config. confogl_addcvar confogl_pills_limit 2 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value // ZoneMod 4v4 Cvars -confogl_addcvar z_common_limit 30 +confogl_addcvar z_common_limit 40 confogl_addcvar z_ghost_delay_min 15 confogl_addcvar z_ghost_delay_max 15 -confogl_addcvar z_mega_mob_size 50 -confogl_addcvar z_mob_spawn_min_size 15 -confogl_addcvar z_mob_spawn_max_size 15 -confogl_addcvar z_mob_spawn_min_interval_normal 3600 -confogl_addcvar z_mob_spawn_max_interval_normal 3600 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 30 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 confogl_addcvar z_jockey_ride_damage 1 -confogl_addcvar z_jockey_ride_damage_interval 0.25 +confogl_addcvar z_jockey_ride_damage_interval 0.2 confogl_addcvar z_pounce_damage 2 confogl_addcvar z_pounce_damage_interval 0.2 confogl_addcvar hunter_pz_claw_dmg 6 confogl_addcvar tongue_drag_damage_amount 1 confogl_addcvar tongue_choke_damage_amount 1 -confogl_addcvar tongue_drag_first_damage_interval 1.0 -confogl_addcvar tongue_drag_first_damage 3.0 -confogl_addcvar tongue_drag_damage_interval 0.23 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +confogl_addcvar tongue_drag_damage_interval 0.2 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] confogl_addcvar tongue_choke_damage_interval 0.2 // ZoneMod Shared Cvars exec cfgogl/zonemodold/shared_cvars.cfg // Config Cvars -exec cfgogl/zonemodold/zonemod.cfg \ No newline at end of file +exec cfgogl/zonemodold/zonemod.cfg diff --git a/cfg/cfgogl/zonereal/confogl.cfg b/cfg/cfgogl/zonereal/confogl.cfg index 5f2d8deb..b7b64f95 100644 --- a/cfg/cfgogl/zonereal/confogl.cfg +++ b/cfg/cfgogl/zonereal/confogl.cfg @@ -11,33 +11,33 @@ l4d_ready_cfg_name "ZoneMod Realism 69.0" // Confogl Cvars -confogl_addcvar mp_gamemode "mutation12" -confogl_addcvar z_difficulty "normal" -confogl_addcvar confogl_pills_limit 2 +confogl_addcvar mp_gamemode "Mutation12" +confogl_addcvar z_difficulty "Normal" +confogl_addcvar confogl_pills_limit 4 // ZoneMod 4v4 Cvars -confogl_addcvar z_common_limit 30 -confogl_addcvar z_ghost_delay_min 16 -confogl_addcvar z_ghost_delay_max 16 -confogl_addcvar z_mega_mob_size 50 -confogl_addcvar z_mob_spawn_min_size 15 -confogl_addcvar z_mob_spawn_max_size 15 -confogl_addcvar z_mob_spawn_min_interval_normal 3600 -confogl_addcvar z_mob_spawn_max_interval_normal 3600 +confogl_addcvar z_common_limit 40 +confogl_addcvar z_ghost_delay_min 15 +confogl_addcvar z_ghost_delay_max 15 +confogl_addcvar z_mega_mob_size 60 +confogl_addcvar z_mob_spawn_min_size 10 +confogl_addcvar z_mob_spawn_max_size 40 +confogl_addcvar z_mob_spawn_min_interval_normal 120 +confogl_addcvar z_mob_spawn_max_interval_normal 240 confogl_addcvar z_jockey_ride_damage 1 -confogl_addcvar z_jockey_ride_damage_interval 0.25 +confogl_addcvar z_jockey_ride_damage_interval 0.2 confogl_addcvar z_pounce_damage 2 confogl_addcvar z_pounce_damage_interval 0.2 confogl_addcvar hunter_pz_claw_dmg 6 confogl_addcvar tongue_drag_damage_amount 1 confogl_addcvar tongue_choke_damage_amount 1 -confogl_addcvar tongue_drag_first_damage_interval 1.0 -confogl_addcvar tongue_drag_first_damage 3.0 -confogl_addcvar tongue_drag_damage_interval 0.23 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] +confogl_addcvar tongue_drag_first_damage_interval 0 +confogl_addcvar tongue_drag_first_damage 4 +confogl_addcvar tongue_drag_damage_interval 0.2 // 3 dps (same as vanilla) [l4d2_smoker_drag_damage_interval.smx] confogl_addcvar tongue_choke_damage_interval 0.2 // ZoneMod Shared Cvars exec cfgogl/zonereal/shared_cvars.cfg // Config Cvars -exec cfgogl/zonereal/zonereal.cfg \ No newline at end of file +exec cfgogl/zonereal/zonereal.cfg diff --git a/cfg/cheat.cfg b/cfg/cheat.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/cheat.cfg @@ -0,0 +1 @@ + diff --git a/cfg/client.cfg b/cfg/client.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/client.cfg @@ -0,0 +1 @@ + diff --git a/cfg/cmds.cfg b/cfg/cmds.cfg new file mode 100644 index 00000000..72916fe6 --- /dev/null +++ b/cfg/cmds.cfg @@ -0,0 +1,72 @@ +// A) . . . + +// B) . . . + +// C) . . . + +clear_debug_overlays +// cs_make_vip Moon +// cs_make_vip "STEAM_0:0:121253576" +// cs_make_vip "STEAM_0:1:121253576" +// cs_make_vip "STEAM_1:0:121253576" +// cs_make_vip "STEAM_1:1:121253576" + +// D) . . . + +// E) . . . + +// F) . . . + +fs_warning_level 0 + +// G) . . . + +// H) . . . + +// I) . . . + +// J) . . . + +// K) . . . + +// L) . . . + +log on + +// M) . . . + +maxplayers 32 +// mp_disable_autokick Moon +// mp_disable_autokick "STEAM_0:0:121253576" +// mp_disable_autokick "STEAM_0:1:121253576" +// mp_disable_autokick "STEAM_1:0:121253576" +// mp_disable_autokick "STEAM_1:1:121253576" + +// N) . . . + +// O) . . . + +// P) . . . + +// Q) . . . + +// R) . . . + +// S) . . . + +sv_clearhinthistory +sv_pure 0 + +// T) . . . + +// U) . . . + +// V) . . . + +// W) . . . + +// X) . . . + +// Y) . . . + +// Z) . . . diff --git a/cfg/common.cfg b/cfg/common.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/common.cfg @@ -0,0 +1 @@ + diff --git a/cfg/console.cfg b/cfg/console.cfg new file mode 100644 index 00000000..a6f9f1a6 --- /dev/null +++ b/cfg/console.cfg @@ -0,0 +1,201 @@ +// A) . . . + +// B) . . . + +// C) . . . + +cl_resend 1.5 +clear_debug_overlays +clientport 27005 +closecaption 1 +// cs_make_vip Moon +// cs_make_vip "STEAM_0:0:121253576" +// cs_make_vip "STEAM_0:1:121253576" +// cs_make_vip "STEAM_1:0:121253576" +// cs_make_vip "STEAM_1:1:121253576" + +// D) . . . + +// E) . . . + +engine_no_focus_sleep 0 + +// F) . . . + +fps_max 1000 +fs_warning_level 0 +func_break_max_pieces 30 + +// G) . . . + +// H) . . . + +host_flush_threshold 0 +host_framerate 0 +// host_map "" +host_xbox_e3_restart 1440 +hostfile myhost.txt +// hostip 1247506818 +hostname "Bizzy's Moonmod" +// hostport 27019 + +// I) . . . + +// ip 74.91.113.130 + +// J) . . . + +// K) . . . + +// L) . . . + +log on + +// M) . . . + +mat_monitorgamma 1.6 +mat_monitorgamma_tv_enabled 1 +mat_queue_mode 2 +mat_queue_report 0 +mat_spewalloc 0 +maxplayers 32 +mm_server_search_lan_ports 27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030 // ,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050 +motd_enabled 0 +motdfile mymotd.txt +// mp_disable_autokick Moon +// mp_disable_autokick "STEAM_0:0:121253576" +// mp_disable_autokick "STEAM_0:1:121253576" +// mp_disable_autokick "STEAM_1:0:121253576" +// mp_disable_autokick "STEAM_1:1:121253576" +mp_roundlimit 5 + +// N) . . . + +name V1 +name2 V2 +nb_debug_history 0 +nb_stuck_dump_threshold -1 +net_allow_multicast 1 +net_chan_limit_disabled 0 +net_chan_limit_in_debug_session 0 +net_chan_limit_msec 0 +net_chan_stats_dump 0 +net_chan_stats_dump_top_msgs 0 +net_chan_stats_lru 0 +net_maxroutable 1200 +// net_public_adr "" +net_showsplits 0 +net_showudp 0 +net_showudp_remoteonly 0 +net_splitpacket_maxrate 72000 +net_splitrate 2 +npc_height_adjust 1 + +// O) . . . + +// P) . . . + +// password "" + +// Q) . . . + +// R) . . . + +r_drawmodelstatsoverlaymax 2 +r_drawmodelstatsoverlaymin 1 +r_dynamic 1 +r_eyemove 1 +r_eyeshift_x 0.0 +r_eyeshift_y 0.0 +r_eyeshift_z 0.0 +r_eyesize 0.0 +rcon_password BigBizzy101 + +// S) . . . + +scene_showlook 0 +scene_showmoveto 0 +scene_showunlock 0 +sk_autoaim_mode 3 +skill 3 +spit_scaling_min_scale 1.0 +steam_controller_haptics 1 +suitvolume 10.0 +sv_allow_lobby_connect_only 0 +sv_allow_wait_command 1 +// sv_alltalk 1 +sv_alternateticks 1 +sv_banid_enabled 1 +// sv_cheats 0 +sv_clearhinthistory +sv_consistency 0 +sv_contact EricMizusawa02@gmail.com +sv_downloadurl bizzymod.com +sv_forcepreload 1 +sv_gametypes coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave, +sv_lan 0 +sv_log_onefile 1 +sv_logbans 1 +sv_logecho 1 +sv_logfile 1 +sv_logflush 0 +sv_logsdir logs +sv_maxcmdrate 120 +sv_maxrate 144000 +sv_mincmdrate 120 +sv_minrate 72000 +sv_noclipaccelerate 5 +sv_noclipspeed 3 +sv_password "" +sv_pausable 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_pure_trace 0 +sv_pvsskipanimation 1 +sv_quota_stringcmdspersecond 2147483647 +sv_rcon_banpenalty 0 +sv_rcon_log 0 +sv_rcon_maxfailures 20 +sv_rcon_minfailures 20 +sv_rcon_minfailuretime 1 +sv_region 255 +sv_reservation_timeout 5 +sv_search_key bizzymod +// sv_skyname "" +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_steamgroup 38693222 +sv_steamgroup_exclusive 1 +sv_tags coop,realism,secure,versus, +sv_unlockedchapters 2147483647 +sv_visiblemaxplayers -1 +sv_voiceenable 1 +sys_minidumpspewlines 0 + +// T) . . . + +think_limit 0 +// tv_port 27020 + +// U) . . . + +// V) . . . + +voice_inputfromfile 0 +voice_recordtofile 0 + +// W) . . . + +// X) . . . + +xbox_autothrottle 1 +xbox_throttlebias 100 +xbox_throttlespoof 200 + +// Y) . . . + +// Z) . . . + +z_difficulty Impossible +z_skip_wounds 0 diff --git a/cfg/console_dedicated.cfg b/cfg/console_dedicated.cfg new file mode 100644 index 00000000..029fe06a --- /dev/null +++ b/cfg/console_dedicated.cfg @@ -0,0 +1,263 @@ +// A) . . . + +adsp_debug 0 + +// B) . . . + +budget_averages_window 0 +budget_background_alpha 128 +budget_bargraph_background_alpha 128 +budget_bargraph_range_ms 0 +budget_history_numsamplesvisible 0 +budget_history_range_ms 0 +budget_panel_bottom_of_history_fraction 1.0 +budget_panel_height 0 +budget_panel_width 0 +budget_panel_x -2560 +budget_panel_y -1440 +budget_peaks_window 0 +budget_show_averages 0 +budget_show_history 0 +budget_show_peaks 0 +bugreporter_uploadasync 0 +bugreporter_username Moon + +// C) . . . + +cl_allowdownload 1 +cl_allowupload 1 +cl_cmdrate 1000 +cl_downloadfilter all +cl_forcepreload 1 +cl_language English +cl_logofile materials/vgui/logos/spray_bullseye.vtf +cl_resend 1.5 +cl_showpluginmessages 1 +cl_soundfile "" +cl_timeout 30 +cl_updaterate 1000 +clientport 27005 +closecaption 1 +con_enable 1 + +// D) . . . + +dsp_enhance_stereo 1 +dsp_player 1 +dsp_slow_cpu 0 +dsp_volume 0.0 + +// E) . . . + +engine_no_focus_sleep 0 + +// F) . . . + +fps_max 1000 +func_break_max_pieces 30 + +// G) . . . + +// H) . . . + +host_flush_threshold 0 +host_framerate 0 +host_map c6m1_riverbank.bsp +host_xbox_e3_restart 1440 +hostfile myhost.txt +// hostip -1062731518 +hostname "Bizzy's Moonmod" +// hostport 27019 + +// I) . . . + +// ip 74.91.113.130 + +// J) . . . + +joy_axisbutton_threshold 0.3 +joy_wingmanwarrior_centerhack 0 + +// K) . . . + +// L) . . . + +// M) . . . + +mat_grain_scale_override 0.0 +mat_monitorgamma 1.6 +mat_monitorgamma_tv_enabled 1 +mat_queue_mode 2 +mat_queue_report 0 +mat_spewalloc 0 +mat_texture_list_content_path "" +mm_dedicated_force_servers "" +mm_dedicated_search_maxping 350 +mm_server_search_lan_ports 27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025 +motd_enabled 0 +motdfile mymotd.txt +mp_roundlimit 5 + +// N) . . . + +name V1 +name2 V2 +nb_debug_history 0 +nb_stuck_dump_threshold -1 +net_allow_multicast 1 +net_chan_limit_disabled 0 +net_chan_limit_in_debug_session 0 +net_chan_limit_msec 0 +net_chan_stats_dump 0 +net_chan_stats_dump_top_msgs 0 +net_chan_stats_lru 0 +net_maxroutable 1200 +net_public_adr "" +net_showsplits 0 +net_showudp 0 +net_showudp_remoteonly 0 +net_splitpacket_maxrate 72000 +net_splitrate 2 +net_steamcnx_allowrelay 1 +net_steamcnx_enabled 2 +npc_height_adjust 1 + +// O) . . . + +// P) . . . + +password "" + +// Q) . . . + +// R) . . . + +r_drawmodelstatsoverlaymax 2 +r_drawmodelstatsoverlaymin 1 +r_dynamic 1 +r_eyemove 1 +r_eyeshift_x 0.0 +r_eyeshift_y 0.0 +r_eyeshift_z 0.0 +r_eyesize 0.0 +rate 1000000 +rcon_password BigBizzy101 + +// S) . . . + +sc_debug_sets 0 +sc_joystick_map 1 +scene_showlook 0 +scene_showmoveto 0 +scene_showunlock 0 +sk_autoaim_mode 3 +skill 3 +snd_duckerattacktime 0 +snd_duckerreleasetime 0 +snd_duckerthreshold 1.0 +snd_ducktovolume 1.0 +snd_legacy_surround 1 +snd_mixahead 0.05 +snd_musicvolume 1.0 +snd_pitchquality 1 +snd_prefetch_common 1 +spit_scaling_min_scale 1.0 +steam_controller_haptics 1 +suitvolume 10.0 +sv_allow_lobby_connect_only 0 +sv_allow_wait_command 1 +sv_alltalk 0 +sv_alternateticks 0 +sv_banid_enabled 1 +sv_cheats 0 +sv_consistency 0 +sv_contact "" +sv_downloadurl "" +sv_forcepreload 1 +sv_gametypes coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave, +sv_lan 0 +sv_log_onefile 1 +sv_logbans 0 +sv_logecho 1 +sv_logfile 1 +sv_logflush 0 +sv_logsdir logs +sv_maxcmdrate 120 +sv_maxrate 144000 +sv_mincmdrate 120 +sv_minrate 72000 +sv_noclipaccelerate 5 +sv_noclipspeed 5 +sv_password "" +sv_pausable 0 +sv_pure_kick_clients 0 +sv_pure_trace 0 +sv_pvsskipanimation 1 +sv_quota_stringcmdspersecond 2147483647 +sv_rcon_banpenalty 0 +sv_rcon_log 0 +sv_rcon_maxfailures 20 +sv_rcon_minfailures 20 +sv_rcon_minfailuretime 1 +sv_region 255 +sv_reservation_timeout 255 +sv_search_key bizzymod +sv_search_team_key bizzymod +sv_skyname sky_l4d_c1_1_hdr +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_steamgroup 38693222 +sv_steamgroup_exclusive 1 +sv_tags coop,realism,secure,versus +sv_unlockedchapters 2147483647 +sv_visiblemaxplayers -1 +sv_voiceenable 1 +sys_minidumpspewlines 0 + +// T) . . . + +texture_budget_background_alpha 128 +texture_budget_panel_bottom_of_history_fraction 1.0 +texture_budget_panel_height 0 +texture_budget_panel_width 0 +texture_budget_panel_x -2560 +texture_budget_panel_y -1440 +think_limit 0 +tv_nochat 0 +tv_port 27020 + +// U) . . . + +// V) . . . + +voice_enable 1 +voice_forcemicrecord 1 +voice_inputfromfile 0 +voice_loopback 1 +voice_recordtofile 0 +voice_scale 2.0 +voice_threshold 1000 +volume 1.0 +vprof_graphheight 0 +vprof_graphwidth 0 +vprof_unaccounted_limit 1 +vprof_verbose 0 +vprof_warningmsec 10 + +// W) . . . + +windows_speaker_config 7 + +// X) . . . + +xbox_autothrottle 1 +xbox_throttlebias 100 +xbox_throttlespoof 200 + +// Y) . . . + +// Z) . . . + +z_difficulty Impossible +z_skip_wounds 0 diff --git a/cfg/console_full.cfg b/cfg/console_full.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/console_full.cfg @@ -0,0 +1 @@ + diff --git a/cfg/console_launcher.cfg b/cfg/console_launcher.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/console_launcher.cfg @@ -0,0 +1 @@ + diff --git a/cfg/console_sm.cfg b/cfg/console_sm.cfg new file mode 100644 index 00000000..a6f9f1a6 --- /dev/null +++ b/cfg/console_sm.cfg @@ -0,0 +1,201 @@ +// A) . . . + +// B) . . . + +// C) . . . + +cl_resend 1.5 +clear_debug_overlays +clientport 27005 +closecaption 1 +// cs_make_vip Moon +// cs_make_vip "STEAM_0:0:121253576" +// cs_make_vip "STEAM_0:1:121253576" +// cs_make_vip "STEAM_1:0:121253576" +// cs_make_vip "STEAM_1:1:121253576" + +// D) . . . + +// E) . . . + +engine_no_focus_sleep 0 + +// F) . . . + +fps_max 1000 +fs_warning_level 0 +func_break_max_pieces 30 + +// G) . . . + +// H) . . . + +host_flush_threshold 0 +host_framerate 0 +// host_map "" +host_xbox_e3_restart 1440 +hostfile myhost.txt +// hostip 1247506818 +hostname "Bizzy's Moonmod" +// hostport 27019 + +// I) . . . + +// ip 74.91.113.130 + +// J) . . . + +// K) . . . + +// L) . . . + +log on + +// M) . . . + +mat_monitorgamma 1.6 +mat_monitorgamma_tv_enabled 1 +mat_queue_mode 2 +mat_queue_report 0 +mat_spewalloc 0 +maxplayers 32 +mm_server_search_lan_ports 27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030 // ,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050 +motd_enabled 0 +motdfile mymotd.txt +// mp_disable_autokick Moon +// mp_disable_autokick "STEAM_0:0:121253576" +// mp_disable_autokick "STEAM_0:1:121253576" +// mp_disable_autokick "STEAM_1:0:121253576" +// mp_disable_autokick "STEAM_1:1:121253576" +mp_roundlimit 5 + +// N) . . . + +name V1 +name2 V2 +nb_debug_history 0 +nb_stuck_dump_threshold -1 +net_allow_multicast 1 +net_chan_limit_disabled 0 +net_chan_limit_in_debug_session 0 +net_chan_limit_msec 0 +net_chan_stats_dump 0 +net_chan_stats_dump_top_msgs 0 +net_chan_stats_lru 0 +net_maxroutable 1200 +// net_public_adr "" +net_showsplits 0 +net_showudp 0 +net_showudp_remoteonly 0 +net_splitpacket_maxrate 72000 +net_splitrate 2 +npc_height_adjust 1 + +// O) . . . + +// P) . . . + +// password "" + +// Q) . . . + +// R) . . . + +r_drawmodelstatsoverlaymax 2 +r_drawmodelstatsoverlaymin 1 +r_dynamic 1 +r_eyemove 1 +r_eyeshift_x 0.0 +r_eyeshift_y 0.0 +r_eyeshift_z 0.0 +r_eyesize 0.0 +rcon_password BigBizzy101 + +// S) . . . + +scene_showlook 0 +scene_showmoveto 0 +scene_showunlock 0 +sk_autoaim_mode 3 +skill 3 +spit_scaling_min_scale 1.0 +steam_controller_haptics 1 +suitvolume 10.0 +sv_allow_lobby_connect_only 0 +sv_allow_wait_command 1 +// sv_alltalk 1 +sv_alternateticks 1 +sv_banid_enabled 1 +// sv_cheats 0 +sv_clearhinthistory +sv_consistency 0 +sv_contact EricMizusawa02@gmail.com +sv_downloadurl bizzymod.com +sv_forcepreload 1 +sv_gametypes coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave, +sv_lan 0 +sv_log_onefile 1 +sv_logbans 1 +sv_logecho 1 +sv_logfile 1 +sv_logflush 0 +sv_logsdir logs +sv_maxcmdrate 120 +sv_maxrate 144000 +sv_mincmdrate 120 +sv_minrate 72000 +sv_noclipaccelerate 5 +sv_noclipspeed 3 +sv_password "" +sv_pausable 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_pure_trace 0 +sv_pvsskipanimation 1 +sv_quota_stringcmdspersecond 2147483647 +sv_rcon_banpenalty 0 +sv_rcon_log 0 +sv_rcon_maxfailures 20 +sv_rcon_minfailures 20 +sv_rcon_minfailuretime 1 +sv_region 255 +sv_reservation_timeout 5 +sv_search_key bizzymod +// sv_skyname "" +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_steamgroup 38693222 +sv_steamgroup_exclusive 1 +sv_tags coop,realism,secure,versus, +sv_unlockedchapters 2147483647 +sv_visiblemaxplayers -1 +sv_voiceenable 1 +sys_minidumpspewlines 0 + +// T) . . . + +think_limit 0 +// tv_port 27020 + +// U) . . . + +// V) . . . + +voice_inputfromfile 0 +voice_recordtofile 0 + +// W) . . . + +// X) . . . + +xbox_autothrottle 1 +xbox_throttlebias 100 +xbox_throttlespoof 200 + +// Y) . . . + +// Z) . . . + +z_difficulty Impossible +z_skip_wounds 0 diff --git a/cfg/convars.cfg b/cfg/convars.cfg new file mode 100644 index 00000000..e13a1821 --- /dev/null +++ b/cfg/convars.cfg @@ -0,0 +1,184 @@ +// A) . . . + +// B) . . . + +// C) . . . + +cl_resend 1.5 +clientport 27005 +closecaption 1 + +// D) . . . + +// E) . . . + +engine_no_focus_sleep 0 + +// F) . . . + +fps_max 1000 +func_break_max_pieces 30 + +// G) . . . + +// H) . . . + +host_flush_threshold 0 +host_framerate 0 +// host_map "" +host_xbox_e3_restart 1440 +hostfile myhost.txt +// hostip 1247506818 +hostname "Bizzy's Moonmod" +// hostport 27019 + +// I) . . . + +// ip 74.91.113.130 + +// J) . . . + +// K) . . . + +// L) . . . + +// M) . . . + +mat_monitorgamma 1.6 +mat_monitorgamma_tv_enabled 1 +mat_queue_mode 2 +mat_queue_report 0 +mat_spewalloc 0 +mm_server_search_lan_ports 27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025 +motd_enabled 0 +motdfile mymotd.txt +mp_roundlimit 5 + +// N) . . . + +name Bizzy +name2 Moon +nb_debug_history 0 +nb_stuck_dump_threshold -1 +net_allow_multicast 1 +net_chan_limit_disabled 0 +net_chan_limit_in_debug_session 0 +net_chan_limit_msec 0 +net_chan_stats_dump 0 +net_chan_stats_dump_top_msgs 0 +net_chan_stats_lru 0 +net_maxroutable 1200 +// net_public_adr "" +net_showsplits 0 +net_showudp 0 +net_showudp_remoteonly 0 +net_splitpacket_maxrate 72000 +net_splitrate 2 +npc_height_adjust 1 + +// O) . . . + +// P) . . . + +// password "" + +// Q) . . . + +// R) . . . + +r_drawmodelstatsoverlaymax 1 +r_drawmodelstatsoverlaymin 0 +r_dynamic 1 +r_eyemove 1 +r_eyeshift_x 0.0 +r_eyeshift_y 0.0 +r_eyeshift_z 0.0 +r_eyesize 0.0 +rcon_password BigBizzy101 + +// S) . . . + +scene_showlook 0 +scene_showmoveto 0 +scene_showunlock 0 +sk_autoaim_mode 3 +skill 3 +spit_scaling_min_scale 1.0 +steam_controller_haptics 1 +suitvolume 10.0 +sv_allow_lobby_connect_only 0 +sv_allow_wait_command 1 +// sv_alltalk 1 +sv_alternateticks 1 +sv_banid_enabled 1 +// sv_cheats 0 +sv_consistency 0 +sv_contact "" +sv_downloadurl "" +sv_forcepreload 1 +sv_gametypes coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave, +sv_lan 0 +sv_log_onefile 1 +sv_logbans 1 +sv_logecho 1 +sv_logfile 1 +sv_logflush 0 +sv_logsdir logs +sv_maxcmdrate 120 +sv_maxrate 144000 +sv_mincmdrate 120 +sv_minrate 72000 +sv_noclipaccelerate 5 +sv_noclipspeed 3 +sv_password "" +sv_pausable 0 +sv_pure_kick_clients 0 +sv_pure_trace 0 +sv_pvsskipanimation 1 +sv_quota_stringcmdspersecond 2147483647 +sv_rcon_banpenalty 0 +sv_rcon_log 0 +sv_rcon_maxfailures 20 +sv_rcon_minfailures 20 +sv_rcon_minfailuretime 1 +sv_region 255 +sv_reservation_timeout 5 +sv_search_key bizzymod +// sv_skyname "" +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_steamgroup 38693222 +sv_steamgroup_exclusive 1 +sv_tags coop,realism,secure,versus, +sv_unlockedchapters 2147483647 +sv_visiblemaxplayers -1 +sv_voiceenable 1 +sys_minidumpspewlines 0 + +// T) . . . + +think_limit 0 +// tv_port 27020 + +// U) . . . + +// V) . . . + +voice_inputfromfile 0 +voice_recordtofile 0 + +// W) . . . + +// X) . . . + +xbox_autothrottle 1 +xbox_throttlebias 100 +xbox_throttlespoof 200 + +// Y) . . . + +// Z) . . . + +z_difficulty Impossible +z_skip_wounds 0 diff --git a/cfg/cvarlist.cfg b/cfg/cvarlist.cfg new file mode 100644 index 00000000..d56cfe8f --- /dev/null +++ b/cfg/cvarlist.cfg @@ -0,0 +1,2450 @@ +wait 0001 ; sm_cvar // achievement_debug 0 // 0 +wait 0002 ; sm_cvar achievement_disable 0 // 0 +wait 0003 ; sm_cvar action_progress_reset_interval 0.5 // 1.0 +wait 0004 ; sm_cvar // adrenaline_backpack_speedup 0.5 // 0.5 +wait 0005 ; sm_cvar adrenaline_duration 20 // 15.0f +wait 0006 ; sm_cvar adrenaline_health_buffer 30 // 25 +wait 0007 ; sm_cvar // adrenaline_revive_speedup 0.5 // 0.5 +wait 0008 ; sm_cvar // adrenaline_run_speed 260 // 260 +wait 0009 ; sm_cvar // ai_debug_los 0 // 0 +wait 0010 ; sm_cvar // ai_debug_ragdoll_magnets 0 // 0 +wait 0011 ; sm_cvar // ai_debug_shoot_positions 0 // 0 +wait 0012 ; sm_cvar // ai_debug_speech 0 // 0 +wait 0013 ; sm_cvar ai_expression_frametime 0.1 // 0.05 +wait 0014 ; sm_cvar // ai_expression_optimization 0 // 0 +wait 0015 ; sm_cvar ai_force_serverside_ragdoll 1 // 0 +wait 0016 ; sm_cvar // ai_LOS_mode 0 // 0 +wait 0017 ; sm_cvar // ai_post_frame_navigation 0 // 0 +wait 0018 ; sm_cvar // ai_sequence_debug 0 // 0 +wait 0019 ; sm_cvar // ai_setupbones_debug 0 // 0 +wait 0020 ; sm_cvar // ai_shot_bias_max 1.0 // 1.0 +wait 0021 ; sm_cvar // ai_shot_bias_min -1.0 // -1.0 +wait 0022 ; sm_cvar // ai_show_hull_attacks 0 // 0 +wait 0023 ; sm_cvar ai_talk_idle_enabled 0 // 1 +wait 0024 ; sm_cvar // ai_use_visibility_cache 1 // 1 +wait 0025 ; sm_cvar allow_all_bot_survivor_team 1 // 0 +wait 0026 ; sm_cvar // allow_weapon_fire_to_use 0 // 0 +wait 0027 ; sm_cvar // ammo_adrenaline_max 1 // 1 +wait 0028 ; sm_cvar // ammo_ammo_pack_max 1 // 1 +wait 0029 ; sm_cvar // ammo_assaultrifle_max 360 // 360 +wait 0030 ; sm_cvar // ammo_autoshotgun_max 90 // 90 +wait 0031 ; sm_cvar ammo_chainsaw_max 30 // 20 +wait 0032 ; sm_cvar ammo_firstaid_max 1 // -1 +wait 0033 ; sm_cvar // ammo_grenadelauncher_max 29 // 30 +wait 0034 ; sm_cvar // ammo_huntingrifle_max 150 // 150 +wait 0035 ; sm_cvar // ammo_m60_max 0 // 0 +wait 0036 ; sm_cvar ammo_minigun_max -2 // 800 +wait 0037 ; sm_cvar // ammo_molotov_max 1 // 1 +wait 0038 ; sm_cvar ammo_pack_use_duration 1.5 // 3 +wait 0039 ; sm_cvar // ammo_painpills_max 1 // 1 +wait 0040 ; sm_cvar // ammo_pipebomb_max 1 // 1 +wait 0041 ; sm_cvar // ammo_pistol_max -2 // -2 +wait 0042 ; sm_cvar // ammo_shotgun_max 72 // 72 +wait 0043 ; sm_cvar // ammo_smg_max 650 // 650 +wait 0044 ; sm_cvar // ammo_sniperrifle_max 180 // 180 +wait 0045 ; sm_cvar ammo_turret_infected_damage 25 // 15 +wait 0046 ; sm_cvar ammo_turret_max -2 // 300 +wait 0047 ; sm_cvar ammo_turret_pz_damage 25 // 8 +wait 0048 ; sm_cvar ammo_turret_survivor_damage 0 // 1 +wait 0049 ; sm_cvar ammo_turret_tank_damage 50 // 40 +wait 0050 ; sm_cvar ammo_turret_witch_damage 25 // 16 +wait 0051 ; sm_cvar // ammo_vomitjar_max 1 // 1 +wait 0052 ; sm_cvar // anim_3wayblend 1 // 1 +wait 0053 ; sm_cvar // anim_showstate -1 // -1 +wait 0054 ; sm_cvar // anim_showstatelog 0 // 0 +wait 0055 ; sm_cvar // async_allow_held_files 1 // 1 +wait 0056 ; sm_cvar // async_mode 0 // 0 +wait 0057 ; sm_cvar // async_serialize 0 // 0 +wait 0058 ; sm_cvar // async_simulate_delay 0 // 0 +wait 0059 ; sm_cvar autoaim_max_deflect 1.0 // 0.99 +wait 0060 ; sm_cvar autoaim_max_dist 1000 // 2160 +wait 0061 ; sm_cvar // autoaim_viewing_client 1 // 1 +wait 0062 ; sm_cvar // blackbox "" // "" +wait 0063 ; sm_cvar // BlendBonesMode 2 // 2 +wait 0064 ; sm_cvar boomer_exposed_time_tolerance 20 // 1.0 +wait 0065 ; sm_cvar // boomer_leaker_chance 0 // 0 +wait 0066 ; sm_cvar boomer_pz_claw_dmg 6 // 4 +wait 0067 ; sm_cvar boomer_vomit_delay 0 // 1 +wait 0068 ; sm_cvar // bot_crouch 0 // 0 +wait 0069 ; sm_cvar // bot_freeze 0 // 0 +wait 0070 ; sm_cvar // bot_mimic 0 // 0 +wait 0071 ; sm_cvar // bot_mimic_yaw_offset 180 // 180 +wait 0072 ; sm_cvar // breakable_disable_gib_limit 0 // 0 +wait 0073 ; sm_cvar // breakable_multiplayer 1 // 1 +wait 0074 ; sm_cvar // buddha 0 // 0 +wait 0075 ; sm_cvar // bullet_ff_through_walls 0 // 0 +wait 0076 ; sm_cvar car_alarm_chirp_distance 500 // 350 +wait 0077 ; sm_cvar // car_alarm_chirp_duration 1 // 1 +wait 0078 ; sm_cvar car_alarm_chirp_interval 1 // 3 +wait 0079 ; sm_cvar car_alarm_distance 1000 // 750 +wait 0080 ; sm_cvar car_alarm_duration 20 // 15 +wait 0081 ; sm_cvar cc_norepeat 0 // 5 +wait 0082 ; sm_cvar // cc_showmissing 0 // 0 +wait 0083 ; sm_cvar // chainsaw_attack_cone 30 // 30.0 +wait 0084 ; sm_cvar chainsaw_attack_distance 80 // 50.0 +wait 0085 ; sm_cvar chainsaw_attack_force 10000 // 400.0 +wait 0086 ; sm_cvar chainsaw_attract_distance 1000 // 500.0 +wait 0087 ; sm_cvar chainsaw_damage 100 // 100.0 +wait 0088 ; sm_cvar // chainsaw_debug 0 // 0 +wait 0089 ; sm_cvar chainsaw_hit_interval 0.05 // 0.1 +wait 0090 ; sm_cvar chainsaw_startup_fadeout_time 0.0 // 0.1 +wait 0091 ; sm_cvar // changelevel_inhibit 0 // 0 +wait 0092 ; sm_cvar changelevel_pause_interval 10 // 8 +wait 0093 ; sm_cvar // charger_pz_claw_dmg 10 // 10 +wait 0094 ; sm_cvar // chet_debug_idle 0 // 0 +wait 0095 ; sm_cvar // cl_clock_correction 1 // 1 +wait 0096 ; sm_cvar cl_clock_correction_adjustment_max_amount 100 // 200 +wait 0097 ; sm_cvar cl_clock_correction_adjustment_max_offset 50 // 90 +wait 0098 ; sm_cvar cl_clock_correction_adjustment_min_offset 0 // 10 +wait 0099 ; sm_cvar cl_clock_correction_force_server_tick 999 // 999 +wait 0100 ; sm_cvar // cl_clock_showdebuginfo 0 // 0 +wait 0101 ; sm_cvar cl_clockdrift_max_ms 100 // 150 +wait 0102 ; sm_cvar // cl_clockdrift_max_ms_threadmode 0 // 0 +wait 0103 ; sm_cvar cl_consistencycheck_interval 86400 // 180 +wait 0104 ; sm_cvar // cl_failremoteconnections 0 // 0 +wait 0105 ; sm_cvar // cl_interpolate 1 // 1.0 +wait 0106 ; sm_cvar cl_resend 1.5 // 6 +wait 0107 ; sm_cvar cl_simdbones 1 // 0 +wait 0108 ; sm_cvar // cl_skipslowpath 0 // 0 +wait 0109 ; sm_cvar // cl_use_simd_bones 1 // 1 +wait 0110 ; sm_cvar claw_force 100 // 240 +wait 0111 ; sm_cvar claw_range 60 // 52 +wait 0112 ; sm_cvar claw_range_down 80 // 70 +wait 0113 ; sm_cvar claw_swing_duration 0.183333 // 0.2 +wait 0114 ; sm_cvar claw_swing_interval 0.95 // 1 +wait 0115 ; sm_cvar claw_swing_miss_interval 0.95 // 0.5 +wait 0116 ; sm_cvar // cleared_wanderer_respawn_chance 0 // 0 +wait 0117 ; sm_cvar clientport 0 // "27005" +wait 0118 ; sm_cvar closecaption 1 // 0 +wait 0119 ; sm_cvar cola_bottles_use_duration 1.75 // 1.95 +wait 0120 ; sm_cvar cola_bottles_use_range 100 // 75 +wait 0121 ; sm_cvar cola_bottles_use_tolerance 0.0 // 0.1 +wait 0122 ; sm_cvar collision_shake_amp 0.0 // 0.2 +wait 0123 ; sm_cvar collision_shake_freq 0.1 // 0.5 +wait 0124 ; sm_cvar collision_shake_time 0.0 // 0.5 +wait 0125 ; sm_cvar // commentary_available 1 // 1 +wait 0126 ; sm_cvar // common_dps_spew 0 // 0 +wait 0127 ; sm_cvar common_dps_window 0 // 2.0f +wait 0128 ; sm_cvar // con_logfile "" // "" +wait 0129 ; sm_cvar // con_timestamp 0 // 0 +wait 0130 ; sm_cvar // confogl_adrenaline_limit -1 // -1 +wait 0131 ; sm_cvar // confogl_block_punch_rock 0 // 0 +wait 0132 ; sm_cvar // confogl_blockinfectedbots 0 // 0 +wait 0133 ; sm_cvar confogl_boss_tank 0 // 0 +wait 0134 ; sm_cvar // confogl_boss_unprohibit 0 // 0 +wait 0135 ; sm_cvar // confogl_block_punch_rock 0 // 0 +wait 0136 ; sm_cvar // confogl_defib_limit -1 // -1 +wait 0137 ; sm_cvar // confogl_disable_ghost_hurt 0 // 0 +wait 0138 ; sm_cvar // confogl_disable_tank_hordes 0 // 0 +wait 0139 ; sm_cvar // confogl_ghost_warp 0 // 0 +wait 0140 ; sm_cvar // confogl_lock_boss_spawns 1 // 0 +wait 0141 ; sm_cvar // confogl_molotov_limit -1 // -1 +wait 0142 ; sm_cvar // confogl_pills_limit -1 // -1 +wait 0143 ; sm_cvar // confogl_pipebomb_limit -1 // -1 +wait 0144 ; sm_cvar // confogl_reduce_finalespawnrange 1 // 0 +wait 0145 ; sm_cvar confogl_remove_c5m4_hurts 1 // 0 +wait 0146 ; sm_cvar confogl_remove_escape_tank 1 // 0 +wait 0147 ; sm_cvar confogl_remove_inf_clips 1 // 0 +wait 0148 ; sm_cvar // confogl_replace_cssweapons 0 // 0 +wait 0149 ; sm_cvar // confogl_replace_finalekits 0 // 0 +wait 0150 ; sm_cvar // confogl_replace_startkits 0 // 0 +wait 0151 ; sm_cvar // confogl_vomitjar_limit -1 // -1 +wait 0152 ; sm_cvar // confogl_waterslowdown 0 // 0 +wait 0153 ; sm_cvar // coop 0 // 0 +wait 0154 ; sm_cvar cpu_level 2 // 3 +wait 0155 ; sm_cvar // cs_ShowStateTransitions -2 // -2 +wait 0156 ; sm_cvar datacachesize 512 // 64 +wait 0157 ; sm_cvar deathmatch 0 // 1 +wait 0158 ; sm_cvar debug_l4dverbose 0 // 1 +wait 0159 ; sm_cvar // debug_materialmodifycontrol 0 // 0 +wait 0160 ; sm_cvar // debug_overlay_fullposition 0 // 0 +wait 0161 ; sm_cvar // debug_physimpact 0 // 0 +wait 0162 ; sm_cvar // debug_touchlinks 0 // 0 +wait 0163 ; sm_cvar // debug_visibility_monitor 0 // 0 +wait 0164 ; sm_cvar decalfrequency 1.25 // 10 +wait 0165 ; sm_cvar defibrillator_return_to_life_time 1 // 3.0 +wait 0166 ; sm_cvar defibrillator_use_duration 2 // 3 +wait 0167 ; sm_cvar // developer 0 // 0 +wait 0168 ; sm_cvar director_adrenaline_density 4 // 6.48 +wait 0169 ; sm_cvar director_afk_timeout 20 // 45 +wait 0170 ; sm_cvar // director_ai_tanks 0 // 0 +wait 0171 ; sm_cvar // director_allow_infected_bots 1 // 1 +wait 0172 ; sm_cvar director_always_allow_wanderers 1 // 0 +wait 0173 ; sm_cvar director_ammo_density 4 // 6.48 +wait 0174 ; sm_cvar director_build_up_min_interval 10 // 15 +wait 0175 ; sm_cvar director_clear_count 1 // 2.0 +wait 0176 ; sm_cvar director_clear_timeout 5 // 10.0 +wait 0177 ; sm_cvar director_configurable_weapon_spawn_density -1 // -1.0 +wait 0178 ; sm_cvar director_convert_pills 0 // 1 +wait 0179 ; sm_cvar director_convert_pills_critical_health 0 // 50 +wait 0180 ; sm_cvar director_convert_pills_to_defib_health 0 // 25 +wait 0181 ; sm_cvar director_cs_weapon_spawn_chance 0.5 // 0.25 +wait 0182 ; sm_cvar // director_custom_finale_tank_spacing 10 // 10.0 +wait 0183 ; sm_cvar // director_debug 0 // 0 +wait 0184 ; sm_cvar // director_debug_revisit 0 // 0 +wait 0185 ; sm_cvar // director_debug_scavenge_items 0 // 0 +wait 0186 ; sm_cvar // director_debug_threat_placement 0 // 0 +wait 0187 ; sm_cvar director_defibrillator_density 4 // 6.48 +wait 0188 ; sm_cvar director_finale_item_cluster_count 2 // 3 +wait 0189 ; sm_cvar // director_finale_panic_waves 2 // 2 +wait 0190 ; sm_cvar // director_finale_stage_delay 5 // 5 +wait 0191 ; sm_cvar // director_force_background 0 // 0 +wait 0192 ; sm_cvar // director_force_tank 0 // 0 +wait 0193 ; sm_cvar // director_force_witch 0 // 0 +wait 0194 ; sm_cvar director_gas_can_density 4 // 6.48 +wait 0195 ; sm_cvar // director_gauntlet_movement_bonus 5 // 5.0 +wait 0196 ; sm_cvar // director_gauntlet_movement_bonus_max 30 // 30.0 +wait 0197 ; sm_cvar // director_gauntlet_movement_threshold 500 // 500.0 +wait 0198 ; sm_cvar // director_gauntlet_movement_timer_length 10 // 10.0 +wait 0199 ; sm_cvar director_gauntlet_tank_kite_distance 2000 // 3000.0 +wait 0200 ; sm_cvar director_ingress_range 2000 // 3000 +wait 0201 ; sm_cvar director_intensity_relax_allow_wanderers_threshold 1.0 // 0.3 +wait 0202 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 // 0.8 +wait 0203 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 // 0.5 +wait 0204 ; sm_cvar director_intensity_relax_threshold 1.0 // 0.9 +wait 0205 ; sm_cvar director_intensity_threshold 1.0 // 0.9 +wait 0206 ; sm_cvar // director_item_cluster_range 50 // 50 +wait 0207 ; sm_cvar // director_item_placement_method 1 // 1 +wait 0208 ; sm_cvar // director_item_placement_spew 0 // 0 +wait 0209 ; sm_cvar director_magnum_spawn_density -1 // -1.0 +wait 0210 ; sm_cvar director_max_threat_areas 5 // 4 +wait 0211 ; sm_cvar director_melee_weapon_density 4 // 6.48 +wait 0212 ; sm_cvar director_min_start_players 1 // 1 +wait 0213 ; sm_cvar director_molotov_density 4 // 6.48 +wait 0214 ; sm_cvar director_music_dynamic_mob_size 20 // 25 +wait 0215 ; sm_cvar director_music_dynamic_mobstop_size 10 // 8 +wait 0216 ; sm_cvar director_music_dynamic_scanmobstop_size 5 // 3 +wait 0217 ; sm_cvar // director_must_create_all_scavenge_items 0 // 0 +wait 0218 ; sm_cvar // director_no_bosses 0 // 0 +wait 0219 ; sm_cvar // director_no_death_check 0 // 0 +wait 0220 ; sm_cvar // director_no_mobs 0 // 0 +wait 0221 ; sm_cvar // director_no_specials 0 // 0 +wait 0222 ; sm_cvar // director_no_survivor_bots 0 // 0 +wait 0223 ; sm_cvar // director_num_reserved_wanderers 0 // 0 +wait 0224 ; sm_cvar // director_output_population_visit 0 // 0 +wait 0225 ; sm_cvar director_oxygen_tank_density 4 // 6.48 +wait 0226 ; sm_cvar director_pain_pill_density 4 // 6.48 +wait 0227 ; sm_cvar // director_panic_forever 0 // 0 +wait 0228 ; sm_cvar director_panic_wave_pause_max 5 // 7 +wait 0229 ; sm_cvar // director_panic_wave_pause_min 5 // 5 +wait 0230 ; sm_cvar // director_per_map_weapon_upgrade_chance 0.5 // 0.25 +wait 0231 ; sm_cvar director_pipe_bomb_density 4 // 6.48 +wait 0232 ; sm_cvar // director_pistol_density 4 // 4 +wait 0233 ; sm_cvar director_propane_tank_density 4 // 6.48 +wait 0234 ; sm_cvar director_ready_duration 30 // 60 +wait 0235 ; sm_cvar // director_ready_radius 300 // 300 +wait 0236 ; sm_cvar director_relax_max_flow_travel 2000 // 3000 +wait 0237 ; sm_cvar director_relax_max_interval 20 // 45 +wait 0238 ; sm_cvar director_relax_min_interval 10 // 30 +wait 0239 ; sm_cvar // director_report_screen_delay 10 // 10 +wait 0240 ; sm_cvar // director_scavenge_item_override 0 // 0 +wait 0241 ; sm_cvar // director_short_finale 0 // 0 +wait 0242 ; sm_cvar // director_special_battlefield_respawn_interval 10 // 10 +wait 0243 ; sm_cvar // director_special_finale_offer_length 10 // 10 +wait 0244 ; sm_cvar director_special_initial_spawn_delay_max 0 // 60 +wait 0245 ; sm_cvar director_special_initial_spawn_delay_max_extra 0 // 180 +wait 0246 ; sm_cvar director_special_initial_spawn_delay_min 0 // 30 +wait 0247 ; sm_cvar director_special_original_offer_length 10 // 30 +wait 0248 ; sm_cvar director_special_respawn_interval 10 // 45 +wait 0249 ; sm_cvar // director_spectate_specials 0 // 0 +wait 0250 ; sm_cvar director_super_weapon_density 4 // 6.48 +wait 0251 ; sm_cvar // director_survival_setup_time 0 // 0 +wait 0252 ; sm_cvar // director_survivor_movement_window 10 // 10.0 +wait 0253 ; sm_cvar director_sustain_peak_max_time 10 // 5 +wait 0254 ; sm_cvar director_sustain_peak_min_time 5 // 3 +wait 0255 ; sm_cvar director_tank_bypass_max_flow_travel 1000 // 1500 +wait 0256 ; sm_cvar director_tank_checkpoint_interval 10 // 15 +wait 0257 ; sm_cvar // director_tank_force_offer 0 // 0 +wait 0258 ; sm_cvar // director_tank_lottery_entry_time 0.1 // 0.1 +wait 0259 ; sm_cvar director_tank_lottery_selection_time 3 // 4 +wait 0260 ; sm_cvar director_tank_max_interval 300 // 500 +wait 0261 ; sm_cvar director_tank_min_interval 300 // 350 +wait 0262 ; sm_cvar // director_tank_offer_debug 0 // 0 +wait 0263 ; sm_cvar // director_test_loop 0 // 0 +wait 0264 ; sm_cvar director_test_loop_restarts_before_rotate 10 // 4 +wait 0265 ; sm_cvar director_test_loop_rotate_maps 0 // 1 +wait 0266 ; sm_cvar director_test_loop_time 5 // 3 +wait 0267 ; sm_cvar director_threat_clear_radius 200 // 500 +wait 0268 ; sm_cvar director_threat_max_separation 4000 // 5000 +wait 0269 ; sm_cvar director_threat_min_separation 4000 // 5000 +wait 0270 ; sm_cvar director_threat_radius 500 // 1000 +wait 0271 ; sm_cvar director_transition_timeout 60 // 120 +wait 0272 ; sm_cvar director_unfreeze_time 0 // 55 +wait 0273 ; sm_cvar director_upgradepack_density 4 // 6.48 +wait 0274 ; sm_cvar director_vomitjar_density 4 // 6.48 +wait 0275 ; sm_cvar director_vs_convert_pills 0.0 // 0.5 +wait 0276 ; sm_cvar // director_weapon_cluster_range 100 // 100 +wait 0277 ; sm_cvar // disable_dynamic_prop_loading 0 // 0 +wait 0278 ; sm_cvar // disable_static_prop_loading 0 // 0 +wait 0279 ; sm_cvar // disp_dynamic 0 // 0 +wait 0280 ; sm_cvar // dispcoll_drawplane 0 // 0 +wait 0281 ; sm_cvar // display_game_events 0 // 0 +wait 0282 ; sm_cvar // displaysoundlist 0 // 0 +wait 0283 ; sm_cvar // dt_ShowPartialChangeEnts 0 // 0 +wait 0284 ; sm_cvar // dt_UsePartialChangeEnts 1 // 1 +wait 0285 ; sm_cvar // dtwarning 0 // 0 +wait 0286 ; sm_cvar // dtwatchclass "" // "" +wait 0287 ; sm_cvar // dtwatchent -1 // -1 +wait 0288 ; sm_cvar // dtwatchvar "" // "" +wait 0289 ; sm_cvar elevator_movedelay 0.0 // 0.75 +wait 0290 ; sm_cvar engine_fix_flags 12 // 12 +wait 0291 ; sm_cvar engine_no_focus_sleep 0 // 50 +wait 0292 ; sm_cvar // ent_debugkeys "" // "" +wait 0293 ; sm_cvar // ent_messages_draw 0 // 0 +wait 0294 ; sm_cvar // ent_show_contexts 0 // 0 +wait 0295 ; sm_cvar // ent_steadystate_batchsize 10 // 20 +wait 0296 ; sm_cvar // ent_steadystate_cooldown 5 // 5.0 +wait 0297 ; sm_cvar // ent_steadystate_delay 5 // 5 +wait 0298 ; sm_cvar // ent_steadystate_enable 1 // 1 +wait 0299 ; sm_cvar // ent_steadystate_interval 0.1 // 0.1 +wait 0300 ; sm_cvar // ent_text_allow_script 0 // 0 +wait 0301 ; sm_cvar // fade_immediately 0 // 0 +wait 0302 ; sm_cvar fall_speed_fatal 700 // 720 +wait 0303 ; sm_cvar fall_speed_safe 500 // 560 +wait 0304 ; sm_cvar // fidget_max_interval 20 // 20 +wait 0305 ; sm_cvar // fidget_min_interval 10 // 10 +wait 0306 ; sm_cvar // filesystem_buffer_size 0 // 0 +wait 0307 ; sm_cvar // filesystem_max_stdio_read 64 // 16 +wait 0308 ; sm_cvar // filesystem_native 1 // 1 +wait 0309 ; sm_cvar // filesystem_report_buffered_io 0 // 0 +wait 0310 ; sm_cvar // filesystem_unbuffered_io 1 // 1 +wait 0311 ; sm_cvar fire_absorbrate 100 // 3 +wait 0312 ; sm_cvar fire_dmgbase 1 // 3 +wait 0313 ; sm_cvar fire_dmginterval 1 // 1.0 +wait 0314 ; sm_cvar fire_dmgscale 0.1 // 0.1 +wait 0315 ; sm_cvar fire_extabsorb 100 // 5 +wait 0316 ; sm_cvar fire_extscale 100 // 12 +wait 0317 ; sm_cvar fire_growthrate 1.0 // 1.0 +wait 0318 ; sm_cvar fire_heatscale 1.0 // 1.0 +wait 0319 ; sm_cvar fire_incomingheatscale 0.1 // 0.1 +wait 0320 ; sm_cvar fire_maxabsorb 100 // 50 +wait 0321 ; sm_cvar // first_aid_heal_percent 0.8 // 0.8 +wait 0322 ; sm_cvar first_aid_kit_max_heal 101 // 100 +wait 0323 ; sm_cvar first_aid_kit_use_duration 4.75 // 5 +wait 0324 ; sm_cvar // fish_dormant 0 // 0 +wait 0325 ; sm_cvar flex_expression "" // "-" +wait 0326 ; sm_cvar // flex_talk 0 // 0 +wait 0327 ; sm_cvar // fog_enable_water_fog 1 // 1 +wait 0328 ; sm_cvar force_disablex360 1 // 0 +wait 0329 ; sm_cvar fps_max 120 // 300 +wait 0330 ; sm_cvar fps_max_splitscreen 120 // 300 +wait 0331 ; sm_cvar // fs_monitor_read_from_pack 0 // 0 +wait 0332 ; sm_cvar // fs_report_sync_opens 0 // 0 +wait 0333 ; sm_cvar // fs_warning_mode 0 // 0 +wait 0334 ; sm_cvar fuel_barrel_damage_amount 25 // 25 +wait 0335 ; sm_cvar fuel_barrel_damage_radius 600 // 400 +wait 0336 ; sm_cvar // fuel_barrel_debug 0 // 0 +wait 0337 ; sm_cvar fuel_barrel_flame_instances 10 // 8 +wait 0338 ; sm_cvar fuel_barrel_health 10 // 20 +wait 0339 ; sm_cvar fuel_barrel_screen_shake_amplitude 50 // 20 +wait 0340 ; sm_cvar fuel_barrel_screen_shake_duration 2 // 1.5 +wait 0341 ; sm_cvar fuel_barrel_screen_shake_frequency 2 // 2.5 +wait 0342 ; sm_cvar fuel_barrel_screen_shake_radius 1200 // 1000 +wait 0343 ; sm_cvar func_break_max_pieces 30 // 15 +wait 0344 ; sm_cvar func_break_reduction_factor 1.0 // .5 +wait 0345 ; sm_cvar func_breakdmg_bullet 1.0 // 0.5 +wait 0346 ; sm_cvar func_breakdmg_club 3.0 // 1.5 +wait 0347 ; sm_cvar func_breakdmg_explosive 2.0 // 1.25 +wait 0348 ; sm_cvar // g_cv_phys2_freeze_ragdolls 0 // 0 +wait 0349 ; sm_cvar // g_debug_constraint_sounds 0 // 0 +wait 0350 ; sm_cvar // g_debug_doors 0 // 0 +wait 0351 ; sm_cvar // g_debug_npc_vehicle_roles 0 // 0 +wait 0352 ; sm_cvar // g_debug_physcannon 0 // 0 +wait 0353 ; sm_cvar // g_debug_ragdoll_removal 0 // 0 +wait 0354 ; sm_cvar // g_debug_transitions 0 // 0 +wait 0355 ; sm_cvar // g_debug_vehiclebase 0 // 0 +wait 0356 ; sm_cvar // g_debug_vehicleexit 0 // 0 +wait 0357 ; sm_cvar // g_debug_vehiclesound 0 // 0 +wait 0358 ; sm_cvar g_Language "English" // 0 +wait 0359 ; sm_cvar g_ragdoll_max_fps 60 // 30 +wait 0360 ; sm_cvar g_ragdoll_min_fps 30 // 10 +wait 0361 ; sm_cvar gas_can_use_duration 1.9 // 2 +wait 0362 ; sm_cvar gascan_spit_time 2.75 // 2.9 +wait 0363 ; sm_cvar gascan_throw_force 100 // 32 +wait 0364 ; sm_cvar gascan_use_range 80 // 65 +wait 0365 ; sm_cvar gascan_use_tolerance 0.0 // 0.1 +wait 0366 ; sm_cvar // god 0 // 0 +wait 0367 ; sm_cvar // gpu_level 3 // 3 +wait 0368 ; sm_cvar gpu_mem_level 2 // 3 +wait 0369 ; sm_cvar grenadelauncher_damage 750 // 400 +wait 0370 ; sm_cvar grenadelauncher_ff_scale 0.05 // 0.12 +wait 0371 ; sm_cvar grenadelauncher_ff_scale_self 0.05 // 0.12 +wait 0372 ; sm_cvar grenadelauncher_force_kill 0 // 2000.0 +wait 0373 ; sm_cvar grenadelauncher_radius_kill 300 // 180 +wait 0374 ; sm_cvar grenadelauncher_radius_stumble 500 // 250 +wait 0375 ; sm_cvar // grenadelauncher_show_radius 0 // 0 +wait 0376 ; sm_cvar // grenadelauncher_startpos_forward 16 // 16.0 +wait 0377 ; sm_cvar // grenadelauncher_startpos_right 4 // 4.0 +wait 0378 ; sm_cvar // grenadelauncher_startpos_up 0 // 0.0 +wait 0379 ; sm_cvar grenadelauncher_vel_up 125 // 100.0f +wait 0380 ; sm_cvar grenadelauncher_vel_variance 0 // 10.0 +wait 0381 ; sm_cvar grenadelauncher_velocity 1250 // 1200 +wait 0382 ; sm_cvar hack_elevator_z_offset 0 // 10 +wait 0383 ; sm_cvar // helping_hand_debug 0 // 0 +wait 0384 ; sm_cvar // hl2_episodic 0 // 0 +wait 0385 ; sm_cvar host_flush_threshold 0 // 14 +wait 0386 ; sm_cvar host_framerate 0 // 0 +wait 0387 ; sm_cvar host_limitlocal 0 // 0 +wait 0388 ; sm_cvar // host_map "c6m1_riverbank.bsp" // "c1m1_hotel.bsp" +wait 0389 ; sm_cvar // host_profile 0 // 0 +wait 0390 ; sm_cvar // host_showcachemiss 0 // 0 +wait 0391 ; sm_cvar // host_ShowIPCCallCount 0 // 0 +wait 0392 ; sm_cvar host_sleep 0 // 0 +wait 0393 ; sm_cvar // host_speeds 0 // 0 +wait 0394 ; sm_cvar // host_syncfps 0 // 0 +wait 0395 ; sm_cvar // host_thread_mode 0 // 0 +wait 0396 ; sm_cvar // host_threaded_sound 0 // 0 +wait 0397 ; sm_cvar host_timescale 1.0 // 1.0 +wait 0398 ; sm_cvar host_xbox_e3_restart 0 // 15 +wait 0399 ; sm_cvar hostfile "myhost.txt" // "host.txt" +wait 0400 ; sm_cvar // hostip "1247506818" // "-1062731518" +wait 0401 ; sm_cvar hostname "Bizzy's Moonmod" // "step" +wait 0402 ; sm_cvar // hostport "27019" // "27015" +wait 0403 ; sm_cvar // hunk_track_allocation_types 0 // 0 +wait 0404 ; sm_cvar hunter_committed_attack_range 600 // 75 +wait 0405 ; sm_cvar hunter_leap_away_give_up_range 10000 // 1000 +wait 0406 ; sm_cvar hunter_pounce_air_speed 750 // 700 +wait 0407 ; sm_cvar hunter_pounce_loft_rate 0.03 // .035 +wait 0408 ; sm_cvar hunter_pounce_max_loft_angle 90 // 45 +wait 0409 ; sm_cvar hunter_pounce_ready_range 800 // 500 +wait 0410 ; sm_cvar hunter_pz_claw_dmg 8 // 6 +wait 0411 ; sm_cvar // in_forceuser 0 // 0 +wait 0412 ; sm_cvar incendiary_ammo_burn_time 6 // 4.0 +wait 0413 ; sm_cvar inferno_acid_spawn_angle 45 // 120 +wait 0414 ; sm_cvar // inferno_child_spawn_interval_multiplier 1 // 1 +wait 0415 ; sm_cvar // inferno_child_spawn_max_depth 5 // 4 +wait 0416 ; sm_cvar inferno_damage 50 // 40 +wait 0417 ; sm_cvar // inferno_debug 0 // 0 +wait 0418 ; sm_cvar // inferno_flame_lifetime 15 // 15 +wait 0419 ; sm_cvar // inferno_flame_spacing 50 // 50 +wait 0420 ; sm_cvar inferno_forward_reduction_factor 1.0 // 0.9 +wait 0421 ; sm_cvar inferno_friendly_fire_duration 15 // 6 +wait 0422 ; sm_cvar inferno_initial_spawn_interval 0.0 // 0.05 +wait 0423 ; sm_cvar // inferno_max_child_spawn_interval 1 // 1 +wait 0424 ; sm_cvar inferno_max_flames 50 // 32 +wait 0425 ; sm_cvar inferno_max_range 250 // 500 +wait 0426 ; sm_cvar // inferno_max_trace_per_tick 25 // 16 +wait 0427 ; sm_cvar // inferno_per_flame_spawn_duration 5 // 5 +wait 0428 ; sm_cvar inferno_scorch_decals 1 // 0 +wait 0429 ; sm_cvar // inferno_spawn_angle 45 // 45 +wait 0430 ; sm_cvar inferno_surface_offset 30 // 20 +wait 0431 ; sm_cvar // inferno_velocity_decay_factor 0.2 // 0.2 +wait 0432 ; sm_cvar inferno_velocity_factor 0.002 // 0.003 +wait 0433 ; sm_cvar // inferno_velocity_normal_factor 0.0 // 0 +wait 0434 ; sm_cvar intensity_averaged_following_decay 10 // 20 +wait 0435 ; sm_cvar intensity_decay_time 20 // 30 +wait 0436 ; sm_cvar intensity_enemy_death_far_range 1000 // 500 +wait 0437 ; sm_cvar intensity_enemy_death_near_range 500 // 150 +wait 0438 ; sm_cvar intensity_factor 1.0 // 0.25 +wait 0439 ; sm_cvar // intensity_lock -1 // -1 +wait 0440 ; sm_cvar // ip "74.91.113.130" // "localhost" +wait 0441 ; sm_cvar jockey_pounce_air_speed 750 // 700 +wait 0442 ; sm_cvar jockey_pounce_loft_rate 0.03 // .035 +wait 0443 ; sm_cvar jockey_pounce_max_loft_angle 90 // 45 +wait 0444 ; sm_cvar // jockey_pz_claw_dmg 4 // 4 +wait 0445 ; sm_cvar // l4d1_survivor_give_item 0 // 0 +wait 0446 ; sm_cvar // l4d2_addons_eclipse -1 // -1 +wait 0447 ; sm_cvar l4d2_melee_tank_nerf 0 // 0 +wait 0448 ; sm_cvar l4d2_slowdown_gunfire_si 0 // -1 +wait 0449 ; sm_cvar l4d2_slowdown_gunfire_tank 0 // -1 +wait 0450 ; sm_cvar l4d2_slowdown_water_survivors 180 // -1 +wait 0451 ; sm_cvar l4d2_slowdown_water_survivors_during_tank 180 // -1 +wait 0452 ; sm_cvar l4d2_slowdown_water_tank 180 // -1 +wait 0453 ; sm_cvar l4d2_reload_speed_silenced_smg 2.2 // 0 +wait 0454 ; sm_cvar l4d2_reload_speed_uzi 2.2 // 0 +wait 0455 ; sm_cvar l4d2_usecount 2147483647 // 5 +wait 0456 ; sm_cvar // l4d_show_incapupdate 0 // 0 +wait 0457 ; sm_cvar // l4d_show_weaponequip 0 // 0 +wait 0458 ; sm_cvar l4d_stats_nogameplaycheck 1 // 0 +wait 0459 ; sm_cvar l4d_stats_track 1 // 1 +wait 0460 ; sm_cvar // ladder_autocenter 1 // 1 +wait 0461 ; sm_cvar // ladder_console_controls 0 // 0 +wait 0462 ; sm_cvar ladder_horizon -0.4 // -0.3 +wait 0463 ; sm_cvar // lservercfgfile "listenserver.cfg" // "listenserver.cfg" +wait 0464 ; sm_cvar // map_noareas 0 // 0 +wait 0465 ; sm_cvar // mapcyclefile "mapcycle.txt" // "mapcycle.txt" +wait 0466 ; sm_cvar // mat_360_aa_override 0 // 0.0 +wait 0467 ; sm_cvar mat_aaquality 0 // 2 +wait 0468 ; sm_cvar mat_antialias 8 // 4 +wait 0469 ; sm_cvar // mat_bufferprimitives 1 // 1 +wait 0470 ; sm_cvar // mat_bumpbasis 0 // 0 +wait 0471 ; sm_cvar // mat_bumpmap 0 // 0 +wait 0472 ; sm_cvar // mat_compressedtextures 1 // 1 +wait 0473 ; sm_cvar // mat_debugalttab 0 // 0 +wait 0474 ; sm_cvar // mat_debugdepth 0 // 0 +wait 0475 ; sm_cvar // mat_depthbias_normal 0.0 // 0.0f +wait 0476 ; sm_cvar // mat_diffuse 1 // 1 +wait 0477 ; sm_cvar // mat_drawflat 0 // 0 +wait 0478 ; sm_cvar mat_dxlevel 92 // 92 +wait 0479 ; sm_cvar mat_dynamiclightmaps 1 // 0 +wait 0480 ; sm_cvar // mat_envmapsize 256 // 128 +wait 0481 ; sm_cvar // mat_envmaptgasize 64 // 32.0 +wait 0482 ; sm_cvar // mat_excludetextures 0 // 0 +wait 0483 ; sm_cvar // mat_fastnobump 0 // 0 +wait 0484 ; sm_cvar // mat_fastspecular 1 // 1 +wait 0485 ; sm_cvar // mat_fillrate 0 // 0 +wait 0486 ; sm_cvar // mat_filtertextures 1 // 1 +wait 0487 ; sm_cvar // mat_force_vertexfog 1 // 1 +wait 0488 ; sm_cvar mat_forceaniso 16 // 8 +wait 0489 ; sm_cvar mat_forcedynamic 1 // 0 +wait 0490 ; sm_cvar // mat_forcehardwaresync 1 // 1 +wait 0491 ; sm_cvar mat_forcemanagedtextureintohardware 1 // 0 +wait 0492 ; sm_cvar // mat_fullbright 0 // 0 +wait 0493 ; sm_cvar // mat_hdr_level 2 // 2 +wait 0494 ; sm_cvar // mat_hdr_tonemapscale 1 // 1.0 +wait 0495 ; sm_cvar mat_levelflush 0 // 1 +wait 0496 ; sm_cvar // mat_lightmap_pfms 0 // 0 +wait 0497 ; sm_cvar // mat_loadtextures 1 // 1 +wait 0498 ; sm_cvar // mat_luxels 0 // 0 +wait 0499 ; sm_cvar mat_maxframelatency 0 // 1 +wait 0500 ; sm_cvar // mat_measurefillrate 0 // 0 +wait 0501 ; sm_cvar // mat_mipmaptextures 1 // 1 +wait 0502 ; sm_cvar mat_monitorgamma 1.6 // 1.800000 +wait 0503 ; sm_cvar mat_monitorgamma_tv_enabled 1 // 0 +wait 0504 ; sm_cvar mat_monitorgamma_tv_exp 4.0 // 2.5 +wait 0505 ; sm_cvar // mat_monitorgamma_tv_range_max 255 // 255 +wait 0506 ; sm_cvar mat_monitorgamma_tv_range_min 0 // 16 +wait 0507 ; sm_cvar // mat_morphstats 0 // 0 +wait 0508 ; sm_cvar // mat_motion_blur_enabled 1 // 0 +wait 0509 ; sm_cvar // mat_norendering 0 // 0 +wait 0510 ; sm_cvar // mat_normalmaps 0 // 0 +wait 0511 ; sm_cvar // mat_normals 0 // 0 +wait 0512 ; sm_cvar // mat_parallaxmap 1 // 1 +wait 0513 ; sm_cvar // mat_phong 1 // 1 +wait 0514 ; sm_cvar mat_picmip -10 // -1 +wait 0515 ; sm_cvar // mat_proxy 0 // 0 +wait 0516 ; sm_cvar mat_queue_mode 2 // -1 +wait 0517 ; sm_cvar // mat_queue_report 0 // 0 +wait 0518 ; sm_cvar // mat_reducefillrate 0 // 0 +wait 0519 ; sm_cvar // mat_reduceparticles 0 // 0 +wait 0520 ; sm_cvar // mat_report_queue_status 0 // 0 +wait 0521 ; sm_cvar // mat_reversedepth 0 // 0 +wait 0522 ; sm_cvar // mat_shadowstate 1 // 1 +wait 0523 ; sm_cvar // mat_showenvmapmask 0 // 0 +wait 0524 ; sm_cvar // mat_showlowresimage 0 // 0 +wait 0525 ; sm_cvar // mat_showmiplevels 0 // 0 +wait 0526 ; sm_cvar // mat_softwarelighting 0 // 0 +wait 0527 ; sm_cvar // mat_softwareskin 0 // 0 +wait 0528 ; sm_cvar // mat_specular 1 // 1 +wait 0529 ; sm_cvar // mat_spewalloc 0 // 0 +wait 0530 ; sm_cvar // mat_supportflashlight 1 // 1 +wait 0531 ; sm_cvar // mat_tessellation_accgeometrytangents 0 // 0 +wait 0532 ; sm_cvar // mat_tessellation_cornertangents 1 // 1 +wait 0533 ; sm_cvar // mat_tessellation_update_buffers 1 // 1 +wait 0534 ; sm_cvar // mat_tessellationmode 1 // 1 +wait 0535 ; sm_cvar // mat_tonemapping_occlusion_use_stencil 0 // 0 +wait 0536 ; sm_cvar // mat_triplebuffered 0 // 0 +wait 0537 ; sm_cvar mat_vsync 0 // 1 +wait 0538 ; sm_cvar // mat_wireframe 0 // 0 +wait 0539 ; sm_cvar melee_collateral_shove_count 20 // 16 +wait 0540 ; sm_cvar melee_combo_reset_time 0.975 // 1.2 +wait 0541 ; sm_cvar melee_damage_charger 400 // 390 +wait 0542 ; sm_cvar melee_drop_method 0 // 2 +wait 0543 ; sm_cvar melee_force_scalar 25 // 20 +wait 0544 ; sm_cvar melee_force_scalar_combat_character 25 // 5 +wait 0545 ; sm_cvar melee_range 90 // 70 +wait 0546 ; sm_cvar // melee_show_swing 0 // 0 +wait 0547 ; sm_cvar // mem_dumpstats 0 // 0 +wait 0548 ; sm_cvar // mem_force_flush 0 // 0 +wait 0549 ; sm_cvar // mem_force_flush_section "" // "" +wait 0550 ; sm_cvar mem_incremental_compact_rate 1 // .5 +wait 0551 ; sm_cvar mem_level 2 // 3 +wait 0552 ; sm_cvar mem_max_heapsize 512 // 256 +wait 0553 ; sm_cvar mem_max_heapsize_dedicated 512 // 64 +wait 0554 ; sm_cvar mem_min_heapsize 512 // 48 +wait 0555 ; sm_cvar // mem_periodicdumps 0 // 0 +wait 0556 ; sm_cvar // mem_test_each_frame 0 // 0 +wait 0557 ; sm_cvar // mem_test_every_n_seconds 0 // 0 +wait 0558 ; sm_cvar // mem_test_quiet 0 // 0 +wait 0559 ; sm_cvar // mix_dynamic_cull_max_CI_emitters 0 // 0 +wait 0560 ; sm_cvar // mix_dynamic_debug_CI 0 // 0 +wait 0561 ; sm_cvar // mix_dynamic_max_CI_emitters 30 // 30 +wait 0562 ; sm_cvar // mix_dynamic_num_attack_vox_CI 2 // 2 +wait 0563 ; sm_cvar // mm_datacenter_delay_mount_frames 6 // 6 +wait 0564 ; sm_cvar // mm_datacenter_query_delay 5 // 5 +wait 0565 ; sm_cvar // mm_datacenter_report_version 5 // 5 +wait 0566 ; sm_cvar // mm_datacenter_retry_infochunks_attempts 3 // 3 +wait 0567 ; sm_cvar mm_datacenter_retry_interval 60 // 75 +wait 0568 ; sm_cvar mm_datacenter_update_interval 600 // 3600 +wait 0569 ; sm_cvar // mm_heartbeat_seconds 300 // 300 +wait 0570 ; sm_cvar // mm_heartbeat_seconds_xlsp 60 // 60 +wait 0571 ; sm_cvar // mm_heartbeat_timeout 10 // 10 +wait 0572 ; sm_cvar // mm_heartbeat_timeout_legacy 10 // 15 +wait 0573 ; sm_cvar // mm_matchmaking_dlcsquery 2 // 2 +wait 0574 ; sm_cvar // mm_matchmaking_version 10 // 10 +wait 0575 ; sm_cvar // mm_server_search_inet_ping_interval 1 // 1.0 +wait 0576 ; sm_cvar // mm_server_search_inet_ping_refresh 15 // 15 +wait 0577 ; sm_cvar // mm_server_search_inet_ping_timeout 5 // 3.0 +wait 0578 ; sm_cvar // mm_server_search_inet_ping_window 10 // 10 +wait 0579 ; sm_cvar // mm_server_search_lan_ping_duration 1 // 1.0 +wait 0580 ; sm_cvar mm_server_search_lan_ping_interval 0.25 // 0.4 +wait 0581 ; sm_cvar mm_server_search_lan_ports "27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025" // "27015,27016,27017,27018,27019,27020" +wait 0582 ; sm_cvar mm_server_search_server_lifetime 120 // 180 +wait 0583 ; sm_cvar mm_server_search_update_interval 30 // 60 +wait 0584 ; sm_cvar // mod_check_vcollide 0 // 0 +wait 0585 ; sm_cvar // mod_dont_load_vertices 0 // 0 +wait 0586 ; sm_cvar // mod_forcedata 1 // 1 +wait 0587 ; sm_cvar // mod_forcetouchdata 1 // 1 +wait 0588 ; sm_cvar // mod_load_anims_async 0 // 0 +wait 0589 ; sm_cvar // mod_load_fakestall 0 // 0 +wait 0590 ; sm_cvar // mod_load_mesh_async 0 // 0 +wait 0591 ; sm_cvar // mod_load_showstall 0 // 0 +wait 0592 ; sm_cvar // mod_load_vcollide_async 0 // 0 +wait 0593 ; sm_cvar // mod_lock_mdls_on_load 1 // 1 +wait 0594 ; sm_cvar // mod_lock_meshes_on_load 1 // 1 +wait 0595 ; sm_cvar // mod_test_mesh_not_available 0 // 0 +wait 0596 ; sm_cvar // mod_test_not_available 0 // 0 +wait 0597 ; sm_cvar // mod_test_verts_not_available 0 // 0 +wait 0598 ; sm_cvar // mod_touchalldata 1 // 1 +wait 0599 ; sm_cvar // mod_trace_load 0 // 0 +wait 0600 ; sm_cvar // morph_debug 0 // 0 +wait 0601 ; sm_cvar // morph_path 0 // 7 +wait 0602 ; sm_cvar motd_enabled 1 // 1 +wait 0603 ; sm_cvar motdfile "mymotd.txt" // "motd.txt" +wait 0604 ; sm_cvar mounted_gun_cooldown_time 0.1 // 60 +wait 0605 ; sm_cvar mounted_gun_mount_cooldown_time 0 // 0.5 +wait 0606 ; sm_cvar mounted_gun_overheat_penalty_time 0 // 60 +wait 0607 ; sm_cvar mounted_gun_overheat_time 100 // 15 +wait 0608 ; sm_cvar mounted_gun_rate_of_fire 15 // 8 +wait 0609 ; sm_cvar // mp_allowNPCs 1 // 1 +wait 0610 ; sm_cvar mp_allowspectators 1 // 1.0 +wait 0611 ; sm_cvar // mp_autocrosshair 1 // 1 +wait 0612 ; sm_cvar mp_autokick 0 // 0 +wait 0613 ; sm_cvar mp_autoteambalance 0 // 1 +wait 0614 ; sm_cvar // mp_blockstyle 1 // 1 +wait 0615 ; sm_cvar // mp_bonusroundtime 15 // 15 +wait 0616 ; sm_cvar mp_buytime 86400 // 1.5 +wait 0617 ; sm_cvar mp_c4timer 90 // 45 +wait 0618 ; sm_cvar mp_capdeteriorate_time 60 // 90.0 +wait 0619 ; sm_cvar // mp_capstyle 1 // 1 +wait 0620 ; sm_cvar mp_chattime 120 // 10 +wait 0621 ; sm_cvar // mp_clan_ready_signal "ready" // "ready" +wait 0622 ; sm_cvar // mp_clan_readyrestart 0 // 0 +wait 0623 ; sm_cvar // mp_defaultteam 0 // 0 +wait 0624 ; sm_cvar // mp_disable_respawn_times 0 // 0 +wait 0625 ; sm_cvar mp_enableroundwaittime 0 // 1 +wait 0626 ; sm_cvar mp_facefronttime 0.333333 // 2 +wait 0627 ; sm_cvar // mp_fadetoblack 0 // 0 +wait 0628 ; sm_cvar // mp_falldamage 0 // 0 +wait 0629 ; sm_cvar mp_feetmaxyawrate 90 // 100.0 +wait 0630 ; sm_cvar mp_feetyawrate 120 // 180 +wait 0631 ; sm_cvar mp_feetyawrate_max 180 // 360 +wait 0632 ; sm_cvar // mp_flashlight 1 // 1 +wait 0633 ; sm_cvar // mp_footsteps 1 // 1 +wait 0634 ; sm_cvar // mp_forcecamera 0 // 0 +wait 0635 ; sm_cvar // mp_forcerespawn 1 // 1 +wait 0636 ; sm_cvar // mp_fraglimit 0 // 0 +wait 0637 ; sm_cvar mp_freezetime 0 // 6 +wait 0638 ; sm_cvar // mp_friendlyfire 1 // 1 +wait 0639 ; sm_cvar // mp_gamemode "coop" // "coop" +wait 0640 ; sm_cvar // mp_humanteam "any" // "any" +wait 0641 ; sm_cvar // mp_ik 1 // 1 +wait 0642 ; sm_cvar mp_limitteams 0 // 2 +wait 0643 ; sm_cvar // mp_logdetail 0 // 0 +wait 0644 ; sm_cvar // mp_maxrounds 0 // 0 +wait 0645 ; sm_cvar // mp_playerid 1 // 1 +wait 0646 ; sm_cvar // mp_playerid_delay 0 // 0 +wait 0647 ; sm_cvar // mp_playerid_hold 0.25 // 0.25 +wait 0648 ; sm_cvar // mp_restartgame 0 // 0 +wait 0649 ; sm_cvar mp_roundlimit 5 // 3 +wait 0650 ; sm_cvar mp_roundtime 9 // 5 +wait 0651 ; sm_cvar // mp_showcleanedupents 0 // 0 +wait 0652 ; sm_cvar // mp_showgestureslots 0 // 0 +wait 0653 ; sm_cvar // mp_showroundtransitions 0 // 0 +wait 0654 ; sm_cvar // mp_slammoveyaw 0 // 0 +wait 0655 ; sm_cvar mp_spawnprotectiontime 0 // 5 +wait 0656 ; sm_cvar // mp_stalemate_at_timelimit 0 // 0 +wait 0657 ; sm_cvar // mp_stalemate_enable 0 // 0 +wait 0658 ; sm_cvar mp_stalemate_timelimit 0 // 240 +wait 0659 ; sm_cvar mp_startmoney 16000 // 800 +wait 0660 ; sm_cvar mp_teamlist "spectator,survivor,nick,gambler,ellis,mechanic,coach,rochelle,producer,bill,navvet,francis,biker,louis,manager,zoey,teenangst,zombie,infected,common,minion,hunter,smoker,gas,boomer,exploding,jockey,charger,spitter,witch,tank" // "hgrunt;scientist" +wait 0661 ; sm_cvar // mp_teamoverride 1 // 1 +wait 0662 ; sm_cvar // mp_teamplay 0 // 0 +wait 0663 ; sm_cvar mp_teams_unbalance_limit 0 // 1 +wait 0664 ; sm_cvar // mp_timelimit 0 // 0 +wait 0665 ; sm_cvar // mp_tkpunish 0 // 0 +wait 0666 ; sm_cvar // mp_tournament 0 // 0 +wait 0667 ; sm_cvar // mp_waitingforplayers_cancel 0 // 0 +wait 0668 ; sm_cvar // mp_waitingforplayers_restart 0 // 0 +wait 0669 ; sm_cvar // mp_waitingforplayers_time 0 // 0 +wait 0670 ; sm_cvar mp_weapon_ak47_price 0 // 2500 +wait 0671 ; sm_cvar mp_weapon_aug_price 0 // 3500 +wait 0672 ; sm_cvar mp_weapon_awp_price 0 // 4750 +wait 0673 ; sm_cvar mp_weapon_deagle_price 0 // 650 +wait 0674 ; sm_cvar mp_weapon_elite_price 0 // 800 +wait 0675 ; sm_cvar mp_weapon_famas_price 0 // 2250 +wait 0676 ; sm_cvar mp_weapon_fiveseven_price 0 // 750 +wait 0677 ; sm_cvar mp_weapon_g3sg1_price 0 // 5000 +wait 0678 ; sm_cvar mp_weapon_galil_price 0 // 2000 +wait 0679 ; sm_cvar mp_weapon_glock_price 0 // 400 +wait 0680 ; sm_cvar mp_weapon_m249_price 0 // 5750 +wait 0681 ; sm_cvar mp_weapon_m3_price 0 // 1700 +wait 0682 ; sm_cvar mp_weapon_m4a1_price 0 // 3100 +wait 0683 ; sm_cvar mp_weapon_mac10_price 0 // 1400 +wait 0684 ; sm_cvar mp_weapon_mp5navy_price 0 // 1500 +wait 0685 ; sm_cvar mp_weapon_p228_price 0 // 600 +wait 0686 ; sm_cvar mp_weapon_p90_price 0 // 2350 +wait 0687 ; sm_cvar mp_weapon_scout_price 0 // 2750 +wait 0688 ; sm_cvar mp_weapon_sg550_price 0 // 4200 +wait 0689 ; sm_cvar mp_weapon_sg552_price 0 // 3500 +wait 0690 ; sm_cvar mp_weapon_tmp_price 0 // 1250 +wait 0691 ; sm_cvar mp_weapon_ump45_price 0 // 1700 +wait 0692 ; sm_cvar mp_weapon_usp_price 0 // 500 +wait 0693 ; sm_cvar mp_weapon_xm1014_price 0 // 3000 +wait 0694 ; sm_cvar // mp_weaponstay 0 // 0 +wait 0695 ; sm_cvar // mp_winlimit 0 // 0 +wait 0696 ; sm_cvar music_bank_max_duration 86400 // 900 +wait 0697 ; sm_cvar music_bank_min_duration 86400 // 900 +wait 0698 ; sm_cvar music_calm_min_interval 30 // 45 +wait 0699 ; sm_cvar // music_dynamic_action_decay 10 // 10 +wait 0700 ; sm_cvar music_dynamic_ambient_decay 5 // 7 +wait 0701 ; sm_cvar music_dynamic_ambient_in_max 1.0 // .8 +wait 0702 ; sm_cvar // music_dynamic_ambient_in_min 0.5 // .5 +wait 0703 ; sm_cvar // music_dynamic_ambient_out_max 1.0 // 1.0 +wait 0704 ; sm_cvar // music_dynamic_ambient_out_min 0.0 // 0.0 +wait 0705 ; sm_cvar // music_dynamic_ambient_vol_min_alert 0.4 // 0.4 +wait 0706 ; sm_cvar // music_dynamic_attack_CI_close_decay 0.2 // .2 +wait 0707 ; sm_cvar music_dynamic_attack_CI_close_distmax 750 // 600 +wait 0708 ; sm_cvar music_dynamic_attack_CI_distmax 2500 // 2400 +wait 0709 ; sm_cvar // music_dynamic_attack_CI_near_decay 0.2 // .2 +wait 0710 ; sm_cvar music_dynamic_attack_CI_near_distmax 500 // 300 +wait 0711 ; sm_cvar music_dynamic_attack_CI_num 20 // 30 +wait 0712 ; sm_cvar // music_dynamic_attack_CI_veryclose_decay 0.2 // .2 +wait 0713 ; sm_cvar music_dynamic_attack_CI_veryclose_distmax 100 // 94 +wait 0714 ; sm_cvar // music_dynamic_calm_decay 10 // 15 +wait 0715 ; sm_cvar // music_dynamic_CI_sight_decay 10 // 8 +wait 0716 ; sm_cvar // music_dynamic_damage_decay 10 // 10.0 +wait 0717 ; sm_cvar // music_dynamic_damage_duck_damage_max 1.0 // 1.0 +wait 0718 ; sm_cvar // music_dynamic_damage_duck_damage_min 0.5 // 0.5 +wait 0719 ; sm_cvar // music_dynamic_damage_duck_max 0.3 // 0.37 +wait 0720 ; sm_cvar // music_dynamic_damage_duck_min 0.0 // 0.0 +wait 0721 ; sm_cvar // music_dynamic_damage_increment 0.1 // .1 +wait 0722 ; sm_cvar // music_dynamic_debug 0 // 0 +wait 0723 ; sm_cvar // music_dynamic_dodamage_decay 5 // 4 +wait 0724 ; sm_cvar // music_dynamic_dodamage_increment 0.025 // .02 +wait 0725 ; sm_cvar // music_dynamic_gunfire_decay 1 // 1 +wait 0726 ; sm_cvar // music_dynamic_gunfire_increment 0.4 // .4 +wait 0727 ; sm_cvar // music_dynamic_gunfireslow_decay 3 // 3 +wait 0728 ; sm_cvar // music_dynamic_gunfireslow_increment 0.3 // .3 +wait 0729 ; sm_cvar // music_dynamic_mob_action_close_max 0.4 // 0.42 +wait 0730 ; sm_cvar // music_dynamic_mob_action_close_min 0 // 0.0 +wait 0731 ; sm_cvar // music_dynamic_mob_action_decay 15 // 15 +wait 0732 ; sm_cvar // music_dynamic_mob_action_increment 0.1 // .1 +wait 0733 ; sm_cvar // music_dynamic_mob_action_max 1.0 // 1.0 +wait 0734 ; sm_cvar // music_dynamic_mob_action_min 0.0 // 0.0 +wait 0735 ; sm_cvar // music_dynamic_mob_choir_BPM 90 // 90 +wait 0736 ; sm_cvar // music_dynamic_mob_choir_interval_beats 16 // 16 +wait 0737 ; sm_cvar // music_dynamic_mob_choir_interval_randmultmax 3 // 3 +wait 0738 ; sm_cvar // music_dynamic_mob_damage_max 1 // 1.0 +wait 0739 ; sm_cvar // music_dynamic_mob_damage_min 0.6 // 0.6 +wait 0740 ; sm_cvar // music_dynamic_mob_decay 15 // 15 +wait 0741 ; sm_cvar // music_dynamic_mob_increment 0.1 // .1 +wait 0742 ; sm_cvar // music_dynamic_mob_large 50 // 49 +wait 0743 ; sm_cvar // music_dynamic_mob_max 1 // 1.0 +wait 0744 ; sm_cvar // music_dynamic_mob_med 30 // 29 +wait 0745 ; sm_cvar // music_dynamic_mob_min 0.5 // 0.5 +wait 0746 ; sm_cvar // music_dynamic_mob_small 20 // 20 +wait 0747 ; sm_cvar // music_dynamic_on 1 // 1 +wait 0748 ; sm_cvar // music_dynamic_PZ_BPM 80 // 80 +wait 0749 ; sm_cvar // music_dynamic_PZ_interval_randmultmax 5 // 5 +wait 0750 ; sm_cvar // music_dynamic_scavenge_beat 1 // 1 +wait 0751 ; sm_cvar music_dynamic_SI_close_distmax 1500 // 1200 +wait 0752 ; sm_cvar music_dynamic_SI_far_distmin 2000 // 1800 +wait 0753 ; sm_cvar music_dynamic_SI_inrange_distmax 2500 // 2400 +wait 0754 ; sm_cvar // music_dynamic_solosuccess_damagemin 0.3 // .3 +wait 0755 ; sm_cvar // music_dynamic_solosuccess_decay 4 // 4 +wait 0756 ; sm_cvar // music_dynamic_solosuccess_increment 1 // 1.0 +wait 0757 ; sm_cvar // music_dynamic_specials_interval_beats 5 // 5 +wait 0758 ; sm_cvar // music_dynamic_threat_decay 6 // 6 +wait 0759 ; sm_cvar // music_dynamic_update_interval 0.1 // .1 +wait 0760 ; sm_cvar music_dynamic_witch_alert_interval 30 // 37 +wait 0761 ; sm_cvar music_dynamic_witch_near_max 2000 // 1800 +wait 0762 ; sm_cvar music_dynamic_witch_near_min 500 // 360 +wait 0763 ; sm_cvar // music_intensity_override -1 // -1 +wait 0764 ; sm_cvar music_intensity_threshold 0.25 // 0.3 +wait 0765 ; sm_cvar music_large_area_reveal_repeat_threshold 30 // 60 +wait 0766 ; sm_cvar music_large_area_reveal_threshold 100000 // 500000 +wait 0767 ; sm_cvar // music_manager 1 // 1 +wait 0768 ; sm_cvar // music_min_pending_threat_time 10 // 10 +wait 0769 ; sm_cvar music_min_safe_time 5 // 3 +wait 0770 ; sm_cvar music_moment_of_silence_repeat_interval 300 // 600 +wait 0771 ; sm_cvar music_moment_of_silence_start_delay 30 // 60 +wait 0772 ; sm_cvar mv_maxplayers 32 // 30 +wait 0773 ; sm_cvar name "Bizzy" // "step" +wait 0774 ; sm_cvar name2 "Moon" // "unnamed" +wait 0775 ; sm_cvar nav_area_bgcolor "0 0 0 255" // "0 0 0 30" +wait 0776 ; sm_cvar nav_area_max_size 100 // 50 +wait 0777 ; sm_cvar // nav_blockers_can_affect_flow 1 // 1 +wait 0778 ; sm_cvar nav_coplanar_slope_limit 1.0 // 0.99 +wait 0779 ; sm_cvar nav_coplanar_slope_limit_displacement 1.0 // 0.7 +wait 0780 ; sm_cvar nav_corner_adjust_adjacent 16 // 18 +wait 0781 ; sm_cvar // nav_create_area_at_feet 0 // 0 +wait 0782 ; sm_cvar // nav_create_place_on_ground 0 // 0 +wait 0783 ; sm_cvar // nav_debug_blocked 0 // 0 +wait 0784 ; sm_cvar // nav_debug_finale_area 0 // 0 +wait 0785 ; sm_cvar // nav_displacement_test 10000 // 10000 +wait 0786 ; sm_cvar // nav_drag_selection_volume_zmax_offset 32 // 32 +wait 0787 ; sm_cvar // nav_drag_selection_volume_zmin_offset 32 // 32 +wait 0788 ; sm_cvar // nav_draw_limit 1000 // 500 +wait 0789 ; sm_cvar // nav_edit 0 // 0 +wait 0790 ; sm_cvar // nav_flood_select_tolerance 0 // 0 +wait 0791 ; sm_cvar nav_flow_max_survivor_climb_height 75 // 66 +wait 0792 ; sm_cvar nav_flow_max_survivor_drop_height 250 // 240 +wait 0793 ; sm_cvar // nav_fog_edit 0 // 0 +wait 0794 ; sm_cvar // nav_generate_fencetops 1 // 1 +wait 0795 ; sm_cvar // nav_generate_fixup_jump_areas 1 // 1 +wait 0796 ; sm_cvar // nav_generate_incremental_range 2000 // 2000 +wait 0797 ; sm_cvar // nav_generate_incremental_tolerance 0 // 0 +wait 0798 ; sm_cvar // nav_gui_rebuild 0 // 0 +wait 0799 ; sm_cvar nav_lying_down_percent 0 // 50 +wait 0800 ; sm_cvar nav_max_auto_area_size 8000 // 16384 +wait 0801 ; sm_cvar nav_max_view_distance 2000 // 1800.000000 +wait 0802 ; sm_cvar nav_max_vis_delta_list_length 50 // 64 +wait 0803 ; sm_cvar nav_obscure_range 300 // 400 +wait 0804 ; sm_cvar nav_potentially_visible_dot_tolerance 0.9 // 0.98 +wait 0805 ; sm_cvar // nav_quicksave 1 // 1 +wait 0806 ; sm_cvar // nav_recompute_flow_optimization 1 // 1 +wait 0807 ; sm_cvar // nav_save_history 10 // 10 +wait 0808 ; sm_cvar // nav_selected_set_border_color "100 100 0 255" // "100 100 0 255" +wait 0809 ; sm_cvar nav_selected_set_color "255 255 200 255" // "255 255 200 96" +wait 0810 ; sm_cvar // nav_show_approach_points 0 // 0 +wait 0811 ; sm_cvar nav_show_area_info 0.25 // 0.5 +wait 0812 ; sm_cvar // nav_show_compass 0 // 0 +wait 0813 ; sm_cvar // nav_show_connectionblockers 0 // 0 +wait 0814 ; sm_cvar // nav_show_danger 0 // 0 +wait 0815 ; sm_cvar // nav_show_light_intensity 0 // 0 +wait 0816 ; sm_cvar // nav_show_node_grid 0 // 0 +wait 0817 ; sm_cvar // nav_show_node_id 0 // 0 +wait 0818 ; sm_cvar // nav_show_nodes 0 // 0 +wait 0819 ; sm_cvar // nav_show_player_area 0 // 0 +wait 0820 ; sm_cvar // nav_show_player_counts 0 // 0 +wait 0821 ; sm_cvar nav_slope_limit 1.0 // 0.7 +wait 0822 ; sm_cvar nav_slope_tolerance 0.0 // 0.1 +wait 0823 ; sm_cvar // nav_snap_to_grid 0 // 0 +wait 0824 ; sm_cvar // nav_solid_props 1 // 0 +wait 0825 ; sm_cvar // nav_split_place_on_ground 0 // 0 +wait 0826 ; sm_cvar // nav_test_node 0 // 0 +wait 0827 ; sm_cvar // nav_test_node_crouch 0 // 0 +wait 0828 ; sm_cvar // nav_test_node_crouch_dir 4 // 4 +wait 0829 ; sm_cvar // nav_trouble_test_area 0 // 0 +wait 0830 ; sm_cvar // nav_trouble_test_debug_duration 10 // 10 +wait 0831 ; sm_cvar // nav_trouble_walkable_backtrace 0 // 0 +wait 0832 ; sm_cvar // nav_update_visibility_on_edit 0 // 0 +wait 0833 ; sm_cvar // nb_acceleration 500 // 500 +wait 0834 ; sm_cvar // nb_allow_avoiding 1 // 1 +wait 0835 ; sm_cvar // nb_allow_climbing 1 // 1 +wait 0836 ; sm_cvar // nb_allow_gap_jumping 1 // 1 +wait 0837 ; sm_cvar nb_avoid 0 // 2 +wait 0838 ; sm_cvar nb_avoid_interval 1 // 0.5 +wait 0839 ; sm_cvar // nb_blind 0 // 0 +wait 0840 ; sm_cvar nb_chase_lead_time 0 // 2.0 +wait 0841 ; sm_cvar // nb_debug_climbing 0 // 0 +wait 0842 ; sm_cvar // nb_debug_history 0 // 0 +wait 0843 ; sm_cvar // nb_direct_chase_nav_check 1 // 1 +wait 0844 ; sm_cvar nb_friction_forward 3 // 0 +wait 0845 ; sm_cvar nb_friction_sideways 3 // 3 +wait 0846 ; sm_cvar nb_goal_look_ahead_range 100 // 50 +wait 0847 ; sm_cvar nb_gravity 2000 // 1000 +wait 0848 ; sm_cvar // nb_head_aim_settle_duration 0.1 // 0.3 +wait 0849 ; sm_cvar nb_head_aim_steady_max_rate 3000 // 100 +wait 0850 ; sm_cvar nb_ladder_align_range 100 // 50 +wait 0851 ; sm_cvar nb_lean_forward_accel 200 // 100 +wait 0852 ; sm_cvar // nb_lean_max_angle 30 // 30 +wait 0853 ; sm_cvar nb_lean_rate 4 // 3 +wait 0854 ; sm_cvar nb_path_draw_inc 2147483648 // 100 +wait 0855 ; sm_cvar nb_path_segment_influence_radius 2147483648 // 100 +wait 0856 ; sm_cvar // nb_player_crouch 0 // 0 +wait 0857 ; sm_cvar // nb_player_move 1 // 1 +wait 0858 ; sm_cvar // nb_player_move_direct 0 // 0 +wait 0859 ; sm_cvar // nb_player_stop 0 // 0 +wait 0860 ; sm_cvar // nb_player_walk 0 // 0 +wait 0861 ; sm_cvar nb_saccade_speed 3000 // 1000 +wait 0862 ; sm_cvar // nb_saccade_time 0.1 // 0.1 +wait 0863 ; sm_cvar // nb_speed_look_ahead_range 300 // 150 +wait 0864 ; sm_cvar // nb_stop 0 // 0 +wait 0865 ; sm_cvar // nb_stuck_dump_filter_entindex 0 // 0 +wait 0866 ; sm_cvar // nb_stuck_dump_filter_identifier "" // "" +wait 0867 ; sm_cvar // nb_stuck_dump_filter_min_duration 0 // 0 +wait 0868 ; sm_cvar nb_stuck_dump_filter_time_end 86400 // 99999 +wait 0869 ; sm_cvar // nb_stuck_dump_filter_time_start 0 // 0 +wait 0870 ; sm_cvar // nb_stuck_dump_show_details 0 // 0 +wait 0871 ; sm_cvar // nb_stuck_dump_threshold -1 // -1 +wait 0872 ; sm_cvar // nb_update_debug 0 // 0 +wait 0873 ; sm_cvar nb_update_framelimit 10 // 15 +wait 0874 ; sm_cvar nb_update_frequency 0.016667 // .1 +wait 0875 ; sm_cvar nb_update_maxslide 10 // 2 +wait 0876 ; sm_cvar // nb_vision_ignore_survivors 0 // 0 +wait 0877 ; sm_cvar nb_vision_notice_hidden_range 0 // 50 +wait 0878 ; sm_cvar nb_yaw_rate 300 // 250 +wait 0879 ; sm_cvar // net_allow_multicast 1 // 1 +wait 0880 ; sm_cvar // net_allow_syslink 1 // 1 +wait 0881 ; sm_cvar // net_blockmsg 0 // 0 +wait 0882 ; sm_cvar // net_chan_limit_disabled 0 // 0 +wait 0883 ; sm_cvar // net_chan_limit_in_debug_session 0 // 0 +wait 0884 ; sm_cvar // net_chan_limit_msec 0 // 0 +wait 0885 ; sm_cvar // net_chan_stats_dump 0 // 0 +wait 0886 ; sm_cvar net_chan_stats_dump_top_msgs 0 // 5 +wait 0887 ; sm_cvar net_chan_stats_lru 0 // 3 +wait 0888 ; sm_cvar // net_chokeloop 0 // 0 +wait 0889 ; sm_cvar // net_compresspackets 1 // 1 +wait 0890 ; sm_cvar net_compresspackets_minsize 1200 // 1000 +wait 0891 ; sm_cvar // net_compressvoice 0 // 0 +wait 0892 ; sm_cvar // net_drawslider 0 // 0 +wait 0893 ; sm_cvar // net_droppackets 0 // 0 +wait 0894 ; sm_cvar // net_dumptest 0 // 0 +wait 0895 ; sm_cvar // net_fakejitter 0 // 0 +wait 0896 ; sm_cvar // net_fakelag 0 // 0 +wait 0897 ; sm_cvar // net_fakeloss 0 // 0 +wait 0898 ; sm_cvar net_maxcleartime 0.008333 // 4.0 +wait 0899 ; sm_cvar net_maxfilesize 64 // 16 +wait 0900 ; sm_cvar // net_maxfragments 1200 // 1200 +wait 0901 ; sm_cvar // net_maxroutable 1200 // 1200 +wait 0902 ; sm_cvar // net_megasnapshot 1 // 1 +wait 0903 ; sm_cvar net_minroutable 1200 // 16 +wait 0904 ; sm_cvar // net_paranoid 1 // 1 +wait 0905 ; sm_cvar // net_public_adr "" // "" +wait 0906 ; sm_cvar // net_queue_trace 0 // 0 +wait 0907 ; sm_cvar // net_queued_packet_thread 1 // 1 +wait 0908 ; sm_cvar // net_showdrop 0 // 0 +wait 0909 ; sm_cvar // net_showeventlisteners 0 // 0 +wait 0910 ; sm_cvar // net_showevents 0 // 0 +wait 0911 ; sm_cvar // net_showfragments 0 // 0 +wait 0912 ; sm_cvar // net_showmsg 0 // 0 +wait 0913 ; sm_cvar // net_showpeaks 0 // 0 +wait 0914 ; sm_cvar // net_showreliablesounds 0 // 0 +wait 0915 ; sm_cvar // net_showsplits 0 // 0 +wait 0916 ; sm_cvar // net_showtcp 0 // 0 +wait 0917 ; sm_cvar // net_showudp 0 // 0 +wait 0918 ; sm_cvar // net_showudp_remoteonly 0 // 0 +wait 0919 ; sm_cvar net_splitpacket_maxrate 72000 // 15000 +wait 0920 ; sm_cvar // net_splitrate 2 // 1 +wait 0921 ; sm_cvar // net_usesocketsforloopback 0 // 0 +wait 0922 ; sm_cvar // next 0 // 0 +wait 0923 ; sm_cvar // nextlevel "" // "" +wait 0924 ; sm_cvar // noclip_fixup 1 // 1 +wait 0925 ; sm_cvar // npc_height_adjust 1 // 1 +wait 0926 ; sm_cvar // npc_vphysics 0 // 0 +wait 0927 ; sm_cvar // old_radiusdamage 0.0 // 0.0 +wait 0928 ; sm_cvar pain_pills_decay_rate 0.166667 // 0.27 +wait 0929 ; sm_cvar // pain_pills_health_threshold 99 // 99 +wait 0930 ; sm_cvar // pain_pills_health_value 50 // 50 +wait 0931 ; sm_cvar // particle_test_attach_attachment 0 // 0 +wait 0932 ; sm_cvar // particle_test_attach_mode "follow_attachment" // "follow_attachment" +wait 0933 ; sm_cvar // particle_test_file "" // "" +wait 0934 ; sm_cvar // password "" // "" +wait 0935 ; sm_cvar // perf_fire_bullet_firstpredictedonly 1 // 1 +wait 0936 ; sm_cvar // perf_fire_bullet_single 0 // 0 +wait 0937 ; sm_cvar // phys2_ccd_epsilon 0.0 // 0.01 +wait 0938 ; sm_cvar // phys2_cmodels 1 // 1 +wait 0939 ; sm_cvar // phys2_continuous_cd 1 // 1 +wait 0940 ; sm_cvar // phys2_debug_dump_entities 0 // 0 +wait 0941 ; sm_cvar // phys2_debug_traceray 0 // 0 +wait 0942 ; sm_cvar // phys2_debug_wakeup 0 // 0 +wait 0943 ; sm_cvar // phys2_dedicated_thread_pool 0 // 0 +wait 0944 ; sm_cvar // phys2_dump_exclude_list 0 // 0 +wait 0945 ; sm_cvar // phys2_dump_runtime_sizes 0 // 0 +wait 0946 ; sm_cvar // phys2_hack_ignore_models 0 // 0 +wait 0947 ; sm_cvar // phys2_hack_replace_bboxes 0 // 0 +wait 0948 ; sm_cvar // phys2_merge_static_props 1 // 1 +wait 0949 ; sm_cvar // phys2_num_threads 0 // 4 +wait 0950 ; sm_cvar // phys2_preload_models 0 // 1 +wait 0951 ; sm_cvar // phys2_ragdoll_clamp_angular_velocity 30 // 30 +wait 0952 ; sm_cvar // phys2_ragdoll_clamp_linear_velocity 600 // 600 +wait 0953 ; sm_cvar // phys2_ragdoll_create_constraints 1 // 1 +wait 0954 ; sm_cvar // phys2_ragdoll_force_magnitude 5 // 5 +wait 0955 ; sm_cvar // phys2_ragdoll_log 0 // 0 +wait 0956 ; sm_cvar // phys2_ragdoll_torque_magnitude 0.0 // 0.03 +wait 0957 ; sm_cvar // phys2_ragdoll_velocity 1 // 1 +wait 0958 ; sm_cvar // phys2_report_asserts 1 // 1 +wait 0959 ; sm_cvar // phys2_report_errors 1 // 1 +wait 0960 ; sm_cvar // phys2_report_messages 0 // 0 +wait 0961 ; sm_cvar // phys2_report_warnings 1 // 1 +wait 0962 ; sm_cvar // phys2_shoot_speed 250 // 250 +wait 0963 ; sm_cvar // phys2_vdb 0 // 0 +wait 0964 ; sm_cvar // phys2_vdb_host "74.91.113.130" // "localhost" +wait 0965 ; sm_cvar // phys2_version "Obsolete" // "Version 2.2 (w/scheduler), built Nov 15 2021 13:55:21" +wait 0966 ; sm_cvar // phys2_visualize 0 // 0 +wait 0967 ; sm_cvar phys_enable_experimental_optimizations 1 // 0 +wait 0968 ; sm_cvar // phys_enable_PIX_counters 1 // 1 +wait 0969 ; sm_cvar // phys_enable_query_cache 1 // 1 +wait 0970 ; sm_cvar // phys_enable_simd_optimizations 1 // 1 +wait 0971 ; sm_cvar phys_explosion_force 1.0 // 7.0 +wait 0972 ; sm_cvar phys_impactforcescale 1.0 // 1.0 +wait 0973 ; sm_cvar phys_penetration_error_time 5 // 10 +wait 0974 ; sm_cvar phys_pushscale 2.0 // 1 +wait 0975 ; sm_cvar phys_ragdoll_force_magnitude 0.5 // 0.3 +wait 0976 ; sm_cvar phys_shoot_torque 1000000 // 100000000 +wait 0977 ; sm_cvar // phys_speeds 0 // 0 +wait 0978 ; sm_cvar // phys_stressbodyweights 5.0 // 5.0 +wait 0979 ; sm_cvar // phys_timescale 1.0 // 1 +wait 0980 ; sm_cvar phys_upimpactforcescale 0.5 // 0.375 +wait 0981 ; sm_cvar // physicsshadowupdate_render 0 // 0 +wait 0982 ; sm_cvar PhysPMC 1 // 0 +wait 0983 ; sm_cvar // physx_debug_dll 0 // 0 +wait 0984 ; sm_cvar // physx_subdir "" // "" +wait 0985 ; sm_cvar physx_valve_dll 1 // 0 +wait 0986 ; sm_cvar pipe_bomb_beep_interval_delta 0.02 // 0.025 +wait 0987 ; sm_cvar pipe_bomb_beep_min_interval 0.075 // 0.1 +wait 0988 ; sm_cvar // pipe_bomb_initial_beep_interval 0.5 // 0.5 +wait 0989 ; sm_cvar // pipe_bomb_shake_amplitude 50 // 50 +wait 0990 ; sm_cvar pipe_bomb_shake_radius 1000 // 750 +wait 0991 ; sm_cvar pipe_bomb_timer_duration 7.5 // 6 +wait 0992 ; sm_cvar // pipeline_static_props 1 // 1 +wait 0993 ; sm_cvar // player_debug_print_damage 0 // 0 +wait 0994 ; sm_cvar player_incap_use_radius 150 // 96 +wait 0995 ; sm_cvar // player_old_armor 0 // 0 +wait 0996 ; sm_cvar player_throwforce 2500 // 2000 +wait 0997 ; sm_cvar player_use_radius 125 // 96 +wait 0998 ; sm_cvar precache_all_survivors 1 // 0 +wait 0999 ; sm_cvar prop_active_gib_limit 30 // 999999 +wait 1000 ; sm_cvar prop_active_gib_max_fade_time 10 // 999999 +wait 1001 ; sm_cvar prop_use 1 // 0 +wait 1002 ; sm_cvar props_break_max_pieces -1 // 50 +wait 1003 ; sm_cvar // props_break_max_pieces_perframe -1 // -1 +wait 1004 ; sm_cvar // punch_angle_decay_rate 15 // 20 +wait 1005 ; sm_cvar // r_AirboatViewDampenDamp 1.0 // 1.0 +wait 1006 ; sm_cvar r_AirboatViewDampenFreq 5.0 // 7.0 +wait 1007 ; sm_cvar // r_AirboatViewZHeight 0 // 0.0 +wait 1008 ; sm_cvar // r_ambientboost 1.0 // 1 +wait 1009 ; sm_cvar // r_ambientfactor 10.0 // 5 +wait 1010 ; sm_cvar // r_ambientfraction 0.5 // 0.2 +wait 1011 ; sm_cvar // r_ambientmin 0.5 // 0.3 +wait 1012 ; sm_cvar // r_colorstaticprops 0 // 0 +wait 1013 ; sm_cvar // r_debugrandomstaticlighting 0 // 0 +wait 1014 ; sm_cvar r_decal_cover_count 2147483647 // 4 +wait 1015 ; sm_cvar r_decal_overlap_area 1.0 // 0.4 +wait 1016 ; sm_cvar r_decal_overlap_count 2147483647 // 1 +wait 1017 ; sm_cvar r_decals 2147483647 // 512 +wait 1018 ; sm_cvar // r_decalstaticprops 1 // 1 +wait 1019 ; sm_cvar // r_DispBuildable 0 // 0 +wait 1020 ; sm_cvar // r_DispWalkable 0 // 0 +wait 1021 ; sm_cvar // r_drawbatchdecals 1 // 1 +wait 1022 ; sm_cvar // r_drawbrushmodels 1 // 1 +wait 1023 ; sm_cvar // r_drawdecals 1 // 1 +wait 1024 ; sm_cvar // r_DrawDisp 1 // 1 +wait 1025 ; sm_cvar // r_drawentities 1 // 1 +wait 1026 ; sm_cvar // r_drawfuncdetail 1 // 1 +wait 1027 ; sm_cvar // r_drawleaf -1 // -1 +wait 1028 ; sm_cvar // r_drawlightcache 0 // 0 +wait 1029 ; sm_cvar // r_drawmodeldecals 1 // 1 +wait 1030 ; sm_cvar // r_DrawModelLightOrigin 0 // 0 +wait 1031 ; sm_cvar // r_drawmodelstatsoverlay 0 // 0 +wait 1032 ; sm_cvar r_drawmodelstatsoverlaydistance 1000 // 500 +wait 1033 ; sm_cvar r_drawmodelstatsoverlaymax 2 // 1.5 +wait 1034 ; sm_cvar r_drawmodelstatsoverlaymin 1 // 0.1 +wait 1035 ; sm_cvar // r_DrawSpecificStaticProp -1 // -1 +wait 1036 ; sm_cvar // r_drawstaticprops 1 // 1 +wait 1037 ; sm_cvar // r_drawtranslucentworld 1 // 1 +wait 1038 ; sm_cvar // r_drawworld 1 // 1 +wait 1039 ; sm_cvar // r_dscale_basefov 90 // 90 +wait 1040 ; sm_cvar // r_dscale_fardist 2000 // 2000 +wait 1041 ; sm_cvar // r_dscale_farscale 4 // 4 +wait 1042 ; sm_cvar // r_dscale_neardist 100 // 100 +wait 1043 ; sm_cvar // r_dscale_nearscale 1 // 1 +wait 1044 ; sm_cvar // r_dynamic 1 // 1 +wait 1045 ; sm_cvar // r_entity -1 // -1 +wait 1046 ; sm_cvar // r_eyeglintlodpixels 20 // 20.0 +wait 1047 ; sm_cvar // r_eyemove 1 // 1 +wait 1048 ; sm_cvar // r_eyes 1 // 1 +wait 1049 ; sm_cvar r_eyeshift_x 0.0 // 0 +wait 1050 ; sm_cvar r_eyeshift_y 0.0 // 0 +wait 1051 ; sm_cvar r_eyeshift_z 0.0 // 0 +wait 1052 ; sm_cvar r_eyesize 0.0 // 0 +wait 1053 ; sm_cvar // r_fastzreject 0 // 0 +wait 1054 ; sm_cvar // r_fastzrejectdisp 0 // 0 +wait 1055 ; sm_cvar r_flashlightdepthtexture 1 // 0 +wait 1056 ; sm_cvar // r_flashlightscissor 1 // 1 +wait 1057 ; sm_cvar // r_flex 1 // 1 +wait 1058 ; sm_cvar // r_ForceRestore 0 // 0 +wait 1059 ; sm_cvar // r_glint_alwaysdraw 0 // 0 +wait 1060 ; sm_cvar // r_glint_procedural 0 // 0 +wait 1061 ; sm_cvar // r_hunkalloclightmaps 1 // 1 +wait 1062 ; sm_cvar r_hwmorph 1 // 0 +wait 1063 ; sm_cvar r_itemblinkmax 0.5 // .3 +wait 1064 ; sm_cvar r_itemblinkrate 5.0 // 4.5 +wait 1065 ; sm_cvar // r_JeepFOV 90 // 90 +wait 1066 ; sm_cvar // r_JeepViewDampenDamp 1.0 // 1.0 +wait 1067 ; sm_cvar r_JeepViewDampenFreq 5.0 // 7.0 +wait 1068 ; sm_cvar // r_JeepViewZHeight 10 // 10.0 +wait 1069 ; sm_cvar // r_lightaverage 1 // 1 +wait 1070 ; sm_cvar // r_lightcachemodel -1 // -1 +wait 1071 ; sm_cvar // r_lightinterp 0 // 5 +wait 1072 ; sm_cvar // r_lightmap -1 // -1 +wait 1073 ; sm_cvar // r_lightstyle -1 // -1 +wait 1074 ; sm_cvar // r_lockpvs 0 // 0 +wait 1075 ; sm_cvar r_lod 0 // -1 +wait 1076 ; sm_cvar r_maxmodeldecal 2147483647 // 50 +wait 1077 ; sm_cvar // r_modelwireframedecal 0 // 0 +wait 1078 ; sm_cvar // r_nohw 0 // 0 +wait 1079 ; sm_cvar // r_norefresh 0 // 0 +wait 1080 ; sm_cvar // r_nosw 0 // 0 +wait 1081 ; sm_cvar // r_novis 0 // 0 +wait 1082 ; sm_cvar // r_occludeemaxarea 0 // 0 +wait 1083 ; sm_cvar // r_occluderminarea 0 // 0 +wait 1084 ; sm_cvar // r_occludermincount 0 // 0 +wait 1085 ; sm_cvar // r_occlusion 1 // 1 +wait 1086 ; sm_cvar // r_occlusionspew 0 // 0 +wait 1087 ; sm_cvar // r_overlayfadeenable 0 // 0 +wait 1088 ; sm_cvar // r_overlayfademax 2000 // 2000 +wait 1089 ; sm_cvar r_overlayfademin 1500 // 1750 +wait 1090 ; sm_cvar // r_overlaywireframe 0 // 0 +wait 1091 ; sm_cvar // r_partition_level -1 // -1 +wait 1092 ; sm_cvar // r_proplightingfromdisk 1 // 1 +wait 1093 ; sm_cvar // r_proplightingpooling -1 // -1.0 +wait 1094 ; sm_cvar r_queued_decals 1 // 0 +wait 1095 ; sm_cvar // r_randomflex 0 // 0 +wait 1096 ; sm_cvar // r_renderoverlayfragment 1 // 1 +wait 1097 ; sm_cvar // r_rootlod 0 // 0 +wait 1098 ; sm_cvar r_shadowlod 0 // -1 +wait 1099 ; sm_cvar r_shadowlodbias 3 // 2 +wait 1100 ; sm_cvar // r_shadowrendertotexture 1 // 1 +wait 1101 ; sm_cvar // r_showenvcubemap 0 // 0 +wait 1102 ; sm_cvar r_skin 1 // 0 +wait 1103 ; sm_cvar // r_slowpathwireframe 0 // 0 +wait 1104 ; sm_cvar r_spray_lifetime 2147483647 // 10 +wait 1105 ; sm_cvar // r_staticlight_streams 1 // 1 +wait 1106 ; sm_cvar // r_staticprop_lod 0 // -1 +wait 1107 ; sm_cvar // r_staticpropinfo 0 // 0 +wait 1108 ; sm_cvar // r_teeth 1 // 1 +wait 1109 ; sm_cvar // r_unloadlightmaps 0 // 0 +wait 1110 ; sm_cvar r_vehicleBrakeRate 2.0 // 1.5 +wait 1111 ; sm_cvar // r_VehicleViewDampen 1.0 // 1 +wait 1112 ; sm_cvar // r_visocclusion 0 // 0 +wait 1113 ; sm_cvar // r_visualizetraces 0 // 0 +wait 1114 ; sm_cvar // radius_damage_show_hits 0 // 0 +wait 1115 ; sm_cvar // ragdoll_collide 0 // 0 +wait 1116 ; sm_cvar ragdoll_door_uncollide_time 2 // 4.0 +wait 1117 ; sm_cvar ragdoll_force_to_sleep_time 3 // 10 +wait 1118 ; sm_cvar ragdoll_self_collision 0 // 1 +wait 1119 ; sm_cvar ragdoll_sleepaftertime 3 // 5 +wait 1120 ; sm_cvar // ragdoll_slowdown 1 // 1.0 +wait 1121 ; sm_cvar ragdoll_slowdown_time 3 // 5.0 +wait 1122 ; sm_cvar rcon_password "BigBizzy101" // "" +wait 1123 ; sm_cvar // res_restrict_access 0 // 0 +wait 1124 ; sm_cvar rescue_distance 4000 // 4500 +wait 1125 ; sm_cvar // rescue_finale_ignore_distance 4000 // 4000 +wait 1126 ; sm_cvar // rescue_finale_spawn_range 4000 // 4000 +wait 1127 ; sm_cvar // rescue_ignore_distance 2000 // 2000 +wait 1128 ; sm_cvar rescue_interval 1 // 2.5 +wait 1129 ; sm_cvar rescue_min_dead_time 10 // 60 +wait 1130 ; sm_cvar rescue_range 2000 // 1000 +wait 1131 ; sm_cvar rescue_spawn_flow 1000 // 400 +wait 1132 ; sm_cvar rescue_spawn_range 4000 // 2000 +wait 1133 ; sm_cvar rescue_yell_delay 3 // 1 +wait 1134 ; sm_cvar rescue_yell_interval 10 // 6 +wait 1135 ; sm_cvar rpt_vprof_time 0.0 // 0.25 +wait 1136 ; sm_cvar // rr_debugplayer -1 // -1 +wait 1137 ; sm_cvar // rr_debugresponseconcept "" // "" +wait 1138 ; sm_cvar // rr_debugresponses 0 // 0 +wait 1139 ; sm_cvar // rr_debugrule "" // "" +wait 1140 ; sm_cvar // rr_dumpresponses 0 // 0 +wait 1141 ; sm_cvar rr_followup_maxdist 2000 // 1800 +wait 1142 ; sm_cvar // rr_remarkable_maxdist 1500 // 1500 +wait 1143 ; sm_cvar // rr_remarkable_world_entities_replay_limit 0 // 1 +wait 1144 ; sm_cvar // rr_thenany_score_slop 0.0 // 0.0 +wait 1145 ; sm_cvar sb_all_bot_game 1 // 0 +wait 1146 ; sm_cvar // sb_allow_leading 0 // 0 +wait 1147 ; sm_cvar sb_allow_shoot_through_survivors 0 // 1 +wait 1148 ; sm_cvar sb_battlestation_give_up_range_from_human 500 // 1500 +wait 1149 ; sm_cvar sb_battlestation_human_hold_time 1 // 4 +wait 1150 ; sm_cvar sb_close_checkpoint_door_interval 4 // 2 +wait 1151 ; sm_cvar sb_close_threat_range 100 // 200 +wait 1152 ; sm_cvar sb_combat_saccade_speed 3000 // 1000 +wait 1153 ; sm_cvar // sb_crouch 0 // 0 +wait 1154 ; sm_cvar sb_debug_apoproach_wait_time 0 // 5 +wait 1155 ; sm_cvar // sb_debug_buddy 0 // 0 +wait 1156 ; sm_cvar // sb_debug_locomotion 0 // 0 +wait 1157 ; sm_cvar // sb_debug_retreat 0 // 0 +wait 1158 ; sm_cvar // sb_debug_team_avoidance 0 // 0 +wait 1159 ; sm_cvar // sb_dont_bash 0 // 0 +wait 1160 ; sm_cvar // sb_dont_shoot 0 // 0 +wait 1161 ; sm_cvar sb_enforce_proximity_lookat_timeout 5 // 10 +wait 1162 ; sm_cvar sb_enforce_proximity_range 1000 // 1500 +wait 1163 ; sm_cvar // sb_escort 0 // 0 +wait 1164 ; sm_cvar sb_far_hearing_range 3000 // 1500 +wait 1165 ; sm_cvar // sb_flashlight 0 // 0 +wait 1166 ; sm_cvar sb_follow_stress_factor 0.0 // 0.5 +wait 1167 ; sm_cvar sb_friend_immobilized_reaction_time_expert 0.0 // 0.5 +wait 1168 ; sm_cvar sb_friend_immobilized_reaction_time_hard 0.0 // 1.0 +wait 1169 ; sm_cvar sb_friend_immobilized_reaction_time_normal 0.0 // 2.0 +wait 1170 ; sm_cvar sb_friend_immobilized_reaction_time_vs 0.0 // 0.5 +wait 1171 ; sm_cvar // sb_friendlyfire 0 // 0 +wait 1172 ; sm_cvar sb_hindrance_range 50 // 150 +wait 1173 ; sm_cvar // sb_hold_position 0 // 0 +wait 1174 ; sm_cvar sb_l4d1_survivor_behavior 0 // 1 +wait 1175 ; sm_cvar sb_locomotion_wait_threshold 2 // 10 +wait 1176 ; sm_cvar sb_max_battlestation_range_from_human 500 // 750 +wait 1177 ; sm_cvar sb_max_scavenge_separation 500 // 750 +wait 1178 ; sm_cvar sb_max_team_melee_weapons 4 // 0 +wait 1179 ; sm_cvar // sb_melee_approach_victim 0 // 0 +wait 1180 ; sm_cvar sb_min_attention_notice_time 0.0 // 0.5 +wait 1181 ; sm_cvar sb_min_orphan_time_to_cover 0.0 // 1 +wait 1182 ; sm_cvar sb_minigun_distance 50 // 30.0 +wait 1183 ; sm_cvar // sb_move 1 // 1 +wait 1184 ; sm_cvar sb_narrow_corridor_width 64 // 100 +wait 1185 ; sm_cvar sb_near_hearing_range 2000 // 500 +wait 1186 ; sm_cvar // sb_neighbor_range 300 // 300 +wait 1187 ; sm_cvar sb_normal_saccade_speed 3000 // 350 +wait 1188 ; sm_cvar // sb_open_fire 0 // 0 +wait 1189 ; sm_cvar sb_path_lookahead_range 500 // 200 +wait 1190 ; sm_cvar // sb_perf_crawl 0 // 0 +wait 1191 ; sm_cvar // sb_perf_crawl_ang 0 // 5 +wait 1192 ; sm_cvar // sb_perf_crawl_dist 0 // 128 +wait 1193 ; sm_cvar // sb_perf_crawl_time 0 // 1.0 +wait 1194 ; sm_cvar // sb_perf_dump 0 // 0 +wait 1195 ; sm_cvar // sb_perf_dump_bots "" // "" +wait 1196 ; sm_cvar sb_pushscale 0.0 // 1.0 +wait 1197 ; sm_cvar sb_reachability_cache_lifetime 0 // 3 +wait 1198 ; sm_cvar sb_reachable_cache_paranoia 0 // 0 +wait 1199 ; sm_cvar // sb_replacement_interval 0 // 0 +wait 1200 ; sm_cvar sb_rescue_vehicle_loading_range 50 // 300 +wait 1201 ; sm_cvar sb_revive_friend_distance 175 // 125.0 +wait 1202 ; sm_cvar sb_separation_danger_max_range 300 // 600 +wait 1203 ; sm_cvar // sb_separation_danger_min_range 100 // 200 +wait 1204 ; sm_cvar sb_separation_range 300 // 200 +wait 1205 ; sm_cvar // sb_show_threat_areas 0 // 0 +wait 1206 ; sm_cvar sb_sidestep_for_horde 1 // 0 +wait 1207 ; sm_cvar // sb_skill "survivor" // "survivor" +wait 1208 ; sm_cvar // sb_stop 0 // 0 +wait 1209 ; sm_cvar sb_temp_health_consider_factor 0.8 // 0.5 +wait 1210 ; sm_cvar sb_threat_close_range 100 // 150 +wait 1211 ; sm_cvar sb_threat_exposure_stop 2147483648 // 200000 +wait 1212 ; sm_cvar sb_threat_exposure_walk 2147483648 // 50000 +wait 1213 ; sm_cvar sb_threat_far_range 2000 // 600 +wait 1214 ; sm_cvar sb_threat_medium_range 1000 // 300 +wait 1215 ; sm_cvar sb_threat_very_close_range 100 // 150 +wait 1216 ; sm_cvar sb_threat_very_far_range 3000 // 1500 +wait 1217 ; sm_cvar sb_toughness_buffer 20 // 15 +wait 1218 ; sm_cvar // sb_transition 1 // 1 +wait 1219 ; sm_cvar // sb_unstick 1 // 1 +wait 1220 ; sm_cvar sb_use_button_range 500 // 1000 +wait 1221 ; sm_cvar // sb_use_upgrades 1 // 1 +wait 1222 ; sm_cvar sb_vomit_blind_time 0 // 5 +wait 1223 ; sm_cvar // scavenge_cluster_bonus_time 15 // 15 +wait 1224 ; sm_cvar // scavenge_cluster_range_squared 100000 // 100000 +wait 1225 ; sm_cvar // scavenge_cluster_remove_on_pour 1 // 1 +wait 1226 ; sm_cvar scavenge_item_respawn_delay 10 // 20 +wait 1227 ; sm_cvar // scavenge_match_finished_delay 5 // 5 +wait 1228 ; sm_cvar // scavenge_overtime_grace_time 1 // 1 +wait 1229 ; sm_cvar // scavenge_round_initial_time 90 // 90 +wait 1230 ; sm_cvar scavenge_round_restart_delay 15 // 10 +wait 1231 ; sm_cvar // scavenge_round_restart_delay_tied 15 // 15 +wait 1232 ; sm_cvar scavenge_round_setup_time 30 // 45 +wait 1233 ; sm_cvar scavenge_score_bonus_time 15 // 20 +wait 1234 ; sm_cvar scavenge_wanderer_respawn_chance 100 // 3 +wait 1235 ; sm_cvar // scene_async_prefetch_spew 0 // 0 +wait 1236 ; sm_cvar // scene_clientflex 1 // 1 +wait 1237 ; sm_cvar // scene_clientplayback 1 // 1 +wait 1238 ; sm_cvar // scene_forcecombined 0 // 0 +wait 1239 ; sm_cvar scene_maxcaptionradius 1500 // 1200 +wait 1240 ; sm_cvar // scene_print 0 // 0 +wait 1241 ; sm_cvar // scene_showlook 0 // 0 +wait 1242 ; sm_cvar // scene_showmoveto 0 // 0 +wait 1243 ; sm_cvar // scene_showunlock 0 // 0 +wait 1244 ; sm_cvar // script_attach_debugger_at_startup 0 // 0 +wait 1245 ; sm_cvar // script_break_in_native_debugger_on_error 0 // 0 +wait 1246 ; sm_cvar // servercfgfile "server.cfg" // "server.cfg" +wait 1247 ; sm_cvar shotgun_reload_cancel_delay 0.0 // 0.5 +wait 1248 ; sm_cvar shout_going_to_die_interval 10 // 20 +wait 1249 ; sm_cvar shout_make_way_interval 1 // 2 +wait 1250 ; sm_cvar shout_max_warn_range 3000 // 2000 +wait 1251 ; sm_cvar shout_min_special_warn_interval 1 // 5 +wait 1252 ; sm_cvar shout_min_use_range 500 // 200 +wait 1253 ; sm_cvar shout_min_warn_interval 1 // 10 +wait 1254 ; sm_cvar shout_threat_range 3000 // 500 +wait 1255 ; sm_cvar shout_view_motion_threshold 0.005 // 0.01 +wait 1256 ; sm_cvar shout_view_target_threahold 0.005 // 0.01 +wait 1257 ; sm_cvar // showtriggers 0 // 0 +wait 1258 ; sm_cvar singlestep 0 // 0 +wait 1259 ; sm_cvar sk_autoaim_mode 3 // 1 +wait 1260 ; sm_cvar sk_player_arm 3 // 1 +wait 1261 ; sm_cvar sk_player_chest 3 // 1 +wait 1262 ; sm_cvar sk_player_head 3 // 2 +wait 1263 ; sm_cvar sk_player_leg 3 // 1 +wait 1264 ; sm_cvar sk_player_stomach 3 // 1 +wait 1265 ; sm_cvar skill 3 // 1.000000 +wait 1266 ; sm_cvar sm_unsilentjockey_always 1 // 0 +wait 1267 ; sm_cvar sm_unsilentjockey_enabled 1 // 0 +wait 1268 ; sm_cvar sm_unsilentjockey_time 2 // 0 +wait 1269 ; sm_cvar Smoker_escape_range 10000 // 750 +wait 1270 ; sm_cvar smoker_pz_claw_dmg 6 // 4 +wait 1271 ; sm_cvar smoker_tongue_delay 0 // 1.5 +wait 1272 ; sm_cvar // smoothstairs 1 // 1 +wait 1273 ; sm_cvar snd_foliage_db_loss 3 // 4 +wait 1274 ; sm_cvar snd_gain 2.0 // 1 +wait 1275 ; sm_cvar snd_gain_max 10.0 // 1 +wait 1276 ; sm_cvar snd_gain_min 1.0 // 0.01 +wait 1277 ; sm_cvar snd_refdb 75 // 60 +wait 1278 ; sm_cvar snd_refdist 50 // 36 +wait 1279 ; sm_cvar // snd_vox_captiontrace 0 // 0 +wait 1280 ; sm_cvar snd_vox_globaltimeout 600 // 300 +wait 1281 ; sm_cvar snd_vox_sectimetout 600 // 300 +wait 1282 ; sm_cvar snd_vox_seqtimetout 600 // 300 +wait 1283 ; sm_cvar soundpatch_captionlength 3 // 2.0 +wait 1284 ; sm_cvar // soundscape_debug 0 // 0 +wait 1285 ; sm_cvar // spawn_behind_survivors_distance 0 // 0 +wait 1286 ; sm_cvar // spec_filter "any" // "any" +wait 1287 ; sm_cvar // spec_filter_infected "any" // "any" +wait 1288 ; sm_cvar spec_filter_survivors "any" // "survivor" +wait 1289 ; sm_cvar spec_freeze_time 0 // 4.0 +wait 1290 ; sm_cvar spec_freeze_traveltime 0.01 // 0.4 +wait 1291 ; sm_cvar // spew_consolelog_to_debugstring 0 // 0 +wait 1292 ; sm_cvar spit_scaling_min_scale 1.0 // 0.35 +wait 1293 ; sm_cvar // spitter_pz_claw_dmg 4 // 4 +wait 1294 ; sm_cvar ss_voice_hearpartner 1 // 0 +wait 1295 ; sm_cvar // steam_controller_haptics 1 // 1 +wait 1296 ; sm_cvar // steamworks_immediate_upload 1 // 1 +wait 1297 ; sm_cvar // steamworks_server_sessionid 0 // 0 +wait 1298 ; sm_cvar // steamworks_show_uploads 0 // 0 +wait 1299 ; sm_cvar steamworks_stats_disable 0 // 0 +wait 1300 ; sm_cvar // step_spline 0 // 0 +wait 1301 ; sm_cvar still_vel_limit 0 // 5 +wait 1302 ; sm_cvar still_view_accel_limit 0 // 1500 +wait 1303 ; sm_cvar // stringtable_alwaysrebuilddictionaries 0 // 0 +wait 1304 ; sm_cvar // stringtable_usedictionaries 1 // 1 +wait 1305 ; sm_cvar // studio_queue_mode 1 // 1 +wait 1306 ; sm_cvar suitvolume 2.0 // 0.25 +wait 1307 ; sm_cvar survival_boomer_limit_increase 1 // 0 +wait 1308 ; sm_cvar survival_charger_limit_increase 1 // 0 +wait 1309 ; sm_cvar survival_generate_fake_times 0 // 1 +wait 1310 ; sm_cvar survival_horde_stage_interval 40 // 60 +wait 1311 ; sm_cvar survival_horde_stage_interval_decay 1 // 2 +wait 1312 ; sm_cvar // survival_hunter_limit_increase 1 // 1 +wait 1313 ; sm_cvar // survival_jockey_limit_increase 1 // 1 +wait 1314 ; sm_cvar survival_lull_time 0 // 15 +wait 1315 ; sm_cvar survival_lull_time_increment 0 // 15 +wait 1316 ; sm_cvar survival_lull_time_max 0 // 60 +wait 1317 ; sm_cvar survival_max_boomers 3 // 2 +wait 1318 ; sm_cvar // survival_max_chargers 2 // 2 +wait 1319 ; sm_cvar // survival_max_hunters 3 // 3 +wait 1320 ; sm_cvar // survival_max_jockeys 2 // 2 +wait 1321 ; sm_cvar // survival_max_smokers 4 // 4 +wait 1322 ; sm_cvar // survival_max_specials 8 // 8 +wait 1323 ; sm_cvar // survival_max_spitters 3 // 3 +wait 1324 ; sm_cvar // survival_round_restart_delay 15 // 15 +wait 1325 ; sm_cvar // survival_smoker_limit_increase 1 // 1 +wait 1326 ; sm_cvar // survival_special_limit_increase 1 // 1 +wait 1327 ; sm_cvar survival_special_spawn_interval 10 // 20 +wait 1328 ; sm_cvar // survival_special_spawn_interval_decay 1 // 1 +wait 1329 ; sm_cvar survival_special_stage_interval 120 // 60 +wait 1330 ; sm_cvar // survival_spitter_limit_increase 1 // 1 +wait 1331 ; sm_cvar // survival_tank_multiple_spawn_delay 10 // 10 +wait 1332 ; sm_cvar // survival_tank_stage_interval 80 // 80 +wait 1333 ; sm_cvar survival_tank_stage_interval_decay 10 // 20 +wait 1334 ; sm_cvar // survivor_accuracy_upgrade_factor 0.5 // 0.5 +wait 1335 ; sm_cvar // survivor_allow_crawling 0 // 0 +wait 1336 ; sm_cvar survivor_burn_factor_easy 0.0 // 0.2 +wait 1337 ; sm_cvar survivor_burn_factor_expert 0.3 // 1 +wait 1338 ; sm_cvar survivor_burn_factor_hard 0.2 // 0.4 +wait 1339 ; sm_cvar survivor_burn_factor_normal 0.1 // 0.2 +wait 1340 ; sm_cvar survivor_calm_damage_delay 10 // 5 +wait 1341 ; sm_cvar survivor_calm_deploy_delay 10 // 2 +wait 1342 ; sm_cvar survivor_calm_intensity 0.1 // 0.25 +wait 1343 ; sm_cvar // survivor_calm_no_flashlight 1 // 1 +wait 1344 ; sm_cvar survivor_calm_recent_enemy_delay 10 // 5 +wait 1345 ; sm_cvar survivor_calm_weapon_delay 10 // 5 +wait 1346 ; sm_cvar survivor_crawl_speed 100 // 15 +wait 1347 ; sm_cvar survivor_crouch_speed 80 // 75 +wait 1348 ; sm_cvar survivor_damage_speed_factor 0.3 // 0.25f +wait 1349 ; sm_cvar // survivor_death_anims 0 // 0 +wait 1350 ; sm_cvar // survivor_debug_active_area_set 0 // 0 +wait 1351 ; sm_cvar // survivor_debug_in_combat 0 // 0 +wait 1352 ; sm_cvar // survivor_debug_visibility 0 // 0 +wait 1353 ; sm_cvar // survivor_drag_continuous_fire 1 // 1 +wait 1354 ; sm_cvar survivor_drag_speed_multiplier 0.75 // .5 +wait 1355 ; sm_cvar // survivor_drag_type 0 // 0 +wait 1356 ; sm_cvar // survivor_ff_avoidance 0 // 0 +wait 1357 ; sm_cvar survivor_ff_avoidance_pitch 10 // 20 +wait 1358 ; sm_cvar // survivor_ff_avoidance_yaw 10 // 10 +wait 1359 ; sm_cvar survivor_ff_tolerance 100 // 26 +wait 1360 ; sm_cvar survivor_fog_vocalize_percent 1.0 // .23 +wait 1361 ; sm_cvar // survivor_friendly_fire_factor_easy 0.0 // 0 +wait 1362 ; sm_cvar survivor_friendly_fire_factor_expert 0.3 // 0.5 +wait 1363 ; sm_cvar survivor_friendly_fire_factor_hard 0.2 // 0.3 +wait 1364 ; sm_cvar survivor_friendly_fire_factor_normal 0.025 // 0.1 +wait 1365 ; sm_cvar survivor_fumes_walk_speed 100 // 85 +wait 1366 ; sm_cvar survivor_give_attract_timeout 15 // 12 +wait 1367 ; sm_cvar survivor_hanging_eye_height 100 // 85 +wait 1368 ; sm_cvar survivor_hanging_from_tongue_eye_height 60 // 40 +wait 1369 ; sm_cvar survivor_helping_hand_inhibit_duration 0 // 1 +wait 1370 ; sm_cvar // survivor_hitsound_interval_timer 0.1 // 0.1 +wait 1371 ; sm_cvar // survivor_incap_decay_rate 3 // 3 +wait 1372 ; sm_cvar // survivor_incap_health 300 // 300 +wait 1373 ; sm_cvar survivor_incap_hopeless_decay_rate 6 // 12 +wait 1374 ; sm_cvar // survivor_incap_max_fall_damage 200 // 200 +wait 1375 ; sm_cvar survivor_incap_tongued_decay_rate 20 // 12 +wait 1376 ; sm_cvar survivor_incapacitated_accuracy_penalty 0.0 // 0.4 +wait 1377 ; sm_cvar survivor_incapacitated_cycle_time 0.283333 // 0.3 +wait 1378 ; sm_cvar survivor_incapacitated_dizzy_severity 0.0 // 2.0 +wait 1379 ; sm_cvar survivor_incapacitated_dizzy_timer 5 // 2.5 +wait 1380 ; sm_cvar survivor_incapacitated_eye_height 20 // 24 +wait 1381 ; sm_cvar survivor_incapacitated_reload_multiplier 1.0 // 1.25 +wait 1382 ; sm_cvar survivor_incapacitated_roll 15 // 20 +wait 1383 ; sm_cvar survivor_intensity_decay_threat_range 1000 // 750 +wait 1384 ; sm_cvar survivor_intensity_recent_enemy_duration 10 // 5 +wait 1385 ; sm_cvar survivor_it_duration 18 // 20 +wait 1386 ; sm_cvar survivor_knockdown_roll -15 // -20 +wait 1387 ; sm_cvar // survivor_lazy_active_set 1 // 1 +wait 1388 ; sm_cvar // survivor_lean 0 // 0 +wait 1389 ; sm_cvar survivor_ledge_grab_ground_check_time 1 // 3.0 +wait 1390 ; sm_cvar // survivor_ledge_grab_health 300 // 300 +wait 1391 ; sm_cvar // survivor_ledge_scales_health 1 // 1 +wait 1392 ; sm_cvar // survivor_limit 4 // 4 +wait 1393 ; sm_cvar // survivor_limp_health 40 // 40 +wait 1394 ; sm_cvar survivor_limp_walk_speed 100 // 85 +wait 1395 ; sm_cvar // survivor_max_incapacitated_count 2 // 2 +wait 1396 ; sm_cvar survivor_max_lunge_stagger_distance 100 // 30 +wait 1397 ; sm_cvar // survivor_max_lunge_stagger_speed 220 // 220 +wait 1398 ; sm_cvar // survivor_max_tongue_stagger_distance 200 // 200 +wait 1399 ; sm_cvar survivor_max_tongue_stagger_duration 1 // 1.5 +wait 1400 ; sm_cvar survivor_max_tug_distance 500 // 300 +wait 1401 ; sm_cvar survivor_max_tug_duration 5 // 1.5 +wait 1402 ; sm_cvar survivor_min_lunge_stagger_speed 0 // 50 +wait 1403 ; sm_cvar // survivor_model_selection -1 // -1 +wait 1404 ; sm_cvar // survivor_no_pounce_or_hang 0 // 0 +wait 1405 ; sm_cvar survivor_pounce_victim_eye_height 30 // 12 +wait 1406 ; sm_cvar // survivor_push 0 // 0 +wait 1407 ; sm_cvar survivor_respawn_with_guns 0 // 1 +wait 1408 ; sm_cvar // survivor_revive_after_drag 0 // 0 +wait 1409 ; sm_cvar // survivor_revive_continuous_fire 1 // 1 +wait 1410 ; sm_cvar survivor_revive_duration 4.75 // 5 +wait 1411 ; sm_cvar // survivor_revive_health 30 // 30 +wait 1412 ; sm_cvar // survivor_shove_teammates 0 // 0 +wait 1413 ; sm_cvar survivor_speed 220 // 210 +wait 1414 ; sm_cvar survivor_speed_boost_factor 1.5 // 1.2 +wait 1415 ; sm_cvar // survivor_sprint_multiplier 1.5 // 1.5 +wait 1416 ; sm_cvar // survivor_stun_immunity_duration 0 // 0 +wait 1417 ; sm_cvar survivor_team_hit_pitch_max 7.5 // 10 +wait 1418 ; sm_cvar survivor_team_hit_pitch_min -7.5 // -10 +wait 1419 ; sm_cvar survivor_team_hit_yaw_max 7.5 // 10 +wait 1420 ; sm_cvar survivor_team_hit_yaw_min -7.5 // -10 +wait 1421 ; sm_cvar // survivor_teammatefocus_enabled 0 // 0 +wait 1422 ; sm_cvar // survivor_teammatefocus_speed 10 // 10.0 +wait 1423 ; sm_cvar survivor_teammatefocus_stickyness 10 // 5 +wait 1424 ; sm_cvar survivor_unstoppable_speed 180 // 150 +wait 1425 ; sm_cvar // survivor_upgrade_reload_duration 0.5 // 0.5 +wait 1426 ; sm_cvar survivor_vision_range 2000 // 1500 +wait 1427 ; sm_cvar survivor_vision_range_obscured 1000 // 750 +wait 1428 ; sm_cvar // sv__ragdoll_max_remove_per_frame 1 // 1 +wait 1429 ; sm_cvar sv_accelerate 5.5 // 5 +wait 1430 ; sm_cvar sv_airaccelerate 15 // 10 +wait 1431 ; sm_cvar sv_allow_lobby_connect_only 0 // 1 +wait 1432 ; sm_cvar sv_allow_votes 1 // 1 +wait 1433 ; sm_cvar sv_allow_wait_command 1 // 1 +wait 1434 ; sm_cvar // sv_allowdownload 1 // 1 +wait 1435 ; sm_cvar // sv_allowupload 1 // 1 +wait 1436 ; sm_cvar // sv_alltalk 1 // 0 +wait 1437 ; sm_cvar // sv_alternateticks 0 // 0 +wait 1438 ; sm_cvar // sv_always_full_flush 0 // 0 +wait 1439 ; sm_cvar // sv_autosave 1 // 1 +wait 1440 ; sm_cvar sv_backspeed 1.0 // 0.6 +wait 1441 ; sm_cvar // sv_banid_dev_enabled 0 // 0 +wait 1442 ; sm_cvar sv_banid_enabled 1 // 1 +wait 1443 ; sm_cvar // sv_benchmark_autovprofrecord 0 // 0 +wait 1444 ; sm_cvar sv_benchmark_numticks 0 // 3300 +wait 1445 ; sm_cvar // sv_bonus_challenge 0 // 0 +wait 1446 ; sm_cvar sv_bounce 0.2 // 0 +wait 1447 ; sm_cvar // sv_cacheencodedents 1 // 1 +wait 1448 ; sm_cvar // sv_cheats 0 // 0 +wait 1449 ; sm_cvar sv_client_cmdrate_difference 0 // 20 +wait 1450 ; sm_cvar sv_client_max_interp_ratio 30 // 5 +wait 1451 ; sm_cvar sv_client_min_interp_ratio 0 // 1 +wait 1452 ; sm_cvar sv_client_predict 1 // -1 +wait 1453 ; sm_cvar sv_clockcorrection_msecs 50 // 60 +wait 1454 ; sm_cvar sv_consistency 0 // 1 +wait 1455 ; sm_cvar sv_contact "EricMizusawa02@gmail.com" // "" +wait 1456 ; sm_cvar // sv_creationtickcheck 1 // 1 +wait 1457 ; sm_cvar sv_cycle_latch_timer 0.1 // 0.2 +wait 1458 ; sm_cvar // sv_debug_entity "" // "" +wait 1459 ; sm_cvar // sv_debug_player_use 0 // 0 +wait 1460 ; sm_cvar // sv_debugmanualmode 0 // 0 +wait 1461 ; sm_cvar // sv_debugtempentities 0 // 0 +wait 1462 ; sm_cvar // sv_deltaprint 0 // 0 +wait 1463 ; sm_cvar // sv_deltatime 0 // 0 +wait 1464 ; sm_cvar sv_demo_entity_record_rate 60 // 30 +wait 1465 ; sm_cvar sv_disable_glow_faritems 0 // 0 +wait 1466 ; sm_cvar // sv_disable_glow_survivors 0 // 0 +wait 1467 ; sm_cvar // sv_disable_querycache 0 // 0 +wait 1468 ; sm_cvar sv_doors_push_players 1 // 0 +wait 1469 ; sm_cvar sv_downloadurl "" // "" +wait 1470 ; sm_cvar // sv_dumpstringtables 0 // 0 +wait 1471 ; sm_cvar // sv_enableoldqueries 0 // 0 +wait 1472 ; sm_cvar sv_extra_client_connect_time 30 // 15.0 +wait 1473 ; sm_cvar sv_fallen_survivor_health_multiplier 1.0 // 20.0 +wait 1474 ; sm_cvar sv_filterban 1 // 1 +wait 1475 ; sm_cvar sv_footstepinterval 0.166667 // 0.22 +wait 1476 ; sm_cvar // sv_footsteps 1 // 1 +wait 1477 ; sm_cvar // sv_force_time_of_day -1 // -1 +wait 1478 ; sm_cvar // sv_force_transmit_ents 0 // 0 +wait 1479 ; sm_cvar sv_forcepreload 1 // 0 +wait 1480 ; sm_cvar // sv_friction 4 // 4 +wait 1481 ; sm_cvar sv_gameinstructor_disable 1 // 0 +wait 1482 ; sm_cvar // sv_gametypes "coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave," // "coop,realism,survival,versus,scavenge,dash,holdout,shootzones" +wait 1483 ; sm_cvar sv_gravity 720 // 800 +wait 1484 ; sm_cvar sv_healing_gnome_replenish_rate 2.0 // 1.5 +wait 1485 ; sm_cvar sv_hibernate_ms 0 // 20 +wait 1486 ; sm_cvar sv_hibernate_ms_vgui 0 // 20 +wait 1487 ; sm_cvar sv_hibernate_postgame_delay 10 // 5 +wait 1488 ; sm_cvar sv_hibernate_when_empty 0 // 1 +wait 1489 ; sm_cvar sv_hosting_lobby 1 // 0 +wait 1490 ; sm_cvar sv_infected_ceda_vomitjar_probability 0.125 // 0.1 +wait 1491 ; sm_cvar sv_infected_police_tonfa_probability 0.25 // 0.03 +wait 1492 ; sm_cvar sv_infected_riot_control_tonfa_probability 0.25 // 0.15 +wait 1493 ; sm_cvar sv_infected_scale_max 1.025 // 1 +wait 1494 ; sm_cvar sv_infected_scale_min 1.025 // 1 +wait 1495 ; sm_cvar // sv_infinite_ammo 0 // 0 +wait 1496 ; sm_cvar // sv_infinite_primary_ammo 0 // 0 +wait 1497 ; sm_cvar // sv_instancebaselines 1 // 1 +wait 1498 ; sm_cvar // sv_lagcompensationforcerestore 1 // 1 +wait 1499 ; sm_cvar sv_lagflushbonecache 0 // 1 +wait 1500 ; sm_cvar // sv_lagpushticks 0 // 0 +wait 1501 ; sm_cvar sv_lan 0 // 0 +wait 1502 ; sm_cvar sv_log_onefile 1 // 0 +wait 1503 ; sm_cvar sv_logbans 1 // 0 +wait 1504 ; sm_cvar // sv_logblocks 0 // 0 +wait 1505 ; sm_cvar // sv_logdownloadlist 0 // 0 +wait 1506 ; sm_cvar sv_logecho 1 // 1 +wait 1507 ; sm_cvar sv_logfile 1 // 1 +wait 1508 ; sm_cvar // sv_logflush 0 // 0 +wait 1509 ; sm_cvar sv_logsdir "logs" // "logs" +wait 1510 ; sm_cvar // sv_massreport 0 // 0 +wait 1511 ; sm_cvar // sv_master_legacy_mode 0 // 0 +wait 1512 ; sm_cvar // sv_master_share_game_socket 1 // 1 +wait 1513 ; sm_cvar sv_max_queries_sec 6 // 3.0 +wait 1514 ; sm_cvar sv_max_queries_sec_global 120 // 60 +wait 1515 ; sm_cvar sv_max_queries_window 60 // 30 +wait 1516 ; sm_cvar sv_max_usercmd_future_ticks 15 // 8 +wait 1517 ; sm_cvar sv_maxclientframes 120 // 128 +wait 1518 ; sm_cvar sv_maxcmdrate 120 // 40 +wait 1519 ; sm_cvar sv_maxplayers 32 // 30 +wait 1520 ; sm_cvar sv_maxrate 72000 // 0 +wait 1521 ; sm_cvar // sv_maxreplay 0 // 0 +wait 1522 ; sm_cvar // sv_maxroutable 1200 // 1200 +wait 1523 ; sm_cvar sv_maxspeed 1000 // 1000.000000 +wait 1524 ; sm_cvar sv_maxunlag 0.5 // 1.0 +wait 1525 ; sm_cvar // sv_maxupdaterate 60 // 60 +wait 1526 ; sm_cvar sv_maxvelocity 1500 // 3500 +wait 1527 ; sm_cvar // sv_memlimit 0 // 0 +wait 1528 ; sm_cvar sv_mincmdrate 120 // 0 +wait 1529 ; sm_cvar sv_minrate 72000 // 5000 +wait 1530 ; sm_cvar sv_minupdaterate 60 // 10 +wait 1531 ; sm_cvar // sv_multiplayer_maxtempentities 32 // 32 +wait 1532 ; sm_cvar sv_multiplayer_sounds 32 // 20 +wait 1533 ; sm_cvar // sv_music_debug 0 // 0 +wait 1534 ; sm_cvar // sv_netvisdist 100000 // 10000 +wait 1535 ; sm_cvar // sv_new_delta_bits 1 // 1 +wait 1536 ; sm_cvar // sv_no_navmesh 0 // 0 +wait 1537 ; sm_cvar // sv_noclipaccelerate 5 // 5 +wait 1538 ; sm_cvar // sv_noclipduringpause 0 // 0 +wait 1539 ; sm_cvar // sv_noclipfriction 4 // 4 +wait 1540 ; sm_cvar sv_noclipspeed 3 // 5 +wait 1541 ; sm_cvar // sv_optimizedmovement 1 // 1 +wait 1542 ; sm_cvar sv_parallel_packentities 2 // 1 +wait 1543 ; sm_cvar sv_parallel_sendsnapshot 2 // 1 +wait 1544 ; sm_cvar sv_password "" // "" +wait 1545 ; sm_cvar sv_pausable 0 // 0 +wait 1546 ; sm_cvar sv_pausable_dev 0 // 1 +wait 1547 ; sm_cvar sv_pausable_dev_ds 0 // 0 +wait 1548 ; sm_cvar sv_permawipe 0 // 0 +wait 1549 ; sm_cvar sv_player_max_separation_force 0 // 500 +wait 1550 ; sm_cvar sv_player_stuck_tolerance 3 // 10 +wait 1551 ; sm_cvar // sv_playerperfhistorycount 1 // 20 +wait 1552 ; sm_cvar sv_prop_door_max_close_attempts 20 // 8 +wait 1553 ; sm_cvar sv_pure_kick_clients 0 // 1 +wait 1554 ; sm_cvar // sv_pure_trace 0 // 0 +wait 1555 ; sm_cvar sv_pushaway_clientside 2 // 0 +wait 1556 ; sm_cvar sv_pushaway_clientside_size 0 // 15 +wait 1557 ; sm_cvar sv_pushaway_force 200000 // 300000 +wait 1558 ; sm_cvar sv_pushaway_max_force 10000 // 2000 +wait 1559 ; sm_cvar // sv_pushaway_max_player_force 10000 // 10000 +wait 1560 ; sm_cvar sv_pushaway_min_force 1000 // 500 +wait 1561 ; sm_cvar sv_pushaway_min_player_speed 80 // 75 +wait 1562 ; sm_cvar sv_pushaway_player_force 100000 // 200000 +wait 1563 ; sm_cvar sv_pvsskipanimation 0 // 1 +wait 1564 ; sm_cvar sv_pz_endgame_vote_period 15 // 12 +wait 1565 ; sm_cvar sv_pz_endgame_vote_post_period 5 // 5 +wait 1566 ; sm_cvar sv_quota_stringcmdspersecond 2147483647 // 800 +wait 1567 ; sm_cvar sv_ragdoll_maxcount 32767 // 75 +wait 1568 ; sm_cvar sv_ragdoll_maxcount_boss 32767 // 3 +wait 1569 ; sm_cvar sv_ragdoll_maxcount_generic 32767 // 60 +wait 1570 ; sm_cvar sv_ragdoll_maxcount_gib 32767 // 30 +wait 1571 ; sm_cvar sv_ragdoll_maxcount_special 32767 // 12 +wait 1572 ; sm_cvar sv_ragdoll_maxcount_survivor 32767 // 3 +wait 1573 ; sm_cvar // sv_ragdoll_version 1 // 1 +wait 1574 ; sm_cvar sv_rcon_banpenalty 0 // 0 +wait 1575 ; sm_cvar sv_rcon_log 0 // 1 +wait 1576 ; sm_cvar sv_rcon_maxfailures 20 // 10 +wait 1577 ; sm_cvar sv_rcon_minfailures 20 // 5 +wait 1578 ; sm_cvar sv_rcon_minfailuretime 1 // 30 +wait 1579 ; sm_cvar // sv_regeneration_force_on 0 // 0 +wait 1580 ; sm_cvar sv_regeneration_wait_time 0 // 1.0 +wait 1581 ; sm_cvar sv_region 0 // -1 +wait 1582 ; sm_cvar // sv_rescue_disabled 0 // 0 +wait 1583 ; sm_cvar sv_reservation_grace 3 // 5 +wait 1584 ; sm_cvar sv_reservation_timeout 5 // 120 +wait 1585 ; sm_cvar sv_rollangle 0.3 // 0 +wait 1586 ; sm_cvar sv_rollspeed 450 // 200 +wait 1587 ; sm_cvar sv_runcmds 1 // 1 +wait 1588 ; sm_cvar sv_script_think_interval 0 // 0.1 +wait 1589 ; sm_cvar sv_search_key "bizzymod" // "" +wait 1590 ; sm_cvar // sv_sendtables 0 // 0 +wait 1591 ; sm_cvar // sv_show_whitelist_msg 0 // 0 +wait 1592 ; sm_cvar // sv_showanimstate -1 // -1 +wait 1593 ; sm_cvar // sv_showanimstate_activities 1 // 1 +wait 1594 ; sm_cvar // sv_showanimstate_log 0 // 0 +wait 1595 ; sm_cvar // sv_showdamage 0 // 0 +wait 1596 ; sm_cvar // sv_showdebugtracers 0 // 0 +wait 1597 ; sm_cvar // sv_showfootsteps 0 // 0 +wait 1598 ; sm_cvar // sv_showhitboxes -1 // -1 +wait 1599 ; sm_cvar // sv_showimpacts 0 // 0 +wait 1600 ; sm_cvar // sv_showladders 0 // 0 +wait 1601 ; sm_cvar // sv_showlagcompensation 0 // 0 +wait 1602 ; sm_cvar // sv_showonlyhitbox -1 // -1 +wait 1603 ; sm_cvar // sv_showplayerhitboxes 0 // 0 +wait 1604 ; sm_cvar // sv_showprecachedsounds 0 // 0 +wait 1605 ; sm_cvar // sv_skyname "sky_l4d_c1_1_hdr" // "sky_l4d_c1_1_hdr" +wait 1606 ; sm_cvar // sv_sound_discardextraunreliable 1 // 1 +wait 1607 ; sm_cvar // sv_soundemitter_trace -1 // -1 +wait 1608 ; sm_cvar // sv_specaccelerate 5 // 5 +wait 1609 ; sm_cvar // sv_specnoclip 1 // 1 +wait 1610 ; sm_cvar // sv_specspeed 3 // 3 +wait 1611 ; sm_cvar // sv_spectatoridletime 5 // 3 +wait 1612 ; sm_cvar sv_stats 0 // 1 +wait 1613 ; sm_cvar sv_steamgroup "38693222" // "" +wait 1614 ; sm_cvar sv_steamgroup_exclusive 1 // 0 +wait 1615 ; sm_cvar sv_stepsize 19 // 18 +wait 1616 ; sm_cvar sv_stopspeed 80 // 75 +wait 1617 ; sm_cvar // sv_stressbots 0 // 0 +wait 1618 ; sm_cvar // sv_strict_notarget 0 // 0 +wait 1619 ; sm_cvar // sv_suppress_viewpunch 0 // 0 +wait 1620 ; sm_cvar // sv_sync_anims_spawn 0 // 0 +wait 1621 ; sm_cvar // sv_sync_client_updates 0 // 0 +wait 1622 ; sm_cvar sv_tags "coop,realism,secure,versus," // "" +wait 1623 ; sm_cvar // sv_tankpropfade 1 // 1 +wait 1624 ; sm_cvar sv_teststepsimulation 0 // 1 +wait 1625 ; sm_cvar // sv_thinktimecheck 0 // 0 +wait 1626 ; sm_cvar // sv_threaded_init 0 // 0 +wait 1627 ; sm_cvar sv_timeout 30 // 65 +wait 1628 ; sm_cvar sv_tracereffects_limit_general 2147483647 // 15 +wait 1629 ; sm_cvar // sv_turbophysics 1 // 1 +wait 1630 ; sm_cvar // sv_turbophysics_shadow 0 // 0 +wait 1631 ; sm_cvar // sv_unlag 1 // 1 +wait 1632 ; sm_cvar // sv_unlag_debug 0 // 0 +wait 1633 ; sm_cvar sv_unlag_fixstuck 1 // 0 +wait 1634 ; sm_cvar sv_unlockedchapters 2147483647 // 1 +wait 1635 ; sm_cvar // sv_useexplicitdelete 1 // 1 +wait 1636 ; sm_cvar sv_vehicle_autoaim_scale 10 // 8 +wait 1637 ; sm_cvar sv_visiblemaxplayers 8 // -1 +wait 1638 ; sm_cvar sv_voicecodec "vaudio_celt" // "vaudio_speex" +wait 1639 ; sm_cvar sv_voiceenable 1 // 1 +wait 1640 ; sm_cvar sv_vote_command_delay 1.5 // 2 +wait 1641 ; sm_cvar sv_vote_creation_timer 0 // 180 +wait 1642 ; sm_cvar // sv_vote_failure_timer 0 // 0 +wait 1643 ; sm_cvar sv_vote_issue_change_difficulty_allowed 1 // 1 +wait 1644 ; sm_cvar sv_vote_issue_change_map_later_allowed 1 // 1 +wait 1645 ; sm_cvar sv_vote_issue_change_map_now_allowed 1 // 1 +wait 1646 ; sm_cvar sv_vote_issue_change_mission_allowed 1 // 1 +wait 1647 ; sm_cvar sv_vote_issue_kick_allowed 1 // 1 +wait 1648 ; sm_cvar sv_vote_issue_restart_game_allowed 1 // 1 +wait 1649 ; sm_cvar sv_vote_kick_ban_duration 1 // 5 +wait 1650 ; sm_cvar sv_vote_plr_map_limit 2147483647 // 3 +wait 1651 ; sm_cvar // sv_vote_show_caller 1 // 1 +wait 1652 ; sm_cvar sv_vote_timer_duration 12 // 15 +wait 1653 ; sm_cvar sv_wateraccelerate 30 // 10 +wait 1654 ; sm_cvar sv_waterdist 0 // 12 +wait 1655 ; sm_cvar sv_waterfriction 0 // 1 +wait 1656 ; sm_cvar // sv_zombie_touch_trigger_delay 0.25 // 0.5 +wait 1657 ; sm_cvar // sv_zoo_model_filter "" // "" +wait 1658 ; sm_cvar // sv_zoo_spacing 64 // 64 +wait 1659 ; sm_cvar // sv_zoo_spacing_rows 192 // 192 +wait 1660 ; sm_cvar // sv_zoo_spacing_wrap 80 // 80 +wait 1661 ; sm_cvar // sv_zoo_tint_clr "153 153 153 255" // "153 153 153 255" +wait 1662 ; sm_cvar // sv_zoo_tint_loop 1 // 1 +wait 1663 ; sm_cvar // sv_zoo_wrap_skin 1 // 1 +wait 1664 ; sm_cvar sys_minidumpexpandedspew 0 // 1 +wait 1665 ; sm_cvar sys_minidumpspewlines 0 // 500 +wait 1666 ; sm_cvar tank_attack_range 60 // 50 +wait 1667 ; sm_cvar // tank_auto_swing 0 // 0 +wait 1668 ; sm_cvar tank_burn_duration 90 // 75 +wait 1669 ; sm_cvar tank_burn_duration_expert 90 // 85 +wait 1670 ; sm_cvar tank_burn_duration_hard 90 // 80 +wait 1671 ; sm_cvar tank_fist_radius 16 // 15 +wait 1672 ; sm_cvar tank_ground_pound_duration 2 // 1.5 +wait 1673 ; sm_cvar tank_ground_pound_reveal_distance 800 // 500 +wait 1674 ; sm_cvar tank_punch_getup_scale 0.333333 // 0.5 +wait 1675 ; sm_cvar tank_pz_forward 0.0 // -0.5 +wait 1676 ; sm_cvar // tank_raffle_debug 0 // 0 +wait 1677 ; sm_cvar // tank_rock_overhead_percent 100 // 100 +wait 1678 ; sm_cvar tank_run_spawn_delay 10 // 15 +wait 1679 ; sm_cvar tank_stasis_time_suicide 86400 // 30 +wait 1680 ; sm_cvar // tank_stuck_failsafe 1 // 1 +wait 1681 ; sm_cvar tank_stuck_time_choose_new_target 0.5 // 2 +wait 1682 ; sm_cvar tank_stuck_time_suicide 86400 // 10 +wait 1683 ; sm_cvar tank_stuck_visibility_tolerance_choose_new_target 0.5 // 5 +wait 1684 ; sm_cvar tank_stuck_visibility_tolerance_suicide 86400 // 15 +wait 1685 ; sm_cvar // tank_swing_arc 180 // 180 +wait 1686 ; sm_cvar tank_swing_duration 0.183333 // 0.2 +wait 1687 ; sm_cvar tank_swing_fast_interval 1.45 // 0.6 +wait 1688 ; sm_cvar tank_swing_interval 1.45 // 1.5 +wait 1689 ; sm_cvar tank_swing_miss_interval 1.45 // 1.0 +wait 1690 ; sm_cvar tank_swing_physics_prop_force 3.0 // 4.0 +wait 1691 ; sm_cvar tank_swing_range 60 // 56 +wait 1692 ; sm_cvar tank_swing_yaw 100 // 80 +wait 1693 ; sm_cvar tank_throw_aim_error 0 // 100 +wait 1694 ; sm_cvar tank_throw_allow_range 600 // 250 +wait 1695 ; sm_cvar tank_throw_lead_time_factor 0.25 // 0.5 +wait 1696 ; sm_cvar tank_throw_loft_rate 0.015 // .01 +wait 1697 ; sm_cvar // tank_throw_max_loft_angle 30 // 30 +wait 1698 ; sm_cvar // tank_throw_min_interval 8 // 8 +wait 1699 ; sm_cvar tank_visibility_tolerance_suicide 86400 // 60 +wait 1700 ; sm_cvar tank_windup_time 0.475 // .5 +wait 1701 ; sm_cvar // target_scan_use_query_cache 1 // 1 +wait 1702 ; sm_cvar tauntfrequency 0 // 1 +wait 1703 ; sm_cvar // telemetry_demoend 0 // 0 +wait 1704 ; sm_cvar // telemetry_demostart 0 // 0 +wait 1705 ; sm_cvar telemetry_filtervalue 1000 // 500 +wait 1706 ; sm_cvar // telemetry_framecount 0 // 0 +wait 1707 ; sm_cvar // telemetry_level 0 // 0 +wait 1708 ; sm_cvar // telemetry_pause 0 // 0 +wait 1709 ; sm_cvar // telemetry_resume 0 // 0 +wait 1710 ; sm_cvar telemetry_server "74.91.113.130" // "localhost" +wait 1711 ; sm_cvar // template_debug 0 // 0 +wait 1712 ; sm_cvar terror_ammo_multiplier 1.0 // 2 +wait 1713 ; sm_cvar // testscript_debug 0 // 0 +wait 1714 ; sm_cvar tf_arena_max_streak 10 // 5 +wait 1715 ; sm_cvar tf_arena_preround_time 5 // 10 +wait 1716 ; sm_cvar // tf_arena_round_time 0 // 0 +wait 1717 ; sm_cvar // tf_escort_score_rate 1 // 1 +wait 1718 ; sm_cvar think_limit 0 // 0 +wait 1719 ; sm_cvar // threadpool_affinity 1 // 1 +wait 1720 ; sm_cvar // threadpool_reserve 0 // 0 +wait 1721 ; sm_cvar tick_door_speed 2.0 // 1.0 +wait 1722 ; sm_cvar // tongue_allow_voluntary_release 0 // 0 +wait 1723 ; sm_cvar tongue_bend_point_deflection 4 // 5 +wait 1724 ; sm_cvar // tongue_bend_point_needs_LOS 0 // 0 +wait 1725 ; sm_cvar tongue_break_from_damage_amount 1000 // 50 +wait 1726 ; sm_cvar tongue_bullet_radius 8 // 6 +wait 1727 ; sm_cvar tongue_choke_damage_amount 6 // 10 +wait 1728 ; sm_cvar // tongue_choke_damage_interval 1 // 1 +wait 1729 ; sm_cvar // tongue_cone_start_tolerance 0.1 // .1 +wait 1730 ; sm_cvar // tongue_debug 0 // 0 +wait 1731 ; sm_cvar tongue_drag_damage_amount 4 // 3 +wait 1732 ; sm_cvar tongue_dropping_to_ground_time 0.5 // 2 +wait 1733 ; sm_cvar tongue_fly_speed 1100 // 1000 +wait 1734 ; sm_cvar // tongue_force_break 0 // 0 +wait 1735 ; sm_cvar tongue_gravity_force 5000 // 4000 +wait 1736 ; sm_cvar tongue_health 200 // 100 +wait 1737 ; sm_cvar tongue_hit_delay 10 // 20 +wait 1738 ; sm_cvar tongue_los_forgiveness_time 2 // 1.0 +wait 1739 ; sm_cvar tongue_miss_delay 2.5 // 15 +wait 1740 ; sm_cvar // tongue_no_progress_break_interval 10 // 10 +wait 1741 ; sm_cvar tongue_no_progress_choke_early_ambush_delay 0.25 // 0.5 +wait 1742 ; sm_cvar tongue_no_progress_choke_early_delay 0.5 // 1.5 +wait 1743 ; sm_cvar tongue_no_progress_choke_time 0.25 // .5 +wait 1744 ; sm_cvar // tongue_no_progress_damage_interval 0.5 // .5 +wait 1745 ; sm_cvar tongue_no_progress_tolerance 10 // 25 +wait 1746 ; sm_cvar tongue_player_dropping_to_ground_time 0.5 // 1 +wait 1747 ; sm_cvar tongue_range 900 // 750 +wait 1748 ; sm_cvar tongue_release_fatigue_penalty 2750 // 2500 +wait 1749 ; sm_cvar tongue_start_pull_delay 0.0 // 0.1 +wait 1750 ; sm_cvar // tongue_unbend 1 // 1 +wait 1751 ; sm_cvar // tongue_vertical_choke_dot 0.0 // 0 +wait 1752 ; sm_cvar tongue_vertical_choke_height 50 // 40 +wait 1753 ; sm_cvar tongue_vertical_choke_time_off_ground 0.375 // .5 +wait 1754 ; sm_cvar tongue_victim_acceleration 10 // 30 +wait 1755 ; sm_cvar tongue_victim_accuracy_penalty 0.0 // 0.133 +wait 1756 ; sm_cvar tongue_victim_max_speed 200 // 175 +wait 1757 ; sm_cvar // tongue_vs_cone_start_tolerance 0.01 // 0.015 +wait 1758 ; sm_cvar tp_schedule_post_think 0 // 1 +wait 1759 ; sm_cvar // trace_report 0 // 0 +wait 1760 ; sm_cvar // tutor 0 // 0 +wait 1761 ; sm_cvar // tv_allow_camera_man 1 // 1 +wait 1762 ; sm_cvar // tv_allow_static_shots 1 // 1 +wait 1763 ; sm_cvar // tv_autorecord 0 // 0 +wait 1764 ; sm_cvar tv_autoretry 0 // 1 +wait 1765 ; sm_cvar // tv_chatgroupsize 0 // 0 +wait 1766 ; sm_cvar tv_chattimelimit 0 // 8 +wait 1767 ; sm_cvar // tv_debug 0 // 0 +wait 1768 ; sm_cvar tv_delay 0 // 30 +wait 1769 ; sm_cvar // tv_delaymapchange 0 // 0 +wait 1770 ; sm_cvar // tv_deltacache 2 // 2 +wait 1771 ; sm_cvar // tv_dispatchmode 1 // 1 +wait 1772 ; sm_cvar // tv_enable 0 // 0 +wait 1773 ; sm_cvar tv_maxclients 32 // 128 +wait 1774 ; sm_cvar tv_maxrate 36000 // 8000 +wait 1775 ; sm_cvar tv_name "" // "SourceTV" +wait 1776 ; sm_cvar // tv_overridemaster 0 // 0 +wait 1777 ; sm_cvar tv_password "" // "" +wait 1778 ; sm_cvar // tv_port "27020" // "27020" +wait 1779 ; sm_cvar tv_relaypassword "" // "" +wait 1780 ; sm_cvar // tv_relayvoice 1 // 1 +wait 1781 ; sm_cvar tv_snapshotrate 10 // 16 +wait 1782 ; sm_cvar tv_timeout 0 // 30 +wait 1783 ; sm_cvar tv_title "" // "SourceTV" +wait 1784 ; sm_cvar // tv_transmitall 0 // 0 +wait 1785 ; sm_cvar upgrade_explosive_bullet_force 10 // 2 +wait 1786 ; sm_cvar upgrade_explosive_slug_force 20 // 4 +wait 1787 ; sm_cvar upgrade_laser_sight_spread_factor 0.5 // 0.4 +wait 1788 ; sm_cvar upgrade_pack_use_duration 1.5 // 1.9 +wait 1789 ; sm_cvar // upgrade_show_explosive_ammo_radius 0 // 0 +wait 1790 ; sm_cvar upgradepack_forward_dist 16 // 30 +wait 1791 ; sm_cvar upgradepack_max_drop_dist 0 // 30 +wait 1792 ; sm_cvar // vcr_verbose 0 // 0 +wait 1793 ; sm_cvar versus_boss_buffer 2000 // 2200 +wait 1794 ; sm_cvar // versus_boss_debug 0 // 0 +wait 1795 ; sm_cvar versus_boss_flow_max 0.7 // 0.9 +wait 1796 ; sm_cvar versus_boss_flow_max_finale 0.9 // 0.6 +wait 1797 ; sm_cvar versus_boss_flow_max_intro 0.8 // 0.75 +wait 1798 ; sm_cvar versus_boss_flow_min 0.1 // 0.25 +wait 1799 ; sm_cvar versus_boss_flow_min_finale 0.3 // 0.25 +wait 1800 ; sm_cvar versus_boss_flow_min_intro 0.2 // 0.5 +wait 1801 ; sm_cvar versus_boss_padding_max 0.0 // 0.3 +wait 1802 ; sm_cvar versus_boss_padding_min 0.0 // 0.1 +wait 1803 ; sm_cvar versus_force_start_time 180 // 90 +wait 1804 ; sm_cvar versus_level_restart_delay 6 // 4 +wait 1805 ; sm_cvar versus_marker_num 0 // 3 +wait 1806 ; sm_cvar versus_round_restarttimer 20 // 15 +wait 1807 ; sm_cvar versus_round_restarttimer_finale 20 // 10 +wait 1808 ; sm_cvar // versus_shove_hunter_fov 90 // 90 +wait 1809 ; sm_cvar // versus_shove_hunter_fov_pouncing 45 // 45 +wait 1810 ; sm_cvar // versus_shove_jockey_fov_leaping 45 // 45 +wait 1811 ; sm_cvar versus_special_respawn_interval 10 // 20 +wait 1812 ; sm_cvar versus_tank_chance 1.0 // 0.75 +wait 1813 ; sm_cvar versus_tank_chance_finale 1.0 // 0.1 +wait 1814 ; sm_cvar versus_tank_chance_intro 1.0 // 0.3 +wait 1815 ; sm_cvar versus_tank_flow_team_variation 0.0 // 0.1 +wait 1816 ; sm_cvar versus_wandering_zombie_density 0.03 // 0.027 +wait 1817 ; sm_cvar // versus_winning_team_goes_last 1 // 1 +wait 1818 ; sm_cvar versus_witch_chance 0.0 // 0.75 +wait 1819 ; sm_cvar versus_witch_chance_finale 0.0 // 0.1 +wait 1820 ; sm_cvar versus_witch_chance_intro 0.0 // 0.3 +wait 1821 ; sm_cvar versus_witch_flow_team_variation 0.0 // 0.0 +wait 1822 ; sm_cvar view_offset 0 // 0 +wait 1823 ; sm_cvar // view_offset_down 0 // 16 +wait 1824 ; sm_cvar // view_offset_forward 0 // 8 +wait 1825 ; sm_cvar // view_offset_up 0 // -16 +wait 1826 ; sm_cvar // violence_ablood 1 // 1 +wait 1827 ; sm_cvar // violence_agibs 1 // 1 +wait 1828 ; sm_cvar // violence_hblood 1 // 1 +wait 1829 ; sm_cvar // violence_hgibs 1 // 1 +wait 1830 ; sm_cvar // vis_debug 0 // 0 +wait 1831 ; sm_cvar // vis_force 0 // 0 +wait 1832 ; sm_cvar vismon_poll_frequency 1 // .5 +wait 1833 ; sm_cvar vismon_trace_limit 10 // 12 +wait 1834 ; sm_cvar // voice_inputfromfile 0 // 0 +wait 1835 ; sm_cvar // voice_recordtofile 0 // 0 +wait 1836 ; sm_cvar // voice_serverdebug 0 // 0 +wait 1837 ; sm_cvar // voice_xsend_debug 0 // 0 +wait 1838 ; sm_cvar vomitjar_duration_infected_bot 30 // 20 +wait 1839 ; sm_cvar vomitjar_duration_infected_pz 30 // 20 +wait 1840 ; sm_cvar vomitjar_duration_survivor 15 // 5 +wait 1841 ; sm_cvar vomitjar_radius 300 // 110 +wait 1842 ; sm_cvar // vomitjar_radius_survivors 0 // 0 +wait 1843 ; sm_cvar // vprof_counters 0 // 0 +wait 1844 ; sm_cvar // vprof_counters_show_minmax 0 // 0 +wait 1845 ; sm_cvar // vprof_dump_oninterval 0 // 0 +wait 1846 ; sm_cvar // vprof_dump_spikes 0 // 0 +wait 1847 ; sm_cvar // vprof_dump_spikes_budget_group "" // "" +wait 1848 ; sm_cvar // vprof_dump_spikes_hiearchy 0 // 0 +wait 1849 ; sm_cvar // vprof_dump_spikes_node "" // "" +wait 1850 ; sm_cvar // vprof_dump_spikes_terse 0 // 0 +wait 1851 ; sm_cvar // vprof_scope_entity_gamephys 0 // 0 +wait 1852 ; sm_cvar // vprof_scope_entity_thinks 0 // 0 +wait 1853 ; sm_cvar // vprof_server_spike_threshold 999 // 999.0 +wait 1854 ; sm_cvar // vprof_server_thread 0 // 0 +wait 1855 ; sm_cvar // vprof_think_limit 0 // 0 +wait 1856 ; sm_cvar vs_defib_penalty 0 // 25 +wait 1857 ; sm_cvar vs_incap_bonus 25 // 10 +wait 1858 ; sm_cvar vs_max_team_switches 2147483647 // 1 +wait 1859 ; sm_cvar vs_score_pp_health 1.0 // 0.5 +wait 1860 ; sm_cvar vs_score_pp_healthbuffer 1.0 // 0.25 +wait 1861 ; sm_cvar // vs_survival_bonus 25 // 25 +wait 1862 ; sm_cvar vs_survivor_damage_reduction 1.0 // 0.8 +wait 1863 ; sm_cvar // vs_tank_damage 24 // 24 +wait 1864 ; sm_cvar vs_threat_initial_distance_first_map_max 8000 // 12000 +wait 1865 ; sm_cvar vs_threat_initial_distance_first_map_min 2000 // 8000 +wait 1866 ; sm_cvar // vs_threat_initial_distance_max 8000 // 8000 +wait 1867 ; sm_cvar vs_threat_initial_distance_min 2000 // 3000 +wait 1868 ; sm_cvar // vs_threat_radius 200 // 200 +wait 1869 ; sm_cvar // vs_tiebreak_bonus 25 // 25 +wait 1870 ; sm_cvar // weapon_showproficiency 0 // 0 +wait 1871 ; sm_cvar // witch_force_wander 0 // 0 +wait 1872 ; sm_cvar witch_rage_ramp_duration 3 // .0 +wait 1873 ; sm_cvar // workshop_filter_items_by_history 0 // 0 +wait 1874 ; sm_cvar // xbox_autothrottle 1 // 1 +wait 1875 ; sm_cvar // xbox_steering_deadzone 0.0 // 0.0 +wait 1876 ; sm_cvar // xbox_throttlebias 100 // 100 +wait 1877 ; sm_cvar // xbox_throttlespoof 200 // 200 +wait 1878 ; sm_cvar // xc_crouch_debounce 0 // 0 +wait 1879 ; sm_cvar z_acquire_far_range 1000 // 2500 +wait 1880 ; sm_cvar // z_acquire_far_time 5 // 5.0 +wait 1881 ; sm_cvar z_acquire_near_range 100 // 200 +wait 1882 ; sm_cvar // z_acquire_near_time 1 // 0.5 +wait 1883 ; sm_cvar z_acquire_time_variance_factor 0.0 // 0.25 +wait 1884 ; sm_cvar z_added_light_max 0.5 // 0.25 +wait 1885 ; sm_cvar z_added_light_min 0.05 // 0.025 +wait 1886 ; sm_cvar z_alert_dot 0.0 // 0.3 +wait 1887 ; sm_cvar // z_alert_range 1000 // 1000 +wait 1888 ; sm_cvar // z_allow_ai_to_use_abilities 1 // 1 +wait 1889 ; sm_cvar z_anim_idle_speed_max 80 // 85 +wait 1890 ; sm_cvar z_anim_idle_speed_min 0 // 20 +wait 1891 ; sm_cvar z_attack_change_target_range 40 // 100 +wait 1892 ; sm_cvar z_attack_flow_range 2000 // 1500 +wait 1893 ; sm_cvar z_attack_incapacitated_damage 3 // 10 +wait 1894 ; sm_cvar z_attack_infected_it_damage 5 // 10 +wait 1895 ; sm_cvar z_attack_interval 0.666667 // 1 +wait 1896 ; sm_cvar z_attack_max_range 40 // 20 +wait 1897 ; sm_cvar z_attack_min_range 20 // 10 +wait 1898 ; sm_cvar z_attack_movement_penalty 0.7 // 0.5 +wait 1899 ; sm_cvar z_attack_on_the_run_range 40 // 35 +wait 1900 ; sm_cvar z_attack_pz_it_damage 100 // 20 +wait 1901 ; sm_cvar z_attention_range_lying_modifier 1.0 // 0.15 +wait 1902 ; sm_cvar z_attention_range_sitting_modifier 1.0 // 0.35 +wait 1903 ; sm_cvar // z_avoid_max_range 100 // 100 +wait 1904 ; sm_cvar z_avoid_min_range 50 // 30 +wait 1905 ; sm_cvar z_avoid_power 20 // 10 +wait 1906 ; sm_cvar z_avoidforce 0 // 2500 +wait 1907 ; sm_cvar // z_avoidteammates 1 // 1 +wait 1908 ; sm_cvar // z_award_debug 0 // 0 +wait 1909 ; sm_cvar z_background_limit 40 // 20 +wait 1910 ; sm_cvar z_backspeed 500 // 450 +wait 1911 ; sm_cvar // z_bbq_min 0.0 // 0.0 +wait 1912 ; sm_cvar z_bbq_rate 0.01 // 0.005 +wait 1913 ; sm_cvar // z_boomer_limit 1 // 1 +wait 1914 ; sm_cvar z_boomer_near_dist 10000 // 180 +wait 1915 ; sm_cvar // z_boss_crouch 0 // 0 +wait 1916 ; sm_cvar // z_boundary_clear_type 1 // 1 +wait 1917 ; sm_cvar z_boundary_max_range 4000 // 5000 +wait 1918 ; sm_cvar z_boundary_spread_speed 1000 // 200 +wait 1919 ; sm_cvar z_brawl_chance 0 // 2 +wait 1920 ; sm_cvar z_breakable_damage 25 // 4 +wait 1921 ; sm_cvar z_burn_max 1.0 // 0.85 +wait 1922 ; sm_cvar // z_burn_rate 0.01 // 0.01 +wait 1923 ; sm_cvar z_burning_lifetime 15 // 30 +wait 1924 ; sm_cvar z_carry_max_mass 100 // 250 +wait 1925 ; sm_cvar z_chance 100 // 60 +wait 1926 ; sm_cvar // z_charge_duration 2.5 // 2.5 +wait 1927 ; sm_cvar z_charge_impact_angle 0.4 // .7 +wait 1928 ; sm_cvar z_charge_impact_radius 150 // 120 +wait 1929 ; sm_cvar // z_charge_interval 12 // 12 +wait 1930 ; sm_cvar // z_charge_max_damage 10 // 10 +wait 1931 ; sm_cvar // z_charge_max_force 800 // 800 +wait 1932 ; sm_cvar // z_charge_max_speed 500 // 500 +wait 1933 ; sm_cvar z_charge_min_force 600 // 550 +wait 1934 ; sm_cvar z_charge_prop_damage 1000 // 20 +wait 1935 ; sm_cvar z_charge_start_speed 300 // 250 +wait 1936 ; sm_cvar // z_charge_tooshort 0 // 0 +wait 1937 ; sm_cvar // z_charge_warmup 0.5 // 0.5 +wait 1938 ; sm_cvar // z_charger_allow_shove 0 // 0 +wait 1939 ; sm_cvar // z_charger_health 600 // 600 +wait 1940 ; sm_cvar z_charger_impact_epsilon 0 // 8 +wait 1941 ; sm_cvar // z_charger_limit 1 // 1 +wait 1942 ; sm_cvar z_charger_max_prop_force 1000 // 3000 +wait 1943 ; sm_cvar // z_charger_pound_dmg 15 // 15 +wait 1944 ; sm_cvar z_charger_probe_alone 20 // 6 +wait 1945 ; sm_cvar z_charger_probe_attack 20 // 24 +wait 1946 ; sm_cvar // z_checkpoint_debug 0 // 0 +wait 1947 ; sm_cvar z_claw_hit_pitch_max 12.5 // 20 +wait 1948 ; sm_cvar z_claw_hit_pitch_min -12.5 // -20 +wait 1949 ; sm_cvar z_claw_hit_yaw_max 12.5 // 20 +wait 1950 ; sm_cvar z_claw_hit_yaw_min -12.5 // -20 +wait 1951 ; sm_cvar z_clear_area_range 250 // 300 +wait 1952 ; sm_cvar z_clear_max_time 1 // 5 +wait 1953 ; sm_cvar z_clear_min_time 0.1 // 0.2 +wait 1954 ; sm_cvar z_clear_min_time_range 250 // 300 +wait 1955 ; sm_cvar z_clear_range 500 // 750 +wait 1956 ; sm_cvar z_close_target_notice_distance 40 // 60 +wait 1957 ; sm_cvar z_common_limit 40 // 30 +wait 1958 ; sm_cvar z_cooldown_spawn_safety_range 150 // 1000 +wait 1959 ; sm_cvar z_cough_cloud_expire 8 // 14 +wait 1960 ; sm_cvar // z_cough_cloud_initial_cough_delay 0 // 0 +wait 1961 ; sm_cvar z_cough_cloud_radius 150 // 175 +wait 1962 ; sm_cvar // z_credits_interval 0 // 0 +wait 1963 ; sm_cvar z_crouch_speed 90 // 75 +wait 1964 ; sm_cvar // z_cull_timeout 5 // 5 +wait 1965 ; sm_cvar z_damage_screen_fade_alpha 32 // 30 +wait 1966 ; sm_cvar z_damage_screen_fade_duration 0.666667 // 0.5 +wait 1967 ; sm_cvar z_deafen_radius_one 50 // 100 +wait 1968 ; sm_cvar z_deafen_radius_three 150 // 200 +wait 1969 ; sm_cvar z_deafen_radius_two 100 // 150 +wait 1970 ; sm_cvar // z_debug 0 // 0 +wait 1971 ; sm_cvar // z_debug_avoid 0 // 0 +wait 1972 ; sm_cvar // z_debug_breakables 0 // 0 +wait 1973 ; sm_cvar // z_debug_climb 0 // 0 +wait 1974 ; sm_cvar // z_debug_cull "" // "" +wait 1975 ; sm_cvar // z_debug_escape_route 0 // 0 +wait 1976 ; sm_cvar // z_debug_escape_scan 0 // 0 +wait 1977 ; sm_cvar // z_debug_falling_damage 0 // 0 +wait 1978 ; sm_cvar // z_debug_fog 0 // 0 +wait 1979 ; sm_cvar // z_debug_infected_server_anim 0 // 0 +wait 1980 ; sm_cvar // z_debug_ledges 0 // 0 +wait 1981 ; sm_cvar // z_debug_mob_spawn 0 // 0 +wait 1982 ; sm_cvar // z_debug_neighbors 0 // 0 +wait 1983 ; sm_cvar // z_debug_population 0 // 0 +wait 1984 ; sm_cvar // z_debug_shared_random 0 // 0 +wait 1985 ; sm_cvar // z_debug_spawn_ahead 0 // 0 +wait 1986 ; sm_cvar // z_debug_spawn_set -1 // -1 +wait 1987 ; sm_cvar // z_debug_spawnable_areas 0 // 0 +wait 1988 ; sm_cvar // z_debug_stuck "" // "" +wait 1989 ; sm_cvar // z_debug_tank_spawn 1 // 1 +wait 1990 ; sm_cvar z_density_region_length 2000 // 1500 +wait 1991 ; sm_cvar // z_destroy_on_attack 0 // 0 +wait 1992 ; sm_cvar z_difficulty "Impossible" // "Normal" +wait 1993 ; sm_cvar z_director_special_spawn_delay 0 // 10 +wait 1994 ; sm_cvar z_discard_min_range 0 // 1000 +wait 1995 ; sm_cvar z_discard_range 2000 // 2500 +wait 1996 ; sm_cvar // z_do_tracers 1 // 1 +wait 1997 ; sm_cvar // z_dont_clear 0 // 0 +wait 1998 ; sm_cvar z_door_pound_damage 1000 // 60 +wait 1999 ; sm_cvar z_door_reopen_interval 0.1 // 0.5 +wait 2000 ; sm_cvar // z_door_retry_interval 1 // 1 +wait 2001 ; sm_cvar // z_experimental_blast_damage_probability 100 // 100 +wait 2002 ; sm_cvar z_exploding_force 1000 // 5000 +wait 2003 ; sm_cvar // z_exploding_health 50 // 50 +wait 2004 ; sm_cvar z_exploding_inner_radius 200 // 130 +wait 2005 ; sm_cvar // z_exploding_outer_radius 200 // 200 +wait 2006 ; sm_cvar z_exploding_shove_interval 4 // 10 +wait 2007 ; sm_cvar z_exploding_shove_max 3 // 5 +wait 2008 ; sm_cvar z_exploding_shove_min 3 // 4 +wait 2009 ; sm_cvar z_exploding_speed 200 // 175 +wait 2010 ; sm_cvar z_exploding_splat 0 // 50 +wait 2011 ; sm_cvar // z_exploding_splat_radius 200 // 200 +wait 2012 ; sm_cvar // z_expressions 1 // 1 +wait 2013 ; sm_cvar z_fallen_kill_suppress_time 120 // 300 +wait 2014 ; sm_cvar // z_fallen_max_count 1 // 1 +wait 2015 ; sm_cvar z_falling_land_forward_speed 400 // 200 +wait 2016 ; sm_cvar z_falling_land_hard_speed 400 // 200 +wait 2017 ; sm_cvar z_falling_land_speed 400 // 200 +wait 2018 ; sm_cvar // z_fatal_blast_incineration_probability 0 // 0 +wait 2019 ; sm_cvar z_fatal_blast_max_ragdolls 20 // 16 +wait 2020 ; sm_cvar z_fatal_blast_min_ragdolls 1 // 2 +wait 2021 ; sm_cvar z_female_boomer_spawn_chance 50 // 25 +wait 2022 ; sm_cvar // z_finale_chance 100 // 100 +wait 2023 ; sm_cvar // z_finale_ghost_player_spawn_on_survivor 1 // 1 +wait 2024 ; sm_cvar z_finale_spawn_mob_safety_range 300 // 600 +wait 2025 ; sm_cvar z_finale_spawn_safety_range 150 // 300 +wait 2026 ; sm_cvar // z_finale_spawn_safety_range_override 0 // 0.0 +wait 2027 ; sm_cvar z_finale_spawn_tank_safety_range 300 // 600 +wait 2028 ; sm_cvar z_fog_spawn 1 // 0 +wait 2029 ; sm_cvar z_force_attack_from_sound_range 500 // 750 +wait 2030 ; sm_cvar // z_forcezombiemodel 0 // 0 +wait 2031 ; sm_cvar // z_forcezombiemodelname "common_male01" // "common_male01" +wait 2032 ; sm_cvar z_forwardspeed 500 // 450 +wait 2033 ; sm_cvar // z_friendly_fire_forgiveness 1 // 1 +wait 2034 ; sm_cvar // z_frustration 1 // 1 +wait 2035 ; sm_cvar // z_frustration_lifetime 20 // 20 +wait 2036 ; sm_cvar z_frustration_los_delay 0.5 // 2 +wait 2037 ; sm_cvar z_frustration_spawn_delay 20 // 10 +wait 2038 ; sm_cvar // z_gas_health 250 // 250 +wait 2039 ; sm_cvar z_gas_speed 220 // 210 +wait 2040 ; sm_cvar z_ghost_ahead_flow 300 // 500 +wait 2041 ; sm_cvar z_ghost_checkpoint_spawn_interval 10 // 30 +wait 2042 ; sm_cvar // z_ghost_cooldown 0 // 0 +wait 2043 ; sm_cvar z_ghost_delay_max 18 // 30 +wait 2044 ; sm_cvar z_ghost_delay_min 18 // 20 +wait 2045 ; sm_cvar z_ghost_delay_minspawn 1 // 3 +wait 2046 ; sm_cvar // z_ghost_duration 1 // 1 +wait 2047 ; sm_cvar z_ghost_finale_spawn_interval 10 // 20 +wait 2048 ; sm_cvar z_ghost_friction 1.25 // 1.5 +wait 2049 ; sm_cvar // z_ghost_group_spawn 1 // 1 +wait 2050 ; sm_cvar // z_ghost_line_of_scrimmage_far 2000 // 2000 +wait 2051 ; sm_cvar // z_ghost_line_of_scrimmage_near 1000 // 1000 +wait 2052 ; sm_cvar // z_ghost_line_of_scrimmage_safety 10 // 10 +wait 2053 ; sm_cvar // z_ghost_line_of_scrimmage_threat_bonus 1000 // 1000 +wait 2054 ; sm_cvar z_ghost_los_expected_progress 1000 // 1500 +wait 2055 ; sm_cvar // z_ghost_offer_acceptance_time 0 // 0 +wait 2056 ; sm_cvar z_ghost_offer_spawn_safety_time 10 // 20 +wait 2057 ; sm_cvar // z_ghost_runner_spawn_multiplier 0.5 // 0.5 +wait 2058 ; sm_cvar z_ghost_runner_spawn_multiplier_dist 2000 // 3000 +wait 2059 ; sm_cvar // z_ghost_spawn_distance 300 // 300 +wait 2060 ; sm_cvar // z_ghost_spawn_in_start 0 // 0 +wait 2061 ; sm_cvar z_ghost_spawn_interval 10 // 60 +wait 2062 ; sm_cvar // z_ghost_speed 450 // 450 +wait 2063 ; sm_cvar z_ghost_travel_distance 0 // 1000 +wait 2064 ; sm_cvar z_gib_explosion_force_factor 0.05 // 0.1 +wait 2065 ; sm_cvar z_gib_force_factor 5.0 // 10.0 +wait 2066 ; sm_cvar // z_grab_force 0 // 0 +wait 2067 ; sm_cvar // z_grab_ledges_solo 0 // 0 +wait 2068 ; sm_cvar z_gun_damage 5 // 10 +wait 2069 ; sm_cvar // z_gun_debug_player_index 0 // 0 +wait 2070 ; sm_cvar // z_gun_debug_spread 0 // 0 +wait 2071 ; sm_cvar z_gun_force 100 // 300 +wait 2072 ; sm_cvar // z_gun_horiz_punch 0 // 0 +wait 2073 ; sm_cvar // z_gun_kick 0 // 0 +wait 2074 ; sm_cvar z_gun_physics_force 50 // 25 +wait 2075 ; sm_cvar z_gun_range 80 // 75 +wait 2076 ; sm_cvar z_gun_stun_duration 1 // 1.25 +wait 2077 ; sm_cvar z_gun_survivor_force 100 // 200 +wait 2078 ; sm_cvar z_gun_survivor_friend_push 0 // 1 +wait 2079 ; sm_cvar z_gun_survivor_shove_dot 1.0 // 0.95 +wait 2080 ; sm_cvar z_gun_swing_coop_max_penalty 2147483647 // 8 +wait 2081 ; sm_cvar z_gun_swing_coop_min_penalty 2147483647 // 5 +wait 2082 ; sm_cvar z_gun_swing_duration 0.183333 // 0.2 +wait 2083 ; sm_cvar z_gun_swing_interval 0.666667 // 0.7 +wait 2084 ; sm_cvar z_gun_swing_vs_amt_penalty 0.666667 // 1.0 +wait 2085 ; sm_cvar z_gun_swing_vs_cooldown 0.666667 // 1.0 +wait 2086 ; sm_cvar z_gun_swing_vs_max_penalty 2147483647 // 6 +wait 2087 ; sm_cvar z_gun_swing_vs_min_penalty 2147483647 // 3 +wait 2088 ; sm_cvar z_gun_swing_vs_restore_time 0.666667 // 4.0 +wait 2089 ; sm_cvar // z_gun_vertical_punch 1 // 1 +wait 2090 ; sm_cvar z_head_damage_causes_wounds 1 // 0 +wait 2091 ; sm_cvar z_health 75 // 50 +wait 2092 ; sm_cvar z_hear_gunfire_range 500 // 200 +wait 2093 ; sm_cvar z_hear_runner_far_range 1000 // 750 +wait 2094 ; sm_cvar // z_hear_runner_near_range 500 // 500 +wait 2095 ; sm_cvar // z_hit_chainsawer_factor 0.5 // 0.5 +wait 2096 ; sm_cvar z_hit_from_behind_cosine 1.0 // 0.0 +wait 2097 ; sm_cvar z_hit_from_behind_factor 1.0 // 0.5 +wait 2098 ; sm_cvar z_hit_incap_factor_easy 1.0 // 0.1 +wait 2099 ; sm_cvar z_hit_incap_factor_expert 2.0 // 1.0 +wait 2100 ; sm_cvar // z_hit_incap_factor_hard 1.0 // 1.0 +wait 2101 ; sm_cvar // z_hit_incap_factor_normal 1.0 // 1.0 +wait 2102 ; sm_cvar z_holiday_gift_drop_chance 1.0 // 0.3 +wait 2103 ; sm_cvar z_hunter_ground_normal 0.1 // 0.2 +wait 2104 ; sm_cvar // z_hunter_health 250 // 250 +wait 2105 ; sm_cvar // z_hunter_limit 1 // 1 +wait 2106 ; sm_cvar z_hunter_lunge_distance 800 // 750 +wait 2107 ; sm_cvar z_hunter_lunge_pitch 30 // 25 +wait 2108 ; sm_cvar z_hunter_lunge_stagger_time 0.5 // 1 +wait 2109 ; sm_cvar // z_hunter_max_pounce_bonus_damage 24 // 24 +wait 2110 ; sm_cvar z_hunter_speed 260 // 300 +wait 2111 ; sm_cvar // z_infected_damage_cutouts 1 // 1 +wait 2112 ; sm_cvar // z_Infected_debug 0 // 0 +wait 2113 ; sm_cvar // z_infected_flashlight 1 // 1 +wait 2114 ; sm_cvar // z_infected_invuln 0 // 0 +wait 2115 ; sm_cvar // z_infected_move 1 // 1 +wait 2116 ; sm_cvar // z_infected_tinting 1 // 1 +wait 2117 ; sm_cvar // z_jockey_area_current_factor 1.0 // 1.0 +wait 2118 ; sm_cvar // z_jockey_area_hazard_bonus 3000 // 3000.0 +wait 2119 ; sm_cvar // z_jockey_area_range_factor 2.0 // 2.0 +wait 2120 ; sm_cvar // z_jockey_area_visibility_factor 500 // 500.0 +wait 2121 ; sm_cvar // z_jockey_blend_rate 1.0 // 1.0 +wait 2122 ; sm_cvar z_jockey_control_max 1.0 // 0.8 +wait 2123 ; sm_cvar // z_jockey_control_min 0.8 // 0.8 +wait 2124 ; sm_cvar z_jockey_control_variance 0.0 // 0.7 +wait 2125 ; sm_cvar // z_jockey_debug 0 // 0 +wait 2126 ; sm_cvar z_jockey_health 350 // 325 +wait 2127 ; sm_cvar z_jockey_leap_again_timer 4 // 5.0 +wait 2128 ; sm_cvar z_jockey_leap_range 250 // 200 +wait 2129 ; sm_cvar z_jockey_leap_time 0.9 // 1.0 +wait 2130 ; sm_cvar // z_jockey_limit 1 // 1 +wait 2131 ; sm_cvar // z_jockey_lookahead 300 // 400.0 +wait 2132 ; sm_cvar // z_jockey_min_ledge_distance 100 // 200.0f +wait 2133 ; sm_cvar // z_jockey_min_mounted_speed 0.6 // 0.6 +wait 2134 ; sm_cvar // z_jockey_pounced_surv_bark 1 // 1 +wait 2135 ; sm_cvar z_jockey_ride_damage 3 // 4 +wait 2136 ; sm_cvar z_jockey_ride_damage_delay 0.0 // 1.0 +wait 2137 ; sm_cvar // z_jockey_ride_damage_interval 1 // 1.0 +wait 2138 ; sm_cvar z_jockey_ride_hazard_scan_distance 400 // 500.0 +wait 2139 ; sm_cvar z_jockey_ride_scan_distance 600 // 800.0 +wait 2140 ; sm_cvar // z_jockey_ride_scan_interval 1 // 3.0 +wait 2141 ; sm_cvar z_jockey_speed 280 // 250.0 +wait 2142 ; sm_cvar // z_jockey_speed_blend 2.0 // 2.0 +wait 2143 ; sm_cvar // z_jockey_stagger_amount 0.0 // 0.0 +wait 2144 ; sm_cvar // z_jockey_stagger_speed 2.0 // 2.0 +wait 2145 ; sm_cvar z_large_volume_mob_too_far_xy 2000 // 1600 +wait 2146 ; sm_cvar z_large_volume_mob_too_far_z 200 // 128 +wait 2147 ; sm_cvar z_last_area_update_tolerance 2 // 4.0 +wait 2148 ; sm_cvar z_last_man_run_interval 1 // 3 +wait 2149 ; sm_cvar // z_lean_wall_align_speed 300 // 300 +wait 2150 ; sm_cvar // z_leap_attach_distance 60 // 60.0 +wait 2151 ; sm_cvar // z_leap_cooldown 0 // 0.0 +wait 2152 ; sm_cvar z_leap_far_attach_delay 0.0 // 0.4 +wait 2153 ; sm_cvar z_leap_force_attach_distance 60 // 40.0 +wait 2154 ; sm_cvar z_leap_interval 0.45 // 0.5 +wait 2155 ; sm_cvar z_leap_interval_post_incap 15 // 30.0 +wait 2156 ; sm_cvar z_leap_interval_post_ride 5.75 // 6.0 +wait 2157 ; sm_cvar z_leap_max_distance 250 // 200.0 +wait 2158 ; sm_cvar z_leap_power 450 // 400 +wait 2159 ; sm_cvar // z_look_at_local_player 0 // 0 +wait 2160 ; sm_cvar z_lunge_cooldown 0.0 // 0.1 +wait 2161 ; sm_cvar z_lunge_interval 0.0 // 0.1 +wait 2162 ; sm_cvar z_lunge_power 625 // 600 +wait 2163 ; sm_cvar // z_lunge_reflect 0 // 0 +wait 2164 ; sm_cvar z_lunge_up 150 // 200 +wait 2165 ; sm_cvar // z_max_hunter_pounce_stagger_duration 0.5 // 0.5 +wait 2166 ; sm_cvar // z_max_neighbor_range 200 // 200 +wait 2167 ; sm_cvar z_max_path_length 4000 // 5000 +wait 2168 ; sm_cvar // z_max_player_zombies 4 // 4 +wait 2169 ; sm_cvar z_max_stagger_duration 0.8 // 6 +wait 2170 ; sm_cvar z_max_survivor_damage 500 // 300 +wait 2171 ; sm_cvar z_mega_mob_size 60 // 50 +wait 2172 ; sm_cvar z_mega_mob_spawn_max_interval 300 // 900 +wait 2173 ; sm_cvar z_mega_mob_spawn_min_interval 300 // 420 +wait 2174 ; sm_cvar z_min_ladder_mount_dot 0.6 // 0.5 +wait 2175 ; sm_cvar z_minigun_atomize 1 // 0 +wait 2176 ; sm_cvar z_minigun_cooldown_time 0.1 // 3 +wait 2177 ; sm_cvar z_minigun_damage_rate 60000 // 48000 +wait 2178 ; sm_cvar // z_minigun_debug 0 // 0 +wait 2179 ; sm_cvar // z_minigun_fire_anim_speed 1 // 1 +wait 2180 ; sm_cvar z_minigun_fire_think_interval 0.0 // 0.2 +wait 2181 ; sm_cvar z_minigun_firing_speed 20 // 15 +wait 2182 ; sm_cvar z_minigun_overheat_time 100 // 20 +wait 2183 ; sm_cvar z_minigun_rate_of_fire 1800 // 1500 +wait 2184 ; sm_cvar z_minigun_spin_down_speed 10 // 4 +wait 2185 ; sm_cvar z_minigun_spin_up_speed 20 // 15 +wait 2186 ; sm_cvar z_minigun_spread 3.0 // 7 +wait 2187 ; sm_cvar z_minigun_stand_distance 40 // 36 +wait 2188 ; sm_cvar z_minion_aim_tolerance 0.075 // 0.05 +wait 2189 ; sm_cvar z_minion_limit 4 // 3 +wait 2190 ; sm_cvar // z_mob_min_notify_count 10 // 10 +wait 2191 ; sm_cvar z_mob_music_size 10 // 2 +wait 2192 ; sm_cvar z_mob_population_density 0.005 // 0.0064 +wait 2193 ; sm_cvar // z_mob_recharge_rate 0.0025 // 0.0025 +wait 2194 ; sm_cvar // z_mob_sacrifice_timeout 5 // 5 +wait 2195 ; sm_cvar z_mob_spawn_finale_size 40 // 20 +wait 2196 ; sm_cvar z_mob_spawn_max_interval_easy 120 // 240 +wait 2197 ; sm_cvar z_mob_spawn_max_interval_expert 120 // 180 +wait 2198 ; sm_cvar z_mob_spawn_max_interval_hard 120 // 180 +wait 2199 ; sm_cvar z_mob_spawn_max_interval_normal 120 // 180 +wait 2200 ; sm_cvar z_mob_spawn_max_size 40 // 30 +wait 2201 ; sm_cvar z_mob_spawn_min_interval_easy 60 // 120 +wait 2202 ; sm_cvar z_mob_spawn_min_interval_expert 60 // 90 +wait 2203 ; sm_cvar z_mob_spawn_min_interval_hard 60 // 90 +wait 2204 ; sm_cvar z_mob_spawn_min_interval_normal 60 // 90 +wait 2205 ; sm_cvar z_mob_spawn_min_size 20 // 10 +wait 2206 ; sm_cvar z_mounted_gun_fire_think_interval 0.008333 // 0.05 +wait 2207 ; sm_cvar z_must_wander 1 // 0 +wait 2208 ; sm_cvar // z_mute_infected 0 // 0 +wait 2209 ; sm_cvar // z_nav_debug 0 // 0 +wait 2210 ; sm_cvar // z_network_compression 1 // 1 +wait 2211 ; sm_cvar // z_no_cull 0 // 0 +wait 2212 ; sm_cvar // z_noise_level_display 0 // 0 +wait 2213 ; sm_cvar z_noise_level_fade_rate 50 // 40 +wait 2214 ; sm_cvar z_noise_level_footstep 150 // 135 +wait 2215 ; sm_cvar z_noise_level_hold_time 0.333333 // 0.5 +wait 2216 ; sm_cvar z_noise_level_max 150 // 135 +wait 2217 ; sm_cvar z_noise_level_vocalize 150 // 135 +wait 2218 ; sm_cvar // z_non_head_damage_factor_easy 2.0 // 2 +wait 2219 ; sm_cvar z_non_head_damage_factor_expert 1.0 // 0.5 +wait 2220 ; sm_cvar z_non_head_damage_factor_hard 1.0 // 0.75 +wait 2221 ; sm_cvar z_non_head_damage_factor_multiplier 1.0 // 1.0 +wait 2222 ; sm_cvar // z_non_head_damage_factor_normal 1.0 // 1.0 +wait 2223 ; sm_cvar z_notice_it_range 2000 // 1500 +wait 2224 ; sm_cvar z_notice_near_range 40 // 100 +wait 2225 ; sm_cvar z_player_lunge_up 100 // 150 +wait 2226 ; sm_cvar // z_player_zombie_debug 0 // 0 +wait 2227 ; sm_cvar z_player_zombie_land_delay 0.0 // 0.5 +wait 2228 ; sm_cvar // z_population "c1streets" // "c1streets" +wait 2229 ; sm_cvar // z_pounce_allow_partial_hidden 1 // 1 +wait 2230 ; sm_cvar z_pounce_crouch_delay 0.9 // 1 +wait 2231 ; sm_cvar // z_pounce_damage 5 // 5 +wait 2232 ; sm_cvar z_pounce_damage_delay 0.0 // 1 +wait 2233 ; sm_cvar z_pounce_damage_interrupt 1000 // 50 +wait 2234 ; sm_cvar // z_pounce_damage_interval 0.5 // 0.5 +wait 2235 ; sm_cvar // z_pounce_delay 0.0 // 0 +wait 2236 ; sm_cvar z_pounce_door_damage 1000 // 500 +wait 2237 ; sm_cvar z_pounce_shake_amplitude 6 // 4 +wait 2238 ; sm_cvar z_pounce_shake_duration 2 // 1.5 +wait 2239 ; sm_cvar z_pounce_shake_radius 300 // 250 +wait 2240 ; sm_cvar z_pounce_silence_range 400 // 500 +wait 2241 ; sm_cvar z_pounce_stumble_force 6 // 5 +wait 2242 ; sm_cvar z_pounce_stumble_radius 175 // 0 +wait 2243 ; sm_cvar // z_prevent_burrowing 1 // 1 +wait 2244 ; sm_cvar z_puking_eye_height 50 // 44 +wait 2245 ; sm_cvar z_push_force 1000 // 2000 +wait 2246 ; sm_cvar z_push_mass_max 100 // 200 +wait 2247 ; sm_cvar z_pushaway_force 0 // 100 +wait 2248 ; sm_cvar z_ragdoll_discard_range 2147483648 // 2000 +wait 2249 ; sm_cvar // z_randombodygroups 1 // 1 +wait 2250 ; sm_cvar // z_randomskins 1 // 1 +wait 2251 ; sm_cvar // z_reload_chatter_debug 0 // 0 +wait 2252 ; sm_cvar z_reload_chatter_intensity 0.1 // 0.25 +wait 2253 ; sm_cvar z_reload_chatter_nearby_friend_range 1000 // 600 +wait 2254 ; sm_cvar z_reload_chatter_recent_enemy 10 // 1.5 +wait 2255 ; sm_cvar z_reload_chatter_shotgun_ammo_threshold 10 // 6 +wait 2256 ; sm_cvar z_reload_chatter_shotgun_interval 1 // 10 +wait 2257 ; sm_cvar // z_reserved_wanderers 0 // 0 +wait 2258 ; sm_cvar z_respawn_distance 0 // 100 +wait 2259 ; sm_cvar z_respawn_interval 0 // 10 +wait 2260 ; sm_cvar z_restrict_team_change 0 // 0 +wait 2261 ; sm_cvar z_round_start_attack_prevention 0 // 1 +wait 2262 ; sm_cvar z_round_start_replacement_time 60 // 30 +wait 2263 ; sm_cvar z_run_exertion_interval 0.666667 // 1 +wait 2264 ; sm_cvar z_safe_spawn_range 0 // 250 +wait 2265 ; sm_cvar z_scout_mob_spawn_range 2000 // 3000 +wait 2266 ; sm_cvar z_scrimmage_creep_delay 10 // 30 +wait 2267 ; sm_cvar z_scrimmage_creep_rate 100 // 50 +wait 2268 ; sm_cvar // z_scrimmage_sphere 1 // 1 +wait 2269 ; sm_cvar z_shotgun_bonus_damage_multiplier 10 // 5 +wait 2270 ; sm_cvar z_shotgun_bonus_damage_range 60 // 100 +wait 2271 ; sm_cvar z_shove_friend_speed 220 // 130 +wait 2272 ; sm_cvar // z_show_bottlenecks 0 // 0 +wait 2273 ; sm_cvar // z_show_clear 0 // 0 +wait 2274 ; sm_cvar // z_show_completely_visible_to_survivor_team 0 // 0 +wait 2275 ; sm_cvar // z_show_damaging 0 // 0 +wait 2276 ; sm_cvar // z_show_escape_route 0 // 0 +wait 2277 ; sm_cvar // z_show_flow_delta 0 // 0 +wait 2278 ; sm_cvar // z_show_flow_distance 0 // 0 +wait 2279 ; sm_cvar // z_show_infected 0 // 0 +wait 2280 ; sm_cvar // z_show_last_area 0 // 0 +wait 2281 ; sm_cvar // z_show_mutually_visible_set 0 // 0 +wait 2282 ; sm_cvar // z_show_population_density 0 // 0 +wait 2283 ; sm_cvar // z_show_potentially_visible 0 // 0 +wait 2284 ; sm_cvar // z_show_potentially_visible_to_survivor_team 0 // 0 +wait 2285 ; sm_cvar // z_show_swings 0 // 0 +wait 2286 ; sm_cvar // z_show_traffic 0 // 0 +wait 2287 ; sm_cvar z_sidespeed 500 // 450 +wait 2288 ; sm_cvar // z_skip_wounds 0 // 0 +wait 2289 ; sm_cvar z_skirmish_spawn_max_interval 60 // 90 +wait 2290 ; sm_cvar z_skirmish_spawn_max_size 10 // 4 +wait 2291 ; sm_cvar z_skirmish_spawn_min_interval 30 // 45 +wait 2292 ; sm_cvar // z_skirmish_spawn_min_size 1 // 1 +wait 2293 ; sm_cvar // z_smoker_limit 1 // 1 +wait 2294 ; sm_cvar // z_spawn_const_distance -1 // -1 +wait 2295 ; sm_cvar z_spawn_flow_limit 2000 // 1500 +wait 2296 ; sm_cvar // z_spawn_health 0 // 0 +wait 2297 ; sm_cvar // z_spawn_height 12 // 12 +wait 2298 ; sm_cvar z_spawn_mobs_behind_chance 50 // 75 +wait 2299 ; sm_cvar // z_spawn_mobs_from_selected_set 0 // 0 +wait 2300 ; sm_cvar z_spawn_range 2000 // 1500 +wait 2301 ; sm_cvar z_spawn_safety_range 150 // 550 +wait 2302 ; sm_cvar z_spawn_speed 500 // 450 +wait 2303 ; sm_cvar // z_spec_nightvision 1 // 1 +wait 2304 ; sm_cvar z_special_burn_dmg_scale 5 // 3 +wait 2305 ; sm_cvar z_special_spawn_interval 10 // 45 +wait 2306 ; sm_cvar z_speed 260 // 250 +wait 2307 ; sm_cvar // z_spew_areas 0 // 0 +wait 2308 ; sm_cvar z_spit_detonate_delay 0.0 // 0.1 +wait 2309 ; sm_cvar z_spit_interval 15 // 20 +wait 2310 ; sm_cvar z_spit_latency 0.275 // 0.3 +wait 2311 ; sm_cvar z_spit_range 950 // 900 +wait 2312 ; sm_cvar z_spit_spread_delay 0.0 // 0.2 +wait 2313 ; sm_cvar z_spit_velocity 950 // 900 +wait 2314 ; sm_cvar // z_spitter_health 100 // 100 +wait 2315 ; sm_cvar z_spitter_high_chance 0 // 10 +wait 2316 ; sm_cvar // z_spitter_limit 1 // 1 +wait 2317 ; sm_cvar z_spitter_max_wait_time 20 // 30 +wait 2318 ; sm_cvar z_spitter_range 950 // 850 +wait 2319 ; sm_cvar z_spitter_speed 240 // 210 +wait 2320 ; sm_cvar z_splat_survivor_pitch_max 16 // 25 +wait 2321 ; sm_cvar z_splat_survivor_pitch_min -15 // 15 +wait 2322 ; sm_cvar z_splat_survivor_shake_amplitude 100 // 50 +wait 2323 ; sm_cvar z_splat_survivor_shake_duration 2 // 1 +wait 2324 ; sm_cvar z_splat_survivor_shake_frequency 100 // 150 +wait 2325 ; sm_cvar z_splat_survivor_shake_radius 300 // 10 +wait 2326 ; sm_cvar z_splat_survivor_yaw_max 15 // 10 +wait 2327 ; sm_cvar z_splat_survivor_yaw_min -15 // -10 +wait 2328 ; sm_cvar // z_splatterdistance 100 // 100 +wait 2329 ; sm_cvar // z_stand_still 0 // 0 +wait 2330 ; sm_cvar // z_state_debug 0 // 0 +wait 2331 ; sm_cvar // z_stomp_always 0 // 0 +wait 2332 ; sm_cvar // z_stumble_max_curve_accel 5 // 5 +wait 2333 ; sm_cvar z_stumble_max_curve_rate 5 // 10 +wait 2334 ; sm_cvar z_survivor_respawn_health 40 // 50 +wait 2335 ; sm_cvar z_tank_attack_interval 1.45 // 1.5 +wait 2336 ; sm_cvar z_tank_autoshotgun_dmg_scale 0.8 // 0.85 +wait 2337 ; sm_cvar z_tank_damage_slow_max_range 32 // 400 +wait 2338 ; sm_cvar z_tank_damage_slow_min_range 32 // 200 +wait 2339 ; sm_cvar // z_tank_footstep_shake_amplitude 5 // 5 +wait 2340 ; sm_cvar z_tank_footstep_shake_duration 2 // 2 +wait 2341 ; sm_cvar z_tank_footstep_shake_interval 0.1 // 0.4 +wait 2342 ; sm_cvar z_tank_footstep_shake_radius 1000 // 750 +wait 2343 ; sm_cvar z_tank_grenade_damage 1000 // 750 +wait 2344 ; sm_cvar z_tank_grenade_launcher_dmg_scale 2.0 // 3.0 +wait 2345 ; sm_cvar z_tank_grenade_roll -15 // -10 +wait 2346 ; sm_cvar // z_tank_grenade_slowdown 0 // 0 +wait 2347 ; sm_cvar z_tank_has_special_blood 1 // 0 +wait 2348 ; sm_cvar z_tank_health 5000 // 4000 +wait 2349 ; sm_cvar // z_tank_incapacitated_decay_rate 1 // 1 +wait 2350 ; sm_cvar z_tank_incapacitated_health 2500 // 5000 +wait 2351 ; sm_cvar z_tank_max_stagger_distance 300 // 400 +wait 2352 ; sm_cvar z_tank_max_stagger_duration 2 // 6 +wait 2353 ; sm_cvar z_tank_max_stagger_fade_duration 2 // 6 +wait 2354 ; sm_cvar // z_tank_rock_debug 0 // 0 +wait 2355 ; sm_cvar z_tank_rock_radius 96 // 100 +wait 2356 ; sm_cvar z_tank_speed 200 // 210 +wait 2357 ; sm_cvar z_tank_speed_vs 220 // 210 +wait 2358 ; sm_cvar z_tank_stagger_fade_alpha 128 // 192 +wait 2359 ; sm_cvar z_tank_stagger_fade_duration 2 // 3 +wait 2360 ; sm_cvar // z_tank_throw_fail_interval 0 // 0 +wait 2361 ; sm_cvar z_tank_throw_force 850 // 800 +wait 2362 ; sm_cvar // z_tank_throw_health 50 // 50 +wait 2363 ; sm_cvar z_tank_throw_interval 4.5 // 5 +wait 2364 ; sm_cvar z_tank_walk_speed 120 // 100 +wait 2365 ; sm_cvar // z_tanks_block_molotovs 1 // 1 +wait 2366 ; sm_cvar z_throttle_hit_interval_easy 0.25 // 0.5 +wait 2367 ; sm_cvar z_throttle_hit_interval_expert 0.5 // 1 +wait 2368 ; sm_cvar z_throttle_hit_interval_hard 0.25 // 0.5 +wait 2369 ; sm_cvar z_throttle_hit_interval_normal 0.25 // 0.33 +wait 2370 ; sm_cvar // z_tracer_particles 1 // 1 +wait 2371 ; sm_cvar // z_tracer_spacing 1 // 1 +wait 2372 ; sm_cvar // z_transitioning_players_remove 1 // 1 +wait 2373 ; sm_cvar z_use_belt_item_tolerance 0.0 // 0.98 +wait 2374 ; sm_cvar // z_use_next_difficulty_damage_factor 0 // 0 +wait 2375 ; sm_cvar z_use_tolerance 0.8 // 0.82 +wait 2376 ; sm_cvar // z_versus_boomer_limit 1 // 1 +wait 2377 ; sm_cvar // z_versus_charger_limit 1 // 1 +wait 2378 ; sm_cvar // z_versus_hunter_limit 1 // 1 +wait 2379 ; sm_cvar // z_versus_jockey_limit 1 // 1 +wait 2380 ; sm_cvar // z_versus_smoker_limit 1 // 1 +wait 2381 ; sm_cvar // z_versus_spitter_limit 1 // 1 +wait 2382 ; sm_cvar z_vision_range 1000 // 500 +wait 2383 ; sm_cvar z_vision_range_alert 2000 // 1500 +wait 2384 ; sm_cvar z_vision_range_daylight 2000 // 2400 +wait 2385 ; sm_cvar z_vision_range_obscured 1000 // 500 +wait 2386 ; sm_cvar z_vision_range_obscured_alert 1000 // 750 +wait 2387 ; sm_cvar z_vocalize_burn_max_interval 1 // 3 +wait 2388 ; sm_cvar z_vocalize_burn_min_interval 0.5 // 2 +wait 2389 ; sm_cvar // z_vocalize_shot_interval 0.5 // .5 +wait 2390 ; sm_cvar // z_vomit 1 // 1 +wait 2391 ; sm_cvar z_vomit_boxsize 2.0 // 1.0 +wait 2392 ; sm_cvar // z_vomit_debug 0 // 0 +wait 2393 ; sm_cvar z_vomit_drag 1.0 // 0.89 +wait 2394 ; sm_cvar z_vomit_duration 1.25 // 1.5 +wait 2395 ; sm_cvar z_vomit_fade_duration 6 // 5 +wait 2396 ; sm_cvar z_vomit_fade_start 6 // 5 +wait 2397 ; sm_cvar z_vomit_fatigue 2001 // 3000 +wait 2398 ; sm_cvar z_vomit_float -100 // -130.0 +wait 2399 ; sm_cvar z_vomit_hit_pitch_max 10 // 15 +wait 2400 ; sm_cvar z_vomit_hit_pitch_min -10 // -15 +wait 2401 ; sm_cvar z_vomit_hit_yaw_max 10 // 10 +wait 2402 ; sm_cvar z_vomit_hit_yaw_min -10 // -10 +wait 2403 ; sm_cvar z_vomit_interval 18 // 30 +wait 2404 ; sm_cvar z_vomit_lifetime 0.25 // 0.5 +wait 2405 ; sm_cvar z_vomit_maxdamagedist 400 // 350.0 +wait 2406 ; sm_cvar // z_vomit_range 300 // 300 +wait 2407 ; sm_cvar // z_vomit_slide_mult 0.5 // 0.5 +wait 2408 ; sm_cvar // z_vomit_slide_rate 0.1 // 0.1 +wait 2409 ; sm_cvar // z_vomit_vecrand 0.05 // 0.05 +wait 2410 ; sm_cvar z_vomit_velocity 2000 // 1700.0 +wait 2411 ; sm_cvar // z_vomit_velocityfadeend 0.5 // .5 +wait 2412 ; sm_cvar z_vomit_velocityfadestart 0.25 // .3 +wait 2413 ; sm_cvar z_walk_speed 120 // 85 +wait 2414 ; sm_cvar // z_wandering_density 0.03 // 0.03 +wait 2415 ; sm_cvar // z_witch_allow_change_victim 1 // 1 +wait 2416 ; sm_cvar // z_witch_always_kills 0 // 0 +wait 2417 ; sm_cvar // z_witch_anger_rate 0.2 // 0.2 +wait 2418 ; sm_cvar // z_witch_attack_range 60 // 60 +wait 2419 ; sm_cvar z_witch_berserk_range 400 // 200 +wait 2420 ; sm_cvar z_witch_burn_time 20 // 15 +wait 2421 ; sm_cvar // z_witch_damage 100 // 100 +wait 2422 ; sm_cvar z_witch_damage_per_kill_hit 30 // 30 +wait 2423 ; sm_cvar z_witch_discard_range 0 // 2000 +wait 2424 ; sm_cvar z_witch_flashlight_range 600 // 400 +wait 2425 ; sm_cvar z_witch_health 2500 // 1000 +wait 2426 ; sm_cvar // z_witch_hostile_at_me_anger 2 // 2 +wait 2427 ; sm_cvar z_witch_max_retreat_range 0 // 2000 +wait 2428 ; sm_cvar z_witch_max_threat_time 3 // 7 +wait 2429 ; sm_cvar z_witch_min_retreat_range 0 // 750 +wait 2430 ; sm_cvar z_witch_min_threat_time 3 // 5 +wait 2431 ; sm_cvar z_witch_personal_space 200 // 100 +wait 2432 ; sm_cvar z_witch_relax_rate 0.2 // 0.05 +wait 2433 ; sm_cvar z_witch_retreat_exit_hidden_duration 0 // 10 +wait 2434 ; sm_cvar z_witch_retreat_exit_range 0 // 1000 +wait 2435 ; sm_cvar z_witch_retreat_min_duration 0 // 10 +wait 2436 ; sm_cvar // z_witch_speed 300 // 300 +wait 2437 ; sm_cvar z_witch_speed_inured 300 // 200 +wait 2438 ; sm_cvar z_witch_threat_hostile_range 800 // 600 +wait 2439 ; sm_cvar z_witch_threat_normal_range 600 // 300 +wait 2440 ; sm_cvar z_witch_tongue_range 50 // 100 +wait 2441 ; sm_cvar z_witch_wander_hear_radius 300 // 72 +wait 2442 ; sm_cvar z_witch_wander_music_max_dist 2147483648 // 2000000 +wait 2443 ; sm_cvar z_witch_wander_music_max_interval 30 // 20.0 +wait 2444 ; sm_cvar z_witch_wander_music_min_dist 2147483648 // 90000 +wait 2445 ; sm_cvar z_witch_wander_music_min_interval 5 // 3.0 +wait 2446 ; sm_cvar z_witch_wander_personal_space 300 // 240 +wait 2447 ; sm_cvar z_witch_wander_personal_time 3 // 10 +wait 2448 ; sm_cvar // z_zombie_knockoff_death 0 // 0 +wait 2449 ; sm_cvar // z_zombie_lunge_push 0 // 0 +wait 2450 ; sm_cvar // servercfgfile "server.cfg" // "server.cfg" diff --git a/cfg/cvars.cfg b/cfg/cvars.cfg new file mode 100644 index 00000000..9c872835 --- /dev/null +++ b/cfg/cvars.cfg @@ -0,0 +1,1667 @@ +wait 0001 ; sm_cvar achievement_disable 0 +wait 0002 ; sm_cvar action_progress_reset_interval 0.5 +wait 0003 ; sm_cvar // adrenaline_backpack_speedup 0.5 +wait 0004 ; sm_cvar adrenaline_duration 20 +wait 0005 ; sm_cvar adrenaline_health_buffer 30 +wait 0006 ; sm_cvar // adrenaline_revive_speedup 0.5 +wait 0007 ; sm_cvar // adrenaline_run_speed 260 +wait 0008 ; sm_cvar ai_expression_frametime 0.1 +wait 0009 ; sm_cvar // ai_expression_optimization 0 +wait 0010 ; sm_cvar ai_talk_idle_enabled 0 +wait 0011 ; sm_cvar allow_all_bot_survivor_team 1 +wait 0012 ; sm_cvar // ammo_assaultrifle_max 450 +wait 0013 ; sm_cvar // ammo_autoshotgun_max 90 +wait 0014 ; sm_cvar ammo_chainsaw_max 30 +wait 0015 ; sm_cvar ammo_firstaid_max 1 +wait 0016 ; sm_cvar // ammo_grenadelauncher_max 49 +wait 0017 ; sm_cvar // ammo_huntingrifle_max 165 +wait 0018 ; sm_cvar // ammo_m60_max 150 +wait 0019 ; sm_cvar ammo_minigun_max -2 +wait 0020 ; sm_cvar ammo_pack_use_duration 1.5 +wait 0021 ; sm_cvar // ammo_shotgun_max 72 +wait 0022 ; sm_cvar // ammo_smg_max 750 +wait 0023 ; sm_cvar // ammo_sniperrifle_max 180 +wait 0024 ; sm_cvar ammo_turret_infected_damage 25 +wait 0025 ; sm_cvar ammo_turret_max -2 +wait 0026 ; sm_cvar ammo_turret_pz_damage 10 +wait 0027 ; sm_cvar ammo_turret_survivor_damage 0 +wait 0028 ; sm_cvar ammo_turret_tank_damage 50 +wait 0029 ; sm_cvar ammo_turret_witch_damage 25 +wait 0030 ; sm_cvar autoaim_max_deflect 1.0 +wait 0031 ; sm_cvar autoaim_max_dist 2000 + +wait 0032 ; sm_cvar boomer_exposed_time_tolerance 30 +wait 0033 ; sm_cvar boomer_pz_claw_dmg 6 +wait 0034 ; sm_cvar boomer_vomit_delay 0 + +wait 0035 ; sm_cvar car_alarm_chirp_distance 500 +wait 0036 ; sm_cvar // car_alarm_chirp_duration 1 +wait 0037 ; sm_cvar car_alarm_chirp_interval 1 +wait 0038 ; sm_cvar car_alarm_distance 1000 +wait 0039 ; sm_cvar car_alarm_duration 20 +wait 0040 ; sm_cvar cc_norepeat 0 +wait 0041 ; sm_cvar // chainsaw_attack_cone 30 +wait 0042 ; sm_cvar chainsaw_attack_distance 80 +wait 0043 ; sm_cvar chainsaw_attack_force 10000 +wait 0044 ; sm_cvar chainsaw_attract_distance 1000 +wait 0045 ; sm_cvar chainsaw_damage 100 +wait 0046 ; sm_cvar chainsaw_hit_interval 0.05 +wait 0047 ; sm_cvar chainsaw_startup_fadeout_time 0 +wait 0048 ; sm_cvar changelevel_pause_interval 10 +wait 0049 ; sm_cvar // charger_pz_claw_dmg 10 +wait 0050 ; sm_cvar cl_clock_correction_adjustment_max_amount 200 +wait 0051 ; sm_cvar cl_clock_correction_adjustment_max_offset 100 +wait 0052 ; sm_cvar cl_clock_correction_adjustment_min_offset 0 +wait 0053 ; sm_cvar cl_clock_correction_force_server_tick 999 +wait 0054 ; sm_cvar cl_clockdrift_max_ms 100 +wait 0055 ; sm_cvar cl_consistencycheck_interval 86400 +wait 0056 ; sm_cvar cl_interpolate 1 +wait 0057 ; sm_cvar cl_resend 1.5 +wait 0058 ; sm_cvar cl_simdbones 1 +wait 0059 ; sm_cvar // cl_use_simd_bones 1 +wait 0060 ; sm_cvar claw_force 100 +wait 0061 ; sm_cvar claw_range 60 +wait 0062 ; sm_cvar claw_range_down 80 +wait 0063 ; sm_cvar claw_swing_duration 0.183333 +wait 0064 ; sm_cvar claw_swing_interval 0.966667 +wait 0065 ; sm_cvar claw_swing_miss_interval 0.966667 +wait 0066 ; sm_cvar // cleared_wanderer_respawn_chance 0 +wait 0067 ; sm_cvar // clientport 27019 +wait 0068 ; sm_cvar closecaption 1 +wait 0069 ; sm_cvar cola_bottles_use_duration 1.8 +wait 0070 ; sm_cvar cola_bottles_use_range 100 +wait 0071 ; sm_cvar cola_bottles_use_tolerance 0.0 +wait 0072 ; sm_cvar collision_shake_amp 0 +wait 0073 ; sm_cvar collision_shake_freq 1 +wait 0074 ; sm_cvar collision_shake_time 1 +wait 0075 ; sm_cvar commentary_available 0 +wait 0076 ; sm_cvar common_dps_window 0 +wait 0077 ; sm_cvar // confogl_adrenaline_limit -1 +wait 0078 ; sm_cvar // confogl_block_punch_rock 0 +wait 0079 ; sm_cvar // confogl_blockinfectedbots 0 +wait 0080 ; sm_cvar confogl_boss_tank 0 +wait 0081 ; sm_cvar // confogl_boss_unprohibit 0 +wait 0082 ; sm_cvar // confogl_block_punch_rock 0 +wait 0083 ; sm_cvar // confogl_defib_limit -1 +wait 0084 ; sm_cvar // confogl_disable_ghost_hurt 0 +wait 0085 ; sm_cvar // confogl_disable_tank_hordes 0 +wait 0086 ; sm_cvar // confogl_ghost_warp 0 +wait 0087 ; sm_cvar // confogl_lock_boss_spawns 1 +wait 0088 ; sm_cvar // confogl_molotov_limit -1 +wait 0089 ; sm_cvar // confogl_pills_limit -1 +wait 0090 ; sm_cvar // confogl_pipebomb_limit -1 +wait 0091 ; sm_cvar // confogl_reduce_finalespawnrange 1 +wait 0092 ; sm_cvar confogl_remove_c5m4_hurts 1 +wait 0093 ; sm_cvar confogl_remove_escape_tank 1 +wait 0094 ; sm_cvar confogl_remove_inf_clips 1 +wait 0095 ; sm_cvar // confogl_replace_cssweapons 0 +wait 0096 ; sm_cvar // confogl_replace_finalekits 0 +wait 0097 ; sm_cvar // confogl_replace_startkits 0 +wait 0098 ; sm_cvar // confogl_vomitjar_limit -1 +wait 0099 ; sm_cvar // confogl_waterslowdown 0 +wait 0100 ; sm_cvar cpu_level 2 + +wait 0101 ; sm_cvar datacachesize 512 +wait 0102 ; sm_cvar deathmatch 0 +wait 0103 ; sm_cvar debug_l4dverbose 0 +wait 0104 ; sm_cvar decalfrequency 1.25 +wait 0105 ; sm_cvar defibrillator_return_to_life_time 1 +wait 0106 ; sm_cvar defibrillator_use_duration 2 +wait 0107 ; sm_cvar director_adrenaline_density 4 +wait 0108 ; sm_cvar director_afk_timeout 20 +wait 0109 ; sm_cvar // director_allow_infected_bots 1 +wait 0110 ; sm_cvar director_always_allow_wanderers 1 +wait 0111 ; sm_cvar director_ammo_density 4 +wait 0112 ; sm_cvar director_build_up_min_interval 10 +wait 0113 ; sm_cvar director_clear_count 2 +wait 0114 ; sm_cvar director_clear_timeout 10 +wait 0115 ; sm_cvar director_configurable_weapon_spawn_density -1 +wait 0116 ; sm_cvar director_convert_pills 0 +wait 0117 ; sm_cvar director_convert_pills_critical_health 0 +wait 0118 ; sm_cvar director_convert_pills_to_defib_health 0 +wait 0119 ; sm_cvar director_cs_weapon_spawn_chance 0.5 +wait 0120 ; sm_cvar director_custom_finale_tank_spacing 10 +wait 0121 ; sm_cvar director_defibrillator_density 4 +wait 0122 ; sm_cvar director_finale_item_cluster_count 4 +wait 0123 ; sm_cvar // director_finale_stage_delay 4 +wait 0124 ; sm_cvar director_gas_can_density 4 +wait 0125 ; sm_cvar director_gauntlet_movement_bonus 5 +wait 0126 ; sm_cvar director_gauntlet_movement_bonus_max 30 +wait 0127 ; sm_cvar director_gauntlet_movement_threshold 500 +wait 0128 ; sm_cvar director_gauntlet_movement_timer_length 10 +wait 0129 ; sm_cvar director_gauntlet_tank_kite_distance 3000 +wait 0130 ; sm_cvar // director_ingress_range 3000 +wait 0131 ; sm_cvar director_intensity_relax_allow_wanderers_threshold 1.0 +wait 0132 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 +wait 0133 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 +wait 0134 ; sm_cvar director_intensity_relax_threshold 1.0 +wait 0135 ; sm_cvar director_intensity_threshold 1.0 +wait 0136 ; sm_cvar // director_item_cluster_range 50 +wait 0137 ; sm_cvar director_magnum_spawn_density -1 +wait 0138 ; sm_cvar director_max_threat_areas 5 +wait 0139 ; sm_cvar director_melee_weapon_density 4 +wait 0140 ; sm_cvar director_min_start_players 1 +wait 0141 ; sm_cvar director_molotov_density 4 +wait 0142 ; sm_cvar // director_music_dynamic_mob_size 20 +wait 0143 ; sm_cvar // director_music_dynamic_mobstop_size 10 +wait 0144 ; sm_cvar // director_music_dynamic_scanmobstop_size 5 +wait 0145 ; sm_cvar director_oxygen_tank_density 4 +wait 0146 ; sm_cvar director_pain_pill_density 4 +wait 0147 ; sm_cvar director_panic_wave_pause_max 5 +wait 0148 ; sm_cvar // director_panic_wave_pause_min 4 +wait 0149 ; sm_cvar // director_per_map_weapon_upgrade_chance 0.5 +wait 0150 ; sm_cvar director_pipe_bomb_density 4 +wait 0151 ; sm_cvar director_propane_tank_density 4 +wait 0152 ; sm_cvar director_ready_duration 30 +wait 0153 ; sm_cvar // director_ready_radius 300 +wait 0154 ; sm_cvar // director_relax_max_flow_travel 3000 +wait 0155 ; sm_cvar director_relax_max_interval 20 +wait 0156 ; sm_cvar director_relax_min_interval 10 +wait 0157 ; sm_cvar // director_report_screen_delay 5 +wait 0158 ; sm_cvar // director_special_battlefield_respawn_interval 10 +wait 0159 ; sm_cvar // director_special_finale_offer_length 10 +wait 0160 ; sm_cvar director_special_initial_spawn_delay_max 0 +wait 0161 ; sm_cvar director_special_initial_spawn_delay_max_extra 0 +wait 0162 ; sm_cvar director_special_initial_spawn_delay_min 0 +wait 0163 ; sm_cvar // director_special_original_offer_length 10 +wait 0164 ; sm_cvar director_special_respawn_interval 10 +wait 0165 ; sm_cvar director_super_weapon_density 4 +wait 0166 ; sm_cvar director_survivor_movement_window 10 +wait 0167 ; sm_cvar // director_sustain_peak_max_time 5 +wait 0168 ; sm_cvar director_sustain_peak_min_time 5 +wait 0169 ; sm_cvar // director_tank_bypass_max_flow_travel 1000 +wait 0170 ; sm_cvar // director_tank_checkpoint_interval 10 +wait 0171 ; sm_cvar // director_tank_lottery_entry_time 0.1 +wait 0172 ; sm_cvar director_tank_lottery_selection_time 3 +wait 0173 ; sm_cvar director_tank_max_interval 300 +wait 0174 ; sm_cvar director_tank_min_interval 300 +wait 0175 ; sm_cvar // director_test_loop_restarts_before_rotate 10 +wait 0176 ; sm_cvar // director_test_loop_rotate_maps 0 +wait 0177 ; sm_cvar // director_test_loop_time 5 +wait 0178 ; sm_cvar director_threat_clear_radius 200 +wait 0179 ; sm_cvar director_threat_max_separation 4000 +wait 0180 ; sm_cvar director_threat_min_separation 4000 +wait 0181 ; sm_cvar // director_threat_radius 500 +wait 0182 ; sm_cvar director_transition_timeout 60 +wait 0183 ; sm_cvar director_unfreeze_time 0 +wait 0184 ; sm_cvar director_upgradepack_density 4 +wait 0185 ; sm_cvar director_vomitjar_density 4 +wait 0186 ; sm_cvar director_vs_convert_pills 0 +wait 0187 ; sm_cvar // director_weapon_cluster_range 100 + +wait 0188 ; sm_cvar elevator_movedelay 0 +wait 0189 ; sm_cvar engine_fix_flags 12 +wait 0190 ; sm_cvar engine_no_focus_sleep 0 +wait 0191 ; sm_cvar // ent_steadystate_batchsize 10 +wait 0192 ; sm_cvar ent_steadystate_cooldown 5 +wait 0193 ; sm_cvar // ent_steadystate_delay 5 +wait 0194 ; sm_cvar // ent_steadystate_enable 1 +wait 0195 ; sm_cvar // ent_steadystate_interval 0.1 + +wait 0196 ; sm_cvar fall_speed_fatal 749.39976 +wait 0197 ; sm_cvar fall_speed_safe 499.59984 +wait 0198 ; sm_cvar // fidget_max_interval 20 +wait 0199 ; sm_cvar // fidget_min_interval 10 +wait 0200 ; sm_cvar fire_absorbrate 100 +wait 0201 ; sm_cvar fire_dmgbase 1 +wait 0202 ; sm_cvar // fire_dmginterval 1 +wait 0203 ; sm_cvar fire_dmgscale 0.1 +wait 0204 ; sm_cvar fire_extabsorb 100 +wait 0205 ; sm_cvar fire_extscale 100 +wait 0206 ; sm_cvar fire_growthrate 0.1 +wait 0207 ; sm_cvar fire_heatscale 0.1 +wait 0208 ; sm_cvar fire_incomingheatscale 0.1 +wait 0209 ; sm_cvar fire_maxabsorb 100 +wait 0210 ; sm_cvar // first_aid_heal_percent 0.8 +wait 0211 ; sm_cvar first_aid_kit_max_heal 101 +wait 0212 ; sm_cvar first_aid_kit_use_duration 4.8 +wait 0213 ; sm_cvar flex_expression "" +wait 0214 ; sm_cvar force_disablex360 1 +wait 0215 ; sm_cvar fps_max 1000 +wait 0216 ; sm_cvar fps_max_splitscreen 1000 +wait 0217 ; sm_cvar fuel_barrel_damage_amount 25 +wait 0218 ; sm_cvar fuel_barrel_damage_radius 600 +wait 0219 ; sm_cvar fuel_barrel_flame_instances 10 +wait 0220 ; sm_cvar fuel_barrel_health 10 +wait 0221 ; sm_cvar fuel_barrel_screen_shake_amplitude 50 +wait 0222 ; sm_cvar fuel_barrel_screen_shake_duration 2 +wait 0223 ; sm_cvar fuel_barrel_screen_shake_frequency 2 +wait 0224 ; sm_cvar // fuel_barrel_screen_shake_radius 1000 +wait 0225 ; sm_cvar func_break_max_pieces 30 +wait 0226 ; sm_cvar func_break_reduction_factor 1.0 +wait 0227 ; sm_cvar func_breakdmg_bullet 1 +wait 0228 ; sm_cvar func_breakdmg_club 3 +wait 0229 ; sm_cvar func_breakdmg_explosive 2 +wait 0230 ; sm_cvar g_Language English +wait 0231 ; sm_cvar g_ragdoll_max_fps 60 +wait 0232 ; sm_cvar g_ragdoll_min_fps 30 +wait 0233 ; sm_cvar gas_can_use_duration 1.9 +wait 0234 ; sm_cvar gascan_spit_time 2.75 +wait 0235 ; sm_cvar gascan_throw_force 100 +wait 0236 ; sm_cvar gascan_use_range 80 +wait 0237 ; sm_cvar gascan_use_tolerance 0.0 +wait 0238 ; sm_cvar gpu_level 3 +wait 0239 ; sm_cvar gpu_mem_level 2 +wait 0240 ; sm_cvar grenadelauncher_damage 750 +wait 0241 ; sm_cvar grenadelauncher_ff_scale 0.05 +wait 0242 ; sm_cvar grenadelauncher_ff_scale_self 0.05 +wait 0243 ; sm_cvar grenadelauncher_force_kill 0 +wait 0244 ; sm_cvar grenadelauncher_radius_kill 300 +wait 0245 ; sm_cvar grenadelauncher_radius_stumble 500 +wait 0246 ; sm_cvar grenadelauncher_startpos_forward 16 +wait 0247 ; sm_cvar grenadelauncher_startpos_right 4 +wait 0248 ; sm_cvar grenadelauncher_startpos_up 0 +wait 0249 ; sm_cvar grenadelauncher_vel_up 125 +wait 0250 ; sm_cvar grenadelauncher_vel_variance 0 +wait 0251 ; sm_cvar grenadelauncher_velocity 1250 + +wait 0252 ; sm_cvar // hack_elevator_z_offset 16 +wait 0253 ; sm_cvar host_flush_threshold 0 +wait 0254 ; sm_cvar host_timescale 1.0 +wait 0255 ; sm_cvar host_xbox_e3_restart 0 // 1440 +wait 0256 ; sm_cvar hostfile myhost.txt +wait 0257 ; sm_cvar hostname "Bizzy's Moonmod" +wait 0258 ; sm_cvar // hostport 27019 +wait 0259 ; sm_cvar hunter_committed_attack_range 600 +wait 0260 ; sm_cvar hunter_leap_away_give_up_range 10000 +wait 0261 ; sm_cvar hunter_pounce_air_speed 750 +wait 0262 ; sm_cvar hunter_pounce_loft_rate 0.03 +wait 0263 ; sm_cvar hunter_pounce_max_loft_angle 45 +wait 0264 ; sm_cvar hunter_pounce_ready_range 800 +wait 0265 ; sm_cvar hunter_pz_claw_dmg 8 + +wait 0266 ; sm_cvar incendiary_ammo_burn_time 6 +wait 0267 ; sm_cvar inferno_acid_spawn_angle 45 +wait 0268 ; sm_cvar inferno_child_spawn_interval_multiplier 1 +wait 0269 ; sm_cvar // inferno_child_spawn_max_depth 5 +wait 0270 ; sm_cvar inferno_damage 50 +wait 0271 ; sm_cvar // inferno_flame_lifetime 15 +wait 0272 ; sm_cvar // inferno_flame_spacing 60 +wait 0273 ; sm_cvar inferno_forward_reduction_factor 1.0 +wait 0274 ; sm_cvar inferno_friendly_fire_duration 15 +wait 0275 ; sm_cvar inferno_initial_spawn_interval 0 +wait 0276 ; sm_cvar inferno_max_child_spawn_interval 1 +wait 0277 ; sm_cvar inferno_max_flames 50 +wait 0278 ; sm_cvar inferno_max_range 250 +wait 0279 ; sm_cvar // inferno_max_trace_per_tick 25 +wait 0280 ; sm_cvar // inferno_per_flame_spawn_duration 5 +wait 0281 ; sm_cvar // inferno_scorch_decals 0 +wait 0282 ; sm_cvar // inferno_spawn_angle 45 +wait 0283 ; sm_cvar // inferno_surface_offset 30 +wait 0284 ; sm_cvar // inferno_velocity_decay_factor 0.2 +wait 0285 ; sm_cvar // inferno_velocity_factor 0.002 +wait 0286 ; sm_cvar inferno_velocity_normal_factor 0.0 +wait 0287 ; sm_cvar intensity_averaged_following_decay 10 +wait 0288 ; sm_cvar intensity_decay_time 20 +wait 0289 ; sm_cvar // intensity_enemy_death_far_range 1000 +wait 0290 ; sm_cvar // intensity_enemy_death_near_range 250 +wait 0291 ; sm_cvar intensity_factor 1.0 +wait 0292 ; sm_cvar // ip 74.91.113.130 + +wait 0293 ; sm_cvar jockey_pounce_air_speed 750 +wait 0294 ; sm_cvar jockey_pounce_loft_rate 0.03 +wait 0295 ; sm_cvar jockey_pounce_max_loft_angle 60 +wait 0296 ; sm_cvar // jockey_pz_claw_dmg 4 + +wait 0297 ; sm_cvar l4d_stats_nogameplaycheck 1 +wait 0298 ; sm_cvar l4d_stats_track 1 +wait 0299 ; sm_cvar // ladder_autocenter 1 +wait 0300 ; sm_cvar ladder_horizon -0.38268343 +wait 0301 ; sm_cvar // lservercfgfile listenserver.cfg + +wait 0302 ; sm_cvar mat_aaquality 0 +wait 0303 ; sm_cvar mat_antialias 8 +wait 0304 ; sm_cvar mat_depthbias_normal 0.0 +wait 0305 ; sm_cvar mat_dxlevel 92 +wait 0306 ; sm_cvar // mat_envmapsize 128 +wait 0307 ; sm_cvar mat_envmaptgasize 32 +wait 0308 ; sm_cvar mat_forceaniso 16 +wait 0309 ; sm_cvar // mat_hdr_level 2 +wait 0310 ; sm_cvar mat_levelflush 0 +wait 0311 ; sm_cvar mat_maxframelatency 0 +wait 0312 ; sm_cvar mat_monitorgamma 1.6 +wait 0313 ; sm_cvar mat_monitorgamma_tv_enabled 1 +wait 0314 ; sm_cvar mat_monitorgamma_tv_exp 4.0 +wait 0315 ; sm_cvar // mat_monitorgamma_tv_range_max 255 +wait 0316 ; sm_cvar mat_monitorgamma_tv_range_min 0 +wait 0317 ; sm_cvar mat_motion_blur_enabled 1 +wait 0318 ; sm_cvar mat_phong 1 +wait 0319 ; sm_cvar mat_picmip -10 +wait 0320 ; sm_cvar mat_queue_mode 2 +wait 0321 ; sm_cvar // mat_shadowstate 0 +wait 0322 ; sm_cvar mat_specular 1 +wait 0323 ; sm_cvar // mat_triplebuffered 0 +wait 0324 ; sm_cvar mat_vsync 0 +wait 0325 ; sm_cvar melee_collateral_shove_count 20 +wait 0326 ; sm_cvar melee_combo_reset_time 1.0 +wait 0327 ; sm_cvar melee_damage_charger 400 +wait 0328 ; sm_cvar melee_drop_method 0 +wait 0329 ; sm_cvar melee_force_scalar 25 +wait 0330 ; sm_cvar melee_force_scalar_combat_character 25 +wait 0331 ; sm_cvar melee_range 90 +wait 0332 ; sm_cvar mem_incremental_compact_rate 0.5 +wait 0333 ; sm_cvar mem_level 2 +wait 0334 ; sm_cvar mem_max_heapsize 512 +wait 0335 ; sm_cvar mem_max_heapsize_dedicated 512 +wait 0336 ; sm_cvar mem_min_heapsize 512 +wait 0337 ; sm_cvar // mix_dynamic_max_CI_emitters 30 +wait 0338 ; sm_cvar // mix_dynamic_num_attack_vox_CI 2 +wait 0339 ; sm_cvar // mm_datacenter_delay_mount_frames 6 +wait 0340 ; sm_cvar // mm_datacenter_query_delay 5 +wait 0341 ; sm_cvar // mm_datacenter_report_version 5 +wait 0342 ; sm_cvar // mm_datacenter_retry_infochunks_attempts 3 +wait 0343 ; sm_cvar // mm_datacenter_retry_interval 60 +wait 0344 ; sm_cvar // mm_datacenter_update_interval 600 +wait 0345 ; sm_cvar // mm_heartbeat_seconds 300 +wait 0346 ; sm_cvar // mm_heartbeat_seconds_xlsp 60 +wait 0347 ; sm_cvar // mm_heartbeat_timeout 10 +wait 0348 ; sm_cvar // mm_heartbeat_timeout_legacy 10 +wait 0349 ; sm_cvar // mm_matchmaking_dlcsquery 2 +wait 0350 ; sm_cvar // mm_matchmaking_version 10 +wait 0351 ; sm_cvar // mm_server_search_inet_ping_interval 1 +wait 0352 ; sm_cvar // mm_server_search_inet_ping_refresh 15 +wait 0353 ; sm_cvar // mm_server_search_inet_ping_timeout 5 +wait 0354 ; sm_cvar // mm_server_search_inet_ping_window 10 +wait 0355 ; sm_cvar // mm_server_search_lan_ping_duration 1 +wait 0356 ; sm_cvar // mm_server_search_lan_ping_interval 0.25 +wait 0357 ; sm_cvar mm_server_search_lan_ports "27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025" +wait 0358 ; sm_cvar // mm_server_search_server_lifetime 120 +wait 0359 ; sm_cvar // mm_server_search_update_interval 30 +wait 0360 ; sm_cvar // morph_path 0 +wait 0361 ; sm_cvar motd_enabled 1 +wait 0362 ; sm_cvar motdfile mymotd.txt +wait 0363 ; sm_cvar mounted_gun_cooldown_time 0.1 +wait 0364 ; sm_cvar mounted_gun_mount_cooldown_time 0 +wait 0365 ; sm_cvar mounted_gun_overheat_penalty_time 0 +wait 0366 ; sm_cvar mounted_gun_overheat_time 100 +wait 0367 ; sm_cvar mounted_gun_rate_of_fire 15 +wait 0368 ; sm_cvar // mp_allowNPCs 0 +wait 0369 ; sm_cvar mp_allowspectators 1 +wait 0370 ; sm_cvar mp_autokick 0 +wait 0371 ; sm_cvar mp_autoteambalance 0 +wait 0372 ; sm_cvar mp_buytime 86400 +wait 0373 ; sm_cvar mp_c4timer 10 +wait 0374 ; sm_cvar mp_capdeteriorate_time 60 +wait 0375 ; sm_cvar mp_chattime 120 +wait 0376 ; sm_cvar // mp_clan_ready_signal ready +wait 0377 ; sm_cvar mp_enableroundwaittime 0 +wait 0378 ; sm_cvar mp_facefronttime 0.333333 +wait 0379 ; sm_cvar mp_feetmaxyawrate 90 +wait 0380 ; sm_cvar mp_feetyawrate 120 +wait 0381 ; sm_cvar mp_feetyawrate_max 180 +wait 0382 ; sm_cvar mp_forcecamera 0 +wait 0383 ; sm_cvar mp_freezetime 0 +wait 0384 ; sm_cvar mp_limitteams 0 +wait 0385 ; sm_cvar // mp_playerid 1 +wait 0386 ; sm_cvar mp_playerid_delay 0 +wait 0387 ; sm_cvar mp_playerid_hold 0.2 +wait 0388 ; sm_cvar mp_roundlimit 5 +wait 0389 ; sm_cvar mp_roundtime 9 +wait 0390 ; sm_cvar mp_spawnprotectiontime 0 +wait 0391 ; sm_cvar mp_stalemate_timelimit 0 +wait 0392 ; sm_cvar mp_startmoney 16000 +wait 0393 ; sm_cvar // mp_teamlist "spectator,survivor,nick,gambler,ellis,mechanic,coach,rochelle,producer,bill,navvet,francis,biker,louis,manager,zoey,teenangst,zombie,infected,common,minion,hunter,smoker,gas,boomer,exploding,jockey,charger,spitter,witch,tank" +wait 0394 ; sm_cvar mp_teams_unbalance_limit 0 +wait 0395 ; sm_cvar mp_tkpunish 0 +wait 0396 ; sm_cvar mp_weapon_ak47_price 0 +wait 0397 ; sm_cvar mp_weapon_aug_price 0 +wait 0398 ; sm_cvar mp_weapon_awp_price 0 +wait 0399 ; sm_cvar mp_weapon_deagle_price 0 +wait 0400 ; sm_cvar mp_weapon_elite_price 0 +wait 0401 ; sm_cvar mp_weapon_famas_price 0 +wait 0402 ; sm_cvar mp_weapon_fiveseven_price 0 +wait 0403 ; sm_cvar mp_weapon_g3sg1_price 0 +wait 0404 ; sm_cvar mp_weapon_galil_price 0 +wait 0405 ; sm_cvar mp_weapon_glock_price 0 +wait 0406 ; sm_cvar mp_weapon_m249_price 0 +wait 0407 ; sm_cvar mp_weapon_m3_price 0 +wait 0408 ; sm_cvar mp_weapon_m4a1_price 0 +wait 0409 ; sm_cvar mp_weapon_mac10_price 0 +wait 0410 ; sm_cvar mp_weapon_mp5navy_price 0 +wait 0411 ; sm_cvar mp_weapon_p228_price 0 +wait 0412 ; sm_cvar mp_weapon_p90_price 0 +wait 0413 ; sm_cvar mp_weapon_scout_price 0 +wait 0414 ; sm_cvar mp_weapon_sg550_price 0 +wait 0415 ; sm_cvar mp_weapon_sg552_price 0 +wait 0416 ; sm_cvar mp_weapon_tmp_price 0 +wait 0417 ; sm_cvar mp_weapon_ump45_price 0 +wait 0418 ; sm_cvar mp_weapon_usp_price 0 +wait 0419 ; sm_cvar mp_weapon_xm1014_price 0 +wait 0420 ; sm_cvar music_bank_max_duration 86400 +wait 0421 ; sm_cvar music_bank_min_duration 86400 +wait 0422 ; sm_cvar music_calm_min_interval 30 +wait 0423 ; sm_cvar // music_dynamic_action_decay 10 +wait 0424 ; sm_cvar music_dynamic_ambient_decay 5 +wait 0425 ; sm_cvar music_dynamic_ambient_in_max 0.8 +wait 0426 ; sm_cvar // music_dynamic_ambient_in_min 0.5 +wait 0427 ; sm_cvar // music_dynamic_ambient_out_max 1.0 +wait 0428 ; sm_cvar // music_dynamic_ambient_out_min 0.0 +wait 0429 ; sm_cvar // music_dynamic_ambient_vol_min_alert 0.4 +wait 0430 ; sm_cvar music_dynamic_attack_CI_close_decay 0.2 +wait 0431 ; sm_cvar // music_dynamic_attack_CI_close_distmax 750 +wait 0432 ; sm_cvar // music_dynamic_attack_CI_distmax 2500 +wait 0433 ; sm_cvar music_dynamic_attack_CI_near_decay 0.2 +wait 0434 ; sm_cvar // music_dynamic_attack_CI_near_distmax 500 +wait 0435 ; sm_cvar // music_dynamic_attack_CI_num 20 +wait 0436 ; sm_cvar music_dynamic_attack_CI_veryclose_decay 0.2 +wait 0437 ; sm_cvar // music_dynamic_attack_CI_veryclose_distmax 100 +wait 0438 ; sm_cvar // music_dynamic_calm_decay 10 +wait 0439 ; sm_cvar // music_dynamic_CI_sight_decay 10 +wait 0440 ; sm_cvar // music_dynamic_damage_decay 10 +wait 0441 ; sm_cvar // music_dynamic_damage_duck_damage_max 1.0 +wait 0442 ; sm_cvar // music_dynamic_damage_duck_damage_min 0.5 +wait 0443 ; sm_cvar // music_dynamic_damage_duck_max 0.3 +wait 0444 ; sm_cvar // music_dynamic_damage_duck_min 0.0 +wait 0445 ; sm_cvar music_dynamic_damage_increment 0.1 +wait 0446 ; sm_cvar // music_dynamic_dodamage_decay 5 +wait 0447 ; sm_cvar music_dynamic_dodamage_increment 0.02 +wait 0448 ; sm_cvar // music_dynamic_gunfire_decay 1.0 +wait 0449 ; sm_cvar music_dynamic_gunfire_increment 0.4 +wait 0450 ; sm_cvar // music_dynamic_gunfireslow_decay 3 +wait 0451 ; sm_cvar // music_dynamic_gunfireslow_increment 0.3 +wait 0452 ; sm_cvar // music_dynamic_mob_action_close_max 0.4 +wait 0453 ; sm_cvar // music_dynamic_mob_action_close_min 0 +wait 0454 ; sm_cvar // music_dynamic_mob_action_decay 15 +wait 0455 ; sm_cvar music_dynamic_mob_action_increment 0.1 +wait 0456 ; sm_cvar // music_dynamic_mob_action_max 1.0 +wait 0457 ; sm_cvar // music_dynamic_mob_action_min 0.0 +wait 0458 ; sm_cvar // music_dynamic_mob_choir_BPM 90 +wait 0459 ; sm_cvar // music_dynamic_mob_choir_interval_beats 16 +wait 0460 ; sm_cvar // music_dynamic_mob_choir_interval_randmultmax 3 +wait 0461 ; sm_cvar // music_dynamic_mob_damage_max 1.0 +wait 0462 ; sm_cvar // music_dynamic_mob_damage_min 0.6 +wait 0463 ; sm_cvar // music_dynamic_mob_decay 15 +wait 0464 ; sm_cvar music_dynamic_mob_increment 0.1 +wait 0465 ; sm_cvar // music_dynamic_mob_large 40 +wait 0466 ; sm_cvar // music_dynamic_mob_max 1.0 +wait 0467 ; sm_cvar // music_dynamic_mob_med 20 +wait 0468 ; sm_cvar // music_dynamic_mob_min 0.5 +wait 0469 ; sm_cvar // music_dynamic_mob_small 20 +wait 0470 ; sm_cvar // music_dynamic_PZ_BPM 80 +wait 0471 ; sm_cvar // music_dynamic_PZ_interval_randmultmax 5 +wait 0472 ; sm_cvar // music_dynamic_scavenge_beat 1 +wait 0473 ; sm_cvar // music_dynamic_SI_close_distmax 1500 +wait 0474 ; sm_cvar // music_dynamic_SI_far_distmin 2000 +wait 0475 ; sm_cvar // music_dynamic_SI_inrange_distmax 2500 +wait 0476 ; sm_cvar music_dynamic_solosuccess_damagemin 0.3 +wait 0477 ; sm_cvar // music_dynamic_solosuccess_decay 4 +wait 0478 ; sm_cvar // music_dynamic_solosuccess_increment 1 +wait 0479 ; sm_cvar // music_dynamic_specials_interval_beats 5 +wait 0480 ; sm_cvar // music_dynamic_threat_decay 6 +wait 0481 ; sm_cvar music_dynamic_update_interval 0.1 +wait 0482 ; sm_cvar // music_dynamic_witch_alert_interval 30 +wait 0483 ; sm_cvar // music_dynamic_witch_near_max 2000 +wait 0484 ; sm_cvar // music_dynamic_witch_near_min 500 +wait 0485 ; sm_cvar // music_intensity_threshold 0.25 +wait 0486 ; sm_cvar // music_large_area_reveal_repeat_threshold 30 +wait 0487 ; sm_cvar // music_large_area_reveal_threshold 100000 +wait 0488 ; sm_cvar // music_min_pending_threat_time 10 +wait 0489 ; sm_cvar // music_min_safe_time 5 +wait 0490 ; sm_cvar // music_moment_of_silence_repeat_interval 300 +wait 0491 ; sm_cvar // music_moment_of_silence_start_delay 30 +wait 0492 ; sm_cvar mv_maxplayers 32 + +wait 0493 ; sm_cvar name Bizzy +wait 0494 ; sm_cvar name2 Moon +wait 0495 ; sm_cvar // nav_area_bgcolor "0 0 0 255" +wait 0496 ; sm_cvar // nav_area_max_size 100 +wait 0497 ; sm_cvar nav_coplanar_slope_limit 0.9914448614 +wait 0498 ; sm_cvar nav_coplanar_slope_limit_displacement 0.70710678 +wait 0499 ; sm_cvar // nav_corner_adjust_adjacent 16 +wait 0500 ; sm_cvar // nav_displacement_test 10000 +wait 0501 ; sm_cvar // nav_drag_selection_volume_zmax_offset 32 +wait 0502 ; sm_cvar // nav_drag_selection_volume_zmin_offset 32 +wait 0503 ; sm_cvar // nav_draw_limit 1000 +wait 0504 ; sm_cvar // nav_flood_select_tolerance 0.0 +wait 0505 ; sm_cvar // nav_flow_max_survivor_climb_height 75 +wait 0506 ; sm_cvar // nav_flow_max_survivor_drop_height 250 +wait 0507 ; sm_cvar // nav_generate_incremental_range 2000 +wait 0508 ; sm_cvar // nav_generate_incremental_tolerance 0.0 +wait 0509 ; sm_cvar nav_lying_down_percent 0 +wait 0510 ; sm_cvar nav_max_auto_area_size 32768 // 46340.950012 +wait 0511 ; sm_cvar nav_max_vis_delta_list_length 0 +wait 0512 ; sm_cvar // nav_obscure_range 300 +wait 0513 ; sm_cvar nav_potentially_visible_dot_tolerance 0.965925826 +wait 0514 ; sm_cvar // nav_save_history 10 +wait 0515 ; sm_cvar nav_selected_set_border_color "102 102 0 255" +wait 0516 ; sm_cvar nav_selected_set_color "255 255 204 255" +wait 0517 ; sm_cvar nav_show_area_info 0.2 +wait 0518 ; sm_cvar nav_slope_limit 0.70710678 +wait 0519 ; sm_cvar nav_slope_tolerance 0.087515574 +wait 0520 ; sm_cvar // nav_solid_props 1 +wait 0521 ; sm_cvar // nav_test_node_crouch_dir 4 +wait 0522 ; sm_cvar // nav_trouble_test_debug_duration 10 +wait 0523 ; sm_cvar // nb_acceleration 500 +wait 0524 ; sm_cvar nb_avoid 0 +wait 0525 ; sm_cvar nb_avoid_interval 1 +wait 0526 ; sm_cvar nb_chase_lead_time 1 +wait 0527 ; sm_cvar nb_friction_forward 3 +wait 0528 ; sm_cvar nb_friction_sideways 3 +wait 0529 ; sm_cvar nb_goal_look_ahead_range 100 +wait 0530 ; sm_cvar nb_gravity 2000 +wait 0531 ; sm_cvar nb_head_aim_settle_duration 0.1 +wait 0532 ; sm_cvar nb_head_aim_steady_max_rate 3000 +wait 0533 ; sm_cvar nb_ladder_align_range 128 +wait 0534 ; sm_cvar nb_lean_forward_accel 200 +wait 0535 ; sm_cvar // nb_lean_max_angle 30 +wait 0536 ; sm_cvar nb_lean_rate 4 +wait 0537 ; sm_cvar nb_path_draw_inc 16384 +wait 0538 ; sm_cvar nb_path_segment_influence_radius 16384 +wait 0539 ; sm_cvar nb_saccade_speed 3000 +wait 0540 ; sm_cvar // nb_saccade_time 0.1 +wait 0541 ; sm_cvar nb_speed_look_ahead_range 300 +wait 0542 ; sm_cvar nb_stuck_dump_filter_time_end 86400 +wait 0543 ; sm_cvar nb_update_framelimit 10 +wait 0544 ; sm_cvar nb_update_frequency 0 +wait 0545 ; sm_cvar nb_update_maxslide 10 +wait 0546 ; sm_cvar nb_vision_notice_hidden_range 0 +wait 0547 ; sm_cvar // nb_yaw_rate 300 +wait 0548 ; sm_cvar net_chan_stats_dump_top_msgs 0 +wait 0549 ; sm_cvar net_chan_stats_lru 0 +wait 0550 ; sm_cvar net_compresspackets_minsize 1200 +wait 0551 ; sm_cvar net_maxcleartime 0.016667 +wait 0552 ; sm_cvar net_maxfilesize 64 +wait 0553 ; sm_cvar net_minroutable 1200 +wait 0554 ; sm_cvar net_splitpacket_maxrate 72000 +wait 0555 ; sm_cvar net_splitrate 2 + +wait 0556 ; sm_cvar old_radiusdamage 0 + +wait 0557 ; sm_cvar pain_pills_decay_rate 0.16666667 +wait 0558 ; sm_cvar // pain_pills_health_value 60 +wait 0559 ; sm_cvar // phys2_ccd_epsilon 0.01 +wait 0560 ; sm_cvar // phys2_num_threads 16 +wait 0561 ; sm_cvar // phys2_ragdoll_clamp_angular_velocity 30 +wait 0562 ; sm_cvar // phys2_ragdoll_clamp_linear_velocity 600 +wait 0563 ; sm_cvar // phys2_ragdoll_force_magnitude 5 +wait 0564 ; sm_cvar // phys2_ragdoll_torque_magnitude 0.0 +wait 0565 ; sm_cvar // phys2_ragdoll_velocity 1 +wait 0566 ; sm_cvar // phys2_shoot_speed 250 +wait 0567 ; sm_cvar phys2_vdb_host 74.91.113.130 +wait 0568 ; sm_cvar // phys2_version "Version 2.2 (w/scheduler), built Nov 15 2021 13:55:21" +wait 0569 ; sm_cvar phys_enable_experimental_optimizations 1 +wait 0570 ; sm_cvar phys_explosion_force 1.0 +wait 0571 ; sm_cvar phys_impactforcescale 1.0 +wait 0572 ; sm_cvar phys_penetration_error_time 0 +wait 0573 ; sm_cvar phys_pushscale 2.0 +wait 0574 ; sm_cvar phys_ragdoll_force_magnitude 0.5 +wait 0575 ; sm_cvar phys_shoot_torque 1000000 +wait 0576 ; sm_cvar // phys_stressbodyweights 5.0 +wait 0577 ; sm_cvar phys_timescale 1.0 +wait 0578 ; sm_cvar phys_upimpactforcescale 0.5 +wait 0579 ; sm_cvar // PhysPMC 1 +wait 0580 ; sm_cvar // physx_valve_dll 1 +wait 0581 ; sm_cvar // pipe_bomb_beep_interval_delta 0.025 +wait 0582 ; sm_cvar pipe_bomb_beep_min_interval 0.083333 +wait 0583 ; sm_cvar pipe_bomb_initial_beep_interval 0.533333 +wait 0584 ; sm_cvar // pipe_bomb_shake_amplitude 50 +wait 0585 ; sm_cvar pipe_bomb_shake_radius 1000 +wait 0586 ; sm_cvar pipe_bomb_timer_duration 7 +wait 0587 ; sm_cvar player_incap_use_radius 150 +wait 0588 ; sm_cvar player_throwforce 2250 +wait 0589 ; sm_cvar player_use_radius 110 +wait 0590 ; sm_cvar precache_all_survivors 1 +wait 0591 ; sm_cvar prop_active_gib_limit 30 +wait 0592 ; sm_cvar prop_active_gib_max_fade_time 10 +wait 0593 ; sm_cvar props_break_max_pieces -1 +wait 0594 ; sm_cvar // props_break_max_pieces_perframe 1 +wait 0595 ; sm_cvar punch_angle_decay_rate 15 + +wait 0596 ; sm_cvar // r_AirboatViewDampenDamp 1.0 +wait 0597 ; sm_cvar r_AirboatViewDampenFreq 10.0 +wait 0598 ; sm_cvar // r_AirboatViewZHeight 0.0 +wait 0599 ; sm_cvar r_ambientboost 1.0 +wait 0600 ; sm_cvar // r_ambientfactor 10 +wait 0601 ; sm_cvar // r_ambientfraction 0.0 +wait 0602 ; sm_cvar r_ambientmin 0.0 +wait 0603 ; sm_cvar r_decal_cover_count 2147483647 +wait 0604 ; sm_cvar r_decal_overlap_area 1.0 +wait 0605 ; sm_cvar r_decal_overlap_count 2147483647 +wait 0606 ; sm_cvar r_decals 2147483647 +wait 0607 ; sm_cvar // r_decalstaticprops 1 +wait 0608 ; sm_cvar // r_drawbatchdecals 1 +wait 0609 ; sm_cvar // r_drawdecals 1 +wait 0610 ; sm_cvar // r_DrawDisp 1 +wait 0611 ; sm_cvar // r_drawmodeldecals 1 +wait 0612 ; sm_cvar // r_drawmodelstatsoverlaydistance 1000 +wait 0613 ; sm_cvar r_drawmodelstatsoverlaymax 0 +wait 0614 ; sm_cvar r_drawmodelstatsoverlaymin 0 +wait 0615 ; sm_cvar // r_dscale_fardist 2000 +wait 0616 ; sm_cvar // r_dscale_farscale 4 +wait 0617 ; sm_cvar // r_dscale_neardist 100 +wait 0618 ; sm_cvar // r_dscale_nearscale 1 +wait 0619 ; sm_cvar // r_dynamic 1 +wait 0620 ; sm_cvar r_eyeglintlodpixels 20 +wait 0621 ; sm_cvar // r_eyemove 1 +wait 0622 ; sm_cvar r_eyeshift_x 0.0 +wait 0623 ; sm_cvar r_eyeshift_y 0.0 +wait 0624 ; sm_cvar r_eyeshift_z 0.0 +wait 0625 ; sm_cvar r_eyesize 0.0 +wait 0626 ; sm_cvar r_flashlightdepthtexture 1 +wait 0627 ; sm_cvar // r_flashlightscissor 1 +wait 0628 ; sm_cvar // r_flex 1 +wait 0629 ; sm_cvar // r_hunkalloclightmaps 1 +wait 0630 ; sm_cvar r_hwmorph 0 +wait 0631 ; sm_cvar r_itemblinkmax 0.5 +wait 0632 ; sm_cvar r_itemblinkrate 5.0 +wait 0633 ; sm_cvar // r_JeepFOV 90 +wait 0634 ; sm_cvar // r_JeepViewDampenDamp 1.0 +wait 0635 ; sm_cvar r_JeepViewDampenFreq 10.0 +wait 0636 ; sm_cvar r_JeepViewZHeight 10 +wait 0637 ; sm_cvar // r_lightaverage 1 +wait 0638 ; sm_cvar // r_lightinterp 10 +wait 0639 ; sm_cvar r_lod 0 +wait 0640 ; sm_cvar r_maxmodeldecal 2147483647 +wait 0641 ; sm_cvar // r_overlayfadeenable 0 +wait 0642 ; sm_cvar // r_overlayfademax 2000 +wait 0643 ; sm_cvar r_overlayfademin 1500 +wait 0644 ; sm_cvar r_queued_decals 1 +wait 0645 ; sm_cvar // r_randomflex 0 +wait 0646 ; sm_cvar // r_renderoverlayfragment 1 +wait 0647 ; sm_cvar r_shadowlod 0 +wait 0648 ; sm_cvar r_shadowlodbias 0 +wait 0649 ; sm_cvar r_shadowrendertotexture 1 +wait 0650 ; sm_cvar r_spray_lifetime 2147483647 +wait 0651 ; sm_cvar r_staticprop_lod 0 +wait 0652 ; sm_cvar r_vehicleBrakeRate 2.0 +wait 0653 ; sm_cvar r_VehicleViewDampen 1.0 +wait 0654 ; sm_cvar ragdoll_door_uncollide_time 2 +wait 0655 ; sm_cvar ragdoll_force_to_sleep_time 3 +wait 0656 ; sm_cvar ragdoll_self_collision 0 +wait 0657 ; sm_cvar ragdoll_sleepaftertime 3 +wait 0658 ; sm_cvar ragdoll_slowdown 1 +wait 0659 ; sm_cvar ragdoll_slowdown_time 3 +wait 0660 ; sm_cvar rcon_password BigBizzy101 +wait 0661 ; sm_cvar rescue_distance 4000 +wait 0662 ; sm_cvar // rescue_finale_ignore_distance 4000 +wait 0663 ; sm_cvar // rescue_finale_spawn_range 4000 +wait 0664 ; sm_cvar // rescue_ignore_distance 2000 +wait 0665 ; sm_cvar rescue_interval 1 +wait 0666 ; sm_cvar rescue_min_dead_time 10 +wait 0667 ; sm_cvar rescue_range 2000 +wait 0668 ; sm_cvar rescue_spawn_flow 1000 +wait 0669 ; sm_cvar rescue_spawn_range 4000 +wait 0670 ; sm_cvar rescue_yell_delay 3 +wait 0671 ; sm_cvar rescue_yell_interval 10 +wait 0672 ; sm_cvar // rpt_vprof_time 0 +wait 0673 ; sm_cvar rr_followup_maxdist 2000 +wait 0674 ; sm_cvar // rr_remarkable_maxdist 1500 +wait 0675 ; sm_cvar // rr_remarkable_world_entities_replay_limit 0 + +wait 0676 ; sm_cvar sb_all_bot_game 1 +wait 0677 ; sm_cvar // sb_allow_leading 1 +wait 0678 ; sm_cvar sb_allow_shoot_through_survivors 0 +wait 0679 ; sm_cvar sb_battlestation_give_up_range_from_human 500 +wait 0680 ; sm_cvar sb_battlestation_human_hold_time 1 +wait 0681 ; sm_cvar sb_close_checkpoint_door_interval 4 +wait 0682 ; sm_cvar sb_close_threat_range 100 +wait 0683 ; sm_cvar sb_combat_saccade_speed 3000 +wait 0684 ; sm_cvar sb_debug_apoproach_wait_time 0 +wait 0685 ; sm_cvar sb_enforce_proximity_lookat_timeout 5 +wait 0686 ; sm_cvar sb_enforce_proximity_range 1000 +wait 0687 ; sm_cvar sb_far_hearing_range 3000 +wait 0688 ; sm_cvar // sb_flashlight 0 +wait 0689 ; sm_cvar sb_follow_stress_factor 0.0 +wait 0690 ; sm_cvar sb_friend_immobilized_reaction_time_expert 0 +wait 0691 ; sm_cvar sb_friend_immobilized_reaction_time_hard 0 +wait 0692 ; sm_cvar sb_friend_immobilized_reaction_time_normal 0 +wait 0693 ; sm_cvar sb_friend_immobilized_reaction_time_vs 0 +wait 0694 ; sm_cvar sb_hindrance_range 0 +wait 0695 ; sm_cvar sb_l4d1_survivor_behavior 0 +wait 0696 ; sm_cvar sb_locomotion_wait_threshold 2 +wait 0697 ; sm_cvar sb_max_battlestation_range_from_human 500 +wait 0698 ; sm_cvar sb_max_scavenge_separation 500 +wait 0699 ; sm_cvar sb_max_team_melee_weapons 4 +wait 0700 ; sm_cvar sb_min_attention_notice_time 0 +wait 0701 ; sm_cvar sb_min_orphan_time_to_cover 0 +wait 0702 ; sm_cvar sb_minigun_distance 50 +wait 0703 ; sm_cvar sb_narrow_corridor_width 64 +wait 0704 ; sm_cvar sb_near_hearing_range 2000 +wait 0705 ; sm_cvar // sb_neighbor_range 300 +wait 0706 ; sm_cvar sb_normal_saccade_speed 3000 +wait 0707 ; sm_cvar sb_path_lookahead_range 500 +wait 0708 ; sm_cvar // sb_perf_crawl_ang 0 +wait 0709 ; sm_cvar // sb_perf_crawl_dist 0 +wait 0710 ; sm_cvar // sb_perf_crawl_time 0 +wait 0711 ; sm_cvar sb_pushscale 0.0 +wait 0712 ; sm_cvar sb_reachability_cache_lifetime 0 +wait 0713 ; sm_cvar // sb_reachable_cache_paranoia 1 +wait 0714 ; sm_cvar sb_rescue_vehicle_loading_range 50 +wait 0715 ; sm_cvar sb_revive_friend_distance 175 +wait 0716 ; sm_cvar sb_separation_danger_max_range 300 +wait 0717 ; sm_cvar // sb_separation_danger_min_range 100 +wait 0718 ; sm_cvar sb_separation_range 300 +wait 0719 ; sm_cvar sb_sidestep_for_horde 1 +wait 0720 ; sm_cvar sb_temp_health_consider_factor 0.8 +wait 0721 ; sm_cvar sb_threat_close_range 100 +wait 0722 ; sm_cvar sb_threat_exposure_stop 2147483647 // 16777216 +wait 0723 ; sm_cvar sb_threat_exposure_walk 2147483647 // 16777216 +wait 0724 ; sm_cvar sb_threat_far_range 2000 +wait 0725 ; sm_cvar sb_threat_medium_range 1000 +wait 0726 ; sm_cvar sb_threat_very_close_range 100 +wait 0727 ; sm_cvar sb_threat_very_far_range 3000 +wait 0728 ; sm_cvar sb_toughness_buffer 20 +wait 0729 ; sm_cvar sb_use_button_range 500 +wait 0730 ; sm_cvar // sb_use_upgrades 1 +wait 0731 ; sm_cvar sb_vomit_blind_time 0 +wait 0732 ; sm_cvar // scavenge_cluster_bonus_time 15 +wait 0733 ; sm_cvar // scavenge_cluster_range_squared 100000 +wait 0734 ; sm_cvar scavenge_item_respawn_delay 15 +wait 0735 ; sm_cvar // scavenge_match_finished_delay 5 +wait 0736 ; sm_cvar scavenge_overtime_grace_time 0.8 +wait 0737 ; sm_cvar // scavenge_round_initial_time 90 +wait 0738 ; sm_cvar scavenge_round_restart_delay 15 +wait 0739 ; sm_cvar // scavenge_round_restart_delay_tied 15 +wait 0740 ; sm_cvar scavenge_round_setup_time 30 +wait 0741 ; sm_cvar scavenge_score_bonus_time 15 +wait 0742 ; sm_cvar scavenge_wanderer_respawn_chance 100 +wait 0743 ; sm_cvar // scene_maxcaptionradius 1500 +wait 0744 ; sm_cvar shotgun_reload_cancel_delay 0 +wait 0745 ; sm_cvar shout_going_to_die_interval 10 +wait 0746 ; sm_cvar shout_make_way_interval 1 +wait 0747 ; sm_cvar shout_max_warn_range 3000 +wait 0748 ; sm_cvar shout_min_special_warn_interval 1 +wait 0749 ; sm_cvar shout_min_use_range 500 +wait 0750 ; sm_cvar shout_min_warn_interval 1 +wait 0751 ; sm_cvar shout_threat_range 3000 +wait 0752 ; sm_cvar // shout_view_motion_threshold 0.01 +wait 0753 ; sm_cvar // shout_view_target_threahold 0.01 +wait 0754 ; sm_cvar singlestep 0 +wait 0755 ; sm_cvar sk_autoaim_mode 3 +wait 0756 ; sm_cvar // sk_player_arm 3 +wait 0757 ; sm_cvar // sk_player_chest 3 +wait 0758 ; sm_cvar // sk_player_head 3 +wait 0759 ; sm_cvar // sk_player_leg 3 +wait 0760 ; sm_cvar // sk_player_stomach 3 +wait 0761 ; sm_cvar skill 3 +wait 0762 ; sm_cvar sm_unsilentjockey_always 1 +wait 0763 ; sm_cvar sm_unsilentjockey_enabled 1 +wait 0764 ; sm_cvar sm_unsilentjockey_time 2 +wait 0765 ; sm_cvar smoker_escape_range 10000 +wait 0766 ; sm_cvar smoker_pz_claw_dmg 6 +wait 0767 ; sm_cvar smoker_tongue_delay 0 +wait 0768 ; sm_cvar // snd_foliage_db_loss 5 +wait 0769 ; sm_cvar snd_gain 1.0 +wait 0770 ; sm_cvar snd_gain_max 1.0 +wait 0771 ; sm_cvar snd_gain_min 1.0 +wait 0772 ; sm_cvar // snd_refdb 75 +wait 0773 ; sm_cvar // snd_refdist 50 +wait 0774 ; sm_cvar // snd_vox_globaltimeout 600 +wait 0775 ; sm_cvar // snd_vox_sectimetout 600 +wait 0776 ; sm_cvar // snd_vox_seqtimetout 600 +wait 0777 ; sm_cvar soundpatch_captionlength 3 +wait 0778 ; sm_cvar // spec_filter_infected any +wait 0779 ; sm_cvar spec_filter_survivors any +wait 0780 ; sm_cvar spec_freeze_time 0 +wait 0781 ; sm_cvar spec_freeze_traveltime 0.01 +wait 0782 ; sm_cvar spit_scaling_min_scale 1.0 +wait 0783 ; sm_cvar // spitter_pz_claw_dmg 4 +wait 0784 ; sm_cvar ss_voice_hearpartner 1 +wait 0785 ; sm_cvar steamworks_stats_disable 0 +wait 0786 ; sm_cvar step_spline 1 +wait 0787 ; sm_cvar still_vel_limit 1 +wait 0788 ; sm_cvar still_view_accel_limit 1000 +wait 0789 ; sm_cvar suitvolume 2.0 +wait 0790 ; sm_cvar survival_boomer_limit_increase 1 +wait 0791 ; sm_cvar survival_charger_limit_increase 1 +wait 0792 ; sm_cvar survival_generate_fake_times 0 +wait 0793 ; sm_cvar survival_horde_stage_interval 40 +wait 0794 ; sm_cvar survival_horde_stage_interval_decay 1 +wait 0795 ; sm_cvar // survival_hunter_limit_increase 1 +wait 0796 ; sm_cvar // survival_jockey_limit_increase 1 +wait 0797 ; sm_cvar survival_lull_time 0 +wait 0798 ; sm_cvar survival_lull_time_increment 0 +wait 0799 ; sm_cvar survival_lull_time_max 0 +wait 0800 ; sm_cvar survival_max_boomers 3 +wait 0801 ; sm_cvar // survival_max_chargers 2 +wait 0802 ; sm_cvar // survival_max_hunters 3 +wait 0803 ; sm_cvar // survival_max_jockeys 2 +wait 0804 ; sm_cvar // survival_max_smokers 4 +wait 0805 ; sm_cvar // survival_max_specials 8 +wait 0806 ; sm_cvar // survival_max_spitters 3 +wait 0807 ; sm_cvar // survival_round_restart_delay 12 +wait 0808 ; sm_cvar // survival_smoker_limit_increase 1 +wait 0809 ; sm_cvar // survival_special_limit_increase 1 +wait 0810 ; sm_cvar survival_special_spawn_interval 10 +wait 0811 ; sm_cvar // survival_special_spawn_interval_decay 1 +wait 0812 ; sm_cvar survival_special_stage_interval 120 +wait 0813 ; sm_cvar // survival_spitter_limit_increase 1 +wait 0814 ; sm_cvar // survival_tank_multiple_spawn_delay 10 +wait 0815 ; sm_cvar // survival_tank_stage_interval 80 +wait 0816 ; sm_cvar survival_tank_stage_interval_decay 10 +wait 0817 ; sm_cvar // survivor_accuracy_upgrade_factor 0.5 +wait 0818 ; sm_cvar survivor_burn_factor_easy 0.0 +wait 0819 ; sm_cvar survivor_burn_factor_expert 0.3 +wait 0820 ; sm_cvar survivor_burn_factor_hard 0.2 +wait 0821 ; sm_cvar survivor_burn_factor_normal 0.1 +wait 0822 ; sm_cvar survivor_calm_damage_delay 10 +wait 0823 ; sm_cvar survivor_calm_deploy_delay 10 +wait 0824 ; sm_cvar survivor_calm_intensity 0.1 +wait 0825 ; sm_cvar // survivor_calm_no_flashlight 1 +wait 0826 ; sm_cvar survivor_calm_recent_enemy_delay 10 +wait 0827 ; sm_cvar survivor_calm_weapon_delay 10 +wait 0828 ; sm_cvar survivor_crawl_speed 100 +wait 0829 ; sm_cvar survivor_crouch_speed 80 +wait 0830 ; sm_cvar survivor_damage_speed_factor 0.3 +wait 0831 ; sm_cvar survivor_drag_speed_multiplier 0.75 +wait 0832 ; sm_cvar // survivor_ff_avoidance 1 +wait 0833 ; sm_cvar survivor_ff_avoidance_pitch 10 +wait 0834 ; sm_cvar // survivor_ff_avoidance_yaw 10 +wait 0835 ; sm_cvar survivor_ff_tolerance 100 +wait 0836 ; sm_cvar survivor_fog_vocalize_percent 1.0 +wait 0837 ; sm_cvar survivor_friendly_fire_factor_easy 0.0 +wait 0838 ; sm_cvar survivor_friendly_fire_factor_expert 0.3 +wait 0839 ; sm_cvar survivor_friendly_fire_factor_hard 0.2 +wait 0840 ; sm_cvar survivor_friendly_fire_factor_normal 0.025 +wait 0841 ; sm_cvar survivor_fumes_walk_speed 100 +wait 0842 ; sm_cvar survivor_give_attract_timeout 15 +wait 0843 ; sm_cvar survivor_hanging_eye_height 100 +wait 0844 ; sm_cvar survivor_hanging_from_tongue_eye_height 60 +wait 0845 ; sm_cvar survivor_helping_hand_inhibit_duration 0 +wait 0846 ; sm_cvar // survivor_hitsound_interval_timer 0.1 +wait 0847 ; sm_cvar survivor_incap_hopeless_decay_rate 6 +wait 0848 ; sm_cvar // survivor_incap_max_fall_damage 200 +wait 0849 ; sm_cvar survivor_incap_tongued_decay_rate 20 +wait 0850 ; sm_cvar survivor_incapacitated_accuracy_penalty 0.0 +wait 0851 ; sm_cvar survivor_incapacitated_cycle_time 0.283333 +wait 0852 ; sm_cvar survivor_incapacitated_dizzy_severity 0 +wait 0853 ; sm_cvar survivor_incapacitated_dizzy_timer 5 +wait 0854 ; sm_cvar survivor_incapacitated_eye_height 20 +wait 0855 ; sm_cvar survivor_incapacitated_reload_multiplier 1.0 +wait 0856 ; sm_cvar survivor_incapacitated_roll 15 +wait 0857 ; sm_cvar survivor_intensity_decay_threat_range 1000 +wait 0858 ; sm_cvar survivor_intensity_recent_enemy_duration 10 +wait 0859 ; sm_cvar survivor_it_duration 18 +wait 0860 ; sm_cvar survivor_knockdown_roll -15 +wait 0861 ; sm_cvar survivor_ledge_grab_ground_check_time 1 +wait 0862 ; sm_cvar // survivor_limit 4 +wait 0863 ; sm_cvar survivor_limp_walk_speed 100 +wait 0864 ; sm_cvar survivor_max_lunge_stagger_distance 100 +wait 0865 ; sm_cvar // survivor_max_lunge_stagger_speed 220 +wait 0866 ; sm_cvar // survivor_max_tongue_stagger_distance 200 +wait 0867 ; sm_cvar survivor_max_tongue_stagger_duration 1 +wait 0868 ; sm_cvar survivor_max_tug_distance 500 +wait 0869 ; sm_cvar survivor_max_tug_duration 5 +wait 0870 ; sm_cvar survivor_min_lunge_stagger_speed 0 +wait 0871 ; sm_cvar survivor_pounce_victim_eye_height 30 +wait 0872 ; sm_cvar survivor_respawn_with_guns 0 +wait 0873 ; sm_cvar // survivor_revive_after_drag 0 +wait 0874 ; sm_cvar // survivor_revive_continuous_fire 1 +wait 0875 ; sm_cvar survivor_revive_duration 4.8 +wait 0876 ; sm_cvar // survivor_revive_health 30 +wait 0877 ; sm_cvar survivor_speed 220 +wait 0878 ; sm_cvar survivor_speed_boost_factor 1.5 +wait 0879 ; sm_cvar // survivor_sprint_multiplier 1.5 +wait 0880 ; sm_cvar survivor_stun_immunity_duration 0 +wait 0881 ; sm_cvar // survivor_team_hit_pitch_max 10 +wait 0882 ; sm_cvar // survivor_team_hit_pitch_min -10 +wait 0883 ; sm_cvar // survivor_team_hit_yaw_max 10 +wait 0884 ; sm_cvar // survivor_team_hit_yaw_min -10 +wait 0885 ; sm_cvar survivor_teammatefocus_speed 10 +wait 0886 ; sm_cvar survivor_teammatefocus_stickyness 10 +wait 0887 ; sm_cvar survivor_unstoppable_speed 180 +wait 0888 ; sm_cvar survivor_upgrade_reload_duration 0.75 +wait 0889 ; sm_cvar survivor_vision_range 2000 +wait 0890 ; sm_cvar survivor_vision_range_obscured 1000 +wait 0891 ; sm_cvar // sv__ragdoll_max_remove_per_frame 1 +wait 0892 ; sm_cvar sv_accelerate 5.454545 +wait 0893 ; sm_cvar sv_airaccelerate 15 +wait 0894 ; sm_cvar sv_allow_lobby_connect_only 0 +wait 0895 ; sm_cvar sv_allow_votes 1 +wait 0896 ; sm_cvar sv_allow_wait_command 1 +wait 0897 ; sm_cvar // sv_allowdownload 1 +wait 0898 ; sm_cvar // sv_allowupload 1 +wait 0899 ; sm_cvar // sv_alternateticks 0 +wait 0900 ; sm_cvar // sv_autosave 1 +wait 0901 ; sm_cvar sv_backspeed 1.0 +wait 0902 ; sm_cvar // sv_banid_dev_enabled 0 +wait 0903 ; sm_cvar sv_banid_enabled 1 +wait 0904 ; sm_cvar sv_benchmark_numticks 0 +wait 0905 ; sm_cvar sv_bounce 0.2 +wait 0906 ; sm_cvar sv_client_cmdrate_difference 0 +wait 0907 ; sm_cvar sv_client_max_interp_ratio 30 +wait 0908 ; sm_cvar sv_client_min_interp_ratio 0 +wait 0909 ; sm_cvar sv_client_predict 1 +wait 0910 ; sm_cvar sv_clockcorrection_msecs 50 +wait 0911 ; sm_cvar sv_consistency 0 +wait 0912 ; sm_cvar sv_contact EricMizusawa02@gmail.com +wait 0913 ; sm_cvar // sv_creationtickcheck 1 +wait 0914 ; sm_cvar // sv_cycle_latch_timer 0.1 +wait 0915 ; sm_cvar sv_demo_entity_record_rate 60 +wait 0916 ; sm_cvar sv_disable_glow_faritems 0 +wait 0917 ; sm_cvar // sv_doors_push_players 1 +wait 0918 ; sm_cvar sv_downloadurl "| Steam Group - steamcommunity.com/groups/bizzymod | Website - bizzymod.com | Stats - bizzymod.com/l4d_stats | Source Bans - bizzymod.com/bans/ | Github Repository - github.com/MoonL4D2/BizzyMoon | Server IP - 74.91.113.130:27015 |" +wait 0919 ; sm_cvar sv_extra_client_connect_time 15 +wait 0920 ; sm_cvar sv_fallen_survivor_health_multiplier 1.0 +wait 0921 ; sm_cvar sv_filterban 1 +wait 0922 ; sm_cvar sv_footstepinterval 0.166667 +wait 0923 ; sm_cvar // sv_force_time_of_day -1 +wait 0924 ; sm_cvar sv_forcepreload 1 +wait 0925 ; sm_cvar // sv_friction 4 +wait 0926 ; sm_cvar sv_gameinstructor_disable 1 +wait 0927 ; sm_cvar // sv_gametypes "coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave," +wait 0928 ; sm_cvar sv_gravity 713.714057 // 749.39976 +wait 0929 ; sm_cvar sv_healing_gnome_replenish_rate 2 +wait 0930 ; sm_cvar sv_hibernate_ms 0 +wait 0931 ; sm_cvar sv_hibernate_ms_vgui 0 +wait 0932 ; sm_cvar sv_hibernate_postgame_delay 10 +wait 0933 ; sm_cvar sv_hibernate_when_empty 0 +wait 0934 ; sm_cvar sv_hosting_lobby 1 +wait 0935 ; sm_cvar sv_infected_ceda_vomitjar_probability 0.125 +wait 0936 ; sm_cvar sv_infected_police_tonfa_probability 0.25 +wait 0937 ; sm_cvar sv_infected_riot_control_tonfa_probability 0.25 +wait 0938 ; sm_cvar sv_infected_scale_max 1.01470588 // 1.02941177 +wait 0939 ; sm_cvar sv_infected_scale_min 1.01470588 // 1.02941177 +wait 0940 ; sm_cvar sv_lagflushbonecache 0 +wait 0941 ; sm_cvar sv_lan 0 +wait 0942 ; sm_cvar sv_log_onefile 1 +wait 0943 ; sm_cvar sv_logbans 1 +wait 0944 ; sm_cvar sv_logecho 1 +wait 0945 ; sm_cvar sv_logfile 1 +wait 0946 ; sm_cvar sv_logsdir logs +wait 0947 ; sm_cvar sv_max_queries_sec 2 +wait 0948 ; sm_cvar sv_max_queries_sec_global 64 +wait 0949 ; sm_cvar sv_max_queries_window 60 +wait 0950 ; sm_cvar sv_max_usercmd_future_ticks 15 +wait 0951 ; sm_cvar sv_maxclientframes 1000 +wait 0952 ; sm_cvar sv_maxcmdrate 60 +wait 0953 ; sm_cvar // sv_maxplayers 32 +wait 0954 ; sm_cvar sv_maxrate 72000 +wait 0955 ; sm_cvar // sv_maxreplay 0 +wait 0956 ; sm_cvar sv_maxspeed 1000 +wait 0957 ; sm_cvar sv_maxunlag 0.5 +wait 0958 ; sm_cvar sv_maxupdaterate 60 +wait 0959 ; sm_cvar sv_maxvelocity 1500 // 1414.213563 +wait 0960 ; sm_cvar sv_mincmdrate 60 +wait 0961 ; sm_cvar sv_minrate 72000 +wait 0962 ; sm_cvar sv_minupdaterate 60 +wait 0963 ; sm_cvar // sv_multiplayer_maxtempentities 32 +wait 0964 ; sm_cvar sv_multiplayer_sounds 32 +wait 0965 ; sm_cvar // sv_netvisdist 100000 +wait 0966 ; sm_cvar sv_noclipaccelerate 5 +wait 0967 ; sm_cvar sv_noclipfriction 4 +wait 0968 ; sm_cvar sv_noclipspeed 3 +wait 0969 ; sm_cvar sv_parallel_packentities 2 +wait 0970 ; sm_cvar sv_parallel_sendsnapshot 2 +wait 0971 ; sm_cvar sv_pausable 0 +wait 0972 ; sm_cvar sv_pausable_dev 0 +wait 0973 ; sm_cvar sv_pausable_dev_ds 0 +wait 0974 ; sm_cvar sv_permawipe 0 +wait 0975 ; sm_cvar sv_player_max_separation_force 0 +wait 0976 ; sm_cvar sv_player_stuck_tolerance 3 +wait 0977 ; sm_cvar // sv_playerperfhistorycount 128 +wait 0978 ; sm_cvar sv_prop_door_max_close_attempts 20 +wait 0979 ; sm_cvar sv_pure_kick_clients 0 +wait 0980 ; sm_cvar sv_pushaway_clientside 2 +wait 0981 ; sm_cvar sv_pushaway_clientside_size 0 +wait 0982 ; sm_cvar sv_pushaway_force 100000 +wait 0983 ; sm_cvar sv_pushaway_max_force 5000 +wait 0984 ; sm_cvar // sv_pushaway_max_player_force 10000 +wait 0985 ; sm_cvar sv_pushaway_min_force 1000 +wait 0986 ; sm_cvar sv_pushaway_min_player_speed 80 +wait 0987 ; sm_cvar sv_pushaway_player_force 100000 +wait 0988 ; sm_cvar sv_pz_endgame_vote_period 15 +wait 0989 ; sm_cvar // sv_pz_endgame_vote_post_period 5 +wait 0990 ; sm_cvar sv_quota_stringcmdspersecond 2147483647 +wait 0991 ; sm_cvar sv_ragdoll_maxcount 80 +wait 0992 ; sm_cvar // sv_ragdoll_maxcount_boss 3 +wait 0993 ; sm_cvar // sv_ragdoll_maxcount_generic 60 +wait 0994 ; sm_cvar // sv_ragdoll_maxcount_gib 30 +wait 0995 ; sm_cvar // sv_ragdoll_maxcount_special 12 +wait 0996 ; sm_cvar // sv_ragdoll_maxcount_survivor 3 +wait 0997 ; sm_cvar sv_rcon_banpenalty 0 +wait 0998 ; sm_cvar sv_rcon_log 0 +wait 0999 ; sm_cvar sv_rcon_maxfailures 20 +wait 1000 ; sm_cvar sv_rcon_minfailures 20 +wait 1001 ; sm_cvar sv_rcon_minfailuretime 1 +wait 1002 ; sm_cvar sv_regeneration_wait_time 0 +wait 1003 ; sm_cvar sv_region 0 +wait 1004 ; sm_cvar // sv_rescue_disabled 0 +wait 1005 ; sm_cvar sv_reservation_grace 3 +wait 1006 ; sm_cvar sv_reservation_timeout 5 +wait 1007 ; sm_cvar sv_rollangle 0.3 +wait 1008 ; sm_cvar sv_rollspeed 440 +wait 1009 ; sm_cvar // sv_script_think_interval 0.2 +wait 1010 ; sm_cvar sv_search_key bizzymod +wait 1011 ; sm_cvar sv_showanimstate_activities 0 +wait 1012 ; sm_cvar sv_specaccelerate 5 +wait 1013 ; sm_cvar sv_specnoclip 1 +wait 1014 ; sm_cvar sv_specspeed 3 +wait 1015 ; sm_cvar sv_spectatoridletime 5 +wait 1016 ; sm_cvar sv_stats 0 +wait 1017 ; sm_cvar sv_steamgroup 38693222 +wait 1018 ; sm_cvar sv_steamgroup_exclusive 1 +wait 1019 ; sm_cvar sv_stepsize 19.968995 // 18.968873 +wait 1020 ; sm_cvar sv_stopspeed 80 +wait 1021 ; sm_cvar sv_tags "coop,realism,secure,versus," +wait 1022 ; sm_cvar // sv_teststepsimulation 0 +wait 1023 ; sm_cvar sv_timeout 30 +wait 1024 ; sm_cvar sv_tracereffects_limit_general 30 +wait 1025 ; sm_cvar sv_unlag_fixstuck 1 +wait 1026 ; sm_cvar sv_unlockedchapters 2147483647 +wait 1027 ; sm_cvar sv_vehicle_autoaim_scale 10 +wait 1028 ; sm_cvar sv_visiblemaxplayers 8 +wait 1029 ; sm_cvar // sv_voicecodec vaudio_celt +wait 1030 ; sm_cvar sv_voiceenable 1 +wait 1031 ; sm_cvar sv_vote_command_delay 1.5 +wait 1032 ; sm_cvar sv_vote_creation_timer 0 +wait 1033 ; sm_cvar sv_vote_issue_change_difficulty_allowed 1 +wait 1034 ; sm_cvar sv_vote_issue_change_map_later_allowed 1 +wait 1035 ; sm_cvar sv_vote_issue_change_map_now_allowed 1 +wait 1036 ; sm_cvar sv_vote_issue_change_mission_allowed 1 +wait 1037 ; sm_cvar sv_vote_issue_kick_allowed 1 +wait 1038 ; sm_cvar sv_vote_issue_restart_game_allowed 1 +wait 1039 ; sm_cvar sv_vote_kick_ban_duration 1 +wait 1040 ; sm_cvar sv_vote_plr_map_limit 2147483647 +wait 1041 ; sm_cvar sv_vote_timer_duration 12 +wait 1042 ; sm_cvar sv_wateraccelerate 1000 +wait 1043 ; sm_cvar sv_waterdist 0 +wait 1044 ; sm_cvar sv_waterfriction 0 +wait 1045 ; sm_cvar // sv_zombie_touch_trigger_delay 0.5 +wait 1046 ; sm_cvar // sv_zoo_spacing 64 +wait 1047 ; sm_cvar // sv_zoo_spacing_rows 192 +wait 1048 ; sm_cvar // sv_zoo_spacing_wrap 80 +wait 1049 ; sm_cvar // sv_zoo_tint_clr "153 153 153 255" +wait 1050 ; sm_cvar sys_minidumpexpandedspew 0 +wait 1051 ; sm_cvar sys_minidumpspewlines 0 + +wait 1052 ; sm_cvar tank_attack_range 60 +wait 1053 ; sm_cvar tank_burn_duration 90 +wait 1054 ; sm_cvar tank_burn_duration_expert 90 +wait 1055 ; sm_cvar tank_burn_duration_hard 90 +wait 1056 ; sm_cvar tank_fist_radius 16 +wait 1057 ; sm_cvar tank_ground_pound_duration 2 +wait 1058 ; sm_cvar tank_ground_pound_reveal_distance 800 +wait 1059 ; sm_cvar tank_punch_getup_scale 0.3333333 +wait 1060 ; sm_cvar // tank_pz_forward 0.0 +wait 1061 ; sm_cvar tank_run_spawn_delay 10 +wait 1062 ; sm_cvar tank_stasis_time_suicide 86400 +wait 1063 ; sm_cvar tank_stuck_time_choose_new_target 0.5 +wait 1064 ; sm_cvar tank_stuck_time_suicide 86400 +wait 1065 ; sm_cvar tank_stuck_visibility_tolerance_choose_new_target 0.5 +wait 1066 ; sm_cvar tank_stuck_visibility_tolerance_suicide 86400 +wait 1067 ; sm_cvar // tank_swing_arc 180 +wait 1068 ; sm_cvar tank_swing_duration 0.183333 +wait 1069 ; sm_cvar tank_swing_fast_interval 1.466667 +wait 1070 ; sm_cvar tank_swing_interval 1.466667 +wait 1071 ; sm_cvar tank_swing_miss_interval 1.466667 +wait 1072 ; sm_cvar tank_swing_physics_prop_force 2.0 +wait 1073 ; sm_cvar tank_swing_range 60 +wait 1074 ; sm_cvar tank_swing_yaw 100 +wait 1075 ; sm_cvar tank_throw_aim_error 0 +wait 1076 ; sm_cvar tank_throw_allow_range 600 +wait 1077 ; sm_cvar tank_throw_lead_time_factor 0.25 +wait 1078 ; sm_cvar tank_throw_loft_rate 0.015 +wait 1079 ; sm_cvar // tank_throw_max_loft_angle 30 +wait 1080 ; sm_cvar // tank_throw_min_interval 8 +wait 1081 ; sm_cvar tank_visibility_tolerance_suicide 86400 +wait 1082 ; sm_cvar tank_windup_time 0.483333 +wait 1083 ; sm_cvar tauntfrequency 0 +wait 1084 ; sm_cvar // telemetry_filtervalue 1000 +wait 1085 ; sm_cvar telemetry_server 74.91.113.130 +wait 1086 ; sm_cvar terror_ammo_multiplier 1.0 +wait 1087 ; sm_cvar tf_arena_max_streak 10 +wait 1088 ; sm_cvar tf_arena_preround_time 5 +wait 1089 ; sm_cvar think_limit 0 +wait 1090 ; sm_cvar tick_door_speed 1.0 +wait 1091 ; sm_cvar tongue_bend_point_deflection 4 +wait 1092 ; sm_cvar tongue_break_from_damage_amount 1000 +wait 1093 ; sm_cvar tongue_bullet_radius 8 +wait 1094 ; sm_cvar tongue_choke_damage_amount 6 +wait 1095 ; sm_cvar // tongue_choke_damage_interval 1 +wait 1096 ; sm_cvar tongue_cone_start_tolerance 0.13052619 +wait 1097 ; sm_cvar tongue_drag_damage_amount 4 +wait 1098 ; sm_cvar tongue_dropping_to_ground_time 0.5 +wait 1099 ; sm_cvar tongue_fly_speed 1100 +wait 1100 ; sm_cvar tongue_gravity_force 5000 +wait 1101 ; sm_cvar tongue_health 200 +wait 1102 ; sm_cvar tongue_hit_delay 10 +wait 1103 ; sm_cvar tongue_los_forgiveness_time 1.5 +wait 1104 ; sm_cvar tongue_miss_delay 2.5 +wait 1105 ; sm_cvar // tongue_no_progress_break_interval 10 +wait 1106 ; sm_cvar tongue_no_progress_choke_early_ambush_delay 0.25 +wait 1107 ; sm_cvar tongue_no_progress_choke_early_delay 0.5 +wait 1108 ; sm_cvar tongue_no_progress_choke_time 0.25 +wait 1109 ; sm_cvar tongue_no_progress_damage_interval 0.5 +wait 1110 ; sm_cvar tongue_no_progress_tolerance 10 +wait 1111 ; sm_cvar tongue_player_dropping_to_ground_time 0.5 +wait 1112 ; sm_cvar tongue_range 900 +wait 1113 ; sm_cvar tongue_release_fatigue_penalty 2750 +wait 1114 ; sm_cvar tongue_start_pull_delay 0 +wait 1115 ; sm_cvar tongue_vertical_choke_dot 0.0 +wait 1116 ; sm_cvar tongue_vertical_choke_height 40 +wait 1117 ; sm_cvar tongue_vertical_choke_time_off_ground 0.3 +wait 1118 ; sm_cvar tongue_victim_acceleration 10 +wait 1119 ; sm_cvar tongue_victim_accuracy_penalty 0 +wait 1120 ; sm_cvar tongue_victim_max_speed 200 +wait 1121 ; sm_cvar tongue_vs_cone_start_tolerance 0.01745241 +wait 1122 ; sm_cvar // tp_schedule_post_think 0 +wait 1123 ; sm_cvar // tv_autoretry 0 +wait 1124 ; sm_cvar tv_chattimelimit 0 +wait 1125 ; sm_cvar tv_delay 0 +wait 1126 ; sm_cvar tv_maxclients 32 +wait 1127 ; sm_cvar tv_maxrate 72000 +wait 1128 ; sm_cvar tv_name BizzyTV +wait 1129 ; sm_cvar tv_snapshotrate 15 +wait 1130 ; sm_cvar // tv_timeout 30 +wait 1131 ; sm_cvar tv_title BizzyTV + +wait 1132 ; sm_cvar upgrade_explosive_bullet_force 10 +wait 1133 ; sm_cvar upgrade_explosive_slug_force 20 +wait 1134 ; sm_cvar upgrade_laser_sight_spread_factor 0.5 +wait 1135 ; sm_cvar upgrade_pack_use_duration 1.5 +wait 1136 ; sm_cvar upgradepack_forward_dist 16 +wait 1137 ; sm_cvar upgradepack_max_drop_dist 0 + +wait 1138 ; sm_cvar versus_boss_buffer 2000 +wait 1139 ; sm_cvar versus_boss_flow_max 0.80 +wait 1140 ; sm_cvar versus_boss_flow_max_finale 0.90 +wait 1141 ; sm_cvar versus_boss_flow_max_intro 0.80 +wait 1142 ; sm_cvar versus_boss_flow_min 0.20 +wait 1143 ; sm_cvar versus_boss_flow_min_finale 0.30 +wait 1144 ; sm_cvar versus_boss_flow_min_intro 0.25 +wait 1145 ; sm_cvar versus_boss_padding_max 0.0 +wait 1146 ; sm_cvar versus_boss_padding_min 0.0 +wait 1147 ; sm_cvar versus_force_start_time 180 +wait 1148 ; sm_cvar versus_level_restart_delay 6 +wait 1149 ; sm_cvar versus_marker_num 0 +wait 1150 ; sm_cvar versus_round_restarttimer 20 +wait 1151 ; sm_cvar versus_round_restarttimer_finale 20 +wait 1152 ; sm_cvar // versus_shove_hunter_fov 90 +wait 1153 ; sm_cvar // versus_shove_hunter_fov_pouncing 45 +wait 1154 ; sm_cvar // versus_shove_jockey_fov_leaping 45 +wait 1155 ; sm_cvar versus_special_respawn_interval 10 +wait 1156 ; sm_cvar versus_tank_chance 1.0 +wait 1157 ; sm_cvar versus_tank_chance_finale 1.0 +wait 1158 ; sm_cvar versus_tank_chance_intro 1.0 +wait 1159 ; sm_cvar versus_tank_flow_team_variation 0.0 +wait 1160 ; sm_cvar versus_wandering_zombie_density 0.04 +wait 1161 ; sm_cvar versus_witch_chance 0.0 +wait 1162 ; sm_cvar versus_witch_chance_finale 0.0 +wait 1163 ; sm_cvar versus_witch_chance_intro 0.0 +wait 1164 ; sm_cvar versus_witch_flow_team_variation 0.0 +wait 1165 ; sm_cvar // view_offset 0 +wait 1166 ; sm_cvar // view_offset_down 0 +wait 1167 ; sm_cvar // view_offset_forward 0 +wait 1168 ; sm_cvar // view_offset_up 0 +wait 1169 ; sm_cvar vismon_poll_frequency 0.5 +wait 1170 ; sm_cvar // vismon_trace_limit 10 +wait 1171 ; sm_cvar vomitjar_duration_infected_bot 30 +wait 1172 ; sm_cvar vomitjar_duration_infected_pz 30 +wait 1173 ; sm_cvar vomitjar_duration_survivor 15 +wait 1174 ; sm_cvar vomitjar_radius 200 +wait 1175 ; sm_cvar vprof_server_spike_threshold 999 +wait 1176 ; sm_cvar vs_defib_penalty 0 +wait 1177 ; sm_cvar vs_incap_bonus 25 +wait 1178 ; sm_cvar vs_max_team_switches 2147483647 +wait 1179 ; sm_cvar vs_score_pp_health 1.0 +wait 1180 ; sm_cvar vs_score_pp_healthbuffer 1.0 +wait 1181 ; sm_cvar // vs_survival_bonus 25 +wait 1182 ; sm_cvar vs_survivor_damage_reduction 1.0 +wait 1183 ; sm_cvar // vs_tank_damage 25 +wait 1184 ; sm_cvar vs_tank_pound_damage 36 +wait 1185 ; sm_cvar // vs_tank_rock_damage 25 +wait 1186 ; sm_cvar vs_threat_initial_distance_first_map_max 10000 +wait 1187 ; sm_cvar vs_threat_initial_distance_first_map_min 4000 +wait 1188 ; sm_cvar // vs_threat_initial_distance_max 8000 +wait 1189 ; sm_cvar vs_threat_initial_distance_min 2000 +wait 1190 ; sm_cvar // vs_threat_radius 200 +wait 1191 ; sm_cvar // vs_tiebreak_bonus 0 + +wait 1192 ; sm_cvar witch_rage_ramp_duration 3 + +wait 1193 ; sm_cvar z_acquire_far_range 2000 +wait 1194 ; sm_cvar // z_acquire_far_time 5 +wait 1195 ; sm_cvar // z_acquire_near_range 100 +wait 1196 ; sm_cvar // z_acquire_near_time 1 +wait 1197 ; sm_cvar // z_acquire_time_variance_factor 0 +wait 1198 ; sm_cvar z_added_light_max 0.5 +wait 1199 ; sm_cvar z_added_light_min 0.05 +wait 1200 ; sm_cvar z_alert_dot 0.0 // 0.258819045 +wait 1201 ; sm_cvar // z_alert_range 1000 +wait 1202 ; sm_cvar z_anim_idle_speed_max 80 +wait 1203 ; sm_cvar z_anim_idle_speed_min 1 +wait 1204 ; sm_cvar z_attack_change_target_range 40 +wait 1205 ; sm_cvar // z_attack_flow_range 1500 +wait 1206 ; sm_cvar z_attack_incapacitated_damage 3 +wait 1207 ; sm_cvar z_attack_infected_it_damage 5 +wait 1208 ; sm_cvar z_attack_interval 0.666667 +wait 1209 ; sm_cvar z_attack_max_range 40 +wait 1210 ; sm_cvar z_attack_min_range 20 +wait 1211 ; sm_cvar z_attack_movement_penalty 0.7 +wait 1212 ; sm_cvar z_attack_on_the_run_range 40 +wait 1213 ; sm_cvar z_attack_pz_it_damage 100 +wait 1214 ; sm_cvar z_attention_range_lying_modifier 1.0 +wait 1215 ; sm_cvar z_attention_range_sitting_modifier 1.0 +wait 1216 ; sm_cvar // z_avoid_max_range 100 +wait 1217 ; sm_cvar z_avoid_min_range 50 +wait 1218 ; sm_cvar z_avoid_power 20 +wait 1219 ; sm_cvar z_avoidforce 0 +wait 1220 ; sm_cvar z_background_limit 40 +wait 1221 ; sm_cvar z_backspeed 500 +wait 1222 ; sm_cvar // z_bbq_min 0.0 +wait 1223 ; sm_cvar // z_bbq_rate 0.01 +wait 1224 ; sm_cvar // z_boomer_limit 1 +wait 1225 ; sm_cvar z_boomer_near_dist 10000 +wait 1226 ; sm_cvar // z_boundary_max_range 4000 +wait 1227 ; sm_cvar // z_boundary_spread_speed 1000 +wait 1228 ; sm_cvar z_brawl_chance 0 +wait 1229 ; sm_cvar z_breakable_damage 25 +wait 1230 ; sm_cvar z_burn_max 1.0 +wait 1231 ; sm_cvar // z_burn_rate 0.01 +wait 1232 ; sm_cvar z_burning_lifetime 15 +wait 1233 ; sm_cvar z_carry_max_mass 100 +wait 1234 ; sm_cvar z_chance 100 +wait 1235 ; sm_cvar // z_charge_duration 2.4 +wait 1236 ; sm_cvar z_charge_impact_angle 0.38268343 +wait 1237 ; sm_cvar z_charge_impact_radius 150 +wait 1238 ; sm_cvar // z_charge_interval 12 +wait 1239 ; sm_cvar // z_charge_max_damage 10 +wait 1240 ; sm_cvar // z_charge_max_force 800 +wait 1241 ; sm_cvar // z_charge_max_speed 500 +wait 1242 ; sm_cvar z_charge_min_force 600 +wait 1243 ; sm_cvar z_charge_prop_damage 1000 +wait 1244 ; sm_cvar z_charge_start_speed 300 +wait 1245 ; sm_cvar // z_charge_warmup 0.5 +wait 1246 ; sm_cvar // z_charger_health 600 +wait 1247 ; sm_cvar z_charger_impact_epsilon 0 +wait 1248 ; sm_cvar // z_charger_limit 1 +wait 1249 ; sm_cvar z_charger_max_prop_force 10000 +wait 1250 ; sm_cvar // z_charger_pound_dmg 15 +wait 1251 ; sm_cvar z_charger_probe_alone 20 +wait 1252 ; sm_cvar z_charger_probe_attack 20 +wait 1253 ; sm_cvar z_claw_hit_pitch_max 15 +wait 1254 ; sm_cvar z_claw_hit_pitch_min -15 +wait 1255 ; sm_cvar z_claw_hit_yaw_max 15 +wait 1256 ; sm_cvar z_claw_hit_yaw_min -15 +wait 1257 ; sm_cvar // z_clear_area_range 250 +wait 1258 ; sm_cvar // z_clear_max_time 5 +wait 1259 ; sm_cvar // z_clear_min_time 0.1 +wait 1260 ; sm_cvar // z_clear_min_time_range 250 +wait 1261 ; sm_cvar // z_clear_range 500 +wait 1262 ; sm_cvar z_close_target_notice_distance 40 +wait 1263 ; sm_cvar z_common_limit 40 +wait 1264 ; sm_cvar z_cooldown_spawn_safety_range 150 +wait 1265 ; sm_cvar z_cough_cloud_expire 8 +wait 1266 ; sm_cvar // z_cough_cloud_initial_cough_delay 0 +wait 1267 ; sm_cvar z_cough_cloud_radius 150 +wait 1268 ; sm_cvar z_crouch_speed 90 +wait 1269 ; sm_cvar z_cull_timeout 4 +wait 1270 ; sm_cvar z_damage_screen_fade_alpha 32 +wait 1271 ; sm_cvar z_damage_screen_fade_duration 0.666667 +wait 1272 ; sm_cvar // z_deafen_radius_one 50 +wait 1273 ; sm_cvar // z_deafen_radius_three 150 +wait 1274 ; sm_cvar // z_deafen_radius_two 100 +wait 1275 ; sm_cvar // z_density_region_length 1500 +wait 1276 ; sm_cvar z_difficulty Impossible +wait 1277 ; sm_cvar z_director_special_spawn_delay 0 +wait 1278 ; sm_cvar z_discard_min_range 0 +wait 1279 ; sm_cvar z_discard_range 2000 +wait 1280 ; sm_cvar z_door_pound_damage 1000 +wait 1281 ; sm_cvar z_door_reopen_interval 0.1 +wait 1282 ; sm_cvar z_door_retry_interval 1 +wait 1283 ; sm_cvar z_exploding_force 1000 +wait 1284 ; sm_cvar // z_exploding_health 50 +wait 1285 ; sm_cvar z_exploding_inner_radius 200 +wait 1286 ; sm_cvar // z_exploding_outer_radius 200 +wait 1287 ; sm_cvar z_exploding_shove_interval 4 +wait 1288 ; sm_cvar z_exploding_shove_max 3 +wait 1289 ; sm_cvar z_exploding_shove_min 3 +wait 1290 ; sm_cvar z_exploding_speed 200 +wait 1291 ; sm_cvar z_exploding_splat 0 +wait 1292 ; sm_cvar z_exploding_splat_radius 300 +wait 1293 ; sm_cvar // z_expressions 1 +wait 1294 ; sm_cvar z_fallen_kill_suppress_time 120 +wait 1295 ; sm_cvar z_falling_land_forward_speed 400 +wait 1296 ; sm_cvar z_falling_land_hard_speed 400 +wait 1297 ; sm_cvar z_falling_land_speed 400 +wait 1298 ; sm_cvar // z_fatal_blast_incineration_probability 0 +wait 1299 ; sm_cvar z_fatal_blast_max_ragdolls 20 +wait 1300 ; sm_cvar z_fatal_blast_min_ragdolls 1 +wait 1301 ; sm_cvar z_female_boomer_spawn_chance 50 +wait 1302 ; sm_cvar z_finale_spawn_mob_safety_range 300 +wait 1303 ; sm_cvar z_finale_spawn_safety_range 150 +wait 1304 ; sm_cvar // z_finale_spawn_safety_range_override 0 +wait 1305 ; sm_cvar z_finale_spawn_tank_safety_range 300 +wait 1306 ; sm_cvar z_fog_spawn 1 +wait 1307 ; sm_cvar // z_force_attack_from_sound_range 500 +wait 1308 ; sm_cvar z_forwardspeed 500 +wait 1309 ; sm_cvar // z_frustration_lifetime 20 +wait 1310 ; sm_cvar z_frustration_los_delay 0.5 +wait 1311 ; sm_cvar z_frustration_spawn_delay 20 +wait 1312 ; sm_cvar // z_gas_health 250 +wait 1313 ; sm_cvar z_gas_speed 220 +wait 1314 ; sm_cvar // z_ghost_ahead_flow 300 +wait 1315 ; sm_cvar z_ghost_checkpoint_spawn_interval 10 +wait 1316 ; sm_cvar z_ghost_delay_max 18 +wait 1317 ; sm_cvar z_ghost_delay_min 18 +wait 1318 ; sm_cvar z_ghost_delay_minspawn 1 +wait 1319 ; sm_cvar z_ghost_finale_spawn_interval 10 +wait 1320 ; sm_cvar z_ghost_friction 1.25 +wait 1321 ; sm_cvar // z_ghost_group_spawn 1 +wait 1322 ; sm_cvar // z_ghost_line_of_scrimmage_far 2000 +wait 1323 ; sm_cvar // z_ghost_line_of_scrimmage_near 1000 +wait 1324 ; sm_cvar // z_ghost_line_of_scrimmage_safety 10 +wait 1325 ; sm_cvar // z_ghost_line_of_scrimmage_threat_bonus 1000 +wait 1326 ; sm_cvar // z_ghost_los_expected_progress 1000 +wait 1327 ; sm_cvar // z_ghost_offer_acceptance_time 0 +wait 1328 ; sm_cvar // z_ghost_offer_spawn_safety_time 10 +wait 1329 ; sm_cvar // z_ghost_runner_spawn_multiplier 0.5 +wait 1330 ; sm_cvar // z_ghost_runner_spawn_multiplier_dist 2000 +wait 1331 ; sm_cvar // z_ghost_spawn_distance 300 +wait 1332 ; sm_cvar z_ghost_spawn_interval 10 +wait 1333 ; sm_cvar z_ghost_speed 440 +wait 1334 ; sm_cvar // z_ghost_travel_distance 0 +wait 1335 ; sm_cvar z_gib_explosion_force_factor 0.05 +wait 1336 ; sm_cvar z_gib_force_factor 5.0 +wait 1337 ; sm_cvar z_gun_damage 5 +wait 1338 ; sm_cvar z_gun_force 100 +wait 1339 ; sm_cvar // z_gun_horiz_punch 0 +wait 1340 ; sm_cvar z_gun_physics_force 50 +wait 1341 ; sm_cvar z_gun_range 80 +wait 1342 ; sm_cvar z_gun_stun_duration 1 +wait 1343 ; sm_cvar z_gun_survivor_force 100 +wait 1344 ; sm_cvar z_gun_survivor_friend_push 0 +wait 1345 ; sm_cvar z_gun_survivor_shove_dot 1.0 +wait 1346 ; sm_cvar z_gun_swing_coop_max_penalty 2147483647 +wait 1347 ; sm_cvar z_gun_swing_coop_min_penalty 2147483647 +wait 1348 ; sm_cvar z_gun_swing_duration 0.183333 +wait 1349 ; sm_cvar z_gun_swing_interval 0.666667 +wait 1350 ; sm_cvar z_gun_swing_vs_amt_penalty 0.666667 +wait 1351 ; sm_cvar z_gun_swing_vs_cooldown 0.666667 +wait 1352 ; sm_cvar z_gun_swing_vs_max_penalty 2147483647 +wait 1353 ; sm_cvar z_gun_swing_vs_min_penalty 2147483647 +wait 1354 ; sm_cvar z_gun_swing_vs_restore_time 0.666667 +wait 1355 ; sm_cvar z_head_damage_causes_wounds 1 +wait 1356 ; sm_cvar z_health 75 +wait 1357 ; sm_cvar // z_hear_gunfire_range 250 +wait 1358 ; sm_cvar // z_hear_runner_far_range 1000 +wait 1359 ; sm_cvar // z_hear_runner_near_range 500 +wait 1360 ; sm_cvar // z_hit_chainsawer_factor 0.5 +wait 1361 ; sm_cvar z_hit_from_behind_cosine 1 +wait 1362 ; sm_cvar z_hit_from_behind_factor 1 +wait 1363 ; sm_cvar z_hit_incap_factor_easy 1 +wait 1364 ; sm_cvar z_hit_incap_factor_expert 2 +wait 1365 ; sm_cvar // z_hit_incap_factor_hard 1 +wait 1366 ; sm_cvar // z_hit_incap_factor_normal 1 +wait 1367 ; sm_cvar z_holiday_gift_drop_chance 1.0 +wait 1368 ; sm_cvar z_hunter_ground_normal 0.13052619 +wait 1369 ; sm_cvar // z_hunter_health 250 +wait 1370 ; sm_cvar // z_hunter_limit 1 +wait 1371 ; sm_cvar z_hunter_lunge_distance 800 +wait 1372 ; sm_cvar z_hunter_lunge_pitch 30 +wait 1373 ; sm_cvar z_hunter_lunge_stagger_time 0.5 +wait 1374 ; sm_cvar // z_hunter_max_pounce_bonus_damage 29 +wait 1375 ; sm_cvar z_hunter_speed 260 +wait 1376 ; sm_cvar // z_jockey_area_current_factor 1 +wait 1377 ; sm_cvar z_jockey_area_hazard_bonus 3000 +wait 1378 ; sm_cvar // z_jockey_area_range_factor 2 +wait 1379 ; sm_cvar z_jockey_area_visibility_factor 500 +wait 1380 ; sm_cvar // z_jockey_blend_rate 1 +wait 1381 ; sm_cvar z_jockey_control_max 1.0 +wait 1382 ; sm_cvar // z_jockey_control_min 0.8 +wait 1383 ; sm_cvar z_jockey_control_variance 0.0 +wait 1384 ; sm_cvar z_jockey_health 350 +wait 1385 ; sm_cvar z_jockey_leap_again_timer 4 +wait 1386 ; sm_cvar z_jockey_leap_range 250 +wait 1387 ; sm_cvar z_jockey_leap_time 0.9 +wait 1388 ; sm_cvar // z_jockey_limit 1 +wait 1389 ; sm_cvar z_jockey_lookahead 400 +wait 1390 ; sm_cvar z_jockey_min_ledge_distance 200 +wait 1391 ; sm_cvar // z_jockey_min_mounted_speed 0.6 +wait 1392 ; sm_cvar z_jockey_ride_damage 3 +wait 1393 ; sm_cvar z_jockey_ride_damage_delay 0 +wait 1394 ; sm_cvar // z_jockey_ride_damage_interval 1 +wait 1395 ; sm_cvar z_jockey_ride_hazard_scan_distance 400 +wait 1396 ; sm_cvar z_jockey_ride_scan_distance 600 +wait 1397 ; sm_cvar // z_jockey_ride_scan_interval 1 +wait 1398 ; sm_cvar z_jockey_speed 280 +wait 1399 ; sm_cvar // z_jockey_speed_blend 2 +wait 1400 ; sm_cvar // z_jockey_stagger_amount 0 +wait 1401 ; sm_cvar // z_jockey_stagger_speed 2 +wait 1402 ; sm_cvar // z_large_volume_mob_too_far_xy 2000 +wait 1403 ; sm_cvar // z_large_volume_mob_too_far_z 200 +wait 1404 ; sm_cvar // z_last_area_update_tolerance 2 +wait 1405 ; sm_cvar // z_last_man_run_interval 2 +wait 1406 ; sm_cvar // z_lean_wall_align_speed 300 +wait 1407 ; sm_cvar // z_leap_attach_distance 60 +wait 1408 ; sm_cvar // z_leap_cooldown 0 +wait 1409 ; sm_cvar z_leap_far_attach_delay 0 +wait 1410 ; sm_cvar z_leap_force_attach_distance 60 +wait 1411 ; sm_cvar z_leap_interval 0.45 +wait 1412 ; sm_cvar z_leap_interval_post_incap 15 +wait 1413 ; sm_cvar z_leap_interval_post_ride 5.75 +wait 1414 ; sm_cvar z_leap_max_distance 250 +wait 1415 ; sm_cvar z_leap_power 450 +wait 1416 ; sm_cvar z_lunge_cooldown 0 +wait 1417 ; sm_cvar z_lunge_interval 0 +wait 1418 ; sm_cvar z_lunge_power 625 +wait 1419 ; sm_cvar // z_lunge_reflect 0 +wait 1420 ; sm_cvar z_lunge_up 150 +wait 1421 ; sm_cvar // z_max_hunter_pounce_stagger_duration 0.4 +wait 1422 ; sm_cvar // z_max_neighbor_range 200 +wait 1423 ; sm_cvar // z_max_path_length 4000 +wait 1424 ; sm_cvar // z_max_player_zombies 4 +wait 1425 ; sm_cvar z_max_stagger_duration 0.8 +wait 1426 ; sm_cvar z_max_survivor_damage 500 +wait 1427 ; sm_cvar z_mega_mob_size 60 +wait 1428 ; sm_cvar z_mega_mob_spawn_max_interval 300 +wait 1429 ; sm_cvar z_mega_mob_spawn_min_interval 300 +wait 1430 ; sm_cvar z_min_ladder_mount_dot 0.60876143 +wait 1431 ; sm_cvar // z_minigun_atomize 1 +wait 1432 ; sm_cvar z_minigun_cooldown_time 0.1 +wait 1433 ; sm_cvar z_minigun_damage_rate 60000 +wait 1434 ; sm_cvar // z_minigun_fire_anim_speed 1 +wait 1435 ; sm_cvar z_minigun_fire_think_interval 0 +wait 1436 ; sm_cvar z_minigun_firing_speed 20 +wait 1437 ; sm_cvar z_minigun_overheat_time 100 +wait 1438 ; sm_cvar z_minigun_rate_of_fire 1800 +wait 1439 ; sm_cvar z_minigun_spin_down_speed 10 +wait 1440 ; sm_cvar z_minigun_spin_up_speed 20 +wait 1441 ; sm_cvar z_minigun_spread 3 +wait 1442 ; sm_cvar z_minigun_stand_distance 40 +wait 1443 ; sm_cvar z_minion_aim_tolerance 0.08715574 +wait 1444 ; sm_cvar z_minion_limit 4 +wait 1445 ; sm_cvar // z_mob_min_notify_count 10 +wait 1446 ; sm_cvar // z_mob_music_size 10 +wait 1447 ; sm_cvar // z_mob_population_density 0.005 +wait 1448 ; sm_cvar // z_mob_recharge_rate 0.0025 +wait 1449 ; sm_cvar z_mob_sacrifice_timeout 4 +wait 1450 ; sm_cvar z_mob_spawn_finale_size 40 +wait 1451 ; sm_cvar z_mob_spawn_max_interval_easy 120 +wait 1452 ; sm_cvar z_mob_spawn_max_interval_expert 120 +wait 1453 ; sm_cvar z_mob_spawn_max_interval_hard 120 +wait 1454 ; sm_cvar z_mob_spawn_max_interval_normal 120 +wait 1455 ; sm_cvar z_mob_spawn_max_size 40 +wait 1456 ; sm_cvar z_mob_spawn_min_interval_easy 60 +wait 1457 ; sm_cvar z_mob_spawn_min_interval_expert 60 +wait 1458 ; sm_cvar z_mob_spawn_min_interval_hard 60 +wait 1459 ; sm_cvar z_mob_spawn_min_interval_normal 60 +wait 1460 ; sm_cvar z_mob_spawn_min_size 10 +wait 1461 ; sm_cvar z_mounted_gun_fire_think_interval 0.016667 +wait 1462 ; sm_cvar z_must_wander 1 +wait 1463 ; sm_cvar // z_noise_level_fade_rate 50 +wait 1464 ; sm_cvar // z_noise_level_footstep 150 +wait 1465 ; sm_cvar // z_noise_level_hold_time 0.333333 +wait 1466 ; sm_cvar // z_noise_level_max 150 +wait 1467 ; sm_cvar // z_noise_level_vocalize 150 +wait 1468 ; sm_cvar z_non_head_damage_factor_easy 2.0 +wait 1469 ; sm_cvar z_non_head_damage_factor_expert 1.0 +wait 1470 ; sm_cvar z_non_head_damage_factor_hard 1.0 +wait 1471 ; sm_cvar z_non_head_damage_factor_multiplier 1.0 +wait 1472 ; sm_cvar // z_non_head_damage_factor_normal 1.0 +wait 1473 ; sm_cvar z_notice_it_range 2000 +wait 1474 ; sm_cvar z_notice_near_range 40 +wait 1475 ; sm_cvar z_player_lunge_up 100 +wait 1476 ; sm_cvar // z_player_zombie_land_delay 0 +wait 1477 ; sm_cvar // z_pounce_allow_partial_hidden 1 +wait 1478 ; sm_cvar z_pounce_crouch_delay 0.9 +wait 1479 ; sm_cvar // z_pounce_damage 5 +wait 1480 ; sm_cvar z_pounce_damage_delay 0 +wait 1481 ; sm_cvar z_pounce_damage_interrupt 1000 +wait 1482 ; sm_cvar // z_pounce_damage_interval 0.5 +wait 1483 ; sm_cvar z_pounce_delay 0 +wait 1484 ; sm_cvar z_pounce_door_damage 1000 +wait 1485 ; sm_cvar z_pounce_shake_amplitude 6 +wait 1486 ; sm_cvar z_pounce_shake_duration 2 +wait 1487 ; sm_cvar z_pounce_shake_radius 300 +wait 1488 ; sm_cvar z_pounce_silence_range 400 +wait 1489 ; sm_cvar z_pounce_stumble_force 6 +wait 1490 ; sm_cvar z_pounce_stumble_radius 175 +wait 1491 ; sm_cvar z_puking_eye_height 50 +wait 1492 ; sm_cvar z_push_force 1000 +wait 1493 ; sm_cvar z_push_mass_max 100 +wait 1494 ; sm_cvar z_pushaway_force 0 +wait 1495 ; sm_cvar z_ragdoll_discard_range 2147483647 +wait 1496 ; sm_cvar z_reload_chatter_intensity 0.1 +wait 1497 ; sm_cvar z_reload_chatter_nearby_friend_range 1000 +wait 1498 ; sm_cvar z_reload_chatter_recent_enemy 10 +wait 1499 ; sm_cvar z_reload_chatter_shotgun_ammo_threshold 10 +wait 1500 ; sm_cvar z_reload_chatter_shotgun_interval 5 +wait 1501 ; sm_cvar // z_respawn_distance 0 +wait 1502 ; sm_cvar // z_respawn_interval 0 +wait 1503 ; sm_cvar z_restrict_team_change 0 +wait 1504 ; sm_cvar z_round_start_attack_prevention 0 +wait 1505 ; sm_cvar z_round_start_replacement_time 60 +wait 1506 ; sm_cvar z_run_exertion_interval 0.666667 +wait 1507 ; sm_cvar z_safe_spawn_range 0 +wait 1508 ; sm_cvar // z_scout_mob_spawn_range 3000 +wait 1509 ; sm_cvar // z_scrimmage_creep_delay 10 +wait 1510 ; sm_cvar // z_scrimmage_creep_rate 100 +wait 1511 ; sm_cvar z_shotgun_bonus_damage_multiplier 10 +wait 1512 ; sm_cvar z_shotgun_bonus_damage_range 60 +wait 1513 ; sm_cvar z_shove_friend_speed 220 +wait 1514 ; sm_cvar z_sidespeed 500 +wait 1515 ; sm_cvar z_skirmish_spawn_max_interval 60 +wait 1516 ; sm_cvar z_skirmish_spawn_max_size 10 +wait 1517 ; sm_cvar z_skirmish_spawn_min_interval 30 +wait 1518 ; sm_cvar // z_skirmish_spawn_min_size 1 +wait 1519 ; sm_cvar // z_smoker_limit 1 +wait 1520 ; sm_cvar // z_spawn_flow_limit 1500 +wait 1521 ; sm_cvar // z_spawn_height 12 +wait 1522 ; sm_cvar z_spawn_mobs_behind_chance 0 +wait 1523 ; sm_cvar // z_spawn_range 1500 +wait 1524 ; sm_cvar z_spawn_safety_range 150 +wait 1525 ; sm_cvar z_spawn_speed 440 +wait 1526 ; sm_cvar z_special_burn_dmg_scale 5 +wait 1527 ; sm_cvar z_special_spawn_interval 10 +wait 1528 ; sm_cvar z_speed 260 +wait 1529 ; sm_cvar z_spit_detonate_delay 0 +wait 1530 ; sm_cvar z_spit_interval 15 +wait 1531 ; sm_cvar z_spit_latency 0.283333 +wait 1532 ; sm_cvar z_spit_range 950 +wait 1533 ; sm_cvar z_spit_spread_delay 0 +wait 1534 ; sm_cvar z_spit_velocity 950 +wait 1535 ; sm_cvar // z_spitter_health 100 +wait 1536 ; sm_cvar z_spitter_high_chance 0 +wait 1537 ; sm_cvar // z_spitter_limit 1 +wait 1538 ; sm_cvar z_spitter_max_wait_time 30 +wait 1539 ; sm_cvar z_spitter_range 950 +wait 1540 ; sm_cvar z_spitter_speed 240 +wait 1541 ; sm_cvar z_splat_survivor_pitch_max 15 +wait 1542 ; sm_cvar z_splat_survivor_pitch_min -15 +wait 1543 ; sm_cvar z_splat_survivor_shake_amplitude 100 +wait 1544 ; sm_cvar z_splat_survivor_shake_duration 2 +wait 1545 ; sm_cvar z_splat_survivor_shake_frequency 100 +wait 1546 ; sm_cvar z_splat_survivor_shake_radius 300 +wait 1547 ; sm_cvar z_splat_survivor_yaw_max 15 +wait 1548 ; sm_cvar z_splat_survivor_yaw_min -15 +wait 1549 ; sm_cvar // z_splatterdistance 100 +wait 1550 ; sm_cvar // z_stumble_max_curve_accel 5 +wait 1551 ; sm_cvar // z_stumble_max_curve_rate 5 +wait 1552 ; sm_cvar z_survivor_respawn_health 40 +wait 1553 ; sm_cvar z_tank_attack_interval 1.466667 +wait 1554 ; sm_cvar z_tank_autoshotgun_dmg_scale 0.8 +wait 1555 ; sm_cvar z_tank_damage_slow_max_range 32 +wait 1556 ; sm_cvar z_tank_damage_slow_min_range 32 +wait 1557 ; sm_cvar // z_tank_footstep_shake_amplitude 5 +wait 1558 ; sm_cvar z_tank_footstep_shake_duration 2 +wait 1559 ; sm_cvar z_tank_footstep_shake_interval 0.1 +wait 1560 ; sm_cvar z_tank_footstep_shake_radius 1000 +wait 1561 ; sm_cvar z_tank_grenade_damage 1000 +wait 1562 ; sm_cvar z_tank_grenade_launcher_dmg_scale 2 +wait 1563 ; sm_cvar z_tank_grenade_roll -15 +wait 1564 ; sm_cvar // z_tank_grenade_slowdown 0 +wait 1565 ; sm_cvar z_tank_has_special_blood 1 +wait 1566 ; sm_cvar z_tank_health 5000 +wait 1567 ; sm_cvar z_tank_incapacitated_health 2000 +wait 1568 ; sm_cvar z_tank_max_stagger_distance 300 +wait 1569 ; sm_cvar z_tank_max_stagger_duration 2 +wait 1570 ; sm_cvar z_tank_max_stagger_fade_duration 2 +wait 1571 ; sm_cvar z_tank_rock_radius 96 +wait 1572 ; sm_cvar z_tank_speed 200 +wait 1573 ; sm_cvar z_tank_speed_vs 220 +wait 1574 ; sm_cvar z_tank_stagger_fade_alpha 128 +wait 1575 ; sm_cvar z_tank_stagger_fade_duration 2 +wait 1576 ; sm_cvar z_tank_throw_force 850 +wait 1577 ; sm_cvar // z_tank_throw_health 50 +wait 1578 ; sm_cvar z_tank_throw_interval 4.5 +wait 1579 ; sm_cvar z_tank_walk_speed 120 +wait 1580 ; sm_cvar z_throttle_hit_interval_easy 0.25 +wait 1581 ; sm_cvar z_throttle_hit_interval_expert 0.5 +wait 1582 ; sm_cvar z_throttle_hit_interval_hard 0.25 +wait 1583 ; sm_cvar z_throttle_hit_interval_normal 0.25 +wait 1584 ; sm_cvar z_use_belt_item_tolerance 0.0 +wait 1585 ; sm_cvar z_use_tolerance 0.79335334 +wait 1586 ; sm_cvar // z_vision_range 1000 +wait 1587 ; sm_cvar // z_vision_range_alert 2000 +wait 1588 ; sm_cvar z_vision_range_daylight 2000 +wait 1589 ; sm_cvar // z_vision_range_obscured 1000 +wait 1590 ; sm_cvar // z_vision_range_obscured_alert 1000 +wait 1591 ; sm_cvar z_vocalize_burn_max_interval 1 +wait 1592 ; sm_cvar z_vocalize_burn_min_interval 0.5 +wait 1593 ; sm_cvar z_vocalize_shot_interval 0.5 +wait 1594 ; sm_cvar z_vomit_boxsize 2.0 +wait 1595 ; sm_cvar z_vomit_drag 1.0 +wait 1596 ; sm_cvar z_vomit_duration 1.25 +wait 1597 ; sm_cvar z_vomit_fade_duration 6 +wait 1598 ; sm_cvar z_vomit_fade_start 6 +wait 1599 ; sm_cvar z_vomit_fatigue 2001 +wait 1600 ; sm_cvar z_vomit_float -100 +wait 1601 ; sm_cvar z_vomit_hit_pitch_max 10 +wait 1602 ; sm_cvar z_vomit_hit_pitch_min -10 +wait 1603 ; sm_cvar z_vomit_hit_yaw_max 15 +wait 1604 ; sm_cvar z_vomit_hit_yaw_min -15 +wait 1605 ; sm_cvar z_vomit_interval 18 +wait 1606 ; sm_cvar z_vomit_lifetime 0.25 +wait 1607 ; sm_cvar z_vomit_maxdamagedist 400 +wait 1608 ; sm_cvar // z_vomit_range 300 +wait 1609 ; sm_cvar // z_vomit_slide_mult 0.5 +wait 1610 ; sm_cvar // z_vomit_slide_rate 0.1 +wait 1611 ; sm_cvar // z_vomit_vecrand 0.05 +wait 1612 ; sm_cvar z_vomit_velocity 2000 +wait 1613 ; sm_cvar z_vomit_velocityfadeend 0.5 +wait 1614 ; sm_cvar z_vomit_velocityfadestart 0.3 +wait 1615 ; sm_cvar z_walk_speed 120 +wait 1616 ; sm_cvar z_wandering_density 0.04 +wait 1617 ; sm_cvar // z_witch_anger_rate 0.2 +wait 1618 ; sm_cvar // z_witch_attack_range 60 +wait 1619 ; sm_cvar z_witch_berserk_range 400 +wait 1620 ; sm_cvar z_witch_burn_time 20 +wait 1621 ; sm_cvar z_witch_damage_per_kill_hit 30 +wait 1622 ; sm_cvar z_witch_discard_range 0 +wait 1623 ; sm_cvar z_witch_flashlight_range 600 +wait 1624 ; sm_cvar z_witch_health 2500 +wait 1625 ; sm_cvar // z_witch_hostile_at_me_anger 2 +wait 1626 ; sm_cvar z_witch_max_retreat_range 0 +wait 1627 ; sm_cvar z_witch_max_threat_time 3 +wait 1628 ; sm_cvar z_witch_min_retreat_range 0 +wait 1629 ; sm_cvar z_witch_min_threat_time 3 +wait 1630 ; sm_cvar z_witch_personal_space 300 +wait 1631 ; sm_cvar z_witch_relax_rate 0.2 +wait 1632 ; sm_cvar z_witch_retreat_exit_hidden_duration 0 +wait 1633 ; sm_cvar z_witch_retreat_exit_range 0 +wait 1634 ; sm_cvar z_witch_retreat_min_duration 0 +wait 1635 ; sm_cvar // z_witch_speed 300 +wait 1636 ; sm_cvar z_witch_speed_inured 300 +wait 1637 ; sm_cvar z_witch_threat_hostile_range 800 +wait 1638 ; sm_cvar z_witch_threat_normal_range 600 +wait 1639 ; sm_cvar z_witch_tongue_range 20 +wait 1640 ; sm_cvar z_witch_wander_hear_radius 400 +wait 1641 ; sm_cvar z_witch_wander_music_max_dist 2147483647 +wait 1642 ; sm_cvar z_witch_wander_music_max_interval 30 +wait 1643 ; sm_cvar z_witch_wander_music_min_dist 2147483647 +wait 1644 ; sm_cvar z_witch_wander_music_min_interval 5 +wait 1645 ; sm_cvar z_witch_wander_personal_space 400 +wait 1646 ; sm_cvar z_witch_wander_personal_time 3 +wait 1647 ; sm_cvar // servercfgfile server.cfg diff --git a/cfg/debug.cfg b/cfg/debug.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/debug.cfg @@ -0,0 +1 @@ + diff --git a/cfg/default.cfg b/cfg/default.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/default.cfg @@ -0,0 +1 @@ + diff --git a/cfg/dev.cfg b/cfg/dev.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/dev.cfg @@ -0,0 +1 @@ + diff --git a/cfg/developer.cfg b/cfg/developer.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/developer.cfg @@ -0,0 +1 @@ + diff --git a/cfg/empty.cfg b/cfg/empty.cfg new file mode 100644 index 00000000..8337712e --- /dev/null +++ b/cfg/empty.cfg @@ -0,0 +1 @@ +// diff --git a/cfg/exec.cfg b/cfg/exec.cfg new file mode 100644 index 00000000..9d607099 --- /dev/null +++ b/cfg/exec.cfg @@ -0,0 +1,17 @@ +sv_allow_wait_command 1 +sv_quota_stringcmdspersecond 2147483647 +fps_max 1000 +sm_cvar sv_runcmds 1 +sm_cvar sv_allow_wait_command 1 +sm_cvar sv_quota_stringcmdspersecond 2147483647 +sm_cvar mem_max_heapsize 512 +sm_cvar mem_max_heapsize_dedicated 512 +sm_cvar mem_min_heapsize 512 +sm_cvar datacachesize 512 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar servercfgfile filter.cfg +exec console_sm.cfg +exec simple.cfg +// sm_cvar servercfgfile simple.cfg +echo TEST diff --git a/cfg/force.cfg b/cfg/force.cfg new file mode 100644 index 00000000..f57337d5 --- /dev/null +++ b/cfg/force.cfg @@ -0,0 +1,72 @@ +// Console Commands + +engine_no_focus_sleep 0 +fps_max 1000 +sv_allow_lobby_connect_only 0 +sv_allow_wait_command 1 +sv_consistency 0 +sv_lan 0 +sv_noclipaccelerate 5 +sv_noclipspeed 3 +sv_password "" +sv_pausable 0 +sv_pure 0 +sv_pure_kick_clients 0 +sv_quota_stringcmdspersecond 2147483647 +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_tags coop,realism,secure,versus, +sv_unlockedchapters 2147483647 +sv_voiceenable 1 + +// Source Mod Cvars + +sm_cvar achievement_disable 0 +sm_cvar allow_all_bot_survivor_team 1 +sm_cvar coop 0 +sm_cvar datacachesize 512 +sm_cvar deathmatch 1 +sm_cvar director_min_start_players 1 +sm_cvar engine_no_focus_sleep 0 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar host_timescale 1.0 +sm_cvar mem_max_heapsize 512 +sm_cvar mem_max_heapsize_dedicated 512 +sm_cvar mem_min_heapsize 512 +sm_cvar precache_all_survivors 1 +sm_cvar sb_all_bot_game 1 +sm_cvar singlestep 0 +sm_cvar steamworks_stats_disable 0 +sm_cvar sv_allow_lobby_connect_only 0 +sm_cvar sv_allow_votes 1 +sm_cvar sv_allow_wait_command 1 +sm_cvar sv_always_full_flush 0 +sm_cvar sv_autosave 1 +sm_cvar sv_consistency 0 +sm_cvar sv_lan 0 +sm_cvar sv_maxspeed 1000 +sm_cvar sv_password "" +sm_cvar sv_pausable 0 +sm_cvar sv_pausable_dev 0 +sm_cvar sv_pausable_dev_ds 0 +sm_cvar sv_permawipe 0 +sm_cvar sv_pure_kick_clients 0 +sm_cvar sv_quota_stringcmdspersecond 2147483647 +sm_cvar sv_runcmds 1 +sm_cvar sv_tags coop,realism,secure,versus, +sm_cvar sv_unlockedchapters 2147483647 +sm_cvar sv_voiceenable 1 +sm_cvar sv_vote_issue_change_difficulty_allowed 1 +sm_cvar sv_vote_issue_change_map_later_allowed 1 +sm_cvar sv_vote_issue_change_map_now_allowed 1 +sm_cvar sv_vote_issue_change_mission_allowed 1 +sm_cvar sv_vote_issue_kick_allowed 1 +sm_cvar sv_vote_issue_restart_game_allowed 1 +sm_cvar sv_vote_plr_map_limit 2147483647 +sm_cvar tongue_debug 0 +sm_cvar z_debug 0 +sm_cvar z_debug_escape_scan 0 +sm_cvar z_debug_spawnable_areas 0 +sm_cvar z_restrict_team_change 0 diff --git a/cfg/full.cfg b/cfg/full.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/full.cfg @@ -0,0 +1 @@ + diff --git a/cfg/game.cfg b/cfg/game.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/game.cfg @@ -0,0 +1 @@ + diff --git a/cfg/generalfixes.cfg b/cfg/generalfixes.cfg index b3eb5220..12af0d02 100644 --- a/cfg/generalfixes.cfg +++ b/cfg/generalfixes.cfg @@ -8,7 +8,6 @@ sm plugins load fixes/bequiet.smx sm plugins load fixes/l4d_skip_intro.smx sm plugins load fixes/command_buffer.smx sm plugins load fixes/TickrateFixes.smx -sm plugins load fixes/l4d2_pistol_delay.smx sm plugins load fixes/l4d_votepoll_fix.smx sm plugins load fixes/l4d2_lagcomp_manager.smx sm plugins load fixes/l4d_console_spam.smx @@ -17,7 +16,6 @@ sm plugins load optional/playermanagement.smx sm plugins load optional/l4d2_sound_manipulation.smx sm plugins load fixes/frozen_tank_fix.smx sm plugins load fixes/l4d2_melee_damage_control.smx -sm plugins load fixes/fix_fastmelee.smx sm plugins load fixes/l4d2_jockeyed_ladder_fix.smx sm plugins load fixes/l4d2_no_post_jockey_deadstops.smx sm plugins load fixes/l4d2_jockey_jumpcap_patch.smx @@ -33,7 +31,6 @@ sm plugins load l4d_pause_message.smx sm plugins load fixes/l4d2_boomer_shenanigans.smx sm plugins load fixes/sv_consistency_fix.smx sm plugins load fixes/l4d2_hltv_crash_fix.smx -sm plugins load optional/l4d2_map_transitions.smx sm plugins load fixes/l4d_checkpoint_rock_patch.smx sm plugins load fixes/l4d_backjump_fix.smx sm plugins load fixes/l4d2_ellis_hunter_bandaid_fix.smx @@ -52,20 +49,23 @@ sm plugins load fixes/l4d2_jockey_hitbox_fix.smx sm plugins load fixes/l4d_consistent_escaperoute.smx sm plugins load fixes/l4d2_fix_rocketjump.smx sm plugins load fixes/l4d2_charge_target_fix.smx +sm plugins load optional/l4d2_getup_fixes.smx +sm plugins load optional/l4d2_getup_slide_fix.smx +sm plugins load optional/l4d2_charger_getup_fix.smx sm plugins load fixes/l4d2_shove_fix.smx sm plugins load fixes/l4d2_scripted_tank_stage_fix.smx sm plugins load fixes/l4d_fix_saferoom_ghostspawn.smx sm plugins load fixes/l4d_tongue_block_fix.smx -sm plugins load fixes/l4d2_fix_team_shuffle.smx +//sm plugins load fixes/l4d2_fix_team_shuffle.smx sm plugins load fixes/l4d_tongue_float_fix.smx sm plugins load fixes/l4d2_sg552_zoom_fix.smx sm plugins load fixes/l4d2_changelevel.smx +sm plugins load optional/l4d2_weaponrules.smx +sm plugins load optional/l4d2_weapon_attributes.smx +sm plugins load optional/l4d2_static_shotgun_spread.smx sm plugins load fixes/weapon_spawn_duplicate_fix.smx +sm plugins load optional/l4d2_reload_fix.smx sm plugins load fixes/l4d_fix_common_shove.smx sm plugins load fixes/l4d2_null_cusercmd_fix.smx -sm plugins load fixes/l4d2_tank_flying_incap.smx sm plugins load fixes/l4d2_tank_spawn_antirock_protect.smx sm plugins load fixes/ip_leak_fix.smx - -// Anti-Cheat. -sm plugins load anticheat/l4d2_noghostcheat.smx \ No newline at end of file diff --git a/cfg/global.cfg b/cfg/global.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/global.cfg @@ -0,0 +1 @@ + diff --git a/cfg/gm_coop.cfg b/cfg/gm_coop.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/gm_coop.cfg @@ -0,0 +1 @@ + diff --git a/cfg/gm_scavenge.cfg b/cfg/gm_scavenge.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/gm_scavenge.cfg @@ -0,0 +1 @@ + diff --git a/cfg/gm_survival.cfg b/cfg/gm_survival.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/gm_survival.cfg @@ -0,0 +1 @@ + diff --git a/cfg/gm_versus.cfg b/cfg/gm_versus.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/gm_versus.cfg @@ -0,0 +1 @@ + diff --git a/cfg/infected.cfg b/cfg/infected.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/infected.cfg @@ -0,0 +1 @@ + diff --git a/cfg/l4d2.cfg b/cfg/l4d2.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/l4d2.cfg @@ -0,0 +1 @@ + diff --git a/cfg/launch.cfg b/cfg/launch.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/launch.cfg @@ -0,0 +1 @@ + diff --git a/cfg/official.cfg b/cfg/official.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/official.cfg @@ -0,0 +1 @@ + diff --git a/cfg/old.cfg b/cfg/old.cfg new file mode 100644 index 00000000..3ebce1fa --- /dev/null +++ b/cfg/old.cfg @@ -0,0 +1,1266 @@ +// [General] +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +hostname "#{Server_Name}#" +name "Bizzy" +name2 "Moon" +// +rcon_password "BigBizzy101" +sv_steamgroup "38693222" +sv_search_key "bizzymod" +sv_downloadurl "| steamcommunity.com/groups/bizzymod | bizzymod.com | bizzymod.com/l4d_stats |" +sv_contact "| EricMizusawa02@gmail.com | EricMizusawa@vt.edu | Scott.Axios@gmail.com |" +sv_steamgroup_exclusive 1 // If set, only members of Steam group will be able to join the server when its empty, public people will be able to join the server only if it has players. +// // (Forcing the IP as a non-group member in lobby, or directly connecting always works) +// +hostfile "myhost.txt" // This ensures that Valve doesnt overwrite the Host file every Update. [Edit this file instead of host.txt, found in the same folder (/left4dead2)] +motdfile "mymotd.txt" // This ensures that Valve doesnt overwrite the MOTD every Update. [Edit this file instead of motd.txt, found in the same folder (/left4dead2)] +motd_enabled 1 // Enables the MOTD being shown to clients when on the server. +// // +// sv_gametypes "coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave," +sv_gametypes "coop,realism,survival,versus,teamversus,scavenge,teamccavenge,mutation,community,dash,shootzones,holdout,wave," +// sv_tags "confogl,coop,gravity,increased_maxplayers,realism,secure,versus," +sv_tags "coop,realism,secure,versus," +// +// What .cfg files to load on Matchmode load (Plugins, nothing else) - Separate with ; +sm_cvar confogl_match_execcfg_plugins "generalfixes.cfg;confogl_plugins.cfg;sharedplugins.cfg" +// +// [Other Neat Stuff] +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +sv_lan 0 // Server is not classified as a LAN server. +sv_region 255 // Sets the region of the server to be anywhere in the world. +// maxplayers 32 // Sets the maximum number of players allowed on the server. +sv_visiblemaxplayers 8 // Overrides the maximum number of players that the server reports to the client. +sv_unlockedchapters 2147483647 // Unlocks every possible chapter in existance. +sv_voiceenable 1 // Enables voice chat in the server. +sv_banid_enabled 1 // Whether or not the server keeps tracked of banned players IDs. +sv_forcepreload 1 // Enables server-side pre-loading. +// sv_alternateticks 0 // Sets the server to update entitities on alternating ticks. +// +// [File Consistency] +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +sv_consistency 0 // Whether the server enforces file consistency for critical files. +sv_pure 0 // The server will force all client files to come from Steam and additional files matching the Server. +sv_pure_kick_clients 0 // If set to 1, the server will kick clients with mismatching files. +sv_allow_wait_command 1 // Enables the wait command to be useable on the server. +sv_quota_stringcmdspersecond 2147483647 // Prevents the server from kicking players for entering too many string commands at once. +sv_maxcmdrate 120 // Maximum value of cl_cmdrate. +sv_mincmdrate 120 // Minimum value of cl_cmdrate. +sv_maxrate 72000 // Maximum value of rate. +sv_minrate 72000 // Minimum value of rate. +// net_maxroutable 1200 // Maximum allowed packet size before packets are split. +// net_splitrate 1 // Maximum number of fragments that can be sent per frame. +net_splitpacket_maxrate 72000 // Maximum rate that can be used for split packets. +sv_allow_lobby_connect_only 0 // If set to 1, players may only join this server from matchmaking lobby, may not connect directly. +cl_resend 1.5 // How much time to wait before resending a connection attempt to the player. +sv_pausable 0 // Prevents the server from being paused. +mp_roundlimit 5 // How many rounds can be played during a single game of Scavenge, first to 3 wins. +z_difficulty "Impossible" // Sets the difficulty of the game to be expert by default. +skill 3 // Sets the games skill level. +sk_autoaim_mode 3 // Sets the games skill auto aim mode. +sv_noclipspeed 3 // Sets noclip speed. +suitvolume 2.0 // Volume level of the Half-Life 2 HEV Suit. +closecaption 1 // Enables close-captioning being displayed. +r_eyeshift_x 0.0 // Eye position x-offset. +r_eyeshift_y 0.0 // Eye position y-offset. +r_eyeshift_z 0.0 // Eye position z-offset. +r_eyesize 0.0 // Eye size scale. +// r_eyemove 1 // Enables eye movement. +sv_pvsskipanimation 0 // Skips NPC bone setup when outside players visibility. +spit_scaling_min_scale 1.0 // Removes the damage nerf on spitter spit when taking damage from common infected. +func_break_max_pieces 30 // Max number of pieces from a broken object. +// +// [Logging] +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +fps_max 120 // Forces the maximum amount of FPS the CPU has available for the Server. +mat_queue_mode 2 // Forces the Server to use queued multithread mode for the material system. +mat_monitorgamma 1.6 // Sets the highest level of brightness. +mat_monitorgamma_tv_enabled 1 // Enables TV monitor gamma mode. +r_drawmodelstatsoverlaymin 1 // +r_drawmodelstatsoverlaymax 2 // +log on // Creates a logfile (on | off) +sv_logsdir "logs" // Folder in the game directory where server logs will be stored. +sv_logfile 1 // Default 1; Log server information in the log file. +sv_log_onefile 1 // Default 0; Log server information to only one file. +sv_logecho 1 // Default 0; Echo log information to the console. +sv_logbans 1 // Default 0; Log server bans in the server logs. +sv_logflush 0 // Default 0; Flush the log files to disk on each write (slow). +sv_rcon_log 0 // Disables remote console logging. +sv_rcon_minfailures 20 // The minimum number of times a player can try reconnecting. +sv_rcon_maxfailures 20 // The maximum number of times a player can try reconnecting. +sv_rcon_minfailuretime 1 // How long to wait before a reconnection try will fail. +sv_rcon_banpenalty 0 // Disables the ban penalty on reconnecting players. +sv_reservation_timeout 5 // How long before a lobby reservation expires. +net_chan_stats_lru 0 // +net_chan_stats_dump_top_msgs 0 // +think_limit 0 // Disables script think time check. +host_flush_threshold 0 // Dont flush memory caches between server instances. +host_xbox_e3_restart 0 // Disables the XBox E3 demo. +sys_minidumpspewlines 0 // Dont need mini dump spew. +engine_no_focus_sleep 0 +sm_flood_time 0 +sm_vote_delay 0 +sm_immunity_mode 3 +sm_show_activity 16 +// sm_unban "Moon" +sm_unban "STEAM_0:0:121253576" +sm_unban "STEAM_0:1:121253576" +sm_unban "STEAM_1:0:121253576" +sm_unban "STEAM_1:1:121253576" +mp_disable_autokick "Moon" +// mp_disable_autokick "STEAM_0:0:121253576" +// mp_disable_autokick "STEAM_0:1:121253576" +// mp_disable_autokick "STEAM_1:0:121253576" +// mp_disable_autokick "STEAM_1:1:121253576" +cs_make_vip "Moon" +// cs_make_vip "STEAM_0:0:121253576" +// cs_make_vip "STEAM_0:1:121253576" +// cs_make_vip "STEAM_1:0:121253576" +// cs_make_vip "STEAM_1:1:121253576" +// +// [Wait Commands] +sm_cvar sv_runcmds 1 +sm_cvar sv_allow_wait_command 1 +sm_cvar mem_max_heapsize 512 +sm_cvar mem_max_heapsize_dedicated 512 +sm_cvar mem_min_heapsize 64 +sm_cvar force_disablex360 1 +sm_cvar sv_forcepreload 1 +sm_cvar precache_all_survivors 1 +sm_cvar director_min_start_players 1 +sm_cvar sv_extra_client_connect_time 30 +sm_cvar sv_hosting_lobby 1 +// sm_cvar sv_alternateticks 0 +// +// [Addon Enabler] +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ +// This Setting will disable/enable the Serverside Addon Disabler. +// -1 = use addonconfig.cfg +// 0 = Disable addons. +// 1 = Enable Addons +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +wait 0010;sm_cvar fps_max_splitscreen 120 +wait 0020;sm_cvar l4d_stats_track 1 +wait 0030;sm_cvar l4d_stats_nogameplaycheck 1 +wait 0040;sm_cvar steamworks_stats_disable 0 +wait 0050;sm_cvar debug_l4dverbose 0 +wait 0060;sm_cvar achievement_disable 0 +// wait 0070;sm_cvar achievement_debug 0 +// wait 0080;sm_cvar z_award_debug 0 +wait 0090;sm_cvar z_holiday_gift_drop_chance 1.0 +wait 0100;sm_cvar survival_generate_fake_times 0 +wait 0110;sm_cvar cl_consistencycheck_interval 86400 +// +// System Settings +// +wait 0120;sm_cvar cpu_level 2 // Sets the highest level of effect detail. +// wait 0130;sm_cvar gpu_level 3 // Sets the highest level of shader detail. +wait 0140;sm_cvar gpu_mem_level 2 // Sets the highest level of model detail. +wait 0150;sm_cvar mem_level 2 // Sets the highest level of memory. +wait 0160;sm_cvar mat_vsync 0 // Enables vertical sync. +// wait 0170;sm_cvar mat_triplebuffered 0 // Triple buffers vertical sync. +wait 0180;sm_cvar mat_maxframelatency 0 // Maximum number of frames to be delayed. +wait 0190;sm_cvar mat_dxlevel 92 // Sets the default DirectX level. +// wait 0200;sm_cvar mat_hdr_tonemapscale 1 // Sets the highest amount of visibility for HDR. +wait 0210;sm_cvar mat_monitorgamma_tv_exp 4.0 // Brightness exponent TV monitor gamma. +wait 0220;sm_cvar mat_monitorgamma_tv_range_min 0 // Lowest range for TV monitor gamma. +// wait 0230;sm_cvar mat_monitorgamma_tv_range_max 255 // Highest range for TV monitor gamma. +// wait 0240;sm_cvar mat_aaquality 0 // Sets the highest level of font quality. +wait 0250;sm_cvar mat_antialias 8 // Sets the highest level of anti aliasing. +wait 0260;sm_cvar mat_forceaniso 16 // Sets the highest level of texture filtering. +wait 0270;sm_cvar mat_picmip -10 // Sets the highest level of mip map texture quality. +// wait 0280;sm_cvar mat_motion_blur_enabled 1 // Enables screen motion blur. +wait 0290;sm_cvar mat_levelflush 0 // Disables level flush. +// // +wait 0300;sm_cvar r_lod 0 // Sets the highest LOD. +wait 0310;sm_cvar r_staticprop_lod 0 // Sets the highest static prop LOD. +wait 0320;sm_cvar r_shadowlod 0 // Sets the highest shadow LOD. +wait 0330;sm_cvar r_shadowlodbias 3 // How many shadow layers to render. +// wait 0340;sm_cvar r_shadowrendertotexture 1 // Enables dynamic model shadows. +wait 0350;sm_cvar r_flashlightdepthtexture 1 // Enables dynamic flashlight shadows. +wait 0360;sm_cvar snd_gain_min 1.0 // Minimum sound gain. +wait 0370;sm_cvar snd_gain_max 10.0 // Maximum sound gain. +wait 0380;sm_cvar snd_gain 2.0 // Sound gain amount. +wait 0390;sm_cvar sv_voicecodec "vaudio_celt" // Improves clients microphone quality. +wait 0400;sm_cvar cc_norepeat 0 // How long after a caption is displayed to not display it again. +wait 0410;sm_cvar tv_name "" // HLTV name. +wait 0420;sm_cvar tv_title "" // HLTV title. +wait 0430;sm_cvar tv_delay 0 // Delay period for HLTV. +wait 0440;sm_cvar tv_maxrate 36000 // Max rate for HLTV. +wait 0450;sm_cvar tv_maxclients 32 // Max number of HLTV viewers. +wait 0460;sm_cvar tv_timeout 0 // HLTV connection timeout. +wait 0470;sm_cvar tv_autoretry 0 // Prevents HLTV from retrying after timing out. +wait 0480;sm_cvar force_disablex360 1 // Whether or not to forcefully disable XBox 360 support. +wait 0490;sm_cvar sv_stats 0 // Dont need stats. +wait 0500;sm_cvar sys_minidumpexpandedspew 0 // Dont need mini dump spew. +// // +// [Networking, Rates] // +// - Rates are not forced on clients, for 120 Tick. // +// - When using a different Tickrate, modify settings accordingly: // +// 1. Change 144000 to (Tickrate * 1200) for Rate and Splitpacket. // +// 2. Change 120 to (Tickrate) for Cmd and Update Rates. // +// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +wait 0510;sm_cvar sv_maxclientframes 120 // Frame rate limiter on clients. +// wait 0520;sm_cvar sv_maxupdaterate 60 // Maximum value of cl_updaterate. +wait 0530;sm_cvar sv_minupdaterate 60 // Minimum value of cl_updaterate. +wait 0540;sm_cvar sv_client_cmdrate_difference 0 // Sets the value of cl_cmdrate this amount below cl_updaterate. +wait 0550;sm_cvar sv_max_usercmd_future_ticks 15 // Maximum number of ticks in the future that a client user command can activate. +wait 0560;sm_cvar sv_client_predict 1 // This is already set on clients, but force them to predict. +wait 0570;sm_cvar sv_client_min_interp_ratio 0 // Minimum value of cl_interp_ratio. +wait 0580;sm_cvar sv_client_max_interp_ratio 30 // Maximum value of cl_interp_ratio. +// wait 0590;sm_cvar cl_interpolate 1 // Whether or not entities are interpolated on the clients. +// wait 0600;sm_cvar sm_allowed_lerp_changes 20 // How many times clients are allowed to change their lerp in a single chapter. +// wait 0610;sm_cvar sm_min_lerp 0.000000 // Minimum allowed lerp that clients to have. +// wait 0620;sm_cvar sm_max_lerp 0.500000 // Maximum allowed lerp that clients to have. +wait 0630;sm_cvar net_minroutable 1200 // Forces this packets size to be sent to the server. +wait 0640;sm_cvar net_compresspackets_minsize 1200 // Compresses packets that exceed the max packet size. +wait 0650;sm_cvar net_maxcleartime 0.016667 // The max amount of time to wait before the next packets are sent. +// // +wait 0660;sm_cvar sv_max_queries_sec 6 // Maximum queries per second to respond to from a single IP address. +wait 0670;sm_cvar sv_max_queries_sec_global 120 // Maximum queries per second to respond to from anywhere. +wait 0680;sm_cvar sv_max_queries_window 60 // The window for averaging queries per second. +wait 0690;sm_cvar sv_timeout 30 // How long before players who are not receiving connections from the host will be disconnected. +wait 0700;sm_cvar sv_reservation_grace 3 // The grace period that a players have after making reservation on the server. +wait 0710;sm_cvar sv_pausable 0 // Prevents the server from being paused. +wait 0720;sm_cvar sv_pausable_dev 0 // Prevents the server from being paused even in dev mode. +wait 0730;sm_cvar sv_pausable_dev_ds 0 // Prevents the server from being paused even in dev mode. +wait 0740;sm_cvar sv_hibernate_when_empty 0 // Enables hibernation mode when the server is empty. +wait 0750;sm_cvar sv_hibernate_postgame_delay 10 // How long after the last player leaves before the server will begin hibernation. +wait 0760;sm_cvar sv_hibernate_ms 0 // How many milliseconds to sleep per frame during hibernation. +wait 0770;sm_cvar sv_hibernate_ms_vgui 0 // How many milliseconds to sleep per frame during hibernation while running VGUI. +// // +// wait 0780;sm_cvar sv_filterban 1 // Enables the server to filter out banned players from being able to join. +wait 0790;sm_cvar cl_clock_correction_adjustment_min_offset 1 // The minimum clock offset at which clock corrections will be applied. +wait 0800;sm_cvar cl_clock_correction_adjustment_max_offset 50 // The maximum clock offset at which clock corrections will be applied. +wait 0810;sm_cvar cl_clock_correction_adjustment_max_amount 100 // The maximum number of milliseconds that can be used to correct a clients clock. +wait 0820;sm_cvar cl_clockdrift_max_ms 100 // The maximum number of milliseconds that a clients clock can drift before it snaps back to the servers. +wait 0830;sm_cvar sv_clockcorrection_msecs 50 // This one makes laggy players have less of an advantage regarding hitbox (as the server normally compensates for 60 msec, lowering it below 15 will make some players appear stuttery) +wait 0840;sm_cvar sv_cycle_latch_timer 0.1 // How often clock corrections are made on clients. +wait 0850;sm_cvar sv_unlag_fixstuck 1 // Prevent getting stuck when attempting to "unlag" a player. +wait 0860;sm_cvar sv_maxunlag 0.5 // Maximum amount of time that a player can "unlag" or travel back in time. +wait 0870;sm_cvar sv_lagflushbonecache 0 // Prevents entity bone caches from flushing during lag compensation. +wait 0880;sm_cvar sv_script_think_interval 0 // How often scripts test for think checks. +wait 0890;sm_cvar tp_schedule_post_think 0 // Disables script think time check. +wait 0900;sm_cvar sv_benchmark_numticks 0 // Disables bench mark running. +wait 0910;sm_cvar sv_teststepsimulation 0 // Disables step simulation testing. +// // +// wait 0920;sm_cvar sv_allow_votes 1 // Allows players to call votes on the server. +// wait 0930;sm_cvar sv_vote_issue_change_mission_allowed 1 // Allows players to call a vote to change the map. +// wait 0940;sm_cvar sv_vote_issue_change_map_now_allowed 1 // Allows players to call a vote to change the map now. +// wait 0950;sm_cvar sv_vote_issue_change_map_later_allowed 1 // Allows players to call a vote to change the map later. +// wait 0960;sm_cvar sv_vote_issue_restart_game_allowed 1 // Allows players to call a vote to restart the game or chapter. +// wait 0970;sm_cvar sv_vote_issue_change_difficulty_allowed 1 // Allows players to call a vote to change the difficulty. +// wait 0980;sm_cvar sv_vote_issue_kick_allowed 1 // Allows players to call a vote to kick another player. +wait 0990;sm_cvar sv_vote_creation_timer 0 // How often players are allowed to call a vote. +wait 1000;sm_cvar sv_vote_timer_duration 12 // How long players will have to vote on an issue. +wait 1010;sm_cvar sv_vote_command_delay 1.5 // How long after a vote passes that the action will occur. +wait 1020;sm_cvar sv_vote_kick_ban_duration 1 // Duration in minutes that a player will be banned for after being kicked. +wait 1030;sm_cvar sv_vote_plr_map_limit 2147483647 // Allows players to call an infinite number of votes per map. +wait 1040;sm_cvar changelevel_pause_interval 10 // How long after a chapter ends before loading into the next one. +wait 1050;sm_cvar versus_round_restarttimer 18 // How long it takes to restart a Versus round. +wait 0106;sm_cvar versus_round_restarttimer_finale 18 // How long it takes to restart a Versus round in a finale map. +wait 1070;sm_cvar scavenge_round_restart_delay 12 // How long it takes to restart a Scavenge round. +wait 1080;sm_cvar scavenge_round_restart_delay_tied 12 // How long it takes to restart a Scavenge round when the score is tied. +wait 1090;sm_cvar sv_disable_glow_faritems 0 // Whether or not to disable glows on items that are outside of a survivors grab range. +wait 1100;sm_cvar sv_player_stuck_tolerance 3 // How long before stuck players will be teleported to their nearest teammate. +wait 1110;sm_cvar sv_pz_endgame_vote_period 15 // How long players have to vote a rematch at the end of a competitive match. +// wait 1120;sm_cvar sv_pz_endgame_vote_post_period 5 // Delay period after the rematch vote has ended. +wait 1130;sm_cvar sv_gameinstructor_disable 1 // Disables the gameinstructor from being shown to clients. +// wait 1140;sm_cvar sv_permawipe 0 // If enabled, the game will be sent back to the lobby if all the survivors wipe. +// // +// Slots (This prevents constant resetting of sv_maxplayers on map change) // +// wait 1150;sm_cvar Coop 0 // Makes the server a Coop server. +wait 1160;sm_cvar Deathmatch 0 // Makes the server a Deathmatch server. +wait 1170;sm_cvar mv_maxplayers 32 // Maximum number of players allowed on the server. +wait 1180;sm_cvar sv_parallel_packentities 2 // Sets parallel entity packing for dedicated servers. +wait 1190;sm_cvar sv_parallel_sendsnapshot 2 // Sets parallel snapshot sending for dedicated servers. +// wait 1200;sm_cvar sv_multiplayer_maxtempentities 32 // Limits the max number of temp entities that can be in the server. +wait 1210;sm_cvar sv_multiplayer_sounds 32 // Limits the max number of sounds that can be played in the server. +wait 1220;sm_cvar sb_all_bot_game 1 // Prevents the server from shutting down when there are no human players. +wait 1230;sm_cvar allow_all_bot_survivor_team 1 // Prevents the server from shutting down when there are no human players on a single team. +wait 1240;sm_cvar director_transition_timeout 60 // How long to wait between levels for transitioning players to load in. +wait 1250;sm_cvar director_unfreeze_time 0 // How long after the first player connects before the teams will become unfrozen. +wait 1260;sm_cvar director_afk_timeout 20 // How long before a player who is not moving will be switched into idle mode. +wait 1270;sm_cvar director_allow_infected_bots 1 // Enables infected bot spawning in versus mode. +wait 1280;sm_cvar z_female_boomer_spawn_chance 50 // The percent chance that a male boomer will spawn. +wait 1290;sm_cvar z_spitter_high_chance 0 // The chance that a spit puddle will spread onto higher surfaces from its origin. +// wait 1300;sm_cvar z_hunter_limit 1 // Limits the maximum number of bot hunters allowed to spawn. +// wait 1310;sm_cvar z_smoker_limit 1 // Limits the maximum number of bot smokers allowed to spawn. +wait 1320;sm_cvar z_minion_limit 4 // Limits the maximum number of infected bots allowed to spawn on the infected team. +wait 1330;sm_cvar z_minion_aim_tolerance 0.075 // The minimum vision tolerance required for a special infected to attack a survivor. +wait 1340;sm_cvar net_maxfilesize 64 // Maximum allowed file upload size in MB. +// // +wait 1050;sm_cvar mp_teamlist "spectator,survivor,nick,gambler,ellis,mechanic,coach,rochelle,producer,bill,namvet,francis,biker,louis,manager,zoey,teenangst,zombie,infected,common,minion,hunter,smoker,gas,voomer,exploding,jockey,charger,spitter,witch,tank" +wait 1050;sm_cvar mp_autoteambalance 0 // Prevents some shuffling. +wait 1050;sm_cvar mp_teams_unbalance_limit 0 // Disables check for team balancing. +wait 1050;sm_cvar mp_limitteams 0 // Disables check for team balancing. +wait 1050;sm_cvar mp_autokick 0 // Prevents players from being kicked by the game. +wait 1050;sm_cvar mp_spawnprotectiontime 0 // Disables punishing players who team kill. +wait 1050;sm_cvar mp_enableroundwaittime 0 // Disables forced waiting period between rounds. +wait 1050;sm_cvar mp_freezetime 0 // How long to keep players frozen for when the round starts. +wait 1050;sm_cvar z_restrict_team_change 0 // Server always allows players to switch teams. +wait 1050;sm_cvar vs_max_team_switches 2147483647 // Allows players to switch teams an unlimited number of times. +wait 1050;sm_cvar versus_force_start_time 180 // How many seconds into a map on Versus mode that the saferoom door will open and the round starts. +wait 1050;sm_cvar versus_marker_num 0 // Disables the flow percentage tracker on the survivors. +wait 1050;sm_cvar vs_score_pp_health 1.0 // Point scale for permanent health. +wait 1050;sm_cvar vs_score_pp_healthbuffer 1.0 // Point scale for temp health. +wait 1050;sm_cvar vs_survivor_damage_reduction 1.0 // Damage factor for infected on survivors in versus mode. +// wait 1050;sm_cvar vs_survival_bonus 0 // Point bonus for every survivor who survives in the saferoom. +wait 1050;sm_cvar vs_defib_penalty 0 // Point penalty for bringing a dead survivor back to life. +wait 1050;sm_cvar vs_incap_bonus 25 // Infected point bonus for incapping a survivor. +// wait 1050;sm_cvar vs_tiebreak_bonus 0 // Point bonus for winning the tie breaker at the end of a versus chapter. +// // +wait 1200;sm_cvar survival_horde_stage_interval 60 // The initial horde spawn interval in Survival mode. +wait 1200;sm_cvar survival_horde_stage_interval_decay 1 // The decay rate of the horde spawn interval each wave in Survival mode. +wait 1200;sm_cvar survival_special_spawn_interval 60 // The initial spawn interval for the special infected in Survival mode. +wait 1200;sm_cvar survival_special_spawn_interval_decay 2 // The decay rate of the special infected spawn interval in Survival mode. +wait 1200;sm_cvar survival_special_stage_interval 10 // The max number of special infected will increase after this amount of time. +wait 1200;sm_cvar survival_boomer_limit_increase 1 // Allows the max number of boomers to increase in Survival mode. +wait 1200;sm_cvar survival_charger_limit_increase 1 // Allows the max number of chargers to increase in Survival mode. +wait 1200;sm_cvar survival_max_specials 10 // Maximum number of boomers that can be spawned at once in Survival mode. +wait 1200;sm_cvar survival_max_boomers 3 // Maximum number of boomers that can be spawned at once in Survival mode. +wait 1200;sm_cvar survival_tank_stage_interval 80 // The initial tank spawn interval in Survival mode. +wait 1200;sm_cvar survival_tank_stage_interval_decay 10 // The tank spawn interval decrease each wave in Survival mode. +wait 1200;sm_cvar survival_lull_time 0 // Duration of the lull period in Survival mode. +wait 1200;sm_cvar survival_lull_time_increment 0 // Duration of the lull period increment in Survival mode. +wait 1200;sm_cvar survival_lull_time_max 0 // The longest possible duration of a lull period in Survival mode +// wait 1200;sm_cvar survival_round_restart_delay 15 // How long after the survivor team wipes in Survival before the map restarts. +// // +wait 1200;sm_cvar scavenge_round_setup_time 30 // How long survivors have to get ready before the round force starts itself in Scavenge mode. +// wait 1200;sm_cvar scavenge_round_initial_time 90 // The initial time the survivors start with in a Scavenge round. +wait 1200;sm_cvar scavenge_score_bonus_time 15 // The amount of time added to the timer each time a survivor fills a gas can. +wait 1200;sm_cvar tf_arena_preround_time 5 // +wait 1200;sm_cvar tf_arena_max_streak 10 // +// // +// Tickrate Fixes // +wait 1350;sm_cvar nb_update_frequency 0.016667 // The lower the value, the more often common infected and witches get updated (Pathing, and state), very CPU Intensive. (0.100 is default) (0 = automatic) +wait 1350;sm_cvar nb_update_framelimit 10 // Maximum number of next bots that can be updated each frame. +wait 1350;sm_cvar nb_update_maxslide 10 // Maximum amount of update correction that can be applied to next bots. +wait 1350;sm_cvar nb_gravity 2000 // Next bots experience this force of gravity. +// wait 1350;sm_Cvar nb_acceleration 500 // Rate of acceleration for next bots movement. +wait 1350;sm_cvar nb_friction_forward 1 // Friction factor for next bots when moving forward. +// wait 1350;sm_cvar nb_friction_sideways 3 // Friction factor for next bots when moving sideways. +wait 1350;sm_cvar nb_saccade_speed 3000 // How fast the next bots look at their target. +// wait 1350;sm_cvar nb_saccade_time 0.1 // How long it takes for the next bots to look at their target. +wait 1350;sm_cvar nb_head_aim_steady_max_rate 3000 // How fast next bots focus on their targets head. +wait 1350;sm_cvar nb_head_aim_settle_duration 0.1 // How long it takes next bots to focus on their targets head. +wait 1350;sm_cvar nb_yaw_rate 300 // The rate at which next bots rotate their view. +wait 1350;sm_cvar nb_path_draw_inc 2147483647 // How far out next bots can begin drawing a path. +wait 1350;sm_cvar nb_path_segment_influence_radius 2147483647 // How close objects need to be to influence next bot pathing. +wait 1350;sm_cvar nb_goal_look_ahead_range 100 // How far ahead in the map next bots can path towards something. +wait 1350;sm_cvar nb_speed_look_ahead_range 300 // How fast next bots are able to path towards something ahead in the map. +wait 1350;sm_cvar nb_vision_notice_hidden_range 0 // How close next bots can detect hidden targets. +// wait 1350;sm_cvar nb_avoid 0 // Disables next bot pathing avoidance. +wait 1350;sm_cvar nb_avoid_interval 1 // How often next bots can try to avoid each other. +wait 1350;sm_cvar nb_chase_lead_time 1 // How long a next bot will lead a chase before another takes over. +wait 1350;sm_cvar nb_lean_rate 4 // The rate at which next bots lean. +wait 1350;sm_cvar nb_lean_forward_accel 200 // How much forward acceleration next bots have when leaning. +wait 1350;sm_cvar nb_ladder_align_range 100 // How close next bots need to be towards a ladder for them to be drawn towards it. +wait 1350;sm_cvar z_noise_level_max 150 // Maximum noise level. +wait 1350;sm_cvar z_noise_level_footstep 150 // Noise level of the footstep sound effect. +wait 1350;sm_cvar z_noise_level_vocalize 150 // Noise level of survivor vocalizations. +wait 1350;sm_cvar z_noise_level_fade_rate 50 // Noise level fade rate. +wait 1350;sm_cvar z_noise_level_hold_time 0.333333 // How long a noise lingers for. +wait 1350;sm_cvar z_deafen_radius_one 50 // Inner radius for deafening. +wait 1350;sm_cvar z_deafen_radius_two 100 // Middle radius for deafening. +wait 1350;sm_cvar z_deafen_radius_three 150 // Outer radius for deafening. +// // +wait 1500;sm_cvar sb_max_team_melee_weapons 8 // The number of survivor bots that are allowed to have a melee weapon. +// wait 1500;sm_cvar sb_far_hearing_range 3000 // How far away a survivor can hear an infected. +// wait 1500;sm_cvar sb_near_hearing_range 2000 // How far away a survivor can hear anything. +// wait 1500;sm_cvar survivor_vision_range 2000 // How far survivor bots can see infected when their vision is obscured. +// wait 1500;sm_cvar survivor_vision_range_obscured 1000 // How far survivor bots can see infected when their vision is obscured. +wait 1500;sm_cvar sb_path_look_ahead_range 500 // How far ahead in the map survivor bots are able to path. +wait 1500;sm_cvar sb_normal_saccade_speed 3000 // How fast survivor bots look at a teammate. +wait 1500;sm_cvar sb_combat_saccade_speed 3000 // How fast survivor bots look at an infected. +wait 1500;sm_cvar sb_locomotion_wait_threshold 4 // How long a survivor will wait before moving to their teammates. +wait 1500;sm_cvar sb_separation_danger_max_range 300 // The distance at which a survivor bot will begin following their teammates. +// wait 1500;sm_cvar sb_separation_danger_min_range 200 // The distance that a survivor bot will stop following their teammates. +wait 1500;sm_cvar sb_separation_range 300 // The desired distance between survivor bots. +wait 1500;sm_cvar sv_player_max_separation_force 0 // +// wait 1500;sm_cvar sb_neighbor_range 300 // How close survivors need to be to their teammates in order to feel . +wait 1500;sm_cvar sb_follow_stress_factor 0.0 // The intensity with which survivor bots will follow their teammates. +wait 1500;sm_cvar sb_pushscale 0.0 // The force with which survivor bots will push each other with. +wait 1500;sm_cvar sv_pushaway_max_force 0 // +wait 1500;sm_cvar sb_battlestation_give_up_range_from_human 200 // A survivor bot will leave their battlestation when they are this far away from their team. +wait 1500;sm_cvar sb_battlestation_human_hold_time 1 // How long a survivor bot will hold their battlestation before going back to their team. +wait 1500;sm_cvar sb_max_battlestation_range_from_human 600 // The maximum distance that a survivor bot will hold their battlestation from a human player. +wait 1500;sm_cvar sb_max_scavenge_separation 600 // The maximum distance from a human player that a survivor bot can be in Scavenge mode. +wait 1500;sm_cvar sb_enforce_proximity_range 1000 // The range at which a survivor bot will be teleported back to their team. +wait 1500;sm_cvar sb_enforce_proximity_lookat_timeout 5 // How long a survivor bot must be out of range before being teleported back to their team. +// // +wait 1650;sm_cvar sb_min_attention_notice_time 0.0 // Delay before survivor bots look at another survivor. +wait 1650;sm_cvar sb_min_orphan_time_to_cover 0.0 // Delay before survivor bots attempt to revive or rescue a teammate. +wait 1650;sm_cvar sb_friend_immobilized_reaction_time_normal 0.0 // Delay before a survivor bot will attempt to save a teammate in normal difficulty. +wait 1650;sm_cvar sb_friend_immobilized_reaction_time_hard 0.0 // Delay before a survivor bot will attempt to save a teammate in advanced difficulty. +wait 1650;sm_cvar sb_friend_immobilized_reaction_time_expert 0.0 // Delay before a survivor bot will attempt to save a teammate in expert difficulty. +wait 1650;sm_cvar sb_friend_immobilized_reaction_time_vs 0.0 // Delay before a survivor bot will attempt to save a teammate in Versus mode. +// wait 1650;sm_cvar sb_debug_apoproach_wait_time 0 // How long a survivor bot will wait at its move-to spot. +wait 1650;sm_cvar sb_revive_friend_distance 175 // How far away a survivor bot can revive their incapped teammate. +wait 1650;sm_cvar sb_temp_health_consider_factor 0.8 // The factor that survivor bots will apply to temp health when considering who to heal. +wait 1650;sm_cvar sb_toughness_buffer 20 // How much health a survivor bot must have over a human teammate to heal themselves. +wait 1650;sm_cvar sb_allow_shoot_through_survivors 0 // Prevents the survivor bots from shooting infected through their teammates. +wait 1650;sm_cvar sb_hindrance_range 0 // The distance from a survivor bots line of sight that an object will obscure their aim. +wait 1650;sm_cvar sb_sidestep_for_horde 1 // Allows the survivor bots to move positions to shoot the infected. +wait 1650;sm_cvar sb_threat_very_far_range 2147483647 // Even multiple threats are too far for survivor bots at this range. +wait 1650;sm_cvar sb_threat_far_range 2000 // Individual threats are too far for survivor bots at this range. +wait 1650;sm_cvar sb_threat_medium_range 1000 // Threats will get the survivor bots attention at this range. +wait 1650;sm_cvar sb_close_threat_range 100 // Threats at this range are too close for comfort. +wait 1650;sm_cvar sb_threat_close_range 100 // Threats at this range are too close for comfort. +wait 1650;sm_cvar sb_threat_very_close_range 100 // Threats at this range are too close for comfort. +wait 1650;sm_cvar sb_threat_exposure_walk 2147483647 // How much exposure to a threat is required to force a survivor bot to sneak walk. +wait 1650;sm_cvar sb_threat_exposure_stop 2147483647 // How much exposure to a threat is required to force a survivor bot to stop walking. +wait 1650;sm_cvar sb_vomit_blind_time 0 // How long a biled survivor bot will be blind for. +wait 1650;sm_cvar sb_use_button_range 500 // How close a to a trigger the survivor bots must be before they can attempt to activate it. +// wait 1650;sm_cvar sb_reachable_cache_paranoia 1 // Forces the bots to be smart and avoid danger when attempting to use a reachable cache. +// wait 1650;sm_cvar sb_reachability_cache_lifetime 10 // How long a survivor bot will try to grab an item before they give up on it. +wait 1650;sm_cvar sb_minigun_distance 50 // From how far away a survivor bot can use a mounted machine gun. +wait 1650;sm_cvar sb_narrow_corridor_width 64 // How narrow a passageway must be for the survivor bots to pass through it one at a time. +wait 1650;sm_cvar sb_close_checkpoint_door_interval 4 // How long before a survivor bot will close the saferoom door once everyone is inside. +wait 1650;sm_cvar sb_rescue_vehicle_loading_range 50 // The distance that a survivor bot will be from the rescue vehicle when waiting for it to arrive. +wait 1650;sm_cvar sb_l4d1_survivor_behavior 0 // Disables the L4D1 survivors in the Passing finale from supporting the L4D2 survivors. +// wait 1650;sm_cvar survivor_give_attract_timeout 10 // How long a L4D1 survivor will try to give a L4D2 survivor an item before they stop trying. +// // +wait 1800;sm_cvar g_Language "English" // Sets the games language to English. +wait 1800;sm_cvar ai_force_serverside_ragdoll 1 // Whether or not to enforce server-side ragdoll rendering. +wait 1800;sm_cvar sv_ragdoll_maxcount 2147483647 // The maximum number of ragdolls that can exist on the map at once. +wait 1800;sm_cvar sv_ragdoll_maxcount_generic 2147483647 // The maximum number of common infected ragdolls that can exist on the map at once. +wait 1800;sm_cvar sv_ragdoll_maxcount_gib 2147483647 // The maximum number of gibbed ragdolls that can exist on the map at once. +wait 1800;sm_cvar sv_ragdoll_maxcount_special 2147483647 // The maximum number of special infected ragdolls that can exist on the map at once. +wait 1800;sm_cvar sv_ragdoll_maxcount_boss 2147483647 // The maximum number of tank and witch ragdolls that can exist on the map at once. +wait 1800;sm_cvar sv_ragdoll_maxcount_survivor 2147483647 // The maximum number of survivor ragdolls that can exist on the map at once. +wait 1800;sm_cvar z_ragdoll_discard_range 2147483647 // Ragdolls this far away from players will be removed from the map. +wait 1800;sm_cvar g_ragdoll_max_fps 60 // Players with FPS lower than this will have a reduced number of ragdolls. +wait 1800;sm_cvar g_ragdoll_min_fps 30 // Players with FPS lower than this will have 1 ragdoll of each type. +wait 1800;sm_cvar ragdoll_self_collision 0 // Whether or not ragdolls will collide with themselves. +wait 1800;sm_cvar ragdoll_slowdown_time 3 // Max amount of time that a ragdoll will be slowed down. +wait 1800;sm_cvar ragdoll_sleepaftertime 3 // How long until a ragdoll will stop moving. +wait 1800;sm_cvar ragdoll_force_to_sleep_time 3 // How long until a ragdoll can no longer be moved. +wait 1800;sm_cvar ragdoll_door_uncollide_time 2 // How long it takes for a ragdoll that is stuck in a door to lose collision. +wait 1800;sm_cvar collision_shake_amp 0.0 // Disables ragdoll collision physics. +wait 1800;sm_cvar collision_shake_freq 0.1 // Disables ragdoll collision physics. +wait 1800;sm_cvar collision_shake_time 0.0 // Disables ragdoll collision physics. +wait 1800;sm_cvar phys_enable_experimental_optimizations 1 // Enables experimental SIMD optimizations. +wait 1800;sm_cvar physx_valve_dll 1 // Enables Valve DLL physics. +wait 1800;sm_cvar cl_simdbones 1 // Enables the use of SIMD bones. +// wait 1800;sm_cvar phys_pushscale 1.0 // Force scale of players applied on physics objects. +wait 1800;sm_cvar phys_impactforcescale 1.0 // Impact force scale applied on physics objects. +wait 1800;sm_cvar phys_upimpactforcescale 0.5 // Upward impact force scale applied on physics objects. +wait 1800;sm_cvar phys_explosion_force 1.0 // Force scale of explosions applied on physics objects. +wait 1800;sm_cvar phys_ragdoll_force_magnitude 0.25 // Force magnitude scale applied on ragdolls. +// wait 1800;sm_cvar phys_stressbodyweights 5.0 // Body weight scale of physics objects and ragdolls. +wait 1800;sm_cvar phys_shoot_torque 1000000 // The amount of force applied by bullets onto physics objects. +// // +// wait 1950;sm_cvar view_offset 0 // Screen view offset. +// wait 1950;sm_cvar view_offset_up 0 // Screen view upward offset. +// wait 1950;sm_cvar view_offset_down 0 // Screen view downward offset. +// wait 1950;sm_cvar view_offset_forward 0 // Screen view forward offset. +wait 1950;sm_cvar still_vel_limit 0 // A player moving slower than this is considered to be still. +wait 1950;sm_cvar still_view_accel_limit 0 // A player accelerating slower than this will have a still view. +wait 1950;sm_cvar z_stumble_max_curve_rate 5 // Max degrees per second that a players view moves while stumblinng. +wait 1950;sm_cvar z_added_light_min 0.05 // Minimum amount of added light. +wait 1950;sm_cvar z_added_light_max 0.5 // Maximum amount of added light. +wait 1950;sm_cvar r_skin 1 // Renders skin on models. +// wait 1950;sm_cvar sv_infected_scale_min 1.025 // Minimum model size factor for common infected. +// wait 1950;sm_cvar sv_infected_scale_max 1.025 // Maximum model size factor for common infected. +wait 1950;sm_cvar flex_expression "" // Unspecifies any specific flex expression. +// wait 1950;sm_cvar ai_expression_optimization 0 // Skips infected facial expressions when outside of players visibility. +wait 1950;sm_cvar ai_expression_frametime 0.1 // Maximum frametime for background infected to use facial expressions. +// wait 1950;sm_cvar z_splatterdistance 200 // Distance that blood splatters travel. +wait 1950;sm_cvar z_gib_force_factor 5.0 // Force factor applied on infected gibs. +wait 1950;sm_cvar z_gib_explosion_force_factor 0.05 // Explosion force factor applied on infected gibs. +// wait 1950;sm_cvar z_fatal_blast_incineration_probability 0 // +wait 1950;sm_cvar z_fatal_blast_min_ragdolls 1 // +wait 1950;sm_cvar z_fatal_blast_max_ragdolls 20 // +// wait 1950;sm_cvar z_bbq_rate 0.0 // Rate that the BBQ effect grows on players. +// wait 1950;sm_cvar z_burn_max 1.0 // Maximum amount for the burn effect. +// wait 1950;sm_cvar z_burn_rate 0.0 // Rate that the burn effect grows on players. +wait 1950;sm_cvar sv_footstepinterval 0.166667 // How often the footstep sound effect is played. +wait 1950;sm_cvar mp_feetmaxyawrate 90 // Player model feet yaw rate. +wait 1950;sm_cvar mp_feetyawrate 120 // Player model feet yaw rate. +wait 1950;sm_cvar mp_feetyawrate_max 180 // Player model feet yaw rate. +wait 1950;sm_cvar mp_facefronttime 0.333333 // How long it takes for a players legs to turn after they turn their body. +// // +wait 2100;sm_cvar sv_gravity 735 // Sets the world gravity. +wait 2100;sm_cvar sv_accelerate 5.25 // Sets the world acceleration. +// wait 2100;sm_cvar sv_friction 4 // Sets the world friction. +// wait 2100;sm_cvar z_ghost_friction 1.5 // Friction factor applied to ghost player zombies. +wait 2100;sm_cvar z_forwardspeed 500 // Limits the max speed moving forward. +wait 2100;sm_cvar z_sidespeed 500 // Limits the max speed moving sideways. +wait 2100;sm_cvar z_backspeed 500 // Limits the max speed moving backwards. +wait 2100;sm_cvar sv_maxspeed 1000 // Limits how fast non-nocliping players can move themselves. +wait 2100;sm_cvar sv_maxvelocity 1500 // Players are unable to travel faster than this velocity. +wait 2100;sm_cvar sv_backspeed 1.0 // The speed factor that is applied to players when moving backwards. +wait 2100;sm_cvar sv_rollspeed 450 // The speed at which strafing will tilt a players view by sv_rollangle. +wait 2100;sm_cvar sv_rollangle 0.3 // The angle relative to a players speed that their view till tilt when strafing. +wait 2100;sm_cvar sv_stopspeed 80 // Survivors will be forcefully slowed down below this speed. +wait 2100;sm_cvar sv_stepsize 19 // The height that players can walk onto objects. +wait 2100;sm_cvar z_anim_idle_speed_min 0 // Players moving slower than this will appear IDLE. +wait 2100;sm_cvar z_anim_idle_speed_max 80 // Players moving slower than this and not pressing any buttons will appear IDLE. +wait 2100;sm_cvar sv_airaccelerate 15 // Sets the air acceleration. +wait 2100;sm_cvar sv_wateraccelerate 20 // Sets the water acceleration. +wait 2100;sm_cvar sv_waterfriction 0 // Sets the water friction. +wait 2100;sm_cvar sv_waterdist 0 // Disables vertical view fixup when eyes are near a water plane. +wait 2100;sm_cvar l4d2_slowdown_water_tank 180 // Whether or not to slow down tank in water. +wait 2100;sm_cvar l4d2_slowdown_water_survivors 180 // Whether or not to slow down the survivors in water. +wait 2100;sm_cvar l4d2_slowdown_water_survivors_during_tank 180 // The speed at which survivors move while in water. +wait 2100;sm_cvar fall_speed_safe 500 // A survivor who falls slower than this speed wont take fall damage. +wait 2100;sm_cvar fall_speed_fatal 700 // A survivor who faster than this speed will be incapped or die. +wait 2100;sm_cvar z_falling_land_speed 400 // How fast a zombie needs to fall to have a landing animation. +wait 2100;sm_cvar z_falling_land_hard_speed 400 // How fast a zombie needs to fall to have a hard landing animation. +wait 2100;sm_cvar z_falling_land_forward_speed 400 // How fast a zombie needs to fall to have a forward landing animation. +// wait 2100;sm_cvar survivor_incap_max_fall_damage 200 // A survivor who takes this much fall damage will be killed instead of incapped. +wait 2100;sm_cvar sv_bounce 0.2 // Bounce factor when players collide with certain physics objects. +// // +// wait 2250;sm_cvar sv_noclipfriction 4 // Sets noclip friction. +wait 2250;sm_cvar mp_allowspectators 1 // Allows spectators to be in the server. +wait 2250;sm_cvar spec_filter_survivors "any" // Spectators on the survivor team can spectate anyone on both teams. +wait 2250;sm_cvar spec_freeze_time 0 // How long spectators are frozen on the observer freeze cam. +wait 2250;sm_cvar spec_freeze_traveltime 0.01 // How long it takes spectators to zoom in on on the observer freeze cam. +wait 2250;sm_cvar sv_spectatoridletime 5 // After how much time of a spectator not moving will they become idle. +// // +wait 2400;sm_cvar player_use_radius 125 // Range at which players can pick up items. +wait 2400;sm_cvar player_incap_use_radius 150 // Range at which players can revive their teammates. +wait 2400;sm_cvar z_use_tolerance 0.8 // The minumum angle at which a player must be facing something in order to use it. +wait 2400;sm_cvar z_use_belt_item_tolerance 0.0 // The minimum angle for which you must be facing a teammate in order to heal them. +wait 2400;sm_cvar survivor_helping_hand_inhibit_duration 0 // +// wait 2400;sm_cvar l4d2_usecount 2147483647 // How many guns can be picked up from the source. +wait 2400;sm_cvar decalfrequency 1.25 // How often players can spray an image. +wait 2400;sm_cvar tauntfrequency 0 // How often players can use a taunt voice line. +wait 2400;sm_cvar sv_player_max_separation_force 0 // Prevents players from pushing each other away when they are making contact. +wait 2400;sm_cvar z_gun_range 80 // Range of the survivors shove attack. +wait 2400;sm_cvar z_gun_damage 5 // Prevents gas cans from combusting when you shove them in Survival mode before the round starts. +wait 2400;sm_cvar z_gun_force 100 // How much force a shove applies on physics objects. +wait 2400;sm_cvar z_gun_physics_force 10 // How much force a shove applies on physics objects that arent doors or players. +wait 2400;sm_cvar z_gun_swing_interval 0.666667 // How often the survivors can use their shove attack. +wait 2400;sm_cvar z_gun_swing_duration 0.183333 // The duration of a survivors shove attack. +// wait 2400;sm_cvar survivor_shove_teammates 0 // Whether survivors should be able to pus their teammates around. +wait 2400;sm_cvar z_gun_survivor_friend_push 0 // Enables survivors being able to shove their teammates. +wait 2400;sm_cvar z_gun_survivor_shove_dot 1.0 // The max dot product for a survivor to be able to shove a teammate. +wait 2400;sm_cvar z_gun_survivor_force 100 // How much force survivors shove their teammates with. +wait 2400;sm_cvar z_shove_friend_speed 220 // Prevents survivors from slowing down when a teammate shoves them. +wait 2400;sm_cvar survivor_team_hit_pitch_min -5 // Max upward pitch applied to survivors who get shoved by their teammates. +wait 2400;sm_cvar survivor_team_hit_pitch_max 5 // Max downward pitch applied to survivors who get shoved by their teammates. +wait 2400;sm_cvar survivor_team_hit_yaw_min -5 // Max leftward yaw applied to survivors who get shoved by their teammates. +wait 2400;sm_cvar survivor_team_hit_yaw_max 5 // Max rightward yaw applied to survivors who get shoved by their teammates. +wait 2400;sm_cvar z_gun_swing_coop_min_penalty 2147483647 // Enables unlimited shoves in Coop mode. +wait 2400;sm_cvar z_gun_swing_coop_max_penalty 2147483647 // Enables unlimited shoves in Coop mode. +wait 2400;sm_cvar z_gun_swing_vs_min_penalty 2147483647 // How many shoves before a survivor gets penalized. +wait 2400;sm_cvar z_gun_swing_vs_max_penalty 2147483647 // How many shoves before a survivor gets the maximum penalty. +wait 2400;sm_cvar z_gun_swing_vs_amt_penalty 0.666667 // The penalty duration for shoving too many times in Versus mode. +wait 2400;sm_cvar z_gun_swing_vs_cooldown 0.666667 // How long it takes for the shove penalty to wear off in Versus mode. +wait 2400;sm_cvar z_gun_swing_vs_restore_time 0.666667 // How long it takes before a survivors shove is restored back to normal in Versus mode. +wait 2400;sm_cvar z_gun_stun_duration 1 // How long an infected will be stunned when shoved by a survivor. +wait 2400;sm_cvar z_max_stagger_duration 0.8 // The max amount of time that a survivor or infected can stagger for. +wait 2400;sm_cvar z_exploding_shove_min 3 // Minimum number of shoves that it takes to kill a boomer. +wait 2400;sm_cvar z_exploding_shove_max 3 // Maximum number of shoves that it takes to kill a boomer. +wait 2400;sm_cvar z_exploding_shove_interval 4 // How long it takes for the shove count on a boomer to expire. +wait 2400;sm_cvar punch_angle_decay_rate 15 // The rate at which a players screen will return to normal. +// // +wait 2550;sm_cvar survivor_speed 220 // Survivors running speed. +wait 2550;sm_cvar survivor_unstoppable_speed 180 // Survivors unstoppable speed. +wait 2550;sm_cvar survivor_crouch_speed 80 // Survivors crouching speed. +wait 2550;sm_cvar survivor_limp_walk_speed 100 // Survivors limp walking speed. +wait 2550;sm_cvar survivor_fumes_walk_speed 100 // Survivors limp walking speed while black and white. +// wait 2550;sm_cvar survivor_sprint_multiplier 1.5 // Survivor sprint multiplier. +wait 2550;sm_cvar survivor_damage_speed_factor 0.3 // Speed factor that is applied to survivors when they take damage. +wait 2550;sm_cvar survivor_crawl_speed 100 // How fast survivors are when crawling. +wait 2550;sm_cvar survivor_speed_boost_factor 1.25 // Survivor speed boost factor from an upgrade. +wait 2550;sm_cvar survivor_accuracy_upgrade_factor 0.75 // Accuracy factor for a survivor who is upgraded. +wait 2550;sm_cvar survivor_upgrade_reload_duration 0.75 // Reload duration factor for a survivor who is upgraded. +// // +wait 2700;sm_cvar z_round_start_attack_prevention 0 // Removes the delay that survivors are not able to use their weapons for. +wait 2700;sm_cvar z_round_start_replacement_time 60 // The amount of time after a round starts before kicked survivors are put back into the game. +// wait 2700;sm_cvar survivor_ff_avoidance 1 // Whether or not the survivor bots will try to avoid causing friendly fire. +// wait 2700;sm_cvar survivor_ff_avoidance_pitch 10 // The max pitch angle that survivor bots will aim to avoid causing friendly fire. +// wait 2700;sm_cvar survivor_ff_avoidance_yaw 10 // The max yaw angle that survivor bots will aim to avoid causing friendly fire. +// wait 2700;sm_cvar survivor_ff_tolerance 20 // How much tolerance the survivor bots will have for being friendly-fired. +// wait 2700;sm_cvar survivor_friendly_fire_factor_easy 0.0 // Friendly fire factor on easy difficulty. +wait 2700;sm_cvar survivor_friendly_fire_factor_normal 0.025 // Friendly fire factor on normal difficulty. +wait 2700;sm_cvar survivor_friendly_fire_factor_hard 0.2 // Friendly fire factor on advanced difficulty. +wait 2700;sm_cvar survivor_friendly_fire_factor_expert 0.3 // Friendly fire factor on expert difficulty. +wait 2700;sm_cvar survivor_burn_factor_easy 0.0 // Burn damage factor for survivors on easy difficulty. +wait 2700;sm_cvar survivor_burn_factor_normal 0.1 // Burn damage factor for survivors on normal difficulty. +wait 2700;sm_cvar survivor_burn_factor_hard 0.3 // Burn damage factor for survivors on advanced difficulty. +wait 2700;sm_cvar survivor_burn_factor_expert 0.5 // Burn damage factor for survivors on expert difficulty. +wait 2700;sm_cvar survivor_pounce_victim_eye_height 30 // Eye level of a survivor who is pounced by a hunter. +wait 2700;sm_cvar survivor_hanging_from_tongue_eye_height 60 // Eye level of a survivor who is being choked by a smoker. +wait 2700;sm_cvar survivor_knockdown_roll -15 // Screen tilt of a survivor who has been knocked down. +wait 2700;sm_cvar survivor_incapacitated_roll 15 // Screen tilt of a survivor who has been incapacitated. +wait 2700;sm_cvar survivor_incapacitated_eye_height 20 // Eye height from the ground for incapacitated survivors. +wait 2700;sm_cvar survivor_incapacitated_dizzy_severity 0.0 // The rate at which a survivors screen moves when incapacitated. +wait 2700;sm_cvar survivor_incapacitated_dizzy_timer 5 // How often a survivors screen changes the direction it moves in. +wait 2700;sm_cvar survivor_incapacitated_accuracy_penalty 0.0 // Accuracy penalty for survivors while they are incapacitated. +wait 2700;sm_cvar survivor_incapacitated_cycle_time 0.283333 // How frequently survivors can shoot a pistol while incapacitated. +wait 2700;sm_cvar survivor_incapacitated_reload_multiplier 1.0 // Removes the reload penalty for incapacitated survivors. +wait 2700;sm_cvar survivor_hanging_eye_height 100 // Eye level of a survivor who is hanging on a ledge. +wait 2700;sm_cvar survivor_ledge_grab_ground_check_time 1 // How long before a survivor who ledges over safe ground will be revived. +wait 2700;sm_cvar survivor_incap_hopeless_decay_rate 6 // The rate at which the survivors health will decay after all survivors become incapped. +wait 2700;sm_cvar survivor_revive_duration 4.75 // How long it takes for a survivor to revive an incapped teammate. +// // +wait 2850;sm_cvar ai_idle_talk_enabled 0 // Whether or not survivors should use voice lines in an IDLE state. +wait 2850;sm_cvar intensity_factor 1.0 // The rate at which certain events will increase a survivors intensity meter. +wait 2850;sm_cvar director_intensity_relax_threshold 1.0 // +wait 2850;sm_cvar director_intensity_threshold 1.0 // +wait 2850;sm_cvar director_relax_max_interval 20 // +wait 2850;sm_cvar director_relax_min_interval 10 // +// wait 2850;sm_cvar z_reload_chatter_recent_enemy 3 // +wait 2850;sm_cvar z_reload_chatter_intensity 0.1 // +wait 2850;sm_cvar z_reload_chatter_nearby_friend_range 1000 // +wait 2850;sm_cvar z_reload_chatter_shotgun_ammo_threshold 10 // +wait 2850;sm_cvar z_reload_chatter_shotgun_interval 5 // +wait 2850;sm_cvar z_vocalize_burn_max_interval 1 // +wait 2850;sm_cvar z_vocalize_burn_min_interval 0.5 // +// wait 2850;sm_cvar z_vocalize_shot_interval 0.5 // +wait 2850;sm_cvar shout_min_use_range 500 // +wait 2850;sm_cvar shout_min_warn_interval 1 // +wait 2850;sm_cvar shout_min_special_warn_interval 1 // +wait 2850;sm_cvar shout_threat_range 2000 // +wait 2850;sm_cvar shout_max_warn_range 3000 // +wait 2850;sm_cvar shout_going_to_die_interval 10 // +wait 2850;sm_cvar shout_make_way_interval 1 // +wait 2850;sm_cvar rescue_interval 1 // +wait 2850;sm_cvar rescue_distance 4000 // How far past a dead survivor will they be able to respawn in a closet. +wait 2850;sm_cvar rescue_min_dead_time 5 // The minimum amount of time before a dead survivor will be able to respawn in a closet. +wait 2850;sm_cvar rescue_yell_delay 2 // How long after being teleported to a respawn closet before dead survivors will begin to call for help. +wait 2850;sm_cvar rescue_yell_interval 10 // How often dead survivors in respawn closets will call for help. +wait 2850;sm_cvar z_survivor_respawn_health 40 // Survivors who are brought back to life will have a full 100 HP. +wait 2850;sm_cvar z_cough_cloud_expire 8 // How long until survivors stop coughing from a smoker cloud. +wait 2850;sm_cvar z_cough_cloud_radius 150 // The radius within a smoker cloud that will cause survivors to cough. +wait 2850;sm_cvar survivor_fog_vocalize_percent 1.0 // The percent of the fogs end distance that a survivor will vocalize their teammates. +// // +wait 3000;sm_cvar director_per_map_weapon_upgrade_chance 0.5 // The probability for the director to spawn a weapon upgrade on a map. +wait 3000;sm_cvar director_cs_weapon_spawn_chance 0.5 // The probability that a Counter Strike weapon will spawn at any given place. +wait 3000;sm_cvar director_ammo_density 4 // Ammo pile spawn density per 100 square yards. +wait 3000;sm_cvar director_pistol_density 4 // Pistol spawn density per 100 square yards. +// wait 3000;sm_cvar director_magnum_spawn_density -1 // Magnum spawn density per 100 square yards. +// wait 3000;sm_cvar director_configurable_weapon_spawn_density -1 // Weapon spawn density per 100 square yards. +wait 3000;sm_cvar director_super_weapon_density 4 // Super weapon spawn density per 100 square yards. +wait 3000;sm_cvar director_melee_weapon_density 4 // Melee weapon spawn density per 100 square yards. +wait 3000;sm_cvar director_molotov_density 4 // Molotov spawn density per 100 square yards. +wait 3000;sm_cvar director_pipe_bomb_density 4 // Pipe bomb spawn density per 100 square yards. +wait 3000;sm_cvar director_vomitjar_density 4 // Bile jar spawn density per 100 square yards. +wait 3000;sm_cvar director_upgradepack_density 4 // Upgrade pack spawn density per 100 square yards. +wait 3000;sm_cvar director_defibrillator_density 4 // Defibrillator spawn density per 100 square yards. +wait 3000;sm_cvar director_pain_pill_density 4 // Pain pill spawn density per 100 square yards. +wait 3000;sm_cvar director_adrenaline_density 4 // Adrenaline shot spawn density per 100 square yards. +wait 3000;sm_cvar director_gas_can_density 4 // Gas can spawn density per 100 square yards. +wait 3000;sm_cvar director_propane_tank_density 4 // Propane tank spawn density per 100 square yards. +wait 3000;sm_cvar director_oxygen_tank_density 4 // Oxygen tank spawn density per 100 square yards. +wait 3000;sm_cvar director_convert_pills 0 // Allows the director to convert pills into kits or defibs. +wait 3000;sm_cvar director_vs_convert_pills 0.0 // Disables pills from being converted into kits or defibs in versus mode. +wait 3000;sm_cvar director_convert_pills_critical_health 0 // The percent chance that pain pills will turn into a first aid kit. +wait 3000;sm_cvar director_convert_pills_to_defib_health 0 // The percent chance that pain pills will turn into a defib. +wait 3000;sm_cvar l4d2_MITSR_Enabled 0 // Whether or not melee weapons should spawn in the saferoom. +// // +wait 3150;sm_cvar ammo_minigun_max -2 // Max reserve ammo for the minigun. +wait 3150;sm_cvar ammo_turret_max -2 // Max reserve ammo for the turret. +wait 3150;sm_cvar ammo_chainsaw_max 30 // Max reserve ammo for the chainsaw. +wait 3150;sm_cvar ammo_firstaid_max 1 // Max number of first aid kits or defibrillators. +wait 3150;sm_cvar sv_tracereffects_limit_general 2147483647 // Limits the max number of tracer particles that can be rendered. +wait 3150;sm_cvar r_queued_decals 1 // Enables queued decal rendering. +wait 3150;sm_cvar r_decals 2147483647 // The max number of decals that can exist on the map at once. +// wait 3150;sm_cvar z_non_head_damage_factor_easy 2.0 // Removes the damage nerf to common infected in easy difficulty. +// wait 3150;sm_cvar z_non_head_damage_factor_normal 1.0 // Removes the damage nerf to common infected in normal difficulty. +wait 3150;sm_cvar z_non_head_damage_factor_hard 1.0 // Removes the damage nerf to common infected in advanced difficulty. +wait 3150;sm_cvar z_non_head_damage_factor_expert 1.0 // Removes the damage nerf to common infected in expert difficulty. +wait 3150;sm_cvar z_non_head_damage_factor_multiplier 1.0 // Removes the damage nerf to common infected in Realism mode. +wait 3150;sm_cvar l4d2_slowdown_gunfire_si 0 // Whether or not weapons should slow down special infected. +wait 3150;sm_cvar l4d2_slowdown_gunfire_tank 0 // Whether or not weapons should slow down tanks. +wait 3150;sm_cvar z_head_damage_causes_wounds 1 // Head damage to infected causes wound particles. +// // +// wait 3300;sm_cvar l4d2_usecount 2147483647 // Unlimits the number of times a survivor can use an individual weapon. +// wait 3300;sm_cvar l4d2_reload_speed_uzi 2.2 // Sets the regular SMG to reload at its default speed. +// wait 3300;sm_cvar l4d2_reload_speed_silenced_smg 2.2 // Sets the silenced SMG to reload at its default speed. +wait 3300;sm_cvar z_shotgun_bonus_damage_range 60 // The range at which the shotgun damage multiplier will be applied. +wait 3300;sm_cvar z_shotgun_bonus_damage_multiplier 10.0 // Shotgun damage multiplier on witch and common infected. +wait 3300;sm_cvar shotgun_reload_cancel_delay 0.0 // How long it takes for a shotgun to stop firing and begin reloading. +// wait 3300;sm_cvar grenadelauncher_startpos_forward 16 // Forward start position of a grenade launcher bullet. +// wait 3300;sm_cvar grenadelauncher_startpos_right 4 // Rightward start position of a grenade launcher bullet. +// wait 3300;sm_cvar grenadelauncher_startpos_up 0 // Upward start position of a grenade launcher bullet. +wait 3300;sm_cvar grenadelauncher_velocity 1250 // Velocity of a grenade launcher bullet. +wait 3300;sm_cvar grenadelauncher_vel_up 125 // Upward velocity of a grenade launcher bullet. +wait 3300;sm_cvar grenadelauncher_vel_variance 0 // Velocity variance of a grenade launcher bullet. +wait 3300;sm_cvar grenadelauncher_damage 750 // Grenade launcher damage per bullet. +wait 3300;sm_cvar grenadelauncher_radius_kill 300 // Infected within this radius of a grenade launcher blast will be killed. +wait 3300;sm_cvar grenadelauncher_radius_stumble 500 // Infected within this radius of a grenade launcher blast will be stumbled. +wait 3300;sm_cvar grenadelauncher_force_kill 0 // How much force from a grenade launcher is enough to kill infected. +wait 3300;sm_cvar grenadelauncher_ff_scale 0.05 // Grenade launcher friendly fire factor applied on teammates. +wait 3300;sm_cvar grenadelauncher_ff_scale_self 0.05 // Grenade launcher friendly fire factor applied on yourself. +// // +wait 3450;sm_cvar melee_range 90 // Sets the melee range to be equal to survivors shove range. +// wait 3450;sm_cvar melee_force_scalar 20 // Force scale of melee weapons applied on common infected ragdolls. +wait 3450;sm_cvar melee_force_scalar_combat_character 20 // Force scale of melee weapons applied on special infected ragdolls. +wait 3450;sm_cvar melee_collateral_shove_count 20 // A collateral melee swing will shove up to this many infected at once. +wait 3450;sm_cvar melee_combo_reset_time 0.975 // How long after a melee weapon is used to reset the swing combo. +wait 3450;sm_cvar l4d2_melee_drop_method 0 // Disables that stupid slot switch plugin. +wait 3450;sm_cvar chainsaw_attack_distance 80 // Damage range of a chainsaw. +// wait 3450;sm_cvar chainsaw_attack_cone 60 // Damage cone radius of a chainsaw. +wait 3450;sm_cvar chainsaw_hit_interval 0.05 // How frequently the chainsaw deals damage. +wait 3450;sm_cvar chainsaw_startup_fadeout_time 0.0 // How long it takes for the chainsaws startup animation to fade out. +wait 3450;sm_cvar chainsaw_attack_force 10000 // How much force a chainsaw does to the infected. +// // +wait 3450;sm_cvar z_minigun_spread 3.0 // Spread of the mounted machine guns. +wait 3450;sm_cvar z_minigun_spin_up_speed 20 // How fast the minigun barrel will spin when starting up. +wait 3450;sm_cvar z_minigun_firing_speed 20 // How fast the minigun barrel will spin while being fired. +wait 3450;sm_cvar z_minigun_spin_down_speed 10 // How fast the minigun barrel will spin when powering down. +wait 3450;sm_cvar z_minigun_rate_of_fire 1800 // The miniguns rate of fire in bullets per minute. +wait 3450;sm_cvar z_minigun_damage_rate 60000 // The miniguns damage rate in damage per minute. +wait 3450;sm_cvar z_minigun_fire_think_interval 0.0 // How often the minigun will update the direction it is firing in. +wait 3450;sm_cvar z_minigun_overheat_time 100 // How long the minigun takes to overheat. +wait 3450;sm_cvar z_minigun_cooldown_time 0.1 // How long it takes the minigun to cooldown. +wait 3450;sm_cvar z_minigun_fire_think_interval 0.1 // How often the minigun updates. +wait 3450;sm_cvar z_minigun_atomize 1 // Causes the minigun to atomize infected models. +wait 3450;sm_cvar z_minigun_stand_distance 40 // How far to put survivors when they stop using a mounted machine gun. +wait 3450;sm_cvar z_mounted_gun_fire_think_interval 0.008333 // How often the mounted machine gun will update the direction it is firing in. +wait 3450;sm_cvar mounted_gun_rate_of_fire 15 // The mounted machine guns rate of fire in bullets per second. +wait 3450;sm_cvar mounted_gun_overheat_time 100 // How long the mounted gun takes to overheat. +wait 3450;sm_cvar mounted_gun_overheat_penalty_time 0 // How long the mounted stays overheated for. +wait 3450;sm_cvar mounted_gun_cooldown_time 0.1 // How long it takes the mounted gun to cooldown. +wait 3450;sm_cvar mounted_gun_mount_cooldown_time 0.0 // How long it takes the mounted guns mount to cooldown. +// // +wait 3600;sm_cvar inferno_surface_offset 30 // Offset of inferno particles from the ground. +wait 3600;sm_cvar inferno_initial_spawn_interval 0.0 // How long inferno particles take to detonate. +wait 3600;sm_cvar inferno_forward_reduction_factor 1.0 // The rate at which inferno flames spread from the source point. +wait 3600;sm_cvar inferno_max_range 250 // Corrected max range of spread of inferno particles. +wait 3600;sm_cvar inferno_max_flames 50 // The max number of inferno flames that can spawn from a molotov or spit. +// wait 3600;sm_cvar inferno_child_spawn_max_depth 5 // Max amount of distance that inferno particles will spread below its origin point. +wait 3600;sm_cvar inferno_damage 50 // Amount of damage done by inferno particles. +wait 3600;sm_cvar inferno_friendly_fire_duration 15 // Credits friendly fire for the entire duration of a fire. +// wait 3600;sm_cvar inferno_scorch_decals 1 // Scorch decals will form on a surface where an inferno is ignited. +wait 3600;sm_cvar z_special_burn_dmg_scale 5 // Burn damage scale for special infected. +wait 3600;sm_cvar z_burning_lifetime 15 // How long it takes for ignited special infected to burn to death. +wait 3600;sm_cvar pipe_bomb_timer_duration 7.5 // Timer duration of a thrown pipe bomb. +// wait 3600;sm_cvar pipe_bomb_initial_beep_interval 0.5 // Initial beep interval of a pipe bomb when it is thrown. +wait 3600;sm_cvar pipe_bomb_beep_min_interval 0.075 // The fastest beep interval that a pipe bomb can achieve before exploding. +wait 3600;sm_cvar pipe_bomb_beep_interval_delta 0.02 // The rate at which the pipe bombs beep interval decreases. +// wait 3600;sm_cvar pipe_bomb_shake_radius 1000 // The distance from a pipe bomb that an explosion will shake players. +// wait 3600;sm_cvar pipe_bomb_shake_amplitude 100 // The magnitude of a pipe bomb explosions shake effect on players. +wait 3600;sm_cvar vomitjar_radius 300 // The damage radius of a bile jar. +wait 3600;sm_cvar vomitjar_duration_infected_bot 30 // How long the bile jar effect will last on bot infected. +wait 3600;sm_cvar vomitjar_duration_infected_pz 30 // How long the bile jar effect will last on player zombies. +// wait 3600;sm_cvar vomitjar_duration_survivor 15 // How long the bile jar effect will last on survivors. +wait 3600;sm_cvar z_attack_infected_it_damage 5 // Damage done by infected on other bot infected who are biled. +wait 3600;sm_cvar z_attack_pz_it_damage 100 // Damage done by infected on player zombies who are biled. +// // +wait 3750;sm_cvar ammo_pack_use_duration 1.5 // How long it takes to deploy an ammo pack. +wait 3750;sm_cvar upgrade_pack_use_duration 1.5 // How long it takes to deploy an ammo upgrade pack. +wait 3750;sm_cvar upgradepack_max_drop_dist 0 // The max drop distance of an ammo pack when being deployed. +wait 3750;sm_cvar upgradepack_forward_dist 16 // The forward distance of an ammo pack when being deployed. +wait 3750;sm_cvar incendiary_ammo_burn_time 6 // How long infected shot with incendiary rounds will be on fire for. +wait 3750;sm_cvar upgrade_explosive_bullet_force 10 // Force amplitude of an explosive bullet. +wait 3750;sm_cvar upgrade_explosive_slug_force 20 // Force amplitude of an explosive shotgun slug. +wait 3750;sm_cvar upgrade_laser_sight_spread_factor 0.5 // Spread factor applied to weapons with a laser sight equipped. +// // +wait 3750;sm_cvar l4d2_temphealthmedkits_enable 0 // Whether or not first aid kits should heal with temp HP. +wait 3750;sm_cvar first_aid_kit_max_heal 101 // Allows first aid kits to be used at 99 hp or less. +wait 3750;sm_cvar first_aid_kit_use_duration 4.75 // How long it takes to use a first aid kit. +wait 3750;sm_cvar defibrillator_use_duration 2 // How long it takes to use a defibrillator. +wait 3750;sm_cvar defibrillator_return_to_life_time 1 // How long it takes for a defibrillated player to stand up. +wait 3750;sm_cvar pain_pills_health_value 50 // How much temp health survivors receive from taking pain pills. +wait 3750;sm_cvar pain_pills_decay_rate 0.166667 // The rate in health per second that temporary health will decay at. +wait 3750;sm_cvar adrenaline_duration 20 // How long the speed effects of adrenaline last. +wait 3750;sm_cvar adrenaline_health_buffer 30 // The amount of temp health players receive from an adrenaline shot. +wait 3750;sm_cvar sv_healing_gnome_replenish_rate 2.0 // Health replenish rate of the gnome in the Healing Gnome mutation. +// // +wait 3900;sm_cvar player_throwforce 2250 // The force with which a player can throw an object. +wait 3900;sm_cvar gascan_throw_force 50 // The amount of force that a thrown gascan will apply on physics objects. +wait 3900;sm_cvar gascan_use_range 80 // The range at which you can start pouring a gas can. +wait 3900;sm_cvar gascan_use_tolerance 0.0 // The minimum angle for which you must be facing in order to pour a gas can. +wait 3900;sm_cvar gas_can_use_duration 1.9 // How long it takes to pour a gas can into the objective. +wait 3900;sm_cvar gascan_spit_time 2.75 // How long it takes for spitter spit to destroy a gas can. +wait 3900;sm_cvar scavenge_item_respawn_delay 12 // How long it takes for a Scavenge gas can to respawn after being destroyed. +wait 3900;sm_cvar cola_bottles_use_range 100 // The range at which you can begin placing the cola bottles. +wait 3900;sm_cvar cola_bottles_use_tolerance 0.0 // The minimum angle for which you must be facing in order to place the cola bottles. +wait 3900;sm_cvar cola_bottles_use_duration 1.75 // How long it takes to place the cola bottles. +wait 3900;sm_cvar action_progress_reset_interval 0.5 // How often a survivor pouring a gas can can be interrupted by infected damage. +// // +wait 3900;sm_cvar tick_door_speed 2.0 // Scale factor for how fast doors open and close. +wait 3900;sm_cvar z_door_reopen_interval 0.1 // The amount of time before a closed door can be reopened. +// wait 3900;sm_cvar z_door_retry_interval 1 // The amount of time a door will try to close on an object. +// wait 3900;sm_cvar sv_doors_push_players 1 // Allows doors to be able to push players. +wait 3900;sm_cvar sv_prop_door_max_close_attempts 10 // How many attempts a door will try to close on an object before opening back up. +wait 3900;sm_cvar z_breakable_damage 25 // How much damage the infected deal to breakable objects. +wait 3900;sm_cvar z_door_pound_damage 1000 // How much damage the infected do when clawing a door. +wait 3900;sm_cvar z_pounce_door_damage 1000 // How much damage a hunters pounce does to a door. +wait 3900;sm_cvar z_charge_prop_damage 1000 // How much damage a charge impact does to a physics object. +wait 3900;sm_cvar z_charger_max_prop_force 5000 // How much force is applied to physics objects from a charge impact. +wait 3900;sm_cvar ladder_horizon -0.4 // The angle at which players can climb up ladders. +wait 3900;sm_cvar z_min_ladder_mount_dot 0.6 // The minimum dot product required of a player to mount a ladder. +wait 3900;sm_cvar car_alarm_distance 1000 // How close a survivor must be to an alarm car for it to trigger. +wait 3900;sm_cvar car_alarm_chirp_distance 500 // An alarm car will will play a chirp when survivors are this close to it. +wait 3900;sm_cvar car_alarm_chirp_interval 1 // How often a car alarm chirps when a player is near it. +wait 3900;sm_cvar car_alarm_duration 20 // How long after a car whose alarm is triggered will make noise. +wait 3900;sm_cvar elevator_movedelay 0.0 // How long before an elevator starts moving once it has been activated. +wait 3900;sm_cvar hack_elevator_z_offset 0 // How far above an elevators surface will survivors be placed. +// // +wait 3900;sm_cvar fuel_barrel_health 10 // Health value of the explosive barrels. +// wait 3900;sm_cvar fuel_barrel_damage_amount 25 // How much damage a fuel barrel explosion does. +// wait 3900;sm_cvar fuel_barrel_screen_shake_radius 1000 // The radius around a fuel barrel explosion that shakes the player. +wait 3900;sm_cvar fuel_barrel_screen_shake_amplitude 50 // THe magnitude that a fuel barrel explosion will shake a player. +wait 3900;sm_cvar fire_dmgbase 1 // Base damage of map prop fire on survivors. +// wait 3900;sm_cvar fire_heatscale 0.1 // +// wait 3900;sm_cvar fire_absorbrate 100 // +wait 3900;sm_cvar fire_maxabsorb 100 // +// wait 3900;sm_cvar fire_extscale 100 // +wait 3900;sm_cvar func_break_max_pieces 30 // Max number of pieces from a broken object. +// wait 3900;sm_cvar func_break_reduction_factor 1.0 // Damage reduction factor for physics objects. +// wait 3900;sm_cvar func_breakdmg_bullet 10 // Damage factor for bullets on physics objects. +// wait 3900;sm_cvar func_breakdmg_club 30 // Damage factor for melee swings on physics objects. +// wait 3900;sm_cvar func_breakdmg_explosive 20 // Damage factor for explosions on physics objects. +wait 3900;sm_cvar props_break_max_pieces -1 // The maximum number of pieces that can break from a prop. +wait 3900;sm_cvar prop_active_gib_limit 30 // Max number of active gibs from props. +wait 3900;sm_cvar prop_active_gib_max_fade_time 10 // Max amount of time before prop gibs fade away. +// wait 3900;sm_cvar sv_vehicle_autoaim_scale 10 // Autoaim scale while driving a vehicle. +// // +wait 4050;sm_cvar nav_area_max_size 100 // Max size for a single nav area. +wait 4050;sm_cvar nav_max_auto_area_size 65536 // Max size for auto-generated nav areas. +// wait 4050;sm_cvar nav_max_view_distance 0 // Max range for auto-generated nav area visibility. +wait 4050;sm_cvar nav_max_vis_delta_list_length 50 // Max visibility delta range for auto-generated nav areas. +wait 4050;sm_cvar nav_flow_max_survivor_drop_height 250 // +wait 4050;sm_cvar nav_flow_max_survivor_climb_height 75 // +wait 4050;sm_cvar z_chance 100 // Infected spawn chance. +wait 4050;sm_cvar z_common_limit 40 // Limits the maximum number of common infected allowed on the map. +wait 4050;sm_cvar z_background_limit 40 // Limits the maximum number of common infected allowed in the background of the map. +wait 4050;sm_cvar z_attention_range_sitting_modifier 1.0 // Attention factor multiplier of zombies who are sitting down. +wait 4050;sm_cvar z_attention_range_lying_modifier 1.0 // Attention factor multiplier of zombies who are lying down. +// wait 4050;sm_cvar cleared_wanderer_respawn_chance 0 // Chance of respawning common infected cleared nav areas. +wait 4050;sm_cvar scavenge_wanderer_respawn_chance 100 // Always respawns common infected in cleared nav areas in Scavenge mode. +// wait 4050;sm_cvar z_wandering_density 0.03 // Population density of wandering zombies. +wait 4050;sm_cvar versus_wandering_zombie_density 0.03 // Population density of wandering zombies in Versus mode. +wait 0450;sm_cvar z_density_region_length 2000 // Size of the wandering zombie density region area. +wait 4050;sm_cvar director_always_allow_wanderers 1 // Always allow wandering common infected. +wait 4050;sm_cvar director_intensity_relax_allow_wanderers_threshold 1.0 // Wandering zombies will be allowed to spawn when all survivors are below this intensity level in easy and normal difficulty. +wait 4050;sm_cvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 // Wandering zombies will be allowed to spawn when all survivors are below this intensity level in advanced difficulty. +wait 4050;sm_cvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 // Wandering zombies will be allowed to spawn when all survivors are below this intensity level in expert difficulty. +wait 4050;sm_cvar nav_lying_down_percent 0 // Prevents wandering zombies from being spawned sitting or lying down. +wait 4050;sm_cvar z_must_wander 1 // Forces all zombies to be spawned as wanderers. +wait 4050;sm_cvar z_health 90 // Health of the common infected. +wait 4050;sm_cvar z_speed 260 // Base speed of common infected, hunter, and charger. +wait 4050;sm_cvar z_vision_range 1000 // How far the infected can see. +wait 4050;sm_cvar z_vision_range_daylight 2000 // How far the infected can see in daylight. +// wait 4050;sm_cvar z_vision_range_alert 2000 // How far the infected can see when alert. +// wait 4050;sm_cvar z_vision_range_obscured 1000 // How far the infected can see in obscured areas. +// wait 4050;sm_cvar z_vision_range_obscured_alert 1000 // How far the infected can see when alert in obscured areas. +wait 4050;sm_cvar z_acquire_far_range 2000 // How far away the infected can acquire a target. +// wait 4050;sm_cvar z_acquire_far_time 5 // How long it takes the infected can acquire a target. +wait 4050;sm_cvar z_acquire_near_range 100 // How far away the infected can acquire a target quickly. +// wait 4050;sm_cvar z_acquire_near_time 1 // How long it takes the infected can acquire a target quickly. +// wait 4050;sm_cvar z_acquire_time_variance_factor 0.0 // Time variance factor for infected aquiring a target. +// wait 4050;sm_cvar z_alert_range 1000 // The range at which common infected can be alerted by survivors. +// wait 4050;sm_cvar z_alert_dot 0.0 // Minimum view dot required for a survivor to alert a common infected. +wait 4050;sm_cvar z_force_attack_from_sound_range 500 // How far away the common infected can hear survivors. +wait 4050;sm_cvar z_notice_it_range 2000 // How far away common infected will notice a survivor who has been biled. +wait 4050;sm_cvar z_close_target_notice_distance 40 // Common infected will notice survivoors who are this close to them. +wait 4050;sm_cvar z_notice_near_range 40 // Common infected will notice survivoors who are this close to them. +wait 4050;sm_cvar z_attack_change_target_range 40 // Common infected will choose a new target if they are this close to them. +wait 4050;sm_cvar z_skirmish_spawn_min_interval 30 // +wait 4050;sm_cvar z_skirmish_spawn_max_interval 60 // +wait 4050;sm_cvar z_skirmish_spawn_max_size 10 // +wait 4050;sm_cvar z_brawl_chance 0 // Prevents the common infected from brawling one another at random. +// // +// wait 4200;sm_cvar z_mob_spawn_min_size 10 // The minimum number of common that spawn during a mob. +wait 4200;sm_cvar z_mob_spawn_max_size 40 // The maximum number of common that spawn during a mob. +wait 4200;sm_cvar z_mob_spawn_finale_size 40 // The number of common that spawn during a mob in a finale map. +wait 4200;sm_cvar z_mob_music_size 10 // A mob needs to be at least this large for music to play. +wait 4200;sm_cvar z_mob_spawn_min_interval_easy 60 // Minimum amount of time between mob spawns in easy difficulty. +wait 4200;sm_cvar z_mob_spawn_max_interval_easy 120 // Maximum amount of time between mob spawns in easy difficulty. +wait 4200;sm_cvar z_mob_spawn_min_interval_normal 60 // Minimum amount of time between mob spawns in normal difficulty. +wait 4200;sm_cvar z_mob_spawn_max_interval_normal 120 // Maximum amount of time between mob spawns in normal difficulty. +wait 4200;sm_cvar z_mob_spawn_min_interval_hard 60 // Minimum amount of time between mob spawns in advanced difficulty. +wait 4200;sm_cvar z_mob_spawn_max_interval_hard 120 // Maximum amount of time between mob spawns in advanced difficulty. +wait 4200;sm_cvar z_mob_spawn_min_interval_expert 60 // Minimum amount of time between mob spawns in expert difficulty. +wait 4200;sm_cvar z_mob_spawn_max_interval_expert 120 // Maximum amount of time between mob spawns in expert difficulty. +wait 4200;sm_cvar z_spawn_mobs_behind_chance 50 // The percent chance that a mob will spawn behind the survivor team. +wait 4200;sm_cvar z_scout_mob_spawn_range 2000 // Spawn range for scouting mobs. +wait 4200;sm_cvar z_mob_population_density 0.005 // Population density of mob spawns. +wait 4200;sm_cvar z_mega_mob_size 60 // The number of common infected to spawn when a panic event is triggered. +// wait 4200;sm_cvar z_mega_mob_spawn_min_interval 300 // Minimum amount of time allowed between natural mega mob spawns. +// wait 4200;sm_cvar z_mega_mob_spawn_max_interval 300 // Maximum amount of time allowed between natural mega mob spawns. +// wait 4200;sm_cvar director_panic_wave_pause_min 4 // Minimum amount of downtime during a panic event. +wait 4200;sm_cvar director_panic_wave_pause_max 5 // Maximum amount of downtime during a panic event. +// wait 4200;sm_cvar director_finale_stage_delay 4 // How long it takes for the next finale wave to start after one ends. +// wait 4200;sm_cvar z_mob_sacrifice_timeout 4 // How long until a mob will sacrifice itself. +// wait 4200;sm_cvar z_cull_timeout 4 // How long before out of range infected will be culled by the director. +wait 4200;sm_cvar sv_infected_police_tonfa_probability 0.25 // The probability that a riot zombie will drop a police baton. +wait 4200;sm_cvar sv_infected_riot_control_tonfa_probability 0.25 // The probability that a police zombie will drop a police baton. +wait 4200;sm_cvar sv_infected_ceda_vomitjar_probability 0.125 // The probability that a CEDA zombie will drop a bile jar. +wait 4200;sm_cvar sv_fallen_survivor_health_multiplier 1.0 // Health multiplier of the fallen survivor zombie. +wait 4200;sm_cvar z_fallen_kill_suppress_time 120 // Cooldown period after a fallen survivor zombie dies before which another one can be spawned. +// // +wait 4200;sm_cvar z_push_force 500 // How much force common infected push each other with. +wait 4200;sm_cvar z_push_mass_max 100 // Max amount of mass that a common infected can push away. +wait 4200;sm_cvar z_carry_mass_max 100 // Max amount of mass that a common infected can carry. +wait 4200;sm_cvar z_pushaway_force 0 // How much force common infected push each other away with. +wait 4200;sm_cvar z_avoid_power 20 // Factor by which common infected avoid each other. +wait 4200;sm_cvar z_avoidforce 0 // How much force is applied by common infected to each other when avoiding each other. +// wait 4200;sm_cvar z_max_neighbor_range 200 // Max range for calculating common infected avoidance. +// wait 4200;sm_cvar z_avoid_max_range 100 // The shortest distance that common infected can avoid each other at. +wait 4200;sm_cvar z_avoid_min_range 50 // The farthest distance that common infected can avoid each other at. +// wait 4200;sm_cvar z_run_exertion_interval 0.666667 // Sets infected pathing to update at the servers tick rate. +// wait 4200;sm_cvar z_attack_interval 0.666667 // Sets infected pathing to update at the servers tick rate. +wait 4200;sm_cvar claw_range 70 // Swing range of a special infecteds claw attack. +wait 4200;sm_cvar claw_range_down 80 // Downwards swing range of the special infecteds claw attack. +wait 4200;sm_cvar claw_swing_interval 0.966667 // How often a special infected can use their claw attack. +wait 4200;sm_cvar claw_swing_miss_interval 0.966667 // How long before a witch who misses a swing can swing again. +wait 4200;sm_cvar claw_swing_duration 0.183333 // The duration of a special infecteds claw attack. +wait 4200;sm_cvar claw_force 100 // The force with which a witch pushes infected out of her way. +wait 4200;sm_cvar z_attack_movement_penalty 0.7 // Speed factor of a special infected who claws a survivor. +wait 4200;sm_cvar z_max_survivor_damage 500 // The max amount of damage that an infected can do to a survivor. +wait 4200;sm_cvar z_attack_on_the_run_range 40 // How close a common infected has to be to a survivor to attempt clawing them. +wait 4200;sm_cvar z_attack_max_range 40 // Max range of a common infecteds claw attack. +wait 4200;sm_cvar z_attack_min_range 20 // Min range of a common infecteds claw attack. +wait 4200;sm_cvar z_hit_from_behind_cosine 1.0 // Considers the entire circumferance of a survivor as being their back. +wait 4200;sm_cvar z_hit_from_behind_factor 1.0 // The damage factor for common infected hits on survivors. +wait 4200;sm_cvar z_claw_hit_pitch_min -12.5 // Max upward pitch applied to survivors who are hit by a common infected. +wait 4200;sm_cvar z_claw_hit_pitch_max 12.5 // Max downward pitch applied to survivors who are hit by a common infected. +wait 4200;sm_cvar z_claw_hit_yaw_min -12.5 // Max leftward yaw applied to survivors who are hit by a common infected. +wait 4200;sm_cvar z_claw_hit_yaw_max 12.5 // Max rightward yaw applied to survivors who are hit by a common infected. +wait 4200;sm_cvar z_damage_screen_fade_alpha 32 // Screen alpha of the damage screen. +wait 4200;sm_cvar z_damage_screen_fade_duration 0.666667 // How long the damage screen takes to fade away. +wait 4200;sm_cvar z_attack_incapacitated_damage 3 // How much damage common infected do to incappacitated survivors. +// wait 4200;sm_cvar z_hit_incap_factor_easy 1.0 // Damage factor of common infected when hitting an incapped survivor in easy difficulty. +// wait 4200;sm_cvar z_hit_incap_factor_normal 1.0 // Damage factor of common infected when hitting an incapped survivor in normal difficulty. +// wait 4200;sm_cvar z_hit_incap_factor_hard 1.0 // Damage factor of common infected when hitting an incapped survivor in advanced difficulty. +wait 4200;sm_cvar z_hit_incap_factor_expert 2.0 // Damage factor of common infected when hitting an incapped survivor in expert difficulty. +wait 4200;sm_cvar z_throttle_hit_interval_easy 0.25 // How often a survivor can take damage from a common infected in easy difficulty. +wait 4200;sm_cvar z_throttle_hit_interval_normal 0.25 // How often a survivor can take damage from a common infected in normal difficulty. +wait 4200;sm_cvar z_throttle_hit_interval_hard 0.25 // How often a survivor can take damage from a common infected in advanced difficulty. +wait 4200;sm_cvar z_throttle_hit_interval_expert 0.5 // How often a survivor can take damage from a common infected in expert difficulty. +wait 4200;sm_cvar common_dps_window 0 // The time window for which common infected DPS is recorded. +// // +wait 4350;sm_cvar director_special_initial_spawn_delay_min 0 // Minimum amount of time to start spawning special infected after the survivors have left the saferoom. +wait 4350;sm_cvar director_special_initial_spawn_delay_max 10 // Maximum amount of time to start spawning special infected after the survivors have left the saferoom. +wait 4350;sm_cvar director_special_initial_spawn_delay_max_extra 10 // Maximum amount of extra time to start spawning special infected after the survivors have left the saferoom. +// wait 4350;sm_cvar z_director_special_spawn_delay 10 // The initial delay at the beginning of a round before the first wave of specials spawns. +wait 4350;sm_cvar director_special_respawn_interval 10 // Respawn interval for bot special infected. +wait 4350;sm_cvar z_special_spawn_interval 10 // Respawn interval for bot special infected. +wait 4350;sm_cvar z_ghost_spawn_interval 10 // Respawn interval for ghost special infected. +wait 4350;sm_cvar z_ghost_checkpoint_spawn_interval 10 // Respawn interval for ghost special infected during a map checkpoint. +wait 4350;sm_cvar versus_special_respawn_interval 10 // Respawn interval for bot special infected in Versus mode. +wait 4350;sm_cvar z_ghost_finale_spawn_interval 10 // Respawn interval for ghost special infected in a finale map. +wait 4350;sm_cvar z_ghost_delay_max 18 // Maximum amount of time for a dead player zombie to become a ghost again. +wait 4350;sm_cvar z_ghost_delay_max 18 // Minimum amount of time for a dead player zombie to become a ghost again. +wait 4350;sm_cvar z_ghost_delay_minspawn 1 // Delay before a dead player zombie becomes a ghost at the end of the countdown. +wait 4350;sm_cvar z_spawn_safety_range 150 // How close to survivors the special infected are allowed to spawn. +wait 4350;sm_cvar z_cooldown_spawn_safety_range 150 // How close to survivors the special infected are allowed to spawn during a cooldown period. +wait 4350;sm_cvar z_finale_spawn_safety_range 150 // How close to survivors the special infected are allowed to spawn in finale maps. +wait 4350;sm_cvar z_finale_spawn_mob_safety_range 300 // How close to survivors mobs are allowed to spawn in finale maps. +wait 4350;sm_cvar z_finale_spawn_tank_safety_range 300 // How close to survivors tanks are allowed to spawn in finale maps. +wait 4350;sm_cvar z_safe_spawn_range 0 // How close player zombies can spawn to survivors. +wait 4350;sm_cvar z_fog_spawn 1 // Enables special infected to spawn in fogged off areas. +wait 4350;sm_cvar nav_obscure_range 300 // Special infected must be at least this far from survivors to spawn in obscured nav areas. +wait 4350;sm_cvar ghost_hurt_type 1 // Allows ghosts to die when coming into contact with map death triggers. +wait 4350;sm_cvar z_respawn_interval 0 // How long before special infected can attempt to respawn. +wait 4350;sm_cvar z_respawn_distance 0 // How far from their original spawn point can special infected attempt to respawn. +wait 4350;sm_cvar z_discard_range 2000 // How far a player zombie has to be from the survivors to become a ghost. +wait 4350;sm_cvar z_discard_min_range 0 // The minimum distance a player zombie has to be from the survivors to become a ghost. +wait 4350;sm_cvar z_walk_speed 120 // Speed of player zombies when sneaking. +wait 4350;sm_cvar z_crouch_speed 90 // Speed of player zombies when crouching. +// // +// wait 4500;sm_cvar z_hunter_speed 260 // Base speed of the hunter. +wait 4500;sm_cvar z_hunter_ground_normal 0.1 // Ground normal factor for crouching hunters. +wait 4500;sm_cvar hunter_pounce_ready_range 800 // The range at which a hunter will pounce a survivor at. +wait 4500;sm_cvar hunter_committed_attack_range 600 // The range at which a hunter will pounce a survivor at. +wait 4500;sm_cvar hunter_leap_away_give_up_range 3000 // The range at which a hunter will give up on trying to pounce at a survivor. +wait 4500;sm_cvar z_pounce_silence_range 400 // Survivors wont be able to hear hunters pouncing further from this distance away. +wait 4500;sm_cvar z_pounce_crouch_delay 0.9 // How long it takes for a hunter to charge his lunge meter once he begins crouching. +wait 4500;sm_cvar z_hunter_lunge_pitch 30 // The angle that a bot hunter will lunge at when trying to pounce. +wait 4500;sm_cvar z_hunter_lunge_distance 800 // How far a bot hunter will travel when he lunges at someone. +wait 4500;sm_cvar z_lunge_up 150 // Upwards velocity factor of bot hunters when they lunge. +wait 4500;sm_cvar z_player_lunge_up 100 // Upwards velocity factor of player hunters when they lunge. +wait 4500;sm_cvar hunter_pounce_loft_rate 0.03 // A hunters vertical loft rate when lunging. +// wait 4500;sm_cvar hunter_pounce_max_loft_angle 45 // Max loft angle for a hunter lunge. +wait 4500;sm_cvar hunter_pounce_air_speed 750 // How fast a lunging hunter will travel through the air. +wait 4500;sm_cvar z_lunge_power 625 // The force with which a hunter will leap towards its target. +wait 4500;sm_cvar z_lunge_interval 0.0 // How often a hunter can use his lunge ability. +wait 4500;sm_cvar z_lunge_cooldown 0.0 // Cooldown period for the hunters lunge ability. +wait 4500;sm_cvar z_pounce_damage_interrupt 1000 // How much damage a hunter must take for him to leap away. +wait 4500;sm_cvar z_player_zombie_land_delay 0.0 // Delay before a pouncing player hunter attach to a survivor. +wait 4500;sm_cvar z_pounce_damage_delay 0.0 // Delay before a hunters pounce starts doing damage. +wait 4500;sm_cvar z_hunter_lunge_stagger_time 0.5 // How long a hunter will stagger for when he is dead stopped while lunging. +// wait 4500;sm_cvar z_max_hunter_pounce_stagger_duration 0.5 // Duration that a hunter will stagger for when dead stopped. +wait 4500;sm_cvar z_pounce_shake_radius 300 // +wait 4500;sm_cvar z_pounce_shake_amplitude 6 // +wait 4500;sm_cvar z_pounce_shake_duration 2 // +wait 4500;sm_cvar z_pounce_stumble_radius 175 // The radius around a hunter who pounces on a survivor that other survivors will be stumbled. +wait 4500;sm_cvar z_pounce_stumble_force 6 // The magnitude of force with which the hunters pounce will stumble survivors. +wait 4500;sm_cvar hunter_pz_claw_dmg 8 // Damage done by a player hunters claw attack. +// // +wait 4650;sm_cvar z_gas_speed 220 // Base speed of the smoker. +wait 4650;sm_cvar tongue_health 250 // Health of the smokers tongue. +wait 4650;sm_cvar tongue_range 900 // How far away a smoker can pull a survivor from. +// wait 4650;sm_cvar tongue_cone_start_tolerance 0.1 // The minimum view tolerance to a survivor required for a bot smoker to shoot their tongue. +wait 4650;sm_cvar tongue_vs_cone_start_tolerance 0.0125 // The cone tolerance required for a player smoker to smoke a survivor. +wait 4650;sm_cvar smoker_tongue_delay 0.0 // How long a bot smoker will wait before they shoot their tongue at a survivor. +wait 4650;sm_cvar tongue_miss_delay 2.75 // How long before a smoker who misses his tongue can try again. +wait 4650;sm_cvar tongue_hit_delay 11 // How long before a smoker whose tongue hits a survivor can try again. +wait 4650;sm_cvar tongue_fly_speed 1100 // How fast the smokers tongue will fly towards its target. +wait 4650;sm_cvar tongue_los_forgiveness_time 2 // How long a survivor can be out of sight from a smoker but still get pulled from its tongue. +wait 4650;sm_cvar tongue_dropping_to_ground_time 0.5 // How much time a bot smoker needs to wait before pulling his tongue back. +wait 4650;sm_cvar tongue_player_dropping_to_ground_time 0.5 // How much time a player smoker needs to wait before pulling his tongue back. +wait 4650;sm_cvar tongue_start_pull_delay 0.0 // Delay period before a smoked survivor starts being pulled towards the smoker. +wait 4650;sm_cvar tongue_vertical_choke_dot 0.0 // +wait 4650;sm_cvar tongue_vertical_choke_height 50 // +wait 4650;sm_cvar tongue_vertical_choke_time_off_ground 0.35 // +wait 4650;sm_cvar tongue_no_progress_choke_early_delay 0.5 // +wait 4650;sm_cvar tongue_no_progress_tolerance 20 // +wait 4650;sm_cvar tongue_no_progress_choke_time 0.25 // +wait 4650;sm_cvar tongue_no_progress_damage_interval 0.25 // +wait 4650;sm_cvar tongue_victim_acceleration 10 // Acceleration rate of a survivor being pulled by a smoker tongue. +wait 4650;sm_cvar tongue_victim_max_speed 200 // Max speed reached by a survivor that is being pulled by a tongue. +wait 4650;sm_cvar tongue_gravity_force 5000 // The force of gravity applied to survivors who are being pulled by a tongue. +wait 4650;sm_cvar tongue_victim_accuracy_penalty 0.0 // Accuracy penalty applied to a survivor being pulled by tongued. +wait 4650;sm_cvar tongue_drag_damage_amount 4 // How much damage a smoker does to a survivor while pulling them. +wait 4650;sm_cvar tongue_choke_damage_amount 6 // How much damage a smoker does to a survivor while choking them. +wait 4650;sm_cvar survivor_incap_tongued_decay_rate 20 // How much damage per second a smoker does when choking an incapacitated survivor. +wait 4650;sm_cvar tongue_break_from_damage_amount 1000 // How much damage a smoker must take for his tongue to break. +wait 4650;sm_cvar tongue_bullet_radius 8 // The width of the smoker tongues hitbox. +wait 4650;sm_cvar tongue_release_fatigue_penalty 2750 // The fatigue penalty given to survivors who are released from a smokers tongue. +wait 4650;sm_cvar smoker_escape_range 3000 // How far away from the survivors a bot smoker will try to flee. +wait 4650;sm_cvar smoker_pz_claw_dmg 6 // Damage done by a player smokers claw attack. +// // +wait 4800;sm_cvar z_exploding_speed 200 // Base speed of the boomer. +// wait 4800;sm_cvar z_vomit_range 300 // How close a bot boomer will get to a survivor before they start vomiting on them. +wait 4800;sm_cvar z_puking_eye_height 50 // The height where boomer vomit originates from. +wait 4800;sm_cvar boomer_vomit_delay 0.0 // How long a bot boomer will wait before they vomit on a survivor. +wait 4800;sm_cvar z_vomit_duration 1.25 // How long a boomer vomits for. +wait 4800;sm_cvar z_vomit_fatigue 2001 // Causes a boomer to be unable to move while they are vomiting. +wait 4800;sm_cvar z_vomit_drag 1.0 // Air resistance applied to bot boomer vomit damage particles. +wait 4800;sm_cvar z_vomit_float -100 // Upwards vomit damage particle float factor. +wait 4800;sm_cvar z_vomit_boxsize 2.0 // Hitbox size of bot boomer vomit damage particles. +wait 4800;sm_cvar z_vomit_velocity 2000 // Velocity of boomer vomit particles. +wait 4800;sm_cvar z_vomit_lifetime 0.2 // How long before boomer vomit particles despawn. +wait 4800;sm_cvar z_vomit_maxdamagedist 400 // Maximum range that a bot boomers vomit damage particles can travel. +wait 4800;sm_cvar z_vomit_hit_pitch_min -10 // Max upward pitch applied to survivors who are being vomited on by a boomer. +wait 4800;sm_cvar z_vomit_hit_pitch_max 10 // Max downward pitch applied to survivors who are being vomited on by a boomer. +// wait 4800;sm_cvar z_vomit_hit_yaw_min -10 // Max rightward yaw applied to survivors who are being vomited on by a boomer. +// wait 4800;sm_cvar z_vomit_hit_yaw_max 10 // Max leftward yaw applied to survivors who are being vomited on by a boomer. +wait 4800;sm_cvar z_vomit_fade_start 6 // +wait 4800;sm_cvar z_vomit_fade_duration 6 // +wait 4800;sm_cvar z_vomit_velocityfadestart 0.25 // +// wait 4800;sm_cvar z_vomit_velocityfadeend 0.5 // +// wait 4800;sm_cvar z_vomit_slide_mult 0.5 // +// wait 4800;sm_cvar z_vomit_slide_rate 0.1 // +wait 4800;sm_cvar survivor_it_duration 18 // The duration that vomit lasts on a survivor. +wait 4800;sm_cvar z_vomit_interval 18 // Cooldown of the boomers vomit ability. +wait 4800;sm_cvar z_exploding_inner_radius 200 // The inner radius of a killed boomers explosion. +wait 4800;sm_cvar z_exploding_outer_radius 225 // The outer radius of a killed boomers explosion. +wait 4800;sm_cvar z_exploding_force 2000 // How much force a boomer explosion applies to physics objects. +wait 4800;sm_cvar z_exploding_splat 0 // Disables boomers from exploding after taking too much fall damage. +// wait 4800;sm_cvar z_splat_survivor_shake_radius 300 // +// wait 4800;sm_cvar z_splat_survivor_shake_amplitude 100 // +// wait 4800;sm_cvar z_splat_survivor_shake_frequency 200 // +// wait 4800;sm_cvar z_splat_survivor_shake_duration 2 // +// wait 4800;sm_cvar z_splat_survivor_pitch_min -15 // +// wait 4800;sm_cvar z_splat_survivor_pitch_max 15 // +// wait 4800;sm_cvar z_splat_survivor_yaw_min -15 // +// wait 4800;sm_cvar z_splat_survivor_yaw_max 15 // +wait 4800;sm_cvar z_boomer_near_dist 3000 // A boomer who is this close to the survivors will try to attack them instead of fleeing. +wait 4800;sm_cvar boomer_exposed_time_tolerance 30 // Forces the boomer to attack the survivors after vomiting rather than running away. +wait 4800;sm_cvar boomer_pz_claw_dmg 6 // Damage done by a player boomers claw attack. +// // +// wait 4950;sm_cvar z_charge_warmup 0.5 // How long until a charging charger reaches its max speed. +// wait 4950;sm_cvar z_charge_start_speed 300 // The initial speed of a charging charger. +// wait 4950;sm_cvar z_charge_duration 2.5 // How long a charger charges for. +wait 4950;sm_cvar z_charger_probe_alone 20 // Object impact radius of a charger without a survivor. +wait 4950;sm_cvar z_charger_probe_attack 20 // Object impact radius of a charger with a survivor. +wait 4950;sm_cvar z_charger_impact_epsilon 0 // Charger object impact radius epsilon. +wait 4950;sm_cvar z_charge_min_force 600 // Minimum force of a charge impact on a survivor. +wait 4950;sm_cvar z_charge_impact_angle 0.4 // Minimum angle for a charger to impact a wall. +wait 4950;sm_cvar z_charge_impact_radius 150 // The radius around a charger when he impacts a wall that survivors will be stumbled. +wait 4950;sm_cvar charger_dmg_incapped 20 // How much damage per slam a charger deals to incapacitated survivors. +wait 4950;sm_cvar melee_damage_charger 400 // Sets melee weapons to do their default damages to chargers. +// // +wait 5100;sm_cvar z_jockey_health 350 // Base health of the jockey. +wait 5100;sm_cvar z_jockey_speed 280 // Base speed of the jockey. +wait 5100;sm_cvar z_jockey_leap_range 250 // From how far away a jockey will try to leap at survivors. +wait 5100;sm_cvar z_leap_max_distance 250 // Max distance of a jockey leap. +wait 5100;sm_cvar jockey_pounce_loft_rate 0.03 // A jockeys vertical loft rate when leaping. +wait 5100;sm_cvar jockey_pounce_max_loft_angle 60 // Max loft angle for a jockey leap. +wait 5100;sm_cvar jockey_pounce_air_speed 750 // How fast a leaping jockey will travel through the air. +wait 5100;sm_cvar z_leap_power 450 // The force with which a jockey will leap towards its target. +wait 5100;sm_cvar z_leap_force_attach_distance 60 // The distance at which a jockey will force attach to a survivor. +wait 5100;sm_cvar z_leap_far_attach_delay 0.0 // The delay before a jockey latches onto a survivor when leaping at them from far away. +wait 5100;sm_cvar z_jockey_leap_time 0.9 // How long before a bot jockey can leap again at a survivor. +wait 5100;sm_cvar z_leap_interval 0.45 // The cooldown period before a jockey can leap again. +// wait 5100;sm_cvar z_jockey_control_min 0.8 // Minimum amount of control that a survivor has when being ridden by a jockey. +wait 5100;sm_cvar z_jockey_control_max 1.0 // Maximum amount of control that a survivor has when being ridden by a jockey. +wait 5100;sm_cvar z_jockey_control_variance 0.0 // Removes the control variation that occurs while a jockey is riding someone. +wait 5100;sm_cvar z_jockey_ride_damage_delay 0.0 // Delay before a jockeys ride starts doing damage. +wait 5100;sm_cvar z_jockey_ride_damage 3 // How much damage a jockey does while riding a survivor. +wait 5100;sm_cvar z_leap_interval_post_ride 5.75 // Cooldown of the jockeys leap after being shoved off of a survivor. +wait 5100;sm_cvar z_leap_interval_post_incap 15 // Cooldown of the jockeys leap after incapping a survivor. +// wait 5100;sm_cvar jockey_pz_claw_dmg 4 // Damage done by a player jockeys claw attack. +// // +wait 5250;sm_cvar z_spitter_speed 240 // Base speed of the spitter. +wait 5250;sm_cvar z_spit_range 950 // The distance that spitter spit can travel. +wait 5250;sm_cvar z_spit_velocity 925 // The speed which spitter spit travels at when spat. +wait 5250;sm_cvar z_spitter_range 900 // How close to survivors bot spitters must get before they can spit on them. +wait 5250;sm_cvar z_spit_latency 0.283333 // The delay period for spit to spawna after a spitter has spat. +wait 5250;sm_cvar z_spit_detonate_delay 0.0 // Initial spawn angle of spitter spit particles. +wait 5250;sm_cvar z_spit_spread_delay 0.0 // How long it takes before spitter spit will spread into a new patch. +wait 5250;sm_cvar inferno_acid_spawn_angle 45 // Causes spitter acid to spawn in a circular puddle when it detonates. +wait 5250;sm_cvar z_spit_interval 15 // Cooldown of the spitters spit ability. +wait 5250;sm_cvar z_spitter_max_wait_time 30 // Max time that a spitter can wait after spitting. +// wait 5250;sm_cvar spitter_pz_claw_dmg 4 // Damage done by a player spitters claw attack. +// // +// wait 5400;sm_cvar director_tank_min_interval 300 // +// wait 5400;sm_cvar director_tank_max_interval 300 // +// wait 5400;sm_cvar director_tank_lottery_selection_time 4 // The delay period before a player becomes a tank when selected. +wait 5400;sm_cvar versus_tank_chance 1.0 // Forces tanks to spawn in versus mode. +wait 5400;sm_cvar versus_tank_chance_intro 1.0 // Forces tanks to spawn in intro maps in versus mode. +wait 5400;sm_cvar versus_tank_chance_finale 1.0 // Forces tanks to spawn in finale maps in versus mode. +wait 5400;sm_cvar versus_tank_flow_team_variation 0.0 // Forces tanks to spawn in the same place for both teams. +wait 5400;sm_cvar versus_witch_chance 0.0 // Forces witches to spawn in versus mode. +wait 5400;sm_cvar versus_witch_chance_intro 0.0 // Forces witches to spawn in intro maps in versus mode. +wait 5400;sm_cvar versus_witch_chance_finale 0.0 // Forces witches to spawn in finale maps in versus mode. +wait 5400;sm_cvar versus_witch_flow_team_variation 0.0 // Forces witches to spawn in the same place for both teams. +wait 5400;sm_cvar versus_boss_flow_min 0.10 // Minimum boss spawn flow in Versus mode. +wait 5400;sm_cvar versus_boss_flow_max 0.70 // Maximum boss spawn flow in Versus mode. +wait 5400;sm_cvar versus_boss_flow_min_intro 0.20 // Minimum boss spawn flow in intro maps Versus mode. +wait 5400;sm_cvar versus_boss_flow_max_intro 0.80 // Maximum boss spawn flow in intro maps Versus mode. +wait 5400;sm_cvar versus_boss_flow_min_finale 0.30 // Minimum boss spawn flow in finale maps Versus mode. +wait 5400;sm_cvar versus_boss_flow_max_finale 0.90 // Maximum boss spawn flow in finale maps Versus mode. +wait 5400;sm_cvar versus_boss_padding_min 0.0 // Minimum amount of seperation between boss spawns. +wait 5400;sm_cvar versus_boss_padding_max 0.0 // Maximum amount of seperation between boss spawns. +wait 5400;sm_cvar director_threat_min_separation 4000 // Fixes boss spawning. +wait 5400;sm_cvar director_threat_max_separation 4000 // Fixes boss spawning. +wait 5400;sm_cvar director_threat_radius 500 // Fixes boss spawning. +wait 5400;sm_cvar director_threat_clear_radius 200 // Fixes boss spawning. +wait 5400;sm_cvar vs_threat_initial_distance_min 2000 // Fixes boss spawning. +// wait 5400;sm_cvar vs_threat_initial_distance_max 8000 // Fixes boss spawning. +wait 5400;sm_cvar vs_threat_initial_distance_first_map_min 4000 // Fixes boss spawning. +wait 5400;sm_cvar vs_threat_initial_distance_first_map_max 10000 // Fixes boss spawning. +// wait 5400;sm_cvar vs_threat_radius 200 // Fixes boss spawning. +wait 5400;sm_cvar versus_boss_buffer 1500 // Fixes boss spawning. +wait 5400;sm_cvar director_max_threat_areas 5 // The max number of bosses that can spawn in a single chapter. +wait 5400;sm_cvar tank_stuck_time_choose_new_target 1 // How much time before a bot tank will try to find a new target who is closer to them. +wait 5400;sm_cvar tank_stuck_visibility_tolerance_choose_new_target 1 // How much time before a bot tank will try to find a new target when their old target is no longer visible. +wait 5400;sm_cvar tank_stuck_visibility_tolerance_suicide 86400 // How much time before a bot tank is killed by not having visibility of survivors. +wait 5400;sm_cvar tank_visibility_tolerance_suicide 86400 // How much time before a bot tank is killed by not having visibility of survivors. +wait 5400;sm_cvar tank_stasis_time_suicide 86400 // How much time before a stuck bot tank is killed when in stasis mode. +wait 5400;sm_cvar tank_stuck_time_suicide 86400 // How much time before a stuck bot tank is killed when stuck. +// // +wait 5550;sm_cvar z_witch_health 2500 // Base health of the witch. +wait 5550;sm_cvar z_witch_speed_inured 300 // Base speed of the witch while inured. +// wait 5550;sm_cvar z_witch_anger_rate 0.2 // The rate at which a witch will become angry. +wait 5550;sm_cvar z_witch_relax_rate 0.2 // The rate at which a witch will calm down. +wait 5550;sm_cvar z_witch_threat_hostile_range 800 // The range at which gunfire will agitate the witch. +wait 5550;sm_cvar z_witch_threat_normal_range 600 // The range at which movement will agitate the witch. +wait 5550;sm_cvar z_witch_flashlight_range 600 // The range at which flashlights will agitate the witch. +wait 5550;sm_cvar z_witch_personal_space 200 // Being this close to a sitting witch will force her to become angry. +wait 5550;sm_cvar z_witch_min_threat_time 3 // Minimum amount of time that a witch can be agitated before chasing a survivor. +wait 5550;sm_cvar z_witch_max_threat_time 3 // Maximum amount of time that a witch can be agitated before chasing a survivor. +wait 5550;sm_cvar witch_rage_ramp_duration 3 // +wait 5550;sm_cvar z_witch_wander_personal_space 300 // Being this close to a wandering witch will force her to become angry. +wait 5550;sm_cvar z_witch_wander_personal_time 3 // A witch will chase a survivor who is too close to her for this long. +wait 5550;sm_cvar z_witch_wander_hear_radius 400 // The range at which a wandering witch can hear survivors. +wait 5550;sm_cvar z_witch_berserk_range 400 // The range at which the witch will go berserk on a survivor. +wait 5550;sm_cvar z_witch_tongue_range 0 // How close will a witch snap a smokers tongue. +// wait 5550;sm_cvar z_witch_attack_range 60 // Attack range of the witch claw. +wait 5550;sm_cvar z_witch_damage_per_kill_hit 25 // How much damage the witch does to survivors who are incapacitated. +// wait 5550;sm_cvar z_witch_always_kills 0 // Forces the witch to kill survivors instantly upon clawing them. +wait 5550;sm_cvar z_witch_min_retreat_range 0 // A witch will try to retreat at least this far away. +wait 5550;sm_cvar z_witch_max_retreat_range 0 // A witch will try to retreat up to this far away. +wait 5550;sm_cvar z_witch_retreat_min_duration 0 // A witch can retreat for this long before she is despawned. +wait 5550;sm_cvar z_witch_retreat_exit_range 0 // A witch will attempt to exit this range from the survivors. +wait 5550;sm_cvar z_witch_retreat_exit_hidden_duration 0 // A witch will exit after this amount of time when outside of exit range. +wait 5550;sm_cvar z_witch_discard_range 0 // A retreating witch outside of this range will be forcefully despawned. +wait 5550;sm_cvar z_witch_wander_music_min_dist 2147483647 // The minimum distance away a player can hear the wandering witches music. +wait 5550;sm_cvar z_witch_wander_music_max_dist 2147483647 // The maximum distance away a player can hear the wandering witches music. +// // +wait 5700;sm_cvar z_frustration_spawn_delay 20 // Delay after a player becomes a tank until his rage bar can start counting down. +wait 5700;sm_cvar z_frustration_los_delay 0.5 // Line of sight calculations will be delayed by this amount of time. +wait 5700;sm_cvar z_tank_health 5000 // Health of the tank in normal difficulty. +wait 5700;sm_cvar z_tank_incapacitated_health 2500 // Health of an incapacitated tank. +wait 5700;sm_cvar z_tank_speed 200 // Base speed of the tank. +wait 5700;sm_cvar z_tank_speed_vs 220 // Base speed of the tank in Versus mode. +wait 5700;sm_cvar z_tank_walk_speed 120 // How fast a tank moves when sneaking. +wait 5700;sm_cvar z_tank_footstep_shake_radius 1000 // +// wait 5700;sm_cvar z_tank_footstep_shake_amplitude 5 // +wait 5700;sm_cvar z_tank_footstep_shake_interval 0.1 // +wait 5700;sm_cvar z_tank_footstep_shake_duration 2 // +wait 5700;sm_cvar tank_ground_pound_reveal_distance 800 // +wait 5700;sm_cvar tank_ground_pound_duration 2 // +wait 5700;sm_cvar z_tank_damage_slow_max_range 32 // The maximum range that a tank will be slowed down from gunfire. +wait 5700;sm_cvar z_tank_damage_slow_min_range 32 // The minimum range that a tank will be slowed down from gunfire. +wait 5700;sm_cvar z_tank_autoshotgun_dmg_scale 0.8 // Removes the damage nerf that gets put onto auto shotguns against tanks. +wait 5700;sm_cvar z_tank_grenade_damage 1000 // How much damage grenades do to tanks. +wait 5700;sm_cvar z_tank_grenade_launcher_dmg_scale 2.0 // Damage multiplier of the grenade launcher on tanks. +// wait 5700;sm_cvar z_tank_grenade_roll -15 // Player tank view roll when hit by a grenade. +// wait 5700;sm_cvar l4d2_melee_tank_nerf 0 // Melee weapons will always damage 5% of a tanks max health. +wait 5700;sm_cvar z_tank_has_special_blood 1 // Gives the tank a special blood particle effect. +wait 5700;sm_cvar tank_throw_allow_range 600 // A bot tank must be at least this far away from survivors to throw a rock. +wait 5700;sm_cvar tank_throw_lead_time_factor 0.25 // How far in advanced will the tank aim his rock throw at survivors. +wait 5700;sm_cvar tank_throw_loft_rate 0.015 // A tank rocks vertical loft rate when it gets released. +// wait 5700;sm_cvar tank_throw_max_loft_angle 30 // Max loft angle for a tank rock throw. +wait 5700;sm_cvar z_tank_throw_force 850 // The force with which a tank will throw a rock at. +wait 5700;sm_cvar z_tank_rock_radius 96 // Hitbox radius for the tanks rock to hit players. +// wait 5700;sm_cvar z_tank_throw_health 50 // How much health a tank rock has. +wait 5700;sm_cvar z_tank_throw_interval 4.5 // Cooldown period for a player tanks rock throw. +// wait 5700;sm_cvar tank_throw_min_interval 8 // Minimum interval between bot tank rock throws. +wait 5700;sm_cvar tank_attack_range 60 // The range at which a bot tank will swing at a survivor. +wait 5700;sm_cvar tank_swing_range 60 // The range of a tanks swing attack. +wait 5700;sm_cvar tank_swing_interval 1.466667 // How often a tank can swing his arm. +wait 5700;sm_cvar tank_swing_miss_interval 1.466667 // How long after a missed swing until a tank can swing his arm again. +wait 5700;sm_cvar tank_swing_fast_interval 1.466667 // How long until a tank can swing his arm again when he is clearing horde out of his path. +wait 5700;sm_cvar z_tank_attack_interval 1.466667 // How often a bot tank will try to swing at survivors. +wait 5700;sm_cvar tank_windup_time 0.483333 // How long until the tank swing actually hits. +// wait 5700;sm_cvar tank_swing_duration 0.2 // The duration of a tanks swing attack. +wait 5700;sm_cvar tank_swing_yaw 100 // Hitbox yaw offset of a tank swing. +wait 5700;sm_cvar tank_fist_radius 16 // Radius of a tanks fist while punching. +wait 5700;sm_cvar vs_tank_pound_damage 36 // How much damage a tank punch does to incapped survivors in Versus mode. +wait 5700;sm_cvar tank_punch_getup_scale 0.333333 // How long after being punched by a tank that a survivor can start moving again. +wait 5700;sm_cvar tank_burn_duration 90 // How long it takes for a tank to burn to death in easy and normal difficulty. +wait 5700;sm_cvar tank_burn_duration_hard 90 // How long it takes for a tank to burn to death in advanced difficulty. +wait 5700;sm_cvar tank_burn_duration_expert 90 // How long it takes for a tank to burn to death in expert difficulty. +wait 5700;sm_cvar tank_swing_physics_prop_force 3.0 // Force scale of a tanks punch or throw on a hittable physics object. +// // +// Confogl Cvars // +wait 5850;sm_cvar tankcontrol_print_all 0 // Prevents tank control message from being printed to chat. +wait 5850;sm_cvar l4d_tankdamage_enabled 0 // Prevents tank damage from survivors from being printed to chat. +wait 5850;sm_cvar confogl_boss_tank 0 // Tank cant be prelit, frozen and ghost until player takes over, punch fix, and no rock throw for AI tank while waiting for player. +// wait 5850;sm_cvar confogl_boss_unprohibit 0 // Enable bosses spawning on all maps, even through they normally arent allowed. +// wait 5850;sm_cvar confogl_lock_boss_spawns 1 // Enables forcing same coordinates for tank and witch spawns (excluding tanks during finales). +wait 5850;sm_cvar confogl_remove_escape_tank 1 // Removes tanks which spawn as the rescue vehicle arrives on finales. +// wait 5850;sm_cvar confogl_disable_tank_hordes 0 // Disables natural hordes while tanks are in play. +// wait 5850;sm_cvar confogl_block_punch_rock 0 // Block tanks from punching and throwing a rock at the same time. +// wait 5850;sm_cvar confogl_blockinfectedbots 0 // Blocks infected bots from joining the game, minus when a tank spawns (allows players to spawn a AI infected first before taking control of the tank). +wait 5850;sm_cvar confogl_ghost_warp 0 // Sets whether infected ghosts can right click for warp to next survivor. +wait 5850;sm_cvar confogl_disable_ghost_hurt 0 // Prevents ghost infected from dying when falling into water or off c1m1_hotel. +wait 5850;sm_cvar confogl_reduce_finalespawnrange 1 // Adjust the spawn range on finales for infected, to normal spawning range. +wait 5850;sm_cvar confogl_remove_inf_clips 1 // Removes all infected clip brushes. This fixes tanks getting stuck on Dark Carnival 5 and allows a bit more area for infected to spawn on a few maps. +wait 5850;sm_cvar confogl_remove_c5m4_hurts 1 // Removes nonlethal explosion hurt triggers from c5m4_quarter, including some for up to 50 damage. +// wait 5850;sm_cvar confogl_replace_cssweapons 0 // Replace CSS weapons with normal L4D2 weapons. +// wait 5850;sm_cvar confogl_replace_startkits 0 // Replace medkits at mission start with pain pills. +// wait 5850;sm_cvar confogl_replace_finalekits 0 // Replace medkits during finale with pain pills. +// wait 5850;sm_cvar confogl_waterslowdown 0 // Sets whether water will slowdown the survivors by another 10%. +// wait 5850;sm_cvar confogl_defib_limit -1 // Limits the number of defibrillators on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// wait 5850;sm_cvar confogl_pills_limit -1 // Limits the number of pain pills on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// wait 5850;sm_cvar confogl_adrenaline_limit -1 // Limits the number of adrenaline shots on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// wait 5850;sm_cvar confogl_pipebomb_limit -1 // Limits the number of pipe bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// wait 5850;sm_cvar confogl_molotov_limit -1 // Limits the number of molotovs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// wait 5850;sm_cvar confogl_vomitjar_limit -1 // Limits the number of bile bombs on each map outside of saferooms. -1: no limit; >=0: limit to cvar value. +// +// Admin Stuff +// Ungags Moon +// wait 6000;sm_ungag "Moon" +// wait 6000;sm_ungag "STEAM_0:0:121253576" +// wait 6000;sm_ungag "STEAM_0:1:121253576" +// wait 6000;sm_ungag "STEAM_1:0:121253576" +// wait 6000;sm_ungag "STEAM_1:1:121253576" +// Unmutes Moon +// wait 6000;sm_unmute "Moon" +// wait 6000;sm_unmute "STEAM_0:0:121253576" +// wait 6000;sm_unmute "STEAM_0:1:121253576" +// wait 6000;sm_unmute "STEAM_1:0:121253576" +// wait 6000;sm_unmute "STEAM_1:1:121253576" +// Unsilences Moon +// wait 6000;sm_unsilence "Moon" +// wait 6000;sm_unsilence "STEAM_0:0:121253576" +// wait 6000;sm_unsilence "STEAM_0:1:121253576" +// wait 6000;sm_unsilence "STEAM_1:0:121253576" +// wait 6000;sm_unsilence "STEAM_1:1:121253576" +// +// Test Executing Other Files +// diff --git a/cfg/prefix_director.cfg b/cfg/prefix_director.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_director.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_host.cfg b/cfg/prefix_host.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_host.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_mp.cfg b/cfg/prefix_mp.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_mp.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_nav.cfg b/cfg/prefix_nav.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_nav.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_nb.cfg b/cfg/prefix_nb.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_nb.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_phys.cfg b/cfg/prefix_phys.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_phys.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_sb.cfg b/cfg/prefix_sb.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_sb.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_sm.cfg b/cfg/prefix_sm.cfg new file mode 100644 index 00000000..f8d7250b --- /dev/null +++ b/cfg/prefix_sm.cfg @@ -0,0 +1,29 @@ +sm_unban Moon +sm_unban "STEAM_0:0:121253576" +sm_unban "STEAM_0:1:121253576" +sm_unban "STEAM_1:0:121253576" +sm_unban "STEAM_1:1:121253576" +sm_ungag Moon +sm_ungag "STEAM_0:0:121253576" +sm_ungag "STEAM_0:1:121253576" +sm_ungag "STEAM_1:0:121253576" +sm_ungag "STEAM_1:1:121253576" +sm_unmute Moon +sm_unmute "STEAM_0:0:121253576" +sm_unmute "STEAM_0:1:121253576" +sm_unmute "STEAM_1:0:121253576" +sm_unmute "STEAM_1:1:121253576" +sm_unsilence Moon +sm_unsilence "STEAM_0:0:121253576" +sm_unsilence "STEAM_0:1:121253576" +sm_unsilence "STEAM_1:0:121253576" +sm_unsilence "STEAM_1:1:121253576" +sm_immunity_mode 3 +sm_show_activity 16 +sm_flood_time 0 +sm_vote_delay 0 +sm_allowed_lerp_changes 20 +sm_lerp_change_spec 1 +sm_readyup_lerp_changes 1 +sm_min_lerp 0.000000 +sm_max_lerp 0.500000 diff --git a/cfg/prefix_sv.cfg b/cfg/prefix_sv.cfg new file mode 100644 index 00000000..0098cc85 --- /dev/null +++ b/cfg/prefix_sv.cfg @@ -0,0 +1,236 @@ +sm_cvar sv__ragdoll_max_remove_per_frame 1 +sm_cvar sv_accelerate 5.454545 +sm_cvar sv_airaccelerate 15 +sm_cvar sv_allow_lobby_connect_only 0 +sm_cvar sv_allow_votes 1 +sm_cvar sv_allow_wait_command 1 +sm_cvar sv_allowdownload 1 +sm_cvar sv_allowupload 1 +sm_cvar sv_alltalk 1 +sm_cvar sv_alternateticks 1 +sm_cvar sv_always_full_flush 0 +sm_cvar sv_autosave 1 +sm_cvar sv_backspeed 1 +sm_cvar sv_banid_dev_enabled 0 +sm_cvar sv_banid_enabled 1 +sm_cvar sv_benchmark_autovprofrecord 0 +sm_cvar sv_benchmark_numticks 0 +sm_cvar sv_bonus_challenge 0 +sm_cvar sv_bounce 0.2 +sm_cvar sv_cacheencodedents 1 +sm_cvar sv_cheats 0 +sm_cvar sv_client_cmdrate_difference 0 +sm_cvar sv_client_max_interp_ratio 30 +sm_cvar sv_client_min_interp_ratio 0 +sm_cvar sv_client_predict 1 +sm_cvar sv_clockcorrection_msecs 50 +sm_cvar sv_consistency 0 +sm_cvar sv_contact " " +sm_cvar sv_creationtickcheck 1 +sm_cvar sv_cycle_latch_timer 0.1 +sm_cvar sv_debug_entity "" +sm_cvar sv_debug_player_use 0 +sm_cvar sv_debugmanualmode 0 +sm_cvar sv_debugtempentities 0 +sm_cvar sv_deltaprint 0 +sm_cvar sv_deltatime 0 +sm_cvar sv_demo_entity_record_rate 60 +sm_cvar sv_disable_glow_faritems 0 +sm_cvar sv_disable_glow_survivors 0 +sm_cvar sv_disable_querycache 0 +sm_cvar sv_doors_push_players 1 +sm_cvar sv_downloadurl | steamcommunity.com/groups/bizzymod | bizzymod.com | +sm_cvar sv_dumpstringtables 0 +sm_cvar sv_enableoldqueries 0 +sm_cvar sv_extra_client_connect_time 30 +sm_cvar sv_fallen_survivor_health_multiplier 1 +sm_cvar sv_filterban 1 +sm_cvar sv_footstepinterval 0.166667 +sm_cvar sv_footsteps 1 +sm_cvar sv_force_time_of_day -1 +sm_cvar sv_force_transmit_ents 0 +sm_cvar sv_forcepreload 1 +sm_cvar sv_friction 4 +sm_cvar sv_gameinstructor_disable 0 +sm_cvar sv_gametypes +sm_cvar sv_gravity 720 +sm_cvar sv_healing_gnome_replenish_rate 3 +sm_cvar sv_hibernate_ms 0 +sm_cvar sv_hibernate_ms_vgui 0 +sm_cvar sv_hibernate_postgame_delay 0 +sm_cvar sv_hibernate_when_empty 0 +sm_cvar sv_hosting_lobby 1 +sm_cvar sv_infected_ceda_vomitjar_probability 0.125 +sm_cvar sv_infected_police_tonfa_probability 0.25 +sm_cvar sv_infected_riot_control_tonfa_probability 0.25 +sm_cvar sv_infected_scale_max 1.015625 +sm_cvar sv_infected_scale_min 1.015625 +sm_cvar sv_infinite_ammo 0 +sm_cvar sv_infinite_primary_ammo 0 +sm_cvar sv_instancebaselines 1 +sm_cvar sv_lagcompensationforcerestore 1 +sm_cvar sv_lagflushbonecache 1 +sm_cvar sv_lagpushticks 0 +sm_cvar sv_lan 0 +sm_cvar sv_log_onefile 1 +sm_cvar sv_logbans 1 +sm_cvar sv_logblocks 0 +sm_cvar sv_logdownloadlist 0 +sm_cvar sv_logecho 1 +sm_cvar sv_logfile 1 +sm_cvar sv_logflush 0 +sm_cvar sv_logsdir logs +sm_cvar sv_massreport 0 +sm_cvar sv_master_legacy_mode 0 +sm_cvar sv_master_share_game_socket 1 +sm_cvar sv_max_queries_sec 6 +sm_cvar sv_max_queries_sec_global 60 +sm_cvar sv_max_queries_window 60 +sm_cvar sv_max_usercmd_future_ticks 15 +sm_cvar sv_maxclientframes 60 +sm_cvar sv_maxcmdrate 120 +sm_cvar sv_maxplayers 32 +sm_cvar sv_maxrate 72000 +sm_cvar sv_maxreplay 0 +sm_cvar sv_maxroutable 1200 +sm_cvar sv_maxspeed 1000 +sm_cvar sv_maxunlag 0.5 +sm_cvar sv_maxupdaterate 60 +sm_cvar sv_maxvelocity 1500 +sm_cvar sv_memlimit 0 +sm_cvar sv_mincmdrate 60 +sm_cvar sv_minrate 72000 +sm_cvar sv_minupdaterate 60 +sm_cvar sv_multiplayer_maxtempentities 64 +sm_cvar sv_multiplayer_sounds 64 +sm_cvar sv_music_debug 0 +sm_cvar sv_netvisdist 10000 +sm_cvar sv_new_delta_bits 1 +sm_cvar sv_no_navmesh 0 +sm_cvar sv_noclipaccelerate 5 +sm_cvar sv_noclipduringpause 0 +sm_cvar sv_noclipfriction 4 +sm_cvar sv_noclipspeed 3 +sm_cvar sv_optimizedmovement 1 +sm_cvar sv_parallel_packentities 2 +sm_cvar sv_parallel_sendsnapshot 2 +sm_cvar sv_password "" +sm_cvar sv_pausable 0 +sm_cvar sv_pausable_dev 0 +sm_cvar sv_pausable_dev_ds 0 +sm_cvar sv_permawipe 0 +sm_cvar sv_player_max_separation_force 0 +sm_cvar sv_player_stuck_tolerance 1 +sm_cvar sv_playerperfhistorycount 0 +sm_cvar sv_prop_door_max_close_attempts 20 +sm_cvar sv_pure_kick_clients 0 +sm_cvar sv_pure_trace 0 +sm_cvar sv_pushaway_clientside 2 +sm_cvar sv_pushaway_clientside_size 15 +sm_cvar sv_pushaway_force 200000 +sm_cvar sv_pushaway_max_force 5000 +sm_cvar sv_pushaway_max_player_force 10000 +sm_cvar sv_pushaway_min_force 1000 +sm_cvar sv_pushaway_min_player_speed 0 +sm_cvar sv_pushaway_player_force 100000 +sm_cvar sv_pvsskipanimation 1 +sm_cvar sv_pz_endgame_vote_period 15 +sm_cvar sv_pz_endgame_vote_post_period 3 +sm_cvar sv_quota_stringcmdspersecond 2147483647 +sm_cvar sv_ragdoll_maxcount 80 +sm_cvar sv_ragdoll_maxcount_boss 80 +sm_cvar sv_ragdoll_maxcount_generic 80 +sm_cvar sv_ragdoll_maxcount_gib 80 +sm_cvar sv_ragdoll_maxcount_special 80 +sm_cvar sv_ragdoll_maxcount_survivor 80 +sm_cvar sv_ragdoll_version 1 +sm_cvar sv_rcon_banpenalty 0 +sm_cvar sv_rcon_log 0 +sm_cvar sv_rcon_maxfailures 20 +sm_cvar sv_rcon_minfailures 20 +sm_cvar sv_rcon_minfailuretime 1 +sm_cvar sv_regeneration_force_on 0 +sm_cvar sv_regeneration_wait_time 0 +sm_cvar sv_region 0 +sm_cvar sv_rescue_disabled 0 +sm_cvar sv_reservation_grace 3 +sm_cvar sv_reservation_timeout 5 +sm_cvar sv_rollangle 0.5 +sm_cvar sv_rollspeed 500 +sm_cvar sv_runcmds 1 +sm_cvar sv_script_think_interval 0 +sm_cvar sv_search_key bizzymod +sm_cvar sv_search_team_key bizzymod +sm_cvar sv_sendtables 0 +sm_cvar sv_show_whitelist_msg 0 +sm_cvar sv_showanimstate -1 +sm_cvar sv_showanimstate_activities 1 +sm_cvar sv_showanimstate_log 0 +sm_cvar sv_showdamage 0 +sm_cvar sv_showdebugtracers 0 +sm_cvar sv_showfootsteps 0 +sm_cvar sv_showhitboxes -1 +sm_cvar sv_showimpacts 0 +sm_cvar sv_showladders 0 +sm_cvar sv_showlagcompensation 0 +sm_cvar sv_showonlyhitbox -1 +sm_cvar sv_showplayerhitboxes 0 +sm_cvar sv_skyname sky_l4d_c1_1_hdr +sm_cvar sv_sound_discardextraunreliable 1 +sm_cvar sv_soundemitter_trace -1 +sm_cvar sv_specaccelerate 5 +sm_cvar sv_specnoclip 1 +sm_cvar sv_specspeed 3 +sm_cvar sv_spectatoridletime 5 +sm_cvar sv_stats 0 +sm_cvar sv_steamgroup 38693222 +sm_cvar sv_steamgroup_exclusive 1 +sm_cvar sv_stepsize 18.968873 +sm_cvar sv_stopspeed 80 +sm_cvar sv_stressbots 0 +sm_cvar sv_strict_notarget 0 +sm_cvar sv_suppress_viewpunch 0 +sm_cvar sv_sync_anims_spawn 0 +sm_cvar sv_sync_client_updates 0 +sm_cvar sv_tags Coop,Realism,Secure,Versus +sm_cvar sv_tankpropfade 1 +sm_cvar sv_teststepsimulation 1 +sm_cvar sv_thinktimecheck 0 +sm_cvar sv_threaded_init 0 +sm_cvar sv_timeout 30 +sm_cvar sv_tracereffects_limit_general 30 +sm_cvar sv_turbophysics 1 +sm_cvar sv_turbophysics_shadow 0 +sm_cvar sv_unlag 1 +sm_cvar sv_unlag_debug 0 +sm_cvar sv_unlag_fixstuck 1 +sm_cvar sv_unlockedchapters 2147483647 +sm_cvar sv_useexplicitdelete 1 +sm_cvar sv_vehicle_autoaim_scale 10 +sm_cvar sv_visiblemaxplayers -1 +sm_cvar sv_voicecodec vaudio_celt +sm_cvar sv_voiceenable 1 +sm_cvar sv_vote_command_delay 2 +sm_cvar sv_vote_creation_timer 0 +sm_cvar sv_vote_failure_timer 0 +sm_cvar sv_vote_issue_change_difficulty_allowed 1 +sm_cvar sv_vote_issue_change_map_later_allowed 1 +sm_cvar sv_vote_issue_change_map_now_allowed 1 +sm_cvar sv_vote_issue_change_mission_allowed 1 +sm_cvar sv_vote_issue_kick_allowed 1 +sm_cvar sv_vote_issue_restart_game_allowed 1 +sm_cvar sv_vote_kick_ban_duration 1 +sm_cvar sv_vote_plr_map_limit 2147483647 +sm_cvar sv_vote_show_caller 1 +sm_cvar sv_vote_timer_duration 12 +sm_cvar sv_wateraccelerate 1000 +sm_cvar sv_waterdist 0 +sm_cvar sv_waterfriction 0 +sm_cvar sv_zombie_touch_trigger_delay 1 +sm_cvar sv_zoo_model_filter "" +sm_cvar sv_zoo_spacing 64 +sm_cvar sv_zoo_spacing_rows 192 +sm_cvar sv_zoo_spacing_wrap 80 +sm_cvar sv_zoo_tint_clr "153 153 153 255" +sm_cvar sv_zoo_tint_loop 1 +sm_cvar sv_zoo_wrap_skin 1 diff --git a/cfg/prefix_tv.cfg b/cfg/prefix_tv.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_tv.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_vs.cfg b/cfg/prefix_vs.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_vs.cfg @@ -0,0 +1 @@ + diff --git a/cfg/prefix_z.cfg b/cfg/prefix_z.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/prefix_z.cfg @@ -0,0 +1 @@ + diff --git a/cfg/server1.cfg b/cfg/server1.cfg index c257cef3..d11309be 100644 --- a/cfg/server1.cfg +++ b/cfg/server1.cfg @@ -1,86 +1 @@ -// [General] -// ----------------------------------------------------------------------- -hostname "#{Server_Name}#" - -rcon_password "#{RCON_Pass}#" -sv_steamgroup "38693222" -sv_search_key "bizzymod" -sv_steamgroup_exclusive "1" // If set, only members of Steam group will be able to join the server when it's empty, public people will be able to join the server only if it has players. - // (Forcing the IP as a non-group member in lobby, or directly connecting always works) - -motdfile "mymotd.txt" // This ensures that Valve doesn't overwrite the MoTD every Update. [Edit this file instead of motd.txt, found in the same folder (/left4dead2)] -hostfile "myhost.txt" // This ensures that Valve doesn't overwrite the Hostfile every Update. [Edit this file instead of host.txt, found in the same folder (/left4dead2)] - -// What .cfg files to load on Matchmode load (Plugins, nothing else) - Separate with ; -sm_cvar confogl_match_execcfg_plugins "generalfixes.cfg;confogl_plugins.cfg;sharedplugins.cfg" - -// [Other Neat Stuff] -// ----------------------------------------------------------------------- -sv_allow_lobby_connect_only "0" // If set to 1, players may only join this server from matchmaking lobby, may not connect directly. - -// [File Consistency] -// ----------------------------------------------------------------------- -sv_consistency "1" // Whether the server enforces file consistency for critical files. -sv_pure "2" // The server will force all client files to come from Steam and additional files matching the Server. -sv_pure_kick_clients "1" // If set to 1, the server will kick clients with mismatching files. - -// [Logging] -// ----------------------------------------------------------------------- -log on //Creates a logfile (on | off) -sv_logecho 0 //default 0; Echo log information to the console. -sv_logfile 1 //default 1; Log server information in the log file. -sv_log_onefile 1 //default 0; Log server information to only one file. -sv_logbans 1 //default 0;Log server bans in the server logs. -sv_logflush 0 //default 0; Flush the log files to disk on each write (slow). -sv_logsdir logs //Folder in the game directory where server logs will be stored. - -// [Addon Disabler] -// ----------------------------------------------------------------------- -// This Setting will disable/enable the Serverside Addon Disabler. -// -1 = use addonconfig.cfg -// 0 = Disable addons. -// 1 = Enable Addons -/////////////////////////////////////////////////////////////////////// -sm_cvar l4d2_addons_eclipse 0 - -// [Wait Commands] -sm_cvar sv_allow_wait_command 0 - -// [Networking, Rates] -// - Rates forced to 100 on Clients, for 100 Tick. -// - When using a different Tickrate, modify settings accordingly: -// 1. Change 100000 to (Tickrate * 1000) for Rate and Splitpacket. -// 2. Change 100 to (Tickrate) for Cmd and Update Rates. -// ----------------------------------------------------------------------- -sm_cvar sv_minrate 100000 // Minimum value of rate. -sm_cvar sv_maxrate 100000 // Maximum Value of rate. -sm_cvar sv_minupdaterate 100 // Minimum Value of cl_updaterate. -sm_cvar sv_maxupdaterate 100 // Maximum Value of cl_updaterate. -sm_cvar sv_mincmdrate 100 // Minimum value of cl_cmdrate. -sm_cvar sv_maxcmdrate 100 // Maximum value of cl_cmdrate. -sm_cvar sv_client_min_interp_ratio -1 // Minimum value of cl_interp_ratio. -sm_cvar sv_client_max_interp_ratio 0 // Maximum value of cl_interp_ratio. -sm_cvar nb_update_frequency 0.014 // The lower the value, the more often common infected and witches get updated (Pathing, and state), very CPU Intensive. (0.100 is default) -sm_cvar net_splitpacket_maxrate 50000 // Networking Tweaks. -sm_cvar fps_max 0 // Forces the maximum amount of FPS the CPU has available for the Server. - -// Tickrate Fixes -sm_cvar tick_door_speed 1.3 - -// Slots (This prevents constant resetting of sv_maxplayers on map change) -sm_cvar mv_maxplayers 30 - -// Some tweaking -sm_cvar mp_autoteambalance 0 // Prevents some shuffling. -sm_cvar sv_unlag_fixstuck 1 // Prevent getting stuck when attempting to "unlag" a player. -sm_cvar z_brawl_chance 0 // Common Infected won't randomly fight eachother. -sm_cvar sv_maxunlag 1 // Maximum amount of seconds to "unlag", go back in time. -sm_cvar sv_forcepreload 1 // Pre-loading is always a good thing, force pre-loading on all clients. -sm_cvar sv_client_predict 1 // This is already set on clients, but force them to predict. -sm_cvar sv_client_cmdrate_difference 0 // Remove the clamp. -sm_cvar sv_max_queries_sec_global 10 -sm_cvar sv_max_queries_sec 3 -sm_cvar sv_max_queries_window 10 -sm_cvar sv_player_stuck_tolerance 5 -sm_cvar sv_stats 0 // Don't need these. -sm_cvar sv_clockcorrection_msecs 25 // This one makes laggy players have less of an advantage regarding hitbox (as the server normally compensates for 60msec, lowering it below 15 will make some players appear stuttery) \ No newline at end of file +sm_cvar servercfgfile exec.cfg diff --git a/cfg/settings.cfg b/cfg/settings.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/settings.cfg @@ -0,0 +1 @@ + diff --git a/cfg/sharedplugins.cfg b/cfg/sharedplugins.cfg index 212c2a1a..636e5208 100644 --- a/cfg/sharedplugins.cfg +++ b/cfg/sharedplugins.cfg @@ -1,6 +1,7 @@ //------------------------------------------- // Bizzymod //------------------------------------------- +sm plugins load bizzymod/SpecListener.smx sm plugins load bizzymod/l4d_stats.smx sm plugins load bizzymod/l4d2scores.smx sm plugins load bizzymod/l4d2_mix.smx @@ -15,4 +16,13 @@ sm plugins load anticheat/sbpp_comms.smx sm plugins load anticheat/sbpp_main.smx sm plugins load anticheat/sbpp_report.smx sm plugins load anticheat/sbpp_sleuth.smx -sm plugins load anticheat/lilac.smx \ No newline at end of file +sm plugins load anticheat/lilac.smx +sm plugins load basebans.smx +sm plugins load basecommands.smx +sm plugins load basecomm.smx +sm plugins load admin-flatfile.smx +sm plugins load adminhelp.smx +sm plugins load adminmenu.smx +sm plugins load funcommands.smx +sm plugins load playercommands.smx +sm plugins load funvotes.smx diff --git a/cfg/simple.cfg b/cfg/simple.cfg new file mode 100644 index 00000000..4bfed90b --- /dev/null +++ b/cfg/simple.cfg @@ -0,0 +1,1654 @@ +wait 0001 ; sm_cvar achievement_disable 0 +wait 0002 ; sm_cvar action_progress_reset_interval 0.5 +wait 0003 ; // sm_cvar adrenaline_backpack_speedup 0.5 +wait 0004 ; sm_cvar adrenaline_duration 20 +wait 0005 ; sm_cvar adrenaline_health_buffer 30 +wait 0006 ; // sm_cvar adrenaline_revive_speedup 0.5 +wait 0007 ; // sm_cvar adrenaline_run_speed 260 +wait 0008 ; sm_cvar ai_expression_frametime 0.5 +wait 0009 ; sm_cvar ai_expression_optimization 1 +wait 0010 ; sm_cvar ai_force_serverside_ragdoll 1 +wait 0011 ; sm_cvar ai_talk_idle_enabled 0 +wait 0012 ; sm_cvar allow_all_bot_survivor_team 1 +wait 0013 ; // sm_cvar ammo_assaultrifle_max 450 // 2147483587 +wait 0014 ; // sm_cvar ammo_autoshotgun_max 90 // 2147483647 // 2147483637 +wait 0015 ; sm_cvar ammo_chainsaw_max 30 // -2 +wait 0016 ; sm_cvar ammo_firstaid_max 1 +wait 0017 ; sm_cvar ammo_grenadelauncher_max 31 // -2 +wait 0018 ; sm_cvar ammo_huntingrifle_max 165 +wait 0019 ; // sm_cvar ammo_m60_max 150 // -2 +wait 0020 ; sm_cvar ammo_minigun_max -2 +wait 0021 ; sm_cvar ammo_pack_use_duration 1.5 +wait 0022 ; // sm_cvar ammo_shotgun_max 72 // 2147483647 // 2147483639 +wait 0023 ; // sm_cvar ammo_smg_max 750 // 2147483597 +wait 0024 ; // sm_cvar ammo_sniperrifle_max 180 // 2147483617 +wait 0025 ; sm_cvar ammo_turret_infected_damage 100 +wait 0026 ; sm_cvar ammo_turret_max -2 +wait 0027 ; sm_cvar ammo_turret_pz_damage 25 +wait 0028 ; sm_cvar ammo_turret_survivor_damage 0 +wait 0029 ; sm_cvar ammo_turret_tank_damage 50 +wait 0030 ; sm_cvar ammo_turret_witch_damage 50 +wait 0031 ; sm_cvar autoaim_max_deflect 0.0 +wait 0032 ; sm_cvar autoaim_max_dist 0 +wait 0033 ; sm_cvar boomer_exposed_time_tolerance 18 +wait 0034 ; sm_cvar boomer_pz_claw_dmg 6 +wait 0035 ; sm_cvar boomer_vomit_delay 0 +wait 0036 ; sm_cvar car_alarm_chirp_distance 500 +wait 0037 ; // sm_cvar car_alarm_chirp_duration 1 +wait 0038 ; sm_cvar car_alarm_chirp_interval 1 +wait 0039 ; sm_cvar car_alarm_distance 1000 +wait 0040 ; sm_cvar car_alarm_duration 20 +wait 0041 ; sm_cvar cc_norepeat 0 +wait 0042 ; sm_cvar chainsaw_attack_cone 30 +wait 0043 ; sm_cvar chainsaw_attack_distance 70 // 72 // 64 +wait 0044 ; sm_cvar chainsaw_attack_force 10000 +wait 0045 ; sm_cvar chainsaw_attract_distance 1000 +wait 0046 ; sm_cvar chainsaw_damage 50 +wait 0047 ; sm_cvar chainsaw_hit_interval 0.033333 +wait 0048 ; sm_cvar chainsaw_startup_fadeout_time 0 +wait 0049 ; sm_cvar changelevel_pause_interval 8.5 // 8.775 // 8.9 +wait 0050 ; // sm_cvar charger_pz_claw_dmg 10 +wait 0051 ; // sm_cvar cl_clock_correction_adjustment_max_amount 200 +wait 0052 ; sm_cvar cl_clock_correction_adjustment_max_offset 100 +wait 0053 ; sm_cvar cl_clock_correction_adjustment_min_offset 0 +wait 0054 ; sm_cvar cl_clock_correction_force_server_tick 0 +wait 0055 ; sm_cvar cl_clockdrift_max_ms 100 +wait 0056 ; sm_cvar cl_consistencycheck_interval 86400 +wait 0057 ; sm_cvar cl_interpolate 1 +wait 0058 ; // sm_cvar cl_resend 1.5 +wait 0059 ; sm_cvar cl_simdbones 1 +wait 0060 ; // sm_cvar cl_use_simd_bones 1 +wait 0061 ; sm_cvar claw_force 250 +wait 0062 ; sm_cvar claw_range 60 // 64 // 56 +wait 0063 ; sm_cvar claw_range_down 80 // 84 +wait 0064 ; // sm_cvar claw_swing_duration 0.183333 +wait 0065 ; sm_cvar claw_swing_interval 0.966667 +wait 0066 ; sm_cvar claw_swing_miss_interval 0.966667 +wait 0067 ; // sm_cvar cleared_wanderer_respawn_chance 0 +wait 0068 ; // sm_cvar clientport 27005 +wait 0069 ; // sm_cvar closecaption 1 +wait 0070 ; sm_cvar cola_bottles_use_duration 1.8 +wait 0071 ; sm_cvar cola_bottles_use_range 96 +wait 0072 ; sm_cvar cola_bottles_use_tolerance 0.0 +wait 0073 ; sm_cvar collision_shake_amp 0 +wait 0074 ; sm_cvar collision_shake_freq 0 +wait 0075 ; sm_cvar collision_shake_time 0 +wait 0076 ; sm_cvar commentary_available 0 +wait 0077 ; sm_cvar common_dps_window 0 +wait 0078 ; // sm_cvar confogl_adrenaline_limit -1 +wait 0079 ; // sm_cvar confogl_block_punch_rock 0 +wait 0080 ; // sm_cvar confogl_blockinfectedbots 0 +wait 0081 ; sm_cvar confogl_boss_tank 0 +wait 0082 ; // sm_cvar confogl_boss_unprohibit 0 +wait 0083 ; // sm_cvar confogl_block_punch_rock 0 +wait 0084 ; // sm_cvar confogl_defib_limit -1 +wait 0085 ; // sm_cvar confogl_disable_ghost_hurt 0 +wait 0086 ; // sm_cvar confogl_disable_tank_hordes 0 +wait 0087 ; // sm_cvar confogl_ghost_warp 0 +wait 0088 ; // sm_cvar confogl_lock_boss_spawns 1 +wait 0089 ; // sm_cvar confogl_molotov_limit -1 +wait 0090 ; // sm_cvar confogl_pills_limit -1 +wait 0091 ; // sm_cvar confogl_pipebomb_limit -1 +wait 0092 ; // sm_cvar confogl_reduce_finalespawnrange 1 +wait 0093 ; sm_cvar confogl_remove_c5m4_hurts 1 +wait 0094 ; sm_cvar confogl_remove_escape_tank 1 +wait 0095 ; sm_cvar confogl_remove_inf_clips 1 +wait 0096 ; // sm_cvar confogl_replace_cssweapons 0 +wait 0097 ; // sm_cvar confogl_replace_finalekits 0 +wait 0098 ; // sm_cvar confogl_replace_startkits 0 +wait 0099 ; // sm_cvar confogl_vomitjar_limit -1 +wait 0100 ; // sm_cvar confogl_waterslowdown 0 +wait 0101 ; sm_cvar cpu_level 2 +wait 0102 ; sm_cvar datacachesize 512 +wait 0103 ; sm_cvar deathmatch 1 +wait 0104 ; // sm_cvar debug_l4dverbose 1 +wait 0105 ; sm_cvar decalfrequency 1.25 +wait 0106 ; sm_cvar defibrillator_return_to_life_time 1 +wait 0107 ; sm_cvar defibrillator_use_duration 2 // 2.5 +wait 0108 ; sm_cvar director_adrenaline_density 4 +wait 0109 ; sm_cvar director_afk_timeout 20 +wait 0110 ; // sm_cvar director_allow_infected_bots 1 +wait 0111 ; sm_cvar director_always_allow_wanderers 1 +wait 0112 ; sm_cvar director_ammo_density 4 +wait 0113 ; sm_cvar director_build_up_min_interval 10 +wait 0114 ; sm_cvar director_clear_count 2 +wait 0115 ; sm_cvar director_clear_timeout 10 +wait 0116 ; sm_cvar director_configurable_weapon_spawn_density -1 +wait 0117 ; sm_cvar director_convert_pills 0 +wait 0118 ; sm_cvar director_convert_pills_critical_health 0 +wait 0119 ; sm_cvar director_convert_pills_to_defib_health 0 +wait 0120 ; sm_cvar director_cs_weapon_spawn_chance 0.5 +wait 0121 ; sm_cvar director_custom_finale_tank_spacing 10 +wait 0122 ; sm_cvar director_defibrillator_density 4 +wait 0123 ; sm_cvar director_finale_item_cluster_count 2 +wait 0124 ; sm_cvar director_finale_stage_delay 4 +wait 0125 ; sm_cvar director_gas_can_density 4 +wait 0126 ; sm_cvar director_gauntlet_movement_bonus 5 +wait 0127 ; sm_cvar director_gauntlet_movement_bonus_max 30 +wait 0128 ; sm_cvar director_gauntlet_movement_threshold 500 +wait 0129 ; sm_cvar director_gauntlet_movement_timer_length 10 +wait 0130 ; sm_cvar director_gauntlet_tank_kite_distance 3000 +wait 0131 ; // sm_cvar director_ingress_range 3000 +wait 0132 ; sm_cvar director_intensity_relax_allow_wanderers_threshold 1.0 +wait 0133 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 +wait 0134 ; sm_cvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 +wait 0135 ; sm_cvar director_intensity_relax_threshold 1.0 +wait 0136 ; sm_cvar director_intensity_threshold 1.0 +wait 0137 ; // sm_cvar director_item_cluster_range 50 +wait 0138 ; sm_cvar director_magnum_spawn_density -1 +wait 0139 ; sm_cvar director_max_threat_areas 5 +wait 0140 ; sm_cvar director_melee_weapon_density 4 +wait 0141 ; sm_cvar director_min_start_players 1 +wait 0142 ; sm_cvar director_molotov_density 4 +wait 0143 ; sm_cvar director_music_dynamic_mob_size 20 +wait 0144 ; sm_cvar director_music_dynamic_mobstop_size 10 +wait 0145 ; sm_cvar director_music_dynamic_scanmobstop_size 5 +wait 0146 ; sm_cvar director_oxygen_tank_density 4 +wait 0147 ; sm_cvar director_pain_pill_density 4 +wait 0148 ; sm_cvar director_panic_wave_pause_max 4 +wait 0149 ; sm_cvar director_panic_wave_pause_min 4 +wait 0150 ; sm_cvar director_per_map_weapon_upgrade_chance 0.5 +wait 0151 ; sm_cvar director_pipe_bomb_density 4 +wait 0152 ; sm_cvar director_propane_tank_density 4 +wait 0153 ; sm_cvar director_ready_duration 30 +wait 0154 ; // sm_cvar director_ready_radius 300 +wait 0155 ; // sm_cvar director_relax_max_flow_travel 3000 +wait 0156 ; sm_cvar director_relax_max_interval 30 +wait 0157 ; sm_cvar director_relax_min_interval 15 +wait 0158 ; sm_cvar director_report_screen_delay 5 +wait 0159 ; // sm_cvar director_special_battlefield_respawn_interval 10 +wait 0160 ; // sm_cvar director_special_finale_offer_length 10 +wait 0161 ; sm_cvar director_special_initial_spawn_delay_max 10 +wait 0162 ; sm_cvar director_special_initial_spawn_delay_max_extra 10 +wait 0163 ; sm_cvar director_special_initial_spawn_delay_min 0 +wait 0164 ; // sm_cvar director_special_original_offer_length 10 +wait 0165 ; sm_cvar director_special_respawn_interval 10 +wait 0166 ; sm_cvar director_super_weapon_density 4 +wait 0167 ; sm_cvar director_survivor_movement_window 10 +wait 0168 ; // sm_cvar director_sustain_peak_max_time 5 +wait 0169 ; sm_cvar director_sustain_peak_min_time 5 +wait 0170 ; sm_cvar director_tank_bypass_max_flow_travel 2000 +wait 0171 ; // sm_cvar director_tank_checkpoint_interval 10 +wait 0172 ; sm_cvar director_tank_lottery_entry_time 0.008333 +wait 0173 ; sm_cvar director_tank_lottery_selection_time 3 +wait 0174 ; sm_cvar director_tank_max_interval 300 +wait 0175 ; sm_cvar director_tank_min_interval 300 +wait 0176 ; // sm_cvar director_test_loop_restarts_before_rotate 10 +wait 0177 ; // sm_cvar director_test_loop_rotate_maps 0 +wait 0178 ; // sm_cvar director_test_loop_time 5 +wait 0179 ; sm_cvar director_threat_clear_radius 200 +wait 0180 ; sm_cvar director_threat_max_separation 4000 +wait 0181 ; sm_cvar director_threat_min_separation 4000 +wait 0182 ; // sm_cvar director_threat_radius 1000 +wait 0183 ; sm_cvar director_transition_timeout 60 +wait 0184 ; sm_cvar director_unfreeze_time 30 +wait 0185 ; sm_cvar director_upgradepack_density 4 +wait 0186 ; sm_cvar director_vomitjar_density 4 +wait 0187 ; sm_cvar director_vs_convert_pills 0.0 +wait 0188 ; // sm_cvar director_weapon_cluster_range 100 +wait 0189 ; sm_cvar elevator_movedelay 0 +wait 0190 ; // sm_cvar engine_fix_flags 12 +wait 0191 ; // sm_cvar engine_no_focus_sleep 0 +wait 0192 ; // sm_cvar ent_steadystate_batchsize 10 +wait 0193 ; sm_cvar ent_steadystate_cooldown 5 +wait 0194 ; // sm_cvar ent_steadystate_delay 5 +wait 0195 ; // sm_cvar ent_steadystate_enable 1 +wait 0196 ; // sm_cvar ent_steadystate_interval 0.1 +wait 0197 ; sm_cvar fall_speed_fatal 749.39976 +wait 0198 ; sm_cvar fall_speed_safe 499.59984 +wait 0199 ; // sm_cvar fidget_max_interval 20 +wait 0200 ; // sm_cvar fidget_min_interval 10 +wait 0201 ; sm_cvar fire_absorbrate 100 +wait 0202 ; sm_cvar fire_dmgbase 1 +wait 0203 ; sm_cvar fire_dmginterval 1 +wait 0204 ; // sm_cvar fire_dmgscale 0.1 +wait 0205 ; sm_cvar fire_extabsorb 100 +wait 0206 ; sm_cvar fire_extscale 100 +wait 0207 ; sm_cvar fire_growthrate 1.0 +wait 0208 ; sm_cvar fire_heatscale 0.1 +wait 0209 ; // sm_cvar fire_incomingheatscale 0.1 +wait 0210 ; sm_cvar fire_maxabsorb 100 +wait 0211 ; // sm_cvar first_aid_heal_percent 0.8 +wait 0212 ; sm_cvar first_aid_kit_max_heal 101 +wait 0213 ; sm_cvar first_aid_kit_use_duration 4.8 +wait 0214 ; sm_cvar flex_expression "" +wait 0215 ; sm_cvar force_disablex360 1 +wait 0216 ; sm_cvar fps_max 1000 +wait 0217 ; sm_cvar fps_max_splitscreen 1000 +wait 0218 ; sm_cvar fuel_barrel_damage_amount 25 +wait 0219 ; sm_cvar fuel_barrel_damage_radius 600 +wait 0220 ; sm_cvar fuel_barrel_flame_instances 10 +wait 0221 ; // sm_cvar fuel_barrel_health 30 +wait 0222 ; sm_cvar fuel_barrel_screen_shake_amplitude 50 +wait 0223 ; sm_cvar fuel_barrel_screen_shake_duration 2 +wait 0224 ; sm_cvar fuel_barrel_screen_shake_frequency 2 +wait 0225 ; // sm_cvar fuel_barrel_screen_shake_radius 1000 +wait 0226 ; // sm_cvar func_break_max_pieces 30 +wait 0227 ; sm_cvar func_break_reduction_factor 1.0 +wait 0228 ; sm_cvar func_breakdmg_bullet 1 +wait 0229 ; sm_cvar func_breakdmg_club 3 +wait 0230 ; sm_cvar func_breakdmg_explosive 2 +wait 0231 ; sm_cvar g_Language English +wait 0232 ; sm_cvar g_ragdoll_max_fps 60 +wait 0233 ; sm_cvar g_ragdoll_min_fps 30 +wait 0234 ; sm_cvar gas_can_use_duration 1.9 +wait 0235 ; sm_cvar gascan_spit_time 2.5 // 2.4 +wait 0236 ; sm_cvar gascan_throw_force 100 +wait 0237 ; sm_cvar gascan_use_range 80 +wait 0238 ; sm_cvar gascan_use_tolerance 0.0 +wait 0239 ; sm_cvar gpu_level 3 +wait 0240 ; sm_cvar gpu_mem_level 2 +wait 0241 ; sm_cvar grenadelauncher_damage 750 +wait 0242 ; sm_cvar grenadelauncher_ff_scale 0.05 +wait 0243 ; sm_cvar grenadelauncher_ff_scale_self 0.05 +wait 0244 ; sm_cvar grenadelauncher_force_kill 0 +wait 0245 ; sm_cvar grenadelauncher_radius_kill 300 +wait 0246 ; sm_cvar grenadelauncher_radius_stumble 500 +wait 0247 ; sm_cvar grenadelauncher_startpos_forward 16 +wait 0248 ; sm_cvar grenadelauncher_startpos_right 4 +wait 0249 ; sm_cvar grenadelauncher_startpos_up 0 +wait 0250 ; sm_cvar grenadelauncher_vel_up 125 +wait 0251 ; sm_cvar grenadelauncher_vel_variance 0 +wait 0252 ; sm_cvar grenadelauncher_velocity 1250 +wait 0253 ; // sm_cvar hack_elevator_z_offset 0 // 16 +wait 0254 ; sm_cvar hl2_episodic 1 +wait 0255 ; // sm_cvar host_flush_threshold 0 +wait 0256 ; // sm_cvar host_thread_mode 2 // 1 +wait 0257 ; // sm_cvar host_threaded_sound 1 +wait 0258 ; sm_cvar host_timescale 1.0 +wait 0259 ; // sm_cvar host_xbox_e3_restart 1440 +wait 0260 ; // sm_cvar hostfile myhost.txt +wait 0261 ; // sm_cvar hostname "Bizzy's Moonmod" +wait 0262 ; // sm_cvar hostport 27019 +wait 0263 ; sm_cvar hunter_committed_attack_range 800 +wait 0264 ; sm_cvar hunter_leap_away_give_up_range 10000 +wait 0265 ; sm_cvar hunter_pounce_air_speed 750 +wait 0266 ; sm_cvar hunter_pounce_loft_rate 0.0305385132 // 0.0348994967 +wait 0267 ; // sm_cvar hunter_pounce_max_loft_angle 45 // 37.5 +wait 0268 ; sm_cvar hunter_pounce_ready_range 800 +wait 0269 ; sm_cvar hunter_pz_claw_dmg 8 +wait 0270 ; sm_cvar incendiary_ammo_burn_time 6 +wait 0271 ; sm_cvar inferno_acid_spawn_angle 45 +wait 0272 ; sm_cvar inferno_child_spawn_interval_multiplier 1 +wait 0273 ; // sm_cvar inferno_child_spawn_max_depth 4 +wait 0274 ; sm_cvar inferno_damage 50 +wait 0275 ; // sm_cvar inferno_flame_lifetime 15 +wait 0276 ; sm_cvar inferno_flame_spacing 60 // 45 // 42.426407 +wait 0277 ; sm_cvar inferno_forward_reduction_factor 1.0 +wait 0278 ; sm_cvar inferno_friendly_fire_duration 15 +wait 0279 ; sm_cvar inferno_initial_spawn_interval 0 +wait 0280 ; // sm_cvar inferno_max_child_spawn_interval 1 +wait 0281 ; sm_cvar inferno_max_flames 25 +wait 0282 ; sm_cvar inferno_max_range 250 +wait 0283 ; sm_cvar inferno_max_trace_per_tick 25 +wait 0284 ; sm_cvar inferno_per_flame_spawn_duration 1 +wait 0285 ; // sm_cvar inferno_scorch_decals 1 +wait 0286 ; // sm_cvar inferno_spawn_angle 45 +wait 0287 ; sm_cvar inferno_surface_offset 0 // 21.213203 +wait 0288 ; // sm_cvar inferno_velocity_decay_factor 0.17364817766 +wait 0289 ; // sm_cvar inferno_velocity_factor 0.00174532836 +wait 0290 ; sm_cvar inferno_velocity_normal_factor 0.0 +wait 0291 ; sm_cvar intensity_averaged_following_decay 10 +wait 0292 ; sm_cvar intensity_decay_time 20 +wait 0293 ; sm_cvar intensity_enemy_death_far_range 600 +wait 0294 ; sm_cvar intensity_enemy_death_near_range 200 +wait 0295 ; sm_cvar intensity_factor 1.0 +wait 0296 ; // sm_cvar ip 74.91.113.130 +wait 0297 ; sm_cvar jockey_pounce_air_speed 500 +wait 0298 ; sm_cvar jockey_pounce_loft_rate 0.0348994967 +wait 0299 ; sm_cvar jockey_pounce_max_loft_angle 52.5 // 60 +wait 0300 ; // sm_cvar jockey_pz_claw_dmg 4 +wait 0301 ; sm_cvar l4d_stats_nogameplaycheck 1 +wait 0302 ; sm_cvar l4d_stats_track 1 +wait 0303 ; // sm_cvar ladder_autocenter 1 +wait 0304 ; sm_cvar ladder_horizon -0.38268343236 +wait 0305 ; // sm_cvar lservercfgfile server1.cfg +wait 0306 ; // sm_cvar mat_aaquality 0 +wait 0307 ; sm_cvar mat_antialias 8 +wait 0308 ; sm_cvar mat_depthbias_normal 0.0 +wait 0309 ; // sm_cvar mat_dxlevel 92 +wait 0310 ; sm_cvar mat_envmapsize 2048 // 512 +wait 0311 ; sm_cvar mat_envmaptgasize 512 // 128 +wait 0312 ; sm_cvar mat_forceaniso 16 +wait 0313 ; // sm_cvar mat_hdr_level 2 +wait 0314 ; sm_cvar mat_levelflush 0 +wait 0315 ; sm_cvar mat_maxframelatency 0 +wait 0316 ; // sm_cvar mat_monitorgamma 1.6 +wait 0317 ; // sm_cvar mat_monitorgamma_tv_enabled 1 +wait 0318 ; sm_cvar mat_monitorgamma_tv_exp 4.0 // 2.2 +wait 0319 ; // sm_cvar mat_monitorgamma_tv_range_max 255 +wait 0320 ; sm_cvar mat_monitorgamma_tv_range_min 0 +wait 0321 ; // sm_cvar mat_motion_blur_enabled 1 +wait 0322 ; // sm_cvar mat_phong 1 +wait 0323 ; sm_cvar mat_picmip -10 +wait 0324 ; // sm_cvar mat_queue_mode 2 +wait 0325 ; // sm_cvar mat_shadowstate 1 +wait 0326 ; // sm_cvar mat_specular 1 +wait 0327 ; // sm_cvar mat_triplebuffered 0 +wait 0328 ; sm_cvar mat_vsync 0 +wait 0329 ; sm_cvar melee_collateral_shove_count 20 +wait 0330 ; sm_cvar melee_combo_reset_time 1.0 // 0.983333 +wait 0331 ; sm_cvar melee_damage_charger 400 +wait 0332 ; sm_cvar melee_drop_method 0 +wait 0333 ; sm_cvar melee_force_scalar 50 +wait 0334 ; sm_cvar melee_force_scalar_combat_character 50 +wait 0335 ; sm_cvar melee_range 80 +wait 0336 ; sm_cvar mem_incremental_compact_rate 0.5 +wait 0337 ; sm_cvar mem_level 2 +wait 0338 ; sm_cvar mem_max_heapsize 512 // 1024 +wait 0339 ; sm_cvar mem_max_heapsize_dedicated 512 // 1024 +wait 0340 ; sm_cvar mem_min_heapsize 512 +wait 0341 ; // sm_cvar mix_dynamic_max_CI_emitters 30 +wait 0342 ; // sm_cvar mix_dynamic_num_attack_vox_CI 2 +wait 0343 ; // sm_cvar mm_datacenter_delay_mount_frames 6 +wait 0344 ; // sm_cvar mm_datacenter_query_delay 5 +wait 0345 ; // sm_cvar mm_datacenter_report_version 5 +wait 0346 ; // sm_cvar mm_datacenter_retry_infochunks_attempts 3 +wait 0347 ; sm_cvar mm_datacenter_retry_interval 60 +wait 0348 ; sm_cvar mm_datacenter_update_interval 600 +wait 0349 ; // sm_cvar mm_heartbeat_seconds 300 +wait 0350 ; // sm_cvar mm_heartbeat_seconds_xlsp 60 +wait 0351 ; // sm_cvar mm_heartbeat_timeout 10 +wait 0352 ; // sm_cvar mm_heartbeat_timeout_legacy 10 +wait 0353 ; // sm_cvar mm_matchmaking_dlcsquery 2 +wait 0354 ; // sm_cvar mm_matchmaking_version 10 +wait 0355 ; sm_cvar mm_server_search_inet_ping_interval 1 +wait 0356 ; // sm_cvar mm_server_search_inet_ping_refresh 15 +wait 0357 ; sm_cvar mm_server_search_inet_ping_timeout 3 +wait 0358 ; // sm_cvar mm_server_search_inet_ping_window 10 +wait 0359 ; sm_cvar mm_server_search_lan_ping_duration 1 +wait 0360 ; sm_cvar mm_server_search_lan_ping_interval 0.25 +wait 0361 ; // sm_cvar mm_server_search_lan_ports 27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030 +wait 0362 ; sm_cvar mm_server_search_server_lifetime 120 +wait 0363 ; sm_cvar mm_server_search_update_interval 30 +wait 0364 ; // sm_cvar morph_path 0 +wait 0365 ; // sm_cvar motd_enabled 0 +wait 0366 ; // sm_cvar motdfile mymotd.txt +wait 0367 ; sm_cvar mounted_gun_cooldown_time 0.1 +wait 0368 ; sm_cvar mounted_gun_mount_cooldown_time 0 +wait 0369 ; sm_cvar mounted_gun_overheat_penalty_time 0 +wait 0370 ; sm_cvar mounted_gun_overheat_time 100 +wait 0371 ; sm_cvar mounted_gun_rate_of_fire 15 +wait 0372 ; // sm_cvar mp_allowNPCs 0 +wait 0373 ; sm_cvar mp_allowspectators 1 +wait 0374 ; sm_cvar mp_autokick 0 +wait 0375 ; sm_cvar mp_autoteambalance 0 +wait 0376 ; sm_cvar mp_buytime 1440 +wait 0377 ; sm_cvar mp_c4timer 10 +wait 0378 ; sm_cvar mp_capdeteriorate_time 60 +wait 0379 ; sm_cvar mp_chattime 120 +wait 0380 ; // sm_cvar mp_clan_ready_signal ready +wait 0381 ; sm_cvar mp_enableroundwaittime 0 +wait 0382 ; sm_cvar mp_facefronttime 0.5 // 0.333333 +wait 0383 ; sm_cvar mp_feetmaxyawrate 90 +wait 0384 ; sm_cvar mp_feetyawrate 120 +wait 0385 ; sm_cvar mp_feetyawrate_max 180 +wait 0386 ; sm_cvar mp_forcecamera 0 +wait 0387 ; sm_cvar mp_freezetime 0 +wait 0388 ; // sm_cvar mp_friendlyfire 1 +wait 0389 ; sm_cvar mp_limitteams 0 +wait 0390 ; // sm_cvar mp_playerid 1 +wait 0391 ; sm_cvar mp_playerid_delay 0 +wait 0392 ; sm_cvar mp_playerid_hold 0.1 +wait 0393 ; // sm_cvar mp_roundlimit 5 +wait 0394 ; sm_cvar mp_roundtime 9 +wait 0395 ; sm_cvar mp_spawnprotectiontime 0 +wait 0396 ; sm_cvar mp_stalemate_timelimit 86400 +wait 0397 ; sm_cvar mp_startmoney 16000 +wait 0398 ; sm_cvar mp_teamlist spectator,survivor,nick,gambler,ellis,mechanic,coach,rochelle,producer,bill,navvet,francis,biker,louis,manager,zoey,teenangst,zombie,infected,common,minion,hunter,smoker,gas,boomer,exploding,jockey,charger,spitter,witch,tank +wait 0399 ; sm_cvar mp_teams_unbalance_limit 0 +wait 0400 ; sm_cvar mp_tkpunish 0 +wait 0401 ; sm_cvar mp_weapon_ak47_price 0 +wait 0402 ; sm_cvar mp_weapon_aug_price 0 +wait 0403 ; sm_cvar mp_weapon_awp_price 0 +wait 0404 ; sm_cvar mp_weapon_deagle_price 0 +wait 0405 ; sm_cvar mp_weapon_elite_price 0 +wait 0406 ; sm_cvar mp_weapon_famas_price 0 +wait 0407 ; sm_cvar mp_weapon_fiveseven_price 0 +wait 0408 ; sm_cvar mp_weapon_g3sg1_price 0 +wait 0409 ; sm_cvar mp_weapon_galil_price 0 +wait 0410 ; sm_cvar mp_weapon_glock_price 0 +wait 0411 ; sm_cvar mp_weapon_m249_price 0 +wait 0412 ; sm_cvar mp_weapon_m3_price 0 +wait 0413 ; sm_cvar mp_weapon_m4a1_price 0 +wait 0414 ; sm_cvar mp_weapon_mac10_price 0 +wait 0415 ; sm_cvar mp_weapon_mp5navy_price 0 +wait 0416 ; sm_cvar mp_weapon_p228_price 0 +wait 0417 ; sm_cvar mp_weapon_p90_price 0 +wait 0418 ; sm_cvar mp_weapon_scout_price 0 +wait 0419 ; sm_cvar mp_weapon_sg550_price 0 +wait 0420 ; sm_cvar mp_weapon_sg552_price 0 +wait 0421 ; sm_cvar mp_weapon_tmp_price 0 +wait 0422 ; sm_cvar mp_weapon_ump45_price 0 +wait 0423 ; sm_cvar mp_weapon_usp_price 0 +wait 0424 ; sm_cvar mp_weapon_xm1014_price 0 +wait 0425 ; sm_cvar music_bank_max_duration 86400 +wait 0426 ; sm_cvar music_bank_min_duration 86400 +wait 0427 ; // sm_cvar music_calm_min_interval 30 +wait 0428 ; // sm_cvar music_dynamic_action_decay 10 +wait 0429 ; // sm_cvar music_dynamic_ambient_decay 5 +wait 0430 ; sm_cvar music_dynamic_ambient_in_max 0.8 +wait 0431 ; // sm_cvar music_dynamic_ambient_in_min 0.5 +wait 0432 ; // sm_cvar music_dynamic_ambient_out_max 1.0 +wait 0433 ; // sm_cvar music_dynamic_ambient_out_min 0.0 +wait 0434 ; // sm_cvar music_dynamic_ambient_vol_min_alert 0.4 +wait 0435 ; sm_cvar music_dynamic_attack_CI_close_decay 0.2 +wait 0436 ; // sm_cvar music_dynamic_attack_CI_close_distmax 750 +wait 0437 ; sm_cvar music_dynamic_attack_CI_distmax 2500 +wait 0438 ; sm_cvar music_dynamic_attack_CI_near_decay 0.2 +wait 0439 ; // sm_cvar music_dynamic_attack_CI_near_distmax 500 +wait 0440 ; // sm_cvar music_dynamic_attack_CI_num 20 +wait 0441 ; sm_cvar music_dynamic_attack_CI_veryclose_decay 0.2 +wait 0442 ; // sm_cvar music_dynamic_attack_CI_veryclose_distmax 100 +wait 0443 ; // sm_cvar music_dynamic_calm_decay 10 +wait 0444 ; // sm_cvar music_dynamic_CI_sight_decay 10 +wait 0445 ; sm_cvar music_dynamic_damage_decay 10 +wait 0446 ; // sm_cvar music_dynamic_damage_duck_damage_max 1.0 +wait 0447 ; // sm_cvar music_dynamic_damage_duck_damage_min 0.5 +wait 0448 ; // sm_cvar music_dynamic_damage_duck_max 0.3 +wait 0449 ; // sm_cvar music_dynamic_damage_duck_min 0.0 +wait 0450 ; sm_cvar music_dynamic_damage_increment 0.1 +wait 0451 ; // sm_cvar music_dynamic_dodamage_decay 5 +wait 0452 ; sm_cvar music_dynamic_dodamage_increment 0.02 +wait 0453 ; // sm_cvar music_dynamic_gunfire_decay 1.0 +wait 0454 ; sm_cvar music_dynamic_gunfire_increment 0.4 +wait 0455 ; // sm_cvar music_dynamic_gunfireslow_decay 3 +wait 0456 ; // sm_cvar music_dynamic_gunfireslow_increment 0.3 +wait 0457 ; // sm_cvar music_dynamic_mob_action_close_max 0.4 +wait 0458 ; // sm_cvar music_dynamic_mob_action_close_min 0 +wait 0459 ; // sm_cvar music_dynamic_mob_action_decay 15 +wait 0460 ; sm_cvar music_dynamic_mob_action_increment 0.1 +wait 0461 ; // sm_cvar music_dynamic_mob_action_max 1.0 +wait 0462 ; // sm_cvar music_dynamic_mob_action_min 0.0 +wait 0463 ; // sm_cvar music_dynamic_mob_choir_BPM 90 +wait 0464 ; // sm_cvar music_dynamic_mob_choir_interval_beats 16 +wait 0465 ; // sm_cvar music_dynamic_mob_choir_interval_randmultmax 3 +wait 0466 ; // sm_cvar music_dynamic_mob_damage_max 1.0 +wait 0467 ; // sm_cvar music_dynamic_mob_damage_min 0.6 +wait 0468 ; // sm_cvar music_dynamic_mob_decay 15 +wait 0469 ; sm_cvar music_dynamic_mob_increment 0.1 +wait 0470 ; // sm_cvar music_dynamic_mob_large 40 +wait 0471 ; // sm_cvar music_dynamic_mob_max 1.0 +wait 0472 ; // sm_cvar music_dynamic_mob_med 20 +wait 0473 ; // sm_cvar music_dynamic_mob_min 0.5 +wait 0474 ; // sm_cvar music_dynamic_mob_small 20 +wait 0475 ; // sm_cvar music_dynamic_PZ_BPM 80 +wait 0476 ; // sm_cvar music_dynamic_PZ_interval_randmultmax 5 +wait 0477 ; // sm_cvar music_dynamic_scavenge_beat 1 +wait 0478 ; sm_cvar music_dynamic_SI_close_distmax 1500 +wait 0479 ; sm_cvar music_dynamic_SI_far_distmin 2000 +wait 0480 ; sm_cvar music_dynamic_SI_inrange_distmax 2500 +wait 0481 ; sm_cvar music_dynamic_solosuccess_damagemin 0.3 +wait 0482 ; // sm_cvar music_dynamic_solosuccess_decay 4 +wait 0483 ; // sm_cvar music_dynamic_solosuccess_increment 1 +wait 0484 ; // sm_cvar music_dynamic_specials_interval_beats 5 +wait 0485 ; // sm_cvar music_dynamic_threat_decay 6 +wait 0486 ; sm_cvar music_dynamic_update_interval 0.1 +wait 0487 ; // sm_cvar music_dynamic_witch_alert_interval 30 +wait 0488 ; sm_cvar music_dynamic_witch_near_max 2000 +wait 0489 ; sm_cvar music_dynamic_witch_near_min 500 +wait 0490 ; // sm_cvar music_intensity_threshold 0.25 +wait 0491 ; // sm_cvar music_large_area_reveal_repeat_threshold 30 +wait 0492 ; sm_cvar music_large_area_reveal_threshold 490000 +wait 0493 ; // sm_cvar music_min_pending_threat_time 10 +wait 0494 ; // sm_cvar music_min_safe_time 5 +wait 0495 ; // sm_cvar music_moment_of_silence_repeat_interval 300 +wait 0496 ; // sm_cvar music_moment_of_silence_start_delay 30 +wait 0497 ; // sm_cvar mv_maxplayers 31 // 32 +wait 0498 ; // sm_cvar name V1 +wait 0499 ; // sm_cvar name2 V2 +wait 0500 ; sm_cvar nav_area_bgcolor "0 0 0 51" +wait 0501 ; sm_cvar nav_area_max_size 64 // 100 +wait 0502 ; sm_cvar nav_coplanar_slope_limit 0.9914448614 +wait 0503 ; sm_cvar nav_coplanar_slope_limit_displacement 0.70710678118 +wait 0504 ; // sm_cvar nav_corner_adjust_adjacent 16 +wait 0505 ; // sm_cvar nav_displacement_test 10000 +wait 0506 ; // sm_cvar nav_drag_selection_volume_zmax_offset 32 +wait 0507 ; // sm_cvar nav_drag_selection_volume_zmin_offset 32 +wait 0508 ; // sm_cvar nav_draw_limit 1000 +wait 0509 ; // sm_cvar nav_flow_max_survivor_climb_height 70 +wait 0510 ; // sm_cvar nav_flow_max_survivor_drop_height 250 +wait 0511 ; // sm_cvar nav_generate_incremental_range 2000 +wait 0512 ; sm_cvar nav_lying_down_percent 0 +wait 0513 ; sm_cvar nav_max_auto_area_size 32768 // 46340.950012 // 56755.840862 // 65536 +wait 0514 ; sm_cvar nav_max_vis_delta_list_length 0 +wait 0515 ; // sm_cvar nav_obscure_range 300 +wait 0516 ; sm_cvar nav_potentially_visible_dot_tolerance 0.965925826 +wait 0517 ; // sm_cvar nav_save_history 100 +wait 0518 ; sm_cvar nav_selected_set_border_color "102 102 0 255" +wait 0519 ; sm_cvar nav_selected_set_color "255 255 204 102" +wait 0520 ; sm_cvar nav_show_area_info 0.2 +wait 0521 ; sm_cvar nav_slope_limit 0.70710678118 // 0.79335334029 +wait 0522 ; sm_cvar nav_slope_tolerance 0.13052619222 // 0.08715574274 +wait 0523 ; // sm_cvar nav_solid_props 1 +wait 0524 ; // sm_cvar nav_test_node_crouch_dir 4 +wait 0525 ; // sm_cvar nav_trouble_test_debug_duration 10 +wait 0526 ; // sm_cvar nb_acceleration 500 +wait 0527 ; sm_cvar nb_avoid 0 +wait 0528 ; // sm_cvar nb_avoid_interval 0.5 +wait 0529 ; sm_cvar nb_chase_lead_time 1 +wait 0530 ; sm_cvar nb_friction_forward 1 +wait 0531 ; sm_cvar nb_friction_sideways 4 +wait 0532 ; sm_cvar nb_goal_look_ahead_range 2147483648 +wait 0533 ; sm_cvar nb_gravity 2000 +wait 0534 ; sm_cvar nb_head_aim_settle_duration 0.066667 +wait 0535 ; sm_cvar nb_head_aim_steady_max_rate 1500 +wait 0536 ; sm_cvar nb_ladder_align_range 128 // 96 +wait 0537 ; sm_cvar nb_lean_forward_accel 150 +wait 0538 ; sm_cvar nb_lean_max_angle 22.5 // 30 +wait 0539 ; // sm_cvar nb_lean_rate 3 +wait 0540 ; sm_cvar nb_path_draw_inc 2147483648 +wait 0541 ; sm_cvar nb_path_segment_influence_radius 2147483648 +wait 0542 ; sm_cvar nb_saccade_speed 1500 +wait 0543 ; // sm_cvar nb_saccade_time 0.066667 +wait 0544 ; sm_cvar nb_speed_look_ahead_range 300 +wait 0545 ; sm_cvar nb_stuck_dump_filter_time_end 86400 +wait 0546 ; sm_cvar nb_update_framelimit 10 // 0 +wait 0547 ; sm_cvar nb_update_frequency 0.033333 +wait 0548 ; sm_cvar nb_update_maxslide 10 +wait 0549 ; sm_cvar nb_vision_notice_hidden_range 0 +wait 0550 ; // sm_cvar nb_yaw_rate 240 // 225 +wait 0551 ; // sm_cvar net_chan_stats_dump_top_msgs 0 +wait 0552 ; // sm_cvar net_chan_stats_lru 0 +wait 0553 ; sm_cvar net_compresspackets_minsize 1200 +wait 0554 ; sm_cvar net_maxcleartime 0.033333 +wait 0555 ; sm_cvar net_maxfilesize 64 +wait 0556 ; sm_cvar net_minroutable 1200 +wait 0557 ; // sm_cvar net_splitpacket_maxrate 72000 +wait 0558 ; // sm_cvar net_splitrate 2 +wait 0559 ; sm_cvar old_radiusdamage 0 +wait 0560 ; sm_cvar pain_pills_decay_rate 0.15 +wait 0561 ; // sm_cvar pain_pills_health_value 50 +wait 0562 ; // sm_cvar phys2_ccd_epsilon 0.00872653549 +wait 0563 ; sm_cvar phys2_num_threads 16 +wait 0564 ; // sm_cvar phys2_ragdoll_clamp_angular_velocity 30 +wait 0565 ; // sm_cvar phys2_ragdoll_clamp_linear_velocity 600 +wait 0566 ; sm_cvar phys2_ragdoll_force_magnitude 5.0 +wait 0567 ; // sm_cvar phys2_ragdoll_torque_magnitude 0.0 +wait 0568 ; // sm_cvar phys2_ragdoll_velocity 1 +wait 0569 ; sm_cvar phys2_shoot_speed 300 +wait 0570 ; sm_cvar phys2_vdb_host 74.91.113.130 +wait 0571 ; // sm_cvar phys2_version "Version 2.2 (w/scheduler), built Nov 15 2021 13:55:21" +wait 0572 ; sm_cvar phys_enable_experimental_optimizations 1 +wait 0573 ; sm_cvar phys_explosion_force 1.0 +wait 0574 ; sm_cvar phys_impactforcescale 1.0 +wait 0575 ; sm_cvar phys_penetration_error_time 0 +wait 0576 ; sm_cvar phys_pushscale 2.0 +wait 0577 ; sm_cvar phys_ragdoll_force_magnitude 0.5 +wait 0578 ; sm_cvar phys_shoot_torque 1000000 +wait 0579 ; // sm_cvar phys_stressbodyweights 5.0 +wait 0580 ; sm_cvar phys_timescale 1.0 +wait 0581 ; sm_cvar phys_upimpactforcescale 0.5 +wait 0582 ; sm_cvar PhysPMC 1 +wait 0583 ; sm_cvar physx_valve_dll 1 +wait 0584 ; // sm_cvar pipe_bomb_beep_interval_delta 0.025 +wait 0585 ; sm_cvar pipe_bomb_beep_min_interval 0.083333 +wait 0586 ; sm_cvar pipe_bomb_initial_beep_interval 0.533333 +wait 0587 ; // sm_cvar pipe_bomb_shake_amplitude 50 +wait 0588 ; // sm_cvar pipe_bomb_shake_radius 750 +wait 0589 ; sm_cvar pipe_bomb_timer_duration 7 +wait 0590 ; sm_cvar player_incap_use_radius 125 // 150 +wait 0591 ; sm_cvar player_throwforce 2250 // 2500 +wait 0592 ; sm_cvar player_use_radius 100 +wait 0593 ; sm_cvar precache_all_survivors 1 +wait 0594 ; sm_cvar prop_active_gib_limit 30 +wait 0595 ; sm_cvar prop_active_gib_max_fade_time 10 +wait 0596 ; sm_cvar props_break_max_pieces -1 +wait 0597 ; // sm_cvar props_break_max_pieces_perframe -1 +wait 0598 ; sm_cvar punch_angle_decay_rate 15 +wait 0599 ; sm_cvar r_AirboatViewDampenDamp 1 +wait 0600 ; sm_cvar r_AirboatViewDampenFreq 10 +wait 0601 ; sm_cvar r_AirboatViewZHeight 0 +wait 0602 ; sm_cvar r_ambientboost 1.0 +wait 0603 ; sm_cvar r_ambientfactor 10 +wait 0604 ; sm_cvar r_ambientfraction 1.0 +wait 0605 ; sm_cvar r_ambientmin 1.0 +wait 0606 ; sm_cvar r_decal_cover_count 2147483647 +wait 0607 ; sm_cvar r_decal_overlap_area 1.0 +wait 0608 ; sm_cvar r_decal_overlap_count 2147483647 +wait 0609 ; sm_cvar r_decals 2147483647 +wait 0610 ; sm_cvar r_drawmodelstatsoverlaydistance 1000 +wait 0611 ; // sm_cvar r_drawmodelstatsoverlaymax 2 // 86400000 +wait 0612 ; // sm_cvar r_drawmodelstatsoverlaymin 1 // 86400000 +wait 0613 ; // sm_cvar r_dscale_fardist 2000 +wait 0614 ; // sm_cvar r_dscale_farscale 10 +wait 0615 ; // sm_cvar r_dscale_neardist 100 +wait 0616 ; // sm_cvar r_dscale_nearscale 1 +wait 0617 ; // sm_cvar r_dynamic 1 +wait 0618 ; sm_cvar r_eyeglintlodpixels 20 +wait 0619 ; // sm_cvar r_eyemove 1 +wait 0620 ; // sm_cvar r_eyeshift_x 0.0 +wait 0621 ; // sm_cvar r_eyeshift_y 0.0 +wait 0622 ; // sm_cvar r_eyeshift_z 0.0 +wait 0623 ; // sm_cvar r_eyesize 0.0 +wait 0624 ; sm_cvar r_flashlightdepthtexture 1 +wait 0625 ; // sm_cvar r_flashlightscissor 1 +wait 0626 ; // sm_cvar r_flex 1 +wait 0627 ; // sm_cvar r_hunkalloclightmaps 1 +wait 0628 ; sm_cvar r_hwmorph 0 +wait 0629 ; sm_cvar r_itemblinkmax 0.5 +wait 0630 ; sm_cvar r_itemblinkrate 5.0 +wait 0631 ; // sm_cvar r_JeepFOV 90 +wait 0632 ; // sm_cvar r_JeepViewDampenDamp 1 +wait 0633 ; sm_cvar r_JeepViewDampenFreq 10 +wait 0634 ; sm_cvar r_JeepViewZHeight 10 +wait 0635 ; // sm_cvar r_lightaverage 1 +wait 0636 ; sm_cvar r_lightinterp 0 +wait 0637 ; sm_cvar r_lod 0 +wait 0638 ; sm_cvar r_maxmodeldecal 2147483647 +wait 0639 ; sm_cvar r_overlayfadeenable 1 +wait 0640 ; sm_cvar r_overlayfademax 2040 +wait 0641 ; sm_cvar r_overlayfademin 1530 // 1785 +wait 0642 ; sm_cvar r_queued_decals 1 +wait 0643 ; // sm_cvar r_randomflex 0 +wait 0644 ; // sm_cvar r_renderoverlayfragment 1 +wait 0645 ; sm_cvar r_shadowlod 0 +wait 0646 ; sm_cvar r_shadowlodbias 0 +wait 0647 ; // sm_cvar r_shadowrendertotexture 1 +wait 0648 ; sm_cvar r_spray_lifetime 2147483647 +wait 0649 ; sm_cvar r_staticprop_lod 0 +wait 0650 ; sm_cvar r_vehicleBrakeRate 2.0 +wait 0651 ; sm_cvar r_VehicleViewDampen 1.0 +wait 0652 ; sm_cvar ragdoll_door_uncollide_time 2 // 1.5 +wait 0653 ; sm_cvar ragdoll_force_to_sleep_time 3 // 2.5 +wait 0654 ; sm_cvar ragdoll_self_collision 0 +wait 0655 ; sm_cvar ragdoll_sleepaftertime 3 // 2.5 +wait 0656 ; sm_cvar ragdoll_slowdown 1 +wait 0657 ; sm_cvar ragdoll_slowdown_time 3 // 2.5 +wait 0658 ; // sm_cvar rcon_password BigBizzy101 +wait 0659 ; sm_cvar rescue_distance 4000 +wait 0660 ; // sm_cvar rescue_finale_ignore_distance 4000 +wait 0661 ; // sm_cvar rescue_finale_spawn_range 4000 +wait 0662 ; // sm_cvar rescue_ignore_distance 2000 +wait 0663 ; sm_cvar rescue_interval 1 +wait 0664 ; sm_cvar rescue_min_dead_time 30 +wait 0665 ; sm_cvar rescue_range 2000 +wait 0666 ; sm_cvar rescue_spawn_flow 1000 +wait 0667 ; sm_cvar rescue_spawn_range 4000 +wait 0668 ; sm_cvar rescue_yell_delay 3 +wait 0669 ; sm_cvar rescue_yell_interval 10 +wait 0670 ; // sm_cvar rpt_vprof_time 0.25 +wait 0671 ; sm_cvar rr_followup_maxdist 2000 +wait 0672 ; // sm_cvar rr_remarkable_maxdist 1500 +wait 0673 ; // sm_cvar rr_remarkable_world_entities_replay_limit 0 +wait 0674 ; sm_cvar sb_all_bot_game 1 +wait 0675 ; // sm_cvar sb_allow_leading 1 +wait 0676 ; sm_cvar sb_allow_shoot_through_survivors 0 +wait 0677 ; sm_cvar sb_battlestation_give_up_range_from_human 300 +wait 0678 ; sm_cvar sb_battlestation_human_hold_time 2 +wait 0679 ; sm_cvar sb_close_checkpoint_door_interval 4 +wait 0680 ; sm_cvar sb_close_threat_range 80 +wait 0681 ; sm_cvar sb_combat_saccade_speed 1500 +wait 0682 ; sm_cvar sb_debug_apoproach_wait_time 0 +wait 0683 ; sm_cvar sb_enforce_proximity_lookat_timeout 5 +wait 0684 ; sm_cvar sb_enforce_proximity_range 1000 +wait 0685 ; sm_cvar sb_far_hearing_range 3000 +wait 0686 ; // sm_cvar sb_flashlight 0 +wait 0687 ; sm_cvar sb_follow_stress_factor 0.0 +wait 0688 ; sm_cvar sb_friend_immobilized_reaction_time_expert 0 +wait 0689 ; sm_cvar sb_friend_immobilized_reaction_time_hard 0 +wait 0690 ; sm_cvar sb_friend_immobilized_reaction_time_normal 0 +wait 0691 ; sm_cvar sb_friend_immobilized_reaction_time_vs 0 +wait 0692 ; sm_cvar sb_hindrance_range 300 +wait 0693 ; sm_cvar sb_l4d1_survivor_behavior 0 +wait 0694 ; sm_cvar sb_locomotion_wait_threshold 2 +wait 0695 ; sm_cvar sb_max_battlestation_range_from_human 600 +wait 0696 ; sm_cvar sb_max_scavenge_separation 600 +wait 0697 ; sm_cvar sb_max_team_melee_weapons 4 +wait 0698 ; sm_cvar sb_min_attention_notice_time 0 +wait 0699 ; sm_cvar sb_min_orphan_time_to_cover 0 +wait 0700 ; sm_cvar sb_minigun_distance 32 +wait 0701 ; sm_cvar sb_narrow_corridor_width 64 // 96 // 128 +wait 0702 ; sm_cvar sb_near_hearing_range 2000 +wait 0703 ; sm_cvar sb_neighbor_range 600 +wait 0704 ; sm_cvar sb_normal_saccade_speed 1500 +wait 0705 ; sm_cvar sb_path_lookahead_range 500 +wait 0706 ; sm_cvar sb_perf_crawl_ang 7.5 +wait 0707 ; // sm_cvar sb_perf_crawl_dist 128 +wait 0708 ; sm_cvar sb_perf_crawl_time 1 +wait 0709 ; sm_cvar sb_pushscale 0.0 +wait 0710 ; sm_cvar sb_reachability_cache_lifetime 0 +wait 0711 ; // sm_cvar sb_reachable_cache_paranoia 1 +wait 0712 ; sm_cvar sb_rescue_vehicle_loading_range 50 +wait 0713 ; sm_cvar sb_revive_friend_distance 150 +wait 0714 ; sm_cvar sb_separation_danger_max_range 600 +wait 0715 ; sm_cvar sb_separation_danger_min_range 300 +wait 0716 ; sm_cvar sb_separation_range 300 +wait 0717 ; sm_cvar sb_sidestep_for_horde 1 +wait 0718 ; sm_cvar sb_temp_health_consider_factor 0.8 +wait 0719 ; sm_cvar sb_threat_close_range 80 +wait 0720 ; sm_cvar sb_threat_exposure_stop 2147483648 // 16777216 +wait 0721 ; sm_cvar sb_threat_exposure_walk 2147483648 // 16777216 +wait 0722 ; sm_cvar sb_threat_far_range 2000 +wait 0723 ; sm_cvar sb_threat_medium_range 1000 +wait 0724 ; sm_cvar sb_threat_very_close_range 60 +wait 0725 ; sm_cvar sb_threat_very_far_range 3000 +wait 0726 ; sm_cvar sb_toughness_buffer 20 +wait 0727 ; sm_cvar sb_use_button_range 500 +wait 0728 ; // sm_cvar sb_use_upgrades 1 +wait 0729 ; sm_cvar sb_vomit_blind_time 0 +wait 0730 ; // sm_cvar scavenge_cluster_bonus_time 15 +wait 0731 ; sm_cvar scavenge_cluster_range_squared 90000 // 65536 +wait 0732 ; sm_cvar scavenge_item_respawn_delay 15 // 9.716667 +wait 0733 ; sm_cvar scavenge_match_finished_delay 6 +wait 0734 ; sm_cvar scavenge_overtime_grace_time 0.8 +wait 0735 ; // sm_cvar scavenge_round_initial_time 90 +wait 0736 ; sm_cvar scavenge_round_restart_delay 15 +wait 0737 ; // sm_cvar scavenge_round_restart_delay_tied 15 +wait 0738 ; sm_cvar scavenge_round_setup_time 30 +wait 0739 ; sm_cvar scavenge_score_bonus_time 15 +wait 0740 ; sm_cvar scavenge_wanderer_respawn_chance 100 +wait 0741 ; sm_cvar scene_maxcaptionradius 1500 +wait 0742 ; sm_cvar shotgun_reload_cancel_delay 0 +wait 0743 ; sm_cvar shout_going_to_die_interval 10 +wait 0744 ; sm_cvar shout_make_way_interval 1 +wait 0745 ; sm_cvar shout_max_warn_range 3000 +wait 0746 ; sm_cvar shout_min_special_warn_interval 1 +wait 0747 ; sm_cvar shout_min_use_range 500 +wait 0748 ; sm_cvar shout_min_warn_interval 1 +wait 0749 ; sm_cvar shout_threat_range 3000 +wait 0750 ; // sm_cvar shout_view_motion_threshold 0.00872653549 +wait 0751 ; // sm_cvar shout_view_target_threahold 0.00872653549 +wait 0752 ; sm_cvar singlestep 0 +wait 0753 ; // sm_cvar sk_autoaim_mode 3 +wait 0754 ; // sm_cvar sk_player_arm 1 +wait 0755 ; // sm_cvar sk_player_chest 1 +wait 0756 ; sm_cvar sk_player_head 1 +wait 0757 ; // sm_cvar sk_player_leg 1 +wait 0758 ; // sm_cvar sk_player_stomach 1 +wait 0759 ; // sm_cvar skill 3 // 3.0000001192092895999 +wait 0760 ; sm_cvar slots_max_slots 31 // 32 +wait 0761 ; sm_cvar sm_unsilentjockey_always 1 +wait 0762 ; sm_cvar sm_unsilentjockey_enabled 1 +wait 0763 ; sm_cvar sm_unsilentjockey_time 2 +wait 0764 ; sm_cvar smoker_escape_range 10000 +wait 0765 ; sm_cvar smoker_pz_claw_dmg 6 +wait 0766 ; // sm_cvar smoker_tongue_delay 0 +wait 0767 ; // sm_cvar smoothstairs 0 +wait 0768 ; sm_cvar snd_foliage_db_loss 5 +wait 0769 ; sm_cvar snd_gain 1.0 +wait 0770 ; sm_cvar snd_gain_max 10.0 +wait 0771 ; sm_cvar snd_gain_min 1.0 +wait 0772 ; sm_cvar snd_refdb 100 +wait 0773 ; sm_cvar snd_refdist 50 +wait 0774 ; // sm_cvar snd_vox_globaltimeout 300 +wait 0775 ; // sm_cvar snd_vox_sectimetout 300 +wait 0776 ; // sm_cvar snd_vox_seqtimetout 300 +wait 0777 ; sm_cvar soundpatch_captionlength 3 // 5 +wait 0778 ; // sm_cvar spec_filter_infected any +wait 0779 ; sm_cvar spec_filter_survivors any +wait 0780 ; sm_cvar spec_freeze_time 0 +wait 0781 ; sm_cvar spec_freeze_traveltime 0.01 +wait 0782 ; // sm_cvar spit_scaling_min_scale 1.0 // 1.000000059604644689 +wait 0783 ; // sm_cvar spitter_pz_claw_dmg 4 +wait 0784 ; sm_cvar ss_voice_hearpartner 1 +wait 0785 ; sm_cvar steamworks_stats_disable 0 +wait 0786 ; sm_cvar step_spline 1 +wait 0787 ; sm_cvar still_vel_limit 1 +wait 0788 ; sm_cvar still_view_accel_limit 1000 +wait 0789 ; // sm_cvar suitvolume 10.0 +wait 0790 ; sm_cvar survival_boomer_limit_increase 1 +wait 0791 ; sm_cvar survival_charger_limit_increase 1 +wait 0792 ; sm_cvar survival_generate_fake_times 0 +wait 0793 ; sm_cvar survival_horde_stage_interval 80 +wait 0794 ; sm_cvar survival_horde_stage_interval_decay 1 +wait 0795 ; // sm_cvar survival_hunter_limit_increase 1 +wait 0796 ; // sm_cvar survival_jockey_limit_increase 1 +wait 0797 ; sm_cvar survival_lull_time 10 +wait 0798 ; sm_cvar survival_lull_time_increment 10 +wait 0799 ; sm_cvar survival_lull_time_max 10 +wait 0800 ; sm_cvar survival_max_boomers 3 +wait 0801 ; // sm_cvar survival_max_chargers 2 +wait 0802 ; // sm_cvar survival_max_hunters 3 +wait 0803 ; // sm_cvar survival_max_jockeys 2 +wait 0804 ; // sm_cvar survival_max_smokers 4 // 3 +wait 0805 ; // sm_cvar survival_max_specials 8 +wait 0806 ; // sm_cvar survival_max_spitters 3 +wait 0807 ; // sm_cvar survival_round_restart_delay 12 +wait 0808 ; // sm_cvar survival_smoker_limit_increase 1 +wait 0809 ; // sm_cvar survival_special_limit_increase 1 +wait 0810 ; sm_cvar survival_special_spawn_interval 60 +wait 0811 ; // sm_cvar survival_special_spawn_interval_decay 1 +wait 0812 ; sm_cvar survival_special_stage_interval 120 +wait 0813 ; // sm_cvar survival_spitter_limit_increase 1 +wait 0814 ; // sm_cvar survival_tank_multiple_spawn_delay 10 +wait 0815 ; sm_cvar survival_tank_stage_interval 100 +wait 0816 ; sm_cvar survival_tank_stage_interval_decay 10 +wait 0817 ; // sm_cvar survivor_accuracy_upgrade_factor 0.5 +wait 0818 ; sm_cvar survivor_burn_factor_easy 0.0 +wait 0819 ; sm_cvar survivor_burn_factor_expert 0.3 +wait 0820 ; sm_cvar survivor_burn_factor_hard 0.2 +wait 0821 ; // sm_cvar survivor_burn_factor_normal 0.1 +wait 0822 ; sm_cvar survivor_calm_damage_delay 10 +wait 0823 ; sm_cvar survivor_calm_deploy_delay 10 +wait 0824 ; sm_cvar survivor_calm_intensity 0.1 +wait 0825 ; sm_cvar survivor_calm_recent_enemy_delay 10 +wait 0826 ; sm_cvar survivor_calm_weapon_delay 10 +wait 0827 ; sm_cvar survivor_crawl_speed 100 +wait 0828 ; sm_cvar survivor_crouch_speed 80 +wait 0829 ; sm_cvar survivor_damage_speed_factor 0.3 +wait 0830 ; sm_cvar survivor_drag_speed_multiplier 0.8 // 0.818181818 +wait 0831 ; sm_cvar survivor_ff_avoidance 1 +wait 0832 ; sm_cvar survivor_ff_avoidance_pitch 0 +wait 0833 ; sm_cvar survivor_ff_avoidance_yaw 0 +wait 0834 ; sm_cvar survivor_ff_tolerance 0 +wait 0835 ; sm_cvar survivor_fog_vocalize_percent 1.0 +wait 0836 ; sm_cvar survivor_friendly_fire_factor_easy 0.0 +wait 0837 ; sm_cvar survivor_friendly_fire_factor_expert 0.3 +wait 0838 ; sm_cvar survivor_friendly_fire_factor_hard 0.2 +wait 0839 ; // sm_cvar survivor_friendly_fire_factor_normal 0.1 +wait 0840 ; sm_cvar survivor_fumes_walk_speed 100 +wait 0841 ; sm_cvar survivor_give_attract_timeout 15 +wait 0842 ; sm_cvar survivor_hanging_eye_height 100 +wait 0843 ; sm_cvar survivor_hanging_from_tongue_eye_height 60 +wait 0844 ; sm_cvar survivor_helping_hand_inhibit_duration 0 +wait 0845 ; // sm_cvar survivor_hitsound_interval_timer 0.1 +wait 0846 ; // sm_cvar survivor_incap_decay_rate 3 +wait 0847 ; // sm_cvar survivor_incap_health 300 +wait 0848 ; sm_cvar survivor_incap_hopeless_decay_rate 6 +wait 0849 ; // sm_cvar survivor_incap_max_fall_damage 200 +wait 0850 ; sm_cvar survivor_incap_tongued_decay_rate 20 +wait 0851 ; sm_cvar survivor_incapacitated_accuracy_penalty 0.1 +wait 0852 ; sm_cvar survivor_incapacitated_cycle_time 0.283333 +wait 0853 ; sm_cvar survivor_incapacitated_dizzy_severity 0 +wait 0854 ; sm_cvar survivor_incapacitated_dizzy_timer 5 +wait 0855 ; sm_cvar survivor_incapacitated_eye_height 16 +wait 0856 ; sm_cvar survivor_incapacitated_reload_multiplier 1.0 +wait 0857 ; sm_cvar survivor_incapacitated_roll 15 +wait 0858 ; sm_cvar survivor_intensity_decay_threat_range 1000 +wait 0859 ; sm_cvar survivor_intensity_recent_enemy_duration 10 +wait 0860 ; sm_cvar survivor_it_duration 18 +wait 0861 ; sm_cvar survivor_knockdown_roll -15 +wait 0862 ; // sm_cvar survivor_lean 0 +wait 0863 ; sm_cvar survivor_ledge_grab_ground_check_time 1 +wait 0864 ; // sm_cvar survivor_ledge_grab_health 300 +wait 0865 ; // sm_cvar survivor_limit 4 // 5 +wait 0866 ; // sm_cvar survivor_limp_health 40 +wait 0867 ; sm_cvar survivor_limp_walk_speed 100 +wait 0868 ; // sm_cvar survivor_max_incapacitated_count 2 +wait 0869 ; sm_cvar survivor_max_lunge_stagger_distance 100 +wait 0870 ; sm_cvar survivor_max_lunge_stagger_speed 200 +wait 0871 ; // sm_cvar survivor_max_tongue_stagger_distance 200 +wait 0872 ; // sm_cvar survivor_max_tongue_stagger_duration 1 +wait 0873 ; sm_cvar survivor_max_tug_distance 500 +wait 0874 ; sm_cvar survivor_max_tug_duration 5 +wait 0875 ; sm_cvar survivor_min_lunge_stagger_speed 0 +wait 0876 ; sm_cvar survivor_pounce_victim_eye_height 30 +wait 0877 ; sm_cvar survivor_push 0 +wait 0878 ; sm_cvar survivor_respawn_with_guns 0 +wait 0879 ; // sm_cvar survivor_revive_after_drag 0 +wait 0880 ; // sm_cvar survivor_revive_continuous_fire 1 +wait 0881 ; sm_cvar survivor_revive_duration 4.8 +wait 0882 ; // sm_cvar survivor_revive_health 30 +wait 0883 ; sm_cvar survivor_speed 220 // 200 +wait 0884 ; sm_cvar survivor_speed_boost_factor 1.09090909 +wait 0885 ; sm_cvar survivor_sprint_multiplier 1.46666667 +wait 0886 ; sm_cvar survivor_stun_immunity_duration 0 +wait 0887 ; sm_cvar survivor_team_hit_pitch_max 0 +wait 0888 ; sm_cvar survivor_team_hit_pitch_min 0 +wait 0889 ; sm_cvar survivor_team_hit_yaw_max 0 +wait 0890 ; sm_cvar survivor_team_hit_yaw_min 0 +wait 0891 ; sm_cvar survivor_teammatefocus_speed 30 +wait 0892 ; sm_cvar survivor_teammatefocus_stickyness 10 +wait 0893 ; sm_cvar survivor_unstoppable_speed 160 +wait 0894 ; sm_cvar survivor_upgrade_reload_duration 1.0 +wait 0895 ; sm_cvar survivor_vision_range 2000 // 3000 +wait 0896 ; sm_cvar survivor_vision_range_obscured 1000 // 1500 +wait 0897 ; // sm_cvar sv__ragdoll_max_remove_per_frame 1 +wait 0898 ; sm_cvar sv_accelerate 5.454545 +wait 0899 ; sm_cvar sv_airaccelerate 15 +wait 0900 ; // sm_cvar sv_allow_lobby_connect_only 0 +wait 0901 ; sm_cvar sv_allow_votes 1 +wait 0902 ; // sm_cvar sv_allow_wait_command 1 +wait 0903 ; // sm_cvar sv_alternateticks 1 +wait 0904 ; sm_cvar sv_autosave 1 +wait 0905 ; sm_cvar sv_backspeed 1.0 +wait 0906 ; // sm_cvar sv_banid_dev_enabled 1 +wait 0907 ; // sm_cvar sv_banid_enabled 1 +wait 0908 ; sm_cvar sv_benchmark_numticks 0 +wait 0909 ; sm_cvar sv_bounce 0.2 +wait 0910 ; sm_cvar sv_client_cmdrate_difference 0 +wait 0911 ; sm_cvar sv_client_max_interp_ratio 30 +wait 0912 ; sm_cvar sv_client_min_interp_ratio 0 +wait 0913 ; sm_cvar sv_client_predict 1 +wait 0914 ; sm_cvar sv_clockcorrection_msecs 50 +wait 0915 ; // sm_cvar sv_consistency 0 +wait 0916 ; // sm_cvar sv_contact EricMizusawa02@gmail.com +wait 0917 ; // sm_cvar sv_creationtickcheck 1 +wait 0918 ; // sm_cvar sv_cycle_latch_timer 0.2 // 0.1 +wait 0919 ; sm_cvar sv_demo_entity_record_rate 60 +wait 0920 ; sm_cvar sv_disable_glow_faritems 0 +wait 0921 ; sm_cvar sv_doors_push_players 1 +wait 0922 ; // sm_cvar sv_downloadurl "| Steam Group - steamcommunity.com/groups/bizzymod | Website - bizzymod.com | Stats - bizzymod.com/l4d_stats | Source Bans - bizzymod.com/bans/ | Github Repository - github.com/MoonL4D2/BizzyMoon | Server IP - 74.91.113.130:27015 |" +wait 0923 ; sm_cvar sv_extra_client_connect_time 15 // 10 +wait 0924 ; sm_cvar sv_fallen_survivor_health_multiplier 2 +wait 0925 ; sm_cvar sv_filterban 1 +wait 0926 ; sm_cvar sv_footstepinterval 0.166667 +wait 0927 ; // sm_cvar sv_force_time_of_day -1 +wait 0928 ; // sm_cvar sv_forcepreload 1 +wait 0929 ; // sm_cvar sv_friction 3.870968 // 4.285714 +wait 0930 ; sm_cvar sv_gameinstructor_disable 1 +wait 0931 ; // sm_cvar sv_gametypes coop,realism,versus,teamversus,realismversus,teamrealismversus,survival,versussurvival,teamversussurvival,scavenge,teamscavenge,mutation,community,l4d1coop,l4d1vs,l4d1survival,tankrun,gunbrain,custom,dash,shootzones,holdout,rocketdude,wave, +wait 0932 ; sm_cvar sv_gravity 749.39976 // 731.121717 // 713.714057 +wait 0933 ; sm_cvar sv_healing_gnome_replenish_rate 3 // 4 +wait 0934 ; sm_cvar sv_hibernate_ms 0 +wait 0935 ; sm_cvar sv_hibernate_ms_vgui 0 +wait 0936 ; sm_cvar sv_hibernate_postgame_delay 0 // 86400 +wait 0937 ; sm_cvar sv_hibernate_when_empty 0 +wait 0938 ; sm_cvar sv_hosting_lobby 1 +wait 0939 ; sm_cvar sv_infected_ceda_vomitjar_probability 0.125 +wait 0940 ; sm_cvar sv_infected_police_tonfa_probability 0.25 +wait 0941 ; sm_cvar sv_infected_riot_control_tonfa_probability 0.25 +wait 0942 ; sm_cvar sv_infected_scale_max 1.015625 // 1.03125 +wait 0943 ; sm_cvar sv_infected_scale_min 1.015625 // 1.03125 +wait 0944 ; sm_cvar sv_lagflushbonecache 0 +wait 0945 ; // sm_cvar sv_lan 0 +wait 0946 ; // sm_cvar sv_log_onefile 1 +wait 0947 ; // sm_cvar sv_logbans 1 +wait 0948 ; // sm_cvar sv_logecho 1 +wait 0949 ; // sm_cvar sv_logfile 1 +wait 0950 ; // sm_cvar sv_logsdir logs +wait 0951 ; sm_cvar sv_max_queries_sec 3 +wait 0952 ; sm_cvar sv_max_queries_sec_global 15 +wait 0953 ; sm_cvar sv_max_queries_window 15 +wait 0954 ; sm_cvar sv_max_usercmd_future_ticks 12 +wait 0955 ; sm_cvar sv_maxclientframes 1000 +wait 0956 ; sm_cvar sv_maxcmdrate 120 +wait 0957 ; // sm_cvar sv_maxplayers 31 // 32 +wait 0958 ; sm_cvar sv_maxrate 144000 +wait 0959 ; // sm_cvar sv_maxreplay 0 +wait 0960 ; sm_cvar sv_maxspeed 1000 +wait 0961 ; sm_cvar sv_maxunlag 0.5 // 1.0 +wait 0962 ; sm_cvar sv_maxupdaterate 120 +wait 0963 ; sm_cvar sv_maxvelocity 1500 // 1498.79952 // 1414.213563 +wait 0964 ; sm_cvar sv_mincmdrate 120 +wait 0965 ; sm_cvar sv_minrate 72000 +wait 0966 ; sm_cvar sv_minupdaterate 60 +wait 0967 ; // sm_cvar sv_multiplayer_maxtempentities 32 +wait 0968 ; sm_cvar sv_multiplayer_sounds 32 +wait 0969 ; // sm_cvar sv_netvisdist 10000 +wait 0970 ; // sm_cvar sv_noclipaccelerate 5 +wait 0971 ; // sm_cvar sv_noclipfriction 4 // 4.285714 +wait 0972 ; // sm_cvar sv_noclipspeed 3 +wait 0973 ; sm_cvar sv_parallel_packentities 2 +wait 0974 ; sm_cvar sv_parallel_sendsnapshot 2 +wait 0975 ; // sm_cvar sv_pausable 0 +wait 0976 ; sm_cvar sv_pausable_dev 0 +wait 0977 ; sm_cvar sv_pausable_dev_ds 0 +wait 0978 ; sm_cvar sv_permawipe 0 +wait 0979 ; sm_cvar sv_player_max_separation_force 1000 +wait 0980 ; sm_cvar sv_player_stuck_tolerance 3 // 2.5 +wait 0981 ; sm_cvar sv_playerperfhistorycount 128 +wait 0982 ; sm_cvar sv_prop_door_max_close_attempts 20 +wait 0983 ; // sm_cvar sv_pure_kick_clients 0 +wait 0984 ; sm_cvar sv_pushaway_clientside 2 +wait 0985 ; sm_cvar sv_pushaway_clientside_size 0 +wait 0986 ; sm_cvar sv_pushaway_force 200000 // 100000 +wait 0987 ; // sm_cvar sv_pushaway_max_force 5000 // 10000 +wait 0988 ; // sm_cvar sv_pushaway_max_player_force 10000 +wait 0989 ; // sm_cvar sv_pushaway_min_force 1000 +wait 0990 ; sm_cvar sv_pushaway_min_player_speed 1 +wait 0991 ; sm_cvar sv_pushaway_player_force 100000 +wait 0992 ; // sm_cvar sv_pvsskipanimation 1 +wait 0993 ; // sm_cvar sv_pz_endgame_vote_period 12 +wait 0994 ; sm_cvar sv_pz_endgame_vote_post_period 3 +wait 0995 ; // sm_cvar sv_quota_stringcmdspersecond 2147483647 +wait 0996 ; sm_cvar sv_ragdoll_maxcount 80 // 32767 // 2147483647 +wait 0997 ; sm_cvar sv_ragdoll_maxcount_boss 4 // 255 // 2147483647 +wait 0998 ; // sm_cvar sv_ragdoll_maxcount_generic 60 // 32767 // 2147483647 +wait 0999 ; // sm_cvar sv_ragdoll_maxcount_gib 30 // 32767 // 2147483647 +wait 1000 ; // sm_cvar sv_ragdoll_maxcount_special 12 // 255 // 2147483647 +wait 1001 ; sm_cvar sv_ragdoll_maxcount_survivor 4 // 32 // 2147483647 +wait 1002 ; // sm_cvar sv_rcon_banpenalty 0 +wait 1003 ; // sm_cvar sv_rcon_log 0 +wait 1004 ; // sm_cvar sv_rcon_maxfailures 20 +wait 1005 ; // sm_cvar sv_rcon_minfailures 20 +wait 1006 ; // sm_cvar sv_rcon_minfailuretime 1 +wait 1007 ; sm_cvar sv_regeneration_wait_time 0 +wait 1008 ; // sm_cvar sv_region 255 +wait 1009 ; // sm_cvar sv_rescue_disabled 0 +wait 1010 ; sm_cvar sv_reservation_grace 3 +wait 1011 ; // sm_cvar sv_reservation_timeout 5 +wait 1012 ; sm_cvar sv_rollangle 1 +wait 1013 ; sm_cvar sv_rollspeed 1000 +wait 1014 ; sm_cvar sv_script_think_interval 0.066667 +wait 1015 ; // sm_cvar sv_search_key bizzymod +wait 1016 ; sm_cvar sv_showanimstate_activities 0 +wait 1017 ; // sm_cvar sv_specaccelerate 5 +wait 1018 ; // sm_cvar sv_specnoclip 1 +wait 1019 ; // sm_cvar sv_specspeed 3 +wait 1020 ; sm_cvar sv_spectatoridletime 5 +wait 1021 ; sm_cvar sv_stats 0 +wait 1022 ; // sm_cvar sv_steamgroup 38693222, +wait 1023 ; // sm_cvar sv_steamgroup_exclusive 1 +wait 1024 ; sm_cvar sv_stepsize 18.968873 // 18.968873023986815099999 // 19.968995 // 19.96899509429931209 +wait 1025 ; sm_cvar sv_stopspeed 80 +wait 1026 ; // sm_cvar sv_tags coop,realism,secure,versus, +wait 1027 ; sm_cvar sv_teststepsimulation 0 +wait 1028 ; sm_cvar sv_timeout 30 +wait 1029 ; sm_cvar sv_tracereffects_limit_general 30 +wait 1030 ; sm_cvar sv_unlag_fixstuck 1 +wait 1031 ; // sm_cvar sv_unlockedchapters 2147483647 +wait 1032 ; sm_cvar sv_vehicle_autoaim_scale 10 +wait 1033 ; // sm_cvar sv_visiblemaxplayers -1 +wait 1034 ; // sm_cvar sv_voicecodec vaudio_celt // steam +wait 1035 ; // sm_cvar sv_voiceenable 1 +wait 1036 ; sm_cvar sv_vote_command_delay 1.75 // 2 // 2.5 +wait 1037 ; sm_cvar sv_vote_creation_timer 0 +wait 1038 ; sm_cvar sv_vote_issue_change_difficulty_allowed 1 +wait 1039 ; sm_cvar sv_vote_issue_change_map_later_allowed 1 +wait 1040 ; sm_cvar sv_vote_issue_change_map_now_allowed 1 +wait 1041 ; sm_cvar sv_vote_issue_change_mission_allowed 1 +wait 1042 ; sm_cvar sv_vote_issue_kick_allowed 1 +wait 1043 ; sm_cvar sv_vote_issue_restart_game_allowed 1 +wait 1044 ; sm_cvar sv_vote_kick_ban_duration 1 +wait 1045 ; sm_cvar sv_vote_plr_map_limit 2147483647 // 86400000 +wait 1046 ; sm_cvar sv_vote_timer_duration 12 +wait 1047 ; sm_cvar sv_wateraccelerate 1000 +wait 1048 ; sm_cvar sv_waterdist 0 +wait 1049 ; sm_cvar sv_waterfriction 0 +wait 1050 ; // sm_cvar sv_zombie_touch_trigger_delay 1 +wait 1051 ; // sm_cvar sv_zoo_spacing 64 +wait 1052 ; // sm_cvar sv_zoo_spacing_rows 192 +wait 1053 ; // sm_cvar sv_zoo_spacing_wrap 80 +wait 1054 ; // sm_cvar sv_zoo_tint_clr "153 153 153 255" +wait 1055 ; sm_cvar sys_minidumpexpandedspew 0 +wait 1056 ; // sm_cvar sys_minidumpspewlines 0 +wait 1057 ; sm_cvar tank_attack_range 60 // 56 +wait 1058 ; sm_cvar tank_burn_duration 90 +wait 1059 ; sm_cvar tank_burn_duration_expert 90 +wait 1060 ; sm_cvar tank_burn_duration_hard 90 +wait 1061 ; sm_cvar tank_fist_radius 16 +wait 1062 ; sm_cvar tank_ground_pound_duration 2 +wait 1063 ; sm_cvar tank_ground_pound_reveal_distance 800 +wait 1064 ; sm_cvar tank_punch_getup_scale 0.33333333 +wait 1065 ; sm_cvar tank_pz_forward 0.0 +wait 1066 ; // sm_cvar tank_punch_getup_scale 0.33333333 +wait 1067 ; sm_cvar tank_run_spawn_delay 10 +wait 1068 ; sm_cvar tank_stasis_time_suicide 86400 +wait 1069 ; sm_cvar tank_stuck_time_choose_new_target 1 +wait 1070 ; sm_cvar tank_stuck_time_suicide 86400 +wait 1071 ; sm_cvar tank_stuck_visibility_tolerance_choose_new_target 2 +wait 1072 ; sm_cvar tank_stuck_visibility_tolerance_suicide 86400 +wait 1073 ; // sm_cvar tank_swing_arc 180 // 150 +wait 1074 ; sm_cvar tank_swing_duration 0.183333 +wait 1075 ; sm_cvar tank_swing_fast_interval 1.466667 +wait 1076 ; sm_cvar tank_swing_interval 1.466667 +wait 1077 ; sm_cvar tank_swing_miss_interval 1.466667 +wait 1078 ; sm_cvar tank_swing_physics_prop_force 2.0 +wait 1079 ; sm_cvar tank_swing_range 60 // 56 +wait 1080 ; sm_cvar tank_swing_yaw 90 // 75 +wait 1081 ; sm_cvar tank_throw_aim_error 0 +wait 1082 ; sm_cvar tank_throw_allow_range 600 +wait 1083 ; sm_cvar tank_throw_lead_time_factor 0.4 +wait 1084 ; sm_cvar tank_throw_loft_rate 0.01308959557 // 0.015 +wait 1085 ; sm_cvar tank_throw_max_loft_angle 37.5 +wait 1086 ; sm_cvar tank_throw_min_interval 10 +wait 1087 ; sm_cvar tank_visibility_tolerance_suicide 86400 +wait 1088 ; sm_cvar tank_windup_time 0.483333 +wait 1089 ; sm_cvar tauntfrequency 0 +wait 1090 ; sm_cvar telemetry_filtervalue 1000 +wait 1091 ; sm_cvar telemetry_server 74.91.113.130 +wait 1092 ; sm_cvar tf_arena_max_streak 10 +wait 1093 ; sm_cvar tf_arena_preround_time 5 +wait 1094 ; sm_cvar tf_escort_score_rate 2 +wait 1095 ; // sm_cvar think_limit 0 +wait 1096 ; sm_cvar tick_door_speed 2.0 +wait 1097 ; sm_cvar tongue_bend_point_deflection 4 +wait 1098 ; sm_cvar tongue_break_from_damage_amount 500 +wait 1099 ; sm_cvar tongue_bullet_radius 8 +wait 1100 ; sm_cvar tongue_choke_damage_amount 6 +wait 1101 ; // sm_cvar tongue_choke_damage_interval 1 +wait 1102 ; sm_cvar tongue_cone_start_tolerance 0.2588190451 // 0.13052619222 +wait 1103 ; sm_cvar tongue_drag_damage_amount 4 +wait 1104 ; sm_cvar tongue_dropping_to_ground_time 1 +wait 1105 ; // sm_cvar tongue_fly_speed 1100 +wait 1106 ; sm_cvar tongue_gravity_force 3000 +wait 1107 ; sm_cvar tongue_health 200 +wait 1108 ; sm_cvar tongue_hit_delay 10 +wait 1109 ; sm_cvar tongue_los_forgiveness_time 1.5 +wait 1110 ; sm_cvar tongue_miss_delay 3 +wait 1111 ; // sm_cvar tongue_no_progress_break_interval 10 +wait 1112 ; // sm_cvar tongue_no_progress_choke_early_ambush_delay 0.5 +wait 1113 ; sm_cvar tongue_no_progress_choke_early_delay 1 +wait 1114 ; sm_cvar tongue_no_progress_choke_time 0.5 +wait 1115 ; sm_cvar tongue_no_progress_damage_interval 0.5 +wait 1116 ; sm_cvar tongue_no_progress_tolerance 32 +wait 1117 ; sm_cvar tongue_player_dropping_to_ground_time 0.5 +wait 1118 ; sm_cvar tongue_range 900 +wait 1119 ; // sm_cvar tongue_release_fatigue_penalty 2500 +wait 1120 ; sm_cvar tongue_start_pull_delay 0 +wait 1121 ; sm_cvar tongue_vertical_choke_dot 0.0 +wait 1122 ; sm_cvar tongue_vertical_choke_height 30 +wait 1123 ; sm_cvar tongue_vertical_choke_time_off_ground 0.5 +wait 1124 ; sm_cvar tongue_victim_acceleration 10 +wait 1125 ; sm_cvar tongue_victim_accuracy_penalty 0.0 // 0.05 +wait 1126 ; sm_cvar tongue_victim_max_speed 200 +wait 1127 ; sm_cvar tongue_vs_cone_start_tolerance 0.01745241 +wait 1128 ; // sm_cvar tp_schedule_post_think 0 +wait 1129 ; // sm_cvar tv_autoretry 0 +wait 1130 ; sm_cvar tv_chattimelimit 0 +wait 1131 ; sm_cvar tv_delay 0 +wait 1132 ; sm_cvar tv_maxclients 32 +wait 1133 ; sm_cvar tv_maxrate 72000 +wait 1134 ; sm_cvar tv_name BizzyTV +wait 1135 ; sm_cvar tv_snapshotrate 15 +wait 1136 ; sm_cvar tv_timeout 10 +wait 1137 ; sm_cvar tv_title BizzyTV +wait 1138 ; sm_cvar upgrade_explosive_bullet_force 10 +wait 1139 ; sm_cvar upgrade_explosive_slug_force 20 +wait 1140 ; sm_cvar upgrade_laser_sight_spread_factor 0.5 +wait 1141 ; sm_cvar upgrade_pack_use_duration 1.5 +wait 1142 ; sm_cvar upgradepack_forward_dist 16 +wait 1143 ; sm_cvar upgradepack_max_drop_dist 0 +wait 1144 ; sm_cvar versus_boss_buffer 2000 +wait 1145 ; sm_cvar versus_boss_flow_max 0.8 +wait 1146 ; sm_cvar versus_boss_flow_max_finale 0.9 +wait 1147 ; sm_cvar versus_boss_flow_max_intro 0.8 +wait 1148 ; sm_cvar versus_boss_flow_min 0.2 +wait 1149 ; sm_cvar versus_boss_flow_min_finale 0.4 +wait 1150 ; sm_cvar versus_boss_flow_min_intro 0.3 +wait 1151 ; sm_cvar versus_boss_padding_max 0.0 +wait 1152 ; sm_cvar versus_boss_padding_min 0.0 +wait 1153 ; sm_cvar versus_force_start_time 180 +wait 1154 ; sm_cvar versus_level_restart_delay 6 +wait 1155 ; sm_cvar versus_marker_num 0 +wait 1156 ; sm_cvar versus_round_restarttimer 20 +wait 1157 ; sm_cvar versus_round_restarttimer_finale 20 +wait 1158 ; // sm_cvar versus_shove_hunter_fov 90 +wait 1159 ; // sm_cvar versus_shove_hunter_fov_pouncing 45 +wait 1160 ; // sm_cvar versus_shove_jockey_fov_leaping 45 +wait 1161 ; sm_cvar versus_special_respawn_interval 10 +wait 1162 ; sm_cvar versus_tank_chance 1.0 +wait 1163 ; sm_cvar versus_tank_chance_finale 1.0 +wait 1164 ; sm_cvar versus_tank_chance_intro 1.0 +wait 1165 ; sm_cvar versus_tank_flow_team_variation 0.0 +wait 1166 ; sm_cvar versus_wandering_zombie_density 0.025 // 0.03125 // 0.04 +wait 1167 ; sm_cvar versus_witch_chance 0.0 +wait 1168 ; sm_cvar versus_witch_chance_finale 0.0 +wait 1169 ; sm_cvar versus_witch_chance_intro 0.0 +wait 1170 ; sm_cvar versus_witch_flow_team_variation 0.0 +wait 1171 ; // sm_cvar view_offset 0 +wait 1172 ; sm_cvar view_offset_down 0 +wait 1173 ; sm_cvar view_offset_forward 0 +wait 1174 ; sm_cvar view_offset_up 0 +wait 1175 ; sm_cvar vismon_poll_frequency 0.5 +wait 1176 ; // sm_cvar vismon_trace_limit 10 +wait 1177 ; sm_cvar vomitjar_duration_infected_bot 30 +wait 1178 ; sm_cvar vomitjar_duration_infected_pz 30 +wait 1179 ; sm_cvar vomitjar_duration_survivor 15 +wait 1180 ; sm_cvar vomitjar_radius 200 +wait 1181 ; sm_cvar vprof_server_spike_threshold 999 // 1000 +wait 1182 ; sm_cvar vs_defib_penalty 0 +wait 1183 ; sm_cvar vs_incap_bonus 25 +wait 1184 ; sm_cvar vs_max_team_switches 2147483647 // 86400000 +wait 1185 ; sm_cvar vs_score_pp_health 0.25 +wait 1186 ; // sm_cvar vs_score_pp_healthbuffer 0.25 +wait 1187 ; // sm_cvar vs_survival_bonus 25 +wait 1188 ; sm_cvar vs_survivor_damage_reduction 1.0 +wait 1189 ; // sm_cvar vs_tank_damage 25 +wait 1190 ; sm_cvar vs_tank_pound_damage 36 +wait 1191 ; // sm_cvar vs_tank_rock_damage 24 +wait 1192 ; sm_cvar vs_threat_initial_distance_first_map_max 10000 +wait 1193 ; sm_cvar vs_threat_initial_distance_first_map_min 4000 +wait 1194 ; // sm_cvar vs_threat_initial_distance_max 8000 +wait 1195 ; sm_cvar vs_threat_initial_distance_min 2000 +wait 1196 ; // sm_cvar vs_threat_radius 200 +wait 1197 ; // sm_cvar vs_tiebreak_bonus 0 +wait 1198 ; sm_cvar witch_rage_ramp_duration 3 +wait 1199 ; sm_cvar xbox_steering_deadzone 0.05 // 0.1 +wait 1200 ; sm_cvar z_acquire_far_range 2000 +wait 1201 ; // sm_cvar z_acquire_far_time 5 +wait 1202 ; // sm_cvar z_acquire_near_range 200 +wait 1203 ; // sm_cvar z_acquire_near_time 1 +wait 1204 ; // sm_cvar z_acquire_time_variance_factor 0 +wait 1205 ; sm_cvar z_added_light_max 0.5 +wait 1206 ; sm_cvar z_added_light_min 0.05 +wait 1207 ; sm_cvar z_alert_dot 0.2588190451 +wait 1208 ; // sm_cvar z_alert_range 1000 +wait 1209 ; sm_cvar z_anim_idle_speed_max 80 +wait 1210 ; sm_cvar z_anim_idle_speed_min 1 +wait 1211 ; sm_cvar z_attack_change_target_range 40 +wait 1212 ; sm_cvar z_attack_flow_range 2000 +wait 1213 ; sm_cvar z_attack_incapacitated_damage 3 +wait 1214 ; sm_cvar z_attack_infected_it_damage 5 +wait 1215 ; sm_cvar z_attack_interval 0.5 +wait 1216 ; sm_cvar z_attack_max_range 40 +wait 1217 ; sm_cvar z_attack_min_range 16 // 10 +wait 1218 ; sm_cvar z_attack_movement_penalty 0.7 // 0.6 +wait 1219 ; sm_cvar z_attack_on_the_run_range 40 +wait 1220 ; sm_cvar z_attack_pz_it_damage 100 +wait 1221 ; sm_cvar z_attention_range_lying_modifier 0.25 // 1.0 +wait 1222 ; sm_cvar z_attention_range_sitting_modifier 0.5 // 1.0 +wait 1223 ; // sm_cvar z_avoid_max_range 100 +wait 1224 ; sm_cvar z_avoid_min_range 50 +wait 1225 ; sm_cvar z_avoid_power 5 +wait 1226 ; sm_cvar z_avoidforce 5000 +wait 1227 ; sm_cvar z_background_limit 40 +wait 1228 ; sm_cvar z_backspeed 500 +wait 1229 ; // sm_cvar z_bbq_min 0.0 +wait 1230 ; // sm_cvar z_bbq_rate 0.01 +wait 1231 ; // sm_cvar z_boomer_limit 1 +wait 1232 ; sm_cvar z_boomer_near_dist 10000 +wait 1233 ; // sm_cvar z_boundary_max_range 10000 // 32768 +wait 1234 ; // sm_cvar z_boundary_spread_speed 1000 +wait 1235 ; sm_cvar z_brawl_chance 0 +wait 1236 ; sm_cvar z_breakable_damage 25 +wait 1237 ; sm_cvar z_burn_max 1.0 +wait 1238 ; // sm_cvar z_burn_rate 0.01 +wait 1239 ; sm_cvar z_burning_lifetime 15 +wait 1240 ; sm_cvar z_carry_max_mass 100 +wait 1241 ; sm_cvar z_chance 100 +wait 1242 ; // sm_cvar z_charge_duration 2.5 +wait 1243 ; sm_cvar z_charge_impact_angle 0.608761429 // 0.5 // 0.38268343236 +wait 1244 ; sm_cvar z_charge_impact_radius 150 // 125 +wait 1245 ; // sm_cvar z_charge_interval 12 +wait 1246 ; // sm_cvar z_charge_max_damage 10 +wait 1247 ; // sm_cvar z_charge_max_force 800 +wait 1248 ; // sm_cvar z_charge_max_speed 500 +wait 1249 ; sm_cvar z_charge_min_force 600 +wait 1250 ; sm_cvar z_charge_prop_damage 1000 +wait 1251 ; sm_cvar z_charge_start_speed 260 +wait 1252 ; // sm_cvar z_charge_warmup 0.5 // 0 +wait 1253 ; // sm_cvar z_charger_health 600 +wait 1254 ; sm_cvar z_charger_impact_epsilon 0 // 4 +wait 1255 ; // sm_cvar z_charger_limit 1 +wait 1256 ; sm_cvar z_charger_max_prop_force 10000 +wait 1257 ; // sm_cvar z_charger_pound_dmg 15 +wait 1258 ; sm_cvar z_charger_probe_alone 20 // 24 +wait 1259 ; sm_cvar z_charger_probe_attack 20 // 24 +wait 1260 ; sm_cvar z_claw_hit_pitch_max 15 +wait 1261 ; sm_cvar z_claw_hit_pitch_min -15 +wait 1262 ; sm_cvar z_claw_hit_yaw_max 15 +wait 1263 ; sm_cvar z_claw_hit_yaw_min -15 +wait 1264 ; // sm_cvar z_clear_area_range 250 +wait 1265 ; // sm_cvar z_clear_max_time 5 +wait 1266 ; // sm_cvar z_clear_min_time 0.1 +wait 1267 ; // sm_cvar z_clear_min_time_range 250 +wait 1268 ; // sm_cvar z_clear_range 500 +wait 1269 ; sm_cvar z_close_target_notice_distance 40 +wait 1270 ; sm_cvar z_common_limit 40 +wait 1271 ; sm_cvar z_cooldown_spawn_safety_range 150 // 300 +wait 1272 ; sm_cvar z_cough_cloud_expire 8 +wait 1273 ; // sm_cvar z_cough_cloud_initial_cough_delay 0 +wait 1274 ; sm_cvar z_cough_cloud_radius 150 +wait 1275 ; sm_cvar z_crouch_speed 90 +wait 1276 ; sm_cvar z_cull_timeout 4 +wait 1277 ; // sm_cvar z_damage_screen_fade_alpha 32 // 30 +wait 1278 ; // sm_cvar z_damage_screen_fade_duration 0.666667 // 0.5 +wait 1279 ; // sm_cvar z_deafen_radius_one 50 // 75 +wait 1280 ; // sm_cvar z_deafen_radius_three 150 // 125 +wait 1281 ; // sm_cvar z_deafen_radius_two 100 // 175 +wait 1282 ; sm_cvar z_density_region_length 2000 +wait 1283 ; // sm_cvar z_difficulty Impossible +wait 1284 ; sm_cvar z_director_special_spawn_delay 0 +wait 1285 ; sm_cvar z_discard_min_range 32 +wait 1286 ; sm_cvar z_discard_range 2000 +wait 1287 ; sm_cvar z_door_pound_damage 800 +wait 1288 ; sm_cvar z_door_reopen_interval 0.1 +wait 1289 ; sm_cvar z_door_retry_interval 1 +wait 1290 ; sm_cvar z_exploding_force 1000 +wait 1291 ; sm_cvar z_exploding_health 60 +wait 1292 ; sm_cvar z_exploding_inner_radius 200 +wait 1293 ; // sm_cvar z_exploding_outer_radius 200 +wait 1294 ; sm_cvar z_exploding_shove_interval 4 +wait 1295 ; sm_cvar z_exploding_shove_max 3 +wait 1296 ; sm_cvar z_exploding_shove_min 3 +wait 1297 ; sm_cvar z_exploding_speed 200 +wait 1298 ; sm_cvar z_exploding_splat 0 +wait 1299 ; sm_cvar z_exploding_splat_radius 300 +wait 1300 ; sm_cvar z_expressions 0 +wait 1301 ; sm_cvar z_fallen_kill_suppress_time 120 +wait 1302 ; sm_cvar z_falling_land_forward_speed 500 +wait 1303 ; sm_cvar z_falling_land_hard_speed 500 +wait 1304 ; sm_cvar z_falling_land_speed 500 +wait 1305 ; // sm_cvar z_fatal_blast_incineration_probability 0 +wait 1306 ; sm_cvar z_fatal_blast_max_ragdolls 20 +wait 1307 ; sm_cvar z_fatal_blast_min_ragdolls 1 +wait 1308 ; sm_cvar z_female_boomer_spawn_chance 50 // 100 +wait 1309 ; sm_cvar z_finale_spawn_mob_safety_range 300 +wait 1310 ; sm_cvar z_finale_spawn_safety_range 150 +wait 1311 ; // sm_cvar z_finale_spawn_safety_range_override 0 +wait 1312 ; sm_cvar z_finale_spawn_tank_safety_range 300 +wait 1313 ; sm_cvar z_fog_spawn 1 +wait 1314 ; // sm_cvar z_force_attack_from_sound_range 500 +wait 1315 ; sm_cvar z_forwardspeed 500 +wait 1316 ; // sm_cvar z_frustration_lifetime 20 +wait 1317 ; sm_cvar z_frustration_los_delay 0.5 +wait 1318 ; sm_cvar z_frustration_spawn_delay 20 +wait 1319 ; // sm_cvar z_gas_health 250 +wait 1320 ; sm_cvar z_gas_speed 220 +wait 1321 ; // sm_cvar z_ghost_ahead_flow 300 +wait 1322 ; sm_cvar z_ghost_checkpoint_spawn_interval 10 +wait 1323 ; sm_cvar z_ghost_delay_max 18 +wait 1324 ; sm_cvar z_ghost_delay_min 18 +wait 1325 ; sm_cvar z_ghost_delay_minspawn 1 +wait 1326 ; sm_cvar z_ghost_finale_spawn_interval 10 +wait 1327 ; sm_cvar z_ghost_friction 1.25 +wait 1328 ; sm_cvar z_ghost_group_spawn 0 +wait 1329 ; // sm_cvar z_ghost_line_of_scrimmage_far 2000 +wait 1330 ; // sm_cvar z_ghost_line_of_scrimmage_near 1000 +wait 1331 ; // sm_cvar z_ghost_line_of_scrimmage_safety 10 +wait 1332 ; // sm_cvar z_ghost_line_of_scrimmage_threat_bonus 1000 +wait 1333 ; // sm_cvar z_ghost_los_expected_progress 1000 +wait 1334 ; // sm_cvar z_ghost_offer_acceptance_time 0 +wait 1335 ; // sm_cvar z_ghost_offer_spawn_safety_time 10 +wait 1336 ; // sm_cvar z_ghost_runner_spawn_multiplier 0.5 +wait 1337 ; // sm_cvar z_ghost_runner_spawn_multiplier_dist 2000 +wait 1338 ; // sm_cvar z_ghost_spawn_distance 300 +wait 1339 ; sm_cvar z_ghost_spawn_interval 10 +wait 1340 ; // sm_cvar z_ghost_speed 450 +wait 1341 ; // sm_cvar z_ghost_travel_distance 0 +wait 1342 ; sm_cvar z_gib_explosion_force_factor 0.05 +wait 1343 ; sm_cvar z_gib_force_factor 5.0 +wait 1344 ; sm_cvar z_gun_damage 5 +wait 1345 ; sm_cvar z_gun_force 100 +wait 1346 ; // sm_cvar z_gun_horiz_punch 0 +wait 1347 ; sm_cvar z_gun_physics_force 50 +wait 1348 ; sm_cvar z_gun_range 80 +wait 1349 ; sm_cvar z_gun_stun_duration 0.8 +wait 1350 ; sm_cvar z_gun_survivor_force 100 +wait 1351 ; // sm_cvar z_gun_survivor_friend_push 0 +wait 1352 ; sm_cvar z_gun_survivor_shove_dot 0.0 +wait 1353 ; sm_cvar z_gun_swing_coop_max_penalty 2147483647 +wait 1354 ; sm_cvar z_gun_swing_coop_min_penalty 2147483647 +wait 1355 ; sm_cvar z_gun_swing_duration 0.183333 +wait 1356 ; sm_cvar z_gun_swing_interval 0.666667 +wait 1357 ; sm_cvar z_gun_swing_vs_amt_penalty 0.666667 +wait 1358 ; sm_cvar z_gun_swing_vs_cooldown 0.666667 +wait 1359 ; sm_cvar z_gun_swing_vs_max_penalty 2147483647 +wait 1360 ; sm_cvar z_gun_swing_vs_min_penalty 2147483647 +wait 1361 ; sm_cvar z_gun_swing_vs_restore_time 0.666667 +wait 1362 ; sm_cvar z_head_damage_causes_wounds 1 +wait 1363 ; sm_cvar z_health 60 +wait 1364 ; // sm_cvar z_hear_gunfire_range 200 +wait 1365 ; sm_cvar z_hear_runner_far_range 600 +wait 1366 ; sm_cvar z_hear_runner_near_range 400 +wait 1367 ; // sm_cvar z_hit_chainsawer_factor 0.5 +wait 1368 ; sm_cvar z_hit_from_behind_cosine 1.0 +wait 1369 ; sm_cvar z_hit_from_behind_factor 1.0 +wait 1370 ; sm_cvar z_hit_incap_factor_easy 1.0 +wait 1371 ; sm_cvar z_hit_incap_factor_expert 2.0 +wait 1372 ; // sm_cvar z_hit_incap_factor_hard 1.0 +wait 1373 ; // sm_cvar z_hit_incap_factor_normal 1.0 +wait 1374 ; sm_cvar z_holiday_gift_drop_chance 1.0 +wait 1375 ; sm_cvar z_hunter_ground_normal 0.13052619222 // 0.2588190451 +wait 1376 ; // sm_cvar z_hunter_health 250 +wait 1377 ; sm_cvar z_hunter_limit 2 +wait 1378 ; sm_cvar z_hunter_lunge_distance 800 +wait 1379 ; sm_cvar z_hunter_lunge_pitch 37.5 +wait 1380 ; sm_cvar z_hunter_lunge_stagger_time 0.4 +wait 1381 ; // sm_cvar z_hunter_max_pounce_bonus_damage 24 +wait 1382 ; sm_cvar z_hunter_speed 260 // 280 +wait 1383 ; // sm_cvar z_jockey_area_current_factor 1 +wait 1384 ; sm_cvar z_jockey_area_hazard_bonus 3000 +wait 1385 ; // sm_cvar z_jockey_area_range_factor 2 +wait 1386 ; sm_cvar z_jockey_area_visibility_factor 500 +wait 1387 ; // sm_cvar z_jockey_blend_rate 1.0 +wait 1388 ; sm_cvar z_jockey_control_max 1.0 +wait 1389 ; // sm_cvar z_jockey_control_min 0.8 +wait 1390 ; sm_cvar z_jockey_control_variance 0.0 +wait 1391 ; sm_cvar z_jockey_health 350 +wait 1392 ; sm_cvar z_jockey_leap_again_timer 5 // 4 +wait 1393 ; sm_cvar z_jockey_leap_range 300 +wait 1394 ; sm_cvar z_jockey_leap_time 0.9 +wait 1395 ; // sm_cvar z_jockey_limit 1 +wait 1396 ; sm_cvar z_jockey_lookahead 400 +wait 1397 ; sm_cvar z_jockey_min_ledge_distance 200 +wait 1398 ; // sm_cvar z_jockey_min_mounted_speed 0.6 +wait 1399 ; sm_cvar z_jockey_ride_damage 3 +wait 1400 ; sm_cvar z_jockey_ride_damage_delay 0 +wait 1401 ; // sm_cvar z_jockey_ride_damage_interval 1 +wait 1402 ; sm_cvar z_jockey_ride_hazard_scan_distance 400 +wait 1403 ; sm_cvar z_jockey_ride_scan_distance 600 +wait 1404 ; // sm_cvar z_jockey_ride_scan_interval 1 +wait 1405 ; sm_cvar z_jockey_speed 280 +wait 1406 ; // sm_cvar z_jockey_speed_blend 2 +wait 1407 ; // sm_cvar z_jockey_stagger_amount 0 +wait 1408 ; // sm_cvar z_jockey_stagger_speed 2 +wait 1409 ; sm_cvar z_large_volume_mob_too_far_xy 2000 +wait 1410 ; // sm_cvar z_large_volume_mob_too_far_z 200 +wait 1411 ; // sm_cvar z_last_area_update_tolerance 2 +wait 1412 ; sm_cvar z_last_man_run_interval 2 +wait 1413 ; // sm_cvar z_lean_wall_align_speed 300 +wait 1414 ; // sm_cvar z_leap_attach_distance 60 +wait 1415 ; sm_cvar z_leap_cooldown 0 +wait 1416 ; sm_cvar z_leap_far_attach_delay 0 +wait 1417 ; sm_cvar z_leap_force_attach_distance 60 +wait 1418 ; sm_cvar z_leap_interval 0.45 +wait 1419 ; sm_cvar z_leap_interval_post_incap 12 +wait 1420 ; // sm_cvar z_leap_interval_post_ride 6 // 5.5 +wait 1421 ; sm_cvar z_leap_max_distance 300 +wait 1422 ; sm_cvar z_leap_power 450 +wait 1423 ; sm_cvar z_lunge_cooldown 0 +wait 1424 ; sm_cvar z_lunge_interval 0 +wait 1425 ; sm_cvar z_lunge_power 625 +wait 1426 ; // sm_cvar z_lunge_reflect 0 +wait 1427 ; sm_cvar z_lunge_up 150 +wait 1428 ; sm_cvar z_max_hunter_pounce_stagger_duration 0.4 +wait 1429 ; // sm_cvar z_max_neighbor_range 200 +wait 1430 ; // sm_cvar z_max_path_length 10000 +wait 1431 ; // sm_cvar z_max_player_zombies 4 +wait 1432 ; sm_cvar z_max_stagger_duration 0.8 +wait 1433 ; sm_cvar z_max_survivor_damage 500 +wait 1434 ; sm_cvar z_mega_mob_size 60 +wait 1435 ; sm_cvar z_mega_mob_spawn_max_interval 300 +wait 1436 ; sm_cvar z_mega_mob_spawn_min_interval 300 +wait 1437 ; sm_cvar z_min_ladder_mount_dot 0.608761429 // 0.79335334029 +wait 1438 ; sm_cvar z_minigun_atomize 1 +wait 1439 ; sm_cvar z_minigun_cooldown_time 0.1 +wait 1440 ; sm_cvar z_minigun_damage_rate 72000 // 54000 // 90000 +wait 1441 ; // sm_cvar z_minigun_fire_anim_speed 1 +wait 1442 ; sm_cvar z_minigun_fire_think_interval 0 +wait 1443 ; sm_cvar z_minigun_firing_speed 20 // 30 +wait 1444 ; sm_cvar z_minigun_overheat_time 100 +wait 1445 ; sm_cvar z_minigun_rate_of_fire 1800 // 3600 +wait 1446 ; sm_cvar z_minigun_spin_down_speed 10 +wait 1447 ; sm_cvar z_minigun_spin_up_speed 20 // 30 +wait 1448 ; sm_cvar z_minigun_spread 4 // 5 // 3 +wait 1449 ; sm_cvar z_minigun_stand_distance 38 +wait 1450 ; // sm_cvar z_minion_aim_tolerance 0.04361938736 // 0.0348994967 // 0.08715574274 +wait 1451 ; sm_cvar z_minion_limit 4 +wait 1452 ; // sm_cvar z_mob_min_notify_count 10 +wait 1453 ; sm_cvar z_mob_music_size 5 +wait 1454 ; sm_cvar z_mob_population_density 0.0016 // 0.0025 // 0.0032 +wait 1455 ; // sm_cvar z_mob_recharge_rate 0.0025 +wait 1456 ; sm_cvar z_mob_sacrifice_timeout 4 +wait 1457 ; sm_cvar z_mob_spawn_finale_size 40 +wait 1458 ; sm_cvar z_mob_spawn_max_interval_easy 120 +wait 1459 ; sm_cvar z_mob_spawn_max_interval_expert 120 +wait 1460 ; sm_cvar z_mob_spawn_max_interval_hard 120 +wait 1461 ; sm_cvar z_mob_spawn_max_interval_normal 120 +wait 1462 ; sm_cvar z_mob_spawn_max_size 40 +wait 1463 ; sm_cvar z_mob_spawn_min_interval_easy 60 +wait 1464 ; sm_cvar z_mob_spawn_min_interval_expert 60 +wait 1465 ; sm_cvar z_mob_spawn_min_interval_hard 60 +wait 1466 ; sm_cvar z_mob_spawn_min_interval_normal 60 +wait 1467 ; sm_cvar z_mob_spawn_min_size 10 +wait 1468 ; sm_cvar z_mounted_gun_fire_think_interval 0.008333 +wait 1469 ; sm_cvar z_must_wander 1 +wait 1470 ; // sm_cvar z_noise_level_fade_rate 50 +wait 1471 ; // sm_cvar z_noise_level_footstep 150 +wait 1472 ; // sm_cvar z_noise_level_hold_time 0.333333 +wait 1473 ; // sm_cvar z_noise_level_max 150 // 200 +wait 1474 ; // sm_cvar z_noise_level_vocalize 150 +wait 1475 ; sm_cvar z_non_head_damage_factor_easy 2 +wait 1476 ; sm_cvar z_non_head_damage_factor_expert 1 +wait 1477 ; sm_cvar z_non_head_damage_factor_hard 1 +wait 1478 ; sm_cvar z_non_head_damage_factor_multiplier 1 +wait 1479 ; // sm_cvar z_non_head_damage_factor_normal 1 +wait 1480 ; sm_cvar z_notice_it_range 2000 +wait 1481 ; sm_cvar z_notice_near_range 40 +wait 1482 ; sm_cvar z_player_lunge_up 100 +wait 1483 ; // sm_cvar z_player_zombie_land_delay 0 +wait 1484 ; // sm_cvar z_pounce_allow_partial_hidden 1 +wait 1485 ; sm_cvar z_pounce_crouch_delay 0.9 +wait 1486 ; // sm_cvar z_pounce_damage 5 +wait 1487 ; sm_cvar z_pounce_damage_delay 0 +wait 1488 ; sm_cvar z_pounce_damage_interrupt 1000 +wait 1489 ; // sm_cvar z_pounce_damage_interval 0.5 +wait 1490 ; // sm_cvar z_pounce_delay 0 +wait 1491 ; sm_cvar z_pounce_door_damage 1000 +wait 1492 ; sm_cvar z_pounce_shake_amplitude 6 +wait 1493 ; sm_cvar z_pounce_shake_duration 2 +wait 1494 ; sm_cvar z_pounce_shake_radius 300 +wait 1495 ; sm_cvar z_pounce_silence_range 400 +wait 1496 ; sm_cvar z_pounce_stumble_force 6 +wait 1497 ; sm_cvar z_pounce_stumble_radius 175 // 150 +wait 1498 ; sm_cvar z_puking_eye_height 48 +wait 1499 ; sm_cvar z_push_force 1000 +wait 1500 ; sm_cvar z_push_mass_max 100 +wait 1501 ; sm_cvar z_pushaway_force 0 +wait 1502 ; sm_cvar z_ragdoll_discard_range 3000 // 2147483648 +wait 1503 ; sm_cvar z_reload_chatter_intensity 0.1 +wait 1504 ; sm_cvar z_reload_chatter_nearby_friend_range 1000 +wait 1505 ; sm_cvar z_reload_chatter_recent_enemy 10 +wait 1506 ; sm_cvar z_reload_chatter_shotgun_ammo_threshold 10 +wait 1507 ; sm_cvar z_reload_chatter_shotgun_interval 1 +wait 1508 ; // sm_cvar z_respawn_distance 0 +wait 1509 ; // sm_cvar z_respawn_interval 0 +wait 1510 ; sm_cvar z_restrict_team_change 0 +wait 1511 ; sm_cvar z_round_start_attack_prevention 0 +wait 1512 ; sm_cvar z_round_start_replacement_time 60 +wait 1513 ; sm_cvar z_run_exertion_interval 0.5 +wait 1514 ; sm_cvar z_safe_spawn_range 32 +wait 1515 ; // sm_cvar z_scout_mob_spawn_range 3000 +wait 1516 ; // sm_cvar z_scrimmage_creep_delay 10 +wait 1517 ; // sm_cvar z_scrimmage_creep_rate 100 +wait 1518 ; sm_cvar z_shotgun_bonus_damage_multiplier 10 +wait 1519 ; sm_cvar z_shotgun_bonus_damage_range 40 +wait 1520 ; sm_cvar z_shove_friend_speed 220 +wait 1521 ; sm_cvar z_sidespeed 500 +wait 1522 ; sm_cvar z_skirmish_spawn_max_interval 60 +wait 1523 ; sm_cvar z_skirmish_spawn_max_size 2 +wait 1524 ; sm_cvar z_skirmish_spawn_min_interval 30 +wait 1525 ; // sm_cvar z_skirmish_spawn_min_size 1 +wait 1526 ; sm_cvar z_smoker_limit 2 +wait 1527 ; sm_cvar z_spawn_flow_limit 2000 +wait 1528 ; sm_cvar z_spawn_height 16 +wait 1529 ; sm_cvar z_spawn_mobs_behind_chance 0 +wait 1530 ; sm_cvar z_spawn_range 2000 +wait 1531 ; sm_cvar z_spawn_safety_range 150 +wait 1532 ; // sm_cvar z_spawn_speed 450 +wait 1533 ; sm_cvar z_special_burn_dmg_scale 5 +wait 1534 ; sm_cvar z_special_spawn_interval 10 +wait 1535 ; sm_cvar z_speed 260 +wait 1536 ; sm_cvar z_spit_detonate_delay 0 +wait 1537 ; sm_cvar z_spit_interval 16 +wait 1538 ; sm_cvar z_spit_latency 0.283333 +wait 1539 ; sm_cvar z_spit_range 950 // 1000 +wait 1540 ; sm_cvar z_spit_spread_delay 0 +wait 1541 ; sm_cvar z_spit_velocity 950 // 1000 +wait 1542 ; // sm_cvar z_spitter_health 100 +wait 1543 ; sm_cvar z_spitter_high_chance 0 +wait 1544 ; // sm_cvar z_spitter_limit 1 +wait 1545 ; sm_cvar z_spitter_max_wait_time 16 +wait 1546 ; sm_cvar z_spitter_range 950 +wait 1547 ; sm_cvar z_spitter_speed 240 +wait 1548 ; sm_cvar z_splat_survivor_pitch_max 15 +wait 1549 ; sm_cvar z_splat_survivor_pitch_min -15 +wait 1550 ; sm_cvar z_splat_survivor_shake_amplitude 100 +wait 1551 ; sm_cvar z_splat_survivor_shake_duration 2 +wait 1552 ; sm_cvar z_splat_survivor_shake_frequency 100 +wait 1553 ; sm_cvar z_splat_survivor_shake_radius 300 +wait 1554 ; sm_cvar z_splat_survivor_yaw_max 15 +wait 1555 ; sm_cvar z_splat_survivor_yaw_min -15 +wait 1556 ; sm_cvar z_splatterdistance 125 +wait 1557 ; // sm_cvar z_stumble_max_curve_accel 5 +wait 1558 ; sm_cvar z_stumble_max_curve_rate 5 +wait 1559 ; sm_cvar z_survivor_respawn_health 40 +wait 1560 ; sm_cvar z_tank_attack_interval 1.466667 +wait 1561 ; sm_cvar z_tank_autoshotgun_dmg_scale 1.0 +wait 1562 ; sm_cvar z_tank_damage_slow_max_range 32 +wait 1563 ; sm_cvar z_tank_damage_slow_min_range 32 +wait 1564 ; // sm_cvar z_tank_footstep_shake_amplitude 5 +wait 1565 ; sm_cvar z_tank_footstep_shake_duration 2 +wait 1566 ; sm_cvar z_tank_footstep_shake_interval 0.1 +wait 1567 ; sm_cvar z_tank_footstep_shake_radius 1000 +wait 1568 ; sm_cvar z_tank_grenade_damage 2000 +wait 1569 ; sm_cvar z_tank_grenade_launcher_dmg_scale 2.0 +wait 1570 ; sm_cvar z_tank_grenade_roll -15 +wait 1571 ; // sm_cvar z_tank_grenade_slowdown 0 +wait 1572 ; sm_cvar z_tank_has_special_blood 1 +wait 1573 ; // sm_cvar z_tank_health 5000 +wait 1574 ; sm_cvar z_tank_incapacitated_health 1000 +wait 1575 ; sm_cvar z_tank_max_stagger_distance 300 +wait 1576 ; sm_cvar z_tank_max_stagger_duration 2 +wait 1577 ; sm_cvar z_tank_max_stagger_fade_duration 2 +wait 1578 ; sm_cvar z_tank_rock_radius 96 // 88 // 72 // 64 // 48 +wait 1579 ; sm_cvar z_tank_speed 200 +wait 1580 ; sm_cvar z_tank_speed_vs 220 +wait 1581 ; sm_cvar z_tank_stagger_fade_alpha 120 +wait 1582 ; sm_cvar z_tank_stagger_fade_duration 2 +wait 1583 ; sm_cvar z_tank_throw_force 850 +wait 1584 ; // sm_cvar z_tank_throw_health 50 +wait 1585 ; sm_cvar z_tank_throw_interval 4.5 +wait 1586 ; sm_cvar z_tank_walk_speed 120 +wait 1587 ; sm_cvar z_throttle_hit_interval_easy 0.25 // 0.166667 // 0.333333 +wait 1588 ; sm_cvar z_throttle_hit_interval_expert 0.5 // 0.333333 // 0.666667 +wait 1589 ; sm_cvar z_throttle_hit_interval_hard 0.25 // 0.166667 // 0.333333 +wait 1590 ; sm_cvar z_throttle_hit_interval_normal 0.25 // 0.166667 // 0.333333 +wait 1591 ; sm_cvar z_use_belt_item_tolerance 0.0 +wait 1592 ; sm_cvar z_use_tolerance 0.79335334029 // 0.86602540378 +wait 1593 ; // sm_cvar z_vision_range 1000 +wait 1594 ; sm_cvar z_vision_range_alert 2000 +wait 1595 ; sm_cvar z_vision_range_daylight 2000 +wait 1596 ; // sm_cvar z_vision_range_obscured 1000 +wait 1597 ; sm_cvar z_vision_range_obscured_alert 1000 +wait 1598 ; sm_cvar z_vocalize_burn_max_interval 1 // 0.1 +wait 1599 ; sm_cvar z_vocalize_burn_min_interval 0.5 // 0.1 +wait 1600 ; sm_cvar z_vocalize_shot_interval 0.5 // 0.1 +wait 1601 ; sm_cvar z_vomit_boxsize 2 +wait 1602 ; sm_cvar z_vomit_drag 1.0 +wait 1603 ; sm_cvar z_vomit_duration 1.25 +wait 1604 ; sm_cvar z_vomit_fade_duration 6 +wait 1605 ; sm_cvar z_vomit_fade_start 6 +wait 1606 ; sm_cvar z_vomit_fatigue 2001 // 2000.0001 // 2000.00006103515625 +wait 1607 ; sm_cvar z_vomit_float -100 // -120 +wait 1608 ; sm_cvar z_vomit_hit_pitch_max 10 // 15 +wait 1609 ; sm_cvar z_vomit_hit_pitch_min -10 // -15 +wait 1610 ; sm_cvar z_vomit_hit_yaw_max 15 +wait 1611 ; sm_cvar z_vomit_hit_yaw_min -15 +wait 1612 ; sm_cvar z_vomit_interval 18 +wait 1613 ; sm_cvar z_vomit_lifetime 0.2 +wait 1614 ; sm_cvar z_vomit_maxdamagedist 400 +wait 1615 ; // sm_cvar z_vomit_range 300 +wait 1616 ; // sm_cvar z_vomit_slide_mult 0.5 +wait 1617 ; // sm_cvar z_vomit_slide_rate 0.1 +wait 1618 ; // sm_cvar z_vomit_vecrand 0.05 +wait 1619 ; sm_cvar z_vomit_velocity 2000 +wait 1620 ; sm_cvar z_vomit_velocityfadeend 0.5 +wait 1621 ; sm_cvar z_vomit_velocityfadestart 0.3 +wait 1622 ; sm_cvar z_walk_speed 120 +wait 1623 ; sm_cvar z_wandering_density 0.025 // 0.03125 // 0.04 +wait 1624 ; // sm_cvar z_witch_anger_rate 0.2 +wait 1625 ; // sm_cvar z_witch_attack_range 60 +wait 1626 ; sm_cvar z_witch_berserk_range 400 +wait 1627 ; sm_cvar z_witch_burn_time 20 +wait 1628 ; sm_cvar z_witch_damage_per_kill_hit 30 +wait 1629 ; sm_cvar z_witch_discard_range 0 +wait 1630 ; sm_cvar z_witch_flashlight_range 600 +wait 1631 ; sm_cvar z_witch_health 2000 // 2500 +wait 1632 ; // sm_cvar z_witch_hostile_at_me_anger 2 +wait 1633 ; sm_cvar z_witch_max_retreat_range 0 +wait 1634 ; sm_cvar z_witch_max_threat_time 4 // 3 +wait 1635 ; sm_cvar z_witch_min_retreat_range 0 +wait 1636 ; sm_cvar z_witch_min_threat_time 3 +wait 1637 ; sm_cvar z_witch_personal_space 300 +wait 1638 ; sm_cvar z_witch_relax_rate 0.2 +wait 1639 ; sm_cvar z_witch_retreat_exit_hidden_duration 0 +wait 1640 ; sm_cvar z_witch_retreat_exit_range 0 +wait 1641 ; sm_cvar z_witch_retreat_min_duration 0 +wait 1642 ; // sm_cvar z_witch_speed 300 +wait 1643 ; sm_cvar z_witch_speed_inured 300 +wait 1644 ; sm_cvar z_witch_threat_hostile_range 800 // 750 +wait 1645 ; sm_cvar z_witch_threat_normal_range 600 // 500 +wait 1646 ; sm_cvar z_witch_tongue_range 0 +wait 1647 ; sm_cvar z_witch_wander_hear_radius 300 +wait 1648 ; sm_cvar z_witch_wander_music_max_dist 2147483648 +wait 1649 ; sm_cvar z_witch_wander_music_max_interval 30 // 86400 +wait 1650 ; sm_cvar z_witch_wander_music_min_dist 2147483648 +wait 1651 ; sm_cvar z_witch_wander_music_min_interval 3 // 86400 +wait 1652 ; sm_cvar z_witch_wander_personal_space 400 +wait 1653 ; sm_cvar z_witch_wander_personal_time 3 +wait 1654 ; // sm_cvar servercfgfile server.cfg diff --git a/cfg/source.cfg b/cfg/source.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/source.cfg @@ -0,0 +1 @@ + diff --git a/cfg/sourcemod.cfg b/cfg/sourcemod.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/sourcemod.cfg @@ -0,0 +1 @@ + diff --git a/cfg/sourcemod/Sm_SourceSleuth.cfg b/cfg/sourcemod/Sm_SourceSleuth.cfg index f07714d7..a708e15e 100644 --- a/cfg/sourcemod/Sm_SourceSleuth.cfg +++ b/cfg/sourcemod/Sm_SourceSleuth.cfg @@ -5,15 +5,15 @@ // Sleuth Ban Type: 1 - Original Length, 2 - Custom Length, 3 - Double Length, 4 - Notify Admins Only // - // Default: "3" -// Minimum: "1.000000" -// Maximum: "4.000000" +// Minimum: "1" +// Maximum: "4" sm_sleuth_actions "3" // 0 - Inactivated, 1 - Allow all admins with ban flag to pass the check // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" sm_sleuth_adminbypass "0" // How many active bans are allowed before we act @@ -24,8 +24,8 @@ sm_sleuth_bansallowed "0" // 0 - ban all type of lengths, 1 - ban only permanent bans // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" sm_sleuth_bantype "0" // Required: sm_sleuth_actions 1: Bantime to ban player if we got a match (0 = permanent (defined in minutes) ) @@ -36,14 +36,14 @@ sm_sleuth_duration "0" // 0 - Inactivated, 1 - Allow old bans to be excluded from ban check // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" sm_sleuth_excludeold "0" // Amount of time in seconds to allow old bans to be excluded from ban check // - // Default: "31536000" -// Minimum: "1.000000" +// Minimum: "1" sm_sleuth_excludetime "31536000" // Prexfix for sourcebans tables: Default sb diff --git a/cfg/sourcemod/[L4D2]JockeyPounce.cfg b/cfg/sourcemod/[L4D2]JockeyPounce.cfg index 76424219..4635b4cc 100644 --- a/cfg/sourcemod/[L4D2]JockeyPounce.cfg +++ b/cfg/sourcemod/[L4D2]JockeyPounce.cfg @@ -5,7 +5,7 @@ // How much the jockey should blind the player (0: non, 255:completely) // - // Default: "150" -l4d2_JockeyPounce_blind "150" +l4d2_JockeyPounce_blind "0" // Cap of the maximum damage a pounce can do // - @@ -15,7 +15,7 @@ l4d2_JockeyPounce_cap "100" // How message should be shown, 0 - Disabled, 1 - Chat message, 2 - Hint Message // - // Default: "2" -l4d2_JockeyPounce_display "2" +l4d2_JockeyPounce_display "0" // Show the damagecap in the display message // - @@ -25,12 +25,12 @@ l4d2_JockeyPounce_display_max "0" // Should the plugin be enabled // - // Default: "1" -l4d2_JockeyPounce_enabled "1" +l4d2_JockeyPounce_enabled "0" // Minimum damage a pounce should do to show the pounce message // - // Default: "3" -l4d2_JockeyPounce_minshow "3" +l4d2_JockeyPounce_minshow "1" // Scale how much damage the pounce does (e.g. 0.5 will half the default damage, 5 will make it 5 times more powerfull) // - diff --git a/cfg/sourcemod/l4d2_boomerbitchslap.cfg b/cfg/sourcemod/l4d2_boomerbitchslap.cfg index e8e59617..a55197d7 100644 --- a/cfg/sourcemod/l4d2_boomerbitchslap.cfg +++ b/cfg/sourcemod/l4d2_boomerbitchslap.cfg @@ -5,17 +5,17 @@ // Do Slaps get announced in the Chat Area // - // Default: "1" -l4d2_boomerbitchslap_announce "1" +l4d2_boomerbitchslap_announce "0" // How many seconds before Boomer can Slap again // - -// Default: "15.0" -l4d2_boomerbitchslap_cooldown "15.0" +// Default: "15" +l4d2_boomerbitchslap_cooldown "10" // Enable/Disable the Boomer Bitch Slap Plugin // - // Default: "1" -l4d2_boomerbitchslap_enabled "1" +l4d2_boomerbitchslap_enabled "0" // Enable/Disable Slapping hanging people off ledges // - @@ -24,7 +24,7 @@ l4d2_boomerbitchslap_ledgeslap "0" // How much Force is applied to the victim // - -// Default: "150.0" -l4d2_boomerbitchslap_power "150.0" +// Default: "150" +l4d2_boomerbitchslap_power "100" diff --git a/cfg/sourcemod/l4d2_boss_spawn.cfg b/cfg/sourcemod/l4d2_boss_spawn.cfg index 87ed80a7..2c6ab990 100644 --- a/cfg/sourcemod/l4d2_boss_spawn.cfg +++ b/cfg/sourcemod/l4d2_boss_spawn.cfg @@ -5,57 +5,57 @@ // 0:Disable, 1:Enable Plugin // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" -boss_spawn "1" +// Minimum: "0" +// Maximum: "1" +boss_spawn "0" // 0:Checking any Tanks spawned on map, 1:Checking only boss spawn Tanks // - // Default: "0" -boss_spawn_check_tanks "0" +boss_spawn_check_tanks "1" // 0:Checking any Witches spawned on map, 1:Checking only boss spawn Witches // - // Default: "0" -boss_spawn_check_witches "0" +boss_spawn_check_witches "1" // 0:Disable tanks in finale map, 1:Allow before finale starts, 2:Allow after finale starts, 3:Allow all finale map // - // Default: "0" -boss_spawn_finale_tanks "0" +boss_spawn_finale_tanks "3" // 0:Disable witches in finale map, 1:Allow before finale starts, 2: Allow after finale starts, 3:Allow all finale map // - // Default: "0" -boss_spawn_finale_witches "0" +boss_spawn_finale_witches "3" // Set progress (0-100)% max of the distance map to can spawn Tank // - -// Default: "100.0" -// Minimum: "0.000000" -// Maximum: "100.000000" -boss_spawn_range_max_tank "100.0" +// Default: "100" +// Minimum: "0" +// Maximum: "100" +boss_spawn_range_max_tank "100" // Set progress (0-100)% max of the distance map to can spawn Witch // - -// Default: "100.0" -// Minimum: "0.000000" -// Maximum: "100.000000" -boss_spawn_range_max_witch "100.0" +// Default: "100" +// Minimum: "0" +// Maximum: "100" +boss_spawn_range_max_witch "100" // Set progress (0-100)% min of the distance map to can spawn Tank // - -// Default: "0.0" -// Minimum: "0.000000" -// Maximum: "100.000000" -boss_spawn_range_min_tank "0.0" +// Default: "0" +// Minimum: "0" +// Maximum: "100" +boss_spawn_range_min_tank "0" // Set progress (0-100)% min of the distance map to can spawn Witch // - -// Default: "0.0" -// Minimum: "0.000000" -// Maximum: "100.000000" -boss_spawn_range_min_witch "0.0" +// Default: "0" +// Minimum: "0" +// Maximum: "100" +boss_spawn_range_min_witch "0" // 0:Disable Tanks in first map, 1:Allow Tanks in first map // - @@ -75,8 +75,8 @@ boss_spawn_tanks "1" // Setting chance (0-100)% to spawn Tanks // - // Default: "100" -// Minimum: "0.000000" -// Maximum: "100.000000" +// Minimum: "0" +// Maximum: "100" boss_spawn_tanks_chance "100" // Set max random Tanks to spawn simultaneously, 0:Disable Random value @@ -92,7 +92,7 @@ boss_spawn_total_tanks "1" // Set max random value total Tanks on map, 0:Disable Random value // - // Default: "3" -boss_spawn_total_tanks_rng "3" +boss_spawn_total_tanks_rng "1" // Set total Witches to spawn on map // - @@ -102,7 +102,7 @@ boss_spawn_total_witches "1" // Set max random value total Witches on map, 0:Disable Random value // - // Default: "3" -boss_spawn_total_witches_rng "3" +boss_spawn_total_witches_rng "1" // Set Witches to spawn simultaneously // - @@ -112,13 +112,11 @@ boss_spawn_witches "1" // Setting chance (0-100)% to spawn Witches // - // Default: "100" -// Minimum: "0.000000" -// Maximum: "100.000000" +// Minimum: "0" +// Maximum: "100" boss_spawn_witches_chance "100" // Set max random Witches to spawn simultaneously, 0:Disable Random value // - // Default: "0" boss_spawn_witches_rng "0" - - diff --git a/cfg/sourcemod/l4d2_incapped_crawling.cfg b/cfg/sourcemod/l4d2_incapped_crawling.cfg index 0bae797f..65a3b424 100644 --- a/cfg/sourcemod/l4d2_incapped_crawling.cfg +++ b/cfg/sourcemod/l4d2_incapped_crawling.cfg @@ -5,7 +5,7 @@ // 0=Plugin off, 1=Plugin on. // - // Default: "1" -l4d2_crawling "1" +l4d2_crawling "0" // 0=Off. 1=Use crazy faces (original before version 2.0). // - @@ -20,17 +20,17 @@ l4d2_crawling_glow "0" // 0=Dislables, 1=Chat text, 2=Hint box. // - // Default: "2" -l4d2_crawling_hint "2" +l4d2_crawling_hint "0" // How many times to display hints. // - // Default: "2" -l4d2_crawling_hint_num "2" +l4d2_crawling_hint_num "1" // Damage to apply every second of crawling, 0=No damage when crawling. // - // Default: "2" -l4d2_crawling_hurt "2" +l4d2_crawling_hurt "0" // Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all). // - @@ -50,12 +50,12 @@ l4d2_crawling_modes_tog "0" // Sets the playback speed of the crawling animation. // - // Default: "15" -l4d2_crawling_rate "15" +l4d2_crawling_rate "100" // Changes 'survivor_crawl_speed' cvar. // - // Default: "15" -l4d2_crawling_speed "15" +l4d2_crawling_speed "100" // 0=Disables crawling in spitter acid, 1=Enables crawling in spit. // - @@ -65,6 +65,6 @@ l4d2_crawling_spit "1" // 0=Firstperson view when crawling, 1=Thirdperson view when crawling. 2=Firstperson view when crawling and hides own animation. // - // Default: "1" -l4d2_crawling_view "1" +l4d2_crawling_view "2" diff --git a/cfg/sourcemod/l4d2_riot_penetration.cfg b/cfg/sourcemod/l4d2_riot_penetration.cfg new file mode 100644 index 00000000..7c7477ae --- /dev/null +++ b/cfg/sourcemod/l4d2_riot_penetration.cfg @@ -0,0 +1,164 @@ +"weapons" +{ + // Melee weapons: + "baseball_bat" + { + "damage" "70" + } + "cricket_bat" + { + "damage" "50" + } + "crowbar" + { + "damage" "50" + } + "electric_guitar" + { + "damage" "70" + } + "fireaxe" + { + "damage" "70" + } + "frying_pan" + { + "damage" "70" + } + "golfclub" + { + "damage" "70" + } + "katana" + { + "damage" "70" + } + "knife" + { + "damage" "50" + } + "machete" + { + "damage" "50" + } + "pitchfork" + { + "damage" "70" + } + "shovel" + { + "damage" "80" + } + "tonfa" + { + "damage" "50" + } + "riot_shield" + { + "damage" "50" + } + "weapon_chainsaw" + { + "damage" "70" + } + + // Pistols: + "weapon_pistol" + { + "Damage" "36" + } + "weapon_pistol_magnum" + { + "Damage" "80" + } + + // Shotguns: + "weapon_autoshotgun" + { + "Damage" "23" + } + "weapon_pumpshotgun" + { + "Damage" "25" + } + "weapon_shotgun_chrome" + { + "Damage" "31" + } + "weapon_shotgun_spas" + { + "Damage" "28" + } + + // SMG: + "weapon_smg" + { + "Damage" "20" + } + "weapon_smg_mp5" + { + "Damage" "24" + } + "weapon_smg_silenced" + { + "Damage" "25" + } + + // Rifles: + "weapon_rifle" + { + "Damage" "33" + } + "weapon_rifle_ak47" + { + "Damage" "58" + } + "weapon_rifle_desert" + { + "Damage" "44" + } + "weapon_rifle_sg552" + { + "Damage" "33" + } + + // Snipers: + "weapon_hunting_rifle" + { + "Damage" "90" + } + "weapon_sniper_awp" + { + "Damage" "115" + } + "weapon_sniper_military" + { + "Damage" "90" + } + "weapon_sniper_scout" + { + "Damage" "90" + } + + // Big guns: + "weapon_grenade_launcher" + { + "Damage" "33" + } + "weapon_rifle_m60" + { + "Damage" "125" + } + "prop_mounted_machine_gun" + { + "Damage" "150" + } + "prop_minigun" + { + "Damage" "150" + } + "prop_minigun_l4d1" + { + "Damage" "150" + } +} \ No newline at end of file diff --git a/cfg/sourcemod/l4d_ammo_spawn.cfg b/cfg/sourcemod/l4d_ammo_spawn.cfg index 1aba80b5..321cb626 100644 --- a/cfg/sourcemod/l4d_ammo_spawn.cfg +++ b/cfg/sourcemod/l4d_ammo_spawn.cfg @@ -10,12 +10,12 @@ l4d_ammo_spawn_allow "1" // 0=Off, Sets the max range at which the ammo pile glows. // - // Default: "0" -l4d_ammo_spawn_glow "0" +l4d_ammo_spawn_glow "300" // 0=Default glow color. Three values between 0-255 separated by spaces. RGB: Red Green Blue. // - // Default: "255 0 0" -l4d_ammo_spawn_glow_color "255 0 0" +l4d_ammo_spawn_glow_color "255 255 255" // Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all). // - diff --git a/cfg/sourcemod/l4d_gear_transfer.cfg b/cfg/sourcemod/l4d_gear_transfer.cfg index 57aece89..d3b5313a 100644 --- a/cfg/sourcemod/l4d_gear_transfer.cfg +++ b/cfg/sourcemod/l4d_gear_transfer.cfg @@ -9,13 +9,13 @@ l4d_gear_transfer_allow "1" // How close you have to be to transfer an item. Also affects bots auto give range. // - -// Default: "150.0" -l4d_gear_transfer_dist_give "150.0" +// Default: "150" +l4d_gear_transfer_dist_give "200" // How close the bots need to be for them to pick up an item. // - -// Default: "150.0" -l4d_gear_transfer_dist_grab "150.0" +// Default: "200" +l4d_gear_transfer_dist_grab "200" // 0=Off. 1=Shove only, 2=Reload key only, 3=Shove and Reload key to transfer items. // - @@ -45,7 +45,7 @@ l4d_gear_transfer_modes_tog "0" // 0=Off, 1=Display transfer info to everyone through chat messages. // - // Default: "1" -l4d_gear_transfer_notify "1" +l4d_gear_transfer_notify "0" // 0=Off, 1=Play a sound to the person giving/receiving an item. // - @@ -54,30 +54,30 @@ l4d_gear_transfer_sounds "1" // Timeout to stop bots returning an item after switching with a player. Timeout to prevent bots auto grabbing a recently dropped item. // - -// Default: "5.0" -// Minimum: "1.000000" -l4d_gear_transfer_timeout "5.0" +// Default: "5" +// Minimum: "1" +l4d_gear_transfer_timeout "1" // 0.0=Off. How often to check survivor bot positions to real clients for auto give. // - -// Default: "1.0" -// Minimum: "0.000000" -// Maximum: "10.000000" -l4d_gear_transfer_timer_give "1.0" +// Default: "1" +// Minimum: "0" +// Maximum: "10" +l4d_gear_transfer_timer_give "0.25" // 0.0=Off. How often to check survivor bot positions to item positions for auto grab. // - // Default: "0.5" -// Minimum: "0.000000" -// Maximum: "10.000000" -l4d_gear_transfer_timer_grab "0.5" +// Minimum: "0" +// Maximum: "10" +l4d_gear_transfer_timer_grab "0.25" // Maximum number of ray traces per frame for auto give/grab. This could be increased with minimal impact. // - // Default: "15" -// Minimum: "1.000000" -// Maximum: "120.000000" -l4d_gear_transfer_traces "15" +// Minimum: "1" +// Maximum: "120" +l4d_gear_transfer_traces "60" // Which type can bots auto give. 0=Off. 1=Adrenaline, 2=Pain Pills, 3=Molotov, 4=Pipe Bomb, 5=Vomit Jar, 6=First Aid, 7=Explosive Rounds, 8=Incendiary Rounds, 9=Defibrillator. Any string combination. // - diff --git a/cfg/sourcemod/l4d_stats.cfg b/cfg/sourcemod/l4d_stats.cfg index bde54b25..ebd891b1 100644 --- a/cfg/sourcemod/l4d_stats.cfg +++ b/cfg/sourcemod/l4d_stats.cfg @@ -4,157 +4,157 @@ // How many months old players (last online time) will be cleaned. 0 = Disabled // - // Default: "2" -// Minimum: "0.000000" -l4d_stats_adm_cleanoldplayers "2" +// Minimum: "0" +l4d_stats_adm_cleanoldplayers "0" // How many minutes of playtime to not get cleaned from stats. 0 = Disabled // - // Default: "30" -// Minimum: "0.000000" -l4d_stats_adm_cleanplaytime "30" +// Minimum: "0" +l4d_stats_adm_cleanplaytime "0" // [L4D2] Base score for giving Adrenaline to a friendly // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_adrenaline "15" +// Minimum: "1" +l4d_stats_adrenaline "30" // Chat announcment mode. 0 = Off, 1 = Player Only, 2 = Player Only w/ Public Headshots, 3 = All Public // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "3.000000" +// Minimum: "0" +// Maximum: "3" l4d_stats_announcemode "0" // Chat announcment for the message of the day. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_announcemotd "0" // Chat announcment for player joined. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_announceplayerjoined "0" // Chat announcment for rank change // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_announcerank "0" // Rank change check interval // - // Default: "60" -// Minimum: "10.000000" -l4d_stats_announcerankinterval "60" +// Minimum: "10" +l4d_stats_announcerankinterval "10" // Chat announcment team messages to the team only mode. 0 = Print messages to all teams, 1 = Print messages to own team only, 2 = Print messages to own team and spectators only // - // Default: "2" -// Minimum: "0.000000" -// Maximum: "2.000000" -l4d_stats_announceteam "2" +// Minimum: "0" +// Maximum: "2" +l4d_stats_announceteam "1" // Base score for killing a Boomer // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_boomer "5" +// Minimum: "1" +l4d_stats_boomer "10" // Base team score for surviving a Boomer Mob with no Incapacitations // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_boomermob "10" +// Minimum: "1" +l4d_stats_boomermob "30" // The number of survivors that needs to get blinded to earn Boomer Perfect Vomit Award and success points // - // Default: "4" -// Minimum: "4.000000" +// Minimum: "4" l4d_stats_boomerperfecthits "4" // Base score for a successful Boomer Perfect Vomit // - // Default: "30" -// Minimum: "1.000000" -l4d_stats_boomerperfectsuccess "30" +// Minimum: "1" +l4d_stats_boomerperfectsuccess "100" // Base score for a successfully vomiting on survivor // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_boomersuccess "5" +// Minimum: "1" +l4d_stats_boomersuccess "10" // Multiplier to use when receiving bot related score penalty. 0 = Disable // - // Default: "1.0" -// Minimum: "0.000000" -l4d_stats_botscoremultiplier "1.0" +// Minimum: "0.0" +l4d_stats_botscoremultiplier "0.0" // Damage inflicted by Tank to earn Bulldozer Award and success points // - // Default: "200" -// Minimum: "200.000000" +// Minimum: "200" l4d_stats_bulldozer "200" // Base score for Bulldozer Award // - // Default: "50" -// Minimum: "1.000000" -l4d_stats_bulldozersuccess "50" +// Minimum: "1" +l4d_stats_bulldozersuccess "100" // Base score for Completing a Campaign // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_campaign "5" +// Minimum: "1" +l4d_stats_campaign "200" // [L4D2] Base score for a Triggering Car Alarm // - // Default: "50" -// Minimum: "1.000000" -l4d_stats_caralarm "50" +// Minimum: "1" +l4d_stats_caralarm "1" // [L4D2] Base score for killing a Charger // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_charger "5" +// Minimum: "1" +l4d_stats_charger "20" // [L4D2] Base score for saving a friendly from a Charger Carry // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_chargercarry "15" +// Minimum: "1" +l4d_stats_chargercarry "40" // [L4D2] Base score for saving a friendly from a Charger Plummel // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_chargerplummel "10" +// Minimum: "1" +l4d_stats_chargerplummel "30" // The number of impacts on survivors to earn Scattering Ram Award and success points // - // Default: "4" -// Minimum: "2.000000" +// Minimum: "2" l4d_stats_chargerramhits "4" // Base score for a successful Charger Scattering Ram // - // Default: "40" -// Minimum: "1.000000" -l4d_stats_chargerramsuccess "40" +// Minimum: "1" +l4d_stats_chargerramsuccess "200" // Base score for saving a friendly from a Hunter Pounce / Smoker Choke // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_chokepounce "10" +// Minimum: "1" +l4d_stats_chokepounce "30" // Prefix for your stats tables // - @@ -164,471 +164,471 @@ l4d_stats_dbprefix "" // [L4D2] Base score for using a Defibrillator on a friendly // - // Default: "20" -// Minimum: "1.000000" -l4d_stats_defib "20" +// Minimum: "1" +l4d_stats_defib "60" // [L4D2] Base score for deploying ammo upgrade pack // - -// Default: "10" -// Minimum: "0.000000" -l4d_stats_deployammoupgrade "10" +// Default: "15" +// Minimum: "0" +l4d_stats_deployammoupgrade "50" // Show 'Stats Disabled' messages, allow chat commands to work when stats disabled. 0 = Hide messages/disable chat, 1 = Show messages/allow chat // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_disabledmessages "0" // Enable/Disable all stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enable "1" // Enable/Disable coop stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablecoop "1" // [L4D2] Enable/Disable mutations stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablemutations "1" // Enable point losses (negative score) // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" -l4d_stats_enablenegativescore "1" +// Minimum: "0" +// Maximum: "1" +l4d_stats_enablenegativescore "0" // Enable voting of team shuffle by player PPM (Points Per Minute) // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablerankvote "1" // [L4D2] Enable/Disable realism stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablerealism "1" // [L4D2] Enable/Disable realism versus stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablerealismvs "1" // [L4D2] Enable/Disable scavenge stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablescavenge "1" // Enable/Disable survival stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enablesv "1" // [L4D2] Enable/Disable team realism versus stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enableteamrealismvs "1" // [L4D2] Enable/Disable team scavenge stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enableteamscavenge "1" // [L4D2] Enable/Disable team versus stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enableteamversus "1" // Enable/Disable versus stat tracking // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_enableversus "1" // Base score for Friendly Fire // - // Default: "25" -// Minimum: "1.000000" -l4d_stats_ffire "25" +// Minimum: "1" +l4d_stats_ffire "1" // Time in seconds for friendly fire cooldown // - -// Default: "10.0" -// Minimum: "1.000000" -l4d_stats_ffire_cooldown "10.0" +// Default: "10" +// Minimum: "1" +l4d_stats_ffire_cooldown "1" // Friendly fire cooldown mode. 0 = Disable, 1 = Player specific, 2 = General // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "2.000000" -l4d_stats_ffire_cooldownmode "1" +// Minimum: "0" +// Maximum: "2" +l4d_stats_ffire_cooldownmode "2" // Friendly fire mode. 0 = Normal, 1 = Cooldown, 2 = Damage based // - // Default: "2" -// Minimum: "0.000000" -// Maximum: "2.000000" +// Minimum: "0" +// Maximum: "2" l4d_stats_ffire_mode "2" // Friendly fire damage multiplier (Formula: Score = Damage * Multiplier) // - // Default: "1.5" -// Minimum: "0.000000" -l4d_stats_ffire_multiplier "1.5" +// Minimum: "0.0" +l4d_stats_ffire_multiplier "1.0" // Base score for a Friendly Incap // - // Default: "75" -// Minimum: "1.000000" -l4d_stats_fincap "75" +// Minimum: "1" +l4d_stats_fincap "1" // Base score for a Friendly Kill // - // Default: "250" -// Minimum: "1.000000" -l4d_stats_fkill "250" +// Minimum: "1" +l4d_stats_fkill "1" // [L4D2] Base score for successfully pouring a gascan // - // Default: "5" -// Minimum: "0.000000" -l4d_stats_gascanpoured "5" +// Minimum: "0" +l4d_stats_gascanpoured "30" // Base score for killing a Hunter // - // Default: "2" -// Minimum: "1.000000" -l4d_stats_hunter "2" +// Minimum: "1" +l4d_stats_hunter "15" // Hunter stored damage cap // - // Default: "25" -// Minimum: "25.000000" +// Minimum: "25" l4d_stats_hunterdamagecap "25" // Base score for killing a Common Infected // - // Default: "1" -// Minimum: "1.000000" +// Minimum: "1" l4d_stats_infected "1" // The amount of damage inflicted to Survivors to earn 1 point // - // Default: "2" -// Minimum: "1.000000" -l4d_stats_infected_damage "2" +// Minimum: "1" +l4d_stats_infected_damage "1" // Base victory score for Infected Team // - // Default: "30" -// Minimum: "1.000000" -l4d_stats_infected_win "30" +// Minimum: "1" +l4d_stats_infected_win "100" // Base score for letting Infected in the Safe Room // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_insaferoom "5" +// Minimum: "1" +l4d_stats_insaferoom "1" // [L4D2] Base score for killing a Jockey // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_jockey "5" +// Minimum: "1" +l4d_stats_jockey "15" // [L4D2] Base score for saving a friendly from a Jockey Ride // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_jockeyride "10" +// Minimum: "1" +l4d_stats_jockeyride "30" // Base score for causing a survivor to grap a ledge // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_ledgegrap "15" +// Minimum: "1" +l4d_stats_ledgegrap "30" // [L4D2] Base score for killing a charging Charger with a melee weapon // - // Default: "30" -// Minimum: "1.000000" -l4d_stats_matador "30" +// Minimum: "1" +l4d_stats_matador "60" // Survival medic points enabled // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" -l4d_stats_medicpointssv "0" +// Minimum: "0" +// Maximum: "1" +l4d_stats_medicpointssv "1" // Base score for using a Medkit on a friendly // - // Default: "20" -// Minimum: "1.000000" -l4d_stats_medkit "20" +// Minimum: "1" +l4d_stats_medkit "40" // Add score reduction when bot uses a medkit. 0 = No, 1 = Bot uses a Medkit to a human player, 2 = Bot uses a Medkit to other than itself, 3 = Yes // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "2.000000" -l4d_stats_medkitbotmode "1" +// Minimum: "0" +// Maximum: "2" +l4d_stats_medkitbotmode "0" // Medkit point award mode. 0 = Based on amount healed, 1 = Static amount // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_medkitmode "0" // Score reduction for all Survivor earned points for each used Medkit (Formula: Score = NormalPoints * (1 - MedkitsUsed * MedkitPenalty)) // - // Default: "0.1" -// Minimum: "0.000000" -// Maximum: "0.500000" -l4d_stats_medkitpenalty "0.1" +// Minimum: "0.0" +// Maximum: "0.5" +l4d_stats_medkitpenalty "0.0" // Team Survivors can use this many Medkits for free without any reduction to the score // - // Default: "0" -// Minimum: "0.000000" -l4d_stats_medkitpenaltyfree "0" +// Minimum: "0" +l4d_stats_medkitpenaltyfree "4" // Team Survivors can use this many Medkits for free without any reduction to the score when playing in Realism gamemodes (-1 = use the value in l4d_stats_medkitpenaltyfree) // - // Default: "4" -// Minimum: "-1.000000" +// Minimum: "-1" l4d_stats_medkitpenaltyfree_r "4" // Maximum score reduction (the score reduction will not go over this value when a Medkit is used) // - // Default: "1.0" -// Minimum: "0.000000" -// Maximum: "1.000000" -l4d_stats_medkitpenaltymax "1.0" +// Minimum: "0.0" +// Maximum: "1.0" +l4d_stats_medkitpenaltymax "0.0" // Minimum Human players before stats will be enabled // - // Default: "2" -// Minimum: "1.000000" -// Maximum: "4.000000" -l4d_stats_minhumans "2" +// Minimum: "1" +// Maximum: "4" +l4d_stats_minhumans "1" // The amount of damage from a pounce to earn Nice Pounce (Pain From Above) success points // - -// Default: "15" -// Minimum: "1.000000" -l4d_stats_nicepouncedamage "15" +// Default: "10" +// Minimum: "1" +l4d_stats_nicepouncedamage "10" // Base score for a successful Nice Pounce // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_nicepouncesuccess "10" +// Minimum: "1" +l4d_stats_nicepouncesuccess "30" // Base team score for surviving a Panic Event with no Incapacitations // - // Default: "25" -// Minimum: "1.000000" -l4d_stats_panic "25" +// Minimum: "1" +l4d_stats_panic "100" // The amount of damage from a pounce to earn Perfect Pounce (Death From Above) success points // - // Default: "25" -// Minimum: "1.000000" -l4d_stats_perfectpouncedamage "25" +// Minimum: "1" +l4d_stats_perfectpouncedamage "20" // Base score for a successful Perfect Pounce // - // Default: "25" -// Minimum: "1.000000" -l4d_stats_perfectpouncesuccess "25" +// Minimum: "1" +l4d_stats_perfectpouncesuccess "80" // Base score for giving Pills to a friendly // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_pills "15" +// Minimum: "1" +l4d_stats_pills "30" // Base score for Protect a friendly in combat // - // Default: "3" -// Minimum: "1.000000" -l4d_stats_protect "3" +// Minimum: "1" +l4d_stats_protect "10" // Display player's rank when they connect. 0 = Disable, 1 = Enable // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" -l4d_stats_rankonjoin "1" +// Minimum: "0" +// Maximum: "1" +l4d_stats_rankonjoin "0" // Time to wait people to vote // - // Default: "20" -// Minimum: "10.000000" -l4d_stats_rankvotetime "20" +// Minimum: "10" +l4d_stats_rankvotetime "15" // [L4D2] Realism score multiplier for coop score // - // Default: "1.4" -// Minimum: "1.000000" -l4d_stats_realismmultiplier "1.4" +// Minimum: "1.0" +l4d_stats_realismmultiplier "1.5" // [L4D2] Realism score multiplier for infected versus score // - // Default: "0.6" -// Minimum: "0.000000" -// Maximum: "1.000000" -l4d_stats_realismvsmultiplier_i "0.6" +// Minimum: "0.0" +// Maximum: "1.0" +l4d_stats_realismvsmultiplier_i "1.0" // [L4D2] Realism score multiplier for survivors versus score // - // Default: "1.4" -// Minimum: "1.000000" -l4d_stats_realismvsmultiplier_s "1.4" +// Minimum: "1.0" +l4d_stats_realismvsmultiplier_s "1.5" // Base score for Rescue a friendly from a closet // - -// Default: "10" -// Minimum: "1.000000" -l4d_stats_rescue "10" +// Default: "15" +// Minimum: "1" +l4d_stats_rescue "60" // Base score for a Round Restart // - // Default: "100" -// Minimum: "1.000000" -l4d_stats_restart "100" +// Minimum: "1" +l4d_stats_restart "1" // Base score for Revive a friendly from Incapacitated state // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_revive "15" +// Minimum: "1" +l4d_stats_revive "40" // Base score for reaching a Safe House // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_safehouse "10" +// Minimum: "1" +l4d_stats_safehouse "100" // Silence chat triggers. 0 = Show chat triggers, 1 = Silence chat triggers // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_silencechat "1" // Community site URL, for rank panel display // - // Default: "" -l4d_stats_siteurl "" +l4d_stats_siteurl "bizzymod.com" // Base score for killing a Smoker // - // Default: "3" -// Minimum: "1.000000" -l4d_stats_smoker "3" +// Minimum: "1" +l4d_stats_smoker "15" // Base score for saving a friendly from a Smoker Tongue Drag // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_smokerdrag "5" +// Minimum: "1" +l4d_stats_smokerdrag "20" // Play sounds on certain events // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" l4d_stats_soundsenabled "1" // [L4D2] Base score for killing a Spitter // - // Default: "5" -// Minimum: "1.000000" -l4d_stats_spitter "5" +// Minimum: "1" +l4d_stats_spitter "10" // Base score for killing a Survivor // - // Default: "40" -// Minimum: "1.000000" -l4d_stats_survivor_death "40" +// Minimum: "1" +l4d_stats_survivor_death "100" // Base score for incapacitating a Survivor // - // Default: "15" -// Minimum: "1.000000" -l4d_stats_survivor_incap "15" +// Minimum: "1" +l4d_stats_survivor_incap "50" // Base team score for killing a Tank // - // Default: "25" -// Minimum: "1.000000" -l4d_stats_tank "25" +// Minimum: "1" +l4d_stats_tank "100" // Maximum inflicted damage done by Tank to earn Infected damagepoints // - // Default: "500" -// Minimum: "150.000000" -l4d_stats_tankdmgcap "500" +// Minimum: "150" +l4d_stats_tankdmgcap "1000" // Base score for a Tank thrown rock hit // - // Default: "5" -// Minimum: "0.000000" -l4d_stats_tankthrowrocksuccess "5" +// Minimum: "0" +l4d_stats_tankthrowrocksuccess "30" // Minimum playtime (minutes) to show in top10 ppm list // - // Default: "30" -// Minimum: "1.000000" -l4d_stats_top10ppmplaytime "30" +// Minimum: "1" +l4d_stats_top10ppmplaytime "1" // Number of seconds between Common Infected point earn announcement/update // - // Default: "90" -// Minimum: "30.000000" -l4d_stats_updaterate "90" +// Minimum: "30" +l4d_stats_updaterate "30" // Base score for Not Disturbing a Witch // - // Default: "10" -// Minimum: "1.000000" -l4d_stats_witch "10" +// Minimum: "1" +l4d_stats_witch "60" // Base score for Crowning a Witch // - // Default: "30" -// Minimum: "1.000000" -l4d_stats_witchcrowned "30" +// Minimum: "1" +l4d_stats_witchcrowned "80" //Final l4d_stats_announcemotd "0" @@ -643,8 +643,8 @@ l4d_stats_adm_cleanplaytime "0" l4d_stats_ffire_mode "0" l4d_stats_silencechat "1" l4d_stats_disabledmessages "0" -l4d_stats_insaferoom "0" -l4d_stats_restart "0" -l4d_stats_fkill "100" -l4d_stats_fincap "0" -l4d_stats_ffire "1" \ No newline at end of file +l4d_stats_insaferoom "1" +l4d_stats_restart "1" +l4d_stats_fkill "1" +l4d_stats_fincap "1" +l4d_stats_ffire "1" diff --git a/cfg/sourcemod/l4d_superversus.cfg b/cfg/sourcemod/l4d_superversus.cfg new file mode 100644 index 00000000..eec99fc8 --- /dev/null +++ b/cfg/sourcemod/l4d_superversus.cfg @@ -0,0 +1,45 @@ +// This file was auto-generated by SourceMod (v1.2.3) +// ConVars for plugin "l4d_superversus.smx" + + +// Give extra survivors HP packs? (1 for extra medpacks) +// - +// Default: "0" +// Minimum: "0.000000" +// Maximum: "1.000000" +l4d_XtraHP "0" + +// Max amount of infected (will not affect bots) +// - +// Default: "4" +// Minimum: "1.000000" +// Maximum: "18.000000" +l4d_infected_limit "4" + +// Should we clear Lobby reservaton? (For use with Left4DownTown extension ONLY) +// - +// Default: "0" +// Minimum: "0.000000" +// Maximum: "1.000000" +l4d_killreservation "0" + +// Set tanks HP based on Survivor Count +// - +// Default: "0" +// Minimum: "0.000000" +// Maximum: "1.000000" +l4d_supertank "0" + +// Maximum amount of survivors +// - +// Default: "4" +// Minimum: "1.000000" +// Maximum: "18.000000" +l4d_survivor_limit "4" + +// Tanks HP Multiplier (multi*(survivors-4)) +// - +// Default: "0.25" +// Minimum: "0.010000" +// Maximum: "1.000000" +l4d_tank_hpmulti "0.25" diff --git a/cfg/sourcemod/l4d_witch_damage.cfg b/cfg/sourcemod/l4d_witch_damage.cfg index 969301b2..3f22aed0 100644 --- a/cfg/sourcemod/l4d_witch_damage.cfg +++ b/cfg/sourcemod/l4d_witch_damage.cfg @@ -15,7 +15,7 @@ l4d_witch_damage_damage "100" // Damage applied when survivor is incapped. Scaled with scale cvar depending on the game difficulty. // - // Default: "30" -l4d_witch_damage_incapped "30" +l4d_witch_damage_incapped "25" // Turn on the plugin in these game modes, separate by commas (no spaces). (Empty = all). // - @@ -35,6 +35,6 @@ l4d_witch_damage_modes_tog "0" // Scales damage depending on game difficulty, each comma separated: 1st = Easy. 2nd = Normal. 3rd = Advanced. 4th = Expert. // - // Default: "100,100,100,100" -l4d_witch_damage_scale "100,100,100,100" +l4d_witch_damage_scale "50,100,100,100" diff --git a/cfg/sourcemod/lilac_config.cfg b/cfg/sourcemod/lilac_config.cfg index c3cc3de3..598c2b21 100644 --- a/cfg/sourcemod/lilac_config.cfg +++ b/cfg/sourcemod/lilac_config.cfg @@ -8,14 +8,14 @@ // 5 or more = ban on n'th detection (Minimum possible is 5) // - // Default: "5" -// Minimum: "0.000000" +// Minimum: "0" lilac_aimbot "5" // Detect Autoshoot. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_aimbot_autoshoot "1" // Detect Aimlock. @@ -24,15 +24,15 @@ lilac_aimbot_autoshoot "1" // 5 or more = ban on n'th detection (Minimum possible is 5). // - // Default: "10" -// Minimum: "0.000000" -lilac_aimlock "10" +// Minimum: "0" +lilac_aimlock "5" // Only process at most 5 suspicious players for aimlock. // DO NOT DISABLE THIS UNLESS YOUR SERVER CAN HANDLE IT! // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_aimlock_light "1" // Detect Angle-Cheats (Basic Anti-Aim, Legit Anti-Backstab and Duckspeed). @@ -41,16 +41,16 @@ lilac_aimlock_light "1" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" -lilac_angles "-1" +// Minimum: "-1" +// Maximum: "1" +lilac_angles "0" // Patch Angle-Cheats (Basic Anti-Aim, Legit Anti-Backstab and Duckspeed). // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" -lilac_angles_patch "1" +// Minimum: "0" +// Maximum: "1" +lilac_angles_patch "0" // CS:GO Only, detect Anti-Duck-Delay/FastDuck. // -1 = Log only. @@ -58,15 +58,15 @@ lilac_angles_patch "1" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" -lilac_anti_duck_delay "-1" +// Minimum: "-1" +// Maximum: "1" +lilac_anti_duck_delay "0" // Automatically update Little Anti-Cheat. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_auto_update "0" // Patch Backtrack. @@ -74,8 +74,8 @@ lilac_auto_update "0" // 1 = Enabled. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_backtrack_patch "0" // How tolerant the backtrack patch will be of tickcount changes. @@ -83,15 +83,15 @@ lilac_backtrack_patch "0" // 1+ = n ticks tolerant. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "3.000000" +// Minimum: "0" +// Maximum: "3" lilac_backtrack_tolerance "0" // Enable banning of cheaters, set to 0 if you want to test Lilac before fully trusting it with bans. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_ban "1" // Ban reason language. @@ -99,14 +99,14 @@ lilac_ban "1" // 1 = Use the language of the cheater. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" -lilac_ban_language "0" +// Minimum: "0" +// Maximum: "1" +lilac_ban_language "1" // How long bans should last in minutes (0 = forever). // - // Default: "0" -// Minimum: "0.000000" +// Minimum: "0" lilac_ban_length "0" // Bhop detection mode (Negative values = log-only). @@ -118,9 +118,9 @@ lilac_ban_length "0" // 6 = High. // - // Default: "5" -// Minimum: "-6.000000" -// Maximum: "6.000000" -lilac_bhop "-1" +// Minimum: "-6" +// Maximum: "6" +lilac_bhop "0" // Detect Chat-Clear. // -1 = Log only. @@ -128,8 +128,8 @@ lilac_bhop "-1" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" +// Minimum: "-1." +// Maximum: "1." lilac_chatclear "1" // Detect basic invalid ConVars. @@ -138,9 +138,9 @@ lilac_chatclear "1" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" -lilac_convar "-1" +// Minimum: "-1" +// Maximum: "1" +lilac_convar "0" // Database to log detections to. // empty = don't log to database @@ -152,15 +152,15 @@ lilac_database "" // Enable Little Anti-Cheat. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_enable "1" // Filter invalid characters in chat (block chat messages). // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_filter_chat "1" // Filter invalid names (kicks players with invalid names). @@ -170,15 +170,15 @@ lilac_filter_chat "1" // 2 = Ban cheaters with newlines in names. // - // Default: "2" -// Minimum: "-1.000000" -// Maximum: "2.000000" +// Minimum: "-1" +// Maximum: "2" lilac_filter_name "-1" // Enable cheat logging. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_log "1" // Which date & time format to use when logging. Type: "lilac_date_list" for more info. @@ -191,22 +191,22 @@ lilac_log_date "{year}/{month}/{day} {hour}:{minute}:{second}" // 2 = Log extra information on everything. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "2.000000" +// Minimum: "0" +// Maximum: "2" lilac_log_extra "1" // Log when players are kicked for misc features, like interp exploits, too high ping and on convar response failure. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" -lilac_log_misc "1" +// Minimum: "0" +// Maximum: "1" +lilac_log_misc "0" // Ignore some cheat detections for players who have too much packet loss (bad connection to the server). // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_loss_fix "1" // Detect macros. @@ -216,17 +216,17 @@ lilac_loss_fix "1" // 2 = Enabled, but no logging. // - // Default: "0" -// Minimum: "-1.000000" -// Maximum: "2.000000" -lilac_macro "1" +// Minimum: "-1" +// Maximum: "2" +lilac_macro "0" // What to do with players detected of using macros: // 0 = Kick. // 1 = Ban. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_macro_method "0" // What types of macros to detect: @@ -235,9 +235,9 @@ lilac_macro_method "0" // 2 = Auto-Shoot. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "3.000000" -lilac_macro_mode "0" +// Minimum: "0" +// Maximum: "3" +lilac_macro_mode "3" // Warning mode for Macro detection: // 0 = No warning. @@ -246,15 +246,15 @@ lilac_macro_mode "0" // 3 = Warn everyone. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "3.000000" -lilac_macro_warning "3" +// Minimum: "0" +// Maximum: "3" +lilac_macro_warning "0" // Ban players via Material-Admin (Fork of Sourcebans++. If it isn't installed, will default to sourcebans++ or basebans). // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_materialadmin "1" // Kicks players attempting to exploit interpolation, any interp higher than this value = kick. @@ -262,25 +262,25 @@ lilac_materialadmin "1" // 0 or less than 105 = Disabled. // - // Default: "105" -// Minimum: "0.000000" -// Maximum: "510.000000" -lilac_max_lerp "106" +// Minimum: "0" +// Maximum: "510" +lilac_max_lerp "510" // Ban players with too high of a ping for 3 minutes. // This is meant to deal with fakelatency, the ban length is just to prevent instant reconnects. // 0 = no ping limit, minimum possible is 100. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1000.000000" -lilac_max_ping "0" +// Minimum: "100" +// Maximum: "1000" +lilac_max_ping "1000" // Move players with a high ping to spectator and warn them after this many seconds (Minimum possible is 30). // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "90.000000" -lilac_max_ping_spec "0" +// Minimum: "30" +// Maximum: "90" +lilac_max_ping_spec "30" // TF2 Only, detect infinite noisemaker spam. STILL IN BETA, DOES NOT BAN, ONLY LOGS! MAY HAVE SOME ISSUES! // -1 = Log only. @@ -288,8 +288,8 @@ lilac_max_ping_spec "0" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" +// Minimum: "-1" +// Maximum: "1" lilac_noisemaker "0" // Detect NoLerp. @@ -298,29 +298,29 @@ lilac_noisemaker "0" // 1 = Enabled. // - // Default: "1" -// Minimum: "-1.000000" -// Maximum: "1.000000" -lilac_nolerp "-1" +// Minimum: "-1" +// Maximum: "1" +lilac_nolerp "0" // Ban players via sourcebans++ (If it isn't installed, it will default to basebans). // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_sourcebans "1" // Enable reflecting log messages to SourceIRC channels flagged with 'lilac', if SourceIRC is available. // - // Default: "1" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_sourceirc "1" // Welcome connecting players saying that the server is protected. // - // Default: "0" -// Minimum: "0.000000" -// Maximum: "1.000000" +// Minimum: "0" +// Maximum: "1" lilac_welcome "0" diff --git a/cfg/sourcemod/sm_restart_empty.cfg b/cfg/sourcemod/sm_restart_empty.cfg index f84bf81d..f1fa0a3f 100644 --- a/cfg/sourcemod/sm_restart_empty.cfg +++ b/cfg/sourcemod/sm_restart_empty.cfg @@ -4,8 +4,8 @@ // Grace period (in sec.) waiting for new player to join until actually decide to restart the server // - -// Default: "1.0" -sm_restart_empty_delay "1.0" +// Default: "1" +sm_restart_empty_delay "1" // Enable plugin (1 - On / 0 - Off) // - @@ -54,7 +54,5 @@ sm_restart_empty_unload_ext_num "0" // If your server has incorrect time, you can set UTC correction hours here (they will be appended to a server time) // - -// Default: "0.0" -sm_restart_empty_utc_delta "0.0" - - +// Default: "0" +sm_restart_empty_utc_delta "0" diff --git a/cfg/sourcemod/sourcemod.cfg b/cfg/sourcemod/sourcemod.cfg new file mode 100644 index 00000000..e2b52b00 --- /dev/null +++ b/cfg/sourcemod/sourcemod.cfg @@ -0,0 +1,138 @@ +// SourceMod Configuration File +// This file is automatically executed by SourceMod every mapchange. + + +// Specifies how admin activity should be relayed to users. Add up the values +// below to get the functionality you want. +// 1: Show admin activity to non-admins anonymously. +// 2: If 1 is specified, admin names will be shown. +// 4: Show admin activity to admins anonymously. +// 8: If 4 is specified, admin names will be shown. +// 16: Always show admin names to root users. +// -- +// Default: 13 (1+4+8) +sm_show_activity 16 + +// Specifies whether menu sounds are enabled for menus created by SourceMod. +// Menu sounds can be further configured in addons/sourcemod/configs/core.cfg. +// -- +// Default: 1 +sm_menu_sounds 1 + +// Specifies how long of a delay, in seconds, should be used in between votes +// that are "public" or can be spammed. Whether or not this delay is obeyed +// is dependent on the menu/command. +// -- +// Default: 30 +sm_vote_delay 0 + +// Default datetime formatting rules when displaying to clients. +// For full options, see: http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html +// -- +// Default: %m/%d/%Y - %H:%M:%S +// 12 hour format: %m/%d/%Y - %I:%M:%S %p +sm_datetime_format "%m/%d/%Y - %H:%M:%S" + +// Sets how SourceMod should check immunity levels when administrators target +// each other. +// 0: Ignore immunity levels (except for specific group immunities). +// 1: Protect from admins of lower access only. +// 2: Protect from admins of equal to or lower access. +// 3: Same as 2, except admins with no immunity can affect each other. +// -- +// Default: 1 +sm_immunity_mode 3 + +// Sets how many seconds SourceMod should adjust time values for incorrect +// server clocks. This can be positive or negative and will affect every +// system time in SourceMod, including logging stamps. +// -- +// Default: 0 +sm_time_adjustment 0 + +// Specifies the amount of time that is allowed between chat messages. This +// includes the say and say_team commands. If a client sends a message faster +// than this time, they receive a flood token. When the client has accumulated +// 3 or more tokens, a warning message is shown instead of the chat message. +// -- +// Requires: antiflood.smx +// Default: 0.75 +sm_flood_time 0 + +// Specifies how the reserved slots plugin operates. Valid values are: +// 0 : Public slots are used in preference to reserved slots. Reserved slots are freed before public slots. +// 1 : If someone with reserve access joins into a reserved slot, the player with the highest latency and +// no reserved slot access (spectator players are selected first) is kicked to make room. Thus, the reserved +// slots always remains free. The only situation where the reserved slot(s) can become properly occupied is +// if the server is full with reserve slot access clients. +// 2 : The same as sm_reserve_type 1 except once a certain number of admins have been reached, the reserve slot +// stops kicking people and anyone can join to fill the server. You can use this to simulate having a large +// number of reserved slots with sm_reserve_type 0 but with only need to have 1 slot unavailable when there are +// less admins connected. +// -- +// Requires: reservedslots.smx +// Default: 0 +sm_reserve_type 0 + +// Specifies the number of reserved player slots. Users with the reservation +// admin flag set will be able to join the server when there are no public slots +// remaining. If someone does not have this flag, they will be kicked. +// (Public slots are defined as: maxplayers - number of reserved slots) +// -- +// Requires: reservedslots.smx +// Default: 0 +sm_reserved_slots 0 + +// Specifies whether or not reserved slots will be hidden (subtracted from max +// slot count). Valid values are 0 (Visible) or 1 (Hidden). +// -- +// Requires: reservedslots.smx +// Default: 0 +sm_hide_slots 0 + +// Specifies whether or not non-admins can send messages to admins using +// say_team @. Valid values are 0 (Disabled) or 1 (Enabled) +// -- +// Requires: basechat.smx +// Default: 1 +sm_chat_mode 1 + +// Specifies whether or not "timeleft" will automatically be triggered every +// x seconds. Valid values are 0 (Disabled) to 1800 seconds. +// -- +// Requires: basetriggers.smx +// Default: 0 +sm_timeleft_interval 0 + +// Specifies whether or not chat triggers are broadcast to the server or just +// the player who requested the info trigger. Valid values are 0 (Disabled) or +// 1 (Enabled) +// -- +// Requires: basetriggers.smx +// Default: 0 +sm_trigger_show 0 + +// Specifies whether or not to display vote progress to clients in the +// "hint" box (near the bottom of the screen in most games). +// Valid values are 0 (Disabled) or 1 (Enabled). +// -- +// Default: 0 +sm_vote_progress_hintbox 0 + +// Specifies whether or not to display vote progress to clients in the +// chat area. Valid values are 0 (Disabled) or 1 (Enabled). +// -- +// Default: 0 +sm_vote_progress_chat 0 + +// Specifies whether or not to display vote progress in the server console. +// Valid values are 0 (Disabled) or 1 (Enabled). +// -- +// Default: 0 +sm_vote_progress_console 0 + +// Specifies whether or not to display vote progress to clients in the +// client console. Valid values are 0 (Disabled) or 1 (Enabled). +// -- +// Default: 0 +sm_vote_progress_client_console 0 diff --git a/cfg/special.cfg b/cfg/special.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/special.cfg @@ -0,0 +1 @@ + diff --git a/cfg/stripper/pissmod/global_filters.cfg b/cfg/stripper/pissmod/global_filters.cfg new file mode 100644 index 00000000..d6bb0f74 --- /dev/null +++ b/cfg/stripper/pissmod/global_filters.cfg @@ -0,0 +1,715 @@ +; ===================================================== +; == ENTITY TYPE FIX == +; == Fix entities using the wrong class type == +; ===================================================== +; --- Always +modify: +; --- Fix custom campaigns using the wrong physics prop type, which prevents our global fixes from being applied +; --- prop_physics_multiplayer is essentially a legacy entity that functions identically to prop_physics but serves no purpose in L4D2, it does not affect networking overhead +{ + match: + { + "classname" "prop_physics_multiplayer" + } + replace: + { + "classname" "prop_physics" + } +} +; --- Replace all forklift models with the broken version to prevent physics issues when first hit +{ + match: + { + "classname" "prop_physics" + "model" "models/props/cs_assault/forklift.mdl" + } + replace: + { + "model" "models/props\cs_assault\forklift_brokenlift.mdl" + } +} +{ + match: + { + "classname" "prop_physics_override" + "model" "models/props/cs_assault/forklift.mdl" + } + replace: + { + "model" "models/props\cs_assault\forklift_brokenlift.mdl" + } +} + +; ===================================================== +; == ITEM DENSITY FIX == +; == Fix item density being set to 0 on some maps == +; ===================================================== +modify: +; --- Ammo piles +{ + match: + { + "AmmoDensity" "0" + } + replace: + { + "AmmoDensity" "2" + } +} +; --- Pills +{ + match: + { + "PainPillDensity" "0" + } + replace: + { + "PainPillDensity" "1" + } +} + +; ===================================================== +; == WEAPON SKINS == +; == Use random skins, see weapon_skin_enabler.nut == +; ===================================================== +add: +{ + "classname" "logic_auto" + "OnMapSpawn" "!self,RunScriptFile,weapon_skin_enabler,5,-1" +} + +; ===================================================== +; == INFECTED CLIP / TRIGGER FIX == +; == Remove or fix clips and triggers for infected == +; ===================================================== +; --- Remove infected clips +filter: +{ + "classname" "func_playerinfected_clip" +} +{ + "classname" "func_playerghostinfected_clip" +} +; --- Change ghost hurt triggers into regular hurt triggers +modify: +{ + match: + { + "classname" "trigger_hurt_ghost" + } + replace: + { + "classname" "trigger_hurt" + } +} + +; ===================================================== +; == DOOR PROP FIXES == +; == Fix issues with different doors == +; ===================================================== +; --- Make porta potty doors breakable before they have been opened +modify: +; --- Flags for starting closed +{ + match: + { + "classname" "prop_door_rotating" + "model" "models/props_urban/outhouse_door001.mdl" + "spawnflags" "532480" + } + replace: + { + "spawnflags" "8192" + } +} +; --- Flags for starting open +{ + match: + { + "classname" "prop_door_rotating" + "model" "models/props_urban/outhouse_door001.mdl" + "spawnflags" "532481" + } + replace: + { + "spawnflags" "8193" + } +} +; --- Replace exploitable door model with damaged version that can't be climbed on +{ + match: + { + "model" "models/props_doors/doorglassmain01.mdl" + } + replace: + { + "model" "models/props_doors/doorglassmain01_dm01.mdl" + } +} + +; ===================================================== +; == SOUND FIXES == +; == Remove or fix map sounds == +; ===================================================== +filter: +; --- Remove environmental sounds and DSP +{ + "classname" "env_soundscape" +} +{ + "classname" "env_soundscape_proxy" +} +{ + "classname" "env_soundscape_triggerable" +} +; --- Remove microphone / speaker effects +{ + "classname" "env_microphone" +} + +; ===================================================== +; == VISUAL EFFECTS == +; == Remove annoying visual effects == +; ===================================================== +filter: +{ + "classname" "env_sun" +} + +; ===================================================== +; == HITTABLE RENDER DISTANCE == +; == Prevent hittables from fading over distance == +; ===================================================== +modify: +{ + match: + { + "classname" "prop_car_alarm" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_junk/dumpster.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_junk/dumpster_2.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_69sedan.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_82hatchback.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_82hatchback_wrecked.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_84sedan.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_95sedan.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/cara_95sedan_wrecked.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/police_car.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/police_car_city.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/police_car_lights_on.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/police_car_opentrunk.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/police_car_rural.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/taxi_cab.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/taxi_city.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/taxi_rural.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props/cs_assault/forklift.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props/cs_assault/forklift_brokenlift.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/airport_baggage_cart2.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_foliage/swamp_fallentree01_bare.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_foliage/tree_trunk_fallen.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_unique/haybails_single.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_fairgrounds/bumpercar.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props_vehicles/generatortrailer01.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} +{ + match: + { + "classname" "prop_physics" + "model" "models/props/cs_assault/handtruck.mdl" + } + replace: + { + "fadescale" "0" + "fademindist" "-1" + "fademaxdist" "0" + } +} + +; ===================================================== +; == ITEM PICKUP FIX == +; == Fix item spawns having multiple pickups == +; ===================================================== +modify: +; --- Melee weapon spawns +{ + match: + { + "targetname" "weapon_melee_spawn" + } + replace: + { + "count" "1" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "8" + } + replace: + { + "spawnflags" "0" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "9" + } + replace: + { + "spawnflags" "1" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "10" + } + replace: + { + "spawnflags" "2" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "11" + } + replace: + { + "spawnflags" "3" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "12" + } + replace: + { + "spawnflags" "4" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "13" + } + replace: + { + "spawnflags" "5" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "14" + } + replace: + { + "spawnflags" "6" + } +} +{ + match: + { + "targetname" "weapon_melee_spawn" + "spawnflags" "15" + } + replace: + { + "spawnflags" "7" + } +} +; --- General item spawns +{ + match: + { + "targetname" "weapon_item_spawn" + "spawnflags" "8" + } + replace: + { + "spawnflags" "0" + } +} +{ + match: + { + "targetname" "weapon_item_spawn" + "spawnflags" "9" + } + replace: + { + "spawnflags" "1" + } +} +{ + match: + { + "targetname" "weapon_item_spawn" + "spawnflags" "10" + } + replace: + { + "spawnflags" "2" + } +} +{ + match: + { + "targetname" "weapon_item_spawn" + "spawnflags" "11" + } + replace: + { + "spawnflags" "3" + } +} +; --- Pain pill spawns +{ + match: + { + "targetname" "weapon_pain_pills_spawn" + "spawnflags" "8" + } + replace: + { + "spawnflags" "0" + } +} +{ + match: + { + "targetname" "weapon_pain_pills_spawn" + "spawnflags" "9" + } + replace: + { + "spawnflags" "1" + } +} +{ + match: + { + "targetname" "weapon_pain_pills_spawn" + "spawnflags" "10" + } + replace: + { + "spawnflags" "2" + } +} +{ + match: + { + "targetname" "weapon_pain_pills_spawn" + "spawnflags" "11" + } + replace: + { + "spawnflags" "3" + } +} diff --git a/cfg/survivor.cfg b/cfg/survivor.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/survivor.cfg @@ -0,0 +1 @@ + diff --git a/cfg/system.cfg b/cfg/system.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/system.cfg @@ -0,0 +1 @@ + diff --git a/cfg/tag_launcher.cfg b/cfg/tag_launcher.cfg new file mode 100644 index 00000000..3467ec06 --- /dev/null +++ b/cfg/tag_launcher.cfg @@ -0,0 +1,338 @@ ++ai_debug_ragdoll_magnets 0 ++ai_debug_speech 0 ++ai_expression_frametime 0.1 ++ai_expression_optimization 0 ++ai_force_serverside_ragdoll 0 ++ai_LOS_mode 0 ++ai_post_frame_navigation 0 ++ai_sequence_debug 0 ++ai_setupbones_debug 0 ++ai_show_hull_attacks 0 ++ai_use_visibility_cache 1 ++allow_all_bot_survivor_team 0 ++autoaim_max_deflect 1.0 ++autoaim_max_dist 2000 ++autoaim_viewing_client 1 + ++breakable_disable_gib_limit 0 ++breakable_multiplayer 1 + ++car_alarm_chirp_distance 500 ++car_alarm_chirp_duration 1 ++car_alarm_chirp_interval 1 ++car_alarm_distance 1000 ++car_alarm_duration 20 ++cc_norepeat 0 ++collision_shake_amp 0.0 ++collision_shake_freq 0.0 ++collision_shake_time 0.0 ++commentary_available 1 ++common_dps_spew 0 ++common_dps_window 0 + ++debug_l4dverbose 0 ++debug_materialmodifycontrol 0 ++debug_overlay_fullposition 0 ++debug_physimpact 0 ++debug_touchlinks 0 ++decalfrequency 1.25 ++director_afk_timeout 20 ++director_allow_infected_bots 1 ++director_min_start_players 1 ++director_report_screen_delay 5 ++director_survival_setup_time 0 ++director_vs_convert_pills 0.0 ++dispcoll_drawplane 0 ++displaysoundlist 0 + ++elevator_movedelay 0 ++ent_debugkeys "" ++ent_show_contexts 0 ++ent_steadystate_batchsize 20 ++ent_steadystate_cooldown 5 ++ent_steadystate_delay 5 ++ent_steadystate_enable 1 ++ent_steadystate_interval 0.1 + ++fall_speed_fatal 749.39976 ++fall_speed_safe 499.59984 ++fidget_max_interval 20 ++fidget_min_interval 10 ++fire_absorbrate 100 ++fire_dmgbase 0 ++fire_dmginterval 1 ++fire_dmgscale 0.1 ++fire_extabsorb 100 ++fire_extscale 100 ++fire_growthrate 1 ++fire_heatscale 0.1 ++fire_incomingheatscale 0.1 ++fire_maxabsorb 100 ++flex_expression "" ++flex_talk 0 ++func_break_reduction_factor 1.0 ++func_breakdmg_bullet 1 ++func_breakdmg_club 3 ++func_breakdmg_explosive 2 + ++g_debug_doors 0 ++g_debug_npc_vehicle_roles 0 ++g_debug_transitions 0 ++grenadelauncher_startpos_forward 16 ++grenadelauncher_startpos_right 4 ++grenadelauncher_startpos_up 0 ++grenadelauncher_vel_up 125 ++grenadelauncher_vel_variance 0 + ++inferno_max_trace_per_tick 16 + ++l4d1_survivor_give_item 0 ++l4d_show_incapupdate 0 ++l4d_show_weaponequip 0 ++l4d_stats_nogameplaycheck 1 ++l4d_stats_track 1 ++lservercfgfile listenserver.cfg + ++mapcyclefile mapcycle.txt ++mp_allowNPCs 1 ++mp_autocrosshair 1 ++mp_autokick 0 ++mp_autoteambalance 0 ++mp_c4timer 10 ++mp_clan_ready_signal ready ++mp_clan_readyrestart 0 ++mp_defaultteam 0 ++mp_enableroundwaittime 0 ++mp_falldamage 0 ++mp_flashlight 1 ++mp_footsteps 1 ++mp_forcerespawn 1 ++mp_fraglimit 0 ++mp_freezetime 0 ++mp_humanteam any ++mp_limitteams 0 ++mp_logdetail 0 ++mp_restartgame 0 ++mp_roundtime 9 ++mp_spawnprotectiontime 0 ++mp_stalemate_at_timelimit 0 ++mp_stalemate_enable 0 ++mp_stalemate_timelimit 240 ++mp_startmoney 16000 ++mp_teamlist hgrunt;scientist ++mp_teamoverride 1 ++mp_teamplay 0 ++mp_tkpunish 0 ++mp_waitingforplayers_cancel 0 ++mp_waitingforplayers_restart 0 ++mp_waitingforplayers_time 0 ++mp_weaponstay 0 ++music_bank_max_duration 86400 ++music_bank_min_duration 86400 + ++nav_drag_selection_volume_zmax_offset 32 ++nav_drag_selection_volume_zmin_offset 32 ++nav_save_history 10 ++nb_avoid 0 ++nb_avoid_interval 1 ++nb_player_move_direct 0 ++nextlevel "" ++npc_vphysics 0 + ++phys2_shoot_speed 250 ++phys_impactforcescale 1 ++phys_penetration_error_time 0 ++phys_shoot_torque 1000000 ++phys_speeds 0 ++phys_stressbodyweights 5 ++phys_timescale 1 ++phys_upimpactforcescale 0.35 ++physicsshadowupdate_render 0 ++pipe_bomb_beep_interval_delta 0.025 ++pipe_bomb_beep_min_interval 0.083333 ++pipe_bomb_initial_beep_interval 0.533333 ++pipe_bomb_shake_amplitude 50 ++pipe_bomb_shake_radius 1000 ++pipe_bomb_timer_duration 7 ++player_old_armor 0 ++prop_active_gib_limit 30 ++prop_active_gib_max_fade_time 10 + ++rr_debugplayer -1 ++rr_debugresponseconcept "" ++rr_debugresponses 0 ++rr_debugrule "" ++rr_dumpresponses 0 + ++sb_allow_leading 0 ++sb_melee_approach_victim 0 ++sb_reachable_cache_paranoia 1 ++sb_skill survivor ++sb_temp_health_consider_factor 0.8 ++sb_toughness_buffer 20 ++sb_transition 1 ++scene_async_prefetch_spew 0 ++scene_clientplayback 1 ++scene_forcecombined 0 ++scene_maxcaptionradius 1500 ++script_attach_debugger_at_startup 0 ++script_break_in_native_debugger_on_error 0 ++servercfgfile server.cfg ++sk_player_arm 3 ++sk_player_chest 3 ++sk_player_head 3 ++sk_player_leg 3 ++sk_player_stomach 3 ++spec_filter any ++spec_filter_infected any ++spec_filter_survivors any ++step_spline 1 ++survivor_death_anims 0 ++survivor_incap_hopeless_decay_rate 6 ++survivor_incap_max_fall_damage 200 ++survivor_incap_tongued_decay_rate 20 ++survivor_limit 4 ++survivor_model_selection -1 ++survivor_respawn_with_guns 1 ++sv__ragdoll_max_remove_per_frame 1 ++sv_allow_votes 1 ++sv_benchmark_autovprofrecord 0 ++sv_benchmark_numticks 0 ++sv_bonus_challenge 0 ++sv_clockcorrection_msecs 50 ++sv_debug_entity "" ++sv_infected_scale_max 1.0 ++sv_infected_scale_min 1.0 ++sv_lagflushbonecache 0 ++sv_lagpushticks 0 ++sv_massreport 0 ++sv_max_usercmd_future_ticks 15 ++sv_maxunlag 0.5 ++sv_music_debug 0 ++sv_player_max_separation_force 0 ++sv_playerperfhistorycount 128 ++sv_pz_endgame_vote_period 15 ++sv_pz_endgame_vote_post_period 5 ++sv_ragdoll_maxcount 80 ++sv_ragdoll_maxcount_boss 3 ++sv_ragdoll_maxcount_generic 60 ++sv_ragdoll_maxcount_gib 30 ++sv_ragdoll_maxcount_special 12 ++sv_ragdoll_maxcount_survivor 3 ++sv_ragdoll_version 1 ++sv_regeneration_wait_time 0 ++sv_rescue_disabled 0 ++sv_runcmds 1 ++sv_script_think_interval 0.1 ++sv_showladders 0 ++sv_strict_notarget 0 ++sv_teststepsimulation 1 ++sv_thinktimecheck 0 ++sv_threaded_init 0 ++sv_unlag 1 ++sv_unlag_debug 0 ++sv_unlag_fixstuck 1 ++sv_vehicle_autoaim_scale 10 ++sv_vote_command_delay 1.5 ++sv_vote_failure_timer 0 ++sv_vote_issue_change_difficulty_allowed 1 ++sv_vote_issue_change_map_later_allowed 1 ++sv_vote_issue_change_map_now_allowed 1 ++sv_vote_issue_change_mission_allowed 1 ++sv_vote_issue_kick_allowed 1 ++sv_vote_issue_restart_game_allowed 1 ++sv_vote_kick_ban_duration 5 ++sv_vote_timer_duration 15 ++sv_zoo_model_filter "" ++sv_zoo_spacing 64 ++sv_zoo_spacing_rows 192 ++sv_zoo_spacing_wrap 80 ++sv_zoo_tint_clr "153 153 153 255" ++sv_zoo_tint_loop 1 ++sv_zoo_wrap_skin 1 + ++tank_rock_overhead_percent 100 ++target_scan_use_query_cache 1 ++tauntfrequency 0 ++template_debug 0 ++tongue_bullet_radius 8 ++trace_report 0 ++tutor 0 ++tv_allow_camera_man 1 ++tv_allow_static_shots 1 ++tv_delay 0 ++tv_delaymapchange 0 + ++versus_force_start_time 180 ++versus_marker_num 0 ++versus_round_restarttimer 15 ++versus_round_restarttimer_finale 15 ++voice_serverdebug 0 ++vprof_scope_entity_gamephys 0 ++vprof_scope_entity_thinks 0 ++vprof_think_limit 0 ++vs_score_pp_health 1.0 ++vs_score_pp_healthbuffer 1.0 + ++weapon_showproficiency 0 ++witch_rage_ramp_duration 3 + ++xbox_steering_deadzone 0.05 ++xc_crouch_debounce 0 + ++z_attack_change_target_range 40 ++z_attack_interval 0 ++z_attack_max_range 40 ++z_attack_min_range 20 ++z_attack_movement_penalty 0.7 ++z_attack_on_the_run_range 40 ++z_bbq_min 0.0 ++z_bbq_rate 0.01 ++z_burn_max 1.0 ++z_burn_rate 0.01 ++z_checkpoint_debug 0 ++z_damage_screen_fade_alpha 32 ++z_damage_screen_fade_duration 0.666667 ++z_debug_infected_server_anim 0 ++z_debug_stuck "" ++z_door_pound_damage 1000 ++z_exploding_force 1000 ++z_exploding_inner_radius 200 ++z_exploding_outer_radius 200 ++z_fatal_blast_incineration_probability 0 ++z_fatal_blast_max_ragdolls 20 ++z_fatal_blast_min_ragdolls 1 ++z_finale_spawn_safety_range_override 0 ++z_ghost_cooldown 0 ++z_ghost_delay_minspawn 1 ++z_ghost_duration 1 ++z_ghost_group_spawn 1 ++z_ghost_line_of_scrimmage_far 2000 ++z_ghost_line_of_scrimmage_near 1000 ++z_ghost_line_of_scrimmage_safety 10 ++z_ghost_line_of_scrimmage_threat_bonus 1000 ++z_ghost_los_expected_progress 1500 ++z_ghost_offer_acceptance_time 0 ++z_ghost_offer_spawn_safety_time 20 ++z_ghost_spawn_distance 300 ++z_head_damage_causes_wounds 1 ++z_hunter_lunge_distance 800 ++z_hunter_lunge_pitch 25 ++z_max_survivor_damage 300 ++z_minigun_atomize 1 ++z_non_head_damage_factor_multiplier 1.0 ++z_population c1streets ++z_pounce_shake_amplitude 6 ++z_pounce_shake_duration 2 ++z_pounce_shake_radius 300 ++z_pounce_stumble_radius 0 ++z_ragdoll_discard_range 3000 ++z_scrimmage_sphere 1 ++z_survivor_respawn_health 40 ++z_tank_footstep_shake_amplitude 5 ++z_tank_footstep_shake_duration 2 ++z_tank_footstep_shake_interval 0.1 ++z_tank_footstep_shake_radius 1000 ++z_use_next_difficulty_damage_factor 0 ++z_witch_always_kills 0 ++z_witch_tongue_range 0 diff --git a/cfg/tag_nf.cfg b/cfg/tag_nf.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/tag_nf.cfg @@ -0,0 +1 @@ + diff --git a/cfg/tag_rep.cfg b/cfg/tag_rep.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/tag_rep.cfg @@ -0,0 +1 @@ + diff --git a/cfg/tag_server.cfg b/cfg/tag_server.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/tag_server.cfg @@ -0,0 +1 @@ + diff --git a/cfg/tag_sv.cfg b/cfg/tag_sv.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/tag_sv.cfg @@ -0,0 +1 @@ + diff --git a/cfg/test.cfg b/cfg/test.cfg new file mode 100644 index 00000000..7f0aead9 --- /dev/null +++ b/cfg/test.cfg @@ -0,0 +1,8 @@ +// sv_allow_wait_command 1 +// sv_quota_stringcmdspersecond 2147483647 +// sm_cvar sv_runcmds 1 +// sm_cvar sv_allow_wait_command 1 +// sm_cvar sv_quota_stringcmdspersecond 2147483647 +// +echo TEST. +sm_cvar lservercfgfile "test.cfg" diff --git a/cfg/tick060.cfg b/cfg/tick060.cfg new file mode 100644 index 00000000..d5d33940 --- /dev/null +++ b/cfg/tick060.cfg @@ -0,0 +1,42 @@ +// Settings for Tick Rate 60 + +sv_alternateticks 0 +fps_max 1000 +sv_maxcmdrate 100 +sv_mincmdrate 60 +net_maxroutable 1200 +net_splitrate 2 +sv_maxrate 72000 +sv_minrate 72000 +net_splitpacket_maxrate 72000 + +sm_cvar sv_alternateticks 0 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar sv_maxclientframes 1000 +sm_cvar sv_maxupdaterate 60 +sm_cvar sv_minupdaterate 60 +sm_cvar sv_maxcmdrate 100 +sm_cvar sv_mincmdrate 60 +sm_cvar sv_client_cmdrate_difference 0 +sm_cvar net_maxroutable 1200 +sm_cvar net_maxfragments 1200 +sm_cvar net_minroutable 1200 +sm_cvar net_compresspackets_minsize 1200 +sm_cvar net_splitrate 2 +sm_cvar sv_maxrate 72000 +sm_cvar sv_minrate 72000 +sm_cvar net_splitpacket_maxrate 72000 +sm_cvar net_maxcleartime 0.016667 +sm_cvar sv_client_min_interp_ratio 0 +sm_cvar sv_client_max_interp_ratio 30 +sm_cvar sm_min_lerp 0.000000 +sm_cvar sm_max_lerp 0.500000 +sm_cvar sv_clockcorrection_msecs 50 +sm_cvar sv_cycle_latch_timer 0.2 +sm_cvar sv_max_usercmd_future_ticks 6 +sm_cvar nb_update_frequency 0 +sm_cvar nb_update_framelimit 10 +sm_cvar tick_door_speed 1.0 +sm_cvar z_mounted_gun_fire_think_interval 0.016667 +sm_cvar tv_maxrate 72000 diff --git a/cfg/tick090.cfg b/cfg/tick090.cfg new file mode 100644 index 00000000..6a50cd3e --- /dev/null +++ b/cfg/tick090.cfg @@ -0,0 +1,34 @@ +// Settings for Tick Rate 90 + +sv_alternateticks 0 +fps_max 1000 +sv_maxcmdrate 100 +sv_mincmdrate 90 +net_maxroutable 1200 +net_splitrate 1 +sv_maxrate 108000 +sv_minrate 108000 +net_splitpacket_maxrate 108000 + +sm_cvar sv_alternateticks 0 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar sv_maxclientframes 1000 +sm_cvar sv_maxupdaterate 90 +sm_cvar sv_minupdaterate 90 +sm_cvar sv_maxcmdrate 100 +sm_cvar sv_mincmdrate 90 +sm_cvar sv_client_cmdrate_difference 0 +sm_cvar net_maxroutable 1200 +sm_cvar net_minroutable 1200 +sm_cvar net_compresspackets_minsize 1200 +sm_cvar net_splitrate 1 +sm_cvar sv_maxrate 108000 +sm_cvar sv_minrate 108000 +sm_cvar net_splitpacket_maxrate 108000 +sm_cvar net_maxcleartime 0.011111 +sm_cvar sv_client_min_interp_ratio 0 +sm_cvar sv_client_max_interp_ratio 45 +sm_cvar sv_clockcorrection_msecs 50 +sm_cvar nb_update_frequency 0 +sm_cvar tick_door_speed 1.5 diff --git a/cfg/tick100.cfg b/cfg/tick100.cfg new file mode 100644 index 00000000..04c6c45b --- /dev/null +++ b/cfg/tick100.cfg @@ -0,0 +1,34 @@ +// Settings for Tick Rate 100 + +sv_alternateticks 1 +fps_max 1000 +sv_maxcmdrate 100 +sv_mincmdrate 50 +net_maxroutable 1200 +net_splitrate 1 +sv_maxrate 120000 +sv_minrate 60000 +net_splitpacket_maxrate 120000 + +sm_cvar sv_alternateticks 1 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar sv_maxclientframes 1000 +sm_cvar sv_maxupdaterate 100 +sm_cvar sv_minupdaterate 50 +sm_cvar sv_maxcmdrate 100 +sm_cvar sv_mincmdrate 50 +sm_cvar sv_client_cmdrate_difference 0 +sm_cvar net_maxroutable 1200 +sm_cvar net_minroutable 1200 +sm_cvar net_compresspackets_minsize 1200 +sm_cvar net_splitrate 1 +sm_cvar sv_maxrate 120000 +sm_cvar sv_minrate 60000 +sm_cvar net_splitpacket_maxrate 120000 +sm_cvar net_maxcleartime 0.02 +sm_cvar sv_client_min_interp_ratio 0 +sm_cvar sv_client_max_interp_ratio 25 +sm_cvar sv_clockcorrection_msecs 30 +sm_cvar nb_update_frequency 0.02 +sm_cvar tick_door_speed 1.6666666667 diff --git a/cfg/tick120.cfg b/cfg/tick120.cfg new file mode 100644 index 00000000..d13c9efc --- /dev/null +++ b/cfg/tick120.cfg @@ -0,0 +1,34 @@ +// Settings for Tick Rate 120 + +sv_alternateticks 1 +fps_max 1000 +sv_maxcmdrate 120 +sv_mincmdrate 60 +net_maxroutable 1200 +net_splitrate 1 +sv_maxrate 144000 +sv_minrate 72000 +net_splitpacket_maxrate 144000 + +sm_cvar sv_alternateticks 1 +sm_cvar fps_max 1000 +sm_cvar fps_max_splitscreen 1000 +sm_cvar sv_maxclientframes 1000 +sm_cvar sv_maxupdaterate 120 +sm_cvar sv_minupdaterate 60 +sm_cvar sv_maxcmdrate 120 +sm_cvar sv_mincmdrate 60 +sm_cvar sv_client_cmdrate_difference 0 +sm_cvar net_maxroutable 1200 +sm_cvar net_minroutable 1200 +sm_cvar net_compresspackets_minsize 1200 +sm_cvar net_splitrate 1 +sm_cvar sv_maxrate 144000 +sm_cvar sv_minrate 72000 +sm_cvar net_splitpacket_maxrate 144000 +sm_cvar net_maxcleartime 0.016667 +sm_cvar sv_client_min_interp_ratio 0 +sm_cvar sv_client_max_interp_ratio 30 +sm_cvar sv_clockcorrection_msecs 25 +sm_cvar nb_update_frequency 0.016667 +sm_cvar tick_door_speed 2.0 diff --git a/cfg/unsafe.cfg b/cfg/unsafe.cfg new file mode 100644 index 00000000..0555cf3a --- /dev/null +++ b/cfg/unsafe.cfg @@ -0,0 +1,6 @@ +sm_cvar achievement_disable 0 +sm_cvar deathmatch 1 +sm_cvar singlestep 0 +sm_cvar steamworks_stats_disable 0 +sm_cvar sv_allow_wait_command 1 +sm_cvar z_debug 0 diff --git a/cfg/vanilla.cfg b/cfg/vanilla.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/cfg/vanilla.cfg @@ -0,0 +1 @@ + diff --git a/cfg/wait.cfg b/cfg/wait.cfg new file mode 100644 index 00000000..db1a5f0d --- /dev/null +++ b/cfg/wait.cfg @@ -0,0 +1,3334 @@ +wait 0003; sm_cvar achievement_debug 1 +wait 0006; sm_cvar achievement_disable 0 +wait 0009; sm_cvar action_progress_reset_interval 0.5 +// wait 0012; sm_cvar adrenaline_backpack_speedup 0.5 +wait 0015; sm_cvar adrenaline_duration 20 +wait 0018; sm_cvar adrenaline_health_buffer 30 +// wait 0021; sm_cvar adrenaline_revive_speedup 0.5 +// wait 0024; sm_cvar adrenaline_run_speed 260 +// wait 0027; sm_cvar ai_debug_los 0 +// wait 0030; sm_cvar ai_debug_ragdoll_magnets 0 +// wait 0033; sm_cvar ai_debug_shoot_positions 0 +// wait 0036; sm_cvar ai_debug_speech 0 +wait 0039; sm_cvar ai_expression_frametime 0.1 +// wait 0042; sm_cvar ai_expression_optimization 0 +// wait 0045; sm_cvar ai_force_serverside_ragdoll 0 +// wait 0048; sm_cvar ai_LOS_mode 0 +// wait 0051; sm_cvar ai_post_frame_navigation 0 +// wait 0054; sm_cvar ai_sequence_debug 0 +// wait 0057; sm_cvar ai_setupbones_debug 0 +// wait 0060; sm_cvar ai_shot_bias_max 1.0 +// wait 0063; sm_cvar ai_shot_bias_min -1.0 +// wait 0066; sm_cvar ai_show_hull_attacks 0 +wait 0069; sm_cvar ai_talk_idle_enabled 0 +// wait 0072; sm_cvar ai_use_visibility_cache 1 +wait 0075; sm_cvar allow_all_bot_survivor_team 1 +// wait 0078; sm_cvar allow_weapon_fire_to_use 0 +// wait 0081; sm_cvar ammo_adrenaline_max 1 +// wait 0084; sm_cvar ammo_ammo_pack_max 1 +// wait 0087; sm_cvar ammo_assaultrifle_max 450 +// wait 0090; sm_cvar ammo_autoshotgun_max 90 +wait 0093; sm_cvar ammo_chainsaw_max 30 +wait 0096; sm_cvar ammo_firstaid_max 1 +// wait 0099; sm_cvar ammo_grenadelauncher_max 49 +// wait 0102; sm_cvar ammo_huntingrifle_max 150 +// wait 0105; sm_cvar ammo_m60_max 0 +wait 0108; sm_cvar ammo_minigun_max -2 +// wait 0111; sm_cvar ammo_molotov_max 1 +wait 0114; sm_cvar ammo_pack_use_duration 1.5 +// wait 0117; sm_cvar ammo_painpills_max 1 +// wait 0120; sm_cvar ammo_pipebomb_max 1 +// wait 0123; sm_cvar ammo_pistol_max -2 +// wait 0126; sm_cvar ammo_shotgun_max 72 +// wait 0129; sm_cvar ammo_smg_max 650 +// wait 0132; sm_cvar ammo_sniperrifle_max 180 +// wait 0135; sm_cvar ammo_turret_infected_damage 25 +wait 0138; sm_cvar ammo_turret_max -2 +wait 0141; sm_cvar ammo_turret_pz_damage 10 +wait 0144; sm_cvar ammo_turret_survivor_damage 0 +wait 0147; sm_cvar ammo_turret_tank_damage 50 +wait 0150; sm_cvar ammo_turret_witch_damage 25 +// wait 0153; sm_cvar ammo_vomitjar_max 1 +// wait 0156; sm_cvar anim_3wayblend 1 +// wait 0159; sm_cvar anim_showstate -1 +// wait 0162; sm_cvar anim_showstatelog 0 +// wait 0165; sm_cvar async_allow_held_files 1 +// wait 0168; sm_cvar async_mode 0 +// wait 0171; sm_cvar async_serialize 0 +// wait 0174; sm_cvar async_simulate_delay 0 +// wait 0177; sm_cvar autoaim_max_deflect 1.0 +// wait 0180; sm_cvar autoaim_max_dist 8192 +// wait 0183; sm_cvar autoaim_viewing_client 1 +// wait 0186; sm_cvar blackbox "" +// wait 0189; sm_cvar BlendBonesMode 2 +wait 0192; sm_cvar boomer_exposed_time_tolerance 20 +// wait 0195; sm_cvar boomer_leaker_chance 0 +wait 0198; sm_cvar boomer_pz_claw_dmg 6 +wait 0201; sm_cvar boomer_vomit_delay 0 +// wait 0204; sm_cvar bot_crouch 0 +// wait 0207; sm_cvar bot_freeze 0 +// wait 0210; sm_cvar bot_mimic 0 +// wait 0213; sm_cvar bot_mimic_yaw_offset 180 +// wait 0216; sm_cvar breakable_disable_gib_limit 0 +// wait 0219; sm_cvar breakable_multiplayer 1 +// wait 0222; sm_cvar buddha 0 +// wait 0225; sm_cvar bullet_ff_through_walls 0 +wait 0228; sm_cvar car_alarm_chirp_distance 500 +// wait 0231; sm_cvar car_alarm_chirp_duration 1 +wait 0234; sm_cvar car_alarm_chirp_interval 1 +wait 0237; sm_cvar car_alarm_distance 1000 +// wait 0240; sm_cvar car_alarm_duration 20 +wait 0243; sm_cvar cc_norepeat 0 +// wait 0246; sm_cvar cc_showmissing 0 +// wait 0249; sm_cvar chainsaw_attack_cone 30 +wait 0252; sm_cvar chainsaw_attack_distance 80 +wait 0255; sm_cvar chainsaw_attack_force 10000 +wait 0258; sm_cvar chainsaw_attract_distance 1000 +// wait 0261; sm_cvar chainsaw_damage 100 +// wait 0264; sm_cvar chainsaw_debug 0 +wait 0267; sm_cvar chainsaw_hit_interval 0.05 +wait 0270; sm_cvar chainsaw_startup_fadeout_time 0 +// wait 0273; sm_cvar changelevel_inhibit 0 +// wait 0276; sm_cvar changelevel_pause_interval 10 +// wait 0279; sm_cvar charger_pz_claw_dmg 10 +// wait 0282; sm_cvar chet_debug_idle 0 +// wait 0285; sm_cvar cl_clock_correction 1 +wait 0288; sm_cvar cl_clock_correction_adjustment_max_amount 100 +wait 0291; sm_cvar cl_clock_correction_adjustment_max_offset 50 +wait 0294; sm_cvar cl_clock_correction_adjustment_min_offset 0 +wait 0297; sm_cvar cl_clock_correction_force_server_tick 999 +// wait 0300; sm_cvar cl_clock_showdebuginfo 0 +wait 0303; sm_cvar cl_clockdrift_max_ms 100 +// wait 0306; sm_cvar cl_clockdrift_max_ms_threadmode 0 +wait 0309; sm_cvar cl_consistencycheck_interval 86400 +// wait 0312; sm_cvar cl_failremoteconnections 0 +wait 0315; sm_cvar cl_interpolate 1 +wait 0318; sm_cvar cl_resend 1.5 +wait 0321; sm_cvar cl_simdbones 1 +// wait 0324; sm_cvar cl_skipslowpath 0 +// wait 0327; sm_cvar cl_use_simd_bones 1 +wait 0330; sm_cvar claw_force 100 +wait 0333; sm_cvar claw_range 60 +wait 0336; sm_cvar claw_range_down 80 +// wait 0339; sm_cvar claw_swing_duration 0.2 +wait 0342; sm_cvar claw_swing_interval 0.95 +wait 0345; sm_cvar claw_swing_miss_interval 0.9 +wait 0348; sm_cvar cleared_wanderer_respawn_chance 100 +wait 0351; sm_cvar clientport 0 +wait 0354; sm_cvar closecaption 1 +wait 0357; sm_cvar cola_bottles_use_duration 1.75 +wait 0360; sm_cvar cola_bottles_use_range 100 +wait 0363; sm_cvar cola_bottles_use_tolerance 0.0 +wait 0366; sm_cvar collision_shake_amp 0.0 +wait 0369; sm_cvar collision_shake_freq 0.1 +wait 0372; sm_cvar collision_shake_time 0.0 +// wait 0375; sm_cvar commentary_available 1 +// wait 0378; sm_cvar common_dps_spew 0 +wait 0381; sm_cvar common_dps_window 0 +// wait 0384; sm_cvar con_logfile "" +// wait 0387; sm_cvar con_timestamp 0 +// wait 0390; sm_cvar coop 0 +wait 0393; sm_cvar cpu_level 2 +// wait 0396; sm_cvar cs_ShowStateTransitions -2 +wait 0399; sm_cvar datacachesize 512 +wait 0402; sm_cvar deathmatch 0 +wait 0405; sm_cvar debug_l4dverbose 0 +// wait 0408; sm_cvar debug_materialmodifycontrol 0 +// wait 0411; sm_cvar debug_overlay_fullposition 0 +// wait 0414; sm_cvar debug_physimpact 0 +// wait 0417; sm_cvar debug_touchlinks 0 +// wait 0420; sm_cvar debug_visibility_monitor 0 +wait 0423; sm_cvar decalfrequency 1.25 +wait 0426; sm_cvar defibrillator_return_to_life_time 1 +wait 0429; sm_cvar defibrillator_use_duration 2 +// wait 0432; sm_cvar developer 0 +wait 0435; sm_cvar director_adrenaline_density 4 +wait 0438; sm_cvar director_afk_timeout 20 +// wait 0441; sm_cvar director_ai_tanks 0 +wait 0444; sm_cvar director_allow_infected_bots 1 +wait 0447; sm_cvar director_always_allow_wanderers 1 +wait 0450; sm_cvar director_ammo_density 4 +wait 0453; sm_cvar director_build_up_min_interval 10 +// wait 0456; sm_cvar director_clear_count 1 +// wait 0459; sm_cvar director_clear_timeout 5 +// wait 0462; sm_cvar director_configurable_weapon_spawn_density -1 +wait 0465; sm_cvar director_convert_pills 0 +wait 0468; sm_cvar director_convert_pills_critical_health 0 +wait 0471; sm_cvar director_convert_pills_to_defib_health 0 +wait 0474; sm_cvar director_cs_weapon_spawn_chance 0.5 +// wait 0477; sm_cvar director_custom_finale_tank_spacing 10 +// wait 0480; sm_cvar director_debug 0 +// wait 0483; sm_cvar director_debug_revisit 0 +// wait 0486; sm_cvar director_debug_scavenge_items 0 +// wait 0489; sm_cvar director_debug_threat_placement 0 +wait 0492; sm_cvar director_defibrillator_density 4 +wait 0495; sm_cvar director_finale_item_cluster_count 2 +// wait 0498; sm_cvar director_finale_panic_waves 2 +wait 0501; sm_cvar director_finale_stage_delay 4 +// wait 0504; sm_cvar director_force_background 0 +// wait 0507; sm_cvar director_force_tank 0 +// wait 0510; sm_cvar director_force_witch 0 +wait 0513; sm_cvar director_gas_can_density 4 +// wait 0516; sm_cvar director_gauntlet_movement_bonus 5 +// wait 0519; sm_cvar director_gauntlet_movement_bonus_max 30 +// wait 0522; sm_cvar director_gauntlet_movement_threshold 500 +// wait 0525; sm_cvar director_gauntlet_movement_timer_length 10 +// wait 0528; sm_cvar director_gauntlet_tank_kite_distance 3000 +// wait 0531; sm_cvar director_ingress_range 3000 +wait 0534; sm_cvar director_intensity_relax_allow_wanderers_threshold 1.0 +wait 0537; sm_cvar director_intensity_relax_allow_wanderers_threshold_expert 1.0 +wait 0540; sm_cvar director_intensity_relax_allow_wanderers_threshold_hard 1.0 +wait 0543; sm_cvar director_intensity_relax_threshold 0.5 +wait 0546; sm_cvar director_intensity_threshold 0.5 +// wait 0549; sm_cvar director_item_cluster_range 50 +// wait 0552; sm_cvar director_item_placement_method 1 +// wait 0555; sm_cvar director_item_placement_spew 0 +// wait 0558; sm_cvar director_magnum_spawn_density -1 +wait 0561; sm_cvar director_max_threat_areas 5 +wait 0564; sm_cvar director_melee_weapon_density 4 +wait 0567; sm_cvar director_min_start_players 1 +wait 0570; sm_cvar director_molotov_density 4 +// wait 0573; sm_cvar director_music_dynamic_mob_size 20 +// wait 0576; sm_cvar director_music_dynamic_mobstop_size 10 +// wait 0579; sm_cvar director_music_dynamic_scanmobstop_size 5 +// wait 0582; sm_cvar director_must_create_all_scavenge_items 0 +// wait 0585; sm_cvar director_no_bosses 0 +// wait 0588; sm_cvar director_no_death_check 0 +// wait 0591; sm_cvar director_no_mobs 0 +// wait 0594; sm_cvar director_no_specials 0 +// wait 0597; sm_cvar director_no_survivor_bots 0 +// wait 0600; sm_cvar director_num_reserved_wanderers 0 +// wait 0603; sm_cvar director_output_population_visit 0 +wait 0606; sm_cvar director_oxygen_tank_density 4 +wait 0609; sm_cvar director_pain_pill_density 4 +// wait 0612; sm_cvar director_panic_forever 0 +wait 0615; sm_cvar director_panic_wave_pause_max 4 +wait 0618; sm_cvar director_panic_wave_pause_min 4 +wait 0621; sm_cvar director_per_map_weapon_upgrade_chance 1.0 +wait 0624; sm_cvar director_pipe_bomb_density 4 +wait 0627; sm_cvar director_pistol_density 4 +wait 0630; sm_cvar director_propane_tank_density 4 +wait 0633; sm_cvar director_ready_duration 30 +// wait 0636; sm_cvar director_ready_radius 300 +// wait 0639; sm_cvar director_relax_max_flow_travel 3000 +wait 0642; sm_cvar director_relax_max_interval 30 +wait 0645; sm_cvar director_relax_min_interval 20 +// wait 0648; sm_cvar director_report_screen_delay 10 +// wait 0651; sm_cvar director_scavenge_item_override 0 +// wait 0654; sm_cvar director_short_finale 0 +// wait 0657; sm_cvar director_special_battlefield_respawn_interval 10 +wait 0660; sm_cvar director_special_finale_offer_length 10 +wait 0663; sm_cvar director_special_initial_spawn_delay_max 0 +wait 0666; sm_cvar director_special_initial_spawn_delay_max_extra 0 +wait 0669; sm_cvar director_special_initial_spawn_delay_min 0 +// wait 0672; sm_cvar director_special_original_offer_length 20 +wait 0675; sm_cvar director_special_respawn_interval 10 +// wait 0678; sm_cvar director_spectate_specials 0 +wait 0681; sm_cvar director_super_weapon_density 4 +// wait 0684; sm_cvar director_survival_setup_time 0 +// wait 0687; sm_cvar director_survivor_movement_window 10 +// wait 0690; sm_cvar director_sustain_peak_max_time 5 +wait 0693; sm_cvar director_sustain_peak_min_time 1 +// wait 0696; sm_cvar director_tank_bypass_max_flow_travel 1500 +wait 0699; sm_cvar director_tank_checkpoint_interval 10 +// wait 0702; sm_cvar director_tank_force_offer 0 +// wait 0705; sm_cvar director_tank_lottery_entry_time 0.1 +wait 0708; sm_cvar director_tank_lottery_selection_time 3 +wait 0711; sm_cvar director_tank_max_interval 300 +wait 0714; sm_cvar director_tank_min_interval 300 +// wait 0717; sm_cvar director_tank_offer_debug 0 +// wait 0720; sm_cvar director_test_loop 0 +// wait 0723; sm_cvar director_test_loop_restarts_before_rotate 5 +// wait 0726; sm_cvar director_test_loop_rotate_maps 1 +// wait 0729; sm_cvar director_test_loop_time 10 +wait 0732; sm_cvar director_threat_clear_radius 150 +wait 0735; sm_cvar director_threat_max_separation 4000 +wait 0738; sm_cvar director_threat_min_separation 4000 +wait 0741; sm_cvar director_threat_radius 300 +wait 0744; sm_cvar director_transition_timeout 60 +wait 0747; sm_cvar director_unfreeze_time 0 +wait 0750; sm_cvar director_upgradepack_density 4 +wait 0753; sm_cvar director_vomitjar_density 4 +wait 0756; sm_cvar director_vs_convert_pills 0.0 +// wait 0759; sm_cvar director_weapon_cluster_range 100 +// wait 0762; sm_cvar disable_dynamic_prop_loading 0 +// wait 0765; sm_cvar disable_static_prop_loading 0 +// wait 0768; sm_cvar disp_dynamic 0 +// wait 0771; sm_cvar dispcoll_drawplane 0 +// wait 0774; sm_cvar display_game_events 0 +// wait 0777; sm_cvar displaysoundlist 0 +// wait 0780; sm_cvar dt_ShowPartialChangeEnts 0 +// wait 0783; sm_cvar dt_UsePartialChangeEnts 1 +// wait 0786; sm_cvar dtwarning 0 +// wait 0789; sm_cvar dtwatchclass "" +// wait 0792; sm_cvar dtwatchent -1 +// wait 0795; sm_cvar dtwatchvar "" +wait 0798; sm_cvar elevator_movedelay 0 +wait 0801; sm_cvar engine_no_focus_sleep 0 +// wait 0804; sm_cvar ent_debugkeys "" +// wait 0807; sm_cvar ent_messages_draw 0 +// wait 0810; sm_cvar ent_show_contexts 0 +// wait 0813; sm_cvar ent_steadystate_batchsize 20 +// wait 0816; sm_cvar ent_steadystate_cooldown 5 +// wait 0819; sm_cvar ent_steadystate_delay 5 +// wait 0822; sm_cvar ent_steadystate_enable 1 +// wait 0825; sm_cvar ent_steadystate_interval 0.1 +// wait 0828; sm_cvar ent_text_allow_script 0 +// wait 0831; sm_cvar fade_immediately 0 +wait 0834; sm_cvar fall_speed_fatal 700 +wait 0837; sm_cvar fall_speed_safe 500 +// wait 0840; sm_cvar fidget_max_interval 20 +// wait 0843; sm_cvar fidget_min_interval 10 +// wait 0846; sm_cvar filesystem_buffer_size 0 +// wait 0849; sm_cvar filesystem_max_stdio_read 16 +// wait 0852; sm_cvar filesystem_native 1 +// wait 0855; sm_cvar filesystem_report_buffered_io 0 +// wait 0858; sm_cvar filesystem_unbuffered_io 1 +// wait 0861; sm_cvar fire_absorbrate 10 +wait 0864; sm_cvar fire_dmgbase 1 +// wait 0867; sm_cvar fire_dmginterval 1 +// wait 0870; sm_cvar fire_dmgscale 0.1 +wait 0873; sm_cvar fire_extabsorb 100 +wait 0876; sm_cvar fire_extscale 100 +// wait 0879; sm_cvar fire_growthrate 1.0 +// wait 0882; sm_cvar fire_heatscale 1.0 +// wait 0885; sm_cvar fire_incomingheatscale 0.1 +wait 0888; sm_cvar fire_maxabsorb 100 +// wait 0891; sm_cvar first_aid_heal_percent 0.8 +wait 0894; sm_cvar first_aid_kit_max_heal 101 +wait 0897; sm_cvar first_aid_kit_use_duration 4.75 +// wait 0900; sm_cvar fish_dormant 0 +wait 0903; sm_cvar flex_expression "" +// wait 0906; sm_cvar flex_talk 0 +// wait 0909; sm_cvar fog_enable_water_fog 1 +wait 0912; sm_cvar force_disablex360 1 +wait 0915; sm_cvar fps_max 1000 +wait 0918; sm_cvar fps_max_splitscreen 1000 +// wait 0921; sm_cvar fs_monitor_read_from_pack 0 +// wait 0924; sm_cvar fs_report_sync_opens 0 +// wait 0927; sm_cvar fs_warning_mode 0 +// wait 0930; sm_cvar fuel_barrel_damage_amount 25 +// wait 0933; sm_cvar fuel_barrel_damage_radius 400 +// wait 0936; sm_cvar fuel_barrel_debug 0 +wait 0939; sm_cvar fuel_barrel_flame_instances 10 +wait 0942; sm_cvar fuel_barrel_health 10 +wait 0945; sm_cvar fuel_barrel_screen_shake_amplitude 25 +wait 0948; sm_cvar fuel_barrel_screen_shake_duration 2 +wait 0951; sm_cvar fuel_barrel_screen_shake_frequency 2 +// wait 0954; sm_cvar fuel_barrel_screen_shake_radius 1000 +wait 0957; sm_cvar func_break_max_pieces 30 +wait 0960; sm_cvar func_break_reduction_factor 1.0 +wait 0963; sm_cvar func_breakdmg_bullet 1.0 +wait 0966; sm_cvar func_breakdmg_club 3.0 +wait 0969; sm_cvar func_breakdmg_explosive 2.0 +// wait 0972; sm_cvar g_cv_phys2_freeze_ragdolls 0 +// wait 0975; sm_cvar g_debug_constraint_sounds 0 +// wait 0978; sm_cvar g_debug_doors 0 +// wait 0981; sm_cvar g_debug_npc_vehicle_roles 0 +// wait 0984; sm_cvar g_debug_physcannon 0 +// wait 0987; sm_cvar g_debug_ragdoll_removal 0 +// wait 0990; sm_cvar g_debug_transitions 0 +// wait 0993; sm_cvar g_debug_vehiclebase 0 +// wait 0996; sm_cvar g_debug_vehicleexit 0 +// wait 0999; sm_cvar g_debug_vehiclesound 0 +wait 1002; sm_cvar g_Language "English" +wait 1005; sm_cvar g_ragdoll_max_fps 60 +wait 1008; sm_cvar g_ragdoll_min_fps 30 +wait 1011; sm_cvar gas_can_use_duration 1.875 +wait 1014; sm_cvar gascan_spit_time 2.75 +wait 1017; sm_cvar gascan_throw_force 100 +wait 1020; sm_cvar gascan_use_range 80 +wait 1023; sm_cvar gascan_use_tolerance 0.0 +// wait 1026; sm_cvar god 0 +wait 1029; sm_cvar gpu_level 3 +wait 1032; sm_cvar gpu_mem_level 2 +wait 1035; sm_cvar grenadelauncher_damage 750 +wait 1038; sm_cvar grenadelauncher_ff_scale 0.05 +wait 1041; sm_cvar grenadelauncher_ff_scale_self 0.05 +wait 1044; sm_cvar grenadelauncher_force_kill 0 +wait 1047; sm_cvar grenadelauncher_radius_kill 300 +wait 1050; sm_cvar grenadelauncher_radius_stumble 500 +// wait 1053; sm_cvar grenadelauncher_show_radius 0 +// wait 1056; sm_cvar grenadelauncher_startpos_forward 16 +// wait 1059; sm_cvar grenadelauncher_startpos_right 4 +// wait 1062; sm_cvar grenadelauncher_startpos_up 0 +wait 1065; sm_cvar grenadelauncher_vel_up 125 +wait 1068; sm_cvar grenadelauncher_vel_variance 0 +wait 1071; sm_cvar grenadelauncher_velocity 1250 +wait 1074; sm_cvar hack_elevator_z_offset 0 +// wait 1077; sm_cvar helping_hand_debug 0 +// wait 1080; sm_cvar hl2_episodic 0 +wait 1083; sm_cvar host_flush_threshold 0 +wait 1086; sm_cvar host_framerate 0 +// wait 1089; sm_cvar host_limitlocal 0 +// wait 1092; sm_cvar host_map "c1m1_hotel.bsp" +// wait 1095; sm_cvar host_profile 0 +// wait 1098; sm_cvar host_showcachemiss 0 +// wait 1101; sm_cvar host_ShowIPCCallCount 0 +// wait 1104; sm_cvar host_sleep 0 +// wait 1107; sm_cvar host_speeds 0 +// wait 1110; sm_cvar host_syncfps 0 +// wait 1113; sm_cvar host_thread_mode 0 +// wait 1116; sm_cvar host_threaded_sound 0 +wait 1119; sm_cvar host_timescale 1.0 +wait 1122; sm_cvar host_xbox_e3_restart 0 +wait 1125; sm_cvar hostfile "host.txt" +// wait 1128; sm_cvar hostip -1062731518 +wait 1131; sm_cvar hostname "Bizzy's Moonmod" +// wait 1134; sm_cvar hostport 27019 +// wait 1137; sm_cvar hunk_track_allocation_types 0 +wait 1140; sm_cvar hunter_committed_attack_range 600 +wait 1143; sm_cvar hunter_leap_away_give_up_range 1000 +wait 1146; sm_cvar hunter_pounce_air_speed 750 +wait 1149; sm_cvar hunter_pounce_loft_rate 0.03 +wait 1152; sm_cvar hunter_pounce_max_loft_angle 45 +wait 1155; sm_cvar hunter_pounce_ready_range 800 +wait 1158; sm_cvar hunter_pz_claw_dmg 8 +// wait 1161; sm_cvar in_forceuser 0 +wait 1164; sm_cvar incendiary_ammo_burn_time 6 +wait 1167; sm_cvar inferno_acid_spawn_angle 45 +// wait 1170; sm_cvar inferno_child_spawn_interval_multiplier 1.0 +wait 1173; sm_cvar inferno_child_spawn_max_depth 5 +wait 1176; sm_cvar inferno_damage 50 +// wait 1179; sm_cvar inferno_debug 0 +// wait 1182; sm_cvar inferno_flame_lifetime 15 +// wait 1185; sm_cvar inferno_flame_spacing 50 +wait 1188; sm_cvar inferno_forward_reduction_factor 1.0 +wait 1191; sm_cvar inferno_friendly_fire_duration 15 +wait 1194; sm_cvar inferno_initial_spawn_interval 0 +// wait 1197; sm_cvar inferno_max_child_spawn_interval 1 +wait 1200; sm_cvar inferno_max_flames 50 +wait 1203; sm_cvar inferno_max_range 250 +wait 1206; sm_cvar inferno_max_trace_per_tick 25 +// wait 1209; sm_cvar inferno_per_flame_spawn_duration 5 +// wait 1212; sm_cvar inferno_scorch_decals 0 +// wait 1215; sm_cvar inferno_spawn_angle 45 +wait 1218; sm_cvar inferno_surface_offset 30 +// wait 1221; sm_cvar inferno_velocity_decay_factor 0.2 +wait 1224; sm_cvar inferno_velocity_factor 0.002 +// wait 1227; sm_cvar inferno_velocity_normal_factor 0.0 +// wait 1230; sm_cvar intensity_averaged_following_decay 20 +// wait 1233; sm_cvar intensity_decay_time 30 +// wait 1236; sm_cvar intensity_enemy_death_far_range 500 +// wait 1239; sm_cvar intensity_enemy_death_near_range 250 +wait 1242; sm_cvar intensity_factor 1.0 +// wait 1245; sm_cvar intensity_lock -1 +wait 1248; sm_cvar ip 74.91.113.130 +wait 1251; sm_cvar jockey_pounce_air_speed 750 +wait 1254; sm_cvar jockey_pounce_loft_rate 0.03 +wait 1257; sm_cvar jockey_pounce_max_loft_angle 60 +// wait 1260; sm_cvar jockey_pz_claw_dmg 4 +// wait 1263; sm_cvar l4d1_survivor_give_item 0 +// wait 1266; sm_cvar l4d_show_incapupdate 0 +// wait 1269; sm_cvar l4d_show_weaponequip 0 +wait 1272; sm_cvar l4d_stats_nogameplaycheck 1 +wait 1275; sm_cvar l4d_stats_track 1 +// wait 1278; sm_cvar ladder_autocenter 1 +// wait 1281; sm_cvar ladder_console_controls 0 +wait 1284; sm_cvar ladder_horizon -0.4 +// wait 1287; sm_cvar lservercfgfile "listenserver.cfg" +// wait 1290; sm_cvar map_noareas 0 +// wait 1293; sm_cvar mapcyclefile "mapcycle.txt" +// wait 1296; sm_cvar mat_360_aa_override 0 +wait 1299; sm_cvar mat_aaquality 0 +wait 1302; sm_cvar mat_antialias 8 +// wait 1305; sm_cvar mat_bufferprimitives 1 +// wait 1308; sm_cvar mat_bumpbasis 0 +// wait 1311; sm_cvar mat_bumpmap 0 +// wait 1314; sm_cvar mat_compressedtextures 1 +// wait 1317; sm_cvar mat_debugalttab 0 +// wait 1320; sm_cvar mat_debugdepth 0 +// wait 1323; sm_cvar mat_depthbias_normal 0.0 +// wait 1326; sm_cvar mat_diffuse 1 +// wait 1329; sm_cvar mat_drawflat 0 +wait 1332; sm_cvar mat_dxlevel 92 +// wait 1335; sm_cvar mat_dynamiclightmaps 0 +// wait 1338; sm_cvar mat_envmapsize 128 +// wait 1341; sm_cvar mat_envmaptgasize 32 +// wait 1344; sm_cvar mat_excludetextures 0 +// wait 1347; sm_cvar mat_fastnobump 0 +// wait 1350; sm_cvar mat_fastspecular 1 +// wait 1353; sm_cvar mat_fillrate 0 +// wait 1356; sm_cvar mat_filtertextures 1 +// wait 1359; sm_cvar mat_force_vertexfog 1 +wait 1362; sm_cvar mat_forceaniso 16 +// wait 1365; sm_cvar mat_forcedynamic 0 +// wait 1368; sm_cvar mat_forcehardwaresync 1 +// wait 1371; sm_cvar mat_forcemanagedtextureintohardware 0 +// wait 1374; sm_cvar mat_fullbright 0 +// wait 1377; sm_cvar mat_hdr_level 2 +wait 1380; sm_cvar mat_hdr_tonemapscale 1 +wait 1383; sm_cvar mat_levelflush 0 +// wait 1386; sm_cvar mat_lightmap_pfms 0 +// wait 1389; sm_cvar mat_loadtextures 1 +// wait 1392; sm_cvar mat_luxels 0 +wait 1395; sm_cvar mat_maxframelatency 0 +// wait 1398; sm_cvar mat_measurefillrate 0 +// wait 1401; sm_cvar mat_mipmaptextures 1 +wait 1404; sm_cvar mat_monitorgamma 1.6 +wait 1407; sm_cvar mat_monitorgamma_tv_enabled 1 +wait 1410; sm_cvar mat_monitorgamma_tv_exp 4.0 +// wait 1413; sm_cvar mat_monitorgamma_tv_range_max 255 +wait 1416; sm_cvar mat_monitorgamma_tv_range_min 0 +// wait 1419; sm_cvar mat_morphstats 0 +// wait 1422; sm_cvar mat_motion_blur_enabled 1 +// wait 1425; sm_cvar mat_norendering 0 +// wait 1428; sm_cvar mat_normalmaps 0 +// wait 1431; sm_cvar mat_normals 0 +// wait 1434; sm_cvar mat_parallaxmap 1 +wait 1437; sm_cvar mat_phong 1 +wait 1440; sm_cvar mat_picmip -10 +// wait 1443; sm_cvar mat_proxy 0 +wait 1446; sm_cvar mat_queue_mode 2 +// wait 1449; sm_cvar mat_queue_report 0 +// wait 1452; sm_cvar mat_reducefillrate 0 +// wait 1455; sm_cvar mat_reduceparticles 0 +// wait 1458; sm_cvar mat_report_queue_status 0 +// wait 1461; sm_cvar mat_reversedepth 0 +// wait 1464; sm_cvar mat_shadowstate 1 +// wait 1467; sm_cvar mat_showenvmapmask 0 +// wait 1470; sm_cvar mat_showlowresimage 0 +// wait 1473; sm_cvar mat_showmiplevels 0 +// wait 1476; sm_cvar mat_softwarelighting 0 +// wait 1479; sm_cvar mat_softwareskin 0 +wait 1482; sm_cvar mat_specular 0 +// wait 1485; sm_cvar mat_spewalloc 0 +// wait 1488; sm_cvar mat_supportflashlight 1 +// wait 1491; sm_cvar mat_tessellation_accgeometrytangents 0 +// wait 1494; sm_cvar mat_tessellation_cornertangents 1 +// wait 1497; sm_cvar mat_tessellation_update_buffers 1 +// wait 1500; sm_cvar mat_tessellationmode 1 +// wait 1503; sm_cvar mat_tonemapping_occlusion_use_stencil 0 +wait 1506; sm_cvar mat_triplebuffered 0 +wait 1509; sm_cvar mat_vsync 0 +// wait 1512; sm_cvar mat_wireframe 0 +wait 1515; sm_cvar melee_collateral_shove_count 50 +wait 1518; sm_cvar melee_combo_reset_time 0.975 +wait 1521; sm_cvar melee_force_scalar 25 +wait 1524; sm_cvar melee_force_scalar_combat_character 25 +wait 1527; sm_cvar melee_range 90 +// wait 1530; sm_cvar melee_show_swing 0 +// wait 1533; sm_cvar mem_dumpstats 0 +// wait 1536; sm_cvar mem_force_flush 0 +// wait 1539; sm_cvar mem_force_flush_section "" +// wait 1542; sm_cvar mem_incremental_compact_rate 0.5 +wait 1545; sm_cvar mem_level 2 +wait 1548; sm_cvar mem_max_heapsize 512 +wait 1551; sm_cvar mem_max_heapsize_dedicated 512 +wait 1554; sm_cvar mem_min_heapsize 512 +// wait 1557; sm_cvar mem_periodicdumps 0 +// wait 1560; sm_cvar mem_test_each_frame 0 +// wait 1563; sm_cvar mem_test_every_n_seconds 0 +// wait 1566; sm_cvar mem_test_quiet 0 +// wait 1569; sm_cvar mix_dynamic_cull_max_CI_emitters 0 +// wait 1572; sm_cvar mix_dynamic_debug_CI 0 +// wait 1575; sm_cvar mix_dynamic_max_CI_emitters 30 +// wait 1578; sm_cvar mix_dynamic_num_attack_vox_CI 2 +// wait 1581; sm_cvar mm_datacenter_delay_mount_frames 6 +// wait 1584; sm_cvar mm_datacenter_query_delay 5 +// wait 1587; sm_cvar mm_datacenter_report_version 5 +// wait 1590; sm_cvar mm_datacenter_retry_infochunks_attempts 3 +// wait 1593; sm_cvar mm_datacenter_retry_interval 60 +// wait 1596; sm_cvar mm_datacenter_update_interval 600 +// wait 1599; sm_cvar mm_heartbeat_seconds 300 +// wait 1602; sm_cvar mm_heartbeat_seconds_xlsp 60 +// wait 1605; sm_cvar mm_heartbeat_timeout 10 +// wait 1608; sm_cvar mm_heartbeat_timeout_legacy 15 +// wait 1611; sm_cvar mm_matchmaking_dlcsquery 2 +// wait 1614; sm_cvar mm_matchmaking_version 10 +// wait 1617; sm_cvar mm_server_search_inet_ping_interval 1 +// wait 1620; sm_cvar mm_server_search_inet_ping_refresh 15 +// wait 1623; sm_cvar mm_server_search_inet_ping_timeout 3 +// wait 1626; sm_cvar mm_server_search_inet_ping_window 10 +// wait 1629; sm_cvar mm_server_search_lan_ping_duration 1 +// wait 1632; sm_cvar mm_server_search_lan_ping_interval 0.25 +wait 1635; sm_cvar mm_server_search_lan_ports "27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025" +wait 1638; sm_cvar mm_server_search_server_lifetime 120 +wait 1641; sm_cvar mm_server_search_update_interval 30 +// wait 1644; sm_cvar mod_check_vcollide 0 +// wait 1647; sm_cvar mod_dont_load_vertices 0 +// wait 1650; sm_cvar mod_forcedata 1 +// wait 1653; sm_cvar mod_forcetouchdata 1 +// wait 1656; sm_cvar mod_load_anims_async 0 +// wait 1659; sm_cvar mod_load_fakestall 0 +// wait 1662; sm_cvar mod_load_mesh_async 0 +// wait 1665; sm_cvar mod_load_showstall 0 +// wait 1668; sm_cvar mod_load_vcollide_async 0 +// wait 1671; sm_cvar mod_lock_mdls_on_load 1 +// wait 1674; sm_cvar mod_lock_meshes_on_load 1 +// wait 1677; sm_cvar mod_test_mesh_not_available 0 +// wait 1680; sm_cvar mod_test_not_available 0 +// wait 1683; sm_cvar mod_test_verts_not_available 0 +// wait 1686; sm_cvar mod_touchalldata 1 +// wait 1689; sm_cvar mod_trace_load 0 +// wait 1692; sm_cvar morph_debug 0 +// wait 1695; sm_cvar morph_path 0 +wait 1698; sm_cvar motd_enabled 1 +wait 1701; sm_cvar motdfile "motd.txt" +wait 1704; sm_cvar mounted_gun_cooldown_time 0.1 +wait 1707; sm_cvar mounted_gun_mount_cooldown_time 0 +wait 1710; sm_cvar mounted_gun_overheat_penalty_time 0 +wait 1713; sm_cvar mounted_gun_overheat_time 100 +wait 1716; sm_cvar mounted_gun_rate_of_fire 15 +// wait 1719; sm_cvar mp_allowNPCs 1 +wait 1722; sm_cvar mp_allowspectators 0 +// wait 1725; sm_cvar mp_autocrosshair 1 +wait 1728; sm_cvar mp_autokick 0 +wait 1731; sm_cvar mp_autoteambalance 0 +// wait 1734; sm_cvar mp_blockstyle 1 +// wait 1737; sm_cvar mp_bonusroundtime 15 +wait 1740; sm_cvar mp_buytime 86400 +wait 1743; sm_cvar mp_c4timer 90 +// wait 1746; sm_cvar mp_capdeteriorate_time 90 +// wait 1749; sm_cvar mp_capstyle 1 +wait 1752; sm_cvar mp_chattime 120 +// wait 1755; sm_cvar mp_clan_ready_signal "ready" +// wait 1758; sm_cvar mp_clan_readyrestart 0 +// wait 1761; sm_cvar mp_defaultteam 0 +// wait 1764; sm_cvar mp_disable_respawn_times 0 +wait 1767; sm_cvar mp_enableroundwaittime 0 +wait 1770; sm_cvar mp_facefronttime 0.333333 +// wait 1773; sm_cvar mp_fadetoblack 0 +// wait 1776; sm_cvar mp_falldamage 0 +wait 1779; sm_cvar mp_feetmaxyawrate 90 +wait 1782; sm_cvar mp_feetyawrate 120 +wait 1785; sm_cvar mp_feetyawrate_max 180 +// wait 1788; sm_cvar mp_flashlight 1 +// wait 1791; sm_cvar mp_footsteps 1 +// wait 1794; sm_cvar mp_forcecamera 0 +// wait 1797; sm_cvar mp_forcerespawn 1 +// wait 1800; sm_cvar mp_fraglimit 0 +// wait 1803; sm_cvar mp_freezetime 0 +// wait 1806; sm_cvar mp_friendlyfire 1 +// wait 1809; sm_cvar mp_gamemode "coop" +// wait 1812; sm_cvar mp_humanteam "any" +// wait 1815; sm_cvar mp_ik 1 +wait 1818; sm_cvar mp_limitteams 0 +// wait 1821; sm_cvar mp_logdetail 0 +// wait 1824; sm_cvar mp_maxrounds 0 +// wait 1827; sm_cvar mp_playerid 1 +// wait 1830; sm_cvar mp_playerid_delay 0.0 +// wait 1833; sm_cvar mp_playerid_hold 0.25 +// wait 1836; sm_cvar mp_restartgame 0 +wait 1839; sm_cvar mp_roundlimit 5 +wait 1842; sm_cvar mp_roundtime 9 +// wait 1845; sm_cvar mp_showcleanedupents 0 +// wait 1848; sm_cvar mp_showgestureslots 0 +// wait 1851; sm_cvar mp_showroundtransitions 0 +// wait 1854; sm_cvar mp_slammoveyaw 0 +wait 1857; sm_cvar mp_spawnprotectiontime 0 +// wait 1860; sm_cvar mp_stalemate_at_timelimit 0 +// wait 1863; sm_cvar mp_stalemate_enable 0 +wait 1866; sm_cvar mp_stalemate_timelimit 0 +wait 1869; sm_cvar mp_startmoney 16000 +// wait 1872; sm_cvar mp_teamlist "hgrunt;scientist" +// wait 1875; sm_cvar mp_teamoverride 1 +// wait 1878; sm_cvar mp_teamplay 0 +wait 1881; sm_cvar mp_teams_unbalance_limit 0 +// wait 1884; sm_cvar mp_timelimit 0 +wait 1887; sm_cvar mp_tkpunish 0 +// wait 1890; sm_cvar mp_tournament 0 +// wait 1893; sm_cvar mp_waitingforplayers_cancel 0 +// wait 1896; sm_cvar mp_waitingforplayers_restart 0 +// wait 1899; sm_cvar mp_waitingforplayers_time 0 +wait 1902; sm_cvar mp_weapon_ak47_price 0 +wait 1905; sm_cvar mp_weapon_aug_price 0 +wait 1908; sm_cvar mp_weapon_awp_price 0 +wait 1911; sm_cvar mp_weapon_deagle_price 0 +wait 1914; sm_cvar mp_weapon_elite_price 0 +wait 1917; sm_cvar mp_weapon_famas_price 0 +wait 1920; sm_cvar mp_weapon_fiveseven_price 0 +wait 1923; sm_cvar mp_weapon_g3sg1_price 0 +wait 1926; sm_cvar mp_weapon_galil_price 0 +wait 1929; sm_cvar mp_weapon_glock_price 0 +wait 1932; sm_cvar mp_weapon_m249_price 0 +wait 1935; sm_cvar mp_weapon_m3_price 0 +wait 1938; sm_cvar mp_weapon_m4a1_price 0 +wait 1941; sm_cvar mp_weapon_mac10_price 0 +wait 1944; sm_cvar mp_weapon_mp5navy_price 0 +wait 1947; sm_cvar mp_weapon_p228_price 0 +wait 1950; sm_cvar mp_weapon_p90_price 0 +wait 1953; sm_cvar mp_weapon_scout_price 0 +wait 1956; sm_cvar mp_weapon_sg550_price 0 +wait 1959; sm_cvar mp_weapon_sg552_price 0 +wait 1962; sm_cvar mp_weapon_tmp_price 0 +wait 1965; sm_cvar mp_weapon_ump45_price 0 +wait 1968; sm_cvar mp_weapon_usp_price 0 +wait 1971; sm_cvar mp_weapon_xm1014_price 0 +// wait 1974; sm_cvar mp_weaponstay 0 +// wait 1977; sm_cvar mp_winlimit 0 +wait 1980; sm_cvar music_bank_max_duration 600 +wait 1983; sm_cvar music_bank_min_duration 600 +// wait 1986; sm_cvar music_calm_min_interval 30 +// wait 1989; sm_cvar music_dynamic_action_decay 10 +// wait 1992; sm_cvar music_dynamic_ambient_decay 7 +// wait 1995; sm_cvar music_dynamic_ambient_in_max 0.75 +// wait 1998; sm_cvar music_dynamic_ambient_in_min 0.5 +// wait 2001; sm_cvar music_dynamic_ambient_out_max 1 +// wait 2004; sm_cvar music_dynamic_ambient_out_min 0 +// wait 2007; sm_cvar music_dynamic_ambient_vol_min_alert 0.4 +// wait 2010; sm_cvar music_dynamic_attack_CI_close_decay 0.2 +// wait 2013; sm_cvar music_dynamic_attack_CI_close_distmax 1000 +// wait 2016; sm_cvar music_dynamic_attack_CI_distmax 3000 +// wait 2019; sm_cvar music_dynamic_attack_CI_near_decay 0.2 +// wait 2022; sm_cvar music_dynamic_attack_CI_near_distmax 500 +// wait 2025; sm_cvar music_dynamic_attack_CI_num 30 +// wait 2028; sm_cvar music_dynamic_attack_CI_veryclose_decay 0.2 +// wait 2031; sm_cvar music_dynamic_attack_CI_veryclose_distmax 100 +// wait 2034; sm_cvar music_dynamic_calm_decay 15 +// wait 2037; sm_cvar music_dynamic_CI_sight_decay 8 +// wait 2040; sm_cvar music_dynamic_damage_decay 10 +// wait 2043; sm_cvar music_dynamic_damage_duck_damage_max 1 +// wait 2046; sm_cvar music_dynamic_damage_duck_damage_min 0.5 +// wait 2049; sm_cvar music_dynamic_damage_duck_max 0.35 +// wait 2052; sm_cvar music_dynamic_damage_duck_min 0 +// wait 2055; sm_cvar music_dynamic_damage_increment 0.1 +// wait 2058; sm_cvar music_dynamic_debug 0 +// wait 2061; sm_cvar music_dynamic_dodamage_decay 4 +// wait 2064; sm_cvar music_dynamic_dodamage_increment 0.02 +// wait 2067; sm_cvar music_dynamic_gunfire_decay 1 +// wait 2070; sm_cvar music_dynamic_gunfire_increment 0.4 +// wait 2073; sm_cvar music_dynamic_gunfireslow_decay 3 +// wait 2076; sm_cvar music_dynamic_gunfireslow_increment 0.3 +// wait 2079; sm_cvar music_dynamic_mob_action_close_max 0.4 +// wait 2082; sm_cvar music_dynamic_mob_action_close_min 0 +// wait 2085; sm_cvar music_dynamic_mob_action_decay 15 +// wait 2088; sm_cvar music_dynamic_mob_action_increment 0.1 +// wait 2091; sm_cvar music_dynamic_mob_action_max 1 +// wait 2094; sm_cvar music_dynamic_mob_action_min 0 +// wait 2097; sm_cvar music_dynamic_mob_choir_BPM 90 +// wait 2100; sm_cvar music_dynamic_mob_choir_interval_beats 16 +// wait 2103; sm_cvar music_dynamic_mob_choir_interval_randmultmax 3 +// wait 2106; sm_cvar music_dynamic_mob_damage_max 1 +// wait 2109; sm_cvar music_dynamic_mob_damage_min 0.6 +// wait 2112; sm_cvar music_dynamic_mob_decay 15 +// wait 2115; sm_cvar music_dynamic_mob_increment 0.1 +// wait 2118; sm_cvar music_dynamic_mob_large 50 +// wait 2121; sm_cvar music_dynamic_mob_max 1 +// wait 2124; sm_cvar music_dynamic_mob_med 30 +// wait 2127; sm_cvar music_dynamic_mob_min 0.5 +// wait 2130; sm_cvar music_dynamic_mob_small 20 +// wait 2133; sm_cvar music_dynamic_on 1 +// wait 2136; sm_cvar music_dynamic_PZ_BPM 80 +// wait 2139; sm_cvar music_dynamic_PZ_interval_randmultmax 5 +// wait 2142; sm_cvar music_dynamic_scavenge_beat 1 +wait 2145; sm_cvar music_dynamic_SI_close_distmax 1500 +wait 2148; sm_cvar music_dynamic_SI_far_distmin 2000 +wait 2151; sm_cvar music_dynamic_SI_inrange_distmax 2500 +// wait 2154; sm_cvar music_dynamic_solosuccess_damagemin 0.3 +// wait 2157; sm_cvar music_dynamic_solosuccess_decay 4 +// wait 2160; sm_cvar music_dynamic_solosuccess_increment 1 +// wait 2163; sm_cvar music_dynamic_specials_interval_beats 5 +// wait 2166; sm_cvar music_dynamic_threat_decay 6 +// wait 2169; sm_cvar music_dynamic_update_interval 0.1 +// wait 2172; sm_cvar music_dynamic_witch_alert_interval 37 +// wait 2175; sm_cvar music_dynamic_witch_near_max 1800 +// wait 2178; sm_cvar music_dynamic_witch_near_min 360 +// wait 2181; sm_cvar music_intensity_override -1 +// wait 2184; sm_cvar music_intensity_threshold 0.25 +// wait 2187; sm_cvar music_large_area_reveal_repeat_threshold 60 +// wait 2190; sm_cvar music_large_area_reveal_threshold 500000 +// wait 2193; sm_cvar music_manager 1 +// wait 2196; sm_cvar music_min_pending_threat_time 10 +// wait 2199; sm_cvar music_min_safe_time 3 +// wait 2202; sm_cvar music_moment_of_silence_repeat_interval 600 +// wait 2205; sm_cvar music_moment_of_silence_start_delay 60 +wait 2208; sm_cvar mv_maxplayers 32 +wait 2211; sm_cvar name "Bizzy" +wait 2214; sm_cvar name2 "Moon" +// wait 2217; sm_cvar nav_area_bgcolor "0 0 0 255" +wait 2220; sm_cvar nav_area_max_size 100 +// wait 2223; sm_cvar nav_blockers_can_affect_flow 1 +wait 2226; sm_cvar nav_coplanar_slope_limit 1.0 +// wait 2229; sm_cvar nav_coplanar_slope_limit_displacement 0.7 +// wait 2232; sm_cvar nav_corner_adjust_adjacent 16 +// wait 2235; sm_cvar nav_create_area_at_feet 0 +// wait 2238; sm_cvar nav_create_place_on_ground 0 +// wait 2241; sm_cvar nav_debug_blocked 0 +// wait 2244; sm_cvar nav_debug_finale_area 0 +// wait 2247; sm_cvar nav_displacement_test 10000 +// wait 2250; sm_cvar nav_drag_selection_volume_zmax_offset 32 +// wait 2253; sm_cvar nav_drag_selection_volume_zmin_offset 32 +// wait 2256; sm_cvar nav_draw_limit 500 +// wait 2259; sm_cvar nav_edit 0 +// wait 2262; sm_cvar nav_flood_select_tolerance 0 +wait 2265; sm_cvar nav_flow_max_survivor_climb_height 75 +wait 2268; sm_cvar nav_flow_max_survivor_drop_height 250 +// wait 2271; sm_cvar nav_fog_edit 0 +// wait 2274; sm_cvar nav_generate_fencetops 1 +// wait 2277; sm_cvar nav_generate_fixup_jump_areas 1 +// wait 2280; sm_cvar nav_generate_incremental_range 2000 +// wait 2283; sm_cvar nav_generate_incremental_tolerance 0 +// wait 2286; sm_cvar nav_gui_rebuild 0 +wait 2289; sm_cvar nav_lying_down_percent 0 +wait 2292; sm_cvar nav_max_auto_area_size 8000 +// wait 2295; sm_cvar nav_max_view_distance 2000 +// wait 2298; sm_cvar nav_max_vis_delta_list_length 50 +wait 2301; sm_cvar nav_obscure_range 300 +wait 2304; sm_cvar nav_potentially_visible_dot_tolerance 0.99 +// wait 2307; sm_cvar nav_quicksave 1 +// wait 2310; sm_cvar nav_recompute_flow_optimization 1 +// wait 2313; sm_cvar nav_save_history 0 +// wait 2316; sm_cvar nav_selected_set_border_color "100 100 0 255" +// wait 2319; sm_cvar nav_selected_set_color "255 255 200 255" +// wait 2322; sm_cvar nav_show_approach_points 0 +wait 2325; sm_cvar nav_show_area_info 0.25 +// wait 2328; sm_cvar nav_show_compass 0 +// wait 2331; sm_cvar nav_show_connectionblockers 0 +// wait 2334; sm_cvar nav_show_danger 0 +// wait 2337; sm_cvar nav_show_light_intensity 0 +// wait 2340; sm_cvar nav_show_node_grid 0 +// wait 2343; sm_cvar nav_show_node_id 0 +// wait 2346; sm_cvar nav_show_nodes 0 +// wait 2349; sm_cvar nav_show_player_area 0 +// wait 2352; sm_cvar nav_show_player_counts 0 +wait 2355; sm_cvar nav_slope_limit 1.0 +wait 2358; sm_cvar nav_slope_tolerance 0.0 +// wait 2361; sm_cvar nav_snap_to_grid 0 +// wait 2364; sm_cvar nav_solid_props 0 +// wait 2367; sm_cvar nav_split_place_on_ground 0 +// wait 2370; sm_cvar nav_test_node 0 +// wait 2373; sm_cvar nav_test_node_crouch 0 +// wait 2376; sm_cvar nav_test_node_crouch_dir 4 +// wait 2379; sm_cvar nav_trouble_test_area 0 +// wait 2382; sm_cvar nav_trouble_test_debug_duration 10 +// wait 2385; sm_cvar nav_trouble_walkable_backtrace 0 +// wait 2388; sm_cvar nav_update_visibility_on_edit 0 +// wait 2391; sm_cvar nb_acceleration 500 +// wait 2394; sm_cvar nb_allow_avoiding 1 +// wait 2397; sm_cvar nb_allow_climbing 1 +// wait 2400; sm_cvar nb_allow_gap_jumping 1 +wait 2403; sm_cvar nb_avoid 0 +wait 2406; sm_cvar nb_avoid_interval 1 +// wait 2409; sm_cvar nb_blind 0 +wait 2412; sm_cvar nb_chase_lead_time 0 +// wait 2415; sm_cvar nb_debug_climbing 0 +// wait 2418; sm_cvar nb_debug_history 0 +// wait 2421; sm_cvar nb_direct_chase_nav_check 1 +// wait 2424; sm_cvar nb_friction_forward 1 +// wait 2427; sm_cvar nb_friction_sideways 2 +wait 2430; sm_cvar nb_goal_look_ahead_range 1000 +wait 2433; sm_cvar nb_gravity 2000 +// wait 2436; sm_cvar nb_head_aim_settle_duration 0.1 +// wait 2439; sm_cvar nb_head_aim_steady_max_rate 3000 +wait 2442; sm_cvar nb_ladder_align_range 100 +wait 2445; sm_cvar nb_lean_forward_accel 200 +// wait 2448; sm_cvar nb_lean_max_angle 30 +wait 2451; sm_cvar nb_lean_rate 4 +wait 2454; sm_cvar nb_path_draw_inc 1000 +wait 2457; sm_cvar nb_path_segment_influence_radius 1000 +// wait 2460; sm_cvar nb_player_crouch 0 +// wait 2463; sm_cvar nb_player_move 1 +// wait 2466; sm_cvar nb_player_move_direct 0 +// wait 2469; sm_cvar nb_player_stop 0 +// wait 2472; sm_cvar nb_player_walk 0 +wait 2475; sm_cvar nb_saccade_speed 3000 +wait 2478; sm_cvar nb_saccade_time 0.1 +wait 2481; sm_cvar nb_speed_look_ahead_range 300 +// wait 2484; sm_cvar nb_stop 0 +// wait 2487; sm_cvar nb_stuck_dump_filter_entindex 0 +// wait 2490; sm_cvar nb_stuck_dump_filter_identifier "" +// wait 2493; sm_cvar nb_stuck_dump_filter_min_duration 0 +wait 2496; sm_cvar nb_stuck_dump_filter_time_end 86400 +// wait 2499; sm_cvar nb_stuck_dump_filter_time_start 0 +// wait 2502; sm_cvar nb_stuck_dump_show_details 0 +// wait 2505; sm_cvar nb_stuck_dump_threshold -1 +// wait 2508; sm_cvar nb_update_debug 0 +wait 2511; sm_cvar nb_update_framelimit 10 +wait 2514; sm_cvar nb_update_frequency 0.016667 +wait 2517; sm_cvar nb_update_maxslide 10 +// wait 2520; sm_cvar nb_vision_ignore_survivors 0 +// wait 2523; sm_cvar nb_vision_notice_hidden_range 0 +wait 2526; sm_cvar nb_yaw_rate 300 +// wait 2529; sm_cvar net_allow_multicast 1 +// wait 2532; sm_cvar net_allow_syslink 1 +// wait 2535; sm_cvar net_blockmsg 0 +// wait 2538; sm_cvar net_chan_limit_disabled 0 +// wait 2541; sm_cvar net_chan_limit_in_debug_session 0 +// wait 2544; sm_cvar net_chan_limit_msec 0 +// wait 2547; sm_cvar net_chan_stats_dump 0 +wait 2550; sm_cvar net_chan_stats_dump_top_msgs 0 +wait 2553; sm_cvar net_chan_stats_lru 0 +// wait 2556; sm_cvar net_chokeloop 0 +// wait 2559; sm_cvar net_compresspackets 1 +wait 2562; sm_cvar net_compresspackets_minsize 1200 +// wait 2565; sm_cvar net_compressvoice 0 +// wait 2568; sm_cvar net_drawslider 0 +// wait 2571; sm_cvar net_droppackets 0 +// wait 2574; sm_cvar net_dumptest 0 +// wait 2577; sm_cvar net_fakejitter 0 +// wait 2580; sm_cvar net_fakelag 0 +// wait 2583; sm_cvar net_fakeloss 0 +wait 2586; sm_cvar net_maxcleartime 0.016667 +wait 2589; sm_cvar net_maxfilesize 64 +// wait 2592; sm_cvar net_maxfragments 1200 +// wait 2595; sm_cvar net_maxroutable 1200 +// wait 2598; sm_cvar net_megasnapshot 1 +wait 2601; sm_cvar net_minroutable 1200 +// wait 2604; sm_cvar net_paranoid 1 +// wait 2607; sm_cvar net_public_adr "" +// wait 2610; sm_cvar net_queue_trace 0 +// wait 2613; sm_cvar net_queued_packet_thread 1 +// wait 2616; sm_cvar net_showdrop 0 +// wait 2619; sm_cvar net_showeventlisteners 0 +// wait 2622; sm_cvar net_showevents 0 +// wait 2625; sm_cvar net_showfragments 0 +// wait 2628; sm_cvar net_showmsg 0 +// wait 2631; sm_cvar net_showpeaks 0 +// wait 2634; sm_cvar net_showreliablesounds 0 +// wait 2637; sm_cvar net_showsplits 0 +// wait 2640; sm_cvar net_showtcp 0 +// wait 2643; sm_cvar net_showudp 0 +// wait 2646; sm_cvar net_showudp_remoteonly 0 +wait 2649; sm_cvar net_splitpacket_maxrate 72000 +// wait 2652; sm_cvar net_splitrate 1 +// wait 2655; sm_cvar net_usesocketsforloopback 0 +// wait 2658; sm_cvar next 0 +// wait 2661; sm_cvar nextlevel "" +// wait 2664; sm_cvar noclip_fixup 1 +// wait 2667; sm_cvar npc_height_adjust 1 +// wait 2670; sm_cvar npc_vphysics 0 +// wait 2673; sm_cvar old_radiusdamage 0.0 +wait 2676; sm_cvar pain_pills_decay_rate 0.166667 +// wait 2679; sm_cvar pain_pills_health_threshold 99 +// wait 2682; sm_cvar pain_pills_health_value 50 +// wait 2685; sm_cvar particle_test_attach_attachment 0 +// wait 2688; sm_cvar particle_test_attach_mode "follow_attachment" +// wait 2691; sm_cvar particle_test_file "" +// wait 2694; sm_cvar password "" +// wait 2697; sm_cvar perf_fire_bullet_firstpredictedonly 1 +// wait 2700; sm_cvar perf_fire_bullet_single 0 +// wait 2703; sm_cvar phys2_ccd_epsilon 0.01 +// wait 2706; sm_cvar phys2_cmodels 1 +// wait 2709; sm_cvar phys2_continuous_cd 1 +// wait 2712; sm_cvar phys2_debug_dump_entities 0 +// wait 2715; sm_cvar phys2_debug_traceray 0 +// wait 2718; sm_cvar phys2_debug_wakeup 0 +// wait 2721; sm_cvar phys2_dedicated_thread_pool 0 +// wait 2724; sm_cvar phys2_dump_exclude_list 0 +// wait 2727; sm_cvar phys2_dump_runtime_sizes 0 +// wait 2730; sm_cvar phys2_hack_ignore_models 0 +// wait 2733; sm_cvar phys2_hack_replace_bboxes 0 +// wait 2736; sm_cvar phys2_merge_static_props 1 +// wait 2739; sm_cvar phys2_num_threads 0 +// wait 2742; sm_cvar phys2_preload_models 0 +// wait 2745; sm_cvar phys2_ragdoll_clamp_angular_velocity 30 +// wait 2748; sm_cvar phys2_ragdoll_clamp_linear_velocity 600 +// wait 2751; sm_cvar phys2_ragdoll_create_constraints 1 +// wait 2754; sm_cvar phys2_ragdoll_force_magnitude 5 +// wait 2757; sm_cvar phys2_ragdoll_log 0 +// wait 2760; sm_cvar phys2_ragdoll_torque_magnitude 0.03 +// wait 2763; sm_cvar phys2_ragdoll_velocity 1 +// wait 2766; sm_cvar phys2_report_asserts 1 +// wait 2769; sm_cvar phys2_report_errors 1 +// wait 2772; sm_cvar phys2_report_messages 0 +// wait 2775; sm_cvar phys2_report_warnings 1 +// wait 2778; sm_cvar phys2_shoot_speed 250 +// wait 2781; sm_cvar phys2_vdb 0 +// wait 2784; sm_cvar phys2_vdb_host "74.91.113.130" +// wait 2787; sm_cvar phys2_version "obsolete" +// wait 2790; sm_cvar phys2_visualize 0 +wait 2793; sm_cvar phys_enable_experimental_optimizations 1 +// wait 2796; sm_cvar phys_enable_PIX_counters 1 +// wait 2799; sm_cvar phys_enable_query_cache 1 +// wait 2802; sm_cvar phys_enable_simd_optimizations 1 +wait 2805; sm_cvar phys_explosion_force 1.0 +// wait 2808; sm_cvar phys_impactforcescale 1.0 +wait 2811; sm_cvar phys_penetration_error_time 5 +// wait 2814; sm_cvar phys_pushscale 1.0 +wait 2817; sm_cvar phys_ragdoll_force_magnitude 0.5 +wait 2820; sm_cvar phys_shoot_torque 1000000 +// wait 2823; sm_cvar phys_speeds 0 +// wait 2826; sm_cvar phys_stressbodyweights 5.0 +// wait 2829; sm_cvar phys_timescale 1.0 +wait 2832; sm_cvar phys_upimpactforcescale 0.5 +// wait 2835; sm_cvar physicsshadowupdate_render 0 +// wait 2838; sm_cvar PhysPMC 1 +// wait 2841; sm_cvar physx_debug_dll 0 +// wait 2844; sm_cvar physx_subdir "" +wait 2847; sm_cvar physx_valve_dll 1 +wait 2850; sm_cvar pipe_bomb_beep_interval_delta 0.0225 +wait 2853; sm_cvar pipe_bomb_beep_min_interval 0.075 +wait 2856; sm_cvar pipe_bomb_initial_beep_interval 0.525 +// wait 2859; sm_cvar pipe_bomb_shake_amplitude 50 +wait 2862; sm_cvar pipe_bomb_shake_radius 1000 +wait 2865; sm_cvar pipe_bomb_timer_duration 7.5 +// wait 2868; sm_cvar pipeline_static_props 1 +// wait 2871; sm_cvar player_debug_print_damage 0 +wait 2874; sm_cvar player_incap_use_radius 150 +// wait 2877; sm_cvar player_old_armor 0 +wait 2880; sm_cvar player_throwforce 2500 +wait 2883; sm_cvar player_use_radius 125 +wait 2886; sm_cvar precache_all_survivors 1 +wait 2889; sm_cvar prop_active_gib_limit 30 +wait 2892; sm_cvar prop_active_gib_max_fade_time 10 +// wait 2895; sm_cvar prop_use 0 +wait 2898; sm_cvar props_break_max_pieces -1 +// wait 2901; sm_cvar props_break_max_pieces_perframe -1 +wait 2904; sm_cvar punch_angle_decay_rate 15 +// wait 2907; sm_cvar r_AirboatViewDampenDamp 1 +// wait 2910; sm_cvar r_AirboatViewDampenFreq 10 +// wait 2913; sm_cvar r_AirboatViewZHeight 0 +// wait 2916; sm_cvar r_ambientboost 1 +// wait 2919; sm_cvar r_ambientfactor 10 +// wait 2922; sm_cvar r_ambientfraction 0.25 +// wait 2925; sm_cvar r_ambientmin 0.5 +// wait 2928; sm_cvar r_colorstaticprops 0 +// wait 2931; sm_cvar r_debugrandomstaticlighting 0 +// wait 2934; sm_cvar r_decal_cover_count 2147483647 +wait 2937; sm_cvar r_decal_overlap_area 0.0 +// wait 2940; sm_cvar r_decal_overlap_count 1 +wait 2943; sm_cvar r_decals 2147483647 +// wait 2946; sm_cvar r_decalstaticprops 1 +// wait 2949; sm_cvar r_DispBuildable 0 +// wait 2952; sm_cvar r_DispWalkable 0 +// wait 2955; sm_cvar r_drawbatchdecals 1 +// wait 2958; sm_cvar r_drawbrushmodels 1 +// wait 2961; sm_cvar r_drawdecals 1 +// wait 2964; sm_cvar r_DrawDisp 1 +// wait 2967; sm_cvar r_drawentities 1 +// wait 2970; sm_cvar r_drawfuncdetail 1 +// wait 2973; sm_cvar r_drawleaf -1 +// wait 2976; sm_cvar r_drawlightcache 0 +// wait 2979; sm_cvar r_drawmodeldecals 1 +// wait 2982; sm_cvar r_DrawModelLightOrigin 0 +// wait 2985; sm_cvar r_drawmodelstatsoverlay 0 +// wait 2988; sm_cvar r_drawmodelstatsoverlaydistance 1000 +wait 2991; sm_cvar r_drawmodelstatsoverlaymax 2 +wait 2994; sm_cvar r_drawmodelstatsoverlaymin 1 +// wait 2997; sm_cvar r_DrawSpecificStaticProp -1 +// wait 3000; sm_cvar r_drawstaticprops 1 +// wait 3003; sm_cvar r_drawtranslucentworld 1 +// wait 3006; sm_cvar r_drawworld 1 +// wait 3009; sm_cvar r_dscale_basefov 90 +// wait 3012; sm_cvar r_dscale_fardist 2000 +// wait 3015; sm_cvar r_dscale_farscale 4 +// wait 3018; sm_cvar r_dscale_neardist 100 +// wait 3021; sm_cvar r_dscale_nearscale 1 +// wait 3024; sm_cvar r_dynamic 1 +// wait 3027; sm_cvar r_entity -1 +// wait 3030; sm_cvar r_eyeglintlodpixels 20 +// wait 3033; sm_cvar r_eyemove 1 +// wait 3036; sm_cvar r_eyes 1 +wait 3039; sm_cvar r_eyeshift_x 0.0 +wait 3042; sm_cvar r_eyeshift_y 0.0 +wait 3045; sm_cvar r_eyeshift_z 0.0 +wait 3048; sm_cvar r_eyesize 0.0 +// wait 3051; sm_cvar r_fastzreject 0 +// wait 3054; sm_cvar r_fastzrejectdisp 0 +wait 3057; sm_cvar r_flashlightdepthtexture 1 +// wait 3060; sm_cvar r_flashlightscissor 1 +// wait 3063; sm_cvar r_flex 1 +// wait 3066; sm_cvar r_ForceRestore 0 +// wait 3069; sm_cvar r_glint_alwaysdraw 0 +// wait 3072; sm_cvar r_glint_procedural 0 +// wait 3075; sm_cvar r_hunkalloclightmaps 1 +wait 3078; sm_cvar r_hwmorph 1 +// wait 3081; sm_cvar r_itemblinkmax 0.3 +// wait 3084; sm_cvar r_itemblinkrate 4.5 +// wait 3087; sm_cvar r_JeepFOV 90 +// wait 3090; sm_cvar r_JeepViewDampenDamp 1 +// wait 3093; sm_cvar r_JeepViewDampenFreq 10 +// wait 3096; sm_cvar r_JeepViewZHeight 10 +// wait 3099; sm_cvar r_lightaverage 1 +// wait 3102; sm_cvar r_lightcachemodel -1 +// wait 3105; sm_cvar r_lightinterp 10 +// wait 3108; sm_cvar r_lightmap -1 +// wait 3111; sm_cvar r_lightstyle -1 +// wait 3114; sm_cvar r_lockpvs 0 +wait 3117; sm_cvar r_lod 0 +wait 3120; sm_cvar r_maxmodeldecal 2147483647 +// wait 3123; sm_cvar r_modelwireframedecal 0 +// wait 3126; sm_cvar r_nohw 0 +// wait 3129; sm_cvar r_norefresh 0 +// wait 3132; sm_cvar r_nosw 0 +// wait 3135; sm_cvar r_novis 0 +// wait 3138; sm_cvar r_occludeemaxarea 0 +// wait 3141; sm_cvar r_occluderminarea 0 +// wait 3144; sm_cvar r_occludermincount 0 +// wait 3147; sm_cvar r_occlusion 1 +// wait 3150; sm_cvar r_occlusionspew 0 +// wait 3153; sm_cvar r_overlayfadeenable 0 +// wait 3156; sm_cvar r_overlayfademax 2147483648 +// wait 3159; sm_cvar r_overlayfademin 2147483648 +// wait 3162; sm_cvar r_overlaywireframe 0 +// wait 3165; sm_cvar r_partition_level -1 +// wait 3168; sm_cvar r_proplightingfromdisk 1 +// wait 3171; sm_cvar r_proplightingpooling -1 +wait 3174; sm_cvar r_queued_decals 1 +// wait 3177; sm_cvar r_randomflex 0 +// wait 3180; sm_cvar r_renderoverlayfragment 1 +// wait 3183; sm_cvar r_rootlod 0 +wait 3186; sm_cvar r_shadowlod 0 +wait 3189; sm_cvar r_shadowlodbias 3 +// wait 3192; sm_cvar r_shadowrendertotexture 1 +// wait 3195; sm_cvar r_showenvcubemap 0 +wait 3198; sm_cvar r_skin 1 +// wait 3201; sm_cvar r_slowpathwireframe 0 +wait 3204; sm_cvar r_spray_lifetime 2147483647 +// wait 3207; sm_cvar r_staticlight_streams 1 +wait 3210; sm_cvar r_staticprop_lod 0 +// wait 3213; sm_cvar r_staticpropinfo 0 +// wait 3216; sm_cvar r_teeth 1 +// wait 3219; sm_cvar r_unloadlightmaps 0 +// wait 3222; sm_cvar r_vehicleBrakeRate 2.0 +// wait 3225; sm_cvar r_VehicleViewDampen 1 +// wait 3228; sm_cvar r_visocclusion 0 +// wait 3231; sm_cvar r_visualizetraces 0 +// wait 3234; sm_cvar radius_damage_show_hits 0 +// wait 3237; sm_cvar ragdoll_collide 0 +wait 3240; sm_cvar ragdoll_door_uncollide_time 2 +wait 3243; sm_cvar ragdoll_force_to_sleep_time 3 +wait 3246; sm_cvar ragdoll_self_collision 0 +wait 3249; sm_cvar ragdoll_sleepaftertime 3 +// wait 3252; sm_cvar ragdoll_slowdown 1 +wait 3255; sm_cvar ragdoll_slowdown_time 3 +wait 3258; sm_cvar rcon_password "BigBizzy101" +// wait 3261; sm_cvar res_restrict_access 0 +wait 3264; sm_cvar rescue_distance 4000 +// wait 3267; sm_cvar rescue_finale_ignore_distance 4000 +// wait 3270; sm_cvar rescue_finale_spawn_range 4000 +// wait 3273; sm_cvar rescue_ignore_distance 2000 +wait 3276; sm_cvar rescue_interval 1 +wait 3279; sm_cvar rescue_min_dead_time 5 +// wait 3282; sm_cvar rescue_range 1000 +// wait 3285; sm_cvar rescue_spawn_flow 500 +// wait 3288; sm_cvar rescue_spawn_range 2000 +// wait 3291; sm_cvar rescue_yell_delay 1 +wait 3294; sm_cvar rescue_yell_interval 10 +wait 3297; sm_cvar rpt_vprof_time 0 +// wait 3300; sm_cvar rr_debugplayer -1 +// wait 3303; sm_cvar rr_debugresponseconcept "" +// wait 3306; sm_cvar rr_debugresponses 0 +// wait 3309; sm_cvar rr_debugrule "" +// wait 3312; sm_cvar rr_dumpresponses 0 +// wait 3315; sm_cvar rr_followup_maxdist 2000 +// wait 3318; sm_cvar rr_remarkable_maxdist 1500 +// wait 3321; sm_cvar rr_remarkable_world_entities_replay_limit 1 +// wait 3324; sm_cvar rr_thenany_score_slop 0 +wait 3327; sm_cvar sb_all_bot_game 1 +// wait 3330; sm_cvar sb_allow_leading 0 +wait 3333; sm_cvar sb_allow_shoot_through_survivors 0 +wait 3336; sm_cvar sb_battlestation_give_up_range_from_human 500 +wait 3339; sm_cvar sb_battlestation_human_hold_time 1 +wait 3342; sm_cvar sb_close_checkpoint_door_interval 4 +wait 3345; sm_cvar sb_close_threat_range 100 +wait 3348; sm_cvar sb_combat_saccade_speed 3000 +// wait 3351; sm_cvar sb_crouch 0 +wait 3354; sm_cvar sb_debug_apoproach_wait_time 0 +// wait 3357; sm_cvar sb_debug_buddy 0 +// wait 3360; sm_cvar sb_debug_locomotion 0 +// wait 3363; sm_cvar sb_debug_retreat 0 +// wait 3366; sm_cvar sb_debug_team_avoidance 0 +// wait 3369; sm_cvar sb_dont_bash 0 +// wait 3372; sm_cvar sb_dont_shoot 0 +wait 3375; sm_cvar sb_enforce_proximity_lookat_timeout 5 +wait 3378; sm_cvar sb_enforce_proximity_range 1000 +// wait 3381; sm_cvar sb_escort 0 +wait 3384; sm_cvar sb_far_hearing_range 3000 +// wait 3387; sm_cvar sb_flashlight 0 +wait 3390; sm_cvar sb_follow_stress_factor 0.0 +wait 3393; sm_cvar sb_friend_immobilized_reaction_time_expert 0 +wait 3396; sm_cvar sb_friend_immobilized_reaction_time_hard 0 +wait 3399; sm_cvar sb_friend_immobilized_reaction_time_normal 0 +wait 3402; sm_cvar sb_friend_immobilized_reaction_time_vs 0 +// wait 3405; sm_cvar sb_friendlyfire 0 +wait 3408; sm_cvar sb_hindrance_range 32 +// wait 3411; sm_cvar sb_hold_position 0 +wait 3414; sm_cvar sb_l4d1_survivor_behavior 0 +wait 3417; sm_cvar sb_locomotion_wait_threshold 4 +wait 3420; sm_cvar sb_max_battlestation_range_from_human 500 +wait 3423; sm_cvar sb_max_scavenge_separation 500 +wait 3426; sm_cvar sb_max_team_melee_weapons 4 +// wait 3429; sm_cvar sb_melee_approach_victim 0 +wait 3432; sm_cvar sb_min_attention_notice_time 0 +wait 3435; sm_cvar sb_min_orphan_time_to_cover 0 +wait 3438; sm_cvar sb_minigun_distance 50 +// wait 3441; sm_cvar sb_move 1 +wait 3444; sm_cvar sb_narrow_corridor_width 64 +wait 3447; sm_cvar sb_near_hearing_range 2000 +// wait 3450; sm_cvar sb_neighbor_range 300 +wait 3453; sm_cvar sb_normal_saccade_speed 3000 +// wait 3456; sm_cvar sb_open_fire 0 +wait 3459; sm_cvar sb_path_lookahead_range 500 +// wait 3462; sm_cvar sb_perf_crawl 0 +// wait 3465; sm_cvar sb_perf_crawl_ang 0 +// wait 3468; sm_cvar sb_perf_crawl_dist 0 +// wait 3471; sm_cvar sb_perf_crawl_time 0 +// wait 3474; sm_cvar sb_perf_dump 0 +// wait 3477; sm_cvar sb_perf_dump_bots "" +wait 3480; sm_cvar sb_pushscale 0.0 +wait 3483; sm_cvar sb_reachability_cache_lifetime 10 +wait 3486; sm_cvar sb_reachable_cache_paranoia 1 +// wait 3489; sm_cvar sb_replacement_interval 0 +wait 3492; sm_cvar sb_rescue_vehicle_loading_range 50 +wait 3495; sm_cvar sb_revive_friend_distance 175 +wait 3498; sm_cvar sb_separation_danger_max_range 300 +// wait 3501; sm_cvar sb_separation_danger_min_range 200 +wait 3504; sm_cvar sb_separation_range 300 +// wait 3507; sm_cvar sb_show_threat_areas 0 +wait 3510; sm_cvar sb_sidestep_for_horde 1 +// wait 3513; sm_cvar sb_skill "survivor" +// wait 3516; sm_cvar sb_stop 0 +wait 3519; sm_cvar sb_temp_health_consider_factor 0.8 +wait 3522; sm_cvar sb_threat_close_range 100 +wait 3525; sm_cvar sb_threat_exposure_stop 2147483648 +wait 3528; sm_cvar sb_threat_exposure_walk 2147483648 +wait 3531; sm_cvar sb_threat_far_range 2000 +wait 3534; sm_cvar sb_threat_medium_range 1000 +wait 3537; sm_cvar sb_threat_very_close_range 50 +wait 3540; sm_cvar sb_threat_very_far_range 3000 +wait 3543; sm_cvar sb_toughness_buffer 20 +// wait 3546; sm_cvar sb_transition 1 +// wait 3549; sm_cvar sb_unstick 1 +wait 3552; sm_cvar sb_use_button_range 500 +// wait 3555; sm_cvar sb_use_upgrades 1 +wait 3558; sm_cvar sb_vomit_blind_time 0 +// wait 3561; sm_cvar scavenge_cluster_bonus_time 15 +// wait 3564; sm_cvar scavenge_cluster_range_squared 100000 +// wait 3567; sm_cvar scavenge_cluster_remove_on_pour 1 +wait 3570; sm_cvar scavenge_item_respawn_delay 12 +// wait 3573; sm_cvar scavenge_match_finished_delay 5 +// wait 3576; sm_cvar scavenge_overtime_grace_time 1 +// wait 3579; sm_cvar scavenge_round_initial_time 90 +wait 3582; sm_cvar scavenge_round_restart_delay 15 +// wait 3585; sm_cvar scavenge_round_restart_delay_tied 15 +wait 3588; sm_cvar scavenge_round_setup_time 30 +wait 3591; sm_cvar scavenge_score_bonus_time 15 +wait 3594; sm_cvar scavenge_wanderer_respawn_chance 100 +// wait 3597; sm_cvar scene_async_prefetch_spew 0 +// wait 3600; sm_cvar scene_clientflex 1 +// wait 3603; sm_cvar scene_clientplayback 1 +// wait 3606; sm_cvar scene_forcecombined 0 +// wait 3609; sm_cvar scene_maxcaptionradius 1500 +// wait 3612; sm_cvar scene_print 0 +// wait 3615; sm_cvar scene_showlook 0 +// wait 3618; sm_cvar scene_showmoveto 0 +// wait 3621; sm_cvar scene_showunlock 0 +// wait 3624; sm_cvar script_attach_debugger_at_startup 0 +// wait 3627; sm_cvar script_break_in_native_debugger_on_error 0 +// wait 3630; sm_cvar servercfgfile "server1.cfg" +wait 3633; sm_cvar shotgun_reload_cancel_delay 0.0 +wait 3636; sm_cvar shout_going_to_die_interval 10 +wait 3639; sm_cvar shout_make_way_interval 1 +wait 3642; sm_cvar shout_max_warn_range 3000 +wait 3645; sm_cvar shout_min_special_warn_interval 1 +wait 3648; sm_cvar shout_min_use_range 500 +wait 3651; sm_cvar shout_min_warn_interval 1 +wait 3654; sm_cvar shout_threat_range 3000 +// wait 3657; sm_cvar shout_view_motion_threshold 0.01 +// wait 3660; sm_cvar shout_view_target_threahold 0.01 +// wait 3663; sm_cvar showtriggers 0 +wait 3666; sm_cvar singlestep 0 +wait 3669; sm_cvar sk_autoaim_mode 3 +// wait 3672; sm_cvar sk_player_arm 1 +// wait 3675; sm_cvar sk_player_chest 1 +wait 3678; sm_cvar sk_player_head 1 +// wait 3681; sm_cvar sk_player_leg 1 +// wait 3684; sm_cvar sk_player_stomach 1 +wait 3687; sm_cvar skill 3 +wait 3690; sm_cvar Smoker_escape_range 10000 +wait 3693; sm_cvar smoker_pz_claw_dmg 6 +wait 3696; sm_cvar smoker_tongue_delay 0 +// wait 3699; sm_cvar smoothstairs 1 +wait 3702; sm_cvar snd_foliage_db_loss 3 +wait 3705; sm_cvar snd_gain 2.0 +wait 3708; sm_cvar snd_gain_max 10.0 +wait 3711; sm_cvar snd_gain_min 1.0 +wait 3714; sm_cvar snd_refdb 75 +wait 3717; sm_cvar snd_refdist 50 +// wait 3720; sm_cvar snd_vox_captiontrace 0 +// wait 3723; sm_cvar snd_vox_globaltimeout 300 +// wait 3726; sm_cvar snd_vox_sectimetout 300 +// wait 3729; sm_cvar snd_vox_seqtimetout 300 +// wait 3732; sm_cvar soundpatch_captionlength 3 +// wait 3735; sm_cvar soundscape_debug 0 +// wait 3738; sm_cvar spawn_behind_survivors_distance 0 +// wait 3741; sm_cvar spec_filter "any" +// wait 3744; sm_cvar spec_filter_infected "any" +wait 3747; sm_cvar spec_filter_survivors "any" +wait 3750; sm_cvar spec_freeze_time 0 +wait 3753; sm_cvar spec_freeze_traveltime 0.01 +// wait 3756; sm_cvar spew_consolelog_to_debugstring 0 +wait 3759; sm_cvar spit_scaling_min_scale 1.0 +// wait 3762; sm_cvar spitter_pz_claw_dmg 4 +wait 3765; sm_cvar ss_voice_hearpartner 1 +// wait 3768; sm_cvar steam_controller_haptics 1 +wait 3771; sm_cvar steamworks_immediate_upload 1 +// wait 3774; sm_cvar steamworks_server_sessionid 0 +// wait 3777; sm_cvar steamworks_show_uploads 0 +wait 3780; sm_cvar steamworks_stats_disable 0 +// wait 3783; sm_cvar step_spline 0 +wait 3786; sm_cvar still_vel_limit 0 +wait 3789; sm_cvar still_view_accel_limit 0 +// wait 3792; sm_cvar stringtable_alwaysrebuilddictionaries 0 +// wait 3795; sm_cvar stringtable_usedictionaries 1 +// wait 3798; sm_cvar studio_queue_mode 1 +wait 3801; sm_cvar suitvolume 2.0 +wait 3804; sm_cvar survival_boomer_limit_increase 1 +wait 3807; sm_cvar survival_charger_limit_increase 1 +wait 3810; sm_cvar survival_generate_fake_times 0 +wait 3813; sm_cvar survival_horde_stage_interval 40 +wait 3816; sm_cvar survival_horde_stage_interval_decay 1 +// wait 3819; sm_cvar survival_hunter_limit_increase 1 +// wait 3822; sm_cvar survival_jockey_limit_increase 1 +wait 3825; sm_cvar survival_lull_time 0 +wait 3828; sm_cvar survival_lull_time_increment 0 +wait 3831; sm_cvar survival_lull_time_max 0 +wait 3834; sm_cvar survival_max_boomers 3 +// wait 3837; sm_cvar survival_max_chargers 2 +// wait 3840; sm_cvar survival_max_hunters 3 +// wait 3843; sm_cvar survival_max_jockeys 2 +// wait 3846; sm_cvar survival_max_smokers 4 +wait 3849; sm_cvar survival_max_specials 10 +// wait 3852; sm_cvar survival_max_spitters 3 +// wait 3855; sm_cvar survival_round_restart_delay 15 +// wait 3858; sm_cvar survival_smoker_limit_increase 1 +// wait 3861; sm_cvar survival_special_limit_increase 1 +wait 3864; sm_cvar survival_special_spawn_interval 10 +wait 3867; sm_cvar survival_special_spawn_interval_decay 0 +wait 3870; sm_cvar survival_special_stage_interval 120 +// wait 3873; sm_cvar survival_spitter_limit_increase 1 +// wait 3876; sm_cvar survival_tank_multiple_spawn_delay 10 +// wait 3879; sm_cvar survival_tank_stage_interval 80 +wait 3882; sm_cvar survival_tank_stage_interval_decay 10 +wait 3885; sm_cvar survivor_accuracy_upgrade_factor 0.75 +// wait 3888; sm_cvar survivor_allow_crawling 0 +wait 3891; sm_cvar survivor_burn_factor_easy 0.0 +wait 3894; sm_cvar survivor_burn_factor_expert 0.3 +wait 3897; sm_cvar survivor_burn_factor_hard 0.2 +wait 3900; sm_cvar survivor_burn_factor_normal 0.1 +wait 3903; sm_cvar survivor_calm_damage_delay 10 +wait 3906; sm_cvar survivor_calm_deploy_delay 5 +wait 3909; sm_cvar survivor_calm_intensity 0.1 +// wait 3912; sm_cvar survivor_calm_no_flashlight 1 +wait 3915; sm_cvar survivor_calm_recent_enemy_delay 10 +wait 3918; sm_cvar survivor_calm_weapon_delay 10 +wait 3921; sm_cvar survivor_crawl_speed 100 +wait 3924; sm_cvar survivor_crouch_speed 80 +wait 3927; sm_cvar survivor_damage_speed_factor 0.3 +// wait 3930; sm_cvar survivor_death_anims 0 +// wait 3933; sm_cvar survivor_debug_active_area_set 0 +// wait 3936; sm_cvar survivor_debug_in_combat 0 +// wait 3939; sm_cvar survivor_debug_visibility 0 +// wait 3942; sm_cvar survivor_drag_continuous_fire 1 +wait 3945; sm_cvar survivor_drag_speed_multiplier 0.75 +// wait 3948; sm_cvar survivor_drag_type 0 +// wait 3951; sm_cvar survivor_ff_avoidance 0 +wait 3954; sm_cvar survivor_ff_avoidance_pitch 10 +wait 3957; sm_cvar survivor_ff_avoidance_yaw 10 +wait 3960; sm_cvar survivor_ff_tolerance 100 +wait 3963; sm_cvar survivor_fog_vocalize_percent 1.0 +/ 3966; sm_cvar survivor_friendly_fire_factor_easy 0.0 +wait 3969; sm_cvar survivor_friendly_fire_factor_expert 0.3 +wait 3972; sm_cvar survivor_friendly_fire_factor_hard 0.2 +wait 3975; sm_cvar survivor_friendly_fire_factor_normal 0.025 +wait 3978; sm_cvar survivor_fumes_walk_speed 100 +wait 3981; sm_cvar survivor_give_attract_timeout 15 +wait 3984; sm_cvar survivor_hanging_eye_height 100 +wait 3987; sm_cvar survivor_hanging_from_tongue_eye_height 60 +wait 3990; sm_cvar survivor_helping_hand_inhibit_duration 0 +// wait 3993; sm_cvar survivor_hitsound_interval_timer 0.1 +// wait 3996; sm_cvar survivor_incap_decay_rate 3 +// wait 3999; sm_cvar survivor_incap_health 300 +wait 4002; sm_cvar survivor_incap_hopeless_decay_rate 6 +// wait 4005; sm_cvar survivor_incap_max_fall_damage 200 +wait 4008; sm_cvar survivor_incap_tongued_decay_rate 20 +wait 4011; sm_cvar survivor_incapacitated_accuracy_penalty 0.0 +wait 4014; sm_cvar survivor_incapacitated_cycle_time 0.283333 +wait 4017; sm_cvar survivor_incapacitated_dizzy_severity 0.0 +wait 4020; sm_cvar survivor_incapacitated_dizzy_timer 5 +wait 4023; sm_cvar survivor_incapacitated_eye_height 20 +wait 4026; sm_cvar survivor_incapacitated_reload_multiplier 1.0 +wait 4029; sm_cvar survivor_incapacitated_roll 15 +wait 4032; sm_cvar survivor_intensity_decay_threat_range 1000 +wait 4035; sm_cvar survivor_intensity_recent_enemy_duration 10 +wait 4038; sm_cvar survivor_it_duration 18 +wait 4041; sm_cvar survivor_knockdown_roll -15 +// wait 4044; sm_cvar survivor_lazy_active_set 1 +// wait 4047; sm_cvar survivor_lean 0 +wait 4050; sm_cvar survivor_ledge_grab_ground_check_time 1 +// wait 4053; sm_cvar survivor_ledge_grab_health 300 +// wait 4056; sm_cvar survivor_ledge_scales_health 1 +// wait 4059; sm_cvar survivor_limit 4 +// wait 4062; sm_cvar survivor_limp_health 40 +wait 4065; sm_cvar survivor_limp_walk_speed 100 +// wait 4068; sm_cvar survivor_max_incapacitated_count 2 +// wait 4071; sm_cvar survivor_max_lunge_stagger_distance 50 +// wait 4074; sm_cvar survivor_max_lunge_stagger_speed 220 +// wait 4077; sm_cvar survivor_max_tongue_stagger_distance 200 +wait 4080; sm_cvar survivor_max_tongue_stagger_duration 1 +// wait 4083; sm_cvar survivor_max_tug_distance 300 +// wait 4086; sm_cvar survivor_max_tug_duration 1.5 +// wait 4089; sm_cvar survivor_min_lunge_stagger_speed 50 +// wait 4092; sm_cvar survivor_model_selection -1 +// wait 4095; sm_cvar survivor_no_pounce_or_hang 0 +wait 4098; sm_cvar survivor_pounce_victim_eye_height 30 +// wait 4101; sm_cvar survivor_push 0 +// wait 4104; sm_cvar survivor_respawn_with_guns 1 +wait 4107; sm_cvar survivor_revive_after_drag 1 +// wait 4110; sm_cvar survivor_revive_continuous_fire 1 +wait 4113; sm_cvar survivor_revive_duration 4.75 +// wait 4116; sm_cvar survivor_revive_health 30 +// wait 4119; sm_cvar survivor_shove_teammates 0 +wait 4122; sm_cvar survivor_speed 220 +wait 4125; sm_cvar survivor_speed_boost_factor 1.25 +// wait 4128; sm_cvar survivor_sprint_multiplier 1.5 +// wait 4131; sm_cvar survivor_stun_immunity_duration 0 +wait 4134; sm_cvar survivor_team_hit_pitch_max 7.5 +wait 4137; sm_cvar survivor_team_hit_pitch_min -7.5 +wait 4140; sm_cvar survivor_team_hit_yaw_max 7.5 +wait 4143; sm_cvar survivor_team_hit_yaw_min -7.5 +// wait 4146; sm_cvar survivor_teammatefocus_enabled 0 +// wait 4149; sm_cvar survivor_teammatefocus_speed 10 +// wait 4152; sm_cvar survivor_teammatefocus_stickyness 5 +wait 4155; sm_cvar survivor_unstoppable_speed 180 +wait 4158; sm_cvar survivor_upgrade_reload_duration 0.75 +wait 4161; sm_cvar survivor_vision_range 2000 +wait 4164; sm_cvar survivor_vision_range_obscured 1000 +// wait 4167; sm_cvar sv__ragdoll_max_remove_per_frame 1 +wait 4170; sm_cvar sv_accelerate 5.5 +wait 4173; sm_cvar sv_airaccelerate 15 +wait 4176; sm_cvar sv_allow_lobby_connect_only 0 +wait 4179; sm_cvar sv_allow_votes 1 +wait 4182; sm_cvar sv_allow_wait_command 1 +wait 4185; sm_cvar sv_allowdownload 1 +wait 4188; sm_cvar sv_allowupload 1 +// wait 4191; sm_cvar sv_alltalk 1 +wait 4194; sm_cvar sv_alternateticks 1 +// wait 4197; sm_cvar sv_always_full_flush 0 +// wait 4200; sm_cvar sv_autosave 1 +wait 4203; sm_cvar sv_backspeed 1.0 +// wait 4206; sm_cvar sv_banid_dev_enabled 0 +wait 4209; sm_cvar sv_banid_enabled 1 +// wait 4212; sm_cvar sv_benchmark_autovprofrecord 0 +wait 4215; sm_cvar sv_benchmark_numticks 0 +// wait 4218; sm_cvar sv_bonus_challenge 0 +wait 4221; sm_cvar sv_bounce 0.2 +// wait 4224; sm_cvar sv_cacheencodedents 1 +// wait 4227; sm_cvar sv_cheats 0 +wait 4230; sm_cvar sv_client_cmdrate_difference 0 +wait 4233; sm_cvar sv_client_max_interp_ratio 30 +wait 4236; sm_cvar sv_client_min_interp_ratio 0 +wait 4239; sm_cvar sv_client_predict 1 +wait 4242; sm_cvar sv_clockcorrection_msecs 50 +wait 4245; sm_cvar sv_consistency 0 +wait 4248; sm_cvar sv_contact "EricMizusawa02@gmail.com" +// wait 4251; sm_cvar sv_creationtickcheck 1 +wait 4254; sm_cvar sv_cycle_latch_timer 0.1 +// wait 4257; sm_cvar sv_debug_entity "" +// wait 4260; sm_cvar sv_debug_player_use 0 +// wait 4263; sm_cvar sv_debugmanualmode 0 +// wait 4266; sm_cvar sv_debugtempentities 0 +// wait 4269; sm_cvar sv_deltaprint 0 +// wait 4272; sm_cvar sv_deltatime 0 +wait 4275; sm_cvar sv_demo_entity_record_rate 60 +wait 4278; sm_cvar sv_disable_glow_faritems 0 +// wait 4281; sm_cvar sv_disable_glow_survivors 0 +// wait 4284; sm_cvar sv_disable_querycache 0 +// wait 4287; sm_cvar sv_doors_push_players 0 +wait 4290; sm_cvar sv_downloadurl "" +// wait 4293; sm_cvar sv_dumpstringtables 0 +// wait 4296; sm_cvar sv_enableoldqueries 0 +wait 4299; sm_cvar sv_extra_client_connect_time 30 +wait 4302; sm_cvar sv_fallen_survivor_health_multiplier 1.0 +wait 4305; sm_cvar sv_filterban 1 +wait 4308; sm_cvar sv_footstepinterval 0.166667 +// wait 4311; sm_cvar sv_footsteps 1 +// wait 4314; sm_cvar sv_force_time_of_day -1 +// wait 4317; sm_cvar sv_force_transmit_ents 0 +wait 4320; sm_cvar sv_forcepreload 1 +// wait 4323; sm_cvar sv_friction 4 +wait 4326; sm_cvar sv_gameinstructor_disable 1 +wait 4329; sm_cvar sv_gametypes "coop,realism,survival,versus,scavenge,dash,holdout,shootzones" +wait 4332; sm_cvar sv_gravity 720 +wait 4335; sm_cvar sv_healing_gnome_replenish_rate 2.0 +wait 4338; sm_cvar sv_hibernate_ms 0 +wait 4341; sm_cvar sv_hibernate_ms_vgui 0 +wait 4344; sm_cvar sv_hibernate_postgame_delay 10 +wait 4347; sm_cvar sv_hibernate_when_empty 0 +wait 4350; sm_cvar sv_hosting_lobby 1 +wait 4353; sm_cvar sv_infected_ceda_vomitjar_probability 0.125 +wait 4356; sm_cvar sv_infected_police_tonfa_probability 0.25 +wait 4359; sm_cvar sv_infected_riot_control_tonfa_probability 0.25 +wait 4362; sm_cvar sv_infected_scale_max 1.025 +wait 4365; sm_cvar sv_infected_scale_min 1.025 +// wait 4368; sm_cvar sv_infinite_ammo 0 +// wait 4371; sm_cvar sv_infinite_primary_ammo 0 +// wait 4374; sm_cvar sv_instancebaselines 1 +// wait 4377; sm_cvar sv_lagcompensationforcerestore 1 +wait 4380; sm_cvar sv_lagflushbonecache 0 +// wait 4383; sm_cvar sv_lagpushticks 0 +wait 4386; sm_cvar sv_lan 0 +wait 4389; sm_cvar sv_log_onefile 1 +wait 4392; sm_cvar sv_logbans 1 +// wait 4395; sm_cvar sv_logblocks 0 +// wait 4398; sm_cvar sv_logdownloadlist 0 +wait 4401; sm_cvar sv_logecho 1 +wait 4404; sm_cvar sv_logfile 1 +// wait 4407; sm_cvar sv_logflush 0 +wait 4410; sm_cvar sv_logsdir "logs" +// wait 4413; sm_cvar sv_massreport 0 +// wait 4416; sm_cvar sv_master_legacy_mode 0 +// wait 4419; sm_cvar sv_master_share_game_socket 1 +wait 4422; sm_cvar sv_max_queries_sec 6 +wait 4425; sm_cvar sv_max_queries_sec_global 120 +wait 4428; sm_cvar sv_max_queries_window 60 +wait 4431; sm_cvar sv_max_usercmd_future_ticks 15 +wait 4434; sm_cvar sv_maxclientframes 120 +wait 4437; sm_cvar sv_maxcmdrate 120 +// wait 4440; sm_cvar sv_maxplayers 32 +wait 4443; sm_cvar sv_maxrate 72000 +// wait 4446; sm_cvar sv_maxreplay 0 +// wait 4449; sm_cvar sv_maxroutable 1200 +wait 4452; sm_cvar sv_maxspeed 1000 +wait 4455; sm_cvar sv_maxunlag 0.5 +// wait 4458; sm_cvar sv_maxupdaterate 60 +wait 4461; sm_cvar sv_maxvelocity 1500 +// wait 4464; sm_cvar sv_memlimit 0 +wait 4467; sm_cvar sv_mincmdrate 120 +wait 4470; sm_cvar sv_minrate 72000 +wait 4473; sm_cvar sv_minupdaterate 60 +wait 4476; sm_cvar sv_multiplayer_maxtempentities 64 +wait 4479; sm_cvar sv_multiplayer_sounds 64 +// wait 4482; sm_cvar sv_music_debug 0 +// wait 4485; sm_cvar sv_netvisdist 100000 +// wait 4488; sm_cvar sv_new_delta_bits 1 +// wait 4491; sm_cvar sv_no_navmesh 0 +// wait 4494; sm_cvar sv_noclipaccelerate 5 +// wait 4497; sm_cvar sv_noclipduringpause 0 +// wait 4500; sm_cvar sv_noclipfriction 4 +wait 4503; sm_cvar sv_noclipspeed 3 +// wait 4506; sm_cvar sv_optimizedmovement 1 +wait 4509; sm_cvar sv_parallel_packentities 2 +wait 4512; sm_cvar sv_parallel_sendsnapshot 2 +// wait 4515; sm_cvar sv_password "" +wait 4518; sm_cvar sv_pausable 0 +wait 4521; sm_cvar sv_pausable_dev 0 +wait 4524; sm_cvar sv_pausable_dev_ds 0 +wait 4527; sm_cvar sv_permawipe 0 +wait 4530; sm_cvar sv_player_max_separation_force 0 +wait 4533; sm_cvar sv_player_stuck_tolerance 3 +wait 4536; sm_cvar sv_playerperfhistorycount 0 +wait 4539; sm_cvar sv_prop_door_max_close_attempts 20 +wait 4542; sm_cvar sv_pure_kick_clients 0 +// wait 4545; sm_cvar sv_pure_trace 0 +wait 4548; sm_cvar sv_pushaway_clientside 2 +wait 4551; sm_cvar sv_pushaway_clientside_size 10 +// wait 4554; sm_cvar sv_pushaway_force 300000 +// wait 4557; sm_cvar sv_pushaway_max_force 2000 +// wait 4560; sm_cvar sv_pushaway_max_player_force 10000 +// wait 4563; sm_cvar sv_pushaway_min_force 500 +wait 4566; sm_cvar sv_pushaway_min_player_speed 80 +// wait 4569; sm_cvar sv_pushaway_player_force 200000 +wait 4572; sm_cvar sv_pvsskipanimation 0 +wait 4575; sm_cvar sv_pz_endgame_vote_period 15 +wait 4578; sm_cvar sv_pz_endgame_vote_post_period 3 +wait 4581; sm_cvar sv_quota_stringcmdspersecond 2147483647 +wait 4584; sm_cvar sv_ragdoll_maxcount 32767 +wait 4587; sm_cvar sv_ragdoll_maxcount_boss 32767 +wait 4590; sm_cvar sv_ragdoll_maxcount_generic 32767 +wait 4593; sm_cvar sv_ragdoll_maxcount_gib 32767 +wait 4596; sm_cvar sv_ragdoll_maxcount_special 32767 +wait 4599; sm_cvar sv_ragdoll_maxcount_survivor 32767 +// wait 4602; sm_cvar sv_ragdoll_version 1 +wait 4605; sm_cvar sv_rcon_banpenalty 0 +wait 4608; sm_cvar sv_rcon_log 0 +wait 4611; sm_cvar sv_rcon_maxfailures 20 +wait 4614; sm_cvar sv_rcon_minfailures 20 +wait 4617; sm_cvar sv_rcon_minfailuretime 1 +// wait 4620; sm_cvar sv_regeneration_force_on 0 +wait 4623; sm_cvar sv_regeneration_wait_time 0 +wait 4626; sm_cvar sv_region 0 +// wait 4629; sm_cvar sv_rescue_disabled 0 +wait 4632; sm_cvar sv_reservation_grace 3 +wait 4635; sm_cvar sv_reservation_timeout 5 +wait 4638; sm_cvar sv_rollangle 0.3 +wait 4641; sm_cvar sv_rollspeed 450 +wait 4644; sm_cvar sv_runcmds 1 +wait 4647; sm_cvar sv_script_think_interval 0 +wait 4650; sm_cvar sv_search_key "bizzymod" +// wait 4653; sm_cvar sv_sendtables 0 +// wait 4656; sm_cvar sv_show_whitelist_msg 0 +// wait 4659; sm_cvar sv_showanimstate -1 +// wait 4662; sm_cvar sv_showanimstate_activities 1 +// wait 4665; sm_cvar sv_showanimstate_log 0 +// wait 4668; sm_cvar sv_showdamage 0 +// wait 4671; sm_cvar sv_showdebugtracers 0 +// wait 4674; sm_cvar sv_showfootsteps 0 +// wait 4677; sm_cvar sv_showhitboxes -1 +// wait 4680; sm_cvar sv_showimpacts 0 +// wait 4683; sm_cvar sv_showladders 0 +// wait 4686; sm_cvar sv_showlagcompensation 0 +// wait 4689; sm_cvar sv_showonlyhitbox -1 +// wait 4692; sm_cvar sv_showplayerhitboxes 0 +// wait 4695; sm_cvar sv_showprecachedsounds 0 +// wait 4698; sm_cvar sv_skyname "sky_l4d_c1_1_hdr" +// wait 4701; sm_cvar sv_sound_discardextraunreliable 1 +// wait 4704; sm_cvar sv_soundemitter_trace -1 +// wait 4707; sm_cvar sv_specaccelerate 5 +// wait 4710; sm_cvar sv_specnoclip 1 +// wait 4713; sm_cvar sv_specspeed 3 +wait 4716; sm_cvar sv_spectatoridletime 5 +wait 4719; sm_cvar sv_stats 0 +wait 4722; sm_cvar sv_steamgroup "38693222" +wait 4725; sm_cvar sv_steamgroup_exclusive 1 +wait 4728; sm_cvar sv_stepsize 17 +wait 4731; sm_cvar sv_stopspeed 80 +// wait 4734; sm_cvar sv_stressbots 0 +// wait 4737; sm_cvar sv_strict_notarget 0 +// wait 4740; sm_cvar sv_suppress_viewpunch 0 +// wait 4743; sm_cvar sv_sync_anims_spawn 0 +// wait 4746; sm_cvar sv_sync_client_updates 0 +wait 4749; sm_cvar sv_tags "coop,realism,secure,versus" +// wait 4752; sm_cvar sv_tankpropfade 1 +wait 4755; sm_cvar sv_teststepsimulation 0 +// wait 4758; sm_cvar sv_thinktimecheck 0 +// wait 4761; sm_cvar sv_threaded_init 0 +wait 4764; sm_cvar sv_timeout 86400 +wait 4767; sm_cvar sv_tracereffects_limit_general 2147483647 +// wait 4770; sm_cvar sv_turbophysics 1 +// wait 4773; sm_cvar sv_turbophysics_shadow 0 +// wait 4776; sm_cvar sv_unlag 1 +// wait 4779; sm_cvar sv_unlag_debug 0 +wait 4782; sm_cvar sv_unlag_fixstuck 1 +wait 4785; sm_cvar sv_unlockedchapters 2147483647 +// wait 4788; sm_cvar sv_useexplicitdelete 1 +wait 4791; sm_cvar sv_vehicle_autoaim_scale 10.0 +wait 4794; sm_cvar sv_visiblemaxplayers 8 +wait 4797; sm_cvar sv_voicecodec "vaudio_celt" +wait 4800; sm_cvar sv_voiceenable 1 +wait 4803; sm_cvar sv_vote_command_delay 1.5 +wait 4806; sm_cvar sv_vote_creation_timer 0 +// wait 4809; sm_cvar sv_vote_failure_timer 0 +wait 4812; sm_cvar sv_vote_issue_change_difficulty_allowed 1 +wait 4815; sm_cvar sv_vote_issue_change_map_later_allowed 1 +wait 4818; sm_cvar sv_vote_issue_change_map_now_allowed 1 +wait 4821; sm_cvar sv_vote_issue_change_mission_allowed 1 +wait 4824; sm_cvar sv_vote_issue_kick_allowed 1 +wait 4827; sm_cvar sv_vote_issue_restart_game_allowed 1 +wait 4830; sm_cvar sv_vote_kick_ban_duration 1 +wait 4833; sm_cvar sv_vote_plr_map_limit 2147483647 +// wait 4836; sm_cvar sv_vote_show_caller 1 +wait 4839; sm_cvar sv_vote_timer_duration 12 +wait 4842; sm_cvar sv_wateraccelerate 20 +wait 4845; sm_cvar sv_waterdist 0 +wait 4848; sm_cvar sv_waterfriction 0 +// wait 4851; sm_cvar sv_zombie_touch_trigger_delay 0.5 +// wait 4854; sm_cvar sv_zoo_model_filter "" +// wait 4857; sm_cvar sv_zoo_spacing 64 +// wait 4860; sm_cvar sv_zoo_spacing_rows 192 +// wait 4863; sm_cvar sv_zoo_spacing_wrap 80 +// wait 4866; sm_cvar sv_zoo_tint_clr "153 153 153 255" +// wait 4869; sm_cvar sv_zoo_tint_loop 1 +// wait 4872; sm_cvar sv_zoo_wrap_skin 1 +wait 4875; sm_cvar sys_minidumpexpandedspew 0 +wait 4878; sm_cvar sys_minidumpspewlines 0 +wait 4881; sm_cvar tank_attack_range 60 +// wait 4884; sm_cvar tank_auto_swing 0 +wait 4887; sm_cvar tank_burn_duration 90 +wait 4890; sm_cvar tank_burn_duration_expert 90 +wait 4893; sm_cvar tank_burn_duration_hard 90 +wait 4896; sm_cvar tank_fist_radius 16 +wait 4899; sm_cvar tank_ground_pound_duration 2 +wait 4902; sm_cvar tank_ground_pound_reveal_distance 800 +wait 4905; sm_cvar tank_pz_forward 0.0 +// wait 4908; sm_cvar tank_raffle_debug 0 +wait 4911; sm_cvar tank_rock_overhead_percent 100 +wait 4914; sm_cvar tank_run_spawn_delay 10 +wait 4917; sm_cvar tank_stasis_time_suicide 86400 +// wait 4920; sm_cvar tank_stuck_failsafe 1 +wait 4923; sm_cvar tank_stuck_time_choose_new_target 0.5 +wait 4926; sm_cvar tank_stuck_time_suicide 86400 +wait 4929; sm_cvar tank_stuck_visibility_tolerance_choose_new_target 0.5 +wait 4932; sm_cvar tank_stuck_visibility_tolerance_suicide 86400 +// wait 4935; sm_cvar tank_swing_arc 180 +// wait 4938; sm_cvar tank_swing_duration 0.2 +wait 4941; sm_cvar tank_swing_fast_interval 1.4 +wait 4944; sm_cvar tank_swing_interval 1.45 +wait 4947; sm_cvar tank_swing_miss_interval 1.4 +wait 4950; sm_cvar tank_swing_physics_prop_force 3.0 +wait 4953; sm_cvar tank_swing_range 60 +wait 4956; sm_cvar tank_swing_yaw 100 +wait 4959; sm_cvar tank_throw_aim_error 0 +wait 4962; sm_cvar tank_throw_allow_range 600 +wait 4965; sm_cvar tank_throw_lead_time_factor 0.25 +wait 4968; sm_cvar tank_throw_loft_rate 0.015 +// wait 4971; sm_cvar tank_throw_max_loft_angle 30 +// wait 4974; sm_cvar tank_throw_min_interval 8 +wait 4977; sm_cvar tank_visibility_tolerance_suicide 86400 +wait 4980; sm_cvar tank_windup_time 0.475 +// wait 4983; sm_cvar target_scan_use_query_cache 1 +wait 4986; sm_cvar tauntfrequency 0 +// wait 4989; sm_cvar telemetry_demoend 0 +// wait 4992; sm_cvar telemetry_demostart 0 +// wait 4995; sm_cvar telemetry_filtervalue 500 +// wait 4998; sm_cvar telemetry_framecount 0 +// wait 5001; sm_cvar telemetry_level 0 +// wait 5004; sm_cvar telemetry_pause 0 +// wait 5007; sm_cvar telemetry_resume 0 +// wait 5010; sm_cvar telemetry_server "74.91.113.130" +// wait 5013; sm_cvar template_debug 0 +wait 5016; sm_cvar terror_ammo_multiplier 1.0 +// wait 5019; sm_cvar testscript_debug 0 +wait 5022; sm_cvar tf_arena_max_streak 10 +wait 5025; sm_cvar tf_arena_preround_time 5 +// wait 5028; sm_cvar tf_arena_round_time 0 +// wait 5031; sm_cvar tf_escort_score_rate 1 +wait 5034; sm_cvar think_limit 0 +// wait 5037; sm_cvar threadpool_affinity 1 +// wait 5040; sm_cvar threadpool_reserve 0 +// wait 5043; sm_cvar tongue_allow_voluntary_release 0 +wait 5046; sm_cvar tongue_bend_point_deflection 4 +// wait 5049; sm_cvar tongue_bend_point_needs_LOS 0 +wait 5052; sm_cvar tongue_break_from_damage_amount 1000 +wait 5055; sm_cvar tongue_bullet_radius 8 +wait 5058; sm_cvar tongue_choke_damage_amount 6 +wait 5061; sm_cvar tongue_choke_damage_interval 0.5 +// wait 5064; sm_cvar tongue_cone_start_tolerance 0.1 +// wait 5067; sm_cvar tongue_debug 0 +wait 5070; sm_cvar tongue_drag_damage_amount 4 +wait 5073; sm_cvar tongue_dropping_to_ground_time 0.5 +wait 5076; sm_cvar tongue_fly_speed 1100 +// wait 5079; sm_cvar tongue_force_break 0 +wait 5082; sm_cvar tongue_gravity_force 5000 +wait 5085; sm_cvar tongue_health 250 +wait 5088; sm_cvar tongue_hit_delay 10 +wait 5091; sm_cvar tongue_los_forgiveness_time 2 +wait 5094; sm_cvar tongue_miss_delay 2.5 +// wait 5097; sm_cvar tongue_no_progress_break_interval 10 +wait 5100; sm_cvar tongue_no_progress_choke_early_ambush_delay 0.5 +wait 5103; sm_cvar tongue_no_progress_choke_early_delay 0.5 +wait 5106; sm_cvar tongue_no_progress_choke_time 0.25 +wait 5109; sm_cvar tongue_no_progress_damage_interval 0.25 +wait 5112; sm_cvar tongue_no_progress_tolerance 10 +wait 5115; sm_cvar tongue_player_dropping_to_ground_time 0.5 +wait 5118; sm_cvar tongue_range 900 +wait 5121; sm_cvar tongue_release_fatigue_penalty 2750 +wait 5124; sm_cvar tongue_start_pull_delay 0 +// wait 5127; sm_cvar tongue_unbend 1 +wait 5130; sm_cvar tongue_vertical_choke_dot 0.0 +wait 5133; sm_cvar tongue_vertical_choke_height 50 +wait 5136; sm_cvar tongue_vertical_choke_time_off_ground 0.375 +wait 5139; sm_cvar tongue_victim_acceleration 10 +wait 5142; sm_cvar tongue_victim_accuracy_penalty 0.0 +wait 5145; sm_cvar tongue_victim_max_speed 200 +wait 5148; sm_cvar tongue_vs_cone_start_tolerance 0.01 +wait 5151; sm_cvar tp_schedule_post_think 0 +// wait 5154; sm_cvar trace_report 0 +// wait 5157; sm_cvar tutor 0 +// wait 5160; sm_cvar tv_allow_camera_man 1 +// wait 5163; sm_cvar tv_allow_static_shots 1 +// wait 5166; sm_cvar tv_autorecord 0 +wait 5169; sm_cvar tv_autoretry 0 +// wait 5172; sm_cvar tv_chatgroupsize 0 +wait 5175; sm_cvar tv_chattimelimit 0 +// wait 5178; sm_cvar tv_debug 0 +wait 5181; sm_cvar tv_delay 0 +// wait 5184; sm_cvar tv_delaymapchange 0 +// wait 5187; sm_cvar tv_deltacache 2 +// wait 5190; sm_cvar tv_dispatchmode 1 +// wait 5193; sm_cvar tv_enable 0 +wait 5196; sm_cvar tv_maxclients 32 +wait 5199; sm_cvar tv_maxrate 36000 +wait 5202; sm_cvar tv_name "" +// wait 5205; sm_cvar tv_overridemaster 0 +wait 5208; sm_cvar tv_password "" +// wait 5211; sm_cvar tv_port 27020 +wait 5214; sm_cvar tv_relaypassword "" +// wait 5217; sm_cvar tv_relayvoice 1 +wait 5220; sm_cvar tv_snapshotrate 10 +wait 5223; sm_cvar tv_timeout 0 +wait 5226; sm_cvar tv_title "" +// wait 5229; sm_cvar tv_transmitall 0 +wait 5232; sm_cvar upgrade_explosive_bullet_force 10 +wait 5235; sm_cvar upgrade_explosive_slug_force 20 +wait 5238; sm_cvar upgrade_laser_sight_spread_factor 0.5 +wait 5241; sm_cvar upgrade_pack_use_duration 1.5 +// wait 5244; sm_cvar upgrade_show_explosive_ammo_radius 0 +wait 5247; sm_cvar upgradepack_forward_dist 16 +wait 5250; sm_cvar upgradepack_max_drop_dist 0 +// wait 5253; sm_cvar vcr_verbose 0 +wait 5256; sm_cvar versus_boss_buffer 2000 +// wait 5259; sm_cvar versus_boss_debug 0 +wait 5262; sm_cvar versus_boss_flow_max 0.7 +wait 5265; sm_cvar versus_boss_flow_max_finale 0.9 +wait 5268; sm_cvar versus_boss_flow_max_intro 0.8 +wait 5271; sm_cvar versus_boss_flow_min 0.1 +wait 5274; sm_cvar versus_boss_flow_min_finale 0.3 +wait 5277; sm_cvar versus_boss_flow_min_intro 0.2 +wait 5280; sm_cvar versus_boss_padding_max 0.0 +wait 5283; sm_cvar versus_boss_padding_min 0.0 +wait 5286; sm_cvar versus_force_start_time 180 +wait 5289; sm_cvar versus_level_restart_delay 5 +wait 5292; sm_cvar versus_marker_num 0 +wait 5295; sm_cvar versus_round_restarttimer 20 +wait 5298; sm_cvar versus_round_restarttimer_finale 20 +// wait 5301; sm_cvar versus_shove_hunter_fov 90 +// wait 5304; sm_cvar versus_shove_hunter_fov_pouncing 45 +// wait 5307; sm_cvar versus_shove_jockey_fov_leaping 45 +// wait 5310; sm_cvar versus_special_respawn_interval 20 +wait 5313; sm_cvar versus_tank_chance 1.0 +wait 5316; sm_cvar versus_tank_chance_finale 1.0 +wait 5319; sm_cvar versus_tank_chance_intro 1.0 +wait 5322; sm_cvar versus_tank_flow_team_variation 0.0 +wait 5325; sm_cvar versus_wandering_zombie_density 0.03 +// wait 5328; sm_cvar versus_winning_team_goes_last 1 +wait 5331; sm_cvar versus_witch_chance 0.0 +wait 5334; sm_cvar versus_witch_chance_finale 0.0 +wait 5337; sm_cvar versus_witch_chance_intro 0.0 +wait 5340; sm_cvar versus_witch_flow_team_variation 0.0 +wait 5343; sm_cvar view_offset 0 +wait 5346; sm_cvar view_offset_down 0 +wait 5349; sm_cvar view_offset_forward 0 +wait 5352; sm_cvar view_offset_up 0 +// wait 5355; sm_cvar violence_ablood 1 +// wait 5358; sm_cvar violence_agibs 1 +// wait 5361; sm_cvar violence_hblood 1 +// wait 5364; sm_cvar violence_hgibs 1 +// wait 5367; sm_cvar vis_debug 0 +// wait 5370; sm_cvar vis_force 0 +// wait 5373; sm_cvar vismon_poll_frequency 0.5 +// wait 5376; sm_cvar vismon_trace_limit 10 +// wait 5379; sm_cvar voice_inputfromfile 0 +// wait 5382; sm_cvar voice_recordtofile 0 +// wait 5385; sm_cvar voice_serverdebug 0 +// wait 5388; sm_cvar voice_xsend_debug 0 +wait 5391; sm_cvar vomitjar_duration_infected_bot 30 +wait 5394; sm_cvar vomitjar_duration_infected_pz 30 +wait 5397; sm_cvar vomitjar_duration_survivor 15 +wait 5400; sm_cvar vomitjar_radius 250 +// wait 5403; sm_cvar vomitjar_radius_survivors 0 +// wait 5406; sm_cvar vprof_counters 0 +// wait 5409; sm_cvar vprof_counters_show_minmax 0 +// wait 5412; sm_cvar vprof_dump_oninterval 0 +// wait 5415; sm_cvar vprof_dump_spikes 0 +// wait 5418; sm_cvar vprof_dump_spikes_budget_group "" +// wait 5421; sm_cvar vprof_dump_spikes_hiearchy 0 +// wait 5424; sm_cvar vprof_dump_spikes_node "" +// wait 5427; sm_cvar vprof_dump_spikes_terse 0 +// wait 5430; sm_cvar vprof_scope_entity_gamephys 0 +// wait 5433; sm_cvar vprof_scope_entity_thinks 0 +wait 5436; sm_cvar vprof_server_spike_threshold 999 +// wait 5439; sm_cvar vprof_server_thread 0 +// wait 5442; sm_cvar vprof_think_limit 0 +wait 5445; sm_cvar vs_defib_penalty 0 +wait 5448; sm_cvar vs_incap_bonus 25 +wait 5451; sm_cvar vs_max_team_switches 2147483647 +wait 5454; sm_cvar vs_score_pp_health 1.0 +wait 5457; sm_cvar vs_score_pp_healthbuffer 1.0 +// wait 5460; sm_cvar vs_survival_bonus 25 +wait 5463; sm_cvar vs_survivor_damage_reduction 1.0 +// wait 5466; sm_cvar vs_tank_damage 24 +wait 5469; sm_cvar vs_threat_initial_distance_first_map_max 8000 +wait 5472; sm_cvar vs_threat_initial_distance_first_map_min 2000 +// wait 5475; sm_cvar vs_threat_initial_distance_max 8000 +wait 5478; sm_cvar vs_threat_initial_distance_min 2000 +wait 5481; sm_cvar vs_threat_radius 150 +wait 5484; sm_cvar vs_tiebreak_bonus 0 +// wait 5487; sm_cvar weapon_showproficiency 0 +// wait 5490; sm_cvar witch_force_wander 0 +wait 5493; sm_cvar witch_rage_ramp_duration 3 +// wait 5496; sm_cvar workshop_filter_items_by_history 0 +// wait 5499; sm_cvar xbox_autothrottle 1 +// wait 5502; sm_cvar xbox_steering_deadzone 0.0 +// wait 5505; sm_cvar xbox_throttlebias 100 +// wait 5508; sm_cvar xbox_throttlespoof 200 +// wait 5511; sm_cvar xc_crouch_debounce 0 +wait 5514; sm_cvar z_acquire_far_range 2000 +wait 5517; sm_cvar z_acquire_far_time 1 +wait 5520; sm_cvar z_acquire_near_range 100 +wait 5523; sm_cvar z_acquire_near_time 0.5 +wait 5526; sm_cvar z_acquire_time_variance_factor 0.0 +wait 5529; sm_cvar z_added_light_max 0.5 +wait 5532; sm_cvar z_added_light_min 0.05 +wait 5535; sm_cvar z_alert_dot 0.0 +// wait 5538; sm_cvar z_alert_range 1000 +// wait 5541; sm_cvar z_allow_ai_to_use_abilities 1 +wait 5544; sm_cvar z_anim_idle_speed_max 80 +wait 5547; sm_cvar z_anim_idle_speed_min 0 +wait 5550; sm_cvar z_attack_change_target_range 40 +wait 5553; sm_cvar z_attack_flow_range 2000 +wait 5556; sm_cvar z_attack_incapacitated_damage 3 +wait 5559; sm_cvar z_attack_infected_it_damage 5 +wait 5562; sm_cvar z_attack_interval 0.666667 +wait 5565; sm_cvar z_attack_max_range 40 +wait 5568; sm_cvar z_attack_min_range 20 +wait 5571; sm_cvar z_attack_movement_penalty 0.7 +wait 5574; sm_cvar z_attack_on_the_run_range 40 +wait 5577; sm_cvar z_attack_pz_it_damage 100 +wait 5580; sm_cvar z_attention_range_lying_modifier 1.0 +wait 5583; sm_cvar z_attention_range_sitting_modifier 1.0 +wait 5586; sm_cvar z_avoid_max_range 40 +wait 5589; sm_cvar z_avoid_min_range 20 +wait 5592; sm_cvar z_avoid_power 20 +wait 5595; sm_cvar z_avoidforce 0 +// wait 5598; sm_cvar z_avoidteammates 1 +// wait 5601; sm_cvar z_award_debug 0 +wait 5604; sm_cvar z_background_limit 40 +wait 5607; sm_cvar z_backspeed 500 +// wait 5610; sm_cvar z_bbq_min 0.0 +wait 5613; sm_cvar z_bbq_rate 0.0 +// wait 5616; sm_cvar z_boomer_limit 1 +wait 5619; sm_cvar z_boomer_near_dist 10000 +// wait 5622; sm_cvar z_boss_crouch 0 +// wait 5625; sm_cvar z_boundary_clear_type 1 +wait 5628; sm_cvar z_boundary_max_range 10000 +wait 5631; sm_cvar z_boundary_spread_speed 1000 +wait 5634; sm_cvar z_brawl_chance 0 +wait 5637; sm_cvar z_breakable_damage 25 +wait 5640; sm_cvar z_burn_max 0.0 +wait 5643; sm_cvar z_burn_rate 0.0 +wait 5646; sm_cvar z_burning_lifetime 15 +wait 5649; sm_cvar z_carry_max_mass 100 +wait 5652; sm_cvar z_chance 100 +// wait 5655; sm_cvar z_charge_duration 2.5 +wait 5658; sm_cvar z_charge_impact_angle 0.4 +wait 5661; sm_cvar z_charge_impact_radius 150 +// wait 5664; sm_cvar z_charge_interval 12 +// wait 5667; sm_cvar z_charge_max_damage 10 +// wait 5670; sm_cvar z_charge_max_force 800 +// wait 5673; sm_cvar z_charge_max_speed 500 +wait 5676; sm_cvar z_charge_min_force 600 +wait 5679; sm_cvar z_charge_prop_damage 1000 +wait 5682; sm_cvar z_charge_start_speed 300 +// wait 5685; sm_cvar z_charge_tooshort 0 +// wait 5688; sm_cvar z_charge_warmup 0.5 +// wait 5691; sm_cvar z_charger_allow_shove 0 +// wait 5694; sm_cvar z_charger_health 600 +wait 5697; sm_cvar z_charger_impact_epsilon 0 +// wait 5700; sm_cvar z_charger_limit 1 +wait 5703; sm_cvar z_charger_max_prop_force 1000 +// wait 5706; sm_cvar z_charger_pound_dmg 15 +wait 5709; sm_cvar z_charger_probe_alone 20 +wait 5712; sm_cvar z_charger_probe_attack 20 +// wait 5715; sm_cvar z_checkpoint_debug 0 +wait 5718; sm_cvar z_claw_hit_pitch_max 12.5 +wait 5721; sm_cvar z_claw_hit_pitch_min -12.5 +wait 5724; sm_cvar z_claw_hit_yaw_max 12.5 +wait 5727; sm_cvar z_claw_hit_yaw_min -12.5 +wait 5730; sm_cvar z_clear_area_range 500 +wait 5733; sm_cvar z_clear_max_time 1 +wait 5736; sm_cvar z_clear_min_time 0.1 +wait 5739; sm_cvar z_clear_min_time_range 500 +wait 5742; sm_cvar z_clear_range 1000 +wait 5745; sm_cvar z_close_target_notice_distance 40 +wait 5748; sm_cvar z_common_limit 40 +wait 5751; sm_cvar z_cooldown_spawn_safety_range 150 +wait 5754; sm_cvar z_cough_cloud_expire 6 +// wait 5757; sm_cvar z_cough_cloud_initial_cough_delay 0 +wait 5760; sm_cvar z_cough_cloud_radius 150 +// wait 5763; sm_cvar z_credits_interval 0 +wait 5766; sm_cvar z_crouch_speed 90 +wait 5769; sm_cvar z_cull_timeout 4 +wait 5772; sm_cvar z_damage_screen_fade_alpha 32 +wait 5775; sm_cvar z_damage_screen_fade_duration 0.666667 +wait 5778; sm_cvar z_deafen_radius_one 50 +wait 5781; sm_cvar z_deafen_radius_three 150 +wait 5784; sm_cvar z_deafen_radius_two 100 +// wait 5787; sm_cvar z_debug 0 +// wait 5790; sm_cvar z_debug_avoid 0 +// wait 5793; sm_cvar z_debug_breakables 0 +// wait 5796; sm_cvar z_debug_climb 0 +// wait 5799; sm_cvar z_debug_cull "" +// wait 5802; sm_cvar z_debug_escape_route 0 +// wait 5805; sm_cvar z_debug_escape_scan 0 +// wait 5808; sm_cvar z_debug_falling_damage 0 +// wait 5811; sm_cvar z_debug_fog 0 +// wait 5814; sm_cvar z_debug_infected_server_anim 0 +// wait 5817; sm_cvar z_debug_ledges 0 +// wait 5820; sm_cvar z_debug_mob_spawn 0 +// wait 5823; sm_cvar z_debug_neighbors 0 +// wait 5826; sm_cvar z_debug_population 0 +// wait 5829; sm_cvar z_debug_shared_random 0 +// wait 5832; sm_cvar z_debug_spawn_ahead 0 +// wait 5835; sm_cvar z_debug_spawn_set -1 +// wait 5838; sm_cvar z_debug_spawnable_areas 0 +// wait 5841; sm_cvar z_debug_stuck "" +// wait 5844; sm_cvar z_debug_tank_spawn 1 +wait 5847; sm_cvar z_density_region_length 2000 +// wait 5850; sm_cvar z_destroy_on_attack 0 +wait 5853; sm_cvar z_difficulty "Impossible" +wait 5856; sm_cvar z_director_special_spawn_delay 0 +wait 5859; sm_cvar z_discard_min_range 0 +wait 5862; sm_cvar z_discard_range 2000 +// wait 5865; sm_cvar z_do_tracers 1 +// wait 5868; sm_cvar z_dont_clear 0 +wait 5871; sm_cvar z_door_pound_damage 1000 +wait 5874; sm_cvar z_door_reopen_interval 0.1 +// wait 5877; sm_cvar z_door_retry_interval 1 +// wait 5880; sm_cvar z_experimental_blast_damage_probability 100 +wait 5883; sm_cvar z_exploding_force 1000 +// wait 5886; sm_cvar z_exploding_health 50 +wait 5889; sm_cvar z_exploding_inner_radius 200 +wait 5892; sm_cvar z_exploding_outer_radius 225 +wait 5895; sm_cvar z_exploding_shove_interval 4 +wait 5898; sm_cvar z_exploding_shove_max 3 +wait 5901; sm_cvar z_exploding_shove_min 3 +wait 5904; sm_cvar z_exploding_speed 200 +wait 5907; sm_cvar z_exploding_splat 0 +wait 5910; sm_cvar z_exploding_splat_radius 300 +// wait 5913; sm_cvar z_expressions 1 +wait 5916; sm_cvar z_fallen_kill_suppress_time 120 +// wait 5919; sm_cvar z_fallen_max_count 1 +wait 5922; sm_cvar z_falling_land_forward_speed 400 +wait 5925; sm_cvar z_falling_land_hard_speed 400 +wait 5928; sm_cvar z_falling_land_speed 400 +// wait 5931; sm_cvar z_fatal_blast_incineration_probability 0 +wait 5934; sm_cvar z_fatal_blast_max_ragdolls 40 +wait 5934; sm_cvar z_fatal_blast_max_ragdolls 1 +wait 5937; sm_cvar z_female_boomer_spawn_chance 50 +// wait 5940; sm_cvar z_finale_chance 100 +// wait 5943; sm_cvar z_finale_ghost_player_spawn_on_survivor 1 +wait 5946; sm_cvar z_finale_spawn_mob_safety_range 300 +wait 5949; sm_cvar z_finale_spawn_safety_range 150 +// wait 5952; sm_cvar z_finale_spawn_safety_range_overrid 0 +wait 5955; sm_cvar z_finale_spawn_tank_safety_range 300 +wait 5958; sm_cvar z_fog_spawn 1 +wait 5961; sm_cvar z_force_attack_from_sound_range 1000 +// wait 5964; sm_cvar z_forcezombiemodel 0 +// wait 5967; sm_cvar z_forcezombiemodelname "common_male01" +wait 5970; sm_cvar z_forwardspeed 500 +// wait 5973; sm_cvar z_friendly_fire_forgiveness 1 +// wait 5976; sm_cvar z_frustration 1 +// wait 5979; sm_cvar z_frustration_lifetime 20 +wait 5982; sm_cvar z_frustration_los_delay 0.5 +wait 5985; sm_cvar z_frustration_spawn_delay 20 +// wait 5988; sm_cvar z_gas_health 250 +wait 5991; sm_cvar z_gas_speed 220 +// wait 5994; sm_cvar z_ghost_ahead_flow 500 +wait 5997; sm_cvar z_ghost_checkpoint_spawn_interval 10 +// wait 6000; sm_cvar z_ghost_cooldown 0 +wait 6003; sm_cvar z_ghost_delay_max 18 +wait 6006; sm_cvar z_ghost_delay_min 18 +wait 6009; sm_cvar z_ghost_delay_minspawn 1 +// wait 6012; sm_cvar z_ghost_duration 1 +wait 6015; sm_cvar z_ghost_finale_spawn_interval 10 +wait 6018; sm_cvar z_ghost_friction 1.25 +// wait 6021; sm_cvar z_ghost_group_spawn 1 +// wait 6024; sm_cvar z_ghost_line_of_scrimmage_far 2000 +// wait 6027; sm_cvar z_ghost_line_of_scrimmage_near 1000 +// wait 6030; sm_cvar z_ghost_line_of_scrimmage_safety 10 +// wait 6033; sm_cvar z_ghost_line_of_scrimmage_threat_bonus 1000 +// wait 6036; sm_cvar z_ghost_los_expected_progress 1000 +// wait 6039; sm_cvar z_ghost_offer_acceptance_time 0 +wait 6042; sm_cvar z_ghost_offer_spawn_safety_time 10 +// wait 6045; sm_cvar z_ghost_runner_spawn_multiplier 0.5 +// wait 6048; sm_cvar z_ghost_runner_spawn_multiplier_dist 3000 +// wait 6051; sm_cvar z_ghost_spawn_distance 300 +// wait 6054; sm_cvar z_ghost_spawn_in_start 0 +wait 6057; sm_cvar z_ghost_spawn_interval 10 +// wait 6060; sm_cvar z_ghost_speed 450 +wait 6063; sm_cvar z_ghost_travel_distance 0 +wait 6066; sm_cvar z_gib_explosion_force_factor 0.05 +wait 6069; sm_cvar z_gib_force_factor 5.0 +// wait 6072; sm_cvar z_grab_force 0 +// wait 6075; sm_cvar z_grab_ledges_solo 0 +wait 6078; sm_cvar z_gun_damage 5 +// wait 6081; sm_cvar z_gun_debug_player_index 0 +// wait 6084; sm_cvar z_gun_debug_spread 0 +wait 6087; sm_cvar z_gun_force 100 +// wait 6090; sm_cvar z_gun_horiz_punch 0 +// wait 6093; sm_cvar z_gun_kick 0 +wait 6096; sm_cvar z_gun_physics_force 10 +wait 6099; sm_cvar z_gun_range 80 +wait 6102; sm_cvar z_gun_stun_duration 1 +wait 6105; sm_cvar z_gun_survivor_force 100 +wait 6108; sm_cvar z_gun_survivor_friend_push 0 +wait 6111; sm_cvar z_gun_survivor_shove_dot 1.0 +wait 6114; sm_cvar z_gun_swing_coop_max_penalty 2147483647 +wait 6117; sm_cvar z_gun_swing_coop_min_penalty 2147483647 +wait 6120; sm_cvar z_gun_swing_duration 0.183333 +wait 6123; sm_cvar z_gun_swing_interval 0.666667 +wait 6126; sm_cvar z_gun_swing_vs_amt_penalty 0.666667 +wait 6129; sm_cvar z_gun_swing_vs_cooldown 0.666667 +wait 6132; sm_cvar z_gun_swing_vs_max_penalty 2147483647 +wait 6135; sm_cvar z_gun_swing_vs_min_penalty 2147483647 +wait 6138; sm_cvar z_gun_swing_vs_restore_time 0.666667 +// wait 6141; sm_cvar z_gun_vertical_punch 1 +wait 6144; sm_cvar z_head_damage_causes_wounds 1 +wait 6147; sm_cvar z_health 75 +wait 6150; sm_cvar z_hear_gunfire_range 500 +wait 6153; sm_cvar z_hear_runner_far_range 1000 +// wait 6156; sm_cvar z_hear_runner_near_range 500 +// wait 6159; sm_cvar z_hit_chainsawer_factor 0.5 +wait 6162; sm_cvar z_hit_from_behind_cosine 1.0 +wait 6165; sm_cvar z_hit_from_behind_factor 1.0 +wait 6168; sm_cvar z_hit_incap_factor_easy 1.0 +wait 6171; sm_cvar z_hit_incap_factor_expert 2.0 +// wait 6174; sm_cvar z_hit_incap_factor_hard 1.0 +// wait 6177; sm_cvar z_hit_incap_factor_normal 1.0 +wait 6180; sm_cvar z_holiday_gift_drop_chance 1.0 +wait 6183; sm_cvar z_hunter_ground_normal 0.1 +// wait 6186; sm_cvar z_hunter_health 250 +// wait 6189; sm_cvar z_hunter_limit 1 +wait 6192; sm_cvar z_hunter_lunge_distance 800 +wait 6195; sm_cvar z_hunter_lunge_pitch 30 +wait 6198; sm_cvar z_hunter_lunge_stagger_time 0.5 +// wait 6201; sm_cvar z_hunter_max_pounce_bonus_damage 24 +wait 6204; sm_cvar z_hunter_speed 280 +// wait 6207; sm_cvar z_infected_damage_cutouts 1 +// wait 6210; sm_cvar z_Infected_debug 0 +// wait 6213; sm_cvar z_infected_flashlight 1 +// wait 6216; sm_cvar z_infected_invuln 0 +// wait 6219; sm_cvar z_infected_move 1 +// wait 6222; sm_cvar z_infected_tinting 1 +// wait 6225; sm_cvar z_jockey_area_current_factor 1.0 +wait 6228; sm_cvar z_jockey_area_hazard_bonus 3000 +// wait 6231; sm_cvar z_jockey_area_range_factor 2.0 +wait 6234; sm_cvar z_jockey_area_visibility_factor 500 +// wait 6237; sm_cvar z_jockey_blend_rate 1.0 +wait 6240; sm_cvar z_jockey_control_max 1.0 +// wait 6243; sm_cvar z_jockey_control_min 0.8 +wait 6246; sm_cvar z_jockey_control_variance 0.0 +// wait 6249; sm_cvar z_jockey_debug 0 +wait 6252; sm_cvar z_jockey_health 350 +wait 6255; sm_cvar z_jockey_leap_again_timer 4 +wait 6258; sm_cvar z_jockey_leap_range 250 +wait 6261; sm_cvar z_jockey_leap_time 0.9 +// wait 6264; sm_cvar z_jockey_limit 1 +wait 6267; sm_cvar z_jockey_lookahead 500 +wait 6270; sm_cvar z_jockey_min_ledge_distance 250 +// wait 6273; sm_cvar z_jockey_min_mounted_speed 0.6 +// wait 6276; sm_cvar z_jockey_pounced_surv_bark 1 +wait 6279; sm_cvar z_jockey_ride_damage 3 +wait 6282; sm_cvar z_jockey_ride_damage_delay 0.0 +// wait 6285; sm_cvar z_jockey_ride_damage_interval 0.5 +wait 6288; sm_cvar z_jockey_ride_hazard_scan_distance 500 +wait 6291; sm_cvar z_jockey_ride_scan_distance 1000 +wait 6294; sm_cvar z_jockey_ride_scan_interval 1 +wait 6297; sm_cvar z_jockey_speed 280 +// wait 6300; sm_cvar z_jockey_speed_blend 2.0 +// wait 6303; sm_cvar z_jockey_stagger_amount 0.0 +// wait 6306; sm_cvar z_jockey_stagger_speed 2.0 +wait 6309; sm_cvar z_large_volume_mob_too_far_xy 2000 +wait 6312; sm_cvar z_large_volume_mob_too_far_z 200 +wait 6315; sm_cvar z_last_area_update_tolerance 2 +wait 6318; sm_cvar z_last_man_run_interval 1 +// wait 6321; sm_cvar z_lean_wall_align_speed 300 +wait 6324; sm_cvar z_leap_attach_distance 60 +// wait 6327; sm_cvar z_leap_cooldown 0 +wait 6330; sm_cvar z_leap_far_attach_delay 0.0 +wait 6333; sm_cvar z_leap_force_attach_distance 60 +wait 6336; sm_cvar z_leap_interval 0.45 +wait 6339; sm_cvar z_leap_interval_post_incap 15 +wait 6342; sm_cvar z_leap_interval_post_ride 5.5 +wait 6345; sm_cvar z_leap_max_distance 300 +wait 6348; sm_cvar z_leap_power 450 +// wait 6351; sm_cvar z_look_at_local_player 0 +wait 6354; sm_cvar z_lunge_cooldown 0 +wait 6357; sm_cvar z_lunge_interval 0 +wait 6360; sm_cvar z_lunge_power 625 +// wait 6363; sm_cvar z_lunge_reflect 0 +wait 6366; sm_cvar z_lunge_up 150 +// wait 6369; sm_cvar z_max_hunter_pounce_stagger_duration 0.5 +wait 6372; sm_cvar z_max_neighbor_range 40 +wait 6375; sm_cvar z_max_path_length 10000 +// wait 6378; sm_cvar z_max_player_zombies 4 +wait 6381; sm_cvar z_max_stagger_duration 0.75 +wait 6384; sm_cvar z_max_survivor_damage 500 +wait 6387; sm_cvar z_mega_mob_size 60 +wait 6390; sm_cvar z_mega_mob_spawn_max_interval 300 +wait 6393; sm_cvar z_mega_mob_spawn_min_interval 300 +wait 6396; sm_cvar z_min_ladder_mount_dot 0.6 +wait 6399; sm_cvar z_minigun_atomize 1 +wait 6402; sm_cvar z_minigun_cooldown_time 0.1 +wait 6405; sm_cvar z_minigun_damage_rate 60000 +// wait 6408; sm_cvar z_minigun_debug 0 +// wait 6411; sm_cvar z_minigun_fire_anim_speed 1.0 +// wait 6414; sm_cvar z_minigun_fire_think_interval 0 +wait 6417; sm_cvar z_minigun_firing_speed 20 +wait 6420; sm_cvar z_minigun_overheat_time 0.1 +wait 6423; sm_cvar z_minigun_rate_of_fire 1800 +wait 6426; sm_cvar z_minigun_spin_down_speed 10 +wait 6429; sm_cvar z_minigun_spin_up_speed 20 +wait 6432; sm_cvar z_minigun_spread 3.0 +wait 6435; sm_cvar z_minigun_stand_distance 40 +wait 6438; sm_cvar z_minion_aim_tolerance 0.075 +wait 6441; sm_cvar z_minion_limit 4 +// wait 6444; sm_cvar z_mob_min_notify_count 10 +wait 6447; sm_cvar z_mob_music_size 10 +wait 6450; sm_cvar z_mob_population_density 0.005 +// wait 6453; sm_cvar z_mob_recharge_rate 0.0025 +wait 6456; sm_cvar z_mob_sacrifice_timeout 4 +wait 6459; sm_cvar z_mob_spawn_finale_size 40 +wait 6462; sm_cvar z_mob_spawn_max_interval_easy 120 +wait 6465; sm_cvar z_mob_spawn_max_interval_expert 210 +wait 6468; sm_cvar z_mob_spawn_max_interval_hard 120 +wait 6471; sm_cvar z_mob_spawn_max_interval_normal 120 +wait 6489; sm_cvar z_mob_spawn_max_size 40 +wait 6477; sm_cvar z_mob_spawn_min_interval_easy 60 +wait 6480; sm_cvar z_mob_spawn_min_interval_expert 60 +wait 6483; sm_cvar z_mob_spawn_min_interval_hard 60 +wait 6486; sm_cvar z_mob_spawn_min_interval_normal 60 +wait 6489; sm_cvar z_mob_spawn_min_size 20 +wait 6492; sm_cvar z_mounted_gun_fire_think_interval 0.008333 +wait 6495; sm_cvar z_must_wander 1 +// wait 6498; sm_cvar z_mute_infected 0 +// wait 6501; sm_cvar z_nav_debug 0 +// wait 6504; sm_cvar z_network_compression 1 +// wait 6507; sm_cvar z_no_cull 0 +// wait 6510; sm_cvar z_noise_level_display 0 +wait 6513; sm_cvar z_noise_level_fade_rate 50 +wait 6516; sm_cvar z_noise_level_footstep 150 +wait 6519; sm_cvar z_noise_level_hold_time 0.333333 +wait 6522; sm_cvar z_noise_level_max 150 +wait 6525; sm_cvar z_noise_level_vocalize 150 +wait 6528; sm_cvar z_non_head_damage_factor_easy 2.0 +wait 6531; sm_cvar z_non_head_damage_factor_expert 1.0 +wait 6534; sm_cvar z_non_head_damage_factor_hard 1.0 +wait 6537; sm_cvar z_non_head_damage_factor_multiplier 1.0 +// wait 6540; sm_cvar z_non_head_damage_factor_normal 1.0 +wait 6543; sm_cvar z_notice_it_range 2000 +wait 6546; sm_cvar z_notice_near_range 40 +wait 6549; sm_cvar z_player_lunge_up 100 +// wait 6552; sm_cvar z_player_zombie_debug 0 +wait 6555; sm_cvar z_player_zombie_land_delay 0.0 +// wait 6558; sm_cvar z_population "c1streets" +// wait 6561; sm_cvar z_pounce_allow_partial_hidden 1 +wait 6564; sm_cvar z_pounce_crouch_delay 0.875 +// wait 6567; sm_cvar z_pounce_damage 5 +wait 6570; sm_cvar z_pounce_damage_delay 0.0 +wait 6573; sm_cvar z_pounce_damage_interrupt 1000 +// wait 6576; sm_cvar z_pounce_damage_interval 0.5 +wait 6579; sm_cvar z_pounce_delay 0.0 +wait 6582; sm_cvar z_pounce_door_damage 1000 +wait 6585; sm_cvar z_pounce_shake_amplitude 6 +wait 6588; sm_cvar z_pounce_shake_duration 2 +wait 6591; sm_cvar z_pounce_shake_radius 300 +wait 6594; sm_cvar z_pounce_silence_range 400 +wait 6597; sm_cvar z_pounce_stumble_force 6 +wait 6600; sm_cvar z_pounce_stumble_radius 175 +// wait 6603; sm_cvar z_prevent_burrowing 1 +wait 6606; sm_cvar z_puking_eye_height 50 +wait 6609; sm_cvar z_push_force 1000 +wait 6612; sm_cvar z_push_mass_max 100 +wait 6615; sm_cvar z_pushaway_force 0 +wait 6618; sm_cvar z_ragdoll_discard_range 2147483648 +// wait 6621; sm_cvar z_randombodygroups 1 +// wait 6624; sm_cvar z_randomskins 1 +// wait 6627; sm_cvar z_reload_chatter_debug 0 +wait 6630; sm_cvar z_reload_chatter_intensity 0.1 +wait 6633; sm_cvar z_reload_chatter_nearby_friend_range 1000 +wait 6636; sm_cvar z_reload_chatter_recent_enemy 5 +wait 6639; sm_cvar z_reload_chatter_shotgun_ammo_threshold 10 +wait 6642; sm_cvar z_reload_chatter_shotgun_interval 1 +// wait 6645; sm_cvar z_reserved_wanderers 0 +wait 6648; sm_cvar z_respawn_distance 0 +wait 6651; sm_cvar z_respawn_interval 0 +wait 6654; sm_cvar z_restrict_team_change 0 +wait 6657; sm_cvar z_round_start_attack_prevention 0 +wait 6660; sm_cvar z_round_start_replacement_time 0 +wait 6663; sm_cvar z_run_exertion_interval 0.333333 +// wait 6666; sm_cvar z_safe_spawn_range 0 +wait 6669; sm_cvar z_scout_mob_spawn_range 2000 +wait 6672; sm_cvar z_scrimmage_creep_delay 10 +wait 6675; sm_cvar z_scrimmage_creep_rate 100 +// wait 6678; sm_cvar z_scrimmage_sphere 1 +wait 6681; sm_cvar z_shotgun_bonus_damage_multiplier 10.0 +wait 6684; sm_cvar z_shotgun_bonus_damage_range 60 +wait 6687; sm_cvar z_shove_friend_speed 220 +// wait 6690; sm_cvar z_show_bottlenecks 0 +// wait 6693; sm_cvar z_show_clear 0 +// wait 6696; sm_cvar z_show_completely_visible_to_survivor_team 0 +// wait 6699; sm_cvar z_show_damaging 0 +// wait 6702; sm_cvar z_show_escape_route 0 +// wait 6705; sm_cvar z_show_flow_delta 0 +// wait 6708; sm_cvar z_show_flow_distance 0 +// wait 6711; sm_cvar z_show_infected 0 +// wait 6714; sm_cvar z_show_last_area 0 +// wait 6717; sm_cvar z_show_mutually_visible_set 0 +// wait 6720; sm_cvar z_show_population_density 0 +// wait 6723; sm_cvar z_show_potentially_visible 0 +// wait 6726; sm_cvar z_show_potentially_visible_to_survivor_team 0 +// wait 6729; sm_cvar z_show_swings 0 +// wait 6732; sm_cvar z_show_traffic 0 +wait 6735; sm_cvar z_sidespeed 500 +// wait 6738; sm_cvar z_skip_wounds 0 +wait 6741; sm_cvar z_skirmish_spawn_max_interval 60 +wait 6744; sm_cvar z_skirmish_spawn_max_size 5 +wait 6747; sm_cvar z_skirmish_spawn_min_interval 30 +wait 6750; sm_cvar z_skirmish_spawn_min_size 1 +// wait 6753; sm_cvar z_smoker_limit 1 +// wait 6756; sm_cvar z_spawn_const_distance -1 +wait 6759; sm_cvar z_spawn_flow_limit 3000 +// wait 6762; sm_cvar z_spawn_health 0 +// wait 6765; sm_cvar z_spawn_height 12 +wait 6768; sm_cvar z_spawn_mobs_behind_chance 50 +// wait 6771; sm_cvar z_spawn_mobs_from_selected_set 0 +wait 6774; sm_cvar z_spawn_range 3000 +wait 6777; sm_cvar z_spawn_safety_range 150 +wait 6780; sm_cvar z_spawn_speed 500 +// wait 6783; sm_cvar z_spec_nightvision 1 +wait 6786; sm_cvar z_special_burn_dmg_scale 5 +wait 6789; sm_cvar z_special_spawn_interval 10 +wait 6792; sm_cvar z_speed 260 +// wait 6795; sm_cvar z_spew_areas 0 +wait 6798; sm_cvar z_spit_detonate_delay 0.0 +wait 6801; sm_cvar z_spit_interval 15 +wait 6804; sm_cvar z_spit_latency 0.275 +wait 6807; sm_cvar z_spit_range 950 +wait 6810; sm_cvar z_spit_spread_delay 0.0 +wait 6813; sm_cvar z_spit_velocity 950 +// wait 6816; sm_cvar z_spitter_health 100 +wait 6819; sm_cvar z_spitter_high_chance 0 +// wait 6822; sm_cvar z_spitter_limit 1 +wait 6825; sm_cvar z_spitter_max_wait_time 20 +wait 6828; sm_cvar z_spitter_range 900 +wait 6831; sm_cvar z_spitter_speed 240 +wait 6834; sm_cvar z_splat_survivor_pitch_max 20 +wait 6837; sm_cvar z_splat_survivor_pitch_min -20 +wait 6840; sm_cvar z_splat_survivor_shake_amplitude 100 +wait 6843; sm_cvar z_splat_survivor_shake_duration 2 +wait 6846; sm_cvar z_splat_survivor_shake_frequency 100 +wait 6849; sm_cvar z_splat_survivor_shake_radius 300 +wait 6852; sm_cvar z_splat_survivor_yaw_max 20 +wait 6855; sm_cvar z_splat_survivor_yaw_min -20 +// wait 6858; sm_cvar z_splatterdistance 100 +// wait 6861; sm_cvar z_stand_still 0 +// wait 6864; sm_cvar z_state_debug 0 +// wait 6867; sm_cvar z_stomp_always 0 +// wait 6870; sm_cvar z_stumble_max_curve_accel 5 +wait 6873; sm_cvar z_stumble_max_curve_rate 5 +wait 6876; sm_cvar z_survivor_respawn_health 40 +wait 6879; sm_cvar z_tank_attack_interval 1.45 +wait 6882; sm_cvar z_tank_autoshotgun_dmg_scale 0.8 +wait 6885; sm_cvar z_tank_damage_slow_max_range 0 +wait 6888; sm_cvar z_tank_damage_slow_min_range 0 +wait 6891; sm_cvar z_tank_footstep_shake_amplitude 5 +wait 6894; sm_cvar z_tank_footstep_shake_duration 2 +wait 6897; sm_cvar z_tank_footstep_shake_interval 0.1 +wait 6900; sm_cvar z_tank_footstep_shake_radius 1000 +wait 6903; sm_cvar z_tank_grenade_damage 1000 +wait 6906; sm_cvar z_tank_grenade_launcher_dmg_scale 2.0 +wait 6909; sm_cvar z_tank_grenade_roll -15 +// wait 6912; sm_cvar z_tank_grenade_slowdown 0 +wait 6915; sm_cvar z_tank_has_special_blood 1 +wait 6918; sm_cvar z_tank_health 5000 +// wait 6921; sm_cvar z_tank_incapacitated_decay_rate 1 +wait 6924; sm_cvar z_tank_incapacitated_health 2500 +wait 6927; sm_cvar z_tank_max_stagger_distance 300 +wait 6930; sm_cvar z_tank_max_stagger_duration 4 +wait 6933; sm_cvar z_tank_max_stagger_fade_duration 4 +// wait 6936; sm_cvar z_tank_rock_debug 0 +wait 6939; sm_cvar z_tank_rock_radius 96 +wait 6942; sm_cvar z_tank_speed 200 +wait 6945; sm_cvar z_tank_speed_vs 220 +wait 6948; sm_cvar z_tank_stagger_fade_alpha 128 +wait 6951; sm_cvar z_tank_stagger_fade_duration 2 +// wait 6954; sm_cvar z_tank_throw_fail_interval 0 +wait 6957; sm_cvar z_tank_throw_force 850 +// wait 6960; sm_cvar z_tank_throw_health 50 +wait 6963; sm_cvar z_tank_throw_interval 4.5 +wait 6966; sm_cvar z_tank_walk_speed 120 +// wait 6969; sm_cvar z_tanks_block_molotovs 1 +wait 6972; sm_cvar z_throttle_hit_interval_easy 0.166667 +wait 6975; sm_cvar z_throttle_hit_interval_expert 0.5 +wait 6978; sm_cvar z_throttle_hit_interval_hard 0.166667 +wait 6981; sm_cvar z_throttle_hit_interval_normal 0.166667 +// wait 6984; sm_cvar z_tracer_particles 1 +// wait 6987; sm_cvar z_tracer_spacing 1 +// wait 6990; sm_cvar z_transitioning_players_remove 1 +wait 6993; sm_cvar z_use_belt_item_tolerance 0.0 +// wait 6996; sm_cvar z_use_next_difficulty_damage_factor 0 +wait 6999; sm_cvar z_use_tolerance 0.8 +// wait 7002; sm_cvar z_versus_boomer_limit 1 +// wait 7005; sm_cvar z_versus_charger_limit 1 +// wait 7008; sm_cvar z_versus_hunter_limit 1 +// wait 7011; sm_cvar z_versus_jockey_limit 1 +// wait 7014; sm_cvar z_versus_smoker_limit 1 +// wait 7017; sm_cvar z_versus_spitter_limit 1 +wait 7020; sm_cvar z_vision_range 3000 +wait 7023; sm_cvar z_vision_range_alert 3000 +wait 7026; sm_cvar z_vision_range_daylight 3000 +wait 7029; sm_cvar z_vision_range_obscured 3000 +wait 7032; sm_cvar z_vision_range_obscured_alert 3000 +wait 7035; sm_cvar z_vocalize_burn_max_interval 1 +wait 7038; sm_cvar z_vocalize_burn_min_interval 0.5 +// wait 7041; sm_cvar z_vocalize_shot_interval 0.5 +// wait 7044; sm_cvar z_vomit 1 +wait 7047; sm_cvar z_vomit_boxsize 2.0 +// wait 7050; sm_cvar z_vomit_debug 0 +wait 7053; sm_cvar z_vomit_drag 1.0 +wait 7056; sm_cvar z_vomit_duration 1.25 +wait 7059; sm_cvar z_vomit_fade_duration 6 +wait 7062; sm_cvar z_vomit_fade_start 6 +wait 7065; sm_cvar z_vomit_fatigue 2001 +wait 7068; sm_cvar z_vomit_float -100 +wait 7071; sm_cvar z_vomit_hit_pitch_max 10 +wait 7074; sm_cvar z_vomit_hit_pitch_min -10 +wait 7077; sm_cvar z_vomit_hit_yaw_max 10 +wait 7080; sm_cvar z_vomit_hit_yaw_min -10 +wait 7083; sm_cvar z_vomit_interval 18 +wait 7086; sm_cvar z_vomit_lifetime 0.25 +wait 7089; sm_cvar z_vomit_maxdamagedist 400 +wait 7092; sm_cvar z_vomit_range 300 +// wait 7095; sm_cvar z_vomit_slide_mult 0.5 +// wait 7098; sm_cvar z_vomit_slide_rate 0.1 +// wait 7101; sm_cvar z_vomit_vecrand 0.05 +wait 7104; sm_cvar z_vomit_velocity 2000 +// wait 7107; sm_cvar z_vomit_velocityfadeend 0.5 +wait 7110; sm_cvar z_vomit_velocityfadestart 0.25 +wait 7113; sm_cvar z_walk_speed 120 +// wait 7116; sm_cvar z_wandering_density 0.03 +// wait 7119; sm_cvar z_witch_allow_change_victim 1 +// wait 7122; sm_cvar z_witch_always_kills 0 +wait 7125; sm_cvar z_witch_anger_rate 0.3 +// wait 7128; sm_cvar z_witch_attack_range 60 +wait 7131; sm_cvar z_witch_berserk_range 400 +wait 7134; sm_cvar z_witch_burn_time 20 +// wait 7137; sm_cvar z_witch_damage 100 +wait 7140; sm_cvar z_witch_damage_per_kill_hit 30 +wait 7143; sm_cvar z_witch_discard_range 800 +wait 7146; sm_cvar z_witch_flashlight_range 600 +wait 7149; sm_cvar z_witch_health 2500 +// wait 7152; sm_cvar z_witch_hostile_at_me_anger 2 +wait 7155; sm_cvar z_witch_max_retreat_range 800 +wait 7158; sm_cvar z_witch_max_threat_time 3 +wait 7161; sm_cvar z_witch_min_retreat_range 600 +wait 7164; sm_cvar z_witch_min_threat_time 3 +wait 7167; sm_cvar z_witch_personal_space 200 +wait 7170; sm_cvar z_witch_relax_rate 0.2 +wait 7173; sm_cvar z_witch_retreat_exit_hidden_duration 4 +wait 7176; sm_cvar z_witch_retreat_exit_range 800 +wait 7179; sm_cvar z_witch_retreat_min_duration 3 +// wait 7182; sm_cvar z_witch_speed 300 +wait 7185; sm_cvar z_witch_speed_inured 300 +wait 7188; sm_cvar z_witch_threat_hostile_range 800 +wait 7191; sm_cvar z_witch_threat_normal_range 600 +wait 7194; sm_cvar z_witch_tongue_range 20 +wait 7197; sm_cvar z_witch_wander_hear_radius 300 +wait 7200; sm_cvar z_witch_wander_music_max_dist 2147483648 +wait 7203; sm_cvar z_witch_wander_music_max_interval 30 +wait 7206; sm_cvar z_witch_wander_music_min_dist 2147483648 +wait 7209; sm_cvar z_witch_wander_music_min_interval 3 +wait 7212; sm_cvar z_witch_wander_personal_space 300 +wait 7215; sm_cvar z_witch_wander_personal_time 3 +// wait 7218; sm_cvar z_zombie_knockoff_death 0 +// wait 7221; sm_cvar z_zombie_lunge_push 0 +// wait 7224; sm_cvar +// wait 7227; sm_cvar +// wait 7230; sm_cvar +// wait 7233; sm_cvar +// wait 7236; sm_cvar +// wait 7239; sm_cvar +// wait 7242; sm_cvar +// wait 7245; sm_cvar +// wait 7248; sm_cvar +// wait 7251; sm_cvar +// wait 7254; sm_cvar +// wait 7257; sm_cvar +// wait 7260; sm_cvar +// wait 7263; sm_cvar +// wait 7266; sm_cvar +// wait 7269; sm_cvar +// wait 7272; sm_cvar +// wait 7275; sm_cvar +// wait 7278; sm_cvar +// wait 7281; sm_cvar +// wait 7284; sm_cvar +// wait 7287; sm_cvar +// wait 7290; sm_cvar +// wait 7293; sm_cvar +// wait 7296; sm_cvar +// wait 7299; sm_cvar +// wait 7302; sm_cvar +// wait 7305; sm_cvar +// wait 7308; sm_cvar +// wait 7311; sm_cvar +// wait 7314; sm_cvar +// wait 7317; sm_cvar +// wait 7320; sm_cvar +// wait 7323; sm_cvar +// wait 7326; sm_cvar +// wait 7329; sm_cvar +// wait 7332; sm_cvar +// wait 7335; sm_cvar +// wait 7338; sm_cvar +// wait 7341; sm_cvar +// wait 7344; sm_cvar +// wait 7347; sm_cvar +// wait 7350; sm_cvar +// wait 7353; sm_cvar +// wait 7356; sm_cvar +// wait 7359; sm_cvar +// wait 7362; sm_cvar +// wait 7365; sm_cvar +// wait 7368; sm_cvar +// wait 7371; sm_cvar +// wait 7374; sm_cvar +// wait 7377; sm_cvar +// wait 7380; sm_cvar +// wait 7383; sm_cvar +// wait 7386; sm_cvar +// wait 7389; sm_cvar +// wait 7392; sm_cvar +// wait 7395; sm_cvar +// wait 7398; sm_cvar +// wait 7401; sm_cvar +// wait 7404; sm_cvar +// wait 7407; sm_cvar +// wait 7410; sm_cvar +// wait 7413; sm_cvar +// wait 7416; sm_cvar +// wait 7419; sm_cvar +// wait 7422; sm_cvar +// wait 7425; sm_cvar +// wait 7428; sm_cvar +// wait 7431; sm_cvar +// wait 7434; sm_cvar +// wait 7437; sm_cvar +// wait 7440; sm_cvar +// wait 7443; sm_cvar +// wait 7446; sm_cvar +// wait 7449; sm_cvar +// wait 7452; sm_cvar +// wait 7455; sm_cvar +// wait 7458; sm_cvar +// wait 7461; sm_cvar +// wait 7464; sm_cvar +// wait 7467; sm_cvar +// wait 7470; sm_cvar +// wait 7473; sm_cvar +// wait 7476; sm_cvar +// wait 7479; sm_cvar +// wait 7482; sm_cvar +// wait 7485; sm_cvar +// wait 7488; sm_cvar +// wait 7491; sm_cvar +// wait 7494; sm_cvar +// wait 7497; sm_cvar +// wait 7500; sm_cvar +// wait 7503; sm_cvar +// wait 7506; sm_cvar +// wait 7509; sm_cvar +// wait 7512; sm_cvar +// wait 7515; sm_cvar +// wait 7518; sm_cvar +// wait 7521; sm_cvar +// wait 7524; sm_cvar +// wait 7527; sm_cvar +// wait 7530; sm_cvar +// wait 7533; sm_cvar +// wait 7536; sm_cvar +// wait 7539; sm_cvar +// wait 7542; sm_cvar +// wait 7545; sm_cvar +// wait 7548; sm_cvar +// wait 7551; sm_cvar +// wait 7554; sm_cvar +// wait 7557; sm_cvar +// wait 7560; sm_cvar +// wait 7563; sm_cvar +// wait 7566; sm_cvar +// wait 7569; sm_cvar +// wait 7572; sm_cvar +// wait 7575; sm_cvar +// wait 7578; sm_cvar +// wait 7581; sm_cvar +// wait 7584; sm_cvar +// wait 7587; sm_cvar +// wait 7590; sm_cvar +// wait 7593; sm_cvar +// wait 7596; sm_cvar +// wait 7599; sm_cvar +// wait 7602; sm_cvar +// wait 7605; sm_cvar +// wait 7608; sm_cvar +// wait 7611; sm_cvar +// wait 7614; sm_cvar +// wait 7617; sm_cvar +// wait 7620; sm_cvar +// wait 7623; sm_cvar +// wait 7626; sm_cvar +// wait 7629; sm_cvar +// wait 7632; sm_cvar +// wait 7635; sm_cvar +// wait 7638; sm_cvar +// wait 7641; sm_cvar +// wait 7644; sm_cvar +// wait 7647; sm_cvar +// wait 7650; sm_cvar +// wait 7653; sm_cvar +// wait 7656; sm_cvar +// wait 7659; sm_cvar +// wait 7662; sm_cvar +// wait 7665; sm_cvar +// wait 7668; sm_cvar +// wait 7671; sm_cvar +// wait 7674; sm_cvar +// wait 7677; sm_cvar +// wait 7680; sm_cvar +// wait 7683; sm_cvar +// wait 7686; sm_cvar +// wait 7689; sm_cvar +// wait 7692; sm_cvar +// wait 7695; sm_cvar +// wait 7698; sm_cvar +// wait 7701; sm_cvar +// wait 7704; sm_cvar +// wait 7707; sm_cvar +// wait 7710; sm_cvar +// wait 7713; sm_cvar +// wait 7716; sm_cvar +// wait 7719; sm_cvar +// wait 7722; sm_cvar +// wait 7725; sm_cvar +// wait 7728; sm_cvar +// wait 7731; sm_cvar +// wait 7734; sm_cvar +// wait 7737; sm_cvar +// wait 7740; sm_cvar +// wait 7743; sm_cvar +// wait 7746; sm_cvar +// wait 7749; sm_cvar +// wait 7752; sm_cvar +// wait 7755; sm_cvar +// wait 7758; sm_cvar +// wait 7761; sm_cvar +// wait 7764; sm_cvar +// wait 7767; sm_cvar +// wait 7770; sm_cvar +// wait 7773; sm_cvar +// wait 7776; sm_cvar +// wait 7779; sm_cvar +// wait 7782; sm_cvar +// wait 7785; sm_cvar +// wait 7788; sm_cvar +// wait 7791; sm_cvar +// wait 7794; sm_cvar +// wait 7797; sm_cvar +// wait 7800; sm_cvar +// wait 7803; sm_cvar +// wait 7806; sm_cvar +// wait 7809; sm_cvar +// wait 7812; sm_cvar +// wait 7815; sm_cvar +// wait 7818; sm_cvar +// wait 7821; sm_cvar +// wait 7824; sm_cvar +// wait 7827; sm_cvar +// wait 7830; sm_cvar +// wait 7833; sm_cvar +// wait 7836; sm_cvar +// wait 7839; sm_cvar +// wait 7842; sm_cvar +// wait 7845; sm_cvar +// wait 7848; sm_cvar +// wait 7851; sm_cvar +// wait 7854; sm_cvar +// wait 7857; sm_cvar +// wait 7860; sm_cvar +// wait 7863; sm_cvar +// wait 7866; sm_cvar +// wait 7869; sm_cvar +// wait 7872; sm_cvar +// wait 7875; sm_cvar +// wait 7878; sm_cvar +// wait 7881; sm_cvar +// wait 7884; sm_cvar +// wait 7887; sm_cvar +// wait 7890; sm_cvar +// wait 7893; sm_cvar +// wait 7896; sm_cvar +// wait 7899; sm_cvar +// wait 7902; sm_cvar +// wait 7905; sm_cvar +// wait 7908; sm_cvar +// wait 7911; sm_cvar +// wait 7914; sm_cvar +// wait 7917; sm_cvar +// wait 7920; sm_cvar +// wait 7923; sm_cvar +// wait 7926; sm_cvar +// wait 7929; sm_cvar +// wait 7932; sm_cvar +// wait 7935; sm_cvar +// wait 7938; sm_cvar +// wait 7941; sm_cvar +// wait 7944; sm_cvar +// wait 7947; sm_cvar +// wait 7950; sm_cvar +// wait 7953; sm_cvar +// wait 7956; sm_cvar +// wait 7959; sm_cvar +// wait 7962; sm_cvar +// wait 7965; sm_cvar +// wait 7968; sm_cvar +// wait 7971; sm_cvar +// wait 7974; sm_cvar +// wait 7977; sm_cvar +// wait 7980; sm_cvar +// wait 7983; sm_cvar +// wait 7986; sm_cvar +// wait 7989; sm_cvar +// wait 7992; sm_cvar +// wait 7995; sm_cvar +// wait 7998; sm_cvar +// wait 8001; sm_cvar +// wait 8004; sm_cvar +// wait 8007; sm_cvar +// wait 8010; sm_cvar +// wait 8013; sm_cvar +// wait 8016; sm_cvar +// wait 8019; sm_cvar +// wait 8022; sm_cvar +// wait 8025; sm_cvar +// wait 8028; sm_cvar +// wait 8031; sm_cvar +// wait 8034; sm_cvar +// wait 8037; sm_cvar +// wait 8040; sm_cvar +// wait 8043; sm_cvar +// wait 8046; sm_cvar +// wait 8049; sm_cvar +// wait 8052; sm_cvar +// wait 8055; sm_cvar +// wait 8058; sm_cvar +// wait 8061; sm_cvar +// wait 8064; sm_cvar +// wait 8067; sm_cvar +// wait 8070; sm_cvar +// wait 8073; sm_cvar +// wait 8076; sm_cvar +// wait 8079; sm_cvar +// wait 8082; sm_cvar +// wait 8085; sm_cvar +// wait 8088; sm_cvar +// wait 8091; sm_cvar +// wait 8094; sm_cvar +// wait 8097; sm_cvar +// wait 8100; sm_cvar +// wait 8103; sm_cvar +// wait 8106; sm_cvar +// wait 8109; sm_cvar +// wait 8112; sm_cvar +// wait 8115; sm_cvar +// wait 8118; sm_cvar +// wait 8121; sm_cvar +// wait 8124; sm_cvar +// wait 8127; sm_cvar +// wait 8130; sm_cvar +// wait 8133; sm_cvar +// wait 8136; sm_cvar +// wait 8139; sm_cvar +// wait 8142; sm_cvar +// wait 8145; sm_cvar +// wait 8148; sm_cvar +// wait 8151; sm_cvar +// wait 8154; sm_cvar +// wait 8157; sm_cvar +// wait 8160; sm_cvar +// wait 8163; sm_cvar +// wait 8166; sm_cvar +// wait 8169; sm_cvar +// wait 8172; sm_cvar +// wait 8175; sm_cvar +// wait 8178; sm_cvar +// wait 8181; sm_cvar +// wait 8184; sm_cvar +// wait 8187; sm_cvar +// wait 8190; sm_cvar +// wait 8193; sm_cvar +// wait 8196; sm_cvar +// wait 8199; sm_cvar +// wait 8202; sm_cvar +// wait 8205; sm_cvar +// wait 8208; sm_cvar +// wait 8211; sm_cvar +// wait 8214; sm_cvar +// wait 8217; sm_cvar +// wait 8220; sm_cvar +// wait 8223; sm_cvar +// wait 8226; sm_cvar +// wait 8229; sm_cvar +// wait 8232; sm_cvar +// wait 8235; sm_cvar +// wait 8238; sm_cvar +// wait 8241; sm_cvar +// wait 8244; sm_cvar +// wait 8247; sm_cvar +// wait 8250; sm_cvar +// wait 8253; sm_cvar +// wait 8256; sm_cvar +// wait 8259; sm_cvar +// wait 8262; sm_cvar +// wait 8265; sm_cvar +// wait 8268; sm_cvar +// wait 8271; sm_cvar +// wait 8274; sm_cvar +// wait 8277; sm_cvar +// wait 8280; sm_cvar +// wait 8283; sm_cvar +// wait 8286; sm_cvar +// wait 8289; sm_cvar +// wait 8292; sm_cvar +// wait 8295; sm_cvar +// wait 8298; sm_cvar +// wait 8301; sm_cvar +// wait 8304; sm_cvar +// wait 8307; sm_cvar +// wait 8310; sm_cvar +// wait 8313; sm_cvar +// wait 8316; sm_cvar +// wait 8319; sm_cvar +// wait 8322; sm_cvar +// wait 8325; sm_cvar +// wait 8328; sm_cvar +// wait 8331; sm_cvar +// wait 8334; sm_cvar +// wait 8337; sm_cvar +// wait 8340; sm_cvar +// wait 8343; sm_cvar +// wait 8346; sm_cvar +// wait 8349; sm_cvar +// wait 8352; sm_cvar +// wait 8355; sm_cvar +// wait 8358; sm_cvar +// wait 8361; sm_cvar +// wait 8364; sm_cvar +// wait 8367; sm_cvar +// wait 8370; sm_cvar +// wait 8373; sm_cvar +// wait 8376; sm_cvar +// wait 8379; sm_cvar +// wait 8382; sm_cvar +// wait 8385; sm_cvar +// wait 8388; sm_cvar +// wait 8391; sm_cvar +// wait 8394; sm_cvar +// wait 8397; sm_cvar +// wait 8400; sm_cvar +// wait 8403; sm_cvar +// wait 8406; sm_cvar +// wait 8409; sm_cvar +// wait 8412; sm_cvar +// wait 8415; sm_cvar +// wait 8418; sm_cvar +// wait 8421; sm_cvar +// wait 8424; sm_cvar +// wait 8427; sm_cvar +// wait 8430; sm_cvar +// wait 8433; sm_cvar +// wait 8436; sm_cvar +// wait 8439; sm_cvar +// wait 8442; sm_cvar +// wait 8445; sm_cvar +// wait 8448; sm_cvar +// wait 8451; sm_cvar +// wait 8454; sm_cvar +// wait 8457; sm_cvar +// wait 8460; sm_cvar +// wait 8463; sm_cvar +// wait 8466; sm_cvar +// wait 8469; sm_cvar +// wait 8472; sm_cvar +// wait 8475; sm_cvar +// wait 8478; sm_cvar +// wait 8481; sm_cvar +// wait 8484; sm_cvar +// wait 8487; sm_cvar +// wait 8490; sm_cvar +// wait 8493; sm_cvar +// wait 8496; sm_cvar +// wait 8499; sm_cvar +// wait 8502; sm_cvar +// wait 8505; sm_cvar +// wait 8508; sm_cvar +// wait 8511; sm_cvar +// wait 8514; sm_cvar +// wait 8517; sm_cvar +// wait 8520; sm_cvar +// wait 8523; sm_cvar +// wait 8526; sm_cvar +// wait 8529; sm_cvar +// wait 8532; sm_cvar +// wait 8535; sm_cvar +// wait 8538; sm_cvar +// wait 8541; sm_cvar +// wait 8544; sm_cvar +// wait 8547; sm_cvar +// wait 8550; sm_cvar +// wait 8553; sm_cvar +// wait 8556; sm_cvar +// wait 8559; sm_cvar +// wait 8562; sm_cvar +// wait 8565; sm_cvar +// wait 8568; sm_cvar +// wait 8571; sm_cvar +// wait 8574; sm_cvar +// wait 8577; sm_cvar +// wait 8580; sm_cvar +// wait 8583; sm_cvar +// wait 8586; sm_cvar +// wait 8589; sm_cvar +// wait 8592; sm_cvar +// wait 8595; sm_cvar +// wait 8598; sm_cvar +// wait 8601; sm_cvar +// wait 8604; sm_cvar +// wait 8607; sm_cvar +// wait 8610; sm_cvar +// wait 8613; sm_cvar +// wait 8616; sm_cvar +// wait 8619; sm_cvar +// wait 8622; sm_cvar +// wait 8625; sm_cvar +// wait 8628; sm_cvar +// wait 8631; sm_cvar +// wait 8634; sm_cvar +// wait 8637; sm_cvar +// wait 8640; sm_cvar +// wait 8643; sm_cvar +// wait 8646; sm_cvar +// wait 8649; sm_cvar +// wait 8652; sm_cvar +// wait 8655; sm_cvar +// wait 8658; sm_cvar +// wait 8661; sm_cvar +// wait 8664; sm_cvar +// wait 8667; sm_cvar +// wait 8670; sm_cvar +// wait 8673; sm_cvar +// wait 8676; sm_cvar +// wait 8679; sm_cvar +// wait 8682; sm_cvar +// wait 8685; sm_cvar +// wait 8688; sm_cvar +// wait 8691; sm_cvar +// wait 8694; sm_cvar +// wait 8697; sm_cvar +// wait 8700; sm_cvar +// wait 8703; sm_cvar +// wait 8706; sm_cvar +// wait 8709; sm_cvar +// wait 8712; sm_cvar +// wait 8715; sm_cvar +// wait 8718; sm_cvar +// wait 8721; sm_cvar +// wait 8724; sm_cvar +// wait 8727; sm_cvar +// wait 8730; sm_cvar +// wait 8733; sm_cvar +// wait 8736; sm_cvar +// wait 8739; sm_cvar +// wait 8742; sm_cvar +// wait 8745; sm_cvar +// wait 8748; sm_cvar +// wait 8751; sm_cvar +// wait 8754; sm_cvar +// wait 8757; sm_cvar +// wait 8760; sm_cvar +// wait 8763; sm_cvar +// wait 8766; sm_cvar +// wait 8769; sm_cvar +// wait 8772; sm_cvar +// wait 8775; sm_cvar +// wait 8778; sm_cvar +// wait 8781; sm_cvar +// wait 8784; sm_cvar +// wait 8787; sm_cvar +// wait 8790; sm_cvar +// wait 8793; sm_cvar +// wait 8796; sm_cvar +// wait 8799; sm_cvar +// wait 8802; sm_cvar +// wait 8805; sm_cvar +// wait 8808; sm_cvar +// wait 8811; sm_cvar +// wait 8814; sm_cvar +// wait 8817; sm_cvar +// wait 8820; sm_cvar +// wait 8823; sm_cvar +// wait 8826; sm_cvar +// wait 8829; sm_cvar +// wait 8832; sm_cvar +// wait 8835; sm_cvar +// wait 8838; sm_cvar +// wait 8841; sm_cvar +// wait 8844; sm_cvar +// wait 8847; sm_cvar +// wait 8850; sm_cvar +// wait 8853; sm_cvar +// wait 8856; sm_cvar +// wait 8859; sm_cvar +// wait 8862; sm_cvar +// wait 8865; sm_cvar +// wait 8868; sm_cvar +// wait 8871; sm_cvar +// wait 8874; sm_cvar +// wait 8877; sm_cvar +// wait 8880; sm_cvar +// wait 8883; sm_cvar +// wait 8886; sm_cvar +// wait 8889; sm_cvar +// wait 8892; sm_cvar +// wait 8895; sm_cvar +// wait 8898; sm_cvar +// wait 8901; sm_cvar +// wait 8904; sm_cvar +// wait 8907; sm_cvar +// wait 8910; sm_cvar +// wait 8913; sm_cvar +// wait 8916; sm_cvar +// wait 8919; sm_cvar +// wait 8922; sm_cvar +// wait 8925; sm_cvar +// wait 8928; sm_cvar +// wait 8931; sm_cvar +// wait 8934; sm_cvar +// wait 8937; sm_cvar +// wait 8940; sm_cvar +// wait 8943; sm_cvar +// wait 8946; sm_cvar +// wait 8949; sm_cvar +// wait 8952; sm_cvar +// wait 8955; sm_cvar +// wait 8958; sm_cvar +// wait 8961; sm_cvar +// wait 8964; sm_cvar +// wait 8967; sm_cvar +// wait 8970; sm_cvar +// wait 8973; sm_cvar +// wait 8976; sm_cvar +// wait 8979; sm_cvar +// wait 8982; sm_cvar +// wait 8985; sm_cvar +// wait 8988; sm_cvar +// wait 8991; sm_cvar +// wait 8994; sm_cvar +// wait 8997; sm_cvar +// wait 9000; sm_cvar +// wait 9003; sm_cvar +// wait 9006; sm_cvar +// wait 9009; sm_cvar +// wait 9012; sm_cvar +// wait 9015; sm_cvar +// wait 9018; sm_cvar +// wait 9021; sm_cvar +// wait 9024; sm_cvar +// wait 9027; sm_cvar +// wait 9030; sm_cvar +// wait 9033; sm_cvar +// wait 9036; sm_cvar +// wait 9039; sm_cvar +// wait 9042; sm_cvar +// wait 9045; sm_cvar +// wait 9048; sm_cvar +// wait 9051; sm_cvar +// wait 9054; sm_cvar +// wait 9057; sm_cvar +// wait 9060; sm_cvar +// wait 9063; sm_cvar +// wait 9066; sm_cvar +// wait 9069; sm_cvar +// wait 9072; sm_cvar +// wait 9075; sm_cvar +// wait 9078; sm_cvar +// wait 9081; sm_cvar +// wait 9084; sm_cvar +// wait 9087; sm_cvar +// wait 9090; sm_cvar +// wait 9093; sm_cvar +// wait 9096; sm_cvar +// wait 9099; sm_cvar +// wait 9102; sm_cvar +// wait 9105; sm_cvar +// wait 9108; sm_cvar +// wait 9111; sm_cvar +// wait 9114; sm_cvar +// wait 9117; sm_cvar +// wait 9120; sm_cvar +// wait 9123; sm_cvar +// wait 9126; sm_cvar +// wait 9129; sm_cvar +// wait 9132; sm_cvar +// wait 9135; sm_cvar +// wait 9138; sm_cvar +// wait 9141; sm_cvar +// wait 9144; sm_cvar +// wait 9147; sm_cvar +// wait 9150; sm_cvar +// wait 9153; sm_cvar +// wait 9156; sm_cvar +// wait 9159; sm_cvar +// wait 9162; sm_cvar +// wait 9165; sm_cvar +// wait 9168; sm_cvar +// wait 9171; sm_cvar +// wait 9174; sm_cvar +// wait 9177; sm_cvar +// wait 9180; sm_cvar +// wait 9183; sm_cvar +// wait 9186; sm_cvar +// wait 9189; sm_cvar +// wait 9192; sm_cvar +// wait 9195; sm_cvar +// wait 9198; sm_cvar +// wait 9201; sm_cvar +// wait 9204; sm_cvar +// wait 9207; sm_cvar +// wait 9210; sm_cvar +// wait 9213; sm_cvar +// wait 9216; sm_cvar +// wait 9219; sm_cvar +// wait 9222; sm_cvar +// wait 9225; sm_cvar +// wait 9228; sm_cvar +// wait 9231; sm_cvar +// wait 9234; sm_cvar +// wait 9237; sm_cvar +// wait 9240; sm_cvar +// wait 9243; sm_cvar +// wait 9246; sm_cvar +// wait 9249; sm_cvar +// wait 9252; sm_cvar +// wait 9255; sm_cvar +// wait 9258; sm_cvar +// wait 9261; sm_cvar +// wait 9264; sm_cvar +// wait 9267; sm_cvar +// wait 9270; sm_cvar +// wait 9273; sm_cvar +// wait 9276; sm_cvar +// wait 9279; sm_cvar +// wait 9282; sm_cvar +// wait 9285; sm_cvar +// wait 9288; sm_cvar +// wait 9291; sm_cvar +// wait 9294; sm_cvar +// wait 9297; sm_cvar +// wait 9300; sm_cvar +// wait 9303; sm_cvar +// wait 9306; sm_cvar +// wait 9309; sm_cvar +// wait 9312; sm_cvar +// wait 9315; sm_cvar +// wait 9318; sm_cvar +// wait 9321; sm_cvar +// wait 9324; sm_cvar +// wait 9327; sm_cvar +// wait 9330; sm_cvar +// wait 9333; sm_cvar +// wait 9336; sm_cvar +// wait 9339; sm_cvar +// wait 9342; sm_cvar +// wait 9345; sm_cvar +// wait 9348; sm_cvar +// wait 9351; sm_cvar +// wait 9354; sm_cvar +// wait 9357; sm_cvar +// wait 9360; sm_cvar +// wait 9363; sm_cvar +// wait 9366; sm_cvar +// wait 9369; sm_cvar +// wait 9372; sm_cvar +// wait 9375; sm_cvar +// wait 9378; sm_cvar +// wait 9381; sm_cvar +// wait 9384; sm_cvar +// wait 9387; sm_cvar +// wait 9390; sm_cvar +// wait 9393; sm_cvar +// wait 9396; sm_cvar +// wait 9399; sm_cvar +// wait 9402; sm_cvar +// wait 9405; sm_cvar +// wait 9408; sm_cvar +// wait 9411; sm_cvar +// wait 9414; sm_cvar +// wait 9417; sm_cvar +// wait 9420; sm_cvar +// wait 9423; sm_cvar +// wait 9426; sm_cvar +// wait 9429; sm_cvar +// wait 9432; sm_cvar +// wait 9435; sm_cvar +// wait 9438; sm_cvar +// wait 9441; sm_cvar +// wait 9444; sm_cvar +// wait 9447; sm_cvar +// wait 9450; sm_cvar +// wait 9453; sm_cvar +// wait 9456; sm_cvar +// wait 9459; sm_cvar +// wait 9462; sm_cvar +// wait 9465; sm_cvar +// wait 9468; sm_cvar +// wait 9471; sm_cvar +// wait 9474; sm_cvar +// wait 9477; sm_cvar +// wait 9480; sm_cvar +// wait 9483; sm_cvar +// wait 9486; sm_cvar +// wait 9489; sm_cvar +// wait 9492; sm_cvar +// wait 9495; sm_cvar +// wait 9498; sm_cvar +// wait 9501; sm_cvar +// wait 9504; sm_cvar +// wait 9507; sm_cvar +// wait 9510; sm_cvar +// wait 9513; sm_cvar +// wait 9516; sm_cvar +// wait 9519; sm_cvar +// wait 9522; sm_cvar +// wait 9525; sm_cvar +// wait 9528; sm_cvar +// wait 9531; sm_cvar +// wait 9534; sm_cvar +// wait 9537; sm_cvar +// wait 9540; sm_cvar +// wait 9543; sm_cvar +// wait 9546; sm_cvar +// wait 9549; sm_cvar +// wait 9552; sm_cvar +// wait 9555; sm_cvar +// wait 9558; sm_cvar +// wait 9561; sm_cvar +// wait 9564; sm_cvar +// wait 9567; sm_cvar +// wait 9570; sm_cvar +// wait 9573; sm_cvar +// wait 9576; sm_cvar +// wait 9579; sm_cvar +// wait 9582; sm_cvar +// wait 9585; sm_cvar +// wait 9588; sm_cvar +// wait 9591; sm_cvar +// wait 9594; sm_cvar +// wait 9597; sm_cvar +// wait 9600; sm_cvar +// wait 9603; sm_cvar +// wait 9606; sm_cvar +// wait 9609; sm_cvar +// wait 9612; sm_cvar +// wait 9615; sm_cvar +// wait 9618; sm_cvar +// wait 9621; sm_cvar +// wait 9624; sm_cvar +// wait 9627; sm_cvar +// wait 9630; sm_cvar +// wait 9633; sm_cvar +// wait 9636; sm_cvar +// wait 9639; sm_cvar +// wait 9642; sm_cvar +// wait 9645; sm_cvar +// wait 9648; sm_cvar +// wait 9651; sm_cvar +// wait 9654; sm_cvar +// wait 9657; sm_cvar +// wait 9660; sm_cvar +// wait 9663; sm_cvar +// wait 9666; sm_cvar +// wait 9669; sm_cvar +// wait 9672; sm_cvar +// wait 9675; sm_cvar +// wait 9678; sm_cvar +// wait 9681; sm_cvar +// wait 9684; sm_cvar +// wait 9687; sm_cvar +// wait 9690; sm_cvar +// wait 9693; sm_cvar +// wait 9696; sm_cvar +// wait 9699; sm_cvar +// wait 9702; sm_cvar +// wait 9705; sm_cvar +// wait 9708; sm_cvar +// wait 9711; sm_cvar +// wait 9714; sm_cvar +// wait 9717; sm_cvar +// wait 9720; sm_cvar +// wait 9723; sm_cvar +// wait 9726; sm_cvar +// wait 9729; sm_cvar +// wait 9732; sm_cvar +// wait 9735; sm_cvar +// wait 9738; sm_cvar +// wait 9741; sm_cvar +// wait 9744; sm_cvar +// wait 9747; sm_cvar +// wait 9750; sm_cvar +// wait 9753; sm_cvar +// wait 9756; sm_cvar +// wait 9759; sm_cvar +// wait 9762; sm_cvar +// wait 9765; sm_cvar +// wait 9768; sm_cvar +// wait 9771; sm_cvar +// wait 9774; sm_cvar +// wait 9777; sm_cvar +// wait 9780; sm_cvar +// wait 9783; sm_cvar +// wait 9786; sm_cvar +// wait 9789; sm_cvar +// wait 9792; sm_cvar +// wait 9795; sm_cvar +// wait 9798; sm_cvar +// wait 9801; sm_cvar +// wait 9804; sm_cvar +// wait 9807; sm_cvar +// wait 9810; sm_cvar +// wait 9813; sm_cvar +// wait 9816; sm_cvar +// wait 9819; sm_cvar +// wait 9822; sm_cvar +// wait 9825; sm_cvar +// wait 9828; sm_cvar +// wait 9831; sm_cvar +// wait 9834; sm_cvar +// wait 9837; sm_cvar +// wait 9840; sm_cvar +// wait 9843; sm_cvar +// wait 9846; sm_cvar +// wait 9849; sm_cvar +// wait 9852; sm_cvar +// wait 9855; sm_cvar +// wait 9858; sm_cvar +// wait 9861; sm_cvar +// wait 9864; sm_cvar +// wait 9867; sm_cvar +// wait 9870; sm_cvar +// wait 9873; sm_cvar +// wait 9876; sm_cvar +// wait 9879; sm_cvar +// wait 9882; sm_cvar +// wait 9885; sm_cvar +// wait 9888; sm_cvar +// wait 9891; sm_cvar +// wait 9894; sm_cvar +// wait 9897; sm_cvar +// wait 9900; sm_cvar +// wait 9903; sm_cvar +// wait 9906; sm_cvar +// wait 9909; sm_cvar +// wait 9912; sm_cvar +// wait 9915; sm_cvar +// wait 9918; sm_cvar +// wait 9921; sm_cvar +// wait 9924; sm_cvar +// wait 9927; sm_cvar +// wait 9930; sm_cvar +// wait 9933; sm_cvar +// wait 9936; sm_cvar +// wait 9939; sm_cvar +// wait 9942; sm_cvar +// wait 9945; sm_cvar +// wait 9948; sm_cvar +// wait 9951; sm_cvar +// wait 9954; sm_cvar +// wait 9957; sm_cvar +// wait 9960; sm_cvar +// wait 9963; sm_cvar +// wait 9966; sm_cvar +// wait 9969; sm_cvar +// wait 9972; sm_cvar +// wait 9975; sm_cvar +// wait 9978; sm_cvar +// wait 9981; sm_cvar +// wait 9984; sm_cvar +// wait 9987; sm_cvar +// wait 9990; sm_cvar +// wait 9993; sm_cvar +// wait 9996; sm_cvar +// wait 9999; sm_cvar diff --git a/guide/categories b/guide/categories new file mode 100644 index 00000000..a1597e32 --- /dev/null +++ b/guide/categories @@ -0,0 +1,12 @@ +System +Server +Replicated +Game +Modes +Map +Items +Director +Population +Specials +Extra +Other diff --git a/guide/cvarlist b/guide/cvarlist new file mode 100644 index 00000000..19f7f3fc --- /dev/null +++ b/guide/cvarlist @@ -0,0 +1,2487 @@ +A) . . . + +achievement_debug 0 +achievement_disable 0 +action_progress_reset_interval 1 +adrenaline_backpack_speedup 0.5 +adrenaline_duration 15.0f +adrenaline_health_buffer 25 +adrenaline_revive_speedup 0.5 +adrenaline_run_speed 260 +ai_debug_los 0 +ai_debug_ragdoll_magnets 0 +ai_debug_shoot_positions 0 +ai_debug_speech 0 +ai_expression_frametime 0.05 +ai_expression_optimization 0 +ai_force_serverside_ragdoll 0 +ai_LOS_mode 0 +ai_post_frame_navigation 0 +ai_sequence_debug 0 +ai_setupbones_debug 0 +ai_shot_bias_max 1 +ai_shot_bias_min -1 +ai_show_hull_attacks 0 +ai_talk_idle_enabled 1 +ai_use_visibility_cache 1 +allow_all_bot_survivor_team 0 +allow_weapon_fire_to_use 0 +ammo_adrenaline_max 1 +ammo_ammo_pack_max 1 +ammo_assaultrifle_max 360 +ammo_autoshotgun_max 90 +ammo_chainsaw_max 20 +ammo_firstaid_max -1 +ammo_grenadelauncher_max 30 +ammo_huntingrifle_max 150 +ammo_m60_max 0 +ammo_minigun_max 800 +ammo_molotov_max 1 +ammo_pack_use_duration 3 +ammo_painpills_max 1 +ammo_pipebomb_max 1 +ammo_pistol_max -2 +ammo_shotgun_max 72 +ammo_smg_max 650 +ammo_sniperrifle_max 180 +ammo_turret_infected_damage 15 +ammo_turret_max 300 +ammo_turret_pz_damage 8 +ammo_turret_survivor_damage 1 +ammo_turret_tank_damage 40 +ammo_turret_witch_damage 16 +ammo_vomitjar_max 1 +anim_3wayblend 1 +anim_showstate -1 +anim_showstatelog 0 +async_allow_held_files 1 +async_mode 0 +async_serialize 0 +async_simulate_delay 0 +autoaim_max_deflect 0.99 +autoaim_max_dist 2160 +autoaim_viewing_client 1 + +B) . . . + +blackbox +BlendBonesMode 2 +boomer_exposed_time_tolerance 1 +boomer_leaker_chance 0 +boomer_pz_claw_dmg 4 +boomer_vomit_delay 1 +bot_crouch 0 +bot_freeze 0 +bot_mimic 0 +bot_mimic_yaw_offset 180 +breakable_disable_gib_limit 0 +breakable_multiplayer 1 +buddha 0 +bullet_ff_through_walls 0 + +C) . . . + +car_alarm_chirp_distance 350 +car_alarm_chirp_duration 1 +car_alarm_chirp_interval 3 +car_alarm_distance 750 +car_alarm_duration 15 +cc_norepeat 5 +cc_showmissing 0 +chainsaw_attack_cone 30 +chainsaw_attack_distance 50 +chainsaw_attack_force 400 +chainsaw_attract_distance 500 +chainsaw_damage 100 +chainsaw_debug 0 +chainsaw_hit_interval 0.1 +chainsaw_startup_fadeout_time 0.1 +changelevel_inhibit 0 +changelevel_pause_interval 8 +charger_pz_claw_dmg 10 +chet_debug_idle 0 +cl_clock_correction 1 +cl_clock_correction_adjustment_max_amount 200 +cl_clock_correction_adjustment_max_offset 90 +cl_clock_correction_adjustment_min_offset 10 +cl_clock_correction_force_server_tick 999 +cl_clock_showdebuginfo 0 +cl_clockdrift_max_ms 150 +cl_clockdrift_max_ms_threadmode 0 +cl_consistencycheck_interval 180 +cl_failremoteconnections 0 +cl_interpolate 1 +cl_resend 6 +cl_simdbones 0 +cl_skipslowpath 0 +cl_use_simd_bones 1 +claw_force 240 +claw_range 52 +claw_range_down 70 +claw_swing_duration 0.2 +claw_swing_interval 1 +claw_swing_miss_interval 0.5 +cleared_wanderer_respawn_chance 0 +clientport 27005 +closecaption 0 +cola_bottles_use_duration 1.95 +cola_bottles_use_range 75 +cola_bottles_use_tolerance 0.1 +collision_shake_amp 0.2 +collision_shake_freq 0.5 +collision_shake_time 0.5 +commentary_available 1 +common_dps_spew 0 +common_dps_window 2.0f +con_logfile +con_timestamp 0 +coop 0 +cpu_level 2 +cs_ShowStateTransitions -2 + +D) . . . + +datacachesize 32 +deathmatch 1 +debug_l4dverbose 1 +debug_materialmodifycontrol 0 +debug_overlay_fullposition 0 +debug_physimpact 0 +debug_touchlinks 0 +debug_visibility_monitor 0 +decalfrequency 10 +defibrillator_return_to_life_time 3 +defibrillator_use_duration 3 +developer 0 +director_adrenaline_density 6.48 +director_afk_timeout 45 +director_ai_tanks 0 +director_allow_infected_bots 1 +director_always_allow_wanderers 0 +director_ammo_density 6.48 +director_build_up_min_interval 15 +director_clear_count 2 +director_clear_timeout 10 +director_configurable_weapon_spawn_density -1 +director_convert_pills 1 +director_convert_pills_critical_health 50 +director_convert_pills_to_defib_health 25 +director_cs_weapon_spawn_chance 0.25 +director_custom_finale_tank_spacing 10 +director_debug 0 +director_debug_revisit 0 +director_debug_scavenge_items 0 +director_debug_threat_placement 0 +director_defibrillator_density 6.48 +director_finale_item_cluster_count 3 +director_finale_panic_waves 2 +director_finale_stage_delay 5 +director_force_background 0 +director_force_tank 0 +director_force_witch 0 +director_gas_can_density 6.48 +director_gauntlet_movement_bonus 5 +director_gauntlet_movement_bonus_max 30 +director_gauntlet_movement_threshold 500 +director_gauntlet_movement_timer_length 10 +director_gauntlet_tank_kite_distance 3000 +director_ingress_range 3000 +director_intensity_relax_allow_wanderers_threshold 0.3 +director_intensity_relax_allow_wanderers_threshold_expert 0.8 +director_intensity_relax_allow_wanderers_threshold_hard 0.5 +director_intensity_relax_threshold 0.9 +director_intensity_threshold 0.9 +director_item_cluster_range 50 +director_item_placement_method 1 +director_item_placement_spew 0 +director_magnum_spawn_density -1 +director_max_threat_areas 4 +director_melee_weapon_density 6.48 +director_min_start_players 1 +director_molotov_density 6.48 +director_music_dynamic_mob_size 25 +director_music_dynamic_mobstop_size 8 +director_music_dynamic_scanmobstop_size 3 +director_must_create_all_scavenge_items 0 +director_no_bosses 0 +director_no_death_check 0 +director_no_mobs 0 +director_no_specials 0 +director_no_survivor_bots 0 +director_num_reserved_wanderers 0 +director_output_population_visit 0 +director_oxygen_tank_density 6.48 +director_pain_pill_density 6.48 +director_panic_forever 0 +director_panic_wave_pause_max 7 +director_panic_wave_pause_min 5 +director_per_map_weapon_upgrade_chance 0.25 +director_pipe_bomb_density 6.48 +director_pistol_density 4 +director_propane_tank_density 6.48 +director_ready_duration 60 +director_ready_radius 300 +director_relax_max_flow_travel 3000 +director_relax_max_interval 45 +director_relax_min_interval 30 +director_report_screen_delay 10 +director_scavenge_item_override 0 +director_short_finale 0 +director_special_battlefield_respawn_interval 10 +director_special_finale_offer_length 10 +director_special_initial_spawn_delay_max 60 +director_special_initial_spawn_delay_max_extra 180 +director_special_initial_spawn_delay_min 30 +director_special_original_offer_length 30 +director_special_respawn_interval 45 +director_spectate_specials 0 +director_super_weapon_density 6.48 +director_survival_setup_time 0 +director_survivor_movement_window 10 +director_sustain_peak_max_time 5 +director_sustain_peak_min_time 3 +director_tank_bypass_max_flow_travel 1500 +director_tank_checkpoint_interval 15 +director_tank_force_offer 0 +director_tank_lottery_entry_time 0.1 +director_tank_lottery_selection_time 4 +director_tank_max_interval 500 +director_tank_min_interval 350 +director_tank_offer_debug 0 +director_test_loop 0 +director_test_loop_restarts_before_rotate 4 +director_test_loop_rotate_maps 1 +director_test_loop_time 3 +director_threat_clear_radius 500 +director_threat_max_separation 5000 +director_threat_min_separation 5000 +director_threat_radius 1000 +director_transition_timeout 120 +director_unfreeze_time 55 +director_upgradepack_density 6.48 +director_vomitjar_density 6.48 +director_vs_convert_pills 0.5 +director_weapon_cluster_range 100 +disable_dynamic_prop_loading 0 +disable_static_prop_loading 0 +disp_dynamic 0 +dispcoll_drawplane 0 +display_game_events 0 +displaysoundlist 0 +dt_ShowPartialChangeEnts 0 +dt_UsePartialChangeEnts 1 +dtwarning 0 +dtwatchclass +dtwatchent -1 +dtwatchvar + +E) . . . + +elevator_movedelay 0.75 +engine_no_focus_sleep 50 +ent_debugkeys +ent_messages_draw 0 +ent_show_contexts 0 +ent_steadystate_batchsize 20 +ent_steadystate_cooldown 5 +ent_steadystate_delay 5 +ent_steadystate_enable 1 +ent_steadystate_interval 0.1 +ent_text_allow_script 0 + +F) . . . + +fade_immediately 0 +fall_speed_fatal 720 +fall_speed_safe 560 +fidget_max_interval 20 +fidget_min_interval 10 +filesystem_buffer_size 0 +filesystem_max_stdio_read 16 +filesystem_native 1 +filesystem_report_buffered_io 0 +filesystem_unbuffered_io 1 +fire_absorbrate 3 +fire_dmgbase 3 +fire_dmginterval 1 +fire_dmgscale 0.1 +fire_extabsorb 5 +fire_extscale 12 +fire_growthrate 1 +fire_heatscale 1 +fire_incomingheatscale 0.1 +fire_maxabsorb 50 +first_aid_heal_percent 0.8 +first_aid_kit_max_heal 100 +first_aid_kit_use_duration 5 +fish_dormant 0 +flex_expression - +flex_talk 0 +fog_enable_water_fog 1 +force_disablex360 0 +fps_max 300 +fps_max_splitscreen 300 +fs_monitor_read_from_pack 0 +fs_report_sync_opens 0 +fs_warning_mode 0 +fuel_barrel_damage_amount 25 +fuel_barrel_damage_radius 400 +fuel_barrel_debug 0 +fuel_barrel_flame_instances 8 +fuel_barrel_health 20 +fuel_barrel_screen_shake_amplitude 20 +fuel_barrel_screen_shake_duration 1.5 +fuel_barrel_screen_shake_frequency 2.5 +fuel_barrel_screen_shake_radius 1000 +func_break_max_pieces 15 +func_break_reduction_factor 0.5 +func_breakdmg_bullet 0.5 +func_breakdmg_club 1.5 +func_breakdmg_explosive 1.25 + +G) . . . + +g_cv_phys2_freeze_ragdolls 0 +g_debug_constraint_sounds 0 +g_debug_doors 0 +g_debug_npc_vehicle_roles 0 +g_debug_physcannon 0 +g_debug_ragdoll_removal 0 +g_debug_transitions 0 +g_debug_vehiclebase 0 +g_debug_vehicleexit 0 +g_debug_vehiclesound 0 +g_Language 0 +g_ragdoll_max_fps 30 +g_ragdoll_min_fps 10 +gas_can_use_duration 2 +gascan_spit_time 2.9 +gascan_throw_force 32 +gascan_use_range 65 +gascan_use_tolerance 0.1 +god 0 +gpu_level 1 +gpu_mem_level 2 +grenadelauncher_damage 400 +grenadelauncher_ff_scale 0.12 +grenadelauncher_ff_scale_self 0.12 +grenadelauncher_force_kill 2000 +grenadelauncher_radius_kill 180 +grenadelauncher_radius_stumble 250 +grenadelauncher_show_radius 0 +grenadelauncher_startpos_forward 16 +grenadelauncher_startpos_right 4 +grenadelauncher_startpos_up 0 +grenadelauncher_vel_up 100.0f +grenadelauncher_vel_variance 10 +grenadelauncher_velocity 1200 + +H) . . . + +hack_elevator_z_offset 10 +helping_hand_debug 0 +hl2_episodic 0 +host_flush_threshold 14 +host_framerate 0 +host_limitlocal 0 +host_map c1m1_hotel.bsp +host_profile 0 +host_showcachemiss 0 +host_ShowIPCCallCount 0 +host_sleep 0 +host_speeds 0 +host_syncfps 0 +host_thread_mode 0 +host_threaded_sound 0 +host_timescale 1 +host_xbox_e3_restart 15 +hostfile host.txt +hostip -1062731518 +hostname step +hostport 27015 +hunk_track_allocation_types 0 +hunter_committed_attack_range 75 +hunter_leap_away_give_up_range 1000 +hunter_pounce_air_speed 700 +hunter_pounce_loft_rate 0.035 +hunter_pounce_max_loft_angle 45 +hunter_pounce_ready_range 500 +hunter_pz_claw_dmg 6 + +I) . . . + +in_forceuser 0 +incendiary_ammo_burn_time 4 +inferno_acid_spawn_angle 120 +inferno_child_spawn_interval_multiplier 1 +inferno_child_spawn_max_depth 4 +inferno_damage 40 +inferno_debug 0 +inferno_flame_lifetime 15 +inferno_flame_spacing 50 +inferno_forward_reduction_factor 0.9 +inferno_friendly_fire_duration 6 +inferno_initial_spawn_interval 0.05 +inferno_max_child_spawn_interval 1 +inferno_max_flames 32 +inferno_max_range 500 +inferno_max_trace_per_tick 16 +inferno_per_flame_spawn_duration 5 +inferno_scorch_decals 0 +inferno_spawn_angle 45 +inferno_surface_offset 20 +inferno_velocity_decay_factor 0.2 +inferno_velocity_factor 0.003 +inferno_velocity_normal_factor 0 +intensity_averaged_following_decay 20 +intensity_decay_time 30 +intensity_enemy_death_far_range 500 +intensity_enemy_death_near_range 150 +intensity_factor 0.25 +intensity_lock -1 +ip localhost + +J) . . . + +jockey_pounce_air_speed 700 +jockey_pounce_loft_rate 0.035 +jockey_pounce_max_loft_angle 45 +jockey_pz_claw_dmg 4 + +K) . . . + +None + +L) . . . + +l4d1_survivor_give_item 0 +l4d_show_incapupdate 0 +l4d_show_weaponequip 0 +l4d_stats_nogameplaycheck 0 +l4d_stats_track 1 +ladder_autocenter 1 +ladder_console_controls 0 +ladder_horizon -0.3 +lservercfgfile listenserver.cfg + +M) . . . + +map_noareas 0 +mapcyclefile mapcycle.txt +mat_360_aa_override 0 +mat_aaquality 2 +mat_antialias 4 +mat_bufferprimitives 1 +mat_bumpbasis 0 +mat_bumpmap 0 +mat_compressedtextures 1 +mat_debugalttab 0 +mat_debugdepth 0 +mat_depthbias_normal 0.0f +mat_diffuse 1 +mat_drawflat 0 +mat_dxlevel 100 +mat_dynamiclightmaps 0 +mat_envmapsize 128 +mat_envmaptgasize 32 +mat_excludetextures 0 +mat_fastnobump 0 +mat_fastspecular 1 +mat_fillrate 0 +mat_filtertextures 1 +mat_force_vertexfog 1 +mat_forceaniso 8 +mat_forcedynamic 0 +mat_forcehardwaresync 1 +mat_forcemanagedtextureintohardware 0 +mat_fullbright 0 +mat_hdr_level 2 +mat_hdr_tonemapscale 1 +mat_levelflush 1 +mat_lightmap_pfms 0 +mat_loadtextures 1 +mat_luxels 0 +mat_maxframelatency 1 +mat_measurefillrate 0 +mat_mipmaptextures 1 +mat_monitorgamma 1.8 +mat_monitorgamma_tv_enabled 0 +mat_monitorgamma_tv_exp 2.5 +mat_monitorgamma_tv_range_max 255 +mat_monitorgamma_tv_range_min 16 +mat_morphstats 0 +mat_motion_blur_enabled 0 +mat_norendering 0 +mat_normalmaps 0 +mat_normals 0 +mat_parallaxmap 1 +mat_phong 0 +mat_picmip -1 +mat_proxy 0 +mat_queue_mode -1 +mat_queue_report 0 +mat_reducefillrate 0 +mat_reduceparticles 0 +mat_report_queue_status 0 +mat_reversedepth 0 +mat_shadowstate 1 +mat_showenvmapmask 0 +mat_showlowresimage 0 +mat_showmiplevels 0 +mat_softwarelighting 0 +mat_softwareskin 0 +mat_specular 0 +mat_spewalloc 0 +mat_supportflashlight 1 +mat_tessellation_accgeometrytangents 0 +mat_tessellation_cornertangents 1 +mat_tessellation_update_buffers 1 +mat_tessellationmode 1 +mat_tonemapping_occlusion_use_stencil 0 +mat_triplebuffered 1 +mat_vsync 1 +mat_wireframe 0 +melee_collateral_shove_count 16 +melee_combo_reset_time 1.2 +melee_force_scalar 20 +melee_force_scalar_combat_character 5 +melee_range 70 +melee_show_swing 0 +mem_dumpstats 0 +mem_force_flush 0 +mem_force_flush_section +mem_incremental_compact_rate 0.5 +mem_level 2 +mem_max_heapsize 256 +mem_max_heapsize_dedicated 64 +mem_min_heapsize 48 +mem_periodicdumps 0 +mem_test_each_frame 0 +mem_test_every_n_seconds 0 +mem_test_quiet 0 +mix_dynamic_cull_max_CI_emitters 0 +mix_dynamic_debug_CI 0 +mix_dynamic_max_CI_emitters 30 +mix_dynamic_num_attack_vox_CI 2 +mm_datacenter_delay_mount_frames 6 +mm_datacenter_query_delay 5 +mm_datacenter_report_version 5 +mm_datacenter_retry_infochunks_attempts 3 +mm_datacenter_retry_interval 75 +mm_datacenter_update_interval 3600 +mm_heartbeat_seconds 300 +mm_heartbeat_seconds_xlsp 60 +mm_heartbeat_timeout 10 +mm_heartbeat_timeout_legacy 15 +mm_matchmaking_dlcsquery 2 +mm_matchmaking_version 10 +mm_server_search_inet_ping_interval 1 +mm_server_search_inet_ping_refresh 15 +mm_server_search_inet_ping_timeout 3 +mm_server_search_inet_ping_window 10 +mm_server_search_lan_ping_duration 1 +mm_server_search_lan_ping_interval 0.4 +mm_server_search_lan_ports 27015,27016,27017,27018,27019,27020 +mm_server_search_server_lifetime 180 +mm_server_search_update_interval 60 +mod_check_vcollide 0 +mod_dont_load_vertices 0 +mod_forcedata 1 +mod_forcetouchdata 1 +mod_load_anims_async 0 +mod_load_fakestall 0 +mod_load_mesh_async 0 +mod_load_showstall 0 +mod_load_vcollide_async 0 +mod_lock_mdls_on_load 1 +mod_lock_meshes_on_load 1 +mod_test_mesh_not_available 0 +mod_test_not_available 0 +mod_test_verts_not_available 0 +mod_touchalldata 1 +mod_trace_load 0 +morph_debug 0 +morph_path 7 +motd_enabled 1 +motdfile motd.txt +mounted_gun_cooldown_time 60 +mounted_gun_mount_cooldown_time 0.5 +mounted_gun_overheat_penalty_time 60 +mounted_gun_overheat_time 15 +mounted_gun_rate_of_fire 8 +mp_allowNPCs 1 +mp_allowspectators 1 +mp_autocrosshair 1 +mp_autokick 0 +mp_autoteambalance 1 +mp_blockstyle 1 +mp_bonusroundtime 15 +mp_buytime 1.5 +mp_c4timer 45 +mp_capdeteriorate_time 90 +mp_capstyle 1 +mp_chattime 10 +mp_clan_ready_signal ready +mp_clan_readyrestart 0 +mp_defaultteam 0 +mp_disable_respawn_times 0 +mp_enableroundwaittime 1 +mp_facefronttime 2 +mp_fadetoblack 0 +mp_falldamage 0 +mp_feetmaxyawrate 100 +mp_feetyawrate 180 +mp_feetyawrate_max 360 +mp_flashlight 1 +mp_footsteps 1 +mp_forcecamera 0 +mp_forcerespawn 1 +mp_fraglimit 0 +mp_freezetime 6 +mp_friendlyfire 1 +mp_gamemode coop +mp_humanteam any +mp_ik 1 +mp_limitteams 2 +mp_logdetail 0 +mp_maxrounds 0 +mp_playerid 1 +mp_playerid_delay 0 +mp_playerid_hold 0.25 +mp_restartgame 0 +mp_roundlimit 3 +mp_roundtime 5 +mp_showcleanedupents 0 +mp_showgestureslots 0 +mp_showroundtransitions 0 +mp_slammoveyaw 0 +mp_spawnprotectiontime 5 +mp_stalemate_at_timelimit 0 +mp_stalemate_enable 0 +mp_stalemate_timelimit 240 +mp_startmoney 800 +mp_teamlist hgrunt;scientist +mp_teamoverride 1 +mp_teamplay 0 +mp_teams_unbalance_limit 1 +mp_timelimit 0 +mp_tkpunish 0 +mp_tournament 0 +mp_waitingforplayers_cancel 0 +mp_waitingforplayers_restart 0 +mp_waitingforplayers_time 0 +mp_weapon_ak47_price 2500 +mp_weapon_aug_price 3500 +mp_weapon_awp_price 4750 +mp_weapon_deagle_price 650 +mp_weapon_elite_price 800 +mp_weapon_famas_price 2250 +mp_weapon_fiveseven_price 750 +mp_weapon_g3sg1_price 5000 +mp_weapon_galil_price 2000 +mp_weapon_glock_price 400 +mp_weapon_m249_price 5750 +mp_weapon_m3_price 1700 +mp_weapon_m4a1_price 3100 +mp_weapon_mac10_price 1400 +mp_weapon_mp5navy_price 1500 +mp_weapon_p228_price 600 +mp_weapon_p90_price 2350 +mp_weapon_scout_price 2750 +mp_weapon_sg550_price 4200 +mp_weapon_sg552_price 3500 +mp_weapon_tmp_price 1250 +mp_weapon_ump45_price 1700 +mp_weapon_usp_price 500 +mp_weapon_xm1014_price 3000 +mp_weaponstay 0 +mp_winlimit 0 +music_bank_max_duration 900 +music_bank_min_duration 900 +music_calm_min_interval 45 +music_dynamic_action_decay 10 +music_dynamic_ambient_decay 7 +music_dynamic_ambient_in_max 0.8 +music_dynamic_ambient_in_min 0.5 +music_dynamic_ambient_out_max 1 +music_dynamic_ambient_out_min 0 +music_dynamic_ambient_vol_min_alert 0.4 +music_dynamic_attack_CI_close_decay 0.2 +music_dynamic_attack_CI_close_distmax 600 +music_dynamic_attack_CI_distmax 2400 +music_dynamic_attack_CI_near_decay 0.2 +music_dynamic_attack_CI_near_distmax 300 +music_dynamic_attack_CI_num 30 +music_dynamic_attack_CI_veryclose_decay 0.2 +music_dynamic_attack_CI_veryclose_distmax 94 +music_dynamic_calm_decay 15 +music_dynamic_CI_sight_decay 8 +music_dynamic_damage_decay 10 +music_dynamic_damage_duck_damage_max 1 +music_dynamic_damage_duck_damage_min 0.5 +music_dynamic_damage_duck_max 0.37 +music_dynamic_damage_duck_min 0 +music_dynamic_damage_increment 0.1 +music_dynamic_debug 0 +music_dynamic_dodamage_decay 4 +music_dynamic_dodamage_increment 0.02 +music_dynamic_gunfire_decay 1 +music_dynamic_gunfire_increment 0.4 +music_dynamic_gunfireslow_decay 3 +music_dynamic_gunfireslow_increment 0.3 +music_dynamic_mob_action_close_max 0.42 +music_dynamic_mob_action_close_min 0 +music_dynamic_mob_action_decay 15 +music_dynamic_mob_action_increment 0.1 +music_dynamic_mob_action_max 1 +music_dynamic_mob_action_min 0 +music_dynamic_mob_choir_BPM 90 +music_dynamic_mob_choir_interval_beats 16 +music_dynamic_mob_choir_interval_randmultmax 3 +music_dynamic_mob_damage_max 1 +music_dynamic_mob_damage_min 0.6 +music_dynamic_mob_decay 15 +music_dynamic_mob_increment 0.1 +music_dynamic_mob_large 49 +music_dynamic_mob_max 1 +music_dynamic_mob_med 29 +music_dynamic_mob_min 0.5 +music_dynamic_mob_small 20 +music_dynamic_on 1 +music_dynamic_PZ_BPM 80 +music_dynamic_PZ_interval_randmultmax 5 +music_dynamic_scavenge_beat 1 +music_dynamic_SI_close_distmax 1200 +music_dynamic_SI_far_distmin 1800 +music_dynamic_SI_inrange_distmax 2400 +music_dynamic_solosuccess_damagemin 0.3 +music_dynamic_solosuccess_decay 4 +music_dynamic_solosuccess_increment 1 +music_dynamic_specials_interval_beats 5 +music_dynamic_threat_decay 6 +music_dynamic_update_interval 0.1 +music_dynamic_witch_alert_interval 37 +music_dynamic_witch_near_max 1800 +music_dynamic_witch_near_min 360 +music_intensity_override -1 +music_intensity_threshold 0.3 +music_large_area_reveal_repeat_threshold 60 +music_large_area_reveal_threshold 500000 +music_manager 1 +music_min_pending_threat_time 10 +music_min_safe_time 3 +music_moment_of_silence_repeat_interval 600 +music_moment_of_silence_start_delay 60 +mv_maxplayers 32 + +N) . . . + +name step +name2 unnamed +nav_area_bgcolor 0 0 0 30 +nav_area_max_size 50 +nav_blockers_can_affect_flow 1 +nav_coplanar_slope_limit 0.99 +nav_coplanar_slope_limit_displacement 0.7 +nav_corner_adjust_adjacent 18 +nav_create_area_at_feet 0 +nav_create_place_on_ground 0 +nav_debug_blocked 0 +nav_debug_finale_area 0 +nav_displacement_test 10000 +nav_drag_selection_volume_zmax_offset 32 +nav_drag_selection_volume_zmin_offset 32 +nav_draw_limit 500 +nav_edit 0 +nav_flood_select_tolerance 0 +nav_flow_max_survivor_climb_height 66 +nav_flow_max_survivor_drop_height 240 +nav_fog_edit 0 +nav_generate_fencetops 1 +nav_generate_fixup_jump_areas 1 +nav_generate_incremental_range 2000 +nav_generate_incremental_tolerance 0 +nav_gui_rebuild 0 +nav_lying_down_percent 50 +nav_max_auto_area_size 16384 +nav_max_view_distance 1800 +nav_max_vis_delta_list_length 64 +nav_obscure_range 400 +nav_potentially_visible_dot_tolerance 0.98 +nav_quicksave 1 +nav_recompute_flow_optimization 1 +nav_save_history 10 +nav_selected_set_border_color 100 100 0 255 +nav_selected_set_color 255 255 200 96 +nav_show_approach_points 0 +nav_show_area_info 0.5 +nav_show_compass 0 +nav_show_connectionblockers 0 +nav_show_danger 0 +nav_show_light_intensity 0 +nav_show_node_grid 0 +nav_show_node_id 0 +nav_show_nodes 0 +nav_show_player_area 0 +nav_show_player_counts 0 +nav_slope_limit 0.7 +nav_slope_tolerance 0.1 +nav_snap_to_grid 0 +nav_solid_props 0 +nav_split_place_on_ground 0 +nav_test_node 0 +nav_test_node_crouch 0 +nav_test_node_crouch_dir 4 +nav_trouble_test_area 0 +nav_trouble_test_debug_duration 10 +nav_trouble_walkable_backtrace 0 +nav_update_visibility_on_edit 0 +nb_acceleration 500 +nb_allow_avoiding 1 +nb_allow_climbing 1 +nb_allow_gap_jumping 1 +nb_avoid 2 +nb_avoid_interval 0.5 +nb_blind 0 +nb_chase_lead_time 2 +nb_debug_climbing 0 +nb_debug_history 0 +nb_direct_chase_nav_check 1 +nb_friction_forward 0 +nb_friction_sideways 3 +nb_goal_look_ahead_range 50 +nb_gravity 1000 +nb_head_aim_settle_duration 0.3 +nb_head_aim_steady_max_rate 100 +nb_ladder_align_range 50 +nb_lean_forward_accel 100 +nb_lean_max_angle 30 +nb_lean_rate 3 +nb_path_draw_inc 100 +nb_path_segment_influence_radius 100 +nb_player_crouch 0 +nb_player_move 1 +nb_player_move_direct 0 +nb_player_stop 0 +nb_player_walk 0 +nb_saccade_speed 1000 +nb_saccade_time 0.1 +nb_speed_look_ahead_range 150 +nb_stop 0 +nb_stuck_dump_filter_entindex 0 +nb_stuck_dump_filter_identifier +nb_stuck_dump_filter_min_duration 0 +nb_stuck_dump_filter_time_end 99999 +nb_stuck_dump_filter_time_start 0 +nb_stuck_dump_show_details 0 +nb_stuck_dump_threshold -1 +nb_update_debug 0 +nb_update_framelimit 15 +nb_update_frequency 0.1 +nb_update_maxslide 2 +nb_vision_ignore_survivors 0 +nb_vision_notice_hidden_range 50 +nb_yaw_rate 250 +net_allow_multicast 1 +net_allow_syslink 1 +net_blockmsg 0 +net_chan_limit_disabled 0 +net_chan_limit_in_debug_session 0 +net_chan_limit_msec 0 +net_chan_stats_dump 0 +net_chan_stats_dump_top_msgs 5 +net_chan_stats_lru 3 +net_chokeloop 0 +net_compresspackets 1 +net_compresspackets_minsize 1000 +net_compressvoice 0 +net_drawslider 0 +net_droppackets 0 +net_dumptest 0 +net_fakejitter 0 +net_fakelag 0 +net_fakeloss 0 +net_maxcleartime 4 +net_maxfilesize 16 +net_maxfragments 1200 +net_maxroutable 1200 +net_megasnapshot 1 +net_minroutable 16 +net_paranoid 1 +net_public_adr +net_queue_trace 0 +net_queued_packet_thread 1 +net_showdrop 0 +net_showeventlisteners 0 +net_showevents 0 +net_showfragments 0 +net_showmsg 0 +net_showpeaks 0 +net_showreliablesounds 0 +net_showsplits 0 +net_showtcp 0 +net_showudp 0 +net_showudp_remoteonly 0 +net_splitpacket_maxrate 15000 +net_splitrate 1 +net_usesocketsforloopback 0 +next 0 +nextlevel +noclip_fixup 1 +npc_height_adjust 1 +npc_vphysics 0 + +O) . . . + +old_radiusdamage 0 + +P) . . . + +pain_pills_decay_rate 0.27 +pain_pills_health_threshold 99 +pain_pills_health_value 50 +particle_test_attach_attachment 0 +particle_test_attach_mode follow_attachment +particle_test_file +password +perf_fire_bullet_firstpredictedonly 1 +perf_fire_bullet_single 0 +phys2_ccd_epsilon 0.01 +phys2_cmodels 1 +phys2_continuous_cd 1 +phys2_debug_dump_entities 0 +phys2_debug_traceray 0 +phys2_debug_wakeup 0 +phys2_dedicated_thread_pool 0 +phys2_dump_exclude_list 0 +phys2_dump_runtime_sizes 0 +phys2_hack_ignore_models 0 +phys2_hack_replace_bboxes 0 +phys2_merge_static_props 1 +phys2_num_threads 4 +phys2_preload_models 1 +phys2_ragdoll_clamp_angular_velocity 30 +phys2_ragdoll_clamp_linear_velocity 600 +phys2_ragdoll_create_constraints 1 +phys2_ragdoll_force_magnitude 5 +phys2_ragdoll_log 0 +phys2_ragdoll_torque_magnitude 0.03 +phys2_ragdoll_velocity 1 +phys2_report_asserts 1 +phys2_report_errors 1 +phys2_report_messages 0 +phys2_report_warnings 1 +phys2_shoot_speed 250 +phys2_vdb 0 +phys2_vdb_host localhost +phys2_version Version 2.2 (w/scheduler), built Nov 15 2021 13:55:21 +phys2_visualize 0 +phys_enable_experimental_optimizations 0 +phys_enable_PIX_counters 1 +phys_enable_query_cache 1 +phys_enable_simd_optimizations 1 +phys_explosion_force 7 +phys_impactforcescale 1 +phys_penetration_error_time 10 +phys_pushscale 1 +phys_ragdoll_force_magnitude 0.3 +phys_shoot_torque 100000000 +phys_speeds 0 +phys_stressbodyweights 5 +phys_timescale 1 +phys_upimpactforcescale 0.375 +physicsshadowupdate_render 0 +PhysPMC 0 +physx_debug_dll 0 +physx_subdir +physx_valve_dll 0 +pipe_bomb_beep_interval_delta 0.025 +pipe_bomb_beep_min_interval 0.1 +pipe_bomb_initial_beep_interval 0.5 +pipe_bomb_shake_amplitude 50 +pipe_bomb_shake_radius 750 +pipe_bomb_timer_duration 6 +pipeline_static_props 1 +player_debug_print_damage 0 +player_incap_use_radius 96 +player_old_armor 0 +player_throwforce 2000 +player_use_radius 96 +precache_all_survivors 0 +prop_active_gib_limit 999999 +prop_active_gib_max_fade_time 999999 +prop_use 0 +props_break_max_pieces 50 +props_break_max_pieces_perframe -1 +punch_angle_decay_rate 20 + +Q) . . . + +None + +R) . . . + +r_AirboatViewDampenDamp 1 +r_AirboatViewDampenFreq 7 +r_AirboatViewZHeight 0 +r_ambientboost 1 +r_ambientfactor 5 +r_ambientfraction 0.2 +r_ambientmin 0.3 +r_colorstaticprops 0 +r_debugrandomstaticlighting 0 +r_decal_cover_count 4 +r_decal_overlap_area 0.4 +r_decal_overlap_count 1 +r_decals 512 +r_decalstaticprops 1 +r_DispBuildable 0 +r_DispWalkable 0 +r_drawbatchdecals 1 +r_drawbrushmodels 1 +r_drawdecals 1 +r_DrawDisp 1 +r_drawentities 1 +r_drawfuncdetail 1 +r_drawleaf -1 +r_drawlightcache 0 +r_drawmodeldecals 1 +r_DrawModelLightOrigin 0 +r_drawmodelstatsoverlay 0 +r_drawmodelstatsoverlaydistance 500 +r_drawmodelstatsoverlaymax 1.5 +r_drawmodelstatsoverlaymin 0.1 +r_DrawSpecificStaticProp -1 +r_drawstaticprops 1 +r_drawtranslucentworld 1 +r_drawworld 1 +r_dscale_basefov 90 +r_dscale_fardist 2000 +r_dscale_farscale 4 +r_dscale_neardist 100 +r_dscale_nearscale 1 +r_dynamic 1 +r_entity -1 +r_eyeglintlodpixels 20 +r_eyemove 1 +r_eyes 1 +r_eyeshift_x 0 +r_eyeshift_y 0 +r_eyeshift_z 0 +r_eyesize 0 +r_fastzreject 0 +r_fastzrejectdisp 0 +r_flashlightdepthtexture 0 +r_flashlightscissor 1 +r_flex 1 +r_ForceRestore 0 +r_glint_alwaysdraw 0 +r_glint_procedural 0 +r_hunkalloclightmaps 1 +r_hwmorph 0 +r_itemblinkmax 0.3 +r_itemblinkrate 4.5 +r_JeepFOV 90 +r_JeepViewDampenDamp 1 +r_JeepViewDampenFreq 7 +r_JeepViewZHeight 10 +r_lightaverage 1 +r_lightcachemodel -1 +r_lightinterp 5 +r_lightmap -1 +r_lightstyle -1 +r_lockpvs 0 +r_lod -1 +r_maxmodeldecal 50 +r_modelwireframedecal 0 +r_nohw 0 +r_norefresh 0 +r_nosw 0 +r_novis 0 +r_occludeemaxarea 0 +r_occluderminarea 0 +r_occludermincount 0 +r_occlusion 1 +r_occlusionspew 0 +r_overlayfadeenable 0 +r_overlayfademax 2000 +r_overlayfademin 1750 +r_overlaywireframe 0 +r_partition_level -1 +r_proplightingfromdisk 1 +r_proplightingpooling -1 +r_queued_decals 0 +r_randomflex 0 +r_renderoverlayfragment 1 +r_rootlod 0 +r_shadowlod -1 +r_shadowlodbias 2 +r_shadowrendertotexture 1 +r_showenvcubemap 0 +r_skin 0 +r_slowpathwireframe 0 +r_spray_lifetime 10 +r_staticlight_streams 1 +r_staticprop_lod -1 +r_staticpropinfo 0 +r_teeth 1 +r_unloadlightmaps 0 +r_vehicleBrakeRate 1.5 +r_VehicleViewDampen 1 +r_visocclusion 0 +r_visualizetraces 0 +radius_damage_show_hits 0 +ragdoll_collide 0 +ragdoll_door_uncollide_time 4 +ragdoll_force_to_sleep_time 10 +ragdoll_self_collision 1 +ragdoll_sleepaftertime 5 +ragdoll_slowdown 1 +ragdoll_slowdown_time 5 +rcon_password +res_restrict_access 0 +rescue_distance 4500 +rescue_finale_ignore_distance 4000 +rescue_finale_spawn_range 4000 +rescue_ignore_distance 2000 +rescue_interval 2.5 +rescue_min_dead_time 60 +rescue_range 1000 +rescue_spawn_flow 400 +rescue_spawn_range 2000 +rescue_yell_delay 1 +rescue_yell_interval 6 +rpt_vprof_time 0.25 +rr_debugplayer -1 +rr_debugresponseconcept +rr_debugresponses 0 +rr_debugrule +rr_dumpresponses 0 +rr_followup_maxdist 1800 +rr_remarkable_maxdist 1500 +rr_remarkable_world_entities_replay_limit 1 +rr_thenany_score_slop 0 + +S) . . . + +sb_all_bot_game 0 +sb_allow_leading 0 +sb_allow_shoot_through_survivors 1 +sb_battlestation_give_up_range_from_human 1500 +sb_battlestation_human_hold_time 4 +sb_close_checkpoint_door_interval 2 +sb_close_threat_range 200 +sb_combat_saccade_speed 1000 +sb_crouch 0 +sb_debug_apoproach_wait_time 5 +sb_debug_buddy 0 +sb_debug_locomotion 0 +sb_debug_retreat 0 +sb_debug_team_avoidance 0 +sb_dont_bash 0 +sb_dont_shoot 0 +sb_enforce_proximity_lookat_timeout 10 +sb_enforce_proximity_range 1500 +sb_escort 0 +sb_far_hearing_range 1500 +sb_flashlight 0 +sb_follow_stress_factor 0.5 +sb_friend_immobilized_reaction_time_expert 0.5 +sb_friend_immobilized_reaction_time_hard 1 +sb_friend_immobilized_reaction_time_normal 2 +sb_friend_immobilized_reaction_time_vs 0.5 +sb_friendlyfire 0 +sb_hindrance_range 150 +sb_hold_position 0 +sb_l4d1_survivor_behavior 1 +sb_locomotion_wait_threshold 10 +sb_max_battlestation_range_from_human 750 +sb_max_scavenge_separation 750 +sb_max_team_melee_weapons 0 +sb_melee_approach_victim 0 +sb_min_attention_notice_time 0.5 +sb_min_orphan_time_to_cover 1 +sb_minigun_distance 30 +sb_move 1 +sb_narrow_corridor_width 100 +sb_near_hearing_range 500 +sb_neighbor_range 300 +sb_normal_saccade_speed 350 +sb_open_fire 0 +sb_path_lookahead_range 200 +sb_perf_crawl 0 +sb_perf_crawl_ang 5 +sb_perf_crawl_dist 128 +sb_perf_crawl_time 1 +sb_perf_dump 0 +sb_perf_dump_bots +sb_pushscale 1 +sb_reachability_cache_lifetime 3 +sb_reachable_cache_paranoia 0 +sb_replacement_interval 0 +sb_rescue_vehicle_loading_range 300 +sb_revive_friend_distance 125 +sb_separation_danger_max_range 600 +sb_separation_danger_min_range 200 +sb_separation_range 200 +sb_show_threat_areas 0 +sb_sidestep_for_horde 0 +sb_skill survivor +sb_stop 0 +sb_temp_health_consider_factor 0.5 +sb_threat_close_range 150 +sb_threat_exposure_stop 200000 +sb_threat_exposure_walk 50000 +sb_threat_far_range 600 +sb_threat_medium_range 300 +sb_threat_very_close_range 150 +sb_threat_very_far_range 1500 +sb_toughness_buffer 15 +sb_transition 1 +sb_unstick 1 +sb_use_button_range 1000 +sb_use_upgrades 1 +sb_vomit_blind_time 5 +scavenge_cluster_bonus_time 15 +scavenge_cluster_range_squared 100000 +scavenge_cluster_remove_on_pour 1 +scavenge_item_respawn_delay 20 +scavenge_match_finished_delay 5 +scavenge_overtime_grace_time 1 +scavenge_round_initial_time 90 +scavenge_round_restart_delay 10 +scavenge_round_restart_delay_tied 15 +scavenge_round_setup_time 45 +scavenge_score_bonus_time 20 +scavenge_wanderer_respawn_chance 3 +scene_async_prefetch_spew 0 +scene_clientflex 1 +scene_clientplayback 1 +scene_forcecombined 0 +scene_maxcaptionradius 1200 +scene_print 0 +scene_showlook 0 +scene_showmoveto 0 +scene_showunlock 0 +script_attach_debugger_at_startup 0 +script_break_in_native_debugger_on_error 0 +servercfgfile server.cfg +shotgun_reload_cancel_delay 0.5 +shout_going_to_die_interval 20 +shout_make_way_interval 2 +shout_max_warn_range 2000 +shout_min_special_warn_interval 5 +shout_min_use_range 200 +shout_min_warn_interval 10 +shout_threat_range 500 +shout_view_motion_threshold 0.01 +shout_view_target_threahold 0.01 +showtriggers 0 +singlestep 0 +sk_autoaim_mode 1 +sk_player_arm 1 +sk_player_chest 1 +sk_player_head 2 +sk_player_leg 1 +sk_player_stomach 1 +skill 1 +Smoker_escape_range 750 +smoker_pz_claw_dmg 4 +smoker_tongue_delay 1.5 +smoothstairs 1 +snd_foliage_db_loss 4 +snd_gain 1 +snd_gain_max 1 +snd_gain_min 0.01 +snd_refdb 60 +snd_refdist 36 +snd_vox_captiontrace 0 +snd_vox_globaltimeout 300 +snd_vox_sectimetout 300 +snd_vox_seqtimetout 300 +soundpatch_captionlength 2 +soundscape_debug 0 +spawn_behind_survivors_distance 0 +spec_filter any +spec_filter_infected any +spec_filter_survivors survivor +spec_freeze_time 4 +spec_freeze_traveltime 0.4 +spew_consolelog_to_debugstring 0 +spit_scaling_min_scale 0.35 +spitter_pz_claw_dmg 4 +ss_voice_hearpartner 0 +steam_controller_haptics 1 +steamworks_immediate_upload 1 +steamworks_server_sessionid 0 +steamworks_show_uploads 0 +steamworks_stats_disable 0 +step_spline 0 +still_vel_limit 5 +still_view_accel_limit 1500 +stringtable_alwaysrebuilddictionaries 0 +stringtable_usedictionaries 1 +studio_queue_mode 1 +suitvolume 0.25 +survival_boomer_limit_increase 0 +survival_charger_limit_increase 0 +survival_generate_fake_times 1 +survival_horde_stage_interval 60 +survival_horde_stage_interval_decay 2 +survival_hunter_limit_increase 1 +survival_jockey_limit_increase 1 +survival_lull_time 15 +survival_lull_time_increment 15 +survival_lull_time_max 60 +survival_max_boomers 2 +survival_max_chargers 2 +survival_max_hunters 3 +survival_max_jockeys 2 +survival_max_smokers 4 +survival_max_specials 8 +survival_max_spitters 3 +survival_round_restart_delay 15 +survival_smoker_limit_increase 1 +survival_special_limit_increase 1 +survival_special_spawn_interval 20 +survival_special_spawn_interval_decay 1 +survival_special_stage_interval 60 +survival_spitter_limit_increase 1 +survival_tank_multiple_spawn_delay 10 +survival_tank_stage_interval 80 +survival_tank_stage_interval_decay 20 +survivor_accuracy_upgrade_factor 0.5 +survivor_allow_crawling 0 +survivor_burn_factor_easy 0.2 +survivor_burn_factor_expert 1 +survivor_burn_factor_hard 0.4 +survivor_burn_factor_normal 0.2 +survivor_calm_damage_delay 5 +survivor_calm_deploy_delay 2 +survivor_calm_intensity 0.25 +survivor_calm_no_flashlight 1 +survivor_calm_recent_enemy_delay 5 +survivor_calm_weapon_delay 5 +survivor_crawl_speed 15 +survivor_crouch_speed 75 +survivor_damage_speed_factor 0.25f +survivor_death_anims 0 +survivor_debug_active_area_set 0 +survivor_debug_in_combat 0 +survivor_debug_visibility 0 +survivor_drag_continuous_fire 1 +survivor_drag_speed_multiplier 0.5 +survivor_drag_type 0 +survivor_ff_avoidance 0 +survivor_ff_avoidance_pitch 20 +survivor_ff_avoidance_yaw 10 +survivor_ff_tolerance 26 +survivor_fog_vocalize_percent 0.23 +survivor_friendly_fire_factor_easy 0 +survivor_friendly_fire_factor_expert 0.5 +survivor_friendly_fire_factor_hard 0.3 +survivor_friendly_fire_factor_normal 0.1 +survivor_fumes_walk_speed 85 +survivor_give_attract_timeout 12 +survivor_hanging_eye_height 85 +survivor_hanging_from_tongue_eye_height 40 +survivor_helping_hand_inhibit_duration 1 +survivor_hitsound_interval_timer 0.1 +survivor_incap_decay_rate 3 +survivor_incap_health 300 +survivor_incap_hopeless_decay_rate 12 +survivor_incap_max_fall_damage 200 +survivor_incap_tongued_decay_rate 12 +survivor_incapacitated_accuracy_penalty 0.4 +survivor_incapacitated_cycle_time 0.3 +survivor_incapacitated_dizzy_severity 2 +survivor_incapacitated_dizzy_timer 2.5 +survivor_incapacitated_eye_height 24 +survivor_incapacitated_reload_multiplier 1.25 +survivor_incapacitated_roll 20 +survivor_intensity_decay_threat_range 750 +survivor_intensity_recent_enemy_duration 5 +survivor_it_duration 20 +survivor_knockdown_roll -20 +survivor_lazy_active_set 1 +survivor_lean 0 +survivor_ledge_grab_ground_check_time 3 +survivor_ledge_grab_health 300 +survivor_ledge_scales_health 1 +survivor_limit 4 +survivor_limp_health 40 +survivor_limp_walk_speed 85 +survivor_max_incapacitated_count 2 +survivor_max_lunge_stagger_distance 30 +survivor_max_lunge_stagger_speed 220 +survivor_max_tongue_stagger_distance 200 +survivor_max_tongue_stagger_duration 1.5 +survivor_max_tug_distance 300 +survivor_max_tug_duration 1.5 +survivor_min_lunge_stagger_speed 50 +survivor_model_selection -1 +survivor_no_pounce_or_hang 0 +survivor_pounce_victim_eye_height 12 +survivor_push 0 +survivor_respawn_with_guns 1 +survivor_revive_after_drag 0 +survivor_revive_continuous_fire 1 +survivor_revive_duration 5 +survivor_revive_health 30 +survivor_shove_teammates 0 +survivor_speed 210 +survivor_speed_boost_factor 1.2 +survivor_sprint_multiplier 1.5 +survivor_stun_immunity_duration 0 +survivor_team_hit_pitch_max 10 +survivor_team_hit_pitch_min -10 +survivor_team_hit_yaw_max 10 +survivor_team_hit_yaw_min -10 +survivor_teammatefocus_enabled 0 +survivor_teammatefocus_speed 10 +survivor_teammatefocus_stickyness 5 +survivor_unstoppable_speed 150 +survivor_upgrade_reload_duration 0.5 +survivor_vision_range 1500 +survivor_vision_range_obscured 750 +sv__ragdoll_max_remove_per_frame 1 +sv_accelerate 5 +sv_airaccelerate 10 +sv_allow_lobby_connect_only 1 +sv_allow_votes 1 +sv_allow_wait_command 1 +sv_allowdownload 1 +sv_allowupload 1 +sv_alltalk 0 +sv_alternateticks 0 +sv_always_full_flush 0 +sv_autosave 1 +sv_backspeed 0.6 +sv_banid_dev_enabled 0 +sv_banid_enabled 1 +sv_benchmark_autovprofrecord 0 +sv_benchmark_numticks 3300 +sv_bonus_challenge 0 +sv_bounce 0 +sv_cacheencodedents 1 +sv_cheats 0 +sv_client_cmdrate_difference 20 +sv_client_max_interp_ratio 5 +sv_client_min_interp_ratio 1 +sv_client_predict -1 +sv_clockcorrection_msecs 60 +sv_consistency 1 +sv_contact +sv_creationtickcheck 1 +sv_cycle_latch_timer 0.2 +sv_debug_entity +sv_debug_player_use 0 +sv_debugmanualmode 0 +sv_debugtempentities 0 +sv_deltaprint 0 +sv_deltatime 0 +sv_demo_entity_record_rate 30 +sv_disable_glow_faritems 0 +sv_disable_glow_survivors 0 +sv_disable_querycache 0 +sv_doors_push_players 0 +sv_downloadurl +sv_dumpstringtables 0 +sv_enableoldqueries 0 +sv_extra_client_connect_time 15 +sv_fallen_survivor_health_multiplier 20 +sv_filterban 1 +sv_footstepinterval 0.22 +sv_footsteps 1 +sv_force_time_of_day -1 +sv_force_transmit_ents 0 +sv_forcepreload 0 +sv_friction 4 +sv_gameinstructor_disable 0 +sv_gametypes coop,realism,survival,versus,scavenge,dash,holdout,shootzones +sv_gravity 800 +sv_healing_gnome_replenish_rate 1.5 +sv_hibernate_ms 20 +sv_hibernate_ms_vgui 20 +sv_hibernate_postgame_delay 5 +sv_hibernate_when_empty 1 +sv_hosting_lobby 0 +sv_infected_ceda_vomitjar_probability 0.1 +sv_infected_police_tonfa_probability 0.03 +sv_infected_riot_control_tonfa_probability 0.15 +sv_infected_scale_max 1 +sv_infected_scale_min 1 +sv_infinite_ammo 0 +sv_infinite_primary_ammo 0 +sv_instancebaselines 1 +sv_lagcompensationforcerestore 1 +sv_lagflushbonecache 1 +sv_lagpushticks 0 +sv_lan 0 +sv_log_onefile 0 +sv_logbans 0 +sv_logblocks 0 +sv_logdownloadlist 0 +sv_logecho 1 +sv_logfile 1 +sv_logflush 0 +sv_logsdir logs +sv_massreport 0 +sv_master_legacy_mode 0 +sv_master_share_game_socket 1 +sv_max_queries_sec 3 +sv_max_queries_sec_global 60 +sv_max_queries_window 30 +sv_max_usercmd_future_ticks 8 +sv_maxclientframes 128 +sv_maxcmdrate 40 +sv_maxplayers 32 +sv_maxrate 0 +sv_maxreplay 0 +sv_maxroutable 1200 +sv_maxspeed 1000 +sv_maxunlag 1 +sv_maxupdaterate 60 +sv_maxvelocity 3500 +sv_memlimit 0 +sv_mincmdrate 0 +sv_minrate 5000 +sv_minupdaterate 10 +sv_multiplayer_maxtempentities 32 +sv_multiplayer_sounds 20 +sv_music_debug 0 +sv_netvisdist 10000 +sv_new_delta_bits 1 +sv_no_navmesh 0 +sv_noclipaccelerate 5 +sv_noclipduringpause 0 +sv_noclipfriction 4 +sv_noclipspeed 5 +sv_optimizedmovement 1 +sv_parallel_packentities 1 +sv_parallel_sendsnapshot 1 +sv_password +sv_pausable 0 +sv_pausable_dev 1 +sv_pausable_dev_ds 0 +sv_permawipe 0 +sv_player_max_separation_force 500 +sv_player_stuck_tolerance 10 +sv_playerperfhistorycount 20 +sv_prop_door_max_close_attempts 8 +sv_pure_kick_clients 1 +sv_pure_trace 0 +sv_pushaway_clientside 0 +sv_pushaway_clientside_size 15 +sv_pushaway_force 300000 +sv_pushaway_max_force 2000 +sv_pushaway_max_player_force 10000 +sv_pushaway_min_force 500 +sv_pushaway_min_player_speed 75 +sv_pushaway_player_force 200000 +sv_pvsskipanimation 1 +sv_pz_endgame_vote_period 12 +sv_pz_endgame_vote_post_period 5 +sv_quota_stringcmdspersecond 800 +sv_ragdoll_maxcount 75 +sv_ragdoll_maxcount_boss 3 +sv_ragdoll_maxcount_generic 60 +sv_ragdoll_maxcount_gib 30 +sv_ragdoll_maxcount_special 12 +sv_ragdoll_maxcount_survivor 3 +sv_ragdoll_version 1 +sv_rcon_banpenalty 0 +sv_rcon_log 1 +sv_rcon_maxfailures 10 +sv_rcon_minfailures 5 +sv_rcon_minfailuretime 30 +sv_regeneration_force_on 0 +sv_regeneration_wait_time 1 +sv_region -1 +sv_rescue_disabled 0 +sv_reservation_grace 5 +sv_reservation_timeout 120 +sv_rollangle 0 +sv_rollspeed 200 +sv_runcmds 1 +sv_script_think_interval 0.1 +sv_search_key +sv_sendtables 0 +sv_show_whitelist_msg 0 +sv_showanimstate -1 +sv_showanimstate_activities 1 +sv_showanimstate_log 0 +sv_showdamage 0 +sv_showdebugtracers 0 +sv_showfootsteps 0 +sv_showhitboxes -1 +sv_showimpacts 0 +sv_showladders 0 +sv_showlagcompensation 0 +sv_showonlyhitbox -1 +sv_showplayerhitboxes 0 +sv_showprecachedsounds 0 +sv_skyname sky_l4d_c1_1_hdr +sv_sound_discardextraunreliable 1 +sv_soundemitter_trace -1 +sv_specaccelerate 5 +sv_specnoclip 1 +sv_specspeed 3 +sv_spectatoridletime 3 +sv_stats 1 +sv_steamgroup +sv_steamgroup_exclusive 0 +sv_stepsize 18 +sv_stopspeed 75 +sv_stressbots 0 +sv_strict_notarget 0 +sv_suppress_viewpunch 0 +sv_sync_anims_spawn 0 +sv_sync_client_updates 0 +sv_tags +sv_tankpropfade 1 +sv_teststepsimulation 1 +sv_thinktimecheck 0 +sv_threaded_init 0 +sv_timeout 65 +sv_tracereffects_limit_general 15 +sv_turbophysics 1 +sv_turbophysics_shadow 0 +sv_unlag 1 +sv_unlag_debug 0 +sv_unlag_fixstuck 0 +sv_unlockedchapters 1 +sv_useexplicitdelete 1 +sv_vehicle_autoaim_scale 8 +sv_visiblemaxplayers -1 +sv_voicecodec vaudio_speex +sv_voiceenable 1 +sv_vote_command_delay 2 +sv_vote_creation_timer 180 +sv_vote_failure_timer 0 +sv_vote_issue_change_difficulty_allowed 1 +sv_vote_issue_change_map_later_allowed 1 +sv_vote_issue_change_map_now_allowed 1 +sv_vote_issue_change_mission_allowed 1 +sv_vote_issue_kick_allowed 1 +sv_vote_issue_restart_game_allowed 1 +sv_vote_kick_ban_duration 5 +sv_vote_plr_map_limit 3 +sv_vote_show_caller 1 +sv_vote_timer_duration 15 +sv_wateraccelerate 10 +sv_waterdist 12 +sv_waterfriction 1 +sv_zombie_touch_trigger_delay 0.5 +sv_zoo_model_filter +sv_zoo_spacing 64 +sv_zoo_spacing_rows 192 +sv_zoo_spacing_wrap 80 +sv_zoo_tint_clr 153 153 153 255 +sv_zoo_tint_loop 1 +sv_zoo_wrap_skin 1 +sys_minidumpexpandedspew 1 +sys_minidumpspewlines 500 + +T) . . . + +tank_attack_range 50 +tank_auto_swing 0 +tank_burn_duration 75 +tank_burn_duration_expert 85 +tank_burn_duration_hard 80 +tank_fist_radius 15 +tank_ground_pound_duration 1.5 +tank_ground_pound_reveal_distance 500 +tank_pz_forward -0.5 +tank_raffle_debug 0 +tank_rock_overhead_percent 100 +tank_run_spawn_delay 15 +tank_stasis_time_suicide 30 +tank_stuck_failsafe 1 +tank_stuck_time_choose_new_target 2 +tank_stuck_time_suicide 10 +tank_stuck_visibility_tolerance_choose_new_target 5 +tank_stuck_visibility_tolerance_suicide 15 +tank_swing_arc 180 +tank_swing_duration 0.2 +tank_swing_fast_interval 0.6 +tank_swing_interval 1.5 +tank_swing_miss_interval 1 +tank_swing_physics_prop_force 4 +tank_swing_range 56 +tank_swing_yaw 80 +tank_throw_aim_error 100 +tank_throw_allow_range 250 +tank_throw_lead_time_factor 0.5 +tank_throw_loft_rate 0.01 +tank_throw_max_loft_angle 30 +tank_throw_min_interval 8 +tank_visibility_tolerance_suicide 60 +tank_windup_time 0.5 +target_scan_use_query_cache 1 +tauntfrequency 1 +telemetry_demoend 0 +telemetry_demostart 0 +telemetry_filtervalue 500 +telemetry_framecount 0 +telemetry_level 0 +telemetry_pause 0 +telemetry_resume 0 +telemetry_server localhost +template_debug 0 +terror_ammo_multiplier 2 +testscript_debug 0 +tf_arena_max_streak 5 +tf_arena_preround_time 10 +tf_arena_round_time 0 +tf_escort_score_rate 1 +think_limit 0 +threadpool_affinity 1 +threadpool_reserve 0 +tongue_allow_voluntary_release 0 +tongue_bend_point_deflection 5 +tongue_bend_point_needs_LOS 0 +tongue_break_from_damage_amount 50 +tongue_bullet_radius 6 +tongue_choke_damage_amount 10 +tongue_choke_damage_interval 1 +tongue_cone_start_tolerance 0.1 +tongue_debug 0 +tongue_drag_damage_amount 3 +tongue_dropping_to_ground_time 2 +tongue_fly_speed 1000 +tongue_force_break 0 +tongue_gravity_force 4000 +tongue_health 100 +tongue_hit_delay 20 +tongue_los_forgiveness_time 1 +tongue_miss_delay 15 +tongue_no_progress_break_interval 10 +tongue_no_progress_choke_early_ambush_delay 0.5 +tongue_no_progress_choke_early_delay 1.5 +tongue_no_progress_choke_time 0.5 +tongue_no_progress_damage_interval 0.5 +tongue_no_progress_tolerance 25 +tongue_player_dropping_to_ground_time 1 +tongue_range 750 +tongue_release_fatigue_penalty 2500 +tongue_start_pull_delay 0.1 +tongue_unbend 1 +tongue_vertical_choke_dot 0 +tongue_vertical_choke_height 40 +tongue_vertical_choke_time_off_ground 0.5 +tongue_victim_acceleration 30 +tongue_victim_accuracy_penalty 0.133 +tongue_victim_max_speed 175 +tongue_vs_cone_start_tolerance 0.015 +tp_schedule_post_think 1 +trace_report 0 +tutor 0 +tv_allow_camera_man 1 +tv_allow_static_shots 1 +tv_autorecord 0 +tv_autoretry 1 +tv_chatgroupsize 0 +tv_chattimelimit 8 +tv_debug 0 +tv_delay 30 +tv_delaymapchange 0 +tv_deltacache 2 +tv_dispatchmode 1 +tv_enable 0 +tv_maxclients 128 +tv_maxrate 8000 +tv_name SourceTV +tv_overridemaster 0 +tv_password +tv_port 27020 +tv_relaypassword +tv_relayvoice 1 +tv_snapshotrate 16 +tv_timeout 30 +tv_title SourceTV +tv_transmitall 0 + +U) . . . + +upgrade_explosive_bullet_force 2 +upgrade_explosive_slug_force 4 +upgrade_laser_sight_spread_factor 0.4 +upgrade_pack_use_duration 1.9 +upgrade_show_explosive_ammo_radius 0 +upgradepack_forward_dist 30 +upgradepack_max_drop_dist 30 + +V) . . . + +vcr_verbose 0 +versus_boss_buffer 2200 +versus_boss_debug 0 +versus_boss_flow_max 0.9 +versus_boss_flow_max_finale 0.6 +versus_boss_flow_max_intro 0.75 +versus_boss_flow_min 0.25 +versus_boss_flow_min_finale 0.25 +versus_boss_flow_min_intro 0.5 +versus_boss_padding_max 0.3 +versus_boss_padding_min 0.1 +versus_force_start_time 90 +versus_level_restart_delay 4 +versus_marker_num 3 +versus_round_restarttimer 15 +versus_round_restarttimer_finale 10 +versus_shove_hunter_fov 90 +versus_shove_hunter_fov_pouncing 45 +versus_shove_jockey_fov_leaping 45 +versus_special_respawn_interval 20 +versus_tank_chance 0.75 +versus_tank_chance_finale 0.1 +versus_tank_chance_intro 0.3 +versus_tank_flow_team_variation 0.1 +versus_wandering_zombie_density 0.027 +versus_winning_team_goes_last 1 +versus_witch_chance 0.75 +versus_witch_chance_finale 0.1 +versus_witch_chance_intro 0.3 +versus_witch_flow_team_variation 0 +view_offset 0 +view_offset_down 16 +view_offset_forward 8 +view_offset_up -16 +violence_ablood 1 +violence_agibs 1 +violence_hblood 1 +violence_hgibs 1 +vis_debug 0 +vis_force 0 +vismon_poll_frequency 0.5 +vismon_trace_limit 12 +voice_inputfromfile 0 +voice_recordtofile 0 +voice_serverdebug 0 +voice_xsend_debug 0 +vomitjar_duration_infected_bot 20 +vomitjar_duration_infected_pz 20 +vomitjar_duration_survivor 5 +vomitjar_radius 110 +vomitjar_radius_survivors 0 +vprof_counters 0 +vprof_counters_show_minmax 0 +vprof_dump_oninterval 0 +vprof_dump_spikes 0 +vprof_dump_spikes_budget_group +vprof_dump_spikes_hiearchy 0 +vprof_dump_spikes_node +vprof_dump_spikes_terse 0 +vprof_scope_entity_gamephys 0 +vprof_scope_entity_thinks 0 +vprof_server_spike_threshold 999 +vprof_server_thread 0 +vprof_think_limit 0 +vs_defib_penalty 25 +vs_incap_bonus 10 +vs_max_team_switches 1 +vs_score_pp_health 0.5 +vs_score_pp_healthbuffer 0.25 +vs_survival_bonus 25 +vs_survivor_damage_reduction 0.8 +vs_tank_damage 24 +vs_threat_initial_distance_first_map_max 12000 +vs_threat_initial_distance_first_map_min 8000 +vs_threat_initial_distance_max 8000 +vs_threat_initial_distance_min 3000 +vs_threat_radius 200 +vs_tiebreak_bonus 25 + +W) . . . + +weapon_showproficiency 0 +witch_force_wander 0 +witch_rage_ramp_duration 5 +workshop_filter_items_by_history 0 + +X) . . . + +xbox_autothrottle 1 +xbox_steering_deadzone 0 +xbox_throttlebias 100 +xbox_throttlespoof 200 +xc_crouch_debounce 0 + +Y) . . . + +None + +Z) . . . + +z_acquire_far_range 2500 +z_acquire_far_time 5 +z_acquire_near_range 200 +z_acquire_near_time 0.5 +z_acquire_time_variance_factor 0.25 +z_added_light_max 0.25 +z_added_light_min 0.025 +z_alert_dot 0.3 +z_alert_range 1000 +z_allow_ai_to_use_abilities 1 +z_anim_idle_speed_max 85 +z_anim_idle_speed_min 20 +z_attack_change_target_range 100 +z_attack_flow_range 1500 +z_attack_incapacitated_damage 10 +z_attack_infected_it_damage 10 +z_attack_interval 1 +z_attack_max_range 20 +z_attack_min_range 10 +z_attack_movement_penalty 0.5 +z_attack_on_the_run_range 35 +z_attack_pz_it_damage 20 +z_attention_range_lying_modifier 0.15 +z_attention_range_sitting_modifier 0.35 +z_avoid_max_range 100 +z_avoid_min_range 30 +z_avoid_power 10 +z_avoidforce 2500 +z_avoidteammates 1 +z_award_debug 0 +z_background_limit 20 +z_backspeed 450 +z_bbq_min 0 +z_bbq_rate 0.005 +z_boomer_limit 1 +z_boomer_near_dist 180 +z_boss_crouch 0 +z_boundary_clear_type 1 +z_boundary_max_range 5000 +z_boundary_spread_speed 200 +z_brawl_chance 2 +z_breakable_damage 4 +z_burn_max 0.85 +z_burn_rate 0.01 +z_burning_lifetime 30 +z_carry_max_mass 250 +z_chance 60 +z_charge_duration 2.5 +z_charge_impact_angle 0.7 +z_charge_impact_radius 120 +z_charge_interval 12 +z_charge_max_damage 10 +z_charge_max_force 800 +z_charge_max_speed 500 +z_charge_min_force 550 +z_charge_prop_damage 20 +z_charge_start_speed 250 +z_charge_tooshort 0 +z_charge_warmup 0.5 +z_charger_allow_shove 0 +z_charger_health 600 +z_charger_impact_epsilon 8 +z_charger_limit 1 +z_charger_max_prop_force 3000 +z_charger_pound_dmg 15 +z_charger_probe_alone 6 +z_charger_probe_attack 24 +z_checkpoint_debug 0 +z_claw_hit_pitch_max 20 +z_claw_hit_pitch_min -20 +z_claw_hit_yaw_max 20 +z_claw_hit_yaw_min -20 +z_clear_area_range 300 +z_clear_max_time 5 +z_clear_min_time 0.2 +z_clear_min_time_range 300 +z_clear_range 750 +z_close_target_notice_distance 60 +z_common_limit 30 +z_cooldown_spawn_safety_range 1000 +z_cough_cloud_expire 14 +z_cough_cloud_initial_cough_delay 0 +z_cough_cloud_radius 175 +z_credits_interval 0 +z_crouch_speed 75 +z_cull_timeout 5 +z_damage_screen_fade_alpha 30 +z_damage_screen_fade_duration 0.5 +z_deafen_radius_one 100 +z_deafen_radius_three 200 +z_deafen_radius_two 150 +z_debug 0 +z_debug_avoid 0 +z_debug_breakables 0 +z_debug_climb 0 +z_debug_cull +z_debug_escape_route 0 +z_debug_escape_scan 0 +z_debug_falling_damage 0 +z_debug_fog 0 +z_debug_infected_server_anim 0 +z_debug_ledges 0 +z_debug_mob_spawn 0 +z_debug_neighbors 0 +z_debug_population 0 +z_debug_shared_random 0 +z_debug_spawn_ahead 0 +z_debug_spawn_set -1 +z_debug_spawnable_areas 0 +z_debug_stuck +z_debug_tank_spawn 1 +z_density_region_length 1500 +z_destroy_on_attack 0 +z_difficulty Normal +z_director_special_spawn_delay 10 +z_discard_min_range 1000 +z_discard_range 2500 +z_do_tracers 1 +z_dont_clear 0 +z_door_pound_damage 60 +z_door_reopen_interval 0.5 +z_door_retry_interval 1 +z_experimental_blast_damage_probability 100 +z_exploding_force 5000 +z_exploding_health 50 +z_exploding_inner_radius 130 +z_exploding_outer_radius 200 +z_exploding_shove_interval 10 +z_exploding_shove_max 5 +z_exploding_shove_min 4 +z_exploding_speed 175 +z_exploding_splat 50 +z_exploding_splat_radius 200 +z_expressions 1 +z_fallen_kill_suppress_time 300 +z_fallen_max_count 1 +z_falling_land_forward_speed 200 +z_falling_land_hard_speed 200 +z_falling_land_speed 200 +z_fatal_blast_incineration_probability 0 +z_fatal_blast_max_ragdolls 16 +z_female_boomer_spawn_chance 25 +z_finale_chance 100 +z_finale_ghost_player_spawn_on_survivor 1 +z_finale_spawn_mob_safety_range 600 +z_finale_spawn_safety_range 300 +z_finale_spawn_safety_range_override 0 +z_finale_spawn_tank_safety_range 600 +z_fog_spawn 0 +z_force_attack_from_sound_range 750 +z_forcezombiemodel 0 +z_forcezombiemodelname common_male01 +z_forwardspeed 450 +z_friendly_fire_forgiveness 1 +z_frustration 1 +z_frustration_lifetime 20 +z_frustration_los_delay 2 +z_frustration_spawn_delay 10 +z_gas_health 250 +z_gas_speed 210 +z_ghost_ahead_flow 500 +z_ghost_checkpoint_spawn_interval 30 +z_ghost_cooldown 0 +z_ghost_delay_max 30 +z_ghost_delay_min 20 +z_ghost_delay_minspawn 3 +z_ghost_duration 1 +z_ghost_finale_spawn_interval 20 +z_ghost_friction 1.5 +z_ghost_group_spawn 1 +z_ghost_line_of_scrimmage_far 2000 +z_ghost_line_of_scrimmage_near 1000 +z_ghost_line_of_scrimmage_safety 10 +z_ghost_line_of_scrimmage_threat_bonus 1000 +z_ghost_los_expected_progress 1500 +z_ghost_offer_acceptance_time 0 +z_ghost_offer_spawn_safety_time 20 +z_ghost_runner_spawn_multiplier 0.5 +z_ghost_runner_spawn_multiplier_dist 3000 +z_ghost_spawn_distance 300 +z_ghost_spawn_in_start 0 +z_ghost_spawn_interval 60 +z_ghost_speed 450 +z_ghost_travel_distance 1000 +z_gib_explosion_force_factor 0.1 +z_gib_force_factor 10 +z_grab_force 0 +z_grab_ledges_solo 0 +z_gun_damage 10 +z_gun_debug_player_index 0 +z_gun_debug_spread 0 +z_gun_force 300 +z_gun_horiz_punch 0 +z_gun_kick 0 +z_gun_physics_force 25 +z_gun_range 75 +z_gun_stun_duration 1.25 +z_gun_survivor_force 200 +z_gun_survivor_friend_push 1 +z_gun_survivor_shove_dot 0.95 +z_gun_swing_coop_max_penalty 8 +z_gun_swing_coop_min_penalty 5 +z_gun_swing_duration 0.2 +z_gun_swing_interval 0.7 +z_gun_swing_vs_amt_penalty 1 +z_gun_swing_vs_cooldown 1 +z_gun_swing_vs_max_penalty 6 +z_gun_swing_vs_min_penalty 3 +z_gun_swing_vs_restore_time 4 +z_gun_vertical_punch 1 +z_head_damage_causes_wounds 0 +z_health 50 +z_hear_gunfire_range 200 +z_hear_runner_far_range 750 +z_hear_runner_near_range 500 +z_hit_chainsawer_factor 0.5 +z_hit_from_behind_cosine 0 +z_hit_from_behind_factor 0.5 +z_hit_incap_factor_easy 0.1 +z_hit_incap_factor_expert 1 +z_hit_incap_factor_hard 1 +z_hit_incap_factor_normal 1 +z_holiday_gift_drop_chance 0.3 +z_hunter_ground_normal 0.2 +z_hunter_health 250 +z_hunter_limit 1 +z_hunter_lunge_distance 750 +z_hunter_lunge_pitch 25 +z_hunter_lunge_stagger_time 1 +z_hunter_max_pounce_bonus_damage 24 +z_hunter_speed 300 +z_infected_damage_cutouts 1 +z_Infected_debug 0 +z_infected_flashlight 1 +z_infected_invuln 0 +z_infected_move 1 +z_infected_tinting 1 +z_jockey_area_current_factor 1 +z_jockey_area_hazard_bonus 3000 +z_jockey_area_range_factor 2 +z_jockey_area_visibility_factor 500 +z_jockey_blend_rate 1 +z_jockey_control_max 0.8 +z_jockey_control_min 0.8 +z_jockey_control_variance 0.7 +z_jockey_debug 0 +z_jockey_health 325 +z_jockey_leap_again_timer 5 +z_jockey_leap_range 200 +z_jockey_leap_time 1 +z_jockey_limit 1 +z_jockey_lookahead 400 +z_jockey_min_ledge_distance 200.0f +z_jockey_min_mounted_speed 0.6 +z_jockey_pounced_surv_bark 1 +z_jockey_ride_damage 4 +z_jockey_ride_damage_delay 1 +z_jockey_ride_damage_interval 1 +z_jockey_ride_hazard_scan_distance 500 +z_jockey_ride_scan_distance 800 +z_jockey_ride_scan_interval 3 +z_jockey_speed 250 +z_jockey_speed_blend 2 +z_jockey_stagger_amount 0 +z_jockey_stagger_speed 2 +z_large_volume_mob_too_far_xy 1600 +z_large_volume_mob_too_far_z 128 +z_last_area_update_tolerance 4 +z_last_man_run_interval 3 +z_lean_wall_align_speed 300 +z_leap_attach_distance 60 +z_leap_cooldown 0 +z_leap_far_attach_delay 0.4 +z_leap_force_attach_distance 40 +z_leap_interval 0.5 +z_leap_interval_post_incap 30 +z_leap_interval_post_ride 6 +z_leap_max_distance 200 +z_leap_power 400 +z_look_at_local_player 0 +z_lunge_cooldown 0.1 +z_lunge_interval 0.1 +z_lunge_power 600 +z_lunge_reflect 0 +z_lunge_up 200 +z_max_hunter_pounce_stagger_duration 0.5 +z_max_neighbor_range 200 +z_max_path_length 5000 +z_max_player_zombies 4 +z_max_stagger_duration 6 +z_max_survivor_damage 300 +z_mega_mob_size 50 +z_mega_mob_spawn_max_interval 900 +z_mega_mob_spawn_min_interval 420 +z_min_ladder_mount_dot 0.5 +z_minigun_atomize 0 +z_minigun_cooldown_time 3 +z_minigun_damage_rate 48000 +z_minigun_debug 0 +z_minigun_fire_anim_speed 1 +z_minigun_fire_think_interval 0.2 +z_minigun_firing_speed 15 +z_minigun_overheat_time 20 +z_minigun_rate_of_fire 1500 +z_minigun_spin_down_speed 4 +z_minigun_spin_up_speed 15 +z_minigun_spread 7 +z_minigun_stand_distance 36 +z_minion_aim_tolerance 0.05 +z_minion_limit 3 +z_mob_min_notify_count 10 +z_mob_music_size 2 +z_mob_population_density 0.0064 +z_mob_recharge_rate 0.0025 +z_mob_sacrifice_timeout 5 +z_mob_spawn_finale_size 20 +z_mob_spawn_max_interval_easy 240 +z_mob_spawn_max_interval_expert 180 +z_mob_spawn_max_interval_hard 180 +z_mob_spawn_max_interval_normal 180 +sv_max_queries_sec 30 +z_mob_spawn_min_interval_easy 120 +z_mob_spawn_min_interval_expert 90 +z_mob_spawn_min_interval_hard 90 +z_mob_spawn_min_interval_normal 90 +z_mob_spawn_min_size 10 +z_mounted_gun_fire_think_interval 0.05 +z_must_wander 0 +z_mute_infected 0 +z_nav_debug 0 +z_network_compression 1 +z_no_cull 0 +z_noise_level_display 0 +z_noise_level_fade_rate 40 +z_noise_level_footstep 135 +z_noise_level_hold_time 0.5 +z_noise_level_max 135 +z_noise_level_vocalize 135 +z_non_head_damage_factor_easy 2 +z_non_head_damage_factor_expert 0.5 +z_non_head_damage_factor_hard 0.75 +z_non_head_damage_factor_multiplier 1 +z_non_head_damage_factor_normal 1 +z_notice_it_range 1500 +z_notice_near_range 100 +z_player_lunge_up 150 +z_player_zombie_debug 0 +z_player_zombie_land_delay 0.5 +z_population c1streets +z_pounce_allow_partial_hidden 1 +z_pounce_crouch_delay 1 +z_pounce_damage 5 +z_pounce_damage_delay 1 +z_pounce_damage_interrupt 50 +z_pounce_damage_interval 0.5 +z_pounce_delay 0 +z_pounce_door_damage 500 +z_pounce_shake_amplitude 4 +z_pounce_shake_duration 1.5 +z_pounce_shake_radius 250 +z_pounce_silence_range 500 +z_pounce_stumble_force 5 +z_pounce_stumble_radius 0 +z_prevent_burrowing 1 +z_puking_eye_height 44 +z_push_force 2000 +z_push_mass_max 200 +z_pushaway_force 100 +z_ragdoll_discard_range 2000 +z_randombodygroups 1 +z_randomskins 1 +z_reload_chatter_debug 0 +z_reload_chatter_intensity 0.25 +z_reload_chatter_nearby_friend_range 600 +z_reload_chatter_recent_enemy 1.5 +z_reload_chatter_shotgun_ammo_threshold 6 +z_reload_chatter_shotgun_interval 10 +z_reserved_wanderers 0 +z_respawn_distance 100 +z_respawn_interval 10 +z_restrict_team_change 0 +z_round_start_attack_prevention 1 +z_round_start_replacement_time 30 +z_run_exertion_interval 1 +z_safe_spawn_range 250 +z_scout_mob_spawn_range 3000 +z_scrimmage_creep_delay 30 +z_scrimmage_creep_rate 50 +z_scrimmage_sphere 1 +z_shotgun_bonus_damage_multiplier 5 +z_shotgun_bonus_damage_range 100 +z_shove_friend_speed 130 +z_show_bottlenecks 0 +z_show_clear 0 +z_show_completely_visible_to_survivor_team 0 +z_show_damaging 0 +z_show_escape_route 0 +z_show_flow_delta 0 +z_show_flow_distance 0 +z_show_infected 0 +z_show_last_area 0 +z_show_mutually_visible_set 0 +z_show_population_density 0 +z_show_potentially_visible 0 +z_show_potentially_visible_to_survivor_team 0 +z_show_swings 0 +z_show_traffic 0 +z_sidespeed 450 +z_skip_wounds 0 +z_skirmish_spawn_max_interval 90 +z_skirmish_spawn_max_size 4 +z_skirmish_spawn_min_interval 45 +z_skirmish_spawn_min_size 1 +z_smoker_limit 1 +z_spawn_const_distance -1 +z_spawn_flow_limit 1500 +z_spawn_health 0 +z_spawn_height 12 +z_spawn_mobs_behind_chance 75 +z_spawn_mobs_from_selected_set 0 +z_spawn_range 1500 +z_spawn_safety_range 550 +z_spawn_speed 450 +z_spec_nightvision 1 +z_special_burn_dmg_scale 3 +z_special_spawn_interval 45 +z_speed 250 +z_spew_areas 0 +z_spit_detonate_delay 0.1 +z_spit_interval 20 +z_spit_latency 0.3 +z_spit_range 900 +z_spit_spread_delay 0.2 +z_spit_velocity 900 +z_spitter_health 100 +z_spitter_high_chance 10 +z_spitter_limit 1 +z_spitter_max_wait_time 30 +z_spitter_range 850 +z_spitter_speed 210 +z_splat_survivor_pitch_max 25 +z_splat_survivor_pitch_min 15 +z_splat_survivor_shake_amplitude 50 +z_splat_survivor_shake_duration 1 +z_splat_survivor_shake_frequency 150 +z_splat_survivor_shake_radius 10 +z_splat_survivor_yaw_max 10 +z_splat_survivor_yaw_min -10 +z_splatterdistance 100 +z_stand_still 0 +z_state_debug 0 +z_stomp_always 0 +z_stumble_max_curve_accel 5 +z_stumble_max_curve_rate 10 +z_survivor_respawn_health 50 +z_tank_attack_interval 1.5 +z_tank_autoshotgun_dmg_scale 0.85 +z_tank_damage_slow_max_range 400 +z_tank_damage_slow_min_range 200 +z_tank_footstep_shake_amplitude 5 +z_tank_footstep_shake_duration 2 +z_tank_footstep_shake_interval 0.4 +z_tank_footstep_shake_radius 750 +z_tank_grenade_damage 750 +z_tank_grenade_launcher_dmg_scale 3 +z_tank_grenade_roll -10 +z_tank_grenade_slowdown 0 +z_tank_has_special_blood 0 +z_tank_health 4000 +z_tank_incapacitated_decay_rate 1 +z_tank_incapacitated_health 5000 +z_tank_max_stagger_distance 400 +z_tank_max_stagger_duration 6 +z_tank_max_stagger_fade_duration 6 +z_tank_rock_debug 0 +z_tank_rock_radius 100 +z_tank_speed 210 +z_tank_speed_vs 210 +z_tank_stagger_fade_alpha 192 +z_tank_stagger_fade_duration 3 +z_tank_throw_fail_interval 0 +z_tank_throw_force 800 +z_tank_throw_health 50 +z_tank_throw_interval 5 +z_tank_walk_speed 100 +z_tanks_block_molotovs 1 +z_throttle_hit_interval_easy 0.5 +z_throttle_hit_interval_expert 1 +z_throttle_hit_interval_hard 0.5 +z_throttle_hit_interval_normal 0.33 +z_tracer_particles 1 +z_tracer_spacing 1 +z_transitioning_players_remove 1 +z_use_belt_item_tolerance 0.98 +z_use_next_difficulty_damage_factor 0 +z_use_tolerance 0.82 +z_versus_boomer_limit 1 +z_versus_charger_limit 1 +z_versus_hunter_limit 1 +z_versus_jockey_limit 1 +z_versus_smoker_limit 1 +z_versus_spitter_limit 1 +z_vision_range 500 +z_vision_range_alert 1500 +z_vision_range_daylight 2400 +z_vision_range_obscured 500 +z_vision_range_obscured_alert 750 +z_vocalize_burn_max_interval 3 +z_vocalize_burn_min_interval 2 +z_vocalize_shot_interval 0.5 +z_vomit 1 +z_vomit_boxsize 1 +z_vomit_debug 0 +z_vomit_drag 0.89 +z_vomit_duration 1.5 +z_vomit_fade_duration 5 +z_vomit_fade_start 5 +z_vomit_fatigue 3000 +z_vomit_float -130 +z_vomit_hit_pitch_max 15 +z_vomit_hit_pitch_min -15 +z_vomit_hit_yaw_max 10 +z_vomit_hit_yaw_min -10 +z_vomit_interval 30 +z_vomit_lifetime 0.5 +z_vomit_maxdamagedist 350 +z_vomit_range 300 +z_vomit_slide_mult 0.5 +z_vomit_slide_rate 0.1 +z_vomit_vecrand 0.05 +z_vomit_velocity 1700 +z_vomit_velocityfadeend 0.5 +z_vomit_velocityfadestart 0.3 +z_walk_speed 85 +z_wandering_density 0.03 +z_witch_allow_change_victim 1 +z_witch_always_kills 0 +z_witch_anger_rate 0.2 +z_witch_attack_range 60 +z_witch_berserk_range 200 +z_witch_burn_time 15 +z_witch_damage 100 +z_witch_damage_per_kill_hit 30 +z_witch_discard_range 2000 +z_witch_flashlight_range 400 +z_witch_health 1000 +z_witch_hostile_at_me_anger 2 +z_witch_max_retreat_range 2000 +z_witch_max_threat_time 7 +z_witch_min_retreat_range 750 +z_witch_min_threat_time 5 +z_witch_personal_space 100 +z_witch_relax_rate 0.05 +z_witch_retreat_exit_hidden_duration 10 +z_witch_retreat_exit_range 1000 +z_witch_retreat_min_duration 10 +z_witch_speed 300 +z_witch_speed_inured 200 +z_witch_threat_hostile_range 600 +z_witch_threat_normal_range 300 +z_witch_tongue_range 100 +z_witch_wander_hear_radius 72 +z_witch_wander_music_max_dist 2000000 +z_witch_wander_music_max_interval 20 +z_witch_wander_music_min_dist 90000 +z_witch_wander_music_min_interval 3 +z_witch_wander_personal_space 240 +z_witch_wander_personal_time 10 +z_zombie_knockoff_death 0 +z_zombie_lunge_push 0 diff --git a/guide/launcher b/guide/launcher new file mode 100644 index 00000000..c9816cb5 --- /dev/null +++ b/guide/launcher @@ -0,0 +1,505 @@ ++exec console.cfg ++servercfgfile "server1.cfg" + ++ai_debug_ragdoll_magnets 0 ++ai_debug_speech 0 ++ai_expression_frametime 0.0 ++ai_expression_optimization 0 ++ai_force_serverside_ragdoll 0 ++ai_LOS_mode 0 ++ai_post_frame_navigation 0 ++ai_sequence_debug 0 ++ai_setupbones_debug 0 ++ai_show_hull_attacks 0 ++ai_use_visibility_cache 1 ++allow_all_bot_survivor_team 1 ++autoaim_max_deflect 1.0 ++autoaim_max_dist 0 ++autoaim_viewing_client 1 + ++breakable_disable_gib_limit 0 ++breakable_multiplayer 1 + ++car_alarm_chirp_distance 500 ++car_alarm_chirp_duration 1 ++car_alarm_chirp_interval 1 ++car_alarm_distance 1000 ++car_alarm_duration 20 ++cc_norepeat 0 ++cl_resend 1.5 ++clear_debug_overlays ++clientport 0 ++closecaption 1 ++collision_shake_amp 0.0 ++collision_shake_freq 0.0 ++collision_shake_time 0.0 ++commentary_available 1 ++common_dps_spew 0 ++common_dps_window 0 ++cpu_level 2 + ++debug_l4dverbose 0 ++debug_materialmodifycontrol 0 ++debug_overlay_fullposition 0 ++debug_physimpact 0 ++debug_touchlinks 0 ++decalfrequency 1.25 + ++director_afk_timeout 20 ++director_allow_infected_bots 1 ++director_min_start_players 1 ++director_report_screen_delay 10 ++director_survival_setup_time 0 ++director_vs_convert_pills 0 + ++dispcoll_drawplane 0 ++displaysoundlist 0 + ++elevator_movedelay 0 ++engine_no_focus_sleep 0 ++ent_debugkeys "" ++ent_show_contexts 0 ++ent_steadystate_batchsize 0 ++ent_steadystate_cooldown 0 ++ent_steadystate_delay 0 ++ent_steadystate_enable 0 ++ent_steadystate_interval 0 + ++fall_speed_fatal 720 ++fall_speed_safe 540 ++fidget_max_interval 30 ++fidget_min_interval 15 ++fire_absorbrate 100 ++fire_dmgbase 1 ++fire_dmginterval 1 ++fire_dmgscale 0.1 ++fire_extabsorb 100 ++fire_extscale 10 ++fire_growthrate 1.0 ++fire_heatscale 1.0 ++fire_incomingheatscale 0.1 ++fire_maxabsorb 100 ++flex_expression "" ++flex_talk 0 ++fps_max 1000 ++func_break_max_pieces 30 ++func_break_reduction_factor 1.0 ++func_breakdmg_bullet 10 ++func_breakdmg_club 30 ++func_breakdmg_explosive 20 + ++g_debug_doors 0 ++g_debug_npc_vehicle_roles 0 ++g_debug_transitions 0 ++gpu_level 3 ++gpu_mem_level 2 ++grenadelauncher_startpos_forward 16 ++grenadelauncher_startpos_right 4 ++grenadelauncher_startpos_up 0 ++grenadelauncher_vel_up 125 ++grenadelauncher_vel_variance 0 + ++host_flush_threshold 0 ++host_framerate 0 ++host_map "c6m1_riverbank.bsp" ++host_xbox_e3_restart 1440 ++hostfile "myhost.txt" ++hostip "1247506818" ++hostname "Bizzy's Moonmod" ++hostport 27019 + ++inferno_max_trace_per_tick 16 ++ip "74.91.113.130" + ++l4d1_survivor_give_item 0 ++l4d_show_incapupdate 0 ++l4d_show_weaponequip 0 ++l4d_stats_nogameplaycheck 1 ++l4d_stats_track 1 ++log on ++lservercfgfile "" + ++mapcyclefile "" + ++mat_aaquality 0 ++mat_antialias 8 ++mat_dxlevel 92 ++mat_forceaniso 16 ++mat_hdr_level 2 ++mat_monitorgamma 1.6 ++mat_monitorgamma_tv_enabled 1 ++mat_phong 1 ++mat_picmip -10 ++mat_queue_mode 2 ++mat_queue_report 0 ++mat_specular 1 ++mat_spewalloc 0 ++mat_triplebuffered 0 ++mat_vsync 0 + ++maxplayers 32 ++mem_level 2 ++mm_server_search_lan_ports "27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025" ++motdenabled 1 ++motdfile "mymotd.txt" + ++mp_allowNPCs 0 ++mp_autocrosshair 1 ++mp_autokick 0 ++mp_autoteambalance 0 ++mp_c4timer 10 ++mp_clan_ready_signal "ready" ++mp_clan_readyrestart 0 ++mp_defaultteam 0 ++mp_enableroundwaittime 0 ++mp_falldamage 0 ++mp_flashlight 1 ++mp_footsteps 1 ++mp_forcerespawn 1 ++mp_fraglimit 0 ++mp_freezetime 0 ++mp_humanteam any ++mp_limitteams 0 ++mp_logdetail 0 ++mp_restartgame 0 ++mp_roundlimit 5 ++mp_roundtime 9 ++mp_spawnprotectiontime 0 ++mp_stalemate_at_timelimit 0 ++mp_stalemate_enable 0 ++mp_stalemate_timelimit 0 ++mp_startmoney 16000 ++mp_teamlist "" ++mp_teamoverride 1 ++mp_teamplay 0 ++mp_tkpunish 0 ++mp_waitingforplayers_cancel 0 ++mp_waitingforplayers_restart 0 ++mp_waitingforplayers_time 0 ++mp_weaponstay 0 + ++music_bank_max_duration 600 ++music_bank_min_duration 600 + ++nav_drag_selection_volume_zmax_offset 32 ++nav_drag_selection_volume_zmin_offset 32 ++nav_save_history 0 + ++nb_avoid 0 ++nb_avoid_interval 1 ++nb_debug_history 0 ++nb_player_move_direct 0 ++nb_stuck_dump_threshold -1 + ++net_allow_multicast 1 ++net_chan_limit_disabled 0 ++net_chan_limit_in_debug_session 0 ++net_chan_limit_msec 0 ++net_chan_stats_dump 0 ++net_chan_stats_dump_top_msgs 0 ++net_chan_stats_lru 0 ++net_maxroutable 1200 ++net_public_adr "" ++net_showsplits 0 ++net_showudp 0 ++net_showudp_remoteonly 0 ++net_splitpacket_maxrate 72000 ++net_splitrate 1 + ++nextlevel "" + ++npc_height_adjust 1 ++npc_vphysics 0 + ++password "" + ++phys2_shoot_speed 0 ++phys_impactforcescale 0.1 ++phys_penetration_error_time 5 ++phys_shoot_torque 1000000 ++phys_speeds 0 ++phys_stressbodyweights 5.0 ++phys_timescale 1.0 ++phys_upimpactforcescale 0.2 ++physicsshadowupdate_render 0 + ++pipe_bomb_beep_interval_delta 0.0225 ++pipe_bomb_beep_min_interval 0.075 ++pipe_bomb_initial_beep_interval 0.525 ++pipe_bomb_shake_amplitude 100 ++pipe_bomb_shake_radius 1000 ++pipe_bomb_timer_duration 7.5 + ++player_old_armor 0 + ++prop_active_gib_limit 30 ++prop_active_gib_max_fade_time 10 + ++r_drawmodelstatsoverlaymax 10 ++r_drawmodelstatsoverlaymin 1 ++r_dynamic 1 ++r_eyemove 1 ++r_eyeshift_x 0.0 ++r_eyeshift_y 0.0 ++r_eyeshift_z 0.0 ++r_eyesize 0.0 ++r_shadowrendertotexture 1 + ++rcon_password "BigBizzy101" + ++rr_debugplayer -1 ++rr_debugresponseconcept "" ++rr_debugresponses 0 ++rr_debugrule "" ++rr_dumpresponses 0 + ++sb_allow_leading 0 ++sb_melee_approach_victim 0 ++sb_reachable_cache_paranoia 1 ++sb_skill "survivor" ++sb_temp_health_consider_factor 0.8 ++sb_toughness_buffer 20 ++sb_transition 1 + ++scene_async_prefetch_spew ++scene_clientplayback 1 ++scene_forcecombined 0 ++scene_maxcaptionradius 1500 ++scene_showlook 0 ++scene_showmoveto 0 ++scene_showunlock 0 + ++script_attach_debugger_at_startup ++script_break_in_native_debugger_on_error + ++sk_autoaim_mode 3 ++sk_player_arm 3 ++sk_player_chest 3 ++sk_player_head 3 ++sk_player_leg 3 ++sk_player_stomach 3 ++skill 3 + ++spec_filter any ++spec_filter_infected any ++spec_filter_survivors any + ++spit_scaling_min_scale 1.0 ++steam_controller_haptics 1 + ++step_spline 0 ++suitvolume 2.0 + ++survivor_death_anims 0 ++survivor_incap_hopeless_decay_rate 6 ++survivor_incap_max_fall_damage 250 ++survivor_incap_tongued_decay_rate 20 ++survivor_limit 4 ++survivor_model_selection -1 ++survivor_respawn_with_guns 1 ++sv__ragdoll_max_remove_per_frame 1 ++sv_allow_lobby_connect_only 0 ++sv_allow_votes 1 ++sv_allow_wait_command 1 ++sv_alltalk 1 ++sv_alternateticks 0 ++sv_banid_enabled 1 ++sv_benchmark_autovprofrecord 0 ++sv_benchmark_numticks 0 ++sv_bonus_challenge 0 ++sv_cheats 0 ++sv_clearhinthistory ++sv_clockcorrection_msecs 50 ++sv_consistency 0 ++sv_contact "" ++sv_debug_entity "" ++sv_downloadurl "" ++sv_forcepreload 1 ++sv_gametypes ++sv_infected_scale_max 1.025 ++sv_infected_scale_min 1.025 ++sv_lagflushbonecache 0 ++sv_lagpushticks 0 ++sv_lan 0 ++sv_log_onefile 1 ++sv_logbans 1 ++sv_logecho 0 ++sv_logfile 1 ++sv_logflush 0 ++sv_logsdir "logs" ++sv_massreport 0 ++sv_max_usercmd_future_ticks 15 ++sv_maxcmdrate 120 ++sv_maxrate 144000 ++sv_maxunlag 0.5 ++sv_mincmdrate 60 ++sv_minrate 72000 ++sv_music_debug 0 ++sv_password "" ++sv_pausable 0 ++sv_player_max_separation_force 0 ++sv_playerperfhistorycount 0 ++sv_pure 0 ++sv_pure_kick_clients 0 ++sv_pure_trace 0 ++sv_pvsskipanimation 0 ++sv_pz_endgame_vote_period 15 ++sv_pz_endgame_vote_post_period 3 ++sv_quota_stringcmdspersecond 2147483647 ++sv_ragdoll_maxcount 32767 ++sv_ragdoll_maxcount_boss 32767 ++sv_ragdoll_maxcount_generic 32767 ++sv_ragdoll_maxcount_gib 32767 ++sv_ragdoll_maxcount_special 32767 ++sv_ragdoll_maxcount_survivor 32767 ++sv_ragdoll_version 1 ++sv_rcon_banpenalty 0 ++sv_rcon_log 0 ++sv_rcon_maxfailures 20 ++sv_rcon_minfailures 20 ++sv_rcon_minfailuretime 1 ++sv_regeneration_wait_time 0 ++sv_region 0 ++sv_rescue_disabled 0 ++sv_reservation_timeout 5 ++sv_runcmds 1 ++sv_search_key "bizzymod" ++sv_script_think_interval ++sv_showladders 0 ++sv_skyname "sky_l4d_c6m1_hdr" ++sv_specaccelerate 5 ++sv_specnoclip 1 ++sv_specspeed 3 ++sv_steamgroup "38693222" ++sv_steamgroup_exclusive 1 ++sv_strict_notarget 0 ++sv_tags ++sv_teststepsimulation 0 ++sv_thinktimecheck ++sv_threaded_init ++sv_unlag 1 ++sv_unlag_debug 0 ++sv_unlag_fixstuck 1 ++sv_unlockedchapters 2147483647 ++sv_vehicle_autoaim_scale 10 ++sv_visiblemaxplayers 8 ++sv_voiceenable 1 ++sv_vote_command_delay 1.5 ++sv_vote_failure_timer 0 ++sv_vote_issue_change_difficulty_allowed 1 ++sv_vote_issue_change_map_later_allowed 1 ++sv_vote_issue_change_map_now_allowed 1 ++sv_vote_issue_change_mission_allowed 1 ++sv_vote_issue_kick_allowed 1 ++sv_vote_issue_restart_game_allowed 1 ++sv_vote_kick_ban_duration 1 ++sv_vote_timer_duration 12 ++sv_zoo_model_filter ++sv_zoo_spacing ++sv_zoo_spacing_rows ++sv_zoo_spacing_wrap ++sv_zoo_tint_clr ++sv_zoo_tint_loop ++sv_zoo_wrap_skin + ++sys_minidumpspewlines 0 + ++tank_rock_overhead_percent 100 ++target_scan_use_query_cache 1 ++tauntfrequency 0 ++template_debug 0 ++tongue_bullet_radius 8 ++trace_report 0 ++tutor 0 ++tv_allow_camera_man 1 ++tv_allow_static_shots 1 ++tv_delay 0 ++tv_delaymapchange 0 ++tv_nochat 0 ++tv_port 27020 + ++versus_force_start_time 120 ++versus_marker_num 0 ++versus_round_restarttimer 15 ++versus_round_restarttimer_finale 15 + ++voice_inputfromfile 0 ++voice_recordtofile 0 ++voice_serverdebug 0 + ++vprof_scope_entity_gamephys ++vprof_scope_entity_thinks ++vprof_think_limit + ++vs_score_pp_health 1.0 ++vs_score_pp_healthbuffer 1.0 + ++weapon_showproficiency 0 ++witch_rage_ramp_duration 3 + ++xbox_autothrottle 1 ++xbox_steering_deadzone 0.0 ++xbox_throttlebias 100 ++xbox_throttlespoof 200 ++xc_crouch_debounce 0 + ++z_attack_change_target_range 40 ++z_attack_interval 0.333333 ++z_attack_max_range 40 ++z_attack_min_range 20 ++z_attack_movement_penalty 0.7 ++z_attack_on_the_run_range 40 ++z_bbq_min 0.0 ++z_bbq_rate 0.0 ++z_burn_max 0.0 ++z_burn_rate 0.0 ++z_checkpoint_debug ++z_damage_screen_fade_alpha 32 ++z_damage_screen_fade_duration 0.666667 ++z_debug_infected_server_anim 0 ++z_debug_stuck "" ++z_difficulty Impossible ++z_door_pound_damage ++z_exploding_force ++z_exploding_inner_radius 200 ++z_exploding_outer_radius 200 ++z_fatal_blast_incineration_probability ++z_fatal_blast_max_ragdolls ++z_fatal_blast_min_ragdolls ++z_finale_spawn_safety_range_override ++z_ghost_cooldown 0 ++z_ghost_delay_minspawn 1 ++z_ghost_duration 1 ++z_ghost_group_spawn 0 ++z_ghost_line_of_scrimmage_far ++z_ghost_line_of_scrimmage_near ++z_ghost_line_of_scrimmage_safety ++z_ghost_line_of_scrimmage_threat_bonus ++z_ghost_los_expected_progress ++z_ghost_offer_acceptance_time ++z_ghost_offer_spawn_safety_time ++z_ghost_spawn_distance ++z_head_damage_causes_wounds 1 ++z_hunter_lunge_distance ++z_hunter_lunge_pitch 30 ++z_max_survivor_damage 500 ++z_minigun_atomize 1 ++z_non_head_damage_factor_multiplier 1.0 ++z_population "c1streets" ++z_pounce_shake_amplitude 6 ++z_pounce_shake_duration 2 ++z_pounce_shake_radius 300 ++z_pounce_stumble_radius 175 ++z_ragdoll_discard_range 2147483647 ++z_scrimmage_sphere 1 ++z_skip_wounds 0 ++z_survivor_respawn_health 40 ++z_tank_footstep_shake_amplitude ++z_tank_footstep_shake_duration 2 ++z_tank_footstep_shake_interval 0.1 ++z_tank_footstep_shake_radius 1000 ++z_use_next_difficulty_damage_factor 0 ++z_witch_always_kills 0 ++z_witch_tongue_range 20 + ++map c6m1_riverbank diff --git a/guide/parameters b/guide/parameters new file mode 100644 index 00000000..b5279ed9 --- /dev/null +++ b/guide/parameters @@ -0,0 +1,14 @@ +-steam +-game left4dead2 +-ip $IP +-port $PORT +-heapsize 1572864 +-tickrate 60 +-maxplayers 32 +-timeout 10 +-high +-preload +-nohltv +-nominidumps +-nomessagebox +-nocrashdialog diff --git a/guide/srcds1 b/guide/srcds1 index 201b07f6..3af54c7e 100644 --- a/guide/srcds1 +++ b/guide/srcds1 @@ -12,34 +12,38 @@ DAEMON="$DIR/srcds_run" # Change all Parameters to your needs. -############################################## TICKRATE INFO ######################################################## +########################################################## TICKRATE INFO #################################################################### # # Only 128 Tickrate and up will need modifications to the frametime and frametime_override, 100 tick and below do not need these parameters. # 128 Tickrate needs the follows params added: -frametime 0.037 -frametime_override 0.037 +# You should not use 100 OR 128 Tickrate because 128 is not a whole multiple of 30. +# Instead you should use 120 because it is the optimal tick rate. +# The safest option is 60 Tickrate. # -##################################################################################################################### +############################################################################################################################################# -############################################# PARAMETERS & SERVER.CFG ############################################### +##################################################### PARAMETERS & SERVER.CFG ############################################################### # # SVNUM will come in handy for when you're hosting multiple Servers on the same Dedicated Machine. -# Replace "1.3.3.7" with your Dedicated's Server IP. +# Replace "0.0.0.0" with your Dedicated's Server IP. # Replace 27015 with the Port this L4D2 Server will be hosted on. # # Rename your Server.cfg files accordingly, if you're hosting just one server, you'll only need server1.cfg # If you're hosting multiple Servers, simply copy server1.cfg, change the hostname inside and rename it to server2.cfg and so on. # Don't forget to copy and edit the file as well, the SVNUM has to match the server#.cfg and the Port has to be available. # -##################################################################################################################### +############################################################################################################################################# -# The current settings will start the Server on 100 Tick on Dead Center 1. +# The current settings will start the Server on 120 Tick on The Passing Map 1 - Riverbank. SVNUM=1 -IP=1.3.3.7 -PORT=27015 +IP=74.91.113.130 +PORT=27019 NAME=L4D2_Server$SVNUM -PARAMS="-game left4dead2 -ip $IP -port $PORT +sv_clockcorrection_msecs 25 -timeout 10 -tickrate 100 +map c1m1_hotel -maxplayers 32 +servercfgfile server$SVNUM.cfg" -DESC="L4D2 Dedicated Server #$SVNUM on port $PORT" +PARAMS="-steam -game left4dead2 -ip $IP -port $PORT +sv_lan 0 +sv_region 0 +sv_allow_wait_command 1 +servercfgfile exec.cfg -heapsize 1572864 -tickrate 60 +sv_alternateticks 1 -timeout 10 -maxplayers 33 -high -preload +sv_forcepreload 1 +map c6m1_riverbank +mp_gamemode Coop +z_difficulty Impossible +sv_alltalk 1 -nohltv -nominidumps -nomessagebox -nocrashdialog +sys_minidumpspewlines 0" +DESC="Left 4 Dead 2 Dedicated Server Hosted with IP 74.91.113.130 on Host Port 27019" +############################################################################################################################################################################################################################################################################# ########################################### # # diff --git a/scripts/vscripts/vscripts_custom/bizzymodRealism.nut b/scripts/vscripts/vscripts_custom/bizzymodRealism.nut index a2d5e805..e0cf87a2 100644 --- a/scripts/vscripts/vscripts_custom/bizzymodRealism.nut +++ b/scripts/vscripts/vscripts_custom/bizzymodRealism.nut @@ -8,7 +8,7 @@ cm_AllowPillConversion = 0 - ZombieGhostDelayMin = 14 + ZombieGhostDelayMin = 15 ZombieGhostDelayMax = 16 weaponsToRemove = diff --git a/scripts/vscripts/vscripts_custom/bizzymodRealism2.nut b/scripts/vscripts/vscripts_custom/bizzymodRealism2.nut index cf77459f..f9569497 100644 --- a/scripts/vscripts/vscripts_custom/bizzymodRealism2.nut +++ b/scripts/vscripts/vscripts_custom/bizzymodRealism2.nut @@ -8,7 +8,7 @@ cm_AllowPillConversion = 0 - ZombieGhostDelayMin = 14 + ZombieGhostDelayMin = 15 ZombieGhostDelayMax = 16 weaponsToRemove = diff --git a/scripts/vscripts/zonemodRealism.nut b/scripts/vscripts/zonemodRealism.nut index e05144e3..9747df7e 100644 --- a/scripts/vscripts/zonemodRealism.nut +++ b/scripts/vscripts/zonemodRealism.nut @@ -8,8 +8,8 @@ cm_AllowPillConversion = 0 - ZombieGhostDelayMin = 17 - ZombieGhostDelayMax = 17 + ZombieGhostDelayMin = 14 + ZombieGhostDelayMax = 16 weaponsToRemove = {