public BoxItem(ItemDTO item) : base(item) { }
public UpgradeItem(ItemDTO item) : base(item) { }
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; }
public TeacherItem(ItemDTO item) : base(item) { }
public PotionItem(ItemDTO item) : base(item) { }
public Item(ItemDTO item) { InitializeItem(item); }
public WearableItem(ItemDTO item) : base(item) { }
public ProduceItem(ItemDTO item) : base(item) { }
public NoFunctionItem(ItemDTO item) : base(item) { }
public MagicalItem(ItemDTO item) : base(item) { }
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(); } }
public SnackItem(ItemDTO item) : base(item) { }
public FoodItem(ItemDTO item) : base(item) { }