Core/Spells:

* fixed Protector of the Innocent talent
* fixed Tower of Radiance talent
* fixed Blessed Life talent
* fixed Gift of the Earthmother Rejuvenation instant heal effect
This commit is contained in:
Ovahlord
2020-08-29 21:33:16 +02:00
parent 6a8ecc3ee3
commit 27bbba32aa
4 changed files with 97 additions and 2 deletions

View File

@@ -0,0 +1,32 @@
-- Protector of the Innocent
DELETE FROM `spell_proc` WHERE `SpellId`= -20138;
INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask2`, `SpellPhaseMask`, `SpellTypeMask`) VALUES
(-20138, 10, 0x40000000 | 0x80000000 | 0x8000, 0x400 | 0x4000, 2, 2);
-- Tower of Radiance
DELETE FROM `spell_proc` WHERE `SpellId`= -84800;
INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask2`, `ProcFlags`, `SpellPhaseMask`, `SpellTypeMask`, `Chance`) VALUES
(-84800, 10, 0x40000000, 0x400, 0x4000, 2, 2, 100);
-- Blessed Life
DELETE FROM `spell_proc` WHERE `SpellId`= -31828;
INSERT INTO `spell_proc` (`SpellId`, `SpellTypeMask`, `Cooldown`, `AttributesMask`) VALUES
(-31828, 1, 8000, 0x20);
-- Spell Scripts
DELETE FROM `spell_script_names` WHERE `ScriptName` IN
('spell_pal_protector_of_the_innocent',
'spell_pal_tower_of_radiance');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(-20138, 'spell_pal_protector_of_the_innocent'),
(-84800, 'spell_pal_tower_of_radiance');
-- Serverside Spells
DELETE FROM `spell_dbc` WHERE `Id`= 32733;
INSERT INTO `spell_dbc` (`Id`, `CastingTimeIndex`, `DurationIndex`, `RangeIndex`, `AttributesEx`, `Comment`) VALUES
(32733, 1, 0, 0, 0x100, '((Serverside/Non-DB2) Holy Power Talent Marker (DND)');
DELETE FROM `spell_bonus_data` WHERE `entry`= 64801;
INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `comments`) VALUES
(64801, 0, 'Druid - Rejuvenation (Gift of the Earthmother)');

View File

@@ -5741,6 +5741,16 @@ void SpellMgr::LoadSpellInfoCorrections()
spellInfo->RangeEntry = sSpellRangeStore.LookupEntry(2); // 5 yards (combat range)
});
// Gift of the Earthmother (Rank 2)
ApplySpellFix({ 51180 }, [](SpellInfo* spellInfo)
{
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_APPLY_AURA;
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_DUMMY;
spellInfo->Effects[EFFECT_1].Effect = SPELL_EFFECT_APPLY_AURA;
spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_DUMMY;
});
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
{
SpellInfo* spellInfo = mSpellInfoMap[i];

View File

@@ -103,6 +103,7 @@ enum DruidSpells
SPELL_DRUID_STRENGTH_OF_THE_PANTHER = 90166,
SPELL_DRUID_SUNFIRE = 93402,
SPELL_DRUID_SUNFIRE_TALENT = 93401,
SPELL_DRUID_REJUVENATION_DIRECT_HEAL = 64801,
SPELL_DRUID_TIGER_S_FURY_ENERGIZE = 51178,
SPELL_DRUID_TREE_OF_LIFE = 33891,
SPELL_DRUID_TREE_OF_LIFE_PASSIVE_1 = 5420,
@@ -123,7 +124,8 @@ enum DruidSpellIconIds
SPELL_ICON_ID_EUPHORIA = 4431,
SPELL_ICON_ID_SAVAGE_DEFENDER = 146,
SPELL_ICON_ID_GLYPH_OF_FEROCIOUS_BITE = 1680,
SPELL_ICON_ID_GLYPH_OF_FRENZIED_REGENERATION = 50
SPELL_ICON_ID_GLYPH_OF_FRENZIED_REGENERATION = 50,
SPELL_ICON_ID_GIFT_OF_THE_EARTHMOTHER = 3186
};
enum MiscSpells
@@ -1252,7 +1254,11 @@ class spell_dru_rejuvenation : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_DRUID_NATURES_BOUNTY });
return ValidateSpellInfo(
{
SPELL_DRUID_NATURES_BOUNTY,
SPELL_DRUID_REJUVENATION_DIRECT_HEAL
});
}
void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1272,6 +1278,17 @@ class spell_dru_rejuvenation : public AuraScript
}
}
void HandleGiftOfTheEarthmother(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
{
if (AuraEffect const* giftEffect = caster->GetDummyAuraEffect(SPELLFAMILY_DRUID, SPELL_ICON_ID_GIFT_OF_THE_EARTHMOTHER, EFFECT_1))
{
int32 bp = CalculatePct(aurEff->GetAmount() * aurEff->GetTotalTicks(), giftEffect->GetAmount());
caster->CastCustomSpell(SPELL_DRUID_REJUVENATION_DIRECT_HEAL, SPELLVALUE_BASE_POINT0, bp, GetTarget(), true);
}
}
}
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
@@ -1289,6 +1306,7 @@ class spell_dru_rejuvenation : public AuraScript
void Register() override
{
AfterEffectApply.Register(&spell_dru_rejuvenation::AfterApply, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL);
AfterEffectApply.Register(&spell_dru_rejuvenation::HandleGiftOfTheEarthmother, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
AfterEffectRemove.Register(&spell_dru_rejuvenation::AfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL);
}
};

View File

@@ -1955,6 +1955,39 @@ class spell_pal_divine_shield : public SpellScript
}
};
// -20138 - Protector of the Innocent
class spell_pal_protector_of_the_innocent : public AuraScript
{
bool CheckProc(ProcEventInfo& eventInfo)
{
return eventInfo.GetHealInfo() && eventInfo.GetProcTarget() != GetTarget();
}
void Register() override
{
DoCheckProc.Register(&spell_pal_protector_of_the_innocent::CheckProc);
}
};
// -84800 - Tower of Radiance
class spell_pal_tower_of_radiance : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PALADIN_BEACON_OF_LIGHT });
}
bool CheckProc(ProcEventInfo& eventInfo)
{
return eventInfo.GetProcTarget() && eventInfo.GetProcTarget()->HasAura(SPELL_PALADIN_BEACON_OF_LIGHT, GetTarget()->GetGUID());
}
void Register() override
{
DoCheckProc.Register(&spell_pal_tower_of_radiance::CheckProc);
}
};
void AddSC_paladin_spell_scripts()
{
RegisterSpellScript(spell_pal_ardent_defender);
@@ -1995,6 +2028,7 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_lights_beacon);
RegisterSpellScript(spell_pal_light_of_dawn);
RegisterSpellScript(spell_pal_long_arm_of_the_law);
RegisterSpellScript(spell_pal_protector_of_the_innocent);
new spell_pal_righteous_defense();
RegisterSpellScript(spell_pal_sacred_shield);
RegisterSpellScript(spell_pal_seal_of_righteousness);
@@ -2002,5 +2036,6 @@ void AddSC_paladin_spell_scripts()
new spell_pal_shield_of_the_righteous();
RegisterSpellScript(spell_pal_selfless_healer);
RegisterSpellScript(spell_pal_templar_s_verdict);
RegisterSpellScript(spell_pal_tower_of_radiance);
RegisterSpellAndAuraScriptPair(spell_pal_word_of_glory, spell_pal_word_of_glory_AuraScript);
}