Scripts/Spells: Update druid talent Galactic Guardian (#31707)

Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
Cristian Vintila
2026-03-06 21:29:38 +02:00
committed by GitHub
parent 17d4317883
commit 020b170b2b
2 changed files with 75 additions and 10 deletions

View File

@@ -0,0 +1,9 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_galactic_guardian_moonfire','spell_dru_lunar_wrath');
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(164812,'spell_dru_galactic_guardian_moonfire'),
(1253600,'spell_dru_lunar_wrath');
DELETE FROM `spell_proc` WHERE `SpellId` IN (203964,1253600);
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
(203964,0x00,7,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0,0,0,0), -- Galactic Guardian
(1253600,0x00,7,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x2,0x0,0x10,0x0,0,0,0,0); -- Lunar Wrath

View File

@@ -121,6 +121,7 @@ enum DruidSpells
SPELL_DRUID_LUNAR_BEAM_HEAL = 204069,
SPELL_DRUID_LUNAR_BEAM_DAMAGE = 414613,
SPELL_DRUID_LUNAR_INSPIRATION_OVERRIDE = 155627,
SPELL_DRUID_LUNAR_WRATH = 1253600,
SPELL_DRUID_MAIM_STUN = 203123,
SPELL_DRUID_MANGLE = 33917,
SPELL_DRUID_MANGLE_TALENT = 231064,
@@ -137,6 +138,7 @@ enum DruidSpells
SPELL_DRUID_PROWL = 5215,
SPELL_DRUID_PULVERIZE = 80313,
SPELL_DRUID_RAKE_STUN = 163505,
SPELL_DRUID_RED_MOON = 1252871,
SPELL_DRUID_REGROWTH = 8936,
SPELL_DRUID_REJUVENATION = 774,
SPELL_DRUID_REJUVENATION_GERMINATION = 155777,
@@ -1161,29 +1163,58 @@ class spell_dru_galactic_guardian : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_DRUID_GALACTIC_GUARDIAN_AURA });
return ValidateSpellInfo({ SPELL_DRUID_GALACTIC_GUARDIAN_AURA, SPELL_DRUID_LUNAR_WRATH, SPELL_DRUID_RED_MOON });
}
void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
static bool CheckEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
if (DamageInfo* damageInfo = eventInfo.GetDamageInfo())
{
Unit* target = GetTarget();
return roll_chance_i(aurEff->GetAmount());
}
// free automatic moonfire on target
target->CastSpell(damageInfo->GetVictim(), SPELL_DRUID_MOONFIRE_DAMAGE, TRIGGERED_FULL_MASK | TRIGGERED_SUPPRESS_CASTER_ANIM);
static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo)
{
Unit* caster = eventInfo.GetActor();
Unit* target = eventInfo.GetActionTarget();
// Cast aura
target->CastSpell(damageInfo->GetVictim(), SPELL_DRUID_GALACTIC_GUARDIAN_AURA, true);
}
// free automatic moonfire on target
caster->CastSpell(target, SPELL_DRUID_MOONFIRE_DAMAGE, TRIGGERED_FULL_MASK | TRIGGERED_SUPPRESS_CASTER_ANIM);
// Cast aura
caster->CastSpell(target, caster->HasSpell(SPELL_DRUID_RED_MOON) ? SPELL_DRUID_LUNAR_WRATH : SPELL_DRUID_GALACTIC_GUARDIAN_AURA, true);
}
void Register() override
{
DoCheckEffectProc += AuraCheckEffectProcFn(spell_dru_galactic_guardian::CheckEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
OnEffectProc += AuraEffectProcFn(spell_dru_galactic_guardian::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
}
};
// 213708 - Galactic Guardian (attached to 164812 - Moonfire)
class spell_dru_galactic_guardian_moonfire : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellEffect({ { SPELL_DRUID_GALACTIC_GUARDIAN_AURA, EFFECT_2 } });
}
bool Load() override
{
return GetCaster()->HasAuraEffect(SPELL_DRUID_GALACTIC_GUARDIAN_AURA, EFFECT_2);
}
void CalculateDamage(SpellEffectInfo const& /*effectInfo*/, Unit* /*victim*/, int32& /*damage*/, int32& /*flatMod*/, float& pctMod) const
{
if (AuraEffect const* galactic = GetCaster()->GetAuraEffect(SPELL_DRUID_GALACTIC_GUARDIAN_AURA, EFFECT_2))
AddPct(pctMod, galactic->GetAmount());
}
void Register() override
{
CalcDamage += SpellCalcDamageFn(spell_dru_galactic_guardian_moonfire::CalculateDamage);
}
};
// 774 - Rejuvenation
class spell_dru_germination : public SpellScript
{
@@ -1540,6 +1571,29 @@ class spell_dru_lunar_inspiration : public AuraScript
}
};
// 1253600 - Lunar Wrath
class spell_dru_lunar_wrath : public AuraScript
{
static bool CheckProc(AuraScript const&, ProcEventInfo const& procEvent)
{
if (procEvent.GetProcSpell()->GetPowerTypeCostAmount(POWER_RAGE) <= 0)
return false;
Unit* caster = procEvent.GetActor();
Unit* result = nullptr;
Trinity::UnitAuraCheck check(true, SPELL_DRUID_RED_MOON, caster->GetGUID());
Trinity::UnitSearcher searcher(caster, result, check);
Cell::VisitAllObjects(caster, searcher, 40.0f);
return result != nullptr;
}
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_dru_lunar_wrath::CheckProc);
}
};
// 392315 - Luxuriant Soil
class spell_dru_luxuriant_soil : public AuraScript
{
@@ -3094,6 +3148,7 @@ void AddSC_druid_spell_scripts()
RegisterSpellScript(spell_dru_flower_walk_heal);
RegisterSpellScript(spell_dru_forms_trinket);
RegisterSpellScript(spell_dru_galactic_guardian);
RegisterSpellScript(spell_dru_galactic_guardian_moonfire);
RegisterSpellScript(spell_dru_germination);
RegisterSpellScript(spell_dru_glyph_of_stars);
RegisterSpellScript(spell_dru_gore);
@@ -3107,6 +3162,7 @@ void AddSC_druid_spell_scripts()
RegisterSpellScript(spell_dru_lifebloom);
RegisterAreaTriggerAI(at_dru_lunar_beam);
RegisterSpellScript(spell_dru_lunar_inspiration);
RegisterSpellScript(spell_dru_lunar_wrath);
RegisterSpellScript(spell_dru_luxuriant_soil);
RegisterSpellScript(spell_dru_maim);
RegisterSpellScript(spell_dru_mangle);