コード例 #1
0
 internal void Init(ItemGrade grade, WeaponType type)
 {
     InitType(type);
     //무기 타입 초기화 과정
     InitGrade(grade);
     //무기 등급 초기화 과정
     weaponForPlayer = DW.WeaponGenerator.GetWeapon(type, grade, transform);
     weaponForPlayer.gameObject.SetActive(false);
 }
コード例 #2
0
 public void OnSelectedUpgradeType()
 {
     if (_userItem == null)
     {
         return;
     }
     _upgradeRow = (ItemGrade)(cboUpgradeType.items.IndexOf(cboUpgradeType.value) + 1);
     ShowInfoUpgradeItem();
     ShowInfoItemEquip();
 }
コード例 #3
0
    //type Gun/ShotGun으로 제한됨, 사거리/탄약 수/관통력 반환
    public static (int, int, int) GetWeaponExtensionStat(WeaponType type, ItemGrade grade)
    {
        int index = (int)type - 2;

        if (index < 0)
        {
            throw new System.Exception("지정한 WeaponType은 해당 Stat을 사용하지 않습니다.");
        }
        return(weaponRange[index, (int)grade], weaponAmmo[index, (int)grade], weaponMultiHit[index, (int)grade]);
    }
コード例 #4
0
ファイル: ItemInfo.cs プロジェクト: gjw03018/PortFolio
 public ItemInfo(int itemID, string itemName, string itemDescription, ItemType itemType, int gWeight, int jWeight, ItemGrade itemGrade, Sprite sprite)
 {
     this.itemID          = itemID;
     this.itemName        = itemName;
     this.itemDescription = itemDescription;
     this.itemType        = itemType;
     this.gWeight         = gWeight;
     this.jWeight         = jWeight;
     this.itemGrade       = itemGrade;
     this.itemIcon        = sprite;
 }
コード例 #5
0
    public GameObject PopRandomItemByGrade(ItemGrade itemGrade)
    {
        List <GameObject> itemList = _equipObjectLists[(int)itemGrade];

        if (itemList.Count == 0)
        {
            Debug.Log($"{itemGrade} Item List is empty");
            return(null);
        }

        return(PopRandomItemInList(itemList));
    }
コード例 #6
0
ファイル: ItemInfo.cs プロジェクト: gjw03018/PortFolio
 public ItemInfo(ItemInfo iteminfo)
 {
     this.itemID          = iteminfo.itemID;
     this.itemName        = iteminfo.itemName;
     this.itemDescription = iteminfo.itemDescription;
     this.itemType        = iteminfo.itemType;
     this.gWeight         = iteminfo.gWeight;
     this.jWeight         = iteminfo.jWeight;
     this.itemGrade       = iteminfo.itemGrade;
     this.itemSprtie      = iteminfo.itemSprtie;
     this.itemIcon        = iteminfo.itemIcon;
 }
コード例 #7
0
 public JsonResult saveItemGrade(ItemGrade ItemGrade, int companyId)
 {
     try
     {
         new hdlItemGrade().save(ItemGrade, Convert.ToString(Session["User"]), companyId);
     }
     catch (Exception ex)
     {
         Response.StatusCode = 500;
         Content(JsonConvert.SerializeObject(new { error = ex.Message }));
     }
     return(getAllItemGradeCompany(ItemGrade.CompanyCode));
 }
コード例 #8
0
 public JsonResult deleteItemGrade(ItemGrade ItemGrade)
 {
     try
     {
         new hdlItemGrade().delete(ItemGrade);
     }
     catch (Exception ex)
     {
         Response.StatusCode = 500;
         Content(JsonConvert.SerializeObject(new { error = ex.Message }));
     }
     return(getAllItemGradeCompany(ItemGrade.CompanyCode));
 }
コード例 #9
0
        public void Load(S.ObjectItem info)
        {
            Name       = info.Name;
            NameColour = info.NameColour;

            BodyLibrary = Libraries.FloorItems;

            CurrentLocation = info.Location;
            MapLocation     = info.Location;
            GameScene.Scene.MapControl.AddObject(this);
            DrawFrame = info.Image;

            Size = BodyLibrary.GetTrueSize(DrawFrame);

            DrawY = CurrentLocation.Y;
            Grade = info.Grade;
        }
