mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-15 18:10:26 +00:00
fix(Scripts/Spells): add warrior heroic strike daze bonus damage (#21650)
This commit is contained in:
@@ -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()
|
||||
{
|
||||
RegisterSpellScript(spell_warr_mocking_blow);
|
||||
@@ -925,4 +993,5 @@ void AddSC_warrior_spell_scripts()
|
||||
RegisterSpellScript(spell_warr_vigilance);
|
||||
RegisterSpellScript(spell_warr_vigilance_trigger);
|
||||
RegisterSpellScript(spell_warr_t3_prot_8p_bonus);
|
||||
RegisterSpellScript(spell_warr_heroic_strike);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user