Refactored lunar spellbook code
Rewrote humidify spell
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package content.global.skill.magic
|
||||
|
||||
import core.api.playAudio
|
||||
import core.api.playGlobalAudio
|
||||
import core.api.setAttribute
|
||||
import core.cache.def.impl.ItemDefinition
|
||||
import core.game.node.Node
|
||||
@@ -73,11 +74,38 @@ abstract class SpellListener(val bookName: String) : Listener {
|
||||
player.skills.addExperience(Skills.MAGIC,amount)
|
||||
}
|
||||
|
||||
fun visualizeSpell(player: Player,anim:Animation,gfx: Graphics,soundID: Int = -1){
|
||||
/**
|
||||
* @param player The player to visualize the spell on
|
||||
* @param anim The animation object. I.e. Animation(Animations.LUNAR_SPELLBOOK_*)
|
||||
* @param gfx The graphics object. I.e. Graphics(Graphics.LUNAR_SPELLBOOK_*, height in int)
|
||||
* @param soundID The sound to play, either raw integer or from the Sounds ConstLib. Defaults to -1 (Nothing).
|
||||
* @param delay The delay that should be applied before the sound plays, defaults to 0.
|
||||
* @param global Whether the sound should be played globally instead of per-player. Defaults to true.
|
||||
*/
|
||||
fun visualizeSpell(player: Player, anim: Animation, gfx: Graphics, soundID: Int = -1, delay: Int = 0, global: Boolean = true){
|
||||
if(player.getAttribute("tablet-spell",false)) return
|
||||
player.visualize(anim,gfx)
|
||||
player.visualize(anim, gfx)
|
||||
if(soundID != -1){
|
||||
playAudio(player, soundID)
|
||||
if(global) playGlobalAudio(player.location, soundID, delay)
|
||||
else playAudio(player, soundID, delay)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param player The player to visualize the spell on
|
||||
* @param anim The integer ID of the animation, found in the Animations ConstLib.
|
||||
* @param gfx The integer ID of the graphics to show, found in the Graphics ConstLib.
|
||||
* @param height How high the graphics should display above the ground(?). Defaults to 0.
|
||||
* @param soundID The sound to play, either raw integer or from the Sounds ConstLib. Defaults to -1 (Nothing).
|
||||
* @param delay The delay that should be applied before the sound plays, defaults to 0.
|
||||
* @param global Whether the sound should be played globally instead of per-player. Defaults to true.
|
||||
*/
|
||||
fun visualizeSpell(player: Player, anim: Int, gfx: Int, height: Int = 0, soundID: Int = -1, delay: Int = 0, global: Boolean = true) {
|
||||
if(player.getAttribute("tablet-spell",false)) return
|
||||
player.visualize(Animation(anim), Graphics(gfx, height))
|
||||
if(soundID != -1){
|
||||
if(global) playGlobalAudio(player.location, soundID, delay)
|
||||
else playAudio(player, soundID, delay)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
package content.global.skill.magic.lunar;
|
||||
|
||||
import core.game.node.entity.combat.spell.MagicSpell;
|
||||
import core.game.node.entity.combat.spell.Runes;
|
||||
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.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
import org.rs09.consts.Sounds;
|
||||
|
||||
import static core.api.ContentAPIKt.playGlobalAudio;
|
||||
|
||||
/**
|
||||
* Represents the humidify spell.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class HumidifySpell extends MagicSpell {
|
||||
|
||||
/**
|
||||
* Represents the animation of this graphics.
|
||||
*/
|
||||
private static final Animation ANIMATION = new Animation(6294);
|
||||
|
||||
/**
|
||||
* Repesents the graphick, next spells of this spell.
|
||||
*/
|
||||
private static final Graphics GRAPHIC = new Graphics(1061);
|
||||
|
||||
/**
|
||||
* Represents the empty vessels.
|
||||
*/
|
||||
private static final int[] EMPTY = { 229, 1831, 1829, 1827, 1825, 1925, 1923, 1935, 5331, 5332, 5333, 5334, 5335, 5337, 5338, 5339, 6667, 7688, 731, 1980, 434 };
|
||||
|
||||
/**
|
||||
* Represents the full vessels.
|
||||
*/
|
||||
private static final int[] FULL = { 227, 1823, 1823, 1823, 1823, 1929, 1921, 1937, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 6668, 7690, 732, 4458, 1761 };
|
||||
|
||||
/**
|
||||
* Constructs a new {@code CureOtherSpell} {@code Object}.
|
||||
*/
|
||||
public HumidifySpell() {
|
||||
super(SpellBook.LUNAR, 68, 65, ANIMATION, null, null, new Item[] { new Item(Runes.ASTRAL_RUNE.getId(), 1), new Item(Runes.WATER_RUNE.getId(), 3), new Item(Runes.FIRE_RUNE.getId(), 1) });
|
||||
}
|
||||
|
||||
@Override
|
||||
public Plugin<SpellType> newInstance(SpellType arg) throws Throwable {
|
||||
SpellBook.LUNAR.register(7, this);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cast(Entity entity, Node target) {
|
||||
Player p = (Player) entity;
|
||||
boolean good = false;
|
||||
for (int i = 0; i < EMPTY.length; i++) {
|
||||
if (p.getInventory().contains(EMPTY[i], 1)) {
|
||||
good = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!good) {
|
||||
p.sendMessage("You need something which holds water in order to do this spell.");
|
||||
return false;
|
||||
}
|
||||
if (!super.meetsRequirements(p, true, true)) {
|
||||
return false;
|
||||
}
|
||||
p.lock(ANIMATION.getDuration() + 1);
|
||||
p.animate(ANIMATION);
|
||||
p.graphics(GRAPHIC);
|
||||
playGlobalAudio(p.getLocation(), Sounds.LUNAR_HUMIDIFY_3614, 20);
|
||||
for (int k = 0; k < 28; k++) {
|
||||
for (int i = 0; i < 21; i++) {
|
||||
if (p.getInventory().contains(EMPTY[i], 1)) {
|
||||
if (p.getInventory().remove(new Item(EMPTY[i]))) {
|
||||
p.getInventory().add(new Item(FULL[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,41 +3,8 @@ 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.Graphics
|
||||
import org.rs09.consts.Items
|
||||
|
||||
// Animations
|
||||
val BAKE_PIE_ANIM = Animation(4413)
|
||||
val STATSPY_ANIM = Animation(6293)
|
||||
val CURE_PLANT_ANIM = Animation(4409)
|
||||
val NPC_CONTACT_ANIM = Animation(4413)
|
||||
val PLANK_MAKE_ANIM = Animation(6298)
|
||||
val STRING_JEWELLERY_ANIM = Animation(4412)
|
||||
val SUPERGLASS_MAKE_ANIM = Animation(4413)
|
||||
val FERTILE_SOIL_ANIM = Animation(4413)
|
||||
val CURE_ME_ANIM = Animation(4411)
|
||||
val CURE_GROUP_ANIM = Animation(4409)
|
||||
val CURE_OTHER_ANIM = Animation(4411)
|
||||
val ENERGY_TRANSFER_ANIM = Animation(4411)
|
||||
val HUNTER_KIT_ANIM = Animation(6303)
|
||||
|
||||
// Graphics
|
||||
val BAKE_PIE_GFX = Graphics(746,75)
|
||||
val STATSPY_GFX = Graphics(1059)
|
||||
val CURE_PLANT_GFX = Graphics(742,100)
|
||||
val NPC_CONTACT_GFX = Graphics(730,130)
|
||||
val PLANK_MAKE_GFX = Graphics(1063, 120)
|
||||
val STRING_JEWELLERY_GFX = Graphics(728, 100)
|
||||
val SUPERGLASS_MAKE_GFX = Graphics(729, 120)
|
||||
val FERTILE_SOIL_GFX = Graphics(724)
|
||||
val CURE_ME_GFX = Graphics(731, 90)
|
||||
val CURE_GROUP_GFX = Graphics(751, 130)
|
||||
val CURE_OTHER_GFX = Graphics(738, 130)
|
||||
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,
|
||||
@@ -62,7 +29,7 @@ class HunterKitInteraction : InteractionListener {
|
||||
}
|
||||
}
|
||||
|
||||
enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
||||
enum class StringJewelleryItems(val unstrung: Int, val strung: Int) {
|
||||
GOLD(Items.GOLD_AMULET_1673, Items.GOLD_AMULET_1692),
|
||||
SAPPHIRE(Items.SAPPHIRE_AMULET_1675, Items.SAPPHIRE_AMULET_1694),
|
||||
EMERALD(Items.EMERALD_AMULET_1677, Items.EMERALD_AMULET_1696),
|
||||
@@ -74,8 +41,8 @@ enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
||||
HOLY(Items.UNSTRUNG_SYMBOL_1714, Items.UNBLESSED_SYMBOL_1716),
|
||||
UNHOLY(Items.UNSTRUNG_EMBLEM_1720, Items.UNPOWERED_SYMBOL_1722);
|
||||
companion object {
|
||||
val productOfString = values().associate { it.unstrung to it.strung }
|
||||
fun forId(id : Int) : Int {
|
||||
private val productOfString = values().associate { it.unstrung to it.strung }
|
||||
fun forId(id: Int): Int {
|
||||
return productOfString[id]!!
|
||||
}
|
||||
|
||||
@@ -85,3 +52,36 @@ enum class JewelleryString(val unstrung: Int, val strung: Int) {
|
||||
}
|
||||
}
|
||||
|
||||
enum class HumidifyItems(val empty: Int, val full: Int) {
|
||||
VIAL(Items.VIAL_229, Items.VIAL_OF_WATER_227),
|
||||
WATERSKIN0(Items.WATERSKIN0_1831, Items.WATERSKIN4_1823),
|
||||
WATERSKIN1(Items.WATERSKIN1_1829, Items.WATERSKIN4_1823),
|
||||
WATERSKIN2(Items.WATERSKIN2_1827, Items.WATERSKIN4_1823),
|
||||
WATERSKIN3(Items.WATERSKIN3_1825, Items.WATERSKIN4_1823),
|
||||
BUCKET(Items.BUCKET_1925, Items.BUCKET_OF_WATER_1929),
|
||||
BOWL(Items.BOWL_1923, Items.BOWL_OF_WATER_1921),
|
||||
JUG(Items.JUG_1935, Items.JUG_OF_WATER_1937),
|
||||
WATERING_CAN0(Items.WATERING_CAN_5331, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN1(Items.WATERING_CAN1_5333, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN2(Items.WATERING_CAN2_5334, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN3(Items.WATERING_CAN3_5335, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN4(Items.WATERING_CAN4_5336, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN5(Items.WATERING_CAN5_5337, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN6(Items.WATERING_CAN6_5338, Items.WATERING_CAN8_5340),
|
||||
WATERING_CAN7(Items.WATERING_CAN7_5339, Items.WATERING_CAN8_5340),
|
||||
FISHBOWL(Items.FISHBOWL_6667, Items.FISHBOWL_6668),
|
||||
KETTLE(Items.KETTLE_7688, Items.FULL_KETTLE_7690),
|
||||
ENCHANTED_VIAL(Items.ENCHANTED_VIAL_731, Items.HOLY_WATER_732),
|
||||
CUP(Items.EMPTY_CUP_1980, Items.CUP_OF_WATER_4458);
|
||||
companion object {
|
||||
private val productOfFill = values().associate { it.empty to it.full }
|
||||
fun forId(id: Int): Int {
|
||||
return productOfFill[id]!!
|
||||
}
|
||||
|
||||
fun emptyContains(id: Int): Boolean {
|
||||
return productOfFill.contains(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,126 +22,40 @@ import core.game.system.task.Pulse
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.RegionManager
|
||||
import core.game.world.repository.Repository
|
||||
import core.game.world.update.flag.context.Animation
|
||||
import core.tools.RandomFunction
|
||||
import org.rs09.consts.Components
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.Sounds
|
||||
import org.rs09.consts.*
|
||||
import kotlin.math.floor
|
||||
|
||||
class LunarListeners : SpellListener("lunar"), Commands {
|
||||
|
||||
override fun defineListeners() {
|
||||
// Level 0
|
||||
onCast(Lunar.HOME_TELEPORT, NONE) { player, _ ->
|
||||
requires(player)
|
||||
player.teleporter.send(Location.create(2100, 3914, 0),TeleportManager.TeleportType.HOME)
|
||||
setDelay(player,true)
|
||||
}
|
||||
|
||||
onCast(Lunar.MOONCLAN_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,69, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,1), Item(Items.EARTH_RUNE_557,2)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,66.0, Location.create(2111, 3916, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.MOONCLAN_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,70, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,1), Item(Items.EARTH_RUNE_557,4)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,67.0,"Moonclan Island",Location.create(2111, 3916, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.OURANIA_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,71, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,1), Item(Items.EARTH_RUNE_557,6)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,69.0, Location.create(2469, 3247, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.WATERBIRTH_TELEPORT, NONE){ player, _ ->
|
||||
requires(player,72, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563), Item(Items.WATER_RUNE_555)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,71.0, Location.create(2527, 3739, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.WATERBIRTH_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,73, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563), Item(Items.WATER_RUNE_555,5)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,72.0,"Waterbirth Island", Location.create(2527, 3739, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.BARBARIAN_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,75, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.FIRE_RUNE_554,3)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,76.0, Location.create(2544, 3572, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.BARBARIAN_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,77, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.FIRE_RUNE_554,6)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,77.0,"Barbarian Outpost", Location.create(2544, 3572, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.KHAZARD_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,78, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.WATER_RUNE_555,4)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,80.0, Location.create(2656, 3157, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.KHAZARD_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,79, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.WATER_RUNE_555,8)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,81.0, "Port Khazard", Location.create(2656, 3157, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.FISHING_GUILD_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,85, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,10)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,89.0, Location.create(2611, 3393, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.FISHING_GUILD_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,86, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,14)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,90.0,"Fishing Guild", Location.create(2611, 3393, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.CATHERBY_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,87, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,10)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,92.0, Location.create(2804, 3433, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.CATHERBY_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,88, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,15)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,93.0,"Catherby", Location.create(2804, 3433, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.ICE_PLATEAU_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,89, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,8)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,96.0, Location.create(2972, 3873, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.ICE_PLATEAU_GR_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,90, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,16)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,99.0, "Ice Plateau", Location.create(2972, 3873, 0))
|
||||
}
|
||||
|
||||
// Level 65
|
||||
onCast(Lunar.BAKE_PIE, NONE) { player, _ ->
|
||||
requires(player,65, arrayOf(Item(Items.ASTRAL_RUNE_9075), Item(Items.FIRE_RUNE_554,5), Item(Items.WATER_RUNE_555,4)))
|
||||
bakePie(player)
|
||||
}
|
||||
|
||||
onCast(Lunar.MONSTER_EXAMINE, NPC) { player, node ->
|
||||
requires(player,66, arrayOf(Item(Items.ASTRAL_RUNE_9075), Item(Items.MIND_RUNE_558), Item(Items.COSMIC_RUNE_564)))
|
||||
examineMonster(player,node!!.asNpc())
|
||||
}
|
||||
|
||||
// Level 66
|
||||
onCast(Lunar.CURE_PLANT, OBJECT) { player, node ->
|
||||
requires(player,66, arrayOf(Item(Items.ASTRAL_RUNE_9075), Item(Items.EARTH_RUNE_557,8)))
|
||||
curePlant(player,node!!.asScenery())
|
||||
}
|
||||
|
||||
// Level 66
|
||||
onCast(Lunar.MONSTER_EXAMINE, NPC) { player, node ->
|
||||
requires(player,66, arrayOf(Item(Items.ASTRAL_RUNE_9075), Item(Items.MIND_RUNE_558), Item(Items.COSMIC_RUNE_564)))
|
||||
examineMonster(player,node!!.asNpc())
|
||||
}
|
||||
|
||||
// Level 67
|
||||
onCast(Lunar.NPC_CONTACT, NONE) { player, _ ->
|
||||
requires(player,67, arrayOf(Item(Items.ASTRAL_RUNE_9075), Item(Items.COSMIC_RUNE_564), Item(Items.AIR_RUNE_556,2)))
|
||||
player.interfaceManager.open(Component(429))
|
||||
@@ -149,49 +63,223 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
removeRunes(player)
|
||||
addXP(player,63.0)
|
||||
setDelay(player,false)
|
||||
visualizeSpell(player, NPC_CONTACT_ANIM, NPC_CONTACT_GFX,3618)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_NPC_CONTACT_4413, Graphics.LUNAR_SPELLBOOK_NPC_CONTACT_728, 130,3618)
|
||||
}
|
||||
}
|
||||
|
||||
onCast(Lunar.PLANK_MAKE, ITEM) { player, node ->
|
||||
requires(player, 86, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.NATURE_RUNE_561, 1), Item(Items.EARTH_RUNE_557, 15)))
|
||||
plankMake(player, node!!.asItem())
|
||||
// Level 68
|
||||
onCast(Lunar.CURE_OTHER, PLAYER) { player, node ->
|
||||
node?.let { cureOther(player, node) }
|
||||
}
|
||||
|
||||
onCast(Lunar.STRING_JEWELLERY, NONE) { player, _ ->
|
||||
requires(player, 80, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.EARTH_RUNE_557, 10), Item(Items.WATER_RUNE_555, 5)))
|
||||
stringJewellery(player)
|
||||
// Level 68
|
||||
onCast(Lunar.HUMIDIFY, NONE) { player, _ ->
|
||||
requires(player, 68, arrayOf(Item(Items.ASTRAL_RUNE_9075, 1), Item(Items.WATER_RUNE_555, 3), Item(Items.FIRE_RUNE_554, 1)))
|
||||
humidify(player)
|
||||
}
|
||||
|
||||
// Level 69
|
||||
onCast(Lunar.MOONCLAN_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,69, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,1), Item(Items.EARTH_RUNE_557,2)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,66.0, Location.create(2111, 3916, 0))
|
||||
}
|
||||
|
||||
// Level 70
|
||||
onCast(Lunar.MOONCLAN_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,70, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,1), Item(Items.EARTH_RUNE_557,4)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,67.0,"Moonclan Island",Location.create(2111, 3916, 0))
|
||||
}
|
||||
|
||||
// Level 71
|
||||
onCast(Lunar.OURANIA_TELEPORT, NONE) { player, _ ->
|
||||
requires(
|
||||
player,
|
||||
71,
|
||||
arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.LAW_RUNE_563, 1), Item(Items.EARTH_RUNE_557, 6))
|
||||
)
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player, 69.0, Location.create(2469, 3247, 0))
|
||||
}
|
||||
|
||||
// Level 71
|
||||
onCast(Lunar.CURE_ME, NONE) { player, _ ->
|
||||
cureMe(player)
|
||||
}
|
||||
|
||||
// Level 71
|
||||
onCast(Lunar.HUNTER_KIT, NONE) { player, _ ->
|
||||
if(freeSlots(player) == 0) sendMessage(player, "Not enough inventory space!").also { return@onCast }
|
||||
hunterKit(player)
|
||||
}
|
||||
|
||||
// Level 72
|
||||
onCast(Lunar.WATERBIRTH_TELEPORT, NONE){ player, _ ->
|
||||
requires(player,72, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563), Item(Items.WATER_RUNE_555)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,71.0, Location.create(2527, 3739, 0))
|
||||
}
|
||||
|
||||
// Level 73
|
||||
onCast(Lunar.WATERBIRTH_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,73, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563), Item(Items.WATER_RUNE_555,5)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,72.0,"Waterbirth Island", Location.create(2527, 3739, 0))
|
||||
}
|
||||
|
||||
// Level 74
|
||||
onCast(Lunar.CURE_GROUP, NONE) { player, _ ->
|
||||
cureGroup(player)
|
||||
}
|
||||
|
||||
// Level 75
|
||||
/**
|
||||
* Stat Spy
|
||||
*/
|
||||
|
||||
// Level 75
|
||||
onCast(Lunar.BARBARIAN_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,75, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.FIRE_RUNE_554,3)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,76.0, Location.create(2544, 3572, 0))
|
||||
}
|
||||
|
||||
// Level 76
|
||||
onCast(Lunar.BARBARIAN_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,77, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.FIRE_RUNE_554,6)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,77.0,"Barbarian Outpost", Location.create(2544, 3572, 0))
|
||||
}
|
||||
|
||||
// Level 77
|
||||
onCast(Lunar.SUPERGLASS_MAKE, NONE) { player, _ ->
|
||||
requires(player, 77, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.FIRE_RUNE_554, 6), Item(Items.AIR_RUNE_556, 10)))
|
||||
superglassMake(player)
|
||||
}
|
||||
|
||||
// Level 78
|
||||
onCast(Lunar.KHAZARD_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,78, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.WATER_RUNE_555,4)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,80.0, Location.create(2656, 3157, 0))
|
||||
}
|
||||
|
||||
// Level 79
|
||||
onCast(Lunar.KHAZARD_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,79, arrayOf(Item(Items.ASTRAL_RUNE_9075,2), Item(Items.LAW_RUNE_563,2), Item(Items.WATER_RUNE_555,8)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,81.0, "Port Khazard", Location.create(2656, 3157, 0))
|
||||
}
|
||||
|
||||
// Level 79
|
||||
/**
|
||||
* Dream
|
||||
*/
|
||||
|
||||
// Level 80
|
||||
onCast(Lunar.STRING_JEWELLERY, NONE) { player, _ ->
|
||||
requires(player, 80, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.EARTH_RUNE_557, 10), Item(Items.WATER_RUNE_555, 5)))
|
||||
stringJewellery(player)
|
||||
}
|
||||
|
||||
// Level 81
|
||||
/**
|
||||
* Stat Restore Pot Share
|
||||
*/
|
||||
|
||||
// Level 82
|
||||
/**
|
||||
* Magic Imbue
|
||||
*/
|
||||
|
||||
// Level 83
|
||||
onCast(Lunar.FERTILE_SOIL, OBJECT) { player, node ->
|
||||
node?.let { fertileSoil(player, node.asScenery()) }
|
||||
}
|
||||
|
||||
onCast(Lunar.CURE_ME, NONE) { player, _ ->
|
||||
cureMe(player)
|
||||
// Level 84
|
||||
/**
|
||||
* Boost Potion Share
|
||||
*/
|
||||
|
||||
// Level 85
|
||||
onCast(Lunar.FISHING_GUILD_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,85, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,10)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,89.0, Location.create(2611, 3393, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.CURE_GROUP, NONE) { player, _ ->
|
||||
cureGroup(player)
|
||||
// Level 86
|
||||
onCast(Lunar.FISHING_GUILD_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,86, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,14)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,90.0,"Fishing Guild", Location.create(2611, 3393, 0))
|
||||
}
|
||||
|
||||
onCast(Lunar.CURE_OTHER, PLAYER) { player, node ->
|
||||
node?.let { cureOther(player, node) }
|
||||
// Level 86
|
||||
onCast(Lunar.PLANK_MAKE, ITEM) { player, node ->
|
||||
requires(player, 86, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.NATURE_RUNE_561, 1), Item(Items.EARTH_RUNE_557, 15)))
|
||||
plankMake(player, node!!.asItem())
|
||||
}
|
||||
|
||||
// Level 87
|
||||
onCast(Lunar.CATHERBY_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,87, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,10)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,92.0, Location.create(2804, 3433, 0))
|
||||
}
|
||||
|
||||
// Level 88
|
||||
onCast(Lunar.CATHERBY_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,88, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,15)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,93.0,"Catherby", Location.create(2804, 3433, 0))
|
||||
}
|
||||
|
||||
// Level 89
|
||||
onCast(Lunar.ICE_PLATEAU_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,89, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,8)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendTeleport(player,96.0, Location.create(2972, 3873, 0))
|
||||
}
|
||||
|
||||
// Level 90
|
||||
onCast(Lunar.ICE_PLATEAU_GROUP_TELEPORT, NONE) { player, _ ->
|
||||
requires(player,90, arrayOf(Item(Items.ASTRAL_RUNE_9075,3), Item(Items.LAW_RUNE_563,3), Item(Items.WATER_RUNE_555,16)))
|
||||
if (!player.isTeleBlocked) playGlobalAudio(player.location, Sounds.TELEPORT_ALL_200)
|
||||
sendGroupTeleport(player,99.0, "Ice Plateau", Location.create(2972, 3873, 0))
|
||||
}
|
||||
|
||||
// Level 91
|
||||
onCast(Lunar.ENERGY_TRANSFER, PLAYER) { 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)
|
||||
}
|
||||
// Level 92
|
||||
/**
|
||||
* Heal Other
|
||||
*/
|
||||
|
||||
// Level 93
|
||||
/**
|
||||
* Vengeance Other
|
||||
*/
|
||||
|
||||
// Level 94
|
||||
/**
|
||||
* Vengeance
|
||||
*/
|
||||
|
||||
// Level 95
|
||||
/**
|
||||
* Heal Group
|
||||
*/
|
||||
|
||||
// Level 96
|
||||
/**
|
||||
* Spellbook Swap
|
||||
*/
|
||||
}
|
||||
|
||||
// Lunar spellbook-related debug commands
|
||||
@@ -215,6 +303,19 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
sendMessage(player, "::poison username damage")
|
||||
}
|
||||
}
|
||||
define("humidifykit", privilege = Privilege.ADMIN) { player, _ ->
|
||||
if(freeSlots(player) < 24) {
|
||||
sendMessage(player, "Not enough free space.")
|
||||
return@define
|
||||
} else {
|
||||
addItem(player, Items.ASTRAL_RUNE_9075, 100)
|
||||
addItem(player, Items.WATER_RUNE_555, 300)
|
||||
addItem(player, Items.FIRE_RUNE_554, 100)
|
||||
for(item in HumidifyItems.values()) {
|
||||
addItem(player, item.empty)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun plankMake(player: Player, item: Item) {
|
||||
|
||||
@@ -229,7 +330,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
lock(player, 3)
|
||||
setDelay(player, false)
|
||||
visualizeSpell(player, PLANK_MAKE_ANIM, PLANK_MAKE_GFX, 3617)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_PLANK_MAKE_6298, Graphics.LUNAR_SPELLBOOK_PLANK_MAKE_1063, 120, Sounds.LUNAR_MAKE_PLANK_3617)
|
||||
removeRunes(player)
|
||||
replaceSlot(player, item.slot, plankType.plank)
|
||||
addXP(player, 90.0)
|
||||
@@ -281,7 +382,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
patch.cureDisease()
|
||||
removeRunes(player)
|
||||
addXP(player,60.0)
|
||||
visualizeSpell(player, CURE_PLANT_ANIM, CURE_PLANT_GFX)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_CURE_PLANT_4409, Graphics.LUNAR_SPELLBOOK_CURE_PLANT_748, 100, Sounds.LUNAR_CURE_GROUP_2882)
|
||||
setDelay(player,false)
|
||||
}
|
||||
|
||||
@@ -292,7 +393,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
|
||||
player.faceLocation(npc.location)
|
||||
visualizeSpell(player, STATSPY_ANIM, STATSPY_GFX,3620)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_STATSPY_6293, Graphics.LUNAR_SPELLBOOK_STAT_SPY_OVER_PLAYER_1060, soundID = Sounds.LUNAR_STAT_SPY_3620)
|
||||
removeRunes(player)
|
||||
addXP(player,66.0)
|
||||
setDelay(player,false)
|
||||
@@ -330,10 +431,10 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
var counter = 0
|
||||
override fun pulse(): Boolean {
|
||||
if(playerPies.isEmpty()) return true
|
||||
if(counter == 0) delay = BAKE_PIE_ANIM.definition.durationTicks + 1
|
||||
val item = playerPies.get(0)
|
||||
if(counter == 0) delay = Animation(Animations.LUNAR_SPELLBOOK_BAKE_PIE_4413).definition.durationTicks + 1
|
||||
val item = playerPies[0]
|
||||
val pie = CookableItems.forId(item.id)
|
||||
visualizeSpell(player, BAKE_PIE_ANIM, BAKE_PIE_GFX, 2879)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_BAKE_PIE_4413, Graphics.LUNAR_SPELLBOOK_BAKE_PIE_746, 75, Sounds.LUNAR_BAKE_PIE_2879)
|
||||
addXP(player,60.0)
|
||||
player.skills.addExperience(Skills.COOKING,pie.experience)
|
||||
setDelay(player,false)
|
||||
@@ -357,7 +458,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
private fun sendGroupTeleport(player: Player, xp: Double, destName: String, loc: Location){
|
||||
RegionManager.getLocalPlayers(player,1).forEach {
|
||||
if(it == player) return@forEach
|
||||
if(it.isTeleBlocked()) return@forEach
|
||||
if(it.isTeleBlocked) return@forEach
|
||||
if(!it.isActive) return@forEach
|
||||
if(!it.settings.isAcceptAid) return@forEach
|
||||
if(it.ironmanManager.isIronman) return@forEach
|
||||
@@ -374,7 +475,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
|
||||
for(item in player.inventory.toArray()) {
|
||||
if(item == null) continue
|
||||
if(!JewelleryString.unstrungContains(item.id)) continue
|
||||
if(!StringJewelleryItems.unstrungContains(item.id)) continue
|
||||
playerJewellery.add(item)
|
||||
}
|
||||
|
||||
@@ -385,13 +486,13 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
if (playerJewellery.isEmpty())
|
||||
return true
|
||||
requires(player, 80, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.EARTH_RUNE_557, 10), Item(Items.WATER_RUNE_555, 5)))
|
||||
if(counter == 0) delay = animationDuration(STRING_JEWELLERY_ANIM) + 1
|
||||
if(counter == 0) delay = animationDuration(Animation(Animations.LUNAR_SPELLBOOK_STRING_JEWELLERY_4412)) + 1
|
||||
val item = playerJewellery[0]
|
||||
val strung = JewelleryString.forId(item.id)
|
||||
val strung = StringJewelleryItems.forId(item.id)
|
||||
setDelay(player,false)
|
||||
if(removeItem(player, item) && addItem(player, strung)) {
|
||||
removeRunes(player, true)
|
||||
visualizeSpell(player, STRING_JEWELLERY_ANIM, STRING_JEWELLERY_GFX, 2903)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_STRING_JEWELLERY_4412, Graphics.LUNAR_SPELLBOOK_STRING_JEWELLERY_730, 100, Sounds.LUNAR_STRING_AMULET_2903)
|
||||
rewardXP(player, Skills.CRAFTING, 4.0)
|
||||
addXP(player, 83.0)
|
||||
playerJewellery.remove(item)
|
||||
@@ -404,11 +505,11 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
|
||||
private fun superglassMake(player: Player) {
|
||||
val GLASSWEED = hashSetOf(Items.SODA_ASH_1781, Items.SEAWEED_401, Items.SWAMP_WEED_10978)
|
||||
val GLASS_WEEDS = hashSetOf(Items.SODA_ASH_1781, Items.SEAWEED_401, Items.SWAMP_WEED_10978)
|
||||
val inv = player.inventory.toArray()
|
||||
var playerWeed: Int = amountInInventory(player, Items.SODA_ASH_1781) + amountInInventory(player, Items.SEAWEED_401) + amountInInventory(player, Items.SWAMP_WEED_10978)
|
||||
var playerSand: Int = amountInInventory(player, Items.BUCKET_OF_SAND_1783)
|
||||
var index: Int = 0
|
||||
var index = 0
|
||||
|
||||
fun addMolten(): Boolean {
|
||||
if(RandomFunction.randomDouble(1.0) < 0.3) {
|
||||
@@ -425,7 +526,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
for (item in inv) {
|
||||
if (item == null) continue
|
||||
if (index == size) break
|
||||
if (GLASSWEED.contains(item.id)) {
|
||||
if (GLASS_WEEDS.contains(item.id)) {
|
||||
if (removeItem(player, item) && removeItem(player, Items.BUCKET_OF_SAND_1783) && addMolten()) {
|
||||
index++
|
||||
} else {
|
||||
@@ -439,7 +540,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
|
||||
if(index == size && size != 0) {
|
||||
removeRunes(player, true)
|
||||
visualizeSpell(player, SUPERGLASS_MAKE_ANIM, SUPERGLASS_MAKE_GFX, 2896)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_SUPERGLASS_MAKE_4413, Graphics.LUNAR_SPELLBOOK_SUPERGLASS_MAKE_729, 120, Sounds.LUNAR_HEATGLASS_2896)
|
||||
rewardXP(player, Skills.CRAFTING, 10.0)
|
||||
addXP(player, 78.0)
|
||||
}
|
||||
@@ -468,8 +569,8 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
requires(player, 83, arrayOf(Item(Items.ASTRAL_RUNE_9075, 3), Item(Items.NATURE_RUNE_561, 2), Item(Items.EARTH_RUNE_557, 15)))
|
||||
removeRunes(player, true)
|
||||
animate(player, FERTILE_SOIL_ANIM)
|
||||
sendGraphics(FERTILE_SOIL_GFX, target.location)
|
||||
animate(player, Animations.LUNAR_SPELLBOOK_FERTILE_SOIL_4413)
|
||||
sendGraphics(Graphics.LUNAR_SPELLBOOK_FERTILE_SOIL_724, target.location)
|
||||
playGlobalAudio(target.location, Sounds.LUNAR_FERTILIZE_2891)
|
||||
patch.compost = CompostType.SUPER
|
||||
sendMessage(player, "You fertilize the soil.")
|
||||
@@ -483,7 +584,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
requires(player, 71, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.LAW_RUNE_563, 1), Item(Items.COSMIC_RUNE_564, 2)))
|
||||
removeRunes(player, true)
|
||||
visualizeSpell(player, CURE_ME_ANIM, CURE_ME_GFX, 2880)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_CURE_ME_4411, Graphics.LUNAR_SPELLBOOK_CURE_ME_742, 90, Sounds.LUNAR_CURE_2884)
|
||||
curePoison(player)
|
||||
addXP(player, 69.0)
|
||||
playAudio(player, Sounds.LUNAR_CURE_OTHER_INDIVIDUAL_2900)
|
||||
@@ -493,7 +594,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
private fun cureGroup(player: Player) {
|
||||
requires(player, 74, arrayOf(Item(Items.ASTRAL_RUNE_9075, 2), Item(Items.LAW_RUNE_563, 2), Item(Items.COSMIC_RUNE_564, 2)))
|
||||
removeRunes(player, true)
|
||||
visualizeSpell(player, CURE_GROUP_ANIM, CURE_GROUP_GFX, 2882)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_CURE_GROUP_4409, Graphics.LUNAR_SPELLBOOK_CURE_GROUP_744, 130, Sounds.LUNAR_CURE_GROUP_2882)
|
||||
curePoison(player)
|
||||
for(acct in RegionManager.getLocalPlayers(player, 1)) {
|
||||
if(!acct.isActive || acct.locks.isInteractionLocked) {
|
||||
@@ -504,8 +605,7 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
curePoison(acct)
|
||||
sendMessage(acct, "You have been cured of poison.")
|
||||
playGlobalAudio(acct.location, Sounds.LUNAR_CURE_OTHER_INDIVIDUAL_2889)
|
||||
visualize(acct, -1, CURE_GROUP_GFX)
|
||||
visualizeSpell(acct, -1, Graphics.LUNAR_SPELLBOOK_CURE_GROUP_744, 130, Sounds.LUNAR_CURE_OTHER_INDIVIDUAL_2889)
|
||||
}
|
||||
addXP(player, 74.0)
|
||||
}
|
||||
@@ -530,9 +630,8 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
requires(player, 68, arrayOf(Item(Items.ASTRAL_RUNE_9075, 1), Item(Items.LAW_RUNE_563), Item(Items.EARTH_RUNE_557, 10)))
|
||||
player.face(p)
|
||||
visualizeSpell(player, CURE_OTHER_ANIM, CURE_OTHER_GFX, 2886)
|
||||
visualize(p, -1, CURE_OTHER_GFX)
|
||||
playGlobalAudio(p.location, Sounds.LUNAR_CURE_OTHER_INDIVIDUAL_2889)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_CURE_OTHER_4411, Graphics.LUNAR_SPELLBOOK_CURE_OTHER_736, 130, Sounds.LUNAR_CURE_OTHER_2886)
|
||||
visualizeSpell(p, -1, Graphics.LUNAR_SPELLBOOK_CURE_OTHER_736, 130, Sounds.LUNAR_CURE_OTHER_INDIVIDUAL_2889)
|
||||
removeRunes(player, true)
|
||||
curePoison(p)
|
||||
sendMessage(p, "You have been cured of poison.")
|
||||
@@ -559,8 +658,8 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
}
|
||||
requires(player, 91, arrayOf(Item(Items.ASTRAL_RUNE_9075, 3), Item(Items.LAW_RUNE_563, 2), Item(Items.NATURE_RUNE_561, 1)))
|
||||
player.face(p)
|
||||
visualizeSpell(player, ENERGY_TRANSFER_ANIM, ENERGY_TRANSFER_GFX, 2885)
|
||||
visualize(p, -1, CURE_OTHER_GFX)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_ENERGY_TRANSFER_4411, Graphics.LUNAR_SPELLBOOK_ENERGY_TRANSFER_738, 90, Sounds.LUNAR_ENERGY_TRANSFER_2885)
|
||||
visualize(p, -1, Graphics.LUNAR_SPELLBOOK_ENERGY_TRANSFER_738)
|
||||
val hp = floor(player.skills.lifepoints * 0.10)
|
||||
var r = hp
|
||||
if(r > (100 - p.settings.runEnergy)) {
|
||||
@@ -590,11 +689,42 @@ class LunarListeners : SpellListener("lunar"), Commands {
|
||||
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)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_HUNTER_KIT_6303, Graphics.LUNAR_SPELLBOOK_HUNTER_KIT_1074, soundID = Sounds.LUNAR_HUNTER_KIT_3615)
|
||||
addXP(player, 70.0)
|
||||
setDelay(player, 2)
|
||||
}
|
||||
}
|
||||
|
||||
private fun humidify(player: Player) {
|
||||
val playerEmpties = ArrayDeque<Item>()
|
||||
|
||||
for(item in player.inventory.toArray()) {
|
||||
if(item == null) continue
|
||||
if(!HumidifyItems.emptyContains(item.id)) continue
|
||||
playerEmpties.add(item)
|
||||
}
|
||||
|
||||
if(playerEmpties.isEmpty()) {
|
||||
sendMessage(player, "You have nothing in your inventory that this spell can humidify.")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
removeRunes(player)
|
||||
delayEntity(player, Animation(Animations.LUNAR_SPELLBOOK_HUMIDIFY_6294).duration)
|
||||
visualizeSpell(player, Animations.LUNAR_SPELLBOOK_HUMIDIFY_6294, Graphics.LUNAR_SPELLBOOK_HUMIDIFY_1061, 20, Sounds.LUNAR_HUMIDIFY_3614)
|
||||
for(item in playerEmpties) {
|
||||
val filled = HumidifyItems.forId(item.id)
|
||||
removeItem(player, item.id) && addItem(player, filled)
|
||||
}
|
||||
addXP(player, 65.0)
|
||||
/**
|
||||
queueScript(player) {
|
||||
return@queueScript stopExecuting(player)
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ object Lunar {
|
||||
const val HEAL_GROUP = 30
|
||||
const val OURANIA_TELEPORT = 31
|
||||
const val CURE_PLANT = 32
|
||||
const val MOONCLAN_GR_TELEPORT = 33
|
||||
const val WATERBIRTH_GR_TELEPORT = 34
|
||||
const val BARBARIAN_GR_TELEPORT = 35
|
||||
const val KHAZARD_GR_TELEPORT = 36
|
||||
const val FISHING_GUILD_GR_TELEPORT = 37
|
||||
const val CATHERBY_GR_TELEPORT = 38
|
||||
const val ICE_PLATEAU_GR_TELEPORT = 39
|
||||
const val MOONCLAN_GROUP_TELEPORT = 33
|
||||
const val WATERBIRTH_GROUP_TELEPORT = 34
|
||||
const val BARBARIAN_GROUP_TELEPORT = 35
|
||||
const val KHAZARD_GROUP_TELEPORT = 36
|
||||
const val FISHING_GUILD_GROUP_TELEPORT = 37
|
||||
const val CATHERBY_GROUP_TELEPORT = 38
|
||||
const val ICE_PLATEAU_GROUP_TELEPORT = 39
|
||||
}
|
||||
Reference in New Issue
Block a user