Rewrote hunter kit spell in kotlin
This commit is contained in:
@@ -1,97 +0,0 @@
|
|||||||
package content.global.skill.magic.lunar;
|
|
||||||
|
|
||||||
import core.cache.def.impl.ItemDefinition;
|
|
||||||
import core.plugin.Initializable;
|
|
||||||
import core.game.node.entity.combat.spell.MagicSpell;
|
|
||||||
import core.game.node.entity.combat.spell.Runes;
|
|
||||||
import core.game.interaction.OptionHandler;
|
|
||||||
import core.game.node.Node;
|
|
||||||
import core.game.node.entity.Entity;
|
|
||||||
import core.game.node.entity.combat.spell.SpellType;
|
|
||||||
import core.game.node.entity.player.Player;
|
|
||||||
import core.game.node.entity.player.link.SpellBookManager.SpellBook;
|
|
||||||
import core.game.node.item.Item;
|
|
||||||
import core.game.world.update.flag.context.Animation;
|
|
||||||
import core.game.world.update.flag.context.Graphics;
|
|
||||||
import core.plugin.Plugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the hunter kit spell.
|
|
||||||
* @author 'Vexia
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
@Initializable
|
|
||||||
public final class HunterKitSpell extends MagicSpell {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the hunter kit.
|
|
||||||
*/
|
|
||||||
private static final Item KIT = new Item(11159);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the animation of this graphics.
|
|
||||||
*/
|
|
||||||
private static final Animation ANIMATION = new Animation(6303);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Repesents the graphick, next spells of this spell.
|
|
||||||
*/
|
|
||||||
private static final Graphics GRAPHIC = new Graphics(1074);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new {@code CureOtherSpell} {@code Object}.
|
|
||||||
*/
|
|
||||||
public HunterKitSpell() {
|
|
||||||
super(SpellBook.LUNAR, 71, 70, null, null, null, new Item[] { new Item(Runes.ASTRAL_RUNE.getId(), 2), new Item(Runes.EARTH_RUNE.getId(), 2) });
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Plugin<SpellType> newInstance(SpellType arg) throws Throwable {
|
|
||||||
SpellBook.LUNAR.register(8, this);
|
|
||||||
ItemDefinition.forId(KIT.getId()).getHandlers().put("option:open", new OptionHandler() {
|
|
||||||
@Override
|
|
||||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handle(Player player, Node node, String option) {
|
|
||||||
if (player.getInventory().freeSlots() < 7) {
|
|
||||||
player.getPacketDispatch().sendMessage("You don't have enough inventory space.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (player.getInventory().remove((Item) node)) {
|
|
||||||
player.getInventory().add(new Item[] { new Item(10150), new Item(10010), new Item(10006), new Item(10031), new Item(10029), new Item(596), new Item(10008) });
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isWalk() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean cast(Entity entity, Node target) {
|
|
||||||
Player p = (Player) entity;
|
|
||||||
if (p.getInventory().freeSlots() == 0) {
|
|
||||||
p.getPacketDispatch().sendMessage("Not enough inventory space!");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!meetsRequirements(entity, true, true)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (p.getInventory().add(KIT)) {
|
|
||||||
p.lock(5);
|
|
||||||
p.animate(ANIMATION);
|
|
||||||
p.graphics(GRAPHIC);
|
|
||||||
p.getAudioManager().send(3615, 1, 1);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
package content.global.skill.magic.lunar
|
package content.global.skill.magic.lunar
|
||||||
|
|
||||||
|
import core.api.*
|
||||||
|
import core.game.interaction.IntType
|
||||||
|
import core.game.interaction.InteractionListener
|
||||||
|
import core.game.node.item.Item
|
||||||
import core.game.world.update.flag.context.Animation
|
import core.game.world.update.flag.context.Animation
|
||||||
import core.game.world.update.flag.context.Graphics
|
import core.game.world.update.flag.context.Graphics
|
||||||
import org.rs09.consts.Items
|
import org.rs09.consts.Items
|
||||||
@@ -17,7 +21,7 @@ val CURE_ME_ANIM = Animation(4411)
|
|||||||
val CURE_GROUP_ANIM = Animation(4409)
|
val CURE_GROUP_ANIM = Animation(4409)
|
||||||
val CURE_OTHER_ANIM = Animation(4411)
|
val CURE_OTHER_ANIM = Animation(4411)
|
||||||
val ENERGY_TRANSFER_ANIM = Animation(4411)
|
val ENERGY_TRANSFER_ANIM = Animation(4411)
|
||||||
|
val HUNTER_KIT_ANIM = Animation(6303)
|
||||||
|
|
||||||
// Graphics
|
// Graphics
|
||||||
val BAKE_PIE_GFX = Graphics(746,75)
|
val BAKE_PIE_GFX = Graphics(746,75)
|
||||||
@@ -32,6 +36,31 @@ val CURE_ME_GFX = Graphics(731, 90)
|
|||||||
val CURE_GROUP_GFX = Graphics(751, 130)
|
val CURE_GROUP_GFX = Graphics(751, 130)
|
||||||
val CURE_OTHER_GFX = Graphics(738, 130)
|
val CURE_OTHER_GFX = Graphics(738, 130)
|
||||||
val ENERGY_TRANSFER_GFX = Graphics(738, 90)
|
val ENERGY_TRANSFER_GFX = Graphics(738, 90)
|
||||||
|
val HUNTER_KIT_GFX = Graphics(1024)
|
||||||
|
|
||||||
|
private val HunterKitContents = intArrayOf(
|
||||||
|
Items.NOOSE_WAND_10150,
|
||||||
|
Items.BUTTERFLY_NET_10010,
|
||||||
|
Items.BIRD_SNARE_10006,
|
||||||
|
Items.RABBIT_SNARE_10031,
|
||||||
|
Items.TEASING_STICK_10029,
|
||||||
|
Items.UNLIT_TORCH_596,
|
||||||
|
Items.BOX_TRAP_10008
|
||||||
|
)
|
||||||
|
|
||||||
|
class HunterKitInteraction : InteractionListener {
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(Items.HUNTER_KIT_11159, IntType.ITEM, "open") { player, _ ->
|
||||||
|
if(freeSlots(player) < 6) sendMessage(player, "You don't have enough inventory space.").also { return@on false }
|
||||||
|
if(removeItem(player, Items.HUNTER_KIT_11159)) {
|
||||||
|
for(item in HunterKitContents) {
|
||||||
|
addItemOrDrop(player, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
||||||
GOLD(Items.GOLD_AMULET_1673, Items.GOLD_AMULET_1692),
|
GOLD(Items.GOLD_AMULET_1673, Items.GOLD_AMULET_1692),
|
||||||
@@ -55,3 +84,4 @@ enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -188,6 +188,11 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
|||||||
onCast(Lunar.ENERGY_TRANSFER, PLAYER) { player, node ->
|
onCast(Lunar.ENERGY_TRANSFER, PLAYER) { player, node ->
|
||||||
node?.let { energyTransfer(player, node) }
|
node?.let { energyTransfer(player, node) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onCast(Lunar.HUNTER_KIT, NONE) { player, _ ->
|
||||||
|
if(freeSlots(player) == 0) sendMessage(player, "Not enough inventory space!").also { return@onCast }
|
||||||
|
hunterKit(player)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lunar spellbook-related debug commands
|
// Lunar spellbook-related debug commands
|
||||||
@@ -581,6 +586,16 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
|||||||
removeRunes(player, true)
|
removeRunes(player, true)
|
||||||
addXP(player, 100.0)
|
addXP(player, 100.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun hunterKit(player: Player) {
|
||||||
|
requires(player, 71, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.EARTH_RUNE_557, 2)))
|
||||||
|
removeRunes(player, true)
|
||||||
|
if(addItem(player, Items.HUNTER_KIT_11159)) {
|
||||||
|
visualizeSpell(player, HUNTER_KIT_ANIM, HUNTER_KIT_GFX, 3615)
|
||||||
|
addXP(player, 70.0)
|
||||||
|
setDelay(player, 2)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user