# SPDX-FileCopyrightText: 2022 Alex Evgrashin <aevgrashin@yandex.ru>
# SPDX-FileCopyrightText: 2022 Moony <moonheart08@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 AJCM-git <60196617+AJCM-git@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 crazybrain23 <44417085+crazybrain23@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 BombasterDS <115770678+BombasterDS@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 Fishbait <Fishbait@git.ml>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Steve <marlumpy@gmail.com>
# SPDX-FileCopyrightText: 2025 Terraspark4941 <terraspark4941@gmail.com>
# SPDX-FileCopyrightText: 2025 fishbait <gnesse@gmail.com>
# SPDX-FileCopyrightText: 2025 marc-pelletier <113944176+marc-pelletier@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  parent: ClothingBackpack
  id: ClothingBackpackChameleon
  name: backpack
  description: You wear this on your back and put items into it.
  suffix: Chameleon
  components:
  - type: Tag
    tags: [] # ignore "WhitelistChameleon" tag
  - type: Sprite
    sprite: Clothing/Back/Backpacks/backpack.rsi
  - type: ChameleonClothing
    slot: [back]
    default: ClothingBackpack
  - type: UserInterface
    interfaces:
      enum.StorageUiKey.Key:
        type: StorageBoundUserInterface
      enum.ChameleonUiKey.Key:
        type: ChameleonBoundUserInterface
  - type: HideContrabandContent #Goobstation-Contraband detector

- type: entity
  parent: [Clothing, ClothingSlotBase]
  id: ClothingBackpackWaterTank
  name: backpack water tank
  description: Holds a large amount of fluids. Supplies to spray nozzles in your hands, and has a slot on the side for said spray nozzles.
  components:
  - type: Tag
    tags:
    - NozzleBackTank
    - WhitelistChameleon
  - type: Sprite
    sprite: Clothing/Back/Backpacks/waterbackpack.rsi
    state: icon
  - type: Item
    size: Ginormous
  - type: Clothing
    slots: BACK
    sprite: Clothing/Back/Backpacks/waterbackpack.rsi
  - type: ItemSlots
    slots:
      item:
        priority: 2
        whitelist:
          tags:
          - SprayNozzle
  - type: ItemMapper
    mapLayers:
      icon-filled:
        whitelist:
          tags:
            - SprayNozzle
  - type: Appearance
  - type: SolutionAmmoProvider
    solutionId: tank
    proto: BulletWaterShot
  - type: SolutionContainerManager
    solutions:
      tank:
        maxVol: 1000 #much water
  - type: SolutionTransfer
    transferAmount: 50
    maxTransferAmount: 100
    minTransferAmount: 10
    canChangeTransferAmount: true
  - type: UserInterface
    interfaces:
      enum.TransferAmountUiKey.Key:
        type: TransferAmountBoundUserInterface
  - type: DrawableSolution
    solution: tank
  - type: RefillableSolution
    solution: tank
  - type: DrainableSolution
    solution: tank
  - type: ExaminableSolution
    solution: tank
  - type: PhysicalComposition #Goobstation - Recycle update
    materialComposition:
      Steel: 62
      Glass: 250
  - type: StaticPrice #Goobstation - Recycle update
    price: 50

# Assmos - Extinguisher Nozzle
- type: entity
  parent: Clothing
  id: ClothingBackpackFirefighterTank
  name: firefighter water tank backpack
  description: A refrigerated water tank backpack that can switch modes to launch ATMOS resin or work as a high pressure extinguisher. 
  components:
  - type: Tag
    tags:
    - AtmosBackTank
    - WhitelistChameleon
  - type: Sprite
    sprite: Clothing/Back/Backpacks/atmosbackpacktank.rsi
    state: icon
  - type: Item
    size: Ginormous
  - type: Clothing
    slots: BACK
    sprite: Clothing/Back/Backpacks/atmosbackpacktank.rsi
  - type: SolutionAmmoProvider
    solutionId: tank
    proto: AtmosResin
    fireCost: 25
  - type: SolutionContainerManager
    solutions:
      tank:
        maxVol: 1200
        reagents:
        - ReagentId: Water
          Quantity: 1200
  - type: DrawableSolution
    solution: tank
  - type: DrainableSolution
    solution: tank
  - type: ExaminableSolution
    solution: tank
  - type: ItemSlots
    slots:
      nozzle_slot:
        name: FirefighterNozzle
        startingItem: FirefighterNozzle
        whitelist:
          tags:
          - Nozzle
  - type: FirefighterTankRefillable
  - type: ContainerContainer
    containers:
      nozzle_slot: !type:ContainerSlot

- type: entity
  parent: ClothingBackpack
  id: ClothingBagPet
  name: pet bag
  description: A small bag designed for use by pets and small animals.
  components:
  - type: Sprite
    sprite: Clothing/Back/Specific/petbag.rsi
  - type: Storage
    grid:
    - 1,0,2,0
    - 0,1,2,3
    - 6,0,7,0
    - 6,1,8,3
  - type: Tag
    tags:
    - WhitelistChameleon
    - CorgiWearable
    - PetOnly
  - type: Construction
    graph: ClothingBagPet
    node: bagPet

- type: entity
  parent: Clothing
  id: ClothingBackpackHarmpack
  name: H.A.R.M.P.A.C.K.
  description: Now you can reload, punch, and eat a snack - simultaneously.
  components:
  - type: Sprite
    sprite: Clothing/Back/Specific/harmpack.rsi
    state: icon
  - type: Item
    size: Ginormous
  - type: Clothing
    slots: BACK
  - type: ExtraHandsEquipment
    hands:
      # middle hands to prevent overlapping inhand sprites
      # This can be changed once we have per-hand displacement maps
      extra_hand_1:
        location: Middle
      extra_hand_2:
        location: Middle
