Compare commits
3 Commits
504a49eaae
...
22269f32f9
Author | SHA1 | Date | |
---|---|---|---|
![]() |
22269f32f9 | ||
![]() |
5895b1e90a | ||
![]() |
d6add6cc4e |
@ -10,10 +10,15 @@ import core.game.node.entity.player.Player
|
|||||||
import core.plugin.Initializable
|
import core.plugin.Initializable
|
||||||
import org.rs09.consts.Items
|
import org.rs09.consts.Items
|
||||||
import org.rs09.consts.NPCs
|
import org.rs09.consts.NPCs
|
||||||
|
import core.game.node.item.Item
|
||||||
|
|
||||||
@Initializable
|
@Initializable
|
||||||
class AchiettiesDialogue(player: Player? = null) : DialoguePlugin(player) {
|
class AchiettiesDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val BRIBE_PRICE = 1_000_000
|
||||||
|
}
|
||||||
|
|
||||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
openDialogue(player, AchiettiesDialogueFile(), npc)
|
openDialogue(player, AchiettiesDialogueFile(), npc)
|
||||||
return true
|
return true
|
||||||
@ -34,30 +39,28 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
|
|
||||||
b.onQuestStages(Quests.HEROES_QUEST, 0, 1)
|
b.onQuestStages(Quests.HEROES_QUEST, 0, 1)
|
||||||
.branch { player ->
|
.branch { player ->
|
||||||
return@branch getQuestStage(player, Quests.HEROES_QUEST)
|
// Return the current quest stage.
|
||||||
}.let{ branch ->
|
getQuestStage(player, Quests.HEROES_QUEST)
|
||||||
|
}
|
||||||
|
.let { branch ->
|
||||||
branch.onValue(0)
|
branch.onValue(0)
|
||||||
.npcl(FacialExpression.FRIENDLY, "Greetings. Welcome to the Heroes' Guild.")
|
.npcl(FacialExpression.FRIENDLY, "Greetings. Welcome to the Heroes' Guild.")
|
||||||
.npcl("Only the greatest heroes of this land may gain entrance to this guild.")
|
.npcl("Only the greatest heroes of this land may gain entrance to this guild.")
|
||||||
// - If the player's skill levels are lower than the quest requirements. (I think this is after 2009)
|
|
||||||
// linel("Before starting this quest, be aware that one or more of your skill levels are lower than what is required to fully complete it.")
|
|
||||||
.options()
|
.options()
|
||||||
.let { optionBuilder ->
|
.let { optionBuilder ->
|
||||||
optionBuilder.option("I'm a hero, may I apply to join?")
|
optionBuilder.option("I'm a hero, may I apply to join?")
|
||||||
.playerl("I'm a hero. May I apply to join?")
|
.playerl("I'm a hero. May I apply to join?")
|
||||||
.branch { player ->
|
.branch { player ->
|
||||||
return@branch if (HeroesQuest.hasRequirements(player)) {
|
if (HeroesQuest.hasRequirements(player)) 1 else 0
|
||||||
1
|
|
||||||
} else {
|
|
||||||
0
|
|
||||||
}
|
}
|
||||||
}.let { branch ->
|
.let { branch ->
|
||||||
branch.onValue(0)
|
branch.onValue(0)
|
||||||
.npcl("You're a hero? I've never heard of YOU. You are required to possess at least 55 quest points to file an application.")
|
.npcl("You're a hero? I've never heard of YOU. You are required to possess at least 55 quest points to file an application.")
|
||||||
.npcl("Additionally you must have completed the Shield of Arrav, Lost City, Merlin's Crystal and Dragon Slayer quests.")
|
.npcl("Additionally you must have completed the Shield of Arrav, Lost City, Merlin's Crystal and Dragon Slayer quests.")
|
||||||
.end()
|
.end()
|
||||||
return@let branch
|
branch
|
||||||
}.onValue(1)
|
}
|
||||||
|
.onValue(1)
|
||||||
.betweenStage { df, player, _, _ ->
|
.betweenStage { df, player, _, _ ->
|
||||||
if (getQuestStage(player, Quests.HEROES_QUEST) == 0) {
|
if (getQuestStage(player, Quests.HEROES_QUEST) == 0) {
|
||||||
setQuestStage(player, Quests.HEROES_QUEST, 1)
|
setQuestStage(player, Quests.HEROES_QUEST, 1)
|
||||||
@ -79,8 +82,30 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
||||||
.npcl("Good luck with that.")
|
.npcl("Good luck with that.")
|
||||||
.end()
|
.end()
|
||||||
|
optionBuilder2.option_playerl("Or perhaps the guild needs a bit of financing?")
|
||||||
|
.npcl("Perhaps a small 'Loan' of 1 million coins?")
|
||||||
|
// Bribery branch
|
||||||
|
.options()
|
||||||
|
.let { optionBuilder3 ->
|
||||||
|
optionBuilder3.option_playerl("That sounds good")
|
||||||
|
.branch { player ->
|
||||||
|
if (inInventory(player!!, 995, AchiettiesDialogue.BRIBE_PRICE)) 1 else 0
|
||||||
|
}
|
||||||
|
.let { branch ->
|
||||||
|
branch.onValue(1)
|
||||||
|
.playerl(FacialExpression.FRIENDLY, "Here you go!")
|
||||||
|
.endWith { _, player ->
|
||||||
|
removeItem(player, Item(995, AchiettiesDialogue.BRIBE_PRICE), Container.INVENTORY)
|
||||||
|
finishQuest(player, Quests.HEROES_QUEST)
|
||||||
|
}
|
||||||
|
branch.onValue(0)
|
||||||
|
.playerl(FacialExpression.HALF_GUILTY, "Actually, I don't have that much.")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
|
optionBuilder3.option_playerl("1 million coins for this dump? No way")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
optionBuilder.option_playerl("Good for the foremost heroes of the land.")
|
optionBuilder.option_playerl("Good for the foremost heroes of the land.")
|
||||||
.npcl("Yes. Yes it is.")
|
.npcl("Yes. Yes it is.")
|
||||||
.end()
|
.end()
|
||||||
@ -90,7 +115,7 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
.npcl("How goes thy quest adventurer?")
|
.npcl("How goes thy quest adventurer?")
|
||||||
.playerl("It's tough. I've not done it yet.")
|
.playerl("It's tough. I've not done it yet.")
|
||||||
.npcl("Remember, the items you need to enter are:")
|
.npcl("Remember, the items you need to enter are:")
|
||||||
.npcl("An Entranan Firebirds' feather, A Master Thieves armband, and a cooked Lava Eel.")
|
.npcl("An Entranan Firebird's feather, A Master Thieves' armband, and a cooked Lava Eel.")
|
||||||
.options()
|
.options()
|
||||||
.let { optionBuilder2 ->
|
.let { optionBuilder2 ->
|
||||||
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
||||||
@ -105,6 +130,29 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
||||||
.npcl("Good luck with that.")
|
.npcl("Good luck with that.")
|
||||||
.end()
|
.end()
|
||||||
|
optionBuilder2.option_playerl("Or perhaps the guild needs a bit of financing?")
|
||||||
|
.npcl("Perhaps a small 'Loan' of 1 million coins?")
|
||||||
|
// Bribery branch
|
||||||
|
.options()
|
||||||
|
.let { optionBuilder3 ->
|
||||||
|
optionBuilder3.option_playerl("That sounds good")
|
||||||
|
.branch { player ->
|
||||||
|
if (inInventory(player!!, 995, AchiettiesDialogue.BRIBE_PRICE)) 1 else 0
|
||||||
|
}
|
||||||
|
.let { branch ->
|
||||||
|
branch.onValue(1)
|
||||||
|
.playerl(FacialExpression.FRIENDLY, "Here you go!")
|
||||||
|
.endWith { _, player ->
|
||||||
|
removeItem(player, Item(995, AchiettiesDialogue.BRIBE_PRICE), Container.INVENTORY)
|
||||||
|
finishQuest(player, Quests.HEROES_QUEST)
|
||||||
|
}
|
||||||
|
branch.onValue(0)
|
||||||
|
.playerl(FacialExpression.HALF_GUILTY, "Actually, I don't have that much.")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
|
optionBuilder3.option_playerl("1 million coins for this dump? No way")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,14 +161,14 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
.npcl("How goes thy quest adventurer?")
|
.npcl("How goes thy quest adventurer?")
|
||||||
.playerl("It's tough. I've not done it yet.")
|
.playerl("It's tough. I've not done it yet.")
|
||||||
.npcl("Remember, the items you need to enter are:")
|
.npcl("Remember, the items you need to enter are:")
|
||||||
.npcl("An Entranan Firebirds' feather, A Master Thieves armband, and a cooked Lava Eel.")
|
.npcl("An Entranan Firebird's feather, A Master Thieves' armband, and a cooked Lava Eel.")
|
||||||
.options()
|
.options()
|
||||||
.let { optionBuilder2 ->
|
.let { optionBuilder2 ->
|
||||||
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
||||||
.npcl("I'm sure you have the relevant contacts to find out about that.")
|
.npcl("I'm sure you have the relevant contacts to find out about that.")
|
||||||
.end()
|
.end()
|
||||||
optionBuilder2.option_playerl("Any hints on getting the feather?")
|
optionBuilder2.option_playerl("Any hints on getting the feather?")
|
||||||
.npcl("Not really - other than Entranan firebirds tend to live on Entrana.")
|
.npcl("Not really - other than Entranan Firebirds tend to live on Entrana.")
|
||||||
.end()
|
.end()
|
||||||
optionBuilder2.option_playerl("Any hints on getting the eel?")
|
optionBuilder2.option_playerl("Any hints on getting the eel?")
|
||||||
.npcl("Maybe go and find someone who knows a lot about fishing?")
|
.npcl("Maybe go and find someone who knows a lot about fishing?")
|
||||||
@ -128,25 +176,49 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
||||||
.npcl("Good luck with that.")
|
.npcl("Good luck with that.")
|
||||||
.end()
|
.end()
|
||||||
|
optionBuilder2.option_playerl("Or perhaps the guild needs a bit of financing?")
|
||||||
|
.npcl("Perhaps a small 'Loan' of 1 million coins?")
|
||||||
|
// Bribery branch
|
||||||
|
.options()
|
||||||
|
.let { optionBuilder3 ->
|
||||||
|
optionBuilder3.option_playerl("That sounds good")
|
||||||
|
.branch { player ->
|
||||||
|
if (inInventory(player!!, 995, AchiettiesDialogue.BRIBE_PRICE)) 1 else 0
|
||||||
|
}
|
||||||
|
.let { branch ->
|
||||||
|
branch.onValue(1)
|
||||||
|
.playerl(FacialExpression.FRIENDLY, "Here you go!")
|
||||||
|
.endWith { _, player ->
|
||||||
|
removeItem(player, Item(995, AchiettiesDialogue.BRIBE_PRICE), Container.INVENTORY)
|
||||||
|
finishQuest(player, Quests.HEROES_QUEST)
|
||||||
|
}
|
||||||
|
branch.onValue(0)
|
||||||
|
.playerl(FacialExpression.HALF_GUILTY, "Actually, I don't have that much.")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
|
optionBuilder3.option_playerl("1 million coins for this dump? No way")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
b.onQuestStages(Quests.HEROES_QUEST, 6)
|
b.onQuestStages(Quests.HEROES_QUEST, 6)
|
||||||
.npcl("Greetings. Welcome to the Heroes' Guild.")
|
.npcl("Greetings. Welcome to the Heroes' Guild.")
|
||||||
.npcl("How goes thy quest adventurer?")
|
.npcl("How goes thy quest adventurer?")
|
||||||
.branch { player ->
|
.branch { player ->
|
||||||
return@branch if (HeroesQuest.allItemsInInventory(player)) { 1 } else { 0 }
|
if (HeroesQuest.allItemsInInventory(player)) 1 else 0
|
||||||
}.let { branch ->
|
}
|
||||||
|
.let { branch ->
|
||||||
branch.onValue(0)
|
branch.onValue(0)
|
||||||
.playerl("It's tough. I've not done it yet.")
|
.playerl("It's tough. I've not done it yet.")
|
||||||
.npcl("Remember, the items you need to enter are:")
|
.npcl("Remember, the items you need to enter are:")
|
||||||
.npcl("An Entranan Firebirds' feather, A Master Thieves armband, and a cooked Lava Eel.")
|
.npcl("An Entranan Firebird's feather, A Master Thieves' armband, and a cooked Lava Eel.")
|
||||||
.options()
|
.options()
|
||||||
.let { optionBuilder2 ->
|
.let { optionBuilder2 ->
|
||||||
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
optionBuilder2.option_playerl("Any hints on getting the thieves armband?")
|
||||||
.npcl("I'm sure you have the relevant contacts to find out about that.")
|
.npcl("I'm sure you have the relevant contacts to find out about that.")
|
||||||
.end()
|
.end()
|
||||||
optionBuilder2.option_playerl("Any hints on getting the feather?")
|
optionBuilder2.option_playerl("Any hints on getting the feather?")
|
||||||
.npcl("Not really - other than Entranan firebirds tend to live on Entrana.")
|
.npcl("Not really - other than Entranan Firebirds tend to live on Entrana.")
|
||||||
.end()
|
.end()
|
||||||
optionBuilder2.option_playerl("Any hints on getting the eel?")
|
optionBuilder2.option_playerl("Any hints on getting the eel?")
|
||||||
.npcl("Maybe go and find someone who knows a lot about fishing?")
|
.npcl("Maybe go and find someone who knows a lot about fishing?")
|
||||||
@ -154,8 +226,30 @@ class AchiettiesDialogueFile : DialogueBuilderFile() {
|
|||||||
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
optionBuilder2.option_playerl("I'll start looking for all those things then.")
|
||||||
.npcl("Good luck with that.")
|
.npcl("Good luck with that.")
|
||||||
.end()
|
.end()
|
||||||
|
optionBuilder2.option_playerl("Or perhaps the guild needs a bit of financing?")
|
||||||
|
.npcl("Perhaps a small 'Loan' of 1 million coins?")
|
||||||
|
// Bribery branch
|
||||||
|
.options()
|
||||||
|
.let { optionBuilder3 ->
|
||||||
|
optionBuilder3.option_playerl("That sounds good")
|
||||||
|
.branch { player ->
|
||||||
|
if (inInventory(player!!, 995, AchiettiesDialogue.BRIBE_PRICE)) 1 else 0
|
||||||
|
}
|
||||||
|
.let { branch ->
|
||||||
|
branch.onValue(1)
|
||||||
|
.playerl(FacialExpression.FRIENDLY, "Here you go!")
|
||||||
|
.endWith { _, player ->
|
||||||
|
removeItem(player, Item(995, AchiettiesDialogue.BRIBE_PRICE), Container.INVENTORY)
|
||||||
|
finishQuest(player, Quests.HEROES_QUEST)
|
||||||
|
}
|
||||||
|
branch.onValue(0)
|
||||||
|
.playerl(FacialExpression.HALF_GUILTY, "Actually, I don't have that much.")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
|
optionBuilder3.option_playerl("1 million coins for this dump? No way")
|
||||||
|
.end()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
branch.onValue(1)
|
branch.onValue(1)
|
||||||
.playerl("I have all the required items.")
|
.playerl("I have all the required items.")
|
||||||
.npcl("I see that you have. Well done. Now, to complete the quest, and gain entry to the Heroes' Guild in your final task all that you have to do is...")
|
.npcl("I see that you have. Well done. Now, to complete the quest, and gain entry to the Heroes' Guild in your final task all that you have to do is...")
|
||||||
|
@ -41,7 +41,7 @@ class KingRoaldDialogue(player: Player? = null) : DialoguePlugin(player) {
|
|||||||
addOption("Priest in Peril", KingRoaldPIPDialogue(player.questRepository.getStage(Quests.PRIEST_IN_PERIL)))
|
addOption("Priest in Peril", KingRoaldPIPDialogue(player.questRepository.getStage(Quests.PRIEST_IN_PERIL)))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.questRepository.getQuest(Quests.SHIELD_OF_ARRAV).isStarted(player) && !player.questRepository.getQuest(Quests.SHIELD_OF_ARRAV).isCompleted(player)) {
|
if (!player.questRepository.getQuest(Quests.SHIELD_OF_ARRAV).isCompleted(player)) {
|
||||||
addOption("Shield of Arrav", KingRoaldArravDialogue())
|
addOption("Shield of Arrav", KingRoaldArravDialogue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,12 +6,20 @@ import core.game.dialogue.DialogueFile
|
|||||||
import core.tools.END_DIALOGUE
|
import core.tools.END_DIALOGUE
|
||||||
import core.tools.START_DIALOGUE
|
import core.tools.START_DIALOGUE
|
||||||
import content.data.Quests
|
import content.data.Quests
|
||||||
|
import core.game.dialogue.FacialExpression
|
||||||
|
import core.api.Container
|
||||||
|
import core.api.inInventory
|
||||||
|
import core.api.removeItem
|
||||||
|
import core.game.dialogue.DialoguePlugin
|
||||||
|
|
||||||
|
|
||||||
private val CERTIFICATE = Item(769)
|
private val CERTIFICATE = Item(769)
|
||||||
|
|
||||||
|
|
||||||
class KingRoaldArravDialogue() : DialogueFile() {
|
class KingRoaldArravDialogue() : DialogueFile() {
|
||||||
|
companion object {
|
||||||
|
const val BRIBE_PRICE = 6000
|
||||||
|
}
|
||||||
override fun handle(componentID: Int, buttonID: Int) {
|
override fun handle(componentID: Int, buttonID: Int) {
|
||||||
|
|
||||||
if (player!!.inventory.containsItem(ShieldofArrav.PHOENIX_SHIELD) || player!!.inventory.containsItem(ShieldofArrav.BLACKARM_SHIELD)) {
|
if (player!!.inventory.containsItem(ShieldofArrav.PHOENIX_SHIELD) || player!!.inventory.containsItem(ShieldofArrav.BLACKARM_SHIELD)) {
|
||||||
@ -54,7 +62,29 @@ class KingRoaldArravDialogue() : DialogueFile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
abandonFile()
|
when (stage) {
|
||||||
|
START_DIALOGUE -> player("I would like to contribute to one of", "your Political Action Committees").also{ stage++ }
|
||||||
|
1 -> npcl("Which one?").also { stage++ }
|
||||||
|
2 -> playerl("The Citizens Who Can't Be Bothered To Do Shield of Arrav").also { stage++ }
|
||||||
|
3 -> npcl(FacialExpression.HALF_THINKING, "I see... that will be 6,000 coins").also { stage++ }
|
||||||
|
4 -> options("Here you go!", "Nevermind.").also { stage++ }
|
||||||
|
5 -> when (buttonID) {
|
||||||
|
1 -> {
|
||||||
|
if (inInventory(player!!, 995, BRIBE_PRICE))
|
||||||
|
playerl(FacialExpression.FRIENDLY, "Here you go!").also { stage = 20 }
|
||||||
|
else
|
||||||
|
playerl(FacialExpression.HALF_GUILTY, "Actually, I don't have that much.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
2 -> playerl(FacialExpression.FRIENDLY, "On second thought, never mind.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
20 -> {
|
||||||
|
npcl("Thank you so much, dear donor. The government of Varrock now has higher priorities than the Shield of Arrav.")
|
||||||
|
if (removeItem(player!!, Item(995, BRIBE_PRICE), Container.INVENTORY)) {
|
||||||
|
player!!.questRepository.getQuest(Quests.SHIELD_OF_ARRAV).finish(player)
|
||||||
|
}
|
||||||
|
stage = END_DIALOGUE
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user