| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using Content.Shared.Speech.EntitySystems;
- using Content.Shared.StatusEffect;
- using Content.Shared.Traits.Assorted;
- namespace Content.Shared.Drunk;
- public abstract class SharedDrunkSystem : EntitySystem
- {
- [ValidatePrototypeId<StatusEffectPrototype>]
- public const string DrunkKey = "Drunk";
- [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!;
- [Dependency] private readonly SharedSlurredSystem _slurredSystem = default!;
- public void TryApplyDrunkenness(EntityUid uid, float boozePower, bool applySlur = true,
- StatusEffectsComponent? status = null)
- {
- if (!Resolve(uid, ref status, false))
- return;
- if (TryComp<LightweightDrunkComponent>(uid, out var trait))
- boozePower *= trait.BoozeStrengthMultiplier;
- if (applySlur)
- {
- _slurredSystem.DoSlur(uid, TimeSpan.FromSeconds(boozePower), status);
- }
- if (!_statusEffectsSystem.HasStatusEffect(uid, DrunkKey, status))
- {
- _statusEffectsSystem.TryAddStatusEffect<DrunkComponent>(uid, DrunkKey, TimeSpan.FromSeconds(boozePower), true, status);
- }
- else
- {
- _statusEffectsSystem.TryAddTime(uid, DrunkKey, TimeSpan.FromSeconds(boozePower), status);
- }
- }
- public void TryRemoveDrunkenness(EntityUid uid)
- {
- _statusEffectsSystem.TryRemoveStatusEffect(uid, DrunkKey);
- }
- public void TryRemoveDrunkenessTime(EntityUid uid, double timeRemoved)
- {
- _statusEffectsSystem.TryRemoveTime(uid, DrunkKey, TimeSpan.FromSeconds(timeRemoved));
- }
- }
|