# SPDX-FileCopyrightText: 2023 Ed <96445749+TheShuEd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MilenVolf <63782763+MilenVolf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Killerqu00 <47712032+Killerqu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  id: PetCarrier
  name: pet carrier
  description: Allows large animals to be carried comfortably. It smells vaguely of toilet water and explosives.
  parent: BaseStructureDynamic
  components:
  - type: Sprite
    noRot: true
    drawdepth: Items
    sprite: Objects/Storage/petcarrier.rsi
    layers:
    - state: pet_carrier_base
      map: ["enum.StorageVisualLayers.Base"]
    - state: pet_carrier_door
      map: ["enum.StorageVisualLayers.Door"]
    - state: welded
      visible: false
      map: ["enum.WeldableLayers.BaseWelded"]
  - type: Icon
    sprite: Objects/Storage/petcarrier.rsi
    state: icon
  - type: InteractionOutline
  - type: Physics
  - type: MultiHandedItem
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.45
        density: 25
        mask:
        - ItemMask
  - type: EntityStorage
    capacity: 1
    airtight: false
    whitelist:
      tags:
        - VimPilot # If it can fit in a Vim it can fit in a pet carrier.
        - CanPilot # Goobstation: being able to put anyone inside is a feature, not a bug
  - type: Weldable
  - type: ResistLocker
  - type: PlaceableSurface
    isPlaceable: false
  - type: Damageable
    damageContainer: Inorganic
    damageModifierSet: Wood
  - type: Destructible
    thresholds:
      - trigger:
          !type:DamageTrigger
          damage: 50
        behaviors:
          - !type:DoActsBehavior
            acts: ["Destruction"]
  - type: Appearance
  - type: EntityStorageVisuals
    stateDoorOpen: pet_carrier_open
    stateDoorClosed: pet_carrier_door
  - type: ContainerContainer
    containers:
      entity_storage: !type:Container
      paper_label: !type:ContainerSlot
  - type: ItemSlots
  - type: Item
    size: Ginormous
    sprite: Objects/Storage/petcarrier.rsi
  - type: Construction
    graph: PetCarrier
    node: petCarrier
    containers:
    - entity_storage