ShopDuplicateFix
Buying two of the same shop item now delivers two instead of charging for both and delivering one.
About this mod Author’s original text
ShopDuplicateFix
Buy two of the same item, get two of the same item.
Built and compiled against game build v0.4.4 (runs on v0.4.4.x).
The bug
Put two copies of the same shop item in the cart and check out: you're
charged for both, but only one exists afterwards.
The purchase ledger is StatsManager.itemsPurchased, a dictionary keyed by
item name. A name-keyed dictionary can't represent "two of these" unless
something counts — and evidently something doesn't. The money side charges
per physical object; the delivery side collapses to one per name.
The fix
Each purchased physical item produces one ItemPurchase(itemName) call.
This mod tallies those calls per item name per shop visit, and after the
game's own bookkeeping runs, raises the ledger to the tally if it's short.
Two properties worth knowing:
- It's a no-op where the bug isn't. If the game counted correctly, the
ledger already matches or exceeds the tally and nothing is written. So it
can't over-deliver, and it coexists with shop mods (More Shop Items etc.)
regardless of which layer loses the count.
- The tally resets on level change, so one visit's purchases can never
inflate the next visit's.
Host only
Purchases and the stats ledger are authoritative on the master client. Only
the host needs this.
First run
Verbose is ON by default for this release. Buy two of the same item, then
check BepInEx/LogOutput.log:
- paid for 2, game recorded 1 - corrected to 2 → the bug existed, now fixed
- vanilla counted correctly, no fix needed → the game (or one of your other
shop mods) already handles it; the fix stood down
Either way the log tells you exactly what happened underneath. Turn Verbose
off afterwards.
If instead you see only ONE ItemPurchase line after buying two, the loss
happens before the ledger (the second item is never charged as a purchase at
all) — report that log and the fix needs to move a layer up.
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: