Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SpellAuraMetadata.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "SpellAuraMetadata.h"
7#include "SpellAuraDefines.h"
8#include "SpellValidation.h"
9
10namespace Skyfire
11{
12namespace Spells
13{
14 namespace
15 {
16 struct SpellIdPair
17 {
18 uint32 AuraSpellId;
19 uint32 TriggerSpellId;
20 };
21
22 struct ShapeshiftBoostSpellInfo
23 {
26 uint8 SpellCount;
27 };
28
29 struct RaceGenderDisplayInfo
30 {
31 uint8 Race;
32 uint32 MaleDisplayId;
33 uint32 FemaleDisplayId;
34 };
35
36 struct TransformDisplayInfo
37 {
38 uint32 AuraSpellId;
39 bool RequiresPlayerRace;
40 RaceGenderDisplayInfo const* RaceDisplays;
41 uint8 RaceDisplayCount;
42 uint32 MaleDisplayId;
43 uint32 FemaleDisplayId;
44 };
45
46 enum AuraImmunityAmountCondition
47 {
48 AURA_IMMUNITY_AMOUNT_ANY,
49 AURA_IMMUNITY_AMOUNT_NONZERO,
50 AURA_IMMUNITY_AMOUNT_ZERO,
51 AURA_IMMUNITY_AMOUNT_ONE
52 };
53
54 struct AuraStateImmunityRuleInfo
55 {
57 AuraImmunityAmountCondition AmountCondition;
58 };
59
60 struct GenderedAuraSpellInfo
61 {
62 uint32 AuraSpellId;
63 uint32 FemaleSpellId;
64 uint32 MaleSpellId;
65 };
66
67 struct AuraRemoveTriggerSpellInfo
68 {
69 uint32 AuraSpellId;
70 uint32 NormalSpellId;
71 uint32 HeroicSpellId;
72 };
73
74 struct LichKingIntroVoiceoverInfo
75 {
76 uint32 AuraSpellId;
77 uint32 ApplySoundId;
78 uint32 RemoveSoundId;
79 uint32 ContinueSpellId;
80 };
81
82 enum ShapeshiftFormId
83 {
84 SHAPESHIFT_FORM_CAT = 0x01,
85 SHAPESHIFT_FORM_TRAVEL = 0x03,
86 SHAPESHIFT_FORM_AQUA = 0x04,
87 SHAPESHIFT_FORM_BEAR = 0x05,
88 SHAPESHIFT_FORM_BATTLE_STANCE = 0x11,
89 SHAPESHIFT_FORM_DEFENSIVE_STANCE = 0x12,
90 SHAPESHIFT_FORM_BERSERKER_STANCE = 0x13,
91 SHAPESHIFT_FORM_METAMORPHOSIS = 0x16,
92 SHAPESHIFT_FORM_FLIGHT_EPIC = 0x1B,
93 SHAPESHIFT_FORM_SHADOW = 0x1C,
94 SHAPESHIFT_FORM_FLIGHT = 0x1D,
95 SHAPESHIFT_FORM_MOONKIN = 0x1F,
96 SHAPESHIFT_FORM_SPIRIT_OF_REDEMPTION = 0x20
97 };
98
99 uint32 const SPELL_SHADOW_FOCUS_DUMMY_TALENT = 108209;
100 uint32 const SPELL_SHADOW_FOCUS_AURA = 112942;
101 uint8 const RACE_HUMAN_ID = 1;
102 uint8 const RACE_ORC_ID = 2;
103 uint8 const RACE_DWARF_ID = 3;
104 uint8 const RACE_NIGHTELF_ID = 4;
105 uint8 const RACE_UNDEAD_PLAYER_ID = 5;
106 uint8 const RACE_TAUREN_ID = 6;
107 uint8 const RACE_GNOME_ID = 7;
108 uint8 const RACE_TROLL_ID = 8;
109 uint8 const RACE_BLOODELF_ID = 10;
110 uint8 const RACE_DRAENEI_ID = 11;
111 uint8 const GENDER_MALE_ID = 0;
112 uint8 const GENDER_FEMALE_ID = 1;
113 uint32 const DISPLAY_UNKNOWN_TRANSFORM_FALLBACK = 16358;
114 uint32 const SPELL_GLYPH_OF_THE_PENGUIN = 52648;
115 uint32 const DISPLAY_GLYPH_OF_THE_PENGUIN = 26452;
116 uint32 const SPELL_DRAGONMAW_ILLUSION = 42016;
117 uint32 const DISPLAY_DRAGONMAW_ILLUSION_MOUNT = 16314;
118 uint32 const SPELL_LEADER_OF_THE_PACK = 17007;
119 uint32 const SPELL_LEADER_OF_THE_PACK_TRIGGERED = 24932;
121 uint32 const SPELL_NET_O_MATIC_SELF_ROOT = 13138;
122 uint32 const SPELL_KILL_COMMAND_OWNER_AURA = 34027;
123 uint32 const SPELL_KILL_COMMAND_PET_AURA = 58914;
124 uint32 const SPELL_PERIODIC_FRENZIED_REGENERATION_HEAL = 22845;
125 uint32 const SPELL_PERIODIC_EXPLOSIVE_SHOT_TRIGGER = 53352;
126 uint32 const SPELL_PERIODIC_DEATH_AND_DECAY_TRIGGER = 52212;
127 uint32 const SPELL_PERIODIC_HYSTERIA = 49016;
128 uint32 const SPELL_PERIODIC_RESTORATION_ENERGIZE = 23493;
129 uint32 const SPELL_PERIODIC_FROST_BLAST_TRIGGER = 29879;
130 uint32 const SPELL_PERIODIC_DOOM_TRIGGER = 31350;
131 uint32 const NPC_SPELLCLOTH_ELEMENTAL = 17870;
132 uint32 const SPELL_EYE_OF_GRILLOK = 38495;
133 uint32 const SPELL_TOTEMIC_MASTERY_AURA = 38443;
134 uint32 const SPELL_TOTEMIC_MASTERY_TRIGGER = 38437;
135 uint32 const SPELL_DRAIN_SOUL_SHARD = 95810;
136 uint32 const SPELL_TENACITY = 58549;
137 uint32 const SPELL_WILD_GROWTH_T10_RESTORATION = 70658;
138 uint32 const SPELL_MANA_FEED_TRIGGER = 32554;
139 uint32 const SPELL_HEROIC_FURY_COOLDOWN = 20252;
140 uint32 const SPELL_DRUID_T8_RESTORATION = 64760;
141 uint32 const SPELL_DRUID_T8_RESTORATION_TRIGGER = 64801;
142 uint32 const SPELL_DRUID_CAT_FORM = 768;
143 uint32 const SPELL_DRUID_BEAR_FORM = 5487;
144 uint32 const SPELL_POLYMORPH_SHEEP_SOUND = 61634;
145 uint32 const SPELL_POLYMORPH_PENGUIN_SOUND = 61635;
146 uint32 const SPELL_IMPROVED_DEVOURING_PLAGUE_DAMAGE = 63675;
147 uint32 const SPELL_IMPROVED_DEVOURING_PLAGUE_HEAL = 75999;
148 uint32 const SPELL_GLYPH_OF_POWER_WORD_SHIELD = 55672;
149 uint32 const SPELL_GLYPH_OF_POWER_WORD_SHIELD_HEAL = 56160;
150 uint32 const SPELL_GLYPH_OF_BLURRED_SPEED = 58039;
151 uint32 const SPELL_GLYPH_OF_BLURRED_SPEED_SPRINT = 61922;
152 uint32 const SPELL_AVENGING_WRATH = 61987;
153 uint32 const SPELL_FORBEARANCE = 25771;
154 uint32 const SPELL_AVENGING_WRATH_MARKER = 61988;
155 uint32 const SPELL_SHARED_SUFFERING_TRIGGER = 72373;
156 uint32 const SPELL_INVISIBILITY_FADE = 32612;
157 uint32 const SPELL_RAPTURE_RANK = 47535;
158 uint32 const SPELL_RAPTURE_ENERGIZE = 47755;
159 uint32 const SPELL_GLYPH_OF_FREEZING_TRAP = 56845;
160 uint32 const SPELL_GLYPH_OF_FREEZING_TRAP_TRIGGER = 61394;
161 uint32 const SPELL_PROWL = 5215;
162 uint32 const SPELL_STEALTH = 1784;
163 uint32 const SPELL_DRUID_T10_FERAL = 70726;
164 uint32 const SPELL_DRUID_T10_FERAL_TRIGGER = 70725;
165 uint32 const SPELL_BESTIAL_WRATH = 19574;
166 uint32 const SPELL_THE_BEAST_WITHIN_TALENT = 34692;
167 uint32 const SPELL_THE_BEAST_WITHIN_TRIGGER = 34471;
168 uint32 const SPELL_DIVINE_FAVOR = 31842;
169 uint32 const SPELL_PALADIN_T10_HOLY = 70755;
170 uint32 const SPELL_PALADIN_T10_HOLY_TRIGGER = 71166;
171 uint32 const SPELL_DRAIN_SOUL_EXECUTE_AURA = 100001;
172 uint32 const NPC_TAGGED_BLACKSILT_SCOUT = 17654;
173 uint32 const NPC_UNTAGGED_BLACKSILT_SCOUT = 17326;
174 uint32 const NPC_FESTIVE_HOLIDAY_MOUNT_FLYING = 24906;
175 uint32 const NPC_FESTIVE_HOLIDAY_MOUNT_GROUND = 15665;
176
177 uint32 const CrowdControlMechanics[] =
178 {
191 };
192
193 uint32 const StunMechanics[] =
194 {
196 };
197
198 uint32 const LightControlMechanics[] =
199 {
204 };
205
206 uint32 const MovementLossControlAppliedMechanics[] =
207 {
224 };
225
226 uint32 const CrowdControlAuraTypes[] =
227 {
234 };
235
236 uint32 const StunAuraTypes[] =
237 {
239 };
240
241 uint32 const TauntAuraTypes[] =
242 {
244 };
245
246 uint32 const LightControlAuraTypes[] =
247 {
250 };
251
252 uint32 const AttackMeEffects[] =
253 {
255 };
256
257 uint32 const KnockbackEffects[] =
258 {
261 };
262
263 uint8 const CrowdControlMechanicCount = sizeof(CrowdControlMechanics) / sizeof(uint32);
264 uint8 const StunMechanicCount = sizeof(StunMechanics) / sizeof(uint32);
265 uint8 const LightControlMechanicCount = sizeof(LightControlMechanics) / sizeof(uint32);
266 uint8 const MovementLossControlAppliedMechanicCount = sizeof(MovementLossControlAppliedMechanics) / sizeof(uint32);
267 uint8 const CrowdControlAuraTypeCount = sizeof(CrowdControlAuraTypes) / sizeof(uint32);
268 uint8 const StunAuraTypeCount = sizeof(StunAuraTypes) / sizeof(uint32);
269 uint8 const TauntAuraTypeCount = sizeof(TauntAuraTypes) / sizeof(uint32);
270 uint8 const LightControlAuraTypeCount = sizeof(LightControlAuraTypes) / sizeof(uint32);
271 uint8 const AttackMeEffectCount = sizeof(AttackMeEffects) / sizeof(uint32);
272 uint8 const KnockbackEffectCount = sizeof(KnockbackEffects) / sizeof(uint32);
273
274 SpellIdPair const QuestTameFinalSpells[] =
275 {
276 { 19548, 19597 },
277 { 19674, 19677 },
278 { 19687, 19676 },
279 { 19688, 19678 },
280 { 19689, 19679 },
281 { 19692, 19680 },
282 { 19693, 19684 },
283 { 19694, 19681 },
284 { 19696, 19682 },
285 { 19697, 19683 },
286 { 19699, 19685 },
287 { 19700, 19686 },
288 { 30099, 30100 },
289 { 30102, 30103 },
290 { 30105, 30104 },
291 { 30646, 30647 },
292 { 30653, 30648 },
293 { 30654, 30652 }
294 };
295
296 ChampioningAuraInfo const ChampioningAuras[] =
297 {
298 { 57819, 1106, 1 }, // Argent Champion - Argent Crusade
299 { 57820, 1098, 1 }, // Ebon Champion - Knights of the Ebon Blade
300 { 57821, 1090, 1 }, // Champion of the Kirin Tor
301 { 57822, 1091, 1 }, // Wyrmrest Champion - The Wyrmrest Accord
302 { 93337, 1173, 2 }, // Champion of Ramkahen
303 { 93339, 1135, 2 }, // Champion of the Earthen Ring
304 { 93341, 1158, 2 }, // Champion of the Guardians of Hyjal
305 { 93347, 1171, 2 }, // Champion of Therazane
306 { 93368, 1174, 2 }, // Champion of the Wildhammer Clan
307 { 93795, 72, 4 }, // Stormwind Champion
308 { 93805, 47, 4 }, // Ironforge Champion
309 { 93806, 69, 4 }, // Darnassus Champion
310 { 93811, 930, 4 }, // Exodar Champion
311 { 93816, 1134, 4 }, // Gilneas Champion
312 { 93821, 54, 4 }, // Gnomeregan Champion
313 { 93825, 76, 4 }, // Orgrimmar Champion
314 { 93827, 530, 4 }, // Darkspear Champion
315 { 93828, 911, 4 }, // Silvermoon Champion
316 { 93830, 1133, 4 }, // Bilgewater Champion
317 { 94158, 1172, 2 }, // Champion of the Dragonmaw Clan
318 { 94462, 68, 4 }, // Undercity Champion
319 { 94463, 81, 4 }, // Thunder Bluff Champion
320 { 126434, 1353, 4 }, // Tushui Champion
321 { 126436, 1352, 4 } // Huojin Champion
322 };
323
324 ShapeshiftBoostSpellInfo const ShapeshiftBoostSpells[] =
325 {
326 { SHAPESHIFT_FORM_CAT, { 3025, 48629, 106840, 113636 }, 4 },
327 { SHAPESHIFT_FORM_TRAVEL, { 5419, 0, 0, 0 }, 1 },
328 { SHAPESHIFT_FORM_AQUA, { 5421, 0, 0, 0 }, 1 },
329 { SHAPESHIFT_FORM_BEAR, { 1178, 21178, 106829, 106899 }, 4 },
330 { SHAPESHIFT_FORM_BATTLE_STANCE, { 21156, 0, 0, 0 }, 1 },
331 { SHAPESHIFT_FORM_DEFENSIVE_STANCE, { 7376, 0, 0, 0 }, 1 },
332 { SHAPESHIFT_FORM_BERSERKER_STANCE, { 7381, 0, 0, 0 }, 1 },
333 { SHAPESHIFT_FORM_MOONKIN, { 24905, 24907, 0, 0 }, 2 },
334 { SHAPESHIFT_FORM_FLIGHT, { 33948, 34764, 0, 0 }, 2 },
335 { SHAPESHIFT_FORM_FLIGHT_EPIC, { 40122, 40121, 0, 0 }, 2 },
336 { SHAPESHIFT_FORM_METAMORPHOSIS, { 54817, 54879, 0, 0 }, 2 },
337 { SHAPESHIFT_FORM_SPIRIT_OF_REDEMPTION, { 27792, 27795, 0, 0 }, 2 },
338 { SHAPESHIFT_FORM_SHADOW, { 49868, 0, 0, 0 }, 1 }
339 };
340
341 SpellIdPair const NurturingInstinctTriggeredSpells[] =
342 {
343 { 33873, 47180 }
344 };
345
346 SpellIdPair const RaidProcChargeTriggeredSpells[] =
347 {
348 { 57949, 57952 }, // Shiver; animation spell 57951 has unknown use (see also 41637)
349 { 59978, 59979 }, // Shiver
350 { 43593, 43594 } // Cold Stare
351 };
352
353 GenderedAuraSpellInfo const BloodElfIllusionDisguises[] =
354 {
355 { 37096, 37095, 37093 },
356 { 46354, 46356, 46355 }
357 };
358
359 SpellIdPair const AuraDummyTriggeredSpells[] =
360 {
361 { 39850, 51581 }, // Rocket Blast backfire
362 { 51701, 51699 }, // Honor Among Thieves
363 { 71563, 71564 } // Lucky Love Rocket
364 };
365
366 AuraRemoveTriggerSpellInfo const AuraRemoveTriggeredSpells[] =
367 {
368 { 36730, 36731, 0 }, // Flame Strike
369 { 44191, 44190, 46163 }, // Flame Strike
370 { 46308, 47287, 0 }, // Burning Winds
371 { 91604, 58601, 0 } // Restricted Flight Area
372 };
373
374 uint32 const DespawnOnRemoveAuras[] =
375 {
376 52172,
377 60244,
378 130067,
379 130070,
380 130108,
381 130112,
382 130119,
383 130156,
384 130484,
385 148596
386 };
387
388 SpellIdPair const StackingAuraTriggeredSpells[] =
389 {
390 { 24658, 24659 }, // Unstable Power
391 { 24661, 24662 } // Restless Strength
392 };
393
394 LichKingIntroVoiceoverInfo const LichKingIntroVoiceovers[] =
395 {
396 { 58204, 14970, 0, 58205 },
397 { 58205, 14971, 14972, 0 }
398 };
399
400 PeriodicBulletControllerRule const PeriodicBulletControllerRules[] =
401 {
402 { 66149, 66152, 66153, 6 },
403 { 68396, 66152, 66153, 6 }
404 };
405
406 SpellIdPair const PeriodicTriggerOverrideSpells[] =
407 {
408 { 23170, 23171 }, // Brood Affliction: Bronze
409 { 29917, 29916 }, // Feed Captured Animal
410 { 30576, 30571 }, // Quake
411 { 37027, 37029 }, // Remote Toy
412 { SPELL_EYE_OF_GRILLOK, 38530 }, // Eye of Grillok
413 { 39857, 39856 }, // Tear of Azzinoth Summon Channel
414 { 46736, 46737 } // Personalized Weather
415 };
416
417 uint32 const PeriodicRestorationAuras[] =
418 {
419 24379,
420 23493
421 };
422
423 uint32 const ReagentConsumingPeriodicTriggerAuras[] =
424 {
425 24745,
426 24747,
427 24757,
428 24759,
429 24761,
430 24762,
431 24766,
432 24769,
433 24771,
434 24773,
435 24785,
436 24787,
437 24791,
438 24792,
439 24793
440 };
441
442 uint32 const FullHealthRemovePeriodicDamageAuras[] =
443 {
444 43093,
445 31956,
446 38801,
447 35321,
448 38363,
449 39215
450 };
451
452 uint32 const UnboundPlaguePeriodicDamageAuras[] =
453 {
454 70911,
455 72854,
456 72855,
457 72856
458 };
459
460 uint32 const UnsavableSpecialAuras[] =
461 {
462 44413,
463 40075,
464 55849
465 };
466
467 uint32 const UnsavableDruidEclipseAuras[] =
468 {
469 67483,
470 67484,
471 48517,
472 48518
473 };
474
475 SpellIdPair const StonedAuraTriggeredSpells[] =
476 {
477 { 33572, 33652 },
478 { 50836, 50812 }
479 };
480
481 SpellIdPair const ArcanePotencyTriggeredSpells[] =
482 {
483 { 31571, 57529 },
484 { 31572, 57531 }
485 };
486
487 SpellIdPair const ImprovedFearTriggeredSpells[] =
488 {
489 { 53759, 60947 },
490 { 53754, 60946 }
491 };
492
493 RaceGenderDisplayInfo const OrbOfDeceptionDisplays[] =
494 {
495 { RACE_BLOODELF_ID, 17829, 17830 },
496 { RACE_ORC_ID, 10139, 10140 },
497 { RACE_TROLL_ID, 10135, 10134 },
498 { RACE_TAUREN_ID, 10136, 10147 },
499 { RACE_UNDEAD_PLAYER_ID, 10146, 10145 },
500 { RACE_DRAENEI_ID, 17827, 17828 },
501 { RACE_DWARF_ID, 10141, 10142 },
502 { RACE_GNOME_ID, 10148, 10149 },
503 { RACE_HUMAN_ID, 10137, 10138 },
504 { RACE_NIGHTELF_ID, 10143, 10144 }
505 };
506
507 RaceGenderDisplayInfo const CorsairDisplays[] =
508 {
509 { RACE_BLOODELF_ID, 25032, 25043 },
510 { RACE_ORC_ID, 25039, 25050 },
511 { RACE_TROLL_ID, 25041, 25052 },
512 { RACE_TAUREN_ID, 25040, 25051 },
513 { RACE_UNDEAD_PLAYER_ID, 25042, 25053 },
514 { RACE_DRAENEI_ID, 25033, 25044 },
515 { RACE_DWARF_ID, 25034, 25045 },
516 { RACE_GNOME_ID, 25035, 25046 },
517 { RACE_HUMAN_ID, 25037, 25048 },
518 { RACE_NIGHTELF_ID, 25038, 25049 }
519 };
520
521 TransformDisplayInfo const TransformDisplays[] =
522 {
523 { 16739, true, OrbOfDeceptionDisplays, 10, 0, 0 }, // Orb of Deception
524 { 42365, false, NULL, 0, 21723, 21723 }, // Murloc costume
525 { 50517, true, CorsairDisplays, 10, 0, 0 }, // Dread Corsair
526 { 51926, true, CorsairDisplays, 10, 0, 0 }, // Corsair Costume
527 { 53806, false, NULL, 0, 22512, 22512 }, // Pygmy Oil
528 { 65386, false, NULL, 0, 29203, 29204 }, // Honor the Dead
529 { 65495, false, NULL, 0, 29203, 29204 }, // Honor the Dead
530 { 75532, false, NULL, 0, 31737, 31738 }, // Darkspear Pride
531 { 75531, false, NULL, 0, 31654, 31655 } // Gnomeregan Pride
532 };
533
534 TransformDisplayInfo const* GetTransformDisplayInfo(uint32 auraSpellId)
535 {
536 for (TransformDisplayInfo const& transformDisplay : TransformDisplays)
537 if (transformDisplay.AuraSpellId == auraSpellId)
538 return &transformDisplay;
539
540 return NULL;
541 }
542
543 bool MatchesAuraImmunityAmount(AuraImmunityAmountCondition amountCondition, int32 amount)
544 {
545 switch (amountCondition)
546 {
547 case AURA_IMMUNITY_AMOUNT_ANY:
548 return true;
549 case AURA_IMMUNITY_AMOUNT_NONZERO:
550 return amount != 0;
551 case AURA_IMMUNITY_AMOUNT_ZERO:
552 return amount == 0;
553 case AURA_IMMUNITY_AMOUNT_ONE:
554 return amount == 1;
555 default:
556 break;
557 }
558
559 return false;
560 }
561
562 AuraStateImmunityRuleInfo const AuraStateImmunityRules[] =
563 {
564 { { 96, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_NONZERO },
565 { { 1615, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_NONZERO },
566 { { 679, 57742, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_ANY },
567 { { 1557, 64187, AURA_IMMUNITY_MECHANIC_MASK_STUN, StunMechanics, StunMechanicCount, StunAuraTypes, StunAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_ANY },
568 { { 1557, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_ANY },
569 { { 1614, 0, AURA_IMMUNITY_MECHANIC_MASK_NONE, NULL, 0, TauntAuraTypes, TauntAuraTypeCount, AttackMeEffects, AttackMeEffectCount }, AURA_IMMUNITY_AMOUNT_ANY },
570 { { 1694, 0, AURA_IMMUNITY_MECHANIC_MASK_NONE, NULL, 0, TauntAuraTypes, TauntAuraTypeCount, AttackMeEffects, AttackMeEffectCount }, AURA_IMMUNITY_AMOUNT_ANY },
571 { { 1630, 0, AURA_IMMUNITY_MECHANIC_MASK_NONE, NULL, 0, TauntAuraTypes, TauntAuraTypeCount, AttackMeEffects, AttackMeEffectCount }, AURA_IMMUNITY_AMOUNT_ZERO },
572 { { 1630, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_NONZERO },
573 { { 477, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, KnockbackEffects, KnockbackEffectCount }, AURA_IMMUNITY_AMOUNT_ZERO },
574 { { 1733, 0, AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL, CrowdControlMechanics, CrowdControlMechanicCount, CrowdControlAuraTypes, CrowdControlAuraTypeCount, KnockbackEffects, KnockbackEffectCount }, AURA_IMMUNITY_AMOUNT_ZERO },
575 { { 878, 0, AURA_IMMUNITY_MECHANIC_MASK_LIGHT_CONTROL, LightControlMechanics, LightControlMechanicCount, LightControlAuraTypes, LightControlAuraTypeCount, NULL, 0 }, AURA_IMMUNITY_AMOUNT_ONE }
576 };
577
578 MechanicImmunitySpellRule const MechanicImmunitySpellRules[] =
579 {
580 { 34471, AURA_IMMUNITY_MECHANIC_MASK_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL, MovementLossControlAppliedMechanics, MovementLossControlAppliedMechanicCount },
581 { 19574, AURA_IMMUNITY_MECHANIC_MASK_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL, MovementLossControlAppliedMechanics, MovementLossControlAppliedMechanicCount },
584 };
585
586 uint32 BuildMechanicMaskFromArray(uint32 const* mechanics, uint8 mechanicCount)
587 {
588 uint32 mechanicMask = 0;
589 for (uint8 i = 0; i < mechanicCount; ++i)
590 mechanicMask |= Skyfire::Spells::GetMechanicMask(mechanics[i]);
591
592 return mechanicMask;
593 }
594
595 bool ContainsSpellId(uint32 const* spellIds, uint8 spellCount, uint32 spellId)
596 {
597 for (uint8 i = 0; i < spellCount; ++i)
598 if (spellIds[i] == spellId)
599 return true;
600
601 return false;
602 }
603 }
604
606 {
607 for (SpellIdPair const& questTameSpell : QuestTameFinalSpells)
608 if (questTameSpell.AuraSpellId == auraSpellId)
609 return questTameSpell.TriggerSpellId;
610
611 return 0;
612 }
613
615 {
616 for (ChampioningAuraInfo const& championingAura : ChampioningAuras)
617 if (championingAura.AuraSpellId == auraSpellId)
618 return &championingAura;
619
620 return NULL;
621 }
622
623 uint8 GetShapeshiftBoostSpellIds(uint32 shapeshiftForm, uint32* spellIds, uint8 maxSpellIds)
624 {
625 if (!spellIds)
626 return 0;
627
628 for (ShapeshiftBoostSpellInfo const& shapeshiftBoost : ShapeshiftBoostSpells)
629 {
630 if (shapeshiftBoost.ShapeshiftForm != shapeshiftForm)
631 continue;
632
633 uint8 spellCount = shapeshiftBoost.SpellCount < maxSpellIds ? shapeshiftBoost.SpellCount : maxSpellIds;
634 for (uint8 i = 0; i < spellCount; ++i)
635 spellIds[i] = shapeshiftBoost.SpellIds[i];
636
637 return spellCount;
638 }
639
640 return 0;
641 }
642
644 {
645 return SPELL_SHADOW_FOCUS_DUMMY_TALENT;
646 }
647
649 {
650 return SPELL_SHADOW_FOCUS_AURA;
651 }
652
654 {
655 for (SpellIdPair const& nurturingInstinctSpell : NurturingInstinctTriggeredSpells)
656 if (nurturingInstinctSpell.AuraSpellId == auraSpellId)
657 return nurturingInstinctSpell.TriggerSpellId;
658
659 return 0;
660 }
661
663 {
664 if (TransformDisplayInfo const* transformDisplay = GetTransformDisplayInfo(auraSpellId))
665 return transformDisplay->RequiresPlayerRace;
666
667 return false;
668 }
669
670 uint32 GetTransformDisplayId(uint32 auraSpellId, uint8 race, uint8 gender)
671 {
672 TransformDisplayInfo const* transformDisplay = GetTransformDisplayInfo(auraSpellId);
673 if (!transformDisplay)
674 return 0;
675
676 if (!transformDisplay->RequiresPlayerRace)
677 return gender == GENDER_MALE_ID ? transformDisplay->MaleDisplayId : transformDisplay->FemaleDisplayId;
678
679 for (uint8 i = 0; i < transformDisplay->RaceDisplayCount; ++i)
680 {
681 RaceGenderDisplayInfo const& raceDisplay = transformDisplay->RaceDisplays[i];
682 if (raceDisplay.Race == race)
683 return gender == GENDER_MALE_ID ? raceDisplay.MaleDisplayId : raceDisplay.FemaleDisplayId;
684 }
685
686 return 0;
687 }
688
690 {
691 return DISPLAY_UNKNOWN_TRANSFORM_FALLBACK;
692 }
693
695 {
696 return SPELL_GLYPH_OF_THE_PENGUIN;
697 }
698
700 {
701 return DISPLAY_GLYPH_OF_THE_PENGUIN;
702 }
703
705 {
706 return SPELL_DRAGONMAW_ILLUSION;
707 }
708
710 {
711 return DISPLAY_DRAGONMAW_ILLUSION_MOUNT;
712 }
713
715 {
716 return SPELL_LEADER_OF_THE_PACK;
717 }
718
720 {
721 return SPELL_LEADER_OF_THE_PACK_TRIGGERED;
722 }
723
725 {
726 return auraSpellId == SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT;
727 }
728
730 {
731 for (SpellIdPair const& triggeredSpell : RaidProcChargeTriggeredSpells)
732 if (triggeredSpell.AuraSpellId == auraSpellId)
733 return triggeredSpell.TriggerSpellId;
734
735 return 0;
736 }
737
738 bool ShouldBindStackingAuraToCaster(bool canStackWithDifferentCasters, bool casterIsCreature,
739 bool casterIsSummon, bool ownerIsSummon)
740 {
741 if (!canStackWithDifferentCasters)
742 return true;
743
744 return !casterIsCreature || casterIsSummon || ownerIsSummon;
745 }
746
748 {
749 return SPELL_NET_O_MATIC_SELF_ROOT;
750 }
751
753 {
754 return SPELL_KILL_COMMAND_OWNER_AURA;
755 }
756
758 {
759 return SPELL_KILL_COMMAND_PET_AURA;
760 }
761
763 {
764 for (GenderedAuraSpellInfo const& disguise : BloodElfIllusionDisguises)
765 {
766 if (disguise.AuraSpellId != auraSpellId)
767 continue;
768
769 if (gender == GENDER_MALE_ID)
770 return disguise.MaleSpellId;
771 if (gender == GENDER_FEMALE_ID)
772 return disguise.FemaleSpellId;
773
774 return 0;
775 }
776
777 return 0;
778 }
779
781 {
782 for (SpellIdPair const& triggeredSpell : AuraDummyTriggeredSpells)
783 if (triggeredSpell.AuraSpellId == auraSpellId)
784 return triggeredSpell.TriggerSpellId;
785
786 return 0;
787 }
788
790 {
791 for (AuraRemoveTriggerSpellInfo const& triggeredSpell : AuraRemoveTriggeredSpells)
792 {
793 if (triggeredSpell.AuraSpellId != auraSpellId)
794 continue;
795
796 if (heroic && triggeredSpell.HeroicSpellId)
797 return triggeredSpell.HeroicSpellId;
798
799 return triggeredSpell.NormalSpellId;
800 }
801
802 return 0;
803 }
804
806 {
807 return ContainsSpellId(DespawnOnRemoveAuras, sizeof(DespawnOnRemoveAuras) / sizeof(uint32), auraSpellId);
808 }
809
811 {
812 for (SpellIdPair const& triggeredSpell : StackingAuraTriggeredSpells)
813 if (triggeredSpell.AuraSpellId == auraSpellId)
814 return triggeredSpell.TriggerSpellId;
815
816 return 0;
817 }
818
820 {
821 return apply ? NPC_TAGGED_BLACKSILT_SCOUT : NPC_UNTAGGED_BLACKSILT_SCOUT;
822 }
823
825 {
826 for (LichKingIntroVoiceoverInfo const& voiceover : LichKingIntroVoiceovers)
827 if (voiceover.AuraSpellId == auraSpellId)
828 return voiceover.ApplySoundId;
829
830 return 0;
831 }
832
834 {
835 for (LichKingIntroVoiceoverInfo const& voiceover : LichKingIntroVoiceovers)
836 if (voiceover.AuraSpellId == auraSpellId)
837 return voiceover.RemoveSoundId;
838
839 return 0;
840 }
841
843 {
844 for (LichKingIntroVoiceoverInfo const& voiceover : LichKingIntroVoiceovers)
845 if (voiceover.AuraSpellId == auraSpellId)
846 return voiceover.ContinueSpellId;
847
848 return 0;
849 }
850
852 {
853 return flying ? NPC_FESTIVE_HOLIDAY_MOUNT_FLYING : NPC_FESTIVE_HOLIDAY_MOUNT_GROUND;
854 }
855
857 {
858 for (PeriodicBulletControllerRule const& rule : PeriodicBulletControllerRules)
859 if (rule.AuraSpellId == auraSpellId)
860 return &rule;
861
862 return NULL;
863 }
864
866 {
867 return auraSpellId == 62399 ? 62475 : 0;
868 }
869
871 {
872 return auraSpellId == 64821 ? 64774 : 0;
873 }
874
876 {
877 return SPELL_PERIODIC_FRENZIED_REGENERATION_HEAL;
878 }
879
881 {
882 uint32 const spellIds[] = { 57840, 57841 };
883 return index < 2 ? spellIds[index] : 0;
884 }
885
887 {
888 return SPELL_PERIODIC_EXPLOSIVE_SHOT_TRIGGER;
889 }
890
892 {
893 return SPELL_PERIODIC_DEATH_AND_DECAY_TRIGGER;
894 }
895
897 {
898 return SPELL_PERIODIC_HYSTERIA;
899 }
900
902 {
903 for (SpellIdPair const& triggeredSpell : PeriodicTriggerOverrideSpells)
904 if (triggeredSpell.AuraSpellId == auraSpellId)
905 return triggeredSpell.TriggerSpellId;
906
907 return 0;
908 }
909
911 {
912 return ContainsSpellId(PeriodicRestorationAuras, sizeof(PeriodicRestorationAuras) / sizeof(uint32), auraSpellId);
913 }
914
916 {
917 return SPELL_PERIODIC_RESTORATION_ENERGIZE;
918 }
919
921 {
922 return SPELL_PERIODIC_FROST_BLAST_TRIGGER;
923 }
924
926 {
927 return SPELL_PERIODIC_DOOM_TRIGGER;
928 }
929
931 {
932 return NPC_SPELLCLOTH_ELEMENTAL;
933 }
934
936 {
937 return SPELL_EYE_OF_GRILLOK;
938 }
939
941 {
942 return SPELL_TOTEMIC_MASTERY_AURA;
943 }
944
946 {
947 return SPELL_TOTEMIC_MASTERY_TRIGGER;
948 }
949
951 {
952 return ContainsSpellId(ReagentConsumingPeriodicTriggerAuras,
953 sizeof(ReagentConsumingPeriodicTriggerAuras) / sizeof(uint32), auraSpellId);
954 }
955
957 {
958 return ContainsSpellId(FullHealthRemovePeriodicDamageAuras,
959 sizeof(FullHealthRemovePeriodicDamageAuras) / sizeof(uint32), auraSpellId);
960 }
961
963 {
964 return auraSpellId == 38772;
965 }
966
968 {
969 return ContainsSpellId(UnboundPlaguePeriodicDamageAuras,
970 sizeof(UnboundPlaguePeriodicDamageAuras) / sizeof(uint32), auraSpellId);
971 }
972
974 {
975 return SPELL_DRAIN_SOUL_SHARD;
976 }
977
982
984 {
985 return SPELL_WILD_GROWTH_T10_RESTORATION;
986 }
987
989 {
990 return SPELL_MANA_FEED_TRIGGER;
991 }
992
994 {
995 return ContainsSpellId(UnsavableSpecialAuras, sizeof(UnsavableSpecialAuras) / sizeof(uint32), auraSpellId);
996 }
997
999 {
1000 return ContainsSpellId(UnsavableDruidEclipseAuras, sizeof(UnsavableDruidEclipseAuras) / sizeof(uint32), auraSpellId);
1001 }
1002
1004 {
1005 for (SpellIdPair const& triggeredSpell : StonedAuraTriggeredSpells)
1006 if (triggeredSpell.AuraSpellId == auraSpellId)
1007 return triggeredSpell.TriggerSpellId;
1008
1009 return 0;
1010 }
1011
1013 {
1014 return SPELL_HEROIC_FURY_COOLDOWN;
1015 }
1016
1018 {
1019 return SPELL_DRUID_T8_RESTORATION;
1020 }
1021
1023 {
1024 return SPELL_DRUID_T8_RESTORATION_TRIGGER;
1025 }
1026
1028 {
1029 return SPELL_DRUID_CAT_FORM;
1030 }
1031
1036
1038 {
1039 return SPELL_POLYMORPH_SHEEP_SOUND;
1040 }
1041
1043 {
1044 return SPELL_POLYMORPH_PENGUIN_SOUND;
1045 }
1046
1048 {
1049 for (SpellIdPair const& triggeredSpell : ArcanePotencyTriggeredSpells)
1050 if (triggeredSpell.AuraSpellId == auraSpellId)
1051 return triggeredSpell.TriggerSpellId;
1052
1053 return 0;
1054 }
1055
1057 {
1058 return SPELL_IMPROVED_DEVOURING_PLAGUE_DAMAGE;
1059 }
1060
1062 {
1063 return SPELL_IMPROVED_DEVOURING_PLAGUE_HEAL;
1064 }
1065
1067 {
1068 return SPELL_GLYPH_OF_POWER_WORD_SHIELD;
1069 }
1070
1072 {
1073 return SPELL_GLYPH_OF_POWER_WORD_SHIELD_HEAL;
1074 }
1075
1077 {
1078 return SPELL_GLYPH_OF_BLURRED_SPEED;
1079 }
1080
1082 {
1083 return SPELL_GLYPH_OF_BLURRED_SPEED_SPRINT;
1084 }
1085
1090
1095
1097 {
1098 return SPELL_AVENGING_WRATH_MARKER;
1099 }
1100
1102 {
1103 return SPELL_SHARED_SUFFERING_TRIGGER;
1104 }
1105
1107 {
1108 return SPELL_INVISIBILITY_FADE;
1109 }
1110
1112 {
1113 for (SpellIdPair const& triggeredSpell : ImprovedFearTriggeredSpells)
1114 if (triggeredSpell.AuraSpellId == auraSpellId)
1115 return triggeredSpell.TriggerSpellId;
1116
1117 return 0;
1118 }
1119
1121 {
1122 return SPELL_RAPTURE_RANK;
1123 }
1124
1126 {
1127 return SPELL_RAPTURE_ENERGIZE;
1128 }
1129
1131 {
1132 return SPELL_GLYPH_OF_FREEZING_TRAP;
1133 }
1134
1136 {
1137 return SPELL_GLYPH_OF_FREEZING_TRAP_TRIGGER;
1138 }
1139
1141 {
1142 return SPELL_PROWL;
1143 }
1144
1146 {
1147 return SPELL_STEALTH;
1148 }
1149
1151 {
1152 return SPELL_DRUID_T10_FERAL;
1153 }
1154
1156 {
1157 return SPELL_DRUID_T10_FERAL_TRIGGER;
1158 }
1159
1161 {
1162 return SPELL_BESTIAL_WRATH;
1163 }
1164
1166 {
1167 return SPELL_THE_BEAST_WITHIN_TALENT;
1168 }
1169
1171 {
1172 return SPELL_THE_BEAST_WITHIN_TRIGGER;
1173 }
1174
1176 {
1177 return SPELL_DIVINE_FAVOR;
1178 }
1179
1181 {
1182 return SPELL_PALADIN_T10_HOLY;
1183 }
1184
1186 {
1187 return SPELL_PALADIN_T10_HOLY_TRIGGER;
1188 }
1189
1191 {
1192 return SPELL_DRAIN_SOUL_EXECUTE_AURA;
1193 }
1194
1195 AuraStateImmunityRule const* GetAuraStateImmunityRule(int32 miscValue, uint32 auraSpellId, int32 amount)
1196 {
1197 for (AuraStateImmunityRuleInfo const& ruleInfo : AuraStateImmunityRules)
1198 {
1199 AuraStateImmunityRule const& rule = ruleInfo.Rule;
1200 if (rule.MiscValue != miscValue)
1201 continue;
1202
1203 if (rule.RequiredSpellId && rule.RequiredSpellId != auraSpellId)
1204 continue;
1205
1206 if (!MatchesAuraImmunityAmount(ruleInfo.AmountCondition, amount))
1207 continue;
1208
1209 return &rule;
1210 }
1211
1212 return NULL;
1213 }
1214
1215 uint8 GetDefaultAuraStateImmunityAuraTypes(int32 miscValue, uint32* auraTypes, uint8 maxAuraTypes)
1216 {
1217 if (!auraTypes)
1218 return 0;
1219
1220 uint8 auraTypeCount = 0;
1221
1222 if ((miscValue & (1 << 10)) && auraTypeCount < maxAuraTypes)
1223 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_STUN;
1224 if ((miscValue & (1 << 1)) && auraTypeCount < maxAuraTypes)
1225 auraTypes[auraTypeCount++] = SPELL_AURA_TRANSFORM;
1226 if ((miscValue & (1 << 6)) && auraTypeCount < maxAuraTypes)
1227 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_DECREASE_SPEED;
1228 if ((miscValue & (1 << 0)) && auraTypeCount < maxAuraTypes)
1229 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_ROOT;
1230 if ((miscValue & (1 << 2)) && auraTypeCount < maxAuraTypes)
1231 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_CONFUSE;
1232 if (miscValue & (1 << 9))
1233 {
1234 if (auraTypeCount < maxAuraTypes)
1235 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_FEAR;
1236 if (auraTypeCount < maxAuraTypes)
1237 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_FEAR_2;
1238 }
1239 if ((miscValue & (1 << 7)) && auraTypeCount < maxAuraTypes)
1240 auraTypes[auraTypeCount++] = SPELL_AURA_MOD_DISARM;
1241
1242 return auraTypeCount;
1243 }
1244
1246 {
1247 for (MechanicImmunitySpellRule const& rule : MechanicImmunitySpellRules)
1248 if (rule.AuraSpellId == auraSpellId)
1249 return &rule;
1250
1251 return NULL;
1252 }
1253
1255 {
1256 switch (mechanicMask)
1257 {
1259 return BuildMechanicMaskFromArray(CrowdControlMechanics, CrowdControlMechanicCount);
1261 return BuildMechanicMaskFromArray(StunMechanics, StunMechanicCount);
1263 return BuildMechanicMaskFromArray(LightControlMechanics, LightControlMechanicCount);
1267 default:
1268 break;
1269 }
1270
1271 return 0;
1272 }
1273}
1274}
@ SPELL_TENACITY
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
@ SPELL_EFFECT_ATTACK_ME
@ SPELL_EFFECT_KNOCK_BACK_DEST
@ SPELL_EFFECT_KNOCK_BACK
#define IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK
@ MECHANIC_FEAR
@ MECHANIC_DISORIENTED
@ MECHANIC_KNOCKOUT
@ MECHANIC_CHARM
@ MECHANIC_TURN
@ MECHANIC_STUN
@ MECHANIC_FREEZE
@ MECHANIC_ROOT
@ MECHANIC_SLEEP
@ MECHANIC_POLYMORPH
@ MECHANIC_BANISH
@ MECHANIC_DAZE
@ MECHANIC_SNARE
@ MECHANIC_SHACKLE
@ MECHANIC_SAPPED
@ MECHANIC_HORROR
@ SPELL_AURA_MOD_DISARM
@ SPELL_AURA_MOD_FEAR
@ SPELL_AURA_MOD_FEAR_2
@ SPELL_AURA_MOD_ROOT
@ SPELL_AURA_MOD_TAUNT
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_TRANSFORM
@ SPELL_AURA_MOD_CONFUSE
@ SPELL_AURA_MOD_STUN
ShapeshiftForm
Definition Unit.h:206
@ SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT
@ SPELL_STEALTH
uint32 GetDrainSoulExecuteAuraSpellId()
uint32 GetBloodElfIllusionDisguiseSpellId(uint32 auraSpellId, uint8 gender)
uint32 GetGlyphOfPenguinDisplayId()
uint8 GetDefaultAuraStateImmunityAuraTypes(int32 miscValue, uint32 *auraTypes, uint8 maxAuraTypes)
bool IsFullHealthRemovePeriodicDamageAura(uint32 auraSpellId)
uint32 GetArcanePotencyTriggerSpellId(uint32 auraSpellId)
uint32 GetImprovedDevouringPlagueDamageSpellId()
uint32 GetImprovedDevouringPlagueHealSpellId()
uint32 GetTheBeastWithinTriggerSpellId()
uint32 GetAuraImmunityMechanicMask(AuraImmunityMechanicMask mechanicMask)
uint32 GetPaladinTier10HolyBonusAuraSpellId()
uint32 GetLeaderOfThePackTriggeredSpellId()
uint32 GetGlyphOfBlurredSpeedSprintSpellId()
uint32 GetWildGrowthTier10AuraSpellId()
uint32 GetPolymorphPenguinSpellId()
bool IsNonAttackablePacifyAura(uint32 auraSpellId)
uint32 GetAvengingWrathAuraSpellId()
uint32 GetDrainSoulShardSpellId()
uint32 GetHeroicFuryCooldownSpellId()
bool IsUnboundPlaguePeriodicDamageAura(uint32 auraSpellId)
uint32 GetKillCommandOwnerAuraSpellId()
uint32 GetGlyphOfFreezingTrapAuraSpellId()
ChampioningAuraInfo const * GetChampioningAuraInfo(uint32 auraSpellId)
bool IsUnsavableSpecialAura(uint32 auraSpellId)
uint32 GetImprovedFearTriggerSpellId(uint32 auraSpellId)
uint32 GetLichKingIntroRemoveSoundId(uint32 auraSpellId)
uint32 GetPaladinTier10HolyBonusTriggerSpellId()
uint32 GetLichKingIntroContinueSpellId(uint32 auraSpellId)
uint32 GetAuraDummyTriggeredSpellId(uint32 auraSpellId)
bool IsUnsavableDruidEclipseAura(uint32 auraSpellId)
uint32 GetPeriodicOverloadCircuitShutdownSpellId(uint32 auraSpellId)
uint32 GetDruidFeralTier10BonusTriggerSpellId()
bool IsPctHealthRemovePeriodicDamageAura(uint32 auraSpellId)
MechanicImmunitySpellRule const * GetMechanicImmunitySpellRule(uint32 auraSpellId)
uint8 GetShapeshiftBoostSpellIds(uint32 shapeshiftForm, uint32 *spellIds, uint8 maxSpellIds)
uint32 GetTaggedMurlocEntry(bool apply)
uint32 GetPeriodicFrenziedRegenerationSpellId()
uint32 GetStackingAuraTriggerSpellId(uint32 auraSpellId)
uint32 GetDruidFeralTier10BonusAuraSpellId()
bool TransformDisplayRequiresPlayerRace(uint32 auraSpellId)
uint32 GetSpellclothSummonCreatureEntry()
uint32 GetGlyphOfBlurredSpeedAuraSpellId()
uint32 GetShadowFocusTriggeredSpellId()
uint32 GetDragonmawIllusionAuraSpellId()
uint32 GetShadowFocusAuraSpellId()
uint32 GetPeriodicHysteriaAuraSpellId()
uint32 GetAbsorbEyeOfGrillokCasterSpellId()
PeriodicBulletControllerRule const * GetPeriodicBulletControllerRule(uint32 auraSpellId)
AuraStateImmunityRule const * GetAuraStateImmunityRule(int32 miscValue, uint32 auraSpellId, int32 amount)
uint32 GetGlyphOfPenguinAuraSpellId()
uint32 GetStonedAuraTriggerSpellId(uint32 auraSpellId)
uint32 GetPeriodicFrostBlastTriggerSpellId()
bool IsPeriodicRestorationAura(uint32 auraSpellId)
uint32 GetInvisibilityFadeSpellId()
uint32 GetNurturingInstinctTriggeredSpellId(uint32 auraSpellId)
uint32 GetMechanicMask(uint32 mechanic)
@ AURA_IMMUNITY_MECHANIC_MASK_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL
@ AURA_IMMUNITY_MECHANIC_MASK_LIGHT_CONTROL
@ AURA_IMMUNITY_MECHANIC_MASK_CROWD_CONTROL
uint32 GetKillCommandPetAuraSpellId()
uint32 GetPeriodicFuseArmorTriggerSpellId(uint32 auraSpellId)
uint32 GetUnknownTransformFallbackDisplayId()
uint32 GetPeriodicDoomTriggerSpellId()
uint32 GetTotemicMasteryTriggerSpellId()
uint32 GetQuestTameFinalSpellId(uint32 auraSpellId)
uint32 GetFestiveHolidayMountCreatureEntry(bool flying)
uint32 GetAvengingWrathMarkerAuraSpellId()
uint32 GetNetOMaticRootSelfSpellId()
uint32 GetPeriodicRestorationEnergizeSpellId()
uint32 GetDragonmawIllusionMountDisplayId()
bool IsReagentConsumingPeriodicTriggerAura(uint32 auraSpellId)
uint32 GetPeriodicExplosiveShotTriggerSpellId()
uint32 GetPeriodicDeathAndDecayTriggerSpellId()
uint32 GetTheBeastWithinTalentSpellId()
uint32 GetKillingSpreePeriodicSpellId(uint8 index)
bool ShouldBindStackingAuraToCaster(bool canStackWithDifferentCasters, bool casterIsCreature, bool casterIsSummon, bool ownerIsSummon)
uint32 GetDruidTier8RestorationAuraSpellId()
uint32 GetLichKingIntroApplySoundId(uint32 auraSpellId)
uint32 GetPeriodicTriggerOverrideSpellId(uint32 auraSpellId)
uint32 GetAuraRemoveTriggeredSpellId(uint32 auraSpellId, bool heroic)
uint32 GetGlyphOfPowerWordShieldHealSpellId()
uint32 GetTransformDisplayId(uint32 auraSpellId, uint8 race, uint8 gender)
uint32 GetRaidProcChargeTriggerSpellId(uint32 auraSpellId)
uint32 GetLeaderOfThePackSpellId()
uint32 GetGlyphOfFreezingTrapTriggerSpellId()
uint32 GetManaFeedTriggerSpellId()
bool IsDespawnOnRemoveAura(uint32 auraSpellId)
uint32 GetSharedSufferingTriggerSpellId()
uint32 GetGlyphOfPowerWordShieldAuraSpellId()
uint32 GetBestialWrathAuraSpellId()
uint32 GetDruidTier8RestorationTriggerSpellId()
uint8 const MAX_SHAPESHIFT_BOOST_SPELLS
uint32 GetTotemicMasteryAuraSpellId()
@ SPELL_DRUID_BEAR_FORM
SpellIds
Definition stratholme.h:65