- type: entity
  abstract: true
  parent: [ DrinkBaseMaterialPlastic, DrinkBase ]
  id: SprayBottleBase
  components:
  - type: Edible
    edible: Drink
    solution: drink
    transferAmount: 10
    useSound:
      path: /Audio/Effects/spray3.ogg
      params:
        variation: 0.2
  - type: Tag
    tags:
    - Spray
    - Trash
  - type: Sprite
    sprite: Objects/Specific/Janitorial/spray_bottle.rsi
    state: cleaner
  - type: Item
    sprite: Objects/Specific/Janitorial/spray_bottle.rsi
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 100
  - type: UseDelay
  - type: Spray
    solution: drink
    transferAmount: 10
    sprayVelocity: 2
    spraySound:
      path: /Audio/Effects/spray2.ogg
  - type: TrashOnSolutionEmpty
    solution: drink

- type: entity
  parent: [ SprayBottleBase, DrinkVisualsFill ]
  id: SprayBottle
  name: spray bottle
  suffix: Empty
  description: A spray bottle with an unscrewable top.
  components:
  - type: Sprite
    sprite: Objects/Specific/Janitorial/spray_bottle.rsi
    layers:
    - state: cleaner
    - state: cleaner-fill-1
      map: ["enum.SolutionContainerLayers.Fill"]
      visible: false
  - type: SolutionContainerVisuals
    fillBaseName: cleaner-fill-
    inHandsMaxFillLevels: 4

- type: entity
  parent: SprayBottle
  id: MegaSprayBottle
  name: mega spray bottle
  suffix: Empty
  description: A huge spray bottle, capable of unrivaled janitorial power.
  components:
  - type: Sprite
    sprite: Objects/Specific/Janitorial/spray_bottle.rsi
    layers:
    - state: cleaner_large
    - state: cleaner_large-fill-1
      map: ["enum.SolutionContainerLayers.Fill"]
      visible: false
  - type: SolutionContainerVisuals
    maxFillLevels: 7
    fillBaseName: cleaner_large-fill-
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 250
  - type: Spray
    transferAmount: 15
    sprayedPrototype: BigVapor
    sprayVelocity: 3
    sprayDistance: 4.5
    spraySound:
      path: /Audio/Effects/spray2.ogg

- type: entity
  parent: SprayBottle
  id: SprayBottleWater
  name: spray bottle
  suffix: Filled
  components:
  - type: Tag
    tags:
    - Spray
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 100
        reagents:
        - ReagentId: Water
          Quantity: 100

- type: entity
  parent: SprayBottle
  id: SprayBottleSpaceCleaner
  suffix: Space Cleaner
  description: BLAM!-brand non-foaming space cleaner!
  components:
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 100
        reagents:
        - ReagentId: SpaceCleaner
          Quantity: 100
  - type: Label
    currentLabel: space cleaner
  - type: Tag
    tags:
      - Spray

- type: entity
  parent: MegaSprayBottle
  id: MegaSprayBottleSpaceCleaner
  suffix: Space Cleaner
  description: BLAM!-brand non-foaming space cleaner, now in a bigger package for those huge blood puddles!
  components:
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 250
        reagents:
        - ReagentId: SpaceCleaner
          Quantity: 250
  - type: Label
    currentLabel: space cleaner

- type: entity
  parent: SprayBottle
  id: BorgSprayBottle
  name: internal spray jet
  suffix: Filled
  description: A pressurized vessel for spraying reagents, installed directly into a custodial cyborg. Typically filled with space cleaner for dealing with those nasty spills.
  components:
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 200
        reagents:
        - ReagentId: SpaceCleaner
          Quantity: 200

- type: entity
  parent: MegaSprayBottle
  id: BorgMegaSprayBottle
  name: adv. internal spray jet
  suffix: Filled
  description: An upgraded version of the integrated spray bottle, installed directly into a custodial cyborg. This one is capable of creating space cleaner from moisture in the air.
  components:
  - type: SolutionContainerManager
    solutions:
      drink:
        maxVol: 250
        reagents:
        - ReagentId: SpaceCleaner
          Quantity: 250
  - type: SolutionTransfer
    canSend: false # No giving away infinite space cleaner!
  - type: SolutionRegeneration
    solution: drink
    generated:
      reagents:
      - ReagentId: SpaceCleaner
        Quantity: 1

# Vapor
- type: entity
  id: Vapor
  categories: [ HideSpawnMenu ]
  name: "vapor"
  components:
  - type: SolutionContainerManager
    solutions:
      vapor:
        maxVol: 50
  - type: Vapor
    active: true
    transferAmountPercentage: 0.5
  - type: AnimationPlayer
  - type: Sprite
    sprite: Effects/chempuff.rsi
    rotation: 180
    layers:
    - state: chempuff
      map: ["enum.VaporVisualLayers.Base"]
  - type: Physics
    bodyType: Dynamic
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.25,-0.25,0.25,0.25"
        hard: false
        mask:
        - FullTileMask
        - Opaque
        layer:
        - ItemMask
  - type: Appearance
  - type: VaporVisuals

- type: entity
  parent: Vapor
  id: BigVapor
  categories: [ HideSpawnMenu ]
  components:
  - type: Sprite
    sprite: Effects/chempuff.rsi
    rotation: 180
    layers:
    - state: chempuff
      scale: 2, 2
      map: ["enum.VaporVisualLayers.Base"]
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeAabb
          bounds: "-0.6,-0.6,0.6,0.6"
        hard: false
        mask:
        - FullTileMask
        - Opaque

- type: entity
  parent: Vapor
  id: FlowerVapor
  categories: [ HideSpawnMenu ]
  components:
  - type: Sprite
    sprite: Effects/extinguisherSpray.rsi
    layers:
    - state: extinguish
      map: [ "enum.VaporVisualLayers.Base" ]
  - type: VaporVisuals
    animationTime: 0.8
    animationState: extinguish
