225 if (targetList.empty())
236 if (targetList.size() > 1 && !selectedTarget.
IsEmpty())
238 auto it = std::find_if(targetList.begin(), targetList.end(), [selectedTarget](
WorldObject*
object)
240 return object->GetGUID() == selectedTarget;
242 if (it != targetList.end())
243 firstTargetGUID = (*it)->GetGUID();
247 firstTargetGUID = targetList.front()->GetGUID();
250 script->SetFirstTarget(firstTargetGUID);
276 if (
GetHitUnit()->GetGUID() == script->GetFirstTarget())
277 AddPct(damage, aurEff->GetAmount());
291template<u
int32 TriggerSpellId>
297 template<u
int32 Trigger>
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterAreaTriggerAI(ai_name)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_FAILED_NOT_ON_GROUND
@ SPELL_FAILED_DONT_REPORT
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_FEATHER_FALL
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectCalcSpellModFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
void PreventDefaultAction()
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcSpellModHandler > DoEffectCalcSpellMod
AuraEffect * GetEffect(uint8 effIndex) const
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectProcHandler > OnEffectProc
uint8 GetStackAmount() const
Script * GetScript() const
static ObjectGuid const Empty
static Player * ToPlayer(Object *o)
void StartCooldown(SpellInfo const *spellInfo, uint32 itemId, Spell *spell=nullptr, bool onHold=false, Optional< Duration > forcedCooldown={})
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CheckCastHandler > OnCheckCast
int32 GetHitDamage() const
HookList< HitHandler > OnHit
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< CastHandler > BeforeCast
Difficulty GetCastDifficulty() const
void SetHitDamage(int32 damage)
WorldLocation const * GetExplTargetDest() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Unit * GetVehicleBase() const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
SpellHistory * GetSpellHistory()
ObjectGuid GetTarget() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
areatrigger_dh_generic_sigil(char const *script)
AreaTriggerAI * GetAI(AreaTrigger *at) const override
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void DecideFirstTarget(std::list< WorldObject * > &targetList)
bool Validate(SpellInfo const *) override
void HandleEffectProc(AuraEffect *aurEff, ProcEventInfo &)
ObjectGuid const & GetFirstTarget() const
ObjectGuid _firstTargetGUID
void SetFirstTarget(ObjectGuid const &targetGuid)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
SpellCastResult CheckCast()
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleEffectHitTarget(SpellEffIndex)
void CalculateSpellMod(AuraEffect const *aurEff, SpellModifier *&spellMod)
bool Validate(SpellInfo const *) override
void CalculateSpellMod(AuraEffect const *, AuraEffectHandleModes)
TC_GAME_API void Trigger(uint32 gameEventId, WorldObject *source, WorldObject *target)
void AddSC_demon_hunter_spell_scripts()
@ SPELL_DH_CONSUME_SOUL_HAVOC
@ SPELL_DH_FIERY_BRAND_DOT
@ SPELL_DH_METAMORPHOSIS_DUMMY
@ AREATRIGGER_DH_SHATTERED_SOULS_VENGEANCE
@ SPELL_DH_FEL_RUSH_GROUND
@ SPELL_DH_NEMESIS_ELEMENTALS
@ SPELL_DH_SIGIL_OF_FLAME_DAMAGE
@ SPELL_DH_NEMESIS_DEMONS
@ AREATRIGGER_DH_SOUL_FRAGMENT_VENGEANCE
@ SPELL_DH_SIGIL_OF_CHAINS_SNARE
@ SPELL_DH_NEMESIS_ABERRATIONS
@ SPELL_DH_DEMONIC_ORIGINS
@ SPELL_DH_SHATTERED_SOUL_LESSER_SOUL_FRAGMENT_1
@ SPELL_DH_CONSUME_SOUL_HAVOC_DEMON
@ SPELL_DH_EYE_OF_LEOTHERAS_DMG
@ SPELL_DH_FELBLADE_PROC_VISUAL
@ SPELL_DH_SHATTERED_SOUL
@ SPELL_DH_METAMORPHOSIS_IMPACT_DAMAGE
@ SPELL_DH_JAGGED_SPIKES_DMG
@ SPELL_DH_INFERNAL_STRIKE_JUMP
@ SPELL_DH_SIGIL_OF_CHAINS_GRIP
@ SPELL_DH_ANNIHILATION_MH
@ SPELL_DH_SIGIL_OF_CHAINS_VISUAL
@ SPELL_DH_SIGIL_OF_FLAME_AOE
@ SPELL_DH_CONSUME_SOUL_VENGEANCE_SHATTERED
@ SPELL_DH_NEMESIS_MECHANICALS
@ SPELL_DH_GLIDE_KNOCKBACK
@ SPELL_DH_SPIRIT_BOMB_VISUAL
@ SPELL_DH_RAIN_OF_CHAOS_IMPACT
@ SPELL_DH_FEL_BARRAGE_DMG
@ SPELL_DH_CHAOS_STRIKE_OH
@ SPELL_DH_GLIDE_DURATION
@ SPELL_DH_SIGIL_OF_SILENCE_AOE
@ SPELL_DH_CHAOS_STRIKE_MH
@ SPELL_DH_METAMORPHOSIS_RESET
@ SPELL_DH_SPIRIT_BOMB_DAMAGE
@ SPELL_DH_VENGEFUL_RETREAT
@ SPELL_DH_SOUL_FURNACE_DAMAGE_BUFF
@ SPELL_DH_ILLIDANS_GRASP_JUMP_DEST
@ SPELL_DH_ANNIHILATION_OH
@ SPELL_DH_SHATTER_SOUL_1
@ SPELL_DH_FEL_DEVASTATION_DMG
@ SPELL_DH_SIGIL_OF_MISERY_AOE
@ SPELL_DH_FELBLADE_PROC1
@ SPELL_DH_ILLIDANS_GRASP_DAMAGE
@ SPELL_DH_AWAKEN_THE_DEMON_WITHIN_CD
@ AREATRIGGER_DH_SOUL_FRAGMENT_HAVOC
@ SPELL_DH_FEL_RUSH_WATER_AIR
@ SPELL_DH_NEMESIS_UNDEAD
@ SPELL_DH_FELBLADE_CHARGE
@ SPELL_DH_DARKNESS_ABSORB
@ SPELL_DH_JAGGED_SPIKES_PROC
@ SPELL_DH_ABYSSAL_STRIKE
@ SPELL_DH_SOUL_FRAGMENT_COUNTER
@ SPELL_DH_METAMORPHOSIS_VENGEANCE_TRANSFORM
@ SPELL_DH_SHATTERED_SOUL_LESSER_SOUL_FRAGMENT_2
@ AREATRIGGER_DH_SHATTERED_SOULS_VENGEANCE_DEMON
@ SPELL_DH_CONSUME_SOUL_HEAL
@ SPELL_DH_FEL_BARRAGE_PROC
@ SPELL_DH_INFERNAL_STRIKE_IMPACT_DAMAGE
@ SPELL_DH_DEMONIC_ORIGINS_BUFF
@ SPELL_DH_NEMESIS_BEASTS
@ SPELL_DH_FEED_THE_DEMON
@ SPELL_DH_SOUL_CLEAVE_DMG
@ SPELL_DH_RAIN_FROM_ABOVE
@ SPELL_DH_METAMORPHOSIS_TRANSFORM
@ SPELL_DH_SHATTER_SOUL_2
@ SPELL_DH_SPIRIT_BOMB_HEAL
@ SPELL_DH_NEMESIS_HUMANOIDS
@ SPELL_DH_DEMONIC_TRAMPLE_STUN
@ SPELL_DH_DEMON_SPIKES_TRIGGER
@ AREATRIGGER_DH_SHATTERED_SOULS_HAVOC_DEMON
@ SPELL_DH_SIGIL_OF_CHAINS_SLOW
@ SPELL_DH_NEMESIS_CRITTERS
@ SPELL_DH_SIGIL_OF_FLAME_FLAME_CRASH
@ SPELL_DH_FEAST_OF_SOULS
@ SPELL_DH_FEL_DEVASTATION_HEAL
@ SPELL_DH_SIGIL_OF_SILENCE
@ SPELL_DH_INFERNAL_STRIKE_CAST
@ SPELL_DH_VENGEFUL_RETREAT_TRIGGER
@ SPELL_DH_BURNING_ALIVE_TARGET_SELECTOR
@ SPELL_DH_CHAOS_STRIKE_ENERGIZE
@ SPELL_DH_NEMESIS_GIANTS
@ SPELL_DH_DEMON_BLADES_DMG
@ SPELL_DH_ILLIDANS_GRASP
@ SPELL_DH_CONSUME_SOUL_VENGEANCE_DEMON
@ SPELL_DH_SIGIL_OF_CHAINS_JUMP
@ SPELL_DH_SIGIL_OF_CHAINS_AREA_SELECTOR
@ SPELL_DH_CONSUME_SOUL_VENGEANCE
@ AREATRIGGER_DH_SHATTERED_SOULS_HAVOC
@ SPELL_DH_SIGIL_OF_MISERY
@ SPELL_DH_FEAST_OF_SOULS_PERIODIC_HEAL
@ SPELL_DH_MANA_RIFT_DMG_POWER_BURN
@ SPELL_DH_NEMESIS_DRAGONKIN
@ SPELL_DH_FIERY_BRAND_DMG_REDUCTION_DEBUFF
@ SPELL_DH_SIGIL_OF_CHAINS_TARGET_SELECT
@ SPELL_DH_CONSUME_SOUL_HAVOC_SHATTERED
@ SPELL_DH_DEMONIC_TRAMPLE_DMG
@ SPELL_DH_FEL_DEVASTATION
@ SPELL_DH_UNCONTAINED_FEL
constexpr void GetPosition(float &x, float &y) const
areatrigger_dh_generic_sigilAI(AreaTrigger *at)
areatrigger_dh_sigil_of_chains(AreaTrigger *at)