aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/GameObject
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2019-11-24 21:00:42 +0100
committerShauren <shauren.trinity@gmail.com>2021-12-19 01:05:54 +0100
commit9bede687ce3d291c8af8f4deb3f1dcebba1a315d (patch)
treefd97eafbcdbf4dbcaaa172db45c1de5e9b928f57 /src/server/game/Entities/GameObject
parent1e84214f63bdf30705f22f2d324c3938351df9c2 (diff)
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)
Diffstat (limited to 'src/server/game/Entities/GameObject')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp10
1 files changed, 10 insertions, 0 deletions
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<ContentTuningLevels> userLevels = sDB2Manager.GetContentTuningData(GetGOInfo()->ContentTuningId, player->m_playerData->CtrOptions->ContentTuningConditionMask))
+ return uint8(advstd::clamp<int16>(player->GetLevel(), userLevels->MinLevel, userLevels->MaxLevel));
+
+ if (Unit const* targetUnit = target->ToUnit())
+ return targetUnit->GetLevel();
+ }
+
return 1;
}