summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game-server/trigger.cpp6
-rw-r--r--src/utils/point.h4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/game-server/trigger.cpp b/src/game-server/trigger.cpp
index f25b00b8..19ca3512 100644
--- a/src/game-server/trigger.cpp
+++ b/src/game-server/trigger.cpp
@@ -55,7 +55,11 @@ void TriggerArea::update()
//skip garbage
if (!(*i) || (*i)->getPublicID() == 0) continue;
- if (mZone.contains((*i)->getPosition())) //<-- Why is this additional condition necessary? Shouldn't getInsideRectangleIterator already exclude those outside of the zone? --Crush
+ // The BeingIterator returns the mapZones in touch with the rectangle
+ // area. On the other hand, the beings contained in the map zones
+ // may not be within the rectangle area. Hence, this additional
+ // contains() condition.
+ if (mZone.contains((*i)->getPosition()))
{
insideNow.insert(*i);
diff --git a/src/utils/point.h b/src/utils/point.h
index 4402aa09..988b6c5a 100644
--- a/src/utils/point.h
+++ b/src/utils/point.h
@@ -75,8 +75,8 @@ class Rectangle
bool contains(const Point &p) const
{
- return (p.x - x) < w &&
- (p.y - y) < h;
+ return (p.x >= x && p.x < x + w &&
+ p.y >= y && p.y < y + h);
}
bool intersects(const Rectangle &r) const