diff options
| author | Aokromes <Aokromes@users.noreply.github.com> | 2016-07-06 10:23:12 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-07-06 10:23:12 +0200 |
| commit | fda9f1a1367dfe5f7829b8223afa2057429a8020 (patch) | |
| tree | 1e3d959e46dfcb993b759974633684515be858bb /src | |
| parent | cfbfa8158ac1220aaed669fde77e1fd96e70a96e (diff) | |
Core/Mmaps: Charge ignoring z position of target (#17516)
* Core/Mmaps: Charge ignoring z position of target
By cemak closes #15011
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Movement/PathGenerator.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Movement/PathGenerator.h | 1 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Movement/PathGenerator.cpp b/src/server/game/Movement/PathGenerator.cpp index 45d8401bcba..0cec5a1a541 100644 --- a/src/server/game/Movement/PathGenerator.cpp +++ b/src/server/game/Movement/PathGenerator.cpp @@ -942,3 +942,8 @@ void PathGenerator::ReducePathLenghtByDist(float dist) nextVec = currVec; // we're going backwards } } + +bool PathGenerator::IsInvalidDestinationZ(Unit const* target) const +{ + (target->GetPositionZ() - GetActualEndPosition().z) > 5.0f; +} diff --git a/src/server/game/Movement/PathGenerator.h b/src/server/game/Movement/PathGenerator.h index 3cad62abf25..16627dfd448 100644 --- a/src/server/game/Movement/PathGenerator.h +++ b/src/server/game/Movement/PathGenerator.h @@ -58,6 +58,7 @@ class TC_GAME_API PathGenerator // Calculate the path from owner to given destination // return: true if new path was calculated, false otherwise (no change needed) bool CalculatePath(float destX, float destY, float destZ, bool forceDest = false, bool straightLine = false); + bool IsInvalidDestinationZ(Unit const* target) const // option setters - use optional void SetUseStraightPath(bool useStraightPath) { _useStraightPath = useStraightPath; } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a16c03dd0df..63c65dbef43 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5194,7 +5194,11 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_OUT_OF_RANGE; else if (!result || m_preGeneratedPath.GetPathType() & (PATHFIND_NOPATH | PATHFIND_INCOMPLETE)) return SPELL_FAILED_NOPATH; + else if (m_preGeneratedPath.IsInvalidDestinationZ(target)) // Check position z, if not in a straight line + return SPELL_FAILED_NOPATH; } + else if (m_preGeneratedPath.IsInvalidDestinationZ(target)) // Check position z, if in a straight line + return SPELL_FAILED_NOPATH; m_preGeneratedPath.ReducePathLenghtByDist(objSize); // move back } |
