Ejemplo n.º 1
0
    def parseResponse(self):
        # Check for errors.
        effectRemovedPattern = PatternManager.getOrCompilePattern(
            'effectRemoved')
        if effectRemovedPattern.search(self.responseText):
            return

        youDontHaveThatEffectPattern = PatternManager.getOrCompilePattern(
            'youDontHaveThatEffect')
        if youDontHaveThatEffectPattern.search(self.responseText):
            raise DontHaveEffectError(
                "Unable to remove effect. The user does not have that effect.")

        youDontHaveSGEEAPattern = PatternManager.getOrCompilePattern(
            'youDontHaveSGEEA')
        if youDontHaveSGEEAPattern.search(self.responseText):
            raise NotEnoughItemsError(
                "Unable to remove effect. You do not have a soft green echo eyedrop antidote."
            )

        Report.error("request",
                     "Unknown error occurred when trying to remove an effect")
        Report.error("request", self.responseText)
        raise RequestError(
            "Unknown error occurred when trying to remove an effect.")
Ejemplo n.º 2
0
    def parseResponse(self):
        notEnoughCloversPattern = PatternManager.getOrCompilePattern(
            'notEnoughClovers')
        noTrinketsPattern = PatternManager.getOrCompilePattern('noTrinkets')
        noHermitPermitPattern = PatternManager.getOrCompilePattern(
            'noHermitPermits')
        notHermitItemPattern = PatternManager.getOrCompilePattern(
            'notHermitItem')

        # Check for errors.
        if notEnoughCloversPattern.search(self.responseText):
            raise RequestError(
                "The Hermit doesn't have enough clovers for that")
        if noTrinketsPattern.search(self.responseText):
            raise NotEnoughItemsError(
                "You don't have enough worthless items for that")
        if noHermitPermitPattern.search(self.responseText):
            raise NotEnoughHermitPermitsError(
                "You don't have enough hermit permits for that")
        if notHermitItemPattern.search(self.responseText):
            raise NotSoldHereError("The Hermit doesn't have any of those")

        response = {}

        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) > 0:
            response["items"] = items

        self.responseData = response
Ejemplo n.º 3
0
    def parseResponse(self):
        cantPulverizePattern = PatternManager.getOrCompilePattern('cantPulverizeItem')
        if cantPulverizePattern.search(self.responseText) != None:
            item = ItemDatabase.getItemFromId(self.itemId, self.session)
            raise UnableToPulverizeItemError("'%s' is not an item that can be pulverized." % item["name"])

        notEnoughItemsPattern = PatternManager.getOrCompilePattern('notEnoughItems')
        if notEnoughItemsPattern.search(self.responseText) != None:
            item = ItemDatabase.getItemFromId(self.itemId, self.session)
            if self.quantity == 1:
                itemStr = item["name"]
            else:
                itemStr = item["plural"]
            raise NotEnoughItemsError("You do not have %s %s" % (self.quantity, itemStr))

        items = []

        singleItemPattern = PatternManager.getOrCompilePattern('acquireSingleItem')
        for match in singleItemPattern.finditer(self.responseText):
            descId = int(match.group(1))
            item = ItemDatabase.getItemFromDescId(descId, self.session)
            item["quantity"] = 1
            items.append(item)

        multiItemPattern = PatternManager.getOrCompilePattern('acquireMultipleItems')
        for match in multiItemPattern.finditer(self.responseText):
            descId = int(match.group(1))
            quantity = int(match.group(2).replace(',', ''))
            item = ItemDatabase.getItemFromDescId(descId, self.session)
            item["quantity"] = quantity
            items.append(item)

        self.responseData["results"] = items
