Added bracelet mould to the Tool Store 4 item list

Added knife to the Tool Store 2 item list
This commit is contained in:
Lily Mews
2026-01-22 13:08:16 +00:00
committed by Ryan
parent 6e9cd98e38
commit 02607f7121
2 changed files with 233 additions and 171 deletions
@@ -1,171 +0,0 @@
package content.global.skill.construction.decoration.workshop;
import core.cache.def.impl.ItemDefinition;
import core.cache.def.impl.SceneryDefinition;
import core.plugin.Initializable;
import core.game.dialogue.DialogueInterpreter;
import core.game.dialogue.DialoguePlugin;
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.game.node.scenery.Scenery;
import core.plugin.Plugin;
import core.plugin.ClassScanner;
import java.util.ArrayList;
import java.util.List;
/**
* Handles the 5 types of tool stores
* ToolsPlugin.java
* @author Clayton Williams
* @date Oct 29, 2015
*
*/
@Initializable
public class ToolsPlugin extends OptionHandler {
/**
* The different tool stores
* @author Clayton Williams
* @date Oct 29, 2015
*/
private enum ToolStore {
TOOLSTORE_1(13699, 8794, 1755, 2347, 1735),
TOOLSTORE_2(13700, 1925, 952, 590),
TOOLSTORE_3(13701, 1757, 1785, 1733),
TOOLSTORE_4(13702, 1595, 1597, 1592, 1599, 5523),
TOOLSTORE_5(13703, 5341, 952, 676, 5343, 5331);
/**
* The object id of the tool store
*/
private int objectId;
/**
* The tools included
*/
private int[] tools;
/**
* ToolStore
* @param objectId
* @param tools
*/
ToolStore(int objectId, int... tools) {
this.objectId = objectId;
this.tools = tools;
}
/**
* Gets the toolstore from an object id
* @param objectId - the object id
* @return
*/
private static ToolStore forId(int objectId) {
for (ToolStore t : ToolStore.values()) {
if (t.objectId == objectId) {
return t;
}
}
return null;
}
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
for (ToolStore t : ToolStore.values()) {
SceneryDefinition.forId(t.objectId).getHandlers().put("option:search", this);
}
ClassScanner.definePlugin(new ToolDialogue());
return this;
}
@Override
public boolean handle(Player player, Node node, String option) {
Scenery object = node.asScenery();
ToolStore ts = ToolStore.forId(object.getId());
if (ts != null) {
player.getDialogueInterpreter().open(DialogueInterpreter.getDialogueKey("con:tools"), ts);
}
return true;
}
/**
* Handles the tool dialogue
* @author Clayton Williams
* @date Oct 29, 2015
*/
private final class ToolDialogue extends DialoguePlugin {
/**
* The tool store being used
*/
private ToolStore toolStore;
/**
* ToolDialogue
*/
private ToolDialogue() {
/**
* Empty
*/
}
/**
* ToolDialogue
* @param player
*/
public ToolDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new ToolDialogue(player);
}
@Override
public boolean open(Object... args) {
toolStore = (ToolStore) args[0];
List<String> itemNames = new ArrayList<String>();
for(int itemId : toolStore.tools) {
ItemDefinition n = ItemDefinition.forId(itemId);
itemNames.add(n.getName());
}
interpreter.sendOptions("Select a Tool", itemNames.toArray(new String[itemNames.size()]));
stage = 1;
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
switch (stage) {
case 1:
Item item = new Item(toolStore.tools[buttonId - 1], 1);
if (player.getInventory().freeSlots() <= 0) {
interpreter.sendDialogue("You have no space in your inventory.");
stage = 2;
return true;
}
player.getInventory().add(item);
end();
return true;
case 2:
end();
return true;
}
return false;
}
@Override
public int[] getIds() {
return new int[] { DialogueInterpreter.getDialogueKey("con:tools") };
}
}
}
@@ -0,0 +1,233 @@
package content.global.skill.construction.decoration.workshop
import core.api.*
import core.cache.def.impl.SceneryDefinition
import core.game.dialogue.DialogueInterpreter
import core.game.dialogue.DialoguePlugin
import core.game.interaction.OptionHandler
import core.game.node.Node
import core.game.node.entity.player.Player
import core.plugin.ClassScanner.definePlugin
import core.plugin.Initializable
import core.plugin.Plugin
import org.rs09.consts.Items
/**
* Handles the 5 types of tool stores
* ToolsPlugin.java
* @author Clayton Williams
* @date Oct 29, 2015
*/
@Initializable
class ToolsPlugin : OptionHandler() {
val id =0
@Throws(Throwable::class)
override fun newInstance(arg: Any?): Plugin<Any?> {
definePlugin(ToolDialogue())
SceneryDefinition.forId(13699).getHandlers().put("option:search", this)
SceneryDefinition.forId(13700).getHandlers().put("option:search", this)
SceneryDefinition.forId(13701).getHandlers().put("option:search", this)
SceneryDefinition.forId(13702).getHandlers().put("option:search", this)
SceneryDefinition.forId(13703).getHandlers().put("option:search", this)
return this
}
override fun handle(player: Player, node: Node, option: String?): Boolean {
openDialogue(player,DialogueInterpreter.getDialogueKey("con:tools"), node.getId())
return true
}
/**
* Handles the tool dialogue
* @author Clayton Williams
* @date Oct 29, 2015
*/
private inner class ToolDialogue : DialoguePlugin {
private var id: Int? = null
/**
* Constructs a new `ToolDialogue` `Object`.
*/
constructor()
/**
* Constructs a new `ToolDialogue` `Object`.
*
* @param player
* the player.
*/
constructor(player: Player?) : super(player)
fun addItemMsg(player: Player, id: Int, amount: Int = 1) {
if (!addItem(player, id,amount)){
sendDialogue(player, "You have no space in your inventory.")
stage = 3 //Stage 3, player just needs to confirm they received the no inventory space dialogue
} else {end()} //Player received their Item, close dialogue
}
public override fun newInstance(player: Player?): DialoguePlugin {
return ToolDialogue(player)
}
override fun open(vararg args: Any?): Boolean {
id = args[0] as Int
when (id) {
13699 -> {
sendDialogueOptions(player,"Select a Tool", "Saw", "Chisel", "Hammer", "Shears")
}
13700 -> {
sendDialogueOptions(player,"Select a Tool", "Bucket", "Knife", "Spade", "Tinderbox")
}
13701 -> {
sendDialogueOptions(player,"Select a Tool", "Brown apron", "Glassblowing pipe", "Needle")
}
13702 -> {
sendDialogueOptions(player,"Select a Tool","Amulet mould","Necklace mould","Ring mould","Holy mould","More Options"
)
stage = 1
}
13703 -> {
sendDialogueOptions(player,"Select a Tool", "Rake", "Spade", "Trowel", "Seed dibber", "Watering can")
}
}
return true
}
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
if (stage == 3) {//If reply was on full inventory confirmation, close dialogue
end()
return true
}
when (id) {
13699 -> {
when (buttonId) {
1 -> {
addItemMsg(player, Items.SAW_8794)
}
2 -> {
addItemMsg(player, Items.CHISEL_1755)
}
3 -> {
addItemMsg(player, Items.HAMMER_2347)
}
4 -> {
addItemMsg(player, Items.SHEARS_1735)
}
}
}
13700 -> {
when (buttonId) {
1 -> {
addItemMsg(player, Items.BUCKET_1925)
}
2 -> {
addItemMsg(player, Items.KNIFE_946)
}
3 -> {
addItemMsg(player, Items.SPADE_952)
}
4 -> {
addItemMsg(player, Items.TINDERBOX_590)
}
}
}
13701 -> {
when (buttonId) {
1 -> {
addItemMsg(player, Items.BROWN_APRON_1757)
}
2 -> {
addItemMsg(player, Items.GLASSBLOWING_PIPE_1785)
}
3 -> {
addItemMsg(player, Items.NEEDLE_1733)
}
}
}
13702 -> {
when (stage) {
1 -> when (buttonId) {
1 -> {
addItemMsg(player, Items.AMULET_MOULD_1595)
}
2 -> {
addItemMsg(player, Items.NECKLACE_MOULD_1597)
}
3 -> {
addItemMsg(player, Items.RING_MOULD_1592)
}
4 -> {
addItemMsg(player, Items.HOLY_MOULD_1599)
}
5 -> {
sendDialogueOptions(player,
"Select a Tool", "Bracelet mould", "Tiara mould"
)
stage = 2
}
}
2 -> {
when (buttonId) {
1 -> {
addItemMsg(player, Items.BRACELET_MOULD_11065)
}
2 -> {
addItemMsg(player, Items.TIARA_MOULD_5523)
}
}
}
}
}
13703 -> {
when (buttonId) {
1 -> {
addItemMsg(player, Items.RAKE_5341)
}
2 -> {
addItemMsg(player, Items.SPADE_952)
}
3 -> {
addItemMsg(player, Items.TROWEL_676)
}
4 -> {
addItemMsg(player, Items.SEED_DIBBER_5343)
}
5 -> {
addItemMsg(player, Items.WATERING_CAN_5331)
}
}
}
}
return true
}
override fun getIds(): IntArray {
return intArrayOf(DialogueInterpreter.getDialogueKey("con:tools"))
}
}
}