Example #1
0
        public override void LoadExcelSheet(DataRow rowData)
        {
            fmDataItem data = m_fmData as fmDataItem;

            data.m_nCode       = GetInt(rowData, "nCode");
            data.m_strNameCode = GetString(rowData, "strNameCode");
            data.m_strImage    = GetString(rowData, "strImage");
            {
                string str = GetString(rowData, "eBeyond");
                data.m_eBeyond = (eBeyond)Enum.Parse(typeof(eBeyond), str);
            }
            {
                string str = GetString(rowData, "eParts");
                data.m_eParts = (eParts)Enum.Parse(typeof(eParts), str);
            }
            data.m_nPrice = GetInt(rowData, "nPrice");
            {
                string str = GetString(rowData, "eWeapon");
                data.m_eWeapon = (eWeapon)Enum.Parse(typeof(eWeapon), str);
            }
            string[] strOpts = GetStrArray(rowData, "eOptions");

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

            foreach (var node in strOpts)
            {
                eOption eOpt = (eOption)Enum.Parse(typeof(eOption), node);
                list.Add((int)eOpt);
            }
            data.m_nArrOptions = list.ToArray();
        }
Example #2
0
        static public void Invoke(string[] args)
        {
            eOption option = GetOption(args);

            if (eOption.none != option)
            {
                string[] targetPaths = new string[args.Length - 1];
                Array.Copy(args, 1, targetPaths, 0, targetPaths.Length);
                Converter.GenerateCodeInfo info = null;
                switch (option)
                {
                case eOption.files:
                    info = Converter.Files(targetPaths, (percent, file) => { Debug.Log("{0}% ({1}%) {2}", percent._convert * 100.0f, percent._insert * 100.0f, file); });
                    break;

                case eOption.directorys:
                    info = Converter.Directorys(targetPaths, (percent, file) => { Debug.Log("{0}% ({1}%) {2}", percent._convert * 100.0f, percent._insert * 100.0f, file); });
                    break;

                default:
                    break;
                }
                IOAssist.CreateFile(info.Path + Converter.GenerateCodeInfo._DEFAULT_CODE_FILE_FULLNAME, info.Code);
            }
        }
Example #3
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 eErrorCode ChangeLegendSetOpt(ref rdItem changeItem)
        {
            // 기존 옵션 제거
            rdOption option = changeItem.AddOpts.Find(x => x.Grade == eOptGrade.Legend || x.Grade == eOptGrade.Set);

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

            int hit = m_random.Next(0, 2);

            if (hit == 0)
            {
                changeItem.Grade = eGrade.Legend;
            }
            else
            {
                changeItem.Grade = eGrade.Set;
            }

            eOption kind = GetLegendSetOption(changeItem.Grade, changeItem.Parts, changeItem.Lv);

            option.Kind  = kind;
            option.Grade = GetOptGrade(kind);
            option.Value = GetValue(changeItem.Lv, kind);

            return(eErrorCode.Success);
        }
Example #5
0
 public void SetInDunPlace(int indunCode, int place, int boss, int goblin, eOption opt)
 {
     m_nInDunCode = indunCode;
     m_nPlace     = place;
     m_nBoss      = boss;
     m_nGoblin    = goblin;
     m_nOpt       = opt;
 }
Example #6
0
 public void InitInDunPlace()
 {
     m_nInDunCode = 0;
     m_nPlace     = 0;
     m_nBoss      = 0;
     m_nGoblin    = 0;
     m_nOpt       = eOption.None;
 }
Example #7
0
 public rdOption(int index, bool remelt, eOptGrade grade, eOption option, float value)
 {
     Index  = index;
     Remelt = remelt;
     Grade  = grade;
     Kind   = option;
     Value  = value;
 }
        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);
            }
        }
Example #9
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);
        }
Example #10
0
        public static void Read(this List <eOption> list, ref Packet p)
        {
            int count = p.ReadInt();

            list.Capacity = count;

            for (int i = 0; i < count; ++i)
            {
                eOption value = (eOption)p.ReadInt();
                list.Add(value);
            }
        }
