Change GetSpellSpecific() to have SpellEntry argument instead of ID, this saves lookups in spellstore for entries we already have.
--HG-- branch : trunk
This commit is contained in:
@@ -1209,7 +1209,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const * aurApp, Unit * caster,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SPELLFAMILY_DEATHKNIGHT:
|
case SPELLFAMILY_DEATHKNIGHT:
|
||||||
if (GetSpellSpecific(GetId()) == SPELL_SPECIFIC_PRESENCE)
|
if (GetSpellSpecific(GetSpellProto()) == SPELL_SPECIFIC_PRESENCE)
|
||||||
{
|
{
|
||||||
AuraEffect *bloodPresenceAura=0; // healing by damage done
|
AuraEffect *bloodPresenceAura=0; // healing by damage done
|
||||||
AuraEffect *frostPresenceAura=0; // increased health
|
AuraEffect *frostPresenceAura=0; // increased health
|
||||||
|
|||||||
+6
-10
@@ -464,12 +464,8 @@ AuraState GetSpellAuraState(SpellEntry const * spellInfo)
|
|||||||
return AURA_STATE_NONE;
|
return AURA_STATE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpellSpecific GetSpellSpecific(uint32 spellId)
|
SpellSpecific GetSpellSpecific(SpellEntry const * spellInfo)
|
||||||
{
|
{
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
|
||||||
if(!spellInfo)
|
|
||||||
return SPELL_SPECIFIC_NORMAL;
|
|
||||||
|
|
||||||
switch(spellInfo->SpellFamilyName)
|
switch(spellInfo->SpellFamilyName)
|
||||||
{
|
{
|
||||||
case SPELLFAMILY_GENERIC:
|
case SPELLFAMILY_GENERIC:
|
||||||
@@ -1013,7 +1009,7 @@ bool IsSingleTargetSpell(SpellEntry const *spellInfo)
|
|||||||
if ( spellInfo->AttributesEx5 & SPELL_ATTR_EX5_SINGLE_TARGET_SPELL )
|
if ( spellInfo->AttributesEx5 & SPELL_ATTR_EX5_SINGLE_TARGET_SPELL )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
switch(GetSpellSpecific(spellInfo->Id))
|
switch(GetSpellSpecific(spellInfo))
|
||||||
{
|
{
|
||||||
case SPELL_SPECIFIC_JUDGEMENT:
|
case SPELL_SPECIFIC_JUDGEMENT:
|
||||||
return true;
|
return true;
|
||||||
@@ -1033,13 +1029,13 @@ bool IsSingleTargetSpells(SpellEntry const *spellInfo1, SpellEntry const *spellI
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
// TODO - need found Judgements rule
|
// TODO - need found Judgements rule
|
||||||
SpellSpecific spec1 = GetSpellSpecific(spellInfo1->Id);
|
SpellSpecific spec1 = GetSpellSpecific(spellInfo1);
|
||||||
// spell with single target specific types
|
// spell with single target specific types
|
||||||
switch(spec1)
|
switch(spec1)
|
||||||
{
|
{
|
||||||
case SPELL_SPECIFIC_JUDGEMENT:
|
case SPELL_SPECIFIC_JUDGEMENT:
|
||||||
case SPELL_SPECIFIC_MAGE_POLYMORPH:
|
case SPELL_SPECIFIC_MAGE_POLYMORPH:
|
||||||
if(GetSpellSpecific(spellInfo2->Id) == spec1)
|
if(GetSpellSpecific(spellInfo2) == spec1)
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -3025,8 +3021,8 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32
|
|||||||
|
|
||||||
bool SpellMgr::CanAurasStack(SpellEntry const *spellInfo_1, SpellEntry const *spellInfo_2, bool sameCaster) const
|
bool SpellMgr::CanAurasStack(SpellEntry const *spellInfo_1, SpellEntry const *spellInfo_2, bool sameCaster) const
|
||||||
{
|
{
|
||||||
SpellSpecific spellSpec_1 = GetSpellSpecific(spellInfo_1->Id);
|
SpellSpecific spellSpec_1 = GetSpellSpecific(spellInfo_1);
|
||||||
SpellSpecific spellSpec_2 = GetSpellSpecific(spellInfo_2->Id);
|
SpellSpecific spellSpec_2 = GetSpellSpecific(spellInfo_2);
|
||||||
if (spellSpec_1 && spellSpec_2)
|
if (spellSpec_1 && spellSpec_2)
|
||||||
if (IsSingleFromSpellSpecificPerTarget(spellSpec_1, spellSpec_2)
|
if (IsSingleFromSpellSpecificPerTarget(spellSpec_1, spellSpec_2)
|
||||||
|| sameCaster && IsSingleFromSpellSpecificPerCaster(spellSpec_1, spellSpec_2))
|
|| sameCaster && IsSingleFromSpellSpecificPerCaster(spellSpec_1, spellSpec_2))
|
||||||
|
|||||||
+1
-1
@@ -187,7 +187,7 @@ enum SpellLinkedType
|
|||||||
SPELL_LINK_REMOVE = 0,
|
SPELL_LINK_REMOVE = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
SpellSpecific GetSpellSpecific(uint32 spellId);
|
SpellSpecific GetSpellSpecific(SpellEntry const * spellInfo);
|
||||||
AuraState GetSpellAuraState(SpellEntry const * spellInfo);
|
AuraState GetSpellAuraState(SpellEntry const * spellInfo);
|
||||||
|
|
||||||
// Different spell properties
|
// Different spell properties
|
||||||
|
|||||||
+10
-2
@@ -6768,7 +6768,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger
|
|||||||
chance = 15.0f;
|
chance = 15.0f;
|
||||||
}
|
}
|
||||||
// Judgement (any)
|
// Judgement (any)
|
||||||
else if (GetSpellSpecific(procSpell->Id) == SPELL_SPECIFIC_JUDGEMENT)
|
else if (GetSpellSpecific(procSpell) == SPELL_SPECIFIC_JUDGEMENT)
|
||||||
{
|
{
|
||||||
triggered_spell_id = 40472;
|
triggered_spell_id = 40472;
|
||||||
chance = 50.0f;
|
chance = 50.0f;
|
||||||
@@ -13828,7 +13828,15 @@ void Unit::SetStandState(uint8 state)
|
|||||||
|
|
||||||
bool Unit::IsPolymorphed() const
|
bool Unit::IsPolymorphed() const
|
||||||
{
|
{
|
||||||
return GetSpellSpecific(getTransForm())==SPELL_SPECIFIC_MAGE_POLYMORPH;
|
uint32 transformId = getTransForm();
|
||||||
|
if (!transformId)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const SpellEntry *spellInfo=sSpellStore.LookupEntry(transformId);
|
||||||
|
if (!spellInfo)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return GetSpellSpecific(spellInfo)==SPELL_SPECIFIC_MAGE_POLYMORPH;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::SetDisplayId(uint32 modelId)
|
void Unit::SetDisplayId(uint32 modelId)
|
||||||
|
|||||||
Reference in New Issue
Block a user