From 9bede687ce3d291c8af8f4deb3f1dcebba1a315d Mon Sep 17 00:00:00 2001 From: Giacomo Pozzoni Date: Sun, 24 Nov 2019 21:00:42 +0100 Subject: Core/GameObjects: Skip LoS checks for traps (#23936) * Core/GameObjects: Skip LoS checks for traps * Core/GameObjects: Fix spells cast by traps missing always * Scripts/Spells: Fix WSG heal buff not healing The WSG green heal buff is now cast by a GameObject so the spell target should be used to calculate the healing, not the GameObject. (cherry picked from commit 909941e1b44250b0fa646d363af817f40ca48355) --- src/server/game/Entities/GameObject/GameObject.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/server/game/Entities/GameObject') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 97e38b728fc..fec95d85617 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1444,6 +1444,16 @@ uint8 GameObject::GetLevelForTarget(WorldObject const* target) const if (Unit* owner = GetOwner()) return owner->GetLevelForTarget(target); + if (GetGoType() == GAMEOBJECT_TYPE_TRAP) + { + if (Player const* player = target->ToPlayer()) + if (Optional userLevels = sDB2Manager.GetContentTuningData(GetGOInfo()->ContentTuningId, player->m_playerData->CtrOptions->ContentTuningConditionMask)) + return uint8(advstd::clamp(player->GetLevel(), userLevels->MinLevel, userLevels->MaxLevel)); + + if (Unit const* targetUnit = target->ToUnit()) + return targetUnit->GetLevel(); + } + return 1; } -- cgit v1.2.3