Core/Player: fix weapon dependent aura talents not applied on talent learn
Port From (https://github.com/TrinityCore/TrinityCore/commit/7f64eaa3ee28d3eb29f602dd0f36435734014789)
This commit is contained in:
@@ -2276,7 +2276,7 @@ namespace Game.Entities
|
|||||||
SendPacket(unlearnedSpells);
|
SendPacket(unlearnedSpells);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool IsNeedCastPassiveSpellAtLearn(SpellInfo spellInfo)
|
bool HandlePassiveSpellLearn(SpellInfo spellInfo)
|
||||||
{
|
{
|
||||||
// note: form passives activated with shapeshift spells be implemented by HandleShapeshiftBoosts instead of spell_learn_spell
|
// note: form passives activated with shapeshift spells be implemented by HandleShapeshiftBoosts instead of spell_learn_spell
|
||||||
// talent dependent passives activated at form apply have proper stance data
|
// talent dependent passives activated at form apply have proper stance data
|
||||||
@@ -2288,12 +2288,18 @@ namespace Game.Entities
|
|||||||
need_cast &= IsCurrentSpecMasterySpell(spellInfo);
|
need_cast &= IsCurrentSpecMasterySpell(spellInfo);
|
||||||
|
|
||||||
// Check EquippedItemClass
|
// Check EquippedItemClass
|
||||||
// passive spells which apply aura and have an item requirement are to be added in Player::ApplyItemDependentAuras
|
// passive spells which apply aura and have an item requirement are to be added manually, instead of casted
|
||||||
if (spellInfo.IsPassive() && spellInfo.EquippedItemClass >= 0)
|
if (spellInfo.EquippedItemClass >= 0)
|
||||||
{
|
{
|
||||||
foreach (SpellEffectInfo effectInfo in spellInfo.GetEffectsForDifficulty(Difficulty.None))
|
foreach (SpellEffectInfo effectInfo in spellInfo.GetEffectsForDifficulty(Difficulty.None))
|
||||||
|
{
|
||||||
if (effectInfo != null && effectInfo.IsAura())
|
if (effectInfo != null && effectInfo.IsAura())
|
||||||
|
{
|
||||||
|
if (!HasAura(spellInfo.Id) && HasItemFitToSpellRequirements(spellInfo))
|
||||||
|
AddAura(spellInfo.Id, this);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check CasterAuraStates
|
//Check CasterAuraStates
|
||||||
@@ -2400,7 +2406,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
{
|
{
|
||||||
if (spellInfo.IsPassive() && IsNeedCastPassiveSpellAtLearn(spellInfo))
|
if (spellInfo.IsPassive() && HandlePassiveSpellLearn(spellInfo))
|
||||||
CastSpell(this, spellId, true);
|
CastSpell(this, spellId, true);
|
||||||
}
|
}
|
||||||
else if (IsInWorld)
|
else if (IsInWorld)
|
||||||
@@ -2528,7 +2534,7 @@ namespace Game.Entities
|
|||||||
// also cast passive spells (including all talents without SPELL_EFFECT_LEARN_SPELL) with additional checks
|
// also cast passive spells (including all talents without SPELL_EFFECT_LEARN_SPELL) with additional checks
|
||||||
else if (spellInfo.IsPassive())
|
else if (spellInfo.IsPassive())
|
||||||
{
|
{
|
||||||
if (IsNeedCastPassiveSpellAtLearn(spellInfo))
|
if (HandlePassiveSpellLearn(spellInfo))
|
||||||
CastSpell(this, spellId, true);
|
CastSpell(this, spellId, true);
|
||||||
}
|
}
|
||||||
else if (spellInfo.HasEffect(SpellEffectName.SkillStep))
|
else if (spellInfo.HasEffect(SpellEffectName.SkillStep))
|
||||||
|
|||||||
Reference in New Issue
Block a user