mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
First phase of TzHaar rewrite
This commit is contained in:
parent
c135877680
commit
7a23f6f0a3
4 changed files with 86 additions and 204 deletions
|
|
@ -0,0 +1,49 @@
|
|||
package content.region.karamja.tzhaar.handlers
|
||||
|
||||
import core.api.openNpcShop
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.dialogue.Topic
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.game.node.entity.player.Player
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
@Initializable
|
||||
class TzHaarDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
override fun open(vararg args: Any): Boolean {
|
||||
npc = args[0] as NPC
|
||||
npcl(FacialExpression.HALF_GUILTY, "Can I help you JalYt-Ket-${player.username}?").also { stage = 0 }
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
0 -> showTopics(
|
||||
Topic(FacialExpression.HALF_GUILTY, "What do you have to trade?", 10, true),
|
||||
Topic(FacialExpression.HALF_GUILTY, "What did you call me?", 20),
|
||||
Topic(FacialExpression.HALF_GUILTY, "No I'm fine thanks.", END_DIALOGUE),
|
||||
)
|
||||
10 -> end().also { openNpcShop(player, npc.id) }
|
||||
20 -> npcl(FacialExpression.HALF_GUILTY, "Are you not JalYt-Ket?").also { stage++ }
|
||||
21 -> showTopics(
|
||||
Topic(FacialExpression.HALF_GUILTY, "What's a 'JalYt-Ket'?", 22),
|
||||
Topic(FacialExpression.HALF_GUILTY, "I guess so...", 25),
|
||||
Topic(FacialExpression.HALF_GUILTY, "No I'm not!", END_DIALOGUE)
|
||||
)
|
||||
|
||||
22 -> npcl(FacialExpression.HALF_GUILTY, "That what you are... you tough and strong no?").also { stage++ }
|
||||
23 -> playerl(FacialExpression.HALF_GUILTY, "Well yes I suppose I am...").also { stage++ }
|
||||
24 -> npcl(FacialExpression.HALF_GUILTY, "Then you JalYt-Ket!").also { stage = END_DIALOGUE }
|
||||
|
||||
25 -> npcl(FacialExpression.HALF_GUILTY, "Well then, no problems.").also { stage = END_DIALOGUE }
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.TZHAAR_HUR_TEL_2620, NPCs.TZHAAR_HUR_LEK_2622, NPCs.TZHAAR_MEJ_ROH_2623)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
package content.region.karamja.tzhaar.handlers;
|
||||
|
||||
import core.cache.def.impl.SceneryDefinition;
|
||||
import core.game.activity.ActivityManager;
|
||||
import core.game.dialogue.DialoguePlugin;
|
||||
import core.game.interaction.OptionHandler;
|
||||
import core.game.node.Node;
|
||||
import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.scenery.Scenery;
|
||||
import core.game.world.map.Location;
|
||||
import core.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
|
||||
/**
|
||||
* Represents the plugin used for tzhaar city.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class TzhaarCityPlugin extends OptionHandler {
|
||||
|
||||
/**
|
||||
* Represents the locations to use.
|
||||
*/
|
||||
private static final Location[] LOCATIONS = new Location[] { Location.create(2480, 5175, 0), Location.create(2866, 9571, 0) };
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
SceneryDefinition.forId(31284).getHandlers().put("option:enter", this); //karamja cave.
|
||||
SceneryDefinition.forId(9359).getHandlers().put("option:enter", this); //tzhaar exit
|
||||
SceneryDefinition.forId(9356).getHandlers().put("option:enter", this);
|
||||
SceneryDefinition.forId(9369).getHandlers().put("option:pass", this);
|
||||
SceneryDefinition.forId(31292).getHandlers().put("option:go-through", this); //unimplemented door near fairy ring
|
||||
new TzhaarDialogue().init();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String option) {
|
||||
int id = ((Scenery) node).getId();
|
||||
switch (option) {
|
||||
case "enter":
|
||||
switch (id) {
|
||||
case 31284:
|
||||
player.getProperties().setTeleportLocation(LOCATIONS[0]);
|
||||
break;
|
||||
case 9359:
|
||||
player.getProperties().setTeleportLocation(LOCATIONS[1]);
|
||||
break;
|
||||
case 9356:
|
||||
if (player.getFamiliarManager().hasFamiliar()) {
|
||||
player.getPacketDispatch().sendMessage("You can't enter this with a follower.");
|
||||
break;
|
||||
}
|
||||
ActivityManager.start(player, "fight caves", false);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "pass":
|
||||
switch (id) {
|
||||
case 9369:
|
||||
ActivityManager.start(player, "fight pits", false);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "go-through":
|
||||
switch (id) {
|
||||
case 31292:
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the dialogue plugin used for the tzhaar npcs.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
public static final class TzhaarDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code TzhaarDialogue} {@code Object}.
|
||||
*/
|
||||
public TzhaarDialogue() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code TzhaarDialogue} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public TzhaarDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new TzhaarDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
npc("Can I help you JalYt-Ket-" + player.getUsername() + "?");
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
options("What do you have to trade?", "What did you call me?", "No I'm fine thanks.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
npc.openShop(player);
|
||||
break;
|
||||
case 2:
|
||||
player("What did you call me?");
|
||||
stage = 20;
|
||||
break;
|
||||
case 3:
|
||||
player("No I'm fine thanks.");
|
||||
stage = 30;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
break;
|
||||
case 20:
|
||||
npc("Are you not JalYt-Ket?");
|
||||
stage = 21;
|
||||
break;
|
||||
case 21:
|
||||
options("What's a 'JalYt-Ket'?", "I guess so...", "No I'm not!");
|
||||
stage = 22;
|
||||
break;
|
||||
case 22:
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
player("What's a 'JalYt-Ket'?");
|
||||
stage = 100;
|
||||
break;
|
||||
case 2:
|
||||
player("I guess so...");
|
||||
stage = 120;
|
||||
break;
|
||||
case 3:
|
||||
player("No I'm not!");
|
||||
stage = 130;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 100:
|
||||
npc("That what you are... you tough and strong no?");
|
||||
stage = 101;
|
||||
break;
|
||||
case 101:
|
||||
player("Well yes I suppose I am...");
|
||||
stage = 102;
|
||||
break;
|
||||
case 102:
|
||||
npc("Then you JalYt-Ket!");
|
||||
stage = 103;
|
||||
break;
|
||||
case 103:
|
||||
end();
|
||||
break;
|
||||
case 120:
|
||||
npc("Well then, no problems.");
|
||||
stage = 121;
|
||||
break;
|
||||
case 121:
|
||||
end();
|
||||
break;
|
||||
case 130:
|
||||
end();
|
||||
break;
|
||||
case 23:
|
||||
end();
|
||||
break;
|
||||
case 30:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 2620, 2622, 2623 };
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -62,7 +62,7 @@ public final class TzhaarFightCavesPlugin extends ActivityPlugin {
|
|||
* @param player The player.
|
||||
*/
|
||||
public TzhaarFightCavesPlugin(Player player) {
|
||||
super("fight caves", true, true, true, ZoneRestriction.CANNON, ZoneRestriction.RANDOM_EVENTS);
|
||||
super("fight caves", true, true, true, ZoneRestriction.CANNON, ZoneRestriction.RANDOM_EVENTS, ZoneRestriction.FOLLOWERS);
|
||||
super.player = player;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
package content.region.karamja.tzhaar.handlers
|
||||
|
||||
import core.api.sendNPCDialogueLines
|
||||
import core.api.teleport
|
||||
import core.game.activity.ActivityManager
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.interaction.IntType
|
||||
import core.game.interaction.InteractionListener
|
||||
import core.game.world.map.Location
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
class TzhaarListeners : InteractionListener {
|
||||
override fun defineListeners() {
|
||||
on(intArrayOf(31284, 9359, 9356), IntType.SCENERY, "enter") { player, node ->
|
||||
when (node.id) {
|
||||
31284 -> teleport(player, Location.create(2480, 5175, 0))
|
||||
9359 -> teleport(player, Location.create(2866, 9571, 0))
|
||||
9356 -> {
|
||||
if (player.familiarManager.hasFamiliar()) {
|
||||
sendNPCDialogueLines(player, NPCs.TZHAAR_MEJ_JAL_2617, FacialExpression.ANGRY, false, "No Kimit-Zil in the cave! This is a fight for YOU,", "not your friends!")
|
||||
} else ActivityManager.start(player, "fight caves", false)
|
||||
}
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(9369, IntType.SCENERY, "pass") { player, _ ->
|
||||
ActivityManager.start(player, "fight pits", false)
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(31292, IntType.SCENERY, "go-through") { _, _ ->
|
||||
return@on false
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue