From 31bd7af2b59f104d4349e3929f7f217df5dd5149 Mon Sep 17 00:00:00 2001 From: Player Name Date: Sun, 7 Dec 2025 07:51:24 +0100 Subject: [PATCH 1/2] Fix pt 1 - jewelry half --- .../main/content/data/EnchantedJewellery.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Server/src/main/content/data/EnchantedJewellery.kt b/Server/src/main/content/data/EnchantedJewellery.kt index 23aa3b1bb..422f55963 100644 --- a/Server/src/main/content/data/EnchantedJewellery.kt +++ b/Server/src/main/content/data/EnchantedJewellery.kt @@ -17,6 +17,7 @@ import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import org.rs09.consts.Items import core.game.world.GameWorld.Pulser +import core.tools.Log import org.rs09.consts.Sounds import java.util.* @@ -260,17 +261,24 @@ enum class EnchantedJewellery( if (isSlayerRing(item)) { if (isEquipped) { // Remove it now, but only addItemOrDrop the gem after the teleport has procced - removeItem(player, item, Container.INVENTORY) - return@queueScript delayScript(player, 1) + if (removeItem(player, item, Container.EQUIPMENT)) { + return@queueScript delayScript(player, 1) + } + log(this.javaClass, Log.ERR, "Error replacing slayer ring with enchanted gem (removeItem from equipment)") } // Not equipped -> can replace fluently - replaceSlot(player, item.slot, Item(Items.ENCHANTED_GEM_4155), item) - return@queueScript stopExecuting(player) + if (replaceSlot(player, item.slot, Item(Items.ENCHANTED_GEM_4155), item) == item) { + return@queueScript stopExecuting(player) + } + log(this.javaClass, Log.ERR, "Error replacing slayer ring with enchanted gem (replaceSlot)") } // Not slayer ring if (isCrumble) { val removeFrom = if (isEquipped) Container.EQUIPMENT else Container.INVENTORY - removeItem(player, item, removeFrom) + if (removeItem(player, item, removeFrom)) { + return@queueScript stopExecuting(player) + } + log(this.javaClass, Log.ERR, "Error crumbling jewelry") } } else { replaceJewellery(player, item, nextJewellery, isEquipped) From 8e2d9d172770369fda9f8089079c9cfbad1f7901 Mon Sep 17 00:00:00 2001 From: Player Name Date: Sun, 7 Dec 2025 07:51:39 +0100 Subject: [PATCH 2/2] Fix pt 2 - contentapi half --- Server/src/main/core/api/ContentAPI.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Server/src/main/core/api/ContentAPI.kt b/Server/src/main/core/api/ContentAPI.kt index 615e51996..c079e3a8b 100644 --- a/Server/src/main/core/api/ContentAPI.kt +++ b/Server/src/main/core/api/ContentAPI.kt @@ -386,7 +386,7 @@ fun replaceSlot(player: Player, slot: Int, item: Item, currentItem: Item? = null } if (cont.remove(currentItem, slot, true)) { - return cont.replace(item, slot) + return cont.replace(item, slot) ?: currentItem } PlayerMonitor.log(player, LogType.DUPE_ALERT, "Potential slot-replacement-based dupe attempt, slot: $slot, item: $item") @@ -394,8 +394,9 @@ fun replaceSlot(player: Player, slot: Int, item: Item, currentItem: Item? = null Container.INVENTORY -> Container.EQUIPMENT else -> Container.INVENTORY } - if (removeItem(player, currentItem, other)) - return cont.replace(item, slot) + if (removeItem(player, currentItem, other)) { + return cont.replace(item, slot) ?: currentItem + } return null }