From 6305e2a718add434d083bda5d802a99885cbfd79 Mon Sep 17 00:00:00 2001 From: randy Date: Wed, 6 Nov 2024 13:36:24 -0700 Subject: [PATCH] Rewrote Alchemy spells to use pulse, repeating up to 30 times --- .../skill/magic/modern/ModernListeners.kt | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/Server/src/main/content/global/skill/magic/modern/ModernListeners.kt b/Server/src/main/content/global/skill/magic/modern/ModernListeners.kt index 262824d2c..0d35ef56a 100644 --- a/Server/src/main/content/global/skill/magic/modern/ModernListeners.kt +++ b/Server/src/main/content/global/skill/magic/modern/ModernListeners.kt @@ -30,6 +30,8 @@ import org.rs09.consts.Items import org.rs09.consts.Scenery import org.rs09.consts.Sounds +import core.game.system.task.Pulse + class ModernListeners : SpellListener("modern"){ override fun defineListeners() { onCast(Modern.HOME_TELEPORT, NONE){ player, _ -> @@ -232,25 +234,41 @@ class ModernListeners : SpellListener("modern"){ player.pulseManager.clear() } - if (explorersRing) { - visualize(player, LOW_ALCH_ANIM, EXPLORERS_RING_GFX) - } else { - val weapon = getItemFromEquipment(player, EquipmentSlot.WEAPON) - if (weapon != null && weapon.id in MagicStaff.FIRE_RUNE.staves) { - visualize(player, if (high) HIGH_ALCH_STAFF_ANIM else LOW_ALCH_STAFF_ANIM, if (high) HIGH_ALCH_STAFF_GFX else LOW_ALCH_STAFF_GFX) - } else { - visualize(player, if (high) HIGH_ALCH_ANIM else LOW_ALCH_ANIM, if (high) HIGH_ALCH_GFX else LOW_ALCH_GFX) + player.pulseManager.run(object : Pulse(){ + var counter = 0 + override fun pulse(): Boolean { + if (amountInInventory(player, item.id) == 0 || counter >= 150) + return true + removeAttribute(player, "spell:runes") + if (counter % 5 == 0) { + if (explorersRing) { + visualize(player, LOW_ALCH_ANIM, EXPLORERS_RING_GFX) + } else { + val weapon = getItemFromEquipment(player, EquipmentSlot.WEAPON) + if (weapon != null && weapon.id in MagicStaff.FIRE_RUNE.staves) { + visualize(player, if (high) HIGH_ALCH_STAFF_ANIM else LOW_ALCH_STAFF_ANIM, if (high) HIGH_ALCH_STAFF_GFX else LOW_ALCH_STAFF_GFX) + } else { + visualize(player, if (high) HIGH_ALCH_ANIM else LOW_ALCH_ANIM, if (high) HIGH_ALCH_GFX else LOW_ALCH_GFX) + } + } + playAudio(player, if (high) Sounds.HIGH_ALCHEMY_97 else Sounds.LOW_ALCHEMY_98) + player.dispatch(ItemAlchemizationEvent(item.id, high)) + if (high) + requires(player,55, arrayOf(Item(Items.FIRE_RUNE_554,5),Item(Items.NATURE_RUNE_561,1))) + else + requires(player,21, arrayOf(Item(Items.FIRE_RUNE_554,3),Item(Items.NATURE_RUNE_561))) + removeRunes(player, false) + addXP(player, if (high) 65.0 else 31.0) + if (player.inventory.remove(Item(item.id, 1)) && coins.amount > 0) { + player.inventory.add(coins) + } + //showMagicTab(player) + setDelay(player, 5) + } + counter++ + return false } - } - playAudio(player, if (high) Sounds.HIGH_ALCHEMY_97 else Sounds.LOW_ALCHEMY_98) - player.dispatch(ItemAlchemizationEvent(item.id, high)) - if (player.inventory.remove(Item(item.id, 1)) && coins.amount > 0) { - player.inventory.add(coins) - } - removeRunes(player) - addXP(player, if (high) 65.0 else 31.0) - showMagicTab(player) - setDelay(player, 5) + }) return true }