Core/Spells: Added custom spell cast arg

This commit is contained in:
Shauren
2022-12-14 00:32:57 +01:00
parent ba4c148a69
commit 1c52c31274
3 changed files with 6 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;