コード例 #10
0
        public static Weapon GetWeapon(WeaponType type, ItemGrade grade, Transform par)
        {
            //type, grade의 무기를 par의 자식오브젝트로 생성해주는 스태틱 함수

            //무기 오브젝트 생성
            GameObject weaponObj = new GameObject("WeaponEuipped");
            GameObject meshObj   = null;
            Weapon     weapon    = null;

            weaponObj.transform.SetParent(par, false);
            weaponObj.SetActive(false);
            //무기 오브젝트 비활성화

            //무기 타입에 따른 처리
            switch (type)
            {
            case WeaponType.Gun:
                weapon  = weaponObj.AddComponent <Gun>();
                meshObj = Resources.Load <GameObject>("DroppedWeapon/GunMesh");
                break;

            case WeaponType.Shotgun:
                weapon  = weaponObj.AddComponent <ShotGun>();
                meshObj = Resources.Load <GameObject>("DroppedWeapon/ShotGunMesh");
                break;

            case WeaponType.Sword:
                weapon  = weaponObj.AddComponent <Sword>();
                meshObj = Resources.Load <GameObject>("DroppedWeapon/SwordMesh");
                break;

            case WeaponType.Longsword:
                weapon  = weaponObj.AddComponent <LongSword>();
                meshObj = Resources.Load <GameObject>("DroppedWeapon/LongSwordMesh");
                break;
            }
            Object.Instantiate(meshObj, weaponObj.transform, false);
            weaponObj.transform.localScale = new Vector3(3, 3, 3);

            //무기 등급에 따른 처리
            weapon.Init(grade);

            //오브젝트 활성화 후 반환
            weaponObj.SetActive(true);
            return(weapon);
        }
コード例 #11
0
    public void SetItem(UserItem userItem)
    {
        _roleItem = userItem;

        ItemGrade itemGrade = (ItemGrade)userItem.Grade;

        Debug.Log("SetItem " + userItem.Grade + " " + itemGrade);

        Color color = Helper.ItemColor[userItem.Grade];

        Border.color = color;

        texture.mainTexture = Helper.LoadTextureForEquipItem(userItem.ItemId);

        lblInfor.text     = string.Format("[{0}]{1}\nLvl: {2}[-]\n", Helper.ColorToHex(color), userItem.Name, Helper.GetLevelItem(userItem.GameItem.Level));
        lblAttribute.text = "";
        foreach (ItemAttrib att in _roleItem.Attribs)
        {
            lblAttribute.text += string.Format("[00F099]{0}[-]: {1}\n", att.Attrib.ToString(), att.Value);
        }
    }
コード例 #12
0
    void AllowMerge()
    {
        if (savedItems.Count <= 1)
        {
            mergeButton.interactable = false;
            return;
        }

        ItemGrade gradeItem1 = savedItems[0].grade;

        for (int i = 1; i < savedItems.Count; i++)
        {
            if (savedItems[i].grade != gradeItem1)
            {
                mergeButton.interactable = false;
                return;
            }
        }

        mergeButton.interactable = true;
    }
コード例 #13
0
    public GameObject DropRandomItem(int stage)
    {
        Debug.Log("Drop Random Item");
        float chanceSum = 0f;

        float[] chanceList = new float[4];
        chanceSum    += DropItemChanceInStages[stage].Normal;
        chanceList[0] = chanceSum;
        chanceSum    += DropItemChanceInStages[stage].Special;
        chanceList[1] = chanceSum;
        chanceSum    += DropItemChanceInStages[stage].Rare;
        chanceList[2] = chanceSum;
        chanceSum    += DropItemChanceInStages[stage].Unique;
        chanceList[3] = chanceSum;

        // 랜덤한 리스트 선택
        ItemGrade itemGrade    = ItemGrade.Normal;
        float     randomChance = UnityEngine.Random.Range(0f, 1f);

        if (randomChance < chanceList[0])
        {
            itemGrade = ItemGrade.Normal;
        }
        else if (randomChance < chanceList[1])
        {
            itemGrade = ItemGrade.Special;
        }
        else if (randomChance < chanceList[2])
        {
            itemGrade = ItemGrade.Rare;
        }
        else if (randomChance < chanceList[3])
        {
            itemGrade = ItemGrade.Unique;
        }

        // 확률 합이 1이 안 넘을 경우, 아이템을 드랍하지 않음
        // 드랍 테이블이 빈 경우 처리 방안 필요
        return(PopRandomItemByGrade(itemGrade));
    }
