Example #1
0
    def parseResponse(self):
        if len(self.responseText) == 0:
            raise Error.Error("You cannot use the Mind Control Device yet.",
                              Error.INVALID_LOCATION)

        noAdventuresPattern = PatternManager.getOrCompilePattern(
            'noAdvInstitue')
        invalidTurnsPattern = PatternManager.getOrCompilePattern(
            'invalidAdvInstitute')
        if noAdventuresPattern.search(self.responseText):
            raise Error.Error(
                "You don't have enough adventures to study at the institute.",
                Error.NOT_ENOUGH_ADVENTURES)
        if invalidTurnsPattern.search(self.responseText):
            raise Error.Error(
                "That is an invalid number of turns for studying.",
                Error.REQUEST_GENERIC)

        self.responseData[
            "substats"] = ParseResponseUtils.parseSubstatsGainedLost(
                self.responseText, checkMuscle=False, checkMoxie=False)
        self.responseData["stats"] = ParseResponseUtils.parseStatsGainedLost(
            self.responseText, checkMuscle=False, checkMoxie=False)
        self.responseData["level"] = ParseResponseUtils.parseLevelsGained(
            self.responseText)
Example #2
0
 def parseResponse(self):
     self.responseData[
         "substats"] = ParseResponseUtils.parseSubstatsGainedLost(
             self.responseText, checkMuscle=False, checkMysticality=False)
     self.responseData["stats"] = ParseResponseUtils.parseStatsGainedLost(
         self.responseText, checkMuscle=False, checkMysticality=False)
     self.responseData["level"] = ParseResponseUtils.parseLevelsGained(
         self.responseText)
Example #3
0
    def parseResponse(self):
        response = {}
        effectResponse = ParseResponseUtils.parseEffectsGained(
            self.responseText)
        if len(effectResponse) > 0:
            response["effects"] = effectResponse
        hpResponse = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hpResponse != 0:
            response["hp"] = hpResponse

        self.responseData = response
Example #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):
            e = Error.Error(
                "Unable to combine items. You don't have any meatpaste.",
                Error.ITEM_NOT_FOUND)
            e.itemId = 25
            raise e
        elif itemsDontMeatpastePattern.search(self.responseText):
            raise Error.Error(
                "Unable to combine items. The submitted ingredients do not meatpaste together.",
                Error.RECIPE_NOT_FOUND)
        elif dontHaveItemsPattern.search(self.responseText):
            raise Error.Error(
                "Unable to combine items. You don't have all of the items you are trying to meatpaste.",
                Error.ITEM_NOT_FOUND)

        # Find the items attached to the message.
        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) > 0:
            self.responseData["items"] = items
        else:
            raise Error.Error(
                "Unknown error meatpasting items: %s" % self.responseText,
                Error.REQUEST_FATAL)
Example #5
0
    def parseResponse(self):
        notEnoughMeatPattern = PatternManager.getOrCompilePattern(
            'noMeatForStore')
        cannotGoPattern = PatternManager.getOrCompilePattern(
            'userShouldNotBeHere')
        notSoldPattern = PatternManager.getOrCompilePattern('notSoldHere')

        if cannotGoPattern.search(self.responseText):
            raise Error.Error("You cannot reach that cafe.",
                              Error.INVALID_LOCATION)
        if notSoldPattern.search(self.responseText):
            raise Error.Error("This cafe doesn't carry that item.",
                              Error.ITEM_NOT_FOUND)
        if notEnoughMeatPattern.search(self.responseText):
            raise Error.Error(
                "You do not have enough meat to purchase the item(s).",
                Error.NOT_ENOUGH_MEAT)

        response = {}

        advResponse = ParseResponseUtils.parseAdventuresGained(
            self.responseText)
        if advResponse > 0:
            response["adventures"] = advResponse

        drunkResponse = ParseResponseUtils.parseDrunkGained(self.responseText)
        if drunkResponse > 0:
            response["drunkeness"] = drunkResponse

        subResponse = ParseResponseUtils.parseSubstatsGainedLost(
            self.responseText)
        if len(subResponse) > 0:
            response["substats"] = subResponse

        statResponse = ParseResponseUtils.parseStatsGainedLost(
            self.responseText)
        if len(statResponse) > 0:
            response["statPoints"] = statResponse

        levelResponse = ParseResponseUtils.parseLevelsGained(self.responseText)
        if levelResponse > 0:
            response["level"] = levelResponse

        effectResponse = ParseResponseUtils.parseEffectsGained(
            self.responseText)
        if len(effectResponse) > 0:
            response["effects"] = effectResponse

        hpResponse = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hpResponse != 0:
            response["hp"] = hpResponse

        mpResponse = ParseResponseUtils.parseMPGainedLost(self.responseText)
        if mpResponse != 0:
            response["mp"] = mpResponse

        self.responseData = response
