def checkAndLoadFishingGame(self):
     localAvatar.b_setGameState('Fishing')
     if self.fishingGame is None:
         self.fishingGame = FishingGame(self)
     if self.onABoat:
         self.oldAvatarPos = localAvatar.getPos()
         localAvatar.collisionGhost()
         localAvatar.setPos(
             *FishingGlobals.fishingSpotPosHprBoatInformation[
                 self.index]['pos'])
         localAvatar.setHpr(
             *FishingGlobals.fishingSpotPosHprBoatInformation[
                 self.index]['hpr'])
         self.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[
             self.index]['fishingSpotHpr'])
         base.cam.reparentTo(self.fishingGame.fishingSpot)
         base.cam.setPos(13.0, -18.0, 7.0)
         base.cam.setHpr(0.0, 0.0, 0.0)
     else:
         par = localAvatar.getParentObj()
         uid = par.getUniqueId()
         if uid == LocationIds.DEL_FUEGO_ISLAND:
             localAvatar.setHpr(50.0, 0.0, 0.0)
         else:
             if localAvatar.onWelcomeWorld:
                 localAvatar.setHpr(self.getH(render) - 196.0, 0.0, 0.0)
             else:
                 localAvatar.setHpr(self.getH(render) - 16.0, 0.0, 0.0)
         localAvatar.setPos(self,
                            Point3(*FishingGlobals.fishingSpotPosOffset))
         base.cam.reparentTo(self.fishingGame.fishingSpot)
         base.cam.setHpr(0.0, 0.0, 0.0)
     localAvatar.sendCurrentPosition()
     return
 def checkAndLoadFishingGame(self):
     localAvatar.b_setGameState('Fishing')
     if self.fishingGame is None:
         self.fishingGame = FishingGame(self)
     
     if self.onABoat:
         self.oldAvatarPos = localAvatar.getPos()
         localAvatar.collisionGhost()
         localAvatar.setPos(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['pos'])
         localAvatar.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['hpr'])
         self.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['fishingSpotHpr'])
         base.cam.reparentTo(self.fishingGame.fishingSpot)
         base.cam.setPos(13.0, -18.0, 7.0)
         base.cam.setHpr(0.0, 0.0, 0.0)
     else:
         par = localAvatar.getParentObj()
         uid = par.getUniqueId()
         if uid == LocationIds.DEL_FUEGO_ISLAND:
             localAvatar.setHpr(50.0, 0.0, 0.0)
         elif localAvatar.onWelcomeWorld:
             localAvatar.setHpr(self.getH(render) - 196.0, 0.0, 0.0)
         else:
             localAvatar.setHpr(self.getH(render) - 16.0, 0.0, 0.0)
         localAvatar.setPos(self, Point3(*FishingGlobals.fishingSpotPosOffset))
         base.cam.reparentTo(self.fishingGame.fishingSpot)
         base.cam.setHpr(0.0, 0.0, 0.0)
     localAvatar.sendCurrentPosition()
