Exemple #1
0
    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
Exemple #2
0
    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)
Exemple #3
0
    def getInventory(self):
        """
        Returns the player's inventory.

        @return:    Player's inventory.
        """
        sortItems(self._inventory)
        
        return self._inventory
Exemple #4
0
    def getEquipped(self):
        """
        Returns the player's currently equipped equipment.

        @return:    Player's current gear.
        """
        sortItems(self._equipped)
        
        return self._equipped
Exemple #5
0
    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
Exemple #6
0
    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)
Exemple #7
0
    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