コード例 #14
0
ファイル: hdlItemGrade.cs プロジェクト: farhatkhan/SMSMIS
 public void delete(ItemGrade ItemGrade)
 {
     try
     {
         var context = new SmsMisDB();
         //context.ItemGrade.Attach(ItemGrade);
         var entry = context.Entry(ItemGrade);
         if (entry != null)
         {
             entry.State = EntityState.Deleted;
             context.SaveChanges();
         }
     }
     catch (System.Data.Entity.Validation.DbEntityValidationException ex)
     {
         //throw SmsMis.Models.Console.Common.ExceptionTranslater.translate(ex);
         throw ex;
     }
     catch (Exception ex)
     {
         //throw SmsMis.Models.Console.Common.ExceptionTranslater.translate(ex);
         throw ex;
     }
 }
コード例 #15
0
        private void InitGrade(ItemGrade grade)
        {
            wlight   = GetComponentInChildren <Light>();
            particle = GetComponentInChildren <ParticleSystem>();
            ParticleSystem.MainModule Pmain = particle.main;
            switch (grade)
            {
            case ItemGrade.Common:
                wlight.color     = new Color(1f, 1f, 1f);
                Pmain.startColor = new Color(1f, 1f, 1f);
                break;

            case ItemGrade.Rare:
                wlight.color     = new Color(0.25f, 0.5f, 1f);
                Pmain.startColor = new Color(0.25f, 0.5f, 1f);
                break;

            case ItemGrade.Unique:
                wlight.color     = new Color(1f, 1f, 1f);
                Pmain.startColor = new Color(1f, 0.75f, 0.125f);
                break;
            }
            //light와 particle의 color 교체
        }
コード例 #16
0
ファイル: hdlItemGrade.cs プロジェクト: farhatkhan/SMSMIS
        public void save(ItemGrade ItemGrade, string userId, int CompanyCode)
        {
            try
            {
                using (var context = new SmsMisDB())
                {
                    var entry = context.Entry(ItemGrade);
                    if (entry != null)
                    {
                        ItemGrade.AddDateTime = DateTime.Now;
                        ItemGrade.AddByUserId = userId;

                        if (ItemGrade.GradeCode == 0)
                        {
                            ItemGrade.GradeCode = Functions.getNextPk("ItemGrade", "ItemGrade.GradeCode", " WHERE ItemGrade.CompanyCode = " + ItemGrade.CompanyCode);

                            entry.State = EntityState.Added;
                        }
                        else
                        {
                            entry.State = EntityState.Modified;
                        }

                        context.SaveChanges();
                    }
                }
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
                //throw ex;
            }
            catch (Exception ex)
            {
                // throw ex;
            }
        }
コード例 #17
0
ファイル: GameScene.cs プロジェクト: ElijahLOMCN/mir2
        void Button_Click(object sender, EventArgs e)
        {
            if (sender == NextButton)
            {
                SelectedGrade++;
                if (SelectedGrade >= GradeStrings.Length) SelectedGrade = GradeStrings.Length - 1;
            }
            if (sender == PrevButton)
            {
                SelectedGrade--;
                if (SelectedGrade <= 0) SelectedGrade = 0;
            }

            GradeLabel.Text = GradeStrings[SelectedGrade];
            GradeType = (ItemGrade)((byte)SelectedGrade);

            GradeLabel.ForeColour = GradeNameColor(GradeType);
        }
コード例 #18
0
ファイル: GameScene.cs プロジェクト: ElijahLOMCN/mir2
 public void Show(ItemGrade grade)
 {
     if (Visible) return;
     Visible = true;
     GradeType = grade;
     RefreshGradeFilter();
 }
