Scripts/Spells: Implement druid talent Moonless Night (#31521)

This commit is contained in:
Cristian Vintila
2026-02-05 00:08:52 +02:00
committed by GitHub
parent 23455d8e82
commit 4657aef983
2 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_moonless_night');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(400278, 'spell_dru_moonless_night');
DELETE FROM `spell_proc` WHERE `SpellId` IN (400278);
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
(400278,0x01,7,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0,0,0,0); -- Moonless Night

View File

@@ -120,6 +120,8 @@ enum DruidSpells
SPELL_DRUID_MATTED_FUR = 385786,
SPELL_DRUID_MOONFIRE = 8921,
SPELL_DRUID_MOONFIRE_DAMAGE = 164812,
SPELL_DRUID_MOONLESS_NIGHT = 400278,
SPELL_DRUID_MOONLESS_NIGHT_DAMAGE = 400360,
SPELL_DRUID_NATURES_GRACE_TALENT = 450347,
SPELL_DRUID_NEW_MOON = 274281,
SPELL_DRUID_NEW_MOON_OVERRIDE = 274295,
@@ -1471,6 +1473,38 @@ class spell_dru_moonfire : public SpellScript
}
};
// 400278 - Moonless Night
class spell_dru_moonless_night : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_DRUID_MOONFIRE_DAMAGE, SPELL_DRUID_MOONLESS_NIGHT_DAMAGE });
}
bool CheckProc(ProcEventInfo& eventInfo)
{
return !eventInfo.GetSpellInfo()->HasAttribute(SPELL_ATTR5_TREAT_AS_AREA_EFFECT) && eventInfo.GetActionTarget()->HasAura(SPELL_DRUID_MOONFIRE_DAMAGE);
}
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
Unit* caster = eventInfo.GetActor();
Unit* target = eventInfo.GetActionTarget();
int32 damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount());
caster->CastSpell(target, SPELL_DRUID_MOONLESS_NIGHT_DAMAGE, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, damage } }
});
}
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_dru_moonless_night::CheckProc);
OnEffectProc += AuraEffectProcFn(spell_dru_moonless_night::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
}
};
// 450347 - Nature's Grace
class spell_dru_natures_grace : public AuraScript
{
@@ -2870,6 +2904,7 @@ void AddSC_druid_spell_scripts()
RegisterSpellScript(spell_dru_mangle);
RegisterSpellScript(spell_dru_matted_fur_absorb);
RegisterSpellScript(spell_dru_moonfire);
RegisterSpellScript(spell_dru_moonless_night);
RegisterSpellScript(spell_dru_natures_grace);
RegisterSpellScript(spell_dru_natures_grace_eclipse);
RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_full_moon", Optional<DruidSpells>(), Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE));