From 2f38f3dce01482cbb2dd211152817cb2a26882eb Mon Sep 17 00:00:00 2001 From: Avi Weinstock Date: Thu, 7 Jul 2022 08:03:55 +0000 Subject: [PATCH] Converted SummoningTabPlugin to SummoningTabListener Implemented "Dismiss now" for familiars --- .../skill/summoning/SummoningTabPlugin.java | 77 ------------------- .../skill/summoning/SummoningTabListener.kt | 60 +++++++++++++++ 2 files changed, 60 insertions(+), 77 deletions(-) delete mode 100644 Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTabPlugin.java create mode 100644 Server/src/main/kotlin/rs09/game/node/entity/skill/summoning/SummoningTabListener.kt diff --git a/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTabPlugin.java b/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTabPlugin.java deleted file mode 100644 index 22792835c..000000000 --- a/Server/src/main/java/core/game/node/entity/skill/summoning/SummoningTabPlugin.java +++ /dev/null @@ -1,77 +0,0 @@ -package core.game.node.entity.skill.summoning; - -import core.game.component.Component; -import core.game.component.ComponentDefinition; -import core.game.component.ComponentPlugin; -import core.game.node.entity.skill.summoning.familiar.BurdenBeast; -import core.game.node.entity.skill.summoning.familiar.FamiliarSpecial; -import core.game.node.entity.player.Player; -import core.plugin.Initializable; -import core.plugin.Plugin; - -/** - * Represents the component plugin handler for the summoning tab. - * @author 'Vexia - * @version 1.0 - */ -@Initializable -public final class SummoningTabPlugin extends ComponentPlugin { - - @Override - public Plugin newInstance(Object arg) throws Throwable { - ComponentDefinition.put(662, this); - return this; - } - - @Override - public boolean handle(Player player, Component component, int opcode, int button, int slot, int itemId) { - switch (button) { - case 51: - if (player.getFamiliarManager().hasFamiliar()) { - player.getFamiliarManager().getFamiliar().call(); - } else { - player.getPacketDispatch().sendMessage("You don't have a follower."); - } - break; - case 67: - if (player.getFamiliarManager().hasFamiliar()) { - if (!player.getFamiliarManager().getFamiliar().isBurdenBeast()) { - player.getPacketDispatch().sendMessage("Your familiar is not a beast of burden."); - break; - } - BurdenBeast beast = (BurdenBeast) player.getFamiliarManager().getFamiliar(); - if (beast.getContainer().isEmpty()) { - player.getPacketDispatch().sendMessage("Your familiar is not carrying any items."); - break; - } - beast.withdrawAll(); - break; - } - player.getPacketDispatch().sendMessage("You don't have a follower."); - break; - case 53: - if (player.getFamiliarManager().hasFamiliar()) { - player.getDialogueInterpreter().open("dismiss_dial"); - } else { - player.getPacketDispatch().sendMessage("You don't have a follower."); - } - break; - case 113: - case 101: - case 117: - case 163: - case 151: - case 83: - case 75: - default: - if (player.getFamiliarManager().hasFamiliar()) { - player.getFamiliarManager().getFamiliar().executeSpecialMove(new FamiliarSpecial(player)); - } else { - player.getPacketDispatch().sendMessage("You don't have a follower."); - } - break; - } - return true; - } - -} diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/summoning/SummoningTabListener.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/summoning/SummoningTabListener.kt new file mode 100644 index 000000000..b89efffb8 --- /dev/null +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/summoning/SummoningTabListener.kt @@ -0,0 +1,60 @@ +import core.game.component.Component +import core.game.component.ComponentDefinition +import core.game.node.entity.skill.summoning.familiar.BurdenBeast +import core.game.node.entity.skill.summoning.familiar.FamiliarSpecial +import core.game.node.entity.player.Player +import rs09.game.interaction.InterfaceListener + +class SummoningTabListener : InterfaceListener { + override fun defineInterfaceListeners() { + on(662) { player, _, opcode, buttonID, _, _ -> + when(buttonID) { + 51 -> { + if (player.getFamiliarManager().hasFamiliar()) { + player.getFamiliarManager().getFamiliar().call() + } else { + player.getPacketDispatch().sendMessage("You don't have a follower.") + } + } + 67 -> { + if (player.getFamiliarManager().hasFamiliar()) { + if (!player.getFamiliarManager().getFamiliar().isBurdenBeast()) { + player.getPacketDispatch().sendMessage("Your familiar is not a beast of burden.") + return@on true + } + val beast = player.getFamiliarManager().getFamiliar() as BurdenBeast; + if (beast.getContainer().isEmpty()) { + player.getPacketDispatch().sendMessage("Your familiar is not carrying any items.") + return@on true + } + beast.withdrawAll(); + return@on true + } + player.getPacketDispatch().sendMessage("You don't have a follower."); + } + 53 -> { + if (player.getFamiliarManager().hasFamiliar()) { + if(opcode == 155) { + // Dismiss familiar + player.getDialogueInterpreter().open("dismiss_dial"); + } else if(opcode == 196) { + // Dismiss now + player.getFamiliarManager().dismiss(false); + } + } else { + player.getPacketDispatch().sendMessage("You don't have a follower."); + } + } + else -> { + if (player.getFamiliarManager().hasFamiliar()) { + player.getFamiliarManager().getFamiliar().executeSpecialMove(FamiliarSpecial(player)); + } else { + player.getPacketDispatch().sendMessage("You don't have a follower."); + } + } + } + return@on true + } + } +} +