mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
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:
15
sql/updates/world/custom/custom_2019_12_02_00_world.sql
Normal file
15
sql/updates/world/custom/custom_2019_12_02_00_world.sql
Normal 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);
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user