Core/Spells: Allow non-skill-based flying mounts to be used in designated areas.
- Flying mounts that are not in the "SKILL_MOUNT"-tree and area-restricted can now be used properly (ex. 64749 - Loaned Gryphon). - Remove isKnowHowFlyIn()-function (useless and deprecated since this is handled properly in the spellsystem). Massive thanks to rat for extremely good help and support on fixing this (most of this is his work).
This commit is contained in:
1 parent
dcd36c1bf6
commit
0e3607df5b
3 files changed
+10
-12
No files matched your search
@@ -25085,13 +25085,6 @@ uint32 Player::CalculateTalentsPoints() const
|
|||||||
return uint32(talentPointsForLevel * sWorld->getRate(RATE_TALENT));
|
return uint32(talentPointsForLevel * sWorld->getRate(RATE_TALENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::IsKnowHowFlyIn(uint32 mapid, uint32 zone) const
|
|
||||||
{
|
|
||||||
// continent checked in SpellInfo::CheckLocation at cast and area update
|
|
||||||
uint32 v_map = GetVirtualMapForMapAndZone(mapid, zone);
|
|
||||||
return v_map != 571 || HasSpell(54197); // Cold Weather Flying
|
|
||||||
}
|
|
||||||
|
|
||||||
void Player::LearnSpellHighestRank(uint32 spellid)
|
void Player::LearnSpellHighestRank(uint32 spellid)
|
||||||
{
|
{
|
||||||
LearnSpell(spellid, false);
|
LearnSpell(spellid, false);
|
||||||
|
|||||||
@@ -2136,8 +2136,6 @@ class Player : public Unit, public GridObject<Player>
|
|||||||
void SetFallInformation(uint32 time, float z);
|
void SetFallInformation(uint32 time, float z);
|
||||||
void HandleFall(MovementInfo const& movementInfo);
|
void HandleFall(MovementInfo const& movementInfo);
|
||||||
|
|
||||||
bool IsKnowHowFlyIn(uint32 mapid, uint32 zone) const;
|
|
||||||
|
|
||||||
void SetClientControl(Unit* target, bool allowMove);
|
void SetClientControl(Unit* target, bool allowMove);
|
||||||
|
|
||||||
void SetMover(Unit* target);
|
void SetMover(Unit* target);
|
||||||
|
|||||||
@@ -1482,12 +1482,19 @@ SpellCastResult SpellInfo::CheckLocation(uint32 map_id, uint32 zone_id, uint32 a
|
|||||||
case SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED:
|
case SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED:
|
||||||
case SPELL_AURA_FLY:
|
case SPELL_AURA_FLY:
|
||||||
{
|
{
|
||||||
if (player && !player->IsKnowHowFlyIn(map_id, zone_id))
|
if (player)
|
||||||
return SPELL_FAILED_INCORRECT_AREA;
|
{
|
||||||
|
SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(Id);
|
||||||
|
for (SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter)
|
||||||
|
{
|
||||||
|
// spell 54197 (Cold Weather Flying) is a prereq for flying in Northrend
|
||||||
|
if (skillIter->second->skillId == SKILL_MOUNTS && player->GetMapId() != 571 && !player->HasSpell(54197))
|
||||||
|
return SPELL_FAILED_INCORRECT_AREA; // maybe: SPELL_CUSTOM_ERROR_CANT_USE_THAT_MOUNT
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return SPELL_CAST_OK;
|
return SPELL_CAST_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user