Scripts/Spells: Implement mage Alter Time
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
-- mage Alter Time spell
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_mage_alter_time_aura', 'spell_mage_alter_time_active');
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(110909,'spell_mage_alter_time_aura'),
|
||||
(127140,'spell_mage_alter_time_active'),
|
||||
(342246,'spell_mage_alter_time_aura'),
|
||||
(342247,'spell_mage_alter_time_active');
|
||||
@@ -33,11 +33,15 @@
|
||||
|
||||
enum MageSpells
|
||||
{
|
||||
SPELL_MAGE_ALTER_TIME_AURA = 110909,
|
||||
SPELL_MAGE_ALTER_TIME_VISUAL = 347402,
|
||||
SPELL_MAGE_ARCANE_ALTER_TIME_AURA = 342246,
|
||||
SPELL_MAGE_ARCANE_BARRAGE_ENERGIZE = 321529,
|
||||
SPELL_MAGE_ARCANE_BARRAGE_R3 = 321526,
|
||||
SPELL_MAGE_ARCANE_CHARGE = 36032,
|
||||
SPELL_MAGE_ARCANE_MAGE = 137021,
|
||||
SPELL_MAGE_BLAZING_BARRIER_TRIGGER = 235314,
|
||||
SPELL_MAGE_BLINK = 1953,
|
||||
SPELL_MAGE_CAUTERIZE_DOT = 87023,
|
||||
SPELL_MAGE_CAUTERIZED = 87024,
|
||||
SPELL_MAGE_CONE_OF_COLD = 120,
|
||||
@@ -54,6 +58,7 @@ enum MageSpells
|
||||
SPELL_MAGE_LIVING_BOMB_EXPLOSION = 44461,
|
||||
SPELL_MAGE_LIVING_BOMB_PERIODIC = 217694,
|
||||
SPELL_MAGE_MANA_SURGE = 37445,
|
||||
SPELL_MAGE_MASTER_OF_TIME = 342249,
|
||||
SPELL_MAGE_REVERBERATE = 281482,
|
||||
SPELL_MAGE_RING_OF_FROST_DUMMY = 91264,
|
||||
SPELL_MAGE_RING_OF_FROST_FREEZE = 82691,
|
||||
@@ -80,6 +85,85 @@ enum MiscSpells
|
||||
SPELL_MAGE_CHILLED = 205708
|
||||
};
|
||||
|
||||
// 110909 - Alter Time Aura
|
||||
// 342246 - Alter Time Aura
|
||||
class spell_mage_alter_time_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_mage_alter_time_aura);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_MAGE_ALTER_TIME_VISUAL,
|
||||
SPELL_MAGE_MASTER_OF_TIME,
|
||||
SPELL_MAGE_BLINK,
|
||||
});
|
||||
}
|
||||
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* unit = GetTarget();
|
||||
_health = unit->GetHealth();
|
||||
_pos = unit->GetPosition();
|
||||
}
|
||||
|
||||
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* unit = GetTarget();
|
||||
if (unit->GetDistance(_pos) <= 100.0f && GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
|
||||
{
|
||||
unit->SetHealth(_health);
|
||||
unit->NearTeleportTo(_pos);
|
||||
|
||||
if (unit->HasAura(SPELL_MAGE_MASTER_OF_TIME))
|
||||
{
|
||||
SpellInfo const* blink = sSpellMgr->AssertSpellInfo(SPELL_MAGE_BLINK, DIFFICULTY_NONE);
|
||||
unit->GetSpellHistory()->ResetCharges(blink->ChargeCategoryId);
|
||||
}
|
||||
unit->CastSpell(unit, SPELL_MAGE_ALTER_TIME_VISUAL);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectApply += AuraEffectApplyFn(spell_mage_alter_time_aura::OnApply, EFFECT_0, SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS, AURA_EFFECT_HANDLE_REAL);
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_mage_alter_time_aura::AfterRemove, EFFECT_0, SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 _health = 0;
|
||||
Position _pos;
|
||||
};
|
||||
|
||||
// 127140 - Alter Time Active
|
||||
// 342247 - Alter Time Active
|
||||
class spell_mage_alter_time_active : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_mage_alter_time_active);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_MAGE_ALTER_TIME_AURA,
|
||||
SPELL_MAGE_ARCANE_ALTER_TIME_AURA,
|
||||
});
|
||||
}
|
||||
|
||||
void RemoveAlterTimeAura(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* unit = GetCaster();
|
||||
unit->RemoveAura(SPELL_MAGE_ALTER_TIME_AURA, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
unit->RemoveAura(SPELL_MAGE_ARCANE_ALTER_TIME_AURA, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHit += SpellEffectFn(spell_mage_alter_time_active::RemoveAlterTimeAura, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 44425 - Arcane Barrage
|
||||
class spell_mage_arcane_barrage : public SpellScript
|
||||
{
|
||||
@@ -982,6 +1066,8 @@ class spell_mage_water_elemental_freeze : public SpellScript
|
||||
|
||||
void AddSC_mage_spell_scripts()
|
||||
{
|
||||
RegisterAuraScript(spell_mage_alter_time_aura);
|
||||
RegisterSpellScript(spell_mage_alter_time_active);
|
||||
RegisterSpellScript(spell_mage_arcane_barrage);
|
||||
RegisterSpellScript(spell_mage_arcane_charge_clear);
|
||||
RegisterSpellScript(spell_mage_arcane_explosion);
|
||||
|
||||
Reference in New Issue
Block a user