コード例 #19
0
        public void SearchAuction(string itemName, bool isExactNameMatch = false, int page = 1, ItemGrade itemGrade = ItemGrade.All, AuctionCategory category = AuctionCategory.Off, int minPriceInCopper = 0, int maxPriceInCopper = 0, int minLevel = 0, int maxLevel = 0)
        {
            string searchQuery = string.Format("X2Auction:SearchAuctionArticle({0}, {1}, {2}, {3}, {4}, {5}, \"{6}\", \"{7}\", \"{8}\")", page, minLevel, maxLevel, (int)itemGrade, (int)category, isExactNameMatch.ToString().ToLower(), itemName, minPriceInCopper, maxPriceInCopper);

            System.Windows.Forms.MessageBox.Show(searchQuery);
            ArcheAPI.Instance.Lua.Execute(new Action(() =>
            {
                ArcheAPI.Instance.Lua.ExecuteLuaScript(ArcheAPI.Instance.Lua.auctionLuaState, searchQuery, (uint)Encoding.UTF8.GetByteCount(searchQuery), "SearchQuery");
            }));
        }
コード例 #20
0
ファイル: ItemData.cs プロジェクト: cpp1992/mir2
    public ItemInfo(BinaryReader reader, int version = int.MaxValue, int Customversion = int.MaxValue)
    {
        Index          = reader.ReadInt32();
        Name           = reader.ReadString();
        Type           = (ItemType)reader.ReadByte();
        Grade          = (ItemGrade)reader.ReadByte();
        RequiredType   = (RequiredType)reader.ReadByte();
        RequiredClass  = (RequiredClass)reader.ReadByte();
        RequiredGender = (RequiredGender)reader.ReadByte();
        Set            = (ItemSet)reader.ReadByte();

        Shape          = reader.ReadInt16();
        Weight         = reader.ReadByte();
        Light          = reader.ReadByte();
        RequiredAmount = reader.ReadByte();

        Image      = reader.ReadUInt16();
        Durability = reader.ReadUInt16();

        StackSize = reader.ReadUInt32();
        Price     = reader.ReadUInt32();

        MinAC    = reader.ReadByte();
        MaxAC    = reader.ReadByte();
        MinMAC   = reader.ReadByte();
        MaxMAC   = reader.ReadByte();
        MinDC    = reader.ReadByte();
        MaxDC    = reader.ReadByte();
        MinMC    = reader.ReadByte();
        MaxMC    = reader.ReadByte();
        MinSC    = reader.ReadByte();
        MaxSC    = reader.ReadByte();
        HP       = reader.ReadUInt16();
        MP       = reader.ReadUInt16();
        Accuracy = reader.ReadByte();
        Agility  = reader.ReadByte();

        Luck        = reader.ReadSByte();
        AttackSpeed = reader.ReadSByte();

        StartItem = reader.ReadBoolean();

        BagWeight  = reader.ReadByte();
        HandWeight = reader.ReadByte();
        WearWeight = reader.ReadByte();

        Effect         = reader.ReadByte();
        Strong         = reader.ReadByte();
        MagicResist    = reader.ReadByte();
        PoisonResist   = reader.ReadByte();
        HealthRecovery = reader.ReadByte();
        SpellRecovery  = reader.ReadByte();
        PoisonRecovery = reader.ReadByte();
        HPrate         = reader.ReadByte();
        MPrate         = reader.ReadByte();
        CriticalRate   = reader.ReadByte();
        CriticalDamage = reader.ReadByte();
        byte bools = reader.ReadByte();

        NeedIdentify    = (bools & 0x01) == 0x01;
        ShowGroupPickup = (bools & 0x02) == 0x02;
        ClassBased      = (bools & 0x04) == 0x04;
        LevelBased      = (bools & 0x08) == 0x08;
        CanMine         = (bools & 0x10) == 0x10;

        if (version >= 77)
        {
            GlobalDropNotify = (bools & 0x20) == 0x20;
        }

        MaxAcRate     = reader.ReadByte();
        MaxMacRate    = reader.ReadByte();
        Holy          = reader.ReadByte();
        Freezing      = reader.ReadByte();
        PoisonAttack  = reader.ReadByte();
        Bind          = (BindMode)reader.ReadInt16();
        Reflect       = reader.ReadByte();
        HpDrainRate   = reader.ReadByte();
        Unique        = (SpecialItemMode)reader.ReadInt16();
        RandomStatsId = reader.ReadByte();

        CanFastRun = reader.ReadBoolean();

        CanAwakening = reader.ReadBoolean();
        bool isTooltip = reader.ReadBoolean();

        if (isTooltip)
        {
            ToolTip = reader.ReadString();
        }

        if (version < 70) //before db version 70 all specialitems had wedding rings disabled, after that it became a server option
        {
            if ((Type == ItemType.Ring) && (Unique != SpecialItemMode.None))
            {
                Bind |= BindMode.NoWeddingRing;
            }
        }
    }
