Exemple #1
0
        public static GW_ItemSlotBase CreateItem(int nItemID, bool bRandStats = true)
        {
            if (nItemID <= 0)
            {
                return(null);
            }

            // TODO test the below
            if (ItemConstants.GetInventoryType(nItemID) != InventoryType.Equip)
            {
                GW_ItemSlotBase item;
                if (ItemConstants.IsPet(nItemID))
                {
                    item = new GW_ItemSlotPet(nItemID);
                    ((GW_ItemSlotPet)item).nRemainLife = 7776000;
                }
                else
                {
                    item = new GW_ItemSlotBundle(nItemID);
                }

                if (item.Template is null)
                {
                    throw new ArgumentOutOfRangeException(nameof(nItemID), "Doesn't exist in data files.");
                }

                if (ItemConstants.IsRechargeableItem(item.nItemID))
                {
                    item.nNumber = (short)item.Template.SlotMax;
                }
                else
                {
                    item.nNumber = 1;
                }

                item.tDateExpire = DateTime.MaxValue;

                return(item);
            }

            if (bRandStats)
            {
                return(CreateVariableStatEquip(nItemID));
            }

            return(CreateNormalStatEquip(nItemID));
        }
Exemple #2
0
        public CPet(int dwParentId, short nItemPOS, GW_ItemSlotPet gwPetItem)
        {
            this.dwParentId = dwParentId;
            liPetLockerSN   = gwPetItem.liCashItemSN;
            liSN            = gwPetItem.liSN;
            PetItemSlot     = nItemPOS;

            tLastUpdated      = DateTime.Now;
            tRemainHungriness = DateTime.Now;

            dwTemplateID = gwPetItem.nItemID;

            if (gwPetItem.sPetName.Length == 0)
            {
                gwPetItem.sPetName = MasterManager.StringData[StringDataType.Item][dwTemplateID].Name;
            }
        }
        public bool ActivatePet(GW_ItemSlotPet gwPetItem, short nItemPOS, byte nIdx)
        {
            if (gwPetItem is null)
            {
                gwPetItem = Parent.InventoryCash.Get(nItemPOS) as GW_ItemSlotPet;
            }

            if (gwPetItem is null)
            {
                return(false);                               // retard passing invalid slot
            }
            CPet cPet = new CPet(dwParentID, nItemPOS, gwPetItem);

            cPet.Position.ResetPosTo(Parent.Position);

            cPet.nIdx  = nIdx;
            Pets[nIdx] = cPet;
            Parent.Field.Broadcast(cPet.MakeEnterFieldPacket());
            Parent.Modify.UpdatePetLocker();
            return(true);
        }
Exemple #4
0
 public void UpdatePetItem(GW_ItemSlotPet pItemPet, short nPOS)
 {
     aChangeLog.Add(new InventoryOperationRemove(InventoryType.Cash, nPOS));
     aChangeLog.Add(new InventoryOperationAdd(InventoryType.Cash, nPOS, pItemPet));
 }