using Content.Shared.Drunk; using Content.Shared.EntityEffects; using Robust.Shared.Prototypes; namespace Content.Server.EntityEffects.Effects; public sealed partial class Drunk : EntityEffect { /// /// BoozePower is how long each metabolism cycle will make the drunk effect last for. /// [DataField] public float BoozePower = 3f; /// /// Whether speech should be slurred. /// [DataField] public bool SlurSpeech = true; protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => Loc.GetString("reagent-effect-guidebook-drunk", ("chance", Probability)); public override void Effect(EntityEffectBaseArgs args) { var boozePower = BoozePower; if (args is EntityEffectReagentArgs reagentArgs) { boozePower *= reagentArgs.Scale.Float(); } var drunkSys = args.EntityManager.EntitySysManager.GetEntitySystem(); drunkSys.TryApplyDrunkenness(args.TargetEntity, boozePower, SlurSpeech); } }