コード例 #21
0
        public static async System.Threading.Tasks.Task <List <BdoItemModel> > ScrapeItemLinksAsync(List <string> links)
        {
            var materials    = new List <BdoItemModel>();
            var htmlDocument = new HtmlDocument();

            foreach (var materialLink in links)
            {
                Console.WriteLine($"Scraping from {materialLink}");
                var            cookie         = new CookieContainer();
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(materialLink);
                httpWebRequest.CookieContainer   = cookie;
                httpWebRequest.Accept            = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3";
                httpWebRequest.Referer           = MaterialItemsUrl;
                httpWebRequest.UserAgent         = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36";
                httpWebRequest.Method            = "GET";
                httpWebRequest.AllowAutoRedirect = true;

                var response = await httpWebRequest.GetResponseAsync();

                var outputString = string.Empty;
                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        outputString = reader.ReadToEnd();
                    }
                }


                htmlDocument.LoadHtml(outputString);

                var item = new BdoItemModel();

                HtmlNode itemBox = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='outer item_info']");

                //Item id
                int itemId = 0;
                var idTD   = itemBox.Descendants("td")
                             .Where(e => e.InnerText.StartsWith("ID: "));
                Int32.TryParse(Regex.Match(idTD.First().InnerText, @"\d+").Value, out itemId);
                item.Id = itemId;


                //Item Name
                var nameElem = itemBox.Descendants("span").Where(n => n.GetAttributeValue("id", "") == "item_name").FirstOrDefault();
                var name     = nameElem?.Descendants("b").FirstOrDefault().InnerText;
                if (name != null)
                {
                    item.Name = name;
                }

                //Item Grade
                ItemGrade cacheItemGrade = ItemGrade.White;
                var       gradeString    = nameElem.GetClasses().ToList()[1].Replace("item_grade_", "");
                Enum.TryParse(gradeString, out cacheItemGrade);
                item.Grade = cacheItemGrade;

                //Item Weight
                string weight           = "0 LT";
                var    weightElem       = itemBox.Descendants("td").Where(t => t.InnerText.Contains("Weight: ")).FirstOrDefault();
                string weightElemString = weightElem.InnerText;
                if (weightElem != null)
                {
                    weight = weightElemString.Substring
                                 (weightElemString.LastIndexOf("Weight: ") + 8, weightElemString.Length - weightElemString.LastIndexOf("LT") + 3);
                }
                item.Weight = weight;

                //Item Img
                var itemImg = itemBox.Descendants("img").Where(r => r.GetAttributeValue("class", "") == "item_icon")
                              .FirstOrDefault().GetAttributeValue("src", string.Empty);
                item.Img = $"https://{response.ResponseUri.Host}{itemImg}";

                //Item Category
                var itemCategory = itemBox.Descendants("span")
                                   .Where(n => n.GetAttributeValue("class", string.Empty) == "category_text")
                                   .FirstOrDefault();
                if (itemCategory != null)
                {
                    item.Category = itemCategory.InnerText;
                }

                //Item Description
                var itemDescriptionElem = itemBox.Descendants("td").Where(n => n.InnerText.Contains("Description")).FirstOrDefault();
                if (itemDescriptionElem != null)
                {
                    item.Description = itemDescriptionElem.InnerText;//Replace with innerHtml for colored text markups
                    if (item.Description.Contains("Knowledge:"))
                    {
                        var knowledgeNode = itemDescriptionElem.Descendants("a")
                                            .FirstOrDefault(e => e.GetAttributeValue("data-id", "").StartsWith("theme--"));

                        if (knowledgeNode != null)
                        {
                            item.Knowledge = knowledgeNode.GetAttributeValue("data-id", "");
                        }
                    }
                    var sellOrMarket = "Sell price: ";
                    if (!item.Description.Contains(sellOrMarket))
                    {
                        sellOrMarket = "Market Price: ";
                    }

                    if (item.Description.Contains("Buy price:"))
                    {
                        string sellBuyPrice = string.Empty;

                        if (item.Description.Contains("Repair price"))
                        {
                            int buyI = item.Description.IndexOf("Buy price:");
                            sellBuyPrice = item.Description.Substring(buyI, item.Description.IndexOf("Repair price:") - buyI);
                        }
                        else
                        {
                            sellBuyPrice = item.Description.Substring(item.Description.IndexOf("Buy price:"));
                        }


                        var buyPrice = sellBuyPrice.Substring(0, sellBuyPrice.IndexOf(sellOrMarket));
                        item.BuyPrice = buyPrice.Replace("Buy price: ", "");

                        var sellprice = sellBuyPrice.Substring(sellBuyPrice.IndexOf(sellOrMarket));
                        item.SellPrice = sellprice.Replace(sellOrMarket, "");
                    }
                    else
                    {
                        item.SellPrice = "0";
                        item.BuyPrice  = "0";
                    }
                }

                materials.Add(item);
                Console.WriteLine($"Finished Scraping {materialLink}");
            }


            return(materials);
        }
