# SPDX-FileCopyrightText: 2023 Doru991 <75124791+Doru991@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Justin Pfeifler <jrpl101998@gmail.com>
# SPDX-FileCopyrightText: 2023 LankLTE <135308300+LankLTE@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 M3739 <47579354+M3739@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Nairod <110078045+Nairodian@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Skye <57879983+Rainbeon@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 12rabbits <53499656+12rabbits@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 AJCM <AJCM@tutanota.com>
# SPDX-FileCopyrightText: 2024 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2024 Alex Evgrashin <aevgrashin@yandex.ru>
# SPDX-FileCopyrightText: 2024 Alex Pavlenko <diraven@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Alice "Arimah" Heurlin <30327355+arimah@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Alzore <140123969+Blackern5000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 ArkiveDev <95712736+ArkiveDev@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Boaz1111 <149967078+Boaz1111@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 BombasterDS <115770678+BombasterDS@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 BramvanZijp <56019239+BramvanZijp@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 CaasGit <87243814+CaasGit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Cojoke <83733158+Cojoke-dot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 CookieMasterT <124045269+CookieMasterT@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Dimastra <65184747+Dimastra@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Dimastra <dimastra@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Doomsdrayk <robotdoughnut@comcast.net>
# SPDX-FileCopyrightText: 2024 DrEnzyme <DrEnzyme@gmail.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ed <96445749+TheShuEd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Elysium206 <151651971+Elysium206@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Emisse <99158783+Emisse@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 EmoGarbage404 <retron404@gmail.com>
# SPDX-FileCopyrightText: 2024 Eoin Mcloughlin <helloworld@eoinrul.es>
# SPDX-FileCopyrightText: 2024 Flareguy <78941145+Flareguy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Floofi <126319569+Shadowtheprotogen546@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ghagliiarghii <68826635+Ghagliiarghii@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Golden Can <greentopcan@gmail.com>
# SPDX-FileCopyrightText: 2024 HS <81934438+HolySSSS@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Hrosts <35345601+Hrosts@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ian <ignaz.k@live.de>
# SPDX-FileCopyrightText: 2024 JIPDawg <51352440+JIPDawg@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 JIPDawg <JIPDawg93@gmail.com>
# SPDX-FileCopyrightText: 2024 Jajsha <101492056+Zap527@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Joel Zimmerman <JoelZimmerman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 John Alexander Le Roux <94056103+CMDR-JohnAlex@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 JustCone <141039037+JustCone14@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 K-Dynamic <20566341+K-Dynamic@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kara <lunarautomaton6@gmail.com>
# SPDX-FileCopyrightText: 2024 Keer-Sar <144283718+Keer-Sar@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kevin Zheng <kevinz5000@gmail.com>
# SPDX-FileCopyrightText: 2024 Killerqu00 <47712032+Killerqu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ko4ergaPunk <62609550+Ko4ergaPunk@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Krunklehorn <42424291+Krunklehorn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kukutis96513 <146854220+Kukutis96513@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Lye <128915833+Lyroth001@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MerrytheManokit <167581110+MerrytheManokit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Mervill <mervills.email@gmail.com>
# SPDX-FileCopyrightText: 2024 MetalSage <74924875+MetalSage@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MetalSage <metalsage.official@gmail.com>
# SPDX-FileCopyrightText: 2024 MilenVolf <63782763+MilenVolf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Moomoobeef <62638182+Moomoobeef@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MureixloI <132683811+MureixloI@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Naive817 <lyx2020@sjtu.edu.cn>
# SPDX-FileCopyrightText: 2024 NakataRin <45946146+NakataRin@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 OrangeMoronage9622 <whyteterry0092@gmail.com>
# SPDX-FileCopyrightText: 2024 PJBot <pieterjan.briers+bot@gmail.com>
# SPDX-FileCopyrightText: 2024 Partmedia <kevinz5000@gmail.com>
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers <pieterjan.briers@gmail.com>
# SPDX-FileCopyrightText: 2024 Piras314 <p1r4s@proton.me>
# SPDX-FileCopyrightText: 2024 Plykiya <58439124+Plykiya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Plykiya <plykiya@protonmail.com>
# SPDX-FileCopyrightText: 2024 PopGamer46 <yt1popgamer@gmail.com>
# SPDX-FileCopyrightText: 2024 Preston Smith <92108534+thetolbean@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Psychpsyo <60073468+Psychpsyo@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 PursuitInAshes <pursuitinashes@gmail.com>
# SPDX-FileCopyrightText: 2024 QueerNB <176353696+QueerNB@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Redfire1331 <125223432+Redfire1331@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Repo <47093363+Titian3@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Rouge2t7 <81053047+Sarahon@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Saphire Lattice <lattice@saphi.re>
# SPDX-FileCopyrightText: 2024 ScarKy0 <scarky0@onet.eu>
# SPDX-FileCopyrightText: 2024 ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Simon <63975668+Simyon264@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Spessmann <156740760+Spessmann@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Stalen <33173619+stalengd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TakoDragon <69509841+BackeTako@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Tayrtahn <tayrtahn@gmail.com>
# SPDX-FileCopyrightText: 2024 The Canned One <greentopcan@gmail.com>
# SPDX-FileCopyrightText: 2024 Thomas <87614336+Aeshus@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Truoizys <153248924+Truoizys@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ubaser <134914314+UbaserB@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
# SPDX-FileCopyrightText: 2024 Vasilis <vasilis@pikachu.systems>
# SPDX-FileCopyrightText: 2024 Verm <32827189+Vermidia@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Vigers Ray <60344369+VigersRay@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 WarMechanic <69510347+WarMechanic@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Winkarst <74284083+Winkarst-cpu@users.noreply.github.co>
# SPDX-FileCopyrightText: 2024 Winkarst <74284083+Winkarst-cpu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Zachary Yona <58833995+Magicalus@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Zachary Yona <magicalusf@gmail.com>
# SPDX-FileCopyrightText: 2024 beck-thompson <107373427+beck-thompson@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 coolboy911 <85909253+coolboy911@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deathride58 <deathride58@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deltanedas <39013340+deltanedas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deltanedas <@deltanedas:kde.org>
# SPDX-FileCopyrightText: 2024 dffdff2423 <dffdff2423@gmail.com>
# SPDX-FileCopyrightText: 2024 eoineoineoin <github@eoinrul.es>
# SPDX-FileCopyrightText: 2024 foboscheshir <156405958+foboscheshir@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 lunarcomets <140772713+lunarcomets@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 marbow <152051971+marboww@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <comedian_vs_clown@hotmail.com>
# SPDX-FileCopyrightText: 2024 mhamster <81412348+mhamsterr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 neutrino <67447925+neutrino-laser@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 osjarw <62134478+osjarw@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 plykiya <plykiya@protonmail.com>
# SPDX-FileCopyrightText: 2024 redfire1331 <Redfire1331@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 saintmuntzer <47153094+saintmuntzer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 shamp <140359015+shampunj@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 stellar-novas <stellar_novas@riseup.net>
# SPDX-FileCopyrightText: 2024 strO0pwafel <153459934+strO0pwafel@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 stroopwafel <j.o.luijkx@student.tudelft.nl>
# SPDX-FileCopyrightText: 2024 themias <89101928+themias@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 to4no_fix <156101927+chavonadelal@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 voidnull000 <18663194+voidnull000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Арт <123451459+JustArt1m@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aidenkrz <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 AsnDen <75905158+AsnDen@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 BombasterDS <deniskaporoshok@gmail.com>
# SPDX-FileCopyrightText: 2025 BombasterDS2 <shvalovdenis.workmail@gmail.com>
# SPDX-FileCopyrightText: 2025 Callmore <22885888+Callmore@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Errant <35878406+Errant-4@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Ilya246 <ilyukarno@gmail.com>
# SPDX-FileCopyrightText: 2025 John Willis <143434770+CerberusWolfie@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 MarkerWicker <markerWicker@proton.me>
# SPDX-FileCopyrightText: 2025 Quantum-cross <7065792+Quantum-cross@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Rouden <149893554+Roudenn@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Roudenn <romabond091@gmail.com>
# SPDX-FileCopyrightText: 2025 SX-7 <sn1.test.preria.2002@gmail.com>
# SPDX-FileCopyrightText: 2025 Samuka-C <47865393+Samuka-C@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Scruq445 <storchdamien@gmail.com>
# SPDX-FileCopyrightText: 2025 Ted Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Theodore Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Zekins <zekins3366@gmail.com>
# SPDX-FileCopyrightText: 2025 Timfa <timfalken@hotmail.com>
# SPDX-FileCopyrightText: 2025 chromiumboy <50505512+chromiumboy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 crasg <109207982+Scruq445@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 gluesniffler <linebarrelerenthusiast@gmail.com>
# SPDX-FileCopyrightText: 2025 lzk <124214523+lzk228@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 nnif <finn@boatspeed.info>
# SPDX-FileCopyrightText: 2025 nnif1 <86371691+nnif1@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 pheenty <fedorlukin2006@gmail.com>
# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  parent: [BaseMob, StripableInventoryBase]
  id: BaseBorgChassisNotIonStormable
  name: cyborg
  description: A man-machine hybrid that assists in station activity. They love being asked to state their laws over and over.
  save: false
  abstract: true
  components:
  - type: Reactive
    groups:
      Acidic: [Touch]
  - type: DamageOnHighSpeedImpact
    damage:
      types:
        Blunt: 5
    soundHit:
      collection: MetalThud
  - type: CombatMode
  - type: NoSlip
  - type: StaticPrice
    price: 1250
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.35
        density: 300
        mask:
        - MobMask
        layer:
        - MobLayer
  - type: MovementSpeedModifier
    baseWalkSpeed : 2.5
    baseSprintSpeed : 4.5
  - type: Sprite
    sprite: Mobs/Silicon/chassis.rsi
  - type: RotationVisuals
    horizontalRotation: 90
  - type: MobState
    allowedStates:
    - Alive
    - Critical
    - Dead
  - type: MobThresholds
    thresholds:
      0: Alive
      100: Critical
      200: Dead
    stateAlertDict:
      Alive: BorgHealth
      Critical: BorgCrit
      Dead: BorgDead
    showOverlays: false
    allowRevives: true
  - type: HealthExaminable
    examinableTypes:
      - Blunt
      - Slash
      - Piercing
      - Heat
      - Shock
    locPrefix: silicon
  - type: UserInterface
    interfaces:
      enum.SiliconLawsUiKey.Key:
        type: SiliconLawBoundUserInterface
        requireInputValidation: false
      enum.BorgUiKey.Key:
        type: BorgBoundUserInterface
      enum.StrippingUiKey.Key:
        type: StrippableBoundUserInterface
      # Only used for NT borgs that can switch type, defined here to avoid copy-pasting the rest of this component.
      enum.BorgSwitchableTypeUiKey.SelectBorgType:
        type: BorgSelectTypeUserInterface
      # Goobstation - Add the station map interface to the borg
      enum.StationMapUiKey.Key:
        type: StationMapBoundUserInterface
  # Goobstation - Add the station map interface to the borg
  - type: IntrinsicUI
    uis:
      enum.StationMapUiKey.Key:
        toggleAction: ActionShowStationMap
  - type: StationMap # Also Goobstation - Show location on the map
  - type: Targeting # Shitmed Change
  - type: ActivatableUI
    key: enum.BorgUiKey.Key
  - type: SiliconLawBound
  - type: ActionGrant
    actions:
    - ActionViewLaws
  - type: EmagSiliconLaw
    stunTime: 5
  - type: SiliconLawProvider
    laws: Crewsimov
  - type: Inventory
    templateId: borg
  - type: Hands
    showInHands: false
    disableExplosionRecursion: true
    canBeStripped: false
  - type: ComplexInteraction
  - type: IntrinsicRadioReceiver
  - type: IntrinsicRadioTransmitter
    channels:
    # - Binary # Goobstation - replaced with collective mind
    - Common
    - Science
  - type: ActiveRadio
    channels:
    # - Binary # Goobstation - replaced with collective mind
    - Common
    - Science
  # Goobstation
  - type: CollectiveMind
    defaultChannel: Binary
    channels:
    - Binary
    canUseInCrit: true # Goobstation
  - type: ZombieImmune
  - type: Repairable
    doAfterDelay: 10
    # allowSelfRepair: false # Goobstation
  - type: BorgChassis
  - type: LockingWhitelist
    blacklist:
      components:
      - RoboticsConsole
  - type: WiresPanel
    openingTool: Screwing #Goob Edit
  - type: ActivatableUIRequiresPanel
  - type: NameIdentifier
    group: Silicon
  - type: ContainerContainer
    containers:
      borg_brain: !type:ContainerSlot { }
      cell_slot: !type:ContainerSlot { }
      borg_module: !type:Container { }
      part-container: !type:Container
  - type: PowerCellSlot
    cellSlotId: cell_slot
    fitsInCharger: true
  - type: ItemToggle
    onActivate: false # You should not be able to turn off a borg temporarily.
    activated: false # gets activated when a mind is added
    onUse: false # no item-borg toggling sorry
  - type: ItemTogglePointLight
  - type: AccessToggle
  # TODO: refactor movement to just be based on toggle like speedboots but for the boots themselves
  # TODO: or just have sentient speedboots be fast idk
  - type: PowerCellDraw
    drawRate: 0.6
  # no ToggleCellDraw since dont want to lose access when power is gone
  - type: ItemSlots
    slots:
      cell_slot:
        name: power-cell-slot-component-slot-name-default
  - type: Body
    bodyType: Simple
  - type: StatusEffects
    allowed:
    - Stun
    - KnockedDown
    - SlowedDown
    - Flashed
  - type: TypingIndicator
    proto: robot
  - type: Speech
    speechVerb: Robotic
    speechSounds: Borg
    allowedEmotes: # Goobstation - Cyborg emote sounds
    - Laugh
    - Sigh
    - Crying
    - Whistle
  - type: Vocal
    sounds:
      Unsexed: UnisexSilicon
    wilhelmProbability: 0
  - type: DamagedSiliconAccent
  - type: UnblockableSpeech
  - type: FootstepModifier
    footstepSoundCollection:
      collection: FootstepBorg
  - type: Construction
    graph: Cyborg
    node: cyborg
    containers:
    - part-container
    - cell_slot
  - type: Lock
    locked: true
    unlockOnClick: false
  - type: ActivatableUIRequiresLock
  - type: LockedWiresPanel
  - type: Damageable
    damageContainer: Silicon
    damageModifierSet: Silicon #Goobstation - Iondamage
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 75
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          path: /Audio/Machines/warning_buzzer.ogg
          params:
            volume: 5
    - trigger:
        !type:DamageTrigger
        damage: 300
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          collection: MetalBreak
      - !type:EmptyContainersBehaviour
        containers:
        - borg_brain
        - borg_module
        - cell_slot
      - !type:DoActsBehavior
        acts: [ "Destruction" ]
  - type: HandheldLight
    toggleOnInteract: false
    wattage: 0.2
    blinkingBehaviourId: blinking
    radiatingBehaviourId: radiating
  - type: LightBehaviour
    behaviours:
      - !type:FadeBehaviour
        id: radiating
        maxDuration: 2.0
        startValue: 3.0
        endValue: 2.0
        isLooped: true
        reverseWhenFinished: true
      - !type:PulseBehaviour
        id: blinking
        interpolate: Nearest
        maxDuration: 1.0
        startValue: 0.1
        endValue: 2.0
        isLooped: true
  - type: ToggleableVisuals
    spriteLayer: light
  - type: PointLight
    enabled: false
    mask: /Textures/Effects/LightMasks/cone.png
    autoRot: true
    radius: 4
    netsync: false
  - type: Pullable
  - type: Puller
    needsHands: false
  - type: StandingState
  - type: Tag
    tags:
    - DoorBumpOpener
    - FootstepSound
    - CanPilot
    - Unimplantable
    - SiliconMob
    - IPCDrinkBlacklist # Goobstation - Energycrit: Don't let self antagging IPCs steal power from borgs.
    - SiliconEmotes
  - type: Emoting
  - type: GuideHelp
    guides:
    - Cyborgs
    - Robotics
  - type: LanguageKnowledge # Einstein Engines - Languages
    speaks:
    - TauCetiBasic
    - RobotTalk
    understands:
    - TauCetiBasic
    - RobotTalk
  - type: ProtectedFromStepTriggers
  - type: DamageOnInteractProtection
    damageProtection:
      flatReductions:
        Heat: 10 # capable of touching light bulbs and stoves without feeling pain!
  - type: Penetratable # Goobstation - Better snipers
    penetrateDamage: 75 # It's harder to kill iron golem
    damagePenalty: 0.25
  - type: MiningPoints # goobstation borgs can claim mining points
  - type: SpeechSynthesis # Corvax-Frontier-Barks
    voice: Borg

