Esempio n. 1
0
 public BoxItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 2
0
 public UpgradeItem(ItemDTO item) : base(item)
 {
 }
Esempio n. 3
0
 public void InitializeItem(ItemDTO item)
 {
     // manual mapping to avoid automapper outside of DAO
     this.BasicUpgrade = item.BasicUpgrade;
     this.CellonLvl = item.CellonLvl;
     this.Class = item.Class;
     this.CloseDefence = item.CloseDefence;
     this.Color = item.Color;
     this.Concentrate = item.Concentrate;
     this.CriticalRate = item.CriticalRate;
     this.CriticalLuckRate = item.CriticalLuckRate;
     this.DamageMaximum = item.DamageMaximum;
     this.DamageMinimum = item.DamageMinimum;
     this.DarkElement = item.DarkElement;
     this.DarkResistance = item.DarkResistance;
     this.DefenceDodge = item.DefenceDodge;
     this.DistanceDefence = item.DistanceDefence;
     this.DistanceDefenceDodge = item.DistanceDefenceDodge;
     this.Effect = item.Effect;
     this.EffectValue = item.EffectValue;
     this.Element = item.Element;
     this.ElementRate = item.ElementRate;
     this.EquipmentSlot = item.EquipmentSlot;
     this.FireElement = item.FireElement;
     this.FireResistance = item.FireResistance;
     this.HitRate = item.HitRate;
     this.Hp = item.Hp;
     this.HpRegeneration = item.HpRegeneration;
     this.IsBlocked = item.IsBlocked;
     this.IsColored = item.IsColored;
     this.IsConsumable = item.IsConsumable;
     this.IsDroppable = item.IsDroppable;
     this.IsHeroic = item.IsHeroic;
     this.IsMinilandObject = item.IsMinilandObject;
     this.IsSoldable = item.IsSoldable;
     this.IsTradable = item.IsTradable;
     this.IsHolder = item.IsHolder;
     this.ItemSubType = item.ItemSubType;
     this.ItemType = item.ItemType;
     this.ItemValidTime = item.ItemValidTime;
     this.LevelJobMinimum = item.LevelJobMinimum;
     this.LevelMinimum = item.LevelMinimum;
     this.LightElement = item.LightElement;
     this.LightResistance = item.LightResistance;
     this.MagicDefence = item.MagicDefence;
     this.MaxCellon = item.MaxCellon;
     this.MaxCellonLvl = item.MaxCellonLvl;
     this.MaxElementRate = item.MaxElementRate;
     this.MaximumAmmo = item.MaximumAmmo;
     this.MoreHp = item.MoreHp;
     this.MoreMp = item.MoreMp;
     this.Morph = item.Morph;
     this.Mp = item.Mp;
     this.MpRegeneration = item.MpRegeneration;
     this.Name = item.Name;
     this.Price = item.Price;
     this.PvpDefence = item.PvpDefence;
     this.PvpStrength = item.PvpStrength;
     this.ReduceOposantResistance = item.ReduceOposantResistance;
     this.ReputationMinimum = item.ReputationMinimum;
     this.ReputPrice = item.ReputPrice;
     this.SecondaryElement = item.SecondaryElement;
     this.Sex = item.Sex;
     this.Speed = item.Speed;
     this.SpType = item.SpType;
     this.Type = item.Type;
     this.VNum = item.VNum;
     this.WaitDelay = item.WaitDelay;
     this.WaterElement = item.WaterElement;
     this.WaterResistance = item.WaterResistance;
 }
Esempio n. 4
0
 public TeacherItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 5
0
 public PotionItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 6
0
 public Item(ItemDTO item)
 {
     InitializeItem(item);
 }
Esempio n. 7
0
 public WearableItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 8
0
 public ProduceItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 9
0
 public NoFunctionItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 10
0
 public MagicalItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 11
