mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Scripts/Spells: Update druid talent Galactic Guardian (#31707)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
9
sql/updates/world/master/2026_03_06_02_world.sql
Normal file
9
sql/updates/world/master/2026_03_06_02_world.sql
Normal 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
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user