158 void EffectDistract();
160 void EffectSchoolDMG();
161 void EffectEnvironmentalDMG();
162 void EffectInstaKill();
164 void EffectTeleportUnits();
165 void EffectApplyAura();
166 void EffectSendEvent();
167 void EffectPowerBurn();
168 void EffectPowerDrain();
171 void EffectHealthLeech();
172 void EffectQuestComplete();
173 void EffectCreateItem();
174 void EffectCreateItem2();
175 void EffectCreateRandomItem();
176 void EffectPersistentAA();
177 void EffectEnergize();
178 void EffectOpenLock();
179 void EffectSummonChangeItem();
180 void EffectProficiency();
181 void EffectSummonType();
182 void EffectLearnSpell();
184 void EffectDualWield();
185 void EffectPickPocket();
186 void EffectAddFarsight();
187 void EffectUntrainTalents();
188 void EffectHealMechanical();
190 void EffectJumpDest();
191 void EffectLeapBack();
192 void EffectQuestClear();
193 void EffectTeleUnitsFaceCaster();
194 void EffectLearnSkill();
195 void EffectAddHonor();
196 void EffectTradeSkill();
197 void EffectEnchantItemPerm();
198 void EffectEnchantItemTmp();
199 void EffectTameCreature();
200 void EffectSummonPet();
201 void EffectLearnPetSpell();
202 void EffectWeaponDmg();
203 void EffectForceCast();
204 void EffectTriggerSpell();
205 void EffectTriggerMissileSpell();
207 void EffectHealMaxHealth();
208 void EffectInterruptCast();
209 void EffectSummonObjectWild();
210 void EffectScriptEffect();
211 void EffectSanctuary();
212 void EffectAddComboPoints();
215 void EffectSummonPlayer();
216 void EffectActivateObject();
217 void EffectApplyGlyph();
218 void EffectEnchantHeldItem();
219 void EffectSummonObject();
220 void EffectResurrect();
224 void EffectTransmitted();
225 void EffectDisEnchant();
226 void EffectInebriate();
227 void EffectFeedPet();
228 void EffectDismissPet();
229 void EffectReputation();
230 void EffectForceDeselect();
231 void EffectSelfResurrect();
232 void EffectSkinning();
234 void EffectChargeDest();
235 void EffectProspecting();
236 void EffectMilling();
237 void EffectRenamePet();
238 void EffectSendTaxi();
239 void EffectKnockBack();
240 void EffectPullTowards();
241 void EffectPullTowardsDest();
242 void EffectDispelMechanic();
243 void EffectResurrectPet();
244 void EffectDestroyAllTotems();
245 void EffectDurabilityDamage();
248 void EffectDurabilityDamagePCT();
249 void EffectModifyThreatPercent();
250 void EffectResurrectNew();
251 void EffectAddExtraAttacks();
252 void EffectSpiritHeal();
253 void EffectSkinPlayerCorpse();
254 void EffectStealBeneficialBuff();
255 void EffectUnlearnSpecialization();
256 void EffectHealPct();
257 void EffectEnergizePct();
258 void EffectTriggerRitualOfSummoning();
259 void EffectSummonRaFFriend();
260 void EffectKillCreditPersonal();
261 void EffectKillCredit();
262 void EffectQuestFail();
263 void EffectQuestStart();
264 void EffectRedirectThreat();
265 void EffectGameObjectDamage();
266 void EffectGameObjectRepair();
267 void EffectGameObjectSetDestructionState();
268 void EffectActivateRune();
269 void EffectCreateTamedPet();
270 void EffectDiscoverTaxi();
271 void EffectTitanGrip();
272 void EffectEnchantItemPrismatic();
273 void EffectPlayMusic();
274 void EffectSpecCount();
275 void EffectActivateSpec();
276 void EffectPlaySound();
277 void EffectRemoveAura();
278 void EffectCastButtons();
279 void EffectRechargeManaGem();
287 void SelectExplicitTargets();
289 void SelectSpellTargets();
303 void SelectEffectTypeImplicitTargets(
SpellEffectInfo const& spellEffectInfo);
306 template<
class SEARCHER>
void SearchTargets(SEARCHER& searcher,
uint32 containerMask,
WorldObject* referer,
Position const* pos,
float radius);
316 void update(
uint32 difftime);
317 void cast(
bool skipCheck =
false);
318 void finish(
bool ok =
true);
322 void TakeRunePower(
bool didHit);
330 void handle_immediate();
333 void _handle_immediate_phase();
334 void _handle_finish_phase();
344 bool CheckSpellCancelsAuraEffect(
AuraType auraType,
uint32* param1)
const;
345 bool CheckSpellCancelsCharm(
uint32* param1)
const;
346 bool CheckSpellCancelsStun(
uint32* param1)
const;
347 bool CheckSpellCancelsSilence(
uint32* param1)
const;
348 bool CheckSpellCancelsPacify(
uint32* param1)
const;
349 bool CheckSpellCancelsFear(
uint32* param1)
const;
350 bool CheckSpellCancelsConfuse(
uint32* param1)
const;
355 void DelayedChannel();
359 void DoCreateItem(
uint32 itemId);
366 bool CanAutoCast(
Unit* target);
374 void SendSpellStart();
376 void SendSpellCooldown();
377 void SendLogExecute();
378 void ExecuteLogEffectTakeTargetPower(
uint8 effIndex,
Unit* target,
uint32 powerType,
uint32 powerTaken,
float gainMultiplier);
379 void ExecuteLogEffectExtraAttacks(
uint8 effIndex,
Unit* victim,
uint32 attCount);
380 void ExecuteLogEffectInterruptCast(
uint8 effIndex,
Unit* victim,
uint32 spellId);
381 void ExecuteLogEffectDurabilityDamage(
uint8 effIndex,
Unit* victim,
int32 itemId,
int32 slot);
382 void ExecuteLogEffectOpenLock(
uint8 effIndex,
Object* obj);
383 void ExecuteLogEffectCreateItem(
uint8 effIndex,
uint32 entry);
384 void ExecuteLogEffectDestroyItem(
uint8 effIndex,
uint32 entry);
387 void ExecuteLogEffectResurrect(
uint8 effIndex,
Unit* target);
389 void SendChannelUpdate(
uint32 time);
390 void SendChannelStart(
uint32 duration);
391 void SendResurrectRequest(
Player* target);
394 void HandleThreatSpells();
413 if (target != m_comboTarget)
415 m_comboTarget = target;
416 m_comboPointGain = amount;
419 m_comboPointGain += amount;
430 void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; }
431 bool IsTriggered()
const;
432 bool IsIgnoringCooldowns()
const;
433 bool IsFocusDisabled()
const;
434 bool IsProcDisabled()
const;
435 bool IsChannelActive()
const;
436 bool IsAutoActionResetSpell()
const;
437 bool IsPositive()
const;
441 bool IsDeletable()
const {
return !m_referencedFromCurrentSpell && !m_executedCurrently; }
448 uint64 CalculateDelayMomentForDst()
const;
449 void RecalculateDelayMomentForDst();
453 bool IsNeedSendToClient()
const;
462 bool UpdatePointers();
463 void UpdateOriginalCasterPointer();
465 void CleanupTargetList();
475 void CallScriptOnResistAbsorbCalculateHandlers(
DamageInfo const& damageInfo,
uint32& resistAmount,
int32& absorbAmount);
482 bool HasGlobalCooldown()
const;
483 void TriggerGlobalCooldown();
484 void CancelGlobalCooldown();
485 void _cast(
bool skipCheck =
false);
488 std::pair<float, float> GetMinMaxRange(
bool strict)
const;
511 if (m_delayAtDamageCount >= 2)
514 ++m_delayAtDamageCount;
541 Unit* GetUnitCasterForEffectHandlers()
const;
559 void prepareDataForTriggerSystem();
580 void PreprocessTarget(
Spell* spell)
override;
582 void DoDamageAndTriggers(
Spell* spell)
override;
592 bool IsAlive =
false;
594 bool ScaleAura =
false;
601 bool Positive =
true;
605 Unit* _spellHitTarget =
nullptr;
606 bool _enablePVP =
false;
637 template <
class Container>
638 void DoProcessTargetContainer(
Container& targetContainer);
642 void AddUnitTarget(
Unit* target,
uint32 effectMask,
bool checkIfValid =
true,
bool implicit =
true,
Position const* losPosition =
nullptr);
644 void AddItemTarget(
Item* item,
uint32 effectMask);
645 void AddCorpseTarget(
Corpse* target,
uint32 effectMask);
648 void PreprocessSpellLaunch(
TargetInfo& targetInfo);
652 void DoTriggersOnSpellHit(
Unit* unit,
uint8 effMask);
653 bool UpdateChanneledTargetList();
654 bool IsValidDeadOrAliveTarget(
Unit const* target)
const;
655 void HandleLaunchPhase();
658 void PrepareTargetProcessing();
659 void FinishTargetProcessing();
662 void InitEffectExecuteData(
uint8 effIndex);
663 void AssertEffectExecuteData()
const;
667 void CallScriptBeforeCastHandlers();
668 void CallScriptOnCastHandlers();
669 void CallScriptAfterCastHandlers();
674 void CallScriptOnHitHandlers();
675 void CallScriptAfterHitHandlers();
679 bool CheckScriptEffectImplicitTargets(
uint32 effIndex,
uint32 effIndexToCheck);
685 triggeredSpell(spellInfo), triggeredByAura(auraSpellInfo), chance(procChance) { }
693 bool CanExecuteTriggersOnHit(
uint8 effMask,
SpellInfo const* triggeredByAura =
nullptr)
const;
694 void PrepareTriggersExecutedOnHit();
700 void CalculateJumpSpeeds(
SpellEffectInfo const& spellEffectInfo,
float dist,
float& speedXY,
float& speedZ);