mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Scripts/Spells: Implement mage talent Meteor (#31094)
This commit is contained in:
6
sql/updates/world/master/2025_06_29_00_world.sql
Normal file
6
sql/updates/world/master/2025_06_29_00_world.sql
Normal 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;
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user