Example #11
0
        private eOptGrade GetOptGrade(eOption opt)
        {
            // eOptCategory
            eOptGrade cc = (eOptGrade)((int)opt >> 8);

            return(cc);

            //if (cc == eOptGrade.Normal) return eGrade.Normal;
            //else if (cc == eOptGrade.Epic) return eGrade.Epic;
            //else if (cc == eOptGrade.Legend) return eGrade.Legend;
            //else if (cc == eOptGrade.Set) return eGrade.Set;
            //else return eGrade.Normal;
        }
        public static float GetBaseValue(int lv, eOption option, eMinMax range, bool ancient)
        {
            if (false == bLoad)
            {
                Load();
            }

            float value = 0f;

            if (option == eOption.BWDMin)
            {
                value = GetBaseBWDMin(lv, range, ancient);
            }
            else if (option == eOption.BWDMax)
            {
                value = GetBaseBWDMax(lv, range, ancient);
            }
            else if (option == eOption.AS)
            {
                value = GetBaseAs(range, ancient);
            }
            else if (option == eOption.HP)
            {
                value = GetValue(lv, option, range, ancient);
                value = (float)Math.Round(value * 3);
            }
            else if (option == eOption.DEF)
            {
                value = GetValue(lv, option, range, ancient);
                value = (float)Math.Round(value * 3);
            }
            else if (option == eOption.Element)
            {
                value = GetValue(lv, option, range, ancient);
            }
            else if (option == eOption.CriRate)
            {
                value = GetValue(lv, option, range, ancient);
                value = (float)Math.Round(value * 2);
            }
            else
            {
                value = GetValue(lv, option, range, ancient);
                value = (float)Math.Round(value * 4);
            }

            return(value);
        }
        public static float GetValue(int lv, eOption opt, eMinMax range, bool ancient)
        {
            if (false == bLoad)
            {
                Load();
            }

            if (ancient)
            {
                return(m_valuesAncient[opt](lv, range));
            }
            else
            {
                return(m_values[opt](lv, range));
            }
        }
        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);
        }
Example #15
0
        public float GetBaseValue(int lv, eOption option)
        {
            float value = 0f;

            //if (option == eOption.BWDMin)
            //{
            //    value = GetBaseBWDMin(lv);
            //}
            //else if (option == eOption.BWDMax)
            //{
            //    value = GetBaseBWDMax(lv);
            //}
            //else if (option == eOption.AS)
            //{
            //    value = GetBaseAs();
            //}
            //else
            if (option == eOption.HP)
            {
                value = GetValue(lv, option);
                value = (float)Math.Round(value * 3);
            }
            else if (option == eOption.DEF)
            {
                value = GetValue(lv, option);
                value = (float)Math.Round(value * 3);
            }
            else if (option == eOption.Element)
            {
                value = GetValue(lv, option);
            }
            else if (option == eOption.CriRate)
            {
                value = GetValue(lv, option);
                value = (float)Math.Round(value * 2);
            }
            else
            {
                value = GetValue(lv, option);
                value = (float)Math.Round(value * 4);
            }

            return(value);
        }
Example #16
0
        public eErrorCode Remelt(ref rdItem remeltItem, int optIndex, eOption selectedOpt)
        {
            if (null == remeltItem)
            {
                return(eErrorCode.Auth_PleaseLogin);
            }

            eOption   kind     = selectedOpt;
            eOptGrade cc       = (eOptGrade)((int)kind >> 8);
            eOption   normKind = eOption.None;
            eOption   epicKind = eOption.None;

            if (cc == eOptGrade.Normal)
            {
                normKind = kind;
                epicKind = (eOption)((int)kind + ((int)eOptGrade.Normal << 8));
            }
            else if (cc == eOptGrade.Epic)
            {
                normKind = (eOption)((int)kind - ((int)eOptGrade.Normal << 8));
                epicKind = kind;
            }

            rdOption remeltOpt = null;

            foreach (var node in remeltItem.AddOpts)
            {
                if (node.Index == optIndex)
                {
                    remeltOpt = node;
                }
                else
                {
                    if (true == node.Remelt)
                    {
                        return(eErrorCode.Item_Remelt_AlreadyOther);
                    }
                    else
                    {
                        if (node.Kind == normKind)
                        {
                            return(eErrorCode.Item_AlreadySameOpt);
                        }

                        if (node.Kind == epicKind)
                        {
                            return(eErrorCode.Item_AlreadySameOpt);
                        }
                    }
                }
            }

            if (null == remeltOpt)
            {
                return(eErrorCode.Params_InvalidParam);
            }

            remeltOpt.Remelt = true;

            Logger.Debug("optIndex {0}", optIndex);
            Logger.Debug("remeltOpt.Grade {0}", remeltOpt.Grade);


            if (eOptGrade.Legend == remeltOpt.Grade || eOptGrade.Set == remeltOpt.Grade)
            {
                return(eErrorCode.Item_OutOfType);
            }


            remeltOpt.Kind  = selectedOpt;
            remeltOpt.Grade = GetOptGrade(selectedOpt);

            if (eBeyond.None == remeltItem.Beyond)
            {
                remeltOpt.Value = GetValue(remeltItem.Lv, remeltOpt.Kind);
            }
            else
            {
                remeltOpt.Value = GetAncientValue(remeltItem.Lv, remeltOpt.Kind);
            }



            return(eErrorCode.Success);
        }
