mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 03:15:41 +00:00
fix(Scripts/Spells): Windfury Weapon should not consume Flurry stacks. (#7151)
* fix(Scripts/Spells): Windfury Weapon should not consume Flurry stacks. Fixed #6234 * Update src/server/scripts/Spells/spell_shaman.cpp
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1627403306832649400');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=-16257;
|
||||
INSERT INTO `spell_script_names` VALUES
|
||||
(-16257,'spell_sha_flurry_proc');
|
||||
@@ -142,12 +142,26 @@ void DamageInfo::BlockDamage(uint32 amount)
|
||||
m_damage -= amount;
|
||||
}
|
||||
|
||||
ProcEventInfo::ProcEventInfo(Unit* actor, Unit* actionTarget, Unit* procTarget, uint32 typeMask, uint32 spellTypeMask, uint32 spellPhaseMask, uint32 hitMask, Spell* /*spell*/, DamageInfo* damageInfo, HealInfo* healInfo, SpellInfo const* triggeredByAuraSpell, int8 procAuraEffectIndex)
|
||||
ProcEventInfo::ProcEventInfo(Unit* actor, Unit* actionTarget, Unit* procTarget, uint32 typeMask, uint32 spellTypeMask, uint32 spellPhaseMask, uint32 hitMask, Spell* spell, DamageInfo* damageInfo, HealInfo* healInfo, SpellInfo const* triggeredByAuraSpell, int8 procAuraEffectIndex)
|
||||
: _actor(actor), _actionTarget(actionTarget), _procTarget(procTarget), _typeMask(typeMask), _spellTypeMask(spellTypeMask), _spellPhaseMask(spellPhaseMask),
|
||||
_hitMask(hitMask), _damageInfo(damageInfo), _healInfo(healInfo), _triggeredByAuraSpell(triggeredByAuraSpell), _procAuraEffectIndex(procAuraEffectIndex)
|
||||
_hitMask(hitMask), _spell(spell), _damageInfo(damageInfo), _healInfo(healInfo), _triggeredByAuraSpell(triggeredByAuraSpell), _procAuraEffectIndex(procAuraEffectIndex)
|
||||
{
|
||||
}
|
||||
|
||||
SpellInfo const* ProcEventInfo::GetSpellInfo() const
|
||||
{
|
||||
if (_spell)
|
||||
return _spell->GetSpellInfo();
|
||||
|
||||
if (_damageInfo)
|
||||
return _damageInfo->GetSpellInfo();
|
||||
|
||||
if (_healInfo)
|
||||
return _healInfo->GetSpellInfo();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// we can disable this warning for this since it only
|
||||
// causes undefined behavior when passed to the base class constructor
|
||||
#ifdef _MSC_VER
|
||||
|
||||
@@ -955,6 +955,7 @@ private:
|
||||
uint32 _spellPhaseMask;
|
||||
uint32 _hitMask;
|
||||
uint32 _cooldown;
|
||||
Spell* _spell;
|
||||
DamageInfo* _damageInfo;
|
||||
HealInfo* _healInfo;
|
||||
SpellInfo const* const _triggeredByAuraSpell;
|
||||
@@ -969,8 +970,9 @@ public:
|
||||
[[nodiscard]] uint32 GetSpellTypeMask() const { return _spellTypeMask; }
|
||||
[[nodiscard]] uint32 GetSpellPhaseMask() const { return _spellPhaseMask; }
|
||||
[[nodiscard]] uint32 GetHitMask() const { return _hitMask; }
|
||||
[[nodiscard]] SpellInfo const* GetSpellInfo() const { return nullptr; }
|
||||
[[nodiscard]] SpellInfo const* GetSpellInfo() const;
|
||||
[[nodiscard]] SpellSchoolMask GetSchoolMask() const { return SPELL_SCHOOL_MASK_NONE; }
|
||||
[[nodiscard]] Spell* GetProcSpell() const { return _spell; }
|
||||
[[nodiscard]] DamageInfo* GetDamageInfo() const { return _damageInfo; }
|
||||
[[nodiscard]] HealInfo* GetHealInfo() const { return _healInfo; }
|
||||
[[nodiscard]] SpellInfo const* GetTriggerAuraSpell() const { return _triggeredByAuraSpell; }
|
||||
|
||||
@@ -1354,6 +1354,42 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// -16257 - SpellName
|
||||
class spell_sha_flurry_proc : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_sha_flurry_proc() : SpellScriptLoader("spell_sha_flurry_proc") {}
|
||||
|
||||
class spell_sha_flurry_proc_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_sha_flurry_proc_AuraScript);
|
||||
|
||||
bool CheckProc(ProcEventInfo& eventInfo)
|
||||
{
|
||||
// Should not proc from Windfury Attack
|
||||
if (SpellInfo const* spellInfo = eventInfo.GetSpellInfo())
|
||||
{
|
||||
if (spellInfo->SpellFamilyName == SPELLFAMILY_SHAMAN && (spellInfo->SpellFamilyFlags[0] & 0x00800000) != 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_sha_flurry_proc_AuraScript::CheckProc);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_sha_flurry_proc_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_shaman_spell_scripts()
|
||||
{
|
||||
// ours
|
||||
@@ -1387,4 +1423,5 @@ void AddSC_shaman_spell_scripts()
|
||||
new spell_sha_mana_tide_totem();
|
||||
new spell_sha_sentry_totem();
|
||||
new spell_sha_thunderstorm();
|
||||
new spell_sha_flurry_proc();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user