Core/Spells:

* updated Shadow Word: Pain to Cataclysm
* fixed Improved Mind Blast talent
* fixed Masochism talent
* fixed Mind Melt talent
* fixed removing the Mind Spike crit chance bonus when hitting the target with a Mind Blast
* corrected Pain and Suffering aura duration refreshment script
* fixed Paralysis proc conditions
This commit is contained in:
Ovahlord
2019-12-02 19:38:29 +01:00
parent b9188738dc
commit 2b07ffa5e9
2 changed files with 112 additions and 14 deletions

View File

@@ -0,0 +1,15 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN
('spell_pri_mind_blast',
'spell_pri_masochism');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(8092, 'spell_pri_mind_blast'),
(-88994 , 'spell_pri_masochism');
DELETE FROM `spell_proc` WHERE `SpellId` IN (-88994, -14910, 87178, -47580, -87192);
INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `Cooldown`, `Chance`, `AttributesMask`, `Charges`) VALUES
(-88994, 0, 0, 0, 0, 0, 1, 0, 0, 0, 100, 0, 0),
(-14910, 6, 0, 0, 0x00010000, 0, 1, 2, 0, 0, 100, 16, 0),
(87178, 6, 0x00002000, 0, 0, 0x00020000, 1, 0, 0, 0, 100, 0, 1),
(-47580, 6, 0, 0, 0x0000040, 0, 1, 2, 0, 0, 0, 0, 0),
(-87192, 6, 0x00002000, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0);

View File

@@ -74,6 +74,7 @@ enum PriestSpells
SPELL_PRIEST_LEAP_OF_FAITH_TRIGGERED = 92572,
SPELL_PRIEST_MANA_LEECH_PROC = 34650,
SPELL_PRIEST_MIND_FLAY = 15407,
SPELL_PRIEST_MIND_TRAUMA = 48301,
SPELL_PRIEST_PENANCE_R1 = 47540,
SPELL_PRIEST_PENANCE_R1_DAMAGE = 47758,
SPELL_PRIEST_PENANCE_R1_HEAL = 47757,
@@ -105,7 +106,9 @@ enum PriestSpellIcons
PRIEST_ICON_ID_SHIELD_DISCIPLINE = 566,
PRIEST_ICON_ID_GLYPH_OF_POWER_WORD_BARRIER = 3837,
PRIEST_ICON_ID_GLYPH_OF_POWER_WORD_SHIELD = 566,
PRIEST_ICON_ID_HARNESSED_SHADOWS = 554
PRIEST_ICON_ID_HARNESSED_SHADOWS = 554,
PRIEST_ICON_ID_IMPROVED_MIND_BLAST = 95,
PRIEST_ICON_ID_MIND_MELT = 3139
};
enum MiscSpells
@@ -573,16 +576,12 @@ class spell_pri_pain_and_suffering_proc : public SpellScript
void HandleEffectScriptEffect(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
// Refresh Shadow Word: Pain on target
if (Unit* target = GetHitUnit())
{
if (AuraEffect* aur = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, 0x8000, 0, 0, caster->GetGUID()))
{
aur->SetBonusAmount(caster->SpellDamageBonusDone(target, aur->GetSpellInfo(), 0, DOT, aur->GetEffIndex()));
aur->CalculatePeriodic(caster, false, false);
aur->GetBase()->RefreshDuration();
}
}
if (!caster)
return;
// Refresh Shadow Word: Pain duration on target
if (AuraEffect* aur = GetHitUnit()->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, 0x8000, 0, 0, caster->GetGUID()))
aur->GetBase()->RefreshDuration();
}
void Register() override
@@ -821,7 +820,7 @@ class spell_pri_renew : public AuraScript
}
};
// 32379 - Shadow Word Death
// 32379 - Shadow Word: Death
class spell_pri_shadow_word_death : public SpellScript
{
PrepareSpellScript(spell_pri_shadow_word_death);
@@ -831,7 +830,28 @@ class spell_pri_shadow_word_death : public SpellScript
return ValidateSpellInfo({ SPELL_PRIEST_SHADOW_WORD_DEATH });
}
void HandleDamage()
void HandleDamageBonus(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster)
return;
int32 damage = GetEffectValue();
if (Unit* target = GetHitUnit())
{
// Shadow Word: Death deals three times the damage when hitting a target below 25% health
if (target->GetHealthPct() < 25.f)
{
damage *= 3;
// Mind Melt talent bonus
if (AuraEffect const* effect = target->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_MIND_MELT, EFFECT_0))
AddPct(damage, effect->GetAmount());
}
}
}
void HandleSelfDamagingEffect(SpellEffIndex /*effIndex*/)
{
int32 damage = GetHitDamage();
@@ -844,7 +864,8 @@ class spell_pri_shadow_word_death : public SpellScript
void Register() override
{
OnHit += SpellHitFn(spell_pri_shadow_word_death::HandleDamage);
OnEffectLaunchTarget += SpellEffectFn(spell_pri_shadow_word_death::HandleDamageBonus, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
OnEffectHitTarget += SpellEffectFn(spell_pri_shadow_word_death::HandleSelfDamagingEffect, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
@@ -1624,6 +1645,66 @@ class spell_pri_spirit_of_redemption : public AuraScript
}
};
// 8092 - Mind Blast
class spell_pri_mind_blast : public SpellScript
{
PrepareSpellScript(spell_pri_mind_blast);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PRIEST_MIND_TRAUMA });
}
void HandleImprovedMindBlast(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
if (!caster || caster->GetShapeshiftForm() != FORM_SHADOW)
return;
if (AuraEffect* effect = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_PRIEST, PRIEST_ICON_ID_IMPROVED_MIND_BLAST, EFFECT_0))
if (roll_chance_i(effect->GetSpellInfo()->Effects[EFFECT_1].CalcValue(caster)))
caster->CastSpell(GetHitUnit(), SPELL_PRIEST_MIND_TRAUMA, true, nullptr, effect);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_pri_mind_blast::HandleImprovedMindBlast, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// -88994 - Masochism
class spell_pri_masochism : public AuraScript
{
PrepareAuraScript(spell_pri_masochism);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PRIEST_SHADOW_WORD_DEATH });
}
bool CheckProc(ProcEventInfo& eventInfo)
{
DamageInfo const* damage = eventInfo.GetDamageInfo();
if (!damage)
return false;
// Damaging yourself with Shadow Word: Death
if (eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->Id == SPELL_PRIEST_SHADOW_WORD_DEATH && eventInfo.GetActor() == GetTarget())
return true;
// Taking damage >= 10% of your total health
if (damage->GetDamage() >= CalculatePct(GetTarget()->GetMaxHealth(), GetSpellInfo()->Effects[EFFECT_1].CalcValue()))
return true;
return false;
}
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_pri_masochism::CheckProc);
}
};
void AddSC_priest_spell_scripts()
{
RegisterSpellScript(spell_pri_archangel);
@@ -1650,6 +1731,8 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_leap_of_faith_effect_trigger);
RegisterAuraScript(spell_pri_lightwell_renew);
RegisterAuraScript(spell_pri_mana_leech);
RegisterAuraScript(spell_pri_masochism);
RegisterSpellScript(spell_pri_mind_blast);
RegisterSpellScript(spell_pri_mind_sear);
RegisterSpellScript(spell_pri_pain_and_suffering_proc);
RegisterSpellScript(spell_pri_penance);