diff options
| author | Ovahlord <dreadkiller@gmx.de> | 2024-04-27 13:43:50 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-27 13:43:50 +0200 |
| commit | d60b4e5b199d56477010941fc1d3aff9eb7064a2 (patch) | |
| tree | 6021bf8108e130d53c39bf81568e112d2d7fe8b5 /src/server/game/Entities/Player | |
| parent | 072e6ff9cc0c21b1b90ab5abd291187a1681a618 (diff) | |
Core/Auras: implemented PROC_FLAG_HEARTBEAT and moved food/drink emote mechanic into heartbeat handling (#29943)
* also fixed an false assumption that only one of the food emotes can be played. They can in fact be both done at the same time.
Diffstat (limited to 'src/server/game/Entities/Player')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 31 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 |
2 files changed, 0 insertions, 32 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a1383c2ee44..0d59ce555ac 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -182,7 +182,6 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_regenInterruptTimestamp = GameTime::Now(); m_regenTimer = 0; m_regenTimerCount = 0; - m_foodEmoteTimerCount = 0; m_weaponChangeTimer = 0; m_zoneUpdateId = uint32(-1); @@ -1624,7 +1623,6 @@ bool Player::IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo void Player::RegenerateAll() { m_regenTimerCount += m_regenTimer; - m_foodEmoteTimerCount += m_regenTimer; for (Powers power = POWER_MANA; power < MAX_POWERS; power = Powers(power + 1)) if (power != POWER_RUNES) @@ -1661,35 +1659,6 @@ void Player::RegenerateAll() } m_regenTimer = 0; - - // Handles the emotes for drinking and eating. - // According to sniffs there is a background timer going on that repeats independed from the time window where the aura applies. - // That's why we dont need to reset the timer on apply. In sniffs I have seen that the first call for the spell visual is totally random, then after - // 5 seconds over and over again which confirms my theory that we have a independed timer. - if (m_foodEmoteTimerCount >= 5000) - { - auto findInterruptibleEffect = [](AuraEffect const* aurEff) - { - return aurEff->GetSpellInfo()->HasAuraInterruptFlag(SpellAuraInterruptFlags::Standing); - }; - - // Food emote comes above drinking emote if we have to decide (mage regen food for example) - AuraEffectList const& ModRegenAuras = GetAuraEffectsByType(SPELL_AURA_MOD_REGEN); - auto itr = std::find_if(ModRegenAuras.cbegin(), ModRegenAuras.cend(), findInterruptibleEffect); - if (itr != ModRegenAuras.end()) - { - SendPlaySpellVisualKit(SPELL_VISUAL_KIT_FOOD, 0, 0); - } - else - { - AuraEffectList const& ModPowerRegenAuras = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN); - itr = std::find_if(ModPowerRegenAuras.cbegin(), ModPowerRegenAuras.cend(), findInterruptibleEffect); - if (itr != ModPowerRegenAuras.end()) - SendPlaySpellVisualKit(SPELL_VISUAL_KIT_DRINK, 0, 0); - } - - m_foodEmoteTimerCount -= 5000; - } } void Player::Regenerate(Powers power) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 2eee223ef21..5b8d4ed20e0 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2884,7 +2884,6 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> GuidList WhisperList; TimePoint m_regenInterruptTimestamp; uint32 m_regenTimerCount; - uint32 m_foodEmoteTimerCount; std::array<float, MAX_POWERS_PER_CLASS> m_powerFraction; uint32 m_contestedPvPTimer; |