- type: entity
  abstract: true
  parent: BaseBorgChassisNotIonStormable
  id: BaseBorgChassis
  components:
  - type: IonStormTarget

- type: entity
  abstract: true
  id: BaseBorgTransponder
  components:
  - type: BorgTransponder
  - type: DeviceNetwork
    deviceNetId: Wireless
    receiveFrequencyId: CyborgControl
    transmitFrequencyId: RoboticsConsole
    savableAddress: false
  - type: OnUseTimerTrigger
    delay: 10
    examinable: false
    beepSound:
      path: /Audio/Effects/Cargo/buzz_two.ogg
      params:
        volume: -4
  # prevent any funnies if someone makes a cyborg item...
  - type: AutomatedTimer
  - type: ExplodeOnTrigger
  # explosion does most of its damage in the center and less at the edges
  - type: Explosive
    explosionType: Minibomb
    deleteAfterExplosion: false # let damage threshold gib the borg
    totalIntensity: 30
    intensitySlope: 20
    maxIntensity: 20
    canCreateVacuum: false # its for killing the borg not the station

- type: entity
  abstract: true
  parent: BaseBorgTransponder
  id: BaseXenoborgTransponder
  components:
  - type: DeviceNetwork
    receiveFrequencyId: Xenoborg
    transmitFrequencyId: Mothership
  - type: SurveillanceCamera # they act like cameras for the mothership
    networkSet: true
    nameSet: True
    mobile: True # Goobstation - mobile cameras fix, borg camera not really relevant since monitor doesn't see it anyways but eh
    id: Xenoborg
  - type: Explosive
    explosionType: Minibomb
    deleteAfterExplosion: false # let damage threshold gib the borg
    totalIntensity: 200 # bigger kaboom
    intensitySlope: 20
    maxIntensity: 100
    canCreateVacuum: false

