diff options
author | Matan Shukry <matanshukry@gmail.com> | 2021-03-05 22:53:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-05 21:53:42 +0100 |
commit | 49b47047b809ce654661df595b14a5f8c1f01c8c (patch) | |
tree | 46049d1628b582ccb4a0ecdd44222735529cd6cb | |
parent | 6031e6ba0e9bec9f64b1310357be11e6cb4b88a2 (diff) |
Core/Spells: Implemented SPELL_AURA_ALLOW_TALENT_SWAPPING (#26205)
-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; |