public Item(int id) { Id = id; Level = ItemMetadataStorage.GetLevel(id); Uid = GuidGenerator.Long(); InventoryTab = ItemMetadataStorage.GetTab(id); ItemSlot = ItemMetadataStorage.GetSlot(id); GemSlot = ItemMetadataStorage.GetGem(id); Rarity = ItemMetadataStorage.GetRarity(id); StackLimit = ItemMetadataStorage.GetStackLimit(id); EnableBreak = ItemMetadataStorage.GetEnableBreak(id); IsTwoHand = ItemMetadataStorage.GetIsTwoHand(id); IsDress = ItemMetadataStorage.GetIsDress(id); IsTemplate = ItemMetadataStorage.GetIsTemplate(id); IsCustomScore = ItemMetadataStorage.GetIsCustomScore(id); Gender = ItemMetadataStorage.GetGender(id); RemainingGlamorForges = ItemExtractionMetadataStorage.GetExtractionCount(id); PlayCount = ItemMetadataStorage.GetPlayCount(id); FileName = ItemMetadataStorage.GetFileName(id); SkillId = ItemMetadataStorage.GetSkillID(id); RecommendJobs = ItemMetadataStorage.GetRecommendJobs(id); Content = ItemMetadataStorage.GetContent(id); Function = ItemMetadataStorage.GetFunction(id); Tag = ItemMetadataStorage.GetTag(id); ShopID = ItemMetadataStorage.GetShopID(id); Slot = -1; Amount = 1; Score = new MusicScore(); Stats = new ItemStats(id, Rarity, Level); Color = ItemMetadataStorage.GetEquipColor(id); CanRepackage = true; // If false, item becomes untradable }
public Item(int id, bool saveToDatabase = true) { Id = id; SetMetadataValues(); Name = ItemMetadataStorage.GetName(id); Level = ItemMetadataStorage.GetLevel(id); ItemSlot = ItemMetadataStorage.GetSlot(id); IsTemplate = ItemMetadataStorage.GetIsTemplate(id); if (GemSlot == GemSlot.TRANS) { TransparencyBadgeBools = new byte[10]; } Rarity = ItemMetadataStorage.GetRarity(id); PlayCount = ItemMetadataStorage.GetPlayCount(id); Color = ItemMetadataStorage.GetEquipColor(id); CreationTime = TimeInfo.Now(); RemainingGlamorForges = ItemExtractionMetadataStorage.GetExtractionCount(id); Slot = -1; Amount = 1; Score = new(); Stats = new(id, Rarity, ItemSlot, Level); if (saveToDatabase) { Uid = DatabaseManager.Items.Insert(this); } }
public Item(int id) { Id = id; SetMetadataValues(id); Level = ItemMetadataStorage.GetLevel(id); ItemSlot = ItemMetadataStorage.GetSlot(id); Rarity = ItemMetadataStorage.GetRarity(id); PlayCount = ItemMetadataStorage.GetPlayCount(id); Color = ItemMetadataStorage.GetEquipColor(id); CreationTime = DateTimeOffset.Now.ToUnixTimeSeconds(); RemainingGlamorForges = ItemExtractionMetadataStorage.GetExtractionCount(id); Slot = -1; Amount = 1; Score = new MusicScore(); Stats = new ItemStats(id, Rarity, Level, IsTwoHand); CanRepackage = true; // If false, item becomes untradable Uid = DatabaseManager.AddItem(this); }
public override void Handle(GameSession session, PacketReader packet) { long anvilItemUid = packet.ReadLong(); long sourceItemUid = packet.ReadLong(); if (!session.Player.Inventory.Items.ContainsKey(sourceItemUid) || !session.Player.Inventory.Items.ContainsKey(anvilItemUid)) { return; } Item sourceItem = session.Player.Inventory.Items[sourceItemUid]; ItemExtractionMetadata metadata = ItemExtractionMetadataStorage.GetMetadata(sourceItem.Id); if (metadata == null) { return; } int anvilAmount = 0; List <KeyValuePair <long, Item> > anvils = session.Player.Inventory.Items.Where(x => x.Value.Tag == "ItemExtraction").ToList(); anvils.ForEach(x => anvilAmount += x.Value.Amount); if (anvilAmount < metadata.ScrollCount) { session.Send(ItemExtractionPacket.InsufficientAnvils()); return; } Item resultItem = new(metadata.ResultItemId) { Color = sourceItem.Color }; session.Player.Inventory.ConsumeItem(session, anvilItemUid, metadata.ScrollCount); session.Player.Inventory.AddItem(session, resultItem, true); sourceItem.RemainingGlamorForges -= 1; session.Send(ItemExtractionPacket.Extract(sourceItem)); } }
public override void Handle(GameSession session, PacketReader packet) { long anvilItemUid = packet.ReadLong(); long sourceItemUid = packet.ReadLong(); if (!session.Player.Inventory.HasItem(sourceItemUid) || !session.Player.Inventory.HasItem(anvilItemUid)) { return; } Item sourceItem = session.Player.Inventory.GetByUid(sourceItemUid); ItemExtractionMetadata metadata = ItemExtractionMetadataStorage.GetMetadata(sourceItem.Id); if (metadata == null) { return; } IReadOnlyCollection <Item> anvils = session.Player.Inventory.GetAllByTag("ItemExtraction"); int anvilAmount = anvils.Sum(x => x.Amount); if (anvilAmount < metadata.ScrollCount) { session.Send(ItemExtractionPacket.InsufficientAnvils()); return; } Item resultItem = new(metadata.ResultItemId) { Color = sourceItem.Color }; session.Player.Inventory.ConsumeItem(session, anvilItemUid, metadata.ScrollCount); session.Player.Inventory.AddItem(session, resultItem, true); sourceItem.RemainingGlamorForges -= 1; session.Send(ItemExtractionPacket.Extract(sourceItem)); } }