diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 9aba5a10b1..62b0ce0ba2 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2236,7 +2236,11 @@ void GameObject::Use(Unit* user) sOutdoorPvPMgr->HandleCustomSpell(player, spellId, this); // Only count successful spell casts as uses - if (CastSpell(user, spellId) == SPELL_CAST_OK) + WorldObject* caster = this; + if (m_goInfo->spellcaster.playerCast != 0 && user->IsPlayer()) + caster = user; + + if (caster->CastSpell(user, spellId) == SPELL_CAST_OK) AddUse(); return; } diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index 7f224e6fc4..ae4de20d9d 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -287,6 +287,7 @@ struct GameObjectTemplate uint32 allowMounted; //3 Is usable while on mount/vehicle. (0/1) uint32 GiganticAOI; //4 uint32 conditionID1; //5 + uint32 playerCast; //6 } spellcaster; //23 GAMEOBJECT_TYPE_MEETINGSTONE struct