Example #17
0
        private void GetBaseOpt(rdItem item)
        {
            eOptGrade grade = eOptGrade.Normal;

            // 무기
            if (item.Parts == eParts.Weapon)
            {
                //item.Code = GetWeaponCode();

                float min   = 0;
                float max   = 0;
                float speed = 0;
                item.Code = GetWeapon(item.Lv, out min, out max, out speed);

                // 1. 무기 최소 공격력
                {
                    eOption select = eOption.BWDMin;
                    //float value = 0;
                    //GetBaseValue(item.Lv, select, out value);
                    rdOption option = new rdOption(1, false, grade, select, min);
                    item.BaseOpt.Add(option);
                }
                // 2. 무기 최대 공격력
                {
                    eOption select = eOption.BWDMax;
                    //float value = 0;
                    //GetBaseValue(item.Lv, select, out value);
                    rdOption option = new rdOption(2, false, grade, select, max);
                    item.BaseOpt.Add(option);
                }
                // 4. 공속
                {
                    eOption select = eOption.AS;
                    //float value = 0;
                    //GetBaseValue(item.Lv, select, out value);
                    rdOption option = new rdOption(3, false, grade, select, speed);
                    item.BaseOpt.Add(option);
                }
                // 3. 속성
                {
                    eOption select = eOption.Element;
                    float   value  = 0f;
                    {
                        int b = (int)eElement.None;
                        int e = 1 + (int)eElement.Nature;
                        value = m_random.Next(b, e);
                    }
                    rdOption option = new rdOption(4, false, grade, select, value);
                    item.BaseOpt.Add(option);
                }
            }
            else
            {
                // 기타
                {
                    eOption select = eOption.None;
                    float   value  = 0;
                    int     code   = 0;
                    GetBaseValue(item.Lv, item.Parts, out select, out value, out code);
                    rdOption option = new rdOption(1, false, grade, select, value);
                    item.Code = code;
                    item.BaseOpt.Add(option);
                }
            }
        }
Example #18
0
        private void GetDiscovery(List <fmDiscovery> discoverys, out List <rdItem> items, out fmDiscoveryRs fdrs, int rewardRuby = 0, eOption selectedOpt = eOption.None)
        {
            fdrs = new fmDiscoveryRs();

            items = new List <rdItem>();
            items.Clear();

            if (0 < rewardRuby)
            {
                AddGameRuby(rewardRuby);
                fdrs.Ruby += rewardRuby;
            }

            foreach (var nodes in discoverys)
            {
                foreach (var node in nodes.DropList)
                {
                    if (node.Kind == eReward.Gold)
                    {
                        int gold = int.Parse(node.Contents);
                        AddGold(gold);
                        fdrs.Gold += gold;
                    }
                    else if (node.Kind == eReward.Stone)
                    {
                        int stone = int.Parse(node.Contents);
                        AddStone(stone);
                        fdrs.Stone += stone;
                    }
                    else if (node.Kind == eReward.SCKey)
                    {
                        int scKey = int.Parse(node.Contents);
                        AddSCKey(scKey);
                        fdrs.SCKey += scKey;
                    }
                    else if (node.Kind == eReward.Ruby)
                    {
                        int ruby = int.Parse(node.Contents);
                        AddGameRuby(ruby);
                        fdrs.Ruby += ruby;
                    }
                    //else if (node.Kind == eReward.DHeart)
                    //{
                    //    int dHeart = int.Parse(node.Contents);
                    //    AddDHeartFnc(dHeart);
                    //    fdrs.DHeart += dHeart;
                    //}
                    //else if (node.Kind == eReward.Seal)
                    //{
                    //    int seal = int.Parse(node.Contents);
                    //    AddSeal(seal);
                    //    fdrs.Seal += seal;
                    //}
                    else if (node.Kind == eReward.Item)
                    {
                        rdItem item = null;
                        if (eOption.None == selectedOpt)
                        {
                            theOptionPicker.Instance.GetItem(new JavaScriptSerializer().Deserialize <fmDropItem>(node.Contents), out item);
                        }
                        else
                        {
                            theOptionPicker.Instance.GetItemWithBoss(new JavaScriptSerializer().Deserialize <fmDropItem>(node.Contents), selectedOpt, out item);
                        }

                        if (null == item)
                        {
                            continue;
                        }

                        if (item.Parts == eParts.Jewel)
                        {
                            //Console.WriteLine(item.Parts);
                            if (eGrade.Epic < item.Grade)
                            {
                                //Console.WriteLine(item.Grade);
                                // 방송
                                //ArchiveExecuter.Instance.Push(new Msg_Broadcast_Public_NT(GetName(), item));
                            }
                        }

                        if ((GetLv() + 10) < item.Lv)
                        {
                            Logger.Error("Cheater Name:{0} , AccId:{1}, Lv:{2}, ItemLv:{3}", GetName(), AccId, GetLv(), item.Lv);
                        }

                        TryTakeItem(item);
                        items.Add(item);
                    }
                }

                fdrs.Exp += nodes.Exp;
            }

            fdrs.IsLevelUp = LevelUpAddExp(fdrs.Exp);
        }
