Code Monkey home page Code Monkey logo

l4d2-community-update's People

Contributors

alexiscoutinho avatar cubaofficial avatar derpduck avatar jacob404 avatar ltrockyy avatar mrfailzz avatar nesciuse avatar rayman1103 avatar sergi338 avatar shqke avatar skesssler avatar treescrub avatar true-boredom avatar truevoidwalker avatar tsuey avatar xanaguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

l4d2-community-update's Issues

Customization scripts (global and per-map)

For @Treescrub. Summary of discussion from Issue #7:

  • Prevent server admins from needing to maintain files we'll be changing with future updates, i.e.:

https://github.com/SirPlease/L4D2-Competitive-Rework/blob/master/scripts/vscripts/anv_versus.nut

  • Comprehensive changes SirPlease currently makes that need support:

    c2m1_highway:

      "_motelskyboxroof_clipinfected"
    

    c2m4_barns:

      "_hittable_bumpera"
      "_hittable_bumperb"
    
  • If necessary, re-work anv_functions.nut to pre-empt spawning of entities instead of deleting them after they have spawned.

  • Possibly a Mutation-style configuration file to add/remove/edit entities? Are we requiring the user to have scripting ability?

  • Customization script for each map that runs if the script exists. Allows customization without relying on exactly how the map specific script is set up, and it wouldn't cause issues with updated scripts unless the customization relies on specific entities the normal script creates.

  • Add a variable that can be set to prevent normal map specific scripts from running so that customization scripts can easily work with a blank slate.

  • A main customization script that's always run is definitely a must. If there was no global customization script, then modders would have to edit anv_mapfixes to do mode specific changes.

Split map fixes into map specific scripts

Splitting anv_mapfixes.nut and other map specific fixes into scripts for each map would allow easy creation/modification of fixes for specific maps and would improve readability.

The Nightmare Commit... After the split...

Once we're ready to go on Issue #7 and Issue #13 there are a ton of new fixes waiting to go in.

Comprehensive new code to fix VS Survival and Taaannnk! Mutation problems:

https://gist.github.com/Tsuey/f0bc7e2c25dea66fcd148a631908a43e#file-the_nightmare_commit-txt-L573

Comprehensive list of existing make_clip() calls to be thickened:

https://gist.github.com/Tsuey/f0bc7e2c25dea66fcd148a631908a43e#file-the_nightmare_commit-txt-L978

Bug Reports Spreadsheet Mark-Offs:

42	Navmesh	Low	"c8m3 Versus Survival
43	Navmesh	Low	"c10m4 Versus Survival
44	Navmesh	Medium	"c11m4 Versus Survival
45	Navmesh	Low	"Part of the spawning area
46	Navmesh	Medium	"c1m2 versus survival spawning
47	Navmesh	Medium	"c1m2 versus survival spawning
48	Navmesh	Medium	"c1m2 versus survival spawning
49	Navmesh	Medium	"c1m2 versus survival spawning
51	Map	Medium	"Tanks sometimes spawn out of bounds
187	Mutation	Medium	On Taaannnkk!, players sometimes spawn out of bounds
218	Map	Low	"One-sided ladder on c10m4
435	Map	Low	"c7m2 survivors can enter this room at the end of the map

Highly condensed changelog:

+ Patched a few permstuck spots and added QoL clips

+ Dramatically reduced stuck Tank spawns in VS Survival on maps:

	c1m2_streets
	c3m1_plankcountry
	c5m4_quarter
	c8m2_subway
	c9m2_lots
	c10m2_drainage
	c10m4_mainstreet
	c11m2_offices
	c12m3_bridge

+ Dramatically reduced stuck Tank spawns in Taaannnk! on maps:

	c1m2_streets
	c2m2_fairgrounds
	c3m1_plankcountry
	c5m2_park
	c5m4_quarter
	c6m1_riverbank
	c8m1_apartment
	c8m2_subway
	c8m3_sewers
	c9m2_lots
	c10m1_caves
	c10m2_drainage
	c10m3_ranchhouse
	c10m4_mainstreet
	c11m1_greenhouse
	c11m2_offices
	c11m3_garage
	c12m1_hilltop
	c12m2_traintunnel
	c12m3_bridge
	c12m4_barn

+ Resolved a stuck spawn behind tunnel barricade on Death Toll 1

+ Resolved a stuck spawn behind some rubble on Dead Air Terminal

+ Added visual step to get back in bounds on VS Survival Generator Room

+ Thickened several clips across many maps to resolve stuck Tank spawns

+ Prevented an easy Cold Stream 2 event skip

+ Allow Infected player access into end closet on Sacrifice 2

+ Updated "z_developer_showupdate.nut" to support "trigger_look"

+ Mitigator for getting stuck in scissor lift on No Mercy sewers

Future changelog would cover dozens of these:

https://gist.github.com/Tsuey/f0bc7e2c25dea66fcd148a631908a43e#file-the_nightmare_commit-txt-L2420

Finale breake when player give control to AI in VS

