diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/SpellDefines.h | 3 |
3 files changed, 6 insertions, 0 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index e833ae78f2c..d6dd69f9ead 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2829,6 +2829,8 @@ SpellCastResult WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32 spell->m_CastItem = triggeringAuraCaster->GetItemByGuid(args.TriggeringAura->GetBase()->GetCastItemGUID()); } + spell->m_customArg = args.CustomArg; + return spell->prepare(*targets.Targets, args.TriggeringAura); } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index e66f4f55ab6..41b8b99160c 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -576,6 +576,7 @@ class TC_GAME_API Spell uint32 Data[2]; } Raw; } m_misc; + std::any m_customArg; SpellCastVisual m_SpellVisual; SpellCastTargets m_targets; int8 m_comboPointGain; diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index c975c761d06..1fdc0231837 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -24,6 +24,7 @@ #include "ObjectGuid.h" #include "Optional.h" #include "Position.h" +#include <any> #include <vector> class AuraEffect; @@ -451,6 +452,7 @@ struct TC_GAME_API CastSpellExtraArgs CastSpellExtraArgs& SetOriginalCastId(ObjectGuid const& castId) { OriginalCastId = castId; return *this; } CastSpellExtraArgs& AddSpellMod(SpellValueMod mod, int32 val) { SpellValueOverrides.AddMod(mod, val); return *this; } CastSpellExtraArgs& AddSpellBP0(int32 val) { return AddSpellMod(SPELLVALUE_BASE_POINT0, val); } // because i don't want to type SPELLVALUE_BASE_POINT0 300 times + CastSpellExtraArgs& SetCustomArg(std::any customArg) { CustomArg = std::move(customArg); return *this; } TriggerCastFlags TriggerFlags = TRIGGERED_NONE; Item* CastItem = nullptr; @@ -473,6 +475,7 @@ struct TC_GAME_API CastSpellExtraArgs std::vector<std::pair<SpellValueMod, int32>> data; } SpellValueOverrides; + std::any CustomArg; CastSpellExtraArgs(CastSpellExtraArgs const&) = delete; CastSpellExtraArgs(CastSpellExtraArgs&&) = delete; |