diff --git a/sql/mangos.sql b/sql/mangos.sql index a6606813f..64f952b31 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_9149_01_mangos_spell_bonus_data` bit(1) default NULL + `required_9150_01_mangos_spell_bonus_data` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -14119,7 +14119,6 @@ INSERT INTO `spell_bonus_data` VALUES (11366, 1.15, 0.05, 0, 'Mage - Pyroblast'), (2948, 0.4286, 0, 0, 'Mage - Scorch'), /* Paladin */ -(53742, 0, 0.0156, 0.03, 'Paladin - Blood Corruption'), (26573, 0, 0.04, 0.04, 'Paladin - Consecration'), (879, 0.15, 0, 0.15, 'Paladin - Exorcism'), (25997, 0, 0, 0, 'Paladin - Eye for an Eye'), @@ -14128,13 +14127,11 @@ INSERT INTO `spell_bonus_data` VALUES (635, 1.66, 0, 0, 'Paladin - Holy Light'), (25912, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt'), (20925, 0.09, 0, 0.056, 'Paladin - Holy Shield'), -(31803, 0, 0.0156, 0.03, 'Paladin - Holy Vengeance'), (2812, 0.07, 0, 0.07, 'Paladin - Holy Wrath'), (54158, 0.25, 0, 0, 'Paladin - Judgement'), (20467, 0.25, 0, 0.16, 'Paladin - Judgement of Command'), (53733, 0, 0, 0, 'Paladin - Judgement of Corruption'), (20267, 0.1, 0, 0.1, 'Paladin - Judgement of Light Proc'), -(20187, 0.32, 0, 0, 'Paladin - Judgement of Righteousness'), (31804, 0, 0, 0, 'Paladin - Judgement of Vengeance'), (20424, 0, 0, 0, 'Paladin - Seal of Command Proc'), (53739, 0, 0.00156, 0.003, 'Paladin - Seal of Corruption (full stack proc)'), diff --git a/sql/updates/9150_01_mangos_spell_bonus_data.sql b/sql/updates/9150_01_mangos_spell_bonus_data.sql new file mode 100644 index 000000000..7698eb154 --- /dev/null +++ b/sql/updates/9150_01_mangos_spell_bonus_data.sql @@ -0,0 +1,3 @@ +ALTER TABLE db_version CHANGE COLUMN required_9149_01_mangos_spell_bonus_data required_9150_01_mangos_spell_bonus_data bit; + +DELETE FROM spell_bonus_data WHERE entry IN (20187,31803,53742); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 96675cdda..ea2d46261 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -237,6 +237,7 @@ pkgdata_DATA = \ 9136_07_characters_characters.sql \ 9148_01_mangos_spell_bonus_data.sql \ 9149_01_mangos_spell_bonus_data.sql \ + 9150_01_mangos_spell_bonus_data.sql \ README ## Additional files to include when running 'make dist' @@ -454,4 +455,5 @@ EXTRA_DIST = \ 9136_07_characters_characters.sql \ 9148_01_mangos_spell_bonus_data.sql \ 9149_01_mangos_spell_bonus_data.sql \ + 9150_01_mangos_spell_bonus_data.sql \ README diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index ddcb1bfea..af0d114fa 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -4777,6 +4777,20 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real) } break; } + case SPELLFAMILY_PALADIN: + { + // Holy Vengeance / Blood Corruption + if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000080000000000) && m_spellProto->SpellVisual[0] == 7902) + { + // AP * 0.025 + SPH * 0.013 bonus per tick + float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) + + caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellProto), GetTarget()); + m_modifier.m_amount += int32(GetStackAmount()) * (int32(ap * 0.025f) + int32(holy * 13 / 1000)); + return; + } + break; + } default: break; } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c5488d010..36fbe55c2 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -638,8 +638,16 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) } case SPELLFAMILY_PALADIN: { + // Judgement of Righteousness - receive benefit from Spell Damage and Attack power + if (m_spellInfo->Id == 20187) + { + float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + + m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); + damage += int32(ap * 0.2f) + int32(holy * 32 / 100); + } // Judgement of Vengeance/Corruption ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance/Blood Corruption on the target - if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x800000000)) && m_spellInfo->SpellIconID==2292) + else if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x800000000)) && m_spellInfo->SpellIconID==2292) { uint32 debuf_id; switch(m_spellInfo->Id) @@ -1815,14 +1823,6 @@ void Spell::EffectDummy(uint32 i) switch(m_spellInfo->Id) { - // Judgement of Righteousness (0.2*$AP+0.32*$SPH) holy added in spellDamagBonus - case 20187: - { - if (!unitTarget) - return; - m_damage+=int32(0.2f*m_caster->GetTotalAttackPowerValue(BASE_ATTACK)); - return; - } case 31789: // Righteous Defense (step 1) { if (m_caster->GetTypeId() != TYPEID_PLAYER) @@ -4628,12 +4628,13 @@ void Spell::EffectWeaponDmg(uint32 i) } case SPELLFAMILY_PALADIN: { - // Seal of Command - receive benefit from Spell Damage and Healing - if(m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000002000000)) + // Judgement of Command - receive benefit from Spell Damage and Attack Power + if(m_spellInfo->SpellFamilyFlags & UI64LIT(0x00020000000000)) { - spellBonusNeedWeaponDamagePercentMod = true;// apply weaponDamagePercentMod to spell_bonus (and then to all bonus, fixes and weapon already have applied) - spell_bonus += int32(0.23f*m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo))); - spell_bonus += int32(0.29f*m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget)); + float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); + int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + + m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); + spell_bonus += int32(ap * 0.08f) + int32(holy * 13 / 100); } break; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 902a6e7bb..9593f2d0e 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 "9149" + #define REVISION_NR "9150" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 3f1e59a50..b693456f4 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_9136_07_characters_characters" - #define REVISION_DB_MANGOS "required_9149_01_mangos_spell_bonus_data" + #define REVISION_DB_MANGOS "required_9150_01_mangos_spell_bonus_data" #define REVISION_DB_REALMD "required_9010_01_realmd_realmlist" #endif // __REVISION_SQL_H__