diff --git a/Server/src/main/content/minigame/barbassault/bots/BABot.kt b/Server/src/main/content/minigame/barbassault/bots/BABot.kt index a25db4d13..2d4dbfed3 100644 --- a/Server/src/main/content/minigame/barbassault/bots/BABot.kt +++ b/Server/src/main/content/minigame/barbassault/bots/BABot.kt @@ -4,10 +4,10 @@ import content.minigame.barbassault.BarbRole import content.minigame.barbassault.arena.BarbassaultState import content.minigame.barbassault.getBARoleForPlayer import content.minigame.barbassault.getBASession -import content.minigame.barbassault.lobby.BarbassQuickWaveActivity.Companion.addToQueue import content.minigame.barbassault.lobby.BALobby.Companion.MAIN_LOBBY import content.minigame.barbassault.lobby.BALobby.Companion.QUICK_START import content.minigame.barbassault.lobby.BALobby.Companion.waveLobbies +import content.minigame.barbassault.lobby.BarbassQuickWaveActivity.Companion.addToQueue import core.api.forceMove import core.api.getRegionBorders import core.game.bots.CombatBotAssembler @@ -17,134 +17,122 @@ import core.game.node.item.Item import core.game.world.map.Location import org.rs09.consts.Scenery -class BABot(l: Location) : PvMBots(legitimizeLocation(l)){ +class BABot(l: Location) : PvMBots(legitimizeLocation(l)) { + init { CombatBotAssembler().gearPCiMeleeBot(this) - val icape: Item = this.equipment.get(1) - EquipHandler.unequip(this,1,icape.id) + + val cape: Item? = equipment.get(1) + if (cape != null) { + EquipHandler.unequip(this, 1, cape.id) + } } - var tick = 0 - var combatMoveTimer = 0 - var justStartedGame = true - var movetimer = 0 - val combathandler = BACombatState(this) - var time = 0 - enum class State { OUTSIDE_ROOM, ENTER_ROOM,REFRESH, WAITING_IN_ROOM, PLAY_GAME, GET_TO_BA } + private val combatHandler = BACombatState(this) + private var tickTimer = 0 + private var moveTimer = 0 + + enum class State { GET_TO_BA, OUTSIDE_ROOM, ENTER_ROOM, WAITING_IN_ROOM, PLAY_GAME } override fun tick() { super.tick() - tick++ - time++ - movetimer-- - if (movetimer <= 0) { - movetimer = 0 - customState = "$state$movetimer" - when (state) { - State.OUTSIDE_ROOM -> toBALobby() - State.ENTER_ROOM -> enterRoom() - State.REFRESH -> enterRoom() - State.WAITING_IN_ROOM -> idleInRoom() - State.PLAY_GAME -> doRoleTask() - State.GET_TO_BA -> doRoleTask() - } - } - } - var oneact = false - private fun enterRoom() { - this.sendChat("Attempting.....") - if (!oneact) { - val quickDoor = getClosestNodeWithEntry(2, Scenery.DOOR_20209) - // quickDoor.interaction.handle(this, quickDoor.interaction[0]) - if (quickDoor != null){ - quickDoor.interaction.handle(this, quickDoor.interaction[0]) - // this.dialogueInterpreter.handle(234,1) - this.dialogueInterpreter.handle(234,6) - oneact = true - } + tickTimer++ + moveTimer-- - } - } - private fun idleInRoom() { - //chill, say somethings, walk around in .walkablearea - } - private fun doRoleTask() { - val myRole = getBARoleForPlayer(this) - when (myRole) { - BarbRole.ATTACKER -> combathandler.fightNPCs() - BarbRole.DEFENDER -> combathandler.handleDefender() - BarbRole.COLLECTOR -> combathandler.handleCollector() - BarbRole.HEALER -> combathandler.handleHealer() - null -> return - } - combathandler.chatter() - } + customState = state.name - var switch = false - var diagone = false - private fun toBALobby() { - time = 0 - if (!switch){ - this.teleport(MAIN_LOBBY.randomWalkableLoc) - switch = true + if (moveTimer > 0) { return } - if (switch) { - val quickDoor = getClosestNodeWithEntry(60, Scenery.DOOR_20209) - if (quickDoor == null) { - // switch = false - //this.teleport(MAIN_LOBBY.randomWalkableLoc) - State.OUTSIDE_ROOM - } else { - // switch = false - this.sendChat("Attempting to.....") - quickDoor.interaction.handle(this, quickDoor.interaction[0]) - val quickDoorclose = getClosestNodeWithEntry(2, Scenery.DOOR_20209) - if(quickDoorclose != null) { - if (!diagone){ - forceMove(this, this.location, this.location.transform(0, -1, 0), 25, 60, null, 819){ - addToQueue(this, null) - combathandler.walkToIterator(QUICK_START.randomWalkableLoc) - } - diagone = true - } - - } - // this.dialogueInterpreter.handle(234,6) - State.ENTER_ROOM - } + when (state) { + State.GET_TO_BA -> getToBA() + State.OUTSIDE_ROOM -> outsideRoom() + State.ENTER_ROOM -> enterRoom() + State.WAITING_IN_ROOM -> waitingInRoom() + State.PLAY_GAME -> playGame() } } - fun isInLobbyOnly(location: Location): Boolean { - return getRegionBorders(10322).insideBorder(location) && waveLobbies.none { it != MAIN_LOBBY && it.insideBorder(location) } - } - private val state: State + private val state: State get() { - if (QUICK_START.insideBorder(this.getLocation())) { - return State.WAITING_IN_ROOM - } - if (getBASession(this)?.state == BarbassaultState.IN_ARENA) { + + val session = getBASession(this) + + if (session?.state == BarbassaultState.IN_ARENA) { return State.PLAY_GAME } - if (isInLobbyOnly(this.getLocation())) { - return State.OUTSIDE_ROOM + + if (QUICK_START.insideBorder(location)) { + return State.WAITING_IN_ROOM } - if (getClosestNodeWithEntry(1, Scenery.DOOR_20209) != null) { + if (!isInLobbyOnly(location)) { + return State.WAITING_IN_ROOM + } + + if (getClosestNodeWithEntry(2, Scenery.DOOR_20209) != null) { return State.ENTER_ROOM } - if (time == 1200) { - return State.GET_TO_BA + + if (isInLobbyOnly(location)) { + return State.OUTSIDE_ROOM } + return State.GET_TO_BA } - companion object { - fun legitimizeLocation(l: Location): Location { - return l + private fun getToBA() { + teleport(MAIN_LOBBY.randomWalkableLoc) + moveTimer = 3 + } + + private fun outsideRoom() { + val quickDoor = getClosestNodeWithEntry(60, Scenery.DOOR_20209)?: return + quickDoor.interaction.handle(this, quickDoor.interaction[0]) + moveTimer = 2 + } + + + private fun enterRoom() { + val quickDoor = getClosestNodeWithEntry(2, Scenery.DOOR_20209)?: return + + quickDoor.interaction.handle(this, quickDoor.interaction[0]) + + forceMove(this,location,location.transform(0, -1, 0),25,60,null,819) { + addToQueue(this, null) + combatHandler.walkToIterator(QUICK_START.randomWalkableLoc) + } + + moveTimer = 4 + } + + private fun waitingInRoom() { + if (tickTimer % 50 == 0) { + combatHandler.chatter() } } + private fun playGame() { + when (getBARoleForPlayer(this)) { + BarbRole.ATTACKER -> combatHandler.fightNPCs() + BarbRole.DEFENDER -> combatHandler.handleDefender() + BarbRole.COLLECTOR -> combatHandler.handleCollector() + BarbRole.HEALER -> combatHandler.handleHealer() + null -> return + } + } + + fun isInLobbyOnly(location: Location): Boolean { + return getRegionBorders(10322).insideBorder(location) + && waveLobbies.none {it != MAIN_LOBBY && it.insideBorder(location) + } + } + + companion object { + + fun legitimizeLocation(l: Location): Location { + return l + } + } } \ No newline at end of file diff --git a/Server/src/main/content/minigame/barbassault/bots/BACombatState.kt b/Server/src/main/content/minigame/barbassault/bots/BACombatState.kt index 6c6857efd..b4eb6e484 100644 --- a/Server/src/main/content/minigame/barbassault/bots/BACombatState.kt +++ b/Server/src/main/content/minigame/barbassault/bots/BACombatState.kt @@ -2,6 +2,8 @@ package content.minigame.barbassault.bots import content.minigame.barbassault.BarbRole import content.minigame.barbassault.getBARoleForPlayer +import content.minigame.barbassault.getBASession +import core.api.getRegionBorders import core.game.interaction.MovementPulse import core.game.world.map.Location import core.game.world.map.path.Pathfinder @@ -22,10 +24,14 @@ class BACombatState(val bot: BABot) { } fun handleDefender() { bot.customState = "Lure Runners" + val session = getBASession(bot) ?: return + walkToIterator(session.region.borders.randomWalkableLoc) //bot.AttackNpcsInRadius(25) } fun handleCollector() { bot.customState = "Collecting Eggs" + val session = getBASession(bot) ?: return + walkToIterator(session.region.borders.randomWalkableLoc) //bot.AttackNpcsInRadius(25) } fun handleHealer() { @@ -35,7 +41,7 @@ class BACombatState(val bot: BABot) { fun chatter() { bot.sendChat("LETS GOO!") - if (krng.nextInt(200) != 0) return + if (krng.nextInt(12) != 0) return val role = getBARoleForPlayer(bot) val messages = when (role) { BarbRole.ATTACKER -> listOf("Call pls", "Wrong style?", "Attacking!")