mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Start working on implementing new shelves
This commit is contained in:
parent
8fea59e1cc
commit
a0cd34a1af
3 changed files with 307 additions and 239 deletions
|
|
@ -0,0 +1,58 @@
|
|||
package content.global.skill.construction.decoration.kitchen
|
||||
|
||||
import core.api.*
|
||||
import core.game.interaction.IntType
|
||||
import core.game.interaction.InteractionListener
|
||||
import core.game.node.entity.player.Player
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.Scenery
|
||||
|
||||
class ShelfListener : InteractionListener {
|
||||
|
||||
companion object{
|
||||
|
||||
const val NEXT = 5
|
||||
const val PREV = -5
|
||||
|
||||
val woodshelf_1_items = listOf(
|
||||
"Kettle" to Items.KETTLE_7688,
|
||||
"Teapot" to Items.TEAPOT_7702,
|
||||
"Clay Cup" to Items.EMPTY_CUP_7728
|
||||
)
|
||||
|
||||
val woodshelf_2_items = woodshelf_1_items + mapOf(
|
||||
"Empty beer glass" to Items.BEER_GLASS_1919
|
||||
)
|
||||
|
||||
val shelves = mapOf(
|
||||
Scenery.SHELVES_13545 to woodshelf_1_items
|
||||
)
|
||||
}
|
||||
override fun defineListeners() {
|
||||
on(shelves.keys.toIntArray(), IntType.SCENERY, "Search") {player, node ->
|
||||
searchShelf(player, node.id)
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
||||
fun searchShelf(player : Player, shelf_id: Int, offset : Int = 0){
|
||||
val shelfItems = shelves[shelf_id]!!.slice(offset..offset+4)
|
||||
val shelfItemsNames = shelfItems.map { it.first }
|
||||
val shelfItemsIds = shelfItems.map { it.second }
|
||||
sendDialogueOptions(player, "Select an Option", *shelfItemsNames.toTypedArray())
|
||||
addDialogueAction(player) { p, button ->
|
||||
val item = shelfItemsIds[button]
|
||||
if (item < 1000){
|
||||
searchShelf(player, shelf_id, offset+item)
|
||||
}
|
||||
else{
|
||||
if (hasSpaceFor(player, item, 1)){
|
||||
addItem(player, item)
|
||||
}
|
||||
else{
|
||||
sendMessage(player, "You need at least one free inventory space to take from the shelves.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,239 +1,239 @@
|
|||
package content.global.skill.construction.decoration.kitchen;
|
||||
|
||||
|
||||
import core.cache.def.impl.SceneryDefinition;
|
||||
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.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
import core.plugin.ClassScanner;
|
||||
import org.rs09.consts.Items;
|
||||
|
||||
/**
|
||||
* Handles the shelves in the kitchen room.
|
||||
* @author Splinter
|
||||
*/
|
||||
@Initializable
|
||||
public final class ShelfPlugin extends OptionHandler {
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
ClassScanner.definePlugin(new ShelfDialogue());
|
||||
for (int i = 13545; i < 13552; i++) {
|
||||
SceneryDefinition.forId(i).getHandlers().put("option:search", this);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(Player player, Node node, String option) {
|
||||
player.getDialogueInterpreter().open(778341, node.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dialogue options for the shelves, what a mess!
|
||||
* @author Splinter
|
||||
* @version 1.0
|
||||
*/
|
||||
public final class ShelfDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code ShelfDialogue} {@code Object}.
|
||||
*/
|
||||
public ShelfDialogue() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code ShelfDialogue} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public ShelfDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new ShelfDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
int id = (int) args[0];
|
||||
switch (id) {
|
||||
case 13545:// wood 1
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup");
|
||||
stage = 1;
|
||||
break;
|
||||
case 13546:// wood 2
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass");
|
||||
stage = 1;
|
||||
break;
|
||||
case 13547:// wood 3
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Cake tin");
|
||||
stage = 1;
|
||||
break;
|
||||
case 13548:// oak 1
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Bowl");
|
||||
stage = 2;
|
||||
break;
|
||||
case 13549:// oak 2
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
|
||||
stage = 3;
|
||||
break;
|
||||
case 13550:// teak 1
|
||||
case 13551:
|
||||
interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
|
||||
stage = 5;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
if (player.getInventory().freeSlots() < 1) {
|
||||
player.sendMessage("You need at least one free inventory space to take from the shelves.");
|
||||
end();
|
||||
return true;
|
||||
}
|
||||
switch (stage) {
|
||||
case 1:// all wood shelves
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
|
||||
break;
|
||||
case 4:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
break;
|
||||
case 5:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:// Oak shelf #1
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
|
||||
break;
|
||||
case 4:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
break;
|
||||
case 5:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:// Oak shelves #2 only
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.PORCELAIN_CUP_4244, 1));
|
||||
break;
|
||||
case 4:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
break;
|
||||
case 5:
|
||||
interpreter.sendOptions("Select an Option", "Bowl", "Cake tin");
|
||||
stage = 4;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 4:// Oak shelves #2 only
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
|
||||
break;
|
||||
}
|
||||
case 5:// teak shelves
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.PORCELAIN_CUP_7735, 1));
|
||||
break;
|
||||
case 4:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
break;
|
||||
case 5:
|
||||
interpreter.sendOptions("Select an Option", "Bowl", "Pie dish", "Empty pot");
|
||||
stage = 6;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 6:// teak shelves
|
||||
switch (buttonId) {
|
||||
case 1:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.PIE_DISH_2313, 1));
|
||||
break;
|
||||
case 3:
|
||||
end();
|
||||
player.getInventory().add(new Item(Items.EMPTY_POT_1931, 1));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 778341 };
|
||||
}
|
||||
}
|
||||
}
|
||||
// package content.global.skill.construction.decoration.kitchen;
|
||||
//
|
||||
//
|
||||
// import core.cache.def.impl.SceneryDefinition;
|
||||
// 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.plugin.Initializable;
|
||||
// import core.plugin.Plugin;
|
||||
// import core.plugin.ClassScanner;
|
||||
// import org.rs09.consts.Items;
|
||||
//
|
||||
// /**
|
||||
// * Handles the shelves in the kitchen room.
|
||||
// * @author Splinter
|
||||
// */
|
||||
// @Initializable
|
||||
// public final class ShelfPlugin extends OptionHandler {
|
||||
//
|
||||
// @Override
|
||||
// public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
// ClassScanner.definePlugin(new ShelfDialogue());
|
||||
// for (int i = 13545; i < 13552; i++) {
|
||||
// SceneryDefinition.forId(i).getHandlers().put("option:search", this);
|
||||
// }
|
||||
// return this;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean handle(Player player, Node node, String option) {
|
||||
// player.getDialogueInterpreter().open(778341, node.getId());
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Dialogue options for the shelves, what a mess!
|
||||
// * @author Splinter
|
||||
// * @version 1.0
|
||||
// */
|
||||
// public final class ShelfDialogue extends DialoguePlugin {
|
||||
//
|
||||
// /**
|
||||
// * Constructs a new {@code ShelfDialogue} {@code Object}.
|
||||
// */
|
||||
// public ShelfDialogue() {
|
||||
// /**
|
||||
// * empty.
|
||||
// */
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Constructs a new {@code ShelfDialogue} {@code Object}.
|
||||
// * @param player the player.
|
||||
// */
|
||||
// public ShelfDialogue(Player player) {
|
||||
// super(player);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public DialoguePlugin newInstance(Player player) {
|
||||
// return new ShelfDialogue(player);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean open(Object... args) {
|
||||
// int id = (int) args[0];
|
||||
// switch (id) {
|
||||
// case 13545:// wood 1
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup");
|
||||
// stage = 1;
|
||||
// break;
|
||||
// case 13546:// wood 2
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass");
|
||||
// stage = 1;
|
||||
// break;
|
||||
// case 13547:// wood 3
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Cake tin");
|
||||
// stage = 1;
|
||||
// break;
|
||||
// case 13548:// oak 1
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Bowl");
|
||||
// stage = 2;
|
||||
// break;
|
||||
// case 13549:// oak 2
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
|
||||
// stage = 3;
|
||||
// break;
|
||||
// case 13550:// teak 1
|
||||
// case 13551:
|
||||
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
|
||||
// stage = 5;
|
||||
// break;
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public boolean handle(int interfaceId, int buttonId) {
|
||||
// if (player.getInventory().freeSlots() < 1) {
|
||||
// player.sendMessage("You need at least one free inventory space to take from the shelves.");
|
||||
// end();
|
||||
// return true;
|
||||
// }
|
||||
// switch (stage) {
|
||||
// case 1:// all wood shelves
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
// break;
|
||||
// case 3:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
|
||||
// break;
|
||||
// case 4:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
// break;
|
||||
// case 5:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case 2:// Oak shelf #1
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
// break;
|
||||
// case 3:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
|
||||
// break;
|
||||
// case 4:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
// break;
|
||||
// case 5:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case 3:// Oak shelves #2 only
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
// break;
|
||||
// case 3:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.PORCELAIN_CUP_4244, 1));
|
||||
// break;
|
||||
// case 4:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
// break;
|
||||
// case 5:
|
||||
// interpreter.sendOptions("Select an Option", "Bowl", "Cake tin");
|
||||
// stage = 4;
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case 4:// Oak shelves #2 only
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
|
||||
// break;
|
||||
// }
|
||||
// case 5:// teak shelves
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
|
||||
// break;
|
||||
// case 3:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.PORCELAIN_CUP_7735, 1));
|
||||
// break;
|
||||
// case 4:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
|
||||
// break;
|
||||
// case 5:
|
||||
// interpreter.sendOptions("Select an Option", "Bowl", "Pie dish", "Empty pot");
|
||||
// stage = 6;
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case 6:// teak shelves
|
||||
// switch (buttonId) {
|
||||
// case 1:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
|
||||
// break;
|
||||
// case 2:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.PIE_DISH_2313, 1));
|
||||
// break;
|
||||
// case 3:
|
||||
// end();
|
||||
// player.getInventory().add(new Item(Items.EMPTY_POT_1931, 1));
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public int[] getIds() {
|
||||
// return new int[] { 778341 };
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
|
@ -684,6 +684,16 @@ fun hasSpaceFor(player: Player, item: Item): Boolean {
|
|||
return player.inventory.hasSpaceFor(item)
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a player has space for an item
|
||||
* @param player the player whose inventory to check
|
||||
* @param item the Item to check against
|
||||
* @return true if the player's inventory has space for the item
|
||||
*/
|
||||
fun hasSpaceFor(player: Player, item: Int, amount: Int): Boolean {
|
||||
return hasSpaceFor(player, Item(item, amount))
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of ticks passed since server startup
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue