fix(Scripts/Spells): add warrior heroic strike daze bonus damage (#21650)
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` IN (29707, 30324, 47449, 47450) AND `ScriptName` = 'spell_warr_heroic_strike';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(29707, 'spell_warr_heroic_strike'),
|
||||||
|
(30324, 'spell_warr_heroic_strike'),
|
||||||
|
(47449, 'spell_warr_heroic_strike'),
|
||||||
|
(47450, 'spell_warr_heroic_strike');
|
||||||
@@ -899,6 +899,74 @@ class spell_warr_retaliation : public AuraScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 29707 - Heroic Strike (Rank 10)
|
||||||
|
// 30324 - Heroic Strike (Rank 11)
|
||||||
|
// 47449 - Heroic Strike (Rank 12)
|
||||||
|
// 47450 - Heroic Strike (Rank 13)
|
||||||
|
enum DazeSpells
|
||||||
|
{
|
||||||
|
ICON_GENERIC_DAZE = 15,
|
||||||
|
SPELL_GENERIC_AFTERMATH = 18118,
|
||||||
|
};
|
||||||
|
|
||||||
|
class spell_warr_heroic_strike : public SpellScript
|
||||||
|
{
|
||||||
|
PrepareSpellScript(spell_warr_heroic_strike);
|
||||||
|
|
||||||
|
void HandleOnHit()
|
||||||
|
{
|
||||||
|
Unit* target = GetHitUnit();
|
||||||
|
if (!target)
|
||||||
|
return;
|
||||||
|
std::list<AuraEffect*> AuraEffectList = target->GetAuraEffectsByType(SPELL_AURA_MOD_DECREASE_SPEED);
|
||||||
|
bool bonusDamage = false;
|
||||||
|
for (AuraEffect* eff : AuraEffectList)
|
||||||
|
{
|
||||||
|
const SpellInfo* spellInfo = eff->GetSpellInfo();
|
||||||
|
if (!spellInfo)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Warrior Spells: Piercing Howl or Dazed (29703)
|
||||||
|
if (spellInfo->SpellFamilyName == SPELLFAMILY_WARRIOR && (spellInfo->SpellFamilyFlags[1] & (0x20 | 0x200000)))
|
||||||
|
{
|
||||||
|
bonusDamage = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generic Daze: icon 15 with mechanic daze or snare
|
||||||
|
if ((spellInfo->SpellIconID == ICON_GENERIC_DAZE)
|
||||||
|
&& ((spellInfo->Mechanic == MECHANIC_DAZE || spellInfo->HasEffectMechanic(MECHANIC_DAZE))
|
||||||
|
|| (spellInfo->Mechanic == MECHANIC_SNARE || spellInfo->HasEffectMechanic(MECHANIC_SNARE))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
bonusDamage = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((spellInfo->Id == SPELL_GENERIC_AFTERMATH)
|
||||||
|
|| (spellInfo->SpellFamilyName == SPELLFAMILY_MAGE && (spellInfo->SpellFamilyFlags[1] & 0x40)) // Blast Wave
|
||||||
|
|| (spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN && (spellInfo->SpellFamilyFlags[2] & 0x4000)) // Avenger's Shield
|
||||||
|
)
|
||||||
|
{
|
||||||
|
bonusDamage = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bonusDamage)
|
||||||
|
{
|
||||||
|
int32 damage = GetHitDamage();
|
||||||
|
AddPct(damage, 35); // "Causes ${0.35*$m1} additional damage against Dazed targets."
|
||||||
|
SetHitDamage(damage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnHit += SpellHitFn(spell_warr_heroic_strike::HandleOnHit);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_warrior_spell_scripts()
|
void AddSC_warrior_spell_scripts()
|
||||||
{
|
{
|
||||||
RegisterSpellScript(spell_warr_mocking_blow);
|
RegisterSpellScript(spell_warr_mocking_blow);
|
||||||
@@ -925,4 +993,5 @@ void AddSC_warrior_spell_scripts()
|
|||||||
RegisterSpellScript(spell_warr_vigilance);
|
RegisterSpellScript(spell_warr_vigilance);
|
||||||
RegisterSpellScript(spell_warr_vigilance_trigger);
|
RegisterSpellScript(spell_warr_vigilance_trigger);
|
||||||
RegisterSpellScript(spell_warr_t3_prot_8p_bonus);
|
RegisterSpellScript(spell_warr_t3_prot_8p_bonus);
|
||||||
|
RegisterSpellScript(spell_warr_heroic_strike);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user