diff options
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 17 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 1 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 834225c3d10..c14729e8a55 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -226,7 +226,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //155 SPELL_AURA_MOD_WATER_BREATHING &AuraEffect::HandleNoImmediateEffect, //156 SPELL_AURA_MOD_REPUTATION_GAIN &AuraEffect::HandleNULL, //157 SPELL_AURA_PET_DAMAGE_MULTI - &AuraEffect::HandleNULL, //158 SPELL_AURA_ALLOW_TALENT_SWAPPING + &AuraEffect::HandleAuraAllowTalentSwapping, //158 SPELL_AURA_ALLOW_TALENT_SWAPPING &AuraEffect::HandleNoImmediateEffect, //159 SPELL_AURA_NO_PVP_CREDIT only for Honorless Target spell &AuraEffect::HandleUnused, //160 Unused (4.3.4) old SPELL_AURA_MOD_AOE_AVOIDANCE &AuraEffect::HandleNoImmediateEffect, //161 SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT @@ -2536,6 +2536,21 @@ void AuraEffect::HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, b target->ModifySkillBonus(prot, (apply ? points : -points), GetAuraType() == SPELL_AURA_MOD_SKILL_TALENT); } +void AuraEffect::HandleAuraAllowTalentSwapping(AuraApplication const* aurApp, uint8 mode, bool apply) const +{ + if (!(mode & (AURA_EFFECT_HANDLE_REAL))) + return; + + Player* target = aurApp->GetTarget()->ToPlayer(); + if (!target) + return; + + if (apply) + target->AddUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS); + else if (!target->HasAuraType(GetAuraType())) + target->RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHANGING_TALENTS); +} + /****************************/ /*** MOVEMENT ***/ /****************************/ diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 233ed26100d..8326cc55840 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -177,6 +177,7 @@ class TC_GAME_API AuraEffect void HandleAuraUntrackable(AuraApplication const* aurApp, uint8 mode, bool apply) const; // skills & talents void HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, bool apply) const; + void HandleAuraAllowTalentSwapping(AuraApplication const* aurApp, uint8 mode, bool apply) const; // movement void HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraAllowFlight(AuraApplication const* aurApp, uint8 mode, bool apply) const; |