Implemented Gnome Barman dialogue
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
|||||||
|
package content.region.kandarin.gnomestronghold.dialogue
|
||||||
|
|
||||||
|
import core.api.addItem
|
||||||
|
import core.api.inInventory
|
||||||
|
import core.api.openDialogue
|
||||||
|
import core.api.openNpcShop
|
||||||
|
import core.api.removeItem
|
||||||
|
import core.api.sendMessage
|
||||||
|
import core.game.dialogue.ChatAnim
|
||||||
|
import core.game.dialogue.DialogueLabeller
|
||||||
|
import core.game.dialogue.DialogueOption
|
||||||
|
import core.game.dialogue.DialoguePlugin
|
||||||
|
import core.game.node.entity.player.Player
|
||||||
|
import core.game.node.item.Item
|
||||||
|
import core.plugin.Initializable
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
|
|
||||||
|
private const val INGREDIENT_COST = 20
|
||||||
|
private const val NOT_ENOUGH_MONEY_MESSAGE = "You do not have enough money to buy that."
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the dialogue for the Gnome Barman NPCs in the Tree Gnome Stronghold.
|
||||||
|
* @author Broseki
|
||||||
|
*/
|
||||||
|
@Initializable
|
||||||
|
class GnomeBarmanDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||||
|
override fun newInstance(player: Player?): DialoguePlugin {
|
||||||
|
return GnomeBarmanDialogue(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
|
openDialogue(player, GnomeBarmanDialogueStart(), npc)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getIds(): IntArray {
|
||||||
|
return intArrayOf(NPCs.BARMAN_849)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class GnomeBarmanDialogueStart : DialogueLabeller() {
|
||||||
|
override fun addConversation() {
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "Good day to you. What can I get you to drink?")
|
||||||
|
options(
|
||||||
|
DialogueOption("store", "What do you have?", expression = ChatAnim.FRIENDLY, spokenText = "What do you have."),
|
||||||
|
DialogueOption("nothing", "Nothing thanks.", expression = ChatAnim.FRIENDLY),
|
||||||
|
DialogueOption(
|
||||||
|
"ingredients", "Can I buy some ingredients?",
|
||||||
|
spokenText = "I was just wanting to buy a cocktail ingredient actually.",
|
||||||
|
expression = ChatAnim.FRIENDLY
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
label("store")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "Here, take a look at our menu.")
|
||||||
|
exec { player, npc ->
|
||||||
|
openNpcShop(player, npc.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
label("nothing")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "Okay, take it easy.")
|
||||||
|
|
||||||
|
label("ingredients")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "Sure thing, what did you want?")
|
||||||
|
options(
|
||||||
|
DialogueOption("lemon", "A lemon.", expression = ChatAnim.FRIENDLY),
|
||||||
|
DialogueOption("orange", "An orange.", expression = ChatAnim.FRIENDLY),
|
||||||
|
DialogueOption("shaker", "A cocktail shaker.", expression = ChatAnim.FRIENDLY),
|
||||||
|
DialogueOption(
|
||||||
|
"buynothing", "Nothing thanks.",
|
||||||
|
spokenText = "Actually nothing thanks.",
|
||||||
|
expression = ChatAnim.FRIENDLY
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
label("lemon")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "$INGREDIENT_COST coins please.")
|
||||||
|
exec { player, _ ->
|
||||||
|
if (removeItem(player, Item(Items.COINS_995, INGREDIENT_COST))) {
|
||||||
|
addItem(player, Items.LEMON_2102)
|
||||||
|
} else {
|
||||||
|
sendMessage(player, NOT_ENOUGH_MONEY_MESSAGE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label("orange")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "$INGREDIENT_COST coins please.")
|
||||||
|
exec { player, _ ->
|
||||||
|
if (removeItem(player, Item(Items.COINS_995, INGREDIENT_COST))) {
|
||||||
|
addItem(player, Items.ORANGE_2108)
|
||||||
|
} else {
|
||||||
|
sendMessage(player, NOT_ENOUGH_MONEY_MESSAGE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label("shaker")
|
||||||
|
npc(ChatAnim.OLD_HAPPY, "$INGREDIENT_COST coins please.")
|
||||||
|
exec { player, _ ->
|
||||||
|
if (removeItem(player, Item(Items.COINS_995, INGREDIENT_COST))) {
|
||||||
|
addItem(player, Items.COCKTAIL_SHAKER_2025)
|
||||||
|
} else {
|
||||||
|
sendMessage(player, NOT_ENOUGH_MONEY_MESSAGE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label("buynothing")
|
||||||
|
// Just end the conversation here without any further dialogue
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user