You are viewing a potentially older version of this package. View all versions.
Vibecodeguy-ItemShare-1.2.0 icon

ItemShare

Co-op loot sharing. Every player walks over the same drop and collects it for themselves, and the orb only despawns once everyone has it. Host-only install.

Date uploaded 20 hours ago
Version 1.2.0
Download link Vibecodeguy-ItemShare-1.2.0.zip
Downloads 4
Dependency string Vibecodeguy-ItemShare-1.2.0

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2121 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2121
RiskofThunder-HookGenPatcher-1.2.9 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.9

README

ItemShare

Stop racing your friends to the loot.

Every player collects the same drop for themselves. The orb stays on the ground until the last person has picked it up, then despawns like normal.

Only the host needs this installed

All of the logic runs server-side and rides on the game's normal inventory sync, so your friends do not need to install anything. Nobody desyncs, nobody gets kicked for a mod mismatch. Installing it on every machine is harmless, just unnecessary.


Modes

Set General.PickupMode in the config file.

Individual — default

Everyone walks over the orb themselves.

  • First player touches it, gets the item, orb stays
  • Second, third player touch it, get the item, orb stays
  • Last player touches it, gets the item, orb despawns
  • Already collected it? Walking over it again does nothing
  • Playing solo? Behaves exactly like vanilla

You still have to go get your loot, you just are not competing for it.

Instant

The first player to touch the orb takes it and everyone else is handed a copy on the spot, wherever they are. Good if you would rather not run around collecting, or if someone is busy holding a boss and would otherwise miss out.


Config

BepInEx/config/com.majai.itemshare.cfg, created after your first launch.

Key Default What it does
General.PickupMode Individual See above. Read once at startup — restart the game after changing.
Tiers.White / Green / Red / Boss true Share that tier. Turn one off and it goes back to vanilla first-come-first-served.
Tiers.Lunar false Lunar (blue) items.
Tiers.Void false Void items. They corrupt their counterpart, so turning this on means everyone loses the corrupted item.
Tiers.Food false The new FoodTier. Untested, so it defaults to vanilla behaviour.
General.ShareToDead true Dead players are handed items automatically, since they cannot walk over an orb. Either way, a dead player never blocks an orb from despawning.
General.AnnounceProgress true Individual only. Chat line showing collection progress, e.g. [ItemShare] Bandit - 2/4.
General.ShareEquipment false Instant only. Gives equipment to players with a free slot. Never overwrites equipment someone is holding.

Every tier flag is read live, so you can change those mid-run without restarting.


Things to know

Players who already collected an orb still see it lying there until the last person picks it up. The pickup is a single networked object that every client renders identically — hiding it per-player would mean custom network messages, which would make this a mod everyone in the lobby has to install. Keeping it host-only was worth the cosmetic oddity. The chat progress line exists to make up for it.

Equipment is left completely vanilla in Individual mode. There is one equipment slot, so "everyone walks over and collects it" does not really mean anything. First to touch it takes it, same as always.

Instant mode does not charge other players for 3D printers. If someone spends an item at a printer or cauldron, only they pay for it, so inventories slowly drift apart over a run. This used to be handled, but the cost API changed shape in a recent game update and the old approach no longer applies. Individual mode is unaffected — it never assumed identical inventories in the first place.

Not covered yet: Artifact of Command (different code path), the Scrapper, and money.


Compatibility

Built and tested against the current Risk of Rain 2 release. It hooks exactly one method, GenericPickupController.AttemptGrant, and does not touch the item catalog, so it should sit fine next to content mods that add items — new items get shared according to their tier automatically.

If a game update breaks it, the pickup API almost certainly moved. Open an issue rather than assuming it is a conflict with another mod.


ภาษาไทย

ของ drop มาแล้วไม่ต้องแย่งกัน ทุกคนเดินไปเก็บของชิ้นเดียวกันได้เอง orb จะหายก็ต่อเมื่อคนสุดท้ายเก็บแล้ว

host ลงคนเดียวพอ — logic รันฝั่ง server ทั้งหมด เพื่อนไม่ต้องลงอะไรเลย ไม่ desync

โหมด Instant (ตั้งใน config) = คนแรกเก็บแล้วคนอื่นได้ copy ทันทีโดยไม่ต้องเดินไปไหน

ข้อจำกัดที่ควรรู้: คนที่เก็บไปแล้วจะยังเห็น orb ลอยอยู่ จนกว่าคนสุดท้ายจะมาเก็บ เพราะ orb เป็น networked object ตัวเดียวที่ทุกคนเห็นเหมือนกัน จะซ่อนเฉพาะบางคนต้องให้ทุกคนลง mod ด้วย เลยเลือกใช้ข้อความในแชทบอกความคืบหน้าแทน


Credits

Made by majai. Built with BepInEx and HookGenPatcher.

CHANGELOG

Changelog

1.3.0

  • Artifact of Command is now supported in Individual mode. Every player opens the cube and picks their own item, instead of the first chooser deciding for everyone. The cube stays until all players have picked, then disappears. New ShareCommandPicks config, on by default.
  • Only Command cubes are affected. The Scrapper, Meal Prep, the Hoard, the Solus vendor and Lemurian eggs use the same controller but take items rather than give them, and are left completely untouched.

1.2.1

  • Fixed MissingMethodException: void RoR2.Stage.Start() at startup, which stopped the mod from loading at all. Stage.Start is a coroutine returning IEnumerator, but the MMHOOK assembly HookGenPatcher ships still describes the old void signature. Now uses the game's own Stage.onStageStartGlobal event, which cannot drift out of sync.

1.2.0

  • Rebuilt against the current pickup API. Grants now replay the vanilla PickupDef.GrantContext pipeline instead of writing to the inventory directly, so temp items, void corruption and per-item side effects all behave normally.
  • Temp items stay temp for everyone. A decaying pickup is replayed with its decayValue rather than becoming permanent for the players who did not touch it.
  • Added Tiers.Food for the new FoodTier. Off by default until it is tested.
  • Removed MirrorItemCosts. CostTypeDef.PayCost changed shape and the old implementation no longer applies. See the Limitations section of the README.

1.1.0

  • Added PickupMode. Individual (default) makes every player collect the orb themselves; Instant keeps the original behaviour.
  • Dead players are handed items automatically and never block an orb from despawning.
  • Added AnnounceProgress chat feedback.

1.0.0

  • First release. One player picks up a drop, everyone receives it.