Let strangers pick up party money and split it equally

Money has no owner - unlike a dropped item it can be picked up by anyone
standing on it. Deriving the drop's shares from the killer's party made a
stranger's pick up pay nothing and leave the money on the ground, destroying
zen that was previously taken and split by the picking party.

The recorded shares now apply only when the party picking the money up is the
one which earned it; otherwise there is no experience of theirs to follow and
the money is split equally between the picking party, as it was before and as
share-less money (e.g. from an item box) already is.

Covered by DroppedMoneyTest.StrangerPartySplitsPickedUpMoneyEquallyAsync and
EarningPartyReceivesMoneyByExperienceShareAsync.

(cherry picked from commit ae7cad81da6893cfbd1c28bb29811b7f0a10d540)
This commit is contained in:
nolt
2026-07-25 14:02:54 +02:00
committed by Acentech Dev
parent d7c589fc45
commit 7325e1a1d6
2 changed files with 79 additions and 1 deletions

View File

@@ -148,7 +148,12 @@ public sealed class DroppedMoney : AsyncDisposable, ILocateable
return true;
}
var shares = this._shares.Count > 0
// Money has no owner - it can always be picked up, by strangers too. The recorded shares
// only apply when the party which picks it up is the one which earned it; then the money
// follows the experience. For anyone else there is no experience to follow, so it is split
// equally between the picking party, just like money without any shares (e.g. an item box).
var earnedByThisParty = this._shares.Any(share => party.IsEligibleForMoney(share.Player, player));
var shares = earnedByThisParty
? this._shares
: MoneyDistribution.CreateEqualShares(this.Amount, party.PartyList.OfType<Player>().ToList());