Merge branch '3.3.5' into 4.3.4
Conflicts: sql/base/dev/world_database.sql sql/updates/world/2015_07_14_00_world.sql sql/updates/world/2015_07_14_01_world_335.sql sql/updates/world/2015_07_19_00_world_2015_07_18_04.sql sql/updates/world/2015_07_19_05_world.sql sql/updates/world/2015_07_21_00_world.sql sql/updates/world/2015_07_24_00_world.sql sql/updates/world/2015_07_24_01_world.sql sql/updates/world/2015_07_24_02_world.sql sql/updates/world/2015_07_24_03_world.sql sql/updates/world/2015_07_24_04_world.sql sql/updates/world/2015_07_24_05_world.sql sql/updates/world/2015_07_25_03_world.sql sql/updates/world/2015_07_25_04_world.sql src/server/collision/Management/MMapManager.cpp src/server/collision/Management/MMapManager.h src/server/game/Battlefield/Battlefield.h src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h src/server/game/Guilds/Guild.h src/server/game/Server/WorldSession.cpp src/server/game/Server/WorldSocket.cpp src/server/game/Spells/SpellMgr.cpp src/server/game/Weather/WeatherMgr.cpp src/server/scripts/Spells/spell_hunter.cpp src/server/shared/Utilities/Util.cpp
This commit is contained in:
commit
86eb651757
156 files changed
+1402
-967
No files matched your search
@@ -1730,7 +1730,7 @@ float WorldObject::GetSightRange(const WorldObject* target) const
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, bool distanceCheck) const
|
||||
bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, bool distanceCheck, bool checkAlert) const
|
||||
{
|
||||
if (this == obj)
|
||||
return true;
|
||||
@@ -1802,7 +1802,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
|
||||
if (obj->IsInvisibleDueToDespawn())
|
||||
return false;
|
||||
|
||||
if (!CanDetect(obj, ignoreStealth))
|
||||
if (!CanDetect(obj, ignoreStealth, checkAlert))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -1813,7 +1813,7 @@ bool WorldObject::CanNeverSee(WorldObject const* obj) const
|
||||
return GetMap() != obj->GetMap() || !IsInPhase(obj);
|
||||
}
|
||||
|
||||
bool WorldObject::CanDetect(WorldObject const* obj, bool ignoreStealth) const
|
||||
bool WorldObject::CanDetect(WorldObject const* obj, bool ignoreStealth, bool checkAlert) const
|
||||
{
|
||||
const WorldObject* seer = this;
|
||||
|
||||
@@ -1828,7 +1828,7 @@ bool WorldObject::CanDetect(WorldObject const* obj, bool ignoreStealth) const
|
||||
if (!ignoreStealth && !seer->CanDetectInvisibilityOf(obj))
|
||||
return false;
|
||||
|
||||
if (!ignoreStealth && !seer->CanDetectStealthOf(obj))
|
||||
if (!ignoreStealth && !seer->CanDetectStealthOf(obj, checkAlert))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -1858,7 +1858,7 @@ bool WorldObject::CanDetectInvisibilityOf(WorldObject const* obj) const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WorldObject::CanDetectStealthOf(WorldObject const* obj) const
|
||||
bool WorldObject::CanDetectStealthOf(WorldObject const* obj, bool checkAlert) const
|
||||
{
|
||||
// Combat reach is the minimal distance (both in front and behind),
|
||||
// and it is also used in the range calculation.
|
||||
@@ -1908,9 +1908,19 @@ bool WorldObject::CanDetectStealthOf(WorldObject const* obj) const
|
||||
// Calculate max distance
|
||||
float visibilityRange = float(detectionValue) * 0.3f + combatReach;
|
||||
|
||||
if (visibilityRange > MAX_PLAYER_STEALTH_DETECT_RANGE)
|
||||
// If this unit is an NPC then player detect range doesn't apply
|
||||
if (unit && unit->GetTypeId() == TYPEID_PLAYER && visibilityRange > MAX_PLAYER_STEALTH_DETECT_RANGE)
|
||||
visibilityRange = MAX_PLAYER_STEALTH_DETECT_RANGE;
|
||||
|
||||
// When checking for alert state, look 8% further, and then 1.5 yards more than that.
|
||||
if (checkAlert)
|
||||
visibilityRange += (visibilityRange * 0.08f) + 1.5f;
|
||||
|
||||
// If checking for alert, and creature's visibility range is greater than aggro distance, No alert
|
||||
Unit const* tunit = obj->ToUnit();
|
||||
if (checkAlert && unit && unit->ToCreature() && visibilityRange >= unit->ToCreature()->GetAttackDistance(tunit) + unit->ToCreature()->m_CombatDistance)
|
||||
return false;
|
||||
|
||||
if (distance > visibilityRange)
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user