- type: entity
  id: BaseBorgChassisNT
  parent: [BaseBorgChassis, BaseBorgTransponder]
  abstract: true
  components:
  - type: RandomMetadata
    nameSegments:
    - NamesBorg
  - type: NpcFactionMember
    factions:
    - NanoTrasen
  - type: SiliconLawProvider
    laws: CrewsimovBorg # Goobstation - AI/borg law changes - borgs obeying AI
  - type: Access
    enabled: false
    groups:
    - AllAccess
    tags:
    - Borg
  - type: AccessReader
    access: [["Command"], ["Research"]]
  - type: SlavedBorg # DeltaV: NT borgs are enslaved to the AI by default
    law: ObeyAI
  - type: ShowJobIcons
  - type: StationAiVision # Goobstation - AI can see through NT silicon
    range: 3
  - type: InteractionPopup
    interactSuccessSound:
      path: /Audio/Ambience/Objects/periodic_beep.ogg

- type: entity
  id: BaseBorgChassisSyndicate
  parent: BaseBorgChassis
  abstract: true
  components:
  - type: NpcFactionMember
    factions:
    - Syndicate
  - type: Access
    tags:
    - NuclearOperative
    - SyndicateAgent
  - type: AccessReader
    access: [["SyndicateAgent"], ["NuclearOperative"]]
  - type: SiliconLawProvider
    laws: SyndicateStatic
    subverted: true
  - type: IntrinsicRadioTransmitter
    channels:
    # - Binary  # Goobstation - replaced with collective mind
    - Syndicate
  - type: ActiveRadio
    channels:
    - Syndicate
  - type: ShowSyndicateIcons
  - type: MovementAlwaysTouching
  - type: Speech
    speechSounds: SyndieBorg
    allowedEmotes:
    - Laugh
    # Goobstation - Cyborg emote sounds
    - Sigh
    - Crying
    - Whistle
    # end Goobstation - Cyborg emote sounds
  - type: Vocal
    sounds:
      Unsexed: UnisexSiliconSyndicate
  - type: PointLight
    color: "#dd200b"
  - type: Damageable #Goobstation - Ion Damage
    damageContainer: Silicon
    damageModifierSet: SiliconProtected
  - type: ExplosionResistance #Goobstation - Ion Damage
    damageCoefficient: 0.5
  - type: FlashImmunity
  - type: SpeechSynthesis # Corvax-Frontier-Barks
    voice: BorgSyndie

