def reevaluate(self):
        if not self.bot.world.trosballManager.enabled:
            self.returnToParent()
            return
        player = self.bot.player
        world = self.bot.world

        if self.nextCheck:
            self.nextCheck.cancel()
        delay = 2.5 + random.random()
        self.nextCheck = world.callLater(delay, self.reevaluate)

        if player.dead:
            pos = world.trosballManager.getPosition()
            zone = world.map.getZoneAtPoint(pos)
            self.setSubGoal(RespawnNearZone(self.bot, self, zone))
        elif player.hasTrosball():
            zoneDef = world.trosballManager.getTargetZoneDefn(player.team)
            self.setSubGoal(None)
            self.bot.moveToOrb(world.zoneWithDef[zoneDef])
        elif world.trosballManager.trosballPlayer:
            self.setSubGoal(None)
            trosballPlayer = world.trosballManager.trosballPlayer
            if player.isFriendsWith(trosballPlayer):
                self.bot.followPlayer(trosballPlayer)
            else:
                self.bot.attackPlayer(trosballPlayer)
        else:
            self.setSubGoal(None)
            self.bot.collectTrosball()
    def reevaluate(self, *args, **kwargs):
        self.cancelNextCheck()

        player = self.bot.player

        if player.dead:
            zone = self.selectZone()
            if zone is None:
                zone = player.getZone()
                if zone is None:
                    zone = random.choice(list(self.bot.world.zones))
            self.setSubGoal(RespawnNearZone(self.bot, self, zone))
            self.scheduleNextCheck()
            return

        if player.getZone() and self.zoneIsOk(player.getZone()):
            # There are enemies here
            self.setSubGoal(MessAroundInZone(self.bot, self))
            self.scheduleNextCheck()
            return

        zone = self.selectZone()
        if zone:
            self.setSubGoal(None)
            self.bot.moveToOrb(zone)
        else:
            self.setSubGoal(MessAroundInZone(self.bot, self))
        self.scheduleNextCheck()
Beispiel #3
0
 def reevaluate(self):
     if self.bot.player.dead:
         zone = self.bot.player.getZone()
         if zone is None:
             zone = random.choice(list(self.bot.world.zones))
         self.setSubGoal(RespawnNearZone(self.bot, self, zone))
     else:
         self.setSubGoal(MessAroundInZone(self.bot, self))
Beispiel #4
0
    def reevaluate(self):
        player = self.bot.player
        if self.zone.owner != player.team:
            self.returnToParent()
            return

        if player.dead:
            self.setSubGoal(RespawnNearZone(self.bot, self, self.zone))
            return

        playerZone = player.getZone()
        if playerZone == self.zone:
            teamsWhoCanTag = self.zone.teamsAbleToTag() - {player.team}
            if teamsWhoCanTag:
                # Our only hope is to kill someone
                self.setSubGoal(KillEnemyInZone(self.bot, self))
            else:
                self.setSubGoal(MessAroundInZone(self.bot, self))
        else:
            self.bot.moveToOrb(self.zone)
Beispiel #5
0
    def reevaluate(self):
        player = self.bot.player
        if self.zone.owner == player.team:
            self.returnToParent()
            return

        if not self.zone.adjacentToAnotherZoneOwnedBy(player.team):
            self.returnToParent()
            return

        if player.dead:
            self.setSubGoal(RespawnNearZone(self.bot, self, self.zone))
            return

        playerZone = player.getZone()
        if playerZone == self.zone:
            if self.zone.isCapturableBy(player.team):
                self.bot.moveToOrb(self.zone)
            else:
                self.setSubGoal(KillEnemyInZone(self.bot, self))
        else:
            self.bot.moveToZone(self.zone)
Beispiel #6
0
    def reevaluate(self):
        if not (self.huntedPlayer and self.isEnemyRabbit(self.huntedPlayer)):
            rabbits = [
                p for p in self.bot.world.players if self.isEnemyRabbit(p)]
            if not rabbits:
                if self.bot.player.dead:
                    self.bot.respawn()
                    return

                # All survining rabbits are on this player's team
                self.setSubGoal(RunAway(self.bot, self))
                return
            self.huntedPlayer = random.choice(rabbits)

        if self.bot.player.dead:
            rabbitZone = self.huntedPlayer.getZone()
            if rabbitZone is None:
                self.bot.respawn()
            else:
                self.setSubGoal(RespawnNearZone(self.bot, self, rabbitZone))
            return

        self.bot.attackPlayer(self.huntedPlayer)