- type: entity
  id: BlueprintReceiverBase
  abstract: true
  components:
  - type: BlueprintReceiver
    whitelist:
      tags:
      - BlueprintAutolathe
  - type: ContainerContainer
    containers:
      machine_board: !type:Container
      machine_parts: !type:Container
      blueprint: !type:Container
  - type: EmptyOnMachineDeconstruct
    containers:
    - blueprint

- type: entity
  parent: [ BlueprintReceiverBase, BaseLatheLube ]
  id: ServiceTechFab
  name: service techfab
  description: Prints equipment for service staff.
  components:
  - type: Sprite
    netsync: false
    sprite: Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: service
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: ServiceTechFabCircuitboard
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFServiceTechfabDeprecatedStatic
    dynamicPacks:
    - NFServiceTechfabDeprecated
  - type: EmagLatheRecipes
    emagStaticPacks:
    - NFServiceTechfabDeprecatedEmagStatic
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  parent: [ BlueprintReceiverBase, BaseLatheLube ]
  id: EngineeringTechFab
  name: engineering techfab
  description: Prints equipment for engineers.
  components:
  - type: Sprite
    netsync: false
    sprite: Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: engi
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: EngineeringTechFabCircuitboard
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFEngineeringTechfabDeprecatedStatic
    # Mono
    - GasMiningStatic
    - AutomationStatic
    # Mono End
    dynamicPacks:
    - NFEngineeringTechfabDeprecated
    - RCD # Mono
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  parent: [ BlueprintReceiverBase, BaseLatheLube ]
  id: SalvageTechfabNF
  name: salvage techfab
  description: Prints equipment for salvagers.
  components:
  - type: Sprite
    netsync: false
    sprite: _NF/Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: salvage
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: SalvageTechFabCircuitboardNF
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFSalvageTechfabDeprecatedStatic
    dynamicPacks:
    - NFSalvageTechfabDeprecated
  - type: EmagLatheRecipes
    emagStaticPacks:
    - NFSalvageTechfabDeprecatedEmag
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  id: NfsdTechFab
  parent: [ BlueprintReceiverBase, SecurityTechFab ]
  name: TSFMC techfab
  description: Prints equipment for use by TSFMC.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: nfsd
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: NfsdTechFabCircuitboard
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFNfsdTechfabDeprecatedStatic
    - StaticAmmoRecipePack
    - RoundstartShipgunAmmo # Mono
    dynamicPacks:
    - NFNfsdTechfabDeprecated
    - DynamicAmmoRecipePack
    # Mono start
    - MonoTSFWeaponsDynamicMelee
    - MonoTSFWeaponsDynamicRanged
    - MonoTSFMiscDynamic
    - UniversalShellAmmo
    - UniversalRailgunAmmo
    - UniversalMissileAmmo
    - UniversalOrdinance
    - ResearchedExplosives
    # Mono end
  - type: EmagLatheRecipes
    emagStaticPacks:
    - NFNfsdTechfabDeprecatedEmag
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  id: MercenaryTechFab
  parent: [ BlueprintReceiverBase, BaseLatheLube ]
  name: mercenary techfab
  description: Prints the bare minimum of tools of the trade that any budget mercenary or private security could need. Nothing fancy.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: mercenary
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: MercenaryTechFabCircuitboardNF
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFMercenaryTechfabDeprecatedStatic
    - StaticAmmoRecipePack
    - MonoRestraintsStatic # Mono
    - RoundstartShipgunAmmo # Mono
    dynamicPacks:
    - NFMercenaryTechfabDeprecated
    - DynamicAmmoRecipePack
    # Mono start
    - MonoTSFWeaponsDynamicMelee
    - MonoTSFWeaponsDynamicRanged
    - MonoTSFMiscDynamic
    - MonoRogueWeaponsDynamicMelee
    - MonoRogueWeaponsDynamicRanged
    - MonoRogueMiscDynamic
    - MonoUSSPMiscDynamic
    - MonoUSSPWeaponsDynamicRanged
    # Universal shit (stuff like shipgun ammo)
    - UniversalRailgunAmmo
    - UniversalMissileAmmo
    - UniversalShellAmmo
    - UniversalOrdinance
    - SecurityEquipment
    - SmartGun #Smart SMG
    # Mono end
  - type: EmagLatheRecipes
    emagStaticPacks:
    - NFMercenaryTechfabDeprecatedEmag
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  id: MercenaryTechFabHacked
  parent:
  - MercenaryTechFab
  - BaseHyperlathe
  - PunkHoloGraffitiOverlay # Prototype can be located at /Resources/Prototypes/_NF/Entities/Structures/Holographic/graffiti.yml
  name: hacked mercenary techfab
  description: Prints the bare minimum of tools of the trade that any budget mercenary or private security could need. Nothing fancy.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/techfab.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: mercenary
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
    - sprite: _NF/Structures/Holo/graffiti/simple.rsi
      state: holograffiti01
      map: [ "graffiti" ]
      shader: unshaded
      scale: 0.7, 0.7
  - type: Machine
    board: MercenaryTechFabCircuitboardHackedNF
  - type: PointLight
    radius: 1.5
    energy: 2
  - type: RgbLightController
    layers: [ 0 ]
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFHackedMercenaryTechfabDeprecatedStatic
    - StaticAmmoRecipePack
    - MonoRestraintsStatic
    - RoundstartShipgunAmmo # Mono
    dynamicPacks:
    - NFHackedMercenaryTechfabDeprecated
    - DynamicAmmoRecipePack
    - SmartGun # Goobstation
    # Mono start
    - MonoTSFWeaponsDynamicMelee
    - MonoTSFWeaponsDynamicRanged
    - MonoTSFMiscDynamic
    - MonoRogueWeaponsDynamicMelee
    - MonoRogueWeaponsDynamicRanged
    - MonoRogueMiscDynamic
    - MonoUSSPMiscDynamic
    - MonoUSSPWeaponsDynamicRanged
    # Universal shit (stuff like shipgun ammo)
    - UniversalRailgunAmmo
    - UniversalMissileAmmo
    - UniversalShellAmmo
    - UniversalOrdinance
    # Mono end
  - type: PirateBountyItem # Mono
    id: Techfab