Ejemplo n.º 4
0
    def parseResponse(self):
        # Check for errors.
        dontHaveMeatpastePattern = PatternManager.getOrCompilePattern('noMeatpaste')
        itemsDontMeatpastePattern = PatternManager.getOrCompilePattern('itemsDontMeatpaste')
        dontHaveItemsPattern = PatternManager.getOrCompilePattern('dontHaveItemsMeatpaste')
        if dontHaveMeatpastePattern.search(self.responseText):
            raise NotEnoughItemsError("Unable to combine items. You don't have any meatpaste.")
        elif itemsDontMeatpastePattern.search(self.responseText):
            raise InvalidRecipeError("Unable to combine items. The submitted ingredients do not meatpaste together.")
        elif dontHaveItemsPattern.search(self.responseText):
            raise NotEnoughItemsError("Unable to combine items. You don't have all of the items you are trying to meatpaste.")

        # Find the items attached to the message.
        items = ParseResponseUtils.parseItemsReceived(self.responseText, self.session)
        if len(items) > 0:
            self.responseData["items"] = item
        else:
            raise RequestError("Unknown error.")
Ejemplo n.º 5
0
    def parseResponse(self):
        "Checks for errors due to equipping items you don't have, or equipping items that aren't equippable."

        noItemPattern = PatternManager.getOrCompilePattern("notEnoughItems")
        match = noItemPattern.search(self.responseText)
        if match:
            raise NotEnoughItemsError("That item is not in your inventory.")

        notEquipmentPattern = PatternManager.getOrCompilePattern("notEquip")
        match = notEquipmentPattern.search(self.responseText)
        if match:
            raise InvalidActionError("That is not an equippable item.")
Ejemplo n.º 6
0
    def parseResponse(self):
        itemsDontMakeCocktailPattern = PatternManager.getOrCompilePattern(
            'itemsDontMakeCocktail')
        dontHaveSkillPattern = PatternManager.getOrCompilePattern(
            'dontHaveSkillToMixCocktail')
        dontHaveItemsPattern = PatternManager.getOrCompilePattern(
            'dontHaveItemsForThatCocktail')
        dontHaveAdventuresPattern = PatternManager.getOrCompilePattern(
            'dontHaveAdventuresToMixCocktail')

        # Check for errors.
        if itemsDontMakeCocktailPattern.search(self.responseText):
            raise InvalidRecipeError(
                "Unable to make cocktail. The submitted ingredients do not mix together."
            )
        elif dontHaveSkillPattern.search(self.responseText):
            raise SkillMissingError(
                "Unable to make cocktail. We are not skilled enough.")
        elif dontHaveItemsPattern.search(self.responseText):
            raise NotEnoughItemsError(
                "Unable to make cocktail. You don't have all of the items you are trying to mix."
            )
        elif dontHaveAdventuresPattern.search(self.responseText):
            raise NotEnoughAdventuresLeftError(
                "Unable to mix drink(s). We don't have enough adventures.")

        # Find the items attached to the message.
        singleItemPattern = PatternManager.getOrCompilePattern(
            'acquireSingleItem')
        match = singleItemPattern.search(self.responseText)
        if match:
            descId = int(match.group(1))
            item = ItemDatabase.getItemFromDescId(descId, self.session)
            item["quantity"] = 1
        else:
            multiItemPattern = PatternManager.getOrCompilePattern(
                'acquireMultipleItems')
            match = multiItemPattern.search(self.responseText)
            if match:
                descId = int(match.group(1))
                item = ItemDatabase.getItemFromDescId(descId, self.session)
                quantity = int(match.group(2).replace(',', ''))
                item["quantity"] = quantity
            else:
                raise RequestError("Unknown error.")

        self.responseData["booze"] = item
