public static void Postfix(Container __instance) { if (__instance == null || __instance.m_piece == null) { return; } var containerName = __instance.m_piece.name.Replace("(Clone)", "").Trim(); var lootTable = LootRoller.GetLootTable(containerName); if (lootTable != null) { var items = LootRoller.RollLootTable(lootTable, 1, __instance.m_piece.name, __instance.transform.position); Debug.Log($"Rolling on loot table: {containerName}, spawned {items.Count} items at drop point({__instance.transform.position.ToString("0")})."); foreach (var item in items) { __instance.m_inventory.AddItem(item); Debug.Log($" - {item.m_shared.m_name}" + (item.IsMagic() ? $": {string.Join(", ", item.GetMagicItem().Effects.Select(x => x.EffectType.ToString()))}" : "")); } } }
public static void OnCharacterDeath(string characterName, int level, Vector3 dropPoint) { var lootTables = LootRoller.GetLootTable(characterName, level); if (lootTables != null && lootTables.Count > 0) { List <GameObject> loot = LootRoller.RollLootTableAndSpawnObjects(lootTables, characterName, dropPoint); Debug.Log($"Rolling on loot table: {characterName} (lvl {level}), spawned {loot.Count} items at drop point({dropPoint})."); DropItems(loot, dropPoint); foreach (var l in loot) { var itemData = l.GetComponent <ItemDrop>().m_itemData; var magicItem = itemData.GetMagicItem(); if (magicItem != null) { Debug.Log($" - {itemData.m_shared.m_name} <{l.transform.position}>: {string.Join(", ", magicItem.Effects.Select(x => x.EffectType.ToString()))}"); } } } else { Debug.Log($"Could not find loot table for: {characterName} (lvl {level})"); } }