diff options
4 files changed, 52 insertions, 9 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index 9bb8c5ef740..45c971dd970 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -2048,6 +2048,10 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 72440, 'spell_deathbringer_blood_nova'), ( 72378, 'spell_deathbringer_blood_nova_targeting'), ( 73058, 'spell_deathbringer_blood_nova_targeting'), +( 72385, 'spell_deathbringer_boiling_blood'), +( 72441, 'spell_deathbringer_boiling_blood'), +( 72442, 'spell_deathbringer_boiling_blood'), +( 72443, 'spell_deathbringer_boiling_blood'), ( 72155, 'spell_icc_harvest_blight_specimen'), ( 72162, 'spell_icc_harvest_blight_specimen'), ( 71123, 'spell_stinky_precious_decimate'), diff --git a/sql/updates/world/2011_06_26_02_world_spell_script_names.sql b/sql/updates/world/2011_06_26_02_world_spell_script_names.sql new file mode 100644 index 00000000000..cde210b091c --- /dev/null +++ b/sql/updates/world/2011_06_26_02_world_spell_script_names.sql @@ -0,0 +1,6 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_deathbringer_boiling_blood'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(72385,'spell_deathbringer_boiling_blood'), +(72441,'spell_deathbringer_boiling_blood'), +(72442,'spell_deathbringer_boiling_blood'), +(72443,'spell_deathbringer_boiling_blood'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index d6a447bd75f..2ba9ca36528 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4125,12 +4125,9 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->EffectRadiusIndex[0] = 12; // 100yd ++count; break; - case 72385: // Boiling Blood (Deathbringer Saurfang) - case 72441: // Boiling Blood (Deathbringer Saurfang) - case 72442: // Boiling Blood (Deathbringer Saurfang) - case 72443: // Boiling Blood (Deathbringer Saurfang) - spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_TARGET_ENEMY; - spellInfo->EffectImplicitTargetB[0] = 0; + case 72723: // Resistant Skin (Deathbringer Saurfang adds) + // this spell initially granted Shadow damage immunity, however it was removed but the data was left in client + spellInfo->Effect[2] = 0; ++count; break; case 70460: // Coldflame Jets (Traps after Saurfang) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 96bfb17e5d4..6fc60bdba09 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -450,7 +450,7 @@ class boss_deathbringer_saurfang : public CreatureScript // select at range only Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true); if (!target) - target = SelectTarget(SELECT_TARGET_RANDOM, 1, 10.0f, true); // noone? select melee + target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true); // noone? select melee if (target) DoCast(target, SPELL_BLOOD_NOVA_TRIGGER); events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT); @@ -461,8 +461,7 @@ class boss_deathbringer_saurfang : public CreatureScript events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT); break; case EVENT_BOILING_BLOOD: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -BOILING_BLOOD_HELPER)) - DoCast(target, SPELL_BOILING_BLOOD); + DoCast(me, SPELL_BOILING_BLOOD); events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT); break; case EVENT_BERSERK: @@ -1222,6 +1221,42 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader } }; +class spell_deathbringer_boiling_blood : public SpellScriptLoader +{ + public: + spell_deathbringer_boiling_blood() : SpellScriptLoader("spell_deathbringer_boiling_blood") { } + + class spell_deathbringer_boiling_blood_SpellScript : public SpellScript + { + PrepareSpellScript(spell_deathbringer_boiling_blood_SpellScript); + + bool Load() + { + return GetCaster()->GetTypeId() == TYPEID_UNIT; + } + + void FilterTargets(std::list<Unit*>& unitList) + { + unitList.remove(GetCaster()->getVictim()); + std::list<Unit*>::iterator itr = unitList.begin(); + std::advance(itr, urand(0, unitList.size() - 1)); + Unit* target = *itr; + unitList.clear(); + unitList.push_back(target); + } + + void Register() + { + OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_boiling_blood_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_deathbringer_boiling_blood_SpellScript(); + } +}; + class achievement_ive_gone_and_made_a_mess : public AchievementCriteriaScript { public: @@ -1250,5 +1285,6 @@ void AddSC_boss_deathbringer_saurfang() new spell_deathbringer_rune_of_blood(); new spell_deathbringer_blood_nova(); new spell_deathbringer_blood_nova_targeting(); + new spell_deathbringer_boiling_blood(); new achievement_ive_gone_and_made_a_mess(); } |