From eba34304ea03a8a8aa4e15b3ed1474cafaed6369 Mon Sep 17 00:00:00 2001 From: Ungaminga Date: Mon, 20 Jul 2009 06:11:16 +0400 Subject: [PATCH] [8213] Update code for talent 17962. * Fixed place, basic dependent from 2 auras type at target and damage calculation. * Avoid double apply spell bonus from original effect and talent self. Signed-off-by: VladimirMangos This is first patch in series for resolve all problem suggested by different authors. Signed-off-by: VladimirMangos --- sql/mangos.sql | 4 ++-- .../8213_01_mangos_spell_bonus_data.sql | 4 ++++ sql/updates/Makefile.am | 2 ++ src/game/Spell.cpp | 16 --------------- src/game/SpellEffects.cpp | 20 +++++++++++++++++++ src/shared/revision_nr.h | 2 +- 6 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 sql/updates/8213_01_mangos_spell_bonus_data.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 20c28ec27..5d622f20d 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_8212_01_mangos_spell_proc_event` bit(1) default NULL + `required_8213_01_mangos_spell_bonus_data` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -17891,7 +17891,7 @@ INSERT INTO `spell_bonus_data` VALUES ('27243', '0.22', '0.25', '0', 'Warlock - Seed of Corruption'), ('30108', '0', '0.24', '0', 'Warlock - Unstable Affliction'), ('31117', '1.8', '0', '0', 'Warlock - Unstable Affliction Dispell'), -('17962', '0.4286', '0', '0', 'Warlock - Conflagrate'), +('17962', '0', '0', '0', 'Warlock - Conflagrate'), ('6789', '0.22', '0', '0', 'Warlock - Death Coil'), ('28176', '0', '0', '0', 'Warlock - Fel Armor'), ('48181', '0.4729', '0', '0', 'Warlock - Haunt'), diff --git a/sql/updates/8213_01_mangos_spell_bonus_data.sql b/sql/updates/8213_01_mangos_spell_bonus_data.sql new file mode 100644 index 000000000..9ccc350ba --- /dev/null +++ b/sql/updates/8213_01_mangos_spell_bonus_data.sql @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_8212_01_mangos_spell_proc_event required_8213_01_mangos_spell_bonus_data bit; + +DELETE FROM `spell_bonus_data` where entry='17962'; +INSERT INTO `spell_bonus_data` (`entry`) VALUES ('17962'); \ No newline at end of file diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 07b736709..02768cc0b 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -248,6 +248,7 @@ pkgdata_DATA = \ 8191_01_mangos_spell_affect.sql \ 8211_01_mangos_spell_proc_event.sql \ 8212_01_mangos_spell_proc_event.sql \ + 8213_01_mangos_spell_bonus_data.sql \ README ## Additional files to include when running 'make dist' @@ -476,4 +477,5 @@ EXTRA_DIST = \ 8191_01_mangos_spell_affect.sql \ 8211_01_mangos_spell_proc_event.sql \ 8212_01_mangos_spell_proc_event.sql \ + 8213_01_mangos_spell_bonus_data.sql \ README diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 2e5351cd2..2680522f4 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2346,22 +2346,6 @@ void Spell::cast(bool skipCheck) break; } - // Conflagrate - consumes immolate - if ((m_spellInfo->TargetAuraState == AURA_STATE_IMMOLATE) && m_targets.getUnitTarget()) - { - // for caster applied auras only - Unit::AuraList const &mPeriodic = m_targets.getUnitTarget()->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); - for(Unit::AuraList::const_iterator i = mPeriodic.begin(); i != mPeriodic.end(); ++i) - { - if( (*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && ((*i)->GetSpellProto()->SpellFamilyFlags & 4) && - (*i)->GetCasterGUID()==m_caster->GetGUID() ) - { - m_targets.getUnitTarget()->RemoveAura((*i)->GetId(), (*i)->GetEffIndex()); - break; - } - } - } - // traded items have trade slot instead of guid in m_itemTargetGUID // set to real guid to be sent later to the client m_targets.updateTradeSlotItem(); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index db7ddaa3b..6fb123c84 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -408,6 +408,26 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) if(unitTarget->HasAuraState(AURA_STATE_IMMOLATE)) damage += int32(damage*0.25f); } + // Conflagrate - consumes immolate or Shadowflame + if (m_spellInfo->TargetAuraState == AURA_STATE_IMMOLATE) + { + // for caster applied auras only + Unit::AuraList const &mPeriodic = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + for(Unit::AuraList::const_iterator i = mPeriodic.begin(); i != mPeriodic.end(); ++i) + { + if ((*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && + (*i)->GetCasterGUID()==m_caster->GetGUID() && + // Immolate + ((*i)->GetSpellProto()->SpellFamilyFlags & 0x0000000000000004 || + // Shadowflame + (*i)->GetSpellProto()->SpellFamilyFlags2 & 0x00000002)) + { + int32 damagetick = m_caster->SpellDamageBonus(unitTarget, (*i)->GetSpellProto(), (*i)->GetModifier()->m_amount, DOT); + damage += damagetick * 4; + break; + } + } + } break; } case SPELLFAMILY_PRIEST: diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b240b14da..dfc0f9bd9 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 "8212" + #define REVISION_NR "8213" #endif // __REVISION_NR_H__