* Fix Hunters Mark, prevent target from going stealth/invis for caster of mark.

--HG--
branch : trunk
This commit is contained in:
biglad
2009-02-02 19:26:26 +00:00
parent ea159d59bf
commit 0b32bdaec9
+7 -2
View File
@@ -9951,9 +9951,9 @@ bool Unit::canDetectInvisibilityOf(Unit const* u) const
{ {
if(m_invisibilityMask & u->m_invisibilityMask) // same group if(m_invisibilityMask & u->m_invisibilityMask) // same group
return true; return true;
AuraList const& auras = GetAurasByType(SPELL_AURA_MOD_STALKED); // Hunter mark AuraList const& auras = u->GetAurasByType(SPELL_AURA_MOD_STALKED); // Hunter mark
for(AuraList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter) for(AuraList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter)
if((*iter)->GetCasterGUID()==u->GetGUID()) if((*iter)->GetCasterGUID()==GetGUID())
return true; return true;
if(uint32 mask = (m_detectInvisibilityMask & u->m_invisibilityMask)) if(uint32 mask = (m_detectInvisibilityMask & u->m_invisibilityMask))
@@ -10003,6 +10003,11 @@ bool Unit::canDetectStealthOf(Unit const* target, float distance) const
if(HasAuraType(SPELL_AURA_DETECT_STEALTH)) if(HasAuraType(SPELL_AURA_DETECT_STEALTH))
return true; return true;
AuraList const& auras = target->GetAurasByType(SPELL_AURA_MOD_STALKED); // Hunter mark
for(AuraList::const_iterator iter = auras.begin(); iter != auras.end(); ++iter)
if((*iter)->GetCasterGUID()==GetGUID())
return true;
//Visible distance based on stealth value (stealth rank 4 300MOD, 10.5 - 3 = 7.5) //Visible distance based on stealth value (stealth rank 4 300MOD, 10.5 - 3 = 7.5)
float visibleDistance = 10.5f - target->GetTotalAuraModifier(SPELL_AURA_MOD_STEALTH) / 100.0f; float visibleDistance = 10.5f - target->GetTotalAuraModifier(SPELL_AURA_MOD_STEALTH) / 100.0f;
//Visible distance is modified by -Level Diff (every level diff = 1.0f in visible distance) //Visible distance is modified by -Level Diff (every level diff = 1.0f in visible distance)