
REPOForge
Plugin interop bus, lobby discrepancy handshake, and a host-authoritative shop spawn pipeline for R.E.P.O.REPOForge
Library plugin for R.E.P.O. Other mods talk to each other through a shared bus, the lobby exchanges a fingerprint so Photon no longer dies on silent prefab drift, and shop items spawn from one host manifest.
Install is automatic. You do not copy DLLs and other mods do not need [BepInDependency].
Русский текст ниже.
Install (pick one)
Thunderstore Mod Manager / Gale / r2modman
- Download this zip (1.2.1).
- Import local mod → select the zip.
- Start R.E.P.O. from the manager.
If the log says Skipping [REPOForge] because a newer version exists, you have two copies. In the profile folder delete extra REPOForge directories under BepInEx/plugins/ and keep a single REPOForge.dll.
Double-click installer
If the game already has BepInEx: unzip, run Install.bat. It finds Steam REPO and copies the DLL into BepInEx\plugins\REPOForge\.
What it fixes
Plugin fights. Several shop mods postfix ShopManager.GetAllItemsFromStatsManager or prefix-skip PunManager.SpawnShopItem. Forge postfix-last merges potential-item lists and deduplicates Items/{name} prefab paths.
Discrepancy / drift. On Start() Forge auto-discovers every loaded BepInEx plugin (no attribute required on their side), hashes guid@version, and logs both fingerprints on join.
Shop spawn. Host-authoritative pipeline. Any REPOLib / StatsManager item that is not vanilla is adopted automatically: one copy on a matching shelf. Oversized meshes are promoted onto Medium/Large so they are not stuffed into small wire displays. Price-weighted selection, extra shelves, maxInShop caps.
Missing prefabs. A Harmony finalizer on PhotonNetwork.InstantiateRoomObject swallows instantiate failures and drops a cube placeholder instead of crashing (PUN's first argument is prefabName, not prefabId).
For mod authors
You do not need [BepInDependency]. If your item is registered with REPOLib / StatsManager, Forge puts one copy on a matching shop shelf the next time the host opens the shop.
Optional: Thunderstore dependency REPOForge-REPOForge and Forge.Shop.Register(...) if you want to force volume or category.
Forge.Shop.Register(new ShopIntent {
ItemName = "Laser Gun",
PrefabPath = "Items/Item Laser Gun",
Weight = 6,
MaxInShop = 1,
Volume = ItemVolumeKind.Medium,
Category = ShopCategoryKind.Items,
Item = yourItem,
});
Do not Prefix-skip PunManager.SpawnShopItem or ShopManager.GetAllItemsFromStatsManager. Postfix the list if you must inject extra items.
Config
Generated on first launch: BepInEx/config/com.repoforge.core.cfg
| Key | Default | Meaning |
|---|---|---|
| General.Enabled | true | Master switch |
| Compat.Handshake | true | Fingerprint exchange in lobby |
| Compat.KickOnHardMismatch | false | Warn only unless you opt in |
| Compat.PlaceholderMissingPrefabs | true | Don't crash on missing prefab |
| Shop.Pipeline | true | Host shop manifest |
| Shop.FillEmptyVolumes | true | Raise spawn caps to fill empty shelves |
| Shop.DiversifyPool | true | Round-robin unique items (no all-medium health) |
| Shop.PreferModItems | true | Guarantee a shelf slot for non-vanilla items |
| Shop.AdoptUnlistedMods | false | Leave off. 1.2.0 on stuffed level loot into the shop |
| Shop.MaxCopiesPerItem | 2 | At most this many of one prefab on the shelves |
| Shop.UseShopPriceForItemSelection | false | Reorder pool by price. Off: vanilla/MSI weights |
| Shop.ExtraShelves | 0 | Unused (compat) |
| Shop.ItemSpawnTargetAmount | 0 | Hard cap; ignored while FillEmptyVolumes is on |
| Shop.RemapSmallItemsOntoMediumVolumes | true | Overflow Small onto Medium |
По-русски
- Скачайте zip 1.2.1.
- Thunderstore Mod Manager / Gale → Import local mod.
- Запустите игру из менеджера.
Если в логе Skipping [REPOForge] because a newer version exists — две копии DLL. Удалите лишние папки REPOForge в BepInEx/plugins.
Либо Install.bat — сам найдёт Steam REPO.
Чужим модам не нужен [BepInDependency].