Example #1
0
 public Item(DroppedItem item, ZoneCharacter pNewOwner, sbyte pSlot)
 {
     DatabaseItem dbi = new DatabaseItem();
     dbi.Amount = item.Amount;
     dbi.Character = pNewOwner.character;
     dbi.ObjectID = item.ItemID;
     dbi.Slot = pSlot;
     Program.Entity.AddToDatabaseItems(dbi);
     Program.Entity.SaveChanges();
     _item = dbi;
     ItemID = item.ItemID;
     pNewOwner.InventoryItems.Add(pSlot, this);
 }
Example #2
0
 /// <summary>
 /// Deprecated Method for adding a new object to the DatabaseItems EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToDatabaseItems(DatabaseItem databaseItem)
 {
     base.AddObject("DatabaseItems", databaseItem);
 }
Example #3
0
 /// <summary>
 /// Create a new DatabaseItem object.
 /// </summary>
 /// <param name="id">Initial value of the ID property.</param>
 /// <param name="owner">Initial value of the Owner property.</param>
 /// <param name="objectID">Initial value of the ObjectID property.</param>
 /// <param name="slot">Initial value of the Slot property.</param>
 /// <param name="amount">Initial value of the Amount property.</param>
 public static DatabaseItem CreateDatabaseItem(global::System.Int32 id, global::System.Int32 owner, global::System.Int32 objectID, global::System.Int16 slot, global::System.Int16 amount)
 {
     DatabaseItem databaseItem = new DatabaseItem();
     databaseItem.ID = id;
     databaseItem.Owner = owner;
     databaseItem.ObjectID = objectID;
     databaseItem.Slot = slot;
     databaseItem.Amount = amount;
     return databaseItem;
 }
Example #4
0
 public Item(DatabaseItem item)
 {
     _item = item;
     ItemID = (ushort)item.ObjectID;
 }
Example #5
0
 public InventoryStatus GiveItem(ushort id, byte amount = 1)
 {
     ItemInfo info;
     if (DataProvider.Instance.ItemsByID.TryGetValue(id, out info))
     {
         if (info.Slot == FiestaLib.ItemSlot.Normal)
         {
             foreach (var i in InventoryItems.Values)
             {
                 if (i.ItemID == id && i.Amount < i.Info.MaxLot)
                 {
                     // We found the same item and it can stack more!
                     byte left = (byte)(i.Info.MaxLot - i.Amount);
                     if (left > amount)
                     {
                         i.Amount += left;
                         amount -= left;
                     }
                     else
                     {
                         i.Amount += amount;
                         amount = 0;
                     }
                     Handler12.ModifyInventorySlot(this, 0x24, (byte)i.Slot, (byte)i.Slot, i);
                     if (amount == 0)
                     {
                         break;
                     }
                 }
             }
             // If we have still some stuff left, go ahead and create new stacks!
             if (amount > 0)
             {
                 while (amount > 0)
                 {
                     sbyte invslot;
                     if (GetFreeInventorySlot(out invslot))
                     {
                         DatabaseItem item = new DatabaseItem();
                         item.Amount = amount;
                         item.Character = character;
                         item.ObjectID = info.ItemID;
                         item.Slot = invslot;
                         Program.Entity.AddToDatabaseItems(item);
                         Item nitem = new Item(item);
                         InventoryItems.Add(invslot, nitem);
                         Handler12.ModifyInventorySlot(this, 0x24, (byte)invslot, (byte)invslot, nitem);
                         amount -= info.MaxLot;
                     }
                     else return InventoryStatus.FULL;
                 }
             }
             Save();
             return InventoryStatus.ADDED;
         }
         else
         {
             sbyte invslot;
             if (GetFreeInventorySlot(out invslot))
             {
                 DatabaseEquip equip = new DatabaseEquip();
                 equip.Character = character;
                 equip.EquipID = info.ItemID;
                 equip.Slot = invslot;
                 Program.Entity.AddToDatabaseEquips(equip);
                 Equip nequip = new Equip(equip);
                 InventoryItems.Add(invslot, nequip);
                 Save();
                 Handler12.ModifyInventorySlot(this, 0x24, (byte)invslot, (byte)invslot, nequip);
                 return InventoryStatus.ADDED;
             }
             else return InventoryStatus.FULL;
         }
     }
     else return InventoryStatus.NOT_FOUND;
 }