# SPDX-FileCopyrightText: 2024 Firewatch <54725557+musicmanvr@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-License-Identifier: AGPL-3.0-or-later
# Operative Balloons, looks just like the real thing!

- type: entity
  parent: [BaseItem, BaseFoldable]
  id: BaseDecoy
  abstract: true
  components:
  - type: Rotatable
  - type: Sprite
    sprite: Objects/Tools/Decoys/operative_decoy.rsi
    layers:
    - state: oballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 100
      behaviors:
        - !type:DoActsBehavior
          acts: [ "Destruction" ]
        - !type:PlaySoundBehavior
          sound:
            path: /Audio/Effects/pop_high.ogg
  - type: Appearance
  - type: Item
    size: Normal
  - type: RandomMetadata # No metagaming these, jimbo.
    nameSegments:
    - NamesSyndicatePrefix
    - NamesSyndicateNormal
    nameFormat: name-format-nukie-generic
  - type: Damageable
    damageContainer: Inorganic
  - type: ToggleableVisuals
    spriteLayer: light
  - type: ItemTogglePointLight
  - type: Foldable
    folded: true
  - type: PowerCellSlot
    cellSlotId: cell_slot
  - type: ItemSlots
    slots:
      cell_slot:
        name: power-cell-slot-component-slot-name-default
        startingItem: PowerCellHigh
  - type: ContainerContainer
    containers:
      cell_slot: !type:ContainerSlot
  - type: HandheldLight
    addPrefix: false
  - type: PointLight # Just like the real thing...
    autoRot: true
    radius: 1.5
    energy: 2.3
    offset: 0, -1
    color: green
    netsync: false
  - type: Tag
    tags:
    - Balloon
    - Flashlight

- type: entity
  parent: BaseDecoy
  id: BalloonOperative
  name: operative balloon
  description: Upon closer inspection, this Syndicate operative is actually a balloon.
  components:
  - type: Sprite
    sprite: Objects/Tools/Decoys/operative_decoy.rsi
    layers:
    - state: oballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false

- type: entity
  parent: BaseDecoy
  id: BalloonAgent
  name: corpsman balloon
  description: Upon closer inspection, this Syndicate corpsman is actually a balloon.
  components:
  - type: Sprite
    sprite: Objects/Tools/Decoys/agent_decoy.rsi
    layers:
    - state: aballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false

- type: entity
  parent: BaseDecoy
  id: BalloonElite
  name: elite operative balloon
  description: Upon closer inspection, this Syndicate elite operative is actually a balloon.
  components:
  - type: Sprite
    sprite: Objects/Tools/Decoys/elite_decoy.rsi
    layers:
    - state: eballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false
  - type: PointLight
    color: red

- type: entity
  parent: BaseDecoy
  id: BalloonJuggernaut
  name: juggernaut balloon
  description: Upon closer inspection, this Syndicate juggernaut is actually a balloon.
  components:
  - type: Sprite
    sprite: Objects/Tools/Decoys/juggernaut_decoy.rsi
    layers:
    - state: jballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false

- type: entity
  parent: BaseDecoy
  id: BalloonCommander
  name: commander balloon
  description: Upon closer inspection, this Syndicate commander is actually a balloon.
  components:
  - type: Sprite
    sprite: Objects/Tools/Decoys/commander_decoy.rsi
    layers:
    - state: cballoon
      map: ["unfoldedLayer"]
    - state: folded
      map: ["foldedLayer"]
      visible: false