aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-05-26 22:29:57 +0200
committerShauren <shauren.trinity@gmail.com>2024-05-27 18:53:47 +0200
commit1c3268155d0165e150d239c3a808d5a8dddeae18 (patch)
tree764d238d71e7349d6001edd21dec25cefaf7d4a6 /src/server/game/Entities
parentb070e63fa867f7f25e73e9ef3aafbe18902a50e9 (diff)
Core/AreaTriggers: Implement height check for polygon db2 areatriggers
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index b06f41e0619..5b277b524b8 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2039,9 +2039,12 @@ bool Player::IsInAreaTrigger(AreaTriggerEntry const* areaTrigger) const
return false;
break;
case 3: // Polygon
- if (!IsInPolygon2D(areaTriggerPos, sObjectMgr->GetVerticesForAreaTrigger(areaTrigger)))
+ {
+ AreaTriggerPolygon const* polygon = sObjectMgr->GetAreaTriggerPolygon(areaTrigger->ID);
+ if (!polygon || (polygon->Height && GetPositionZ() > areaTrigger->Pos.Z + *polygon->Height) || !IsInPolygon2D(areaTriggerPos, polygon->Vertices))
return false;
break;
+ }
case 4: // Cylinder
if (!IsWithinVerticalCylinder(areaTriggerPos, areaTrigger->Radius, areaTrigger->BoxHeight))
return false;