You are viewing a potentially older version of this package. View all versions.
hiccup-NoSharedMoney-1.4.0 icon

NoSharedMoney

Money is earned and spent per player instead of from one shared pot. Everyone keeps their own wallet, saved between sessions.

By hiccup
Date uploaded a week ago
Version 1.4.0
Download link hiccup-NoSharedMoney-1.4.0.zip
Downloads 5330
Dependency string hiccup-NoSharedMoney-1.4.0

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2305 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2305

README

NoSharedMoney

How to Fish gives the whole crew one shared bank balance. This mod gives every player their own.

Sell a fish, the money goes to you. Buy a rod, it comes out of your wallet. Your balance follows your Steam account and survives rejoins and restarts.

Everyone needs this mod

All players must have NoSharedMoney installed, including the host. Wallet balances are pushed to each client individually, and a client without the mod has no way to receive them.

If someone joins without it, the host gets a warning in the console and in chat. That player is not able to break anything, since the server still refuses any purchase they cannot afford, but their money display will be stuck on a stale number and they will not be able to buy anything until they install the mod.

How it works

  • Each player has their own balance, keyed by Steam ID.
  • Selling credits whoever put the item in the sell box (or fed it to a quest NPC). If you catch a fish and hand it to a friend, they get paid for it, so loot can be passed around deliberately.
  • Buying charges the player who interacted with the shop. That includes shared boat upgrades like the motor and the radar: the buyer pays the full price, and the whole crew gets the benefit.
  • Every purchase is still checked on the server against the buyer's real balance, so nobody can spend money they do not have.

Existing saves

The first time you load a save that still has a shared balance, that money is split evenly between the players recorded in the save, with any remainder going to the first of them. If the save has no player records yet, the whole amount goes to the first player who joins.

Balances live in %USERPROFILE%\AppData\LocalLow\Dazed Games\How to Fish\NoSharedMoney\<save name>.json, alongside the game's own saves. It is plain JSON keyed by Steam ID, so you can read or hand-edit it. The vanilla save file is left intact, and its single money field is kept up to date with the crew's combined total, so removing the mod leaves you with a sensible shared balance rather than a broken save.

Backups

Your balances live in a file of their own, separate from the game's save. That means the two can drift apart: roll a save back and the wallets stay where they are, so the money recorded in the save no longer matches what people actually hold.

Install SaveBackups and this stops being possible. This mod registers with it automatically, so every snapshot captures the wallets alongside the save and restoring puts both back together. It is optional and everything works without it, but the wallet file is the only record of who owns what, and nothing else can recover it if it is lost.

Config

BepInEx/config/dazed.howtofish.nosharedmoney.cfg

Key Default Meaning
StartingMoney 0 Balance for a player who has never played this save.
WarnInChat true Host only: announce in chat when a connected player is missing the mod.
UnclaimedSalesGoToHost true If something no player ever held is sold, credit the host instead of discarding the money.
ShareBossMoney true Split the money from anything a boss or mini boss drops, including its meat, evenly between everyone in the session.
DuplicateBossMoney false Pay every player the full sale price instead of a share of it. Ignored when ShareBossMoney is off.
SplitBoatCosts false Split the cost of the boat motor and radar between everyone instead of one player paying it all.
ShowBalancesOnNameplates true Show each player's balance under their name. Your own setting, only changes what you see.
EnablePayCommand true Allow /pay in chat.

Seeing what everyone has

Each player's balance appears under their name above their head, so you can tell at a glance who is flush and who is broke. This is a local setting: turn it off and only you stop seeing it.

Sending money

/pay <name or steam id> <amount> in chat sends money to another player.

/pay Steve 500
!pay Steve 500
/pay 76561198000000000 500

Both /pay and !pay work. The game normally swallows anything starting with / unless you are the developer, so this mod lets its own command through and leaves every other slash command alone.

Type part of a name and press Tab to complete it. Press Tab again to cycle through everyone who matches, or on an empty /pay to cycle through everyone.

Partial names still work without Tab, as long as they match only one person. You cannot send more than you have, and you cannot send zero or a negative amount. Every payment is announced in chat so nobody has to take your word for it.

Sharing the cost of the boat

The motor and the radar benefit the whole crew but normally land on whoever clicks buy. Turn on SplitBoatCosts and the price is divided evenly instead. Everyone has to be able to afford their share, otherwise the purchase is refused and the log says who came up short.

Boss money

Bosses are a group effort, so by default their drops pay everyone. When a boss or mini boss drop is sold, the money is split evenly between every player in the session rather than going to whoever carried it to the sell box.

This covers the body itself and the meat chunks a boss scatters on death. Everything else you catch or find still pays only you.

