Updated KaramjaBananaCrate plugin to listener
Moved "search" and "fill" interactions out of KaramjaOptionPlugin into new KaramjaBananaCrateListener
This commit is contained in:
@@ -31,11 +31,6 @@ import core.plugin.Plugin;
|
||||
@Initializable
|
||||
public final class KaramajaOptionPlugin extends OptionHandler {
|
||||
|
||||
/**
|
||||
* Represents the banana item.
|
||||
*/
|
||||
private static final Item BANANA = new Item(1963);
|
||||
|
||||
/**
|
||||
* Represents the pineapple item.
|
||||
*/
|
||||
@@ -73,8 +68,6 @@ public final class KaramajaOptionPlugin extends OptionHandler {
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
SceneryDefinition.forId(2072).getHandlers().put("option:search", this);// banana crate.
|
||||
SceneryDefinition.forId(2072).getHandlers().put("option:fill", this);// banana crate.
|
||||
SceneryDefinition.forId(2078).getHandlers().put("option:search", this);// random crate.
|
||||
SceneryDefinition.forId(492).getHandlers().put("option:climb-down", this);// musa point rock
|
||||
SceneryDefinition.forId(1764).getHandlers().put("option:climb", this);// musa dungeon rope
|
||||
@@ -215,31 +208,6 @@ public final class KaramajaOptionPlugin extends OptionHandler {
|
||||
case 2078:
|
||||
player.getPacketDispatch().sendMessage("There are no bananas left on the tree.");
|
||||
break;
|
||||
case 2072:
|
||||
int amt = player.getSavedData().getGlobalData().getKaramjaBananas();
|
||||
if (amt >= 10) {
|
||||
player.getPacketDispatch().sendMessage("The crate is full of bananas.");
|
||||
return true;
|
||||
}
|
||||
if (amt == 0) {
|
||||
player.getPacketDispatch().sendMessage("The crate is completely empty.");
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("The crate has " + amt + " banana " + (amt > 1 ? "s" : "") + "inside.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "fill":
|
||||
if (player.getSavedData().getGlobalData().isLuthasTask()) {
|
||||
int bananas = player.getInventory().getAmount(BANANA);
|
||||
if (bananas > 0) {
|
||||
player.getDialogueInterpreter().sendDialogue("You pack all your bananas into the crate.");
|
||||
if (player.getInventory().remove(new Item(BANANA.getId(), bananas))) {
|
||||
player.getSavedData().getGlobalData().setKaramjaBannanas(bananas + player.getSavedData().getGlobalData().getKaramjaBananas());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
player.getPacketDispatch().sendMessage("I don't know what goes in there.");
|
||||
}
|
||||
break;
|
||||
case "shake":
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
package core.game.interaction.item.withobject;
|
||||
|
||||
import core.game.interaction.NodeUsageEvent;
|
||||
import core.game.interaction.UseWithHandler;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.item.Item;
|
||||
import core.game.world.update.flag.context.Animation;
|
||||
import core.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
|
||||
/**
|
||||
* Represents the karamaja banna crate.
|
||||
* @author 'Vexia
|
||||
* @date 29/11/2013
|
||||
*/
|
||||
@Initializable
|
||||
public final class KaramajaBananaCrate extends UseWithHandler {
|
||||
|
||||
/**
|
||||
* Represents the banana item.
|
||||
*/
|
||||
private static final Item BANANA = new Item(1963);
|
||||
|
||||
/**
|
||||
* Represents the filling animation.
|
||||
*/
|
||||
private static final Animation ANIMATION = new Animation(832);
|
||||
|
||||
/**
|
||||
* Represents the cap of bannas to add.
|
||||
*/
|
||||
private static final int CAP = 10;
|
||||
|
||||
/**
|
||||
* Constructs a new {@code KaramajaBananaCrate} {@code Object}.
|
||||
*/
|
||||
public KaramajaBananaCrate() {
|
||||
super(1963, 431);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
addHandler(2072, OBJECT_TYPE, this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(NodeUsageEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (player.getSavedData().getGlobalData().isLuthasTask() && event.getUsedItem().getId() == 431) {
|
||||
if (player.getAttribute("stashed-rum", false)) {
|
||||
player.getPacketDispatch().sendMessage("There's already some rum in here...");
|
||||
return true;
|
||||
}
|
||||
if (player.getInventory().remove(event.getUsedItem())) {
|
||||
player.animate(ANIMATION);
|
||||
player.getDialogueInterpreter().sendDialogue("You stash the rum in the crate.");
|
||||
player.setAttribute("/save:stashed-rum", true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
final int current = player.getSavedData().getGlobalData().getKaramjaBananas();
|
||||
if (current == CAP) {
|
||||
player.getPacketDispatch().sendMessage("The crate is already full.");
|
||||
return true;
|
||||
}
|
||||
if (player.getInventory().remove(BANANA)) {
|
||||
player.getDialogueInterpreter().sendDialogue("You pack a banana into the crate.");
|
||||
player.getSavedData().getGlobalData().setKaramjaBannanas(current + 1);
|
||||
player.animate(ANIMATION);
|
||||
player.lock(2);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package rs09.game.interaction.item.withobject
|
||||
|
||||
import api.*
|
||||
import core.game.interaction.city.KaramajaOptionPlugin
|
||||
import core.game.node.item.Item
|
||||
import core.game.world.update.flag.context.Animation
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.Scenery
|
||||
import rs09.game.interaction.IntType
|
||||
import rs09.game.interaction.InteractionListener
|
||||
import kotlin.math.min
|
||||
|
||||
/**
|
||||
* Listener for Karamja banana crate interaction
|
||||
* @author Byte
|
||||
*/
|
||||
@Suppress("unused")
|
||||
class KaramjaBananaCrateListener : InteractionListener {
|
||||
|
||||
companion object {
|
||||
private const val CRATE_CAPACITY = 10
|
||||
|
||||
private val ANIMATION = Animation(832)
|
||||
}
|
||||
|
||||
override fun defineListeners() {
|
||||
onUseWith(IntType.SCENERY, Items.KARAMJAN_RUM_431, Scenery.CRATE_2072) { player, used, _ ->
|
||||
if (!player.savedData.globalData.isLuthasTask) {
|
||||
sendMessage(player, "I don't know what goes in there.")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
if (getAttribute(player, "stashed-rum", false)) {
|
||||
sendMessage(player, "There's already some rum in here...")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
if (!removeItem(player, used)) {
|
||||
return@onUseWith false
|
||||
}
|
||||
|
||||
lock(player, 2)
|
||||
animate(player, ANIMATION)
|
||||
sendDialogue(player, "You stash the rum in the crate.")
|
||||
setAttribute(player, "/save:stashed-rum", true)
|
||||
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
onUseWith(IntType.SCENERY, Items.BANANA_1963, Scenery.CRATE_2072) { player, used, _ ->
|
||||
if (!player.savedData.globalData.isLuthasTask) {
|
||||
sendMessage(player, "I don't know what goes in there.")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
val currNumBananasInCrate = player.savedData.globalData.karamjaBananas
|
||||
|
||||
if (currNumBananasInCrate >= CRATE_CAPACITY) {
|
||||
sendMessage(player, "The crate is already full.")
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
if (!removeItem(player, used)) {
|
||||
return@onUseWith false
|
||||
}
|
||||
|
||||
lock(player, 2)
|
||||
animate(player, ANIMATION)
|
||||
sendDialogue(player, "You pack a banana into the crate.")
|
||||
player.savedData.globalData.setKaramjaBannanas(currNumBananasInCrate + 1)
|
||||
|
||||
return@onUseWith true
|
||||
}
|
||||
|
||||
on(Scenery.CRATE_2072, IntType.SCENERY, "search") { player, _ ->
|
||||
if (!player.savedData.globalData.isLuthasTask) {
|
||||
sendMessage(player, "I don't know what goes in there.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
val currNumBananasInCrate = player.savedData.globalData.karamjaBananas
|
||||
|
||||
if (currNumBananasInCrate == 0) {
|
||||
sendMessage(player, "The crate is completely empty.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
if (currNumBananasInCrate >= CRATE_CAPACITY) {
|
||||
sendMessage(player, "The crate is full of bananas.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
sendMessage(player, "The crate has " + currNumBananasInCrate + " banana" + (if (currNumBananasInCrate > 1) "s" else "") + " inside.")
|
||||
|
||||
return@on true
|
||||
}
|
||||
|
||||
on(Scenery.CRATE_2072, IntType.SCENERY, "fill") { player, _ ->
|
||||
if (!player.savedData.globalData.isLuthasTask) {
|
||||
sendMessage(player, "I don't know what goes in there.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
val numBananas = amountInInventory(player, Items.BANANA_1963)
|
||||
val currNumBananasInCrate = player.savedData.globalData.karamjaBananas
|
||||
val bananasToBeAdded = min(numBananas, CRATE_CAPACITY - player.savedData.globalData.karamjaBananas)
|
||||
|
||||
if (numBananas == 0) {
|
||||
return@on true
|
||||
}
|
||||
|
||||
if (currNumBananasInCrate >= CRATE_CAPACITY) {
|
||||
sendMessage(player, "The crate is already full.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
if (!removeItem(player, Item(Items.BANANA_1963, bananasToBeAdded))) {
|
||||
return@on false
|
||||
}
|
||||
|
||||
lock(player, 2)
|
||||
animate(player, ANIMATION)
|
||||
sendMessage(player, "You pack all your bananas into the crate.")
|
||||
player.savedData.globalData.setKaramjaBannanas(player.savedData.globalData.karamjaBananas + bananasToBeAdded)
|
||||
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user