Example #6
0
    def parseResponse(self):
        notBarrelPattern = PatternManager.getOrCompilePattern('usedBarrel')
        noAdventuresPattern = PatternManager.getOrCompilePattern('noAdventures')
        if notBarrelPattern.match(self.responseText):
            raise Error.Error("Barrel already opened or doesn't exist. (#%s)" % self.requestData['smash'], Error.INVALID_ACTION)
        if noAdventuresPattern.match(self.responseText):
            raise Error.Error("You don't have enough adventures to smash that", Error.NOT_ENOUGH_ADVENTURES)

        url = self.response.url
        if url.find("/fight.php") >= 0:
            # Get the monster's name.
            self.responseData["adventureType"] = "combat"
            monsterNamePattern = PatternManager.getOrCompilePattern('monsterName')
            monsterNameMatch = monsterNamePattern.search(self.responseText)
            self.responseData["monsterName"] = monsterNameMatch.group(1)

            # Check to see if the fight was won or lost.
            fightWonPattern = PatternManager.getOrCompilePattern('fightWon')
            if fightWonPattern.search(self.responseText):
                self.responseData["fightWon"] = True
            else:
                fightLostPattern = PatternManager.getOrCompilePattern('fightLost')
                if fightLostPattern.search(self.responseText):
                    self.responseData["fightLost"] = True

            # Get items, meat, and substats gained. We always need to check these since they can
            # happen at any point during the fight.
            self.responseData["items"] = ParseResponseUtils.parseItemsReceived(self.responseText, self.session)
            self.responseData["meat"] = ParseResponseUtils.parseMeatGainedLost(self.responseText)
            self.responseData["substats"] = ParseResponseUtils.parseSubstatsGainedLost(self.responseText)

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

        hp = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hp != 0:
            self.responseData["hp"] = hp
Example #7
0
    def parseResponse(self):
        # Check for errors
        tooDrunkPattern = PatternManager.getOrCompilePattern('tooDrunk')
        if tooDrunkPattern.search(self.responseText):
            raise Error.Error("You are too drunk to drink more booze.", Error.USER_IS_DRUNK)
        notBoozePattern = PatternManager.getOrCompilePattern('notBooze')
        if notBoozePattern.search(self.responseText):
            raise Error.Error("That item is not booze.", Error.WRONG_KIND_OF_ITEM)
        boozeMissingPattern = PatternManager.getOrCompilePattern('notEnoughItems')
        if boozeMissingPattern.search(self.responseText):
            raise Error.Error("Item not in inventory.", Error.ITEM_NOT_FOUND)

        # 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
Example #8
0
    def parseResponse(self):
        # First parse for errors
        notEnoughPattern = PatternManager.getOrCompilePattern("notEnoughToUse")
        if notEnoughPattern.search(self.responseText):
            raise Error.Error("You don't have that many of that item.",
                              Error.ITEM_NOT_FOUND)

        notMultiPattern = PatternManager.getOrCompilePattern("notMultiUse")
        if notMultiPattern.search(self.responseText):
            raise Error.Error("You cannot multi-use that item.",
                              Error.WRONG_KIND_OF_ITEM)

        # Find out what happened
        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) > 0:
            self.responseData["items"] = items

        meat = ParseResponseUtils.parseMeatGainedLost(self.responseText)
        if meat != 0:
            self.responseData["meat"] = meat

        hp = ParseResponseUtils.parseHPGainedLost(self.responseText)
        if hp != 0:
            self.responseData["hp"] = hp

        mp = ParseResponseUtils.parseMPGainedLost(self.responseText)
        if mp != 0:
            self.responseData["mp"] = mp

        drunk = ParseResponseUtils.parseDrunkGained(self.responseText)
        if drunk != 0:
            self.responseData["drunk"] = drunk

        adventures = ParseResponseUtils.parseAdventuresGained(
            self.responseText)
        if adventures != 0:
            self.responseData["adventures"] = adventures

        effects = ParseResponseUtils.parseEffectsGained(self.responseText)
        if len(effects) > 0:
            self.responseData["effects"] = effects