The totality of the score will be given to the survivor team when the first tank lose control to AI or in the other case the rescue will coming just after it.

Another scenario is when the winner team is already determined because the other team is behind the score, it will also sometimes break the finale the same way when the tank spawn.

Models precache

The problem with the model precache appeared after the release of the TLS update. Very often I get the following messages in the server console on different maps (on Linux system, server & game client)

c3m2_swamp, c8m3_sewers, c8m5_rooftop, c10m3_ranchhouse, c11m1_greenhouse, ...
Late precache of models/infected/common_male_tshirt_cargos.mdl
Late precache of models/infected/common_male_tankTop_jeans.mdl
Late precache of models/infected/common_male_dressShirt_jeans.mdl
Late precache of models/infected/common_female_tankTop_jeans.mdl
Late precache of models/infected/common_female_tshirt_skirt.mdl

c10m1_caves
Late precache of models/props_vehicles/deliveryvan_armored_glass.mdl
Late precache of models/props_vehicles/deliveryvan_armored.mdl

c10m5_houseboat
Late precache of models/props_vehicles/pickup_truck_2004.mdl
Late precache of models/props_vehicles/pickup_truck_2004_glass.mdl
Late precache of models/props/de_prodigy/ammo_can_02.mdl
Late precache of models/props_unique/spawn_apartment/lantern.mdl
Late precache of models/props_foliage/trees_cluster01.mdl
Late precache of models/props/cs_militia/militiarock01.mdl
Late precache of models/props/cs_militia/militiarock02.mdl

c14m1_junkyard (when secret room opened)
Late precache of models/props_c17/computer01_keyboard.mdl
Late precache of models/deadbodies/dead_male_sittingchair.mdl
Late precache of models/props/cs_office/computer_caseb.mdl
Late precache of models/props\cs_office\computer_caseb_p1.mdl
Late precache of models/props\cs_office\computer_caseb_p2.mdl
Late precache of models/props\cs_office\computer_caseb_p3.mdl
Late precache of models/props\cs_office\computer_caseb_p4.mdl
Late precache of models/props\cs_office\computer_caseb_p5.mdl
Late precache of models/props\cs_office\computer_caseb_p6.mdl
Late precache of models/props\cs_office\computer_caseb_p7.mdl
Late precache of models/props\cs_office\computer_caseb_p8.mdl
Late precache of models/props\cs_office\computer_caseb_p9.mdl
Late precache of models/props\cs_office\computer_caseb_p9a.mdl
Late precache of models/props\cs_office\computer_caseb_gib1.mdl
Late precache of models/props\cs_office\computer_caseb_gib2.mdl
Late precache of models/props\cs_office\computer_caseb_p8a.mdl
Late precache of models/props\cs_office\computer_caseb_p7a.mdl
Late precache of models/props\cs_office\computer_caseb_p6a.mdl
Late precache of models/props\cs_office\computer_caseb_p6b.mdl
Late precache of models/props\cs_office\computer_caseb_p5a.mdl
Late precache of models/props\cs_office\computer_caseb_p5b.mdl
Late precache of models/props\cs_office\computer_caseb_p4a.mdl
Late precache of models/props\cs_office\computer_caseb_p4b.mdl
Late precache of models/props\cs_office\computer_caseb_p3a.mdl
Late precache of models/props\cs_office\computer_caseb_p2a.mdl
Late precache of models/props\cs_office\computer_caseb_p1a.mdl
Late precache of models/props/cs_office/computer_mouse.mdl
Late precache of models/props_lighting/lightbulb01a.mdl
Late precache of models/props_interiors/computer_monitor.mdl
Late precache of models/props_interiors\computer_monitor_p1.mdl
Late precache of models/props_interiors\computer_monitor_p2.mdl
Late precache of models/props_interiors\computer_monitor_p2a.mdl
Late precache of models/props_interiors\computer_monitor_p1a.mdl
Late precache of models/props_downtown/booth_table.mdl

c11m2_offices
Late precache of models/props_vehicles/van.mdl
Late precache of models/props_vehicles/van_glass.mdl

c11m3_garage
Late precache of models/props_update/plywood_128.mdl

c11m4_terminal
Late precache of models/props_unique/zombiebreakwallhospitalexterior01_main.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalframe01_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart01_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart02_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart03_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart04_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart05_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart06_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart07_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart08_dm.mdl
Late precache of models/props_unique\zombiebreakwallexteriorhospitalpart09_dm.mdl

c11m5_runway
Late precache of models/deadbodies/dead_male_civilian_body.mdl

c12m4_barn
Late precache of models/props/cs_militia/fireplacechimney01.mdl

c6m1_riverbank
Late precache of models/props_vehicles/racecar_damaged_glass.mdl
Late precache of models/props_interiors/desk_metal.mdl
Late precache of models/props_rooftop/acvent04.mdl
Late precache of models/props_urban/chimney007.mdl
Late precache of models/props_misc/wrongway_sign01_optimized.mdl

