aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-12-16 22:44:55 +0100
committerShauren <shauren.trinity@gmail.com>2022-12-16 22:44:55 +0100
commit0cc5ab8372f19dad7412038d52dcd39db5e0e171 (patch)
tree99e621862e90fc9f073897445d4a8bdd4fbfa557 /src/server/game/Spells/Spell.cpp
parent9be60f240960f6538329b5e017f435c6237a89ea (diff)
Core/Players: Implemented new talent system
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 2cd10e0b4e8..58007c844ac 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -55,6 +55,7 @@
#include "SpellScript.h"
#include "TemporarySummon.h"
#include "TradeData.h"
+#include "TraitPackets.h"
#include "Util.h"
#include "VMapFactory.h"
#include "Vehicle.h"
@@ -4222,7 +4223,14 @@ void Spell::finish(bool ok)
Unit::ProcSkillsAndAuras(unitCaster, nullptr, PROC_FLAG_CAST_ENDED, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_NONE, PROC_HIT_NONE, this, nullptr, nullptr);
if (!ok)
+ {
+ // on failure (or manual cancel) send TraitConfigCommitFailed to revert talent UI saved config selection
+ if (m_caster->IsPlayer() && m_spellInfo->HasEffect(SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG))
+ if (WorldPackets::Traits::TraitConfig const* traitConfig = std::any_cast<WorldPackets::Traits::TraitConfig>(&m_customArg))
+ m_caster->ToPlayer()->SendDirectMessage(WorldPackets::Traits::TraitConfigCommitFailed(traitConfig->ID).Write());
+
return;
+ }
if (unitCaster->GetTypeId() == TYPEID_UNIT && unitCaster->IsSummon())
{