diff --git a/sql/mangos.sql b/sql/mangos.sql index c93644aee..ad04100c9 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -24,7 +24,7 @@ CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, `cache_id` int(10) default '0', - `required_10427_01_mangos_spell_proc_event` bit(1) default NULL + `required_10430_01_mangos_spell_chain` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -14757,14 +14757,6 @@ INSERT INTO spell_chain VALUES (42858,27074,2948,10,0), (42859,42858,2948,11,0), /*------------------ ---(39)Subtlety -------------------*/ -/*Stealth*/ -(1784,0,1784,1,0), -(1785,1784,1784,2,0), -(1786,1785,1784,3,0), -(1787,1786,1784,4,0), -/*------------------ -- (50) Beast Mastery ------------------*/ /*Aspect of the Dragonhawk*/ @@ -15098,13 +15090,6 @@ INSERT INTO spell_chain VALUES (48159,34917,34914,4,0), (48160,48159,34914,5,0), /*------------------ --- (134) Feral Combat (Druid) -------------------*/ -/*Prowl*/ -(5215,0,5215,1,0), -(6783,5215,5215,2,0), -(9913,6783,5215,3,0), -/*------------------ --(163)Marksmanship ------------------*/ /*Aimed Shot*/ @@ -15374,17 +15359,6 @@ INSERT INTO spell_chain VALUES (43987,0,43987,1,0), (58659,43987,43987,2,0), /*------------------ ---(253)Assassination -------------------*/ -/*ExposeArmor*/ -(8647,0,8647,1,0), -(8649,8647,8647,2,0), -(8650,8649,8647,3,0), -(11197,8650,8647,4,0), -(11198,11197,8647,5,0), -(26866,11198,8647,6,0), -(48669,26866,8647,7,0), -/*------------------ -- (267) Protection (Paladin) ------------------*/ /*Avenger'sShield*/ @@ -15419,17 +15393,6 @@ INSERT INTO spell_chain VALUES (53600,0,53600,1,0), (61411,53600,53600,2,0), /*------------------ ---(270)Pet-GenericHunter -------------------*/ -/*Cower*/ -(1742,0,1742,1,0), -(1753,1742,1742,2,0), -(1754,1753,1742,3,0), -(1755,1754,1742,4,0), -(1756,1755,1742,5,0), -(16697,1756,1742,6,0), -(27048,16697,1742,7,0), -/*------------------ --(354)Demonology ------------------*/ /*Banish*/ @@ -16450,18 +16413,6 @@ INSERT INTO spell_chain VALUES (62902,62901,62900,3,0), (62903,62902,62900,4,0), (62904,62903,62900,5,0), -/*Pestilence*/ -(50842,0,50842,1,0), -(51426,50842,50842,2,0), -(51427,51426,50842,3,0), -(51428,51427,50842,4,0), -(51429,51428,50842,5,0), -/*Strangulate*/ -(47476,0,47476,1,0), -(49913,47476,47476,2,0), -(49914,49913,47476,3,0), -(49915,49914,47476,4,0), -(49916,49915,47476,5,0), /*------------------ --(771)Frost ------------------*/ diff --git a/sql/updates/10430_01_mangos_spell_chain.sql b/sql/updates/10430_01_mangos_spell_chain.sql new file mode 100644 index 000000000..6d0d2e921 --- /dev/null +++ b/sql/updates/10430_01_mangos_spell_chain.sql @@ -0,0 +1,3 @@ +ALTER TABLE db_version CHANGE COLUMN required_10427_01_mangos_spell_proc_event required_10430_01_mangos_spell_chain bit; + +DELETE FROM spell_chain WHERE first_spell IN (1742, 1784, 5215, 8647, 47476, 50842); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 1d843a91c..f143ba781 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -93,6 +93,7 @@ pkgdata_DATA = \ 10422_01_mangos_spell_proc_event.sql \ 10423_01_mangos_spell_chain.sql \ 10427_01_mangos_spell_proc_event.sql \ + 10430_01_mangos_spell_chain.sql \ README ## Additional files to include when running 'make dist' @@ -166,4 +167,5 @@ EXTRA_DIST = \ 10422_01_mangos_spell_proc_event.sql \ 10423_01_mangos_spell_chain.sql \ 10427_01_mangos_spell_proc_event.sql \ + 10430_01_mangos_spell_chain.sql \ README diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 0d0ba4a97..900445b69 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2627,6 +2627,34 @@ void SpellMgr::LoadSpellChains() continue; }*/ } + + } + + // removed ranks often still listed as forward in skill abilities but not listed as spell in it + if (node.prev) + { + bool skip = false; + // some forward spells still exist but excluded from real use as ranks and not listed in skill abilities now + SkillLineAbilityMap::const_iterator forward_ab_low = mSkillLineAbilityMap.lower_bound(spell_id); + SkillLineAbilityMap::const_iterator forward_ab_up = mSkillLineAbilityMap.upper_bound(spell_id); + if (forward_ab_low == forward_ab_up) + { + for(SkillLineAbilityMap::const_iterator ab_itr = mSkillLineAbilityMap.lower_bound(node.prev); ab_itr != mSkillLineAbilityMap.upper_bound(node.prev); ++ab_itr) + { + // spell listed as forward and not listed as ability + // this is marker for removed ranks + if (ab_itr->second->forward_spellid == spell_id) + { + sLog.outErrorDb("Spell %u (prev: %u, first: %u, rank: %d, req: %u) listed in `spell_chain` is removed rank by DBC data.", + spell_id, node.prev, node.first, node.rank, node.req); + skip = true; + break; + } + } + } + + if (skip) + continue; } mSpellChains[spell_id] = node; @@ -2697,7 +2725,7 @@ void SpellMgr::LoadSpellChains() mSpellChainsNext.insert(SpellChainMapNext::value_type(node.req,spell_id)); } - // check single rank redundant cases (single rank talents not added by default so this can be only custom cases) + // check single rank redundant cases (single rank talents/spell abilities not added by default so this can be only custom cases) for(SpellChainMap::const_iterator i = mSpellChains.begin(); i != mSpellChains.end(); ++i) { // skip non-first ranks, and spells with additional reqs diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index c0f2e1e78..d20704b2e 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10429" + #define REVISION_NR "10430" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index ae90fd719..604762ada 100644 --- a/src/shared/revision_sql.h +++ b/src/shared/revision_sql.h @@ -1,6 +1,6 @@ #ifndef __REVISION_SQL_H__ #define __REVISION_SQL_H__ #define REVISION_DB_CHARACTERS "required_10332_02_characters_pet_aura" - #define REVISION_DB_MANGOS "required_10427_01_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_10430_01_mangos_spell_chain" #define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version" #endif // __REVISION_SQL_H__