From d642c23a2cc11692c16837da23599229825b55a1 Mon Sep 17 00:00:00 2001 From: Beck <2421110-beckrickert@users.noreply.gitlab.com> Date: Sat, 4 Apr 2026 13:11:24 +0000 Subject: [PATCH] Fixed ring of forging lasting too long Implemented ring of forging "operate" to check remaining charges --- .../item/RingForgingOperateListener.kt | 22 +++++++++++++++++++ .../smithing/smelting/SmeltingPulse.java | 6 +++-- 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Server/src/main/content/global/handlers/item/RingForgingOperateListener.kt diff --git a/Server/src/main/content/global/handlers/item/RingForgingOperateListener.kt b/Server/src/main/content/global/handlers/item/RingForgingOperateListener.kt new file mode 100644 index 000000000..f9ed2c366 --- /dev/null +++ b/Server/src/main/content/global/handlers/item/RingForgingOperateListener.kt @@ -0,0 +1,22 @@ +package content.global.handlers.item + +import core.api.getAttribute +import core.api.sendMessage +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import org.rs09.consts.Items + +class RingForgingOperateListener: InteractionListener { + override fun defineListeners() { + + on(Items.RING_OF_FORGING_2568, IntType.ITEM, "operate") { player, node -> + + //Attribute set at SmeltingPulse.java + val charges = getAttribute(player, "ringOfForgingCharges", 140) + + sendMessage(player, "You can smelt $charges more iron ore before the ring disintegrates.") + + return@on true + } + } +} \ No newline at end of file diff --git a/Server/src/main/content/global/skill/smithing/smelting/SmeltingPulse.java b/Server/src/main/content/global/skill/smithing/smelting/SmeltingPulse.java index 5f7876db9..7951ab0ed 100644 --- a/Server/src/main/content/global/skill/smithing/smelting/SmeltingPulse.java +++ b/Server/src/main/content/global/skill/smithing/smelting/SmeltingPulse.java @@ -178,7 +178,7 @@ public class SmeltingPulse extends SkillPulse { } /** - * Checks if the forging is a succes. + * Checks if the forging is a success. * * @param player the player. * @return {@code True} if success. @@ -190,7 +190,9 @@ public class SmeltingPulse extends SkillPulse { if (charges <= 0) { if (removeItem(player, Items.RING_OF_FORGING_2568, Container.EQUIPMENT)) { charges = 140; - sendMessage(player, "Your ring of forging uses up its last charge and disintegrates."); + sendMessage(player, "Your Ring of forging uses up its last charge and disintegrates."); + // stop the smelting queue + stop(); } else { log(this.getClass(), Log.ERR, "Failed to delete empty ring of forging for player " + player.getName()); return false; //unfair but prevents exploit if the impossible happens