283 void EffectDistract();
284 void EffectSchoolDMG();
285 void EffectEnvironmentalDMG();
286 void EffectInstaKill();
288 void EffectTeleportUnits();
289 void EffectTeleportUnitsWithVisualLoadingScreen();
290 void EffectApplyAura();
291 void EffectSendEvent();
292 void EffectPowerBurn();
293 void EffectPowerDrain();
296 void EffectTeleportToReturnPoint();
297 void EffectIncreaseCurrencyCap();
298 void EffectHealthLeech();
299 void EffectQuestComplete();
300 void EffectCreateItem();
301 void EffectCreateItem2();
302 void EffectCreateRandomItem();
303 void EffectPersistentAA();
304 void EffectEnergize();
305 void EffectOpenLock();
306 void EffectSummonChangeItem();
307 void EffectProficiency();
308 void EffectSummonType();
309 void EffectLearnSpell();
311 void EffectDualWield();
312 void EffectPickPocket();
313 void EffectAddFarsight();
314 void EffectUntrainTalents();
315 void EffectHealMechanical();
317 void EffectJumpDest();
318 void EffectLeapBack();
319 void EffectQuestClear();
320 void EffectTeleUnitsFaceCaster();
321 void EffectLearnSkill();
322 void EffectPlayMovie();
323 void EffectTradeSkill();
324 void EffectEnchantItemPerm();
325 void EffectEnchantItemTmp();
326 void EffectTameCreature();
327 void EffectSummonPet();
328 void EffectLearnPetSpell();
329 void EffectWeaponDmg();
330 void EffectForceCast();
331 void EffectForceCast2();
332 void EffectTriggerSpell();
333 void EffectTriggerMissileSpell();
335 void EffectHealMaxHealth();
336 void EffectInterruptCast();
337 void EffectSummonObjectWild();
338 void EffectScriptEffect();
339 void EffectSanctuary();
342 void EffectSummonPlayer();
343 void EffectActivateObject();
344 void EffectApplyGlyph();
345 void EffectEnchantHeldItem();
346 void EffectSummonObject();
347 void EffectChangeRaidMarker();
348 void EffectResurrect();
352 void EffectTransmitted();
353 void EffectDisEnchant();
354 void EffectInebriate();
355 void EffectFeedPet();
356 void EffectDismissPet();
357 void EffectReputation();
358 void EffectForceDeselect();
359 void EffectSelfResurrect();
360 void EffectSkinning();
362 void EffectChargeDest();
363 void EffectProspecting();
364 void EffectMilling();
365 void EffectRenamePet();
366 void EffectSendTaxi();
367 void EffectKnockBack();
368 void EffectPullTowards();
369 void EffectPullTowardsDest();
370 void EffectDispelMechanic();
371 void EffectResurrectPet();
372 void EffectDestroyAllTotems();
373 void EffectDurabilityDamage();
376 void EffectDurabilityDamagePCT();
377 void EffectModifyThreatPercent();
378 void EffectResurrectNew();
379 void EffectAddExtraAttacks();
380 void EffectSpiritHeal();
381 void EffectSkinPlayerCorpse();
382 void EffectStealBeneficialBuff();
383 void EffectUnlearnSpecialization();
384 void EffectHealPct();
385 void EffectEnergizePct();
386 void EffectTriggerRitualOfSummoning();
387 void EffectSummonRaFFriend();
388 void EffectUnlockGuildVaultTab();
389 void EffectKillCreditPersonal();
390 void EffectKillCredit();
391 void EffectKillCreditLabel();
392 void EffectQuestFail();
393 void EffectQuestStart();
394 void EffectRedirectThreat();
395 void EffectGameObjectDamage();
396 void EffectGameObjectRepair();
397 void EffectGameObjectSetDestructionState();
398 void EffectCreateTamedPet();
399 void EffectDiscoverTaxi();
400 void EffectTitanGrip();
401 void EffectEnchantItemPrismatic();
402 void EffectPlayMusic();
403 void EffectActivateSpec();
404 void EffectPlaySound();
405 void EffectRemoveAura();
406 void EffectDamageFromMaxHealthPCT();
407 void EffectCastButtons();
408 void EffectRechargeItem();
409 void EffectGiveCurrency();
410 void EffectSummonPersonalGameObject();
411 void EffectResurrectWithAura();
412 void EffectCreateAreaTrigger();
413 void EffectRemoveTalent();
414 void EffectDestroyItem();
415 void EffectLearnGarrisonBuilding();
416 void EffectRemoveAuraBySpellLabel();
417 void EffectCreateGarrison();
418 void EffectCreateConversation();
419 void EffectCancelConversation();
420 void EffectAddGarrisonFollower();
421 void EffectActivateGarrisonBuilding();
422 void EffectGrantBattlePetLevel();
423 void EffectGiveExperience();
424 void EffectGiveRestedExperience();
425 void EffectHealBattlePetPct();
426 void EffectEnableBattlePets();
427 void EffectChangeBattlePetQuality();
428 void EffectLaunchQuestChoice();
429 void EffectUncageBattlePet();
430 void EffectCreateHeirloomItem();
431 void EffectUpgradeHeirloom();
432 void EffectApplyEnchantIllusion();
433 void EffectUpdatePlayerPhase();
434 void EffectUpdateZoneAurasAndPhases();
435 void EffectGiveArtifactPower();
436 void EffectGiveArtifactPowerNoBonus();
437 void EffectPlaySceneScriptPackage();
438 void EffectCreateSceneObject();
439 void EffectCreatePrivateSceneObject();
440 void EffectPlayScene();
441 void EffectGiveHonor();
442 void EffectJumpCharge();
443 void EffectLearnTransmogSet();
444 void EffectRespecAzeriteEmpoweredItem();
445 void EffectLearnAzeriteEssencePower();
446 void EffectCreatePrivateConversation();
447 void EffectApplyMountEquipment();
448 void EffectSkipCampaign();
449 void EffectSendChatMessage();
450 void EffectGrantBattlePetExperience();
451 void EffectLearnTransmogIllusion();
452 void EffectModifyAuraStacks();
453 void EffectModifyCooldown();
454 void EffectModifyCooldowns();
455 void EffectModifyCooldownsByCategory();
456 void EffectModifySpellCharges();
457 void EffectCreateTraitTreeConfig();
458 void EffectChangeActiveCombatTraitConfig();
459 void EffectTeleportGraveyard();
460 void EffectUpdateInteractions();
461 void EffectSkipQuestLine();
462 void EffectLearnWarbandScene();
463 void EffectSetPlayerDataElementAccount();
464 void EffectSetPlayerDataElementCharacter();
465 void EffectSetPlayerDataFlagAccount();
466 void EffectSetPlayerDataFlagCharacter();
467 void EffectEquipTransmogOutfit();
475 void SelectExplicitTargets();
477 void SelectSpellTargets();
492 void SelectEffectTypeImplicitTargets(
SpellEffectInfo const& spellEffectInfo);
495 template<
class SEARCHER>
static void SearchTargets(SEARCHER& searcher,
uint32 containerMask,
WorldObject* referer,
Position const* pos,
float radius);
508 void update(
uint32 difftime);
509 void cast(
bool skipCheck =
false);
514 void TakeRunePower(
bool didHit);
515 void RefundRunePower();
523 void handle_immediate();
526 void _handle_immediate_phase();
527 void _handle_finish_phase();
537 bool CheckSpellCancelsAuraEffect(
AuraType auraType,
int32* param1)
const;
538 bool CheckSpellCancelsCharm(
int32* param1)
const;
539 bool CheckSpellCancelsStun(
int32* param1)
const;
540 bool CheckSpellCancelsSilence(
int32* param1)
const;
541 bool CheckSpellCancelsPacify(
int32* param1)
const;
542 bool CheckSpellCancelsFear(
int32* param1)
const;
543 bool CheckSpellCancelsConfuse(
int32* param1)
const;
544 bool CheckSpellCancelsNoActions(
int32* param1)
const;
549 void DelayedChannel();
558 bool CanAutoCast(
Unit* target);
566 void SendSpellStart();
568 void SendSpellCooldown();
569 void SendSpellExecuteLog();
589 void SendSpellInterruptLog(
Unit* victim,
uint32 spellId);
590 void SendInterrupted(
uint8 result);
592 void SendChannelStart(
uint32 duration);
593 void SendResurrectRequest(
Player* target);
596 void HandleThreatSpells();
642 } EquipTransmogOutfit;
657 bool m_scriptWaitsForSpellHit =
false;
664 void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; }
665 bool IsTriggered()
const;
666 bool IsIgnoringCooldowns()
const;
667 bool IsFocusDisabled()
const;
668 bool IsProcDisabled()
const;
669 bool IsChannelActive()
const;
670 bool IsAutoActionResetSpell()
const;
671 bool IsPositive()
const;
674 void SetEmpowerReleasedByClient(
bool release);
675 bool CanReleaseEmpowerSpell()
const;
681 bool IsDeletable()
const {
return !m_referencedFromCurrentSpell && !m_executedCurrently; }
688 uint64 CalculateDelayMomentForDst(
float launchDelay)
const;
689 void RecalculateDelayMomentForDst();
690 void UpdateDelayMomentForDst(
uint64 hitDelay);
691 void UpdateDelayMomentForUnitTarget(
Unit* unit,
uint64 hitDelay);
695 bool IsNeedSendToClient()
const;
704 std::vector<SpellPowerCost>
const&
GetPowerCost()
const {
return m_powerCost; }
705 bool HasPowerTypeCost(
Powers power)
const;
708 bool UpdatePointers();
710 void CleanupTargetList();
729 void CallScriptOnResistAbsorbCalculateHandlers(
DamageInfo const& damageInfo,
uint32& resistAmount,
int32& absorbAmount);
735 static bool CanIncreaseRangeByMovement(
Unit const* unit);
740 bool HasGlobalCooldown()
const;
741 void TriggerGlobalCooldown();
742 void CancelGlobalCooldown();
743 void _cast(
bool skipCheck =
false);
767 if (m_delayAtDamageCount >= 2)
770 ++m_delayAtDamageCount;
779 bool IsReleasedByClient =
false;
780 bool IsReleased =
false;
809 Unit* GetUnitCasterForEffectHandlers()
const;
827 void prepareDataForTriggerSystem();
849 void PreprocessTarget(
Spell* spell)
override;
851 void DoDamageAndTriggers(
Spell* spell)
override;
857 bool Positive =
true;
863 bool IsAlive =
false;
874 Unit* _spellHitTarget =
nullptr;
875 bool _enablePVP =
false;
906 template <
class Container>
907 void DoProcessTargetContainer(Container& targetContainer);
913 void AddUnitTarget(
Unit* target,
uint32 effectMask,
bool checkIfValid =
true,
bool implicit =
true,
Position const* losPosition =
nullptr);
915 void AddItemTarget(
Item* item,
uint32 effectMask);
916 void AddCorpseTarget(
Corpse* target,
uint32 effectMask);
919 void PreprocessSpellLaunch(
TargetInfo& targetInfo);
923 void DoTriggersOnSpellHit(
Unit* unit);
924 bool UpdateChanneledTargetList();
925 bool IsValidDeadOrAliveTarget(
Unit const* target)
const;
926 void HandleLaunchPhase();
928 void ResetCombatTimers();
930 void PrepareTargetProcessing();
931 void FinishTargetProcessing();
935 void CallScriptOnPrecastHandler();
936 void CallScriptBeforeCastHandlers();
937 void CallScriptOnCastHandlers();
938 void CallScriptAfterCastHandlers();
940 int32 CallScriptCalcCastTimeHandlers(
int32 originalCastTime);
944 void CallScriptOnHitHandlers();
945 void CallScriptAfterHitHandlers();
947 void CallScriptCalcCritChanceHandlers(
Unit const* victim,
float& chance);
950 template <
class Script>
956 void CallScriptEmpowerStageCompletedHandlers(
int32 completedStagesCount);
957 void CallScriptEmpowerCompletedHandlers(
int32 completedStagesCount);
958 bool CheckScriptEffectImplicitTargets(
uint32 effIndex,
uint32 effIndexToCheck);
959 SpellScript* GetScriptByType(std::type_info
const& type)
const;
965 triggeredSpell(spellInfo), triggeredByAura(auraSpellInfo), chance(procChance) { }
973 bool CanExecuteTriggersOnHit(
Unit* unit,
SpellInfo const* triggeredByAura =
nullptr)
const;
974 void PrepareTriggersExecutedOnHit();
982 int32 GetSpellCastDataAmmo();