# TODO: Add the other mess types
- type: entity
  id: PuddleBase
  abstract: true
  components:
  - type: Transform
    anchored: true
  - type: Sprite
    drawdepth: FloorObjects
  - type: SolutionContainerManager
  - type: Puddle
    spillSound:
      path: /Audio/Effects/Fluids/splat.ogg
    recolor: true
  - type: Clickable
  - type: Evaporation
  - type: Slippery
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.4,-0.4,0.4,0.4"
      layer:
      - SmallImpassable
      mask:
      - SmallImpassable
      hard: false
  - type: Appearance
    visuals:
    - type: PuddleVisualizer
      recolor: true

- type: entity
  name: puddle
  id: PuddleGeneric
  parent: PuddleSmear

- type: entity
  name: gibblets
  id: PuddleGibblet
  parent: PuddleBase
  description: Gross.
  components:
  - type: Sprite
    sprite: Fluids/gibblet.rsi # Placeholder
    state: gibblet-0
    netsync: false
  - type: Puddle
  - type: SolutionContainerManager
    solutions:
      puddle:
        reagents:
        - ReagentId: Water
          Quantity: 10
  - type: Appearance
    visuals:
    - type: PuddleVisualizer

- type: entity
  name: puddle
  id: PuddleSmear
  parent: PuddleBase
  description: A puddle of liquid.
  components:
  - type: Sprite
    sprite: Fluids/smear.rsi # Placeholder
    state: smear-0
    netsync: false
  - type: Puddle
  - type: Appearance
    visuals:
    - type: PuddleVisualizer
      recolor: true

- type: entity
  name: puddle
  id: PuddleSplatter
  parent: PuddleBase
  description: A puddle of liquid.
  components:
  - type: Sprite
    sprite: Fluids/splatter.rsi # Placeholder
    state: splatter-0
    netsync: false
  - type: Puddle
  - type: Appearance
    visuals:
    - type: PuddleVisualizer

- type: entity
  id: PuddleBlood
  name: blood
  description: This can't be a good sign.
  parent: PuddleBase
  components:
  - type: Sprite
    sprite: Fluids/splatter.rsi # Placeholder
    state: splatter-0
    netsync: false
  - type: Puddle
    slipThreshold: 20
    overflowVolume: 50
    opacityModifier: 8
  - type: Evaporation
    evaporateTime: 400 # very slow
  - type: Appearance
    visuals:
    - type: PuddleVisualizer
      recolor: true

- type: entity
  name: vomit
  id: PuddleVomit
  parent: PuddleBase
  description: Gross.
  components:
  - type: Sprite
    sprite: Fluids/vomit.rsi
    state: vomit-0
    netsync: false
  - type: Puddle
  - type: SolutionContainerManager
    solutions:
      puddle:
        reagents:
        - ReagentId: Nutriment
          Quantity: 5
        - ReagentId: Water
          Quantity: 5
  - type: Appearance
    visuals:
    - type: PuddleVisualizer

- type: entity
  name: toxins vomit
  id: PuddleVomitToxin
  parent: PuddleVomit
  description: You probably don't want to get too close to this.
  components:
  - type: Sprite
    sprite: Fluids/vomit_toxin.rsi
    state: vomit_toxin-0
    netsync: false
  - type: Puddle
  - type: SolutionContainerManager
    solutions:
      puddle:
        reagents:
        - ReagentId: Toxin
          Quantity: 5
        - ReagentId: Water
          Quantity: 5
  - type: Appearance
    visuals:
    - type: PuddleVisualizer

- type: entity
  name: writing
  id: PuddleWriting
  parent: PuddleBase
  description: A bit of liquid.
  components:
  - type: Sprite
    sprite: Fluids/writing.rsi # Placeholder
    state: writing-0
    netsync: false
  - type: Puddle
    evaporateTime: 10
  - type: Appearance
    visuals:
    - type: PuddleVisualizer

