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