// Returns the strongest weapon in the inventory of a given type. public IItem GetStrongestWeapon(EquipableItem itemType) { IItem topPick = null; int topPickDamage = 0; foreach (KeyValuePair <int, int> itemPair in items) { IItem item = itemManager.GetItem(itemPair.Key); if (item.HasBehavior(ItemBehaviorType.EQUIPABLE)) { EquipableItemBehavior behavior = (EquipableItemBehavior)item.GetBehavior(ItemBehaviorType.EQUIPABLE); if (behavior.itemType == itemType) { if (behavior.item.Damage > topPickDamage) { topPick = item; } } } } return(topPick); }
// Duplicate an item. This is a hack to enable managing equipables as // separate items with individual state. // // WARNING: This is intended to be used by equipable items only. public IItem DuplicateItem() { IItem item = new Item(Id); item.Name = Name; item.Description = Description; item.Damage = Damage; item.Durability = Durability; item.BaseDurability = BaseDurability; if (behaviors.ContainsKey(ItemBehaviorType.EQUIPABLE)) { EquipableItemBehavior originalBehavior = (EquipableItemBehavior)behaviors[ItemBehaviorType.EQUIPABLE]; IItemBehavior duplicateBehavior = originalBehavior.DuplicateBehavior(); item.AddBehavior(duplicateBehavior); } return(item); }