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);
364 bool CanAutoCast(
Unit* target);
373 void SendSpellStart();
375 void SendSpellCooldown();
376 void SendLogExecute();
377 void ExecuteLogEffectTakeTargetPower(
uint8 effIndex,
Unit* target,
uint32 powerType,
uint32 powerTaken,
float gainMultiplier);
378 void ExecuteLogEffectExtraAttacks(
uint8 effIndex,
Unit* victim,
uint32 attCount);
379 void ExecuteLogEffectInterruptCast(
uint8 effIndex,
Unit* victim,
uint32 spellId);
380 void ExecuteLogEffectDurabilityDamage(
uint8 effIndex,
Unit* victim,
int32 itemId,
int32 slot);
381 void ExecuteLogEffectOpenLock(
uint8 effIndex,
Object* obj);
382 void ExecuteLogEffectCreateItem(
uint8 effIndex,
uint32 entry);
383 void ExecuteLogEffectDestroyItem(
uint8 effIndex,
uint32 entry);
386 void ExecuteLogEffectResurrect(
uint8 effIndex,
Unit* target);
388 void SendChannelUpdate(
uint32 time);
389 void SendChannelStart(
uint32 duration);
390 void SendResurrectRequest(
Player* target);
393 void HandleThreatSpells();
406 if (target != m_comboTarget)
408 m_comboTarget = target;
409 m_comboPointGain = amount;
412 m_comboPointGain += amount;
423 void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; }
424 bool IsTriggered()
const;
425 bool IsIgnoringCooldowns()
const;
426 bool IsFocusDisabled()
const;
427 bool IsProcDisabled()
const;
428 bool IsChannelActive()
const;
429 bool IsAutoActionResetSpell()
const;
430 bool IsPositive()
const;
434 bool IsDeletable()
const {
return !m_referencedFromCurrentSpell && !m_executedCurrently; }
441 uint64 CalculateDelayMomentForDst()
const;
442 void RecalculateDelayMomentForDst();
446 bool IsNeedSendToClient()
const;
455 bool UpdatePointers();
457 void CleanupTargetList();
467 void CallScriptOnResistAbsorbCalculateHandlers(
DamageInfo const& damageInfo,
uint32& resistAmount,
int32& absorbAmount);
474 bool HasGlobalCooldown()
const;
475 void TriggerGlobalCooldown();
476 void CancelGlobalCooldown();
477 void _cast(
bool skipCheck =
false);
480 std::pair<float, float> GetMinMaxRange(
bool strict)
const;
503 if (m_delayAtDamageCount >= 2)
506 ++m_delayAtDamageCount;
533 Unit* GetUnitCasterForEffectHandlers()
const;
551 void prepareDataForTriggerSystem();
572 void PreprocessTarget(
Spell* spell)
override;
574 void DoDamageAndTriggers(
Spell* spell)
override;
584 bool IsAlive =
false;
586 bool ScaleAura =
false;
593 bool Positive =
true;
597 Unit* _spellHitTarget =
nullptr;
598 bool _enablePVP =
false;
629 template <
class Container>
630 void DoProcessTargetContainer(
Container& targetContainer);
634 void AddUnitTarget(
Unit* target,
uint32 effectMask,
bool checkIfValid =
true,
bool implicit =
true,
Position const* losPosition =
nullptr);
636 void AddItemTarget(
Item* item,
uint32 effectMask);
637 void AddCorpseTarget(
Corpse* target,
uint32 effectMask);
640 void PreprocessSpellLaunch(
TargetInfo& targetInfo);
644 void DoTriggersOnSpellHit(
Unit* unit,
uint8 effMask);
645 bool UpdateChanneledTargetList();
646 bool IsValidDeadOrAliveTarget(
Unit const* target)
const;
647 void HandleLaunchPhase();
650 void PrepareTargetProcessing();
651 void FinishTargetProcessing();
654 void InitEffectExecuteData(
uint8 effIndex);
655 void AssertEffectExecuteData()
const;
659 void CallScriptBeforeCastHandlers();
660 void CallScriptOnCastHandlers();
661 void CallScriptAfterCastHandlers();
666 void CallScriptOnHitHandlers();
667 void CallScriptAfterHitHandlers();
671 bool CheckScriptEffectImplicitTargets(
uint32 effIndex,
uint32 effIndexToCheck);
677 triggeredSpell(spellInfo), triggeredByAura(auraSpellInfo), chance(procChance) { }
685 bool CanExecuteTriggersOnHit(
uint8 effMask,
SpellInfo const* triggeredByAura =
nullptr)
const;
686 void PrepareTriggersExecutedOnHit();
692 void CalculateJumpSpeeds(
SpellEffectInfo const& spellEffectInfo,
float dist,
float& speedXY,
float& speedZ);