Beispiel #1
0
        public static void OnUse(GS.Players.Player player, Item sellItem)
        {
            int sellValue = sellItem.ItemDefinition.BaseGoldValue; // TODO: calculate correct sell value for magic items

            player.Inventory.AddGoldAmount(sellValue);

            // TODO: instead of destroying item, it should be moved to merchants inventory for rebuy.
            player.Inventory.DestroyInventoryItem(sellItem);
        }
Beispiel #2
0
        public override void OnRequestUse(GS.Players.Player player, Item target, int actionId, Net.GS.Message.Fields.WorldPlace worldPlace)
        {
            if (player.Attributes[GameAttribute.Hitpoints_Cur] == player.Attributes[GameAttribute.Hitpoints_Max_Total])
            {
                return; // TODO Error msg? /fasbat
            }
            player.Attributes[GameAttribute.Hitpoints_Cur] = player.Attributes[GameAttribute.Hitpoints_Cur] + this.Attributes[GameAttribute.Hitpoints_Granted];

            player.Attributes.BroadcastChangedIfRevealed();

            if (this.Attributes[GameAttribute.ItemStackQuantityLo] <= 1)
            {
                player.Inventory.DestroyInventoryItem(this); // No more potions!
            }
            else
            {
                this.Attributes[GameAttribute.ItemStackQuantityLo]--; // Just remove one
                this.Attributes.SendChangedMessage(player.InGameClient);
            }
        }
Beispiel #3
0
        public static void OnUse(GS.Players.Player player, Item salvageItem)
        {
            if (salvageItem == null)
            {
                return;
            }
            player.Inventory.DestroyInventoryItem(salvageItem);

            List <Item> craftingMaterials = TreasureClassManager.CreateLoot(player, salvageItem.ItemDefinition.SNOComponentTreasureClass);

            if (salvageItem.Attributes[GameAttribute.Item_Quality_Level] >= (int)ItemTable.ItemQuality.Magic1)
            {
                craftingMaterials.AddRange(TreasureClassManager.CreateLoot(player, salvageItem.ItemDefinition.SNOComponentTreasureClassMagic));
            }
            if (salvageItem.Attributes[GameAttribute.Item_Quality_Level] >= (int)ItemTable.ItemQuality.Rare4)
            {
                craftingMaterials.AddRange(TreasureClassManager.CreateLoot(player, salvageItem.ItemDefinition.SNOComponentTreasureClassRare));
            }

            List <int> craftigItemsGbids = new List <int>();

            foreach (Item crafingItem in craftingMaterials)
            {
                craftigItemsGbids.Add(crafingItem.GBHandle.GBID);
                // reveal new item to player
                player.Inventory.PickUp(crafingItem);
            }

            // TODO: This Message doesn't work. I think i should produce an entry in the chat window like "Salvaging Gloves gave you Common scrap!" - angerwin
            //SalvageResultsMessage message = new SalvageResultsMessage
            //{
            //    gbidNewItems = craftigItemsGbids.ToArray(),
            //    gbidOriginalItem = salvageItem.GBHandle.GBID,
            //    Field1 = 0, // Unkown
            //    Field2 = 0, // Unkown

            //};
            //player.InGameClient.SendMessage(message);
        }