Exemple #1
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
Exemple #2
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
Exemple #3
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
Exemple #4
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
Exemple #5
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
Exemple #6
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
    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)