Previous description understated the effects of the `allowNegativeDosh`
flag. Effects are much more common and significat that previously
thought because of game behavior on filling ammo for one or all weapons.
Changes behavior of `FixInventoryAbuse` on weight limit violation.
Instead of destroying all weapons in the inventory of abuser,
it drops them on the ground.
This change is mainly caused by game behavior that allows
regular players to accidental break weight limits.
1. It's much easier to find information relevant to a particular
feature (fix), if it's description follows after it's section
definition, i.e. [Acedia.FixAmmoSelling].
2. Descriptions rewritten for more clarity to the end user.
`CheckAmmoPickup` effectively only contained another function call
and itself was only called once. As it also didn't add to readbility,
it needed to be removed.
Previous comments explaining the idea behind how `FixAmmoSelling`
works were incorrectly stating that non-default pickup class is only
used to calculate diuscounts, when it was also used to spawn
weapon pickups.
Non-default value of pickup class was used to
spawn pickup when player drops a weapon.
But since we've replaced that class and it doesn't
(or might not) exist on the client - dropped weapons
appeared as invisible.
Catch the moment our custom pickup is spawned and
replace it back with default one.
This feature addressed two inventory issues:
1. Players carrying amount of weapons that shouldn't be allowed by the
weight limit.
2. Players carrying two variants of the same gun.
For example carrying both M32 and camo M32.
Single and dual version of the same weapon are also considered
the same gun, so you can't carry both MK23 and dual MK23 or
dual handcannons and golden handcannon.
This feature fixes several issues related to the selling price of both
single and dual pistols, all originating from the existence of dual weapons.
Most notable issue is the ability to "print" money by buying and
selling pistols in a certain way.
It fixes all of the issues by manually setting pistols'
'SellValue' variables to proper values.