Exemplo n.º 1
0
        private bool ChangePartsImageCode(eBeyond beyond, eParts parts, eOption opt, out int code)
        {
            code = 0;
            if (beyond == eBeyond.Ancient)
            {
                if (true == m_ancientItems.ContainsKey(parts))
                {
                    if (true == m_ancientItems[parts].ContainsKey(opt))
                    {
                        code = m_ancientItems[parts][opt].Code;
                        return(true);
                    }
                }
            }
            else if (beyond == eBeyond.Mythic)
            {
                if (true == m_mythicItems.ContainsKey(parts))
                {
                    if (true == m_mythicItems[parts].ContainsKey(opt))
                    {
                        code = m_mythicItems[parts][opt].Code;
                        return(true);
                    }
                }
            }

            return(false);
        }
        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.º 3
0
        private void GetBaseValue(int lv, eParts parts, out eOption option, out float value, out int code)
        {
            //Logger.Debug("GetBaseValue: {0}" , parts);
            int cnt  = m_items[parts].Count;
            int hit  = m_random.Next(0, cnt);
            var data = m_items[parts].ElementAt(hit).Value;

            code   = data.m_nCode;
            option = m_items[parts].ElementAt(hit).Key;
            GetBaseValue(lv, option, out value);
        }
Exemplo n.º 4
0
 public List <eOption> GetList(eParts parts)
 {
     if (false == m_optList.ContainsKey(parts))
     {
         Logger.Error("GetList {0}", parts);
         return(m_optList[eParts.Weapon].ToList());
     }
     else
     {
         return(m_optList[parts].ToList());
     }
 }
Exemplo n.º 5
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.º 6
0
        public List <eOption> GetList(eGrade grade, eParts parts, int lv)
        {
            Dictionary <int, Dictionary <eParts, List <eOption> > > dic = null;

            if (eGrade.Legend == grade)
            {
                dic = m_optList[grade];
            }
            else if (eGrade.Set == grade)
            {
                dic = m_optList[grade];
            }
            else
            {
                dic = m_optList[eGrade.Normal];
            }

            int rangeLv = GetRangeLv(lv);

            if (true == dic.ContainsKey(rangeLv))
            {
                //Logger.Debug("dic.ContainsKey(rangeLv) {0},{1},{2}", grade, parts, lv);
                if (true == dic[rangeLv].ContainsKey(parts))
                {
                    Logger.Debug("grade{0}/dic[{1}].CKey({2})/lv{3}", grade, rangeLv, parts, lv);
                    return(dic[rangeLv][parts].ToList());
                }
                else
                {
                    Logger.Error("2-GetList {0},{1},{2},{3}", grade, parts, lv, rangeLv);
                }
            }
            else
            {
                Logger.Error("1-GetList {0},{1},{2},{3}", grade, parts, lv, rangeLv);
            }

            return(dic[1][parts].ToList());

            //if (false == m_optList.ContainsKey(rangeLv))
            //    return null;

            //if (false == m_optList[rangeLv].ContainsKey(parts))
            //    return null;

            //return m_optList[rangeLv][parts].ToList();
        }