Example #9
0
    def parseResponse(self):
        # Check for errors.
        notEnoughMeatPattern = PatternManager.getOrCompilePattern('noMeatForStore')
        invalidStorePattern = PatternManager.getOrCompilePattern('invalidStore')
        notSoldPattern = PatternManager.getOrCompilePattern('notSoldHere')
        if len(self.responseText) == 0:
            raise Error.Error("You cannot visit that store yet.", Error.INVALID_LOCATION)
        if invalidStorePattern.search(self.responseText):
            raise Error.Error("The store you tried to visit doesn't exist.", Error.INVALID_LOCATION)
        if notSoldPattern.search(self.responseText):
            raise Error.Error("This store doesn't carry that item.", Error.ITEM_NOT_FOUND)
        if notEnoughMeatPattern.search(self.responseText):
            raise Error.Error("You do not have enough meat to purchase the item(s).", Error.NOT_ENOUGH_MEAT)

        items = ParseResponseUtils.parseItemsReceived(self.responseText, self.session)
        if len(items) == 0:
            raise Error.Error("Unknown error. No items received.", Error.REQUEST_FATAL)
        self.responseData["items"] = items

        meatSpentPattern = PatternManager.getOrCompilePattern('meatSpent')
        match = meatSpentPattern.search(self.responseText)
        self.responseData['meatSpent'] = int(match.group(1).replace(',', ''))
Example #10
0
    def parseResponse(self):
        # Check for errors
        tooFullPattern = PatternManager.getOrCompilePattern('tooFull')
        if tooFullPattern.search(self.responseText):
            raise Error.Error("You are too full to eat that.",
                              Error.USER_IS_FULL)
        notFoodPattern = PatternManager.getOrCompilePattern('notFood')
        if notFoodPattern.search(self.responseText):
            raise Error.Error("That item is not food.",
                              Error.WRONG_KIND_OF_ITEM)
        foodMissingPattern = PatternManager.getOrCompilePattern(
            'notEnoughItems')
        if foodMissingPattern.search(self.responseText):
            raise Error.Error("Item not in inventory.", Error.ITEM_NOT_FOUND)

        # 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
    def parseResponse(self):
        # Look for known errors. We override the NOT_ENOUGH_MEAT error here because it basically matches the error condition
        # of not having enough currency to buy the particular product. It is not worth creating a one-off error for this
        # particular situation, especially since the trader doesn't deal in meat.
        p = PatternManager.getOrCompilePattern('traderNotTradingForThatItem')
        if p.search(self.responseText):
            raise Error.Error("The trader isn't trading for that item.",
                              Error.ITEM_NOT_FOUND)
        p = PatternManager.getOrCompilePattern('traderCantTradeForThatMany')
        if p.search(self.responseText):
            raise Error.Error("You are unable to trade for that many items.",
                              Error.NOT_ENOUGH_MEAT)
        p = PatternManager.getOrCompilePattern('traderNotEnoughWads')
        if p.search(self.responseText):
            raise Error.Error("You are unable to trade for that many items.",
                              Error.NOT_ENOUGH_MEAT)

        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) == 0:
            raise Error.Error("Unknown error. No items received.",
                              Error.REQUEST_FATAL)
        self.responseData["items"] = items
Example #12
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):
            e = Error.Error("The Hermit doesn't have enough clovers for that.",
                            Error.ITEM_NOT_FOUND)
            e.itemId = 24
            raise e
        if noTrinketsPattern.search(self.responseText):
            e = Error.Error("You don't have enough worthless items for that.",
                            Error.ITEM_NOT_FOUND)
            e.itemId = 43
            raise e
        if noHermitPermitPattern.search(self.responseText):
            e = Error.Error("You don't have enough hermit permits for that.",
                            Error.ITEM_NOT_FOUND)
            e.itemId = 42
            raise e
        if notHermitItemPattern.search(self.responseText):
            e = Error.Error("The Hermit doesn't have any of those.",
                            Error.ITEM_NOT_FOUND)
            e.itemId = self.requestData['whichitem']
            raise e

        response = {}
        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) > 0:
            response["items"] = items
        self.responseData = response
    def parseResponse(self):
        cantAffordItemPattern = PatternManager.getOrCompilePattern(
            'cantAffordItem')
        if cantAffordItemPattern.search(self.responseText):
            raise Error.Error("You can not afford to buy this item.",
                              Error.NOT_ENOUGH_MEAT)

        noItemAtThatPricePattern = PatternManager.getOrCompilePattern(
            'mallNoItemAtThatPrice')
        if noItemAtThatPricePattern.search(self.responseText):
            raise Error.Error("That item is not sold here at that price.",
                              Error.ITEM_NOT_FOUND)

        ignoreListPattern = PatternManager.getOrCompilePattern(
            'cantBuyItemIgnoreList')
        if ignoreListPattern.search(self.responseText):
            raise Error.Error("The owner of that store has balleeted you.",
                              Error.USER_IS_IGNORING)

        mallHitLimitPattern = PatternManager.getOrCompilePattern(
            'mallHitLimit')
        if mallHitLimitPattern.search(self.responseText):
            raise Error.Error(
                "You have hit the limit for this item at this store.",
                Error.LIMIT_REACHED)

        items = ParseResponseUtils.parseItemsReceived(self.responseText,
                                                      self.session)
        if len(items) == 0:
            raise Error.Error("Unknown error: %s" % self.responseText,
                              Error.REQUEST_GENERIC)
        self.responseData["items"] = items

        spentMeatPattern = PatternManager.getOrCompilePattern('meatSpent')
        match = spentMeatPattern.search(self.responseText)
        self.responseData['meatSpent'] = int(match.group(1).replace(',', ''))
