Converted SummoningTabPlugin to SummoningTabListener

Implemented "Dismiss now" for familiars
This commit is contained in:
Avi Weinstock 2022-07-07 08:03:55 +00:00 committed by Ryan
parent b2763a5586
commit 2f38f3dce0
2 changed files with 60 additions and 77 deletions

View file

@ -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<Object> 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;
}
}

View file

@ -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
}
}
}