mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Scripts/Spells: Implement druid talent Embrace of the Dream (#29185)
This commit is contained in:
8
sql/updates/world/master/2023_08_20_02_world.sql
Normal file
8
sql/updates/world/master/2023_08_20_02_world.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
DELETE FROM `spell_proc` WHERE `SpellId` IN (392124);
|
||||
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
|
||||
(392124,0x00,7,0x00000000,0x04000000,0x00000000,0x00000000,0x0,0x0,0x4,0x4,0x1,0x0,0x0,0,0,0,0); -- Embrace of the Dream
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_embrace_of_the_dream', 'spell_dru_embrace_of_the_dream_effect');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(392124, 'spell_dru_embrace_of_the_dream'),
|
||||
(392146, 'spell_dru_embrace_of_the_dream_effect');
|
||||
@@ -64,6 +64,8 @@ enum DruidSpells
|
||||
SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT = 326053,
|
||||
SPELL_DRUID_EFFLORESCENCE_AURA = 81262,
|
||||
SPELL_DRUID_EFFLORESCENCE_HEAL = 81269,
|
||||
SPELL_DRUID_EMBRACE_OF_THE_DREAM_EFFECT = 392146,
|
||||
SPELL_DRUID_EMBRACE_OF_THE_DREAM_HEAL = 392147,
|
||||
SPELL_DRUID_ENTANGLING_ROOTS = 339,
|
||||
SPELL_DRUID_EXHILARATE = 28742,
|
||||
SPELL_DRUID_FORM_AQUATIC_PASSIVE = 276012,
|
||||
@@ -98,6 +100,7 @@ enum DruidSpells
|
||||
SPELL_DRUID_MOONFIRE_DAMAGE = 164812,
|
||||
SPELL_DRUID_POWER_OF_THE_ARCHDRUID = 392302,
|
||||
SPELL_DRUID_PROWL = 5215,
|
||||
SPELL_DRUID_REGROWTH = 8936,
|
||||
SPELL_DRUID_REJUVENATION = 774,
|
||||
SPELL_DRUID_REJUVENATION_GERMINATION = 155777,
|
||||
SPELL_DRUID_REJUVENATION_T10_PROC = 70691,
|
||||
@@ -351,6 +354,26 @@ class spell_dru_dash : public AuraScript
|
||||
}
|
||||
};
|
||||
|
||||
// 203974 - Earthwarden
|
||||
class spell_dru_earthwarden : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DRUID_THRASH_CAT, SPELL_DRUID_THRASH_BEAR, SPELL_DRUID_EARTHWARDEN_AURA });
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
target->CastSpell(target, SPELL_DRUID_EARTHWARDEN_AURA, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_dru_earthwarden::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_dru_eclipse_common
|
||||
{
|
||||
public:
|
||||
@@ -569,23 +592,69 @@ class spell_dru_efflorescence_heal : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 203974 - Earthwarden
|
||||
class spell_dru_earthwarden : public AuraScript
|
||||
// 392124 - Embrace of the Dream
|
||||
class spell_dru_embrace_of_the_dream : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DRUID_THRASH_CAT, SPELL_DRUID_THRASH_BEAR, SPELL_DRUID_EARTHWARDEN_AURA });
|
||||
return ValidateSpellInfo ({ SPELL_DRUID_EMBRACE_OF_THE_DREAM_EFFECT })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
|
||||
bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
target->CastSpell(target, SPELL_DRUID_EARTHWARDEN_AURA, true);
|
||||
return roll_chance_i(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()));
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const
|
||||
{
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_EMBRACE_OF_THE_DREAM_EFFECT,
|
||||
CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR)
|
||||
.SetTriggeringAura(aurEff)
|
||||
.SetTriggeringSpell(eventInfo.GetProcSpell()));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_dru_earthwarden::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
DoCheckEffectProc += AuraCheckEffectProcFn(spell_dru_embrace_of_the_dream::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
OnEffectProc += AuraEffectProcFn(spell_dru_embrace_of_the_dream::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 392146 - Embrace of the Dream (Selector)
|
||||
class spell_dru_embrace_of_the_dream_effect : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_DRUID_EMBRACE_OF_THE_DREAM_HEAL,
|
||||
SPELL_DRUID_REGROWTH,
|
||||
SPELL_DRUID_REJUVENATION,
|
||||
SPELL_DRUID_REJUVENATION_GERMINATION
|
||||
});
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets) const
|
||||
{
|
||||
targets.remove_if([&](WorldObject const* target)
|
||||
{
|
||||
Unit const* unitTarget = target->ToUnit();
|
||||
return !unitTarget || !unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_DRUID, flag128(0x50, 0, 0, 0), GetCaster()->GetGUID());
|
||||
});
|
||||
}
|
||||
|
||||
void HandleEffect(SpellEffIndex /*effIndex*/) const
|
||||
{
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_DRUID_EMBRACE_OF_THE_DREAM_HEAL,
|
||||
CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR)
|
||||
.SetTriggeringSpell(GetSpell()));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_embrace_of_the_dream_effect::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_dru_embrace_of_the_dream_effect::HandleEffect, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1991,6 +2060,8 @@ void AddSC_druid_spell_scripts()
|
||||
RegisterSpellScript(spell_dru_efflorescence);
|
||||
RegisterSpellScript(spell_dru_efflorescence_dummy);
|
||||
RegisterSpellScript(spell_dru_efflorescence_heal);
|
||||
RegisterSpellScript(spell_dru_embrace_of_the_dream);
|
||||
RegisterSpellScript(spell_dru_embrace_of_the_dream_effect);
|
||||
RegisterSpellAndAuraScriptPair(spell_dru_entangling_roots, spell_dru_entangling_roots_aura);
|
||||
RegisterSpellScript(spell_dru_ferocious_bite);
|
||||
RegisterSpellScript(spell_dru_forms_trinket);
|
||||
|
||||
Reference in New Issue
Block a user