mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
[8308] More generic code for new continent spell casting including fly form/mounts. Author: VladimirMangos
* Check new continent requirement by SPELL_ATTR_EX4_CAST_ONLY_IN_OUTLAND in
SpellMgr::GetSpellAllowedInLocationError.
* Also in this function let ignore any area requirement in GM-mode (except client side checks ofc if use spellbook/item)
* For fly form/mount auras check only speciaal reqirement like special fly skill and ignore it for dead state.
* Drop explicit fly auras drop at zone update, now this part GetSpellAllowedInLocationError functionality.
* Allow in `spell_area` have data deepndent from ghost auras
This all allow implement apply spells 55173/55164 to player ghost wiht DB support in `spell_area`
--HG--
branch : trunk
This commit is contained in:
@@ -5138,14 +5138,15 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
|
||||
break;
|
||||
}
|
||||
case SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED:
|
||||
case SPELL_AURA_FLY:
|
||||
case SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED:
|
||||
{
|
||||
// not allow cast fly spells at old maps by players (all spells is self target)
|
||||
if(m_originalCaster && m_originalCaster->GetTypeId()==TYPEID_PLAYER)
|
||||
// not allow cast fly spells if not have req. skills (all spells is self target)
|
||||
// allow always ghost flight spells
|
||||
if (m_originalCaster && m_originalCaster->GetTypeId() == TYPEID_PLAYER && m_originalCaster->isAlive())
|
||||
{
|
||||
if( !((Player*)m_originalCaster)->IsAllowUseFlyMountsHere() )
|
||||
return SPELL_FAILED_NOT_HERE;
|
||||
if (!((Player*)m_originalCaster)->IsKnowHowFlyIn(m_originalCaster->GetMapId(),m_originalCaster->GetMapId()))
|
||||
return m_IsTriggeredSpell ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_NOT_HERE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user