mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Converted tanners to Kotlin
Fixed snake hide tanning Fixed interaction with Canifis tanner
This commit is contained in:
parent
66b1efdaa3
commit
da6f05f8ce
9 changed files with 202 additions and 300 deletions
|
|
@ -1,136 +0,0 @@
|
||||||
package content.global.handlers.iface;
|
|
||||||
|
|
||||||
import core.game.dialogue.DialoguePlugin;
|
|
||||||
import content.global.skill.crafting.TanningProduct;
|
|
||||||
import core.game.node.entity.npc.NPC;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import core.game.node.item.Item;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the ellis dialogue plugin.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public final class EllisDialogue extends DialoguePlugin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EllisDialogue} {@code Object}.
|
|
||||||
*/
|
|
||||||
public EllisDialogue() {
|
|
||||||
/**
|
|
||||||
* empty.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code EllisDialogue} {@code Object}.
|
|
||||||
* @param player the player.
|
|
||||||
*/
|
|
||||||
public EllisDialogue(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
return new EllisDialogue(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
npc = (NPC) args[0];
|
|
||||||
npc("Greetings friend I am a manufacturer of leather.");
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
player.getInventory().refresh();
|
|
||||||
Item items[] = player.getInventory().toArray();
|
|
||||||
for (int i = 0; i < items.length; i++) {
|
|
||||||
if (items[i] == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (TanningProduct.forItemId(items[i].getId()) != null) {
|
|
||||||
npc("I see you have brought me some hides.", "Would you like me to tan them for you?");
|
|
||||||
stage = 100;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
options("Can I buy some leather?", "Leather is rather weak stuff.");
|
|
||||||
stage = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
player("Can I buy some leather then?");
|
|
||||||
stage = 10;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
player("Leather is rather weak stuff.");
|
|
||||||
stage = 3000;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
npc("I make leather from animal hides. Bring me some cowhides", "and one gold coin per hide, and I'll tan them into soft", "leather for you.");
|
|
||||||
stage = 2000;
|
|
||||||
break;
|
|
||||||
case 2000:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 3000:
|
|
||||||
npc("Normal leather may be quite weak, but it's very cheap - I", "make it from cowhides for only 1 gp per hide - and it's so", "easy to craft that anyone can work with it.");
|
|
||||||
stage = 3001;
|
|
||||||
break;
|
|
||||||
case 3001:
|
|
||||||
npc("Alternatively you could try hard leather. It's not so easy", "to craft, but I only charge 3 gp per cowhide to prepare it,", "and it makes much sturdier armour.");
|
|
||||||
stage = 3002;
|
|
||||||
break;
|
|
||||||
case 3002:
|
|
||||||
player("Thanks; I'll bear it in mind.");
|
|
||||||
stage = 3003;
|
|
||||||
break;
|
|
||||||
case 3003:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 100:
|
|
||||||
options("Yes please.", "No thanks.");
|
|
||||||
stage = 101;
|
|
||||||
break;
|
|
||||||
case 101:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
player("Yes please.");
|
|
||||||
stage = 210;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
player("No thanks.");
|
|
||||||
stage = 200;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 210:
|
|
||||||
end();
|
|
||||||
TanningProduct.open(player, 2824);
|
|
||||||
break;
|
|
||||||
case 200:
|
|
||||||
npc("Very well, sir, as you wish.");
|
|
||||||
stage = 201;
|
|
||||||
break;
|
|
||||||
case 201:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { 2824 };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,7 +15,7 @@ public enum TanningProduct {
|
||||||
SOFT_LEATHER(1, 1739, 1741),
|
SOFT_LEATHER(1, 1739, 1741),
|
||||||
HARD_LEATHER(2, 1739, 1743),
|
HARD_LEATHER(2, 1739, 1743),
|
||||||
SNAKESKIN(3, 6287, 6289),
|
SNAKESKIN(3, 6287, 6289),
|
||||||
SNAKESKIN2(4, 6287, 6289),
|
SNAKESKIN2(4, 7801, 6289),
|
||||||
GREEN_DHIDE(5, 1753, 1745),
|
GREEN_DHIDE(5, 1753, 1745),
|
||||||
BLUEDHIDE(6, 1751, 2505),
|
BLUEDHIDE(6, 1751, 2505),
|
||||||
REDDHIDE(7, 1749, 2507),
|
REDDHIDE(7, 1749, 2507),
|
||||||
|
|
@ -120,9 +120,9 @@ public enum TanningProduct {
|
||||||
} else if (def == HARD_LEATHER) {
|
} else if (def == HARD_LEATHER) {
|
||||||
coins = 3;
|
coins = 3;
|
||||||
} else if (def == SNAKESKIN) {
|
} else if (def == SNAKESKIN) {
|
||||||
coins = 20;
|
|
||||||
} else if (def == SNAKESKIN2) {
|
|
||||||
coins = 15;
|
coins = 15;
|
||||||
|
} else if (def == SNAKESKIN2) {
|
||||||
|
coins = 20;
|
||||||
} else {
|
} else {
|
||||||
coins = 20;
|
coins = 20;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,56 +1,80 @@
|
||||||
package content.region.asgarnia.dialogue
|
package content.region.asgarnia.dialogue
|
||||||
|
|
||||||
import content.global.skill.crafting.TanningProduct
|
import content.global.skill.crafting.TanningProduct
|
||||||
|
import core.api.amountInInventory
|
||||||
|
import core.api.inInventory
|
||||||
import core.game.dialogue.DialoguePlugin
|
import core.game.dialogue.DialoguePlugin
|
||||||
import core.game.dialogue.FacialExpression
|
import core.game.dialogue.FacialExpression
|
||||||
import core.game.node.entity.npc.NPC
|
|
||||||
import core.game.node.entity.player.Player
|
import core.game.node.entity.player.Player
|
||||||
|
import core.game.node.entity.npc.NPC
|
||||||
import core.plugin.Initializable
|
import core.plugin.Initializable
|
||||||
|
import org.rs09.consts.Items
|
||||||
import org.rs09.consts.NPCs
|
import org.rs09.consts.NPCs
|
||||||
import core.tools.END_DIALOGUE
|
import core.tools.END_DIALOGUE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Handles the Crafting Guild Tanner's dialogue.
|
||||||
* @author bushtail
|
* @author bushtail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Initializable
|
@Initializable
|
||||||
class TannerDialogue(player: Player? = null) : DialoguePlugin(player) {
|
class TannerDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||||
|
|
||||||
override fun newInstance(player: Player) : DialoguePlugin {
|
override fun newInstance(player: Player): DialoguePlugin {
|
||||||
return TannerDialogue(player)
|
return TannerDialogue(player)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun open(vararg args: Any?) : Boolean {
|
override fun open(vararg args: Any?): Boolean {
|
||||||
npc = args[0] as NPC
|
npc = args[0] as NPC
|
||||||
npcl(FacialExpression.NEUTRAL, "Greetings friend. I am a manufacturer of leather.")
|
npcl(FacialExpression.NEUTRAL, "Greetings friend. I am a manufacturer of leather.")
|
||||||
stage = 0
|
stage = 0
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handle(interfaceId: Int, buttonId: Int) : Boolean {
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
when(stage) {
|
when (stage) {
|
||||||
0 -> options("Can I buy some leather then?", "Leather is rather weak stuff.").also{ stage++ }
|
0 -> {
|
||||||
1 -> when(buttonId) {
|
var hasHides = false
|
||||||
1 -> player(FacialExpression.ASKING,"Can I buy some leather then?").also{ stage = 10 }
|
|
||||||
2 -> player(FacialExpression.SUSPICIOUS, "Leather is rather weak stuff.").also { stage = 20 }
|
for (tanningProduct in TanningProduct.values()) {
|
||||||
|
if (inInventory(player, tanningProduct.item)) {
|
||||||
|
hasHides = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hasHides) {
|
||||||
|
npcl(FacialExpression.FRIENDLY, "I see you have brought me some hides. Would you like me to tan them for you?").also { stage = 10 }
|
||||||
|
} else {
|
||||||
|
options("Can I buy some leather?", "Leather is rather weak stuff.").also { stage = 20 }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
10 -> npcl(FacialExpression.FRIENDLY, "Certainly!").also { stage = 30 }
|
10 -> options("Yes please.", "No thanks.").also { stage++ }
|
||||||
20 -> npcl(FacialExpression.NOD_YES, "Normal leather may be quite weak, but it's very cheap - I " +
|
11 -> when (buttonId) {
|
||||||
"make it from cowhides for only 1 gp per hide - and it's so easy to craft that anyone can work with it.").also{ stage++ }
|
1 -> playerl(FacialExpression.HAPPY, "Yes please.").also { stage = 12 }
|
||||||
21 -> npcl(FacialExpression.HALF_THINKING, "Alternatively you could try hard leather. It's not so easy " +
|
2 -> playerl(FacialExpression.NEUTRAL, "No thanks.").also { stage = 13 }
|
||||||
"to craft, but I only charge 3 gp per cowhide to prepare it, and it makes much sturdier armour.").also{ stage++ }
|
|
||||||
22 -> npcl(FacialExpression.FRIENDLY, "I can also tan snake hides and dragonhides, suitable for crafting" +
|
|
||||||
"into the highest quality armour for rangers.").also{ stage++ }
|
|
||||||
23 -> player(FacialExpression.NEUTRAL, "Thanks, I'll bear it in mind.").also { stage = END_DIALOGUE }
|
|
||||||
30 -> {
|
|
||||||
end()
|
|
||||||
TanningProduct.open(player, npc.id)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12 -> end().also { TanningProduct.open(player, NPCs.TANNER_804) }
|
||||||
|
13 -> npcl(FacialExpression.FRIENDLY, "Very well, @g[sir,madam], as you wish.").also { stage = END_DIALOGUE }
|
||||||
|
|
||||||
|
20 -> when (buttonId) {
|
||||||
|
1 -> playerl(FacialExpression.ASKING, "Can I buy some leather?").also { stage = 21 }
|
||||||
|
2 -> playerl(FacialExpression.SUSPICIOUS, "Leather is rather weak stuff.").also { stage = 22 }
|
||||||
|
}
|
||||||
|
|
||||||
|
21 -> npcl(FacialExpression.FRIENDLY, "I make leather from animal hides. Bring me some cowhides and one gold coin per hide, and I'll tan them into soft leather for you.").also { stage = END_DIALOGUE }
|
||||||
|
|
||||||
|
22 -> npcl(FacialExpression.NOD_YES, "Normal leather may be quite weak, but it's very cheap - I make it from cowhides for only 1 gp per hide - and it's so easy to craft that anyone can work with it.").also { stage++ }
|
||||||
|
23 -> npcl(FacialExpression.HALF_THINKING, "Alternatively you could try hard leather. It's not so easy to craft, but I only charge 3 gp per cowhide to prepare it, and it makes much sturdier armour.").also { stage++ }
|
||||||
|
24 -> npcl(FacialExpression.FRIENDLY, "I can also tan snake hides and dragonhides, suitable for crafting into the highest quality armour for rangers.").also { stage++ }
|
||||||
|
25 -> playerl(FacialExpression.NEUTRAL, "Thanks, I'll bear it in mind.").also { stage = END_DIALOGUE }
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
override fun getIds() : IntArray {
|
|
||||||
|
override fun getIds(): IntArray {
|
||||||
return intArrayOf(NPCs.TANNER_804)
|
return intArrayOf(NPCs.TANNER_804)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ package content.region.asgarnia.handlers
|
||||||
|
|
||||||
import content.global.skill.crafting.TanningProduct
|
import content.global.skill.crafting.TanningProduct
|
||||||
import core.api.*
|
import core.api.*
|
||||||
|
import core.game.interaction.IntType
|
||||||
import core.game.node.entity.skill.Skills
|
import core.game.node.entity.skill.Skills
|
||||||
import core.game.world.map.Location
|
import core.game.world.map.Location
|
||||||
import org.rs09.consts.Items
|
import org.rs09.consts.Items
|
||||||
|
import org.rs09.consts.NPCs
|
||||||
import org.rs09.consts.Scenery
|
import org.rs09.consts.Scenery
|
||||||
import content.region.asgarnia.dialogue.TheDoorDialogues
|
import content.region.asgarnia.dialogue.TheDoorDialogues
|
||||||
import core.game.interaction.InteractionListener
|
import core.game.interaction.InteractionListener
|
||||||
import core.game.interaction.IntType
|
|
||||||
import org.rs09.consts.NPCs
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author bushtail
|
* @author bushtail
|
||||||
|
|
@ -17,13 +17,18 @@ import org.rs09.consts.NPCs
|
||||||
|
|
||||||
class CraftingGuildListeners : InteractionListener {
|
class CraftingGuildListeners : InteractionListener {
|
||||||
private val GUILD_DOOR = Scenery.GUILD_DOOR_2647
|
private val GUILD_DOOR = Scenery.GUILD_DOOR_2647
|
||||||
private val REQUIRED_ITEMS = intArrayOf(Items.BROWN_APRON_1757, Items.CRAFTING_CAPE_9780, Items.CRAFTING_CAPET_9781)
|
private val APRON = Items.BROWN_APRON_1757
|
||||||
|
private val CAPE = Items.CRAFTING_CAPE_9780
|
||||||
|
|
||||||
override fun defineListeners() {
|
override fun defineListeners() {
|
||||||
on(GUILD_DOOR, IntType.SCENERY, "open") { player, door ->
|
on(GUILD_DOOR, IntType.SCENERY, "open") { player, door ->
|
||||||
if (player.location == Location.create(2933, 3289, 0)) {
|
if (player.location == Location.create(2933, 3289, 0)) {
|
||||||
if (hasLevelStat(player, Skills.CRAFTING, 40)) {
|
if (hasLevelStat(player, Skills.CRAFTING, 40)) {
|
||||||
if (anyInEquipment(player, *REQUIRED_ITEMS)) {
|
if (inEquipment(player, APRON)) {
|
||||||
|
openDialogue(player, TheDoorDialogues(0))
|
||||||
|
core.game.global.action.DoorActionHandler.handleAutowalkDoor(player, door.asScenery())
|
||||||
|
return@on true
|
||||||
|
} else if (inEquipment(player, CAPE)) {
|
||||||
openDialogue(player, TheDoorDialogues(0))
|
openDialogue(player, TheDoorDialogues(0))
|
||||||
core.game.global.action.DoorActionHandler.handleAutowalkDoor(player, door.asScenery())
|
core.game.global.action.DoorActionHandler.handleAutowalkDoor(player, door.asScenery())
|
||||||
return@on true
|
return@on true
|
||||||
|
|
@ -46,4 +51,4 @@ class CraftingGuildListeners : InteractionListener {
|
||||||
return@on true
|
return@on true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
package content.region.desert.alkharid.dialogue
|
||||||
|
|
||||||
|
import content.global.skill.crafting.TanningProduct
|
||||||
|
import core.api.inInventory
|
||||||
|
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 Ellis's dialogue.
|
||||||
|
*/
|
||||||
|
@Initializable
|
||||||
|
class EllisDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||||
|
|
||||||
|
override fun open(vararg args: Any?): Boolean {
|
||||||
|
npc = args[0] as NPC
|
||||||
|
npcl(FacialExpression.FRIENDLY, "Greetings friend. I am a manufacturer of leather.").also { stage = 0 }
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
|
when (stage) {
|
||||||
|
0 -> {
|
||||||
|
var hasHides = false
|
||||||
|
|
||||||
|
for (tanningProduct in TanningProduct.values()) {
|
||||||
|
if (inInventory(player, tanningProduct.item)) {
|
||||||
|
hasHides = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hasHides) {
|
||||||
|
npcl(FacialExpression.FRIENDLY, "I see you have brought me some hides. Would you like me to tan them for you?").also { stage = 10 }
|
||||||
|
} else {
|
||||||
|
options("Can I buy some leather?", "Leather is rather weak stuff.").also { stage = 20 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
10 -> options("Yes please.", "No thanks.").also { stage++ }
|
||||||
|
11 -> when (buttonId) {
|
||||||
|
1 -> playerl(FacialExpression.HAPPY, "Yes please.").also { stage = 12 }
|
||||||
|
2 -> playerl(FacialExpression.NEUTRAL, "No thanks.").also { stage = 13 }
|
||||||
|
}
|
||||||
|
|
||||||
|
12 -> end().also { TanningProduct.open(player, NPCs.ELLIS_2824) }
|
||||||
|
13 -> npcl(FacialExpression.FRIENDLY, "Very well, @g[sir,madam], as you wish.").also { stage = END_DIALOGUE }
|
||||||
|
|
||||||
|
20 -> when (buttonId) {
|
||||||
|
1 -> playerl(FacialExpression.ASKING, "Can I buy some leather?").also { stage = 21 }
|
||||||
|
2 -> playerl(FacialExpression.SUSPICIOUS, "Leather is rather weak stuff.").also { stage = 22 }
|
||||||
|
}
|
||||||
|
|
||||||
|
21 -> npcl(FacialExpression.FRIENDLY, "I make leather from animal hides. Bring me some cowhides and one gold coin per hide, and I'll tan them into soft leather for you.").also { stage = END_DIALOGUE }
|
||||||
|
|
||||||
|
22 -> npcl(FacialExpression.NOD_YES, "Normal leather may be quite weak, but it's very cheap - I make it from cowhides for only 1 gp per hide - and it's so easy to craft that anyone can work with it.").also { stage++ }
|
||||||
|
23 -> npcl(FacialExpression.HALF_THINKING, "Alternatively you could try hard leather. It's not so easy to craft, but I only charge 3 gp per cowhide to prepare it, and it makes much sturdier armour.").also { stage++ }
|
||||||
|
24 -> npcl(FacialExpression.FRIENDLY, "I can also tan snake hides and dragonhides, suitable for crafting into the highest quality armour for rangers.").also { stage++ }
|
||||||
|
25 -> playerl(FacialExpression.NEUTRAL, "Thanks, I'll bear it in mind.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newInstance(player: Player?): DialoguePlugin {
|
||||||
|
return EllisDialogue(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getIds(): IntArray {
|
||||||
|
return intArrayOf(NPCs.ELLIS_2824)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package content.region.desert.alkharid.handlers;
|
|
||||||
|
|
||||||
import core.cache.def.impl.NPCDefinition;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import content.global.skill.crafting.TanningProduct;
|
|
||||||
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.plugin.Plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author 'Vexia
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public class TanningNPC extends OptionHandler {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
|
||||||
NPCDefinition.forId(1041).getHandlers().put("option:trade", this);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(Player player, Node node, String option) {
|
|
||||||
TanningProduct.open(player, ((NPC) node).getId());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
package content.region.morytania.canifis.dialogue;
|
|
||||||
|
|
||||||
import core.game.dialogue.DialoguePlugin;
|
|
||||||
import core.game.dialogue.FacialExpression;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import content.global.skill.crafting.TanningProduct;
|
|
||||||
import core.game.node.entity.npc.NPC;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.node.item.Item;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the SbottDialogue dialogue.
|
|
||||||
* @author 'Vexia
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public class SbottDialogue extends DialoguePlugin {
|
|
||||||
|
|
||||||
public SbottDialogue() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public SbottDialogue(Player player) {
|
|
||||||
super(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DialoguePlugin newInstance(Player player) {
|
|
||||||
|
|
||||||
return new SbottDialogue(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean open(Object... args) {
|
|
||||||
npc = (NPC) args[0];
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Hello stranger. Would you like to me to tan any hides for", "you?");
|
|
||||||
stage = 0;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(int interfaceId, int buttonId) {
|
|
||||||
switch (stage) {
|
|
||||||
case 0:
|
|
||||||
// interpreter.sendDialogues(npc, FacialExpression.NORMAL,
|
|
||||||
// "Soft leather - 2 gp per hide","Hard leather - 5 gp per hide","Snakeskins - 25 gp per hide","Dragon leather - 45 gp per hide.");
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.HAPPY, "Soft leather - 1 gp per hide", "Hard leather - 3 gp per hide", "Snakeskins - 20 gp per hide", "Dragon leather - 20 gp per hide.");
|
|
||||||
stage = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
player.getInventory().refresh();
|
|
||||||
Item items[] = player.getInventory().toArray();
|
|
||||||
for (int i = 0; i < items.length; i++) {
|
|
||||||
if (items[i] == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (TanningProduct.forItemId(items[i].getId()) != null) {
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "I see you have brought me some hides.", "Would you like me to tan them for you?");
|
|
||||||
stage = 100;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "No thanks, I haven't any hides.");
|
|
||||||
stage = 2;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
case 100:
|
|
||||||
interpreter.sendOptions("Select an Option", "Yes please.", "No thanks.");
|
|
||||||
stage = 101;
|
|
||||||
break;
|
|
||||||
case 101:
|
|
||||||
switch (buttonId) {
|
|
||||||
case 1:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.HAPPY, "Yes please.");
|
|
||||||
stage = 210;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
interpreter.sendDialogues(player, FacialExpression.NEUTRAL, "No thanks.");
|
|
||||||
stage = 200;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 210:
|
|
||||||
end();
|
|
||||||
TanningProduct.open(player, 2824);
|
|
||||||
break;
|
|
||||||
case 200:
|
|
||||||
interpreter.sendDialogues(npc, FacialExpression.FRIENDLY, "Very well, sir, as you wish.");
|
|
||||||
stage = 201;
|
|
||||||
break;
|
|
||||||
case 201:
|
|
||||||
end();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getIds() {
|
|
||||||
return new int[] { 1041 };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
package content.region.morytania.canifis.dialogue
|
||||||
|
|
||||||
|
import content.global.skill.crafting.TanningProduct
|
||||||
|
import core.api.inInventory
|
||||||
|
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 Sbott's dialogue.
|
||||||
|
*/
|
||||||
|
@Initializable
|
||||||
|
class SbottDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||||
|
|
||||||
|
override fun open(vararg args: Any?): Boolean {
|
||||||
|
npc = args[0] as NPC
|
||||||
|
npcl(FacialExpression.HAPPY, "Hello stranger. Would you like to me to tan any hides for you?").also { stage = 0 }
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||||
|
when (stage) {
|
||||||
|
//0 -> npc(FacialExpression.HAPPY, "Soft leather - 2 gp per hide", "Hard leather - 5 gp per hide", "Snakeskins - 25 gp per hide", "Dragon leather - 45 gp per hide.").also { stage++ }
|
||||||
|
0 -> npc(FacialExpression.HAPPY, "Soft leather - 1 gp per hide", "Hard leather - 3 gp per hide", "Snakeskins - 20 gp per hide", "Dragon leather - 20 gp per hide.").also { stage++ }
|
||||||
|
1 -> {
|
||||||
|
var hasHides = false
|
||||||
|
|
||||||
|
for (tanningProduct in TanningProduct.values()) {
|
||||||
|
if (inInventory(player, tanningProduct.item)) {
|
||||||
|
hasHides = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hasHides) {
|
||||||
|
npcl(FacialExpression.FRIENDLY, "I see you have brought me some hides. Would you like me to tan them for you?").also { stage = 10 }
|
||||||
|
} else {
|
||||||
|
playerl(FacialExpression.HALF_GUILTY, "No thanks, I haven't any hides.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
10 -> options("Yes please.", "No thanks.").also { stage++ }
|
||||||
|
|
||||||
|
11 -> when (buttonId) {
|
||||||
|
1 -> playerl(FacialExpression.HAPPY, "Yes please.").also { stage = 12 }
|
||||||
|
2 -> playerl(FacialExpression.NEUTRAL, "No thanks.").also { stage = 13 }
|
||||||
|
}
|
||||||
|
|
||||||
|
12 -> end().also { TanningProduct.open(player, NPCs.SBOTT_1041) }
|
||||||
|
13 -> npcl(FacialExpression.FRIENDLY, "Very well, @g[sir,madam], as you wish.").also { stage = END_DIALOGUE }
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newInstance(player: Player?): DialoguePlugin {
|
||||||
|
return SbottDialogue(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getIds(): IntArray {
|
||||||
|
return intArrayOf(NPCs.SBOTT_1041)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -126,8 +126,8 @@ class Shops : StartupListener, TickListener, InteractionListener, InterfaceListe
|
||||||
override fun defineListeners() {
|
override fun defineListeners() {
|
||||||
on(IntType.NPC, "trade", "shop"){ player, node ->
|
on(IntType.NPC, "trade", "shop"){ player, node ->
|
||||||
val npc = node as NPC
|
val npc = node as NPC
|
||||||
if (npc.id == 2824) {
|
if (npc.id == 2824 || npc.id == 1041 || npc.id == 804) {
|
||||||
TanningProduct.open(player, 2824)
|
TanningProduct.open(player, npc.id)
|
||||||
return@on true
|
return@on true
|
||||||
}
|
}
|
||||||
if (npc.id == 7601) {
|
if (npc.id == 7601) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue