diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-11-24 21:00:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-11-24 21:00:42 +0100 |
| commit | 909941e1b44250b0fa646d363af817f40ca48355 (patch) | |
| tree | 779eab478fa1063e044baa7c8f4983a907e2b7b6 /src/server/game/Entities/GameObject | |
| parent | 94f186ee8342824da57eb0fb24378dacc67cbd64 (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.
Diffstat (limited to 'src/server/game/Entities/GameObject')
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObjectData.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index c21ab893fdc..20651695cac 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1291,6 +1291,14 @@ uint8 GameObject::GetLevelForTarget(WorldObject const* target) const if (Unit* owner = GetOwner()) return owner->GetLevelForTarget(target); + if (GetGoType() == GAMEOBJECT_TYPE_TRAP) + { + if (GetGOInfo()->trap.level != 0) + return GetGOInfo()->trap.level; + if (const Unit* targetUnit = target->ToUnit()) + return targetUnit->GetLevel(); + } + return 1; } diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index eb92b7605ea..c9ba759b543 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -454,6 +454,7 @@ struct GameObjectTemplate case GAMEOBJECT_TYPE_CHEST: return chest.losOK == 0; case GAMEOBJECT_TYPE_GOOBER: return goober.losOK == 0; case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.losOK == 0; + case GAMEOBJECT_TYPE_TRAP: return true; default: return false; } } |
