diff options
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e2da8e1e8d9..d31b0ebfb05 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25085,6 +25085,13 @@ uint32 Player::CalculateTalentsPoints() const return uint32(talentPointsForLevel * sWorld->getRate(RATE_TALENT)); } +bool Player::canFlyInZone(uint32 mapid, uint32 zone) const +{ + // continent checked in SpellInfo::CheckLocation at cast and area update + uint32 v_map = GetVirtualMapForMapAndZone(mapid, zone); + return v_map != 571 || HasSpell(54197); // 54197 = Cold Weather Flying +} + void Player::LearnSpellHighestRank(uint32 spellid) { LearnSpell(spellid, false); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 8394193f8c1..ea073456a1d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2136,6 +2136,8 @@ class Player : public Unit, public GridObject<Player> void SetFallInformation(uint32 time, float z); void HandleFall(MovementInfo const& movementInfo); + bool canFlyInZone(uint32 mapid, uint32 zone) const; + void SetClientControl(Unit* target, bool allowMove); void SetMover(Unit* target); |
