Loot Manager
Adds loot library for mod creators. This tool allows user to assign loots to enemies using Mods Communicator.
模組介紹 作者原文
Outward Loot Manager
Outward mod that allows you to assign loots to enemies using Mods Communicator to send events.
Deeper Explanation
This mod hooks into the Lootable.OnDeath method and evaluates the
provided LootRules. These rules determine whether your custom loot
should be applied to a dying enemy.
The mod acts as a central Loot Manager that stores simple,
abstracted logic and handles more complex game mechanics internally. Its state
can be saved or loaded using XML.
Other mods can inspect, modify, or react to the LootManager’s
dynamic state and see how different mods interact with it.
How to use it
Firstly, install [Mods
Communicator](
After that, you can publish and subscribe to LootManager events.
All events are registered and visible in Mods Communicator’s logging system.
However, it is still recommended to read the event descriptions below and
review the examples. Many event fields are optional and give you extra control,
but they are not required.
Percentages vs Weights
If the total drop chance of your items exceeds 100, the system automatically
switches to weight-based loot instead of percentages. Providing
maxDiceValue also forces weight mode.
In weight mode, Outward uses its original loot system, where each item is
assigned a dice-roll range based on its dropChance and its position
in the list. The system builds contiguous ranges as follows:
- minDiceRollValue is the sum of all previous items’ dropChance.
- maxDiceRollValue is minDiceRollValue + dropChance.
When the game rolls a number, the item whose range contains that number is the
one that drops.
Example: If each item has a dropChance of 10, the ranges will be
0–10, 10–20, 20–30, etc.
The seventh item will therefore have
minDiceRollValue = 60 and maxDiceRollValue = 70.
You can adjust the behavior further using emptyDropChance and
maxDiceValue.
Events
Check the parameter tables to understand which values are required. Event
descriptions below are intentionally abstract — always refer to the tables for
the exact field requirements.
Publish
Mod Namespace: gymmed.loot_manager_*
Make sure to publish only after LootManager has initialized. I
recommend adding it as a dependency in your mod, or publishing it before/after
ResourcesPrefabManager.Load has finished.
Add Loot
Event Name: AddLoot
Requires at least one of the following:
item
itemDropChance
ListItemDropChance
Also requires one or more of the filtering fields: enemy / faction / area / uniqueness.
This event is the most flexible one — you can do everything with it.
Other events exist only for convenience.
Examples
Guaranteed Loot
using OutwardModsCommunicator;...
int myItemId = 4000360; // Dreamers root
var payload = new EventPayload
{
["itemId"] = myItemId,
["enemyName"] = "Hyena", //Character.Name
};
EventBus.Publish("gymmed.loot_manager_*", "AddLoot", payload);
Chance Loot
Providing enemy id ignores other enemy requirements.
This only works for enemy id, other requirements can be combined for
flexibility. By providing dropChance to item it will internally
make emptyDropChance
using OutwardModsCommunicator;...
int myItemId = 4000360; // Dreamers root
string myEnemyId = "eCz766tEIEOWfK81om19wg"; // Calixa Boss
var payload = new EventPayload
{
["itemId"] = myItemId,
["dropChance"] = 50,
["enemyId"] = myEnemyId,
};
EventBus.Publish("gymmed.loot_manager_*", "AddLoot", payload);
Faction Loot
Additionally added how many items should be dropped(LootManager
tries to build ItemDropChance internally).
using OutwardModsCommunicator;...
int myItemId = 4000360; // Dreamers root
var payload = new EventPayload
{
["itemId"] = myItemId,
["minDropCount"] = 1,
["maxDropCount"] = 3,
["faction"] = Character.Factions.Bandits,
};
EventBus.Publish("gymmed.loot_manager_*", "AddLoot", payload);
Area Loot
using OutwardModsCommunicator;...
int myItemId = 4000360; // Dreamers root
var payload = new EventPayload
{
["itemId"] = myItemId,
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: