- type: entity
  abstract: true
  parent: [SolutionSpray, BaseItem]
  id: BaseFireExtinguisher
  components:
  - type: RefillableSolution
    solution: spray
  - type: DrainableSolution
    solution: spray
  - type: SolutionTransfer
    maxTransferAmount: 100
    transferAmount: 100
  - type: UseDelay
  - type: Spray
    transferAmount: 10
    pushbackAmount: 60
    spraySound:
      path: /Audio/Effects/extinguish.ogg
    sprayedPrototype: ExtinguisherSpray
    vaporAmount: 3
    vaporSpread: 90
    sprayVelocity: 2.0
  - type: ItemToggleExaminableStatus
    onText: item-toggle-examined-active
    offText: item-toggle-examined-not-active
  - type: ItemToggle
    soundActivate:
      path: /Audio/Machines/button.ogg
      params:
        variation: 0.125
        volume: -4
    soundDeactivate:
      path: /Audio/Machines/button.ogg
      params:
        variation: 0.125
        volume: -4
    verbToggleOn: fire-extinguisher-component-verb-remove
    verbToggleOff: fire-extinguisher-component-verb-engage
  - type: SpraySafety
  - type: Tool
    qualities:
    - Rolling
    speedModifier: 0.5 # its very big, awkward to use
  - type: Appearance
  - type: Tag
    tags:
    - FireExtinguisher
  - type: GenericVisualizer
    visuals:
      enum.ToggleableVisuals.Enabled:
        enum.ToggleableVisuals.Layer:
          True: { state: fire_extinguisher_open }
          False: { state: fire_extinguisher_closed }

- type: entity
  parent: [SolutionFireExtinguisher, BaseFireExtinguisher]
  id: FireExtinguisher
  name: fire extinguisher
  description: It extinguishes fires.
  components:
  - type: Sprite
    sprite: Objects/Misc/fire_extinguisher.rsi
    layers:
    - state: fire_extinguisher_closed
      map: [ "enum.ToggleableVisuals.Layer" ]
  - type: Item
    sprite: Objects/Misc/fire_extinguisher.rsi
    size: Normal
  - type: MeleeWeapon
    wideAnimationRotation: 180
    damage:
      types:
        Blunt: 10
    soundHit:
      path: /Audio/Weapons/smash.ogg
  - type: PhysicalComposition
    materialComposition:
      Steel: 100

- type: entity
  parent: [SolutionSpray, SolutionNormal]
  id: SolutionFireExtinguisher
  categories: [ HideSpawnMenu ]
  components:
  - type: Solution
    solution:
      reagents:
      - ReagentId: Water
        Quantity: 120

- type: entity
  parent: [SolutionFireExtinguisherLarge, FireExtinguisher]
  id: BorgFireExtinguisher
  name: maneuvering jet
  description: Based on fire extinguisher technology, the maneuvering jet is... well yes, its just a bigger fire extinguisher.

- type: entity
  parent: [SolutionSpray, SolutionLarge]
  id: SolutionFireExtinguisherLarge
  categories: [ HideSpawnMenu ]
  components:
  - type: Solution
    solution:
      reagents:
      - ReagentId: Water
        Quantity: 240

- type: entity
  name: extinguisher spray
  id: ExtinguisherSpray
  parent: Vapor
  categories: [ HideSpawnMenu ]
  components:
  - type: Sprite
    sprite: Effects/extinguisherSpray.rsi
    layers:
      - state: extinguish
        map: [ "enum.VaporVisualLayers.Base" ]
  - type: Physics
    bodyType: Dynamic
  - type: Appearance
  - type: VaporVisuals
    animationTime: 0.8
    animationState: extinguish

- type: entity
  name: pocket fire extinguisher
  parent: [SolutionFireExtinguisherMini, BaseFireExtinguisher]
  id: FireExtinguisherMini
  description: A light and compact fibreglass-framed model fire extinguisher. It holds less water than its bigger brother.
  components:
  - type: Sprite
    sprite: Objects/Misc/fire_extinguisher_mini.rsi
    layers:
        - state: fire_extinguisher_closed
          map: [ "enabled" ]
  - type: Item
    sprite: Objects/Misc/fire_extinguisher_mini.rsi
    size: Small
  - type: MeleeWeapon
    wideAnimationRotation: 180
    damage:
      types:
        Blunt: 3 #completely ineffective; your fists are better
    soundHit:
      path: /Audio/Effects/weak_hit1.ogg
  - type: PhysicalComposition
    materialComposition:
      Steel: 50
      Glass: 40

- type: entity
  parent: [SolutionSpray, SolutionSmall]
  id: SolutionFireExtinguisherMini
  categories: [ HideSpawnMenu ]
  components:
  - type: Solution
    solution:
      reagents:
      - ReagentId: Water
        Quantity: 60

# used for a engi xenoborg module
- type: entity
  parent: [ FireExtinguisher, BaseXenoborgContraband ]
  id: SelfRechargingFireExtinguisher
  name: self-recharging fire extinguisher
  description: It extinguishes fires. it slowly refills with water.
  components:
  - type: SolutionRegeneration
    generated:
      reagents:
      - ReagentId: Water
        Quantity: 1