c2m1_highway
Late precache of models/props_urban/highway_barrel001.mdl
Late precache of models/props_fortifications/concrete_barrier001_128_reference.mdl
Late precache of models/props_rooftop/Gutter_Pipe_256.mdl
Late precache of models/props_rooftop/Gutter_Pipe_128.mdl
Late precache of models/props_mill/PipeSet08d_512_001a.mdl
Late precache of models/props_rooftop/acvent01.mdl
Late precache of models/props_misc/wrongway_sign01_optimized.mdl

c2m2_fairgrounds
Late precache of models/props_foliage/urban_hedge_128_64_high.mdl
Late precache of models/props_rooftop/acvent02.mdl
Late precache of models/props_rooftop/Gutter_Pipe_128.mdl
Late precache of models/props_rooftop/Gutter_Pipe_256.mdl
Late precache of models/props_urban/chimney001.mdl
Late precache of models/props_misc/wrongway_sign01_optimized.mdl
Late precache of models/props_update/c2m2_fairgroundwall.mdl

and etc... this is not a complete list of models.

Previously, there were also occasional messages Late precache, but not in that number and not for so many models.

M60 and Grenade Launcher requests

There are a few things with m60 and grenade launcher.

  1. When the Grenade Launcher runs out of ammo, it doesn't drop like the m60 or chainsaw does. Not sure if this is a bug or intentional. Just feels pointless to carry the empty gun.

  2. ammo_m60_max. When you make it a positive number (e.g. ammo_m60_max 150;) and give the M60 reserve ammo, it does not detect it like any other gun and auto reload when the main clip empties. It just simply drops. You can manually reload it by pressing [Binded key for Reload] though. I feel the gun needs updated to properly detect if ammo_m60_max is modified and to auto reload the main clip. Only when the main and reserve clips are empty should it drop. Also the ammo display for m60 looks messed up if reserve ammo is given to it.

  3. Also with the M60. In certain cases, if you die with the m60 and respawn in a closet, you'll have an m60 with full ammo. Seems to occur on swamp fever for me on my modded server since I purposely added it to the finale using stripper source. Not sure if it's because the gun doesn't normally spawn on the campaign or what.

Thanks.

Bad spawn on c3m2_swamp

Swamp Fever the second map (c3m2_swamp) has a very bad spawn from about the middle, after opening the plane's hatch. If you try to run forward and quickly go through the map, then the spawn occurs behind the plane, and the map in front is completely empty. This applies to both Special Infected and Spawn of Common Infected.

I recorded a couple of demo files, I hope it will be roughly clear from them what exactly the problem is.

Nothing prevents players from breaking through the crowd of infected and moving forward quickly, when the entire spawn occurs from behind :)

Also, as you move along the map, the server cannot spawn special infected. When trying to manually spawn a Special Infected with the command z_spawn_old auto an error is print to console:

Couldn't find a %SI% Spawn position in 5 tries.

Of course, after a while, the spawn starts from the front, but up to this point, the players have already entered the saferoom.

navbug_c3m2.zip

Problems and suggestions related to events in the game.

Because the community uses events when writing plugins, which helps and simplifies coding, i think I need to open this topic. Most likely this topic will be replenished.

  1. Recently added event to the game 'tank_rock_killed'. Works great, but if you take a shotgun and shoot at a tank rock, this event will be triggered for each pellet. I also really want the developers to add an entity index to this event, otherwise it is of little use, and possibly the thrower index, although you can get it via netprop.

  2. Event 'weapon_fire'. Сalled 2 times for weapon 'tank_claw' and also if you start pickup a tank rock and hold down the button IN_ATTACK, this event will be called every frame although you cannot use a weapon 'tank_claw' at this moment, or at the very beginning you can make a trick (bug?) 'tank punch rock'.
    Because these events are called in the game code itself, this tells us that there are some problem in the game code. I would like the developers to also add a weapon index to this event.

  3. Event 'ability_use'. This event never works for the jockey ability 'ability_leap' and the entity index needs to be added.

  4. Event 'triggered_car_alarm'. I would like the developers to also add the car entity index to this event and since this event is called from several places, it would not be bad to add a reason why the alarm was triggered, if the reason for turning on the alarm was damage, then need to add the type of damage.

Right now, to get around these problems or limitations, you need to write a huge code also using signatures and this code does not always work correctly. Some examples of plugins: l4d2_skill_detect, l4d2_stats, l4d_tank_rock_destroyer_announce. I in no way want to say that these plugins are bad, it's just that it would be much better to use events, it would not require a huge amount of server resources for simple messages to players.

Animations when crawling is enabled

Not sure why, but all characters (except the Coach) have an unused crawl animation ACT_TERROR_INCAP_CRAWL. The game also has the ability to enable Survivors to crawl when they are incapacitated.

survivor_allow_crawling
survivor_crawl_speed

Maybe you would be interested in having this animation enabled when crawling is enabled (and add this animation also to the Coach model) :)

