mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-16 03:20:19 -07:00
Fixes right-click change-clothes option and migrate the file to kotlin
This commit is contained in:
parent
e29831ccd5
commit
d109a31b1c
2 changed files with 146 additions and 196 deletions
|
|
@ -1,196 +0,0 @@
|
||||||
package core.game.content.dialogue;
|
|
||||||
|
|
||||||
import core.game.component.Component;
|
|
||||||
import core.game.node.entity.npc.NPC;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.node.entity.player.link.diary.DiaryType;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the thessalia dialogue plugin.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Initializable
|
|
||||||
public final class ThessaliaDialogue extends DialoguePlugin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code ThessaliaDialogue} {@code Object}.
|
|
||||||
*/
|
|
||||||
public ThessaliaDialogue() {
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code ThessaliaDialogue} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*/
|
|
||||||
public ThessaliaDialogue(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new ThessaliaDialogue(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
npc = (NPC) args[0];
|
|
||||||
|
|
||||||
//The trade argument is handled elsewhere
|
|
||||||
if (args.length == 3) { //Right-Click 'Change-Clothes' Option
|
|
||||||
if (player.getEquipment().isEmpty()) {
|
|
||||||
player.getAchievementDiaryManager().finishTask(player, DiaryType.VARROCK, 0, 0);
|
|
||||||
if (player.isMale()) {
|
|
||||||
end();
|
|
||||||
player.getInterfaceManager().open(new Component(591));
|
|
||||||
} else {
|
|
||||||
end();
|
|
||||||
player.getInterfaceManager().open(new Component(594));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{ //Has some armour equipped
|
|
||||||
interpreter.sendDialogues(548, FacialExpression.WORRIED, "You can't try them on while wearing armour. Take","it off and speak to me again.");
|
|
||||||
stage = 52;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Default Talk
|
|
||||||
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.ASKING, "Would you like to buy any fine clothes?");
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
interpreter.sendOptions("Choose an option:", "What do you have?", "No, thank you.");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.ASKING, "What do you have?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "No, thank you.");
|
|
||||||
stage = 51;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 10:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "I have a number of fine pieces of clothing on sale or,", "if you prefer, I can offer you an exclusive", "total clothing makeover?");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
interpreter.sendOptions("Select an Option", "Tell me more about this makeover.", "I'd just like to buy some clothes.");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 12:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.THINKING, "Tell me more about this makeover.");
|
|
||||||
stage = 20;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I'd just like to buy some clothes.");
|
|
||||||
stage = 50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
//More about the makeover
|
|
||||||
case 20:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Certainly!");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Here at Thessalia's fine clothing boutique, we offer a", "unique service where we will totally revamp your outfit", "to your choosing, for... wait for it...");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 22:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "A fee of only 500 gold coins! Tired of always wearing", "the same old outfit, day in, day out? This is the service", "for you!");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 23:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.ASKING, "So what do you say? Interested? We can change either", "your top, or your legwear for only 500 gold a item!");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
//Buying Clothes or changing outfit
|
|
||||||
case 24:
|
|
||||||
interpreter.sendOptions("Select an Option", "I'd like to change my outfit, please.", "I'd just like to buy some clothes.");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HAPPY, "I'd like to change my outfit, please.");
|
|
||||||
stage = 30;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I'd just like to buy some clothes.");
|
|
||||||
stage = 50;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
//Changing outfit code
|
|
||||||
case 30:
|
|
||||||
if(player.getEquipment().isEmpty()){
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Just select what style and colour you would like from", "this catalogue, and then give me the 1000 gold when", "you've picked.");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
} else { //Has some armour equipped
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.WORRIED, "You can't try them on while wearing armour. Take", "it off and speak to me again.");
|
|
||||||
stage = 52;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 31://Player has money and is not wearing armour/weapons
|
|
||||||
if (player.getEquipment().isEmpty()) {
|
|
||||||
player.getAchievementDiaryManager().finishTask(player, DiaryType.VARROCK, 0, 0);
|
|
||||||
if (player.isMale()) {
|
|
||||||
end();
|
|
||||||
player.getInterfaceManager().open(new Component(591));
|
|
||||||
} else {
|
|
||||||
end();
|
|
||||||
player.getInterfaceManager().open(new Component(594));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
//Closing Remarks
|
|
||||||
case 49: //Not enough money
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "That's ok! Just come back when you do have it!");
|
|
||||||
stage = 52;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 50://Just buying some clothes
|
|
||||||
end();
|
|
||||||
npc.openShop(player);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 51://No Thanks
|
|
||||||
npc("Well, please return if you change your mind.");
|
|
||||||
stage++;
|
|
||||||
break;
|
|
||||||
case 52:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { 548 };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,146 @@
|
||||||
|
package rs09.game.content.dialogue
|
||||||
|
|
||||||
|
import core.game.component.Component
|
||||||
|
import core.plugin.Initializable
|
||||||
|
import core.game.content.dialogue.DialoguePlugin
|
||||||
|
import core.game.node.entity.player.link.diary.DiaryType
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
|
import core.game.node.entity.npc.NPC
|
||||||
|
import core.game.node.entity.player.Player
|
||||||
|
|
||||||
|
@Initializable
|
||||||
|
class ThessaliaDialogue(player: Player? = null): DialoguePlugin(player) {
|
||||||
|
override fun open(vararg args: Any): Boolean {
|
||||||
|
|
||||||
|
//The trade argument is handled elsewhere
|
||||||
|
if (args.size == 3) { //Right-Click 'Change-Clothes' Option
|
||||||
|
if (player.equipment.isEmpty) {
|
||||||
|
player.achievementDiaryManager.finishTask(player, DiaryType.VARROCK, 0, 0)
|
||||||
|
if (player.isMale) {
|
||||||
|
end()
|
||||||
|
player.interfaceManager.open(Component(591))
|
||||||
|
} else {
|
||||||
|
end()
|
||||||
|
player.interfaceManager.open(Component(594))
|
||||||
|
}
|
||||||
|
} else { //Has some armour equipped
|
||||||
|
interpreter.sendDialogues(548, FacialExpression.WORRIED, "You can't try them on while wearing armour. Take", "it off and speak to me again.")
|
||||||
|
stage = 52
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
npc = args[0] as NPC
|
||||||
|
|
||||||
|
//Default Talk
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.ASKING, "Would you like to buy any fine clothes?")
|
||||||
|
stage = 0
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
|
when (stage) {
|
||||||
|
0 -> {
|
||||||
|
interpreter.sendOptions("Choose an option:", "What do you have?", "No, thank you.")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
1 -> when (buttonId) {
|
||||||
|
1 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.ASKING, "What do you have?")
|
||||||
|
stage = 10
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "No, thank you.")
|
||||||
|
stage = 51
|
||||||
|
}
|
||||||
|
}
|
||||||
|
10 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "I have a number of fine pieces of clothing on sale or,", "if you prefer, I can offer you an exclusive", "total clothing makeover?")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
11 -> {
|
||||||
|
interpreter.sendOptions("Select an Option", "Tell me more about this makeover.", "I'd just like to buy some clothes.")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
12 -> when (buttonId) {
|
||||||
|
1 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.THINKING, "Tell me more about this makeover.")
|
||||||
|
stage = 20
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I'd just like to buy some clothes.")
|
||||||
|
stage = 50
|
||||||
|
}
|
||||||
|
}
|
||||||
|
20 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Certainly!")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
21 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Here at Thessalia's fine clothing boutique, we offer a", "unique service where we will totally revamp your outfit", "to your choosing, for... wait for it...")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
22 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "A fee of only 500 gold coins! Tired of always wearing", "the same old outfit, day in, day out? This is the service", "for you!")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
23 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.ASKING, "So what do you say? Interested? We can change either", "your top, or your legwear for only 500 gold a item!")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
24 -> {
|
||||||
|
interpreter.sendOptions("Select an Option", "I'd like to change my outfit, please.", "I'd just like to buy some clothes.")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
25 -> when (buttonId) {
|
||||||
|
1 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.HAPPY, "I'd like to change my outfit, please.")
|
||||||
|
stage = 30
|
||||||
|
}
|
||||||
|
2 -> {
|
||||||
|
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "I'd just like to buy some clothes.")
|
||||||
|
stage = 50
|
||||||
|
}
|
||||||
|
}
|
||||||
|
30 -> if (player.equipment.isEmpty) {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Just select what style and colour you would like from", "this catalogue, and then give me the 1000 gold when", "you've picked.")
|
||||||
|
stage++
|
||||||
|
} else { //Has some armour equipped
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.WORRIED, "You can't try them on while wearing armour. Take", "it off and speak to me again.")
|
||||||
|
stage = 52
|
||||||
|
}
|
||||||
|
31 -> if (player.equipment.isEmpty) {
|
||||||
|
player.achievementDiaryManager.finishTask(player, DiaryType.VARROCK, 0, 0)
|
||||||
|
if (player.isMale) {
|
||||||
|
end()
|
||||||
|
player.interfaceManager.open(Component(591))
|
||||||
|
} else {
|
||||||
|
end()
|
||||||
|
player.interfaceManager.open(Component(594))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
49 -> {
|
||||||
|
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "That's ok! Just come back when you do have it!")
|
||||||
|
stage = 52
|
||||||
|
}
|
||||||
|
50 -> {
|
||||||
|
end()
|
||||||
|
npc.openShop(player)
|
||||||
|
}
|
||||||
|
51 -> {
|
||||||
|
npc("Well, please return if you change your mind.")
|
||||||
|
stage++
|
||||||
|
}
|
||||||
|
52 -> end()
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newInstance(player: Player?): DialoguePlugin {
|
||||||
|
return ThessaliaDialogue(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getIds(): IntArray {
|
||||||
|
return intArrayOf(548)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue