fix(Scripts/Item): Obsidian Armor & Frostfire Regalia Set (#20453)

This commit is contained in:
avarishd
2024-11-06 06:28:53 +02:00
committed by GitHub
parent 61d67615fd
commit 705b8ab50e
2 changed files with 62 additions and 51 deletions
@@ -0,0 +1,4 @@
-- Obsidian Armor
DELETE FROM `spell_proc_event` WHERE `entry`=27539;
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `procPhase`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
(27539, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 10000);
+20 -13
View File
@@ -1210,6 +1210,7 @@ private:
uint32 _limit; uint32 _limit;
}; };
// 28764 - Adaptive Warding (Frostfire Regalia Set)
enum AdaptiveWarding enum AdaptiveWarding
{ {
SPELL_GEN_ADAPTIVE_WARDING_FIRE = 28765, SPELL_GEN_ADAPTIVE_WARDING_FIRE = 28765,
@@ -1219,7 +1220,6 @@ enum AdaptiveWarding
SPELL_GEN_ADAPTIVE_WARDING_ARCANE = 28770 SPELL_GEN_ADAPTIVE_WARDING_ARCANE = 28770
}; };
// 28764 - Adaptive Warding (Frostfire Regalia Set)
class spell_gen_adaptive_warding : public AuraScript class spell_gen_adaptive_warding : public AuraScript
{ {
PrepareAuraScript(spell_gen_adaptive_warding); PrepareAuraScript(spell_gen_adaptive_warding);
@@ -1245,7 +1245,7 @@ class spell_gen_adaptive_warding : public AuraScript
if (!GetTarget()->GetAuraEffect(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT, SPELLFAMILY_MAGE, 0x10000000, 0x0, 0x0)) if (!GetTarget()->GetAuraEffect(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT, SPELLFAMILY_MAGE, 0x10000000, 0x0, 0x0))
return false; return false;
switch (GetFirstSchoolInMask(eventInfo.GetSchoolMask())) switch (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()))
{ {
case SPELL_SCHOOL_NORMAL: case SPELL_SCHOOL_NORMAL:
case SPELL_SCHOOL_HOLY: case SPELL_SCHOOL_HOLY:
@@ -1253,6 +1253,7 @@ class spell_gen_adaptive_warding : public AuraScript
default: default:
break; break;
} }
return true; return true;
} }
@@ -1261,7 +1262,9 @@ class spell_gen_adaptive_warding : public AuraScript
PreventDefaultAction(); PreventDefaultAction();
uint32 spellId = 0; uint32 spellId = 0;
switch (GetFirstSchoolInMask(eventInfo.GetSchoolMask())) if (Player* player = eventInfo.GetActionTarget()->ToPlayer())
{
switch (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()))
{ {
case SPELL_SCHOOL_FIRE: case SPELL_SCHOOL_FIRE:
spellId = SPELL_GEN_ADAPTIVE_WARDING_FIRE; spellId = SPELL_GEN_ADAPTIVE_WARDING_FIRE;
@@ -1281,7 +1284,9 @@ class spell_gen_adaptive_warding : public AuraScript
default: default:
return; return;
} }
GetTarget()->CastSpell(GetTarget(), spellId, true, nullptr, aurEff);
player->CastSpell(player, spellId, true, nullptr, aurEff);
}
} }
void Register() override void Register() override
@@ -1564,6 +1569,7 @@ class spell_gen_nightmare_vine : public SpellScript
} }
}; };
// 27539 - Obsidian Armor
enum ObsidianArmor enum ObsidianArmor
{ {
SPELL_GEN_OBSIDIAN_ARMOR_HOLY = 27536, SPELL_GEN_OBSIDIAN_ARMOR_HOLY = 27536,
@@ -1574,7 +1580,6 @@ enum ObsidianArmor
SPELL_GEN_OBSIDIAN_ARMOR_ARCANE = 27540 SPELL_GEN_OBSIDIAN_ARMOR_ARCANE = 27540
}; };
// 27539 - Obsidian Armor
class spell_gen_obsidian_armor : public AuraScript class spell_gen_obsidian_armor : public AuraScript
{ {
PrepareAuraScript(spell_gen_obsidian_armor); PrepareAuraScript(spell_gen_obsidian_armor);
@@ -1594,23 +1599,23 @@ class spell_gen_obsidian_armor : public AuraScript
bool CheckProc(ProcEventInfo& eventInfo) bool CheckProc(ProcEventInfo& eventInfo)
{ {
if (eventInfo.GetSpellInfo()) if (!eventInfo.GetSpellInfo())
{
return false; return false;
}
if (GetFirstSchoolInMask(eventInfo.GetSchoolMask()) == SPELL_SCHOOL_NORMAL) if (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()) == SPELL_SCHOOL_NORMAL)
return false; return false;
return true; return true;
} }
void OnProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{ {
PreventDefaultAction(); PreventDefaultAction();
if (Player* player = eventInfo.GetActionTarget()->ToPlayer())
{
uint32 spellId = 0; uint32 spellId = 0;
switch (GetFirstSchoolInMask(eventInfo.GetSchoolMask())) switch (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()))
{ {
case SPELL_SCHOOL_HOLY: case SPELL_SCHOOL_HOLY:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_HOLY; spellId = SPELL_GEN_OBSIDIAN_ARMOR_HOLY;
@@ -1633,13 +1638,15 @@ class spell_gen_obsidian_armor : public AuraScript
default: default:
return; return;
} }
GetTarget()->CastSpell(GetTarget(), spellId, true, nullptr, aurEff);
player->CastSpell(player, spellId, true, nullptr, aurEff);
}
} }
void Register() override void Register() override
{ {
DoCheckProc += AuraCheckProcFn(spell_gen_obsidian_armor::CheckProc); DoCheckProc += AuraCheckProcFn(spell_gen_obsidian_armor::CheckProc);
OnEffectProc += AuraEffectProcFn(spell_gen_obsidian_armor::OnProc, EFFECT_0, SPELL_AURA_DUMMY); OnEffectProc += AuraEffectProcFn(spell_gen_obsidian_armor::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
} }
}; };