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
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
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
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): 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
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)