From a5e36dc85a3f4b54db176b81c83718ec0f9c2064 Mon Sep 17 00:00:00 2001 From: Anton Tarasenko Date: Sun, 22 Mar 2020 19:32:36 +0700 Subject: [PATCH] Fix incorrect description for `FixAmmoSell` 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. --- config/Acedia.ini | 25 +++++++++++------- .../Features/FixAmmoSelling/FixAmmoSelling.uc | 26 ++++++++++++------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/config/Acedia.ini b/config/Acedia.ini index 7d710fc..80b4ec9 100644 --- a/config/Acedia.ini +++ b/config/Acedia.ini @@ -51,16 +51,21 @@ allowSellValueIncrease=true autoEnable=true ; Due to how this fix works, players with level below 6 get charged less ; than necessary by the shop and this fix must take the rest of -; the cost by itself. While it's _highly_ unreliable and can only provide -; a minuscule benefit this can potentially be abused by cheaters. -; To decrease the amount of value they can get from it, this fix can be -; allowed to decrease players' money into negative values. -; The trade off is a small chance that there is a bug in this fix and -; an unlucky circumstances can lead to regular players -; to have negative dosh values. -; Both situations are highly unlikely and whichever one you chose probably -; doesn't matter, but the option is there. -allowNegativeDosh=true +; the cost by itself. +; The problem is, due to how ammo purchase is coded, low-level (<6 lvl) +; players can actually buy more ammo for "fixed" weapons than they can afford +; by filling ammo for one or all weapons. +; Setting this flag to 'true' will allow us to still take full cost +; from them, putting them in "debt" (having negative dosh amount). +; If you don't want to have players with negative dosh values on your server +; as a side-effect of this fix, then leave this flag as 'false', +; letting low level players buy ammo cheaper +; (but not cheaper than lvl6 could). +; NOTE: this issue doesn't affect level 6 players. +; NOTE #2: this fix does give players below level 6 some +; technical advantage compared to vanilla game, but this advantage +; cannot exceed benefits of having level 6. +allowNegativeDosh=false [Acedia.FixInventoryAbuse] diff --git a/sources/Features/FixAmmoSelling/FixAmmoSelling.uc b/sources/Features/FixAmmoSelling/FixAmmoSelling.uc index a248455..e078a58 100644 --- a/sources/Features/FixAmmoSelling/FixAmmoSelling.uc +++ b/sources/Features/FixAmmoSelling/FixAmmoSelling.uc @@ -89,15 +89,21 @@ class FixAmmoSelling extends Feature; // Due to how this fix works, players with level below 6 get charged less // than necessary by the shop and this fix must take the rest of -// the cost by itself. While for unreliable and for minuscule benefit, -// this can potentially be abused by cheaters. -// To decrease the amount of value they can get from it, this fix can be -// allowed to decrease players' money into negative values. -// The trade off is a small chance that a some bug in this fix and -// an unlucky circumstances can lead to regular players -// having negative dosh values. -// Both situations are highly unlikely, but the option is there. - var private config const bool allowNegativeDosh; +// the cost by itself. +// The problem is, due to how ammo purchase is coded, low-level (<6 lvl) +// players can actually buy more ammo for "fixed" weapons than they can afford +// by filling ammo for one or all weapons. +// Setting this flag to 'true' will allow us to still take full cost +// from them, putting them in "debt" (having negative dosh amount). +// If you don't want to have players with negative dosh values on your server +// as a side-effect of this fix, then leave this flag as 'false', +// letting low level players buy ammo cheaper +// (but not cheaper than lvl6 could). +// NOTE: this issue doesn't affect level 6 players. +// NOTE #2: this fix does give players below level 6 some +// technical advantage compared to vanilla game, but this advantage +// cannot exceed benefits of having level 6. +var private config const bool allowNegativeDosh; // This structure records what classes of weapons can be abused // and what pickup class we should use to fix the exploit. @@ -373,7 +379,7 @@ event Tick(float delta) defaultproperties { - allowNegativeDosh = true; + allowNegativeDosh = false rules(0)=(abusableWeapon=class'KFMod.Crossbow',pickupReplacement=class'FixAmmoSellingClass_CrossbowPickup') rules(1)=(abusableWeapon=class'KFMod.PipeBombExplosive',pickupReplacement=class'FixAmmoSellingClass_PipeBombPickup') rules(2)=(abusableWeapon=class'KFMod.M79GrenadeLauncher',pickupReplacement=class'FixAmmoSellingClass_M79Pickup')