Remove player bot scripts

This commit is contained in:
Ceikry
2021-06-22 12:58:02 -05:00
parent d07e9a25c8
commit 2c58c52016
10 changed files with 0 additions and 749 deletions
@@ -1,78 +0,0 @@
package rs09.game.ai.general.scriptrepository
import core.game.world.map.Location
import org.rs09.consts.Items
import rs09.game.ai.general.ScriptAPI
@PlayerCompatible
@ScriptName("Chicken Killer")
@ScriptDescription("Kills chickens and loots feathers. Start in any chicken area.")
@ScriptIdentifier("chicken_killer")
class ChickenKiller : Script(){
var state = State.INIT
var chickenCounter = 0
var overlay: ScriptAPI.BottingOverlay?= null
var startLocation = Location(0,0,0)
var timer = 3
var lootFeathers = false
override fun tick() {
when(state){
State.INIT -> {
overlay = scriptAPI.getOverlay()
overlay!!.init()
overlay!!.setTitle("Chickens")
overlay!!.setTaskLabel("Chickens KO'd:")
overlay!!.setAmount(0)
state = State.CONFIG
bot.dialogueInterpreter.sendOptions("Loot Feathers?","Yes","No")
bot.dialogueInterpreter.addAction{player,button ->
lootFeathers = button == 2
state = State.KILLING
}
startLocation = bot.location
}
State.KILLING -> {
val chicken = scriptAPI.getNearestNode("Chicken")
if(chicken == null){
scriptAPI.randomWalkTo(startLocation,3)
} else {
scriptAPI.attackNpcInRadius(bot,"Chicken",10)
if(lootFeathers) {
state = State.IDLE
timer = 4
}
chickenCounter++
overlay!!.setAmount(chickenCounter)
}
}
State.IDLE -> {
if(timer-- <= 0){
state = State.LOOTING
}
}
State.LOOTING -> {
scriptAPI.takeNearestGroundItem(Items.FEATHER_314)
state = State.KILLING
}
}
}
override fun newInstance(): Script {
return this
}
enum class State {
IDLE,
INIT,
KILLING,
LOOTING,
RETURN,
CONFIG
}
}
@@ -1,160 +0,0 @@
package rs09.game.ai.general.scriptrepository
import core.game.interaction.DestinationFlag
import core.game.interaction.MovementPulse
import core.game.node.Node
import core.game.node.entity.skill.Skills
import core.game.node.item.Item
import core.game.world.map.zone.ZoneBorders
import org.rs09.consts.Items
import rs09.game.ai.general.ScriptAPI
import rs09.game.ai.skillingbot.SkillingBotAssembler
import rs09.game.interaction.InteractionListener
import rs09.game.interaction.InteractionListeners
@PlayerCompatible
@ScriptName("Falador Coal Miner")
@ScriptDescription("Start in Falador East Bank with a pick equipped","or in your inventory.")
@ScriptIdentifier("fally_coal")
class CoalMiner() : Script() {
var state = State.INIT
var ladderSwitch = false
val bottomLadder = ZoneBorders(3016,9736,3024,9742)
val topLadder = ZoneBorders(3016,3336,3022,3342)
val mine = ZoneBorders(3027,9733,3054,9743)
val bank = ZoneBorders(3009,3355,3018,3358)
var overlay: ScriptAPI.BottingOverlay? = null
var coalAmount = 0
override fun tick() {
when(state){
State.INIT -> {
overlay = scriptAPI.getOverlay()
ladderSwitch = true
overlay!!.init()
overlay!!.setTitle("Mining")
overlay!!.setTaskLabel("Coal Mined:")
overlay!!.setAmount(0)
if (mine.insideBorder(bot)){
ladderSwitch = false
state = State.MINING
} else {
state = State.TO_MINE
}
}
State.MINING -> {
if(bot.inventory.freeSlots() == 0){
state = State.TO_BANK
}
if(!mine.insideBorder(bot)){
scriptAPI.walkTo(mine.randomLoc)
} else {
val rock = scriptAPI.getNearestNode("rocks",true)
rock?.let { InteractionListeners.run(rock.id, InteractionListener.OBJECT,"mine",bot,rock) }
}
overlay!!.setAmount(bot.inventory.getAmount(Items.COAL_453) + coalAmount)
}
State.TO_BANK -> {
if(bank.insideBorder(bot)){
val bank = scriptAPI.getNearestNode("bank booth",true)
if(bank != null) {
bot.pulseManager.run(object : BankingPulse(this, bank){
override fun pulse(): Boolean {
state = State.BANKING
return super.pulse()
}
})
}
} else {
if(!ladderSwitch) {
val ladder = scriptAPI.getNearestNode(30941, true)
ladder ?: scriptAPI.walkTo(bottomLadder.randomLoc).also { return }
ladder?.interaction?.handle(bot, ladder.interaction[0]).also { ladderSwitch = true }
} else {
if (!bank.insideBorder(bot)) scriptAPI.walkTo(bank.randomLoc).also { return }
}
}
}
State.BANKING -> {
coalAmount += bot.inventory.getAmount(Items.COAL_453)
scriptAPI.bankItem(Items.COAL_453)
state = State.TO_MINE
}
State.TO_MINE -> {
if(ladderSwitch){
if(!topLadder.insideBorder(bot.location)){
scriptAPI.walkTo(topLadder.randomLoc)
} else {
val ladder = scriptAPI.getNearestNode("Ladder",true)
if(ladder != null){
ladder.interaction.handle(bot,ladder.interaction[0])
ladderSwitch = false
} else {
scriptAPI.walkTo(topLadder.randomLoc)
}
}
} else {
if(!mine.insideBorder(bot)){
scriptAPI.walkTo(mine.randomLoc)
} else {
state = State.MINING
}
}
}
State.TO_GE -> {
scriptAPI.teleportToGE()
state = State.SELLING
}
State.SELLING -> {
scriptAPI.sellOnGE(Items.COAL_453)
state = State.GO_BACK
}
State.GO_BACK -> {
scriptAPI.teleport(bank.randomLoc)
state = State.TO_MINE
}
}
}
open class BankingPulse(val script: Script, val bank: Node) : MovementPulse(script.bot,bank, DestinationFlag.OBJECT){
override fun pulse(): Boolean {
script.bot.faceLocation(bank.location)
return true
}
}
override fun newInstance(): Script {
val script = CoalMiner()
script.bot = SkillingBotAssembler().produce(SkillingBotAssembler.Wealth.POOR,bot.startLocation)
return script
}
enum class State {
MINING,
TO_MINE,
TO_BANK,
BANKING,
TO_GE,
SELLING,
GO_BACK,
INIT
}
init {
equipment.add(Item(Items.IRON_PICKAXE_1267))
skills.put(Skills.MINING,75)
}
}
@@ -1,93 +0,0 @@
package rs09.game.ai.general.scriptrepository
import core.game.component.Component
import core.game.interaction.DestinationFlag
import core.game.interaction.MovementPulse
import core.game.node.entity.skill.Skills
import core.game.node.item.Item
import core.game.world.map.zone.ZoneBorders
import org.rs09.consts.Items
import rs09.game.interaction.InteractionListener
import rs09.game.interaction.InteractionListeners
import rs09.tools.stringtools.colorize
@PlayerCompatible
@ScriptName("Draynor Willows")
@ScriptDescription("Start in Draynor with an axe equipped or in inventory.")
@ScriptIdentifier("draynor_trees")
class DraynorWillows : Script(){
val willowZone = ZoneBorders(3084, 3225,3091, 3239)
val bankZone = ZoneBorders(3092, 3240,3094, 3246)
var state = State.INIT
var logCount = 0
override fun tick() {
when(state){
State.INIT -> {
if(true){
bot.interfaceManager.openOverlay(Component(195))
bot.packetDispatch.sendString("Woodcutting",195,7)
bot.packetDispatch.sendString(colorize("%BLogs Chopped:"),195,8)
bot.packetDispatch.sendString(colorize("%B0"),195,9)
bot.packetDispatch.sendInterfaceConfig(195,5,true)
}
state = State.CHOPPING
}
State.CHOPPING -> {
if (!willowZone.insideBorder(bot))
scriptAPI.walkTo(willowZone.randomLoc)
else {
val willowtree = scriptAPI.getNearestNode("willow", true)
willowtree?.let { InteractionListeners.run(willowtree.id,
InteractionListener.OBJECT,"chop",bot,willowtree) }
if (bot.inventory.isFull)
state = State.BANKING
}
bot.packetDispatch.sendString(colorize("%B${logCount + bot.inventory.getAmount(Items.WILLOW_LOGS_1519)}"), 195, 9)
}
State.BANKING -> {
if(!bankZone.insideBorder(bot))
scriptAPI.walkTo(bankZone.randomLoc)
else{
val bank = scriptAPI.getNearestNode("Bank Booth",true)
if(bank != null){
bot.pulseManager.run(object : MovementPulse(bot,bank, DestinationFlag.OBJECT){
override fun pulse(): Boolean {
val logs = bot.inventory.getAmount(Item(Items.WILLOW_LOGS_1519))
logCount += logs
bot.inventory.remove(Item(Items.WILLOW_LOGS_1519,logs))
bot.bank.add(Item(Items.WILLOW_LOGS_1519,logs))
state = State.CHOPPING
return true
}
})
}
}
}
}
}
init {
inventory.add(Item(Items.ADAMANT_AXE_1357))
skills[Skills.WOODCUTTING] = 35
}
override fun newInstance(): Script {
val script = DraynorWillows()
return script
}
enum class State {
CHOPPING,
BANKING,
INIT
}
}
@@ -1,197 +0,0 @@
package rs09.game.ai.general.scriptrepository
import core.game.interaction.DestinationFlag
import core.game.interaction.MovementPulse
import core.game.node.entity.skill.Skills
import core.game.node.item.Item
import core.game.system.task.Pulse
import core.game.world.map.Location
import core.game.world.map.path.Pathfinder
import core.game.world.update.flag.context.Animation
import core.game.world.update.flag.context.Graphics
import core.tools.RandomFunction
import org.rs09.consts.Items
import rs09.game.ai.AIPlayer
import rs09.game.ai.general.ScriptAPI
import rs09.game.interaction.InteractionListener
import rs09.game.interaction.InteractionListeners
import rs09.game.world.GameWorld
import kotlin.random.Random
@PlayerCompatible
@ScriptName("Catherby Lobs")
@ScriptDescription("Start in Catherby bank with a lobster pot in your inventory.")
@ScriptIdentifier("cath_lobs")
class LobsterCatcher : Script() {
private val ANIMATION = Animation(714)
val offers = HashMap<Int, Int>()
val limit = 2000
var myCounter = 0
/**
* Represents the graphics to use.
*/
private val GRAPHICS = Graphics(308, 100, 50)
internal enum class Sets(val equipment: List<Item>) {
SET_1(listOf(Item(2643), Item(9470), Item(10756), Item(10394), Item(88), Item(9793))),
SET_2(listOf(Item(2643), Item(6585), Item(10750), Item(10394), Item(88), Item(9793))),
SET_3(listOf(Item(9472), Item(9470), Item(10750), Item(10394), Item(88), Item(9786))),
SET_4(listOf(Item(2639), Item(6585), Item(10752), Item(10394), Item(88), Item(9786))),
SET_5(listOf(Item(2639), Item(9470), Item(10750), Item(10394), Item(88), Item(9784))),
SET_6(listOf(Item(2639), Item(6585), Item(10750), Item(10394), Item(88), Item(9784)));
}
private var bots = 0
private var lobstopper = false
var overlay: ScriptAPI.BottingOverlay?= null
var fishCounter = 0
private var state = State.INIT
private var tick = 0
override fun tick() {
when(state){
State.INIT -> {
overlay = scriptAPI.getOverlay()
overlay!!.init()
overlay!!.setTitle("Fishing")
overlay!!.setTaskLabel("Lobs Caught:")
overlay!!.setAmount(0)
state = State.FIND_SPOT
}
State.BANKING -> {
fishCounter += bot.inventory.getAmount(Items.RAW_LOBSTER_377)
scriptAPI.bankItem(Items.RAW_LOBSTER_377)
state = State.IDLE
}
State.FISHING -> {
val spot = scriptAPI.getNearestNode(333, false)
if(spot == null){
state = State.IDLE
} else {
InteractionListeners.run(spot.id,InteractionListener.NPC,"cage",bot,spot)
}
if(bot.inventory.isFull){
state = State.FIND_BANK
}
overlay!!.setAmount(fishCounter + bot.inventory.getAmount(Items.RAW_LOBSTER_377))
}
State.IDLE -> {
if (Random.nextBoolean()){
state = State.FIND_SPOT
}
else if(myCounter++ >= RandomFunction.random(1,25)){
state = State.FIND_SPOT
}
}
State.FIND_SPOT -> {
val spot = scriptAPI.getNearestNode(333, false)
if (spot != null) {
bot.walkingQueue.reset()
state = State.FISHING
} else {
if (bot.location.x < 2837) {
Pathfinder.find(bot, Location.create(2837, 3435, 0)).walk(bot)
} else {
Pathfinder.find(bot, Location.create(2854, 3427, 0)).walk(bot)
}
}
}
State.FIND_BANK -> {
val bank = scriptAPI.getNearestGameObject(bot.location, 2213)
class BankingPulse : MovementPulse(bot, bank, DestinationFlag.OBJECT) {
override fun pulse(): Boolean {
bot.faceLocation(bank!!.location)
state = State.BANKING
return true
}
}
if(bank != null){
bot.pulseManager.run(BankingPulse())
} else {
if (bot.location.x > 2837) {
Pathfinder.find(bot, Location.create(2837, 3435, 0)).walk(bot)
} else if (bot.location.x > 2821) {
Pathfinder.find(bot, Location.create(2821, 3435, 0)).walk(bot)
} else if (bot.location.x > 2809){
Pathfinder.find(bot,Location.create(2809, 3436, 0)).walk(bot)
}
}
}
State.TELEPORT_GE -> {
scriptAPI.teleportToGE()
state = State.SELL_GE
}
State.SELL_GE -> {
scriptAPI.sellOnGE(Items.RAW_LOBSTER_377)
state = State.TELE_CATH
}
State.TELE_CATH -> {
if(tick++ == 10) {
bot.lock()
bot.visualize(ANIMATION, GRAPHICS)
bot.impactHandler.disabledTicks = 4
val location = Location.create(2819, 3437, 0)
GameWorld.Pulser.submit(object : Pulse(4, bot) {
override fun pulse(): Boolean {
bot.unlock()
bot.properties.teleportLocation = location
bot.animator.reset()
state = State.IDLE
return true
}
})
}
}
}
}
init {
val setUp = RandomFunction.random(Sets.values().size)
equipment.addAll(Sets.values()[setUp].equipment)
inventory.add(Item(301))
skills[Skills.FISHING] = 40
}
enum class State{
FISHING,
BANKING,
FIND_BANK,
FIND_SPOT,
TELEPORT_GE,
SELL_GE,
TELE_CATH,
IDLE,
INIT
}
override fun newInstance(): Script {
if (!lobstopper && bots <= 0) {
val script = LobsterCatcher()
script.bot = AIPlayer(bot.startLocation)
script.state = State.FIND_SPOT
bots = 1
return script
}else if (tick++ == 6000 && lobstopper) {
tick = 0
lobstopper = false
}
return newInstance()
}
}
@@ -1,19 +0,0 @@
package rs09.game.ai.general.scriptrepository
import io.github.classgraph.ClassGraph
object PlayerScripts {
class PlayerScript(val identifier: String, val description: Array<String>, val name: String, val clazz: Class<*>)
val identifierMap = HashMap<String,PlayerScript>()
fun init(){
val result = ClassGraph().enableAnnotationInfo().acceptPackages("rs09.game.ai.general.scriptrepository").scan()
result.getClassesWithAnnotation("rs09.game.ai.general.scriptrepository.PlayerCompatible").forEach { res ->
val description = res.getAnnotationInfo("rs09.game.ai.general.scriptrepository.ScriptDescription").parameterValues[0].value as Array<String>
val identifier = res.getAnnotationInfo("rs09.game.ai.general.scriptrepository.ScriptIdentifier").parameterValues[0].value.toString()
val name = res.getAnnotationInfo("rs09.game.ai.general.scriptrepository.ScriptName").parameterValues[0].value.toString()
identifierMap[identifier] = PlayerScript(identifier,description,name,res.loadClass())
}
}
}
@@ -1,117 +0,0 @@
package rs09.game.ai.general.scriptrepository
import core.game.interaction.DestinationFlag
import core.game.interaction.MovementPulse
import core.game.node.entity.skill.Skills
import core.game.node.item.Item
import core.game.world.map.Location
import core.game.world.map.zone.ZoneBorders
import core.tools.RandomFunction
import org.rs09.consts.Items
import rs09.game.ai.general.ScriptAPI
import rs09.game.ai.skillingbot.SkillingBotAssembler
import rs09.game.interaction.InteractionListener
import rs09.game.interaction.InteractionListeners
@PlayerCompatible
@ScriptName("Seers Magics")
@ScriptDescription("Start in Seers Bank with an axe equipped or in your inventory.")
@ScriptIdentifier("seers_magics")
class SeersMagicTrees : Script(){
var state = State.INIT
var stage = 0
val bankZone = ZoneBorders(2722,3490,2727,3493)
val magicsZone = ZoneBorders(2700, 3396,2704, 3399)
var overlay: ScriptAPI.BottingOverlay? = null
var logCounter = 0
override fun tick() {
when(state){
State.INIT -> {
overlay = scriptAPI.getOverlay()
overlay!!.init()
overlay!!.setTitle("Woodcutting")
overlay!!.setTaskLabel("Logs cut:")
overlay!!.setAmount(0)
state = State.RETURN_TO_TREES
}
State.CHOPPING -> {
val tree = scriptAPI.getNearestNode(1306,true)
tree?.let { InteractionListeners.run(tree.id, InteractionListener.OBJECT,"chop",bot,tree) }
if(bot.inventory.isFull){
state = State.FIND_BANK
}
overlay!!.setAmount(logCounter + bot.inventory.getAmount(Items.MAGIC_LOGS_1513))
}
State.FIND_BANK -> {
if(!bankZone.insideBorder(bot)){
scriptAPI.walkTo(bankZone.randomLoc)
} else {
state = State.BANKING
}
}
State.BANKING -> {
val bank = scriptAPI.getNearestNode(25808,true)
if(bank != null)
bot.pulseManager.run(object: MovementPulse(bot,bank, DestinationFlag.OBJECT){
override fun pulse(): Boolean {
bot.faceLocation(bank.location)
logCounter += bot.inventory.getAmount(Items.MAGIC_LOGS_1513)
scriptAPI.bankItem(Items.MAGIC_LOGS_1513)
state = State.RETURN_TO_TREES
return true
}
})
}
State.RETURN_TO_TREES -> {
if(!magicsZone.insideBorder(bot)){
scriptAPI.walkTo(magicsZone.randomLoc)
} else {
state = State.CHOPPING
}
}
State.TELE_GE -> {
state = State.SELL_GE
scriptAPI.teleportToGE()
}
State.SELL_GE -> {
state = State.TELE_SEERS
scriptAPI.sellOnGE(Items.MAGIC_LOGS_1513)
}
State.TELE_SEERS -> {
state = State.RETURN_TO_TREES
scriptAPI.teleport(Location.create(2756, 3478, 0))
}
}
}
init {
inventory.add(Item(Items.RUNE_AXE_1359))
skills[Skills.WOODCUTTING] = RandomFunction.random(75,99)
}
enum class State {
CHOPPING,
FIND_BANK,
BANKING,
RETURN_TO_TREES,
TELE_GE,
SELL_GE,
TELE_SEERS,
INIT
}
override fun newInstance(): Script {
val script = SeersMagicTrees()
script.bot = SkillingBotAssembler().produce(SkillingBotAssembler.Wealth.AVERAGE,bot.startLocation)
return script
}
}
@@ -20,8 +20,6 @@ import core.plugin.Plugin
import core.tools.RandomFunction
import rs09.game.ai.AIPBuilder
import rs09.game.ai.AIPlayer
import rs09.game.ai.general.GeneralBotCreator
import rs09.game.ai.general.scriptrepository.LobsterCatcher
import rs09.game.ai.pvmbots.PvMBotsBuilder
import rs09.game.ai.pvp.PVPAIPActions
import rs09.game.ai.pvp.PVPAIPBuilderUtils
@@ -309,7 +307,6 @@ class AIPCommandPlugin : CommandPlugin() {
return true
}
//"manthiev" -> GeneralBotCreator(player.location, ManThiever())
"fish" -> GeneralBotCreator(Location.create(2805, 3435, 0), LobsterCatcher())
}
return false
}
@@ -1,71 +0,0 @@
package rs09.game.system.command.sets
import core.game.component.Component
import core.plugin.Initializable
import org.rs09.consts.Components
import rs09.game.ai.general.GeneralBotCreator
import rs09.game.ai.general.scriptrepository.PlayerScripts
import rs09.game.ai.general.scriptrepository.Script
import rs09.game.system.command.Command
import rs09.game.world.GameWorld
import rs09.tools.stringtools.colorize
@Initializable
class BottingCommandSet : CommandSet(Command.Privilege.STANDARD) {
override fun defineCommands() {
define("scripts"){player, _ ->
if(GameWorld.settings?.enabled_botting != true){
player.sendChat("I just tried to do something silly!")
return@define
}
if(!player.getAttribute("botting:warning_shown",false)){
player.dialogueInterpreter.sendDialogue(colorize("%RWARNING: Running a bot script will permanently remove you"),colorize("%Rfrom the highscores."))
player.dialogueInterpreter.addAction { player, buttonId -> player.setAttribute("/save:botting:warning_shown",true) }
return@define
}
for (i in 0..310) {
player.packetDispatch.sendString("", 275, i)
}
var lineid = 11
player.packetDispatch.sendString("Bot Scripts",275,2)
for(script in PlayerScripts.identifierMap.values) {
player.packetDispatch.sendString("<bold>${script.name}</bold>", 275, lineid++)
script.description.forEach { line ->
player.packetDispatch.sendString(line,275,lineid++)
}
player.packetDispatch.sendString("<img=3> ::script ${script.identifier}",275,lineid++)
player.packetDispatch.sendString("<str> </str>",275,lineid++)
}
player.interfaceManager.open(Component(Components.QUESTJOURNAL_SCROLL_275))
}
define("script"){player,args ->
if(GameWorld.settings?.enabled_botting != true){
player.sendChat("I just tried to do something very silly!")
return@define
}
if(!player.getAttribute("botting:warning_shown",false)){
player.dialogueInterpreter.sendDialogue(colorize("%RWARNING: Running a bot script will permanently remove you from the highscores."))
player.dialogueInterpreter.addAction { player, buttonId -> player.setAttribute("/save:botting:warning_shown",true) }
return@define
}
if(args.size < 2){
reject(player,"Usage: ::script identifier")
}
val identifier = args[1]
val script = PlayerScripts.identifierMap[identifier]
if(script == null){
reject(player,"Invalid script identifier")
}
player.interfaceManager.close()
GeneralBotCreator(script!!.clazz.newInstance() as Script,player,true)
player.sendMessage(colorize("%RStarting script..."))
player.sendMessage(colorize("%RTo stop the script, do ::stopscript or log out."))
}
define("stopscript"){player,args ->
val pulse: GeneralBotCreator.BotScriptPulse? = player.getAttribute("botting:script",null)
pulse?.stop()
player.interfaceManager.closeOverlay()
}
}
}
@@ -15,7 +15,6 @@ import core.game.world.map.RegionManager
import core.plugin.CorePluginTypes.StartupPlugin
import core.tools.RandomFunction
import core.tools.mysql.DatabaseManager
import rs09.game.ai.general.scriptrepository.PlayerScripts
import rs09.ServerConstants
import rs09.game.node.entity.state.newsys.StateRepository
import rs09.game.system.SystemLogger
@@ -152,7 +151,6 @@ object GameWorld {
}
ObjectDefinition.getDefinitions().values.forEach(Consumer { obj: ObjectDefinition -> obj.examine })
System.gc()
PlayerScripts.init()
StateRepository.init()
SystemLogger.initTradeLogger()
}
@@ -41,11 +41,9 @@ object ImmerseWorld {
}
fun immerseSeersAndCatherby(){
GeneralBotCreator(SeersMagicTrees(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.AVERAGE, Location.create(2702, 3397, 0)))
GeneralBotCreator(SeersFlax(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR, Location.create(2738, 3444, 0)))
GeneralBotCreator(FletchingBankstander(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.AVERAGE, Location.create(2722, 3493, 0)))
GeneralBotCreator(GlassBlowingBankstander(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.AVERAGE, Location.create(2807, 3441, 0)))
GeneralBotCreator(Location.create(2805, 3435, 0), LobsterCatcher())
}
fun immerseLumbridgeDraynor(){
@@ -55,9 +53,6 @@ object ImmerseWorld {
GeneralBotCreator(ManThiever(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3235, 3213, 0)))
GeneralBotCreator(FarmerThiever(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3094,3243,0)))
GeneralBotCreator(FarmerThiever(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3094,3243,0)))
GeneralBotCreator(DraynorWillows(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.values().random(),Location.create(3094, 3245, 0)))
GeneralBotCreator(DraynorWillows(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.values().random(),Location.create(3094, 3245, 0)))
GeneralBotCreator(DraynorWillows(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.values().random(),Location.create(3094, 3245, 0)))
GeneralBotCreator(DraynorFisher(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3095, 3246, 0)))
GeneralBotCreator(DraynorFisher(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3095, 3246, 0)))
GeneralBotCreator(DraynorFisher(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3095, 3246, 0)))
@@ -83,10 +78,6 @@ object ImmerseWorld {
}
}
fun immerseFalador(){
GeneralBotCreator(CoalMiner(), skillingBotAssembler.produce(SkillingBotAssembler.Wealth.POOR,Location.create(3037, 9737, 0)))
}
fun immerseSlayer(){
GeneralBotCreator(GenericSlayerBot(), assembler.produce(CombatBotAssembler.Type.MELEE,CombatBotAssembler.Tier.HIGH,Location.create(2673, 3635, 0)))
}