コード例 #22
0
 //Get Method 사용 방법 : 첫번째 매개변수는 Weapon 종류 지정(Enum WeaponType), 두번째 매개변수는 Weapon 등급 지정(Enum ItemGrade)
 //매개변수 type과 grade로 지정한 무기의 기본 정보 : 공격 시 공격력/공격 쿨타임 반환
 public static (int, float) GetWeaponStat(WeaponType type, ItemGrade grade)
 {
     return(weaponAtk[(int)type, (int)grade], weaponCooldown[(int)type, (int)grade]);
 }
コード例 #23
0
 //Get Method 사용 방법 : 첫번째 매개변수는 Armor 종류 지정(Enum ArmorType), 두번째 매개변수는 Armor 등급 지정(Enum ItemGrade)
 //매개변수 type과 grade로 지정한 방어구의 기본 정보 : 최대체력 증가량/방어력 증가량/이동속도 증가량 을 반환한다.
 public static (int, int, float) GetArmorStat(ArmorType type, ItemGrade grade)
 {
     return(bonusHp[(int)type, (int)grade], bonusArmor[(int)type, (int)grade], bonusSpeed[(int)type, (int)grade]);
 }
コード例 #24
0
ファイル: GameScene.cs プロジェクト: ElijahLOMCN/mir2
 public Color GradeNameColor(ItemGrade grade)
 {
     switch (grade)
     {
         case ItemGrade.Common:
             return Color.Yellow;
         case ItemGrade.Rare:
             return Color.DeepSkyBlue;
         case ItemGrade.Legendary:
             return Color.DarkOrange;
         case ItemGrade.Mythical:
             return Color.Plum;
         default:
             return Color.Yellow;
     }
 }
