aboutsummaryrefslogtreecommitdiff
path: root/src/game/Player.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-05 16:33:34 -0500
committermegamage <none@none>2009-08-05 16:33:34 -0500
commit907342d5b0e7a68024fcc77ea125bc36ff3bacaa (patch)
treeadda2d7082d8daf370daba56a16a4774b8c497f3 /src/game/Player.cpp
parent31f989fab9cae85c35ef58857ca960581e6f0735 (diff)
[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
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r--src/game/Player.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index b5c50336369..54441fa1a16 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -19872,13 +19872,6 @@ void Player::SetClientControl(Unit* target, uint8 allowMove)
void Player::UpdateZoneDependentAuras( uint32 newZone )
{
- // remove new continent flight forms
- if( !IsAllowUseFlyMountsHere() )
- {
- RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED);
- RemoveAurasByType(SPELL_AURA_FLY);
- }
-
// Some spells applied at enter into zone (with subzones), aura removed in UpdateAreaDependentAuras that called always at zone->area update
SpellAreaForAreaMapBounds saBounds = spellmgr.GetSpellAreaForAreaMapBounds(newZone);
for(SpellAreaForAreaMap::const_iterator itr = saBounds.first; itr != saBounds.second; ++itr)
@@ -20485,14 +20478,11 @@ uint32 Player::CalculateTalentsPoints() const
return uint32(talentPointsForLevel * sWorld.getRate(RATE_TALENT));
}
-bool Player::IsAllowUseFlyMountsHere() const
+bool Player::IsKnowHowFlyIn(uint32 mapid, uint32 zone) const
{
- if (isGameMaster())
- return true;
-
- uint32 zoneId = GetZoneId();
- uint32 v_map = GetVirtualMapForMapAndZone(GetMapId(), zoneId);
- return v_map == 530 || v_map == 571 && HasSpell(54197) && zoneId != 4197;
+ // continent checked in SpellMgr::GetSpellAllowedInLocationError at cast and area update
+ uint32 v_map = GetVirtualMapForMapAndZone(mapid, zone);
+ return v_map != 571 || HasSpell(54197) && zone != 4197; // Cold Weather Flying
}
void Player::learnSpellHighRank(uint32 spellid)