def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ # Validate sourceItem = adv.get_item_from_list(p.equipped, self.source) targetItem = adv.get_item_from_list(p.area.items, self.target) if targetItem is None: targetItem = adv.get_item_from_list(p.inventory, self.source) if targetItem is None: targetItem = adv.get_item_from_list(p.equipped, self.source) # Perform response = [] if targetItem is None or sourceItem is None: response.append((self.source, "Cannot use " + self.source + " on " + self.target)) else: if not targetItem.visible: response.append((self.source, "I do not see " + self.target)) else: response.append((self.source, self.participle + " " + self.source)) for action in sourceItem.useActions: response.extend(action.perform(proposedTargetItem=targetItem)) return response
def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ response = [(self.source, self.target + " not storable")] targetItem = adv.get_item_from_list(p.equipped, self.target) if targetItem is not None: response = p.store(targetItem) response.append((self.source, self.participle + " " + self.target)) return response
def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ response = [(self.source, "Not able to equip " + self.target + ".")] targetItem = adv.get_item_from_list(p.inventory, self.target) if targetItem is not None: p.equip(targetItem.name) response = [(self.source, self.participle + " " + self.target)] return response
def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ # Validate targetItem = adv.get_item_from_list(p.area.items, self.target) # Perform if targetItem is not None and targetItem.description.upper() == self.target.upper() and targetItem.visible: response = p.equip(targetItem) else: response = [(self.source, "Unable to take " + self.target)] return response
def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ response = [] targetItem = adv.get_item_from_list(p.equipped, self.target) if targetItem is not None: response.extend(x.perform(proposedTargetItem=targetItem) for x in p.area.props(adv.AREA_PRE_DROP_ACTIONS)) response.extend( (x.perform(proposedTargetItem=targetItem) for x in targetItem.props(adv.ITEM_PRE_DROP_ACTIONS))) response.extend(action.Drop(targetItem).perform(proposedTargetItem=targetItem, player=p)) response.extend( (x.perform(proposedTargetItem=targetItem) for x in targetItem.props(adv.ITEM_PRE_DROP_ACTIONS))) response.extend(x.perform(proposedTargetItem=targetItem) for x in p.area.props(adv.AREA_PRE_DROP_ACTIONS)) return response
def perform(self, **kwargs): """ Perform the toggle of the Lock property which must be not open :param kwargs: PROPOSED_TARGET_ITEM - The item on which the action is attempted CURRENT_AREA - The place where the item will be dropped :return: A list of responses """ player = kwargs[adv.PLAYER] proposedTargetItem = kwargs[adv.PROPOSED_TARGET_ITEM] response = [] if not self._is_complete(): if proposedTargetItem is not None and self.targetItem == proposedTargetItem \ and player is not None and adv.get_item_from_list(player.equipped, proposedTargetItem) is not None: player.equipped.remove(proposedTargetItem) player.area.items.append(proposedTargetItem) response.append((self.source, proposedTargetItem.description + " has been dropped in the current room.")) self._complete() return response
def execute(self, p, a): """ :param p: Player object :param a: Adventure object :return: A list of responses """ response = [] targetItem = adv.get_item_from_list(p.area.items, self.target) if targetItem is not None and targetItem.can(adv.ITEM_OPEN) and not targetItem.check(adv.ITEM_OPEN): if targetItem.can(adv.ITEM_LOCK): if not targetItem.check(adv.ITEM_LOCK): targetItem.props[adv.ITEM_OPEN] = True response.append((self.source, self.target + " is now open")) else: response.append((self.source, self.target + " is locked and cannot be opened")) else: targetItem.props[adv.ITEM_OPEN] = True response.append((self.source, self.target + " is now open")) else: response.append((self.source, "Cannot open " + self.target)) return response