Skip to content

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:

  1. Its Drop Table decides the chest tier at once: Wooden, Silver or Gold. The tier is what the player sees on the ground.
  2. A chest appears where it fell, after Chest Drop Delay seconds (2 by default).
  3. When the player opens the chest, the table rolls its contents from that tier's pool.
  4. 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

  1. In MyGame/Enemies, right-click and choose Data › Data Asset. Pick Xeno Core Drop Table. Name it DA_MyGame_Drops_Stonejaw. Or duplicate the family table closest to your enemy (Inventory/Loot/DA_XenoCore_Drops_Grunt for a melee type) and change it.
  2. Double-click it to open it. Every setting below is under XenoCore › Loot.

2. Set the tier odds

  1. Gold Chance: 0.05.
  2. Silver Chance: 0.30.

Both are 0 to 1.

3. Fill a pool for every tier

  1. Click + beside Pools three times. Set the key dropdown of the three entries to Wooden, Silver and Gold.
  2. In each pool, set Min Items and Max Items from the table below.
  3. In each pool, click + beside Entries once per item, and set each entry's Item Def and Weight.
  4. 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

  1. Open your enemy Blueprint (here B_MyEnemy) and click Class Defaults.
  2. Under XenoCore › Loot, set Drop Table to DA_MyGame_Drops_Stonejaw.
  3. 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)

  1. Drag Inventory/Loot/BP_XenoCore_TreasureChest into the level.
  2. With the placed chest selected, under XenoCore › Loot, set Drop Table.
  3. In the same category, set Tier and Source Level (the level its level bands roll against).
  4. To have it start closed and swing open on interact, untick Lid Open On Spawn (under XenoCore › Loot › Presentation).

Test it

  1. Temporarily set Gold Chance to 1.0.
  2. Press Play in Maps/L_XenoCore_Gym and defeat your enemy.
  3. A gold chest appears. Open it: it holds one or two of your gold items. Take All puts them in the bag.
  4. 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