Example #1
0
    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);
        }
    }
Example #2
0
 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);
 }
Example #3
0
    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);
    }
Example #4
0
    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;
        }
    }
Example #5
0
 public EquipmentStat(IdlerName idler, IdlerStat stat)
 {
     Idler = idler;
     Stat  = stat;
 }