aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Spells/SpellEffects.cpp18
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()