- type: entity
  parent: [ClothingBackpack, BaseChameleon]
  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: entity
  parent: [SolutionTank, SolutionGinormous, 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: 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
    exactVolume: true

- 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
    - ScurretWearable
  - 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

- type: entity
  parent: ClothingBackpack
  id: XenoborgMaterialBag
  name: silicon storage square
  description: A knockoff version of a bluespace bag, can vacuum up select materials, unfit for use by humanoids due to harmful emissions.
  components:
  - type: Sprite
    sprite: Objects/Specific/Robotics/silicon_storage_cube.rsi
    state: xenoborg
  - type: MagnetPickup
  - type: Dumpable
  - type: Storage
    grid:
    - 0,0,7,3
    quickInsert: true
    areaInsert: true
    whitelist:
      tags:
        - Sheet
        - ConstructionMaterial
        - RawMaterial
        - Ingot
        - XenoborgCrystal
      components:
        - Circuitboard
        - Flatpack
        - FloorTile
    blacklist:
      components:
      - SiliconLawProvider
