public void DropItem() { WeightedRoll chanceToDrop = new WeightedRoll( new WeightedParam(() => _dropChance = 0, 100), new WeightedParam(() => _dropChance = 1, dropWeight)); chanceToDrop.Execute(); //Debug.Log(_dropChance); if (_dropChance == 1) { int equipRoll = Random.Range(0, EquipmentDrops.Capacity); IdlerName idler = (IdlerName)Random.Range(0, 7); Equipment drop = new Equipment(ItemDatabase.GetRandomEquipment()); WeightedRoll gradeRoll = new WeightedRoll( new WeightedParam(() => drop.SelectGrade(GradeType.Common), GradeWeights[0]), new WeightedParam(() => drop.SelectGrade(GradeType.Uncommon), GradeWeights[1]), new WeightedParam(() => drop.SelectGrade(GradeType.Rare), GradeWeights[2]), new WeightedParam(() => drop.SelectGrade(GradeType.Epic), GradeWeights[3]), new WeightedParam(() => drop.SelectGrade(GradeType.Legendary), GradeWeights[4])); gradeRoll.Execute(); drop.SetStats(idler); Player.Instance.AddItem(drop); } }
public EquipmentStat(IdlerName idler, IdlerStat stat, JsonData amount, float gradeModifier) { Idler = idler; Stat = stat; Min = Convert.ToSingle((double)amount["min"]); Max = Convert.ToSingle((double)amount["max"]); Amount = (float)Math.Round(gradeModifier * UnityEngine.Random.Range(Min, Max), 2); }
public void InstantiateAnItem() { Equipment clone = new Equipment(ItemDatabase.GetEquipmentByID(LootTable[Random.Range(0, LootTable.Capacity)])); IdlerName idler = (IdlerName)Random.Range(0, 7); WeightedRoll roll = new WeightedRoll( new WeightedParam(() => clone.SelectGrade(GradeType.Common), 30), new WeightedParam(() => clone.SelectGrade(GradeType.Uncommon), 10), new WeightedParam(() => clone.SelectGrade(GradeType.Rare), 5), new WeightedParam(() => clone.SelectGrade(GradeType.Epic), 3), new WeightedParam(() => clone.SelectGrade(GradeType.Legendary), 1)); roll.Execute(); clone.SetStats(idler); Player.Instance.AddItem(clone); }
public void SetStats(IdlerName idler) { int roll; List <IdlerStat> idlerStats = new List <IdlerStat>(3) { IdlerStat.Damage, IdlerStat.Cost, IdlerStat.Mana }; List <JsonData> stats = new List <JsonData>(3) { StatRanges["damage"], StatRanges["cost"], StatRanges["mana"] }; switch (Grade) { case GradeType.Common: // 1 stat roll = UnityEngine.Random.Range(0, 3); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll])); break; case GradeType.Uncommon: // 2 stat for (int i = 0; i < 2; i++) { roll = UnityEngine.Random.Range(0, 3 - i); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll])); idlerStats.Remove(idlerStats[roll]); stats.Remove(stats[roll]); } break; case GradeType.Rare: // 2 stat + for (int i = 0; i < 2; i++) { roll = UnityEngine.Random.Range(0, 3 - i); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll], 1.2f)); idlerStats.Remove(idlerStats[roll]); stats.Remove(stats[roll]); } break; case GradeType.Epic: // 3 stat for (int i = 0; i < 3; i++) { roll = UnityEngine.Random.Range(0, 3 - i); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll])); idlerStats.Remove(idlerStats[roll]); stats.Remove(stats[roll]); } break; case GradeType.Legendary: // 3 stat + for (int i = 0; i < 3; i++) { roll = UnityEngine.Random.Range(0, 3 - i); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll], 1.2f)); idlerStats.Remove(idlerStats[roll]); stats.Remove(stats[roll]); } break; case GradeType.Unique: // 3 stat ++ for (int i = 0; i < 3; i++) { roll = UnityEngine.Random.Range(0, 3 - i); Stats.Add(new EquipmentStat(idler, idlerStats[roll], stats[roll], 1.5f)); idlerStats.Remove(idlerStats[roll]); stats.Remove(stats[roll]); } break; default: Stats.Add(new EquipmentStat()); break; } }
public EquipmentStat(IdlerName idler, IdlerStat stat) { Idler = idler; Stat = stat; }