# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  parent: BoxBase
  id: BoxCardboard
  name: cardboard box
  description: A cardboard box for storing things.
  components:
  # Goobstation edit start
  - type: EmitSoundOnPickup
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_pickup.ogg
      params:
        volume: -3
  - type: EmitSoundOnDrop
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_drop.ogg
      params:
        volume: -3
  - type: EmitSoundOnLand
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_drop.ogg
      params:
        volume: -3
  # Goobstation edit end
  - type: Construction
    graph: BoxCardboard
    node: boxcardboard
    containers:
    - storagebase
  - type: PhysicalComposition
    materialComposition:
      Cardboard: 100
  - type: Sprite
    state: box
  - type: Tag
    tags:
    - BoxCardboard

- type: entity
  parent: BoxBaseSmall
  id: BoxCardboardSmall
  name: small cardboard box
  description: A small cardboard box for storing things.
  components:
  # Goobstation edit start
  - type: EmitSoundOnPickup
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_pickup.ogg
      params:
        volume: -3
  - type: EmitSoundOnDrop
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_drop.ogg
      params:
        volume: -3
  - type: EmitSoundOnLand
    sound:
      path: /Audio/_Goobstation/Items/handling/cardboardbox_drop.ogg
      params:
        volume: -3
  # Goobstation edit end
  - type: Construction
    graph: BoxCardboardSmall # Half the material cost of the "regular" cardboardbox
    node: boxcardboardsmall
    containers:
    - storagebase
  - type: PhysicalComposition # Half of the "regular" cardboard box
    materialComposition:
      Cardboard: 50
  - type: Sprite
    state: box
  - type: Tag
    tags:
    - BoxCardboard

- type: entity
  name: mousetrap box
  parent: BoxCardboard
  id: BoxMousetrap
  description: This box is filled with mousetraps. Try not to get your hand stuck in one.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: Mousetrap
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: mousetraps

- type: entity
  name: lightbulb box
  parent: BoxCardboard
  id: BoxLightbulb
  description: This box is shaped on the inside so that only light tubes and bulbs fit.
  components:
  - type: Sprite
    layers:
      - state: box
      - state: light
  - type: Storage
    grid:
    - 0,0,5,3
    whitelist:
      components:
      - LightBulb
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: LightBulb
        amount: 12

- type: entity
  name: lightbulb box warm
  parent: BoxLightbulb
  id: BoxWarmLightbulb
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: WarmLightBulb
        amount: 12

- type: entity
  name: lighttube box
  parent: BoxLightbulb
  id: BoxLighttube
  components:
  - type: Sprite
    layers:
      - state: box
      - state: lighttube
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: LightTube
        amount: 12

- type: entity
  name: mixed lights box
  parent: BoxLightbulb
  id: BoxLightMixed
  components:
  - type: Sprite
    layers:
      - state: box
      - state: lightmixed
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: LightTube
          amount: 6
        - id: LightBulb
          amount: 6

- type: entity
  name: holiday lighttube box
  parent: BoxLightbulb
  id: BoxLighttubeHoliday
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: LightTubeCrystalRed
        - id: LightTubeCrystalGreen
        rolls: 6 # Rolls instead of amounts to alternate.

- type: entity
  name: PDA box
  parent: BoxCardboard
  id: BoxPDA
  description: A box of spare PDA microcomputers.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: PassengerPDA
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: pda

- type: entity
  name: ID card box
  parent: BoxCardboard
  id: BoxID
  description: A box of spare blank ID cards.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: PassengerIDCard
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: pda

- type: entity
  name: headset box
  parent: BoxCardboard
  id: BoxHeadset
  description: A box of spare passenger headsets.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: ClothingHeadsetGrey
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: headset

- type: entity
  parent: BoxCardboardSmall
  id: BoxStamps
  name: stamp box
  description: A small box containing stamps.
  components: # Baking a "default" EntityTableContainerFill into this prototype seems like bad practice, so this is currently an empty box. If you need a new type of prefilled stamp box, create a new child prototype with the appropriate stamps!
  - type: Sprite
    layers:
      - state: box
      - state: stamp

- type: entity
  name: meson box
  parent: BoxCardboard
  id: BoxMesonScanners
  description: A box of spare meson goggles.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: ClothingEyesGlassesMeson
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: meson

- type: entity
  name: M.R.E.
  parent: BoxCardboard
  id: BoxMRE
  description: A box of decades old military surplus rations. It is surprisingly not rotten.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: DrinkMREFlask
        - id: FoodSnackNutribrick
        - id: FoodSnackMREBrownie
        - id: FoodCondimentPacketKetchup
  - type: Sprite
    layers:
      - state: box_olive
      - state: writing

- type: entity
  parent: BoxHug
  id: BoxHugHealing
  suffix: Medical
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: Brutepack
        amount: 3

- type: entity
  name: inflatable wall box
  parent: BoxCardboard
  id: BoxInflatable
  description: Inflatable walls are not to be used as floatation devices.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
          - id: InflatableWallStack
            amount: 2
          - id: InflatableDoorStack
            amount: 2
  - type: Sprite
    layers:
      - state: box
      - state: inflatable