class DistributedFishingSpot(DistributedInteractive.DistributedInteractive,
                             Lootable):
    __module__ = __name__
    notify = DirectNotifyGlobal.directNotify.newCategory(
        'DistributedFishingSpot')

    def __init__(self, cr):
        DistributedInteractive.DistributedInteractive.__init__(self, cr)
        Lootable.__init__(self)
        self.index = -1
        self.onABoat = False
        self.fadeTime = 0.5
        self.loadingSequence = None
        self.fishingGame = None
        self.xpBonus = 0
        self.goldBonus = 0
        self.showTutorial = False
        self.__dialog = None
        self.prevBaseCamParent = None
        self.prevCamPos = None
        self.prevCamHpr = None
        self.oldAvatarPos = None
        return

    def generate(self):
        DistributedInteractive.DistributedInteractive.generate(self)
        NodePath.__init__(self, 'DistributedFishingSpot')
        self.setInteractOptions(proximityText=PLocalizer.InteractFishingSpot,
                                sphereScale=8,
                                diskRadius=8)
        self.setAllowInteract(True)

    def announceGenerate(self):
        DistributedInteractive.DistributedInteractive.announceGenerate(self)
        if self.getOnABoat() and self.getParentObj():
            self.getParentObj().registerFishingSpot(self)

    def setXpBonus(self, xpBonusAmount):
        self.xpBonus = xpBonusAmount
        if self.fishingGame:
            self.fishingGame.updateResultsScreen()

    def getXpBonus(self):
        return self.xpBonus

    def setGoldBonus(self, goldBonusAmount):
        self.goldBonus = goldBonusAmount
        if self.fishingGame:
            self.fishingGame.updateResultsScreen()

    def getGoldBonus(self):
        return self.goldBonus

    def setOnABoat(self, onABoat):
        self.onABoat = onABoat

    def getOnABoat(self):
        return self.onABoat

    def setOceanOffset(self, offset):
        self.oceanOffset = offset

    def requestInteraction(self, avId, interactType=0):
        inv = localAvatar.getInventory()
        rodQty = inv.getStackQuantity(InventoryType.FishingRod)
        regLureQty = inv.getStackQuantity(InventoryType.RegularLure)
        legendaryLureQty = inv.getStackQuantity(InventoryType.LegendaryLure)
        if rodQty > 0:
            if regLureQty + legendaryLureQty <= 0:
                localAvatar.guiMgr.createWarning(
                    PLocalizer.FishingNoLuresWarning,
                    PiratesGuiGlobals.TextFG6)
            elif localAvatar.isUndead():
                localAvatar.guiMgr.createWarning(
                    PLocalizer.NoFishingWhileUndeadWarning,
                    PiratesGuiGlobals.TextFG6)
            else:
                localAvatar.motionFSM.off()
                DistributedInteractive.DistributedInteractive.requestInteraction(
                    self, avId, interactType)
        else:
            localAvatar.guiMgr.createWarning(PLocalizer.FishingNoRodWarning,
                                             PiratesGuiGlobals.TextFG6)

    def rejectInteraction(self):
        localAvatar.motionFSM.on()
        localAvatar.gameFSM.request('LandRoam')
        self.refreshState()
        DistributedInteractive.DistributedInteractive.rejectInteraction(self)

    def requestExit(self):
        DistributedInteractive.DistributedInteractive.requestExit(self)
        taskMgr.remove('tryFishingSpotAgain')
        if (self.onABoat and self).oldAvatarPos:
            localAvatar.setPos(self.oldAvatarPos)
            self.oldAvatarPos = None
        if not localAvatar.gameFSM.isInTransition():
            localAvatar.b_setGameState(localAvatar.gameFSM.defaultState)
        if self.loadingSequence:
            self.loadingSequence.pause()
            self.loadingSequence.clearToInitial()
        base.transitions.fadeIn(self.fadeTime)
        if self.fishingGame is not None:
            self.fishingGame.delete()
            self.fishingGame = None
        if self.prevBaseCamParent is not None:
            base.cam.reparentTo(self.prevBaseCamParent)
            base.cam.setPos(self.prevCamPos)
            base.cam.setHpr(self.prevCamHpr)
            self.prevBaseCamParent = None
            self.prevCamPos = None
            self.prevCamHpr = None
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        localAvatar.motionFSM.on()
        self.setAllowInteract(True)
        base.localAvatar.guiMgr.setIgnoreEscapeHotKey(False)
        self.refreshState()
        return

    def checkAndLoadFishingGame(self):
        localAvatar.b_setGameState('Fishing')
        if self.fishingGame is None:
            self.fishingGame = FishingGame(self)
        if self.onABoat:
            self.oldAvatarPos = localAvatar.getPos()
            localAvatar.collisionGhost()
            localAvatar.setPos(
                *FishingGlobals.fishingSpotPosHprBoatInformation[
                    self.index]['pos'])
            localAvatar.setHpr(
                *FishingGlobals.fishingSpotPosHprBoatInformation[
                    self.index]['hpr'])
            self.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[
                self.index]['fishingSpotHpr'])
            base.cam.reparentTo(self.fishingGame.fishingSpot)
            base.cam.setPos(13.0, -18.0, 7.0)
            base.cam.setHpr(0.0, 0.0, 0.0)
        else:
            par = localAvatar.getParentObj()
            uid = par.getUniqueId()
            if uid == LocationIds.DEL_FUEGO_ISLAND:
                localAvatar.setHpr(50.0, 0.0, 0.0)
            else:
                if localAvatar.onWelcomeWorld:
                    localAvatar.setHpr(self.getH(render) - 196.0, 0.0, 0.0)
                else:
                    localAvatar.setHpr(self.getH(render) - 16.0, 0.0, 0.0)
            localAvatar.setPos(self,
                               Point3(*FishingGlobals.fishingSpotPosOffset))
            base.cam.reparentTo(self.fishingGame.fishingSpot)
            base.cam.setHpr(0.0, 0.0, 0.0)
        localAvatar.sendCurrentPosition()
        return

    def requestPlayerIdleState(self, task=None):
        if base.localAvatar.find('**/fishingRod').isEmpty():
            taskMgr.doMethodLater(0.5,
                                  self.requestPlayerIdleState,
                                  name='tryFishingSpotAgain')
        else:
            self.fishingGame.fsm.request('PlayerIdle')
            self.fishingGame.checkLures()

    def enterUse(self):
        DistributedInteractive.DistributedInteractive.enterUse(self)
        self.prevBaseCamParent = base.cam.getParent()
        self.prevCamPos = base.cam.getPos()
        self.prevCamHpr = base.cam.getHpr()
        if not base.transitions.fadeOutActive():
            self.loadingSequence = Sequence(Func(self.fadeOut),
                                            Wait(self.fadeTime + 0.1),
                                            Func(self.checkAndLoadFishingGame),
                                            Wait(1.5),
                                            Func(self.requestPlayerIdleState),
                                            Func(self.fadeIn))
            self.loadingSequence.start()
        else:
            print '--------------------- DistributedFishingSpot : Trouble fading out!'
        taskMgr.doMethodLater(FishingGlobals.idleDuration,
                              self.bootFromFishing,
                              self.uniqueName('bootFromFishing'))
        self.accept('mouse1', self.resetBootCheck)
        self.accept('fishing-skill-used', self.resetBootCheck)
        self.accept('newItemHeld', self.resetBootCheck)
        self.accept('releaseHeld', self.resetBootCheck)
        self.accept('plunderClosed', self.requestPlayerIdle)

    def fadeOut(self):
        base.transitions.setFadeColor(0, 0, 0)
        if base.transitions.fadeOutActive():
            return
        base.transitions.fadeOut(self.fadeTime)
        base.localAvatar.guiMgr.inventoryUIManager.hidePlunder()
        base.loadingScreen.showTarget(fishing=True)
        base.cr.loadingScreen.show()

    def fadeIn(self):
        base.transitions.fadeIn(self.fadeTime)
        base.musicMgr.request(SoundGlobals.MUSIC_MINIGAME_FISHING,
                              looping=True,
                              priority=1)
        base.cr.loadingScreen.hide()
        base.localAvatar.guiMgr.inventoryUIManager.showPlunder()

    def exitUse(self):
        self.ignoreAll()
        DistributedInteractive.DistributedInteractive.exitUse(self)
        base.musicMgr.requestFadeOut(SoundGlobals.MUSIC_MINIGAME_FISHING)

    def firstTimeFisher(self):
        self.showTutorial = True

    def spotFilledByAvId(self, avId):
        if avId == 0:
            self.setAllowInteract(True)
            self.showTutorial = False
            return
        if base.localAvatar.doId != avId:
            self.setAllowInteract(False)

    def delete(self):
        self.ignoreAll()
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        if self.fishingGame is not None:
            self.fishingGame.delete()
            del self.fishingGame
        if self.prevBaseCamParent is not None:
            base.cam.reparentTo(self.prevBaseCamParent)
            base.cam.setPos(self.prevCamPos)
            base.cam.setHpr(self.prevCamHpr)
            self.prevBaseCamParent = None
            self.prevCamPos = None
            self.prevCamHpr = None
        DistributedInteractive.DistributedInteractive.delete(self)
        return

    def b_setIndex(self, index):
        self.index = index
        self.sendUpdate('setIndex', [index])

    def setIndex(self, index):
        self.index = index

    def getIndex(self):
        return self.index

    def d_caughtFish(self, fishId, weight):
        self.sendUpdate('caughtFish', [fishId, weight])

    def lostLure(self, lureId):
        pass

    def d_lostLure(self, lureId):
        self.sendUpdate('lostLure', [lureId])

    def handleEndInteractKey(self):
        if self.fishingGame and not self.fishingGame.gui.resultsScreen.isHidden(
        ) or localAvatar.guiMgr.inventoryUIManager.hasPlunder():
            return
        if not self.fishingGame:
            return
        if self.__dialog == None:
            self.__dialog = PDialog(text=PLocalizer.FishingGui['ExitText'],
                                    style=OTPDialog.YesNo,
                                    giveMouse=False,
                                    command=self.__onDialogItemSelected)
        else:
            self.__dialog.cleanup()
            self.__dialog = None
        return

    def __onDialogItemSelected(self, value):
        if value == 1:
            self.requestExit()
        self.__dialog.cleanup()
        self.__dialog = None
        return

    def bootFromFishing(self, task=None):
        self.requestExit()

    def resetBootCheck(self, arg1=None, arg2=None):
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        taskMgr.doMethodLater(FishingGlobals.idleDuration,
                              self.bootFromFishing,
                              self.uniqueName('bootFromFishing'))

    def requestPlayerIdle(self, arg1=None):
        if self.fishingGame.fsm.getCurrentOrNextState() == 'Reward':
            self.fishingGame.fsm.request('PlayerIdle')

    def startLooting(self,
                     plunderList,
                     itemsToTake=0,
                     timer=0,
                     autoShow=False,
                     customName=None):
        Lootable.startLooting(self,
                              plunderList,
                              itemsToTake,
                              timer=timer,
                              autoShow=autoShow,
                              customName=PLocalizer.FoundFishing)
        if self.fishingGame and not self.fishingGame.gui.resultsScreen.isHidden(
        ):
            localAvatar.guiMgr.inventoryUIManager.hidePlunder()

    def handleArrivedOnShip(self, ship):
        pass

    def handleLeftShip(self, ship):
        pass
