# SPDX-FileCopyrightText: 2024 AstroDogeDX <48888500+AstroDogeDX@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aidenkrz <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aviu00 <93730715+Aviu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Nox <nebulousnox38@gmail.com>
# SPDX-FileCopyrightText: 2025 RatherUncreative <RatherUncreativeName@proton.me>
# SPDX-FileCopyrightText: 2025 SX-7 <92227810+SX-7@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Solstice <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 Ted Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Whatstone <whatston3@gmail.com>
# SPDX-FileCopyrightText: 2025 deltanedas <39013340+deltanedas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 deltanedas <@deltanedas:kde.org>
# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
# SPDX-FileCopyrightText: 2025 mubururu_ <139181059+muburu@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Generic borg
- type: borgType
  id: generic

  # Description
  dummyPrototype: BorgChassisGeneric

  # Functional
  extraModuleCount: 5
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleScience #until sciborgs are added

  defaultModules:
  - BorgModuleTool
  - BorgModuleArtifact
  - BorgModuleAnomaly
  radioChannels:
  - Science

  # Visual
  inventoryTemplateId: borgShort
  spriteBodyState: robot
  spriteHasMindState: robot_e
  spriteNoMindState: robot_e_r
  spriteToggleLightState: robot_l

  # Pet
  petSuccessString: petting-success-generic-cyborg
  petFailureString: petting-failure-generic-cyborg


# Engineering borg
- type: borgType
  id: engineering

  # Description
  dummyPrototype: BorgChassisEngineer

  # Functional
  extraModuleCount: 3
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleEngineering

  defaultModules:
  - BorgModuleTool
  - BorgModuleConstruction
  - BorgModuleRCD
  - BorgModuleCable

  lawset: Engineer # DeltaV: Custom lawset

  radioChannels:
  - Engineering
  - Science

  # Visual
  inventoryTemplateId: borgShort
  spriteBodyState: engineer
  spriteHasMindState: engineer_e
  spriteNoMindState: engineer_e_r
  spriteToggleLightState: engineer_l

  # Pet
  petSuccessString: petting-success-engineer-cyborg
  petFailureString: petting-failure-engineer-cyborg


# Salvage borg
- type: borgType
  id: mining

  # Description
  dummyPrototype: BorgChassisMining

  # Functional
  extraModuleCount: 3
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleCargo

  defaultModules:
  - BorgModuleTool
  - BorgModuleMining
  - BorgModuleTraversal
  - BorgModuleAppraisal
  - BorgModulePKA # Lavaland

  radioChannels:
  - Supply
  - Science

  addComponents: # Goobstation
  - type: NoWieldNeeded
  - type: SlavedBorg # Goobstation: Special AI labeling for salv borgs.
    law: ObeyAI

  lawset: Salvage # DeltaV: Custom lawset

  # Visual
  inventoryTemplateId: borgTall
  spriteBodyState: miner
  spriteBodyMovementState: miner_moving
  spriteHasMindState: miner_e
  spriteNoMindState: miner_e_r
  spriteToggleLightState: miner_l

  # Pet
  petSuccessString: petting-success-salvage-cyborg
  petFailureString: petting-failure-salvage-cyborg


# Janitor borg
- type: borgType
  id: janitor

  # Description
  dummyPrototype: BorgChassisJanitor

  # Functional
  extraModuleCount: 3
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleJanitor

  defaultModules:
  - BorgModuleTool
  - BorgModuleCleaning
  - BorgModuleCustodial

  radioChannels:
  - Science
  - Service

  lawset: Janitor # DeltaV: Custom lawset

  # Visual
  inventoryTemplateId: borgShort
  spriteBodyState: janitor
  spriteBodyMovementState: janitor_moving
  spriteHasMindState: janitor_e
  spriteNoMindState: janitor_e_r
  spriteToggleLightState: janitor_l

  # Pet
  petSuccessString: petting-success-janitor-cyborg
  petFailureString: petting-failure-janitor-cyborg


# Medical borg
- type: borgType
  id: medical

  # Description
  dummyPrototype: BorgChassisMedical

  # Functional
  extraModuleCount: 3
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleMedical

  defaultModules:
  - BorgModuleTool
  - BorgModuleChemical
  - BorgModuleTopicals
  - BorgModuleRescue
  - BorgModuleSurgery
  - BorgModuleLollypop # Goobstation

  lawset: Medical # DeltaV: Custom lawset

  radioChannels:
  - Science
  - Medical

  addComponents:
  - type: SolutionScanner
  - type: ShowHealthBars
    damageContainers:
    - Biological
  - type: ShowHealthIcons
    damageContainers:
    - Biological
  - type: Sanitized # Shitmed
  - type: SurgeryTarget # Shitmed
  - type: SurgeryIgnoreClothing
  - type: SurgerySpeedModifier
    speedModifier: 1.5

  # Visual
  inventoryTemplateId: borgDutch
  spriteBodyState: medical
  spriteBodyMovementState: medical_moving
  spriteHasMindState: medical_e
  spriteNoMindState: medical_e_r
  spriteToggleLightState: medical_l

  # Pet
  petSuccessString: petting-success-medical-cyborg
  petFailureString: petting-failure-medical-cyborg

  # Sounds
  footstepCollection:
    collection: FootstepHoverBorg


# Service borg
- type: borgType
  id: service

  # Description
  dummyPrototype: BorgChassisService

  # Functional
  extraModuleCount: 3
  moduleWhitelist:
    tags:
    - BorgModuleGeneric
    - BorgModuleService

  defaultModules:
  - BorgModuleTool
  - BorgModuleMusique
  - BorgModuleService
  - BorgModuleClowning
  - BorgModuleGardening
  - BorgModuleHarvesting
  - BorgModuleLollypop # Goobstation

  lawset: Clown # DeltaV: Custom lawset

  radioChannels:
  - Science
  - Service

  # Visual
  inventoryTemplateId: borgTall
  spriteBodyState: service
  spriteHasMindState: service_e
  spriteNoMindState: service_e_r
  spriteToggleLightState: service_l

  # Pet
  petSuccessString: petting-success-service-cyborg
  petFailureString: petting-failure-service-cyborg