We currently have a plugin from Silvers to enable this animation - https://forums.alliedmods.net/showthread.php?p=1291588
There are also some errors when crawling is enabled, namely, the player can crawl when the Hunter pounced on him.

Cola bottle outline disappear (c1m2)

Since most recent updates in vs realism mode the outline of cola tend to disappear after that you drop it making hard to find them, pretty sure it was not happening before.

Shotgun headshots at specials aren't properly registered

Description

The DamageType field of the ScriptedDamageInfo template in AllowTakeDamage has an issue. If I shoot a special with a shotgun in the head, the type is 10100000000000000000000000000010 (DMG_DISMEMBER | DMG_BUCKSHOT | DMG_BULLET). Commons register the DamageType just fine 11100000000000000000000000000010 (+DMG_HEADSHOT). The DamageDone obviously works fine either way. This hinders the implementation of a Headshot-like mutation for specials.

The same issue also affects the player_hurt and player_death events and its headshot parameter.

Replace c11m5_versus_planecrash.nut with a collision model

Currently "c11m5_versus_planecrash.nut" has a bunch of make_brush() calls to block LOS and make_clip() calls for collision. Since this area was mostly experimental at the time, this approach was suitable then.

The collision can be re-made with Propper and implemented as a new model, reducing clutter and entity count. We're not desperate for more edicts on this map as it's already among the lowest, but this would be good cleanup.

report_entities
Total 409 entities (0 empty, 380 edicts)

"client disconnect" replace all kick messages

You broke something in recent updates, it always write "client disconnect" in the place of the real reason that should show to players when they get kicked. Votekick for example and same for custom reasons with sourcemod, not sure if it does it too for bans.

Nav: c12m5_cornfield barricade Infected ladder

setpos_exact 6279 3784 303; setang_exact 3 -128 0

If a player Tank loses control while on the newly-opened side of the barricade (where the escape vehicle enters and exits), there is a chance it can get stuck.

Before launch, navmesh was added in most places like these to prevent problems like this -- while it is somewhat probable for the Tank to hold forward and find its way back into the map and even climb the ladder, it is not guaranteed and it can waste a lot of time sliding against clipping to do so.

[c2m1] Misaligned headlights

On first chapter on Dark Carnival, the headlights beam on the stock car are misaligned below the headlights themselves. This is on vanilla stock car with no mods whatsoever.

Bug survivor invisible

Often you will see a survivor player's model not moving in the saferoom but he is actually playing normally, this can happen only to yourself and other players don't see it so yes he is invisible and the model is stuck in the saferoom.

Not sure what causes that but it seems that the only way to fix the problem is to open the console and type "record demo name" then enter "stop" and magically you will see the survivor at his real position, I have no idea why these commands are related to this bug this is quite weird.

Flaw in the boss spawn system

I have "sm_cvar versus_tank_flow_team_variation 0" and still sometimes there is a difference between tank and witch spawns, depending of the map this can cause big balance issues.

Problem when passing the tank to the player.

  1. if we play the charger with the character and start using our ability and at that moment the tank will be passed to us, then this bug occurs. When replacing a player with a bot, the FL_FROZEN flag must be set for the bot, for this case.

Some bugs are related to the tank.

  1. Frozen tank in T or A pose. How to reproduce it: You need to play as a tank and wait until your life drops to 0 and the tank death animation starts, then you just need to change the team or exit the game, the dead tank will be transferred to another player and so it will be transferred between the players, it cannot be killed (because his hp is 0 and the damage does not pass) and you cannot move (because the entity flag is set FL_FROZEN). A plugin that was written by the community to fix this: frozen_tank_fix.smx. There is also a picture on the forum showing the problem. This problem is still relevant and works on any server, be it official or not.

  2. Flying rock through the player. How to reproduce it: You need to be with a black and white screen, and with hp less than a stone can do damage (cvar responsible for stone damage 'vs_tank_damage', the default is 24. You need to have hp less than 24). Then, when the stone touches you, it does not collapse, but continues to fly, it flies through you and kill. Plugin l4d2_bw_rock_hit.smx written by the community to fix these issue.

  3. Surviving players can pick up incapacitated teammates after hitting a tank. It doesn't matter at all whether you hit the player or not, he can also pick up teammates if he does not release the 'use' key, although this should not happen, and it looks strange.

  4. Problem when passing the tank to the player. if we play the charger with the character and start using our ability and at that moment the tank will be passed to us, then this bug occurs. When replacing a player with a bot, the FL_FROZEN flag must be set for the bot, for this case.

  5. Problem with tank rock, for some reason it get stuck in common, the rock deals damage to them, but cannot move further and falls next to the common to the ground, the same thing happens with some classes of special infected and the witch, the rock deals damage to them and immediately falls to the ground. Second problem with tank rock with an incapacitated player, we cannot damage it with a rock, but a rock cannot pass through an incapacitated player, the rock simply breaks against an invisible obstacle above the player. I recorded a demo to show the problems.

c10m3_ranchhouse "_solidify_tree09"

