Round 4 of Doafter fixes (#14476)
This commit is contained in:
@@ -35,6 +35,7 @@ public sealed class MoppingSystem : SharedMoppingSystem
|
|||||||
base.Initialize();
|
base.Initialize();
|
||||||
SubscribeLocalEvent<AbsorbentComponent, ComponentInit>(OnAbsorbentInit);
|
SubscribeLocalEvent<AbsorbentComponent, ComponentInit>(OnAbsorbentInit);
|
||||||
SubscribeLocalEvent<AbsorbentComponent, AfterInteractEvent>(OnAfterInteract);
|
SubscribeLocalEvent<AbsorbentComponent, AfterInteractEvent>(OnAfterInteract);
|
||||||
|
SubscribeLocalEvent<AbsorbentComponent, SolutionChangedEvent>(OnAbsorbentSolutionChange);
|
||||||
SubscribeLocalEvent<AbsorbentComponent, DoAfterEvent<AbsorbantData>>(OnDoAfter);
|
SubscribeLocalEvent<AbsorbentComponent, DoAfterEvent<AbsorbantData>>(OnDoAfter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -267,8 +267,8 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
var doAfterEventArgs = new DoAfterEventArgs(user, drink.ForceDrink ? drink.ForceFeedDelay : drink.Delay,
|
var doAfterEventArgs = new DoAfterEventArgs(user, drink.ForceDrink ? drink.ForceFeedDelay : drink.Delay,
|
||||||
target: target, used: item)
|
target: target, used: item)
|
||||||
{
|
{
|
||||||
RaiseOnTarget = drink.ForceDrink,
|
RaiseOnTarget = user != target,
|
||||||
RaiseOnUser = !drink.ForceDrink,
|
RaiseOnUser = false,
|
||||||
BreakOnUserMove = drink.ForceDrink,
|
BreakOnUserMove = drink.ForceDrink,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnStun = true,
|
BreakOnStun = true,
|
||||||
@@ -295,17 +295,17 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Handled || args.Cancelled || component.Deleted)
|
if (args.Handled || component.Deleted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!TryComp<BodyComponent>(args.Args.Target, out var body))
|
if (!TryComp<BodyComponent>(args.Args.Target, out var body))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
component.Drinking = false;
|
||||||
|
|
||||||
var transferAmount = FixedPoint2.Min(component.TransferAmount, args.AdditionalData.DrinkSolution.Volume);
|
var transferAmount = FixedPoint2.Min(component.TransferAmount, args.AdditionalData.DrinkSolution.Volume);
|
||||||
var drained = _solutionContainerSystem.Drain(uid, args.AdditionalData.DrinkSolution, transferAmount);
|
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))
|
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);
|
_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
|
//TODO: Grab the stomach UIDs somehow without using Owner
|
||||||
_stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, drained, firstStomach.Value.Comp);
|
_stomachSystem.TryTransferSolution(firstStomach.Value.Comp.Owner, drained, firstStomach.Value.Comp);
|
||||||
|
|
||||||
component.Drinking = false;
|
|
||||||
component.ForceDrink = false;
|
component.ForceDrink = false;
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
var doAfterEventArgs = new DoAfterEventArgs(user, foodComp.ForceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, target: target, used: food)
|
var doAfterEventArgs = new DoAfterEventArgs(user, foodComp.ForceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, target: target, used: food)
|
||||||
{
|
{
|
||||||
RaiseOnTarget = foodComp.ForceFeed,
|
RaiseOnTarget = foodComp.ForceFeed,
|
||||||
RaiseOnUser = !foodComp.ForceFeed,
|
RaiseOnUser = false, //causes a crash if mice eat if true
|
||||||
BreakOnUserMove = foodComp.ForceFeed,
|
BreakOnUserMove = foodComp.ForceFeed,
|
||||||
BreakOnDamage = true,
|
BreakOnDamage = true,
|
||||||
BreakOnStun = true,
|
BreakOnStun = true,
|
||||||
@@ -160,7 +160,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Cancelled || args.Handled || component.Deleted || args.Args.Target == null)
|
if (args.Handled || component.Deleted || args.Args.Target == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!TryComp<BodyComponent>(args.Args.Target.Value, out var body))
|
if (!TryComp<BodyComponent>(args.Args.Target.Value, out var body))
|
||||||
@@ -202,6 +202,7 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
|
|
||||||
// log successful force feed
|
// log successful force feed
|
||||||
_adminLogger.Add(LogType.ForceFeed, LogImpact.Medium, $"{ToPrettyString(uid):user} forced {ToPrettyString(args.Args.User):target} to eat {ToPrettyString(uid):food}");
|
_adminLogger.Add(LogType.ForceFeed, LogImpact.Medium, $"{ToPrettyString(uid):user} forced {ToPrettyString(args.Args.User):target} to eat {ToPrettyString(uid):food}");
|
||||||
|
component.ForceFeed = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user