Exemplo n.º 7
0
        public bool Load(fmDataTable table)
        {
            Dictionary <int, fmDataOption> dic = table.Find <fmDataOption>(eFmDataType.Option);

            if (null == dic)
            {
                return(false);
            }

            //m_optList.Add(eParts.Weapon, new List<eOption>());
            //m_optList.Add(eParts.Necklace, new List<eOption>());
            //m_optList.Add(eParts.Ring, new List<eOption>());
            //m_optList.Add(eParts.Belt, new List<eOption>());
            //m_optList.Add(eParts.Gloves, new List<eOption>());
            //m_optList.Add(eParts.Pants, new List<eOption>());
            //m_optList.Add(eParts.Armor, new List<eOption>());
            //m_optList.Add(eParts.Head, new List<eOption>());
            //m_optList.Add(eParts.Jewel, new List<eOption>());

            foreach (var node in dic)
            {
                int       lv       = node.Value.m_nAppearLv;
                eOption   opt      = node.Value.m_eOption;
                eOptGrade optGrade = (eOptGrade)((int)opt >> 8);

                foreach (var beyond in node.Value.m_nArrBeyond)
                {
                    if ((eBeyond)beyond == eBeyond.Mythic)
                    {
                        int cnt = node.Value.m_nArrParts.Length;
                        for (int i = 0; i < cnt; ++i)
                        {
                            eParts parts = (eParts)node.Value.m_nArrParts[i];

                            if (false == m_optList.ContainsKey(parts))
                            {
                                m_optList.Add(parts, new List <eOption>());
                            }

                            m_optList[parts].Add(opt);
                        }
                    }
                }
            }

            return(true);
        }
Exemplo n.º 8
0
        public override void LoadExcelSheet(DataRow rowData)
        {
            fmDataOption data = m_fmData as fmDataOption;

            data.m_nCode = GetInt(rowData, "nCode");
            {
                string str = GetString(rowData, "eOption");
                data.m_eOption = (eOption)Enum.Parse(typeof(eOption), str);
            }
            data.m_nAppearLv = GetInt(rowData, "nAppearLv");
            {
                string[] strParts = GetStrArray(rowData, "eParts");

                List <int> list = new List <int>();

                foreach (var node in strParts)
                {
                    if (false == string.IsNullOrEmpty(node))
                    {
                        eParts parts = (eParts)Enum.Parse(typeof(eParts), node);
                        list.Add((int)parts);
                    }
                }
                data.m_nArrParts = list.ToArray();
            }
            {
                string[]   strBeyond = GetStrArray(rowData, "eBeyond");
                List <int> list      = new List <int>();

                foreach (var node in strBeyond)
                {
                    if (false == string.IsNullOrEmpty(node))
                    {
                        eBeyond parts = (eBeyond)Enum.Parse(typeof(eBeyond), node);
                        list.Add((int)parts);
                    }
                }
                data.m_nArrBeyond = list.ToArray();
            }

            //data.m_nWorld = GetInt(rowData, "nWorld");
            //data.m_nInDun = GetInt(rowData, "nIndun");
        }
