aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
-rw-r--r--src/server/game/Spells/Spell.h1
-rw-r--r--src/server/game/Spells/SpellDefines.h3
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;