class DistributedFishingSpot(DistributedInteractive.DistributedInteractive, Lootable):
    notify = DirectNotifyGlobal.directNotify.newCategory('DistributedFishingSpot')
    
    def __init__(self, cr):
        DistributedInteractive.DistributedInteractive.__init__(self, cr)
        Lootable.__init__(self)
        self.index = -1
        self.onABoat = False
        self.fadeTime = 0.5
        self.loadingSequence = None
        self.fishingGame = None
        self.xpBonus = 0
        self.goldBonus = 0
        self.showTutorial = False
        self._DistributedFishingSpot__dialog = None
        self.prevBaseCamParent = None
        self.prevCamPos = None
        self.prevCamHpr = None
        self.oldAvatarPos = None

    
    def generate(self):
        DistributedInteractive.DistributedInteractive.generate(self)
        NodePath.__init__(self, 'DistributedFishingSpot')
        self.setInteractOptions(proximityText = PLocalizer.InteractFishingSpot, sphereScale = 8, diskRadius = 8)
        self.setAllowInteract(True)

    
    def announceGenerate(self):
        DistributedInteractive.DistributedInteractive.announceGenerate(self)
        if self.getOnABoat() and self.getParentObj():
            self.getParentObj().registerFishingSpot(self)
        

    
    def setXpBonus(self, xpBonusAmount):
        self.xpBonus = xpBonusAmount
        if self.fishingGame:
            self.fishingGame.updateResultsScreen()
        

    
    def getXpBonus(self):
        return self.xpBonus

    
    def setGoldBonus(self, goldBonusAmount):
        self.goldBonus = goldBonusAmount
        if self.fishingGame:
            self.fishingGame.updateResultsScreen()
        

    
    def getGoldBonus(self):
        return self.goldBonus

    
    def setOnABoat(self, onABoat):
        self.onABoat = onABoat

    
    def getOnABoat(self):
        return self.onABoat

    
    def setOceanOffset(self, offset):
        self.oceanOffset = offset

    
    def requestInteraction(self, avId, interactType = 0):
        inv = localAvatar.getInventory()
        rodQty = inv.getStackQuantity(InventoryType.FishingRod)
        regLureQty = inv.getStackQuantity(InventoryType.RegularLure)
        legendaryLureQty = inv.getStackQuantity(InventoryType.LegendaryLure)
        if rodQty > 0:
            if regLureQty + legendaryLureQty <= 0:
                localAvatar.guiMgr.createWarning(PLocalizer.FishingNoLuresWarning, PiratesGuiGlobals.TextFG6)
            elif localAvatar.isUndead():
                localAvatar.guiMgr.createWarning(PLocalizer.NoFishingWhileUndeadWarning, PiratesGuiGlobals.TextFG6)
            else:
                localAvatar.motionFSM.off()
                DistributedInteractive.DistributedInteractive.requestInteraction(self, avId, interactType)
        else:
            localAvatar.guiMgr.createWarning(PLocalizer.FishingNoRodWarning, PiratesGuiGlobals.TextFG6)

    
    def rejectInteraction(self):
        localAvatar.motionFSM.on()
        localAvatar.gameFSM.request('LandRoam')
        self.refreshState()
        DistributedInteractive.DistributedInteractive.rejectInteraction(self)

    
    def requestExit(self):
        DistributedInteractive.DistributedInteractive.requestExit(self)
        taskMgr.remove('tryFishingSpotAgain')
        if self.onABoat and self.oldAvatarPos:
            localAvatar.setPos(self.oldAvatarPos)
            self.oldAvatarPos = None
        
        if not localAvatar.gameFSM.isInTransition():
            localAvatar.b_setGameState(localAvatar.gameFSM.defaultState)
        
        self.loadingSequence.pause()
        self.loadingSequence.clearToInitial()
        base.transitions.fadeIn(self.fadeTime)
        if self.fishingGame is not None:
            self.fishingGame.delete()
            self.fishingGame = None
        
        if self.prevBaseCamParent is not None:
            base.cam.reparentTo(self.prevBaseCamParent)
            base.cam.setPos(self.prevCamPos)
            base.cam.setHpr(self.prevCamHpr)
            self.prevBaseCamParent = None
            self.prevCamPos = None
            self.prevCamHpr = None
        
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        localAvatar.motionFSM.on()
        self.setAllowInteract(True)
        base.localAvatar.guiMgr.setIgnoreEscapeHotKey(False)
        self.refreshState()

    
    def checkAndLoadFishingGame(self):
        localAvatar.b_setGameState('Fishing')
        if self.fishingGame is None:
            self.fishingGame = FishingGame(self)
        
        if self.onABoat:
            self.oldAvatarPos = localAvatar.getPos()
            localAvatar.collisionGhost()
            localAvatar.setPos(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['pos'])
            localAvatar.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['hpr'])
            self.setHpr(*FishingGlobals.fishingSpotPosHprBoatInformation[self.index]['fishingSpotHpr'])
            base.cam.reparentTo(self.fishingGame.fishingSpot)
            base.cam.setPos(13.0, -18.0, 7.0)
            base.cam.setHpr(0.0, 0.0, 0.0)
        else:
            par = localAvatar.getParentObj()
            uid = par.getUniqueId()
            if uid == LocationIds.DEL_FUEGO_ISLAND:
                localAvatar.setHpr(50.0, 0.0, 0.0)
            elif localAvatar.onWelcomeWorld:
                localAvatar.setHpr(self.getH(render) - 196.0, 0.0, 0.0)
            else:
                localAvatar.setHpr(self.getH(render) - 16.0, 0.0, 0.0)
            localAvatar.setPos(self, Point3(*FishingGlobals.fishingSpotPosOffset))
            base.cam.reparentTo(self.fishingGame.fishingSpot)
            base.cam.setHpr(0.0, 0.0, 0.0)
        localAvatar.sendCurrentPosition()

    
    def requestPlayerIdleState(self, task = None):
        if base.localAvatar.find('**/fishingRod').isEmpty():
            taskMgr.doMethodLater(0.5, self.requestPlayerIdleState, name = 'tryFishingSpotAgain')
        else:
            self.fishingGame.fsm.request('PlayerIdle')
            self.fishingGame.checkLures()

    
    def enterUse(self):
        DistributedInteractive.DistributedInteractive.enterUse(self)
        self.prevBaseCamParent = base.cam.getParent()
        self.prevCamPos = base.cam.getPos()
        self.prevCamHpr = base.cam.getHpr()
        if not base.transitions.fadeOutActive():
            self.loadingSequence = Sequence(Func(self.fadeOut), Wait(self.fadeTime + 0.10000000000000001), Func(self.checkAndLoadFishingGame), Wait(1.5), Func(self.requestPlayerIdleState), Func(self.fadeIn))
            self.loadingSequence.start()
        else:
            print '--------------------- DistributedFishingSpot : Trouble fading out!'
        taskMgr.doMethodLater(FishingGlobals.idleDuration, self.bootFromFishing, self.uniqueName('bootFromFishing'))
        self.accept('mouse1', self.resetBootCheck)
        self.accept('fishing-skill-used', self.resetBootCheck)
        self.accept('newItemHeld', self.resetBootCheck)
        self.accept('releaseHeld', self.resetBootCheck)
        self.accept('plunderClosed', self.requestPlayerIdle)

    
    def fadeOut(self):
        base.transitions.setFadeColor(0, 0, 0)
        if base.transitions.fadeOutActive():
            return None
        
        base.transitions.fadeOut(self.fadeTime)
        base.localAvatar.guiMgr.inventoryUIManager.hidePlunder()
        base.loadingScreen.showTarget(fishing = True)
        base.cr.loadingScreen.show()

    
    def fadeIn(self):
        base.transitions.fadeIn(self.fadeTime)
        base.musicMgr.request(SoundGlobals.MUSIC_MINIGAME_FISHING, looping = True, priority = 1)
        base.cr.loadingScreen.hide()
        base.localAvatar.guiMgr.inventoryUIManager.showPlunder()

    
    def exitUse(self):
        self.ignoreAll()
        DistributedInteractive.DistributedInteractive.exitUse(self)
        base.musicMgr.requestFadeOut(SoundGlobals.MUSIC_MINIGAME_FISHING)

    
    def firstTimeFisher(self):
        self.showTutorial = True

    
    def spotFilledByAvId(self, avId):
        if avId == 0:
            self.setAllowInteract(True)
            self.showTutorial = False
            return None
        
        if base.localAvatar.doId != avId:
            self.setAllowInteract(False)
        

    
    def delete(self):
        self.ignoreAll()
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        if self.fishingGame is not None:
            self.fishingGame.delete()
            del self.fishingGame
        
        if self.prevBaseCamParent is not None:
            base.cam.reparentTo(self.prevBaseCamParent)
            base.cam.setPos(self.prevCamPos)
            base.cam.setHpr(self.prevCamHpr)
            self.prevBaseCamParent = None
            self.prevCamPos = None
            self.prevCamHpr = None
        
        DistributedInteractive.DistributedInteractive.delete(self)

    
    def b_setIndex(self, index):
        self.index = index
        self.sendUpdate('setIndex', [
            index])

    
    def setIndex(self, index):
        self.index = index

    
    def getIndex(self):
        return self.index

    
    def d_caughtFish(self, fishId, weight):
        self.sendUpdate('caughtFish', [
            fishId,
            weight])

    
    def lostLure(self, lureId):
        pass

    
    def d_lostLure(self, lureId):
        self.sendUpdate('lostLure', [
            lureId])

    
    def handleEndInteractKey(self):
        if self.fishingGame or not self.fishingGame.gui.resultsScreen.isHidden() or localAvatar.guiMgr.inventoryUIManager.hasPlunder():
            return None
        
        if self._DistributedFishingSpot__dialog == None:
            self._DistributedFishingSpot__dialog = PDialog(text = PLocalizer.FishingGui['ExitText'], style = OTPDialog.YesNo, giveMouse = False, command = self._DistributedFishingSpot__onDialogItemSelected)
        else:
            self._DistributedFishingSpot__dialog.cleanup()
            self._DistributedFishingSpot__dialog = None

    
    def _DistributedFishingSpot__onDialogItemSelected(self, value):
        if value == 1:
            self.requestExit()
        
        self._DistributedFishingSpot__dialog.cleanup()
        self._DistributedFishingSpot__dialog = None

    
    def bootFromFishing(self, task = None):
        self.requestExit()

    
    def resetBootCheck(self, arg1 = None, arg2 = None):
        taskMgr.remove(self.uniqueName('bootFromFishing'))
        taskMgr.doMethodLater(FishingGlobals.idleDuration, self.bootFromFishing, self.uniqueName('bootFromFishing'))

    
    def requestPlayerIdle(self, arg1 = None):
        if self.fishingGame.fsm.getCurrentOrNextState() == 'Reward':
            self.fishingGame.fsm.request('PlayerIdle')
        

    
    def startLooting(self, plunderList, itemsToTake = 0, timer = 0, autoShow = False, customName = None):
        Lootable.startLooting(self, plunderList, itemsToTake, timer = timer, autoShow = autoShow, customName = PLocalizer.FoundFishing)
        if self.fishingGame and not self.fishingGame.gui.resultsScreen.isHidden():
            localAvatar.guiMgr.inventoryUIManager.hidePlunder()