diff options
| author | megamage <none@none> | 2009-01-06 13:45:49 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-01-06 13:45:49 -0600 |
| commit | 3311f1ea0ecb6f578167b5791b106febbafd2efa (patch) | |
| tree | ca93d40a14e7978f44a3296a623b7c96f135322f /src/game/SpellMgr.cpp | |
| parent | 2b21f0e7302cfdb0fc79e3255f80dc33b939c974 (diff) | |
*Mangos [7034] Add support 96 bit spell family mask to triggers. By DiSlord.
*Mangos [7035] Disable wrong use some spell effects (changed in 303). By DiSlord.
*Mangos [7036] Implement one warlock glyph. By DiSlord.
--HG--
branch : trunk
Diffstat (limited to 'src/game/SpellMgr.cpp')
| -rw-r--r-- | src/game/SpellMgr.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 4894d520a9e..f88b0a50760 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -36,8 +36,8 @@ SpellMgr::SpellMgr() case SPELL_EFFECT_PERSISTENT_AREA_AURA: //27 case SPELL_EFFECT_SUMMON: //28 case SPELL_EFFECT_TRIGGER_MISSILE: //32 - case SPELL_EFFECT_SUMMON_WILD: //41 - case SPELL_EFFECT_SUMMON_GUARDIAN: //42 + //case SPELL_EFFECT_SUMMON_WILD: //41 not 303 + //case SPELL_EFFECT_SUMMON_GUARDIAN: //42 not 303 case SPELL_EFFECT_TRANS_DOOR: //50 summon object case SPELL_EFFECT_SUMMON_PET: //56 case SPELL_EFFECT_ADD_FARSIGHT: //72 @@ -48,13 +48,13 @@ SpellMgr::SpellMgr() //case SPELL_EFFECT_SUMMON_TOTEM_SLOT2: //88 //case SPELL_EFFECT_SUMMON_TOTEM_SLOT3: //89 //case SPELL_EFFECT_SUMMON_TOTEM_SLOT4: //90 - case SPELL_EFFECT_SUMMON_CRITTER: //97 + //case SPELL_EFFECT_SUMMON_CRITTER: //97 not 303 case SPELL_EFFECT_SUMMON_OBJECT_SLOT1: //104 case SPELL_EFFECT_SUMMON_OBJECT_SLOT2: //105 case SPELL_EFFECT_SUMMON_OBJECT_SLOT3: //106 case SPELL_EFFECT_SUMMON_OBJECT_SLOT4: //107 case SPELL_EFFECT_SUMMON_DEAD_PET: //109 - case SPELL_EFFECT_SUMMON_DEMON: //112 + //case SPELL_EFFECT_SUMMON_DEMON: //112 not 303 case SPELL_EFFECT_TRIGGER_SPELL_2: //151 ritual of summon EffectTargetType[i] = SPELL_REQUIRE_DEST; break; @@ -1019,15 +1019,12 @@ void SpellMgr::LoadSpellProcEvents() uint32 count = 0; - // 0 1 2 3 4 5 6 7 8 - QueryResult *result = WorldDatabase.Query("SELECT entry, SchoolMask, SpellFamilyName, SpellFamilyMask, procFlags, procEx, ppmRate, CustomChance, Cooldown FROM spell_proc_event"); + // 0 1 2 3 4 5 6 7 8 9 10 + QueryResult *result = WorldDatabase.Query("SELECT entry, SchoolMask, SpellFamilyName, SpellFamilyMask0, SpellFamilyMask1, SpellFamilyMask2, procFlags, procEx, ppmRate, CustomChance, Cooldown FROM spell_proc_event"); if( !result ) { - barGoLink bar( 1 ); - bar.step(); - sLog.outString(); sLog.outString( ">> Loaded %u spell proc event conditions", count ); return; @@ -1054,12 +1051,13 @@ void SpellMgr::LoadSpellProcEvents() spe.schoolMask = fields[1].GetUInt32(); spe.spellFamilyName = fields[2].GetUInt32(); - spe.spellFamilyMask = fields[3].GetUInt64(); - spe.procFlags = fields[4].GetUInt32(); - spe.procEx = fields[5].GetUInt32(); - spe.ppmRate = fields[6].GetFloat(); - spe.customChance = fields[7].GetFloat(); - spe.cooldown = fields[8].GetUInt32(); + spe.spellFamilyMask = (uint64)fields[3].GetUInt32()|((uint64)fields[4].GetUInt32()<<32); + spe.spellFamilyMask2= fields[5].GetUInt32(); + spe.procFlags = fields[6].GetUInt32(); + spe.procEx = fields[7].GetUInt32(); + spe.ppmRate = fields[8].GetFloat(); + spe.customChance = fields[9].GetFloat(); + spe.cooldown = fields[10].GetUInt32(); mSpellProcEventMap[entry] = spe; @@ -1120,9 +1118,10 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const * spellP return false; // spellFamilyName is Ok need check for spellFamilyMask if present - if(spellProcEvent->spellFamilyMask) + if(spellProcEvent->spellFamilyMask || spellProcEvent->spellFamilyMask2) { - if ((spellProcEvent->spellFamilyMask & procSpell->SpellFamilyFlags) == 0) + if ((spellProcEvent->spellFamilyMask & procSpell->SpellFamilyFlags ) == 0 && + (spellProcEvent->spellFamilyMask2 & procSpell->SpellFamilyFlags2) == 0) return false; active = true; // Spell added manualy -> so its active spell } |
