diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-06-21 16:09:07 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-06-21 16:09:07 +0200 |
commit | f4047ff7dca9864007100fe767d4c716bf29cd0f (patch) | |
tree | c5e8229befd5b7378cca78ea14a331271afdfa11 | |
parent | 2ac777f8ce35aeed2acbd76de4c0df7bf5878fae (diff) |
Core/Alcohol: Drunk players will now properly see drunk-visible units.
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8f1467aa302..d30455b8825 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1459,13 +1459,18 @@ void Player::SetDrunkValue(uint16 newDrunkenValue, uint32 itemId) { uint32 oldDrunkenState = Player::GetDrunkenstateByValue(m_drunk); - if (!newDrunkenValue && !HasAuraType(SPELL_AURA_MOD_FAKE_INEBRIATE)) + // select drunk percent or total SPELL_AURA_MOD_FAKE_INEBRIATE amount, whichever is higher for visibility updates + int32 drunkPercent = newDrunkenValue * 100 / 0xFFFF; + drunkPercent = std::max(drunkPercent, GetTotalAuraModifier(SPELL_AURA_MOD_FAKE_INEBRIATE)); + + if (drunkPercent) + { m_invisibilityDetect.AddFlag(INVISIBILITY_DRUNK); - else + m_invisibilityDetect.SetValue(INVISIBILITY_DRUNK, drunkPercent); + } + else if (!HasAuraType(SPELL_AURA_MOD_FAKE_INEBRIATE) && !newDrunkenValue) m_invisibilityDetect.DelFlag(INVISIBILITY_DRUNK); - m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, int32(newDrunkenValue - m_drunk) / 256); - m_drunk = newDrunkenValue; SetUInt32Value(PLAYER_BYTES_3, (GetUInt32Value(PLAYER_BYTES_3) & 0xFFFF0001) | (m_drunk & 0xFFFE)); |