Fixed spell.dbc structure

This commit is contained in:
tomrus88 2008-11-02 19:31:16 +03:00
parent 79cb959991
commit 8d54103456
13 changed files with 73 additions and 73 deletions

Binary file not shown.

View file

@ -206,7 +206,7 @@ void GameObject::Update(uint32 /*p_time*/)
if(caster && caster->GetTypeId()==TYPEID_PLAYER) if(caster && caster->GetTypeId()==TYPEID_PLAYER)
{ {
SetGoState(0); SetGoState(0);
SetUInt32Value(GAMEOBJECT_FLAGS, 32); SetUInt32Value(GAMEOBJECT_FLAGS, GO_FLAG_NODESPAWN);
UpdateData udata; UpdateData udata;
WorldPacket packet; WorldPacket packet;

View file

@ -6514,7 +6514,7 @@ bool PlayerCondition::Meets(Player const * player) const
{ {
Unit::AuraMap const& auras = player->GetAuras(); Unit::AuraMap const& auras = player->GetAuras();
for(Unit::AuraMap::const_iterator itr = auras.begin(); itr != auras.end(); ++itr) for(Unit::AuraMap::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
if((itr->second->GetSpellProto()->Attributes & 0x1000010) && itr->second->GetSpellProto()->SpellVisual==3580) if((itr->second->GetSpellProto()->Attributes & 0x1000010) && itr->second->GetSpellProto()->SpellVisual[0]==3580)
return true; return true;
return false; return false;
} }

View file

@ -18141,7 +18141,7 @@ uint32 Player::GetResurrectionSpellId()
for(AuraList::const_iterator itr = dummyAuras.begin(); itr != dummyAuras.end(); ++itr) for(AuraList::const_iterator itr = dummyAuras.begin(); itr != dummyAuras.end(); ++itr)
{ {
// Soulstone Resurrection // prio: 3 (max, non death persistent) // Soulstone Resurrection // prio: 3 (max, non death persistent)
if( prio < 2 && (*itr)->GetSpellProto()->SpellVisual == 99 && (*itr)->GetSpellProto()->SpellIconID == 92 ) if( prio < 2 && (*itr)->GetSpellProto()->SpellVisual[0] == 99 && (*itr)->GetSpellProto()->SpellIconID == 92 )
{ {
switch((*itr)->GetId()) switch((*itr)->GetId())
{ {

View file

@ -775,7 +775,7 @@ enum SpellImmunity
IMMUNITY_MECHANIC = 5 // enum Mechanics IMMUNITY_MECHANIC = 5 // enum Mechanics
}; };
#define MAX_SPELL_IMMUNITY 6 #define MAX_SPELL_IMMUNITY 6
enum Targets enum Targets
{ {
@ -913,13 +913,13 @@ enum GameobjectTypes
enum GameObjectFlags enum GameObjectFlags
{ {
GO_FLAG_IN_USE = 0x01, //disables interaction while animated GO_FLAG_IN_USE = 0x00000001, //disables interaction while animated
GO_FLAG_LOCKED = 0x02, //require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip GO_FLAG_LOCKED = 0x00000002, //require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip
GO_FLAG_INTERACT_COND = 0x04, //cannot interact (condition to interact) GO_FLAG_INTERACT_COND = 0x00000004, //cannot interact (condition to interact)
GO_FLAG_TRANSPORT = 0x08, //any kind of transport? Object can transport (elevator, boat, car) GO_FLAG_TRANSPORT = 0x00000008, //any kind of transport? Object can transport (elevator, boat, car)
GO_FLAG_UNK1 = 0x10, // GO_FLAG_UNK1 = 0x00000010, //
GO_FLAG_NODESPAWN = 0x20, //never despawn, typically for doors, they just change state GO_FLAG_NODESPAWN = 0x00000020, //never despawn, typically for doors, they just change state
GO_FLAG_TRIGGERED = 0x40, //typically, summoned objects. Triggered by spell or other events GO_FLAG_TRIGGERED = 0x00000040 //typically, summoned objects. Triggered by spell or other events
}; };
enum TextEmotes enum TextEmotes

View file

@ -1550,7 +1550,7 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
cell.data.Part.reserved = ALL_DISTRICT; cell.data.Part.reserved = ALL_DISTRICT;
cell.SetNoCreate(); cell.SetNoCreate();
bool inFront = m_spellInfo->SpellVisual != 3879; bool inFront = m_spellInfo->SpellVisual[0] != 3879;
MaNGOS::SpellNotifierCreatureAndPlayer notifier(*this, TagUnitMap, radius, inFront ? PUSH_IN_FRONT : PUSH_IN_BACK,SPELL_TARGETS_AOE_DAMAGE); MaNGOS::SpellNotifierCreatureAndPlayer notifier(*this, TagUnitMap, radius, inFront ? PUSH_IN_FRONT : PUSH_IN_BACK,SPELL_TARGETS_AOE_DAMAGE);
TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, WorldTypeMapContainer > world_object_notifier(notifier); TypeContainerVisitor<MaNGOS::SpellNotifierCreatureAndPlayer, WorldTypeMapContainer > world_object_notifier(notifier);
@ -3551,7 +3551,7 @@ uint8 Spell::CanCast(bool strict)
case SPELL_EFFECT_SCHOOL_DAMAGE: case SPELL_EFFECT_SCHOOL_DAMAGE:
{ {
// Hammer of Wrath // Hammer of Wrath
if(m_spellInfo->SpellVisual == 7250) if(m_spellInfo->SpellVisual[0] == 7250)
{ {
if (!m_targets.getUnitTarget()) if (!m_targets.getUnitTarget())
return SPELL_FAILED_BAD_IMPLICIT_TARGETS; return SPELL_FAILED_BAD_IMPLICIT_TARGETS;

View file

@ -4066,7 +4066,7 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
case SPELLFAMILY_ROGUE: case SPELLFAMILY_ROGUE:
{ {
// Deadly poison aura state // Deadly poison aura state
if((m_spellProto->SpellFamilyFlags & 0x10000) && m_spellProto->SpellVisual==5100) if((m_spellProto->SpellFamilyFlags & 0x10000) && m_spellProto->SpellVisual[0]==5100)
{ {
if(apply) if(apply)
m_target->ModifyAuraState(AURA_STATE_DEADLY_POISON,true); m_target->ModifyAuraState(AURA_STATE_DEADLY_POISON,true);
@ -4078,7 +4078,7 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
for(Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr) for(Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr)
{ {
SpellEntry const* itr_spell = (*itr)->GetSpellProto(); SpellEntry const* itr_spell = (*itr)->GetSpellProto();
if(itr_spell && itr_spell->SpellFamilyName==SPELLFAMILY_ROGUE && (itr_spell->SpellFamilyFlags & 0x10000) && itr_spell->SpellVisual==5100) if(itr_spell && itr_spell->SpellFamilyName==SPELLFAMILY_ROGUE && (itr_spell->SpellFamilyFlags & 0x10000) && itr_spell->SpellVisual[0]==5100)
{ {
found = true; found = true;
break; break;
@ -5765,7 +5765,7 @@ void Aura::PeriodicTick()
return; return;
// heal for caster damage (must be alive) // heal for caster damage (must be alive)
if(m_target != pCaster && GetSpellProto()->SpellVisual==163 && !pCaster->isAlive()) if(m_target != pCaster && GetSpellProto()->SpellVisual[0]==163 && !pCaster->isAlive())
return; return;
// ignore non positive values (can be result apply spellmods to aura damage // ignore non positive values (can be result apply spellmods to aura damage
@ -5810,7 +5810,7 @@ void Aura::PeriodicTick()
bool haveCastItem = GetCastItemGUID()!=0; bool haveCastItem = GetCastItemGUID()!=0;
// heal for caster damage // heal for caster damage
if(m_target!=pCaster && spellProto->SpellVisual==163) if(m_target!=pCaster && spellProto->SpellVisual[0]==163)
{ {
uint32 dmg = spellProto->manaPerSecond; uint32 dmg = spellProto->manaPerSecond;
if(pCaster->GetHealth() <= dmg && pCaster->GetTypeId()==TYPEID_PLAYER) if(pCaster->GetHealth() <= dmg && pCaster->GetTypeId()==TYPEID_PLAYER)

View file

@ -386,7 +386,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
case SPELLFAMILY_DRUID: case SPELLFAMILY_DRUID:
{ {
// Ferocious Bite // Ferocious Bite
if((m_spellInfo->SpellFamilyFlags & 0x000800000) && m_spellInfo->SpellVisual==6587) if((m_spellInfo->SpellFamilyFlags & 0x000800000) && m_spellInfo->SpellVisual[0]==6587)
{ {
// converts each extra point of energy into ($f1+$AP/630) additional damage // converts each extra point of energy into ($f1+$AP/630) additional damage
float multiple = m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 630 + m_spellInfo->DmgMultiplier[effect_idx]; float multiple = m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 630 + m_spellInfo->DmgMultiplier[effect_idx];
@ -466,7 +466,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
{ {
// Deadly poison (only attacker applied) // Deadly poison (only attacker applied)
if( (*itr)->GetSpellProto()->SpellFamilyName==SPELLFAMILY_ROGUE && ((*itr)->GetSpellProto()->SpellFamilyFlags & 0x10000) && if( (*itr)->GetSpellProto()->SpellFamilyName==SPELLFAMILY_ROGUE && ((*itr)->GetSpellProto()->SpellFamilyFlags & 0x10000) &&
(*itr)->GetSpellProto()->SpellVisual==5100 && (*itr)->GetCasterGUID()==m_caster->GetGUID() ) (*itr)->GetSpellProto()->SpellVisual[0]==5100 && (*itr)->GetCasterGUID()==m_caster->GetGUID() )
{ {
--combo; --combo;
++doses; ++doses;
@ -504,7 +504,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
case SPELLFAMILY_HUNTER: case SPELLFAMILY_HUNTER:
{ {
// Mongoose Bite // Mongoose Bite
if((m_spellInfo->SpellFamilyFlags & 0x000000002) && m_spellInfo->SpellVisual==342) if((m_spellInfo->SpellFamilyFlags & 0x000000002) && m_spellInfo->SpellVisual[0]==342)
{ {
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2); damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2);
} }
@ -1191,7 +1191,7 @@ void Spell::EffectDummy(uint32 i)
break; break;
case SPELLFAMILY_WARRIOR: case SPELLFAMILY_WARRIOR:
// Charge // Charge
if(m_spellInfo->SpellFamilyFlags & 0x1 && m_spellInfo->SpellVisual == 867) if(m_spellInfo->SpellFamilyFlags & 0x1 && m_spellInfo->SpellVisual[0] == 867)
{ {
int32 chargeBasePoints0 = damage; int32 chargeBasePoints0 = damage;
m_caster->CastCustomSpell(m_caster,34846,&chargeBasePoints0,NULL,NULL,true); m_caster->CastCustomSpell(m_caster,34846,&chargeBasePoints0,NULL,NULL,true);
@ -3838,13 +3838,13 @@ void Spell::EffectEnchantItemTmp(uint32 i)
else if(m_spellInfo->SpellFamilyName==SPELLFAMILY_SHAMAN) else if(m_spellInfo->SpellFamilyName==SPELLFAMILY_SHAMAN)
duration = 1800; // 30 mins duration = 1800; // 30 mins
// other cases with this SpellVisual already selected // other cases with this SpellVisual already selected
else if(m_spellInfo->SpellVisual==215) else if(m_spellInfo->SpellVisual[0]==215)
duration = 1800; // 30 mins duration = 1800; // 30 mins
// some fishing pole bonuses // some fishing pole bonuses
else if(m_spellInfo->SpellVisual==563) else if(m_spellInfo->SpellVisual[0]==563)
duration = 600; // 10 mins duration = 600; // 10 mins
// shaman rockbiter enchantments // shaman rockbiter enchantments
else if(m_spellInfo->SpellVisual==0) else if(m_spellInfo->SpellVisual[0]==0)
duration = 1800; // 30 mins duration = 1800; // 30 mins
else if(m_spellInfo->Id==29702) else if(m_spellInfo->Id==29702)
duration = 300; // 5 mins duration = 300; // 5 mins
@ -4177,7 +4177,7 @@ void Spell::EffectWeaponDmg(uint32 i)
spell_bonus += m_caster->CalculateDamage (OFF_ATTACK, normalized); spell_bonus += m_caster->CalculateDamage (OFF_ATTACK, normalized);
} }
// Devastate bonus and sunder armor refresh // Devastate bonus and sunder armor refresh
else if(m_spellInfo->SpellVisual == 671 && m_spellInfo->SpellIconID == 1508) else if(m_spellInfo->SpellVisual[0] == 671 && m_spellInfo->SpellIconID == 1508)
{ {
customBonusDamagePercentMod = true; customBonusDamagePercentMod = true;
bonusDamagePercentMod = 0.0f; // only applied if auras found bonusDamagePercentMod = 0.0f; // only applied if auras found
@ -4186,7 +4186,7 @@ void Spell::EffectWeaponDmg(uint32 i)
for(Unit::AuraList::const_iterator itr=list.begin();itr!=list.end();++itr) for(Unit::AuraList::const_iterator itr=list.begin();itr!=list.end();++itr)
{ {
SpellEntry const *proto = (*itr)->GetSpellProto(); SpellEntry const *proto = (*itr)->GetSpellProto();
if(proto->SpellVisual == 406 && proto->SpellIconID == 565) if(proto->SpellVisual[0] == 406 && proto->SpellIconID == 565)
{ {
int32 duration = GetSpellDuration(proto); int32 duration = GetSpellDuration(proto);
(*itr)->SetAuraDuration(duration); (*itr)->SetAuraDuration(duration);

View file

@ -203,7 +203,7 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
} }
// only warlock armor/skin have this (in additional to family cases) // only warlock armor/skin have this (in additional to family cases)
if( spellInfo->SpellVisual == 130 && spellInfo->SpellIconID == 89) if( spellInfo->SpellVisual[0] == 130 && spellInfo->SpellIconID == 89)
{ {
return SPELL_WARLOCK_ARMOR; return SPELL_WARLOCK_ARMOR;
} }
@ -1062,14 +1062,14 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
// Soulstone Resurrection and Twisting Nether (resurrector) // Soulstone Resurrection and Twisting Nether (resurrector)
if( spellInfo_1->SpellIconID == 92 && spellInfo_2->SpellIconID == 92 && ( if( spellInfo_1->SpellIconID == 92 && spellInfo_2->SpellIconID == 92 && (
spellInfo_1->SpellVisual == 99 && spellInfo_2->SpellVisual == 0 || spellInfo_1->SpellVisual[0] == 99 && spellInfo_2->SpellVisual[0] == 0 ||
spellInfo_2->SpellVisual == 99 && spellInfo_1->SpellVisual == 0 ) ) spellInfo_2->SpellVisual[0] == 99 && spellInfo_1->SpellVisual[0] == 0 ) )
return false; return false;
// Heart of the Wild and (Primal Instinct (Idol of Terror) triggering spell or Agility) // Heart of the Wild and (Primal Instinct (Idol of Terror) triggering spell or Agility)
if( spellInfo_1->SpellIconID == 240 && spellInfo_2->SpellIconID == 240 && ( if( spellInfo_1->SpellIconID == 240 && spellInfo_2->SpellIconID == 240 && (
spellInfo_1->SpellVisual == 0 && spellInfo_2->SpellVisual == 78 || spellInfo_1->SpellVisual[0] == 0 && spellInfo_2->SpellVisual[0] == 78 ||
spellInfo_2->SpellVisual == 0 && spellInfo_1->SpellVisual == 78 ) ) spellInfo_2->SpellVisual[0] == 0 && spellInfo_1->SpellVisual[0] == 78 ) )
return false; return false;
// Personalized Weather (thunder effect should overwrite rainy aura) // Personalized Weather (thunder effect should overwrite rainy aura)
@ -1086,7 +1086,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_WARRIOR: case SPELLFAMILY_WARRIOR:
{ {
// Scroll of Protection and Defensive Stance (multi-family check) // Scroll of Protection and Defensive Stance (multi-family check)
if( spellInfo_1->SpellIconID == 276 && spellInfo_1->SpellVisual == 196 && spellInfo_2->Id == 71) if( spellInfo_1->SpellIconID == 276 && spellInfo_1->SpellVisual[0] == 196 && spellInfo_2->Id == 71)
return false; return false;
// Improved Hamstring -> Hamstring (multi-family check) // Improved Hamstring -> Hamstring (multi-family check)
@ -1098,7 +1098,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_DRUID: case SPELLFAMILY_DRUID:
{ {
// Scroll of Stamina and Leader of the Pack (multi-family check) // Scroll of Stamina and Leader of the Pack (multi-family check)
if( spellInfo_1->SpellIconID == 312 && spellInfo_1->SpellVisual == 216 && spellInfo_2->Id == 24932 ) if( spellInfo_1->SpellIconID == 312 && spellInfo_1->SpellVisual[0] == 216 && spellInfo_2->Id == 24932 )
return false; return false;
// Dragonmaw Illusion (multi-family check) // Dragonmaw Illusion (multi-family check)
@ -1129,11 +1129,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
case SPELLFAMILY_PALADIN: case SPELLFAMILY_PALADIN:
{ {
// Unstable Currents and other -> *Sanctity Aura (multi-family check) // Unstable Currents and other -> *Sanctity Aura (multi-family check)
if( spellInfo_2->SpellIconID==502 && spellInfo_1->SpellIconID==502 && spellInfo_1->SpellVisual==969 ) if( spellInfo_2->SpellIconID==502 && spellInfo_1->SpellIconID==502 && spellInfo_1->SpellVisual[0]==969 )
return false; return false;
// *Band of Eternal Champion and Seal of Command(multi-family check) // *Band of Eternal Champion and Seal of Command(multi-family check)
if( spellId_1 == 35081 && spellInfo_2->SpellIconID==561 && spellInfo_2->SpellVisual==7992) if( spellId_1 == 35081 && spellInfo_2->SpellIconID==561 && spellInfo_2->SpellVisual[0]==7992)
return false; return false;
break; break;
@ -1149,16 +1149,16 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false; return false;
// Blink & Improved Blink // Blink & Improved Blink
if( (spellInfo_1->SpellFamilyFlags & 0x0000000000010000LL) && (spellInfo_2->SpellVisual == 72 && spellInfo_2->SpellIconID == 1499) || if( (spellInfo_1->SpellFamilyFlags & 0x0000000000010000LL) && (spellInfo_2->SpellVisual[0] == 72 && spellInfo_2->SpellIconID == 1499) ||
(spellInfo_2->SpellFamilyFlags & 0x0000000000010000LL) && (spellInfo_1->SpellVisual == 72 && spellInfo_1->SpellIconID == 1499) ) (spellInfo_2->SpellFamilyFlags & 0x0000000000010000LL) && (spellInfo_1->SpellVisual[0] == 72 && spellInfo_1->SpellIconID == 1499) )
return false; return false;
} }
// Detect Invisibility and Mana Shield (multi-family check) // Detect Invisibility and Mana Shield (multi-family check)
if( spellInfo_2->Id == 132 && spellInfo_1->SpellIconID == 209 && spellInfo_1->SpellVisual == 968 ) if( spellInfo_2->Id == 132 && spellInfo_1->SpellIconID == 209 && spellInfo_1->SpellVisual[0] == 968 )
return false; return false;
// Combustion and Fire Protection Aura (multi-family check) // Combustion and Fire Protection Aura (multi-family check)
if( spellInfo_1->Id == 11129 && spellInfo_2->SpellIconID == 33 && spellInfo_2->SpellVisual == 321 ) if( spellInfo_1->Id == 11129 && spellInfo_2->SpellIconID == 33 && spellInfo_2->SpellVisual[0] == 321 )
return false; return false;
break; break;
@ -1187,7 +1187,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false; return false;
} }
// Detect Invisibility and Mana Shield (multi-family check) // Detect Invisibility and Mana Shield (multi-family check)
if( spellInfo_1->Id == 132 && spellInfo_2->SpellIconID == 209 && spellInfo_2->SpellVisual == 968 ) if( spellInfo_1->Id == 132 && spellInfo_2->SpellIconID == 209 && spellInfo_2->SpellVisual[0] == 968 )
return false; return false;
break; break;
case SPELLFAMILY_WARRIOR: case SPELLFAMILY_WARRIOR:
@ -1209,11 +1209,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false; return false;
// Defensive Stance and Scroll of Protection (multi-family check) // Defensive Stance and Scroll of Protection (multi-family check)
if( spellInfo_1->Id == 71 && spellInfo_2->SpellIconID == 276 && spellInfo_2->SpellVisual == 196 ) if( spellInfo_1->Id == 71 && spellInfo_2->SpellIconID == 276 && spellInfo_2->SpellVisual[0] == 196 )
return false; return false;
// Bloodlust and Bloodthirst (multi-family check) // Bloodlust and Bloodthirst (multi-family check)
if( spellInfo_2->Id == 2825 && spellInfo_1->SpellIconID == 38 && spellInfo_1->SpellVisual == 0 ) if( spellInfo_2->Id == 2825 && spellInfo_1->SpellIconID == 38 && spellInfo_1->SpellVisual[0] == 0 )
return false; return false;
break; break;
@ -1258,7 +1258,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
} }
// Leader of the Pack and Scroll of Stamina (multi-family check) // Leader of the Pack and Scroll of Stamina (multi-family check)
if( spellInfo_1->Id == 24932 && spellInfo_2->SpellIconID == 312 && spellInfo_2->SpellVisual == 216 ) if( spellInfo_1->Id == 24932 && spellInfo_2->SpellIconID == 312 && spellInfo_2->SpellVisual[0] == 216 )
return false; return false;
// Dragonmaw Illusion (multi-family check) // Dragonmaw Illusion (multi-family check)
@ -1275,7 +1275,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
} }
// Garrote -> Garrote-Silence (multi-family check) // Garrote -> Garrote-Silence (multi-family check)
if( spellInfo_1->SpellIconID == 498 && spellInfo_2->SpellIconID == 498 && spellInfo_2->SpellVisual == 0 ) if( spellInfo_1->SpellIconID == 498 && spellInfo_2->SpellIconID == 498 && spellInfo_2->SpellVisual[0] == 0 )
return false; return false;
break; break;
case SPELLFAMILY_HUNTER: case SPELLFAMILY_HUNTER:
@ -1312,15 +1312,15 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return true; return true;
} }
// Combustion and Fire Protection Aura (multi-family check) // Combustion and Fire Protection Aura (multi-family check)
if( spellInfo_2->Id == 11129 && spellInfo_1->SpellIconID == 33 && spellInfo_1->SpellVisual == 321 ) if( spellInfo_2->Id == 11129 && spellInfo_1->SpellIconID == 33 && spellInfo_1->SpellVisual[0] == 321 )
return false; return false;
// *Sanctity Aura -> Unstable Currents and other (multi-family check) // *Sanctity Aura -> Unstable Currents and other (multi-family check)
if( spellInfo_1->SpellIconID==502 && spellInfo_2->SpellFamilyName == SPELLFAMILY_GENERIC && spellInfo_2->SpellIconID==502 && spellInfo_2->SpellVisual==969 ) if( spellInfo_1->SpellIconID==502 && spellInfo_2->SpellFamilyName == SPELLFAMILY_GENERIC && spellInfo_2->SpellIconID==502 && spellInfo_2->SpellVisual[0]==969 )
return false; return false;
// *Seal of Command and Band of Eternal Champion (multi-family check) // *Seal of Command and Band of Eternal Champion (multi-family check)
if( spellInfo_1->SpellIconID==561 && spellInfo_1->SpellVisual==7992 && spellId_2 == 35081) if( spellInfo_1->SpellIconID==561 && spellInfo_1->SpellVisual[0]==7992 && spellId_2 == 35081)
return false; return false;
break; break;
case SPELLFAMILY_SHAMAN: case SPELLFAMILY_SHAMAN:
@ -1336,7 +1336,7 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
return false; return false;
} }
// Bloodlust and Bloodthirst (multi-family check) // Bloodlust and Bloodthirst (multi-family check)
if( spellInfo_1->Id == 2825 && spellInfo_2->SpellIconID == 38 && spellInfo_2->SpellVisual == 0 ) if( spellInfo_1->Id == 2825 && spellInfo_2->SpellIconID == 38 && spellInfo_2->SpellVisual[0] == 0 )
return false; return false;
break; break;
default: default:

View file

@ -234,12 +234,12 @@ enum SpellFamilyNames
SPELLFAMILY_HUNTER = 9, SPELLFAMILY_HUNTER = 9,
SPELLFAMILY_PALADIN = 10, SPELLFAMILY_PALADIN = 10,
SPELLFAMILY_SHAMAN = 11, SPELLFAMILY_SHAMAN = 11,
SPELLFAMILY_UNK2 = 12, SPELLFAMILY_UNK2 = 12, // 2 spells (silence resistance)
SPELLFAMILY_POTION = 13, SPELLFAMILY_POTION = 13,
// 14 - unused // 14 - unused
SPELLFAMILY_DEATHKNIGHT = 15, SPELLFAMILY_DEATHKNIGHT = 15,
// 16 - unused // 16 - unused
SPELLFAMILY_UNK3 = 17 SPELLFAMILY_PET = 17
}; };
//Some SpellFamilyFlags //Some SpellFamilyFlags

View file

@ -6023,7 +6023,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
break; break;
} }
// Shadowguard // Shadowguard
if((auraSpellInfo->SpellFamilyFlags & 0x80000000LL) && auraSpellInfo->SpellVisual==7958) if((auraSpellInfo->SpellFamilyFlags & 0x80000000LL) && auraSpellInfo->SpellVisual[0]==7958)
{ {
switch(triggeredByAura->GetSpellProto()->Id) switch(triggeredByAura->GetSpellProto()->Id)
{ {
@ -6382,14 +6382,14 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
} }
// Water Shield (we can't set cooldown for main spell - it's player casted spell // Water Shield (we can't set cooldown for main spell - it's player casted spell
if((auraSpellInfo->SpellFamilyFlags & 0x0000002000000000LL) && auraSpellInfo->SpellVisual==7358) if((auraSpellInfo->SpellFamilyFlags & 0x0000002000000000LL) && auraSpellInfo->SpellVisual[0]==7358)
{ {
target = this; target = this;
break; break;
} }
// Lightning Shield // Lightning Shield
if((auraSpellInfo->SpellFamilyFlags & 0x00000400) && auraSpellInfo->SpellVisual==37) if((auraSpellInfo->SpellFamilyFlags & 0x00000400) && auraSpellInfo->SpellVisual[0]==37)
{ {
// overwrite non existing triggered spell call in spell.dbc // overwrite non existing triggered spell call in spell.dbc
switch(triggeredByAura->GetSpellProto()->Id) switch(triggeredByAura->GetSpellProto()->Id)
@ -6475,21 +6475,21 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, int32 scriptId, uint
{ {
case 836: // Improved Blizzard (Rank 1) case 836: // Improved Blizzard (Rank 1)
{ {
if (!procSpell || procSpell->SpellVisual!=9487) if (!procSpell || procSpell->SpellVisual[0]!=9487)
return false; return false;
triggered_spell_id = 12484; triggered_spell_id = 12484;
break; break;
} }
case 988: // Improved Blizzard (Rank 2) case 988: // Improved Blizzard (Rank 2)
{ {
if (!procSpell || procSpell->SpellVisual!=9487) if (!procSpell || procSpell->SpellVisual[0]!=9487)
return false; return false;
triggered_spell_id = 12485; triggered_spell_id = 12485;
break; break;
} }
case 989: // Improved Blizzard (Rank 3) case 989: // Improved Blizzard (Rank 3)
{ {
if (!procSpell || procSpell->SpellVisual!=9487) if (!procSpell || procSpell->SpellVisual[0]!=9487)
return false; return false;
triggered_spell_id = 12486; triggered_spell_id = 12486;
break; break;
@ -7772,7 +7772,7 @@ uint32 Unit::SpellHealingBonus(SpellEntry const *spellProto, uint32 healamount,
AuraList const& mDummyAuras = pVictim->GetAurasByType(SPELL_AURA_DUMMY); AuraList const& mDummyAuras = pVictim->GetAurasByType(SPELL_AURA_DUMMY);
for(AuraList::const_iterator i = mDummyAuras.begin();i != mDummyAuras.end(); ++i) for(AuraList::const_iterator i = mDummyAuras.begin();i != mDummyAuras.end(); ++i)
{ {
if((*i)->GetSpellProto()->SpellVisual == 9180) if((*i)->GetSpellProto()->SpellVisual[0] == 9180)
{ {
// Flash of Light // Flash of Light
if ((spellProto->SpellFamilyFlags & 0x0000000040000000LL) && (*i)->GetEffIndex() == 1) if ((spellProto->SpellFamilyFlags & 0x0000000040000000LL) && (*i)->GetEffIndex() == 1)

View file

@ -1088,8 +1088,7 @@ struct SpellEntry
//uint32 EffectSpellClassMaskA[3]; // 125-127 m_effectSpellClassMaskA not used //uint32 EffectSpellClassMaskA[3]; // 125-127 m_effectSpellClassMaskA not used
//uint32 EffectSpellClassMaskB[3]; // 128-130 m_effectSpellClassMaskB not used //uint32 EffectSpellClassMaskB[3]; // 128-130 m_effectSpellClassMaskB not used
//uint32 EffectSpellClassMaskC[3]; // 131-133 m_effectSpellClassMaskC not used //uint32 EffectSpellClassMaskC[3]; // 131-133 m_effectSpellClassMaskC not used
uint32 SpellVisual; // 134 m_spellVisualID uint32 SpellVisual[2]; // 134-135 m_spellVisualID
// 135 not used - no data and name in client?
uint32 SpellIconID; // 136 m_spellIconID uint32 SpellIconID; // 136 m_spellIconID
uint32 activeIconID; // 137 m_activeIconID uint32 activeIconID; // 137 m_activeIconID
//uint32 spellPriority; // 138 m_spellPriority not used //uint32 spellPriority; // 138 m_spellPriority not used
@ -1107,19 +1106,20 @@ struct SpellEntry
uint32 MaxTargetLevel; // 210 m_maxTargetLevel uint32 MaxTargetLevel; // 210 m_maxTargetLevel
uint32 SpellFamilyName; // 211 m_spellClassSet uint32 SpellFamilyName; // 211 m_spellClassSet
uint64 SpellFamilyFlags; // 212-213 m_spellClassMask uint64 SpellFamilyFlags; // 212-213 m_spellClassMask
uint32 MaxAffectedTargets; // 214 m_maxTargets uint32 SpellFamilyFlags2; // 214 addition to m_spellClassMask
uint32 DmgClass; // 215 m_defenseType uint32 MaxAffectedTargets; // 215 m_maxTargets
uint32 PreventionType; // 216 m_preventionType uint32 DmgClass; // 216 m_defenseType
//uint32 StanceBarOrder; // 217 m_stanceBarOrder not used uint32 PreventionType; // 217 m_preventionType
float DmgMultiplier[3]; // 218-220 m_effectChainAmplitude //uint32 StanceBarOrder; // 218 m_stanceBarOrder not used
//uint32 MinFactionId; // 221 m_minFactionID not used float DmgMultiplier[3]; // 219-221 m_effectChainAmplitude
//uint32 MinReputation; // 222 m_minReputation not used //uint32 MinFactionId; // 222 m_minFactionID not used
//uint32 RequiredAuraVision; // 223 m_requiredAuraVision not used //uint32 MinReputation; // 223 m_minReputation not used
uint32 TotemCategory[2]; // 224-225 m_requiredTotemCategoryID //uint32 RequiredAuraVision; // 224 m_requiredAuraVision not used
int32 AreaId; // 226 m_requiredAreasID uint32 TotemCategory[2]; // 225-226 m_requiredTotemCategoryID
uint32 SchoolMask; // 227 m_schoolMask int32 AreaId; // 227 m_requiredAreasID
uint32 runeCostID; // 228 m_runeCostID uint32 SchoolMask; // 228 m_schoolMask
//uint32 spellMissileID; // 229 m_spellMissileID not used uint32 runeCostID; // 229 m_runeCostID
//uint32 spellMissileID; // 230 m_spellMissileID not used
private: private:
// prevent creating custom entries (copy data from original in fact) // prevent creating custom entries (copy data from original in fact)

View file

@ -68,7 +68,7 @@ const char SkillLineAbilityfmt[]="niiiixxiiiiixx";
const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char SpellCastTimefmt[]="nixx"; const char SpellCastTimefmt[]="nixx";
const char SpellDurationfmt[]="niii"; const char SpellDurationfmt[]="niii";
const char SpellEntryfmt[]="niiiiiiiiixiiiiiiiiiixxxxiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffxxxxxxxxxixiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiixiiixfffxxxiiiiix"; const char SpellEntryfmt[]="niiiiiiiiixiiiiiiiiiixxxxiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffffffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffxxxxxxxxxiiiixssssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiix";
const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx"; const char SpellFocusObjectfmt[]="nxxxxxxxxxxxxxxxxx";
const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixx"; const char SpellItemEnchantmentfmt[]="nxiiiiiixxxiiissssssssssssssssxiiiixx";
const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; const char SpellItemEnchantmentConditionfmt[]="nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX";