@@ -70,6 +70,8 @@ enum RogueSpells
7070 SPELL_ROGUE_KILLING_SPREE_TELEPORT = 57840 ,
7171 SPELL_ROGUE_KILLING_SPREE_WEAPON_DMG = 57841 ,
7272 SPELL_ROGUE_KILLING_SPREE_DMG_BUFF = 61851 ,
73+ SPELL_ROGUE_LEECHING_POISON_TALENT = 280716 ,
74+ SPELL_ROGUE_LEECHING_POISON_AURA = 108211 ,
7375 SPELL_ROGUE_MARKED_FOR_DEATH = 137619 ,
7476 SPELL_ROGUE_MAIN_GAUCHE = 86392 ,
7577 SPELL_ROGUE_NIGHT_TERRORS = 277953 ,
@@ -142,6 +144,20 @@ bool IsFinishingMove(Spell const* spell)
142144 return GetFinishingMoveCPCost (spell).has_value ();
143145}
144146
147+ static constexpr bool IsLethalPoison (uint32 spellId)
148+ {
149+ switch (spellId)
150+ {
151+ case SPELL_ROGUE_DEADLY_POISON:
152+ case SPELL_ROGUE_WOUND_POISON:
153+ case SPELL_ROGUE_INSTANT_POISON:
154+ case SPELL_ROGUE_AMPLIFYING_POISON:
155+ return true ;
156+ default :
157+ return false ;
158+ }
159+ }
160+
145161// 455143 - Acrobatic Strikes
146162class spell_rog_acrobatic_strikes : public AuraScript
147163{
@@ -719,6 +735,48 @@ class spell_rog_kingsbane : public AuraScript
719735 }
720736};
721737
738+ // 2823 - Deadly Poison
739+ // 8679 - Wound Poison
740+ // 315584 - Instant Poison
741+ // 381664 - Amplifying Poison
742+ class spell_rog_leeching_poison : public AuraScript
743+ {
744+ bool Validate (SpellInfo const * /* spellInfo*/ ) override
745+ {
746+ return ValidateSpellInfo ({ SPELL_ROGUE_LEECHING_POISON_TALENT, SPELL_ROGUE_LEECHING_POISON_AURA });
747+ }
748+
749+ bool Load () override
750+ {
751+ return GetCaster ()->HasAura (SPELL_ROGUE_LEECHING_POISON_TALENT);
752+ }
753+
754+ void HandleOnApply (AuraEffect const * aurEff, AuraEffectHandleModes /* mode*/ )
755+ {
756+ GetTarget ()->CastSpell (GetTarget (), SPELL_ROGUE_LEECHING_POISON_AURA, CastSpellExtraArgsInit{
757+ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
758+ .TriggeringAura = aurEff
759+ });
760+ }
761+
762+ void HandleOnRemove (AuraEffect const * /* aurEff*/ , AuraEffectHandleModes /* mode*/ )
763+ {
764+ bool hasLethalPoisonActive = GetTarget ()->HasAura ([](Aura const * aura) -> bool
765+ {
766+ return IsLethalPoison (aura->GetId ());
767+ });
768+
769+ if (!hasLethalPoisonActive)
770+ GetTarget ()->RemoveAurasDueToSpell (SPELL_ROGUE_LEECHING_POISON_AURA);
771+ }
772+
773+ void Register () override
774+ {
775+ AfterEffectApply += AuraEffectApplyFn (spell_rog_leeching_poison::HandleOnApply, EFFECT_0, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
776+ AfterEffectRemove += AuraEffectRemoveFn (spell_rog_leeching_poison::HandleOnRemove, EFFECT_0, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL);
777+ }
778+ };
779+
722780// 76806 - Mastery: Main Gauche
723781class spell_rog_mastery_main_gauche : public AuraScript
724782{
@@ -1525,6 +1583,7 @@ void AddSC_rogue_spell_scripts()
15251583 RegisterSpellScript (spell_rog_improved_shiv);
15261584 RegisterSpellAndAuraScriptPair (spell_rog_killing_spree, spell_rog_killing_spree_aura);
15271585 RegisterSpellScript (spell_rog_kingsbane);
1586+ RegisterSpellScript (spell_rog_leeching_poison);
15281587 RegisterSpellScript (spell_rog_mastery_main_gauche);
15291588 RegisterSpellScript (spell_rog_night_terrors);
15301589 RegisterSpellScript (spell_rog_pickpocket);
0 commit comments