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
|
@Initializable
|
||||||
public final class KaramajaOptionPlugin extends OptionHandler {
|
public final class KaramajaOptionPlugin extends OptionHandler {
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the banana item.
|
|
||||||
*/
|
|
||||||
private static final Item BANANA = new Item(1963);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the pineapple item.
|
* Represents the pineapple item.
|
||||||
*/
|
*/
|
||||||
@@ -73,8 +68,6 @@ public final class KaramajaOptionPlugin extends OptionHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
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(2078).getHandlers().put("option:search", this);// random crate.
|
||||||
SceneryDefinition.forId(492).getHandlers().put("option:climb-down", this);// musa point rock
|
SceneryDefinition.forId(492).getHandlers().put("option:climb-down", this);// musa point rock
|
||||||
SceneryDefinition.forId(1764).getHandlers().put("option:climb", this);// musa dungeon rope
|
SceneryDefinition.forId(1764).getHandlers().put("option:climb", this);// musa dungeon rope
|
||||||
@@ -215,31 +208,6 @@ public final class KaramajaOptionPlugin extends OptionHandler {
|
|||||||
case 2078:
|
case 2078:
|
||||||
player.getPacketDispatch().sendMessage("There are no bananas left on the tree.");
|
player.getPacketDispatch().sendMessage("There are no bananas left on the tree.");
|
||||||
break;
|
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;
|
break;
|
||||||
case "shake":
|
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