Scripts/Spells: Implement mage talent Meteor (#31094)

This commit is contained in:
Aqua Deus
2025-06-29 23:03:56 +02:00
committed by GitHub
parent 44b4019127
commit 9cc6cf45b6
3 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_mage_meteor';
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(153561, 'spell_mage_meteor');
UPDATE `areatrigger_create_properties` SET `ScriptName`='at_mage_meteor' WHERE `Id`=3467;
UPDATE `areatrigger_create_properties` SET `ScriptName`='at_mage_meteor_burn' WHERE `Id`=1712;

View File

@@ -5420,6 +5420,12 @@ void SpellMgr::LoadSpellInfoTargetCaps()
spellInfo->_LoadSqrtTargetLimit(8, 0, {}, EFFECT_2, {}, {});
});
// Meteor
ApplySpellFix({ 351140 }, [](SpellInfo* spellInfo)
{
spellInfo->_LoadSqrtTargetLimit(8, 0, {}, {}, {}, {});
});
TC_LOG_INFO("server.loading", ">> Loaded SpellInfo target caps in {} ms", GetMSTimeDiffToNow(oldMSTime));
}

View File

@@ -74,6 +74,9 @@ enum MageSpells
SPELL_MAGE_LIVING_BOMB_PERIODIC = 217694,
SPELL_MAGE_MANA_SURGE = 37445,
SPELL_MAGE_MASTER_OF_TIME = 342249,
SPELL_MAGE_METEOR_AREATRIGGER = 177345,
SPELL_MAGE_METEOR_BURN_DAMAGE = 155158,
SPELL_MAGE_METEOR_MISSILE = 153564,
SPELL_MAGE_RADIANT_SPARK_PROC_BLOCKER = 376105,
SPELL_MAGE_RAY_OF_FROST_BONUS = 208141,
SPELL_MAGE_RAY_OF_FROST_FINGERS_OF_FROST = 269748,
@@ -1188,6 +1191,60 @@ class spell_mage_living_bomb_periodic : public AuraScript
}
};
// 153561 - Meteor
class spell_mage_meteor : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_MAGE_METEOR_AREATRIGGER });
}
void EffectHit(SpellEffIndex /*effIndex*/)
{
GetCaster()->CastSpell(*GetHitDest(), SPELL_MAGE_METEOR_AREATRIGGER, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.TriggeringSpell = GetSpell()
});
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_mage_meteor::EffectHit, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
// 177345 - Meteor
// Id - 3467
struct at_mage_meteor : public AreaTriggerAI
{
using AreaTriggerAI::AreaTriggerAI;
void OnRemove() override
{
if (Unit* caster = at->GetCaster())
caster->CastSpell(at->GetPosition(), SPELL_MAGE_METEOR_MISSILE);
}
};
// 175396 - Meteor Burn
// Id - 1712
struct at_mage_meteor_burn : public AreaTriggerAI
{
using AreaTriggerAI::AreaTriggerAI;
void OnUnitEnter(Unit* unit) override
{
if (Unit* caster = at->GetCaster())
if (caster->IsValidAttackTarget(unit))
caster->CastSpell(unit, SPELL_MAGE_METEOR_BURN_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
}
void OnUnitExit(Unit* unit) override
{
unit->RemoveAurasDueToSpell(SPELL_MAGE_METEOR_BURN_DAMAGE, at->GetCasterGuid());
}
};
enum SilvermoonPolymorph
{
NPC_AUROSALIA = 18744
@@ -1578,6 +1635,9 @@ void AddSC_mage_spell_scripts()
RegisterSpellScript(spell_mage_living_bomb);
RegisterSpellScript(spell_mage_living_bomb_explosion);
RegisterSpellScript(spell_mage_living_bomb_periodic);
RegisterSpellScript(spell_mage_meteor);
RegisterAreaTriggerAI(at_mage_meteor);
RegisterAreaTriggerAI(at_mage_meteor_burn);
RegisterSpellScript(spell_mage_polymorph_visual);
RegisterSpellScript(spell_mage_prismatic_barrier);
RegisterSpellScript(spell_mage_radiant_spark);