- type: entity
  id: BaseBorgChassisDerelict
  parent: BaseBorgChassis
  abstract: true
  components:
  - type: NpcFactionMember
    factions:
    - NanoTrasen #The seemingly best fit. It was a regular NT cyborg once, after all.
  - type: Access
    enabled: false
    groups:
    - AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it..
  - type: AccessReader
    access: [["Command"], ["Research"]]
  - type: StartIonStormed
    ionStormAmount: 3
  - type: IonStormTarget
    chance: 1
  - type: ShowJobIcons

- type: entity
  parent: BaseBorgChassisNotIonStormable
  id: BaseXenoborgChassis
  name: xenoborg
  description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army.
  save: false
  abstract: true
  components:
  - type: RandomMetadata
    nameSegments:
    - NamesXenoborg
  - type: Sprite
    sprite: Mobs/Silicon/chassis.rsi
  - type: MobThresholds
    thresholds: # slightly tankier than a normal borg
      0: Alive
      125: Critical
      250: Dead
  - type: EmagSiliconLaw # should xenoborgs be emagable?
    stunTime: 5
  - type: SiliconLawProvider
    laws: XenoborgLawset # custom laws here
    subverted: true
  - type: IntrinsicRadioReceiver # Goob - moved binary to CM
  - type: CollectiveMind
    defaultChannel: Binary
    channels:
    - Binary
  - type: IntrinsicRadioTransmitter # can only use binary and xenoborg channel
    channels:
    - Xenoborg
  - type: ActiveRadio # but can hear the mothership channel
    channels:
    - Mothership
    - Xenoborg
  - type: Repairable
    doAfterDelay: 13 # 25% more HP, so 30% more time to heal
  - type: BorgChassis
    maxModules: 0
    hasMindState: robot_e
    noMindState: robot_e_r
    moduleWhitelist:
      tags:
      - XenoborgModuleGeneric
  - type: TypingIndicator
    proto: xenoborg
  - type: Speech
    speechVerb: Robotic
    speechSounds: Xenoborg
    allowedEmotes:
    - Laugh
    # Goobstation - Cyborg emote sounds
    - Sigh
    - Crying
    - Whistle
    # end Goobstation - Cyborg emote sounds
  - type: Vocal
    sounds:
      Unsexed: UnisexSiliconXenoborg
    screamAction: null
  - type: DamagedSiliconAccent
  - type: UnblockableSpeech
  - type: FootstepModifier
    footstepSoundCollection:
      collection: FootstepXenoborg
  # - type: SpamEmitSound # makes a creppy noise randomly
  #   minInterval: 30
  #   maxInterval: 45
  #   sound:
  #     path: /Audio/Machines/genetics.ogg
  #     params:
  #       volume: -8
  #       maxDistance: 5
  #       variation: 0.05
  - type: NpcFactionMember
    factions:
    - Xenoborg
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 90
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          path: /Audio/Machines/warning_buzzer.ogg
          params:
            volume: 5
    - trigger:
        !type:DamageTrigger
        damage: 375
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          collection: MetalBreak
      - !type:EmptyContainersBehaviour
        containers:
        - borg_brain
        - borg_module
        - cell_slot
      - !type:DoActsBehavior
        acts: [ "Destruction" ]
  - type: PointLight
    color: "#0033ff"
  - type: GuideHelp
    guides:
    - Cyborgs
    - Robotics
    # TODO: add Xenoborg guide (part 7 spoilers)
  - type: Access
    enabled: false
    tags:
    - Xenoborg
  - type: AccessReader
    access: [["Xenoborg"]]
  - type: ShowJobIcons # not sure if it is needed
  - type: InteractionPopup
    interactSuccessSound:
      path: /Audio/Ambience/Objects/periodic_beep.ogg
