diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs index 296b397146..880a4395b4 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs @@ -69,7 +69,8 @@ public sealed partial class PuddleSystem if (totalSplit == 0) return; - args.Handled = true; + // Optionally allow further melee handling occur + args.Handled = entity.Comp.PreventMelee; // First update the hit count so anything that is not reactive wont count towards the total! foreach (var hit in args.HitEntities) diff --git a/Content.Shared/Fluids/Components/SpillableComponent.cs b/Content.Shared/Fluids/Components/SpillableComponent.cs index cc57dbf2b6..d320be7dac 100644 --- a/Content.Shared/Fluids/Components/SpillableComponent.cs +++ b/Content.Shared/Fluids/Components/SpillableComponent.cs @@ -28,4 +28,12 @@ public sealed partial class SpillableComponent : Component /// [DataField] public bool SpillWhenThrown = true; + + /// + /// If true, melee processing will stop if any reagent is transferred. + /// Otherwise, melee processing keeps occuring allowing both reagent + /// transfer and melee damage to happen. + /// + [DataField] + public bool PreventMelee = true; } diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index a1c36e140d..49287d4a2a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -26,6 +26,7 @@ - type: Spillable solution: absorbed spillWhenThrown: false + preventMelee: false - type: DrainableSolution solution: absorbed - type: Wieldable @@ -84,6 +85,7 @@ - type: Spillable solution: absorbed spillWhenThrown: false + preventMelee: false - type: DrainableSolution solution: absorbed - type: Wieldable