public GameObject RollLoot(Loot.Rarity maxRarity) { if (loots.Length <= 0) { return(null); } int rolledLootId = 0; int infinityBreak = 0; do { infinityBreak++; if (infinityBreak > 100) { Debug.LogError("Couldn't RollLoot() after 100 tries."); break; } rolledLootId = RollWithWeights(loots); }while (loots[rolledLootId].rarity > maxRarity); return(loots[rolledLootId].loot); }
private void GenerateLoot(ILootable lootable) { LootConfig.LootDropDef lootDropDef = lootable._lootDropDef; List <LootConfig.ProbabilityDef> probabilities = lootDropDef.probabilities; probabilities.Sort(LootUtil.CompareLootByProbability); int lootToDrop = LootUtil.GetLootDropCount(lootDropDef); float totalSum = LootUtil.GetTotalSum(probabilities); for (int i = 0; i < lootToDrop; i++) { Loot.Rarity rarity = LootUtil.GetWeightedRarity(probabilities, totalSum); LootConfig.LootDef lootDef = _lootConfig.GetLootDef(rarity); int bucket = Random.Range(0, lootDef.lootItems.Count); LootConfig.LootItemDef itemDef = lootDef.lootItems[bucket]; string key = Storeable.GetCachedStoreableKey(itemDef.type); ILootItem item = _lootPool.GetPooledObject(key).GetComponent <ILootItem>(); if (item != null) { item.Init(lootable, _playerCombatSystem.playerController.transform, lootDef, _lootConfig, itemDef); } else { Debug.LogError("Item of type " + key + " does not implement ILootItem"); } } }
public LootDef GetLootDef(Loot.Rarity key) { if (_lootDefLookup.Count == 0) { GenerateLootDefLookup(); } if (_lootDefLookup.ContainsKey(key)) { return(_lootDefLookup[key]); } return(null); }
private void GenerateLootDefLookup() { int i = 0; int particleLength = lootDefs.Count; for (i = 0; i < particleLength; i++) { LootDef blueprint = lootDefs[i]; Loot.Rarity type = blueprint.rarity; if (!_lootDefLookup.ContainsKey(type)) { _lootDefLookup.Add(type, blueprint); } } }
//private string name; public LootDef(Loot.Rarity rarity, string name, Color color) { this.rarity = rarity; this.color = color; //this.name = name; }
public ProbabilityDef(Loot.Rarity rare, float prob) { rarity = rare; probability = prob; }