From 2cea40a46647cadd48f66a39b8d576acfa8e11d1 Mon Sep 17 00:00:00 2001 From: Giacomo Pozzoni Date: Sun, 24 Nov 2019 21:00:42 +0100 Subject: [PATCH] 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. # Conflicts: # src/server/scripts/Spells/spell_generic.cpp --- src/server/game/Entities/GameObject/GameObject.cpp | 8 ++++++++ src/server/game/Entities/GameObject/GameObjectData.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 51cb64dc9a..f92904b737 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1224,6 +1224,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 3d66f9f575..bdf11ff600 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -465,6 +465,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; } }