[10743] Add AP/RAP bonus data to spell_bonus_data.

Also remove related hardcoded cases.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
insider42 2010-11-19 05:48:19 +03:00 committed by VladimirMangos
parent f27741460f
commit 355f172fc6
8 changed files with 116 additions and 78 deletions

View file

@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
`version` varchar(120) default NULL, `version` varchar(120) default NULL,
`creature_ai_version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL,
`cache_id` int(10) default '0', `cache_id` int(10) default '0',
`required_10742_01_mangos_spell_bonus_data` bit(1) default NULL `required_10743_02_mangos_spell_bonus_data` bit(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
-- --
@ -14368,10 +14368,13 @@ LOCK TABLES `spell_bonus_data` WRITE;
INSERT INTO `spell_bonus_data` VALUES INSERT INTO `spell_bonus_data` VALUES
/* Death Knight */ /* Death Knight */
(48721, 0, 0, 0.04, 0, 'Death Knight - Blood Boil'), (48721, 0, 0, 0.04, 0, 'Death Knight - Blood Boil'),
(55078, 0, 0, 0, 0.06325,'Death Knight - Blood Plague'),
(50444, 0, 0, 0.105, 0, 'Death Knight - Corpse Explosion Triggered'), (50444, 0, 0, 0.105, 0, 'Death Knight - Corpse Explosion Triggered'),
(52212, 0, 0, 0.0475,0, 'Death Knight - Death and Decay Triggered'), (52212, 0, 0, 0.0475,0, 'Death Knight - Death and Decay Triggered'),
(47632, 0, 0, 0.15, 0, 'Death Knight - Death Coil Damage'), (47632, 0, 0, 0.15, 0, 'Death Knight - Death Coil Damage'),
(47633, 0, 0, 0.15, 0, 'Death Knight - Death Coil Heal'), (47633, 0, 0, 0.15, 0, 'Death Knight - Death Coil Heal'),
(48743, 0, 0, 0, 0, 'Death Knight - Death Pact'),
(55095, 0, 0, 0, 0.06325,'Death Knight - Frost Fever'),
(49184, 0, 0, 0.1, 0, 'Death Knight - Howling Blast'), (49184, 0, 0, 0.1, 0, 'Death Knight - Howling Blast'),
(45477, 0, 0, 0.1, 0, 'Death Knight - Icy Touch'), (45477, 0, 0, 0.1, 0, 'Death Knight - Icy Touch'),
(56903, 0, 0, 0, 0, 'Death Knight - Lichflame'), (56903, 0, 0, 0, 0, 'Death Knight - Lichflame'),
@ -14379,16 +14382,19 @@ INSERT INTO `spell_bonus_data` VALUES
(50401, 0, 0, 0, 0, 'Death Knight - Razor Frost'), (50401, 0, 0, 0, 0, 'Death Knight - Razor Frost'),
(47476, 0, 0, 0.06, 0, 'Death Knight - Strangulate'), (47476, 0, 0, 0.06, 0, 'Death Knight - Strangulate'),
(50536, 0, 0, 0, 0.013, 'Death Knight - Unholy Blight Triggered'), (50536, 0, 0, 0, 0.013, 'Death Knight - Unholy Blight Triggered'),
(48743, 0, 0, 0, 0, 'Death Knight - Death Pact'),
/* Druid */ /* Druid */
(5185, 1.6104, 0, 0, 0, 'Druid - Healing Touch'), (5185, 1.6104, 0, 0, 0, 'Druid - Healing Touch'),
(339, 0, 0.1, 0, 0, 'Druid - Entangling Roots'), (339, 0, 0.1, 0, 0, 'Druid - Entangling Roots'),
(60089, 0, 0, 0.15, 0, 'Druid - Faerie Fire (Feral) Triggered'), (60089, 0, 0, 0.15, 0, 'Druid - Faerie Fire (Feral) Triggered'),
(42231, 0.12898,0, 0, 0, 'Druid - Hurricane Triggered'), (42231, 0.12898,0, 0, 0, 'Druid - Hurricane Triggered'),
(5570, 0, 0.2, 0, 0, 'Druid - Insect Swarm'), (5570, 0, 0.2, 0, 0, 'Druid - Insect Swarm'),
(33745, 0, 0, 0.01, 0.01, 'Druid - Lacerate'),
(33763, 0, 0.09518, 0, 0, 'Druid - Lifebloom'), (33763, 0, 0.09518, 0, 0, 'Druid - Lifebloom'),
(48628, 0, 0, 0, 0.15, 'Druid - Lock Jaw'),
(8921, 0.1515, 0.13, 0, 0, 'Druid - Moonfire'), (8921, 0.1515, 0.13, 0, 0, 'Druid - Moonfire'),
(50464, 0.6611, 0, 0, 0, 'Druid - Nourish'), (50464, 0.6611, 0, 0, 0, 'Druid - Nourish'),
(9007, 0, 0, 0, 0.03, 'Druid - Pounce Bleed'),
(1822, 0, 0, 0, 0.06, 'Druid - Rake'),
(8936, 0.539, 0.188, 0, 0, 'Druid - Regrowth'), (8936, 0.539, 0.188, 0, 0, 'Druid - Regrowth'),
(50288, 0.05, 0, 0, 0, 'Druid - Starfall'), (50288, 0.05, 0, 0, 0, 'Druid - Starfall'),
(50294, 0.012, 0, 0, 0, 'Druid - Starfall AOE'), (50294, 0.012, 0, 0, 0, 'Druid - Starfall AOE'),
@ -14398,6 +14404,15 @@ INSERT INTO `spell_bonus_data` VALUES
(5176, 0.5714, 0, 0, 0, 'Druid - Wrath'), (5176, 0.5714, 0, 0, 0, 'Druid - Wrath'),
/* Generic */ /* Generic */
(54757, 0, 0, 0, 0, 'Generic - Pyro Rocket'), (54757, 0, 0, 0, 0, 'Generic - Pyro Rocket'),
/* Hunter */
(3044, 0, 0, 0.15, 0, 'Hunter - Arcane Shot'),
(3674, 0, 0, 0, 0.02, 'Hunter - Black Arrow'),
(19306, 0, 0, 0.2, 0, 'Hunter - Counterattack'),
(13812, 0, 0, 0.1, 0.1, 'Hunter - Explosive Trap'),
(13797, 0, 0, 0, 0.02, 'Hunter - Immolation Trap'),
(1495, 0, 0, 0.2, 0, 'Hunter - Mongoose Bite'),
(1978, 0, 0, 0, 0.04, 'Hunter - Serpent Sting'),
(42243, 0, 0, 0.0837,0, 'Hunter - Volley'),
/* Mage */ /* Mage */
(44425, 0.714286,0, 0, 0, 'Mage - Arcane Barrage'), (44425, 0.714286,0, 0, 0, 'Mage - Arcane Barrage'),
(7268, 0.2857, 0, 0, 0, 'Mage - Arcane Missiles Triggered Spell'), (7268, 0.2857, 0, 0, 0, 'Mage - Arcane Missiles Triggered Spell'),
@ -14447,6 +14462,9 @@ INSERT INTO `spell_bonus_data` VALUES
(585, 0.714, 0, 0, 0, 'Priest - Smite'), (585, 0.714, 0, 0, 0, 'Priest - Smite'),
(34914, 0, 0.4, 0, 0, 'Priest - Vampiric Touch'), (34914, 0, 0.4, 0, 0, 'Priest - Vampiric Touch'),
(64085, 1.2, 0, 0, 0, 'Priest - Vampiric Touch Dispel'), (64085, 1.2, 0, 0, 0, 'Priest - Vampiric Touch Dispel'),
/* Rogue */
(2818, 0, 0, 0, 0.03, 'Rogue - Deadly Poison'),
(703, 0, 0, 0, 0.07, 'Rogue - Garrote'),
/* Shaman */ /* Shaman */
(974, 0.4762, 0, 0, 0, 'Shaman - Earth Shield'), (974, 0.4762, 0, 0, 0, 'Shaman - Earth Shield'),
(379, 0, 0, 0, 0, 'Shaman - Earth Shield Triggered'), (379, 0, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
@ -14525,6 +14543,16 @@ INSERT INTO spell_chain VALUES
-- ------------------ -- ------------------
-- (0) Not associated with skills -- (0) Not associated with skills
-- ------------------ -- ------------------
/* Deadly Poison Triggered */
(2818,0,2818,1,0),
(2819,2818,2818,2,0),
(11353,2819,2818,3,0),
(11354,11353,2818,4,0),
(25349,11354,2818,5,0),
(26968,25349,2818,6,0),
(27187,26968,2818,7,0),
(57969,27187,2818,8,0),
(57970,57969,2818,9,0),
/* Flametongue Weapon Proc */ /* Flametongue Weapon Proc */
(8026,0,8026,1,0), (8026,0,8026,1,0),
(8028,8026,8026,2,0), (8028,8026,8026,2,0),
@ -14845,6 +14873,13 @@ INSERT INTO spell_chain VALUES
(27025,14317,13813,4,0), (27025,14317,13813,4,0),
(49066,27025,13813,5,0), (49066,27025,13813,5,0),
(49067,49066,13813,6,0), (49067,49066,13813,6,0),
/* Explosive Trap Effect */
(13812,0,13812,1,0),
(14314,13812,13812,2,0),
(14315,14314,13812,3,0),
(27026,14315,13812,4,0),
(49064,27026,13812,5,0),
(49065,49064,13812,6,0),
/* Freezing Trap */ /* Freezing Trap */
(1499,0,1499,1,0), (1499,0,1499,1,0),
(14310,1499,1499,2,0), (14310,1499,1499,2,0),
@ -14858,6 +14893,15 @@ INSERT INTO spell_chain VALUES
(27023,14305,13795,6,0), (27023,14305,13795,6,0),
(49055,27023,13795,7,0), (49055,27023,13795,7,0),
(49056,49055,13795,8,0), (49056,49055,13795,8,0),
/* Immolation Trap Triggered */
(13797,0,13797,1,0),
(14298,13797,13797,2,0),
(14299,14298,13797,3,0),
(14300,14299,13797,4,0),
(14301,14300,13797,5,0),
(27024,14301,13797,6,0),
(49053,27024,13797,7,0),
(49054,49053,13797,8,0),
/* Mongoose Bite */ /* Mongoose Bite */
(1495,0,1495,1,0), (1495,0,1495,1,0),
(14269,1495,1495,2,0), (14269,1495,1495,2,0),
@ -15183,6 +15227,13 @@ INSERT INTO spell_chain VALUES
(27022,14295,1510,4,0), (27022,14295,1510,4,0),
(58431,27022,1510,5,0), (58431,27022,1510,5,0),
(58434,58431,1510,6,0), (58434,58431,1510,6,0),
/* Volley Triggered */
(42243,0,42243,1,0),
(42244,42243,42243,2,0),
(42245,42244,42243,3,0),
(42234,42245,42243,4,0),
(58432,42234,42243,5,0),
(58433,58432,42243,6,0),
-- ------------------ -- ------------------
-- (164) Blacksmithing -- (164) Blacksmithing
-- ------------------ -- ------------------

View file

@ -0,0 +1,37 @@
ALTER TABLE db_version CHANGE COLUMN required_10742_01_mangos_spell_bonus_data required_10743_01_mangos_spell_chain bit;
DELETE FROM `spell_chain` WHERE `first_spell` IN (2818,13797,13812,42243);
INSERT INTO `spell_chain` VALUES
/* Explosive Trap Effect */
(13812,0,13812,1,0),
(14314,13812,13812,2,0),
(14315,14314,13812,3,0),
(27026,14315,13812,4,0),
(49064,27026,13812,5,0),
(49065,49064,13812,6,0),
/* Immolation Trap Triggered */
(13797,0,13797,1,0),
(14298,13797,13797,2,0),
(14299,14298,13797,3,0),
(14300,14299,13797,4,0),
(14301,14300,13797,5,0),
(27024,14301,13797,6,0),
(49053,27024,13797,7,0),
(49054,49053,13797,8,0),
/* Volley Triggered */
(42243,0,42243,1,0),
(42244,42243,42243,2,0),
(42245,42244,42243,3,0),
(42234,42245,42243,4,0),
(58432,42234,42243,5,0),
(58433,58432,42243,6,0),
/* Deadly Poison Triggered */
(2818,0,2818,1,0),
(2819,2818,2818,2,0),
(11353,2819,2818,3,0),
(11354,11353,2818,4,0),
(25349,11354,2818,5,0),
(26968,25349,2818,6,0),
(27187,26968,2818,7,0),
(57969,27187,2818,8,0),
(57970,57969,2818,9,0);

View file

@ -0,0 +1,20 @@
ALTER TABLE db_version CHANGE COLUMN required_10743_01_mangos_spell_chain required_10743_02_mangos_spell_bonus_data bit;
DELETE FROM `spell_bonus_data` WHERE `entry` IN (2818,42243,13797,13812,1495,19306,3044,42245,3674,9007,1822,33745,48628,703,1978,55095,55078);
INSERT INTO `spell_bonus_data` VALUES
(2818,0,0,0,0.03,'Rogue - Deadly Poison'),
(3674,0,0,0,0.02,'Hunter - Black Arrow'),
(9007,0,0,0,0.03,'Druid - Pounce Bleed'),
(1822,0,0,0,0.06,'Druid - Rake'),
(33745,0,0,0.01,0.01,'Druid - Lacerate'),
(48628,0,0,0,0.15,'Druid - Lock Jaw'),
(703,0,0,0,0.07,'Rogue - Garrote'),
(1495,0,0,0.2,0,'Hunter - Mongoose Bite'),
(42243,0,0,0.0837,0,'Hunter - Volley'),
(1978,0,0,0,0.04,'Hunter - Serpent Sting'),
(3044,0,0,0.15,0,'Hunter - Arcane Shot'),
(13797,0,0,0,0.02,'Hunter - Immolation Trap'),
(13812,0,0,0.1,0.1,'Hunter - Explosive Trap'),
(19306,0,0,0.2,0,'Hunter - Counterattack'),
(55095,0,0,0,0.06325,'Death Knight - Frost Fever'),
(55078,0,0,0,0.06325,'Death Knight - Blood Plague');

View file

@ -119,6 +119,8 @@ pkgdata_DATA = \
10682_01_mangos_item_convert.sql \ 10682_01_mangos_item_convert.sql \
10704_01_mangos_gossip_menu_option.sql \ 10704_01_mangos_gossip_menu_option.sql \
10742_01_mangos_spell_bonus_data.sql \ 10742_01_mangos_spell_bonus_data.sql \
10743_01_mangos_spell_chain.sql \
10743_02_mangos_spell_bonus_data.sql \
README README
## Additional files to include when running 'make dist' ## Additional files to include when running 'make dist'
@ -218,4 +220,6 @@ EXTRA_DIST = \
10682_01_mangos_item_convert.sql \ 10682_01_mangos_item_convert.sql \
10704_01_mangos_gossip_menu_option.sql \ 10704_01_mangos_gossip_menu_option.sql \
10742_01_mangos_spell_bonus_data.sql \ 10742_01_mangos_spell_bonus_data.sql \
10743_01_mangos_spell_chain.sql \
10743_02_mangos_spell_bonus_data.sql \
README README

View file

@ -4788,14 +4788,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
switch (spellProto->SpellFamilyName) switch (spellProto->SpellFamilyName)
{ {
case SPELLFAMILY_GENERIC:
{
// Pounce Bleed
if (spellProto->SpellIconID == 147 && spellProto->SpellVisual[0] == 0)
// $AP*0.18/6 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 / 100);
break;
}
case SPELLFAMILY_WARRIOR: case SPELLFAMILY_WARRIOR:
{ {
// Rend // Rend
@ -4816,14 +4808,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
} }
case SPELLFAMILY_DRUID: case SPELLFAMILY_DRUID:
{ {
// Rake
if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000001000) && spellProto->Effect[EFFECT_INDEX_2] == SPELL_EFFECT_ADD_COMBO_POINTS)
// $AP*0.18/3 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 6 / 100);
// Lacerate
if (spellProto->SpellFamilyFlags & UI64LIT(0x000000010000000000))
// $AP*0.05/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
// Rip // Rip
if (spellProto->SpellFamilyFlags & UI64LIT(0x000000000000800000)) if (spellProto->SpellFamilyFlags & UI64LIT(0x000000000000800000))
{ {
@ -4845,10 +4829,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
} }
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * cp / 100); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * cp / 100);
} }
// Lock Jaw
if (spellProto->SpellFamilyFlags & UI64LIT(0x1000000000000000))
// 0.15*$AP
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 15 / 100);
break; break;
} }
case SPELLFAMILY_ROGUE: case SPELLFAMILY_ROGUE:
@ -4868,26 +4848,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
if (cp > 5) cp = 5; if (cp > 5) cp = 5;
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]); m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]);
} }
// Garrote
if (spellProto->SpellFamilyFlags & UI64LIT(0x000000000000000100))
// $AP*0.07 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 7 / 100);
// Deadly Poison
if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000010000))
// 0.12*$AP / 4 * amount of stack
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 * GetStackAmount() / 100);
break;
}
case SPELLFAMILY_HUNTER:
{
// Serpent Sting
if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000))
// $RAP*0.2/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.2 / 5);
// Immolation Trap
if ((spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) && spellProto->SpellIconID == 678)
// $RAP*0.1/5 bonus per tick
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
break; break;
} }
case SPELLFAMILY_PALADIN: case SPELLFAMILY_PALADIN:
@ -4904,15 +4864,6 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
} }
break; break;
} }
case SPELLFAMILY_DEATHKNIGHT:
{
//Frost Fever and Blood Plague AP scale
if (spellProto->SpellFamilyFlags & UI64LIT(0x400080000000000))
{
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.055f * 1.15f);
}
break;
}
default: default:
break; break;
} }

View file

@ -654,37 +654,12 @@ void Spell::EffectSchoolDMG(SpellEffectIndex effect_idx)
if (m_caster->HasAura(57627)) // Charge 6 sec post-affect if (m_caster->HasAura(57627)) // Charge 6 sec post-affect
damage *= 2; damage *= 2;
} }
// Mongoose Bite
else if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x000000002)) && m_spellInfo->SpellVisual[0]==342)
{
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f);
}
// Counterattack
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0008000000000000))
{
damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f);
}
// Arcane Shot
else if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000800)) && m_spellInfo->maxLevel > 0)
{
damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.15f);
}
// Steady Shot // Steady Shot
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x100000000)) else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x100000000))
{ {
int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE)); int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE));
damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f); damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f);
} }
// Explosive Trap Effect
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000004))
{
damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f);
}
// Volley
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00002000))
{
damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.0837f);
}
break; break;
} }
case SPELLFAMILY_PALADIN: case SPELLFAMILY_PALADIN:

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "10742" #define REVISION_NR "10743"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__

View file

@ -1,6 +1,6 @@
#ifndef __REVISION_SQL_H__ #ifndef __REVISION_SQL_H__
#define __REVISION_SQL_H__ #define __REVISION_SQL_H__
#define REVISION_DB_CHARACTERS "required_10664_01_characters_arena_team_stats" #define REVISION_DB_CHARACTERS "required_10664_01_characters_arena_team_stats"
#define REVISION_DB_MANGOS "required_10742_01_mangos_spell_bonus_data" #define REVISION_DB_MANGOS "required_10743_02_mangos_spell_bonus_data"
#define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version" #define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version"
#endif // __REVISION_SQL_H__ #endif // __REVISION_SQL_H__