fix(Scripts/Item): Obsidian Armor & Frostfire Regalia Set (#20453)
This commit is contained in:
@@ -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);
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user