Converted EnchantedGemPlugin to Listener
Converted EnchantedGemDialogue to DialogueFile
This commit is contained in:
@@ -1,119 +0,0 @@
|
|||||||
package core.game.interaction.item;
|
|
||||||
|
|
||||||
import core.cache.def.impl.ItemDefinition;
|
|
||||||
import core.cache.def.impl.NPCDefinition;
|
|
||||||
import core.game.content.dialogue.DialoguePlugin;
|
|
||||||
import rs09.game.content.global.EnchantedJewellery;
|
|
||||||
import core.game.interaction.OptionHandler;
|
|
||||||
import core.game.node.Node;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.node.item.Item;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import core.plugin.Plugin;
|
|
||||||
import rs09.game.node.entity.skill.slayer.SlayerManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the plugin used to handle enchanted jewellery transportation.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public final class EnchantedGemPlugin extends OptionHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
|
||||||
ItemDefinition.forId(4155).getHandlers().put("option:check", this);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(Player player, Node node, String option) {
|
|
||||||
player.sendMessage("You're assigned to kill " + NPCDefinition.forId((SlayerManager.getInstance(player).getTask().getNpcs()[0])).getName().toLowerCase() + "s; only " + SlayerManager.getInstance(player).getAmount() + " more to go.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isWalk() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the jewellery dialogue plugin.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
public final class JewelleryDialogue extends DialoguePlugin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the id to use.
|
|
||||||
*/
|
|
||||||
public static final int ID = 329128389;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the enchanted jewellery.
|
|
||||||
*/
|
|
||||||
private EnchantedJewellery jewellery;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If the operate option is used.
|
|
||||||
*/
|
|
||||||
private boolean operate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the item instance.
|
|
||||||
*/
|
|
||||||
private Item item;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EnchantedJewelleryPlugin} {@code Object}.
|
|
||||||
*/
|
|
||||||
public JewelleryDialogue() {
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EnchantedJewelleryPlugin} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*/
|
|
||||||
public JewelleryDialogue(final Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new JewelleryDialogue(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
item = (Item) args[0];
|
|
||||||
jewellery = (EnchantedJewellery) args[1];
|
|
||||||
operate = args.length > 2 && (Boolean) args[2];
|
|
||||||
if (jewellery == EnchantedJewellery.DIGSITE_PENDANT) {
|
|
||||||
jewellery.use(player, item, 0, operate);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
interpreter.sendOptions("Where would you like to go?", jewellery.getOptions());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
if (player.getInterfaceManager().isOpened()) {
|
|
||||||
end();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
end();
|
|
||||||
jewellery.use(player, item, (buttonId - 1), operate);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { ID };
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,267 +0,0 @@
|
|||||||
package core.game.node.entity.skill.slayer;
|
|
||||||
|
|
||||||
import core.cache.def.impl.NPCDefinition;
|
|
||||||
import core.game.content.dialogue.DialoguePlugin;
|
|
||||||
import core.game.content.dialogue.FacialExpression;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.world.map.Direction;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import rs09.game.node.entity.skill.slayer.SlayerManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rerpresents the enchanted gem dialogue.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public final class EnchantedGemDialogue extends DialoguePlugin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the id associated with this plugin.
|
|
||||||
*/
|
|
||||||
public static final int ID = 77777;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EnchantedGemDialogue} {@code Object}.
|
|
||||||
*/
|
|
||||||
public EnchantedGemDialogue() {
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EnchantedGemDialogue} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*/
|
|
||||||
public EnchantedGemDialogue(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new EnchantedGemDialogue(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
player.faceLocation(player.getLocation().transform(1, 0, 0));
|
|
||||||
player.setDirection(Direction.EAST);
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "Hello there " + player.getUsername() + ", what can I help you with?");
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
interpreter.sendOptions("Select an Option", "How am I doing so far?", "Who are you?", "Where are you?", "Got any tips for me?", "Nothing really.");
|
|
||||||
stage = 2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How am I doing so far?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Who are you?");
|
|
||||||
stage = 20;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Where are you?");
|
|
||||||
stage = 30;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Got any tips for me?");
|
|
||||||
stage = 400;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Nothing really.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 99:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
if (!SlayerManager.getInstance(player).hasTask()) {
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You need something new to hunt. Come and see me", "When you can and I'll give you a new task.");
|
|
||||||
stage = 11;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You're currently assigned to kill " + (SlayerManager.getInstance(player).getTask() == Tasks.JAD ? " TzTok-Jad!" : NPCDefinition.forId((SlayerManager.getInstance(player).getTask().getNpcs()[0])).getName().toLowerCase() + "'s;"), "only " + SlayerManager.getInstance(player).getAmount() + " more to go.");
|
|
||||||
player.varpManager.get(2502).setVarbit(0,SlayerManager.getInstance(player).flags.getTaskFlags() >> 4).send(player);
|
|
||||||
stage = 11;
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
interpreter.sendOptions("Select an Option", "Who are you?", "Where are you?", "Got any tips for me?", "That's all thanks.");
|
|
||||||
stage = 12;
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "My name's " + NPCDefinition.forId(SlayerManager.getInstance(player).getMaster().getNpc()).getName() + ", I'm the Slayer Master best able", "to train you.");
|
|
||||||
stage = 21;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You'll find me in " + masterLocation() + ", I'll be here when you need a", "new task.");
|
|
||||||
stage = 31;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!SlayerManager.getInstance(player).hasTask()) {
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You need something new to hunt.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, SlayerManager.getInstance(player).getTask().getTip());
|
|
||||||
stage = 401;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "That's all thanks.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
case 99:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "My name's " + NPCDefinition.forId(SlayerManager.getInstance(player).getMaster().getNpc()).getName() + ", I'm the Slayer Master best able", "to train you.");
|
|
||||||
stage = 21;
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
interpreter.sendOptions("Select an Option", "How am I doing so far?", "Where are you?", "Got any tips for me?", "That's all thanks.");
|
|
||||||
stage = 25;
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How am I doing so far?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You'll find me in " + masterLocation() + ", I'll be here when you need a", "new task.");
|
|
||||||
stage = 31;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!SlayerManager.getInstance(player).hasTask()) {
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You need something new to hunt.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, SlayerManager.getInstance(player).getTask().getTip());
|
|
||||||
stage = 401;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "That's all thanks.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 30:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You'll find me in " + masterLocation() + ", I'll be here when you need a", "new task.");
|
|
||||||
stage = 31;
|
|
||||||
break;
|
|
||||||
case 31:
|
|
||||||
interpreter.sendOptions("Select an Option", "How am I doing so far?", "Who are you?", "Got any tips for me?", "That's all thanks.");
|
|
||||||
stage = 32;
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How am I doing so far?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "My name's " + NPCDefinition.forId(SlayerManager.getInstance(player).getMaster().getNpc()).getName() + ", I'm the Slayer Master best able", "to train you.");
|
|
||||||
stage = 21;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (!SlayerManager.getInstance(player).hasTask()) {
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You need something new to hunt.");
|
|
||||||
stage = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, SlayerManager.getInstance(player).getTask().getTip());
|
|
||||||
stage = 401;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "That's all thanks.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 400:
|
|
||||||
if (!SlayerManager.getInstance(player).hasTask()) {
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You need something new to hunt.");
|
|
||||||
stage = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, SlayerManager.getInstance(player).getTask().getTip());
|
|
||||||
stage = 401;
|
|
||||||
break;
|
|
||||||
case 401:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Great, thanks!");
|
|
||||||
stage = 403;
|
|
||||||
break;
|
|
||||||
case 403:
|
|
||||||
interpreter.sendOptions("Select an Option", "How am I doing so far?", "Who are you?", "Where are you?", "That's all thanks.");
|
|
||||||
stage = 404;
|
|
||||||
break;
|
|
||||||
case 404:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "How am I doing so far?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "My name's " + NPCDefinition.forId(SlayerManager.getInstance(player).getMaster().getNpc()).getName() + ", I'm the Slayer Master best able", "to train you.");
|
|
||||||
stage = 21;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
interpreter.sendDialogues(SlayerManager.getInstance(player).getMaster().getNpc(), FacialExpression.HALF_GUILTY, "You'll find me in " + masterLocation() + ", I'll be here when you need a", "new task.");
|
|
||||||
stage = 31;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "That's all thanks.");
|
|
||||||
stage = 99;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Method used to get the masters location.
|
|
||||||
* @return the location.
|
|
||||||
*/
|
|
||||||
public String masterLocation() {
|
|
||||||
if (SlayerManager.getInstance(player).getMaster().getNpc() == Master.MAZCHNA.getNpc())
|
|
||||||
return "Canifis";
|
|
||||||
else if (SlayerManager.getInstance(player).getMaster().getNpc() == Master.TURAEL.getNpc())
|
|
||||||
return "Taverley";
|
|
||||||
else if (SlayerManager.getInstance(player).getMaster().getNpc() == Master.CHAELDAR.getNpc())
|
|
||||||
return "Zanaris";
|
|
||||||
else if (SlayerManager.getInstance(player).getMaster().getNpc() == Master.VANNAKA.getNpc())
|
|
||||||
return "Edgeville dungeon";
|
|
||||||
else if (SlayerManager.getInstance(player).getMaster().getNpc() == Master.DURADEL.getNpc())
|
|
||||||
return "Shilo village";
|
|
||||||
else if(SlayerManager.getInstance(player).getMaster() == null) {
|
|
||||||
return "the Gnome Stronghold";
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { ID };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -22,6 +22,7 @@ import core.game.node.entity.player.link.emote.Emotes
|
|||||||
import core.game.node.entity.player.link.quest.QuestRepository
|
import core.game.node.entity.player.link.quest.QuestRepository
|
||||||
import core.game.node.entity.skill.Skills
|
import core.game.node.entity.skill.Skills
|
||||||
import core.game.node.entity.skill.gather.SkillingTool
|
import core.game.node.entity.skill.gather.SkillingTool
|
||||||
|
import core.game.node.entity.skill.slayer.Tasks
|
||||||
import core.game.node.entity.skill.summoning.familiar.BurdenBeast
|
import core.game.node.entity.skill.summoning.familiar.BurdenBeast
|
||||||
import core.game.node.item.GroundItem
|
import core.game.node.item.GroundItem
|
||||||
import core.game.node.item.GroundItemManager
|
import core.game.node.item.GroundItemManager
|
||||||
@@ -41,6 +42,7 @@ import core.game.world.update.flag.chunk.AnimateObjectUpdateFlag
|
|||||||
import core.game.world.update.flag.context.Animation
|
import core.game.world.update.flag.context.Animation
|
||||||
import core.game.world.update.flag.context.Graphics
|
import core.game.world.update.flag.context.Graphics
|
||||||
import org.rs09.consts.Items
|
import org.rs09.consts.Items
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
import rs09.game.content.dialogue.DialogueFile
|
import rs09.game.content.dialogue.DialogueFile
|
||||||
import rs09.game.content.dialogue.SkillDialogueHandler
|
import rs09.game.content.dialogue.SkillDialogueHandler
|
||||||
import rs09.game.content.global.GlobalKillCounter
|
import rs09.game.content.global.GlobalKillCounter
|
||||||
@@ -1589,6 +1591,15 @@ fun getPathableRandomLocalCoordinate(target: Entity, radius: Int, center: Locati
|
|||||||
return target.location
|
return target.location
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the player's active slayer task.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose task we are checking.
|
||||||
|
* @return the slayer task.
|
||||||
|
*/
|
||||||
|
fun getSlayerTask(player : Player) : Tasks? {
|
||||||
|
return SlayerManager.getInstance(player).task
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the name of the player's active slayer task.
|
* Returns the name of the player's active slayer task.
|
||||||
@@ -1609,3 +1620,64 @@ fun getSlayerTaskName(player : Player) : String {
|
|||||||
fun getSlayerTaskKillsRemaining(player : Player) : Int {
|
fun getSlayerTaskKillsRemaining(player : Player) : Int {
|
||||||
return SlayerManager.getInstance(player).amount
|
return SlayerManager.getInstance(player).amount
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the player's slayer master as npc.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose master we are checking.
|
||||||
|
* @return the slayer master as NPC.
|
||||||
|
*/
|
||||||
|
fun getSlayerMaster(player : Player) : NPC {
|
||||||
|
return findNPC(SlayerManager.getInstance(player).master?.npc as Int) as NPC
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the player's slayer master location as string.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose master we are checking.
|
||||||
|
* @return the slayer master location as String.
|
||||||
|
*/
|
||||||
|
fun getSlayerMasterLocation(player : Player) : String {
|
||||||
|
return when(getSlayerMaster(player).id) {
|
||||||
|
NPCs.CHAELDAR_1598 -> "Zanaris"
|
||||||
|
NPCs.DURADEL_8275 -> "Shilo Village"
|
||||||
|
NPCs.MAZCHNA_8274 -> "Canifis"
|
||||||
|
NPCs.TURAEL_8273 -> "Taverly"
|
||||||
|
NPCs.VANNAKA_1597 -> "Edgeville Dungeon"
|
||||||
|
else -> "The Backrooms"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the player's slayer task tip as String.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose task tip we are checking.
|
||||||
|
* @return the task tip as String.
|
||||||
|
*/
|
||||||
|
fun getSlayerTip(player : Player) : Array<out String> {
|
||||||
|
return if(hasSlayerTask(player)) {
|
||||||
|
SlayerManager.getInstance(player).task?.tip!!
|
||||||
|
} else {
|
||||||
|
arrayOf("You need something new to hunt.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the player's slayer task flags as Int.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose task flags we are checking.
|
||||||
|
* @return the task flags as Int.
|
||||||
|
*/
|
||||||
|
fun getSlayerTaskFlags(player : Player) : Int {
|
||||||
|
return SlayerManager.getInstance(player).flags.taskFlags
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not the player has a task.
|
||||||
|
* @author bushtail
|
||||||
|
* @param player the player whose task we are checking.
|
||||||
|
* @return has task as Boolean.
|
||||||
|
*/
|
||||||
|
fun hasSlayerTask(player : Player) : Boolean {
|
||||||
|
return SlayerManager.getInstance(player).hasTask()
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package rs09.game.interaction.item
|
||||||
|
|
||||||
|
import api.*
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
|
import core.game.node.entity.skill.slayer.Tasks
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
import rs09.game.content.dialogue.DialogueFile
|
||||||
|
import rs09.game.content.dialogue.IfTopic
|
||||||
|
import rs09.game.content.dialogue.Topic
|
||||||
|
import rs09.game.interaction.InteractionListener
|
||||||
|
import rs09.tools.END_DIALOGUE
|
||||||
|
|
||||||
|
class EnchantedGemListener : InteractionListener {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(Items.ENCHANTED_GEM_4155, ITEM, "activate") { player, _ ->
|
||||||
|
openDialogue(player, EnchantedGemDialogue())
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EnchantedGemDialogue() : DialogueFile() {
|
||||||
|
var firstRun = true
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int) {
|
||||||
|
npc = getSlayerMaster(player!!)
|
||||||
|
when(stage) {
|
||||||
|
0 -> npcl(FacialExpression.FRIENDLY, "Hello there ${player!!.username}, what can I help you with?").also { stage++ }
|
||||||
|
1 -> showTopics(
|
||||||
|
Topic(FacialExpression.ASKING, "How am I doing so far?", 100),
|
||||||
|
Topic(FacialExpression.HALF_ASKING, "Who are you?", 200),
|
||||||
|
Topic(FacialExpression.HALF_ASKING, "Where are you?", 300),
|
||||||
|
Topic(FacialExpression.FRIENDLY, "Got any tips for me?", 400),
|
||||||
|
IfTopic(FacialExpression.FRIENDLY, "Nothing really.", END_DIALOGUE, firstRun),
|
||||||
|
IfTopic(FacialExpression.HAPPY, "That's all thanks.", END_DIALOGUE, !firstRun)
|
||||||
|
)
|
||||||
|
100 -> {
|
||||||
|
firstRun = false
|
||||||
|
if(!hasSlayerTask(player!!)) {
|
||||||
|
npcl(FacialExpression.HALF_THINKING, "You need something new to hunt. Come and see me when you can and I'll give you a new task.").also { stage = 1 }
|
||||||
|
} else {
|
||||||
|
if(getSlayerTask(player!!) == Tasks.JAD) {
|
||||||
|
npcl(FacialExpression.FRIENDLY, "You're currently assigned to kill TzTok-Jad!")
|
||||||
|
} else {
|
||||||
|
npcl(FacialExpression.FRIENDLY, "You're currently assigned to kill ${getSlayerTaskName(player!!)}s; only ${getSlayerTaskKillsRemaining(player!!)} more to go.")
|
||||||
|
}
|
||||||
|
setVarbit(player!!, 2502, 0, getSlayerTaskFlags(player!!))
|
||||||
|
stage = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
200 -> {
|
||||||
|
firstRun = false
|
||||||
|
npcl(FacialExpression.HAPPY, "My name's ${getSlayerMaster(player!!).name}, I'm the Slayer Master best able to train you.").also { stage = 1 }
|
||||||
|
}
|
||||||
|
300 -> {
|
||||||
|
firstRun = false
|
||||||
|
npcl(FacialExpression.HAPPY, "You'll find me in ${getSlayerMasterLocation(player!!)}, I'll be here when you need a new task.").also { stage = 1 }
|
||||||
|
}
|
||||||
|
400 -> {
|
||||||
|
firstRun = false
|
||||||
|
npc(FacialExpression.FRIENDLY, *getSlayerTip(player!!))
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
401 -> player(FacialExpression.HAPPY, "Great, thanks!").also { stage = 1 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user