@@ -58,6 +58,7 @@ enum DruidSpells
58
58
SPELL_DRUID_CULTIVATION = 200390 ,
59
59
SPELL_DRUID_CULTIVATION_HEAL = 200389 ,
60
60
SPELL_DRUID_CURIOUS_BRAMBLEPATCH = 330670 ,
61
+ SPELL_DRUID_DREAMSTATE = 450346 ,
61
62
SPELL_DRUID_EARTHWARDEN_AURA = 203975 ,
62
63
SPELL_DRUID_ECLIPSE_DUMMY = 79577 ,
63
64
SPELL_DRUID_ECLIPSE_LUNAR_AURA = 48518 ,
@@ -107,6 +108,7 @@ enum DruidSpells
107
108
SPELL_DRUID_MANGLE = 33917 ,
108
109
SPELL_DRUID_MASS_ENTANGLEMENT = 102359 ,
109
110
SPELL_DRUID_MOONFIRE_DAMAGE = 164812 ,
111
+ SPELL_DRUID_NATURES_GRACE_TALENT = 450347 ,
110
112
SPELL_DRUID_NEW_MOON = 274281 ,
111
113
SPELL_DRUID_NEW_MOON_OVERRIDE = 274295 ,
112
114
SPELL_DRUID_POWER_OF_THE_ARCHDRUID = 392302 ,
@@ -1341,6 +1343,61 @@ class spell_dru_moonfire : public SpellScript
1341
1343
}
1342
1344
};
1343
1345
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
+
1344
1401
// 274283 - Full Moon
1345
1402
// 274282 - Half Moon
1346
1403
// 274281 - New Moon
@@ -2301,6 +2358,8 @@ void AddSC_druid_spell_scripts()
2301
2358
RegisterSpellScript (spell_dru_lunar_inspiration);
2302
2359
RegisterSpellScript (spell_dru_luxuriant_soil);
2303
2360
RegisterSpellScript (spell_dru_moonfire);
2361
+ RegisterSpellScript (spell_dru_natures_grace);
2362
+ RegisterSpellScript (spell_dru_natures_grace_eclipse);
2304
2363
RegisterSpellScriptWithArgs (spell_dru_new_moon, " spell_dru_full_moon" , Optional<DruidSpells>(), Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE));
2305
2364
RegisterSpellScriptWithArgs (spell_dru_new_moon, " spell_dru_half_moon" , Optional<DruidSpells>(SPELL_DRUID_HALF_MOON_OVERRIDE), Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE));
2306
2365
RegisterSpellScriptWithArgs (spell_dru_new_moon, " spell_dru_new_moon" , Optional<DruidSpells>(SPELL_DRUID_NEW_MOON_OVERRIDE), Optional<DruidSpells>());
0 commit comments