Example #19
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);
        }
Example #20
0
 private void GetBaseValue(int lv, eOption option, out float value)
 {
     // 기본 베이스 옵션 값 선택
     value = m_option.GetBaseValue(lv, option);
 }
        private void controlGarageOptions(eOption i_Option)
        {
            try
            {
                AutoRepairShop.VehicleInShop.eVehicleStatus?status;
                string licenseNumber;
                Console.Clear();
                switch (i_Option)
                {
                case eOption.AddVehicle:
                    addVehicle();
                    break;

                case eOption.ShowVehiclesByLicense:
                    PrintingUtils.PrintLicensesList(r_AutoRepairShop.ShowAllVehiclesInGarage());
                    break;

                case eOption.ShowVehiclesByStatus:
                    status = getStatus();
                    PrintingUtils.PrintLicensesList(r_AutoRepairShop.ShowAllVehiclesInGarage(status), status);
                    break;

                case eOption.ModifyStatus:
                    licenseNumber = getLicenseNumber();
                    if (r_AutoRepairShop.IsVehicleExist(licenseNumber))
                    {
                        status = getStatus();
                        r_AutoRepairShop.SetNewStatusToVehicle(licenseNumber, status, out bool isSucceeded);
                        PrintingUtils.StatusModified(licenseNumber, status, isSucceeded);
                    }
                    else
                    {
                        throw new ArgumentException("Vehicle is not exist in the garage");
                    }

                    break;

                case eOption.InflateWheels:
                    licenseNumber = getLicenseNumber();
                    r_AutoRepairShop.SetWheelsPressureToMaximum(licenseNumber, out bool isInflated);
                    PrintingUtils.InflateWheels(licenseNumber, isInflated);
                    break;

                case eOption.RefuelVehicle:
                    licenseNumber = getLicenseNumber();
                    if (r_AutoRepairShop.IsVehicleExist(licenseNumber))
                    {
                        getFuelToAdd(out FuelVehicle.eFuelType fuelType, out float fuelToAdd);
                        r_AutoRepairShop.FillInEnergyToVehicle(
                            licenseNumber,
                            fuelToAdd,
                            out bool isRefueled,
                            fuelType);
                        PrintingUtils.EnergyAdded(licenseNumber, isRefueled, fuelType);
                    }
                    else
                    {
                        throw new ArgumentException("Vehicle is not exist in the garage");
                    }

                    break;

                case eOption.LoadVehicle:
                    licenseNumber = getLicenseNumber();
                    if (r_AutoRepairShop.IsVehicleExist(licenseNumber))
                    {
                        float minutesToAdd = getMinutesToLoad();
                        r_AutoRepairShop.FillInEnergyToVehicle(licenseNumber, minutesToAdd, out bool isLoaded);
                        PrintingUtils.EnergyAdded(licenseNumber, isLoaded);
                    }
                    else
                    {
                        throw new ArgumentException("Vehicle is not exist in the garage");
                    }

                    break;

                case eOption.ShowVehicleDetails:
                    licenseNumber = getLicenseNumber();
                    PrintingUtils.PrintVehicleDetails(
                        r_AutoRepairShop.ShowDetailsOfVehicle(licenseNumber, out bool isExist),
                        isExist);
                    break;

                case eOption.Exit:
                    m_LeaveStore = true;
                    break;

                default:
                    throw new ValueOutOfRangeException(1, 9);
                }

                if (i_Option != eOption.Exit)
                {
                    PrintingUtils.Delay();
                }
            }
            catch (Exception ex)
            {
                PrintingUtils.PrintExceptionErrors(ex);
                throw;
            }
        }
Example #22
0
 public float GetValue(int lv, eOption option)
 {
     return(m_values[option](lv));
 }
Example #23
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);
        }
Example #24
0
        //-----------------------------------------------------------------
        // Ancient
        //-----------------------------------------------------------------

        public float GetAncientValue(int lv, eOption option)
        {
            return(m_valuesAncient[option](lv));
        }
Example #25
0
 private float GetAncientValue(int lv, eOption option)
 {
     return(m_option.GetAncientValue(lv, option));
 }
        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);
        }
Example #27
0
 public static eOptGrade GetOptHiword(eOption opt)
 {
     return((eOptGrade)((int)opt >> 8));
 }