Core/Players: Fixed learning riding spells
Port From (https://github.com/TrinityCore/TrinityCore/commit/ae1dd8caf009b394cfc77592fdeff74809ab170b)
This commit is contained in:
@@ -60,6 +60,8 @@ namespace Framework.Constants
|
|||||||
public const uint WarmodeEnlistedSpellOutside = 269083;
|
public const uint WarmodeEnlistedSpellOutside = 269083;
|
||||||
|
|
||||||
public const uint SpellExperienceEliminated = 206662;
|
public const uint SpellExperienceEliminated = 206662;
|
||||||
|
public const uint SpellApprenticeRiding = 33389;
|
||||||
|
public const uint SpellJourneymanRiding = 33391;
|
||||||
|
|
||||||
public const uint CurrencyMaxCapAncientMana = 2000;
|
public const uint CurrencyMaxCapAncientMana = 2000;
|
||||||
|
|
||||||
|
|||||||
@@ -1654,10 +1654,6 @@ namespace Game.Entities
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// AcquireMethod == 2 && NumSkillUps == 1 -. automatically learn riding skill spell, else we skip it (client shows riding in spellbook as trainable).
|
|
||||||
if (skillId == (uint)SkillType.Riding && (ability.AcquireMethod != AbilityLearnType.OnSkillLearn || ability.NumSkillUps != 1))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Check race if set
|
// Check race if set
|
||||||
var raceMask = new RaceMask<long>(ability.RaceMask);
|
var raceMask = new RaceMask<long>(ability.RaceMask);
|
||||||
if (!raceMask.IsEmpty() && !raceMask.HasRace(race))
|
if (!raceMask.IsEmpty() && !raceMask.HasRace(race))
|
||||||
@@ -1667,8 +1663,18 @@ namespace Game.Entities
|
|||||||
if (ability.ClassMask != 0 && !Convert.ToBoolean(ability.ClassMask & classMask))
|
if (ability.ClassMask != 0 && !Convert.ToBoolean(ability.ClassMask & classMask))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// check level, skip class spells if not high enough
|
// Check level, skip class spells if not high enough
|
||||||
if (GetLevel() < spellInfo.SpellLevel)
|
uint requiredLevel = Math.Max(spellInfo.SpellLevel, spellInfo.BaseLevel);
|
||||||
|
|
||||||
|
// riding special cases
|
||||||
|
if (skillId == (uint)SkillType.Riding)
|
||||||
|
{
|
||||||
|
if ((GetClassMask() & ((1 << ((int)Class.Deathknight - 1)) | (1 << ((int)Class.DemonHunter - 1)))) != 0
|
||||||
|
&& (ability.Spell == PlayerConst.SpellApprenticeRiding || ability.Spell == PlayerConst.SpellJourneymanRiding))
|
||||||
|
requiredLevel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requiredLevel > GetLevel())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// need unlearn spell
|
// need unlearn spell
|
||||||
|
|||||||
@@ -6083,11 +6083,11 @@ namespace Game
|
|||||||
var raceMask = new RaceMask<long>(rcInfo.RaceMask);
|
var raceMask = new RaceMask<long>(rcInfo.RaceMask);
|
||||||
for (Race raceIndex = Race.Human; raceIndex < Race.Max; ++raceIndex)
|
for (Race raceIndex = Race.Human; raceIndex < Race.Max; ++raceIndex)
|
||||||
{
|
{
|
||||||
if (raceMask.HasRace(raceIndex))
|
if (raceMask.IsEmpty() || raceMask.HasRace(raceIndex))
|
||||||
{
|
{
|
||||||
for (Class classIndex = Class.Warrior; classIndex < Class.Max; ++classIndex)
|
for (Class classIndex = Class.Warrior; classIndex < Class.Max; ++classIndex)
|
||||||
{
|
{
|
||||||
if (rcInfo.ClassMask == -1 || Convert.ToBoolean((1 << ((int)classIndex - 1)) & rcInfo.ClassMask))
|
if (rcInfo.ClassMask == -1 || rcInfo.ClassMask == 0 || Convert.ToBoolean((1 << ((int)classIndex - 1)) & rcInfo.ClassMask))
|
||||||
{
|
{
|
||||||
PlayerInfo info = _playerInfo.LookupByKey(Tuple.Create(raceIndex, classIndex));
|
PlayerInfo info = _playerInfo.LookupByKey(Tuple.Create(raceIndex, classIndex));
|
||||||
if (info != null)
|
if (info != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user