diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index a052ae1ad4b..b8a52152202 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -430,7 +430,8 @@ enum MountFlags enum SpellCategoryFlags { SPELL_CATEGORY_FLAG_COOLDOWN_SCALES_WITH_WEAPON_SPEED = 0x01, // unused - SPELL_CATEGORY_FLAG_COOLDOWN_STARTS_ON_EVENT = 0x04 + SPELL_CATEGORY_FLAG_COOLDOWN_STARTS_ON_EVENT = 0x04, + SPELL_CATEGORY_FLAG_COOLDOWN_EXPIRES_AT_MIDNIGHT = 0x08 }; enum TotemCategoryType diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 83c305b8973..5bbf0cd6263 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22289,6 +22289,14 @@ void Player::AddSpellAndCategoryCooldowns(SpellInfo const* spellInfo, uint32 ite if (catrec > 0) catrec += categoryModifier; } + + SpellCategoryEntry const* categoryEntry = sSpellCategoryStore.LookupEntry(cat); + ASSERT(categoryEntry); + if (categoryEntry->Flags & SPELL_CATEGORY_FLAG_COOLDOWN_EXPIRES_AT_MIDNIGHT) + { + struct tm date = *localtime(&curTime); + catrec = catrec * DAY - (date.tm_hour * HOUR + date.tm_min * MINUTE + date.tm_sec) * IN_MILLISECONDS; + } } // replace negative cooldowns by 0 |