public void GetItemWithBoss(fmDropItem fdi, eOption selecedOpt, out rdItem item)
        {
            int    lv    = fdi.Lv;
            eGrade grade = fdi.Grade;
            eParts parts = fdi.Parts;

            item         = new rdItem();
            item.Lv      = lv;
            item.Grade   = grade;
            item.Parts   = parts;
            item.BaseOpt = new List <rdOption>();
            item.AddOpts = new List <rdOption>();



            GetBaseOpt(item);


            List <eOption> temp = GetList(eGrade.Normal, parts, lv);

            int cnt = GetOptionCount(grade);

            //Console.WriteLine(cnt);
            for (int i = 0; i < cnt; ++i)
            {
                int hit = m_random.Next(0, temp.Count);

                eOption   kind = temp.ElementAt(hit);
                eOptGrade cc   = (eOptGrade)((int)kind >> 8);

                rdOption option = new rdOption(i + 1, false, GetOptGrade(kind), kind, GetValue(lv, kind));
                item.AddOpts.Add(option);
                temp.RemoveAt(hit);
                if (cc == eOptGrade.Normal)
                {
                    eOption remove = (eOption)((int)kind + ((int)eOptGrade.Normal << 8));
                    temp.Remove(remove);
                }
                else if (cc == eOptGrade.Epic)
                {
                    eOption remove = (eOption)((int)kind - ((int)eOptGrade.Normal << 8));
                    temp.Remove(remove);
                }
                // eOptCategory
            }

            if (eGrade.Legend <= grade)
            {
                eOptGrade optGrade = GetLegendSetOptGrade(grade);
                //Console.WriteLine(optGrade);
                eOption  kind   = selecedOpt;
                rdOption option = new rdOption(cnt + 1, false, optGrade, kind, GetValue(lv, kind));
                item.AddOpts.Add(option);
            }
        }
Exemplo n.º 2
0
        public void BuyItem(Random lordRandom, eGrade grade, int lv, out fmDropItem item)
        {
            int    cnt   = m_parts.Count;
            int    hit   = lordRandom.Next(0, cnt);
            eParts parts = m_parts.ElementAt(hit);

            item = new fmDropItem
            {
                Lv    = lv,
                Grade = grade,
                Parts = parts
            };
        }
Exemplo n.º 3
0
        public void DropInDunWithBoss(Random lordRandom, int lv, out fmDropItem item)
        {
            int hit = lordRandom.Next(0, m_parts.Count);

            item = new fmDropItem
            {
                Lv    = lv,
                Grade = eGrade.Set,
                Parts = m_parts.ElementAt(hit)
            };

            //Console.WriteLine("DropInDunWithBoss");
            //Console.WriteLine(item.Grade);
            //Console.WriteLine(item.Parts);
        }
Exemplo n.º 4
0
        public void GetItemOnCombineCube(eParts parts, int lv, out fmDropItem item)
        {
            Random lordRandom = new Random();

            item = null;
            eGrade grade       = eGrade.None;
            eParts selectParts = eParts.None;

            {
                int hit = lordRandom.Next(0, 100);
                if (hit < 49)
                {
                    selectParts = parts;
                }
            }

            if (selectParts == eParts.None)
            {
                int cnt = m_parts.Count;
                int hit = lordRandom.Next(0, cnt);
                selectParts = m_parts.ElementAt(hit);
            }

            {
                int hit = lordRandom.Next(0, 100);
                if (hit <= 70)
                {
                    grade = eGrade.Legend;
                }
                else
                {
                    grade = eGrade.Set;
                }
            }

            item = new fmDropItem
            {
                Lv    = lv,
                Grade = grade,
                Parts = selectParts
            };
        }
Exemplo n.º 5
0
        public void DropInWorld(Random lordRandom, int lv, int dropLimitValue, out fmDropItem item)
        {
            //int itemLv = m_random.Next((lv - 1) ==, (lv + 1));

            item = new fmDropItem
            {
                Lv    = lv,
                Grade = eGrade.Normal,
                Parts = eParts.Gloves
            };

            List <fmDataDropValue> table = new List <fmDataDropValue>();

            table.Clear();

            int max = 0;

            foreach (var node in m_valuesInWorld)
            {
                if (node.m_nLimitValue < dropLimitValue)
                {
                    continue;
                }
                max += node.m_nRate;
                table.Add(node);
            }

            int hit = lordRandom.Next(0, max);

            foreach (var node in m_gochaWitoutJewel)
            {
                if (node.m_nBegin <= hit && hit < node.m_nEnd)
                {
                    item.Grade = node.m_fmData.m_eGrade;
                    item.Parts = node.m_fmData.m_eParts;
                    return;
                }
            }
        }