Dialogue and examine fixes

Converted Lidio dialogue to Kotlin
Converted Anton dialogue to Kotlin
Added Achietties and updated dialogue file
Updated servant dialogue
Updated Wistan dialogue
Changed examine text of Scrying orb, uncharged & charged
Added examine text to wizard Cromperty
Changed bucket examine text
Updated Unferth dialogue
This commit is contained in:
Trident101
2023-12-13 12:04:46 +00:00
committed by Ryan
parent ae22b99888
commit 7a4c2159a4
12 changed files with 213 additions and 186 deletions
+3 -3
View File
@@ -19920,7 +19920,7 @@
},
{
"ge_buy_limit": "100",
"examine": "Common bucket: It's a bucket of water.2008 Easter event: It's a bucket of water from the Easter Bunny's warren. Regular bucket filled from Braindeath Island: It's a bucket of... water?",
"examine": "It's a bucket of water.",
"grand_exchange_price": "72",
"durability": null,
"name": "Bucket of water",
@@ -49283,7 +49283,7 @@
"id": "5517"
},
{
"examine": "When empty:",
"examine": "This contains mystical teleport information...",
"durability": null,
"name": "Scrying orb",
"weight": "1",
@@ -49291,7 +49291,7 @@
"id": "5518"
},
{
"examine": "When empty:",
"examine": "This orb apparently contains a cypher spell.",
"durability": null,
"name": "Scrying orb",
"weight": "1",
+10
View File
@@ -72515,5 +72515,15 @@
"combat_audio": "12,3295,3287",
"id": "6744",
"defence_animation": "7559"
},
{
"examine": "Distinctly heroic.",
"name": "Achietties",
"id": "796"
},
{
"examine": "The hat is a dead give away.",
"name": "Wizard Cromperty",
"id": "2328"
}
]
+4
View File
@@ -2171,6 +2171,10 @@
"npc_id": "794",
"loc_data": "{2793,3191,0,1,3}"
},
{
"npc_id": "796",
"loc_data": "{2903,3511,0,1,3}"
},
{
"npc_id": "797",
"loc_data": "{2900,3511,1,1,6}"
@@ -1,29 +1,22 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.openDialogue
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.npc.NPC
import core.game.node.entity.player.Player
import core.plugin.Initializable
import org.rs09.consts.NPCs
/**
* @author qmqz
* @author Trident101
*/
@Initializable
class AchiettiesDialogue(player: Player? = null) : DialoguePlugin(player){
override fun open(vararg args: Any?): Boolean {
npc = args[0] as NPC
npc(FacialExpression.FRIENDLY,"Greetings. Welcome to the Heroes' Guild.")
stage = 99
return true
}
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
when(stage){
99 -> end()
}
openDialogue(player, AchiettiesDialogueFile(), npc)
return true
}
@@ -32,6 +25,15 @@ class AchiettiesDialogue(player: Player? = null) : DialoguePlugin(player){
}
override fun getIds(): IntArray {
return intArrayOf(796)
return intArrayOf(NPCs.ACHIETTIES_796)
}
}
class AchiettiesDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.defaultDialogue().npcl(FacialExpression.FRIENDLY,
"Greetings. Welcome to the Heroes' Guild."
)
}
}
@@ -1,69 +0,0 @@
package content.region.asgarnia.burthorpe.dialogue;
import core.game.dialogue.DialoguePlugin;
import core.game.node.entity.npc.NPC;
import core.plugin.Initializable;
import core.game.node.entity.player.Player;
/**
* Represents the dialogue plugin used to handle the anton npc.
* @author 'Vexia
* @version 1.0
*/
@Initializable
public final class AntonDialogue extends DialoguePlugin {
/**
* Constructs a new {@code AntonDialogue} {@code Object}.
*/
public AntonDialogue() {
/**
* empty.
*/
}
/**
* Constructs a new {@code AntonDialogue} {@code Object}.
* @param player the player.
*/
public AntonDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new AntonDialogue(player);
}
@Override
public boolean open(Object... args) {
npc = (NPC) args[0];
npc("Ahhh, hello there. How can I help?");
stage = 0;
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
switch (stage) {
case 0:
player("Looks like you have a good", "selection of weapons around here...");
stage = 1;
break;
case 1:
npc("Indeed so, specially imported from the finest smiths", "around the lands, take a look at my wares.");
stage = 2;
break;
case 2:
end();
npc.openShop(player);
break;
}
return true;
}
@Override
public int[] getIds() {
return new int[] { 4295 };
}
}
@@ -0,0 +1,45 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.openDialogue
import core.api.openNpcShop
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.player.Player
import core.plugin.Initializable
import org.rs09.consts.NPCs
@Initializable
class AntonDialogue(player: Player? = null) : DialoguePlugin(player) {
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
openDialogue(player, AntonDialogueFile(), npc)
return true
}
override fun newInstance(player: Player?): DialoguePlugin {
return AntonDialogue(player)
}
override fun getIds(): IntArray {
return intArrayOf(NPCs.ANTON_4295)
}
}
class AntonDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.defaultDialogue().npcl(
FacialExpression.ASKING,
"Ahhh, hello there. How can I help?")
.playerl(FacialExpression.NEUTRAL,
"Looks like you have a good selection of weapons around here...")
.npcl(FacialExpression.FRIENDLY,
"Indeed so, specially imported from the finest smiths around the lands, take a look at my wares.")
.endWith { _, player ->
openNpcShop(player, NPCs.ANTON_4295)
end()
}
}
}
@@ -1,66 +0,0 @@
package content.region.asgarnia.burthorpe.dialogue;
import core.game.dialogue.DialoguePlugin;
import core.game.dialogue.FacialExpression;
import core.game.node.entity.npc.NPC;
import core.plugin.Initializable;
import core.game.node.entity.player.Player;
/**
* Represents the dialogue plugin used for the lidio npc.
* @author 'Vexia
* @version 1.0
*/
@Initializable
public final class LidioDialogue extends DialoguePlugin {
/**
* Constructs a new {@code LidioDialogue} {@code Object}.
*/
public LidioDialogue() {
/**
* empty.
*/
}
/**
* Constructs a new {@code LidioDialogue} {@code Object}.
* @param player the player.
*/
public LidioDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new LidioDialogue(player);
}
@Override
public boolean open(Object... args) {
npc = (NPC) args[0];
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Greetings, warrior, how can I fill your stomach today?");
stage = 0;
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
switch (stage) {
case 0:
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "With food preferrable.");
stage = 1;
break;
case 1:
end();
npc.openShop(player);
break;
}
return true;
}
@Override
public int[] getIds() {
return new int[] { 4293 };
}
}
@@ -0,0 +1,42 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.openDialogue
import core.api.openNpcShop
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.player.Player
import core.plugin.Initializable
import org.rs09.consts.NPCs
@Initializable
class LidioDialogue(player: Player? = null) : DialoguePlugin(player) {
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
openDialogue(player, LidioDialogueFile(), npc)
return true
}
override fun newInstance(player: Player?): DialoguePlugin {
return LidioDialogue(player)
}
override fun getIds(): IntArray {
return intArrayOf(NPCs.LIDIO_4293)
}
}
class LidioDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.defaultDialogue().npcl(FacialExpression.ASKING,
"Greetings, warrior, how can I fill your stomach today?"
).playerl(FacialExpression.NEUTRAL,
"With food preferrable."
).endWith { _, player ->
openNpcShop(player, NPCs.LIDIO_4293)
end()
}
}
}
@@ -1,27 +1,25 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.openDialogue
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.player.Player
import core.plugin.Initializable
import core.tools.END_DIALOGUE
import core.tools.START_DIALOGUE
import org.rs09.consts.NPCs
/**
* Servant Dialogue
* @author 'Vexia
* @author ovenbread
* @author Trident101
*/
@Initializable
class ServantDialogue(player: Player? = null) : DialoguePlugin(player) {
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
when (stage) {
START_DIALOGUE -> playerl(FacialExpression.FRIENDLY, "Hi!").also { stage++ }
1 -> npcl(FacialExpression.HALF_GUILTY, "Hi").also { stage++ }
2 -> npcl(FacialExpression.HALF_GUILTY, "Look, I'd better not talk. I'll get in trouble.").also { stage++ }
3 -> npcl(FacialExpression.HALF_GUILTY, "If you want someone to show you round the castle ask Eohric, the Head Servant.").also { stage = END_DIALOGUE }
}
openDialogue(player, ServantDialogueFile(), npc)
return true
}
@@ -33,3 +31,22 @@ class ServantDialogue(player: Player? = null) : DialoguePlugin(player) {
return intArrayOf(NPCs.SERVANT_1081)
}
}
class ServantDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.defaultDialogue().playerl(
FacialExpression.HALF_GUILTY,
"Hi!"
).npcl(
FacialExpression.HALF_GUILTY,
"Hi."
).npcl(
FacialExpression.HALF_GUILTY,
"Look, I'd better not talk. I'll get in trouble."
).npcl(
FacialExpression.HALF_GUILTY,
"If you want someone to show you round the castle ask Eohric, the Head Servant."
)
}
}
@@ -1,5 +1,9 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.isQuestComplete
import core.api.openDialogue
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.player.Player
@@ -11,23 +15,13 @@ import org.rs09.consts.NPCs
/**
* Unferth Dialogue
* @author ovenbread
* @author Trident101
*/
@Initializable
class UnferthDialogue(player: Player? = null) : DialoguePlugin(player) {
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
// when (stage) {
// START_DIALOGUE -> playerl(FacialExpression.FRIENDLY, "Hi Unferth. How are you doing?").also { stage++ }
// 1 -> npcl(FacialExpression.FRIENDLY, "It's just not the same without Bob around.").also { stage++ }
// 2 -> playerl(FacialExpression.FRIENDLY, "I'm so sorry Unferth.").also { stage++ }
// 3 -> npcl(FacialExpression.FRIENDLY, "Gertrude asked me if I'd like one of her new kittens. I don't think I'm ready for that yet.").also { stage++ }
// 4 -> playerl(FacialExpression.FRIENDLY, "Give it time. Things will get better, I promise.").also { stage++ }
// 5 -> npcl(FacialExpression.FRIENDLY, "Thanks, ${player.username}.").also { stage = END_DIALOGUE }
// }
when (stage) {
START_DIALOGUE -> npcl(FacialExpression.GUILTY, "Hello.").also { stage++ }
1 -> playerl(FacialExpression.FRIENDLY, "What's wrong?").also { stage++ }
2 -> npcl(FacialExpression.GUILTY, "It's fine. Nothing for you to worry about.").also { stage = END_DIALOGUE }
}
openDialogue(player, UnferthDialogueFile(), npc)
return true
}
@@ -39,3 +33,34 @@ class UnferthDialogue(player: Player? = null) : DialoguePlugin(player) {
return intArrayOf(NPCs.UNFERTH_2655)
}
}
class UnferthDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.onPredicate { player -> isQuestComplete(player, "A Tail of Two Cats") }.playerl(
FacialExpression.FRIENDLY, "Hi Unferth. How are you doing?"
).npcl(
FacialExpression.GUILTY, "It's just not the same without Bob around."
).playerl(
FacialExpression.HALF_GUILTY, "I'm so sorry Unferth."
).npcl(
FacialExpression.HALF_GUILTY,
"Gertrude asked me if I'd like one of her new kittens. I don't think I'm ready for that yet."
).playerl(
FacialExpression.FRIENDLY, "Give it time. Things will get better, I promise."
).npcl(
FacialExpression.HALF_GUILTY, "Thanks, @name."
).end()
b.defaultDialogue().npcl(
FacialExpression.GUILTY,
"Hello."
).playerl(
FacialExpression.FRIENDLY,
"What's wrong?"
).npcl(
FacialExpression.GUILTY,
"It's fine. Nothing for you to worry about."
).end()
}
}
@@ -1,33 +1,26 @@
package content.region.asgarnia.burthorpe.dialogue
import core.api.openDialogue
import core.api.openNpcShop
import core.game.dialogue.DialogueBuilder
import core.game.dialogue.DialogueBuilderFile
import core.game.dialogue.DialoguePlugin
import core.game.dialogue.FacialExpression
import core.game.node.entity.player.Player
import core.plugin.Initializable
import core.tools.END_DIALOGUE
import core.tools.START_DIALOGUE
import org.rs09.consts.NPCs
/**
* Represents the Wistan dialogue plugin.
* @author 'Vexia
* @author ovenbread
* @author Trident101
*/
@Initializable
class WistanDialogue(player: Player? = null) : DialoguePlugin(player) {
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
when (stage) {
START_DIALOGUE -> playerl(FacialExpression.FRIENDLY, "Hi!").also { stage++ }
1 -> npcl(FacialExpression.FRIENDLY, "Welcome to Burthorpe Supplies. Your last shop before heading north into the mountains!").also { stage++ }
2 -> npcl(FacialExpression.FRIENDLY, "Would you like to buy something?").also { stage++ }
3 -> options("Yes, please.", "No, thanks.").also { stage++ }
4 -> when (buttonId) {
1 -> playerl(FacialExpression.FRIENDLY, "Yes, please.").also { stage = 5 }
2 -> playerl(FacialExpression.FRIENDLY, "No, thanks.").also { stage = END_DIALOGUE }
}
5 -> npc.openShop(player).also { stage = END_DIALOGUE }
}
openDialogue(player, WistanDialogueFile(), npc)
return true
}
@@ -39,3 +32,24 @@ class WistanDialogue(player: Player? = null) : DialoguePlugin(player) {
return intArrayOf(NPCs.WISTAN_1083)
}
}
class WistanDialogueFile : DialogueBuilderFile() {
override fun create(b: DialogueBuilder) {
b.defaultDialogue().playerl(
FacialExpression.FRIENDLY, "Hi!"
).npcl(
FacialExpression.FRIENDLY,
"Welcome to Burthorpe Supplies. Your last shop before heading north into the mountains!"
).npcl(
FacialExpression.FRIENDLY, "Would you like to buy something?"
).options().let { optionsBuilder ->
optionsBuilder.option("Yes, please.").playerl(
FacialExpression.FRIENDLY, "Yes, Please"
).endWith { _, player -> openNpcShop(player, NPCs.WISTAN_1083) }
optionsBuilder.option("No, thanks.").playerl(
FacialExpression.FRIENDLY, "No, thanks."
).end()
}
}
}
@@ -300,6 +300,9 @@ class DialogueBuilder(var target: DialogueBuilderFile, var clauseIndex: Int = -1
clauseIndex = target.data.size - 1
return this
}
fun defaultDialogue(): DialogueBuilder {
return onPredicate({ _ -> return@onPredicate true})
}
fun onQuestStages(name: String, vararg stages: Int): DialogueBuilder {
return onPredicate() { player ->
val questStage = player.questRepository.getStage(name)