From 8f87778c439c27bfd7be6df6b18dc19390269ad0 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Wed, 21 Oct 2026 08:53:52 -0400 Subject: [PATCH] Show "You cannot apply that rune" when a rune is refused applyRune returns false on every failed requirement without telling the player, so using a rune the character doesn't qualify for did nothing. The caller now sends popup 161 on refusal, matching popup 160 on success. The id comes from the server's ErrorPopupMsg list; the popup strings aren't in the client exe, so it isn't confirmed in IDA. Co-Authored-By: Claude Opus 5.5 --- src/engine/net/client/handlers/ObjectActionMsgHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engine/net/client/handlers/ObjectActionMsgHandler.java b/src/engine/net/client/handlers/ObjectActionMsgHandler.java index d97351dc..f70097bd 100644 --- a/src/engine/net/client/handlers/ObjectActionMsgHandler.java +++ b/src/engine/net/client/handlers/ObjectActionMsgHandler.java @@ -266,7 +266,8 @@ public class ObjectActionMsgHandler extends AbstractClientMsgHandler { case RUNE: if(ApplyRuneMsg.applyRune(uuid, origin, player)) { itemMan.consume(item); - } + } else + ErrorPopupMsg.sendErrorPopup(player, 161); break; default: //shouldn't be here, consume item dispatch = Dispatch.borrow(player, msg);