Fix being able to remotely give drinks to your fellow man (#3223)

This commit is contained in:
DrSmugleaf
2021-02-16 01:46:14 +01:00
committed by GitHub
parent 43377d42f3
commit 3703ae134b

View File

@@ -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));