Skip to content

Commit db75f34

Browse files
authored
Scripts/Spells: Implement druid talent Nature's Grace (TrinityCore#30215)
1 parent eee5dfa commit db75f34

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_natures_grace_eclipse', 'spell_dru_natures_grace');
2+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
3+
(48517, 'spell_dru_natures_grace_eclipse'),
4+
(48518, 'spell_dru_natures_grace_eclipse'),
5+
(450347, 'spell_dru_natures_grace');
6+
7+
DELETE FROM `spell_proc` WHERE `SpellId` IN (450346);
8+
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
9+
(450346,0x00,7,0x00000005,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x1,0x0,0x18,0x0,0,0,0,0); -- Dreamstate

src/server/scripts/Spells/spell_druid.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ enum DruidSpells
5858
SPELL_DRUID_CULTIVATION = 200390,
5959
SPELL_DRUID_CULTIVATION_HEAL = 200389,
6060
SPELL_DRUID_CURIOUS_BRAMBLEPATCH = 330670,
61+
SPELL_DRUID_DREAMSTATE = 450346,
6162
SPELL_DRUID_EARTHWARDEN_AURA = 203975,
6263
SPELL_DRUID_ECLIPSE_DUMMY = 79577,
6364
SPELL_DRUID_ECLIPSE_LUNAR_AURA = 48518,
@@ -107,6 +108,7 @@ enum DruidSpells
107108
SPELL_DRUID_MANGLE = 33917,
108109
SPELL_DRUID_MASS_ENTANGLEMENT = 102359,
109110
SPELL_DRUID_MOONFIRE_DAMAGE = 164812,
111+
SPELL_DRUID_NATURES_GRACE_TALENT = 450347,
110112
SPELL_DRUID_NEW_MOON = 274281,
111113
SPELL_DRUID_NEW_MOON_OVERRIDE = 274295,
112114
SPELL_DRUID_POWER_OF_THE_ARCHDRUID = 392302,
@@ -1341,6 +1343,61 @@ class spell_dru_moonfire : public SpellScript
13411343
}
13421344
};
13431345

1346+
// 450347 - Nature's Grace
1347+
class spell_dru_natures_grace : public AuraScript
1348+
{
1349+
public:
1350+
bool Validate(SpellInfo const* spellInfo) override
1351+
{
1352+
return ValidateSpellInfo({ SPELL_DRUID_NATURES_GRACE_TALENT, SPELL_DRUID_DREAMSTATE })
1353+
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
1354+
}
1355+
1356+
static void Trigger(Unit* caster, AuraEffect const* naturesGraceEffect)
1357+
{
1358+
caster->CastSpell(caster, SPELL_DRUID_DREAMSTATE, CastSpellExtraArgsInit{
1359+
.SpellValueOverrides = { { SPELLVALUE_AURA_STACK, naturesGraceEffect->GetAmount() } }
1360+
});
1361+
1362+
}
1363+
1364+
void OnOwnerInCombat(bool isNowInCombat) const
1365+
{
1366+
if (isNowInCombat)
1367+
Trigger(GetTarget(), GetEffect(EFFECT_2));
1368+
}
1369+
1370+
void Register() override
1371+
{
1372+
OnEnterLeaveCombat += AuraEnterLeaveCombatFn(spell_dru_natures_grace::OnOwnerInCombat);
1373+
}
1374+
};
1375+
1376+
// 48517 Eclipse (Solar) + 48518 Eclipse (Lunar)
1377+
class spell_dru_natures_grace_eclipse : public AuraScript
1378+
{
1379+
bool Validate(SpellInfo const* /*spellInfo*/) override
1380+
{
1381+
return ValidateSpellInfo({ SPELL_DRUID_DREAMSTATE })
1382+
&& ValidateSpellEffect({ { SPELL_DRUID_NATURES_GRACE_TALENT, EFFECT_2 } });
1383+
}
1384+
1385+
bool Load() override
1386+
{
1387+
return GetCaster()->HasAuraEffect(SPELL_DRUID_NATURES_GRACE_TALENT, EFFECT_2);
1388+
}
1389+
1390+
void HandleRemoved(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const
1391+
{
1392+
spell_dru_natures_grace::Trigger(GetTarget(), GetTarget()->GetAuraEffect(SPELL_DRUID_NATURES_GRACE_TALENT, EFFECT_2));
1393+
}
1394+
1395+
void Register() override
1396+
{
1397+
AfterEffectRemove += AuraEffectRemoveFn(spell_dru_natures_grace_eclipse::HandleRemoved, EFFECT_0, SPELL_AURA_ADD_PCT_MODIFIER, AURA_EFFECT_HANDLE_REAL);
1398+
}
1399+
};
1400+
13441401
// 274283 - Full Moon
13451402
// 274282 - Half Moon
13461403
// 274281 - New Moon
@@ -2301,6 +2358,8 @@ void AddSC_druid_spell_scripts()
23012358
RegisterSpellScript(spell_dru_lunar_inspiration);
23022359
RegisterSpellScript(spell_dru_luxuriant_soil);
23032360
RegisterSpellScript(spell_dru_moonfire);
2361+
RegisterSpellScript(spell_dru_natures_grace);
2362+
RegisterSpellScript(spell_dru_natures_grace_eclipse);
23042363
RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_full_moon", Optional<DruidSpells>(), Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE));
23052364
RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_half_moon", Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE), Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE));
23062365
RegisterSpellScriptWithArgs(spell_dru_new_moon, "spell_dru_new_moon", Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE), Optional<DruidSpells>());

0 commit comments

Comments
 (0)