Fixed old no-fly zone code to use area flags instead of hardcoded area ids (this fixes flying in Wintergrasp)
This does NOT implement no-fly zones! --HG-- branch : trunk
This commit is contained in:
@@ -1811,13 +1811,6 @@ void AuraEffect::PeriodicDummyTick(Unit * target, Unit * caster) const
|
||||
else
|
||||
target->RemoveAurasDueToSpell(58670);
|
||||
break;
|
||||
case 58600: // No fly Zone - Dalaran
|
||||
if (GetTickNumber() == 10)
|
||||
{
|
||||
target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
|
||||
target->RemoveAurasByType(SPELL_AURA_FLY);
|
||||
}
|
||||
break;
|
||||
case 62292: // Blaze (Pool of Tar)
|
||||
// should we use custom damage?
|
||||
target->CastSpell((Unit*)NULL, m_spellProto->EffectTriggerSpell[m_effIndex], true);
|
||||
|
||||
@@ -5357,9 +5357,9 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
// allow always ghost flight spells
|
||||
if (m_originalCaster && m_originalCaster->GetTypeId() == TYPEID_PLAYER && m_originalCaster->isAlive())
|
||||
{
|
||||
// 4197 = Wintergrasp || 4395 = Dalaran && 4564 = Krasus Landing
|
||||
if (m_originalCaster->GetZoneId() == 4197 || m_originalCaster->GetZoneId() == 4395 && m_originalCaster->GetAreaId() != 4564)
|
||||
return m_IsTriggeredSpell ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_NOT_HERE;
|
||||
if (AreaTableEntry *const pArea = GetAreaEntryByAreaID(m_originalCaster->GetAreaId()))
|
||||
if (pArea->flags & AREA_FLAG_NO_FLY_ZONE)
|
||||
return m_IsTriggeredSpell ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_NOT_HERE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2974,7 +2974,13 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
|
||||
switch(spellId)
|
||||
{
|
||||
case 58600: // No fly Zone - Dalaran (Krasus Landing exception)
|
||||
if (!player || player->GetAreaId() == 4564 || !player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && !player->HasAuraType(SPELL_AURA_FLY) || player->HasAura(44795))
|
||||
if (!player)
|
||||
return false;
|
||||
|
||||
AreaTableEntry *const pArea = GetAreaEntryByAreaID(player->GetAreaId());
|
||||
if (!(pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE))
|
||||
return false;
|
||||
if (!player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && !player->HasAuraType(SPELL_AURA_FLY) || player->HasAura(44795))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user