Added Gnome Bowstring Script
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
package rs09.game.ai.general.scriptrepository
|
||||
|
||||
import api.ContentAPI
|
||||
import core.game.interaction.DestinationFlag
|
||||
import core.game.interaction.MovementPulse
|
||||
import core.game.node.entity.skill.crafting.spinning.SpinningItem
|
||||
import core.game.node.entity.skill.crafting.spinning.SpinningPulse
|
||||
import core.game.node.item.Item
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.path.Pathfinder
|
||||
import core.game.world.map.zone.ZoneBorders
|
||||
import org.rs09.consts.Items
|
||||
import rs09.game.ai.general.ScriptAPI
|
||||
|
||||
@PlayerCompatible
|
||||
@ScriptName("Gnome Stronghold Bowstring")
|
||||
@ScriptDescription("Start in Gnome Stronghold, South of the Agility Course")
|
||||
@ScriptIdentifier("gnome_bowstring")
|
||||
class GnomeBowstring : Script() {
|
||||
var state = State.PICKING
|
||||
var stage = 0
|
||||
var bLadderSwitch = false
|
||||
var sLadderSwitch = false
|
||||
val flaxzone = ZoneBorders(2457,3391,2493,3413,0)
|
||||
val bankbottomLadder = ZoneBorders(2444, 3413, 2445, 3414, 0)
|
||||
val banktopLadder = ZoneBorders(2445, 3415, 2446, 3414, 1)
|
||||
val spinnerbottomLadder = ZoneBorders (2475, 3400, 2476, 3399, 0)
|
||||
val spinnertopLadder = ZoneBorders (2474, 3397, 2476, 3399, 1)
|
||||
val pick = ZoneBorders(2478, 3394, 339, 9)
|
||||
val bank = ZoneBorders(2447, 3415, 2444, 3434)
|
||||
var overlay: ScriptAPI.BottingOverlay? = null
|
||||
override fun tick() {
|
||||
|
||||
when(state){
|
||||
|
||||
State.INIT -> {
|
||||
overlay = scriptAPI.getOverlay()
|
||||
overlay!!.init()
|
||||
overlay!!.setTitle("Picking")
|
||||
overlay!!.setTaskLabel("Flax Picked")
|
||||
overlay!!.setAmount(0)
|
||||
}
|
||||
|
||||
State.PICKING -> {
|
||||
bot.interfaceManager.close()
|
||||
if(!flaxzone.insideBorder(bot)){
|
||||
scriptAPI.walkTo(flaxzone.randomLoc)
|
||||
} else if(flaxzone.insideBorder(bot)) {
|
||||
var flax = scriptAPI.getNearestNode(2646, true)
|
||||
scriptAPI.interact(bot,flax,"pick")
|
||||
}
|
||||
if(bot.inventory.getAmount(Items.FLAX_1779) > 27){
|
||||
sLadderSwitch = true
|
||||
state = State.TO_SPINNER
|
||||
}
|
||||
}
|
||||
|
||||
State.TO_SPINNER -> {
|
||||
if(sLadderSwitch){
|
||||
if(!spinnerbottomLadder.insideBorder(bot.location)){
|
||||
scriptAPI.walkTo(spinnerbottomLadder.randomLoc)
|
||||
} else {
|
||||
val ladder = scriptAPI.getNearestNode("Staircase", true)
|
||||
if(ladder != null){
|
||||
ladder.interaction.handle(bot, ladder.interaction[0])
|
||||
sLadderSwitch = false
|
||||
} else {
|
||||
scriptAPI.walkTo(spinnerbottomLadder.randomLoc)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(stage == 0)
|
||||
Pathfinder.find(bot, Location.create(2475,3399, 1)).walk(bot).also { stage++ }
|
||||
when(bot.location){
|
||||
Location.create(2475,3399, 1) -> Pathfinder.find(bot, Location.create(2477, 3399,1)).walk(bot)
|
||||
Location.create(2477,3399, 1) -> Pathfinder.find(bot, Location.create(2477,3398, 1)).walk(bot)
|
||||
Location.create(2477,3398, 1) -> Pathfinder.find(bot, Location.create(2476,3398, 1)).walk(bot)
|
||||
Location.create(2476,3398, 1) -> {
|
||||
val spinner = scriptAPI.getNearestNode(2644, true)
|
||||
bot.faceLocation(spinner?.location)
|
||||
bot.pulseManager.run(object: MovementPulse(bot,spinner, DestinationFlag.OBJECT){
|
||||
override fun pulse(): Boolean {
|
||||
bot.faceLocation(spinner?.location)
|
||||
state = State.SPINNING
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
State.SPINNING -> {
|
||||
bot.pulseManager.run(SpinningPulse(bot, Item(Items.FLAX_1779),bot.inventory.getAmount(Items.FLAX_1779),SpinningItem.FLAX))
|
||||
sLadderSwitch = true
|
||||
state = State.FIND_BANK
|
||||
}
|
||||
|
||||
State.FIND_BANK -> {
|
||||
if(sLadderSwitch){
|
||||
val ladder = scriptAPI.getNearestNode("staircase", true)
|
||||
if(ladder != null){
|
||||
ladder.interaction.handle(bot, ladder.interaction[0])
|
||||
sLadderSwitch = false
|
||||
}
|
||||
}
|
||||
if(!bankbottomLadder.insideBorder(bot.location) && !spinnertopLadder.insideBorder(bot)){
|
||||
scriptAPI.walkTo(bankbottomLadder.randomLoc)
|
||||
}else if(bankbottomLadder.insideBorder(bot)){
|
||||
bLadderSwitch = true
|
||||
}
|
||||
if(bLadderSwitch){
|
||||
val ladder = scriptAPI.getNearestNode("staircase", true)
|
||||
if(ladder != null){
|
||||
ladder.interaction.handle(bot, ladder.interaction[0])
|
||||
bLadderSwitch = false
|
||||
}
|
||||
}
|
||||
if(banktopLadder.insideBorder(bot)){
|
||||
state = State.BANKING
|
||||
}
|
||||
}
|
||||
|
||||
State.BANKING -> {
|
||||
val bank = scriptAPI.getNearestNode(2213, true)
|
||||
if(bank != null) {
|
||||
bot.pulseManager.run(object : MovementPulse(bot, bank, DestinationFlag.OBJECT) {
|
||||
override fun pulse(): Boolean {
|
||||
bot.faceLocation(bank.location)
|
||||
scriptAPI.bankItem(Items.BOW_STRING_1777)
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
if(ContentAPI.freeSlots(bot) > 27){
|
||||
bLadderSwitch = true
|
||||
state = State.RETURN_TO_FLAX
|
||||
}
|
||||
}
|
||||
|
||||
State.RETURN_TO_FLAX -> {
|
||||
if(!banktopLadder.insideBorder(bot.location) && bLadderSwitch){
|
||||
scriptAPI.walkTo(banktopLadder.randomLoc)
|
||||
} else if(bLadderSwitch){
|
||||
val ladder = scriptAPI.getNearestNode("Staircase", true)
|
||||
if(ladder != null){
|
||||
ladder.interaction.handle(bot, ladder.interaction[0])
|
||||
bLadderSwitch = false
|
||||
} else {
|
||||
scriptAPI.walkTo(banktopLadder.randomLoc)
|
||||
}
|
||||
}
|
||||
if(!flaxzone.insideBorder(bot)){
|
||||
scriptAPI.walkTo(flaxzone.randomLoc)
|
||||
} else if(flaxzone.insideBorder(bot)){
|
||||
state = State.PICKING
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
override fun newInstance(): Script {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
enum class State {
|
||||
PICKING,
|
||||
MINING,
|
||||
SPINNING,
|
||||
TO_SPINNER,
|
||||
FIND_BANK,
|
||||
RETURN_TO_FLAX,
|
||||
BANKING,
|
||||
INIT
|
||||
}
|
||||
Reference in New Issue
Block a user