コード例 #25
0
    public ItemInfo(BinaryReader reader, int version = int.MaxValue, int customVersion = int.MaxValue)
    {
        Index          = reader.ReadInt32();
        Name           = reader.ReadString();
        Type           = (ItemType)reader.ReadByte();
        Grade          = (ItemGrade)reader.ReadByte();
        RequiredType   = (RequiredType)reader.ReadByte();
        RequiredClass  = (RequiredClass)reader.ReadByte();
        RequiredGender = (RequiredGender)reader.ReadByte();
        Set            = (ItemSet)reader.ReadByte();

        Shape          = reader.ReadInt16();
        Weight         = reader.ReadByte();
        Light          = reader.ReadByte();
        RequiredAmount = reader.ReadByte();

        Image      = reader.ReadUInt16();
        Durability = reader.ReadUInt16();

        if (version <= 84)
        {
            StackSize = (ushort)reader.ReadUInt32();
        }
        else
        {
            StackSize = reader.ReadUInt16();
        }

        Price = reader.ReadUInt32();

        if (version <= 84)
        {
            Stats                = new Stats();
            Stats[Stat.MinAC]    = reader.ReadByte();
            Stats[Stat.MaxAC]    = reader.ReadByte();
            Stats[Stat.MinMAC]   = reader.ReadByte();
            Stats[Stat.MaxMAC]   = reader.ReadByte();
            Stats[Stat.MinDC]    = reader.ReadByte();
            Stats[Stat.MaxDC]    = reader.ReadByte();
            Stats[Stat.MinMC]    = reader.ReadByte();
            Stats[Stat.MaxMC]    = reader.ReadByte();
            Stats[Stat.MinSC]    = reader.ReadByte();
            Stats[Stat.MaxSC]    = reader.ReadByte();
            Stats[Stat.HP]       = reader.ReadUInt16();
            Stats[Stat.MP]       = reader.ReadUInt16();
            Stats[Stat.Accuracy] = reader.ReadByte();
            Stats[Stat.Agility]  = reader.ReadByte();

            Stats[Stat.Luck]        = reader.ReadSByte();
            Stats[Stat.AttackSpeed] = reader.ReadSByte();
        }

        StartItem = reader.ReadBoolean();

        if (version <= 84)
        {
            Stats[Stat.BagWeight]  = reader.ReadByte();
            Stats[Stat.HandWeight] = reader.ReadByte();
            Stats[Stat.WearWeight] = reader.ReadByte();
        }

        Effect = reader.ReadByte();

        if (version <= 84)
        {
            Stats[Stat.Strong]         = reader.ReadByte();
            Stats[Stat.MagicResist]    = reader.ReadByte();
            Stats[Stat.PoisonResist]   = reader.ReadByte();
            Stats[Stat.HealthRecovery] = reader.ReadByte();
            Stats[Stat.SpellRecovery]  = reader.ReadByte();
            Stats[Stat.PoisonRecovery] = reader.ReadByte();
            Stats[Stat.HPRatePercent]  = reader.ReadByte();
            Stats[Stat.MPRatePercent]  = reader.ReadByte();
            Stats[Stat.CriticalRate]   = reader.ReadByte();
            Stats[Stat.CriticalDamage] = reader.ReadByte();
        }


        byte bools = reader.ReadByte();

        NeedIdentify    = (bools & 0x01) == 0x01;
        ShowGroupPickup = (bools & 0x02) == 0x02;
        ClassBased      = (bools & 0x04) == 0x04;
        LevelBased      = (bools & 0x08) == 0x08;
        CanMine         = (bools & 0x10) == 0x10;

        if (version >= 77)
        {
            GlobalDropNotify = (bools & 0x20) == 0x20;
        }

        if (version <= 84)
        {
            Stats[Stat.MaxACRatePercent]  = reader.ReadByte();
            Stats[Stat.MaxMACRatePercent] = reader.ReadByte();
            Stats[Stat.Holy]         = reader.ReadByte();
            Stats[Stat.Freezing]     = reader.ReadByte();
            Stats[Stat.PoisonAttack] = reader.ReadByte();
        }

        Bind = (BindMode)reader.ReadInt16();

        if (version <= 84)
        {
            Stats[Stat.Reflect]            = reader.ReadByte();
            Stats[Stat.HPDrainRatePercent] = reader.ReadByte();
        }

        Unique        = (SpecialItemMode)reader.ReadInt16();
        RandomStatsId = reader.ReadByte();

        CanFastRun = reader.ReadBoolean();

        CanAwakening = reader.ReadBoolean();

        if (version > 83)
        {
            Slots = reader.ReadByte();
        }

        if (version > 84)
        {
            Stats = new Stats(reader);
        }

        bool isTooltip = reader.ReadBoolean();

        if (isTooltip)
        {
            ToolTip = reader.ReadString();
        }

        if (version < 70) //before db version 70 all specialitems had wedding rings disabled, after that it became a server option
        {
            if ((Type == ItemType.Ring) && (Unique != SpecialItemMode.None))
            {
                Bind |= BindMode.NoWeddingRing;
            }
        }
    }
