Scripts/Spells: Void Zone's Consumption (#27265)

(cherry picked from commit 44a6d393d7)
This commit is contained in:
offl
2021-11-20 21:49:56 +02:00
committed by Shauren
parent 8f02596162
commit 5eac5ee2db
4 changed files with 45 additions and 31 deletions

View File

@@ -699,23 +699,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);
@@ -723,5 +706,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);
}

View File

@@ -57,7 +57,7 @@ enum Spells
SPELL_HEART_LIGHTNING_TETHER = 64799,
// Void Zone
SPELL_CONSUMPTION = 64208,
SPELL_CONSUMPTION = 64209,
// Life Spark
SPELL_ARCANE_POWER_STATE = 49411,
@@ -649,20 +649,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->m_unitData->CreatedBySpell, me->GetMap()->GetDifficultyID()))
if (createdBySpell->GetEffects().size() > EFFECT_1)
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);
});
}

View File

@@ -1030,6 +1030,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;
int32 damage = 0;
if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(caster->m_unitData->CreatedBySpell, GetCastDifficulty()))
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
{
@@ -4853,6 +4879,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);