Drunk.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using Content.Shared.Drunk;
  2. using Content.Shared.EntityEffects;
  3. using Robust.Shared.Prototypes;
  4. namespace Content.Server.EntityEffects.Effects;
  5. public sealed partial class Drunk : EntityEffect
  6. {
  7. /// <summary>
  8. /// BoozePower is how long each metabolism cycle will make the drunk effect last for.
  9. /// </summary>
  10. [DataField]
  11. public float BoozePower = 3f;
  12. /// <summary>
  13. /// Whether speech should be slurred.
  14. /// </summary>
  15. [DataField]
  16. public bool SlurSpeech = true;
  17. protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
  18. => Loc.GetString("reagent-effect-guidebook-drunk", ("chance", Probability));
  19. public override void Effect(EntityEffectBaseArgs args)
  20. {
  21. var boozePower = BoozePower;
  22. if (args is EntityEffectReagentArgs reagentArgs) {
  23. boozePower *= reagentArgs.Scale.Float();
  24. }
  25. var drunkSys = args.EntityManager.EntitySysManager.GetEntitySystem<SharedDrunkSystem>();
  26. drunkSys.TryApplyDrunkenness(args.TargetEntity, boozePower, SlurSpeech);
  27. }
  28. }