From 68e5567583216189e138effc93f2bd26a790fd1f Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 11 Jan 2023 17:08:58 +0100 Subject: [PATCH] Core/GameObjects: defined and implemented playerCast field for GAMEOBJECT_TYPE_SPELLCASTER --- src/server/game/Entities/GameObject/GameObject.cpp | 6 +++++- src/server/game/Entities/GameObject/GameObjectData.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) 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