示例#1
0
 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
 }
示例#2
0
    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);
        }
    }
示例#3
0
 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));
    }
}