예제 #1
0
    def __runSelfTest_limits(self, itemCatFilter, verbose):
        itemIds = ItemGlobals.getAllItemIds()
        for currItemId in itemIds:
            if itemCatFilter != None:
                if itemCatFilter != ItemGlobals.getClass(currItemId):
                    continue
                itemIds = ItemGlobals.getAllConsumableIds()
                itemLimit = ItemGlobals.getStackLimit(currItemId)
                itemCat = ItemGlobals.getClass(currItemId)
                quantity = self.getItemQuantity(itemCat, currItemId)
                if isStackableType(itemCat):
                    pass
                print verbose and 'item limit for item %s:%s passed (quantity: %s limit:%s)' % (itemCat, currItemId, quantity, itemLimit or 1)

        return
예제 #2
0
 def _TradableInventoryBase__runSelfTest_limits(self, itemCatFilter,
                                                verbose):
     itemIds = ItemGlobals.getAllItemIds()
     for currItemId in itemIds:
         if itemCatFilter != None and itemCatFilter != ItemGlobals.getClass(
                 currItemId):
             itemIds = ItemGlobals.getAllConsumableIds()
             itemLimit = ItemGlobals.getStackLimit(currItemId)
             itemCat = ItemGlobals.getClass(currItemId)
             quantity = self.getItemQuantity(itemCat, currItemId)
         if isStackableType(itemCat):
             pass
         1
         if verbose:
             if not itemLimit:
                 pass
             print 'item limit for item %s:%s passed (quantity: %s limit:%s)' % (
                 itemCat, currItemId, quantity, 1)
    def _TradableInventoryBase__runSelfTest_limits(self, itemCatFilter, verbose):
        itemIds = ItemGlobals.getAllItemIds()
        for currItemId in itemIds:
            if itemCatFilter != None and itemCatFilter != ItemGlobals.getClass(currItemId):
                continue

            itemIds = ItemGlobals.getAllConsumableIds()
            itemLimit = ItemGlobals.getStackLimit(currItemId)
            itemCat = ItemGlobals.getClass(currItemId)
            quantity = self.getItemQuantity(itemCat, currItemId)
            if isStackableType(itemCat):
                pass
            1
            if verbose:
                if not itemLimit:
                    pass
                print 'item limit for item %s:%s passed (quantity: %s limit:%s)' % (itemCat, currItemId, quantity, 1)
                continue
    def __runSelfTest_giving(self,
                             itemCatFilter,
                             itemTypeFilter=None,
                             count=None,
                             verbose=None):
        itemIds = ItemGlobals.getAllItemIds()
        itemIds = filter(
            lambda x: itemTypeFilter == None or itemTypeFilter == x, itemIds)
        for currItemId in itemIds:
            itemCat = ItemGlobals.getClass(currItemId)
            if itemCatFilter != None and itemCat != itemCatFilter:
                continue
            actualCount = count or ItemGlobals.getStackLimit(
                currItemId) or None
            testItem = self.getTestItem(itemCat, currItemId, count=actualCount)
            if game.process == 'ai':

                def tradeSuccess(tradeObj):
                    if verbose:
                        print '  trade success'
                    self.testPending = False

                def tradeFail(tradeObj, reason):
                    reasonStr = reason
                    from otp.uberdog.RejectCode import RejectCode
                    for currCode in RejectCode.__dict__.keys():
                        if reason == RejectCode.__dict__[currCode]:
                            reasonStr = currCode

                    if verbose:
                        print '  trade fail %s (%s)' % (reasonStr, tradeObj)
                    if reason == RejectCode.OVERFLOW:
                        for currGiving in tradeObj.giving:
                            checkItem = InvItem(currGiving)
                            itemCat = checkItem.getCat()
                            ranges = self.getPossibleLocations(
                                itemCat, checkItem.getType(),
                                itemCat == InventoryType.ItemTypeWeapon
                                or itemCat == InventoryType.ItemTypeCharm)
                            for currRange in ranges:
                                minVal = currRange[0]
                                if len(currRange) > 1:
                                    maxVal = currRange[1]
                                else:
                                    maxVal = minVal
                                for currLocation in range(minVal, maxVal + 1):
                                    if not self._locatableItems.has_key(
                                            currLocation):
                                        print '    WARNING: trade %s failed with overflow when it should not have %s' % (
                                            tradeObj, currLocation)

                    elif reason == RejectCode.UNDERFLOW:
                        print '    WARNING: trade %s failed with underflow when it should not have' % tradeObj
                    self.testPending = False

                def tradeTimeout(tradeObj):
                    if verbose:
                        print '  trade timeout'
                    self.testPending = False

                from pirates.uberdog.AIMagicWordTrade import AIMagicWordTrade
                trade = AIMagicWordTrade(self, self.doId, self.ownerId)

                def removeSetup(tradeObj, removeCat, removeType):
                    ranges = self.getPossibleLocations(removeCat, removeType,
                                                       False)
                    itemToRemove = self._locatableItems.get(ranges[0][0])
                    tradeObj.takeItem(itemToRemove)

                trade.setSuccessCallback(tradeSuccess)
                trade.setFailureCallback(tradeFail)
                trade.setTimeoutCallback(tradeTimeout)
                self.selfTestTrades.insert(
                    0, (lambda param1=trade, param2=itemCat, param3=testItem.
                        getType(): removeSetup(param1, param2, param3), trade))
                from pirates.uberdog.AIGift import AIGift
                trade = AIGift(self, GiftOrigin.MAGIC_WORD, self.doId,
                               self.ownerId)
                trade.giveItem(testItem)
                trade.setSuccessCallback(tradeSuccess)
                trade.setFailureCallback(tradeFail)
                trade.setTimeoutCallback(tradeTimeout)
                self.selfTestTrades.insert(1, (None, trade))

        return
    def _TradableInventoryBase__runSelfTest_giving(self, itemCatFilter, itemTypeFilter = None, count = None, verbose = None):
        itemIds = ItemGlobals.getAllItemIds()
        for currItemId in itemIds:
            itemCat = ItemGlobals.getClass(currItemId)
            if itemCatFilter != None and itemCat != itemCatFilter:
                continue

            if not count and ItemGlobals.getStackLimit(currItemId):
                pass
            actualCount = None
            testItem = self.getTestItem(itemCat, currItemId, count = actualCount)
            if game.process == 'ai':

                def tradeSuccess(tradeObj):
                    if verbose:
                        print '  trade success'

                    self.testPending = False


                def tradeFail(tradeObj, reason):
                    reasonStr = reason
                    RejectCode = RejectCode
                    import otp.uberdog.RejectCode
                    for currCode in RejectCode.__dict__.keys():
                        if reason == RejectCode.__dict__[currCode]:
                            reasonStr = currCode
                            continue

                    if verbose:
                        print '  trade fail %s (%s)' % (reasonStr, tradeObj)

                    if reason == RejectCode.OVERFLOW:
                        for currGiving in tradeObj.giving:
                            checkItem = InvItem(currGiving)
                            itemCat = checkItem.getCat()
                            if not itemCat == InventoryType.ItemTypeWeapon:
                                pass
                            ranges = self.getPossibleLocations(itemCat, checkItem.getType(), itemCat == InventoryType.ItemTypeCharm)
                            for currRange in ranges:
                                minVal = currRange[0]
                                if len(currRange) > 1:
                                    maxVal = currRange[1]
                                else:
                                    maxVal = minVal
                                for currLocation in range(minVal, maxVal + 1):
                                    if not self._locatableItems.has_key(currLocation):
                                        print '    WARNING: trade %s failed with overflow when it should not have %s' % (tradeObj, currLocation)
                                        continue



                    elif reason == RejectCode.UNDERFLOW:
                        print '    WARNING: trade %s failed with underflow when it should not have' % tradeObj

                    self.testPending = False


                def tradeTimeout(tradeObj):
                    if verbose:
                        print '  trade timeout'

                    self.testPending = False

                AIMagicWordTrade = AIMagicWordTrade
                import pirates.uberdog.AIMagicWordTrade
                trade = AIMagicWordTrade(self, self.doId, self.ownerId)

                def removeSetup(tradeObj, removeCat, removeType):
                    ranges = self.getPossibleLocations(removeCat, removeType, False)
                    itemToRemove = self._locatableItems.get(ranges[0][0])
                    tradeObj.takeItem(itemToRemove)

                trade.setSuccessCallback(tradeSuccess)
                trade.setFailureCallback(tradeFail)
                trade.setTimeoutCallback(tradeTimeout)
                self.selfTestTrades.insert(0, (lambda param1 = trade, param2 = itemCat, param3 = testItem.getType(): removeSetup(param1, param2, param3), trade))
                AIGift = AIGift
                import pirates.uberdog.AIGift
                trade = AIGift(self, GiftOrigin.MAGIC_WORD, self.doId, self.ownerId)
                trade.giveItem(testItem)
                trade.setSuccessCallback(tradeSuccess)
                trade.setFailureCallback(tradeFail)
                trade.setTimeoutCallback(tradeTimeout)
                self.selfTestTrades.insert(1, (None, trade))
                continue