]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Round 4 of Doafter fixes (#14476)
authorkeronshb <54602815+keronshb@users.noreply.github.com>
Thu, 9 Mar 2023 08:45:19 +0000 (03:45 -0500)
committerGitHub <noreply@github.com>
Thu, 9 Mar 2023 08:45:19 +0000 (01:45 -0700)
Content.Server/Fluids/EntitySystems/MoppingSystem.cs
Content.Server/Nutrition/EntitySystems/DrinkSystem.cs
Content.Server/Nutrition/EntitySystems/FoodSystem.cs

index eb98c103df7527857fd49e227e75c5645da52b07..4f7304ee6c4729349d2382aa5b5b3cdb4b487abc 100644 (file)
@@ -35,6 +35,7 @@ public sealed class MoppingSystem : SharedMoppingSystem
         base.Initialize();
         SubscribeLocalEvent<AbsorbentComponent, ComponentInit>(OnAbsorbentInit);
         SubscribeLocalEvent<AbsorbentComponent, AfterInteractEvent>(OnAfterInteract);
+        SubscribeLocalEvent<AbsorbentComponent, SolutionChangedEvent>(OnAbsorbentSolutionChange);
         SubscribeLocalEvent<AbsorbentComponent, DoAfterEvent<AbsorbantData>>(OnDoAfter);
     }
 
index b611ccdf7bf7f3f29eef6a68418b5048b0c8699f..678875d61e2dab5ffdc8a7043c8499f445402b2c 100644 (file)
@@ -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<BodyComponent>(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<StomachComponent>(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;
         }
index e0e2a5f0f4b84845849515a08587ab58a467127b..f7f9358ceead0cd2f8b032dfb5f115f6fa52d8b7 100644 (file)
@@ -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<BodyComponent>(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
             {