Core/Spells: fixed Shadow Orbs and Shadow Orb Power mastery
This commit is contained in:
1 parent
0d490157fe
commit
86dca48ed9
2 files changed
+125
No files matched your search
@@ -0,0 +1,15 @@
|
|||||||
|
DELETE FROM `spell_proc` WHERE `SpellId` IN (77486, 95740, 77487);
|
||||||
|
INSERT INTO `spell_proc` (`SpellId`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `ProcsPerMinute`, `Chance`, `Cooldown`, `Charges`) VALUES
|
||||||
|
(95740, 0, 6, 0x00008000, 0x0, 0x00000440, 0x00050000, 1, 2, 0, 0, 0, 10, 0, 0),
|
||||||
|
(77486, 0, 6, 0x00008000, 0x0, 0x00000440, 0x00050000, 1, 2, 0, 32, 0, 10, 0, 0),
|
||||||
|
(77487, 0, 6, 0x00002000, 0x0, 0x00010000, 0x00010000, 1, 1, 0, 0, 0, 100, 0, 0);
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
|
||||||
|
'spell_pri_shadow_orbs',
|
||||||
|
'spell_pri_shadow_orb_power',
|
||||||
|
'spell_pri_shadow_orb');
|
||||||
|
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(95740,'spell_pri_shadow_orbs'),
|
||||||
|
(77486,'spell_pri_shadow_orb_power'),
|
||||||
|
(77487,'spell_pri_shadow_orb');
|
||||||
@@ -39,6 +39,7 @@ enum PriestSpells
|
|||||||
SPELL_PRIEST_DIVINE_AEGIS = 47753,
|
SPELL_PRIEST_DIVINE_AEGIS = 47753,
|
||||||
SPELL_PRIEST_DIVINE_TOUCH = 63544,
|
SPELL_PRIEST_DIVINE_TOUCH = 63544,
|
||||||
SPELL_PRIEST_ECHO_OF_LIGHT = 77489,
|
SPELL_PRIEST_ECHO_OF_LIGHT = 77489,
|
||||||
|
SPELL_PRIEST_EMPOWERED_SHADOW = 95799,
|
||||||
SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675,
|
SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675,
|
||||||
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC = 55677,
|
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC = 55677,
|
||||||
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL = 56131,
|
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL = 56131,
|
||||||
@@ -57,6 +58,8 @@ enum PriestSpells
|
|||||||
SPELL_PRIEST_PENANCE_R1_HEAL = 47757,
|
SPELL_PRIEST_PENANCE_R1_HEAL = 47757,
|
||||||
SPELL_PRIEST_REFLECTIVE_SHIELD_R1 = 33201,
|
SPELL_PRIEST_REFLECTIVE_SHIELD_R1 = 33201,
|
||||||
SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED = 33619,
|
SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED = 33619,
|
||||||
|
SPELL_PRIEST_SHADOW_ORB_MARKER = 93683,
|
||||||
|
SPELL_PRIEST_SHADOW_ORB_POWER = 77486,
|
||||||
SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH = 107903,
|
SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH = 107903,
|
||||||
SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH = 107904,
|
SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH = 107904,
|
||||||
SPELL_PRIEST_SHADOW_WORD_DEATH = 32409,
|
SPELL_PRIEST_SHADOW_WORD_DEATH = 32409,
|
||||||
@@ -1224,6 +1227,113 @@ class spell_pri_echo_of_light : public SpellScriptLoader
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 95740 - Shadow Orbs (Passive)
|
||||||
|
class spell_pri_shadow_orbs : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_pri_shadow_orbs);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* spellInfo) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(
|
||||||
|
{
|
||||||
|
SPELL_PRIEST_SHADOW_ORB_POWER,
|
||||||
|
spellInfo->Effects[EFFECT_0].TriggerSpell
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CheckProc(ProcEventInfo& /*eventInfo*/)
|
||||||
|
{
|
||||||
|
// Do not proc when the target has Shadow Orb Power mastery active
|
||||||
|
if (GetTarget()->HasAura(SPELL_PRIEST_SHADOW_ORB_POWER))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
GetTarget()->CastSpell(GetTarget(), GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
DoCheckProc += AuraCheckProcFn(spell_pri_shadow_orbs::CheckProc);
|
||||||
|
OnEffectProc += AuraEffectProcFn(spell_pri_shadow_orbs::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 77486 - Shadow Orb Power (Passive)
|
||||||
|
class spell_pri_shadow_orb_power : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_pri_shadow_orb_power);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* spellInfo) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo({ spellInfo->Effects[EFFECT_0].TriggerSpell });
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
int32 amount = GetEffect(EFFECT_0)->GetAmount();
|
||||||
|
|
||||||
|
if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell))
|
||||||
|
amount += spell->Effects[EFFECT_0].BasePoints;
|
||||||
|
|
||||||
|
GetTarget()->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, SPELLVALUE_BASE_POINT0, amount, GetTarget(), true, nullptr, aurEff);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnEffectProc += AuraEffectProcFn(spell_pri_shadow_orb_power::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 77487 - Shadow Orb
|
||||||
|
class spell_pri_shadow_orb : public AuraScript
|
||||||
|
{
|
||||||
|
PrepareAuraScript(spell_pri_shadow_orb);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* spellInfo) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(
|
||||||
|
{
|
||||||
|
SPELL_PRIEST_SHADOW_ORB_MARKER,
|
||||||
|
SPELL_PRIEST_EMPOWERED_SHADOW
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||||
|
{
|
||||||
|
if (GetStackAmount() == GetSpellInfo()->StackAmount)
|
||||||
|
GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_SHADOW_ORB_MARKER, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||||
|
{
|
||||||
|
GetTarget()->RemoveAurasDueToSpell(SPELL_PRIEST_SHADOW_ORB_MARKER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
|
||||||
|
Unit* target = GetTarget();
|
||||||
|
int32 bp = aurEff->GetAmount();
|
||||||
|
target->CastCustomSpell(target, SPELL_PRIEST_EMPOWERED_SHADOW, &bp, &bp, 0, true, nullptr, aurEff);
|
||||||
|
target->RemoveAurasDueToSpell(SPELL_PRIEST_SHADOW_ORB_MARKER);
|
||||||
|
Remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
AfterEffectApply += AuraEffectApplyFn(spell_pri_shadow_orb::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||||
|
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_shadow_orb::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||||
|
OnEffectProc += AuraEffectProcFn(spell_pri_shadow_orb::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_priest_spell_scripts()
|
void AddSC_priest_spell_scripts()
|
||||||
{
|
{
|
||||||
new spell_pri_body_and_soul();
|
new spell_pri_body_and_soul();
|
||||||
|
|||||||
Reference in new issue
Block a user