0
        internal void ImportItems()
        {
            string fileId = $"{_folder}\\Item.dat";
            string fileLang = $"{_folder}\\_code_{System.Configuration.ConfigurationManager.AppSettings["language"]}_Item.txt";
            Dictionary<string, string> dictionaryName = new Dictionary<string, string>();
            string line;
            List<ItemDTO> items = new List<ItemDTO>();

            using (StreamReader mapIdLangStream = new StreamReader(fileLang, Encoding.GetEncoding(1252)))
            {
                while ((line = mapIdLangStream.ReadLine()) != null)
                {
                    string[] linesave = line.Split('\t');
                    if (linesave.Length <= 1 || dictionaryName.ContainsKey(linesave[0]))
                    {
                        continue;
                    }
                    dictionaryName.Add(linesave[0], linesave[1]);
                }
                mapIdLangStream.Close();
            }

            using (StreamReader npcIdStream = new StreamReader(fileId, Encoding.GetEncoding(1252)))
            {
                ItemDTO item = new ItemDTO();
                bool itemAreaBegin = false;
                int itemCounter = 0;

                while ((line = npcIdStream.ReadLine()) != null)
                {
                    string[] currentLine = line.Split('\t');

                    if (currentLine.Length > 3 && currentLine[1] == "VNUM")
                    {
                        itemAreaBegin = true;
                        item.VNum = short.Parse(currentLine[2]);
                        item.Price = long.Parse(currentLine[3]);
                    }
                    else if (currentLine.Length > 1 && currentLine[1] == "END")
                    {
                        if (!itemAreaBegin)
                        {
                            continue;
                        }
                        if (DAOFactory.ItemDAO.LoadById(item.VNum) == null)
                        {
                            items.Add(item);
                            itemCounter++;
                        }
                        item = new ItemDTO();
                        itemAreaBegin = false;
                    }
                    else if (currentLine.Length > 2 && currentLine[1] == "NAME")
                    {
                        string name;
                        item.Name = dictionaryName.TryGetValue(currentLine[2], out name) ? name : string.Empty;
                    }
                    else if (currentLine.Length > 7 && currentLine[1] == "INDEX")
                    {
                        switch (Convert.ToByte(currentLine[2]))
                        {
                            case 4:
                                item.Type = InventoryType.Equipment;
                                break;

                            case 8:
                                item.Type = InventoryType.Equipment;
                                break;

                            case 9:
                                item.Type = InventoryType.Main;
                                break;

                            case 10:
                                item.Type = InventoryType.Etc;
                                break;

                            default:
                                item.Type = (InventoryType)Enum.Parse(typeof(InventoryType), currentLine[2]);
                                break;
                        }
                        item.ItemType = currentLine[3] != "-1" ? (ItemType)Enum.Parse(typeof(ItemType), $"{(short)item.Type}{currentLine[3]}") : ItemType.Weapon;
                        item.ItemSubType = Convert.ToByte(currentLine[4]);
                        item.EquipmentSlot = (EquipmentType)Enum.Parse(typeof(EquipmentType), currentLine[5] != "-1" ? currentLine[5] : "0");

                        // item.DesignId = Convert.ToInt16(currentLine[6]);
                        switch (item.VNum)
                        {
                            case 1906:
                                item.Morph = 2368;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 1907:
                                item.Morph = 2370;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 1965:
                                item.Morph = 2406;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5008:
                                item.Morph = 2411;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5117:
                                item.Morph = 2429;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5152:
                                item.Morph = 2432;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5173:
                                item.Morph = 2511;
                                item.Speed = 16;
                                item.WaitDelay = 3000;
                                break;

                            case 5196:
                                item.Morph = 2517;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5226: // Invisible locomotion, only 5 seconds with booster
                                item.Morph = 1817;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5228: // Invisible locoomotion, only 5 seconds with booster
                                item.Morph = 1819;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5232:
                                item.Morph = 2520;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5234:
                                item.Morph = 2522;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5236:
                                item.Morph = 2524;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5238:
                                item.Morph = 1817;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5240:
                                item.Morph = 1819;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 5319:
                                item.Morph = 2526;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 5321:
                                item.Morph = 2528;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5323:
                                item.Morph = 2530;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 5330:
                                item.Morph = 2928;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 5332:
                                item.Morph = 2930;
                                item.Speed = 14;
                                item.WaitDelay = 3000;
                                break;

                            case 5360:
                                item.Morph = 2932;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 5386:
                                item.Morph = 2934;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5387:
                                item.Morph = 2936;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5388:
                                item.Morph = 2938;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5389:
                                item.Morph = 2940;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5390:
                                item.Morph = 2942;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5391:
                                item.Morph = 2944;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 5914:
                                item.Morph = 2513;
                                item.Speed = 14;
                                item.WaitDelay = 3000;
                                break;

                            case 9054:
                                item.Morph = 2368;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 9055:
                                item.Morph = 2370;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 9058:
                                item.Morph = 2406;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 9065:
                                item.Morph = 2411;
                                item.Speed = 20;
                                item.WaitDelay = 3000;
                                break;

                            case 9070:
                                item.Morph = 2429;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9073:
                                item.Morph = 2432;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9078:
                                item.Morph = 2520;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9079:
                                item.Morph = 2522;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9080:
                                item.Morph = 2524;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9081:
                                item.Morph = 1817;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9082:
                                item.Morph = 1819;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9083:
                                item.Morph = 2526;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 9084:
                                item.Morph = 2528;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 9085:
                                item.Morph = 2930;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 9086:
                                item.Morph = 2928;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 9087:
                                item.Morph = 2930;
                                item.Speed = 14;
                                item.WaitDelay = 3000;
                                break;

                            case 9088:
                                item.Morph = 2932;
                                item.Speed = 22;
                                item.WaitDelay = 3000;
                                break;

                            case 9090:
                                item.Morph = 2934;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9091:
                                item.Morph = 2936;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9092:
                                item.Morph = 2938;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9093:
                                item.Morph = 2940;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            case 9094:
                                item.Morph = 2942;
                                item.Speed = 21;
                                item.WaitDelay = 3000;
                                break;

                            default:
                                if (item.EquipmentSlot.Equals(EquipmentType.Amulet))
                                {
                                    switch (item.VNum)
                                    {
                                        case 4503:
                                            item.EffectValue = 4544;
                                            break;

                                        case 4504:
                                            item.EffectValue = 4294;
                                            break;

                                        default:
                                            item.EffectValue = Convert.ToInt16(currentLine[7]);
                                            break;
                                    }
                                }
                                else
                                {
                                    item.Morph = Convert.ToInt16(currentLine[7]);
                                }
                                break;
                        }
                    }
                    else if (currentLine.Length > 3 && currentLine[1] == "TYPE")
                    {
                        // currentLine[2] 0-range 2-range 3-magic
                        item.Class = item.EquipmentSlot == EquipmentType.Fairy ? (byte)15 : Convert.ToByte(currentLine[3]);
                    }
                    else if (currentLine.Length > 3 && currentLine[1] == "FLAG")
                    {
                        item.IsSoldable = currentLine[5] == "0";
                        item.IsDroppable = currentLine[6] == "0";
                        item.IsTradable = currentLine[7] == "0";
                        item.IsBlocked = currentLine[8] == "1";
                        item.IsMinilandObject = currentLine[9] == "1";
                        item.IsHolder = currentLine[10] == "1";
                        item.IsColored = currentLine[16] == "1";
                        item.Sex = currentLine[18] == "1" ? (byte)1 : currentLine[17] == "1" ? (byte)2 : (byte)0;
                        if (currentLine[21] == "1")
                        {
                            item.ReputPrice = item.Price;
                        }
                        item.IsHeroic = currentLine[22] == "1";
                        /*
                        item.IsVehicle = currentLine[11] == "1" ? true : false; // (?)
                        item.BoxedVehicle = currentLine[12] == "1" ? true : false; // (?)
                        linesave[4]  unknown
                        linesave[11] unknown
                        linesave[12] unknown
                        linesave[13] unknown
                        linesave[14] unknown
                        linesave[15] unknown
                        linesave[19] unknown
                        linesave[20] unknown
                        */
                    }
                    else if (currentLine.Length > 1 && currentLine[1] == "DATA")
                    {
                        switch (item.ItemType)
                        {
                            case ItemType.Weapon:
                                item.LevelMinimum = Convert.ToByte(currentLine[2]);
                                item.DamageMinimum = Convert.ToInt16(currentLine[3]);
                                item.DamageMaximum = Convert.ToInt16(currentLine[4]);
                                item.HitRate = Convert.ToInt16(currentLine[5]);
                                item.CriticalLuckRate = Convert.ToByte(currentLine[6]);
                                item.CriticalRate = Convert.ToInt16(currentLine[7]);
                                item.BasicUpgrade = Convert.ToByte(currentLine[10]);
                                item.MaximumAmmo = 100;
                                break;

                            case ItemType.Armor:
                                item.LevelMinimum = Convert.ToByte(currentLine[2]);
                                item.CloseDefence = Convert.ToInt16(currentLine[3]);
                                item.DistanceDefence = Convert.ToInt16(currentLine[4]);
                                item.MagicDefence = Convert.ToInt16(currentLine[5]);
                                item.DefenceDodge = Convert.ToInt16(currentLine[6]);
                                item.DistanceDefenceDodge = Convert.ToInt16(currentLine[6]);
                                item.BasicUpgrade = Convert.ToByte(currentLine[10]);
                                break;

                            case ItemType.Box:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                item.EffectValue = Convert.ToInt32(currentLine[3]);
                                break;

                            case ItemType.Fashion:
                                item.LevelMinimum = Convert.ToByte(currentLine[2]);
                                item.CloseDefence = Convert.ToInt16(currentLine[3]);
                                item.DistanceDefence = Convert.ToInt16(currentLine[4]);
                                item.MagicDefence = Convert.ToInt16(currentLine[5]);
                                item.DefenceDodge = Convert.ToInt16(currentLine[6]);
                                if (item.EquipmentSlot.Equals(EquipmentType.CostumeHat) || item.EquipmentSlot.Equals(EquipmentType.CostumeSuit))
                                {
                                    item.ItemValidTime = Convert.ToInt32(currentLine[13]) * 3600;
                                }
                                break;

                            case ItemType.Food:
                                item.Hp = Convert.ToInt16(currentLine[2]);
                                item.Mp = Convert.ToInt16(currentLine[4]);
                                break;

                            case ItemType.Jewelery:
                                if (item.EquipmentSlot.Equals(EquipmentType.Amulet))
                                {
                                    item.LevelMinimum = Convert.ToByte(currentLine[2]);
                                    if ((item.VNum > 4055 && item.VNum < 4061) || (item.VNum > 4172 && item.VNum < 4176))
                                    {
                                        item.ItemValidTime = 10800;
                                    }
                                    else if ((item.VNum > 4045 && item.VNum < 4056) || item.VNum == 967 || item.VNum == 968)
                                    {
                                        // (item.VNum > 8104 && item.VNum < 8115) <= disaled for now
                                        // because doesn't work!
                                        item.ItemValidTime = 3600;
                                    }
                                    else
                                    {
                                        item.ItemValidTime = Convert.ToInt32(currentLine[3]) / 10;
                                    }
                                }
                                else if (item.EquipmentSlot.Equals(EquipmentType.Fairy))
                                {
                                    item.Element = Convert.ToByte(currentLine[2]);
                                    item.ElementRate = Convert.ToInt16(currentLine[3]);
                                    if (item.VNum <= 256)
                                    {
                                        item.MaxElementRate = 50;
                                    }
                                    else
                                    {
                                        if (item.ElementRate == 0)
                                        {
                                            if (item.VNum >= 800 && item.VNum <= 804)
                                            {
                                                item.MaxElementRate = 50;
                                            }
                                            else
                                            {
                                                item.MaxElementRate = 70;
                                            }
                                        }
                                        else if (item.ElementRate == 30)
                                        {
                                            if (item.VNum >= 884 && item.VNum <= 887)
                                            {
                                                item.MaxElementRate = 50;
                                            }
                                            else
                                            {
                                                item.MaxElementRate = 30;
                                            }
                                        }
                                        else if (item.ElementRate == 35)
                                        {
                                            item.MaxElementRate = 35;
                                        }
                                        else if (item.ElementRate == 40)
                                        {
                                            item.MaxElementRate = 70;
                                        }
                                        else if (item.ElementRate == 50)
                                        {
                                            item.MaxElementRate = 80;
                                        }
                                    }
                                }
                                else
                                {
                                    item.LevelMinimum = Convert.ToByte(currentLine[2]);
                                    item.MaxCellonLvl = Convert.ToByte(currentLine[3]);
                                    item.MaxCellon = Convert.ToByte(currentLine[4]);
                                }
                                break;

                            case ItemType.Event:
                                switch (item.VNum)
                                {
                                    case 1332:
                                        item.EffectValue = 5108;
                                        break;

                                    case 1333:
                                        item.EffectValue = 5109;
                                        break;

                                    case 1334:
                                        item.EffectValue = 5111;
                                        break;

                                    case 1335:
                                        item.EffectValue = 5107;
                                        break;

                                    case 1336:
                                        item.EffectValue = 5106;
                                        break;

                                    case 1337:
                                        item.EffectValue = 5110;
                                        break;

                                    case 1339:
                                        item.EffectValue = 5114;
                                        break;

                                    case 9031:
                                        item.EffectValue = 5108;
                                        break;

                                    case 9032:
                                        item.EffectValue = 5109;
                                        break;

                                    case 9033:
                                        item.EffectValue = 5011;
                                        break;

                                    case 9034:
                                        item.EffectValue = 5107;
                                        break;

                                    case 9035:
                                        item.EffectValue = 5106;
                                        break;

                                    case 9036:
                                        item.EffectValue = 5110;
                                        break;

                                    case 9038:
                                        item.EffectValue = 5114;
                                        break;

                                    // EffectItems aka. fireworks
                                    case 1581:
                                        item.EffectValue = 860;
                                        break;

                                    case 1582:
                                        item.EffectValue = 861;
                                        break;

                                    case 1585:
                                        item.EffectValue = 859;
                                        break;

                                    case 1983:
                                        item.EffectValue = 875;
                                        break;

                                    case 1984:
                                        item.EffectValue = 876;
                                        break;

                                    case 1985:
                                        item.EffectValue = 877;
                                        break;

                                    case 1986:
                                        item.EffectValue = 878;
                                        break;

                                    case 1987:
                                        item.EffectValue = 879;
                                        break;

                                    case 1988:
                                        item.EffectValue = 880;
                                        break;

                                    case 9044:
                                        item.EffectValue = 859;
                                        break;

                                    case 9059:
                                        item.EffectValue = 875;
                                        break;

                                    case 9060:
                                        item.EffectValue = 876;
                                        break;

                                    case 9061:
                                        item.EffectValue = 877;
                                        break;

                                    case 9062:
                                        item.EffectValue = 878;
                                        break;

                                    case 9063:
                                        item.EffectValue = 879;
                                        break;

                                    case 9064:
                                        item.EffectValue = 880;
                                        break;

                                    default:
                                        item.EffectValue = Convert.ToInt16(currentLine[7]);
                                        break;
                                }
                                break;

                            case ItemType.Special:
                                switch (item.VNum)
                                {
                                    case 5105:
                                        item.Effect = 651;
                                        break;

                                    case 5115:
                                        item.Effect = 652;
                                        break;

                                    case 1981:
                                        item.Effect = 34; // imagined number as for I = √(-1), complex z = a + bi
                                        break;

                                    case 1982:
                                        item.Effect = 6969; // imagined number as for I = √(-1), complex z = a + bi
                                        break;

                                    default:
                                        if ((item.VNum > 5891 && item.VNum < 5900) || (item.VNum > 9100 && item.VNum < 9109))
                                        {
                                            item.Effect = 69; // imagined number as for I = √(-1), complex z = a + bi
                                        }
                                        else
                                        {
                                            item.Effect = Convert.ToInt16(currentLine[2]);
                                        }
                                        break;
                                }
                                switch (item.Effect)
                                {
                                    case 150:
                                    case 151:
                                        if (Convert.ToInt32(currentLine[4]) == 1)
                                        {
                                            item.EffectValue = 30000;
                                        }
                                        else if (Convert.ToInt32(currentLine[4]) == 2)
                                        {
                                            item.EffectValue = 70000;
                                        }
                                        else if (Convert.ToInt32(currentLine[4]) == 3)
                                        {
                                            item.EffectValue = 180000;
                                        }
                                        else
                                        {
                                            item.EffectValue = Convert.ToInt32(currentLine[4]);
                                        }
                                        break;

                                    case 204:
                                        item.EffectValue = 10000;
                                        break;

                                    default:
                                        item.EffectValue = Convert.ToInt32(currentLine[4]);
                                        break;
                                }
                                item.WaitDelay = 5000;
                                break;

                            case ItemType.Magical:
                                if (item.VNum > 2059 && item.VNum < 2070)
                                {
                                    item.Effect = 10;
                                }
                                else
                                {
                                    item.Effect = Convert.ToInt16(currentLine[2]);
                                }
                                item.EffectValue = Convert.ToInt32(currentLine[4]);
                                break;

                            case ItemType.Specialist:

                                // item.isSpecialist = Convert.ToByte(currentLine[2]); item.Unknown = Convert.ToInt16(currentLine[3]);
                                item.ElementRate = Convert.ToInt16(currentLine[4]);
                                item.Speed = Convert.ToByte(currentLine[5]);
                                item.SpType = Convert.ToByte(currentLine[13]);

                                // item.Morph = Convert.ToInt16(currentLine[14]) + 1;
                                item.FireResistance = Convert.ToByte(currentLine[15]);
                                item.WaterResistance = Convert.ToByte(currentLine[16]);
                                item.LightResistance = Convert.ToByte(currentLine[17]);
                                item.DarkResistance = Convert.ToByte(currentLine[18]);

                                // item.PartnerClass = Convert.ToInt16(currentLine[19]);
                                item.LevelJobMinimum = Convert.ToByte(currentLine[20]);
                                item.ReputationMinimum = Convert.ToByte(currentLine[21]);

                                Dictionary<int, int> elementdic = new Dictionary<int, int> { { 0, 0 } };
                                if (item.FireResistance != 0)
                                {
                                    elementdic.Add(1, item.FireResistance);
                                }
                                if (item.WaterResistance != 0)
                                {
                                    elementdic.Add(2, item.WaterResistance);
                                }
                                if (item.LightResistance != 0)
                                {
                                    elementdic.Add(3, item.LightResistance);
                                }
                                if (item.DarkResistance != 0)
                                {
                                    elementdic.Add(4, item.DarkResistance);
                                }

                                item.Element = (byte)elementdic.OrderByDescending(s => s.Value).First().Key;
                                if (elementdic.Count > 1 && elementdic.OrderByDescending(s => s.Value).First().Value == elementdic.OrderByDescending(s => s.Value).ElementAt(1).Value)
                                {
                                    item.SecondaryElement = (byte)elementdic.OrderByDescending(s => s.Value).ElementAt(1).Key;
                                }

                                // needs to be hardcoded
                                if (item.VNum == 901)
                                {
                                    item.Element = 1;
                                }
                                else if (item.VNum == 903)
                                {
                                    item.Element = 2;
                                }
                                else if (item.VNum == 906)
                                {
                                    item.Element = 3;
                                }
                                else if (item.VNum == 909)
                                {
                                    item.Element = 3;
                                }
                                break;

                            case ItemType.Shell:

                                // item.ShellMinimumLevel = Convert.ToInt16(linesave[3]);
                                // item.ShellMaximumLevel = Convert.ToInt16(linesave[4]);
                                // item.ShellType = Convert.ToByte(linesave[5]); // 3 shells of each type
                                break;

                            case ItemType.Main:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                item.EffectValue = Convert.ToInt32(currentLine[4]);
                                break;

                            case ItemType.Upgrade:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                switch (item.VNum)
                                {
                                    // UpgradeItems (needed to be hardcoded)
                                    case 1218:
                                        item.EffectValue = 26;
                                        break;

                                    case 1363:
                                        item.EffectValue = 27;
                                        break;

                                    case 1364:
                                        item.EffectValue = 28;
                                        break;

                                    case 5107:
                                        item.EffectValue = 47;
                                        break;

                                    case 5207:
                                        item.EffectValue = 50;
                                        break;

                                    case 5369:
                                        item.EffectValue = 61;
                                        break;

                                    case 5519:
                                        item.EffectValue = 60;
                                        break;

                                    default:
                                        item.EffectValue = Convert.ToInt32(currentLine[4]);
                                        break;
                                }
                                break;

                            case ItemType.Production:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                item.EffectValue = Convert.ToInt32(currentLine[4]);
                                break;

                            case ItemType.Map:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                item.EffectValue = Convert.ToInt32(currentLine[4]);
                                break;

                            case ItemType.Potion:
                                item.Hp = Convert.ToInt16(currentLine[2]);
                                item.Mp = Convert.ToInt16(currentLine[4]);
                                break;

                            case ItemType.Snack:
                                item.Hp = Convert.ToInt16(currentLine[2]);
                                item.Mp = Convert.ToInt16(currentLine[4]);
                                break;

                            case ItemType.Teacher:
                                item.Effect = Convert.ToInt16(currentLine[2]);
                                item.EffectValue = Convert.ToInt32(currentLine[4]);

                                // item.PetLoyality = Convert.ToInt16(linesave[4]); item.PetFood = Convert.ToInt16(linesave[7]);
                                break;

                            case ItemType.Part:

                                // nothing to parse
                                break;

                            case ItemType.Sell:

                                // nothing to parse
                                break;

                            case ItemType.Quest2:

                                // nothing to parse
                                break;

                            case ItemType.Quest1:

                                // nothing to parse
                                break;

                            case ItemType.Ammo:

                                // nothing to parse
                                break;
                        }
                        if ((item.EquipmentSlot == EquipmentType.Boots || item.EquipmentSlot == EquipmentType.Gloves) && item.Type == 0)
                        {
                            item.FireResistance = Convert.ToByte(currentLine[7]);
                            item.WaterResistance = Convert.ToByte(currentLine[8]);
                            item.LightResistance = Convert.ToByte(currentLine[9]);
                            item.DarkResistance = Convert.ToByte(currentLine[11]);
                        }
                    }
                    else if (currentLine.Length > 1 && currentLine[1] == "BUFF")
                    {
                        // TODO: Implement buff parsing
                    }
                }

                DAOFactory.ItemDAO.Insert(items);
                Logger.Log.Info(String.Format(Language.Instance.GetMessageFromKey("ITEMS_PARSED"), itemCounter));
                npcIdStream.Close();
            }
        }
Esempio n. 12
0
 public SnackItem(ItemDTO item)
     : base(item)
 {
 }
Esempio n. 13
0
 public FoodItem(ItemDTO item)
     : base(item)
 {
 }