From: keronshb <54602815+keronshb@users.noreply.github.com> Date: Thu, 9 Mar 2023 08:45:19 +0000 (-0500) Subject: Round 4 of Doafter fixes (#14476) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=5e8bd137f6515b1e317e42bcb6863653bd2cf761;p=space-station-14.git Round 4 of Doafter fixes (#14476) --- diff --git a/Content.Server/Fluids/EntitySystems/MoppingSystem.cs b/Content.Server/Fluids/EntitySystems/MoppingSystem.cs index eb98c103df..4f7304ee6c 100644 --- a/Content.Server/Fluids/EntitySystems/MoppingSystem.cs +++ b/Content.Server/Fluids/EntitySystems/MoppingSystem.cs @@ -35,6 +35,7 @@ public sealed class MoppingSystem : SharedMoppingSystem base.Initialize(); SubscribeLocalEvent(OnAbsorbentInit); SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnAbsorbentSolutionChange); SubscribeLocalEvent>(OnDoAfter); } diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index b611ccdf7b..678875d61e 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -267,8 +267,8 @@ namespace Content.Server.Nutrition.EntitySystems var doAfterEventArgs = new DoAfterEventArgs(user, drink.ForceDrink ? drink.ForceFeedDelay : drink.Delay, target: target, used: item) { - RaiseOnTarget = drink.ForceDrink, - RaiseOnUser = !drink.ForceDrink, + RaiseOnTarget = user != target, + RaiseOnUser = false, BreakOnUserMove = drink.ForceDrink, BreakOnDamage = true, BreakOnStun = true, @@ -295,17 +295,17 @@ namespace Content.Server.Nutrition.EntitySystems return; } - if (args.Handled || args.Cancelled || component.Deleted) + if (args.Handled || component.Deleted) return; if (!TryComp(args.Args.Target, out var body)) return; + component.Drinking = false; + var transferAmount = FixedPoint2.Min(component.TransferAmount, args.AdditionalData.DrinkSolution.Volume); var drained = _solutionContainerSystem.Drain(uid, args.AdditionalData.DrinkSolution, transferAmount); - //var forceDrink = args.Args.Target.Value != args.Args.User; - if (!_bodySystem.TryGetBodyOrganComponents(args.Args.Target.Value, out var stomachs, body)) { _popupSystem.PopupEntity(component.ForceDrink ? Loc.GetString("drink-component-try-use-drink-cannot-drink-other") : Loc.GetString("drink-component-try-use-drink-had-enough"), args.Args.Target.Value, args.Args.User); @@ -375,7 +375,6 @@ namespace Content.Server.Nutrition.EntitySystems //TODO: Grab the stomach UIDs somehow without using Owner _stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, drained, firstStomach.Value.Comp); - component.Drinking = false; component.ForceDrink = false; args.Handled = true; } diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index e0e2a5f0f4..f7f9358cee 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -134,7 +134,7 @@ namespace Content.Server.Nutrition.EntitySystems var doAfterEventArgs = new DoAfterEventArgs(user, foodComp.ForceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, target: target, used: food) { RaiseOnTarget = foodComp.ForceFeed, - RaiseOnUser = !foodComp.ForceFeed, + RaiseOnUser = false, //causes a crash if mice eat if true BreakOnUserMove = foodComp.ForceFeed, BreakOnDamage = true, BreakOnStun = true, @@ -160,7 +160,7 @@ namespace Content.Server.Nutrition.EntitySystems return; } - if (args.Cancelled || args.Handled || component.Deleted || args.Args.Target == null) + if (args.Handled || component.Deleted || args.Args.Target == null) return; if (!TryComp(args.Args.Target.Value, out var body)) @@ -202,6 +202,7 @@ namespace Content.Server.Nutrition.EntitySystems // log successful force feed _adminLogger.Add(LogType.ForceFeed, LogImpact.Medium, $"{ToPrettyString(uid):user} forced {ToPrettyString(args.Args.User):target} to eat {ToPrettyString(uid):food}"); + component.ForceFeed = false; } else {