Ejemplo n.º 7
0
    def parseResponse(self):
        # Check for errors
        tooDrunkPattern = PatternManager.getOrCompilePattern('tooDrunk')
        if tooDrunkPattern.search(self.responseText):
            raise TooDrunkError("You are too drunk to drink more booze")
        notBoozePattern = PatternManager.getOrCompilePattern('notBooze')
        if notBoozePattern.search(self.responseText):
            raise InvalidActionError("That item is not booze")
        boozeMissingPattern = PatternManager.getOrCompilePattern(
            'notEnoughItems')
        if boozeMissingPattern.search(self.responseText):
            raise NotEnoughItemsError("Item not in inventory")

        # Check the results
        results = {}

        results["drunkenness"] = ParseResponseUtils.parseDrunkGained(
            self.responseText)
        results["adventures"] = ParseResponseUtils.parseAdventuresGained(
            self.responseText)

        substats = ParseResponseUtils.parseSubstatsGainedLost(
            self.responseText)
        if len(substats) > 0:
            results["substats"] = substats
        stats = ParseResponseUtils.parseStatsGainedLost(self.responseText)
        if len(stats) > 0:
            results["stats"] = stats
        level = ParseResponseUtils.parseLevelsGained(self.responseText)
        if level != 0:
            results["level"] = level
        hp = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hp != 0:
            results["hp"] = hp
        mp = ParseResponseUtils.parseMPGainedLost(self.responseText)
        if mp != 0:
            results["mp"] = mp
        effects = ParseResponseUtils.parseEffectsGained(self.responseText)
        if len(effects) > 0:
            results["effects"] = effects

        self.responseData = results
Ejemplo n.º 8
0
    def parseResponse(self):
        # Check for errors
        tooFullPattern = PatternManager.getOrCompilePattern('tooFull')
        if tooFullPattern.search(self.responseText):
            raise TooFullError("You are too full to eat that.")
        notFoodPattern = PatternManager.getOrCompilePattern('notFood')
        if notFoodPattern.search(self.responseText):
            raise InvalidActionError("That item is not food")
        foodMissingPattern = PatternManager.getOrCompilePattern(
            'notEnoughItems')
        if foodMissingPattern.search(self.responseText):
            raise NotEnoughItemsError("Item not in inventory")

        # Check the results
        results = {}

        results["adventures"] = ParseResponseUtils.parseAdventuresGained(
            self.responseText)

        substats = ParseResponseUtils.parseSubstatsGainedLost(
            self.responseText)
        if len(substats) > 0:
            results["substats"] = substats
        stats = ParseResponseUtils.parseStatsGainedLost(self.responseText)
        if len(stats) > 0:
            results["stats"] = stats
        level = ParseResponseUtils.parseLevelsGained(self.responseText)
        if level != 0:
            results["level"] = level
        hp = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hp != 0:
            results["hp"] = hp
        mp = ParseResponseUtils.parseMPGainedLost(self.responseText)
        if mp != 0:
            results["mp"] = mp
        effects = ParseResponseUtils.parseEffectsGained(self.responseText)
        if len(effects) > 0:
            results["effects"] = effects

        self.responseData = results
Ejemplo n.º 9
0
    def parseResponse(self):
        hardcoreRoninPattern = PatternManager.getOrCompilePattern(
            'userInHardcoreRonin')
        ignoringPattern = PatternManager.getOrCompilePattern('userIgnoringUs')
        notEnoughItemsPattern = PatternManager.getOrCompilePattern(
            'notEnoughItemsToSend')
        sentMessagePattern = PatternManager.getOrCompilePattern('messageSent')

        if hardcoreRoninPattern.search(self.responseText):
            raise UserInHardcoreRoninError(
                "Unable to send items or meat. User is in hardcore or ronin.")
        elif ignoringPattern.search(self.responseText):
            raise UserIsIgnoringError(
                "Unable to send message. User is ignoring us.")
        elif notEnoughItemsPattern.search(self.responseText):
            raise NotEnoughItemsError(
                "You don't have enough of one of the items you're trying to send."
            )
        elif sentMessagePattern.search(self.responseText) == None:
            Report.alert(
                "system",
                "Received unknown response when attempting to send a message.")
            Report.alert("system", self.responseText)
            raise RequestError("Unknown error")