refactor(Scripts/Karazhan): Spell Scripts registry macros (#19184)
* instance_karazhan aura:spell_karazhan_brittle_bones_aura * instance_karazhan aura:spell_karazhan_overload_aura * instance_karazhan spell:spell_karazhan_blink
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
UPDATE `spell_script_names` SET `ScriptName`='spell_karazhan_brittle_bones_aura' WHERE `spell_id`=32441;
|
||||||
|
UPDATE `spell_script_names` SET `ScriptName`='spell_karazhan_overload_aura' WHERE `spell_id`=29768;
|
||||||
@@ -528,103 +528,85 @@ public:
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class spell_karazhan_brittle_bones : public SpellScriptLoader
|
class spell_karazhan_brittle_bones_aura : public AuraScript
|
||||||
{
|
{
|
||||||
public:
|
PrepareAuraScript(spell_karazhan_brittle_bones_aura);
|
||||||
spell_karazhan_brittle_bones() : SpellScriptLoader("spell_karazhan_brittle_bones") { }
|
|
||||||
|
|
||||||
class spell_karazhan_brittle_bones_AuraScript : public AuraScript
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
{
|
{
|
||||||
PrepareAuraScript(spell_karazhan_brittle_bones_AuraScript);
|
return ValidateSpellInfo({ SPELL_RATTLED });
|
||||||
|
}
|
||||||
|
|
||||||
void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude)
|
void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude)
|
||||||
{
|
|
||||||
isPeriodic = true;
|
|
||||||
amplitude = 5000;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Update(AuraEffect const* /*effect*/)
|
|
||||||
{
|
|
||||||
PreventDefaultAction();
|
|
||||||
if (roll_chance_i(35))
|
|
||||||
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_RATTLED, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Register() override
|
|
||||||
{
|
|
||||||
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_karazhan_brittle_bones_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
|
|
||||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_karazhan_brittle_bones_AuraScript::Update, EFFECT_0, SPELL_AURA_DUMMY);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
AuraScript* GetAuraScript() const override
|
|
||||||
{
|
{
|
||||||
return new spell_karazhan_brittle_bones_AuraScript();
|
isPeriodic = true;
|
||||||
|
amplitude = 5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update(AuraEffect const* /*effect*/)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
if (roll_chance_i(35))
|
||||||
|
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_RATTLED, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_karazhan_brittle_bones_aura::CalcPeriodic, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
|
OnEffectPeriodic += AuraEffectPeriodicFn(spell_karazhan_brittle_bones_aura::Update, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class spell_karazhan_overload : public SpellScriptLoader
|
class spell_karazhan_overload_aura : public AuraScript
|
||||||
{
|
{
|
||||||
public:
|
PrepareAuraScript(spell_karazhan_overload_aura);
|
||||||
spell_karazhan_overload() : SpellScriptLoader("spell_karazhan_overload") { }
|
|
||||||
|
|
||||||
class spell_karazhan_overload_AuraScript : public AuraScript
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
{
|
{
|
||||||
PrepareAuraScript(spell_karazhan_overload_AuraScript);
|
return ValidateSpellInfo({ SPELL_OVERLOAD });
|
||||||
|
}
|
||||||
|
|
||||||
void PeriodicTick(AuraEffect const* auraEffect)
|
void PeriodicTick(AuraEffect const* auraEffect)
|
||||||
{
|
|
||||||
PreventDefaultAction();
|
|
||||||
//Should stop at 3200 damage, maybe check needed(?)
|
|
||||||
GetUnitOwner()->CastCustomSpell(SPELL_OVERLOAD, SPELLVALUE_BASE_POINT0, int32(auraEffect->GetAmount() * pow(2.0, auraEffect->GetTickNumber())), GetUnitOwner(), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Register() override
|
|
||||||
{
|
|
||||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_karazhan_overload_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
AuraScript* GetAuraScript() const override
|
|
||||||
{
|
{
|
||||||
return new spell_karazhan_overload_AuraScript();
|
PreventDefaultAction();
|
||||||
|
//Should stop at 3200 damage, maybe check needed(?)
|
||||||
|
GetUnitOwner()->CastCustomSpell(SPELL_OVERLOAD, SPELLVALUE_BASE_POINT0, int32(auraEffect->GetAmount() * pow(2.0, auraEffect->GetTickNumber())), GetUnitOwner(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectPeriodic += AuraEffectPeriodicFn(spell_karazhan_overload_aura::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class spell_karazhan_blink : public SpellScriptLoader
|
class spell_karazhan_blink : public SpellScript
|
||||||
{
|
{
|
||||||
public:
|
PrepareSpellScript(spell_karazhan_blink);
|
||||||
spell_karazhan_blink() : SpellScriptLoader("spell_karazhan_blink") { }
|
|
||||||
|
|
||||||
class spell_karazhan_blink_SpellScript : public SpellScript
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
{
|
{
|
||||||
PrepareSpellScript(spell_karazhan_blink_SpellScript);
|
return ValidateSpellInfo({ SPELL_BLINK });
|
||||||
|
}
|
||||||
|
|
||||||
void HandleDummy(SpellEffIndex effIndex)
|
void HandleDummy(SpellEffIndex effIndex)
|
||||||
{
|
|
||||||
PreventHitDefaultEffect(effIndex);
|
|
||||||
GetCaster()->GetThreatMgr().ResetAllThreat();
|
|
||||||
if (Unit* target = GetHitUnit())
|
|
||||||
GetCaster()->CastSpell(target, SPELL_BLINK, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Register() override
|
|
||||||
{
|
|
||||||
OnEffectHitTarget += SpellEffectFn(spell_karazhan_blink_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SpellScript* GetSpellScript() const override
|
|
||||||
{
|
{
|
||||||
return new spell_karazhan_blink_SpellScript();
|
PreventHitDefaultEffect(effIndex);
|
||||||
|
GetCaster()->GetThreatMgr().ResetAllThreat();
|
||||||
|
if (Unit* target = GetHitUnit())
|
||||||
|
GetCaster()->CastSpell(target, SPELL_BLINK, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectHitTarget += SpellEffectFn(spell_karazhan_blink::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSC_instance_karazhan()
|
void AddSC_instance_karazhan()
|
||||||
{
|
{
|
||||||
new instance_karazhan();
|
new instance_karazhan();
|
||||||
new spell_karazhan_brittle_bones();
|
RegisterSpellScript(spell_karazhan_brittle_bones_aura);
|
||||||
new spell_karazhan_overload();
|
RegisterSpellScript(spell_karazhan_overload_aura);
|
||||||
new spell_karazhan_blink();
|
RegisterSpellScript(spell_karazhan_blink);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user