diff options
| author | Hristo Bogdanov <hristo+github@fenix.international> | 2015-01-26 19:15:06 +0000 |
|---|---|---|
| committer | Nayd <dnpd.dd@gmail.com> | 2015-01-26 19:43:45 +0000 |
| commit | 08f790d6f98c10e481825ce5c64cd81e22f0c193 (patch) | |
| tree | 99dfb0648e8601469d3b65066fdfc74ce6a31985 /src/server/game/Entities | |
| parent | 25d9f9e38d7663b596a6c53e4ba34e59d318ef82 (diff) | |
Core/Creatures: No gray aggro config
(Custom) Adds option to disable aggro from gray creatures when the players are above/below certain levels.
Closes #13919
(cherry picked from commit 02e11a605640ff49aefbae299a44a1856156cec3)
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index e34d570e73f..1945c0608ea 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1433,9 +1433,29 @@ bool Creature::CanStartAttack(Unit const* who, bool force) const if (!CanCreatureAttack(who, force)) return false; + // No aggro from gray creatures + if (CheckNoGrayAggroConfig(who->getLevelForTarget(this), getLevelForTarget(who))) + return false; + return IsWithinLOSInMap(who); } + +bool Creature::CheckNoGrayAggroConfig(uint32 playerLevel, uint32 creatureLevel) const +{ + if (Trinity::XP::GetColorCode(playerLevel, creatureLevel) != XP_GRAY) + return false; + + uint32 notAbove = sWorld->getIntConfig(CONFIG_NO_GRAY_AGGRO_ABOVE); + uint32 notBelow = sWorld->getIntConfig(CONFIG_NO_GRAY_AGGRO_BELOW); + if (notAbove == 0 && notBelow == 0) + return false; + + if (playerLevel <= notBelow || (playerLevel >= notAbove && notAbove > 0)) + return true; + return false; +} + float Creature::GetAttackDistance(Unit const* player) const { float aggroRate = sWorld->getRate(RATE_CREATURE_AGGRO); diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 842624e0c01..a3230dd98ba 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -766,6 +766,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject private: void ForcedDespawn(uint32 timeMSToDespawn = 0); + bool CheckNoGrayAggroConfig(uint32 playerLevel, uint32 creatureLevel) const; // No aggro from gray creatures //WaypointMovementGenerator vars uint32 m_waypointID; |
