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);
+58 -51
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,27 +1262,31 @@ 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())
{ {
case SPELL_SCHOOL_FIRE: switch (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()))
spellId = SPELL_GEN_ADAPTIVE_WARDING_FIRE; {
break; case SPELL_SCHOOL_FIRE:
case SPELL_SCHOOL_NATURE: spellId = SPELL_GEN_ADAPTIVE_WARDING_FIRE;
spellId = SPELL_GEN_ADAPTIVE_WARDING_NATURE; break;
break; case SPELL_SCHOOL_NATURE:
case SPELL_SCHOOL_FROST: spellId = SPELL_GEN_ADAPTIVE_WARDING_NATURE;
spellId = SPELL_GEN_ADAPTIVE_WARDING_FROST; break;
break; case SPELL_SCHOOL_FROST:
case SPELL_SCHOOL_SHADOW: spellId = SPELL_GEN_ADAPTIVE_WARDING_FROST;
spellId = SPELL_GEN_ADAPTIVE_WARDING_SHADOW; break;
break; case SPELL_SCHOOL_SHADOW:
case SPELL_SCHOOL_ARCANE: spellId = SPELL_GEN_ADAPTIVE_WARDING_SHADOW;
spellId = SPELL_GEN_ADAPTIVE_WARDING_ARCANE; break;
break; case SPELL_SCHOOL_ARCANE:
default: spellId = SPELL_GEN_ADAPTIVE_WARDING_ARCANE;
return; break;
default:
return;
}
player->CastSpell(player, spellId, true, nullptr, aurEff);
} }
GetTarget()->CastSpell(GetTarget(), 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,52 +1599,54 @@ 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();
uint32 spellId = 0; if (Player* player = eventInfo.GetActionTarget()->ToPlayer())
switch (GetFirstSchoolInMask(eventInfo.GetSchoolMask()))
{ {
case SPELL_SCHOOL_HOLY: uint32 spellId = 0;
spellId = SPELL_GEN_OBSIDIAN_ARMOR_HOLY; switch (GetFirstSchoolInMask(eventInfo.GetSpellInfo()->GetSchoolMask()))
break; {
case SPELL_SCHOOL_FIRE: case SPELL_SCHOOL_HOLY:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_FIRE; spellId = SPELL_GEN_OBSIDIAN_ARMOR_HOLY;
break; break;
case SPELL_SCHOOL_NATURE: case SPELL_SCHOOL_FIRE:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_NATURE; spellId = SPELL_GEN_OBSIDIAN_ARMOR_FIRE;
break; break;
case SPELL_SCHOOL_FROST: case SPELL_SCHOOL_NATURE:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_FROST; spellId = SPELL_GEN_OBSIDIAN_ARMOR_NATURE;
break; break;
case SPELL_SCHOOL_SHADOW: case SPELL_SCHOOL_FROST:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_SHADOW; spellId = SPELL_GEN_OBSIDIAN_ARMOR_FROST;
break; break;
case SPELL_SCHOOL_ARCANE: case SPELL_SCHOOL_SHADOW:
spellId = SPELL_GEN_OBSIDIAN_ARMOR_ARCANE; spellId = SPELL_GEN_OBSIDIAN_ARMOR_SHADOW;
break; break;
default: case SPELL_SCHOOL_ARCANE:
return; spellId = SPELL_GEN_OBSIDIAN_ARMOR_ARCANE;
break;
default:
return;
}
player->CastSpell(player, spellId, true, nullptr, aurEff);
} }
GetTarget()->CastSpell(GetTarget(), 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);
} }
}; };