From 3703ae134bd8d6fb914bc511e73279444d63ab89 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Tue, 16 Feb 2021 01:46:14 +0100 Subject: [PATCH] Fix being able to remotely give drinks to your fellow man (#3223) --- .../Components/Nutrition/DrinkComponent.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs index 4e4fa9870e..db16790c8f 100644 --- a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs @@ -11,6 +11,7 @@ using Content.Shared.GameObjects.Components.Nutrition; using Content.Shared.GameObjects.EntitySystems; using Content.Shared.Interfaces; using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -141,7 +142,7 @@ namespace Content.Server.GameObjects.Components.Nutrition return true; } - return TryUseDrink(args.User); + return TryUseDrink(args.User, args.User); } //Force feeding a drink to someone. @@ -152,7 +153,7 @@ namespace Content.Server.GameObjects.Components.Nutrition return false; } - return TryUseDrink(eventArgs.Target, true); + return TryUseDrink(eventArgs.User, eventArgs.Target, true); } public void Examine(FormattedMessage message, bool inDetailsRange) @@ -166,7 +167,7 @@ namespace Content.Server.GameObjects.Components.Nutrition message.AddMarkup(Loc.GetString("[color={0}]{1}[/color]", color, openedText)); } - private bool TryUseDrink(IEntity target, bool forced = false) + private bool TryUseDrink(IEntity user, IEntity target, bool forced = false) { if (!Opened) { @@ -193,6 +194,13 @@ namespace Content.Server.GameObjects.Components.Nutrition return false; } + + if (user != target && + !user.InRangeUnobstructed(target, popup: true)) + { + return false; + } + var transferAmount = ReagentUnit.Min(TransferAmount, interactions.DrainAvailable); var drain = interactions.Drain(transferAmount); var firstStomach = stomachs.FirstOrDefault(stomach => stomach.CanTransferSolution(drain));