- type: entity
  name: hatsune miku day bag
  parent: ClothingBackpackDuffel
  id: BoxPerformer
  description: Happy Hatsune Miku Day!
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: ClothingShoesBootsPerformer
        - id: ClothingUniformJumpskirtPerformer
        - id: ClothingHeadPerformerWig
        - id: FoodMealMemoryleek
          amount: 2
  - type: Tag # Goobstation?
    tags: [ ] # ignore "WhitelistChameleon" tag

- type: entity
  name: flare box
  parent: BoxCardboard
  id: BoxFlare
  description: A box of flares. Party time.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: Flare
        amount: 6
  - type: Sprite
    layers:
      - state: box
      - state: flare

- type: entity
  name: trashbag box
  parent: BoxCardboard
  id: BoxTrashbag
  description: A box of trashbags. Happy janitor noises.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: TrashBag
        amount: 6
  - type: Storage
    grid:
    - 0,0,5,3
    maxItemSize: Large
    whitelist:
      tags:
        - TrashBag
  - type: Sprite
    layers:
      - state: box
      - state: trashbag

- type: entity
  name: passenger encryption key box
  parent: BoxCardboard
  id: BoxEncryptionKeyPassenger
  description: A box of spare encryption keys.
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyCommon
        amount: 4
  - type: Sprite
    layers:
      - state: box
      - state: encryptokey
  - type: Storage
    whitelist:
      components:
      - EncryptionKey

- type: entity
  name: cargo encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyCargo
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyCargo
        amount: 4

- type: entity
  name: engineering encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyEngineering
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyEngineering
        amount: 4

- type: entity
  name: med-sci encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyMedicalScience
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyMedicalScience
        amount: 4

- type: entity
  name: medical encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyMedical
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyMedical
        amount: 4

- type: entity
  name: robotech encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyRobo
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyRobo
        amount: 4

- type: entity
  name: science encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyScience
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyScience
        amount: 4

- type: entity
  name: security encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeySecurity
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeySecurity
        amount: 4

- type: entity
  name: service encryption key box
  parent: BoxEncryptionKeyPassenger
  id: BoxEncryptionKeyService
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeyService
        amount: 4

- type: entity
  name: syndicate encryption key box
  parent: [BoxEncryptionKeyPassenger, BaseSyndicateContraband]
  id: BoxEncryptionKeySyndie
  description: Two syndicate encryption keys for the price of one. Miniaturized for ease of use.
  components:
  - type: Item
    size: Normal
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: EncryptionKeySyndie
        amount: 2
  - type: Storage

- type: entity
  name: lead-lined box
  parent: BoxCardboard
  suffix: DEBUG
  id: BoxLeadLined
  description: This box stymies the transmission of harmful radiation.
  components:
  - type: Sprite
    state: box


- type: entity
  name: candle box
  parent: BoxCardboard
  id: BoxCandle
  description: This box is specifically moulded to only carry candles.
  components:
  - type: Sprite
    layers:
      - state: box
      - state: candle
  - type: Storage
    grid:
    - 0,0,5,3
    whitelist: # TODO cardboard boxes shouldn't have whitelisting
      tags:
      - Candle
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: Candle
          amount: 4
        - id: CandleBlue
          amount: 2
        - id: CandleRed
          amount: 2
        - id: CandleGreen
          amount: 2
        - id: CandlePurple
          amount: 2

- type: entity
  name: small candle box
  parent: BoxCandle
  id: BoxCandleSmall
  components:
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: CandleSmall
          amount: 8
        - id: CandleBlueSmall
          amount: 4
        - id: CandleRedSmall
          amount: 4
        - id: CandleGreenSmall
          amount: 4
        - id: CandlePurpleSmall
          amount: 4

- type: entity
  parent: BoxCardboard
  id: BoxDarts
  name: darts box
  description: A box filled with colorful darts.
  components:
  - type: Item
    size: Normal
    shape:
    - 0,0,1,1
  - type: Storage
    maxItemSize: Tiny
  - type: Sprite
    layers:
      - state: box
      - state: darts
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: Dart
          amount: 2
        - id: DartBlue
          amount: 2
        - id: DartPurple
          amount: 2
        - id: DartYellow
          amount: 2

- type: entity
  name: envelope box
  parent: BoxCardboard
  id: BoxEnvelope
  description: A box filled with envelopes.
  components:
  - type: Sprite
    layers:
      - state: box
      - state: envelope
  - type: EntityTableContainerFill
    containers:
      storagebase:
        id: Envelope
        amount: 9

- type: entity
  name: utensil box
  parent: BoxCardboard
  id: BoxUtensil
  description: A box filled with forks and spoons.
  components:
  - type: Sprite
    layers:
      - state: box
      - state: utensils
  - type: EntityTableContainerFill
    containers:
      storagebase: !type:AllSelector
        children:
        - id: Fork
          amount: 2
        - id: Spoon
          amount: 2
