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
committerGitHub <noreply@github.com>2019-11-24 21:00:42 +0100
commit909941e1b44250b0fa646d363af817f40ca48355 (patch)
tree779eab478fa1063e044baa7c8f4983a907e2b7b6 /src/server/game/Entities/GameObject
parent94f186ee8342824da57eb0fb24378dacc67cbd64 (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.cpp8
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h1
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;
}
}