Skip to content

Commit fd639dd

Browse files
authored
Scripts/Spells: Implement priest talent Inescapable Torment (TrinityCore#31483)
1 parent 716b668 commit fd639dd

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_inescapable_torment';
2+
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
3+
(8092,'spell_pri_inescapable_torment'),
4+
(32379,'spell_pri_inescapable_torment'),
5+
(47758,'spell_pri_inescapable_torment'),
6+
(373129,'spell_pri_inescapable_torment');

src/server/scripts/Spells/spell_priest.cpp

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ enum PriestSpells
146146
SPELL_PRIEST_HOLY_10_1_CLASS_SET_4P = 405556,
147147
SPELL_PRIEST_HOLY_10_1_CLASS_SET_4P_EFFECT = 409479,
148148
SPELL_PRIEST_INDEMNITY = 373049,
149+
SPELL_PRIEST_INESCAPABLE_TORMENT = 373427,
150+
SPELL_PRIEST_INESCAPABLE_TORMENT_TELEPORT = 373441,
151+
SPELL_PRIEST_INESCAPABLE_TORMENT_DAMAGE = 373442,
149152
SPELL_PRIEST_ITEM_EFFICIENCY = 37595,
150153
SPELL_PRIEST_LASTING_WORDS = 471504,
151154
SPELL_PRIEST_LEAP_OF_FAITH_EFFECT = 92832,
@@ -300,7 +303,8 @@ enum PriestSummons
300303
{
301304
NPC_PRIEST_DIVINE_IMAGE = 198236,
302305
NPC_PRIEST_MINDBENDER = 62982,
303-
NPC_PRIEST_SHADOWFIEND = 19668
306+
NPC_PRIEST_SHADOWFIEND = 19668,
307+
NPC_PRIEST_VOIDWRAITH = 224466
304308
};
305309

306310
class RaidCheck
@@ -2487,6 +2491,52 @@ class spell_pri_holy_word_salvation_cooldown_reduction : public SpellScript
24872491
}
24882492
};
24892493

2494+
// 373427 - Inescapable Torment
2495+
// Triggered by 8092 - Mind Blast, 32379 - Shadow Word: Death
2496+
// Triggered by 47758 - Penance (Channel) and 373129 - Dark Reprimand (Channel)
2497+
class spell_pri_inescapable_torment : public SpellScript
2498+
{
2499+
bool Validate(SpellInfo const* /*spellInfo*/) override
2500+
{
2501+
return ValidateSpellInfo({ SPELL_PRIEST_INESCAPABLE_TORMENT_TELEPORT })
2502+
&& ValidateSpellEffect({ { SPELL_PRIEST_INESCAPABLE_TORMENT, EFFECT_1 } });
2503+
}
2504+
2505+
bool Load() override
2506+
{
2507+
return GetCaster()->HasAura(SPELL_PRIEST_INESCAPABLE_TORMENT);
2508+
}
2509+
2510+
static TempSummon* GetSummon(Unit const* owner)
2511+
{
2512+
for (Unit* summon : owner->m_Controlled)
2513+
if (summon->GetEntry() == NPC_PRIEST_SHADOWFIEND || summon->GetEntry() == NPC_PRIEST_MINDBENDER || summon->GetEntry() == NPC_PRIEST_VOIDWRAITH)
2514+
return summon->ToTempSummon();
2515+
return nullptr;
2516+
}
2517+
2518+
void HandleEffectHit(SpellEffIndex /*effIndex*/) const
2519+
{
2520+
Unit const* caster = GetCaster();
2521+
TempSummon* summon = GetSummon(caster);
2522+
if (!summon)
2523+
return;
2524+
2525+
summon->CastSpell(GetHitUnit(), SPELL_PRIEST_INESCAPABLE_TORMENT_TELEPORT, CastSpellExtraArgsInit{
2526+
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
2527+
.TriggeringSpell = GetSpell()
2528+
});
2529+
2530+
int32 durationExtend = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_INESCAPABLE_TORMENT, DIFFICULTY_NONE)->GetEffect(EFFECT_1).CalcValue(caster);
2531+
summon->ModifyTimer(Milliseconds(durationExtend));
2532+
}
2533+
2534+
void Register() override
2535+
{
2536+
OnEffectHitTarget += SpellEffectFn(spell_pri_inescapable_torment::HandleEffectHit, EFFECT_0, SPELL_EFFECT_ANY);
2537+
}
2538+
};
2539+
24902540
// 40438 - Priest Tier 6 Trinket
24912541
class spell_pri_item_t6_trinket : public AuraScript
24922542
{
@@ -5155,6 +5205,7 @@ void AddSC_priest_spell_scripts()
51555205
RegisterSpellScript(spell_pri_holy_word_chastise);
51565206
RegisterSpellScript(spell_pri_holy_word_salvation);
51575207
RegisterSpellScript(spell_pri_holy_word_salvation_cooldown_reduction);
5208+
RegisterSpellScript(spell_pri_inescapable_torment);
51585209
RegisterSpellScript(spell_pri_item_t6_trinket);
51595210
RegisterSpellScriptWithArgs(spell_pri_lasting_words, "spell_pri_lasting_words_serenity", EFFECT_0);
51605211
RegisterSpellScriptWithArgs(spell_pri_lasting_words, "spell_pri_lasting_words_sanctify", EFFECT_1);

0 commit comments

Comments
 (0)