[9150] Fixed some paladin spell bonuses

* Use stack size in additional spell damage for 31803/53742.
* Use in code calculation for additional spell 20187/20375 damage

Thanks to MrLama for small cleanups and patch updating.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
KAPATEJIb 2010-01-12 01:53:54 +03:00 committed by VladimirMangos
parent 73a368d64a
commit 171a2e02d7
7 changed files with 37 additions and 20 deletions

View file

@ -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)'),

View file

@ -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);

View file

@ -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

View file

@ -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;
}

View file

@ -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;
}

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "9149"
#define REVISION_NR "9150"
#endif // __REVISION_NR_H__

View file

@ -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__