From ec49ce5fc3d5d57109dd6bce405b1a05b3f351e1 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 13 Nov 2010 18:54:33 +0100 Subject: Core/Spells: Fixed possible crashes in scaling mounts code when player is not in a valid zone --HG-- branch : trunk --- src/server/game/Spells/SpellEffects.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/server/game/Spells/SpellEffects.cpp') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d1bb898d228..1d30b69588d 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4472,7 +4472,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) unitTarget->GetPosition(x, y, z); uint32 areaFlag = unitTarget->GetBaseMap()->GetAreaFlag(x, y, z); AreaTableEntry const *pArea = sAreaStore.LookupEntry(areaFlag); - if (canFly && pArea->flags & AREA_FLAG_NO_FLY_ZONE) + if (canFly && (pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE) || !pArea) canFly = false; switch(unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING)) @@ -4517,7 +4517,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) unitTarget->GetPosition(x, y, z); uint32 areaFlag = unitTarget->GetBaseMap()->GetAreaFlag(x, y, z); AreaTableEntry const *pArea = sAreaStore.LookupEntry(areaFlag); - if (canFly && pArea->flags & AREA_FLAG_NO_FLY_ZONE) + if (canFly && (pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE) || !pArea) canFly = false; switch(unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING)) @@ -4842,7 +4842,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) unitTarget->GetPosition(x, y, z); uint32 areaFlag = unitTarget->GetBaseMap()->GetAreaFlag(x, y, z); AreaTableEntry const *pArea = sAreaStore.LookupEntry(areaFlag); - if (canFly && pArea->flags & AREA_FLAG_NO_FLY_ZONE) + if (canFly && (pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE) || !pArea) canFly = false; switch(unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING)) @@ -4888,7 +4888,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) unitTarget->GetPosition(x, y, z); uint32 areaFlag = unitTarget->GetBaseMap()->GetAreaFlag(x, y, z); AreaTableEntry const *pArea = sAreaStore.LookupEntry(areaFlag); - if (canFly && pArea->flags & AREA_FLAG_NO_FLY_ZONE) + if (canFly && (pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE) || !pArea) canFly = false; switch(unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING)) @@ -4951,7 +4951,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) unitTarget->GetPosition(x, y, z); uint32 areaFlag = unitTarget->GetBaseMap()->GetAreaFlag(x, y, z); AreaTableEntry const *pArea = sAreaStore.LookupEntry(areaFlag); - if (canFly && pArea->flags & AREA_FLAG_NO_FLY_ZONE) + if (canFly && (pArea && pArea->flags & AREA_FLAG_NO_FLY_ZONE) || !pArea) canFly = false; switch(unitTarget->ToPlayer()->GetBaseSkillValue(SKILL_RIDING)) -- cgit v1.2.3