def parseResponse(self):
     """
     Returns a dict in which 'results' references an array of dicts.  If the 
     search included items only, each dict would have the following item keys:
         descId (always)
         id (always)
         image (always)
         name (always)
     and sometime, depending on the kind of item,
         adventuresGained
         autosell
         drunkenness
         fullness
         isBounty
         isCandy
         isCombatReusable
         isCombatUsable
         isMultiUsable
         isReusable
         isSphere
         isUsable
         isUsableOnOthers
         isZappable
         moxieGained
         muscleGained
         mysticalityGained
         npcPrice
         npcStoreId
         numPackageItems
         plural
         power
         quality
         requiredMoxie
         requiredMuscle
         requiredMysticality
         spleen
         type
     If the search included shops, the dicts would have the following
     additional keys:
         hitLimit (if the item's limit has been hit by the session character)
         limit (if the item is limited per day)
         price
         quantity
         storeId
         storeName
     """
     items = []
     itemMatchPattern = self.getPattern('mallItemSearchResult')
     itemDetailsPattern = self.getPattern('mallItemSearchDetails')
     itemHeaderPattern = self.getPattern('mallItemHeader')
     if self.justItems:
         for itemMatch in itemHeaderPattern.finditer(self.responseText):
             itemId = int(itemMatch.group(1))
             try:
                 item = ItemDatabase.getItemFromId(itemId)
                 items.append(item)
             except Error.Error, inst:
                 if inst.code == Error.ITEM_NOT_FOUND:
                     Report.info(
                         "itemdatabase",
                         "Unrecognized item found in mall search: {0}".
                         format(itemId), inst)
                 else:
                     raise inst
             items.append(item)
         except Error.Error, inst:
             if inst.code == Error.ITEM_NOT_FOUND:
                 Report.info(
                     "itemdatabase",
                     "Unrecognized item found in mall search: {0}".
                     format(itemId), inst)
             else:
                 raise inst
 else:
     for itemMatch in itemMatchPattern.finditer(self.responseText):
         matchText = itemMatch.group(1)
         match = itemDetailsPattern.search(matchText)
         itemId = int(match.group('itemId'))
         try:
             item = ItemDatabase.getItemFromId(itemId)
             item["price"] = int(match.group('price').replace(',', ''))
             item["storeId"] = int(match.group('storeId'))
             storeName = match.group('storeName').replace('<br>', ' ')
             item['storeName'] = self.HTML_PARSER.unescape(storeName)
             item["quantity"] = int(
                 match.group('quantity').replace(',', ''))
             limit = match.group('limit').replace(',', '')
             if len(limit) > 0:
                 limit = int(limit)
                 item["limit"] = limit
             if matchText.find('limited"') >= 0:
                 item["hitLimit"] = True
             items.append(item)
         except Error.Error, inst:
             if inst.code == Error.ITEM_NOT_FOUND: