Build a drop table¶
Designer · 20 min · No code
Result: your enemy leaves chests whose tier odds and contents you chose, and a hand-placed chest in the map uses the same table.
Before you start¶
- Your first enemy. You should have your own enemy Blueprint.
- Loot: chest tiers, and why contents are rolled on opening.
How loot works¶
When an enemy dies:
- Its Drop Table decides the chest tier at once: Wooden, Silver or Gold. The tier is what the player sees on the ground.
- A chest appears where it fell, after Chest Drop Delay seconds (2 by default).
- When the player opens the chest, the table rolls its contents from that tier's pool.
- The player takes all of it or none of it.
Because the roll happens on opening, the same chest can hold different items after a reload. An unopened chest survives the reload itself, and leaving the map; see Loot.
A drop table is a data asset of class XenoCoreDropTable. The samples are one per enemy family in
Inventory/Loot: DA_XenoCore_Drops_Grunt, _Skirmisher, _Bulwark and _Brute (each with its own
material and silver chance), plus DA_XenoCore_Drops_Minion for the base minion and the dummy. Each family also has a Rare
form of its material in its silver and gold pools, so the Rare guarantee does not land on one item.
| Setting | Default | What it does |
|---|---|---|
| Gold Chance | 0.02 |
Chance of a gold chest, checked first |
| Silver Chance | 0.25 |
Chance of silver if gold did not land |
| Pools | One pool per tier. Each pool has Min Items, Max Items and Entries | |
| Pool › Entries › Item Def | An item that can drop. Loaded only if it is rolled, when a chest is opened | |
| Pool › Entries › Weight | 1.0 |
How likely, relative to the pool's other entries. Not a percentage |
| Pool › Entries › Min Level / Max Level | 0 |
The entry only drops from an enemy of this level range. 0 = no limit on that side. The level is the enemy's, kept on the chest |
| Pool › Guarantee One Of Rarity | empty | Every chest from this pool holds at least one item of this rarity. See Set and style item rarity |
| Pool › No Duplicate Equipment | off | A weapon or armour piece comes out of one chest at most once. Materials can still repeat |
A warning on save is not an error
Saving the table warns when an item sits below its rarity's Lowest Chest Tier, for example a Legendary in the Wooden pool. It still saves, in case you meant it.
So with the defaults: 2% gold, then 25% of the remaining 98% silver (24.5% overall), and wooden the rest of the time.
Steps¶
1. Create the table¶
- In
MyGame/Enemies, right-click and choose Data › Data Asset. Pick Xeno Core Drop Table. Name itDA_MyGame_Drops_Stonejaw. Or duplicate the family table closest to your enemy (Inventory/Loot/DA_XenoCore_Drops_Gruntfor a melee type) and change it. - Double-click it to open it. Every setting below is under XenoCore › Loot.
2. Set the tier odds¶
- Gold Chance:
0.05. - Silver Chance:
0.30.
Both are 0 to 1.
3. Fill a pool for every tier¶
- Click + beside Pools three times. Set the key dropdown of the three entries to
Wooden,SilverandGold. - In each pool, set Min Items and Max Items from the table below.
- In each pool, click + beside Entries once per item, and set each entry's Item Def and Weight.
- Click Save.
The items are in Inventory/Items, Inventory/Armour and Weapons/<Name>.
| Tier | Min Items | Max Items | Entries (Item Def, Weight) |
|---|---|---|---|
| Wooden | 1 |
2 |
ID_XenoCore_ScrapPlating 3, ID_XenoCore_EtherCrystal 1 |
| Silver | 1 |
3 |
ID_XenoCore_EtherCrystal 2, ID_XenoCore_BlueSword 1 |
| Gold | 1 |
2 |
ID_XenoCore_RedSword 1, ID_XenoCore_BattleArmour 1 |
Each item in a chest is rolled on its own, so the same entry can come up twice - unless it is equipment and No Duplicate Equipment is on.
Level bands
Give gear an enemy-level range so early enemies cannot drop late gear. The samples' gold pools
stop the Battle set at level 8, start Veteran Gauntlets at 4, the Prototype pieces at 5 and the
Legendary Vanguard Plate at 10. If no entry fits the enemy's level, the chest opens empty and
LogXenoDrop says so.
Fails silently: the chest opens empty
Every tier the enemy can roll needs a pool with at least one entry whose Weight is above 0.
A missing pool gives an empty chest, not a fallback to another tier. A warning is logged
under LogXenoDrop, and nothing shows in game.
Weight 0 parks an entry
Set an entry's Weight to 0 to stop it dropping without deleting it.
4. Give it to your enemy¶
- Open your enemy Blueprint (here
B_MyEnemy) and click Class Defaults. - Under XenoCore › Loot, set Drop Table to
DA_MyGame_Drops_Stonejaw. - Click Compile, then Save.
Other loot settings on the enemy:
| Setting | Where | What it does |
|---|---|---|
| Always Gold Chest | XenoCore › Loot, also per placed enemy | Ignore the odds and always drop gold. For unique monsters. |
| Chest Drop Delay | XenoCore › Enemy › Loot, also per placed enemy | Seconds before the chest appears |
| Chest Class | XenoCore › Loot | The chest Blueprint. Keep Inventory/Loot/BP_XenoCore_TreasureChest |
An empty Drop Table means the enemy drops no chest. That is allowed and is not logged; use it for bosses that should not drop anything.
5. Place a chest by hand (optional)¶
- Drag
Inventory/Loot/BP_XenoCore_TreasureChestinto the level. - With the placed chest selected, under XenoCore › Loot, set Drop Table.
- In the same category, set Tier and Source Level (the level its level bands roll against).
- To have it start closed and swing open on interact, untick Lid Open On Spawn (under XenoCore › Loot › Presentation).
Test it¶
- Temporarily set Gold Chance to
1.0. - Press Play in
Maps/L_XenoCore_Gymand defeat your enemy. - A gold chest appears. Open it: it holds one or two of your gold items. Take All puts them in the bag.
- Set Gold Chance back.
Check the numbers without opening chests¶
In the console (` key): XenoCore.Loot.Simulate Stonejaw 6 5000 rolls the table whose name contains
Stonejaw 5,000 times as a level-6 enemy, and prints the tier odds and how often each item lands per
chest, tier by tier. Not in Shipping builds.
If it doesn't work¶
Fails silently: no chest at all
Drop Table is empty on the enemy (allowed, so not logged), or Chest Class is empty.
| Symptom | Fix |
|---|---|
| The chest opens empty | A tier has no pool, or no entry fits the enemy's level band. The Output Log says so under LogXenoDrop. Add a pool for every tier, or widen Min Level / Max Level. |
| Some rows say (no room) | The party already holds as many as the item's Max Carried allows. Take All takes what fits; the rest stays in the chest, which can be opened again once there is room. |
| The player cannot pick single items | Not a fault: the chest panel offers Take All or Take None. Choosing individual items is not built yet. See Troubleshooting: items and equipment. |
| Gear I expected never drops | Its Weight is 0, or the enemy's level is outside the entry's band. Check with XenoCore.Loot.Simulate. |
Going further¶
- Loot.
- Place enemies: unique monsters with Always Gold Chest.
- Add a weapon, Add armour.