fix(Core/Spells): several improvements to cooldowns (#7559)

- Reworked spell category cooldowns.
- Implemented category cooldowns for pets.
- Properly shows pet spell cooldowns in player's UI.
- Corrected pet spell cooldowns with infinity duration.
- Do not add/remove infinity spell cooldown on aura apply/remove if casted by item.
- Closes #5263
This commit is contained in:
UltraNix 2021-09-13 20:57:48 +02:00 committed by GitHub
parent 7e2e6f8ee8
commit 7406a01ac3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 178 additions and 111 deletions

View file

@ -1451,7 +1451,7 @@ void TriggerBurningPitch(Creature* c)
if (!c->HasSpellCooldown(spellId))
{
c->CastSpell((Unit*)nullptr, spellId, false);
c->_AddCreatureSpellCooldown(spellId, urand(3000, 4000));
c->_AddCreatureSpellCooldown(spellId, 0, urand(3000, 4000));
}
}
@ -1917,7 +1917,7 @@ public:
return;
me->CastSpell((Unit*)nullptr, spellId, true);
me->_AddCreatureSpellCooldown(spellId, 9000);
me->_AddCreatureSpellCooldown(spellId, 0, 9000);
}
bool CanAIAttack(const Unit* /*target*/) const override

View file

@ -304,8 +304,8 @@ public:
case EVENT_SPELL_ROAR:
Talk(EMOTE_ROAR);
me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0);
me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0);
me->_AddCreatureSpellCooldown(SPELL_STAGGERING_ROAR, 0, 0);
me->_AddCreatureSpellCooldown(SPELL_DREADFUL_ROAR, 0, 0);
if (me->GetDisplayId() == DISPLAYID_DEFAULT)
me->CastSpell((Unit*)nullptr, SPELL_STAGGERING_ROAR, false);