From 490ed994bc264f1f7245330fafaa2212f4e71442 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 9 Jun 2026 16:53:26 +0200 Subject: [PATCH] Core/GameObjects: only add GameObject uses when the triggered cast is successful --- src/server/game/Entities/GameObject/GameObject.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index c2856ad022..3c135909de 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1860,6 +1860,7 @@ void GameObject::Use(Unit* user) Unit* spellCaster = user; uint32 spellId = 0; bool triggered = false; + bool addUse = false; if (Player* playerUser = user->ToPlayer()) { @@ -2296,9 +2297,8 @@ void GameObject::Use(Unit* user) if (m_goInfo->spellcaster.playerCast != 0 && user->IsPlayer()) caster = user; - if (caster->CastSpell(user, spellId) == SPELL_CAST_OK) - AddUse(); - return; + addUse = true; + break; } case GAMEOBJECT_TYPE_MEETINGSTONE: //23 { @@ -2467,10 +2467,14 @@ void GameObject::Use(Unit* user) if (Player* player = user->ToPlayer()) sOutdoorPvPMgr->HandleCustomSpell(player, spellId, this); + SpellCastResult castResult; if (spellCaster) - spellCaster->CastSpell(user, spellId, triggered); + castResult = spellCaster->CastSpell(user, spellId, triggered); else - CastSpell(user, spellId); + castResult = CastSpell(user, spellId); + + if (addUse && castResult == SPELL_CAST_OK) + AddUse(); } void GameObject::SendCustomAnim(uint32 anim)