diff options
4 files changed, 41 insertions, 30 deletions
diff --git a/sql/updates/world/3.3.5/2021_11_20_02_world.sql b/sql/updates/world/3.3.5/2021_11_20_02_world.sql new file mode 100644 index 00000000000..7a9c48843d8 --- /dev/null +++ b/sql/updates/world/3.3.5/2021_11_20_02_world.sql @@ -0,0 +1,10 @@ +-- It looked like 34000 and 34001 are heroic and normal entries but they're not. Even in CreatureDifficulty they are separate entries +-- Spell 64206 is simply not used but looks like was created for heroic, 64207 probably triggers it +-- We'll use 64209 as trigger of 64208 +UPDATE `spell_dbc` SET `ProcChance` = 101, `Effect1` = 6, `EffectDieSides1` = 1, `EffectImplicitTargetA1` = 1, `EffectApplyAuraName1` = 23, `EffectAmplitude1` = 1000, `EffectTriggerSpell1` = 64208, `DmgMultiplier1` = 1 WHERE `Id` = 64209; + +UPDATE `spell_script_names` SET `ScriptName` = 'spell_gen_consumption' WHERE `ScriptName` = 'spell_four_horsemen_consumption'; + +DELETE FROM `spell_script_names` WHERE `spell_id` = 64208 AND `ScriptName` = 'spell_gen_consumption'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(64208,'spell_gen_consumption'); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index 1e8e38fccac..0367f0b5975 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -698,23 +698,6 @@ class spell_four_horsemen_mark : public AuraScript } }; -// 28865 - Consumption -class spell_four_horsemen_consumption : public SpellScript -{ - PrepareSpellScript(spell_four_horsemen_consumption); - - void HandleDamageCalc(SpellEffIndex /*effIndex*/) - { - uint32 damage = GetCaster()->GetMap()->IsHeroic() ? 4250 : 2750; - SetEffectValue(damage); - } - - void Register() override - { - OnEffectLaunchTarget += SpellEffectFn(spell_four_horsemen_consumption::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - } -}; - void AddSC_boss_four_horsemen() { RegisterNaxxramasCreatureAI(boss_four_horsemen_baron); @@ -722,5 +705,4 @@ void AddSC_boss_four_horsemen() RegisterNaxxramasCreatureAI(boss_four_horsemen_lady); RegisterNaxxramasCreatureAI(boss_four_horsemen_sir); RegisterSpellScript(spell_four_horsemen_mark); - RegisterSpellScript(spell_four_horsemen_consumption); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 3620149a997..8ad560ddf90 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -60,7 +60,7 @@ enum Spells SPELL_HEART_LIGHTNING_TETHER = 64799, // Void Zone - SPELL_CONSUMPTION = 64208, + SPELL_CONSUMPTION = 64209, // Life Spark SPELL_ARCANE_POWER_STATE = 49411, @@ -658,19 +658,11 @@ struct npc_xt_void_zone : public PassiveAI { npc_xt_void_zone(Creature* creature) : PassiveAI(creature) { } - void Reset() override + void JustAppeared() override { - int32 bp = 0; - if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(me->GetUInt32Value(UNIT_CREATED_BY_SPELL))) - bp = createdBySpell->GetEffect(EFFECT_1).CalcValue(); - - _scheduler.Schedule(1s, [this, bp](TaskContext consumption) + _scheduler.Schedule(2500ms, [this](TaskContext /*task*/) { - CastSpellExtraArgs args(false); - if (bp) - args.AddSpellBP0(bp); - DoCastSelf(SPELL_CONSUMPTION, args); - consumption.Repeat(); + DoCastSelf(SPELL_CONSUMPTION); }); } diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 7f02bda1e46..fc753e61b0e 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1119,6 +1119,32 @@ private: int32 _damagePct; }; +// 28865 - Consumption +// 64208 - Consumption +class spell_gen_consumption : public SpellScript +{ + PrepareSpellScript(spell_gen_consumption); + + void HandleDamageCalc(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + if (!caster || caster->GetTypeId() != TYPEID_UNIT) + return; + + uint32 damage = 0; + if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(caster->GetUInt32Value(UNIT_CREATED_BY_SPELL))) + damage = createdBySpell->GetEffect(EFFECT_1).CalcValue(); + + if (damage) + SetEffectValue(damage); + } + + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_gen_consumption::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + // 63845 - Create Lance enum CreateLanceSpells { @@ -4556,6 +4582,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_clone); RegisterSpellScript(spell_gen_clone_weapon); RegisterSpellScript(spell_gen_clone_weapon_aura); + RegisterSpellScript(spell_gen_consumption); RegisterSpellScriptWithArgs(spell_gen_count_pct_from_max_hp, "spell_gen_default_count_pct_from_max_hp"); RegisterSpellScriptWithArgs(spell_gen_count_pct_from_max_hp, "spell_gen_50pct_count_pct_from_max_hp", 50); RegisterSpellScript(spell_gen_create_lance); |