Core/Areas: Update AreaFlags
Port From (https://github.com/TrinityCore/TrinityCore/commit/f8f1c3b4f0ca631e76101f8492b9688c6d2dca01)
This commit is contained in:
@@ -5717,11 +5717,9 @@ namespace Game.Spells
|
||||
// allow always ghost flight spells
|
||||
if (m_originalCaster != null && m_originalCaster.IsTypeId(TypeId.Player) && m_originalCaster.IsAlive())
|
||||
{
|
||||
BattleField Bf = Global.BattleFieldMgr.GetBattlefieldToZoneId(m_originalCaster.GetMap(), m_originalCaster.GetZoneId());
|
||||
var area = CliDB.AreaTableStorage.LookupByKey(m_originalCaster.GetAreaId());
|
||||
if (area != null)
|
||||
if (area.HasFlag(AreaFlags.NoFlyZone) || (Bf != null && !Bf.CanFlyIn()))
|
||||
return SpellCastResult.NotHere;
|
||||
BattleField battleField = Global.BattleFieldMgr.GetBattlefieldToZoneId(m_originalCaster.GetMap(), m_originalCaster.GetZoneId());
|
||||
if (battleField != null && !battleField.CanFlyIn())
|
||||
return SpellCastResult.NotHere;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2827,14 +2827,14 @@ namespace Game.Spells
|
||||
|
||||
// Players can only fight a duel in zones with this flag
|
||||
AreaTableRecord casterAreaEntry = CliDB.AreaTableStorage.LookupByKey(caster.GetAreaId());
|
||||
if (casterAreaEntry != null && !casterAreaEntry.HasFlag(AreaFlags.AllowDuels))
|
||||
if (casterAreaEntry != null && !casterAreaEntry.GetFlags().HasFlag(AreaFlags.AllowDueling))
|
||||
{
|
||||
SendCastResult(SpellCastResult.NoDueling); // Dueling isn't allowed here
|
||||
return;
|
||||
}
|
||||
|
||||
AreaTableRecord targetAreaEntry = CliDB.AreaTableStorage.LookupByKey(target.GetAreaId());
|
||||
if (targetAreaEntry != null && !targetAreaEntry.HasFlag(AreaFlags.AllowDuels))
|
||||
if (targetAreaEntry != null && !targetAreaEntry.GetFlags().HasFlag(AreaFlags.AllowDueling))
|
||||
{
|
||||
SendCastResult(SpellCastResult.NoDueling); // Dueling isn't allowed here
|
||||
return;
|
||||
|
||||
@@ -842,19 +842,19 @@ namespace Game.Spells
|
||||
// continent limitation (virtual continent)
|
||||
if (HasAttribute(SpellAttr4.OnlyFlyingAreas))
|
||||
{
|
||||
uint mountFlags = 0;
|
||||
AreaMountFlags mountFlags = 0;
|
||||
if (player && player.HasAuraType(AuraType.MountRestrictions))
|
||||
{
|
||||
foreach (AuraEffect auraEffect in player.GetAuraEffectsByType(AuraType.MountRestrictions))
|
||||
mountFlags |= (uint)auraEffect.GetMiscValue();
|
||||
mountFlags |= (AreaMountFlags)auraEffect.GetMiscValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
AreaTableRecord areaTable = CliDB.AreaTableStorage.LookupByKey(area_id);
|
||||
if (areaTable != null)
|
||||
mountFlags = areaTable.MountFlags;
|
||||
mountFlags = areaTable.GetMountFlags();
|
||||
}
|
||||
if (!Convert.ToBoolean(mountFlags & (uint)AreaMountFlags.FlyingAllowed))
|
||||
if (!mountFlags.HasFlag(AreaMountFlags.AllowFlyingMounts))
|
||||
return SpellCastResult.IncorrectArea;
|
||||
|
||||
if (player)
|
||||
|
||||
Reference in New Issue
Block a user