def addToInventory(self, item): """ Adds an item to inventory. @param item: The item to be added to inventory. @return: True if execution suceeds, False otherwise. """ inventory = self._inventory #If user input is not an item if not isinstance(item, Item): errorMsg = "Not an item." raise AssertionError(errorMsg) #Check inventory weight restriction itemWeight = item.getWeight() inventoryWeight = inventory.getWeight() if itemWeight + inventoryWeight > self._weightLimit: print "You are overburdened." return False #Successful execution inventory.addItem(item) sortItems(inventory) print "Added %s to inventory." % item.getName() return True
def __init__(self, name, description, greetings, region, numItems, quality): """ Initializes shop. @param name: The name of the shop. @param description: The description of the shop. @param greetings: The greetings the user gets as he enters a shop. @param region: The region the shop is in. @param numItems: The number of items that can be bought at the shop. @param quality: The quality of the items that may be bought at shop. Ranges from 1-20. """ Building.__init__(self, name, description, greetings) #Create items attributes and generate items objects self._region = region self._numItems = numItems self._quality = quality self._items = factories.shop_factory.getItems(region, numItems, quality) #Sort items sortItems(self._items)
def getInventory(self): """ Returns the player's inventory. @return: Player's inventory. """ sortItems(self._inventory) return self._inventory
def getEquipped(self): """ Returns the player's currently equipped equipment. @return: Player's current gear. """ sortItems(self._equipped) return self._equipped
def equip(self, item): """ Allows a character to equip an item. Preconditions: -Item in inventory. -Item is instance of Armor, Weapon, or Charm. -Item is not currently in self._equipped. @param item: The item to be equipped. """ #Check to see that preconditions are met if item not in self._inventory: statement = "%s not currently in inventory." % item.getName() return statement if not (isinstance(item, Armor) or isinstance(item, Weapon) or isinstance(item, Charm)): statement = "Item must be a weapon, armor, or charm." return statement if item in self._equipped: statement = "%s already equipped." % item.getName() return statement #Unequip currently equipped armor/weapon if necessary for currentItem in self._equipped: if isinstance(item, Weapon) and isinstance(currentItem, Weapon): self.unequip(currentItem) elif isinstance(item, Armor) and isinstance(currentItem, Armor): self.unequip(currentItem) #Equip new item self._equipped.addItem(item) if isinstance(item, Weapon): self._weaponAttack = item.getAttack() self._totalAttack = (self._attack + self._weaponAttack + self._charmAttack) elif isinstance(item, Armor): self._armorDefense = item.getDefense() self._totalDefense = self._armorDefense + self._charmDefense elif isinstance(item, Charm): self._charmAttack += item.getAttack() self._charmDefense += item.getDefense() self._charmHp += item.getHp() self._totalAttack = (self._attack + self._weaponAttack + self._charmAttack) self._totalDefense = self._armorDefense + self._charmDefense self._totalMaxHp = self._maxHp + self._charmHp statement = "%s equipped %s." %(self._name, item.getName()) #Sort self._equipped sortItems(self._equipped) return statement
def removeFromInventory(self, item): """ Removes an item from inventory. If item is currently equipped, unequips item. @param item: The item to be removed. """ #Item must be in inventory if not item in self._inventory: return #Unequip if necessary if item in self._equipped: self.unequip(item) self._inventory.removeItem(item) sortItems(self._inventory)
def unequip(self, item): """ Allows a character to unequip a currently equipped item. @param item: The item to be unequipped. """ #Precondition - that item is currently equipped. if item not in self._equipped: statement = "%s not in equipped items." % item.getName() return statement #Unequip item and update player stats self._equipped.removeItem(item) if isinstance(item, Weapon): self._weaponAttack = 0 self._totalAttack = (self._attack + self._weaponAttack + self._charmAttack) if isinstance(item, Armor): self._armorDefense = 0 self._totalDefense = self._armorDefense + self._charmDefense if isinstance(item, Charm): charmAttack = item.getAttack() charmDefense = item.getDefense() charmHp = item.getHp() self._charmAttack -= charmAttack self._charmDefense -= charmDefense self._charmHp -= charmHp self._totalAttack = (self._attack + self._weaponAttack + self._charmAttack) self._totalDefense = self._armorDefense + self._charmDefense self._totalMaxHp = self._maxHp + self._charmHp #Update player Hp for charms self._updateHpForCharms() #Sort self._equipped sortItems(self._equipped) statement = "%s unequipped %s." % (self._name, item.getName()) return statement