def caughtFish(self, fishId, weight): avatar = self.air.doId2do.get(self.air.getAvatarIdFromSender()) if not avatar: return fishData = FishingGlobals.getFishData(fishId) if not fishData: self.air.logPotentialHacker( message='Received caughtFish update for an invalid fish!', accountId=self.air.getAccountIdFromSender(), fishId=fishId, weight=weight) return minWeight, maxWeight = fishData['weightRange'] if weight < minWeight or weight > maxWeight: self.air.logPotentialHacker( message='Received caughtFish update for invalid weight.', accountId=self.air.getAccountIdFromSender(), fishId=fishId, weight=weight) return reward = fishData['gold'] * weight bonusReward = 0 if self.air.holidayMgr.isHolidayActive( HolidayGlobals.DOUBLEGOLDHOLIDAY ) or self.air.holidayMgr.isHolidayActive( HolidayGlobals.DOUBLEGOLDHOLIDAYPAID): bonusReward = reward * 2 if bonusReward: reward += bonusReward self.sendUpdateToAvatarId(avatar.doId, 'setGoldBonus', [bonusReward]) experience = fishData['experience'] bonusExperience = 0 if self.air.holidayMgr.isHolidayActive(HolidayGlobals.DOUBLEXPHOLIDAY): bonusExperience = experience * 2 if bonusExperience: experience += bonusExperience self.sendUpdateToAvatarId(avatar.doId, 'setXpBonus', [bonusExperience]) inventory = self.air.inventoryManager.getInventory(avatar.doId) if not inventory: self.notify.warning('Failed to get inventory for avatar %d!' % avatar.doId) return currentLevel = ReputationGlobals.getLevelFromTotalReputation( InventoryType.FishingRep, inventory.getFishingRep())[0] expectedLevel = ReputationGlobals.getLevelFromTotalReputation( InventoryType.FishingRep, inventory.getFishingRep() + experience)[0] if expectedLevel > currentLevel: if expectedLevel in FishingGlobals.unlockLevelToSkillId: unlockedSkill = FishingGlobals.unlockLevelToSkillId[ expectedLevel] inventory.b_setStack(unlockedSkill, 1) inventory.setGoldInPocket(inventory.getGoldInPocket() + reward) inventory.setFishingRep(inventory.getFishingRep() + experience) # Clear Tutorial flags if not inventory.getStack(InventoryType.FishingTutorial): inventory.b_setStack(InventoryType.FishingTutorial, 1)