Exemplo n.º 9
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.º 10
0
        public bool Load(fmDataTable table)
        {
            Dictionary <int, fmDataOption> dic = table.Find <fmDataOption>(eFmDataType.Option);

            if (null == dic)
            {
                return(false);
            }

            m_optList.Add(eGrade.Normal, new Dictionary <int, Dictionary <eParts, List <eOption> > >());
            m_optList.Add(eGrade.Legend, new Dictionary <int, Dictionary <eParts, List <eOption> > >());
            m_optList.Add(eGrade.Set, new Dictionary <int, Dictionary <eParts, List <eOption> > >());

            foreach (var node in dic)
            {
                int lv = node.Value.m_nAppearLv;
                if (false == m_nLvRange.Contains(lv))
                {
                    m_nLvRange.Add(lv);
                }

                foreach (var item in m_optList)
                {
                    if (false == item.Value.ContainsKey(lv))
                    {
                        item.Value.Add(lv, new Dictionary <eParts, List <eOption> >());
                        item.Value[lv].Add(eParts.Weapon, new List <eOption>());
                        item.Value[lv].Add(eParts.Necklace, new List <eOption>());
                        item.Value[lv].Add(eParts.Ring, new List <eOption>());
                        item.Value[lv].Add(eParts.Belt, new List <eOption>());
                        item.Value[lv].Add(eParts.Gloves, new List <eOption>());
                        item.Value[lv].Add(eParts.Pants, new List <eOption>());
                        item.Value[lv].Add(eParts.Armor, new List <eOption>());
                        item.Value[lv].Add(eParts.Head, new List <eOption>());
                        item.Value[lv].Add(eParts.Jewel, new List <eOption>());
                    }
                }
            }

            foreach (var node in dic)
            {
                int       lv       = node.Value.m_nAppearLv;
                eOption   opt      = node.Value.m_eOption;
                eOptGrade optGrade = (eOptGrade)((int)opt >> 8);

                foreach (var beyond in node.Value.m_nArrBeyond)
                {
                    if ((eBeyond)beyond == eBeyond.None)
                    {
                        int cnt = node.Value.m_nArrParts.Length;
                        for (int i = 0; i < cnt; ++i)
                        {
                            eParts parts = (eParts)node.Value.m_nArrParts[i];

                            if (optGrade < eOptGrade.Legend)
                            {
                                foreach (var list in m_optList[eGrade.Normal])
                                {
                                    if (lv <= list.Key)
                                    {
                                        list.Value[parts].Add(opt);
                                    }
                                }
                            }
                            else if (eOptGrade.Legend == optGrade)
                            {
                                foreach (var list in m_optList[eGrade.Legend])
                                {
                                    if (lv <= list.Key)
                                    {
                                        list.Value[parts].Add(opt);
                                    }
                                }
                            }
                            else if (eOptGrade.Set == optGrade)
                            {
                                foreach (var list in m_optList[eGrade.Set])
                                {
                                    if (lv <= list.Key)
                                    {
                                        list.Value[parts].Add(opt);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            m_nLvRange = m_nLvRange.OrderBy(x => x).ToList();

            return(true);
        }
Exemplo n.º 11
0
        public eErrorCode CreateMythic(eOption selectOpt, eElement element, ref rdItem mythicItem)
        {
            rdOption keepOpt = null;

            foreach (var node in mythicItem.AddOpts)
            {
                if (eOptGrade.Legend == node.Grade || eOptGrade.Set == node.Grade)
                {
                    keepOpt = node;
                }
            }

            if (null == keepOpt)
            {
                return(eErrorCode.Error);
            }

            int    lv    = mythicItem.Lv;
            eGrade grade = mythicItem.Grade;
            eParts parts = mythicItem.Parts;

            if (parts != eParts.Weapon)
            {
                if (selectOpt == eOption.None)
                {
                    return(eErrorCode.Params_InvalidParam);
                }
            }

            int changeCode = 0;

            if (parts == eParts.Weapon)
            {
                if (false == ChangeWeaponImageCode(eBeyond.Mythic, mythicItem.Code, out changeCode))
                {
                    Logger.Error("Failed. CreateMythic {0} / {1} / {2}", parts, mythicItem.Code, selectOpt);
                    return(eErrorCode.Server_TableError);
                }
            }
            else
            {
                if (false == ChangePartsImageCode(eBeyond.Mythic, mythicItem.Parts, selectOpt, out changeCode))
                {
                    Logger.Error("Failed. CreateMythic {0} / {1} / {2}", parts, mythicItem.Code, selectOpt);
                    return(eErrorCode.Params_InvalidParam);
                }
            }

            mythicItem.Code   = changeCode;
            mythicItem.Beyond = eBeyond.Mythic;
            mythicItem.AddOpts.Clear();
            mythicItem.BaseOpt.Clear();

            if (parts == eParts.Weapon)
            {
                float min   = 0;
                float max   = 0;
                float speed = 0;
                GetWeapon(lv, out min, out max, out speed);
                {
                    eOption  select = eOption.BWDMin;
                    rdOption option = new rdOption(1, false, eOptGrade.Normal, select, min);
                    mythicItem.BaseOpt.Add(option);
                }
                {
                    eOption  select = eOption.BWDMax;
                    rdOption option = new rdOption(2, false, eOptGrade.Normal, select, max);
                    mythicItem.BaseOpt.Add(option);
                }
                {
                    eOption  select = eOption.AS;
                    rdOption option = new rdOption(3, false, eOptGrade.Normal, select, speed);
                    mythicItem.BaseOpt.Add(option);
                }
                {
                    eOption  select = eOption.Element;
                    float    value  = (float)element;
                    rdOption option = new rdOption(4, false, eOptGrade.Normal, select, value);
                    mythicItem.BaseOpt.Add(option);
                }
            }
            else
            {
                float value = 0f;
                GetBaseValue(mythicItem.Lv, selectOpt, out value);
                rdOption option = new rdOption(1, false, eOptGrade.Normal, selectOpt, value);
                mythicItem.BaseOpt.Add(option);
            }

            List <eOption> temp = GetAncientOptList(parts);

            int cnt = GetOptionCount(grade, eBeyond.Mythic);

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

                eOption kind = temp.ElementAt(hit);

                rdOption option = new rdOption(i + 1, false, GetOptGrade(kind), kind, GetAncientValue(lv, kind));
                mythicItem.AddOpts.Add(option);

                temp.RemoveAt(hit);
            }

            {
                keepOpt.Index = mythicItem.AddOpts.Count + 1;
                mythicItem.AddOpts.Add(keepOpt);
            }

            return(eErrorCode.Success);
        }
Exemplo n.º 12
0
        public eErrorCode UpToAncient(ref rdItem remeltItem)
        {
            rdOption keepOpt = null;

            foreach (var node in remeltItem.AddOpts)
            {
                if (eOptGrade.Legend == node.Grade || eOptGrade.Set == node.Grade)
                {
                    keepOpt = node;
                }
            }

            if (null == keepOpt)
            {
                return(eErrorCode.Error);
            }


            int    lv    = remeltItem.Lv;
            eGrade grade = remeltItem.Grade;
            eParts parts = remeltItem.Parts;

            bool bChanged   = false;
            int  changeCode = 0;

            //if (parts == eParts.Jewel)
            //{
            //    bChanged = true;
            //    changeCode = remeltItem.Code;
            //}
            //else
            if (parts == eParts.Weapon)
            {
                bChanged = ChangeWeaponImageCode(eBeyond.Ancient, remeltItem.Code, out changeCode);
            }
            else
            {
                bChanged = ChangePartsImageCode(eBeyond.Ancient, parts, remeltItem.BaseOpt.ElementAt(0).Kind, out changeCode);
            }

            if (false == bChanged)
            {
                Logger.Error("Failed. UpToAncient {0} / {1} / {2}", parts, remeltItem.Code, remeltItem.BaseOpt.ElementAt(0).Kind);
                return(eErrorCode.Server_TableError);
            }

            remeltItem.Code = changeCode;
            remeltItem.AddOpts.Clear();

            List <eOption> temp = GetAncientOptList(parts);

            int cnt = GetOptionCount(grade);

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

                eOption kind = temp.ElementAt(hit);

                rdOption option = new rdOption(i + 1, false, GetOptGrade(kind), kind, GetAncientValue(lv, kind));
                remeltItem.AddOpts.Add(option);

                temp.RemoveAt(hit);
            }

            {
                remeltItem.AddOpts.Add(keepOpt);
            }

            remeltItem.Beyond = eBeyond.Ancient;

            return(eErrorCode.Success);
        }
Exemplo n.º 13
0
        private eOption GetLegendSetOption(eGrade grade, eParts parts, int lv)
        {
            List <eOption> temp = GetList(grade, parts, lv);

            return(temp.ElementAt(m_random.Next(0, temp.Count)));
        }
Exemplo n.º 14
0
 private List <eOption> GetAncientOptList(eParts parts)
 {
     return(m_enchAnciOptList.GetList(parts));
 }
Exemplo n.º 15
0
 private List <eOption> GetList(eGrade grade, eParts parts, int lv)
 {
     return(m_dropOptList.GetList(grade, parts, lv));
 }