From c6060dd0c511ddad3cb1f0423aa9ccf2de7aedec Mon Sep 17 00:00:00 2001 From: xinef1 Date: Mon, 6 Feb 2017 01:10:15 +0100 Subject: Core/Spells: Remade trajectory target selection (#19048) * Remade trajectory target selection * Added possibility to apply conditions to trajectory spells * Properly recalculate delay time if CMSG_UPDATE_PROJECTILE_POSITION is received --- src/server/game/Entities/Object/Position.cpp | 3 ++- src/server/game/Entities/Object/Position.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src/server/game/Entities') diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp index c9e6ea6eee8..0fdbaf8e008 100644 --- a/src/server/game/Entities/Object/Position.cpp +++ b/src/server/game/Entities/Object/Position.cpp @@ -159,11 +159,12 @@ bool Position::HasInArc(float arc, const Position* obj, float border) const return ((angle >= lborder) && (angle <= rborder)); } -bool Position::HasInLine(Position const* pos, float width) const +bool Position::HasInLine(Position const* pos, float objSize, float width) const { if (!HasInArc(float(M_PI), pos)) return false; + width += objSize; float angle = GetRelativeAngle(pos); return std::fabs(std::sin(angle)) * GetExactDist2d(pos->GetPositionX(), pos->GetPositionY()) < width; } diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h index 46c8d4874ec..db694a51bfd 100644 --- a/src/server/game/Entities/Object/Position.h +++ b/src/server/game/Entities/Object/Position.h @@ -230,7 +230,7 @@ public: bool IsWithinBox(const Position& center, float xradius, float yradius, float zradius) const; bool HasInArc(float arcangle, Position const* pos, float border = 2.0f) const; - bool HasInLine(Position const* pos, float width) const; + bool HasInLine(Position const* pos, float objSize, float width) const; std::string ToString() const; // modulos a radian orientation to the range of 0..2PI -- cgit v1.2.3