[12716m] More 541 changes. Thanks Dramacydal, TC and OpenWow

This commit is contained in:
Antz 2020-02-18 20:21:57 +00:00
parent 7bd00e484f
commit 0224c980d2
No known key found for this signature in database
GPG key ID: 0DF907270598C85F
34 changed files with 1721 additions and 1298 deletions

View file

@ -34,6 +34,7 @@
#include "BattleGround/BattleGroundMgr.h"
#include "MapManager.h"
#include "Unit.h"
#include "DB2Structure.h"
bool IsPrimaryProfessionSkill(uint32 skill)
{
@ -71,7 +72,7 @@ int32 GetSpellDuration(SpellEntry const* spellInfo)
{
return 0;
}
SpellDurationEntry const* du = sSpellDurationStore.LookupEntry(spellInfo->DurationIndex);
SpellDurationEntry const* du = sSpellDurationStore.LookupEntry(spellInfo->GetDurationIndex());
if (!du)
{
return 0;
@ -85,7 +86,7 @@ int32 GetSpellMaxDuration(SpellEntry const* spellInfo)
{
return 0;
}
SpellDurationEntry const* du = sSpellDurationStore.LookupEntry(spellInfo->DurationIndex);
SpellDurationEntry const* du = sSpellDurationStore.LookupEntry(spellInfo->GetDurationIndex());
if (!du)
{
return 0;
@ -149,7 +150,7 @@ uint32 GetSpellCastTime(SpellEntry const* spellInfo, Spell const* spell)
else
castTime = uint32(spellScalingEntry->castTimeMax);
}
else if (SpellCastTimesEntry const* spellCastTimeEntry = sSpellCastTimesStore.LookupEntry(spellInfo->CastingTimeIndex))
else if (SpellCastTimesEntry const* spellCastTimeEntry = sSpellCastTimesStore.LookupEntry(spellInfo->GetCastingTimeIndex()))
{
if (spell)
{
@ -540,7 +541,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
{
// Well Fed buffs (must be exclusive with Food / Drink replenishment effects, or else Well Fed will cause them to be removed)
// SpellIcon 2560 is Spell 46687, does not have this flag
if (spellInfo->HasAttribute(SPELL_ATTR_EX2_FOOD_BUFF) || spellInfo->SpellIconID == 2560)
if (spellInfo->HasAttribute(SPELL_ATTR_EX2_FOOD_BUFF) || spellInfo->GetSpellIconID() == 2560)
{
return SPELL_WELL_FED;
}
@ -599,7 +600,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
// "Well Fed" buff from Blessed Sunfruit, Blessed Sunfruit Juice, Alterac Spring Water
if (spellInfo->HasAttribute(SPELL_ATTR_CASTABLE_WHILE_SITTING) &&
(interrupts && interrupts->InterruptFlags & SPELL_INTERRUPT_FLAG_AUTOATTACK) &&
(spellInfo->SpellIconID == 52 || spellInfo->SpellIconID == 79))
(spellInfo->GetSpellIconID() == 52 || spellInfo->GetSpellIconID() == 79))
return SPELL_WELL_FED;
break;
}
@ -637,7 +638,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
}
// skip Heart of the Crusader that have also same spell family mask
if (spellInfo->IsFitToFamilyMask(UI64LIT(0x00000820180400)) && spellInfo->HasAttribute(SPELL_ATTR_EX3_UNK9) && (spellInfo->SpellIconID != 237))
if (spellInfo->IsFitToFamilyMask(UI64LIT(0x00000820180400)) && spellInfo->HasAttribute(SPELL_ATTR_EX3_UNK9) && (spellInfo->GetSpellIconID() != 237))
{
return SPELL_JUDGEMENT;
}
@ -1181,7 +1182,7 @@ bool IsSingleTargetSpells(SpellEntry const* spellInfo1, SpellEntry const* spellI
// TODO - need better check
// Equal icon and spellfamily
if( spellInfo1->GetSpellFamilyName() == spellInfo2->GetSpellFamilyName() &&
spellInfo1->SpellIconID == spellInfo2->SpellIconID )
spellInfo1->GetSpellIconID() == spellInfo2->GetSpellIconID() )
return true;
SpellSpecific spec1 = GetSpellSpecific(spellInfo1->Id);
@ -1249,7 +1250,7 @@ SpellCastResult GetErrorAtShapeshiftedCast(SpellEntry const* spellInfo, uint32 f
else
{
// needs shapeshift
if(!(spellInfo->AttributesEx2 & SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT) && shapeShift && shapeShift->Stances != 0)
if (!spellInfo->HasAttribute(SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT) && shapeShift && shapeShift->Stances != 0)
{
return SPELL_FAILED_ONLY_SHAPESHIFT;
}
@ -1532,8 +1533,52 @@ void SpellMgr::LoadSpellProcEvents()
{
mSpellProcEventMap.clear(); // need for reload case
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
QueryResult* result = WorldDatabase.Query("SELECT entry, SchoolMask, SpellFamilyName, SpellFamilyMaskA0, SpellFamilyMaskA1, SpellFamilyMaskA2, SpellFamilyMaskB0, SpellFamilyMaskB1, SpellFamilyMaskB2, SpellFamilyMaskC0, SpellFamilyMaskC1, SpellFamilyMaskC2, procFlags, procEx, ppmRate, CustomChance, Cooldown FROM spell_proc_event");
// 0 1 2
QueryResult* result = WorldDatabase.Query("SELECT entry, SchoolMask, SpellFamilyName, "
// 3 4 5
"SpellFamilyMaskA0, SpellFamilyMaskA1, SpellFamilyMaskA2, "
// 6 7 8
"SpellFamilyMaskB0, SpellFamilyMaskB1, SpellFamilyMaskB2, "
// 9 10 11
"SpellFamilyMaskC0, SpellFamilyMaskC1, SpellFamilyMaskC2, "
// 12 13 14
"SpellFamilyMaskD0, SpellFamilyMaskD1, SpellFamilyMaskD2, "
// 15 16 17
"SpellFamilyMaskE0, SpellFamilyMaskE1, SpellFamilyMaskE2, "
// 18 19 20
"SpellFamilyMaskF0, SpellFamilyMaskF1, SpellFamilyMaskF2, "
// 21 22 23
"SpellFamilyMaskG0, SpellFamilyMaskG1, SpellFamilyMaskG2, "
// 24 25 26
"SpellFamilyMaskH0, SpellFamilyMaskH1, SpellFamilyMaskH2, "
// 27 28 29
"SpellFamilyMaskI0, SpellFamilyMaskI1, SpellFamilyMaskI2, "
// 30 31 32
"SpellFamilyMaskJ0, SpellFamilyMaskJ1, SpellFamilyMaskJ2, "
// 33 34 35
"SpellFamilyMaskK0, SpellFamilyMaskK1, SpellFamilyMaskK2, "
// 36 37 38
"SpellFamilyMaskL0, SpellFamilyMaskL1, SpellFamilyMaskL2, "
// 39 40 41
"SpellFamilyMaskM0, SpellFamilyMaskM1, SpellFamilyMaskM2, "
// 42 43 44
"SpellFamilyMaskN0, SpellFamilyMaskN1, SpellFamilyMaskN2, "
// 45 46 47
"SpellFamilyMaskO0, SpellFamilyMaskO1, SpellFamilyMaskO2, "
// 48 49 50
"SpellFamilyMaskP0, SpellFamilyMaskP1, SpellFamilyMaskP2, "
// 51 52 53
"SpellFamilyMaskQ0, SpellFamilyMaskQ1, SpellFamilyMaskQ2, "
// 54 55 56
"SpellFamilyMaskR0, SpellFamilyMaskR1, SpellFamilyMaskR2, "
// 57 58 59
"SpellFamilyMaskS0, SpellFamilyMaskS1, SpellFamilyMaskS2, "
// 60 61 62
"SpellFamilyMaskT0, SpellFamilyMaskT1, SpellFamilyMaskT2, "
// 63 64 65
"SpellFamilyMaskU0, SpellFamilyMaskU1, SpellFamilyMaskU2, "
// 66 67 68 69 70
"procFlags, procEx, ppmRate, CustomChance, Cooldown FROM spell_proc_event");
if (!result)
{
BarGoLink bar(1);
@ -1565,11 +1610,11 @@ void SpellMgr::LoadSpellProcEvents()
(uint64)fields[i + 3].GetUInt32() | ((uint64)fields[i + 6].GetUInt32() << 32),
fields[i + 9].GetUInt32());
}
spe.procFlags = fields[12].GetUInt32();
spe.procEx = fields[13].GetUInt32();
spe.ppmRate = fields[14].GetFloat();
spe.customChance = fields[15].GetFloat();
spe.cooldown = fields[16].GetUInt32();
spe.procFlags = fields[66].GetUInt32();
spe.procEx = fields[67].GetUInt32();
spe.ppmRate = fields[68].GetFloat();
spe.customChance = fields[69].GetFloat();
spe.cooldown = fields[70].GetUInt32();
rankHelper.RecordRank(spe, entry);
}
@ -1909,7 +1954,7 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr
else // For spells need check school/spell family/family mask
{
// Check (if set) for school
if (spellProcEvent->schoolMask && (spellProcEvent->schoolMask & procSpell->SchoolMask) == 0)
if (spellProcEvent->schoolMask && (spellProcEvent->schoolMask & procSpell->GetSchoolMask()) == 0)
{
return false;
}
@ -2120,7 +2165,7 @@ bool SpellMgr::canStackSpellRanksInSpellBook(SpellEntry const* spellInfo) const
{
return false;
}
if (spellInfo->powerType != POWER_MANA && spellInfo->powerType != POWER_HEALTH)
if (spellInfo->GetPowerType() != POWER_MANA && spellInfo->GetPowerType() != POWER_HEALTH)
{
return false;
}
@ -2151,7 +2196,7 @@ bool SpellMgr::canStackSpellRanksInSpellBook(SpellEntry const* spellInfo) const
}
// Seal of Righteousness, 2 version of same rank
SpellClassOptionsEntry const* classOptions = spellInfo->GetSpellClassOptions();
if (classOptions && (classOptions->SpellFamilyFlags & UI64LIT(0x0000000008000000)) && spellInfo->SpellIconID == 25)
if (classOptions && (classOptions->SpellFamilyFlags & UI64LIT(0x0000000008000000)) && spellInfo->GetSpellIconID() == 25)
{
return false;
}
@ -2186,6 +2231,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
SpellClassOptionsEntry const* classOptions1 = spellInfo_1->GetSpellClassOptions();
SpellClassOptionsEntry const* classOptions2 = spellInfo_2->GetSpellClassOptions();
uint32 spellVisual_1 = spellInfo_1->GetSpellVisual();
uint32 spellVisual_2 = spellInfo_2->GetSpellVisual();
uint32 spellIconID_1 = spellInfo_1->GetSpellIconID();
uint32 spellIconID_2 = spellInfo_2->GetSpellIconID();
// Resurrection sickness
if ((spellInfo_1->Id == SPELL_ID_PASSIVE_RESURRECTION_SICKNESS) != (spellInfo_2->Id == SPELL_ID_PASSIVE_RESURRECTION_SICKNESS))
@ -2218,25 +2267,25 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Soulstone Resurrection and Twisting Nether (resurrector)
if (spellInfo_1->SpellIconID == 92 && spellInfo_2->SpellIconID == 92 && (
(spellInfo_1->SpellVisual[0] == 99 && spellInfo_2->SpellVisual[0] == 0) ||
(spellInfo_2->SpellVisual[0] == 99 && spellInfo_1->SpellVisual[0] == 0)))
if (spellIconID_1 == 92 && spellIconID_2 == 92 && (
(spellVisual_1 == 99 && spellVisual_2 == 0) ||
(spellVisual_2 == 99 && spellVisual_1 == 0)))
return false;
// Heart of the Wild, Agility and various Idol Triggers
if (spellInfo_1->SpellIconID == 240 && spellInfo_2->SpellIconID == 240)
if (spellIconID_1 == 240 && spellIconID_2 == 240)
{
return false;
}
// Personalized Weather (thunder effect should overwrite rainy aura)
if (spellInfo_1->SpellIconID == 2606 && spellInfo_2->SpellIconID == 2606)
if (spellIconID_1 == 2606 && spellIconID_2 == 2606)
{
return false;
}
// Mirrored Soul (FoS - Devourer) - and other Boss spells
if (spellInfo_1->SpellIconID == 3176 && spellInfo_2->SpellIconID == 3176)
if (spellIconID_1 == 3176 && spellIconID_2 == 3176)
{
return false;
}
@ -2277,19 +2326,19 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Blood Fury and Rage of the Unraveller
if (spellInfo_1->SpellIconID == 1662 && spellInfo_2->SpellIconID == 1662)
if (spellIconID_1 == 1662 && spellIconID_2 == 1662)
{
return false;
}
// Kindred Spirits
if (spellInfo_1->SpellIconID == 3559 && spellInfo_2->SpellIconID == 3559)
if (spellIconID_1 == 3559 && spellIconID_2 == 3559)
{
return false;
}
// Vigilance and Damage Reduction (Vigilance triggered spell)
if (spellInfo_1->SpellIconID == 2834 && spellInfo_2->SpellIconID == 2834)
if (spellIconID_1 == 2834 && spellIconID_2 == 2834)
{
return false;
}
@ -2360,8 +2409,8 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Shard of Flame and Mote of Flame
if ((spellInfo_1->SpellIconID == 2302 && spellInfo_1->SpellVisual[0] == 0) ||
(spellInfo_2->SpellIconID == 2302 && spellInfo_2->SpellVisual[0] == 0))
if ((spellInfo_1->GetSpellIconID() == 2302 && spellInfo_1->GetSpellVisual() == 0) ||
(spellInfo_2->GetSpellIconID() == 2302 && spellInfo_2->GetSpellVisual() == 0))
return false;
// Felblaze Visual and Fog of Corruption
@ -2415,7 +2464,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Halls of Reflection Clone
if (spellInfo_1->SpellIconID == 692 && spellInfo_2->SpellIconID == 692)
if (spellInfo_1->Id == 692 && spellInfo_2->Id == 692)
{
return false;
}
@ -2423,7 +2472,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
case SPELLFAMILY_MAGE:
// Arcane Intellect and Insight
if (spellInfo_2->SpellIconID == 125 && spellInfo_1->Id == 18820)
if (spellIconID_2 == 125 && spellInfo_1->Id == 18820)
{
return false;
}
@ -2431,7 +2480,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_WARRIOR:
{
// Scroll of Protection and Defensive Stance (multi-family check)
if (spellInfo_1->SpellIconID == 276 && spellInfo_1->SpellVisual[0] == 196 && spellInfo_2->Id == 71)
if (spellIconID_1 == 276 && spellVisual_1 == 196 && spellInfo_2->Id == 71)
{
return false;
}
@ -2447,7 +2496,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_DRUID:
{
// Scroll of Stamina and Leader of the Pack (multi-family check)
if (spellInfo_1->SpellIconID == 312 && spellInfo_1->SpellVisual[0] == 216 && spellInfo_2->Id == 24932)
if (spellIconID_1 == 312 && spellVisual_1 == 216 && spellInfo_2->Id == 24932)
{
return false;
}
@ -2463,7 +2512,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_ROGUE:
{
// Garrote-Silence -> Garrote (multi-family check)
if (spellInfo_1->SpellIconID == 498 && spellInfo_1->SpellVisual[0] == 0 && spellInfo_2->SpellIconID == 498)
if (spellIconID_1 == 498 && spellVisual_1 == 0 && spellIconID_2 == 498)
{
return false;
}
@ -2488,13 +2537,13 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_PALADIN:
{
// Unstable Currents and other -> *Sanctity Aura (multi-family check)
if (spellInfo_2->SpellIconID == 502 && spellInfo_1->SpellIconID == 502 && spellInfo_1->SpellVisual[0] == 969)
if (spellIconID_2 == 502 && spellIconID_1 == 502 && spellVisual_1 == 969)
{
return false;
}
// *Band of Eternal Champion and Seal of Command(multi-family check)
if (spellId_1 == 35081 && spellInfo_2->SpellIconID == 561 && spellInfo_2->SpellVisual[0] == 7992)
if (spellId_1 == 35081 && spellIconID_2 == 561 && spellVisual_2 == 7992)
{
return false;
}
@ -2509,7 +2558,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
}
// Dragonmaw Illusion, Blood Elf Illusion, Human Illusion, Illidari Agent Illusion, Scarlet Crusade Disguise
if (spellInfo_1->SpellIconID == 1691 && spellInfo_2->SpellIconID == 1691)
if (spellIconID_1 == 1691 && spellIconID_2 == 1691)
{
return false;
}
@ -2523,12 +2572,12 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Blink & Improved Blink
if (classOptions1 && (classOptions1->SpellFamilyFlags & UI64LIT(0x0000000000010000)) && (spellInfo_2->SpellVisual[0] == 72 && spellInfo_2->SpellIconID == 1499) ||
(classOptions2->SpellFamilyFlags & UI64LIT(0x0000000000010000)) && (spellInfo_1->SpellVisual[0] == 72 && spellInfo_1->SpellIconID == 1499) )
if (classOptions1 && (classOptions1->SpellFamilyFlags & UI64LIT(0x0000000000010000)) && (spellVisual_2 == 72 && spellIconID_2 == 1499) ||
(classOptions2->SpellFamilyFlags & UI64LIT(0x0000000000010000)) && (spellVisual_1 == 72 && spellIconID_1 == 1499) )
return false;
// Fingers of Frost effects
if (spellInfo_1->SpellIconID == 2947 && spellInfo_2->SpellIconID == 2947)
if (spellIconID_1 == 2947 && spellIconID_2 == 2947)
{
return false;
}
@ -2544,19 +2593,19 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
}
// Detect Invisibility and Mana Shield (multi-family check)
if (spellInfo_2->Id == 132 && spellInfo_1->SpellIconID == 209 && spellInfo_1->SpellVisual[0] == 968)
if (spellInfo_2->Id == 132 && spellIconID_1 == 209 && spellVisual_1 == 968)
{
return false;
}
// Combustion and Fire Protection Aura (multi-family check)
if (spellInfo_1->Id == 11129 && spellInfo_2->SpellIconID == 33 && spellInfo_2->SpellVisual[0] == 321)
if (spellInfo_1->Id == 11129 && spellIconID_2 == 33 && spellVisual_2 == 321)
{
return false;
}
// Arcane Intellect and Insight
if (spellInfo_1->SpellIconID == 125 && spellInfo_2->Id == 18820)
if (spellIconID_1 == 125 && spellInfo_2->Id == 18820)
{
return false;
}
@ -2566,44 +2615,44 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
if( classOptions2 && classOptions2->SpellFamilyName == SPELLFAMILY_WARLOCK )
{
// Siphon Life and Drain Life
if ((spellInfo_1->SpellIconID == 152 && spellInfo_2->SpellIconID == 546) ||
(spellInfo_2->SpellIconID == 152 && spellInfo_1->SpellIconID == 546))
if ((spellIconID_1 == 152 && spellIconID_2 == 546) ||
(spellIconID_2 == 152 && spellIconID_1 == 546))
return false;
// Corruption & Seed of corruption
if ((spellInfo_1->SpellIconID == 313 && spellInfo_2->SpellIconID == 1932) ||
(spellInfo_2->SpellIconID == 313 && spellInfo_1->SpellIconID == 1932))
if (spellInfo_1->SpellVisual[0] != 0 && spellInfo_2->SpellVisual[0] != 0)
if ((spellIconID_1 == 313 && spellIconID_2 == 1932) ||
(spellIconID_2 == 313 && spellIconID_1 == 1932))
if (spellVisual_1 != 0 && spellVisual_2 != 0)
return true; // can't be stacked
// Corruption and Unstable Affliction
if ((spellInfo_1->SpellIconID == 313 && spellInfo_2->SpellIconID == 2039) ||
(spellInfo_2->SpellIconID == 313 && spellInfo_1->SpellIconID == 2039))
if ((spellIconID_1 == 313 && spellIconID_2 == 2039) ||
(spellIconID_2 == 313 && spellIconID_1 == 2039))
return false;
// (Corruption or Unstable Affliction) and (Curse of Agony or Curse of Doom)
if (((spellInfo_1->SpellIconID == 313 || spellInfo_1->SpellIconID == 2039) && (spellInfo_2->SpellIconID == 544 || spellInfo_2->SpellIconID == 91)) ||
((spellInfo_2->SpellIconID == 313 || spellInfo_2->SpellIconID == 2039) && (spellInfo_1->SpellIconID == 544 || spellInfo_1->SpellIconID == 91)))
if (((spellIconID_1 == 313 || spellIconID_1 == 2039) && (spellIconID_2 == 544 || spellIconID_2 == 91)) ||
((spellIconID_2 == 313 || spellIconID_2 == 2039) && (spellIconID_1 == 544 || spellIconID_1 == 91)))
return false;
// Shadowflame and Curse of Agony
if ((spellInfo_1->SpellIconID == 544 && spellInfo_2->SpellIconID == 3317) ||
(spellInfo_2->SpellIconID == 544 && spellInfo_1->SpellIconID == 3317))
if ((spellIconID_1 == 544 && spellIconID_2 == 3317) ||
(spellIconID_2 == 544 && spellIconID_1 == 3317))
return false;
// Shadowflame and Curse of Doom
if ((spellInfo_1->SpellIconID == 91 && spellInfo_2->SpellIconID == 3317) ||
(spellInfo_2->SpellIconID == 91 && spellInfo_1->SpellIconID == 3317))
if ((spellIconID_1 == 91 && spellIconID_2 == 3317) ||
(spellIconID_2 == 91 && spellIconID_1 == 3317))
return false;
// Metamorphosis, diff effects
if (spellInfo_1->SpellIconID == 3314 && spellInfo_2->SpellIconID == 3314)
if (spellIconID_1 == 3314 && spellIconID_2 == 3314)
{
return false;
}
}
// Detect Invisibility and Mana Shield (multi-family check)
if (spellInfo_1->Id == 132 && spellInfo_2->SpellIconID == 209 && spellInfo_2->SpellVisual[0] == 968)
if (spellInfo_1->Id == 132 && spellIconID_2 == 209 && spellVisual_2 == 968)
{
return false;
}
@ -2617,13 +2666,13 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Battle Shout and Rampage
if ((spellInfo_1->SpellIconID == 456 && spellInfo_2->SpellIconID == 2006) ||
(spellInfo_2->SpellIconID == 456 && spellInfo_1->SpellIconID == 2006))
if ((spellIconID_1 == 456 && spellIconID_2 == 2006) ||
(spellIconID_2 == 456 && spellIconID_1 == 2006))
return false;
// Glyph of Revenge (triggered), and Sword and Board (triggered)
if ((spellInfo_1->SpellIconID == 856 && spellInfo_2->SpellIconID == 2780) ||
(spellInfo_2->SpellIconID == 856 && spellInfo_1->SpellIconID == 2780))
if ((spellIconID_1 == 856 && spellIconID_2 == 2780) ||
(spellIconID_2 == 856 && spellIconID_1 == 2780))
return false;
// Defensive/Berserker/Battle stance aura can not stack (needed for dummy auras)
@ -2639,13 +2688,13 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
// Defensive Stance and Scroll of Protection (multi-family check)
if (spellInfo_1->Id == 71 && spellInfo_2->SpellIconID == 276 && spellInfo_2->SpellVisual[0] == 196)
if (spellInfo_1->Id == 71 && spellIconID_2 == 276 && spellVisual_2 == 196)
{
return false;
}
// Bloodlust and Bloodthirst (multi-family check)
if (spellInfo_2->Id == 2825 && spellInfo_1->SpellIconID == 38 && spellInfo_1->SpellVisual[0] == 0)
if (spellInfo_2->Id == 2825 && spellIconID_1 == 38 && spellVisual_1 == 0)
{
return false;
}
@ -2674,8 +2723,8 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
if (classOptions2 && classOptions2->SpellFamilyName == SPELLFAMILY_DRUID )
{
//Omen of Clarity and Blood Frenzy
if ((classOptions1 && (classOptions1->SpellFamilyFlags == UI64LIT(0x0) && spellInfo_1->SpellIconID == 108) && (classOptions2->SpellFamilyFlags & UI64LIT(0x20000000000000))) ||
((classOptions2->SpellFamilyFlags == UI64LIT(0x0) && spellInfo_2->SpellIconID == 108) && (classOptions1->SpellFamilyFlags & UI64LIT(0x20000000000000))))
if ((classOptions1 && (classOptions1->SpellFamilyFlags == UI64LIT(0x0) && spellIconID_1 == 108) && (classOptions2->SpellFamilyFlags & UI64LIT(0x20000000000000))) ||
((classOptions2->SpellFamilyFlags == UI64LIT(0x0) && spellIconID_2 == 108) && (classOptions1->SpellFamilyFlags & UI64LIT(0x20000000000000))))
return false;
// Tree of Life (Shapeshift) and 34123 Tree of Life (Passive)
@ -2684,12 +2733,12 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Lifebloom and Wild Growth
if ((spellInfo_1->SpellIconID == 2101 && spellInfo_2->SpellIconID == 2864) ||
(spellInfo_2->SpellIconID == 2101 && spellInfo_1->SpellIconID == 2864))
if ((spellIconID_1 == 2101 && spellIconID_2 == 2864) ||
(spellIconID_2 == 2101 && spellIconID_1 == 2864))
return false;
// Innervate and Glyph of Innervate and some other spells
if (spellInfo_1->SpellIconID == 62 && spellInfo_2->SpellIconID == 62)
if (spellIconID_1 == 62 && spellIconID_2 == 62)
{
return false;
}
@ -2715,7 +2764,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Savage Roar and Savage Roar (triggered)
if (spellInfo_1->SpellIconID == 2865 && spellInfo_2->SpellIconID == 2865)
if (spellIconID_1 == 2865 && spellIconID_2 == 2865)
{
return false;
}
@ -2727,7 +2776,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
// Leader of the Pack and Scroll of Stamina (multi-family check)
if (spellInfo_1->Id == 24932 && spellInfo_2->SpellIconID == 312 && spellInfo_2->SpellVisual[0] == 216)
if (spellInfo_1->Id == 24932 && spellIconID_2 == 312 && spellVisual_2 == 216)
{
return false;
}
@ -2748,20 +2797,20 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Sprint & Sprint (waterwalk)
if (spellInfo_1->SpellIconID == 516 && spellInfo_2->SpellIconID == 516 &&
if (spellIconID_1 == 516 && spellIconID_2 == 516 &&
((spellInfo_1->GetCategory() == 44 && spellInfo_2->GetCategory() == 0) ||
(spellInfo_2->GetCategory() == 44 && spellInfo_1->GetCategory() == 0)))
return false;
}
// Overkill
if (spellInfo_1->SpellIconID == 2285 && spellInfo_2->SpellIconID == 2285)
if (spellIconID_1 == 2285 && spellIconID_2 == 2285)
{
return false;
}
// Garrote -> Garrote-Silence (multi-family check)
if (spellInfo_1->SpellIconID == 498 && spellInfo_2->SpellIconID == 498 && spellInfo_2->SpellVisual[0] == 0)
if (spellIconID_1 == 498 && spellIconID_2 == 498 && spellVisual_2 == 0)
{
return false;
}
@ -2780,19 +2829,19 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false;
// Deterrence
if (spellInfo_1->SpellIconID == 83 && spellInfo_2->SpellIconID == 83)
if (spellIconID_1 == 83 && spellIconID_2 == 83)
{
return false;
}
// Bestial Wrath
if (spellInfo_1->SpellIconID == 1680 && spellInfo_2->SpellIconID == 1680)
if (spellIconID_1 == 1680 && spellIconID_2 == 1680)
{
return false;
}
// Aspect of the Viper & Vicious Viper
if (spellInfo_1->SpellIconID == 2227 && spellInfo_2->SpellIconID == 2227)
if (spellIconID_1 == 2227 && spellIconID_2 == 2227)
{
return false;
}
@ -2820,37 +2869,37 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
// Swift Retribution / Improved Devotion Aura (talents) and Paladin Auras
if ((spellInfo_1->IsFitToFamilyMask(UI64LIT(0x0), 0x00000020) && (spellInfo_2->SpellIconID == 291 || spellInfo_2->SpellIconID == 3028)) ||
(spellInfo_2->IsFitToFamilyMask(UI64LIT(0x0), 0x00000020) && (spellInfo_1->SpellIconID == 291 || spellInfo_1->SpellIconID == 3028)))
if ((spellInfo_1->IsFitToFamilyMask(UI64LIT(0x0), 0x00000020) && (spellIconID_2 == 291 || spellIconID_2 == 3028)) ||
(spellInfo_2->IsFitToFamilyMask(UI64LIT(0x0), 0x00000020) && (spellIconID_1 == 291 || spellIconID_1 == 3028)))
return false;
// Beacon of Light and Light's Beacon
if ((spellInfo_1->SpellIconID == 3032) && (spellInfo_2->SpellIconID == 3032))
if ((spellIconID_1 == 3032) && (spellIconID_2 == 3032))
{
return false;
}
// Concentration Aura and Improved Concentration Aura and Aura Mastery
if ((spellInfo_1->SpellIconID == 1487) && (spellInfo_2->SpellIconID == 1487))
if ((spellIconID_1 == 1487) && (spellIconID_2 == 1487))
{
return false;
}
// Seal of Corruption (caster/target parts stacking allow, other stacking checked by spell specs)
if (spellInfo_1->SpellIconID == 2292 && spellInfo_2->SpellIconID == 2292)
if (spellIconID_1 == 2292 && spellIconID_2 == 2292)
{
return false;
}
// Divine Sacrifice and Divine Guardian
if (spellInfo_1->SpellIconID == 3837 && spellInfo_2->SpellIconID == 3837)
if (spellIconID_1 == 3837 && spellIconID_2 == 3837)
{
return false;
}
// Blood Corruption, Holy Vengeance, Righteous Vengeance
if ((spellInfo_1->SpellIconID == 2292 && spellInfo_2->SpellIconID == 3025) ||
(spellInfo_2->SpellIconID == 2292 && spellInfo_1->SpellIconID == 3025))
if ((spellIconID_1 == 2292 && spellIconID_2 == 3025) ||
(spellIconID_2 == 2292 && spellIconID_1 == 3025))
return false;
}
@ -2861,19 +2910,19 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
// Combustion and Fire Protection Aura (multi-family check)
if (spellInfo_2->Id == 11129 && spellInfo_1->SpellIconID == 33 && spellInfo_1->SpellVisual[0] == 321)
if (spellInfo_2->Id == 11129 && spellIconID_1 == 33 && spellVisual_1 == 321)
{
return false;
}
// *Sanctity Aura -> Unstable Currents and other (multi-family check)
if (spellInfo_1->SpellIconID==502 && classOptions2->SpellFamilyName == SPELLFAMILY_GENERIC && spellInfo_2->SpellIconID==502 && spellInfo_2->SpellVisual[0]==969 )
if (spellIconID_1==502 && classOptions2->SpellFamilyName == SPELLFAMILY_GENERIC && spellIconID_2==502 && spellVisual_2==969 )
{
return false;
}
// *Seal of Command and Band of Eternal Champion (multi-family check)
if (spellInfo_1->SpellIconID == 561 && spellInfo_1->SpellVisual[0] == 7992 && spellId_2 == 35081)
if (spellIconID_1 == 561 && spellVisual_1 == 7992 && spellId_2 == 35081)
{
return false;
}
@ -2882,24 +2931,24 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
if (classOptions2 && classOptions2->SpellFamilyName == SPELLFAMILY_SHAMAN )
{
// Windfury weapon
if (spellInfo_1->SpellIconID==220 && spellInfo_2->SpellIconID==220 &&
if (spellIconID_1==220 && spellIconID_2==220 &&
!classOptions1->IsFitToFamilyMask(classOptions2->SpellFamilyFlags))
return false;
// Ghost Wolf
if (spellInfo_1->SpellIconID == 67 && spellInfo_2->SpellIconID == 67)
if (spellIconID_1 == 67 && spellIconID_2 == 67)
{
return false;
}
// Totem of Wrath (positive/negative), ranks checked early
if (spellInfo_1->SpellIconID == 2019 && spellInfo_2->SpellIconID == 2019)
if (spellIconID_1 == 2019 && spellIconID_2 == 2019)
{
return false;
}
}
// Bloodlust and Bloodthirst (multi-family check)
if (spellInfo_1->Id == 2825 && spellInfo_2->SpellIconID == 38 && spellInfo_2->SpellVisual[0] == 0)
if (spellInfo_1->Id == 2825 && spellIconID_2 == 38 && spellVisual_2 == 0)
{
return false;
}
@ -2908,25 +2957,25 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
if (classOptions2 && classOptions2->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT)
{
// Lichborne and Lichborne (triggered)
if (spellInfo_1->SpellIconID == 61 && spellInfo_2->SpellIconID == 61)
if (spellIconID_1 == 61 && spellIconID_2 == 61)
{
return false;
}
// Frost Presence and Frost Presence (triggered)
if (spellInfo_1->SpellIconID == 2632 && spellInfo_2->SpellIconID == 2632)
if (spellIconID_1 == 2632 && spellIconID_2 == 2632)
{
return false;
}
// Unholy Presence and Unholy Presence (triggered)
if (spellInfo_1->SpellIconID == 2633 && spellInfo_2->SpellIconID == 2633)
if (spellIconID_1 == 2633 && spellIconID_2 == 2633)
{
return false;
}
// Blood Presence and Blood Presence (triggered)
if (spellInfo_1->SpellIconID == 2636 && spellInfo_2->SpellIconID == 2636)
if (spellIconID_1 == 2636 && spellIconID_2 == 2636)
{
return false;
}
@ -2937,8 +2986,8 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
}
// more generic checks
if (spellInfo_1->SpellIconID == spellInfo_2->SpellIconID &&
spellInfo_1->SpellIconID != 0 && spellInfo_2->SpellIconID != 0)
if (spellIconID_1 == spellIconID_2 &&
spellIconID_1 != 0 && spellIconID_2 != 0)
{
bool isModifier = false;
for (int i = 0; i < MAX_EFFECT_INDEX; ++i)
@ -4840,15 +4889,15 @@ void SpellMgr::CheckUsedSpells(char const* table)
}
}
if (spellIcon >= 0 && spellEntry->SpellIconID != uint32(spellIcon))
if (spellIcon >= 0 && spellEntry->GetSpellIconID() != uint32(spellIcon))
{
sLog.outError("Spell %u '%s' icon(%u) <> %u but used in %s.", spell, name.c_str(), spellEntry->SpellIconID, spellIcon, code.c_str());
sLog.outError("Spell %u '%s' icon(%u) <> %u but used in %s.", spell, name.c_str(), spellEntry->GetSpellIconID(), spellIcon, code.c_str());
continue;
}
if (spellVisual >= 0 && spellEntry->SpellVisual[0] != uint32(spellVisual))
if (spellVisual >= 0 && spellEntry->GetSpellVisual() != uint32(spellVisual))
{
sLog.outError("Spell %u '%s' visual(%u) <> %u but used in %s.", spell, name.c_str(), spellEntry->SpellVisual[0], spellVisual, code.c_str());
sLog.outError("Spell %u '%s' visual(%u) <> %u but used in %s.", spell, name.c_str(), spellEntry->GetSpellVisual(), spellVisual, code.c_str());
continue;
}
@ -4919,10 +4968,10 @@ void SpellMgr::CheckUsedSpells(char const* table)
}
}
if (spellIcon >= 0 && spellEntry->SpellIconID != uint32(spellIcon))
if (spellIcon >= 0 && spellEntry->GetSpellIconID() != uint32(spellIcon))
continue;
if (spellVisual >= 0 && spellEntry->SpellVisual[0] != uint32(spellVisual))
if (spellVisual >= 0 && spellEntry->GetSpellVisual() != uint32(spellVisual))
continue;
if(category >= 0 && spellEntry->GetCategory() != uint32(category))
@ -4987,7 +5036,7 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
break;
case SPELLFAMILY_MAGE:
// Dragon's Breath
if (spellproto->SpellIconID == 1548)
if (spellproto->GetSpellIconID() == 1548)
{
return DIMINISHING_DISORIENT;
}
@ -5005,7 +5054,7 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
return DIMINISHING_CHEAPSHOT_POUNCE;
}
// Crippling poison - Limit to 10 seconds in PvP (No SpellFamilyFlags)
else if (spellproto->SpellIconID == 163)
else if (spellproto->GetSpellIconID() == 163)
{
return DIMINISHING_LIMITONLY;
}
@ -5014,7 +5063,7 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
case SPELLFAMILY_HUNTER:
{
// Freezing Trap & Freezing Arrow & Wyvern Sting
if (spellproto->SpellIconID == 180 || spellproto->SpellIconID == 1721)
if (spellproto->GetSpellIconID() == 180 || spellproto->GetSpellIconID() == 1721)
{
return DIMINISHING_DISORIENT;
}
@ -5070,7 +5119,7 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
case SPELLFAMILY_PRIEST:
{
// Shackle Undead
if (spellproto->SpellIconID == 27)
if (spellproto->GetSpellIconID() == 27)
{
return DIMINISHING_DISORIENT;
}
@ -5079,7 +5128,7 @@ DiminishingGroup GetDiminishingReturnsGroupForSpell(SpellEntry const* spellproto
case SPELLFAMILY_DEATHKNIGHT:
{
// Hungering Cold (no flags)
if (spellproto->SpellIconID == 2797)
if (spellproto->GetSpellIconID() == 2797)
{
return DIMINISHING_DISORIENT;
}