setpos_exact -7286.4 -1049.2 -72.9; setang_exact 21.2 57.8 0

We commented this out because Commons got stuck on it, but it's still worthwhile SI spawn QoL and the only remaining (reasonable) tree that isn't solid.

Options:

  1. nav_split the area then create a new make_navblock() to block the tree
  2. edit the nav areas so AI will always run around the tree

Old forgotten melee weapons

There are two melee weapons in the game, which are not used in any way in the game. Why not bring it to life? :)

models/weapons/melee/v_riotshield.mdl
models/weapons/melee/w_riotshield.mdl
models/weapons/melee/w_didgeridoo.mdl

Only the script file is missing for the riotshield. There is only model for didgeridoo, no material and no script file.

I don’t know how useful this request is, but new in the game is always interesting :)

Community items
Riotshield: https://steamcommunity.com/sharedfiles/filedetails/?id=1827847412
Didgeridoo: https://steamcommunity.com/sharedfiles/filedetails/?id=172396886

Jockey teleport bug

Without the plugin made by the community maybe 25% of games will be ruined, this is not a plugin causing that or even cheaters.
As you see it happens with bots too: https://streamable.com/mudz88

[l4d2_unteleport_jockey_fix.smx] [Jockey UnTeleport] Player kolt333 teleported by Jockey Jockey, origin: 0.0, 0.0, 0.0 distance: 11610.9 distance to center: 0.0 world:(OutsideWorld)

L 09/05/2021 - 17:48:10: Jockey spawned as a JOCKEY
L 09/05/2021 - 17:48:10: "Jockey<178><BOT><Infected><JOCKEY><ALIVE><325+0><setpos_exact -7216.41 6342.20 93.89; setang 0.00 0.00 0.00><Area 54319>" spawned
L 09/05/2021 - 17:48:35: (DEATH)"moan<168><STEAM_1:1:0000><Survivor><Coach><ALIVE><83+0><setpos_exact -8179.54 8880.15 94.46; setang 3.60 10.78 0.00><Area 59778>" killed "Jockey<178><BOT><Infected><JOCKEY><DEAD><1+0><setpos -8143.64 8893.36 32.03; setang 289.77 200.20 0.00><Area 59778>" with "melee"

Since the Community Update, Left 4 Dead 2 will not open.

Going to paste here what I've submitted to the Community Discussion page on Steam:

Since the recent update, Left 4 Dead 2 will not open. I've noticed that this is extended to my other Source games as well (but specifically Portal 2). Before I continue, I've attempted to run the exe's as administrator, have run Steam as administrator, have edited launch options for the exe's according to guides online that cover the issue. I've added options to the Steam launch window (-windowed, -novid, etc)., I've verified the integrity of the game files several times. I've uninstalled and reinstalled the game (trying it on different drives each time.) I've followed youtube videos, yahoo answers guides... have added exceptions to the programs in my firewall!

