mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Core/Alcohol: Drunk players will now properly see drunk-visible units.
This commit is contained in:
@@ -1459,12 +1459,17 @@ void Player::SetDrunkValue(uint16 newDrunkenValue, uint32 itemId)
|
||||
{
|
||||
uint32 oldDrunkenState = Player::GetDrunkenstateByValue(m_drunk);
|
||||
|
||||
if (!newDrunkenValue && !HasAuraType(SPELL_AURA_MOD_FAKE_INEBRIATE))
|
||||
m_invisibilityDetect.AddFlag(INVISIBILITY_DRUNK);
|
||||
else
|
||||
m_invisibilityDetect.DelFlag(INVISIBILITY_DRUNK);
|
||||
// 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));
|
||||
|
||||
m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, int32(newDrunkenValue - m_drunk) / 256);
|
||||
if (drunkPercent)
|
||||
{
|
||||
m_invisibilityDetect.AddFlag(INVISIBILITY_DRUNK);
|
||||
m_invisibilityDetect.SetValue(INVISIBILITY_DRUNK, drunkPercent);
|
||||
}
|
||||
else if (!HasAuraType(SPELL_AURA_MOD_FAKE_INEBRIATE) && !newDrunkenValue)
|
||||
m_invisibilityDetect.DelFlag(INVISIBILITY_DRUNK);
|
||||
|
||||
m_drunk = newDrunkenValue;
|
||||
SetUInt32Value(PLAYER_BYTES_3, (GetUInt32Value(PLAYER_BYTES_3) & 0xFFFF0001) | (m_drunk & 0xFFFE));
|
||||
|
||||
Reference in New Issue
Block a user