diff options
| author | megamage <none@none> | 2009-03-02 16:59:14 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-03-02 16:59:14 -0600 |
| commit | d7d7c3562a9e33f0d655b86572e7a73e0ee384a6 (patch) | |
| tree | 07b0541f811a95011b0131824d13309f29a69f71 /src/game/SpellAuras.cpp | |
| parent | c6fc7f7bca19eb9acf52a6abac55df84e66ade08 (diff) | |
[7364] Really implenent server-side anti-cheating cooldown check for spells with SPELL_ATTR_DISABLED_WHILE_ACTIVE. Author: VladimirMangos
Move apply cooldown for like spells to aura apply (GO registering for owner in GO summon spell case)
Store "infinity" cooldown for like spells, ignore it at save and reapply it at aura loading.
Note: one problem still exist for like spells: at loading/far teleport spell icon lost diabled state at client.
Need sedn some unknown data in SendInitialPacketsBeforeAddToMap or SendInitialPacketsAfterAddToMap for restore it state.
--HG--
branch : trunk
Diffstat (limited to 'src/game/SpellAuras.cpp')
| -rw-r--r-- | src/game/SpellAuras.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index eb5157b28c0..94ecf0b198d 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -786,6 +786,16 @@ void Aura::_AddAura() Unit* caster = GetCaster(); + // set infinity cooldown state for spells + if(caster && caster->GetTypeId() == TYPEID_PLAYER) + { + if (m_spellProto->Attributes & SPELL_ATTR_DISABLED_WHILE_ACTIVE) + { + Item* castItem = m_castItemGuid ? ((Player*)caster)->GetItemByGuid(m_castItemGuid) : NULL; + ((Player*)caster)->AddSpellAndCategoryCooldowns(m_spellProto,castItem ? castItem->GetEntry() : 0, NULL,true); + } + } + // passive auras (except totem auras) do not get placed in the slots // area auras with SPELL_AURA_NONE are not shown on target // all further code applies only to active spells |
