From 53c96fc7318f3b942111ab864581aa91c5c32fc8 Mon Sep 17 00:00:00 2001 From: nos4r2zod Date: Fri, 11 Sep 2009 00:04:17 +0400 Subject: [PATCH 01/14] [8486] Fixed work some dispel effects that have 0 dispel charges in spell data when expect 1. This fix work totem effect 52025 in poison part and some scripted and creatures spells. Signed-off-by: VladimirMangos --- src/game/SpellEffects.cpp | 5 +++++ src/shared/revision_nr.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 9c14864c3..4a11368bd 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3512,6 +3512,11 @@ void Spell::EffectDispel(uint32 i) std::list < std::pair > success_list;// (spell_id,casterGuid) std::list < uint32 > fail_list; // spell_id int32 list_size = dispel_list.size(); + + // some spells have effect value = 0 and all from its by meaning expect 1 + if(!damage) + damage = 1; + // Dispell N = damage buffs (or while exist buffs for dispel) for (int32 count=0; count < damage && list_size > 0; ++count) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 27c3ccbab..9a4c49a4a 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 "8485" + #define REVISION_NR "8486" #endif // __REVISION_NR_H__ From d91f2c2c355cddca3fe8f5fe1edcf5ca055c7228 Mon Sep 17 00:00:00 2001 From: nos4r2zod Date: Fri, 11 Sep 2009 06:06:36 +0400 Subject: [PATCH 02/14] [8487] Fixes in paladin seals and related spells. Signed-off-by: VladimirMangos --- sql/mangos.sql | 54 ++++++++------ .../8487_01_mangos_spell_bonus_data.sql | 20 ++++++ .../8487_02_mangos_spell_proc_event.sql | 3 + sql/updates/Makefile.am | 4 ++ src/game/Spell.cpp | 7 -- src/game/SpellEffects.cpp | 58 +++++++++------ src/game/Unit.cpp | 71 ++++++++++++++----- src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 9 files changed, 148 insertions(+), 73 deletions(-) create mode 100644 sql/updates/8487_01_mangos_spell_bonus_data.sql create mode 100644 sql/updates/8487_02_mangos_spell_proc_event.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 6a5a42f3a..9feb72f23 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_8482_01_mangos_spell_elixir` bit(1) default NULL + `required_8487_02_mangos_spell_proc_event` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -13648,26 +13648,36 @@ INSERT INTO `spell_bonus_data` VALUES ('30455', '0.1429', '0', '0', 'Mage - Ice Lance'), ('34913','0', '0', '0', 'Mage - Molten Armor Triggered'), /* Paladin */ -('19750','0.4286', '0', '0', 'Paladin - Flash of Light'), -('635', '0.7143', '0', '0', 'Paladin - Holy Light'), -('25912', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt'), -('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal'), -('31935', '0.07', '0', '0.07', 'Paladin - Avengers Shiled'), -('26573', '0', '0.04', '0.04', 'Paladin - Consecration'), -('879', '0.15', '0', '0.15', 'Paladin - Exorcism'), -('24275', '0.15', '0', '0.15', 'Paladin - Hammer of Wrath'), -('20925', '0.09', '0', '0.056', 'Paladin - Holy Shield'), -('2812', '0.07', '0', '0.07', 'Paladin - Holy Wrath'), -('31893', '0.25', '0', '0.16', 'Paladin - Seal of Blood Enemy Proc'), -('32221', '0.25', '0', '0.16', 'Paladin - Seal of Blood Self Proc'), -('20424', '0.25', '0', '0.16', 'Paladin - Seal of Command Proc'), -('379', '0', '0', '0', 'Shaman - Earth Shield Triggered'), -('20167', '0.25', '0', '0.16', 'Paladin - Seal of Light Proc'), -('53719', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Enemy Proc'), -('53718', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Self Proc'), -('25742', '0.07', '0', '0.039', 'Paladin - Seal of Righteousness Dummy Proc'), -('53595', '0', '0', '0','Paladin - Hammer of the Righteous'), -('31803', '0', '0.013', '0.15', 'Paladin - Holy Vengeance'), +(31935, 0.07, 0, 0.07, 'Paladin - Avengers Shiled'), +(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'), +(19750, 0.4286, 0, 0, 'Paladin - Flash of Light'), +(53595, 0, 0, 0, 'Paladin - Hammer of the Righteous'), +(24275, 0.15, 0, 0.15, 'Paladin - Hammer of Wrath'), +(635, 0.7143, 0, 0, 'Paladin - Holy Light'), +(25914, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Heal'), +(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'), +(31898, 0.18, 0, 0.11, 'Paladin - Judgement of Blood Enemy'), +(32220, 0.0594, 0, 0.0363,'Paladin - Judgement of Blood Self'), +(20467, 0.25, 0, 0.16, 'Paladin - Judgement of Command'), +(53733, 0, 0, 0, 'Paladin - Judgement of Corruption'), +(53726, 0.18, 0, 0.11, 'Paladin - Judgement of the Martyr Enemy'), +(53725, 0.0594, 0, 0.0363,'Paladin - Judgement of the Martyr Self'), +(31804, 0, 0, 0, 'Paladin - Judgement of Vengeance'), +(31893, 0, 0, 0, 'Paladin - Seal of Blood Proc Enemy'), +(32221, 0, 0, 0, 'Paladin - Seal of Blood Proc Self'), +(20424, 0, 0, 0, 'Paladin - Seal of Command Proc'), +(53739, 0, 0.00156, 0.003, 'Paladin - Seal of Corruption (full stack proc)'), +(20167, 0.25, 0, 0.16, 'Paladin - Seal of Light Proc'), +(25742, 0.07, 0, 0.039, 'Paladin - Seal of Righteousness Dummy Proc'), +(53719, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Enemy'), +(53718, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Self'), +(42463, 0, 0.00156, 0.003, 'Paladin - Seal of Vengeance (full stack proc)'), + /* Priest */ ('32546', '0.8068', '0', '0', 'Priest - Binding Heal'), ('34861', '0.402', '0', '0', 'Priest - Circle of Healing'), @@ -13692,6 +13702,7 @@ INSERT INTO `spell_bonus_data` VALUES ('585', '0.714', '0', '0', 'Priest - Smite'), ('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'), /* Shaman */ +(379, 0, 0, 0, 'Shaman - Earth Shield Triggered'), ('974', '0.4762', '0', '0', 'Shaman - Earth Shield'), ('1064', '1.34', '0', '0', 'Shaman - Chain Heal'), ('331', '1.6106', '0', '0', 'Shaman - Healing Wave'), @@ -17483,7 +17494,6 @@ INSERT INTO `spell_proc_event` VALUES (31570, 0x00000000, 3, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31785, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00008800, 0x00000000, 0.000000, 0.000000, 0), (31794, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0), -(31801, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,20.000000, 0.000000, 0), (31833, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31835, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (31836, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), diff --git a/sql/updates/8487_01_mangos_spell_bonus_data.sql b/sql/updates/8487_01_mangos_spell_bonus_data.sql new file mode 100644 index 000000000..880f4773b --- /dev/null +++ b/sql/updates/8487_01_mangos_spell_bonus_data.sql @@ -0,0 +1,20 @@ +ALTER TABLE db_version CHANGE COLUMN required_8482_01_mangos_spell_elixir required_8487_01_mangos_spell_bonus_data bit; + +DELETE FROM `spell_bonus_data` where entry in (20424, 20467, 42463, 53739, 31803, 53742, 31804, 53733, 31893, 32221, 32220, 31898, 53719, 53718, 53725, 53726); +INSERT INTO `spell_bonus_data` VALUES +(20424, 0, 0, 0, "Paladin - Seal of Command Proc"), +(20467, 0.25, 0, 0.16, "Paladin - Judgement of Command"), +(42463, 0, 0.00156, 0.003, "Paladin - Seal of Vengeance (full stack proc)"), +(53739, 0, 0.00156, 0.003, "Paladin - Seal of Corruption (full stack proc)"), +(31803, 0, 0.0156, 0.03, "Paladin - Holy Vengeance"), +(53742, 0, 0.0156, 0.03, "Paladin - Blood Corruption"), +(31804, 0, 0, 0, "Paladin - Judgement of Vengeance"), +(53733, 0, 0, 0, "Paladin - Judgement of Corruption"), +(31893, 0, 0, 0, "Paladin - Seal of Blood Proc Enemy"), +(32221, 0, 0, 0, "Paladin - Seal of Blood Proc Self"), +(31898, 0.18, 0, 0.11, "Paladin - Judgement of Blood Enemy"), +(32220, 0.0594, 0, 0.0363, "Paladin - Judgement of Blood Self"), +(53719, 0, 0, 0, "Paladin - Seal of the Martyr Proc Enemy"), +(53718, 0, 0, 0, "Paladin - Seal of the Martyr Proc Self"), +(53726, 0.18, 0, 0.11, "Paladin - Judgement of the Martyr Enemy"), +(53725, 0.0594, 0, 0.0363, "Paladin - Judgement of the Martyr Self"); diff --git a/sql/updates/8487_02_mangos_spell_proc_event.sql b/sql/updates/8487_02_mangos_spell_proc_event.sql new file mode 100644 index 000000000..2ca276dd8 --- /dev/null +++ b/sql/updates/8487_02_mangos_spell_proc_event.sql @@ -0,0 +1,3 @@ +ALTER TABLE db_version CHANGE COLUMN required_8487_01_mangos_spell_bonus_data required_8487_02_mangos_spell_proc_event bit; + +DELETE FROM `spell_proc_event` WHERE `entry` IN (31801, 53736); \ No newline at end of file diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 60ace4e61..f1e8f3be5 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -101,6 +101,8 @@ pkgdata_DATA = \ 8462_01_mangos_creature_ai_texts.sql \ 8469_01_characters_character_spell.sql \ 8482_01_mangos_spell_elixir.sql \ + 8487_01_mangos_spell_bonus_data.sql \ + 8487_02_mangos_spell_proc_event.sql \ README ## Additional files to include when running 'make dist' @@ -182,4 +184,6 @@ EXTRA_DIST = \ 8462_01_mangos_creature_ai_texts.sql \ 8469_01_characters_character_spell.sql \ 8482_01_mangos_spell_elixir.sql \ + 8487_01_mangos_spell_bonus_data.sql \ + 8487_02_mangos_spell_proc_event.sql \ README diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 23e9fa7db..2899bf394 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -998,13 +998,6 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo); caster->DealSpellDamage(&damageInfo, true); - - // Judgement of Blood - if (m_spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN && (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000800000000)) && m_spellInfo->SpellIconID==153) - { - int32 damagePoint = damageInfo.damage * 33 / 100; - m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true); - } } // Passive spell hits/misses or active spells only misses (only triggers) else diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 4a11368bd..fe7a4e5c2 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -610,9 +610,17 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) } case SPELLFAMILY_PALADIN: { - // Judgement of Vengeance ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance on the target + // 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) { + uint32 debuf_id; + switch(m_spellInfo->Id) + { + case 53733: debuf_id = 53742; break;// Judgement of Corruption -> Blood Corruption + case 31804: debuf_id = 31803; break;// Judgement of Vengeance -> Holy Vengeance + default: return; + } + float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK); int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) + m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget); @@ -621,11 +629,13 @@ void Spell::EffectSchoolDMG(uint32 effect_idx) uint32 stacks = 0; Unit::AuraList const& auras = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); for(Unit::AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) - if((*itr)->GetId() == 31803 && (*itr)->GetCasterGUID()==m_caster->GetGUID()) + { + if( ((*itr)->GetId() == debuf_id) && (*itr)->GetCasterGUID()==m_caster->GetGUID()) { stacks = (*itr)->GetStackAmount(); break; } + } // + 10% for each application of Holy Vengeance on the target if(stacks) damage += damage * stacks * 10 /100; @@ -1674,25 +1684,7 @@ void Spell::EffectDummy(uint32 i) if (!spell_proto) return; - if (!unitTarget->hasUnitState(UNIT_STAT_STUNNED) && m_caster->GetTypeId()==TYPEID_PLAYER) - { - // decreased damage (/2) for non-stunned target. - SpellModifier *mod = new SpellModifier; - mod->op = SPELLMOD_DAMAGE; - mod->value = -50; - mod->type = SPELLMOD_PCT; - mod->spellId = m_spellInfo->Id; - mod->mask = UI64LIT(0x0000020000000000); - mod->mask2= UI64LIT(0x0); - - ((Player*)m_caster)->AddSpellMod(mod, true); - m_caster->CastSpell(unitTarget, spell_proto, true, NULL); - // mod deleted - ((Player*)m_caster)->AddSpellMod(mod, false); - } - else - m_caster->CastSpell(unitTarget, spell_proto, true, NULL); - + m_caster->CastSpell(unitTarget, spell_proto, true, NULL); return; } } @@ -4654,13 +4646,33 @@ void Spell::EffectWeaponDmg(uint32 i) if(m_caster->GetTypeId()==TYPEID_PLAYER) ((Player*)m_caster)->AddComboPoints(unitTarget, 1); } - // Mangle (Cat): CP - if (m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==UI64LIT(0x0000040000000000))) + else if (m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==UI64LIT(0x0000040000000000))) { if(m_caster->GetTypeId()==TYPEID_PLAYER) ((Player*)m_caster)->AddComboPoints(unitTarget, 1); } + else if(m_spellInfo->SpellFamilyName==SPELLFAMILY_PALADIN) + { + // Judgement of Blood/of the Martyr backlash damage (33%) + if(m_spellInfo->SpellFamilyFlags & 0x0000000800000000LL && m_spellInfo->SpellIconID==153) + { + int32 damagePoint = m_damage * 33 / 100; + if(m_spellInfo->Id == 31898) + m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true); + else + m_caster->CastCustomSpell(m_caster, 53725, &damagePoint, NULL, NULL, true); + } + // Seal of Blood/of the Martyr backlash damage (10%) + else if(m_spellInfo->SpellIconID==2293) + { + int32 damagePoint = m_damage * 10 / 100; + if(m_spellInfo->Id == 31893) + m_caster->CastCustomSpell(m_caster, 32221, &damagePoint, NULL, NULL, true); + else + m_caster->CastCustomSpell(m_caster, 53718, &damagePoint, NULL, NULL, true); + } + } // take ammo if(m_attackType == RANGED_ATTACK && m_caster->GetTypeId() == TYPEID_PLAYER) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2725018f0..b32904c82 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5737,6 +5737,43 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu return false; triggered_spell_id = 31803; + + // Add 5-stack effect + int8 stacks = 0; + AuraList const& auras = target->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + for(AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) + { + if( ((*itr)->GetId() == 31803) && (*itr)->GetCasterGUID()==GetGUID()) + { + stacks = (*itr)->GetStackAmount(); + break; + } + } + if(stacks >= 5) + CastSpell(target,42463,true,NULL,triggeredByAura); + break; + } + // Seal of Corruption (damage calc on apply aura) + case 53736: + { + if(effIndex != 0) // effect 1,2 used by seal unleashing code + return false; + + triggered_spell_id = 53742; + + // Add 5-stack effect + int8 stacks = 0; + AuraList const& auras = target->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE); + for(AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) + { + if( ((*itr)->GetId() == 53742) && (*itr)->GetCasterGUID()==GetGUID()) + { + stacks = (*itr)->GetStackAmount(); + break; + } + } + if(stacks >= 5) + CastSpell(target,53739,true,NULL,triggeredByAura); break; } // Spiritual Attunement @@ -5756,16 +5793,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu // Seal of Blood do damage trigger case 31892: { - if (effIndex == 0) // 0 effect - is proc on enemy + // 0 effect - is proc on enemy + if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MILEE_HIT)) triggered_spell_id = 31893; - else if (effIndex == 1) // 1 effect - is proc on self - { - // add spell damage from prev effect (27%) - damage += CalculateDamage(BASE_ATTACK, false) * 27 / 100; - basepoints0 = triggerAmount * damage / 100; - target = this; - triggered_spell_id = 32221; - } else return true; break; @@ -5773,16 +5803,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu // Seal of the Martyr do damage trigger case 53720: { - if (effIndex == 0) // 0 effect - is proc on enemy + // 0 effect - is proc on enemy + if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MILEE_HIT)) triggered_spell_id = 53719; - else if (effIndex == 1) // 1 effect - is proc on self - { - // add spell damage from prev effect (27%) - damage += CalculateDamage(BASE_ATTACK, false) * 27 / 100; - basepoints0 = triggerAmount * damage / 100; - target = this; - triggered_spell_id = 53718; - } else return true; break; @@ -8453,12 +8476,22 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM break; } break; - } } break; } case SPELL_DAMAGE_CLASS_MELEE: + { + // Judgement of Command proc always crits on stunned target + if(spellProto->SpellFamilyName == SPELLFAMILY_PALADIN) + { + if(spellProto->SpellFamilyFlags & 0x0000000000800000LL && spellProto->SpellIconID == 561) + { + if(pVictim->hasUnitState(UNIT_STAT_STUNNED)) + return true; + } + } + } case SPELL_DAMAGE_CLASS_RANGED: { if (pVictim) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 9a4c49a4a..a235038f8 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 "8486" + #define REVISION_NR "8487" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 1b4adb2c7..67808b66d 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_8469_01_characters_character_spell" - #define REVISION_DB_MANGOS "required_8482_01_mangos_spell_elixir" + #define REVISION_DB_MANGOS "required_8487_02_mangos_spell_proc_event" #define REVISION_DB_REALMD "required_8332_01_realmd_realmcharacters" #endif // __REVISION_SQL_H__ From eae9619f5bc16555b64188877b5ee68a99aa5450 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Fri, 11 Sep 2009 19:56:31 +0400 Subject: [PATCH 03/14] [8488] Use more readable style format for `spell_bonus_data` data. No real changes in data. --- sql/mangos.sql | 238 +++++++++++++++++++-------------------- src/shared/revision_nr.h | 2 +- 2 files changed, 120 insertions(+), 120 deletions(-) diff --git a/sql/mangos.sql b/sql/mangos.sql index 9feb72f23..fd06c70f3 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -13594,59 +13594,59 @@ LOCK TABLES `spell_bonus_data` WRITE; /*!40000 ALTER TABLE `spell_bonus_data` DISABLE KEYS */; INSERT INTO `spell_bonus_data` VALUES /* Death Knight */ -('48721', '0', '0', '0.04', 'Death Knight - Blood Boil'), -('55078', '0', '0', '0.055', 'Death Knight - Blood Plague Dummy Proc'), -('50444', '0', '0', '0.105', 'Death Knight - Corpse Explosion Triggered'), -('52212', '0', '0', '0.0475', 'Death Knight - Death and Decay Triggered'), -('47632', '0', '0', '0.15', 'Death Knight - Death Coil Damage'), -('47633', '0', '0', '0.15', 'Death Knight - Death Coil Heal'), -('55095', '0', '0', '0.055', 'Death Knight - Frost Fever'), -('49184', '0', '0', '0.1', 'Death Knight - Howling Blast'), -('45477', '0', '0', '0.1', 'Death Knight - Icy Touch'), -('50842', '0', '0', '0.04', 'Death Knight - Pestilence'), -('47476', '0', '0', '0.06', 'Death Knight - Strangulate'), -('50536', '0', '0', '0.013', 'Death Knight - Unholy Blight Triggered'), -('50401', '0', '0', '0', 'Death Knight - Razor Frost'), -('56903', '0', '0', '0', 'Death Knight - Lichflame'), +(48721, 0, 0, 0.04, 'Death Knight - Blood Boil'), +(55078, 0, 0, 0.055, 'Death Knight - Blood Plague Dummy Proc'), +(50444, 0, 0, 0.105, 'Death Knight - Corpse Explosion Triggered'), +(52212, 0, 0, 0.0475,'Death Knight - Death and Decay Triggered'), +(47632, 0, 0, 0.15, 'Death Knight - Death Coil Damage'), +(47633, 0, 0, 0.15, 'Death Knight - Death Coil Heal'), +(55095, 0, 0, 0.055, 'Death Knight - Frost Fever'), +(49184, 0, 0, 0.1, 'Death Knight - Howling Blast'), +(45477, 0, 0, 0.1, 'Death Knight - Icy Touch'), +(56903, 0, 0, 0, 'Death Knight - Lichflame'), +(50842, 0, 0, 0.04, 'Death Knight - Pestilence'), +(50401, 0, 0, 0, 'Death Knight - Razor Frost'), +(47476, 0, 0, 0.06, 'Death Knight - Strangulate'), +(50536, 0, 0, 0.013, 'Death Knight - Unholy Blight Triggered'), /* Druid */ -('5185', '1.6104', '0', '0', 'Druid - Healing Touch'), -('33763', '0', '0.09518', '0', 'Druid - Lifebloom'), -('774', '0', '0.37604', '0', 'Druid - Rejuvenation'), -('8936', '0.539', '0.188', '0', 'Druid - Regrowth'), -('50288', '0.05', '0', '0', 'Druid - Starfall'), -('50294', '0.012', '0', '0', 'Druid - Starfall AOE'), -('18562', '0', '0', '0', 'Druid - Swiftmend'), -('44203', '0.538', '0', '0', 'Druid - Tranquility Triggered'), -('48438', '0', '0.11505', '0', 'Druid - Wild Growth'), -('50464', '0.6611', '0', '0', 'Druid - Nourish'), -('339', '0', '0.1', '0', 'Druid - Entangling Roots'), -('42231', '0.12898', '0', '0', 'Druid - Hurricane Triggered'), -('5570', '0', '0.127', '0', 'Druid - Insect Swarm'), -('8921', '0.1515', '0.13', '0', 'Druid - Moonfire'), -('2912', '1', '0', '0', 'Druid - Starfire'), -('5176', '0.5714', '0', '0', 'Druid - Wrath'), +(5185, 1.6104, 0, 0, 'Druid - Healing Touch'), +(339, 0, 0.1, 0, 'Druid - Entangling Roots'), +(42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'), +(5570, 0, 0.127, 0, 'Druid - Insect Swarm'), +(33763, 0, 0.09518, 0, 'Druid - Lifebloom'), +(8921, 0.1515, 0.13, 0, 'Druid - Moonfire'), +(50464, 0.6611, 0, 0, 'Druid - Nourish'), +(8936, 0.539, 0.188, 0, 'Druid - Regrowth'), +(774, 0, 0.37604, 0, 'Druid - Rejuvenation'), +(50288, 0.05, 0, 0, 'Druid - Starfall'), +(50294, 0.012, 0, 0, 'Druid - Starfall AOE'), +(2912, 1, 0, 0, 'Druid - Starfire'), +(18562, 0, 0, 0, 'Druid - Swiftmend'), +(44203, 0.538, 0, 0, 'Druid - Tranquility Triggered'), +(48438, 0, 0.11505, 0, 'Druid - Wild Growth'), +(5176, 0.5714, 0, 0, 'Druid - Wrath'), /* Mage */ -('30451', '0.7143', '0', '0', 'Mage - Arcane Blast'), -('1449', '0.2128', '0', '0', 'Mage - Arcane Explosion'), -('7268', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell'), -('1463', '0.8053', '0', '0', 'Mage - Mana Shield'), -('44425', '0.8571', '0', '0', 'Mage - Arcane Barrage'), -('11113', '0.1357', '0', '0', 'Mage - Blast Wave Rank'), -('31661', '0.1357', '0', '0', 'Mage - Dragons Breath'), -('2136', '0.4286', '0', '0', 'Mage - Fire Blast'), -('133', '1', '0', '0', 'Mage - Fire Ball'), -('2120', '0.2357', '0.122', '0', 'Mage - Flamestrike'), -('11366', '1.15', '0.05', '0', 'Mage - Pyroblast'), -('2948', '0.4286', '0', '0', 'Mage - Scorch'), -('44614', '0.8571', '0', '0', 'Mage - Frostfire Bolt'), -('44457', '0.4', '0.2', '0', 'Mage - Living Bomb'), -('42208', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell'), -('120', '0.1357', '0', '0', 'Mage - Cone of Cold'), -('122', '0.193', '0', '0', 'Mage - Frost Nova'), -('116', '0.8143', '0', '0', 'Mage - Frost Bolt'), -('11426', '0.8053', '0', '0', 'Mage - Ice Barrier'), -('30455', '0.1429', '0', '0', 'Mage - Ice Lance'), -('34913','0', '0', '0', 'Mage - Molten Armor Triggered'), +(44425, 0.8571, 0, 0, 'Mage - Arcane Barrage'), +(30451, 0.7143, 0, 0, 'Mage - Arcane Blast'), +(1449, 0.2128, 0, 0, 'Mage - Arcane Explosion'), +(7268, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell'), +(11113, 0.1357, 0, 0, 'Mage - Blast Wave Rank'), +(42208, 0.0952, 0, 0, 'Mage - Blizzard Triggered Spell'), +(120, 0.1357, 0, 0, 'Mage - Cone of Cold'), +(31661, 0.1357, 0, 0, 'Mage - Dragons Breath'), +(2136, 0.4286, 0, 0, 'Mage - Fire Blast'), +(133, 1, 0, 0, 'Mage - Fire Ball'), +(2120, 0.2357, 0.122, 0, 'Mage - Flamestrike'), +(122, 0.193, 0, 0, 'Mage - Frost Nova'), +(116, 0.8143, 0, 0, 'Mage - Frost Bolt'), +(44614, 0.8571, 0, 0, 'Mage - Frostfire Bolt'), +(11426, 0.8053, 0, 0, 'Mage - Ice Barrier'), +(30455, 0.1429, 0, 0, 'Mage - Ice Lance'), +(44457, 0.4, 0.2, 0, 'Mage - Living Bomb'), +(1463, 0.8053, 0, 0, 'Mage - Mana Shield'), +(34913, 0, 0, 0, 'Mage - Molten Armor Triggered'), +(11366, 1.15, 0.05, 0, 'Mage - Pyroblast'), +(2948, 0.4286, 0, 0, 'Mage - Scorch'), /* Paladin */ (31935, 0.07, 0, 0.07, 'Paladin - Avengers Shiled'), (53742, 0, 0.0156, 0.03, 'Paladin - Blood Corruption'), @@ -13679,78 +13679,78 @@ INSERT INTO `spell_bonus_data` VALUES (42463, 0, 0.00156, 0.003, 'Paladin - Seal of Vengeance (full stack proc)'), /* Priest */ -('32546', '0.8068', '0', '0', 'Priest - Binding Heal'), -('34861', '0.402', '0', '0', 'Priest - Circle of Healing'), -('19236', '0.8068', '0', '0', 'Priest - Desperate Prayer'), -('2061', '0.8068', '0', '0', 'Priest - Flash Heal'), -('2060', '1.6135', '0', '0', 'Priest - Greater Heal'), -('23455', '0.3035', '0', '0', 'Priest - Holy Nova Heal'), -('17', '0.8068', '0', '0', 'Priest - Power Word: Shield'), -('596', '0.8086', '0', '0', 'Priest - Prayer of Healing'), -('33110', '0.8068', '0', '0', 'Priest - Prayer of Mending Heal Proc'), -('139', '0', '0.376', '0', 'Priest - Renew'), -('2944', '0.1849', '0', '0', 'Priest - Devouring Plague'), -('14914', '0.5711', '0.024', '0', 'Priest - Holy Fire'), -('15237', '0.1606', '0', '0', 'Priest - Holy Nova Damage'), -('8129', '0', '0', '0', 'Priest - Mana Burn'), -('8092', '0.4296', '0', '0', 'Priest - Mind Blast'), -('15407', '0.257', '0', '0', 'Priest - Mind Flay'), -('49821', '0.14286', '0', '0', 'Priest - Mind Sear Trigger'), -('34433', '0.65', '0', '0', 'Priest - Shadowfiend'), -('32379', '0.4296', '0', '0', 'Priest - Shadow Word: Death'), -('589', '0', '0.1829', '0', 'Priest - Shadow Word: Pain'), -('585', '0.714', '0', '0', 'Priest - Smite'), -('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'), +(32546, 0.8068, 0, 0, 'Priest - Binding Heal'), +(34861, 0.402, 0, 0, 'Priest - Circle of Healing'), +(19236, 0.8068, 0, 0, 'Priest - Desperate Prayer'), +(2944, 0.1849, 0, 0, 'Priest - Devouring Plague'), +(14914, 0.5711, 0.024, 0, 'Priest - Holy Fire'), +(15237, 0.1606, 0, 0, 'Priest - Holy Nova Damage'), +(2061, 0.8068, 0, 0, 'Priest - Flash Heal'), +(2060, 1.6135, 0, 0, 'Priest - Greater Heal'), +(23455, 0.3035, 0, 0, 'Priest - Holy Nova Heal'), +(8129, 0, 0, 0, 'Priest - Mana Burn'), +(8092, 0.4296, 0, 0, 'Priest - Mind Blast'), +(15407, 0.257, 0, 0, 'Priest - Mind Flay'), +(49821, 0.14286,0, 0, 'Priest - Mind Sear Trigger'), +(17, 0.8068, 0, 0, 'Priest - Power Word: Shield'), +(596, 0.8086, 0, 0, 'Priest - Prayer of Healing'), +(33110, 0.8068, 0, 0, 'Priest - Prayer of Mending Heal Proc'), +(139, 0, 0.376, 0, 'Priest - Renew'), +(32379, 0.4296, 0, 0, 'Priest - Shadow Word: Death'), +(589, 0, 0.1829, 0, 'Priest - Shadow Word: Pain'), +(34433, 0.65, 0, 0, 'Priest - Shadowfiend'), +(585, 0.714, 0, 0, 'Priest - Smite'), +(34914, 0, 0.4, 0, 'Priest - Vampiric Touch'), /* Shaman */ +(974, 0.4762, 0, 0, 'Shaman - Earth Shield'), (379, 0, 0, 0, 'Shaman - Earth Shield Triggered'), -('974', '0.4762', '0', '0', 'Shaman - Earth Shield'), -('1064', '1.34', '0', '0', 'Shaman - Chain Heal'), -('331', '1.6106', '0', '0', 'Shaman - Healing Wave'), -('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'), -('8004', '0.8082', '0', '0', 'Shaman - Lesser Healing Wave'), -('61295', '0.4', '0.18', '0', 'Shaman - Riptide'), -('421', '0.57', '0', '0', 'Shaman - Chain Lightning'), -('8042', '0.3858', '0', '0', 'Shaman - Earth Shock'), -('8443', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem'), -('8050', '0.2142', '0.1', '0', 'Shaman - Flame Shock'), -('8026', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc'), -('8056', '0.3858', '0', '0', 'Shaman - Frost Shock'), -('8034', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 1'), -('51505', '0.5714', '0', '0', 'Shaman - Lava Burst'), -('403', '0.7143', '0', '0', 'Shaman - Lightning Bolt'), -('26364', '0.33', '0', '0', 'Shaman - Lightning Shield Proc'), -('8188', '0.1', '0', '0', 'Shaman - Magma Totam Passive'), -('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack'), +(1064, 1.34, 0, 0, 'Shaman - Chain Heal'), +(421, 0.57, 0, 0, 'Shaman - Chain Lightning'), +(8042, 0.3858, 0, 0, 'Shaman - Earth Shock'), +(8443, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem'), +(8050, 0.2142, 0.1, 0, 'Shaman - Flame Shock'), +(8026, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc'), +(8056, 0.3858, 0, 0, 'Shaman - Frost Shock'), +(8034, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 1'), +(52042, 0.045, 0, 0, 'Shaman - Healing Stream Totem Triggered Heal'), +(331, 1.6106, 0, 0, 'Shaman - Healing Wave'), +(51505, 0.5714, 0, 0, 'Shaman - Lava Burst'), +(8004, 0.8082, 0, 0, 'Shaman - Lesser Healing Wave'), +(403, 0.7143, 0, 0, 'Shaman - Lightning Bolt'), +(26364, 0.33, 0, 0, 'Shaman - Lightning Shield Proc'), +(8188, 0.1, 0, 0, 'Shaman - Magma Totam Passive'), +(61295, 0.4, 0.18, 0, 'Shaman - Riptide'), +(3606, 0.1667, 0, 0, 'Shaman - Searing Totem Attack'), /* Warlock */ -('980', '0', '0.1', '0', 'Warlock - Curse of Agony'), -('603', '0', '2', '0', 'Warlock - Curse of Doom'), -('172', '0', '0.3', '0', 'Warlock - Corruption'), -('348', '0.2', '0.2', '0', 'Warlock - Immolate'), -('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', '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'), -('29722', '0.7143', '0', '0', 'Warlock - Incinerate'), -('5676', '0.4286', '0', '0', 'Warlock - Searing Pain'), -('686', '0.8571', '0', '0', 'Warlock - Shadow Bolt'), -('17877', '0.4286', '0', '0', 'Warlock - Shadowburn'), -('30283', '0.195', '0', '0', 'Warlock - Shadowfury'), -('6353', '1.15', '0', '0', 'Warlock - Soul Fire'), -('689', '0', '0.1428', '0', 'Warlock - Drain Life'), -('5138', '0', '0', '0', 'Warlock - Drain Mana'), -('1120', '0', '0.4286', '0', 'Warlock - Drain Soul'), -('755', '0', '0.4485', '0', 'Warlock - Health Funnel'), -('1949', '0', '0.0946', '0', 'Warlock - Hellfire'), -('5857', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy'), -('42223', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered'), -('18220', '0.96', '0', '0', 'Warlock - Dark Pact'), -('6229', '0.3', '0', '0', 'Warlock - Shadow Ward'), -('63106', '0', '0', '0', 'Warlock - Siphon Life Triggered'), +(17962, 0, 0, 0, 'Warlock - Conflagrate'), +(172, 0, 0.3, 0, 'Warlock - Corruption'), +(980, 0, 0.1, 0, 'Warlock - Curse of Agony'), +(603, 0, 2, 0, 'Warlock - Curse of Doom'), +(18220, 0.96, 0, 0, 'Warlock - Dark Pact'), +(6789, 0.22, 0, 0, 'Warlock - Death Coil'), +(689, 0, 0.1428, 0, 'Warlock - Drain Life'), +(5138, 0, 0, 0, 'Warlock - Drain Mana'), +(1120, 0, 0.4286, 0, 'Warlock - Drain Soul'), +(28176, 0, 0, 0, 'Warlock - Fel Armor'), +(48181, 0.4729, 0, 0, 'Warlock - Haunt'), +(755 , 0, 0.4485, 0, 'Warlock - Health Funnel'), +(1949, 0, 0.0946, 0, 'Warlock - Hellfire'), +(5857, 0.1428, 0, 0, 'Warlock - Hellfire Effect on Enemy'), +(348, 0.2, 0.2, 0, 'Warlock - Immolate'), +(29722, 0.7143, 0, 0, 'Warlock - Incinerate'), +(42223, 0.952, 0, 0, 'Warlock - Rain of Fire Triggered'), +(27243, 0.22, 0.25, 0, 'Warlock - Seed of Corruption'), +(5676, 0.4286, 0, 0, 'Warlock - Searing Pain'), +(686, 0.8571, 0, 0, 'Warlock - Shadow Bolt'), +(6229, 0.3, 0, 0, 'Warlock - Shadow Ward'), +(17877, 0.4286, 0, 0, 'Warlock - Shadowburn'), +(30283, 0.195, 0, 0, 'Warlock - Shadowfury'), +(63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'), +(6353, 1.15, 0, 0, 'Warlock - Soul Fire'), +(30108, 0, 0.24, 0, 'Warlock - Unstable Affliction'), +(31117, 1.8, 0, 0, 'Warlock - Unstable Affliction Dispell'), /* Item */ -(40293, 0, 0, 0, 'Item - Siphon Essence'); +(40293, 0, 0, 0, 'Item - Siphon Essence'); /*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */; UNLOCK TABLES; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a235038f8..d3393c41a 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 "8487" + #define REVISION_NR "8488" #endif // __REVISION_NR_H__ From da44f2efe7133d4163d4a0b7f62f7e403940b044 Mon Sep 17 00:00:00 2001 From: cccyril Date: Fri, 11 Sep 2009 21:11:25 +0400 Subject: [PATCH 04/14] [8488] Update and add some coeficents for spells in `spell_bonus_data`. With related `spell_chain` data. Added version is result additional fixes and improvments made by nos4r2zod. Signed-off-by: VladimirMangos --- sql/mangos.sql | 97 +++++++++++-------- sql/updates/8488_01_mangos_spell_chain.sql | 18 ++++ .../8488_02_mangos_spell_bonus_data.sql | 30 ++++++ sql/updates/Makefile.am | 4 + src/shared/revision_sql.h | 2 +- 5 files changed, 107 insertions(+), 44 deletions(-) create mode 100644 sql/updates/8488_01_mangos_spell_chain.sql create mode 100644 sql/updates/8488_02_mangos_spell_bonus_data.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index fd06c70f3..aee9b109c 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_8487_02_mangos_spell_proc_event` bit(1) default NULL + `required_8488_02_mangos_spell_bonus_data` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -13612,7 +13612,7 @@ INSERT INTO `spell_bonus_data` VALUES (5185, 1.6104, 0, 0, 'Druid - Healing Touch'), (339, 0, 0.1, 0, 'Druid - Entangling Roots'), (42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'), -(5570, 0, 0.127, 0, 'Druid - Insect Swarm'), +(5570, 0, 0.2, 0, 'Druid - Insect Swarm'), (33763, 0, 0.09518, 0, 'Druid - Lifebloom'), (8921, 0.1515, 0.13, 0, 'Druid - Moonfire'), (50464, 0.6611, 0, 0, 'Druid - Nourish'), @@ -13623,17 +13623,15 @@ INSERT INTO `spell_bonus_data` VALUES (2912, 1, 0, 0, 'Druid - Starfire'), (18562, 0, 0, 0, 'Druid - Swiftmend'), (44203, 0.538, 0, 0, 'Druid - Tranquility Triggered'), +(61391, 0.193, 0, 0, 'Druid - Typhoon'), (48438, 0, 0.11505, 0, 'Druid - Wild Growth'), (5176, 0.5714, 0, 0, 'Druid - Wrath'), /* Mage */ -(44425, 0.8571, 0, 0, 'Mage - Arcane Barrage'), +(44425, 0.714286,0, 0, 'Mage - Arcane Barrage'), (30451, 0.7143, 0, 0, 'Mage - Arcane Blast'), (1449, 0.2128, 0, 0, 'Mage - Arcane Explosion'), (7268, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell'), -(11113, 0.1357, 0, 0, 'Mage - Blast Wave Rank'), -(42208, 0.0952, 0, 0, 'Mage - Blizzard Triggered Spell'), -(120, 0.1357, 0, 0, 'Mage - Cone of Cold'), -(31661, 0.1357, 0, 0, 'Mage - Dragons Breath'), +(42208, 0.1437, 0, 0, 'Mage - Blizzard Triggered'), (2136, 0.4286, 0, 0, 'Mage - Fire Blast'), (133, 1, 0, 0, 'Mage - Fire Ball'), (2120, 0.2357, 0.122, 0, 'Mage - Flamestrike'), @@ -13652,11 +13650,11 @@ INSERT INTO `spell_bonus_data` VALUES (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'), -(19750, 0.4286, 0, 0, 'Paladin - Flash of Light'), +(25997, 0, 0, 0, 'Paladin - Eye for an Eye'), +(19750, 1, 0, 0, 'Paladin - Flash of Light'), (53595, 0, 0, 0, 'Paladin - Hammer of the Righteous'), (24275, 0.15, 0, 0.15, 'Paladin - Hammer of Wrath'), -(635, 0.7143, 0, 0, 'Paladin - Holy Light'), -(25914, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Heal'), +(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'), @@ -13665,6 +13663,8 @@ INSERT INTO `spell_bonus_data` VALUES (32220, 0.0594, 0, 0.0363,'Paladin - Judgement of Blood Self'), (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'), (53726, 0.18, 0, 0.11, 'Paladin - Judgement of the Martyr Enemy'), (53725, 0.0594, 0, 0.0363,'Paladin - Judgement of the Martyr Self'), (31804, 0, 0, 0, 'Paladin - Judgement of Vengeance'), @@ -13672,29 +13672,29 @@ INSERT INTO `spell_bonus_data` VALUES (32221, 0, 0, 0, 'Paladin - Seal of Blood Proc Self'), (20424, 0, 0, 0, 'Paladin - Seal of Command Proc'), (53739, 0, 0.00156, 0.003, 'Paladin - Seal of Corruption (full stack proc)'), -(20167, 0.25, 0, 0.16, 'Paladin - Seal of Light Proc'), +(20167, 0.15, 0, 0.15, 'Paladin - Seal of Light Proc'), (25742, 0.07, 0, 0.039, 'Paladin - Seal of Righteousness Dummy Proc'), (53719, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Enemy'), (53718, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Self'), (42463, 0, 0.00156, 0.003, 'Paladin - Seal of Vengeance (full stack proc)'), - +(53600, 0, 0, 0, 'Paladin - Shield of Righteousness'), /* Priest */ (32546, 0.8068, 0, 0, 'Priest - Binding Heal'), +(27813, 0, 0, 0, 'Priest - Blessed Recovery'), (34861, 0.402, 0, 0, 'Priest - Circle of Healing'), (19236, 0.8068, 0, 0, 'Priest - Desperate Prayer'), -(2944, 0.1849, 0, 0, 'Priest - Devouring Plague'), +(2944, 0, 0.1849, 0, 'Priest - Devouring Plague'), (14914, 0.5711, 0.024, 0, 'Priest - Holy Fire'), (15237, 0.1606, 0, 0, 'Priest - Holy Nova Damage'), (2061, 0.8068, 0, 0, 'Priest - Flash Heal'), (2060, 1.6135, 0, 0, 'Priest - Greater Heal'), (23455, 0.3035, 0, 0, 'Priest - Holy Nova Heal'), (8129, 0, 0, 0, 'Priest - Mana Burn'), -(8092, 0.4296, 0, 0, 'Priest - Mind Blast'), -(15407, 0.257, 0, 0, 'Priest - Mind Flay'), +(58381, 0.257143,0, 0, 'Priest - Mind Flay Triggered'), (49821, 0.14286,0, 0, 'Priest - Mind Sear Trigger'), (17, 0.8068, 0, 0, 'Priest - Power Word: Shield'), -(596, 0.8086, 0, 0, 'Priest - Prayer of Healing'), (33110, 0.8068, 0, 0, 'Priest - Prayer of Mending Heal Proc'), +(33619, 0, 0, 0, 'Priest - Reflective Shield'), (139, 0, 0.376, 0, 'Priest - Renew'), (32379, 0.4296, 0, 0, 'Priest - Shadow Word: Death'), (589, 0, 0.1829, 0, 'Priest - Shadow Word: Pain'), @@ -13727,27 +13727,23 @@ INSERT INTO `spell_bonus_data` VALUES (980, 0, 0.1, 0, 'Warlock - Curse of Agony'), (603, 0, 2, 0, 'Warlock - Curse of Doom'), (18220, 0.96, 0, 0, 'Warlock - Dark Pact'), -(6789, 0.22, 0, 0, 'Warlock - Death Coil'), -(689, 0, 0.1428, 0, 'Warlock - Drain Life'), (5138, 0, 0, 0, 'Warlock - Drain Mana'), (1120, 0, 0.4286, 0, 'Warlock - Drain Soul'), (28176, 0, 0, 0, 'Warlock - Fel Armor'), +(18790, 0, 0, 0, 'Warlock - Fel Stamina'), (48181, 0.4729, 0, 0, 'Warlock - Haunt'), (755 , 0, 0.4485, 0, 'Warlock - Health Funnel'), (1949, 0, 0.0946, 0, 'Warlock - Hellfire'), (5857, 0.1428, 0, 0, 'Warlock - Hellfire Effect on Enemy'), (348, 0.2, 0.2, 0, 'Warlock - Immolate'), -(29722, 0.7143, 0, 0, 'Warlock - Incinerate'), -(42223, 0.952, 0, 0, 'Warlock - Rain of Fire Triggered'), -(27243, 0.22, 0.25, 0, 'Warlock - Seed of Corruption'), -(5676, 0.4286, 0, 0, 'Warlock - Searing Pain'), -(686, 0.8571, 0, 0, 'Warlock - Shadow Bolt'), +(42223, 0.285714,0, 0, 'Warlock - Rain of Fire Triggered'), +(27243, 0.2129, 0.25, 0, 'Warlock - Seed of Corruption'), (6229, 0.3, 0, 0, 'Warlock - Shadow Ward'), -(17877, 0.4286, 0, 0, 'Warlock - Shadowburn'), -(30283, 0.195, 0, 0, 'Warlock - Shadowfury'), +(47960, 0, 0.06666, 0, 'Warlock - Shadowflame DoT'), +(47897, 0.1064, 0, 0, 'Warlock - Shadowflame Direct'), (63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'), (6353, 1.15, 0, 0, 'Warlock - Soul Fire'), -(30108, 0, 0.24, 0, 'Warlock - Unstable Affliction'), +(30294, 0, 0, 0, 'Warlock - Soul Leech'), (31117, 1.8, 0, 0, 'Warlock - Unstable Affliction Dispell'), /* Item */ (40293, 0, 0, 0, 'Item - Siphon Essence'); @@ -14266,6 +14262,10 @@ INSERT INTO spell_chain VALUES /*Body and Soul*/ (64127,0,64127,1,0), (64129,64127,64127,2,0), +/*Blessed Recovery Proc*/ +(27813,0,27813,1,0), +(27817,27813,27813,2,0), +(27818,27817,27813,3,0), /*Circle of Healing*/ (34861,0,34861,1,0), (34863,34861,34861,2,0), @@ -16266,6 +16266,12 @@ INSERT INTO spell_chain VALUES (53225,53223,50516,3,0), (53226,53225,50516,4,0), (61384,53226,50516,5,0), +/*Typhoon Triggered*/ +(61391,0,61391,1,0), +(61390,61391,61391,2,0), +(61388,61390,61391,3,0), +(61387,61388,61391,4,0), +(53227,61387,61391,5,0), /*Wrath*/ (5176,0,5176,1,0), (5177,5176,5176,2,0), @@ -16832,9 +16838,9 @@ INSERT INTO spell_chain VALUES (34769,0,34769,1,0), (34767,34769,34769,2,33391), /*------------------ ---(780)Pet-ExoticChimaera +--(780)Pet-Exotic Chimaera ------------------*/ -/*FroststormBreath*/ +/*Froststorm Breath*/ (54644,0,54644,1,0), (55488,54644,54644,2,0), (55489,55488,54644,3,0), @@ -16842,9 +16848,9 @@ INSERT INTO spell_chain VALUES (55491,55490,54644,5,0), (55492,55491,54644,6,0), /*------------------ ---(781)Pet-ExoticDevlisaur +--(781)Pet-Exotic Devlisaur ------------------*/ -/*MonstrousBite*/ +/*Monstrous Bite*/ (54680,0,54680,1,0), (55495,54680,54680,2,0), (55496,55495,54680,3,0), @@ -16852,7 +16858,7 @@ INSERT INTO spell_chain VALUES (55498,55497,54680,5,0), (55499,55498,54680,6,0), /*------------------ ---(784)Pet-ExoticWorm +--(784)Pet-Exotic Worm ------------------*/ /*AcidSpit*/ (55749,0,55749,1,0), @@ -16872,9 +16878,9 @@ INSERT INTO spell_chain VALUES (56630,56629,56626,5,0), (56631,56630,56626,6,0), /*------------------ ---(787)Pet-ExoticCoreHound +--(787)Pet-Exotic Core Hound ------------------*/ -/*LavaBreath*/ +/*Lava Breath*/ (58604,0,58604,1,0), (58607,58604,58604,2,0), (58608,58607,58604,3,0), @@ -16882,16 +16888,27 @@ INSERT INTO spell_chain VALUES (58610,58609,58604,5,0), (58611,58610,58604,6,0), /*------------------ ---(788)Pet-ExoticSpiritBeast +--(788)Pet-Exotic Spirit Beast ------------------*/ -/*SpiritStrike*/ +/*Spirit Strike*/ (61193,0,61193,1,0), (61194,61193,61193,2,0), (61195,61194,61193,3,0), (61196,61195,61193,4,0), (61197,61196,61193,5,0), (61198,61197,61193,6,0), - +/*------------------ +--(-) Not listed in skill abilities +------------------*/ +/*Hurricane*/ +(42231, 0,42231,1,0), +(42232,42231,42231,2,0), +(42233,42232,42231,3,0), +(42230,42233,42231,4,0), +(48466,42230,42231,5,0), +/*Shadowflame Triggered DoT*/ +(47960,0,47960,1,0), +(61291,47960,47960,2,0), /*Tranquility*/ (44203, 0,44203,1,0), (44205,44203,44203,2,0), @@ -16899,13 +16916,7 @@ INSERT INTO spell_chain VALUES (44207,44206,44203,4,0), (44208,44207,44203,5,0), (48444,44208,44203,6,0), -(48445,48444,44203,7,0), -/*Hurricane*/ -(42231, 0,42231,1,0), -(42232,42231,42231,2,0), -(42233,42232,42231,3,0), -(42230,42233,42231,4,0), -(48466,42230,42231,5,0); +(48445,48444,44203,7,0); /*!40000 ALTER TABLE `spell_chain` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/8488_01_mangos_spell_chain.sql b/sql/updates/8488_01_mangos_spell_chain.sql new file mode 100644 index 000000000..1827a8be0 --- /dev/null +++ b/sql/updates/8488_01_mangos_spell_chain.sql @@ -0,0 +1,18 @@ +ALTER TABLE db_version CHANGE COLUMN required_8487_02_mangos_spell_proc_event required_8488_01_mangos_spell_chain bit; + +DELETE FROM `spell_chain` WHERE `spell_id` IN (27813, 27817, 27818, 61391, 61390, 61388, 61387, 53227, 47960, 61291); + +INSERT INTO `spell_chain` (`spell_id`, `prev_spell`, `first_spell`, `rank`, `req_spell`) VALUES +/*Blessed Recovery Proc*/ +('27813', '0', '27813', '1', '0'), +('27817', '27813', '27813', '2', '0'), +('27818', '27817', '27813', '3', '0'), +/*Typhoon Triggered*/ +('61391', '0', '61391', '1', '0'), +('61390', '61391', '61391', '2', '0'), +('61388', '61390', '61391', '3', '0'), +('61387', '61388', '61391', '4', '0'), +('53227', '61387', '61391', '5', '0'), +/*Shadowflame Triggered DoT*/ +('47960','0','47960','1','0'), +('61291','47960','47960','2','0'); diff --git a/sql/updates/8488_02_mangos_spell_bonus_data.sql b/sql/updates/8488_02_mangos_spell_bonus_data.sql new file mode 100644 index 000000000..3998b7f6f --- /dev/null +++ b/sql/updates/8488_02_mangos_spell_bonus_data.sql @@ -0,0 +1,30 @@ +ALTER TABLE db_version CHANGE COLUMN required_8488_01_mangos_spell_chain required_8488_02_mangos_spell_bonus_data bit; + +DELETE FROM `spell_bonus_data` WHERE `entry` IN +-- Spells that would be better off using default calculations (and should be removed from base MaNGOS tables) +(689, 30108, 6789, 29722, 5676, 686, 17877, 30283, 11113, 31661, 120, 25914, 596, 8092, 15407, +-- Spells that are getting entries below +18790, 42223, 27243, 30294, 47960, 47897, 44425, 42208, 19750, 635, 20167, 20267, 20187, 53600, 25997, 2944, 58381, 27813, 33619, 5570, 61391); + +INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `comments`) VALUES +('18790', '0', '0', '0','Warlock - Fel Stamina'), +('42223', '0.285714', '0', '0', 'Warlock - Rain of Fire Triggered'), -- should be same as default calc (2/7), but this is a triggered spell +('27243', '0.2129', '0.25', '0', 'Warlock - Seed of Corruption'), +('30294', '0', '0', '0', 'Warlock - Soul Leech'), +('47960', '0', '0.06666', '0', 'Warlock - Shadowflame DoT'), +('47897', '0.1064', '0', '0', 'Warlock - Shadowflame Direct'), +('44425', '0.714286', '0', '0', 'Mage - Arcane Barrage'), -- treat as 2.5 second cast time (as of 3.0.9) +('42208', '0.1437', '0', '0', 'Mage - Blizzard Triggered'), +('19750', '1', '0', '0', 'Paladin - Flash of Light'), +('635', '1.66', '0', '0', 'Paladin - Holy Light'), -- These two Paladin heals are their default calculations multiplied by 7/3, not sure why that is +('20167', '0.15', '0', '0.15', 'Paladin - Seal of Light Proc'), +('20267', '0.1', '0', '0.1', 'Paladin - Judgement of Light Proc'), +('20187', '0.32', '0', '0', 'Paladin - Judgement of Righteousness'), +('53600', '0', '0', '0', 'Paladin - Shield of Righteousness'), +('25997', '0', '0', '0', 'Paladin - Eye for an Eye'), +('2944', '0', '0.1849', '0', 'Priest - Devouring Plague'), +('58381', '0.257143', '0', '0', 'Priest - Mind Flay Triggered'), -- Treated as 2.7 sec channel instead of 3? +('27813', '0', '0', '0', 'Priest - Blessed Recovery'), +('33619', '0', '0', '0', 'Priest - Reflective Shield'), +('5570', '0', '0.2', '0', 'Druid - Insect Swarm'), +('61391', '0.193', '0', '0', 'Druid - Typhoon'); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index f1e8f3be5..20d05cce2 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -103,6 +103,8 @@ pkgdata_DATA = \ 8482_01_mangos_spell_elixir.sql \ 8487_01_mangos_spell_bonus_data.sql \ 8487_02_mangos_spell_proc_event.sql \ + 8488_01_mangos_spell_chain.sql \ + 8488_02_mangos_spell_bonus_data.sql \ README ## Additional files to include when running 'make dist' @@ -186,4 +188,6 @@ EXTRA_DIST = \ 8482_01_mangos_spell_elixir.sql \ 8487_01_mangos_spell_bonus_data.sql \ 8487_02_mangos_spell_proc_event.sql \ + 8488_01_mangos_spell_chain.sql \ + 8488_02_mangos_spell_bonus_data.sql \ README diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 67808b66d..ba1fd87b5 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_8469_01_characters_character_spell" - #define REVISION_DB_MANGOS "required_8487_02_mangos_spell_proc_event" + #define REVISION_DB_MANGOS "required_8488_02_mangos_spell_bonus_data" #define REVISION_DB_REALMD "required_8332_01_realmd_realmcharacters" #endif // __REVISION_SQL_H__ From 91eb757e952fcb04fa4c49ea034a3fc266ba2537 Mon Sep 17 00:00:00 2001 From: SilverIce Date: Fri, 11 Sep 2009 22:23:52 +0400 Subject: [PATCH 05/14] [8489] Fixed player visibility update in case view point different from player itself. Signed-off-by: VladimirMangos --- src/game/ObjectAccessor.cpp | 17 ++++++++++++++--- src/shared/revision_nr.h | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index 79b9d9c02..ee8943781 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -451,12 +451,23 @@ ObjectAccessor::UpdateObjectVisibility(WorldObject *obj) void ObjectAccessor::UpdateVisibilityForPlayer( Player* player ) { - CellPair p = MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY()); - Cell cell(p); + WorldObject const* viewPoint = player->GetViewPoint(); Map* m = player->GetMap(); + CellPair p(MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY())); + Cell cell(p); + m->UpdatePlayerVisibility(player, cell, p); - m->UpdateObjectsVisibilityFor(player, cell, p); + + if (player!=viewPoint) + { + CellPair pView(MaNGOS::ComputeCellPair(viewPoint->GetPositionX(), viewPoint->GetPositionY())); + Cell cellView(pView); + + m->UpdateObjectsVisibilityFor(player, cellView, pView); + } + else + m->UpdateObjectsVisibilityFor(player, cell, p); } /// Define the static member of HashMapHolder diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index d3393c41a..a74f8c448 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 "8488" + #define REVISION_NR "8489" #endif // __REVISION_NR_H__ From e0c319ef3394ec51f81e4ef5b15032b993f732e9 Mon Sep 17 00:00:00 2001 From: KAPATEJIb Date: Sat, 12 Sep 2009 04:05:29 +0400 Subject: [PATCH 06/14] [8490] Fix typo in constant name. Signed-off-by: VladimirMangos --- src/game/SpellMgr.h | 4 ++-- src/game/Unit.cpp | 8 ++++---- src/shared/revision_nr.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 68560b750..86388e2af 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -427,7 +427,7 @@ enum ProcFlags PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward) - PROC_FLAG_SUCCESSFUL_MILEE_HIT = 0x00000004, // 02 Successful melee auto attack + PROC_FLAG_SUCCESSFUL_MELEE_HIT = 0x00000004, // 02 Successful melee auto attack PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee auto attack hit PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon @@ -461,7 +461,7 @@ enum ProcFlags PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks }; -#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \ +#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MELEE_HIT | \ PROC_FLAG_TAKEN_MELEE_HIT | \ PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \ PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \ diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index b32904c82..3aa81e7c8 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1205,12 +1205,12 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da switch (attackType) { case BASE_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT; damageInfo->HitInfo = HITINFO_NORMALSWING2; break; case OFF_ATTACK: - damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; + damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT; damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used damageInfo->HitInfo = HITINFO_LEFTSWING; break; @@ -5794,7 +5794,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu case 31892: { // 0 effect - is proc on enemy - if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MILEE_HIT)) + if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT)) triggered_spell_id = 31893; else return true; @@ -5804,7 +5804,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu case 53720: { // 0 effect - is proc on enemy - if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MILEE_HIT)) + if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT)) triggered_spell_id = 53719; else return true; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a74f8c448..2f8d69385 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 "8489" + #define REVISION_NR "8490" #endif // __REVISION_NR_H__ From 692f32c82a93eff324c476a96853b57bfd265930 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sat, 12 Sep 2009 04:15:26 +0400 Subject: [PATCH 07/14] [8491] Add absent empty line to end of sql updates. Thanks to mns for pointing to problem. Signed-off-by: VladimirMangos --- sql/updates/8030_01_characters_character_spell.sql | 2 +- sql/updates/8030_03_mangos_npc_trainer.sql | 2 +- sql/updates/8050_01_mangos_spell_proc_event.sql | 2 +- sql/updates/8050_02_mangos_spell_bonus_data.sql | 2 +- sql/updates/8065_01_mangos_spell_proc_event.sql | 2 +- sql/updates/8112_01_mangos_spell_proc_event.sql | 2 +- sql/updates/8140_01_mangos_spell_proc_event.sql | 2 +- sql/updates/8213_01_mangos_spell_bonus_data.sql | 2 +- sql/updates/8237_01_mangos_creature_template.sql | 2 +- sql/updates/8250_01_mangos_spell_threat.sql | 2 +- sql/updates/8402_01_characters_guild_eventlog.sql | 2 +- sql/updates/8402_02_characters_guild_bank_eventlog.sql | 2 +- sql/updates/8409_01_characters_guild.sql | 2 +- sql/updates/8433_01_characters_character_account_data.sql | 2 +- sql/updates/8487_02_mangos_spell_proc_event.sql | 2 +- src/shared/revision_nr.h | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/sql/updates/8030_01_characters_character_spell.sql b/sql/updates/8030_01_characters_character_spell.sql index 9ff2ede71..e9b210a59 100644 --- a/sql/updates/8030_01_characters_character_spell.sql +++ b/sql/updates/8030_01_characters_character_spell.sql @@ -4,4 +4,4 @@ UPDATE IGNORE character_spell SET spell = 64901 WHERE spell = 64904; -DELETE FROM character_spell WHERE spell = 64904; \ No newline at end of file +DELETE FROM character_spell WHERE spell = 64904; diff --git a/sql/updates/8030_03_mangos_npc_trainer.sql b/sql/updates/8030_03_mangos_npc_trainer.sql index bf480c28f..85d70a1c0 100644 --- a/sql/updates/8030_03_mangos_npc_trainer.sql +++ b/sql/updates/8030_03_mangos_npc_trainer.sql @@ -1,3 +1,3 @@ ALTER TABLE db_version CHANGE COLUMN required_8021_01_mangos_spell_proc_event required_8030_03_mangos_npc_trainer bit; -DELETE FROM npc_trainer WHERE spell = 64904; \ No newline at end of file +DELETE FROM npc_trainer WHERE spell = 64904; diff --git a/sql/updates/8050_01_mangos_spell_proc_event.sql b/sql/updates/8050_01_mangos_spell_proc_event.sql index b36a9670e..f43b314b0 100644 --- a/sql/updates/8050_01_mangos_spell_proc_event.sql +++ b/sql/updates/8050_01_mangos_spell_proc_event.sql @@ -1,4 +1,4 @@ ALTER TABLE db_version CHANGE COLUMN required_8030_03_mangos_npc_trainer required_8050_01_mangos_spell_proc_event bit; DELETE FROM spell_proc_event WHERE entry = 63108; -INSERT INTO spell_proc_event VALUES (63108, 0x00, 5, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); \ No newline at end of file +INSERT INTO spell_proc_event VALUES (63108, 0x00, 5, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/8050_02_mangos_spell_bonus_data.sql b/sql/updates/8050_02_mangos_spell_bonus_data.sql index b3f1fdf87..2af1261d7 100644 --- a/sql/updates/8050_02_mangos_spell_bonus_data.sql +++ b/sql/updates/8050_02_mangos_spell_bonus_data.sql @@ -1,4 +1,4 @@ ALTER TABLE db_version CHANGE COLUMN required_8050_01_mangos_spell_proc_event required_8050_02_mangos_spell_bonus_data bit; DELETE FROM spell_bonus_data WHERE entry = 63106; -INSERT INTO spell_bonus_data VALUES (63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'); \ No newline at end of file +INSERT INTO spell_bonus_data VALUES (63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'); diff --git a/sql/updates/8065_01_mangos_spell_proc_event.sql b/sql/updates/8065_01_mangos_spell_proc_event.sql index aa44e757d..a4dd7df4f 100644 --- a/sql/updates/8065_01_mangos_spell_proc_event.sql +++ b/sql/updates/8065_01_mangos_spell_proc_event.sql @@ -1,3 +1,3 @@ ALTER TABLE db_version CHANGE COLUMN required_8064_01_mangos_spell_chain required_8065_01_mangos_spell_proc_event bit; -DELETE FROM spell_proc_event WHERE entry IN (47535, 47536, 47537, 58435); \ No newline at end of file +DELETE FROM spell_proc_event WHERE entry IN (47535, 47536, 47537, 58435); diff --git a/sql/updates/8112_01_mangos_spell_proc_event.sql b/sql/updates/8112_01_mangos_spell_proc_event.sql index b882e66ee..017059c24 100644 --- a/sql/updates/8112_01_mangos_spell_proc_event.sql +++ b/sql/updates/8112_01_mangos_spell_proc_event.sql @@ -3,4 +3,4 @@ ALTER TABLE db_version CHANGE COLUMN required_8098_02_mangos_playercreateinfo_ac DELETE FROM spell_proc_event WHERE entry IN (63156, 63158); INSERT INTO spell_proc_event VALUES (63156, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), -(63158, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); \ No newline at end of file +(63158, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/8140_01_mangos_spell_proc_event.sql b/sql/updates/8140_01_mangos_spell_proc_event.sql index 84a6ef378..5d9730f0a 100644 --- a/sql/updates/8140_01_mangos_spell_proc_event.sql +++ b/sql/updates/8140_01_mangos_spell_proc_event.sql @@ -4,4 +4,4 @@ DELETE FROM spell_proc_event WHERE entry IN (31876, 31877, 31878); INSERT INTO spell_proc_event VALUES (31876, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0), (31877, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0), -(31878, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0); \ No newline at end of file +(31878, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0); diff --git a/sql/updates/8213_01_mangos_spell_bonus_data.sql b/sql/updates/8213_01_mangos_spell_bonus_data.sql index 9ccc350ba..4a2c9647f 100644 --- a/sql/updates/8213_01_mangos_spell_bonus_data.sql +++ b/sql/updates/8213_01_mangos_spell_bonus_data.sql @@ -1,4 +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 +INSERT INTO `spell_bonus_data` (`entry`) VALUES ('17962'); diff --git a/sql/updates/8237_01_mangos_creature_template.sql b/sql/updates/8237_01_mangos_creature_template.sql index 89b433cc2..df425ea41 100644 --- a/sql/updates/8237_01_mangos_creature_template.sql +++ b/sql/updates/8237_01_mangos_creature_template.sql @@ -1,4 +1,4 @@ ALTER TABLE db_version CHANGE COLUMN required_8227_01_mangos_spell_proc_event required_8237_01_mangos_creature_template bit; UPDATE creature_template - SET mindmg = ROUND(mindmg + attackpower), maxdmg=ROUND(maxdmg+attackpower); \ No newline at end of file + SET mindmg = ROUND(mindmg + attackpower), maxdmg=ROUND(maxdmg+attackpower); diff --git a/sql/updates/8250_01_mangos_spell_threat.sql b/sql/updates/8250_01_mangos_spell_threat.sql index 6bc81761c..b9aee8129 100644 --- a/sql/updates/8250_01_mangos_spell_threat.sql +++ b/sql/updates/8250_01_mangos_spell_threat.sql @@ -1,3 +1,3 @@ ALTER TABLE db_version CHANGE COLUMN required_8249_02_mangos_spell_chain required_8250_01_mangos_spell_threat bit; -DELETE FROM `spell_threat` WHERE `entry` IN (778,9749,9907,14274,15629,15630,15631,15632,17390,17391,17392,26993,27011); \ No newline at end of file +DELETE FROM `spell_threat` WHERE `entry` IN (778,9749,9907,14274,15629,15630,15631,15632,17390,17391,17392,26993,27011); diff --git a/sql/updates/8402_01_characters_guild_eventlog.sql b/sql/updates/8402_01_characters_guild_eventlog.sql index 32f5b09a9..107639d39 100644 --- a/sql/updates/8402_01_characters_guild_eventlog.sql +++ b/sql/updates/8402_01_characters_guild_eventlog.sql @@ -17,4 +17,4 @@ CREATE TABLE `guild_eventlog` ( -- The reason i decided for such dramatic change is that old guild_eventlog table didn't have Primary key and -- used LogGuids from 0 to infinity --- New system uses LogGuids from 0 to number defined in config. \ No newline at end of file +-- New system uses LogGuids from 0 to number defined in config. diff --git a/sql/updates/8402_02_characters_guild_bank_eventlog.sql b/sql/updates/8402_02_characters_guild_bank_eventlog.sql index e2c271373..0cee36c4c 100644 --- a/sql/updates/8402_02_characters_guild_bank_eventlog.sql +++ b/sql/updates/8402_02_characters_guild_bank_eventlog.sql @@ -20,4 +20,4 @@ CREATE TABLE `guild_bank_eventlog` ( -- The reason i decided for such dramatic change is that old guild_bank_eventlog table used `TabId` = 0 for Money events and -- used `LogGuid` from 0 to infinity --- New system uses `LogGuid` from 0 to number defined in config. \ No newline at end of file +-- New system uses `LogGuid` from 0 to number defined in config. diff --git a/sql/updates/8409_01_characters_guild.sql b/sql/updates/8409_01_characters_guild.sql index f08f861bb..7d879a811 100644 --- a/sql/updates/8409_01_characters_guild.sql +++ b/sql/updates/8409_01_characters_guild.sql @@ -14,4 +14,4 @@ ALTER TABLE guild ADD COLUMN createdate bigint(20) NOT NULL default '0' AFTER mo -- copy data to new column UPDATE guild set createdate = created_temp; -- remove old column -ALTER TABLE guild DROP COLUMN created_temp; \ No newline at end of file +ALTER TABLE guild DROP COLUMN created_temp; diff --git a/sql/updates/8433_01_characters_character_account_data.sql b/sql/updates/8433_01_characters_character_account_data.sql index 88402b294..5f0aacd0d 100644 --- a/sql/updates/8433_01_characters_character_account_data.sql +++ b/sql/updates/8433_01_characters_character_account_data.sql @@ -13,4 +13,4 @@ INSERT INTO character_account_data SELECT c.guid as guid, a.type as type, a.time as time, a.data as data FROM characters c LEFT JOIN account_data a ON c.account = a.account WHERE a.type IN (1, 3, 5, 6, 7); -DELETE FROM account_data WHERE type IN (1, 3, 5, 6, 7); \ No newline at end of file +DELETE FROM account_data WHERE type IN (1, 3, 5, 6, 7); diff --git a/sql/updates/8487_02_mangos_spell_proc_event.sql b/sql/updates/8487_02_mangos_spell_proc_event.sql index 2ca276dd8..bbe4f9108 100644 --- a/sql/updates/8487_02_mangos_spell_proc_event.sql +++ b/sql/updates/8487_02_mangos_spell_proc_event.sql @@ -1,3 +1,3 @@ ALTER TABLE db_version CHANGE COLUMN required_8487_01_mangos_spell_bonus_data required_8487_02_mangos_spell_proc_event bit; -DELETE FROM `spell_proc_event` WHERE `entry` IN (31801, 53736); \ No newline at end of file +DELETE FROM `spell_proc_event` WHERE `entry` IN (31801, 53736); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2f8d69385..d09f5d985 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 "8490" + #define REVISION_NR "8491" #endif // __REVISION_NR_H__ From 610703c14ba8fcb571bfd779db67977adacc1160 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sat, 12 Sep 2009 10:54:30 +0400 Subject: [PATCH 08/14] [8492] Implement talent 53563. Original patch suggested by Arthorius. Added data in mangos_spell_check to remember requirement update code for 3.2.x support in future. --- sql/mangos_spell_check.sql | 6 +++++- src/game/SpellAuras.cpp | 14 ++++++++++++++ src/game/SpellMgr.cpp | 4 ++++ src/game/Unit.cpp | 24 ++++++++++++++++++++++++ src/shared/revision_nr.h | 2 +- 5 files changed, 48 insertions(+), 2 deletions(-) diff --git a/sql/mangos_spell_check.sql b/sql/mangos_spell_check.sql index e284285f0..7b1bc2c7f 100644 --- a/sql/mangos_spell_check.sql +++ b/sql/mangos_spell_check.sql @@ -406,4 +406,8 @@ INSERT INTO spell_check (spellid,SpellFamilyName,SpellFamilyMaskA,SpellFamilyMas ( 0, 7,0x0010000000000000,0x00000000, -1, -1, -1, 2, -1,-1,'Swipe', 'Spell::EffectSchoolDMG'), ( 0, 4,0x0000000000000080,0x00000000, -1, -1, -1, 2, -1,-1,'Thunder Clap', 'Spell::EffectSchoolDMG'), ( 0, 4,0x0000010000000000,0x00000000, -1, -1, -1, 2, -1,-1,'Victory Rush', 'Spell::EffectSchoolDMG'), -( 0, 8,0x0000000010000000,0x00000000, -1, -1, -1, 2, -1,-1,'Wound Poison', 'Spell::EffectSchoolDMG'); +( 0, 8,0x0000000010000000,0x00000000, -1, -1, -1, 2, -1,-1,'Wound Poison', 'Spell::EffectSchoolDMG'), + +/* some random spells from not proccessed files sorted by spell ids */ +/*id fm familyMaskA fmMaskB icon vis cat eff aur ef name code */ +(53563,-1, -1, -1, -1, -1, -1, -1, 4,-1,'Beacon of Light', 'Aura::HandleAuraDummy'); /* will outdated in 3.2.x */ diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 5beb39353..8c75d81c5 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2406,6 +2406,20 @@ void Aura::HandleAuraDummy(bool apply, bool Real) } break; } + case SPELLFAMILY_PALADIN: + { + // Beacon of Light + if (GetId() == 53563) + { + if(apply) + // original caster must be target (beacon) + m_target->CastSpell(m_target,53651,true,NULL,this,m_target->GetGUID()); + else + m_target->RemoveAurasDueToSpell(53651); + return; + } + break; + } case SPELLFAMILY_DRUID: { switch(GetId()) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 29272ee01..cd67d6de1 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1571,6 +1571,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons if ((spellInfo_1->SpellFamilyFlags2 & 0x00000020) && (spellInfo_2->SpellIconID == 291 || spellInfo_2->SpellIconID == 3028) || (spellInfo_2->SpellFamilyFlags2 & 0x00000020) && (spellInfo_1->SpellIconID == 291 || spellInfo_1->SpellIconID == 3028)) return false; + + // Beacon of Light and Light's Beacon + if ((spellInfo_1->SpellIconID == 3032) && (spellInfo_2->SpellIconID == 3032)) + return false; } // Combustion and Fire Protection Aura (multi-family check) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 3aa81e7c8..e9c591b25 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5800,6 +5800,30 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu return true; break; } + // Light's Beacon (heal target area aura) + case 53651: + { + // not do bonus heal for explicit beacon focus healing + if (GetGUID() == triggeredByAura->GetCasterGUID()) + return false; + + Unit* beacon = triggeredByAura->GetCaster(); + if (!beacon) + return false; + + Aura* dummy = beacon->GetDummyAura(53563); + if (!dummy) + return false; + + // original heal must be form beacon caster + if (dummy->GetCasterGUID() != pVictim->GetGUID()) + return false; + + triggered_spell_id = 53652; // Beacon of Light + basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100; + target = beacon; + break; + } // Seal of the Martyr do damage trigger case 53720: { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index d09f5d985..b8400b991 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 "8491" + #define REVISION_NR "8492" #endif // __REVISION_NR_H__ From 5fb608fec605e28d526a72f4ae4ec1a701af65bf Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sun, 13 Sep 2009 20:48:53 +0400 Subject: [PATCH 09/14] [8493] Avoid unexpected multiply error messages at wrong `quest_template`.`RewSpell*` --- src/game/ObjectMgr.cpp | 14 ++++---------- src/shared/revision_nr.h | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 65944c5a9..8c810c432 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -3620,20 +3620,17 @@ void ObjectMgr::LoadQuests() qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell); qinfo->RewSpell = 0; // no spell reward will display for this quest } - - if(!SpellMgr::IsSpellValid(spellInfo)) + else if(!SpellMgr::IsSpellValid(spellInfo)) { sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is broken, quest will not have a spell reward.", qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell); qinfo->RewSpell = 0; // no spell reward will display for this quest } - - if(GetTalentSpellCost(qinfo->RewSpell)) + else if(GetTalentSpellCost(qinfo->RewSpell)) { sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.", qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell); qinfo->RewSpell = 0; // no spell reward will display for this quest - continue; } } @@ -3647,20 +3644,17 @@ void ObjectMgr::LoadQuests() qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast); qinfo->RewSpellCast = 0; // no spell will be casted on player } - - if(!SpellMgr::IsSpellValid(spellInfo)) + else if(!SpellMgr::IsSpellValid(spellInfo)) { sLog.outErrorDb("Quest %u has `RewSpellCast` = %u but spell %u is broken, quest will not have a spell reward.", qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast); qinfo->RewSpellCast = 0; // no spell will be casted on player } - - if(GetTalentSpellCost(qinfo->RewSpellCast)) + else if(GetTalentSpellCost(qinfo->RewSpellCast)) { sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.", qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast); qinfo->RewSpellCast = 0; // no spell will be casted on player - continue; } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b8400b991..a7e353152 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 "8492" + #define REVISION_NR "8493" #endif // __REVISION_NR_H__ From cd8663972e8b443bc54eb25f50d8c5c7d0037832 Mon Sep 17 00:00:00 2001 From: Ambal Date: Sun, 13 Sep 2009 20:45:34 +0300 Subject: [PATCH 10/14] [8494] Fixed typo in MovementHandler.cpp : GetPlayer()->Relocate() function was called twice. Thanks to Wowka321 for hint. Signed-off-by: Ambal --- src/game/MovementHandler.cpp | 2 +- src/shared/revision_nr.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index a3bba87ae..369ef1eed 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -65,7 +65,7 @@ void WorldSession::HandleMoveWorldportAckOpcode() GetPlayer()->SetSemaphoreTeleportFar(false); // relocate the player to the teleport destination - GetPlayer()->SetMap(MapManager::Instance().CreateMap(loc.mapid, GetPlayer())); GetPlayer()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation); + GetPlayer()->SetMap(MapManager::Instance().CreateMap(loc.mapid, GetPlayer())); GetPlayer()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation); GetPlayer()->SendInitialPacketsBeforeAddToMap(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index a7e353152..fcdd867e7 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 "8493" + #define REVISION_NR "8494" #endif // __REVISION_NR_H__ From b276b0536381c5272bfd189253738d3310a92a49 Mon Sep 17 00:00:00 2001 From: Fog Date: Sun, 13 Sep 2009 22:16:57 +0400 Subject: [PATCH 11/14] [8495] Add absent ; in sql update that can create problems in merged sql update sequence. Signed-off-by: VladimirMangos --- sql/updates/0.13/7980_01_mangos_item_required_target.sql | 2 +- src/shared/revision_nr.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/updates/0.13/7980_01_mangos_item_required_target.sql b/sql/updates/0.13/7980_01_mangos_item_required_target.sql index 816702de5..3a9ace804 100644 --- a/sql/updates/0.13/7980_01_mangos_item_required_target.sql +++ b/sql/updates/0.13/7980_01_mangos_item_required_target.sql @@ -6,4 +6,4 @@ CREATE TABLE `item_required_target` ( `type` tinyint(3) unsigned NOT NULL default '0', `targetEntry` mediumint(8) unsigned NOT NULL default '0', UNIQUE KEY `entry_type_target` (`entry`,`type`,`targetEntry`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index fcdd867e7..0c0b08d5c 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 "8494" + #define REVISION_NR "8495" #endif // __REVISION_NR_H__ From 50d426e72c1783ccdbbe5eeb5abfde7fbc9e6f22 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Mon, 14 Sep 2009 05:54:28 +0400 Subject: [PATCH 12/14] [8496] Resolve some #include cycles and unsafe code. * Common.h -> Threading.h -> Errors.h -> Common.h * Remove reduncdent #include "ByteBuffer.h" in headers * Remove redundent #include "Auth/BigNumber.h" in headers * Avoid multyply data copy at use some now dropped functions in BigNumber. * Avoid copy fixed byte count from byte arrays with unknown real size created from BigNumber. --- src/game/GridNotifiers.h | 1 - src/game/Object.h | 1 - src/game/ObjectAccessor.h | 1 - src/game/UpdateData.h | 3 +++ src/game/WorldSocket.cpp | 1 + src/realmd/AuthSocket.cpp | 6 +++--- src/shared/Auth/BigNumber.cpp | 15 --------------- src/shared/Auth/BigNumber.h | 3 --- src/shared/Auth/Sha1.cpp | 1 + src/shared/Auth/Sha1.h | 3 ++- src/shared/Threading.cpp | 1 + src/shared/Threading.h | 1 - src/shared/revision_nr.h | 2 +- 13 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index 38fbd1704..92c42cefe 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -20,7 +20,6 @@ #define MANGOS_GRIDNOTIFIERS_H #include "ObjectGridLoader.h" -#include "ByteBuffer.h" #include "UpdateData.h" #include diff --git a/src/game/Object.h b/src/game/Object.h index 265d184a7..1bda374e3 100644 --- a/src/game/Object.h +++ b/src/game/Object.h @@ -85,7 +85,6 @@ enum PhaseMasks class WorldPacket; class UpdateData; -class ByteBuffer; class WorldSession; class Creature; class Player; diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index cf223ebc9..14154817a 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -25,7 +25,6 @@ #include "Utilities/UnorderedMap.h" #include "Policies/ThreadingModel.h" -#include "ByteBuffer.h" #include "UpdateData.h" #include "GridDefines.h" diff --git a/src/game/UpdateData.h b/src/game/UpdateData.h index e31140e7d..211025ade 100644 --- a/src/game/UpdateData.h +++ b/src/game/UpdateData.h @@ -19,8 +19,11 @@ #ifndef __UPDATEDATA_H #define __UPDATEDATA_H +#include "ByteBuffer.h" + class WorldPacket; + enum OBJECT_UPDATE_TYPE { UPDATETYPE_VALUES = 0, diff --git a/src/game/WorldSocket.cpp b/src/game/WorldSocket.cpp index b8cf809a8..69dd9ba2f 100644 --- a/src/game/WorldSocket.cpp +++ b/src/game/WorldSocket.cpp @@ -37,6 +37,7 @@ #include "ByteBuffer.h" #include "Opcodes.h" #include "Database/DatabaseEnv.h" +#include "Auth/BigNumber.h" #include "Auth/Sha1.h" #include "WorldSession.h" #include "WorldSocketMgr.h" diff --git a/src/realmd/AuthSocket.cpp b/src/realmd/AuthSocket.cpp index 81c15a63e..bac584888 100644 --- a/src/realmd/AuthSocket.cpp +++ b/src/realmd/AuthSocket.cpp @@ -480,9 +480,9 @@ bool AuthSocket::_HandleLogonChallenge() pkt << uint8(1); pkt.append(g.AsByteArray(), 1); pkt << uint8(32); - pkt.append(N.AsByteArray(), 32); + pkt.append(N.AsByteArray(32), 32); pkt.append(s.AsByteArray(), s.GetNumBytes());// 32 bytes - pkt.append(unk3.AsByteArray(), 16); + pkt.append(unk3.AsByteArray(16), 16); uint8 securityFlags = 0; pkt << uint8(securityFlags); // security flags (0x0...0x04) @@ -807,7 +807,7 @@ bool AuthSocket::_HandleReconnectChallenge() pkt << (uint8) AUTH_RECONNECT_CHALLENGE; pkt << (uint8) 0x00; _reconnectProof.SetRand(16 * 8); - pkt.append(_reconnectProof.AsByteBuffer()); // 16 bytes random + pkt.append(_reconnectProof.AsByteArray(16),16); // 16 bytes random pkt << (uint64) 0x00 << (uint64) 0x00; // 16 bytes zeros SendBuf((char const*)pkt.contents(), pkt.size()); return true; diff --git a/src/shared/Auth/BigNumber.cpp b/src/shared/Auth/BigNumber.cpp index c78745523..56365e889 100644 --- a/src/shared/Auth/BigNumber.cpp +++ b/src/shared/Auth/BigNumber.cpp @@ -186,21 +186,6 @@ uint8 *BigNumber::AsByteArray(int minSize) return _array; } -ByteBuffer BigNumber::AsByteBuffer() -{ - ByteBuffer ret(GetNumBytes()); - ret.append(AsByteArray(), GetNumBytes()); - return ret; -} - -std::vector BigNumber::AsByteVector() -{ - std::vector ret; - ret.resize(GetNumBytes()); - memcpy(&ret[0], AsByteArray(), GetNumBytes()); - return ret; -} - const char *BigNumber::AsHexStr() { return BN_bn2hex(_bn); diff --git a/src/shared/Auth/BigNumber.h b/src/shared/Auth/BigNumber.h index 5900afcb5..49cc2ff35 100644 --- a/src/shared/Auth/BigNumber.h +++ b/src/shared/Auth/BigNumber.h @@ -20,7 +20,6 @@ #define _AUTH_BIGNUMBER_H #include "Common.h" -#include "ByteBuffer.h" struct bignum_st; @@ -83,8 +82,6 @@ class BigNumber uint32 AsDword(); uint8* AsByteArray(int minSize = 0); - ByteBuffer AsByteBuffer(); - std::vector AsByteVector(); const char *AsHexStr(); const char *AsDecStr(); diff --git a/src/shared/Auth/Sha1.cpp b/src/shared/Auth/Sha1.cpp index f5bb7cc32..6beff2699 100644 --- a/src/shared/Auth/Sha1.cpp +++ b/src/shared/Auth/Sha1.cpp @@ -17,6 +17,7 @@ */ #include "Auth/Sha1.h" +#include "Auth/BigNumber.h" #include Sha1Hash::Sha1Hash() diff --git a/src/shared/Auth/Sha1.h b/src/shared/Auth/Sha1.h index ffb4a1711..754ab3f9e 100644 --- a/src/shared/Auth/Sha1.h +++ b/src/shared/Auth/Sha1.h @@ -22,7 +22,8 @@ #include "Common.h" #include #include -#include "Auth/BigNumber.h" + +class BigNumber; class Sha1Hash { diff --git a/src/shared/Threading.cpp b/src/shared/Threading.cpp index 652f46877..90861b8f4 100644 --- a/src/shared/Threading.cpp +++ b/src/shared/Threading.cpp @@ -17,6 +17,7 @@ */ #include "Threading.h" +#include "Errors.h" #include #include #include diff --git a/src/shared/Threading.h b/src/shared/Threading.h index 6c3f3724b..574b9641a 100644 --- a/src/shared/Threading.h +++ b/src/shared/Threading.h @@ -23,7 +23,6 @@ #include #include "ace/Atomic_Op.h" #include -#include "Errors.h" namespace ACE_Based { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 0c0b08d5c..937bce2a4 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 "8495" + #define REVISION_NR "8496" #endif // __REVISION_NR_H__ From 67d433561453c44bd48289827a0711ddc8a11dc7 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Mon, 14 Sep 2009 07:28:03 +0400 Subject: [PATCH 13/14] [8497] Fixes in talent 53563 work and other area auras spells. * Support mutiply beacon buffs at same target (as will be in 3.2.x) in triggering part. * Bonus heal caster expected original paladin, and used his heal bonuses, LoS not required for bonus heal. * Fixed bug with not apply not-caster affected area spell (hostile area spell or talent 53563) to another caster with same area aura active. Correctly remove only specific caster area aura at expire. * Not show area spell icon for telent 53563 at beacon for this aura. * Allow stacking dummy auras from diff casters, check formal aura types for effect at add aura stacking check. Last important for area auars that can have SPELL_AURA_NONE in modifier data instead formal effect auars at caster. --- src/game/SpellAuras.cpp | 79 +++++++++++++++++++++++++++++++++++----- src/game/SpellAuras.h | 1 + src/game/Unit.cpp | 55 ++++++++++++++++++++++------ src/game/Unit.h | 1 + src/shared/revision_nr.h | 2 +- 5 files changed, 116 insertions(+), 22 deletions(-) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 8c75d81c5..335f2973a 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -477,6 +477,9 @@ Unit *caster, Item* castItem) : Aura(spellproto, eff, currentBasePoints, target, m_areaAuraType = AREA_AURA_RAID; if (target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isTotem()) m_modifier.m_auraname = SPELL_AURA_NONE; + // Light's Beacon not applied to caster itself (TODO: more generic check for another simialr spell if any?) + else if (target == caster_ptr && m_spellProto->Id == 53651) + m_modifier.m_auraname = SPELL_AURA_NONE; break; case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND: m_areaAuraType = AREA_AURA_FRIEND; @@ -770,7 +773,40 @@ void AreaAura::Update(uint32 diff) for(std::list::iterator tIter = targets.begin(); tIter != targets.end(); tIter++) { - if((*tIter)->HasAura(GetId(), m_effIndex)) + // flag for seelction is need apply aura to current iteration target + bool apply = true; + + // we need ignore present caster self applied are auras sometime + // in cases if this only auras applied for spell effect + Unit::spellEffectPair spair = Unit::spellEffectPair(GetId(), m_effIndex); + for(Unit::AuraMap::const_iterator i = (*tIter)->GetAuras().lower_bound(spair); i != (*tIter)->GetAuras().upper_bound(spair); ++i) + { + if (i->second->IsDeleted()) + continue; + + switch(m_areaAuraType) + { + case AREA_AURA_ENEMY: + // non caster self-casted auras (non stacked) + if(i->second->GetModifier()->m_auraname != SPELL_AURA_NONE) + apply = false; + break; + case AREA_AURA_RAID: + // non caster self-casted auras (stacked from diff. casters) + if(i->second->GetModifier()->m_auraname != SPELL_AURA_NONE || i->second->GetCasterGUID() == GetCasterGUID()) + apply = false; + break; + default: + // in generic case not allow stacking area auras + apply = false; + break; + } + + if(!apply) + break; + } + + if(!apply) continue; if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel())) @@ -803,7 +839,7 @@ void AreaAura::Update(uint32 diff) caster->IsFriendlyTo(m_target) != needFriendly ) { - m_target->RemoveAura(GetId(), GetEffIndex()); + m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(),GetCasterGUID()); } else if( m_areaAuraType == AREA_AURA_PARTY) // check if in same sub group { @@ -835,16 +871,16 @@ void AreaAura::Update(uint32 diff) { Player* checkTarget = m_target->GetCharmerOrOwnerPlayerOrPlayerItself(); if(!checkTarget) - m_target->RemoveAura(GetId(), GetEffIndex()); + m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID()); } else - m_target->RemoveAura(GetId(), GetEffIndex()); + m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID()); } } else if( m_areaAuraType == AREA_AURA_PET || m_areaAuraType == AREA_AURA_OWNER ) { if( m_target->GetGUID() != caster->GetCharmerOrOwnerGUID() ) - m_target->RemoveAura(GetId(), GetEffIndex()); + m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID()); } } } @@ -885,6 +921,32 @@ void Aura::ApplyModifier(bool apply, bool Real) SetInUse(false); } +bool Aura::IsNeedVisibleSlot(Unit const* caster) const +{ + bool totemAura = caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem(); + + // passive auras (except totem auras) do not get placed in the slots + if (m_isPassive && !totemAura) + return false; + + // generic not caster case + if (m_target != caster) + return true; + + // special area auras case at caster + switch(m_spellProto->Effect[GetEffIndex()]) + { + case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY: + return false; + case SPELL_EFFECT_APPLY_AREA_AURA_RAID: + // not sure is totemAura need, just preserve old code results + return totemAura || m_modifier.m_auraname != SPELL_AURA_NONE; + default: break; + } + + return true; +} + void Aura::_AddAura() { if (!GetId()) @@ -942,10 +1004,7 @@ void Aura::_AddAura() } } - // passive auras (except totem auras) do not get placed in the slots - // area auras with SPELL_AURA_NONE are not shown on target - if((!m_isPassive || (caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem())) && - (m_spellProto->Effect[GetEffIndex()] != SPELL_EFFECT_APPLY_AREA_AURA_ENEMY || m_target != caster)) + if (IsNeedVisibleSlot(caster)) { SetAuraSlot( slot ); if(slot < MAX_AURAS) // slot found send data to client @@ -2415,7 +2474,7 @@ void Aura::HandleAuraDummy(bool apply, bool Real) // original caster must be target (beacon) m_target->CastSpell(m_target,53651,true,NULL,this,m_target->GetGUID()); else - m_target->RemoveAurasDueToSpell(53651); + m_target->RemoveAurasByCasterSpell(53651,m_target->GetGUID()); return; } break; diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h index c6965ca53..98fe1111d 100644 --- a/src/game/SpellAuras.h +++ b/src/game/SpellAuras.h @@ -383,6 +383,7 @@ class MANGOS_DLL_SPEC Aura uint32 m_in_use; // > 0 while in Aura::ApplyModifier call/Aura::Update/etc private: void CleanupTriggeredSpells(); + bool IsNeedVisibleSlot(Unit const* caster) const; // helper for check req. visibility slot }; class MANGOS_DLL_SPEC AreaAura : public Aura diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e9c591b25..f73262e2e 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -3417,6 +3417,7 @@ bool Unit::AddAura(Aura *Aur) return false; } + // m_auraname can be modified to SPELL_AURA_NONE for area auras, this expected for this value AuraType aurName = Aur->GetModifier()->m_auraname; spellEffectPair spair = spellEffectPair(Aur->GetId(), Aur->GetEffIndex()); @@ -3445,10 +3446,15 @@ bool Unit::AddAura(Aura *Aur) } bool stop = false; - switch(aurName) + + // m_auraname can be modified to SPELL_AURA_NONE for area auras, use original + AuraType aurNameReal = AuraType(aurSpellInfo->EffectApplyAuraName[Aur->GetEffIndex()]); + + switch(aurNameReal) { // DoT/HoT/etc - case SPELL_AURA_PERIODIC_DAMAGE: // allow stack + case SPELL_AURA_DUMMY: // allow stack + case SPELL_AURA_PERIODIC_DAMAGE: case SPELL_AURA_PERIODIC_DAMAGE_PERCENT: case SPELL_AURA_PERIODIC_LEECH: case SPELL_AURA_PERIODIC_HEAL: @@ -3752,6 +3758,22 @@ void Unit::RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID) } } +void Unit::RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID) +{ + spellEffectPair spair = spellEffectPair(spellId, effindex); + for(AuraMap::iterator iter = m_Auras.lower_bound(spair); iter != m_Auras.upper_bound(spair);) + { + Aura *aur = iter->second; + if (aur->GetId() == spellId && aur->GetCasterGUID() == casterGUID) + { + RemoveAura(iter); + iter = m_Auras.lower_bound(spair); + } + else + ++iter; + } +} + void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler) { for (AuraMap::iterator iter = m_Auras.begin(); iter != m_Auras.end(); ) @@ -5110,7 +5132,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu } CastSpell(this, 28682, true, castItem, triggeredByAura); - return (procEx & PROC_EX_CRITICAL_HIT);// charge update only at crit hits, no hidden cooldowns + return (procEx & PROC_EX_CRITICAL_HIT); // charge update only at crit hits, no hidden cooldowns } } break; @@ -5807,22 +5829,33 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu if (GetGUID() == triggeredByAura->GetCasterGUID()) return false; + // beacon Unit* beacon = triggeredByAura->GetCaster(); if (!beacon) return false; - Aura* dummy = beacon->GetDummyAura(53563); + // find caster main aura at beacon + Aura* dummy = NULL; + Unit::AuraList const& baa = beacon->GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator i = baa.begin(); i != baa.end(); ++i) + { + if ((*i)->GetId() == 53563 && (*i)->GetCasterGUID() == pVictim->GetGUID()) + { + dummy = (*i); + break; + } + } + + // original heal must be form beacon caster if (!dummy) return false; - // original heal must be form beacon caster - if (dummy->GetCasterGUID() != pVictim->GetGUID()) - return false; - - triggered_spell_id = 53652; // Beacon of Light + triggered_spell_id = 53652; // Beacon of Light basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100; - target = beacon; - break; + + // cast with original caster set but beacon to beacon for apply caster mods and avoid LoS check + beacon->CastCustomSpell(beacon,triggered_spell_id,&basepoints0,NULL,NULL,true,castItem,triggeredByAura,pVictim->GetGUID()); + return true; } // Seal of the Martyr do damage trigger case 53720: diff --git a/src/game/Unit.h b/src/game/Unit.h index 20c175471..b098d4dc9 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1211,6 +1211,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void RemoveAurasDueToSpell(uint32 spellId, Aura* except = NULL); void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId); void RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID); + void RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID); void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler); void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer); void RemoveAurasDueToSpellByCancel(uint32 spellId); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 937bce2a4..515a463de 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 "8496" + #define REVISION_NR "8497" #endif // __REVISION_NR_H__ From c45362a9fc44b722ee2f4a3dce2c1375ffc3e8e5 Mon Sep 17 00:00:00 2001 From: dele Date: Mon, 24 Aug 2009 15:20:46 +0300 Subject: [PATCH 14/14] [8498] Implement talent 53234 and ranks. (cherry picked from commit 510b81f53bbe59beccbc113a802b3f9b1e669e3a) Signed-off-by: VladimirMangos --- sql/mangos.sql | 5 ++++- sql/updates/8498_01_mangos_spell_proc_event.sql | 8 ++++++++ sql/updates/Makefile.am | 2 ++ src/game/Unit.cpp | 7 +++++++ src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 6 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 sql/updates/8498_01_mangos_spell_proc_event.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index aee9b109c..d992a7438 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_8488_02_mangos_spell_bonus_data` bit(1) default NULL + `required_8498_01_mangos_spell_proc_event` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -17847,6 +17847,9 @@ INSERT INTO `spell_proc_event` VALUES (53224, 0x00000000, 9, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (53228, 0x00000000, 9, 0x00000020, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), (53232, 0x00000000, 9, 0x00000020, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0), +(53234, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(53237, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(53238, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (53256, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (53259, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), (53260, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), diff --git a/sql/updates/8498_01_mangos_spell_proc_event.sql b/sql/updates/8498_01_mangos_spell_proc_event.sql new file mode 100644 index 000000000..6f0aef6b0 --- /dev/null +++ b/sql/updates/8498_01_mangos_spell_proc_event.sql @@ -0,0 +1,8 @@ +ALTER TABLE db_version CHANGE COLUMN required_8488_02_mangos_spell_bonus_data required_8498_01_mangos_spell_proc_event bit; + +DELETE FROM `spell_proc_event` WHERE `entry` IN (53234, 53237, 53238); + +INSERT INTO spell_proc_event VALUES +(53234, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(53237, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0), +(53238, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 20d05cce2..f29308a99 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -105,6 +105,7 @@ pkgdata_DATA = \ 8487_02_mangos_spell_proc_event.sql \ 8488_01_mangos_spell_chain.sql \ 8488_02_mangos_spell_bonus_data.sql \ + 8498_01_mangos_spell_proc_event.sql \ README ## Additional files to include when running 'make dist' @@ -190,4 +191,5 @@ EXTRA_DIST = \ 8487_02_mangos_spell_proc_event.sql \ 8488_01_mangos_spell_chain.sql \ 8488_02_mangos_spell_bonus_data.sql \ + 8498_01_mangos_spell_proc_event.sql \ README diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index f73262e2e..2288ffaa7 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6670,6 +6670,13 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB break; } case SPELLFAMILY_HUNTER: + // Piercing Shots + if (auraSpellInfo->SpellIconID == 3247 && auraSpellInfo->SpellVisual[0] == 0) + { + basepoints[0] = damage * triggerAmount / 100 / 8; + trigger_spell_id = 63468; + target = pVictim; + } break; case SPELLFAMILY_PALADIN: { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 515a463de..d3a514ffb 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 "8497" + #define REVISION_NR "8498" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index ba1fd87b5..6601f92f2 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_8469_01_characters_character_spell" - #define REVISION_DB_MANGOS "required_8488_02_mangos_spell_bonus_data" + #define REVISION_DB_MANGOS "required_8498_01_mangos_spell_proc_event" #define REVISION_DB_REALMD "required_8332_01_realmd_realmcharacters" #endif // __REVISION_SQL_H__