mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-21 07:22:02 -04:00
Core/Spells: Proc handler script converions (#17122)
* Blazing Speed (Mage) * Blessed Recovery (Priest) * Druid Forms Trinket * Idol Of Mutilation * Nature's Guardian (Shaman) * Nether Protection (Warlock) * Piercing Shots and Bonus 4P T9 Hunter * Lightning Shield (Shaman) * Acclimation (DK) * Move DK T10 4P Melee Bonus * Move DK Improved Blood Presence triggered heal (DK) * Rogue T10 2P Bonus * Illumination (Paladin) * Soul Preserver * Death Choice trinket * stack trinket scripts (ToC25 Caster Trinket, Lightning Capacitor, Thunder Capacitor) * Battle Experience (ICC - Gunship) * Blood Reserve (enchant proc) * Darkmoon Card Greatness * Charm of the Amani Witch Doctor * Mana Drain
This commit is contained in:
@@ -30,6 +30,13 @@
|
||||
|
||||
enum DeathKnightSpells
|
||||
{
|
||||
SPELL_DK_ACCLIMATION_HOLY = 50490,
|
||||
SPELL_DK_ACCLIMATION_FIRE = 50362,
|
||||
SPELL_DK_ACCLIMATION_FROST = 50485,
|
||||
SPELL_DK_ACCLIMATION_ARCANE = 50486,
|
||||
SPELL_DK_ACCLIMATION_SHADOW = 50489,
|
||||
SPELL_DK_ACCLIMATION_NATURE = 50488,
|
||||
SPELL_DK_ADVANTAGE_T10_4P_MELEE = 70657,
|
||||
SPELL_DK_ANTI_MAGIC_SHELL_TALENT = 51052,
|
||||
SPELL_DK_BLACK_ICE_R1 = 49140,
|
||||
SPELL_DK_BLOOD_BOIL_TRIGGERED = 65658,
|
||||
@@ -51,6 +58,7 @@ enum DeathKnightSpells
|
||||
SPELL_DK_IMPROVED_BLOOD_PRESENCE_R1 = 50365,
|
||||
SPELL_DK_IMPROVED_FROST_PRESENCE_R1 = 50384,
|
||||
SPELL_DK_IMPROVED_UNHOLY_PRESENCE_R1 = 50391,
|
||||
SPELL_DK_IMPROVED_BLOOD_PRESENCE_HEAL = 50475,
|
||||
SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED = 63611,
|
||||
SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED = 63622,
|
||||
SPELL_DK_ITEM_SIGIL_VENGEFUL_HEART = 64962,
|
||||
@@ -78,6 +86,141 @@ enum Misc
|
||||
NPC_DK_GHOUL = 26125
|
||||
};
|
||||
|
||||
// -49200 - Acclimation
|
||||
class spell_dk_acclimation : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_dk_acclimation() : SpellScriptLoader("spell_dk_acclimation") { }
|
||||
|
||||
class spell_dk_acclimation_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_dk_acclimation_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_HOLY) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_FIRE) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_FROST) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_NATURE) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_SHADOW) ||
|
||||
!sSpellMgr->GetSpellInfo(SPELL_DK_ACCLIMATION_ARCANE))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
{
|
||||
if (eventInfo.GetDamageInfo())
|
||||
{
|
||||
switch (GetFirstSchoolInMask(eventInfo.GetDamageInfo()->GetSchoolMask()))
|
||||
{
|
||||
case SPELL_SCHOOL_HOLY:
|
||||
case SPELL_SCHOOL_FIRE:
|
||||
case SPELL_SCHOOL_NATURE:
|
||||
case SPELL_SCHOOL_FROST:
|
||||
case SPELL_SCHOOL_SHADOW:
|
||||
case SPELL_SCHOOL_ARCANE:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
uint32 triggerspell = 0;
|
||||
|
||||
switch (GetFirstSchoolInMask(eventInfo.GetDamageInfo()->GetSchoolMask()))
|
||||
{
|
||||
case SPELL_SCHOOL_HOLY:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_HOLY;
|
||||
break;
|
||||
case SPELL_SCHOOL_FIRE:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_FIRE;
|
||||
break;
|
||||
case SPELL_SCHOOL_NATURE:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_NATURE;
|
||||
break;
|
||||
case SPELL_SCHOOL_FROST:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_FROST;
|
||||
break;
|
||||
case SPELL_SCHOOL_SHADOW:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_SHADOW;
|
||||
break;
|
||||
case SPELL_SCHOOL_ARCANE:
|
||||
triggerspell = SPELL_DK_ACCLIMATION_ARCANE;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (Unit* target = eventInfo.GetActionTarget())
|
||||
target->CastSpell(target, triggerspell, true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_dk_acclimation_AuraScript::CheckProc);
|
||||
OnEffectProc += AuraEffectProcFn(spell_dk_acclimation_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_dk_acclimation_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 70656 - Advantage (T10 4P Melee Bonus)
|
||||
class spell_dk_advantage_t10_4p : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_dk_advantage_t10_4p() : SpellScriptLoader("spell_dk_advantage_t10_4p") { }
|
||||
|
||||
class spell_dk_advantage_t10_4p_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_dk_advantage_t10_4p_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_DK_ADVANTAGE_T10_4P_MELEE))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
{
|
||||
if (Unit* caster = eventInfo.GetActor())
|
||||
{
|
||||
if (caster->GetTypeId() != TYPEID_PLAYER || caster->getClass() != CLASS_DEATH_KNIGHT)
|
||||
return false;
|
||||
|
||||
for (uint8 i = 0; i < MAX_RUNES; ++i)
|
||||
if (caster->ToPlayer()->GetRuneCooldown(i) == 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_dk_advantage_t10_4p_AuraScript::CheckProc);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_dk_advantage_t10_4p_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 50462 - Anti-Magic Shell (on raid member)
|
||||
class spell_dk_anti_magic_shell_raid : public SpellScriptLoader
|
||||
{
|
||||
@@ -919,6 +1062,52 @@ class spell_dk_improved_blood_presence : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// 63611 - Improved Blood Presence Triggered
|
||||
class spell_dk_improved_blood_presence_triggered : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_dk_improved_blood_presence_triggered() : SpellScriptLoader("spell_dk_improved_blood_presence_triggered") { }
|
||||
|
||||
class spell_dk_improved_blood_presence_triggered_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_dk_improved_blood_presence_triggered_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_DK_IMPROVED_BLOOD_PRESENCE_HEAL))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
{
|
||||
if (eventInfo.GetActor()->GetTypeId() == TYPEID_PLAYER)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
if (DamageInfo* dmgInfo = eventInfo.GetDamageInfo())
|
||||
eventInfo.GetActor()->CastCustomSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_HEAL, SPELLVALUE_BASE_POINT0, CalculatePct(int32(dmgInfo->GetDamage()), aurEff->GetAmount()),
|
||||
eventInfo.GetActor(), true, nullptr, aurEff);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_dk_improved_blood_presence_triggered_AuraScript::CheckProc);
|
||||
OnEffectProc += AuraEffectProcFn(spell_dk_improved_blood_presence_triggered_AuraScript::HandleProc, EFFECT_1, SPELL_AURA_PROC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_dk_improved_blood_presence_triggered_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// -50384 - Improved Frost Presence
|
||||
class spell_dk_improved_frost_presence : public SpellScriptLoader
|
||||
{
|
||||
@@ -2006,6 +2195,8 @@ public:
|
||||
|
||||
void AddSC_deathknight_spell_scripts()
|
||||
{
|
||||
new spell_dk_acclimation();
|
||||
new spell_dk_advantage_t10_4p();
|
||||
new spell_dk_anti_magic_shell_raid();
|
||||
new spell_dk_anti_magic_shell_self();
|
||||
new spell_dk_anti_magic_zone();
|
||||
@@ -2022,6 +2213,7 @@ void AddSC_deathknight_spell_scripts()
|
||||
new spell_dk_ghoul_explode();
|
||||
new spell_dk_icebound_fortitude();
|
||||
new spell_dk_improved_blood_presence();
|
||||
new spell_dk_improved_blood_presence_triggered();
|
||||
new spell_dk_improved_frost_presence();
|
||||
new spell_dk_improved_unholy_presence();
|
||||
new spell_dk_pestilence();
|
||||
|
||||
Reference in New Issue
Block a user