diff options
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index efb6f525f36..16e31fb645c 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3400,23 +3400,19 @@ void Spell::EffectInebriate() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + if (!unitTarget || !unitTarget->IsPlayer()) return; Player* player = unitTarget->ToPlayer(); - uint8 currentDrunk = player->GetDrunkValue(); - uint8 drunkMod = damage; - if (currentDrunk + drunkMod > 100) - { - currentDrunk = 100; - if (rand_chance() < 25.0f) + + uint8 currentDrunkValue = player->GetDrunkValue(); + uint8 drunkValue = std::clamp<int32>(damage + currentDrunkValue, 0, 100); + if (currentDrunkValue == 100 && currentDrunkValue == drunkValue) + if (roll_chance_f(25.0f)) player->CastSpell(player, 67468, CastSpellExtraArgs() .SetTriggeringSpell(this)); // Drunken Vomit - } - else - currentDrunk += drunkMod; - player->SetDrunkValue(currentDrunk, m_CastItem ? m_CastItem->GetEntry() : 0); + player->SetDrunkValue(drunkValue, m_CastItem ? m_CastItem->GetEntry() : 0); } void Spell::EffectFeedPet() |