Core/Player: fix weapon dependent aura talents not applied on talent learn
This commit is contained in:
1 parent
1f8d2cd24d
commit
ca900fe2b4
2 files changed
+12
-6
No files matched your search
@@ -3427,7 +3427,7 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent
|
||||
|
||||
if (active)
|
||||
{
|
||||
if (spellInfo->IsPassive() && IsNeedCastPassiveSpellAtLearn(spellInfo))
|
||||
if (spellInfo->IsPassive() && HandlePassiveSpellLearn(spellInfo))
|
||||
CastSpell(this, spellId, true);
|
||||
}
|
||||
else if (IsInWorld())
|
||||
@@ -3572,7 +3572,7 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent
|
||||
// also cast passive spells (including all talents without SPELL_EFFECT_LEARN_SPELL) with additional checks
|
||||
else if (spellInfo->IsPassive())
|
||||
{
|
||||
if (IsNeedCastPassiveSpellAtLearn(spellInfo))
|
||||
if (HandlePassiveSpellLearn(spellInfo))
|
||||
CastSpell(this, spellId, true);
|
||||
}
|
||||
else if (spellInfo->HasEffect(SPELL_EFFECT_SKILL_STEP))
|
||||
@@ -3688,7 +3688,7 @@ void Player::RemoveTemporarySpell(uint32 spellId)
|
||||
m_spells.erase(itr);
|
||||
}
|
||||
|
||||
bool Player::IsNeedCastPassiveSpellAtLearn(SpellInfo const* spellInfo) const
|
||||
bool Player::HandlePassiveSpellLearn(SpellInfo const* spellInfo)
|
||||
{
|
||||
// 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
|
||||
@@ -3697,12 +3697,18 @@ bool Player::IsNeedCastPassiveSpellAtLearn(SpellInfo const* spellInfo) const
|
||||
(!form && spellInfo->HasAttribute(SPELL_ATTR2_NOT_NEED_SHAPESHIFT)));
|
||||
|
||||
// Check EquippedItemClass
|
||||
// passive spells which apply aura and have an item requirement are to be added in Player::ApplyItemDependentAuras
|
||||
if (spellInfo->IsPassive() && spellInfo->EquippedItemClass >= 0)
|
||||
// passive spells which apply aura and have an item requirement are to be added manually, instead of casted
|
||||
if (spellInfo->EquippedItemClass >= 0)
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
|
||||
{
|
||||
if (spellInfo->Effects[i].IsAura())
|
||||
{
|
||||
if (!HasAura(spellInfo->Id) && HasItemFitToSpellRequirements(spellInfo))
|
||||
AddAura(spellInfo->Id, this);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (spellInfo->HasAttribute(SPELL_ATTR8_MASTERY_SPECIALIZATION))
|
||||
|
||||
@@ -1760,7 +1760,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
bool HasActiveSpell(uint32 spell) const; // show in spellbook
|
||||
TrainerSpellState GetTrainerSpellState(TrainerSpell const* trainer_spell) const;
|
||||
bool IsSpellFitByClassAndRace(uint32 spell_id) const;
|
||||
bool IsNeedCastPassiveSpellAtLearn(SpellInfo const* spellInfo) const;
|
||||
bool HandlePassiveSpellLearn(SpellInfo const* spellInfo);
|
||||
bool IsCurrentSpecMasterySpell(SpellInfo const* spellInfo) const;
|
||||
|
||||
void SendProficiency(ItemClass itemClass, uint32 itemSubclassMask) const;
|
||||
|
||||
Reference in new issue
Block a user