I don't have a VPN running, or Afterburner (as some guides suggest is the issue), I don't have antivirus software running (beyond Windows Defender, which I've added exclusions to for my Source games). I do subscribe to several addons, but have tried the game with or without to no avail. TO MY KNOWLEDGE, all appropriate files have 'read only' switched OFF.

My specs are as follows: (Windows 10, Ryzen 5 3600x, RTX 2060 Super, 16g/3200, 2 Sata SSD's, 1 NVME SSD, 1 HDD). I should also mention that I'm running three screens - two Display Port 144hz monitors (labeled 1/2 by Windows System Config) and a third, HDMI, 60hz TV (labeled 3).

I bring these up because I've managed to solve my Left 4 Dead 2 issue exactly twice, but inconsistently. The fix was to - I'm not kidding - unplug the HDMI cable from my GPU. Whether the HDMI cable is plugged into a monitor/tv or not, simply unplugging the HDMI cable has fixed the issue twice, out of maybe ten attempts. That is literally the only fix I've found so far for the issue. Plugging the HDMI cable back in once the game is running isn't an issue, the game continues on just fine. But if I close the game, it will not re-open. Maybe that's a symptom of an underlying, larger issue, but short of re-imaging my computer, I'm out of ideas to fix the program. If there's any information I can provide you (within my scope of understanding I guess) I'm happy to try and help. I've got a thousand hours in the game, and had no issues running the game whatsoever until this update (but I DO see that it is a recurring issue in the past).

Edit: changed 'Whether the HDMI cable is plugged in or not...' to 'Whether the HDMI cable is plugged into a monitor/tv or not,..." for clarity

Error 'GasPoured' in game scripts

I constantly see an error 'GasPoured' in server console. In game mode 'scavenge' and on the 'c8m5_rootftop' map when the player pours a canister into the generator.

AN ERROR HAS OCCURED [the index 'GasCanPoured' does not exist]

CALLSTACK
*FUNCTION [main()] InputRunScript line [1]

LOCALS
[vargv] ARRAY
[this] TABLE

This problem has existed for a very long time and the error is spamming in the server console, which is very disturbing.

c10m1_caves nav bug

Bots navigation bug. Spawned infected cannot crawl out to the survivors at the end of the tunnel before going down the stairs to c10m1_caves.

https://ibb.co/album/hF2vX9

I haven't seen it yet to fix it) I'll duplicate it here so they don't forget :)

L4D2 jockey ledge bug

You have to play as a jockey and be on the victim, and then lead him to the ledge, where there are no ladder, the victim should hang on the ledge, but if there is a ladder on this ledge, then the jockey hangs in the air with the victim (Jockey get stuck with the victim on the ladder). I recorded a short demo.zip to show the bug. Problem in function 'CTerrorGameMovement::CheckForLedges' as i understand it, need to change the tracing in 'CTerrorGameMovement::CheckForLedge' to prevent this from happening. The victim also has the movetype == MoveType_Ladder property set (problem area and was discovered by looking for where this property is set, and because in other places there is a check of properties m_jockeyVictim, m_pounceVictim and other, example in function: 'CTerrorGameMovement::LadderMove'). I believe that this bug is also relevant for the smoker, the victim will get stuck in the air and the property movetype == MoveType_Ladder will be set on the victim. A plugin written by the community for fixing, here we can see that it changes the trace output and that completely solves the problem.

Polish c12m5 "hillside" clipping / prop placement

image

The props / clipping were done in a bit of a restrictive way to ensure visual standards while we were scrambling to finish things before TLS deadline. I plan to touch it up to give a bit more freedom in movement to infected while maintaining visual quality after the "Nightmare Commit" gets pushed through.

Vulkan rendering broken since latest update

Every time i try to launch Left 4 Dead 2 with -vulkan in launch options the game just crashes and a message saying "failed to create D3D device" appears. Vulkan worked perfectly before the latest update.

Crane container vanishes on c14m1_junkyard

Various options to fix this c14m1_junkyard Tank issue (punching it makes it vanish after 60 seconds) or latency issue (fixed with "record demo"). Option 1 fixes only Tank punches, and Option 2 may be more likely to fix both but is unconfirmed (and at the expense of being more complex).

Option 1:

Maybe best solution: use same fix as for Dead Air 3's gascan gamebreaker exploit:

NetProps.SetPropInt( Entities.FindByName( null, "barricade_gas_can" ), "m_Collision.m_usSolidFlags", 2 );

Is this:

EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "worldspawn", "RunScriptCode", "NetProps.SetPropInt( Entities.FindByName( null, \"container_phys_drop\" ), \"m_Collision.m_usSolidFlags\", 2 )", 2, -1 );

Could even (ew) work in _commentary.txt, replacing the " escape char with ^.

Or (more readably) this:

function c14m1_container_fix()
{
	NetProps.SetPropInt( Entities.FindByName( null, "container_phys_drop" ), "m_Collision.m_usSolidFlags", 2 );
}

EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "worldspawn", "CallScriptFunction", "c14m1_container_fix", 2, -1 );

Avoids "prop_physics in solid list (not solid)" errors (as opposed to "solid 0").

Already has a func_brush that supplements it for collision, and Survivors can still even bullet hole the above prop_physics. It's literally impossible to notice a gameplay difference, and fixes the problem.

Option 2:

My "time I enjoyed wasting, is not wasted time" solution... that could also work in a *.LMP file:

// Fix so Tank can't punch prop_physics container after landing to make it
// disappear after 60 seconds. Removes the deletion of "container_dyn"
// prop_dynamic, and SetParents it to "container_phys_drop" prop_physics,
// the prop_dynamic is immediately Disabled (hidden), then falls down
// identically with the prop_physics. Blockade then breaks, prop_dynamic
// ClearParented, prop_physics Killed, and prop_dynamic remains in place.

EntityOutputs.RemoveOutput( Entities.FindByName( null, "crane_rotate" ), "OnFullyOpen", "container_dyn", "Kill", "" );
EntityOutputs.AddOutput( Entities.FindByName( null, "crane_rotate" ), "OnFullyOpen", "container_dyn", "SetParent", "container_phys_drop", 0.001, -1 );
EntityOutputs.AddOutput( Entities.FindByName( null, "crane_rotate" ), "OnFullyOpen", "container_dyn", "Disable", "", 0.001, -1 );
EntityOutputs.AddOutput( Entities.FindByName( null, "crane_rotate" ), "OnFullyOpen", "container_dyn", "DisableCollision", "", 0.001, -1 );
EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "container_dyn", "ClearParent", "", 2.00, -1 );
EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "container_phys_drop", "Kill", "", 2.01, -1 );
EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "container_dyn", "Enable", "", 2.01, -1 );
EntityOutputs.AddOutput( Entities.FindByClassnameNearest( "func_breakable", Vector( -3959, 2202.64, -41 ), 1 ), "OnBreak", "container_dyn", "EnableCollision", "", 2.01, -1 );

// Since "container_dyn" is no longer deleted, "container_brush" is parented
// to it, which usually gets deleted as a child -- so delete it independently.
// Failure to do this won't allow Survivors to enter the container. Note that
// other func_brushes handle the post-drop collision.

