Example #1
0
        public UpgradeEntry RollEntryFromSubList(UpgradeEntry[] list, NetworkRandom nr, int min, DateTime date, ref string log, float linkRerollChance)
        {
            UpgradeEntry r = null;

            CalculateLimit(list, date);
            float rand = nr.Float(min < 0 ? 0f : list[min].RandomLimit, 1f);

            for (int i = 0; i < list.Length; i++)
            {
                UpgradeEntry u = list[i];
                if (rand <= u.RandomLimit && CheckUpgradeCond(u, date))
                {
                    r = u;
                    break;
                }
            }
            log += $" -> {r.ID} ({rand}, {min}, {list[0].Name})";
            if (r.ListLink && nr.Float(0f, 1f) <= linkRerollChance)
            {
                UpgradeEntry li = RollEntryFromMatchingSubList(r.ID, nr, date, ref log, linkRerollChance);
                if (li != null)
                {
                    r = li;
                }
            }
            return(r);
        }