- type: entity
  parent: [BaseStructureDisableToolUse, BaseLathe]
  id: PrizeCounter
  name: prize counter
  description: Claim your prize and win some toys and cute plushies!
  components:
  - type: AmbientOnPowered
  - type: AmbientSound
    volume: -9
    range: 3
    enabled: false
    sound:
      path: /Audio/Ambience/Objects/vending_machine_hum.ogg
  - type: LitOnPowered
  - type: ApcPowerReceiver
    powerLoad: 200
  - type: Advertise
    pack: CuddlyCritterAds
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#4b93ad"
  - type: Transform
    noRot: false
  - type: Sprite
    sprite: _NF/Structures/Machines/prizecounter.rsi
    snapCardinals: true
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Lathe
    idleState: icon
    runningState: icon
    staticPacks:
    - NFPrizeCounterStatic
  - type: EmagLatheRecipes
    emagStaticPacks:
    - NFPrizeCounterEmag
  - type: MaterialStorage
    whitelist:
      tags:
        - PrizeTicket

- type: entity
  id: BlueprintLithograph
  parent: BaseLatheLube
  name: blueprint lithograph
  description: Prints blueprints.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/blueprint_printer.rsi
    snapCardinals: true
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: unlit
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: BlueprintLithographMachineCircuitboard
  - type: Lathe
    producingSound: /Audio/Machines/circuitprinter.ogg
    idleState: icon
    runningState: building
    staticPacks:
    - PowerCellsStatic
    dynamicPacks:
    - NFBlueprints
  - type: RequireProjectileTarget

- type: entity
  id: ScrapProcessor
  parent: BaseLatheLube
  name: scrap processor
  description: It produces sheets and ingots using scrap.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/scrap_processor.rsi
    layers:
    - state: icon
      map: ["enum.LatheVisualLayers.IsRunning"]
    - state: unshaded
      shader: unshaded
      map: ["enum.PowerDeviceVisualLayers.Powered"]
    - state: inserting
      map: ["enum.MaterialStorageVisualLayers.Inserting"]
    - state: panel
      map: ["enum.WiresVisualLayers.MaintenancePanel"]
  - type: Machine
    board: NFScrapProcessorCircuitboard
  - type: MaterialStorage
    whitelist:
      tags:
      - Ore
  - type: Lathe
    idleState: icon
    runningState: building
    unlitIdleState: unshaded
    unlitRunningState: building-unshaded
    defaultProductionAmount: 10
    productValueModifier: null
    staticPacks:
    - NFScrapStatic

- type: entity
  id: BiogeneratorFill
  parent: Biogenerator
  name: biogenerator
  suffix: Biomass, 50
  components:
  - type: MaterialStorage
    storage:
      Biomass: 50
