mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Spells: Allow spell scripts to access other scripts attached to a spell
This commit is contained in:
@@ -9167,6 +9167,14 @@ bool Spell::CheckScriptEffectImplicitTargets(uint32 effIndex, uint32 effIndexToC
|
||||
return true;
|
||||
}
|
||||
|
||||
SpellScript* Spell::GetScriptByType(std::type_info const& type) const
|
||||
{
|
||||
auto itr = std::ranges::find(m_loadedScripts, type, [](SpellScript* script) -> std::type_info const& { return typeid(*script); });
|
||||
if (itr != m_loadedScripts.end())
|
||||
return *itr;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool Spell::CanExecuteTriggersOnHit(Unit* unit, SpellInfo const* triggeredByAura /*= nullptr*/) const
|
||||
{
|
||||
bool onlyOnTarget = (triggeredByAura && (triggeredByAura->HasAttribute(SPELL_ATTR4_CLASS_TRIGGER_ONLY_ON_TARGET)));
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "Types.h"
|
||||
#include "UniqueTrackablePtr.h"
|
||||
#include <memory>
|
||||
#include <typeinfo>
|
||||
|
||||
namespace WorldPackets::Spells
|
||||
{
|
||||
@@ -920,6 +921,8 @@ class TC_GAME_API Spell
|
||||
void CallScriptCalcCritChanceHandlers(Unit const* victim, float& chance);
|
||||
void CallScriptCalcDamageHandlers(SpellEffectInfo const& spellEffectInfo, Unit* victim, int32& damage, int32& flatMod, float& pctMod);
|
||||
void CallScriptCalcHealingHandlers(SpellEffectInfo const& spellEffectInfo, Unit* victim, int32& healing, int32& flatMod, float& pctMod);
|
||||
template <class Script>
|
||||
Script* GetScript() const { return static_cast<Script*>(GetScriptByType(typeid(Script))); }
|
||||
protected:
|
||||
void CallScriptObjectAreaTargetSelectHandlers(std::list<WorldObject*>& targets, SpellEffIndex effIndex, SpellImplicitTargetInfo const& targetType);
|
||||
void CallScriptObjectTargetSelectHandlers(WorldObject*& target, SpellEffIndex effIndex, SpellImplicitTargetInfo const& targetType);
|
||||
@@ -927,6 +930,7 @@ class TC_GAME_API Spell
|
||||
void CallScriptEmpowerStageCompletedHandlers(int32 completedStagesCount);
|
||||
void CallScriptEmpowerCompletedHandlers(int32 completedStagesCount);
|
||||
bool CheckScriptEffectImplicitTargets(uint32 effIndex, uint32 effIndexToCheck);
|
||||
SpellScript* GetScriptByType(std::type_info const& type) const;
|
||||
std::vector<SpellScript*> m_loadedScripts;
|
||||
|
||||
struct HitTriggerSpell
|
||||
|
||||
Reference in New Issue
Block a user