Whoever made the sale gets any remainder that does not divide evenly, so nothing is lost to rounding. Turn ShareBossMoney off to have boss drops pay the seller like everything else.

Set DuplicateBossMoney to true if you would rather everyone got the whole amount. A 1000 corpse then pays 1000 to each of four players instead of 250 each. This creates money rather than dividing it, so it makes bosses far more rewarding as the group grows. Use it if you find the split makes bosses feel worse the more friends you bring.

Both of these are read from the host only. Guests do not need matching settings, and changing yours has no effect unless you are hosting.

Compatibility

Requires BepInEx 5. Built against How to Fish on Unity 6000.4 with FishNet networking.

The mod hooks the game's money functions by name and reports what it found on startup. If a game update moves something, the BepInEx log says exactly which hook failed instead of failing silently.

CHANGELOG

v1.4.0

New:

  • Balances now show under each player's name above their head. Local setting, ShowBalancesOnNameplates.
  • /pay <name or steam id> <amount> in chat to send money to another player. !pay works too. Press Tab to complete a partial name, and again to cycle through matches. You cannot overdraw or send a negative amount, and every payment is announced in chat.
  • Tab no longer opens the journal while you are typing in chat.
  • DuplicateBossMoney, off by default, is an alternative to splitting a boss drop. Instead of dividing the sale between everyone, every player is paid the full amount. A 1000 corpse pays 1000 to each of four players rather than 250 each. This creates money rather than dividing it, so bosses get more rewarding as the group grows instead of less.
  • SplitBoatCosts, off by default, splits the cost of the boat motor and radar between everyone instead of one player paying it all.
  • Both boss money settings and SplitBoatCosts are read from the host only, so guests do not need matching configs.

Fixed:

  • Wallets did nothing in non Steam sessions. The game gives every player the host's Steam id in LAN and direct games, so all wallets collapsed into one shared pot with no warning.
  • Rejoining a session left you at $0 and unable to buy anything until your balance next changed.
  • The mod could write a zero balance over the vanilla save's money if the wallet file failed to load, destroying the last copy of the shared pot.
  • An error while saving could leave the host holding the total of everyone's wallets.
  • A purchase whose buyer could not be identified was handed over free instead of being refused.
  • A boss share paid to a player who was disconnecting vanished instead of being paid.
  • A player who joined on a reused connection id could be mistaken for a modded client and never warned that they were missing the mod.

v1.3.0

  • Boss and mini boss drops now split their money evenly between everyone in the session when sold, including the meat chunks a boss scatters on death. Controlled by the new ShareBossMoney setting, on by default.
  • The remainder from an uneven split goes to whoever made the sale, so nothing is lost to rounding.

Changelog

1.2.0

  • Fixed sales by anyone other than the host being credited to the host. The seller was identified using the game's LastHolder, which is not synchronised, so on the host a fish held by another player often looked like it had never been held by anyone. That fell through to the unclaimed sale rule and paid the host instead. The mod now tracks holders itself on the server, and only falls back to LastHolder as a last resort.
  • Fixed a player who was slow to be recognised as having the mod never receiving their balance afterwards. The server recorded a wallet value as sent before it had actually sent it, so once that happened it would never resend the same value and the player was stuck on an empty wallet.
  • Broadcast handlers are now registered before the client announces itself, closing a window where the first reply from the server could arrive with nothing listening for it.

1.1.0

  • Wallets are now included in SaveBackups snapshots when that mod is installed, so restoring a save also restores everyone's money. Without it the save and the wallets could be rolled back independently, leaving the recorded total disagreeing with what people actually had.
  • A wallet file that exists but cannot be read no longer causes the shared balance to be split evenly again. The mod now refuses to touch the file so it can still be recovered, and says so in the log.
  • The wallet file is written through a temporary file and swapped into place, so a crash while saving can no longer leave it half written.
  • An unclaimed balance, from migrating a save that had money but no player records, is now stored in the wallet file instead of only living in memory. It could previously be lost if the game saved before anyone joined.
  • Money held by a player with no Steam ID is no longer counted into the total written to the save file, since it was never stored in the wallet file and vanished on the next load.
  • Updated the BepInEx dependency to 5.4.2305.

1.0.0

  • Initial release.
  • Per-player wallets replace the shared balance, keyed by Steam ID and persisted per save.
  • All eight purchase paths charge the buyer: items, bait, attachments, bullet upgrades, sharpness upgrades, boat motor, boat radar, and inventory pockets.
  • Selling credits whoever sold the item.
  • Existing shared balances are split evenly across the players recorded in the save on first load.
  • The vanilla save's money field is kept at the crew total so uninstalling is non-destructive.
  • Host is warned in console and chat when a connected player is missing the mod.