Add kermit-friendly dig command
This commit is contained in:
@@ -1,13 +1,20 @@
|
||||
package rs09.game.system.command.sets
|
||||
|
||||
import api.ContentAPI
|
||||
import core.game.content.quest.tutorials.tutorialisland.CharacterDesign
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.system.task.Pulse
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.RegionManager
|
||||
import core.game.world.update.flag.context.Animation
|
||||
import core.plugin.Initializable
|
||||
import rs09.game.content.dialogue.DialogueFile
|
||||
import rs09.game.interaction.InteractionListeners
|
||||
import rs09.game.interaction.SpadeDigListener
|
||||
import rs09.game.system.command.Command
|
||||
import rs09.game.world.GameWorld
|
||||
import rs09.tools.END_DIALOGUE
|
||||
import java.util.*
|
||||
|
||||
@Initializable
|
||||
@@ -116,5 +123,42 @@ class FunCommandSet : CommandSet(Command.Privilege.ADMIN) {
|
||||
define("makeover", Command.Privilege.MODERATOR){ player, _ ->
|
||||
CharacterDesign.open(player)
|
||||
}
|
||||
|
||||
/**
|
||||
* Bury inventory at current location
|
||||
*/
|
||||
define("bury"){player, _ ->
|
||||
if(player.inventory.isEmpty){
|
||||
reject(player, "You have no items to bury.")
|
||||
}
|
||||
|
||||
player.dialogueInterpreter.open(object : DialogueFile(){
|
||||
override fun handle(componentID: Int, buttonID: Int) {
|
||||
when(stage){
|
||||
0 -> dialogue("This will bury your whole inventory in this spot.","Are you sure?").also { stage++ }
|
||||
1 -> options("Yes","No").also { stage++ }
|
||||
2 -> when(buttonID){
|
||||
1 -> bury(player).also { end() }
|
||||
2 -> stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun bury(player: Player){
|
||||
val loc = Location.create(player.location)
|
||||
val inv = player.inventory.toArray().filterNotNull()
|
||||
SpadeDigListener.registerListener(player.location){p ->
|
||||
for(item in inv){
|
||||
ContentAPI.addItemOrDrop(p, item.id, item.amount)
|
||||
ContentAPI.sendMessage(p, "You dig and find ${if(item.amount > 1) "some" else "a"} ${item.name}")
|
||||
}
|
||||
SpadeDigListener.listeners.remove(loc)
|
||||
}
|
||||
player.inventory.clear()
|
||||
notify(player, "You have buried your loot at ${loc.toString()}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -479,28 +479,5 @@ class MiscCommandSet : CommandSet(Command.Privilege.ADMIN){
|
||||
notify(player,"No parent NPC found.")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
define("bury"){player,args ->
|
||||
if(args.size < 2){
|
||||
reject(player,"Usage: ::bury itemid")
|
||||
}
|
||||
|
||||
val itemId = args[1].toInt()
|
||||
val def = ItemDefinition.forId(itemId)
|
||||
|
||||
SpadeDigListener.registerListener(player.location){pl ->
|
||||
if(player.getAttribute("${player.location.toString()}:$itemId",false)){
|
||||
pl.sendMessage("You dig and find nothing.")
|
||||
return@registerListener
|
||||
}
|
||||
pl.dialogueInterpreter.sendDialogue("You dig and find a ${def.name}!")
|
||||
player.inventory.add(Item(itemId))
|
||||
player.setExpirableAttribute("/save:${player.location.toString()}:$itemId",true,TimeUnit.SECONDS.toMillis(10))
|
||||
}
|
||||
|
||||
notify(player,"You buried a ${def.name} at ${player.location}")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user