Example #14
0
 def parseResponse(self):
     self.responseData["effects"] = ParseResponseUtils.parseEffectsGained(self.responseText)
Example #15
0
 def parseResponse(self):
     self.responseData["items"] = ParseResponseUtils.parseItemsReceived(self.responseText, self.session)
Example #16
0
 def parseResponse(self):
     self.responseData["meat"] = ParseResponseUtils.parseMeatGainedLost(
         self.responseText)
Example #17
0
    def parseResponse(self):
        response = {}
        response["meat"] = ParseResponseUtils.parseMeatGainedLost(self.responseText)

        self.responseData = response
    def parseResponse(self):
        """
        Default response method for adventuring.
        """

        shouldNotBeHerePattern = PatternManager.getOrCompilePattern(
            'userShouldNotBeHere')
        if shouldNotBeHerePattern.search(self.responseText):
            raise Error.Error("Unable to adventure. You should not be here.",
                              Error.INVALID_LOCATION)

        url = self.response.url
        if url.find("/fight.php") >= 0:
            # See if the user tried to perform an invalid action.
            twiddlingThumbsPattern = PatternManager.getOrCompilePattern(
                'twiddlingThumbs')
            if twiddlingThumbsPattern.search(self.responseText):
                raise Error.Error(
                    "Could not perform action. Thumbs were twiddled.",
                    Error.INVALID_ACTION)

            # Get the monster's name.
            self.responseData["adventureType"] = "combat"
            monsterNamePattern = PatternManager.getOrCompilePattern(
                'monsterName')
            monsterNameMatch = monsterNamePattern.search(self.responseText)
            self.responseData["monsterName"] = monsterNameMatch.group(1)

            # Check to see if the fight was won or lost.
            fightWonPattern = PatternManager.getOrCompilePattern('fightWon')
            if fightWonPattern.search(self.responseText):
                self.responseData["fightWon"] = True
            else:
                fightLostPattern = PatternManager.getOrCompilePattern(
                    'fightLost')
                if fightLostPattern.search(self.responseText):
                    self.responseData["fightLost"] = True

            # Get items, meat, and substats gained. We always need to check these since they can
            # happen at any point during the fight.
            self.responseData["items"] = ParseResponseUtils.parseItemsReceived(
                self.responseText, self.session)
            self.responseData["meat"] = ParseResponseUtils.parseMeatGainedLost(
                self.responseText)
            self.responseData[
                "substats"] = ParseResponseUtils.parseSubstatsGainedLost(
                    self.responseText)

            # The same goes for HP and MP
            self.responseData["hp"] = ParseResponseUtils.parseHPGainedLost(
                self.responseText)
            self.responseData["mp"] = ParseResponseUtils.parseMPGainedLost(
                self.responseText)

        elif url.find("/choice.php") >= 0:
            self.responseData["adventureType"] = "choice"
            choiceIdentifierPattern = PatternManager.getOrCompilePattern(
                'choiceIdentifier')
            choiceIdentifierMatch = choiceIdentifierPattern.search(
                self.responseText)
            if choiceIdentifierMatch:
                choiceNamePattern = PatternManager.getOrCompilePattern(
                    'choiceName')
                self.responseData["choiceId"] = choiceIdentifierMatch.group(1)
                self.responseData["choiceName"] = choiceNamePattern.search(
                    self.responseText).group(1)
            else:
                self.responseData[
                    "items"] = ParseResponseUtils.parseItemsReceived(
                        self.responseText, self.session)
                self.responseData[
                    "meat"] = ParseResponseUtils.parseMeatGainedLost(
                        self.responseText)
                self.responseData[
                    "substats"] = ParseResponseUtils.parseSubstatsGainedLost(
                        self.responseText)

        elif url.find("/adventure.php") >= 0:
            self.responseData["adventureType"] = "noncombat"
            noncombatNamePattern = PatternManager.getOrCompilePattern(
                'noncombatName')
            noncombatNameMatch = noncombatNamePattern.search(self.responseText)
            if noncombatNameMatch:
                self.responseData["noncombatName"] = noncombatNameMatch.group(
                    1)
            self.responseData["items"] = ParseResponseUtils.parseItemsReceived(
                self.responseText, self.session)
            self.responseData["meat"] = ParseResponseUtils.parseMeatGainedLost(
                self.responseText)
            self.responseData[
                "substats"] = ParseResponseUtils.parseSubstatsGainedLost(
                    self.responseText)
        else:
            raise Error.Error("Adventure URL not recognized: %s" % url,
                              Error.REQUEST_GENERIC)