コード例 #26
0
ファイル: Common.cs プロジェクト: thedeaths/official-mir2c-
    public ItemInfo(BinaryReader reader, int version = int.MaxValue, int Customversion = int.MaxValue)
    {
        Index = reader.ReadInt32();
        Name = reader.ReadString();
        Type = (ItemType) reader.ReadByte();
        if (version >= 40) Grade = (ItemGrade)reader.ReadByte();
        RequiredType = (RequiredType) reader.ReadByte();
        RequiredClass = (RequiredClass) reader.ReadByte();
        RequiredGender = (RequiredGender) reader.ReadByte();
        if(version >= 17) Set = (ItemSet)reader.ReadByte();

        Shape = version >= 30 ? reader.ReadInt16() : reader.ReadSByte();
        Weight = reader.ReadByte();
        Light = reader.ReadByte();
        RequiredAmount = reader.ReadByte();

        Image = reader.ReadUInt16();
        Durability = reader.ReadUInt16();

        StackSize = reader.ReadUInt32();
        Price = reader.ReadUInt32();

        MinAC = reader.ReadByte();
        MaxAC = reader.ReadByte();
        MinMAC = reader.ReadByte();
        MaxMAC = reader.ReadByte();
        MinDC = reader.ReadByte();
        MaxDC = reader.ReadByte();
        MinMC = reader.ReadByte();
        MaxMC = reader.ReadByte();
        MinSC = reader.ReadByte();
        MaxSC = reader.ReadByte();
        if (version < 25)
        {
            HP = reader.ReadByte();
            MP = reader.ReadByte();
        }
        else
        {
            HP = reader.ReadUInt16();
            MP = reader.ReadUInt16();
        }
        Accuracy = reader.ReadByte();
        Agility = reader.ReadByte();

        Luck = reader.ReadSByte();
        AttackSpeed = reader.ReadSByte();

        StartItem = reader.ReadBoolean();

        BagWeight = reader.ReadByte();
        HandWeight = reader.ReadByte();
        WearWeight = reader.ReadByte();

        if (version >= 9) Effect = reader.ReadByte();
        if (version >= 20)
        {
            Strong = reader.ReadByte();
            MagicResist = reader.ReadByte();
            PoisonResist = reader.ReadByte();
            HealthRecovery = reader.ReadByte();
            SpellRecovery = reader.ReadByte();
            PoisonRecovery = reader.ReadByte();
            HPrate = reader.ReadByte();
            MPrate = reader.ReadByte();
            CriticalRate = reader.ReadByte();
            CriticalDamage = reader.ReadByte();
            byte bools = reader.ReadByte();
            NeedIdentify = (bools & 0x01) == 0x01;
            ShowGroupPickup = (bools & 0x02) == 0x02;
            ClassBased = (bools & 0x04) == 0x04;
            LevelBased = (bools & 0x08) == 0x08;
            CanMine = (bools & 0x10) == 0x10;
            MaxAcRate = reader.ReadByte();
            MaxMacRate = reader.ReadByte();
            Holy = reader.ReadByte();
            Freezing = reader.ReadByte();
            PoisonAttack = reader.ReadByte();
            if (version < 55)
            {
                Bind = (BindMode)reader.ReadByte();
            }
            else
            {
                Bind = (BindMode)reader.ReadInt16();
            }
            
        }
        if (version >= 21)
        {
            Reflect = reader.ReadByte();
            HpDrainRate = reader.ReadByte();
            Unique = (SpecialItemMode)reader.ReadInt16();
        }
        if (version >= 24)
        {
            RandomStatsId = reader.ReadByte();
        }
        else
        {
            RandomStatsId = 255;
            if ((Type == ItemType.Weapon) || (Type == ItemType.Armour) || (Type == ItemType.Helmet) || (Type == ItemType.Necklace) || (Type == ItemType.Bracelet) || (Type == ItemType.Ring) || (Type == ItemType.Mount))
                RandomStatsId = (byte)Type;
            if ((Type == ItemType.Belt) || (Type == ItemType.Boots))
                RandomStatsId = 7;
        }

        if (version >= 40) CanFastRun = reader.ReadBoolean();

        if (version >= 41)
        {
            CanAwakening = reader.ReadBoolean();
            bool isTooltip = reader.ReadBoolean();
            if (isTooltip)
                ToolTip = reader.ReadString();
        }
    }
コード例 #27
0
 public override void Init(ItemGrade grade)
 {
     base.Init(grade);
 }