diff --git a/sql/mangos.sql b/sql/mangos.sql index a0460f734..47f11291a 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_10342_02_mangos_command` bit(1) default NULL + `required_10349_01_mangos_spell_proc_event` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -18404,6 +18404,8 @@ INSERT INTO `spell_proc_event` VALUES (67771, 0x7F, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 45), (70664, 0x00, 7, 0x00000010, 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (70748, 0x00, 3, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(71406, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,45.000000, 0), +(71545, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000,45.000000, 0), (71761, 0x00, 3, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0.000000, 0.000000, 0); /*!40000 ALTER TABLE `spell_proc_event` ENABLE KEYS */; diff --git a/sql/updates/10349_01_mangos_spell_proc_event.sql b/sql/updates/10349_01_mangos_spell_proc_event.sql new file mode 100644 index 000000000..5e871bbd5 --- /dev/null +++ b/sql/updates/10349_01_mangos_spell_proc_event.sql @@ -0,0 +1,6 @@ +ALTER TABLE db_version CHANGE COLUMN required_10342_02_mangos_command required_10349_01_mangos_spell_proc_event bit; + +delete from `spell_proc_event` where entry IN (71406, 71545); +insert into `spell_proc_event` values +(71406, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000,45.000000, 0), +(71545, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000, 0.000000,45.000000, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index e9b625b8e..e475f76dc 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -76,6 +76,7 @@ pkgdata_DATA = \ 10332_02_characters_pet_aura.sql \ 10342_01_mangos_mangos_string.sql \ 10342_02_mangos_command.sql \ + 10349_01_mangos_spell_proc_event.sql \ README ## Additional files to include when running 'make dist' @@ -132,4 +133,5 @@ EXTRA_DIST = \ 10332_02_characters_pet_aura.sql \ 10342_01_mangos_mangos_string.sql \ 10342_02_mangos_command.sql \ + 10349_01_mangos_spell_proc_event.sql \ README diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp index 8efae7c49..42bf5dc75 100644 --- a/src/game/UnitAuraProcHandler.cpp +++ b/src/game/UnitAuraProcHandler.cpp @@ -959,8 +959,8 @@ SpellAuraProcResult Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura if (!roll_chance_i(triggerAmount)) return SPELL_AURA_PROC_FAILED; - Aura *aur = GetAura(71905, EFFECT_INDEX_0); - if (aur && uint32(aur->GetStackAmount() + 1) >= aur->GetSpellProto()->StackAmount) + SpellAuraHolder *aurHolder = GetSpellAuraHolder(71905); + if (aurHolder && uint32(aurHolder->GetStackAmount() + 1) >= aurHolder->GetSpellProto()->StackAmount) { RemoveAurasDueToSpell(71905); CastSpell(this, 71904, true); // Chaos Bane @@ -1997,6 +1997,32 @@ SpellAuraProcResult Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura target = this; break; } + // Anger Capacitor + case 71406: // normal + case 71545: // heroic + { + if (!pVictim) + return SPELL_AURA_PROC_FAILED; + + SpellEntry const* mote = sSpellStore.LookupEntry(71432); + if (!mote) + return SPELL_AURA_PROC_FAILED; + uint32 maxStack = mote->StackAmount - (dummySpell->Id == 71545 ? 1 : 0); + + SpellAuraHolder *aurHolder = GetSpellAuraHolder(71432); + if (aurHolder && uint32(aurHolder->GetStackAmount() +1) >= maxStack) + { + RemoveAurasDueToSpell(71432); // Mote of Anger + + // Manifest Anger (main hand/off hand) + CastSpell(pVictim, roll_chance_i(50) ? 71433 : 71434, true); + return SPELL_AURA_PROC_OK; + } + else + triggered_spell_id = 71432; + + break; + } } break; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index fca25800d..369f3d439 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 "10348" + #define REVISION_NR "10349" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 576441e03..8ee5c2426 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_10342_02_mangos_command" + #define REVISION_DB_MANGOS "required_10349_01_mangos_spell_proc_event" #define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version" #endif // __REVISION_SQL_H__