mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Scripts/Spells: Implement druid talent Moonless Night (#31521)
This commit is contained in:
7
sql/updates/world/master/2026_02_04_02_world.sql
Normal file
7
sql/updates/world/master/2026_02_04_02_world.sql
Normal 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
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user