Rewrote Rimmington
Enabled pickpocketing of Anja and Hengel
This commit is contained in:
@@ -10,7 +10,7 @@ import core.api.utils.WeightedItem
|
||||
import java.util.stream.IntStream
|
||||
|
||||
enum class Pickpockets(val ids: IntArray, val requiredLevel: Int, val low: Double, val high: Double, val experience: Double, val stunDamageMin: Int, val stunDamageMax: Int, val stunTime: Int, val table: WeightBasedTable) {
|
||||
MAN(intArrayOf(1, 2, 3, 4, 5, 6, 16, 24, 25, 170, 1086, 3224, 3915, 3226, 3227, 5924, 5923), 1, 180.0, 240.0, 8.0, 1, 1,5, WeightBasedTable.create(
|
||||
MAN(intArrayOf(1, 2, 3, 4, 5, 6, 16, 24, 25, 170, 1086, 2683, 2684, 3224, 3915, 3226, 3227, 5924, 5923), 1, 180.0, 240.0, 8.0, 1, 1,5, WeightBasedTable.create(
|
||||
WeightedItem(Items.COINS_995,3,3,1.0,true)
|
||||
)),
|
||||
FARMER(intArrayOf(7, 1757, 1758), 10, 180.0, 240.0, 14.5, 1,1,5, WeightBasedTable.create(
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import core.api.*
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.game.world.map.RegionManager
|
||||
import core.tools.RandomFunction
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles Anja's dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class AnjaDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
player(FacialExpression.NEUTRAL, "Hello.").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> npcl(FacialExpression.ASKING, "Hello @g[sir,madam]. What are you doing in my house?").also { stage++ }
|
||||
1 -> options("I'm just wandering around.", "I was hoping you'd give me some free stuff.", "I've come to kill you.").also { stage++ }
|
||||
2 -> when (buttonId) {
|
||||
1 -> playerl(FacialExpression.NEUTRAL, "I'm just wondering around.").also { stage = 10 }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "I was hoping you'd give me some free stuff.").also { stage = 20 }
|
||||
3 -> playerl(FacialExpression.ANGRY_WITH_SMILE, "I've come to kill you.").also { stage = 30 }
|
||||
}
|
||||
|
||||
10 -> npcl(FacialExpression.NEUTRAL, "Oh dear, are you lost?").also { stage++ }
|
||||
11 -> options("Yes, I'm lost.", "No, I know where I am.").also { stage++ }
|
||||
12 -> when (buttonId) {
|
||||
1 -> playerl(FacialExpression.NEUTRAL, "Yes, I'm lost.").also { stage = 13 }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "No, I know where I am.").also { stage = 15 }
|
||||
}
|
||||
|
||||
13 -> npcl(FacialExpression.FRIENDLY, "Okay, just walk north-east when you leave this house and soon you'll reach the big city of Falador.").also { stage++ }
|
||||
14 -> playerl(FacialExpression.FRIENDLY, "Thanks a lot.").also { stage = END_DIALOGUE }
|
||||
15 -> npcl(FacialExpression.ASKING, "Oh? Well, would you mind wandering somewhere else?").also { stage++ }
|
||||
16 -> npcl(FacialExpression.NEUTRAL, "This is my house.").also { stage++ }
|
||||
17 -> playerl(FacialExpression.NEUTRAL, "Meh!").also { stage = END_DIALOGUE }
|
||||
|
||||
20 -> {
|
||||
val dialogues = arrayOf("Do you REALLY need it?", "I don't have much on me...", "I don't know...")
|
||||
npcl(FacialExpression.NEUTRAL, dialogues[RandomFunction.random(0, 3)])
|
||||
stage++
|
||||
}
|
||||
|
||||
21 -> playerl(FacialExpression.ASKING, "I promise I'll stop bothering you!").also { stage++ }
|
||||
22 -> playerl(FacialExpression.ASKING, "Pleeease!").also { stage++ }
|
||||
23 -> playerl(FacialExpression.ASKING, "Pwetty pleathe wiv thugar on top!").also { stage++ }
|
||||
24 -> {
|
||||
npcl(FacialExpression.NEUTRAL, "Oh, alright. Here you go.")
|
||||
addItemOrDrop(player, Items.COINS_995, RandomFunction.random(1, 3))
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
|
||||
30 -> {
|
||||
stage = END_DIALOGUE
|
||||
close()
|
||||
|
||||
val hengel = findLocalNPC(npc, NPCs.HENGEL_2683)
|
||||
if(hengel != null)
|
||||
sendChat(hengel, "Aaaaarrgh!")
|
||||
|
||||
sendChat(npc, "Eeeek!")
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return AnjaDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.ANJA_2684)
|
||||
}
|
||||
}
|
||||
@@ -1,144 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.dialogue;
|
||||
|
||||
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.game.node.item.Item;
|
||||
import core.game.world.map.RegionManager;
|
||||
import core.plugin.Initializable;
|
||||
import core.tools.RandomFunction;
|
||||
|
||||
/**
|
||||
* Represents the dialogue plugin used for the anja npc.
|
||||
* @author jamix77
|
||||
*/
|
||||
@Initializable
|
||||
public final class AnjaDialoguePlugin extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
*
|
||||
* Constructs a new @{Code AnjaDialoguePlugin} object.
|
||||
*/
|
||||
public AnjaDialoguePlugin() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code AjjatDialoguePlugin} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public AnjaDialoguePlugin(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new AnjaDialoguePlugin(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
player("Hello.");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
npc("Hello sir. What are you doing in my house?");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
interpreter.sendOptions("Select an Option", "I'm just wandering around.", "I was hoping you'd give me some free stuff.", "I've come to kill you.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (buttonId == 1) {
|
||||
player("I'm just wondering around.");
|
||||
stage = 3;
|
||||
} else if (buttonId == 2) {
|
||||
player("I was hoping you'd give me some free stuff.");
|
||||
stage = 10;
|
||||
} else if (buttonId == 3) {
|
||||
player("I've come to kill you.");
|
||||
stage = 13;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
npc("Oh dear are you lost?");
|
||||
stage++;
|
||||
break;
|
||||
case 4:
|
||||
interpreter.sendOptions("Select an Option.", "Yes, I'm lost.", "No, I know where I am.");
|
||||
stage++;
|
||||
break;
|
||||
case 5:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
player("Yes, I'm lost.");
|
||||
stage =6;
|
||||
break;
|
||||
case 2:
|
||||
player("No I know where I am.");
|
||||
stage = 8;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
npc("Okay, just walk north-east when you leave this house,","and soon you'll reach the big city of Falador.");
|
||||
stage++;
|
||||
break;
|
||||
case 7:
|
||||
player("Thanks a lot.");
|
||||
stage = 605;
|
||||
break;
|
||||
case 8:
|
||||
npc("Oh? Well, would you mind wandering somewhere else?", "This is my house.");
|
||||
stage++;
|
||||
break;
|
||||
case 9:
|
||||
player("Meh!");
|
||||
stage = 605;
|
||||
break;
|
||||
case 10:
|
||||
String[] dialogues = {"Do you REALLY need it","I don't have much on me...", "I don't know..."};
|
||||
npc(dialogues[RandomFunction.random(0, 2)]);
|
||||
stage++;
|
||||
break;
|
||||
case 11:
|
||||
interpreter.sendDialogues(player, FacialExpression.ASKING, "I promise I'll stop bothering you!", "Pleeease!","Pwetty pleathe wiv thugar on top!");
|
||||
stage++;
|
||||
break;
|
||||
case 12:
|
||||
npc("Oh, alright. Here you go.");
|
||||
player.getInventory().add(new Item(995,RandomFunction.random(1, 3)));
|
||||
stage = 605;
|
||||
break;
|
||||
case 13:
|
||||
npc.sendChat("Eeeek!");
|
||||
for (NPC npc1 : RegionManager.getLocalNpcs(player)) {
|
||||
if (npc1.getName().equalsIgnoreCase("Hengel")) {
|
||||
npc1.sendChat("Aaaaarrgh!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
end();
|
||||
break;
|
||||
case 605:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 2684 };
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.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 to handle the brain archery npc.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class BrianArcheryDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code BrianArcheryDialogue} {@code Object}.
|
||||
*/
|
||||
public BrianArcheryDialogue() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code BrianArcheryDialogue} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public BrianArcheryDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new BrianArcheryDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Would you like to buy some archery equipment?");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
interpreter.sendOptions("Select an Option", "No thanks, I've got all the archery equipment I need.", "Let's see what you've got, then.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "No, thanks, I've got all the archery equipment I need.");
|
||||
stage = 10;
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
npc.openShop(player);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Okay. Fare well on your travels.");
|
||||
stage = 11;
|
||||
break;
|
||||
case 11:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 1860 };
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import core.api.openNpcShop
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles the BrianArchery's dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class BrianArcheryDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
npcl(FacialExpression.HAPPY, "Would you like to buy some archery equipment?").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> options("Let's see what you've got, then.", "No thanks, I've got all the archery equipment I need.").also { stage++ }
|
||||
1 -> when (buttonId) {
|
||||
1 -> end().also { openNpcShop(player, npc.id) }
|
||||
2 -> playerl(FacialExpression.HALF_GUILTY, "No thanks, I've got all the archery equipment I need.").also { stage = 10 }
|
||||
}
|
||||
|
||||
10 -> {
|
||||
npcl(FacialExpression.FRIENDLY, "Okay. Fare well on your travels.")
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return BrianArcheryDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.BRIAN_1860)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import core.api.findLocalNPC
|
||||
import core.api.sendChat
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.game.world.map.RegionManager
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles the Hengel's dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class HengelDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
playerl(FacialExpression.NEUTRAL, "Hello.").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> npcl(FacialExpression.ASKING, "What are you doing here?").also { stage++ }
|
||||
1 -> options("I'm just wandering around.", "I was hoping you'd give me some free stuff.", "I've come to kill you.").also { stage++ }
|
||||
2 -> when (buttonId) {
|
||||
1 -> playerl(FacialExpression.NEUTRAL, "I'm just wondering around.").also { stage = 10 }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "I was hoping you'd give me some free stuff.").also { stage = 20 }
|
||||
3 -> playerl(FacialExpression.ANGRY_WITH_SMILE, "I've come to kill you.").also { stage = 30 }
|
||||
}
|
||||
|
||||
10 -> npcl(FacialExpression.ASKING, "You do realise you're wandering around in my house?").also { stage++ }
|
||||
11 -> playerl(FacialExpression.NEUTRAL, "Yep.").also { stage++ }
|
||||
12 -> npcl(FacialExpression.ANNOYED, "Well please get out!").also { stage++ }
|
||||
13 -> playerl(FacialExpression.NEUTRAL, "Sheesh, keep your wig on!").also { stage = END_DIALOGUE }
|
||||
|
||||
20 -> npcl(FacialExpression.ANNOYED, "No, I jolly well wouldn't!").also { stage++ }
|
||||
21 -> npcl(FacialExpression.ANNOYED, "Get out of my house!").also { stage++ }
|
||||
22 -> playerl(FacialExpression.NEUTRAL, "Meanie!").also { stage = END_DIALOGUE }
|
||||
|
||||
30 -> {
|
||||
stage = END_DIALOGUE
|
||||
close()
|
||||
|
||||
val anja = findLocalNPC(npc, NPCs.ANJA_2684)
|
||||
if(anja != null)
|
||||
sendChat(anja, "Eeeek!")
|
||||
|
||||
sendChat(npc, "Aaaaarrgh!")
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return HengelDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.HENGEL_2683)
|
||||
}
|
||||
}
|
||||
-115
@@ -1,115 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.dialogue;
|
||||
|
||||
import core.game.dialogue.DialoguePlugin;
|
||||
import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.world.map.RegionManager;
|
||||
import core.plugin.Initializable;
|
||||
|
||||
/**
|
||||
* Represents the dialogue plugin used for the hengel npc.
|
||||
* @author jamix77
|
||||
*/
|
||||
@Initializable
|
||||
public final class HengelDialoguePlugin extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
*
|
||||
* Constructs a new @{Code HengelDialoguePlugin} object.
|
||||
*/
|
||||
public HengelDialoguePlugin() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code AjjatDialoguePlugin} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public HengelDialoguePlugin(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new HengelDialoguePlugin(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
player("Hello.");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
npc("What are you doing here?");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
interpreter.sendOptions("Select an Option", "I'm just wandering around.", "I was hoping you'd give me some free stuff.", "I've come to kill you.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (buttonId == 1) {
|
||||
player("I'm just wondering around.");
|
||||
stage = 3;
|
||||
} else if (buttonId == 2) {
|
||||
player("I was hoping you'd give me some free stuff.");
|
||||
stage = 7;
|
||||
} else if (buttonId == 3) {
|
||||
player("I've come to kill you.");
|
||||
stage = 9;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
npc("You do realise you're wandering around in my house?");
|
||||
stage++;
|
||||
break;
|
||||
case 4:
|
||||
player("Yep.");
|
||||
stage++;
|
||||
break;
|
||||
case 5:
|
||||
npc("Well please get out!");
|
||||
stage++;
|
||||
break;
|
||||
case 6:
|
||||
player("Sheesh, keep your wig on!");
|
||||
stage = 605;
|
||||
break;
|
||||
case 7:
|
||||
npc("No, I jolly well wouldn't!","Get out of my house");
|
||||
stage++;
|
||||
break;
|
||||
case 8:
|
||||
player("Meanie!");
|
||||
stage = 605;
|
||||
break;
|
||||
case 9:
|
||||
npc.sendChat("Aaaaarrgh!");
|
||||
for (NPC npc1 : RegionManager.getLocalNpcs(player)) {
|
||||
if (npc1.getName().equalsIgnoreCase("anja")) {
|
||||
npc1.sendChat("Eeeek!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
end();
|
||||
break;
|
||||
case 605:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 2683 };
|
||||
}
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.dialogue;
|
||||
|
||||
import core.game.dialogue.DialoguePlugin;
|
||||
import core.game.dialogue.FacialExpression;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.link.quest.Quest;
|
||||
import core.plugin.Initializable;
|
||||
import core.game.node.item.Item;
|
||||
|
||||
/**
|
||||
* Represents the dialogue plugin used for the hetty npc.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class HettyDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code HettyDialogue} {@code Object}.
|
||||
*/
|
||||
public HettyDialogue() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code HettyDialogue} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public HettyDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new HettyDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
Quest quest = player.getQuestRepository().getQuest("Witch's Potion");
|
||||
if (quest.isCompleted(player)) {
|
||||
interpreter.sendDialogues(307, FacialExpression.ASKING, "How's your magic coming along?");
|
||||
stage = 0;
|
||||
}
|
||||
switch (quest.getStage(player)) {
|
||||
case 0:
|
||||
interpreter.sendDialogues(307, FacialExpression.NEUTRAL, "What could you want with an old woman like me?");
|
||||
stage = 11;
|
||||
break;
|
||||
case 20:
|
||||
interpreter.sendDialogues(307, FacialExpression.HAPPY, "So have you found the things for the potion?");
|
||||
stage = 100;
|
||||
break;
|
||||
case 40:
|
||||
if (args.length == 2) {
|
||||
interpreter.sendDialogue("You drink from the cauldron, it tastes horrible! You feel yourself", "imbued with power.");
|
||||
stage = 41;
|
||||
} else {
|
||||
interpreter.sendDialogues(307, FacialExpression.HALF_GUILTY, "Well are you going to drink the potion or not?");
|
||||
stage = 500;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
Quest quest = player.getQuestRepository().getQuest("Witch's Potion");
|
||||
switch (stage) {
|
||||
case 0:
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "I'm practicing and slowly getting better.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
interpreter.sendDialogues(307, FacialExpression.HALF_GUILTY, "Good, good.");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
break;
|
||||
case 11:
|
||||
interpreter.sendOptions("Select an Option", "I am in search of a quest.", "I've heard that you are a witch.");
|
||||
stage = 12;
|
||||
break;
|
||||
case 12:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I am in search of a quest.");
|
||||
stage = 13;
|
||||
break;
|
||||
case 2:
|
||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I've heard that you are a witch.");
|
||||
stage = 20;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
interpreter.sendDialogues(307, FacialExpression.HAPPY, "Hmmm... Maybe I can think of something for you.");
|
||||
stage = 14;
|
||||
break;
|
||||
case 14:
|
||||
interpreter.sendDialogues(307, FacialExpression.HAPPY, "Would you like to become more proficient in the dark", "arts?");
|
||||
stage = 15;
|
||||
break;
|
||||
case 15:
|
||||
interpreter.sendOptions("Select an Option", "Yes help me become one with my darker side.", "No I have my principles and honour.");
|
||||
stage = 16;
|
||||
break;
|
||||
case 16:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
interpreter.sendDialogues(player, FacialExpression.HAPPY, "Yes help me become one with my darker side.");
|
||||
stage = 30;
|
||||
break;
|
||||
case 2:
|
||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "No I have my principles and honour.");
|
||||
stage = 17;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
interpreter.sendDialogues(307, FacialExpression.HALF_GUILTY, "Suit yourself, but you're missing out.");
|
||||
stage = 18;
|
||||
break;
|
||||
case 18:
|
||||
end();
|
||||
break;
|
||||
case 20:
|
||||
interpreter.sendDialogues(307, FacialExpression.HALF_GUILTY, "Yes it does seem to be getting fairly common", "knowledge.");
|
||||
stage = 21;
|
||||
break;
|
||||
case 21:
|
||||
interpreter.sendDialogues(307, FacialExpression.HALF_GUILTY, "I fear I may get a visit from the witch hunter of", "Falador before long.");
|
||||
stage = 22;
|
||||
break;
|
||||
case 22:
|
||||
end();
|
||||
break;
|
||||
case 30:
|
||||
interpreter.sendDialogues(307, FacialExpression.NEUTRAL, "Ok I'm going to make a potion to help bring out your", "darker self.");
|
||||
stage = 31;
|
||||
break;
|
||||
case 31:
|
||||
interpreter.sendDialogues(307, FacialExpression.NEUTRAL, "You will need certain ingredients.");
|
||||
stage = 32;
|
||||
break;
|
||||
case 32:
|
||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "What do I need?");
|
||||
stage = 33;
|
||||
break;
|
||||
case 33:
|
||||
interpreter.sendDialogues(307, FacialExpression.NEUTRAL, "You need an eye of newt, a rat's tail, and onion... Oh", "and a piece of burnt meat.");
|
||||
stage = 34;
|
||||
break;
|
||||
case 34:
|
||||
interpreter.sendDialogues(player, FacialExpression.HAPPY, "Great, I'll go get them.");
|
||||
stage = 35;
|
||||
break;
|
||||
case 35:
|
||||
quest.start(player);
|
||||
quest.setStage(player, 20);
|
||||
end();
|
||||
break;
|
||||
case 100:
|
||||
// Her:Well I can't make the potion without them!
|
||||
// Remember.../You
|
||||
// need an eye of newt, a rat's tail, an onion, and a/piece of
|
||||
// burnt
|
||||
// meat. Off you go dear! Me:end();
|
||||
if (!player.getInventory().containItems(1957, 300, 2146, 221)) {
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "I'm afraid I don't have all of them yet.");
|
||||
stage = 101;
|
||||
} else {
|
||||
interpreter.sendDialogues(player, FacialExpression.HAPPY, "Yes I have everything!");
|
||||
stage = 110;
|
||||
}
|
||||
break;
|
||||
case 110:
|
||||
interpreter.sendDialogues(307, FacialExpression.HAPPY, "Excellent, can I have them then?");
|
||||
stage = 111;
|
||||
break;
|
||||
case 111:
|
||||
interpreter.sendDialogue("You pass the ingredients to Hetty and she puts them all into her", "cauldron. Hetty closes her eyes and begins to chant. The cauldron", "bubbles mysteriously.");
|
||||
stage = 112;
|
||||
break;
|
||||
case 112:
|
||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "Well, is it ready?");
|
||||
stage = 113;
|
||||
break;
|
||||
case 113:
|
||||
if (player.getInventory().remove(new Item(1957), new Item(300), new Item(2146), new Item(221))) {
|
||||
quest.setStage(player, 40);
|
||||
interpreter.sendDialogues(307, FacialExpression.HAPPY, "Ok, now drink from the cauldron.");
|
||||
stage = 114;
|
||||
}
|
||||
break;
|
||||
case 114:
|
||||
end();
|
||||
break;
|
||||
case 101:
|
||||
interpreter.sendDialogues(307, FacialExpression.NEUTRAL, "Well I can't make the potion without them! Remember...", "You need an eye of newt, a rat's tail, an onion, and a", "piece of burnt meat. Off you go dear!");
|
||||
stage = 102;
|
||||
break;
|
||||
case 102:
|
||||
end();
|
||||
break;
|
||||
case 500:
|
||||
end();
|
||||
break;
|
||||
case 41:
|
||||
end();
|
||||
quest.finish(player);
|
||||
player.getQuestRepository().syncronizeTab(player);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 307 };
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import content.region.asgarnia.rimmington.quest.witchpotion.HettyWitchsPotionDialogue
|
||||
import content.region.asgarnia.rimmington.quest.witchpotion.WitchsPotion
|
||||
import core.api.*
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles the Hetty's dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class HettyDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
|
||||
val questStage = getQuestStage(player, WitchsPotion.QUEST_NAME)
|
||||
|
||||
when(questStage) {
|
||||
0 -> npcl(FacialExpression.NEUTRAL, "What could you want with an old woman like me?").also { stage = 0 }
|
||||
in 1..99 -> openDialogue(player, HettyWitchsPotionDialogue(questStage), npc)
|
||||
else -> npcl(FacialExpression.ASKING, "How's your magic coming along?").also { stage = 30 }
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> options("I am in search of a quest.", "I've heard that you are a witch.").also { stage++ }
|
||||
1 -> when (buttonId) {
|
||||
1 -> playerl(FacialExpression.NEUTRAL, "I am in search of a quest.").also { stage = 10 }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "I've heard that you are a witch.").also { stage = 20 }
|
||||
}
|
||||
|
||||
10 -> npcl(FacialExpression.HAPPY, "Hmmm... Maybe I can think of something for you.").also { stage++ }
|
||||
11 -> npcl(FacialExpression.HAPPY, "Would you like to become more proficient in the dark arts?").also { stage++ }
|
||||
12 -> options("Yes help me become one with my darker side.", "No I have my principles and honour.", "What, you mean improve my magic?").also { stage++ }
|
||||
13 -> when (buttonId) {
|
||||
1 -> playerl(FacialExpression.HAPPY, "Yes help me become one with my darker side.").also { stage = 14 }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "No I have my principles and honour.").also { stage = 15 }
|
||||
3 -> playerl(FacialExpression.ASKING, "What, you mean improve my magic?").also { stage = 40 }
|
||||
}
|
||||
|
||||
14 -> openDialogue(player, HettyWitchsPotionDialogue(0), npc)
|
||||
15 -> npcl(FacialExpression.HALF_GUILTY, "Suit yourself, but you're missing out.").also { stage = END_DIALOGUE }
|
||||
|
||||
20 -> npcl(FacialExpression.HALF_GUILTY, "Yes it does seem to be getting fairly common knowledge").also { stage++ }
|
||||
21 -> npcl(FacialExpression.HALF_GUILTY, "I fear I may get a visit from the witch hunter of Falador before long.").also { stage = END_DIALOGUE }
|
||||
|
||||
30 -> playerl(FacialExpression.HALF_GUILTY, "I'm practicing and slowly getting better.").also { stage++ }
|
||||
31 -> npcl(FacialExpression.HALF_GUILTY, "Good, good.").also { stage = END_DIALOGUE }
|
||||
|
||||
40 -> sendDialogue("The witch sighs.").also { stage++ }
|
||||
41 -> npcl(FacialExpression.ANNOYED, "Yes, improve your magic...").also { stage++ }
|
||||
42 -> npcl(FacialExpression.ASKING, "Do you have no sense of drama?").also { stage++ }
|
||||
43 -> options("Yes I'd like to improve my magic.", "No I'm not interested.", "Show me the mysteries of the dark arts...").also { stage++ }
|
||||
44 -> when(buttonId) {
|
||||
// TODO: Find authentic source for dialogue option
|
||||
1 -> playerl(FacialExpression.NEUTRAL, "Yes I'd like to improve my magic.").also { stage = 14 }
|
||||
// TODO: Find authentic source for dialogue option
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "No I'm not interested.").also { stage = 15 }
|
||||
3 -> playerl(FacialExpression.NEUTRAL, "Show me the mysteries of the dark arts...").also { stage++ }
|
||||
}
|
||||
45 -> sendDialogue("The witch smiles mysteriously.").also { stage = 14 }
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return HettyDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.HETTY_307)
|
||||
}
|
||||
}
|
||||
-74
@@ -1,74 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.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;
|
||||
|
||||
/**
|
||||
* Handles the RimmingtonShopKeeperDialogue dialogue.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
@Initializable
|
||||
public class RimmingtonShopKeeperDialogue extends DialoguePlugin {
|
||||
|
||||
public RimmingtonShopKeeperDialogue() {
|
||||
|
||||
}
|
||||
|
||||
public RimmingtonShopKeeperDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 531, 530 };
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
interpreter.sendOptions("Select an Option", "Yes, please. What are you selling?", "How should I use your shop?", "No, thanks.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
npc.openShop(player);
|
||||
break;
|
||||
case 2:
|
||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "I'm glad you ask! You can buy as many of the items", "stocked as you wish. You can also sell most items to the", "shop.");
|
||||
stage = 10;
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case 10:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
|
||||
return new RimmingtonShopKeeperDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Can I help you at all?");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import core.api.openNpcShop
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles the RimmingtonShopKeeper dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class RimmingtonShopKeeperDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
npcl(FacialExpression.HAPPY, "Can I help you at all?").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> options("Yes, please. What are you selling?", "How should I use your shop?", "No, thanks.").also { stage++ }
|
||||
1 -> when (buttonId) {
|
||||
1 -> end().also { openNpcShop(player, npc.id) }
|
||||
2 -> npcl(FacialExpression.HAPPY, "I'm glad you ask! You can buy as many of the items stocked as you wish. You can also sell most items to the shop.").also { stage = END_DIALOGUE }
|
||||
3 -> end()
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return RimmingtonShopKeeperDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray = intArrayOf(
|
||||
NPCs.SHOPKEEPER_530,
|
||||
NPCs.SHOP_ASSISTANT_531
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package content.region.asgarnia.rimmington.dialogue
|
||||
|
||||
import core.api.openNpcShop
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Handles the Rommik's dialogue.
|
||||
*/
|
||||
@Initializable
|
||||
class RommikDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
npc = args[0] as NPC
|
||||
npcl(FacialExpression.HAPPY, "Would you like to buy some crafting equipment?").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> options("Let's see what you've got, then.", "No thanks, I've got all the crafting equipment I need.").also { stage++ }
|
||||
1 -> when (buttonId) {
|
||||
1 -> end().also { openNpcShop(player, npc.id) }
|
||||
2 -> playerl(FacialExpression.HALF_GUILTY, "No thanks, I've got all the crafting equipment I need.").also { stage = 10 }
|
||||
}
|
||||
|
||||
10 -> {
|
||||
npcl(FacialExpression.FRIENDLY, "Okay. Fare well on your travels.")
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return RommikDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.ROMMIK_585)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.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;
|
||||
|
||||
/**
|
||||
* Handles the RoomikDialogue dialogue.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
@Initializable
|
||||
public class RoomikDialogue extends DialoguePlugin {
|
||||
|
||||
public RoomikDialogue() {
|
||||
|
||||
}
|
||||
|
||||
public RoomikDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 585 };
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
interpreter.sendOptions("Choose an option:", "Let's see what you've got, then.", "No thanks, I've got all the crafting equipment I need.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
npc.openShop(player);
|
||||
break;
|
||||
case 2:
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "No thanks, I've got all the crafting equipment I need.");
|
||||
stage = 20;
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Okay. Fare well on your travels.");
|
||||
stage = 21;
|
||||
break;
|
||||
case 21:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
|
||||
return new RoomikDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Would you like to buy some Crafting equipment?");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package content.region.asgarnia.rimmington.quest.witchpotion
|
||||
|
||||
import core.api.*
|
||||
import core.game.dialogue.DialogueFile
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.item.Item
|
||||
import core.game.node.entity.player.Player
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.Items
|
||||
|
||||
/**
|
||||
* Handles Hetty's dialogue for the Witch's Potion Quest.
|
||||
*/
|
||||
class HettyWitchsPotionDialogue(private val dStage: Int) : DialogueFile() {
|
||||
|
||||
override fun handle(componentID: Int, buttonID: Int) {
|
||||
when (dStage) {
|
||||
0 -> handleQuestStartDialogue(player)
|
||||
20 -> handleGiveItemsDialogue(player)
|
||||
40 -> npcl(FacialExpression.ANNOYED, "Well are you going to drink the potion or not?").also { stage = END_DIALOGUE }
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleQuestStartDialogue(player: Player?) {
|
||||
player ?: return
|
||||
when (stage) {
|
||||
0 -> npcl(FacialExpression.HAPPY, "Ok I'm going to make a potion to help bring out your darker self.").also { stage++ }
|
||||
1 -> npcl(FacialExpression.NEUTRAL, "You will need certain ingredients.").also { stage++ }
|
||||
2 -> playerl(FacialExpression.NEUTRAL, "What do I need?").also { stage++ }
|
||||
3 -> npcl(FacialExpression.NEUTRAL, "You need an eye of newt, a rat's tail, an onion... Oh and a piece of burnt meat.").also { stage++ }
|
||||
4 -> {
|
||||
playerl(FacialExpression.HAPPY, "Great, I'll go and get them.")
|
||||
startQuest(player, WitchsPotion.QUEST_NAME)
|
||||
setQuestStage(player, WitchsPotion.QUEST_NAME, 20)
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleGiveItemsDialogue(player: Player?) {
|
||||
player ?: return
|
||||
when (stage) {
|
||||
0 -> npcl(FacialExpression.HAPPY, "So have you found the things for the potion?").also { stage++ }
|
||||
1 -> {
|
||||
if (inInventory(player, Items.ONION_1957, 1) &&
|
||||
inInventory(player, Items.RATS_TAIL_300, 1) &&
|
||||
inInventory(player, Items.BURNT_MEAT_2146, 1) &&
|
||||
inInventory(player, Items.EYE_OF_NEWT_221, 1)) {
|
||||
playerl(FacialExpression.HAPPY, "Yes I have everything!").also { stage = 20 }
|
||||
} else {
|
||||
playerl(FacialExpression.HALF_GUILTY, "I'm afraid I don't have all of them yet.").also { stage = 10 }
|
||||
}
|
||||
}
|
||||
|
||||
10 -> npcl(FacialExpression.ANNOYED, "Well I can't make the potion without them! Remember...").also { stage++ }
|
||||
11 -> npcl(FacialExpression.NEUTRAL, "You need an eye of newt, a rat's tail, an onion, and a piece of burnt meat.").also { stage++ }
|
||||
12 -> npcl(FacialExpression.FRIENDLY, "Off you go dear!").also { stage = END_DIALOGUE }
|
||||
|
||||
20 -> npcl(FacialExpression.HAPPY, "Excellent, can I have them then?").also { stage++ }
|
||||
21 -> sendDialogue(player, "You pass the ingredients to Hetty and she puts them all into her cauldron. Hetty closes her eyes and begins to chant. The cauldron bubbles mysteriously.").also { stage++ }
|
||||
|
||||
22 -> playerl(FacialExpression.NEUTRAL, "Well, is it ready?").also { stage++ }
|
||||
23 -> {
|
||||
// Removing the items at this stage is authentic behavior
|
||||
if (removeItem(player, Item(Items.ONION_1957, 1)) &&
|
||||
removeItem(player, Item(Items.RATS_TAIL_300, 1)) &&
|
||||
removeItem(player, Item(Items.BURNT_MEAT_2146, 1)) &&
|
||||
removeItem(player, Item(Items.EYE_OF_NEWT_221, 1))) {
|
||||
npcl(FacialExpression.HAPPY, "Ok, now drink from the cauldron.")
|
||||
setQuestStage(player, WitchsPotion.QUEST_NAME, 40)
|
||||
stage = END_DIALOGUE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-90
@@ -1,90 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.quest.witchpotion;
|
||||
|
||||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.plugin.Initializable;
|
||||
import core.game.node.entity.player.link.quest.Quest;
|
||||
|
||||
/**
|
||||
* Represents the witch's potion quest.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
@Initializable
|
||||
public class WitchsPotion extends Quest {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code WitchsPotion} {@code Object}.
|
||||
*/
|
||||
public WitchsPotion() {
|
||||
super("Witch's Potion", 31, 30, 1, 67, 0, 1, 3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawJournal(Player player, int stage) {
|
||||
super.drawJournal(player, stage);
|
||||
switch (getStage(player)) {
|
||||
case 0:
|
||||
line(player, BLUE + "I can start this quest by speaking to " + RED + "Hetty " + BLUE + "in her house in", 4+ 7);
|
||||
line(player, RED + "Rimmington" + BLUE + ", West of " + RED + "Port Sarim", 5+ 7);
|
||||
break;
|
||||
case 20:
|
||||
line(player, "<str>I spoke to Hetty in her house at Rimmington. hetty told me", 4+ 7);
|
||||
line(player, "<str>she could increase my magic power if I can bring her", 5+ 7);
|
||||
line(player, "<str>certain ingredients for a potion.", 6+ 7);
|
||||
line(player, BLUE + "Hetty needs me to bring her the following:", 8+ 7);
|
||||
if (player.getInventory().contains(1957, 1)) {
|
||||
line(player, "<str>I have an onion with me", 9+ 7);
|
||||
} else {
|
||||
line(player, RED + "An onion", 9+ 7);
|
||||
}
|
||||
if (player.getInventory().contains(1957, 1)) {
|
||||
line(player, "<str>I have an onion with me", 9+ 7);
|
||||
} else {
|
||||
line(player, RED + "An onion", 9+ 7);
|
||||
}
|
||||
if (player.getInventory().contains(300, 1)) {
|
||||
line(player, "<str>I have a rat's tail with me", 10+ 7);
|
||||
} else {
|
||||
line(player, RED + "A rat's tail", 10+ 7);
|
||||
}
|
||||
if (player.getInventory().contains(2146, 1)) {
|
||||
line(player, "<str>I have a piece of burnt meat with me", 11+ 7);
|
||||
} else {
|
||||
line(player, RED + "A piece of burnt meat", 11+ 7);
|
||||
}
|
||||
if (player.getInventory().contains(221, 1)) {
|
||||
line(player, "<str>I have an eye of newt with me", 12+ 7);
|
||||
} else {
|
||||
line(player, RED + "An eye of newt", 12+ 7);
|
||||
}
|
||||
break;
|
||||
case 40:
|
||||
line(player, "<str>I brought her an onion, a rat's tail, a piece of burnt meat", 4+ 7);
|
||||
line(player, "<str>and eye of newt which she used to make a potion.", 5+ 7);
|
||||
line(player, BLUE + "I should drink from the " + RED + "cauldron" + BLUE + " and improve my magic!", 7+ 7);
|
||||
break;
|
||||
case 100:
|
||||
line(player, "<str>I brought her an onion, a rat's tail, a piece of burnt meat", 4+ 7);
|
||||
line(player, "<str>and an eye of newt which she used to make a potion.", 5+ 7);
|
||||
line(player, "<str>I drank from the cauldron and my magic power increased!", 7+ 7);
|
||||
line(player, "<col=FF0000>QUEST COMPLETE!", 9+ 7);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish(Player player) {
|
||||
super.finish(player);
|
||||
player.getPacketDispatch().sendString("1 Quest Point", 277, 8 + 2);
|
||||
player.getPacketDispatch().sendString("325 Magic XP", 277, 9 + 2);
|
||||
player.getSkills().addExperience(Skills.MAGIC, 325);
|
||||
player.getInterfaceManager().closeChatbox();
|
||||
player.getPacketDispatch().sendItemZoomOnInterface(221, 240, 277, 3 + 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Quest newInstance(Object object) {
|
||||
// TODO Auto-generated method stub
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package content.region.asgarnia.rimmington.quest.witchpotion
|
||||
|
||||
import core.api.*
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.player.link.quest.Quest
|
||||
import core.game.node.entity.skill.Skills
|
||||
import core.plugin.Initializable
|
||||
import org.rs09.consts.Components
|
||||
import org.rs09.consts.Items
|
||||
|
||||
/**
|
||||
* Represents the Witch's Potion Quest
|
||||
*/
|
||||
@Initializable
|
||||
class WitchsPotion : Quest(QUEST_NAME, 31, 30, 1, 67, 0, 1, 3) {
|
||||
companion object {
|
||||
const val QUEST_NAME = "Witch's Potion"
|
||||
}
|
||||
|
||||
override fun drawJournal(player: Player?, stage: Int) {
|
||||
super.drawJournal(player, stage)
|
||||
player ?: return
|
||||
var line = 11
|
||||
if (stage == 0) {
|
||||
line(player, "I can start this quest by speaking to !!Hetty?? who in her house in", line++)
|
||||
line(player, "!!Rimmington??, West of !!Port Sarim??.", line++)
|
||||
} else if (stage in 1..39) {
|
||||
line(player, "I spoke to !!Hetty?? in her house at Rimmington. Hetty told me", line++, true)
|
||||
line(player, "she could increase my magic power if I can bring her", line++, true)
|
||||
line(player, "certain ingredients for a potion.", line++, true)
|
||||
line++
|
||||
line(player, "Hetty needs me to bring her the following:", line++)
|
||||
|
||||
if(inInventory(player, Items.ONION_1957, 1))
|
||||
line(player, "I have an onion with me", line++, true)
|
||||
else
|
||||
line(player, "!!An onion??", line++)
|
||||
|
||||
if(inInventory(player, Items.RATS_TAIL_300, 1))
|
||||
line(player, "I have a rat's tail with me", line++, true)
|
||||
else
|
||||
line(player, "!!A rat's tail??", line++)
|
||||
|
||||
if(inInventory(player, Items.BURNT_MEAT_2146, 1))
|
||||
line(player, "I have a piece of burnt meat with me", line++, true)
|
||||
else
|
||||
line(player, "!!A piece of burnt meat??", line++)
|
||||
|
||||
if(inInventory(player, Items.EYE_OF_NEWT_221, 1))
|
||||
line(player, "I have an eye of newt with me", line++, true)
|
||||
else
|
||||
line(player, "!!An eye of newt??", line++)
|
||||
} else if (stage in 40..99) {
|
||||
line(player, "I spoke to !!Hetty?? in her house at Rimmington. Hetty told me.", line++, true)
|
||||
line(player, "she could increase my magic power if I can bring her", line++, true)
|
||||
line(player, "certain ingredients for a potion.", line++, true)
|
||||
line(player, "I brought her an onion, a rat's tail, a piece of burnt meat", line++, true)
|
||||
line(player, "and an eye of newt which she used to make a potion.", line++, true)
|
||||
line(player, "I should drink from the !!cauldron?? and improve my magic!", line++)
|
||||
} else if (stage == 100) {
|
||||
line(player, "I have spoken to !!Hetty??.", line++, true)
|
||||
line(player, "I spoke to !!Hetty?? in her house at Rimmington. Hetty told me.", line++, true)
|
||||
line(player, "she could increase my magic power if I can bring her", line++, true)
|
||||
line(player, "certain ingredients for a potion.", line++, true)
|
||||
line(player, "I brought her an onion, a rat's tail, a piece of burnt meat", line++, true)
|
||||
line(player, "and an eye of newt which she used to make a potion.", line++, true)
|
||||
line(player, "I drank from the cauldron and my magic power increased!", line++, true)
|
||||
line++
|
||||
line(player, "%%QUEST COMPLETE!&&", line++)
|
||||
}
|
||||
}
|
||||
|
||||
override fun finish(player: Player?) {
|
||||
super.finish(player)
|
||||
player ?: return
|
||||
var line = 10
|
||||
|
||||
sendItemZoomOnInterface(player, Components.QUEST_COMPLETE_SCROLL_277, 5, Items.EYE_OF_NEWT_221)
|
||||
drawReward(player, "1 Quest Point", line++)
|
||||
drawReward(player, "325 Magic XP", line++)
|
||||
|
||||
rewardXP(player, Skills.MAGIC, 325.0)
|
||||
}
|
||||
|
||||
override fun newInstance(`object`: Any?): Quest {
|
||||
return this
|
||||
}
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package content.region.asgarnia.rimmington.quest.witchpotion
|
||||
|
||||
import core.api.*
|
||||
import core.game.interaction.IntType
|
||||
import core.game.interaction.InteractionListener
|
||||
import org.rs09.consts.Scenery
|
||||
|
||||
/**
|
||||
* Interaction Listener for Witch's Potion Quest.
|
||||
*/
|
||||
class WitchsPotionListener : InteractionListener {
|
||||
|
||||
override fun defineListeners() {
|
||||
|
||||
on(Scenery.CAULDRON_2024, IntType.SCENERY, "drink from") { player, node ->
|
||||
if (getQuestStage(player, WitchsPotion.QUEST_NAME) == 40) {
|
||||
sendDialogue(player, "You drink from the cauldron, it tastes horrible! You feel yourself imbued with power.")
|
||||
finishQuest(player, WitchsPotion.QUEST_NAME)
|
||||
} else {
|
||||
sendDialogue(player, "As nice as that looks I think I'll give it a miss for now.")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
}
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
package content.region.asgarnia.rimmington.quest.witchpotion;
|
||||
|
||||
import core.cache.def.impl.SceneryDefinition;
|
||||
import core.game.interaction.OptionHandler;
|
||||
import core.game.node.Node;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.link.quest.Quest;
|
||||
import core.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
|
||||
/**
|
||||
* Represents the witchs potion plugin.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class WitchsPotionPlugin extends OptionHandler {
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
SceneryDefinition.forId(2024).getHandlers().put("option:drink from", this);
|
||||
SceneryDefinition.forId(2024).getHandlers().put("option:Drink From", this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String option) {
|
||||
final Quest quest = player.getQuestRepository().getQuest("Witch's Potion");
|
||||
switch (quest.getStage(player)) {
|
||||
case 20:
|
||||
case 100:
|
||||
player.getDialogueInterpreter().sendDialogues(player, null, "As nice as that looks I think I'll give it a miss for now.");
|
||||
break;
|
||||
case 40:
|
||||
player.getDialogueInterpreter().open(307, true, 1);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user