EntityOutputs.AddOutput( Entities.FindByName( null, "crane_rotate" ), "OnFullyOpen", "container_brush", "Kill", "", 0.0, -1 );

See https://github.com/MattNF/map-sources/blob/main/c14m1_junkyard.vmf

Option 3:

Bake the whole thing as an animation like we'll do for Death Toll 5 rockslide someday.

Free up edicts on desperate maps (i.e. c5m4_quarter)

The engine will crash at the 2049th edict, but if the count gets over ~1800 it's possible for prop_static to start disappearing and other crazy effects:

https://youtu.be/XXleiSajtDI?t=348

As these are official updates, people spamming SourceMod and 100's of new entities on their server needs to be kept in mind -- and with that in mind, we're somewhat constrained on adding more entities to official maps like "c5m4_quarter", which is one of the largest ("report_entities" to see this):

Total 1705 entities (0 empty, 1444 edicts)

That map has plenty that can be deleted, such as inaccessible func_breakable inside some walls.

Note this is different from the entity limits Hammer reports, where "c2m2_fairgrounds" will report it high because of client-side physics debris, but is not actually a map of concern:

Total 1294 entities (0 empty, 1222 edicts)

Full support for applying z_developer_showupdate to non anv_mapfixes entities

As defined by https://github.com/Tsuey/L4D2-Community-Update/blob/master/scripts/vscripts/z_developer_showupdate.nut#L363 any entity not prefixed with anv_mapfixes will not be displayed with the same amount of information as those from the Last Stand update.

This includes lump and _commentary.txt entities as mentioned in the comment, but can also be extended to entities added through Stripper:Source. This can be circumvented by appending anv_mapfixes to the targetname, but this isn't an ideal way of doing this. For working with Stripper this feature is hugely beneficial, especially when comparing with existing clips or working with angled blockers. Here's an example of me using the described method, where before viewing these clips in-game at all wouldn't have been possible.

Perhaps adding a check for values of mapupdate could simply be used to separate the viewing of these differently grouped entities, allowing ShowUpdate to specify viewing all groups at once or only a specific group. I believe the commentary blockers all include "mapupdate" "1" in their parameters already.

c3m1 _hedge_behindtrains clip


make_clip( "_hedge_behindtrains", "Survivors", 1, "-532 -120 0", "800 58 701", "-11078 8237 320" );

Placement of this clip seems to be wrong, looks like it's supposed to block survivors from standing on the hedges behind the gas station.
Its possible to boost/jump into this clip and appear to get stopped by nothing, and it overlaps the clip at the house.

Notify / Fix functions can't differentiate entity with identical names

If entities created with functions such as make_navblock() or make_brush(), possess the same targetname as an already-existing one, both entities will end up being EntFire() to have the same KeyValues, which is unideal. This is due to functions not moderating if an entity already exists with the given name.

Snippet from make_navblock():

SpawnEntityFromTable( "func_nav_blocker",
{
    targetname	=	g_UpdateName + user_strTargetname,
    teamToBlock	=	intTeamBlock,
    origin		=	StringToVector_Valve( user_strOrigin, " " )
} );

EntFire( g_UpdateName + user_strTargetname, "AddOutput", "mins " + user_strMins );
EntFire( g_UpdateName + user_strTargetname, "AddOutput", "maxs " + user_strMaxs );
EntFire( g_UpdateName + user_strTargetname, "AddOutput", "solid 2" );

switch( user_strState )
{
    case "Apply":		EntFire( g_UpdateName + user_strTargetname, "BlockNav"   );	break;
    case "Remove":		EntFire( g_UpdateName + user_strTargetname, "UnblockNav" );	break;
}

When this is done, it ends up being confusing and frustrasting for the user, as their entity is not being set correctly by the library, yet no errors is returned.

A solution could be to create a helper function that automatically appends a number to the entity's names, then insert it into the offending functions:

// [Somewhere else in the script]
function VerifyEntityName(entname)
{
	local entcount = 0;
	local ent = null;
	while( ent = Entities.FindByName(ent, entname) )
		entcount++;

	if( entcount != 0 )
		return entname+entcount;
	else
		return entname;
}
// [at make_navblock()]
user_strTargetname= VerifyEntityName(user_strTargetname)

EntFire( g_UpdateName + user_strTargetname, "AddOutput", "mins " + user_strMins );
EntFire( g_UpdateName + user_strTargetname, "AddOutput", "maxs " + user_strMaxs );
EntFire( g_UpdateName + user_strTargetname, "AddOutput", "solid 2" );

or the helper function could simply give a warning message for this scenario, then avoid spawning the entity:

function VerifyEntityName(entname)
{
	if( Entities.FindByName(null, (g_UpdateName + user_strTargetname)) )
	{
		ClientPrint(null, DirectorScript.HUD_PRINTTALK, "\x04"+"An entity is not named correctly in the current session!");
		if( developer() )
			ClientPrint(null, DirectorScript.HUD_PRINTTALK, "\x04"+"ERROR: Entity targetname already taken: "+entname);
		return;
	}
}

