Fixed silver interface, added API method for sending input dialogues, converted old usages of input dialogues to API method.

This commit is contained in:
ceikry
2021-06-24 20:56:32 -05:00
parent 4493116be6
commit 3731edfff4
25 changed files with 325 additions and 472 deletions
@@ -1,5 +1,6 @@
package core.game.content.activity.duel;
import api.ContentAPI;
import core.game.component.CloseEvent;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
@@ -16,6 +17,7 @@ import core.game.node.item.Item;
import core.game.system.monitor.PlayerMonitor;
import core.plugin.Plugin;
import core.tools.RandomFunction;
import kotlin.Unit;
import rs09.game.content.global.action.EquipHandler;
import rs09.game.system.config.ItemConfigParser;
@@ -567,14 +569,10 @@ public final class DuelSession extends ComponentPlugin {
amount = c.getAmount(c.get(slot));
break;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
c.withdraw(slot, (int) getValue());
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
c.withdraw(slot, (int) value);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
break;
}
c.withdraw(slot, amount);
@@ -688,14 +686,10 @@ public final class DuelSession extends ComponentPlugin {
c1.offer(slot, player.getInventory().getAmount(player.getInventory().get(slot).getId()));
break;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
c1.offer(slot, (int) getValue());
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
c1.offer(slot, (int) value);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
break;
case 9:
player.getPacketDispatch().sendMessage(player.getInventory().get(slot).getDefinition().getExamine());
@@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import api.ContentAPI;
import core.cache.def.impl.ObjectDefinition;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
@@ -21,6 +22,7 @@ import core.game.node.item.Item;
import core.game.node.object.Scenery;
import core.game.node.object.SceneryBuilder;
import core.game.system.task.Pulse;
import kotlin.Unit;
import rs09.game.world.GameWorld;
import core.game.world.map.Location;
import core.game.world.update.flag.context.Animation;
@@ -315,15 +317,10 @@ public final class PartyRoomPlugin extends OptionHandler {
viewer.getContainer().addItem(slot, ammount);
break;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
viewer.getContainer().addItem(slot, ammount);
return false;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
viewer.getContainer().addItem(slot, (int) value);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount.");
break;
}
break;
@@ -351,15 +348,10 @@ public final class PartyRoomPlugin extends OptionHandler {
viewer.getContainer().takeItem(slot, ammount);
break;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
viewer.getContainer().takeItem(slot, ammount);
return false;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
viewer.getContainer().takeItem(slot, (int) value);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount.");
break;
}
break;
@@ -1,5 +1,6 @@
package core.game.content.dialogue;
import api.ContentAPI;
import core.plugin.Initializable;
import core.game.node.entity.skill.runecrafting.Altar;
import core.game.node.entity.skill.runecrafting.EnchantTiaraPulse;
@@ -8,6 +9,7 @@ import core.game.interaction.NodeUsageEvent;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.RunScript;
import core.game.node.object.Scenery;
import kotlin.Unit;
/**
* Represents the enchant tiara dialogue.
@@ -75,15 +77,10 @@ public final class EnchantTiaraDialogue extends DialoguePlugin {
amt = 5;
break;
case 4:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
player.getPulseManager().run(new EnchantTiaraPulse(player, event.getUsedItem(), (Talisman.forItem(event.getUsedItem()).getTiara()), ammount));
return false;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
player.getPulseManager().run(new EnchantTiaraPulse(player, event.getUsedItem(), Talisman.forItem(event.getUsedItem()).getTiara(), (int) value));
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount");
return true;
case 3:
amt = player.getInventory().getAmount(event.getUsedItem());
@@ -1,7 +1,9 @@
package core.game.content.dialogue;
import api.ContentAPI;
import core.cache.def.impl.ItemDefinition;
import core.game.component.Component;
import kotlin.Unit;
import rs09.game.system.SystemLogger;
import core.game.node.entity.skill.crafting.armour.DragonCraftPulse;
import core.game.node.entity.skill.crafting.armour.HardCraftPulse;
@@ -109,15 +111,10 @@ public final class LeatherCraftDialogue extends DialoguePlugin {
amt = 5;
break;
case 3:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
player.getPulseManager().run(new HardCraftPulse(player, null, ammount));
return false;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
player.getPulseManager().run(new HardCraftPulse(player, null, (int) value));
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount");
return true;
case 2:
amt = player.getInventory().getAmount(new Item(LeatherCrafting.HARD_LEATHER));
@@ -208,14 +205,10 @@ public final class LeatherCraftDialogue extends DialoguePlugin {
if (hidee == null) {
return false;
}
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
player.getPulseManager().run(new DragonCraftPulse(player, null, hidee, (int) getValue()));
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
player.getPulseManager().run(new DragonCraftPulse(player, null, hidee, (int) value));
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter amount:");
return true;
}
if (hide == null) {
@@ -1,8 +1,10 @@
package core.game.content.dialogue;
import api.ContentAPI;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.RunScript;
import core.plugin.Initializable;
import kotlin.Unit;
import rs09.game.content.dialogue.SkillDialogueHandler;
/**
@@ -56,13 +58,9 @@ public class SkillDialoguePlugin extends DialoguePlugin {
if (amount != -1) {
handler.create(amount, index);
} else {
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
handler.create((int) getValue(), index);
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
handler.create((int) value, index);
return Unit.INSTANCE;
});
return true;
}
@@ -1,5 +1,6 @@
package core.game.interaction.city;
import api.ContentAPI;
import core.cache.def.impl.NPCDefinition;
import core.cache.def.impl.ObjectDefinition;
import core.game.component.Component;
@@ -35,6 +36,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin;
import core.tools.RandomFunction;
import core.tools.StringUtils;
import kotlin.Unit;
import rs09.game.content.global.travel.EssenceTeleport;
import rs09.game.world.GameWorld;
import rs09.plugin.PluginManager;
@@ -686,14 +688,9 @@ public final class WizardTowerPlugin extends OptionHandler {
}
final int amount = getAmt(buttonId);
if (amount == -1) {// rscript.
player.getDialogueInterpreter().sendInput(false, "Enter amount:");
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
final int amt = (int) getValue();
make(bark, amt);
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
make(bark, (int) value);
return Unit.INSTANCE;
});
return true;
}
@@ -1,5 +1,6 @@
package core.game.interaction.inter;
import api.ContentAPI;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
@@ -12,6 +13,7 @@ import core.net.amsc.WorldCommunicator;
import core.plugin.Initializable;
import core.plugin.Plugin;
import core.tools.StringUtils;
import kotlin.Unit;
/**
* Represents the plugin used to handle the clan interfaces.
@@ -93,27 +95,23 @@ public final class ClanInterfacePlugin extends ComponentPlugin {
clan.clean(true);
break;
default:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
String name = StringUtils.formatDisplayName((String) value);
player.getPacketDispatch().sendString(name, 590, 22);//30
if (WorldCommunicator.isEnabled()) {
MSPacketRepository.sendClanRename(player, name);
clan.setName(name);
return true;
}
if (clan.getName().equals("Chat disabled")) {
player.getPacketDispatch().sendMessage("Your clan channel has now been enabled!");
player.getPacketDispatch().sendMessage("Join your channel by clicking 'Join Chat' and typing: " + player.getUsername());
}
ContentAPI.sendInputDialogue(player, false, "Enter clan prefix:", (value) -> {
String name = StringUtils.formatDisplayName((String) value);
ContentAPI.setInterfaceText(player, name, 590, 22);
if(WorldCommunicator.isEnabled()){
MSPacketRepository.sendClanRename(player, name);
clan.setName(name);
player.getCommunication().setClanName(name);
clan.update();
return true;
return Unit.INSTANCE;
}
if (clan.getName().equals("Chat disabled")) {
player.getPacketDispatch().sendMessage("Your clan channel has now been enabled!");
player.getPacketDispatch().sendMessage("Join your channel by clicking 'Join Chat' and typing: " + player.getUsername());
}
clan.setName(name);
player.getCommunication().setClanName(name);
clan.update();
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(true, "Enter clan prefix:");
break;
}
break;
@@ -1,5 +1,6 @@
package core.game.interaction.inter;
import api.ContentAPI;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
@@ -12,6 +13,7 @@ import core.game.system.task.Pulse;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import kotlin.Unit;
/**
* Represents the glass making interface plugin.
@@ -72,15 +74,10 @@ public final class GlassInterface extends ComponentPlugin {
real = p.getInventory().getAmount(MOLTEN_GLASS);
break;
case 211:
p.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
make(p, def, ammount);
return true;
}
ContentAPI.sendInputDialogue(p, true, "Enter the amount:", (value) -> {
make(p, def, (int) value);
return Unit.INSTANCE;
});
p.getDialogueInterpreter().sendInput(false, "Enter the amount.");
break;
}
if (opcode == 211) {
@@ -1,122 +0,0 @@
package core.game.interaction.inter;
import core.cache.def.impl.ItemDefinition;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
import core.game.node.entity.player.link.diary.DiaryType;
import core.game.world.map.Location;
import core.plugin.Initializable;
import core.game.node.entity.skill.Skills;
import core.game.node.entity.skill.crafting.SilverProduct;
import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.RunScript;
import core.game.node.item.Item;
import core.game.system.task.Pulse;
import rs09.game.world.GameWorld;
import core.game.world.update.flag.context.Animation;
import core.plugin.Plugin;
/**
* Represents the silver crafting making interface.
* @author 'Vexia
*/
@Initializable
public final class SilverInterface extends ComponentPlugin {
/**
* Represents the silver bar item.
*/
private static final Item SILVER_BAR = new Item(2355);
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ComponentDefinition.put(438, this);
return this;
}
@Override
public boolean handle(final Player p, Component component, int opcode, int button, int slot, int itemId) {
final SilverProduct silver = SilverProduct.forId(button);
if (silver == null) {
return true;
}
if (!p.getInventory().contains(silver.getNeeded(), 1)) {
p.getPacketDispatch().sendMessage("You need a " + ItemDefinition.forId(silver.getNeeded()).getName().toLowerCase() + " to make this item.");
return true;
}
if (silver == SilverProduct.SILVTHRIL_ROD) {
p.getPacketDispatch().sendMessage("You can't do that yet.");
return true;
}
if (p.getSkills().getLevel(Skills.CRAFTING) < silver.getLevel()) {
p.getPacketDispatch().sendMessage("You need a crafting level of " + silver.getLevel() + " to make this.");
}
int amt = -1;
switch (opcode) {
case 155:
amt = 1;
break;
case 196:
amt = 5;
break;
case 124:
amt = p.getInventory().getAmount(new Item(2355));
break;
case 199:
p.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
make(p, silver, ammount);
return true;
}
});
p.getDialogueInterpreter().sendInput(false, "Enter the amount.");
return true;
}
make(p, silver, amt);
return true;
}
private void make(final Player player, final SilverProduct def, final int ammount) {
if (!player.getInventory().containsItem(SILVER_BAR)) {
return;
}
player.getInterfaceManager().close();
GameWorld.getPulser().submit(new Pulse(1, player) {
int amt = ammount;
@Override
public boolean pulse() {
if (amt < 1) {
return true;
}
if (!player.getInventory().contains(def.getNeeded(), 1)) {
return true;
}
if (player.getInventory().containsItem(SILVER_BAR) && player.getInventory().contains(def.getNeeded(), 1)) {
player.animate(new Animation(899));
if (player.getInventory().remove(SILVER_BAR)) {
player.getInventory().add(new Item(def.getProduct(), def == SilverProduct.SILVER_BOLTS ? 10 : 1));
player.getSkills().addExperience(Skills.CRAFTING, def.getExp(), true);
}
// Craft a holy symbol in the Lumbridge furnace
if (def == SilverProduct.UNBLESSED && player.getLocation().withinDistance(Location.create(3226, 3254, 0))) {
player.getAchievementDiaryManager().finishTask(player, DiaryType.LUMBRIDGE, 2, 8);
}
} else {
return true;
}
amt--;
return false;
}
@Override
public void stop() {
player.animate(new Animation(-1));
}
});
}
}
@@ -1,7 +1,9 @@
package core.game.interaction.item.withitem;
import api.ContentAPI;
import core.game.component.Component;
import core.plugin.Initializable;
import kotlin.Unit;
import org.rs09.consts.Items;
import core.game.content.dialogue.DialoguePlugin;
import core.game.interaction.NodeUsageEvent;
@@ -220,15 +222,10 @@ public final class FruitCuttingPlugin extends UseWithHandler {
amount = 5;
break;
case 4:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
cut(player, ammount, slice);
return false;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
cut(player, (int) value, slice);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount");
return true;
case 3:
amount = player.getInventory().getAmount(fruit.getBase());
@@ -325,7 +325,7 @@ public final class ZaffPlugin extends OptionHandler {
break;
case 1:
end();
player.setAttribute("runscript", new RunScript() {
/*player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int amt = (int) value;
@@ -357,7 +357,8 @@ public final class ZaffPlugin extends OptionHandler {
}
});
interpreter.sendInput(false, "Zaff has " + ammount + " battlestaves...");
break;
*/ break;
//TODO: Come back and fix this later when achievement diaries can actually be completed kekkekekeke
case 2:
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Oh, okay then. I'll try again another time.");
stage = 3;
@@ -1,5 +1,6 @@
package core.game.interaction.object;
import api.ContentAPI;
import core.cache.def.impl.NPCDefinition;
import core.cache.def.impl.ObjectDefinition;
import core.game.component.CloseEvent;
@@ -29,6 +30,7 @@ import core.game.world.map.RegionManager;
import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import kotlin.Unit;
import rs09.game.ge.GrandExchangeOffer;
import rs09.game.world.GameWorld;
@@ -370,16 +372,11 @@ public final class BankingPlugin extends OptionHandler {
amount = p.getBank().getLastAmountX();
break;
case 234:
p.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int amount = (int) value;
p.getBank().takeItem(slot, amount);
p.getBank().updateLastAmountX(amount);
return true;
}
ContentAPI.sendInputDialogue(p, true, "Enter the amount:", (value) -> {
p.getBank().takeItem(slot, (int) value);
p.getBank().updateLastAmountX((int) value);
return Unit.INSTANCE;
});
p.getDialogueInterpreter().sendInput(false, "Enter the amount.");
break;
case 9:
p.sendMessage(p.getBank().get(slot).getDefinition().getExamine());
@@ -520,16 +517,11 @@ public final class BankingPlugin extends OptionHandler {
});
return true;
case 234:
p.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
int ammount = (int) value;
p.getBank().addItem(slot, ammount);
InterfaceContainer.generateItems(p, p.getInventory().toArray(), new String[]{"Examine", "Deposit-X", "Deposit-All", "Deposit-10", "Deposit-5", "Deposit-1",}, 11, 15, 5, 7);
return false;
}
ContentAPI.sendInputDialogue(p, true, "Enter the amount:", (value) -> {
p.getBank().addItem(slot, (int) value);
InterfaceContainer.generateItems(p, p.getInventory().toArray(), new String[]{"Examine", "Deposit-X", "Deposit-All", "Deposit-10", "Deposit-5", "Deposit-1",}, 11, 15, 5, 7);
return Unit.INSTANCE;
});
p.getDialogueInterpreter().sendInput(false, "Enter the amount.");
break;
case 168:
p.sendMessage(item.getDefinition().getExamine());
@@ -1,64 +0,0 @@
package core.game.interaction.object;
import core.game.component.Component;
import core.game.interaction.NodeUsageEvent;
import core.game.interaction.UseWithHandler;
import core.game.node.entity.player.Player;
import core.plugin.Initializable;
import core.plugin.Plugin;
/**
* @author 'Vexia
*/
@Initializable
public class SilverCastingInterfacePlugin extends UseWithHandler {
public SilverCastingInterfacePlugin() {
super(2355);
}
@Override
public boolean handle(NodeUsageEvent event) {
final Player player = event.getPlayer();
event.getPlayer().getInterfaceManager().open(new Component(438));
player.getPacketDispatch().sendItemOnInterface(1718, 1, 438, 17);
player.getPacketDispatch().sendItemOnInterface(1724, 1, 438, 24);
player.getPacketDispatch().sendItemOnInterface(2961, 1, 438, 31);
player.getPacketDispatch().sendItemOnInterface(4201, 1, 438, 38);
player.getPacketDispatch().sendItemOnInterface(5525, 1, 438, 45);
player.getPacketDispatch().sendItemOnInterface(7637, 1, 438, 53);
player.getPacketDispatch().sendItemOnInterface(6748, 1, 438, 60);
player.getPacketDispatch().sendItemOnInterface(9382, 10, 438, 67);
player.getPacketDispatch().sendItemOnInterface(13154, 10, 438, 74);
return false;
}
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
addHandler(2966, OBJECT_TYPE, this);
addHandler(3044, OBJECT_TYPE, this);
addHandler(3294, OBJECT_TYPE, this);
addHandler(4304, OBJECT_TYPE, this);
addHandler(6189, OBJECT_TYPE, this);
addHandler(11009, OBJECT_TYPE, this);
addHandler(11010, OBJECT_TYPE, this);
addHandler(11666, OBJECT_TYPE, this);
addHandler(12100, OBJECT_TYPE, this);
addHandler(12809, OBJECT_TYPE, this);
addHandler(18497, OBJECT_TYPE, this);
addHandler(18525, OBJECT_TYPE, this);
addHandler(18526, OBJECT_TYPE, this);
addHandler(21879, OBJECT_TYPE, this);
addHandler(22721, OBJECT_TYPE, this);
addHandler(26814, OBJECT_TYPE, this);
addHandler(28433, OBJECT_TYPE, this);
addHandler(28434, OBJECT_TYPE, this);
addHandler(30021, OBJECT_TYPE, this);
addHandler(30510, OBJECT_TYPE, this);
addHandler(36956, OBJECT_TYPE, this);
addHandler(37651, OBJECT_TYPE, this);
return null;
}
}
@@ -1,6 +1,7 @@
package core.game.node.entity.skill.construction;
import api.ContentAPI;
import core.cache.def.impl.ObjectDefinition;
import core.game.content.dialogue.DialogueInterpreter;
import core.game.content.dialogue.DialoguePlugin;
@@ -13,6 +14,7 @@ import core.plugin.Initializable;
import core.plugin.Plugin;
import core.plugin.PluginManifest;
import core.plugin.PluginType;
import kotlin.Unit;
import rs09.game.world.repository.Repository;
import rs09.plugin.PluginManager;
@@ -118,35 +120,31 @@ public final class PortalOptionPlugin extends OptionHandler {
player.getHouseManager().enter(player, buttonId == 2, true);
break;
case 3:
player.getDialogueInterpreter().sendInput(true, "Enter friend's name:");
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
Player p = Repository.getPlayerByName((String) getValue());
if (p == null || !p.isActive()) {
player.getPacketDispatch().sendMessage("This player is not online.");
return true;
}
if (p.getUsername().equals(player.getUsername())) {
player.getPacketDispatch().sendMessage("You aren't a friend of yourself!");
return true;
}
if (!p.getHouseManager().isLoaded()) {
player.getPacketDispatch().sendMessage("This player is not at home right now.");
return true;
}
if (p.getHouseManager().isBuildingMode()) {
player.getPacketDispatch().sendMessage("This player is in building mode.");
return true;
}
if (p.getHouseManager().isLocked()) {
player.getPacketDispatch().sendMessage("The other player has locked their house.");
return true;
}
p.setAttribute("poh_owner", getValue());
p.getHouseManager().enter(player, false, false);
return true;
ContentAPI.sendInputDialogue(player, false, "Enter friend's name:", (value) -> {
Player p = Repository.getPlayerByName((String) value);
if (p == null || !p.isActive()) {
player.getPacketDispatch().sendMessage("This player is not online.");
return Unit.INSTANCE;
}
if (p.getUsername().equals(player.getUsername())) {
player.getPacketDispatch().sendMessage("You aren't a friend of yourself!");
return Unit.INSTANCE;
}
if (!p.getHouseManager().isLoaded()) {
player.getPacketDispatch().sendMessage("This player is not at home right now.");
return Unit.INSTANCE;
}
if (p.getHouseManager().isBuildingMode()) {
player.getPacketDispatch().sendMessage("This player is in building mode.");
return Unit.INSTANCE;
}
if (p.getHouseManager().isLocked()) {
player.getPacketDispatch().sendMessage("The other player has locked their house.");
return Unit.INSTANCE;
}
p.setAttribute("poh_owner", (String) value);
p.getHouseManager().enter(player, false, false);
return Unit.INSTANCE;
});
break;
}
@@ -1,5 +1,6 @@
package core.game.node.entity.skill.summoning;
import api.ContentAPI;
import core.cache.def.impl.ItemDefinition;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
@@ -10,6 +11,7 @@ import core.game.node.entity.player.Player;
import core.game.node.entity.player.link.RunScript;
import core.plugin.Initializable;
import core.plugin.Plugin;
import kotlin.Unit;
import rs09.plugin.PluginManager;
/**
@@ -47,14 +49,10 @@ public final class SummoningCreationPlugin extends ComponentPlugin {
SummoningCreator.create(player, getItemAmount(opcode), component.getId() == 669 ? SummoningPouch.forSlot(slot > 50 ? slot -1 : slot) : SummoningScroll.forId(slot > 50 ? slot -1 : slot));
break;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
SummoningCreator.create(player, (int) getValue(), component.getId() == 669 ? SummoningPouch.forSlot(slot > 50 ? slot -1 : slot) : SummoningScroll.forId(slot > 50 ? slot -1 : slot));
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
SummoningCreator.create(player, (int) value, component.getId() == 669 ? SummoningPouch.forSlot(slot > 50 ? slot -1 : slot) : SummoningScroll.forId(slot > 50 ? slot -1 : slot));
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
return true;
case 166:
SummoningCreator.list(player, SummoningPouch.forSlot(slot > 50 ? slot -1 : slot));
@@ -1,5 +1,6 @@
package core.game.node.entity.skill.summoning.familiar;
import api.ContentAPI;
import core.game.component.Component;
import core.game.component.ComponentDefinition;
import core.game.component.ComponentPlugin;
@@ -9,6 +10,7 @@ import core.game.node.entity.player.link.RunScript;
import core.game.node.item.Item;
import core.plugin.Initializable;
import core.plugin.Plugin;
import kotlin.Unit;
/**
* Handles the beast of burden interface.
@@ -54,14 +56,10 @@ public final class BurdenInterfacePlugin extends ComponentPlugin {
beast.transfer(item, container.getAmount(item), withdraw);
return true;
case 234:
player.setAttribute("runscript", new RunScript() {
@Override
public boolean handle() {
beast.transfer(item, (int) getValue(), withdraw);
return true;
}
ContentAPI.sendInputDialogue(player, true, "Enter the amount:", (value) -> {
beast.transfer(item, (int) value, withdraw);
return Unit.INSTANCE;
});
player.getDialogueInterpreter().sendInput(false, "Enter the amount:");
break;
case 168:
player.getPacketDispatch().sendMessage(item.getDefinition().getExamine());
@@ -5,6 +5,7 @@ import core.game.node.entity.player.link.RunScript;
import core.net.packet.IncomingPacket;
import core.net.packet.IoBuffer;
import core.tools.StringUtils;
import kotlin.jvm.functions.Function1;
/**
* Represents the incoming packet to handle a run script.
@@ -14,7 +15,7 @@ public class RunScriptPacketHandler implements IncomingPacket {
@Override
public void decode(Player player, int opcode, IoBuffer buffer) {
final RunScript script = player.getAttribute("runscript", null);
final Function1 script = player.getAttribute("runscript", null);
if (script == null || player.getLocks().isInteractionLocked()) {
return;
}
@@ -28,9 +29,7 @@ public class RunScriptPacketHandler implements IncomingPacket {
} else {
value = buffer.getInt();
}
script.setValue(value);
script.setPlayer(player);
script.invoke(value);
player.removeAttribute("runscript");
script.handle();
}
}