WorkForOptionHandler.kt -> WorkForOptionListener.kt

Added ability to open DialogueFiles straight from the interpreter. EnchantedJewelleryPlugin.java -> EnchantedJewelleryListener.kt and moved jewellery dialogue to DialogueFile EnchantedJewelleryDialogueFile.kt
This commit is contained in:
Ceikry
2021-03-11 19:49:20 -06:00
parent cd9165c818
commit 89d51b788b
3 changed files with 108 additions and 120 deletions
@@ -1,136 +1,121 @@
package core.game.content.global.action; package core.game.content.global.action
import core.game.container.impl.EquipmentContainer; import core.game.world.GameWorld.ticks
import core.tools.Items; import core.game.interaction.OptionHandler
import core.game.interaction.OptionHandler; import core.plugin.Plugin
import core.game.node.Node; import core.game.world.GameWorld
import core.game.node.entity.combat.equipment.WeaponInterface; import core.game.world.map.zone.ZoneBorders
import core.game.node.entity.lock.Lock; import core.game.node.entity.player.link.diary.DiaryType
import core.game.node.entity.player.Player; import core.game.system.config.ItemConfigParser
import core.game.node.entity.player.link.audio.Audio; import core.game.node.entity.combat.equipment.WeaponInterface
import core.game.node.entity.player.link.diary.DiaryType; import core.game.content.global.action.EquipHandler
import core.game.node.item.Item; import core.game.node.entity.player.link.audio.Audio
import core.game.system.config.ItemConfigParser; import core.game.container.impl.EquipmentContainer
import core.game.world.GameWorld; import core.game.interaction.OptionListener
import core.game.world.map.zone.ZoneBorders; import core.game.node.Node
import core.plugin.Plugin; import core.game.node.entity.player.Player
import core.game.node.item.Item
import core.tools.Items
/** /**
* Represents the equipment equipping handler plugin. * Represents the equipment equipping handler plugin.
* @author Ceikry * @author Ceikry
* @author Woah * @author Woah
*
*/ */
public class EquipHandler extends OptionHandler { class EquipHandler : OptionListener() {
/** override fun defineListeners() {
* Represents the singleton.
*/
public static final EquipHandler SINGLETON = new EquipHandler();
/** on("equip",ITEM){player,node ->
* The sound to send. val item = node.asItem()
*/
private static final Audio DEFAULT = new Audio(2242, 1, 0);
/** if(item == null || player.inventory[item.slot] != item){
* Constructs a new {@code EquipHandler} {@code Object}. return@on true
*/ }
public EquipHandler() {
super();
}
@Override val equipStateListener = item.definition.getConfiguration<Plugin<Any>>("equipment", null)
public Plugin<Object> newInstance(Object arg) throws Throwable { if(equipStateListener != null){
return this; val bool = equipStateListener.fireEvent("equip",player,item)
} if(bool != true){
return@on true
}
}
@Override val lock = player.locks.equipmentLock
public boolean handle(final Player player, Node node, String option) { if (lock != null && lock.isLocked) {
final Item item = ((Item) node); if (lock.message != null) {
if (item == null || player.getInventory().get(item.getSlot()) != item) { player.packetDispatch.sendMessage(lock.message)
return true; }
} return@on true
Plugin<Object> plugin = item.getDefinition().getConfiguration("equipment", null); }
if (plugin != null) { player.setAttribute("equipLock:" + item.id, ticks + 2)
Boolean bool = (Boolean) plugin.fireEvent("equip", player, item);
if (bool != null && !bool) {
return true;
}
}
Lock lock = player.getLocks().getEquipmentLock();
if (lock != null && lock.isLocked()) {
if (lock.getMessage() != null) {
player.getPacketDispatch().sendMessage(lock.getMessage());
}
return true;
}
player.setAttribute("equipLock:" + item.getId(), GameWorld.getTicks() + 2);
if (player.getEquipment().add(item, item.getSlot(), true, true)) {
//check if a brawling glove is being equipped and register it
if(item.getId() >= 13845 && item.getId() <= 13857) {
player.debug("Registering gloves... ID: " + item.getId());
player.getBrawlingGlovesManager().registerGlove(item.getId());
}
if (item.getId() == Items.BLACK_CHAINBODY_1107 if (player.equipment.add(item, item.slot, true, true)) {
&& player.getAttribute("diary:falador:black-chain-bought", false) //check if a brawling glove is being equipped and register it
&& new ZoneBorders(2969, 3310, 2975, 3314, 0).insideBorder(player)) { if (item.id in 13845..13857) {
player.getAchievementDiaryManager().finishTask(player,DiaryType.FALADOR, 0, 2); player.debug("Registering gloves... ID: " + item.id)
} player.brawlingGlovesManager.registerGlove(item.id)
}
if (item.id == Items.BLACK_CHAINBODY_1107 && player.getAttribute("diary:falador:black-chain-bought", false)
&& ZoneBorders(2969, 3310, 2975, 3314, 0).insideBorder(player)
) {
player.achievementDiaryManager.finishTask(player, DiaryType.FALADOR, 0, 2)
}
player.dialogueInterpreter.close()
player.audioManager.send(item.definition.getConfiguration(ItemConfigParser.EQUIP_AUDIO, 2244))
if (player.properties.autocastSpell != null) {
player.properties.autocastSpell = null
val wif = player.getExtension<WeaponInterface>(WeaponInterface::class.java)
wif.selectAutoSpell(-1, true)
wif.openAutocastSelect()
}
}
return@on true
}
player.getDialogueInterpreter().close();
player.getAudioManager().send(item.getDefinition().getConfiguration(ItemConfigParser.EQUIP_AUDIO, 2244));
if(player.getProperties().getAutocastSpell() != null) {
player.getProperties().setAutocastSpell(null);
WeaponInterface wif = player.getExtension(WeaponInterface.class);
wif.selectAutoSpell(-1, true);
wif.openAutocastSelect();
}
}
return true;
}
/** }
* Unequips an item.
* @param player the player. companion object {
* @param slot the slot. /**
* @param itemId the item id. * Unequips an item.
*/ * @param player the player.
public static void unequip(Player player, int slot, int itemId) { * @param slot the slot.
if (slot < 0 || slot > 13) { * @param itemId the item id.
return; */
} @JvmStatic
Item item = player.getEquipment().get(slot); fun unequip(player: Player, slot: Int, itemId: Int) {
if (item == null) { if (slot < 0 || slot > 13) {
return; return
} }
Lock lock = player.getLocks().getEquipmentLock(); val item = player.equipment[slot] ?: return
if (lock != null && lock.isLocked()) { val lock = player.locks.equipmentLock
if (lock.getMessage() != null) { if (lock != null && lock.isLocked) {
player.getPacketDispatch().sendMessage(lock.getMessage()); if (lock.message != null) {
} player.packetDispatch.sendMessage(lock.message)
return; }
} return
if (slot == EquipmentContainer.SLOT_WEAPON) { }
player.getPacketDispatch().sendString("", 92, 0); if (slot == EquipmentContainer.SLOT_WEAPON) {
} player.packetDispatch.sendString("", 92, 0)
int maximumAdd = player.getInventory().getMaximumAdd(item); }
if (maximumAdd < item.getAmount()) { val maximumAdd = player.inventory.getMaximumAdd(item)
player.getPacketDispatch().sendMessage("Not enough free space in your inventory."); if (maximumAdd < item.amount) {
return; player.packetDispatch.sendMessage("Not enough free space in your inventory.")
} return
Plugin<Object> plugin = item.getDefinition().getConfiguration("equipment", null); }
if (plugin != null) { val plugin = item.definition.getConfiguration<Plugin<Any>>("equipment", null)
if (!(boolean) plugin.fireEvent("unequip", player, item)) { if (plugin != null) {
return; if (!(plugin.fireEvent("unequip", player, item) as Boolean)) {
} return
} }
if (player.getEquipment().remove(item)) { }
player.getAudioManager().send(new Audio(2238, 10, 1)); if (player.equipment.remove(item)) {
player.getDialogueInterpreter().close(); player.audioManager.send(Audio(2238, 10, 1))
player.getInventory().add(item); player.dialogueInterpreter.close()
} player.inventory.add(item)
} }
}
}
} }
@@ -14,4 +14,7 @@ abstract class OptionListener {
fun on(ids: IntArray, type: Int, vararg option: String, handler: (Player, Node) -> Boolean){ fun on(ids: IntArray, type: Int, vararg option: String, handler: (Player, Node) -> Boolean){
Listeners.add(ids,type,option,handler) Listeners.add(ids,type,option,handler)
} }
fun on(option: String, type: Int, handler: (Player, Node) -> Boolean){
Listeners.add(option,type,handler)
}
} }
@@ -81,7 +81,7 @@ public final class EquipmentInterface extends ComponentPlugin {
GameWorld.getPulser().submit(new Pulse(1, p) { GameWorld.getPulser().submit(new Pulse(1, p) {
@Override @Override
public boolean pulse() { public boolean pulse() {
EquipHandler.SINGLETON.handle(p, item, "equip"); Listeners.run(item.getId(),0,"equip",p, item);
return true; return true;
} }
}); });