After this is reviewed, I can make a pull request if desired

Dropping weapon with NULL extra ammo

Quite an old problem. When you call the function of dropping weapons from the player's slot, the weapon will not have reserve ammo.

For example:
GetPlayerFromUserID(3).DropItem("weapon_rifle_ak47")

extra

The same if using the SDKHooks function SDKHooks_DropWeapon(client, weapon);

The Big Commit -- Tomorrow...

I'll close this issue tomorrow(tm) once I get these changes in:

https://gist.github.com/Tsuey/146691b02e20e951b1ec7834a0ac0d47#file-the_big_commit-txt

After that, feel free separate the maps to individual scripts, etc. This is essentially TLS: The Non-Contentious Director's Cut. A lot of rot has been cleaned, out-standing bugs perished, and fine-finish QoL added.

Here's the high-level changelog meant for Steam News (see gist for flavors of verbosity):

  • Polished several mapfix and versus entities from clips to ladders
  • Fixed Survivor/Infected permstuck spots throughout several maps
  • Added auto-crouch QoL for Dead Center and smoothened kiosks
  • New props will no longer randomly vanish on Dark Carnival finale
  • Patched janky Swamp Fever 1 ladder near the event
  • Swamp gator has been given a proper name... and some bite
  • Prevent bots from picking up items map 4's saferoom on Hard Rain 1
  • Lifted an anti-grief trigger on No Mercy 1 off the ground
  • Prevented gascans from falling between buses at Crash Course 2 finale
  • Prevent a Tank spawn flow exploit on Dark Carnival 1
  • Solidifed a prop_static chimney on Parish 2 for LOS blocking QoL
  • Patched a ladder shortcut at start of No Mercy 1
  • Revived Infected ladder next to Blood Harvest 4 lawnmower room
  • Fixed an exploit to get under map on Last Stand finale
  • Countless feature enhancements for "script ShowUpdate()"

Permanent & Temporary health bugs

  1. If you are playing as a survivor, take a pills and then you will be incapacitated by a tank with some hittable object (Example: car), your temporary health in the incap state will be above 300. The default cvar 'survivor_incap_health' value is 300. Plugin written by the community to fix the problem. Maybe need to add a clamp to the game code or it is better to clear the health buffer if you are incapacitated by such an object? Example: clamp(iTempHealth, 0.0, survivor_incap_health.GetFloat()). The same as above can be done if the survivor jump from a great height and become incapacitated, your temporary health will be above 300. It works for everything, you just need to take instant damage that will incapacitate you. Video showing the problem.

  2. If you play as a survivor without temporary health, and your permanent health is equal to 1, you can hang on the ledge and when you are rescued you will again have 30 temporary health. Plugin written by the community to fix the problem. This plugin fixes these two problems. Maybe this is not really a bug ..

  3. Temporary and permanent health and water - bug. I don't quite understand how this bug works. You need to play as a survivor and find deep water, where your character will start taking damage from water, then you need to get out of the water and your health will start to recover, for some reason it is fully restored (this in itself is not right). You can eat pills or use adrenaline when you take damage in the water, if you get out of the water, your health will be restored, and even if your permanent health is 1, you can get 50+ permanent health. You can do the same without using pills or adrenaline. I think this video will show more, also shows some bugs described here. A plugin that was written by the community to fix (code below this line).

Minigun glitch

You can use the Minigun and the Heavy Machine Gun to launch yourself to a direction.
To do this, you have to hold your jump key and use and dismount quickly. In short, using default commands, hold down SPACEBAR and press E twice on the mounted gun. If you were on the left side of the gun it will launch you towards the right and vice versa. (C) from the description to the video.

Some players also know how to do it back and forward.

https://youtube.com/watch?v=tFFVFIaw3Ok
https://youtube.com/watch?v=e4jDF2A0x4E

c2m4 food cart ladder

https://github.com/Tsuey/L4D2-Community-Update/blob/master/scripts/vscripts/anv_versus.nut#L577

The ladder on the food cart in front of the saferoom is cloned from this ladder:

Where Valve accidently included the clipping around the ladder as a part of it, which causes the ladder to extend further than it is supposed to and block players behind the food cart.


It also means that players climbing up the ladder from the angled parts will generally fall off before reaching the top.

Map continuity error - c11m3_garage and c11m4_terminal

I am not sure what the community dev team can do about this if anything but this is something that has bothered me since L4D1 has been out, and it even exists in L4D2. I have a knack for spotting continuity errors on maps.

On the third map of Dead Air, we can see the crashed van that we set off for the event in the fourth map to run down the barricade. The problem however, is that on the third map, the van is actually in the wrong place as shown in the attached screenshots. I can only assume there was some kind of miscommunication between the people who were doing the mapping. If it was the same person though, I find it odd that this error could even happen.

s1
s2

It's okay if the dev team can't fix this though.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.