smilz0 / Left4Bots

Improvements for the L4D2 survivor bots
https://steamcommunity.com/sharedfiles/filedetails/?id=3022416274
34 stars 4 forks source link

Fix bots stuck in pickup loop #89

Open 4512369781 opened 5 months ago

4512369781 commented 5 months ago

Based on Declan's feedback, I finally found the reason, but I don't know if there are other problems with this solution.

please tell me what you think.

fix bots stuck in pickup loop.zip

smilz0 commented 5 months ago

ok thanks.

smilz0 commented 5 months ago

Hey mate, i don't think i understand where the problem is, tbh. I mean i understand that the itemstoavoid logic is complicated and having 2 weapons configurations makes it even more complicated but in my opinion it is better to have 2 separate configurations for the vanilla and the l4b2 pick-up logics as it allows more control and more customization. In default itemstoavoid there's already "ammo" and "upgrade_item" and items_not_to_avoid is 1, which means that if you add a weapon in itemstoavoid.txt the vanilla AI will try to pick it up and will likely get stuck in a loop with the l4b2 weapon preference. This problem only occurs with weapons (inventory slots 1 and 2), not with the other items as the vanilla AI doesn't try to replace its current items for for the other slots, so for these slots you can have both the vanilla and l4b2 logics active. Did i miss something?

4512369781 commented 5 months ago

hey! I think, rather than being stuck between two logics, would better to choose one, and weapon preference could completely replace the vanilla logic for now.

The default l4b2 settings is fine, but if people add weapons to "itemstoavoid.txt" or change " items_not_to_avoid" to 0, thereby removing these weapon from the avoid list, vanilla bots will search these weapon and pickup it, but at the same time the weapon preference also forces bots pickup the highest priority weapon, which makes bots stuck in the loop.

And "ShouldAvoidItem" function can only make all bots like\dislike a weapon, but weapon preference is for each bot.

However, there is one situation where the two logics can work together, that is, following the vanilla logic. Taking Ellis as an example, his priority is: T2 weapons (sniper > shotgun = rifle) > T1 weapons (shotgun = smg) in coop mode. If the weapon preference is according to this priority, there is no need to put any weapons into avoid list, and no loop problems there. But this is only an ideal situation, and it is impossible to know how people would change the priority.

AsuToki360 commented 5 months ago

I honestly barely understand anything, but I'm trying to make the bots to not pick up sniper rifles, but for some reason they keep picking them up even though I added those weapons in itemstoavoid.

How can I do this in L4B2?

4512369781 commented 5 months ago

I honestly barely understand anything, but I'm trying to make the bots to not pick up sniper rifles, but for some reason they keep picking them up even though I added those weapons in itemstoavoid.

How can I do this in L4B2?

if "items_not_to_avoid" set to "1", weapons in "itemstoavoid.txt" will not avoid, so you should delete it from "itemstoavoid.txt". and goto "weapons" folder, remove "sniper" in the config file or move it to the line end.