--- /dev/null
+using Content.Server.Fluids.EntitySystems;
+using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Reaction;
+using Content.Shared.Chemistry.Reagent;
+using Content.Shared.FixedPoint;
+using JetBrains.Annotations;
+using Robust.Shared.Map;
+
+namespace Content.Server.Chemistry.TileReactions
+{
+ [UsedImplicitly]
+ [DataDefinition]
+ public sealed partial class SpillIfPuddlePresentTileReaction : ITileReaction
+ {
+ public FixedPoint2 TileReact(TileRef tile,
+ ReagentPrototype reagent,
+ FixedPoint2 reactVolume,
+ IEntityManager entityManager,
+ List<ReagentData>? data)
+ {
+ var spillSystem = entityManager.System<PuddleSystem>();
+ if (!spillSystem.TryGetPuddle(tile, out _))
+ return FixedPoint2.Zero;
+
+ return spillSystem.TrySpillAt(tile, new Solution(reagent.ID, reactVolume, data), out _, sound: false, tileReact: false)
+ ? reactVolume
+ : FixedPoint2.Zero;
+ }
+ }
+}
--- /dev/null
+using Content.Server.Fluids.EntitySystems;
+using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Reaction;
+using Content.Shared.Chemistry.Reagent;
+using Content.Shared.FixedPoint;
+using JetBrains.Annotations;
+using Robust.Shared.Map;
+
+namespace Content.Server.Chemistry.TileReactions
+{
+ [UsedImplicitly]
+ [DataDefinition]
+ public sealed partial class SpillTileReaction : ITileReaction
+ {
+ public FixedPoint2 TileReact(TileRef tile,
+ ReagentPrototype reagent,
+ FixedPoint2 reactVolume,
+ IEntityManager entityManager,
+ List<ReagentData>? data)
+ {
+ var spillSystem = entityManager.System<PuddleSystem>();
+
+ return spillSystem.TrySpillAt(tile, new Solution(reagent.ID, reactVolume, data), out _, sound: false, tileReact: false)
+ ? reactVolume
+ : FixedPoint2.Zero;
+ }
+ }
+}
amount: 1
tileReactions:
- !type:ExtinguishTileReaction { }
+ - !type:SpillIfPuddlePresentTileReaction { }
- type: reagent
id: BaseSoda
recognizable: true
physicalDesc: reagent-physical-desc-sticky
viscosity: 0.55 #Start using syrup to attach your remote recievers to your microwaves!
+ tileReactions:
+ - !type:SpillTileReaction
metabolisms:
Food:
# 12 diona blood for 1 unit of syrup, this stuff better be worthwhile.
recognizable: true
physicalDesc: reagent-physical-desc-viscous
viscosity: 0.25
+ tileReactions:
+ - !type:SpillTileReaction
metabolisms:
Food:
# Delicious!
recognizable: true
physicalDesc: reagent-physical-desc-sticky
viscosity: 0.10
+ tileReactions:
+ - !type:SpillTileReaction
metabolisms:
Food:
# Sweet!
recognizable: true
boilingPoint: 290.0 # Glycerin
meltingPoint: 18.2
+ tileReactions:
+ - !type:SpillTileReaction
friction: 0.0
- type: reagent
color: "#ffffff"
boilingPoint: 250.0
meltingPoint: 380.0
+ tileReactions:
+ - !type:SpillTileReaction
viscosity: 0.5
reactiveEffects:
Acidic: