Coal trucks handler converted

This commit is contained in:
Woah
2021-03-12 23:59:02 -05:00
parent 19e20d9dc9
commit de1093b2bd
@@ -12,6 +12,7 @@ import core.game.world.map.zone.ZoneBorders
import core.plugin.Initializable import core.plugin.Initializable
import core.plugin.Plugin import core.plugin.Plugin
import org.rs09.consts.Items import org.rs09.consts.Items
import rs09.game.interaction.OptionListener
import rs09.plugin.PluginManager.definePlugin import rs09.plugin.PluginManager.definePlugin
import java.util.* import java.util.*
@@ -19,51 +20,49 @@ import java.util.*
* Handles coal truck interactions * Handles coal truck interactions
* @author ceik * @author ceik
*/ */
@Initializable class CoalTrucksHandler : OptionListener() {
class CoalTrucksHandler : OptionHandler() {
val SEERS_VILLAGE_COAL_TRUCK_2114 = 2114
val seersVillageTrucks = ZoneBorders(2690,3502,2699,3508) val seersVillageTrucks = ZoneBorders(2690,3502,2699,3508)
override fun newInstance(arg: Any?): Plugin<Any>? { override fun defineListeners() {
definePlugin(useCoalWithTruck()) on(SEERS_VILLAGE_COAL_TRUCK_2114, OBJECT, "remove-coal") { player, node ->
val def = ObjectDefinition.forId(2114)
def.handlers["option:remove-coal"] = this
def.handlers["option:investigate"] = this
return this
}
override fun handle(player: Player, node: Node, option: String): Boolean { var coalInTruck = player.getAttribute("coal-truck-inventory", 0)
var coalInTruck = player.getAttribute("coal-truck-inventory", 0) var freeSpace = player.inventory.freeSlots()
var freeSpace = player.inventory.freeSlots() val toAdd: MutableList<Item> = ArrayList()
val toAdd: MutableList<Item> = ArrayList()
when (option) {
"remove-coal" -> {
if (coalInTruck == 0) {
player.dialogueInterpreter.sendDialogue("The coal truck is empty.")
return true
}
var toRemove = player.inventory.freeSlots()
if(toRemove > coalInTruck) toRemove = coalInTruck if (coalInTruck == 0) {
player.dialogueInterpreter.sendDialogue("The coal truck is empty.")
player.inventory.add(Item(Items.COAL_453,toRemove)) return@on true
coalInTruck -= toRemove
player.setAttribute("/save:coal-truck-inventory", coalInTruck)
if (!player.achievementDiaryManager.hasCompletedTask(DiaryType.SEERS_VILLAGE, 1, 2)
&& seersVillageTrucks.insideBorder(player)
&& player.getAttribute("diary:seers:coal-truck-full", false)) {
player.removeAttribute("diary:seers:coal-truck-full")
player.achievementDiaryManager.finishTask(player, DiaryType.SEERS_VILLAGE, 1, 2)
}
} }
"investigate" -> player.dialogueInterpreter.sendDialogue("There is currently $coalInTruck coal in the truck.", "The truck has space for " + (120 - coalInTruck) + " more coal.")
var toRemove = player.inventory.freeSlots()
if(toRemove > coalInTruck) toRemove = coalInTruck
player.inventory.add(Item(Items.COAL_453,toRemove))
coalInTruck -= toRemove
player.setAttribute("/save:coal-truck-inventory", coalInTruck)
if (!player.achievementDiaryManager.hasCompletedTask(DiaryType.SEERS_VILLAGE, 1, 2)
&& seersVillageTrucks.insideBorder(player)
&& player.getAttribute("diary:seers:coal-truck-full", false)) {
player.removeAttribute("diary:seers:coal-truck-full")
player.achievementDiaryManager.finishTask(player, DiaryType.SEERS_VILLAGE, 1, 2)
}
return@on true
}
on(SEERS_VILLAGE_COAL_TRUCK_2114, OBJECT, "investigate") { player, node ->
var coalInTruck = player.getAttribute("coal-truck-inventory", 0)
player.dialogueInterpreter.sendDialogue("There is currently $coalInTruck coal in the truck.", "The truck has space for " + (120 - coalInTruck) + " more coal.")
return@on true
} }
return true
} }
//TODO:
inner class useCoalWithTruck : UseWithHandler(Items.COAL_453) { inner class useCoalWithTruck : UseWithHandler(Items.COAL_453) {
override fun newInstance(arg: Any?): Plugin<Any>? { override fun newInstance(arg: Any?): Plugin<Any>? {
addHandler(2114, OBJECT_TYPE, this) addHandler(2114, OBJECT_TYPE, this)