From: Nox Date: Fri, 25 Apr 2025 02:29:16 +0000 (-0700) Subject: Cyborg Rebalance (#34186) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=a92ad620b247ce1845a2e4239b21a264a1c6bf4f;p=space-station-14.git Cyborg Rebalance (#34186) Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> --- diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/science.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/science.yml index ddc31c946e..ad840c306b 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/science.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/science.yml @@ -107,19 +107,12 @@ state: generic - type: RandomSpawner rarePrototypes: - - BorgModuleDefibrillator + - BorgModuleAdvancedChemical - BorgModuleAdvancedCleaning - - BorgModuleClowning - - BorgModuleGardening - - BorgModuleHarvesting + - BorgModuleAdvancedTool + rareChance: 0.1 prototypes: - - BorgModuleCable - BorgModuleFireExtinguisher - - BorgModuleGPS - - BorgModuleRadiationDetection - - BorgModuleTool - - BorgModuleArtifact - - BorgModuleAnomaly chance: 0.9 offset: 0.2 diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 934e9d3674..8b8007368b 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -474,7 +474,6 @@ borg_module: - BorgModuleTool - BorgModuleFireExtinguisher - - BorgModuleGPS - type: ItemSlots slots: cell_slot: diff --git a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml index e8061c5913..fe2103195e 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml @@ -39,6 +39,8 @@ parent: Holoprojector id: HoloprojectorBorg suffix: borg + name: holosign projector + description: A modified holographic sign projector for use in custodial cyborgs. Automatically self-charges. components: - type: HolosignProjector chargeUse: 240 @@ -83,6 +85,20 @@ cell_slot: name: power-cell-slot-component-slot-name-default +- type: entity + parent: HolofanProjector + id: HolofanProjectorBorg + name: integrated holofan + description: Stops idiots from causing more crew harm during atmospheric emergencies. Installed directly into an engineering cyborg, it recharges over time. + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + disableEject: true + swap: false + - type: entity parent: Holoprojector id: HoloprojectorField diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml index 59d8ed1922..5676c49324 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/glass.yml @@ -197,6 +197,15 @@ Quantity: 0.5 canReact: false +- type: entity + parent: SheetRGlass + id: SheetRGlassLingering0 + suffix: Lingering, 0 + components: + - type: Stack + lingering: true + count: 0 + - type: entity parent: SheetGlassBase id: SheetPGlass @@ -327,6 +336,15 @@ stackType: ReinforcedPlasmaGlass count: 1 +- type: entity + parent: SheetRPGlass + id: SheetRPGlassLingering0 + suffix: Lingering, 0 + components: + - type: Stack + lingering: true + count: 0 + - type: entity parent: SheetGlassBase id: SheetUGlass diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml index 2156124749..bd22eee691 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml @@ -229,3 +229,12 @@ - type: Stack stackType: Plasteel count: 1 + +- type: entity + parent: SheetPlasteel + id: SheetPlasteelLingering0 + suffix: Lingering, 0 + components: + - type: Stack + lingering: true + count: 0 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml index 4bc98a4d4b..4a37e18ccf 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml @@ -132,6 +132,16 @@ - type: Stack count: 1 +- type: entity + parent: SheetPlasma + id: SheetPlasmaLingering0 + name: plasma + suffix: 0, Lingering + components: + - type: Stack + lingering: true + count: 0 + - type: entity parent: SheetOtherBase id: SheetPlastic diff --git a/Resources/Prototypes/Entities/Objects/Materials/parts.yml b/Resources/Prototypes/Entities/Objects/Materials/parts.yml index 1106ce057c..44d72cda12 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/parts.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/parts.yml @@ -117,3 +117,21 @@ - type: Stack lingering: true count: 0 + +- type: entity + parent: FloorTileItemWhite + id: FloorTileItemWhiteLingering0 + suffix: Lingering, 0 + components: + - type: Stack + lingering: true + count: 0 + +- type: entity + parent: FloorTileItemDark + id: FloorTileItemDarkLingering0 + suffix: Lingering, 0 + components: + - type: Stack + lingering: true + count: 0 diff --git a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml index 4b4200fed8..696c312871 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml @@ -75,6 +75,20 @@ materialComposition: Steel: 100 +- type: entity + parent: FireExtinguisher + id: BorgFireExtinguisher + name: maneuvering jet + description: Based on fire extinguisher technology, the maneuvering jet is... well yes, its just a bigger fire extinguisher. + components: + - type: SolutionContainerManager + solutions: + spray: + maxVol: 200 + reagents: + - ReagentId: Water + Quantity: 200 + - type: entity name: extinguisher spray id: ExtinguisherSpray diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml index e8a5ff22bb..b692f20dd9 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml @@ -100,6 +100,36 @@ tags: - Spray +- type: entity + parent: SprayBottle + id: BorgSprayBottle + name: internal spray jet + suffix: Filled + description: A pressurized vessel for spraying reagents, installed directly into a custodial cyborg. Typically filled with space cleaner for dealing with those nasty spills. + components: + - type: SolutionContainerManager + solutions: + spray: + maxVol: 200 + reagents: + - ReagentId: SpaceCleaner + Quantity: 200 + +- type: entity + parent: MegaSprayBottle + id: BorgMegaSprayBottle + name: adv. internal spray jet + suffix: Filled + description: An upgraded version of the integrated spray bottle, installed directly into a custodial cyborg. Typically filled with space cleaner for dealing with those nasty spills. + components: + - type: SolutionContainerManager + solutions: + spray: + maxVol: 500 + reagents: + - ReagentId: SpaceCleaner + Quantity: 500 + # Vapor - type: entity id: Vapor diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml index 9927d836ba..31d8d629ce 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml @@ -64,3 +64,14 @@ quickInsert: true areaInsert: true areaInsertRadius: 5 + +- type: entity + parent: TrashBag + id: BorgTrashBag + name: internal trash bag + description: An upgraded trash bag with a larger internal volume, installed directly into a custodial cyborg. + components: + - type: Storage + maxItemSize: Huge + grid: + - 0,0,7,6 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 96eb8ed8ad..98565931fd 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -118,6 +118,15 @@ stackType: RegenerativeMesh count: 1 +- type: entity + parent: RegenerativeMesh + id: RegenerativeMeshLingering0 + suffix: 0, Lingering + components: + - type: Stack + lingering: true + count: 0 + - type: entity name: bruise pack description: A therapeutic gel pack and bandages designed to treat blunt-force trauma. @@ -219,6 +228,15 @@ stackType: MedicatedSuture count: 1 +- type: entity + parent: MedicatedSuture + id: MedicatedSutureLingering0 + suffix: 0, Lingering + components: + - type: Stack + lingering: true + count: 0 + - type: entity name: blood pack description: Contains a groundbreaking universal blood replacement created by Nanotrasen's advanced medical science. @@ -272,6 +290,7 @@ components: - type: Stack lingering: true + count: 10 - type: entity parent: BaseHealingItem diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 0c73a5a5c9..73d90a856c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -244,7 +244,7 @@ - state: base-part-inhand-right - state: base-stripes-inhand-right color: "#7B0F12" - + - type: entity id: BaseBorgModuleSyndicateAssault @@ -278,6 +278,7 @@ id: BorgModuleCable parent: [ BaseBorgModule, BaseProviderBorgModule ] name: cable cyborg module + description: A universal cyborg module which allows the unit to install and manipulate electrical systems. components: - type: Sprite layers: @@ -289,6 +290,7 @@ - CableMVStackLingering10 - CableHVStackLingering10 - Wirecutter + - Crowbar - trayScanner - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: wire-module } @@ -296,7 +298,8 @@ - type: entity id: BorgModuleFireExtinguisher parent: [ BaseBorgModule, BaseProviderBorgModule ] - name: fire extinguisher cyborg module + name: thruster cyborg module + description: NT assigned a team to design a jetpack for cyborg units, but they ran out of funding and just made a bigger fire extinguisher. It comes with a integrated GPS and mass scanner though! components: - type: Sprite layers: @@ -304,41 +307,11 @@ - state: icon-fire-extinguisher - type: ItemBorgModule items: - - FireExtinguisher - - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: extinguisher-module } - -- type: entity - id: BorgModuleGPS - parent: [ BaseBorgModule, BaseProviderBorgModule ] - name: GPS cyborg module - components: - - type: Sprite - layers: - - state: generic - - state: icon-gps - - type: ItemBorgModule - items: - - HandheldGPSBasic + - BorgFireExtinguisher + - BorgHandheldGPSBasic - HandHeldMassScannerBorg - - HandheldStationMapUnpowered - - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: gps-module } - -- type: entity - id: BorgModuleRadiationDetection - parent: [ BaseBorgModule, BaseProviderBorgModule ] - name: radiation detection cyborg module - components: - - type: Sprite - layers: - - state: generic - - state: icon-radiation - - type: ItemBorgModule - items: - - GeigerCounter - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: geiger-module } + icon: { sprite: Interface/Actions/actions_borg.rsi, state: extinguisher-module } - type: entity id: BorgModuleTool @@ -355,8 +328,8 @@ - Wrench - Screwdriver - Wirecutter - - Multitool - WelderIndustrial + - Multitool - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: tool-module } @@ -373,6 +346,11 @@ - type: ItemBorgModule items: - AppraisalTool + - Pen + - HandLabeler + - RubberStampApproved + - RubberStampDenied + - RadioHandheld - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: appraisal-module } @@ -390,15 +368,33 @@ - MiningDrill - Shovel - MineralScannerUnpowered - - OreBag - - RadioHandheld + - BorgOreBag - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: mining-module } - type: entity - id: BorgModuleGrapplingGun + id: BorgModuleAdvancedMining + parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ] + name: advanced mining cyborg module + description: Advanced cargo module containing advanced mining equipment. Studies show it advances productivity of a cyborg by 150%. + components: + - type: Sprite + layers: + - state: cargo + - state: icon-mining-adv + - type: ItemBorgModule + items: + - MiningDrillDiamond + - Shovel + - AdvancedMineralScannerUnpowered + - OreBagOfHolding + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-mining-module } + +- type: entity + id: BorgModuleTraversal parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ] - name: grappling gun cyborg module + name: traversal cyborg module components: - type: Sprite layers: @@ -407,7 +403,9 @@ - type: ItemBorgModule items: - WeaponGrapplingGun - - HandheldGPSBasic + - BorgFireExtinguisher + - BorgHandheldGPSBasic + - HandHeldMassScannerBorg - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: grappling-module } @@ -416,6 +414,7 @@ id: BorgModuleAdvancedTool parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ] name: advanced tool cyborg module + description: Advanced engineering module containing cutting-edge tools. components: - type: Sprite layers: @@ -425,11 +424,9 @@ items: - JawsOfLife - PowerDrill - - Multitool - WelderExperimental - - RemoteSignaller - - GasAnalyzer - - GeigerCounter + - Multitool + - RemoteSignallerAdvanced - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-tools-module } @@ -446,15 +443,20 @@ items: - SheetSteelLingering0 - SheetGlassLingering0 + - SheetRGlassLingering0 + - SheetRPGlassLingering0 + - SheetPlasteelLingering0 - PartRodMetalLingering0 - FloorTileItemSteelLingering0 + - FloorTileItemWhiteLingering0 + - FloorTileItemDarkLingering0 - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: construction-module } - type: entity id: BorgModuleRCD parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ] - name: RCD cyborg module + name: engineering cyborg module components: - type: Sprite layers: @@ -463,14 +465,19 @@ - type: ItemBorgModule items: - RCDRecharging + - BorgFireExtinguisher + - BorgHandheldGPSBasic + - GasAnalyzer + - HolofanProjectorBorg + - GeigerCounter - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: rcd-module } # janitorial modules (this gets its own unique things because janis are epic) - type: entity - id: BorgModuleLightReplacer + id: BorgModuleCustodial parent: [ BaseBorgModuleJanitor, BaseProviderBorgModule ] - name: light replacer cyborg module + name: custodial cyborg module components: - type: Sprite layers: @@ -479,8 +486,9 @@ - type: ItemBorgModule items: - LightReplacer - - Crowbar - - Screwdriver + - BorgTrashBag + - Plunger + - SoapNT - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: light-replacer-module } @@ -496,8 +504,9 @@ - type: ItemBorgModule items: - MopItem - - Bucket - - TrashBag + - BorgBucket + - BorgSprayBottle + - HoloprojectorBorg - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: cleaning-module } @@ -505,6 +514,7 @@ id: BorgModuleAdvancedCleaning parent: [ BaseBorgModuleJanitor, BaseProviderBorgModule ] name: advanced cleaning cyborg module + description: Advanced janitorial module containing, well... advanced janitor equipment. What were you expecting? components: - type: Sprite layers: @@ -513,10 +523,10 @@ - type: ItemBorgModule items: - AdvMopItem + - BorgMegaSprayBottle - HoloprojectorBorg - - SprayBottleSpaceCleaner - - Dropper - - TrashBag + - BorgDropper + - BorgBeaker - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-cleaning-module } @@ -538,9 +548,9 @@ icon: { sprite: Interface/Actions/actions_borg.rsi, state: diagnosis-module } - type: entity - id: BorgModuleTreatment + id: BorgModuleTopicals parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] - name: treatment cyborg module + name: topicals cyborg module components: - type: Sprite layers: @@ -549,18 +559,19 @@ - type: ItemBorgModule items: - HandheldHealthAnalyzerUnpowered + - Gauze10Lingering - Brutepack10Lingering - Ointment10Lingering - - Gauze10Lingering - Bloodpack10Lingering - - Syringe + - RegenerativeMeshLingering0 + - MedicatedSutureLingering0 - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: treatment-module } - type: entity - id: BorgModuleDefibrillator + id: BorgModuleRescue parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] - name: defibrillator cyborg module + name: rescue cyborg module components: - type: Sprite layers: @@ -568,28 +579,54 @@ - state: icon-defib - type: ItemBorgModule items: + - HandheldHealthAnalyzerUnpowered - DefibrillatorOneHandedUnpowered + - BorgFireExtinguisher + - BorgHandheldGPSBasic + - HandLabeler - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: defib-module } - type: entity - id: BorgModuleAdvancedTreatment + id: BorgModuleChemical parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] - name: advanced treatment cyborg module + name: chemical cyborg module components: - type: Sprite layers: - state: medical - - state: icon-chemist + - state: icon-chem - type: ItemBorgModule items: - HandheldHealthAnalyzerUnpowered - - Beaker - - Beaker + - Syringe - BorgDropper + - BorgVial + - BorgVial + - BorgVial + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: chem-module } + +- type: entity + id: BorgModuleAdvancedChemical + parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] + name: advanced chemical cyborg module + description: Advanced medical module containing the cyborg adaptation of the highly coveted hypospray. Now your cyborgs can inject crew-harmers with chloral hydrate even faster! + components: + - type: Sprite + layers: + - state: medical + - state: icon-chemist + - type: ItemBorgModule + items: + - HandheldHealthAnalyzerUnpowered - BorgHypo + - Syringe + - BorgDropper + - BorgBeaker + - BorgBeaker - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-diagnosis-module } + icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-chem-module } # science modules # todo: if science ever gets their own custom robot, add more "sci" modules. @@ -605,11 +642,11 @@ - type: ItemBorgModule items: - NodeScanner - - Multitool - - Wrench - SprayBottle - - Beaker - - Syringe + - GasAnalyzer + - BorgDropper + - BorgVial + - GeigerCounter - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: node-scanner-module } @@ -627,8 +664,9 @@ - AnomalyScanner - AnomalyLocatorUnpowered - AnomalyLocatorWideUnpowered - - RemoteSignaller - - Multitool + - HandLabeler + - SheetRGlassLingering0 + - SheetRPGlassLingering0 - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: anomaly-module } @@ -645,11 +683,12 @@ - type: ItemBorgModule items: - Pen - - BooksBag + #- BooksBag (Add back when hand whitelisting exists, at the moment they can only use it like an orebag.) - HandLabeler - - Lighter - - DrinkShaker + - RubberStampApproved + - RubberStampDenied - BorgDropper + - BorgVial - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: service-module } diff --git a/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml b/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml index a36bfaf676..87643773db 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Salvage/ore_bag.yml @@ -26,3 +26,13 @@ - ArtifactFragment - Ore - type: Dumpable + +- type: entity + parent: OreBag + id: BorgOreBag + name: integrated ore bag + description: A large ore bag built into the frame of a mining cyborg. + components: + - type: Storage + grid: + - 0,0,9,5 diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry-vials.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry-vials.yml index 69da415a48..60441bb475 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry-vials.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry-vials.yml @@ -103,6 +103,63 @@ solution: beaker - type: DnaSubstanceTrace +- type: entity + parent: BaseItem + id: BorgVial + name: integrated vial + description: An internal compartment installed into a cyborg. Rated for 30 units of any liquid. + components: + # All this shit is here to avoid inheriting breakable, since borgs can't replace broken vials. + - type: Sprite + sprite: Objects/Specific/Chemistry/vial.rsi + layers: + - state: vial-1 + - state: vial-1-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 6 + fillBaseName: vial-1- + inHandsMaxFillLevels: 4 + inHandsFillBaseName: -fill- + - type: Drink + solution: beaker + - type: SolutionContainerManager + solutions: + beaker: + maxVol: 30 + - type: MixableSolution + solution: beaker + - type: RefillableSolution + solution: beaker + - type: DrainableSolution + solution: beaker + - type: ExaminableSolution + solution: beaker + - type: DrawableSolution + solution: beaker + - type: SolutionTransfer + maxTransferAmount: 30 + canChangeTransferAmount: true + - type: SolutionItemStatus + solution: beaker + - type: UserInterface + interfaces: + enum.TransferAmountUiKey.Key: + type: TransferAmountBoundUserInterface + - type: Item + size: Tiny + sprite: Objects/Specific/Chemistry/vial.rsi + shape: + - 0,0,0,0 + - type: MeleeWeapon + soundNoDamage: + path: "/Audio/Effects/Fluids/splat.ogg" + damage: + types: + Blunt: 0 + - type: entity id: VestineChemistryVial parent: BaseChemistryEmptyVial @@ -149,7 +206,7 @@ reagents: - ReagentId: Chlorine Quantity: 5 - + - type: entity id: PlasmaChemistryVial parent: BaseChemistryEmptyVial diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index 0ccc42f54a..ce945ac95b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -94,6 +94,64 @@ price: 30 - type: DnaSubstanceTrace +- type: entity + parent: BaseItem + id: BorgBeaker + name: integrated beaker + description: An internal compartment installed into a cyborg. Rated for 50 units of any liquid. + components: + # 3 morbillion components are to avoid inheriting breakable since borgs can't replace beakers. + - type: Tag + tags: + - GlassBeaker + - type: Sprite + sprite: Objects/Specific/Chemistry/beaker.rsi + layers: + - state: beaker + - state: beaker1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: Item + sprite: Objects/Specific/Chemistry/beaker.rsi + - type: MeleeWeapon + soundNoDamage: + path: "/Audio/Effects/Fluids/splat.ogg" + damage: + types: + Blunt: 0 + - type: SolutionContainerManager + solutions: + beaker: + maxVol: 50 + - type: MixableSolution + solution: beaker + - type: FitsInDispenser + solution: beaker + - type: RefillableSolution + solution: beaker + - type: DrainableSolution + solution: beaker + - type: ExaminableSolution + solution: beaker + - type: DrawableSolution + solution: beaker + - type: InjectableSolution + solution: beaker + - type: SolutionTransfer + canChangeTransferAmount: true + - type: SolutionItemStatus + solution: beaker + - type: UserInterface + interfaces: + enum.TransferAmountUiKey.Key: + type: TransferAmountBoundUserInterface + - type: Drink + solution: beaker + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 6 + fillBaseName: beaker + - type: entity parent: BaseItem id: BaseBeakerMetallic @@ -314,10 +372,10 @@ - type: PhysicalComposition - type: entity - name: borgdropper parent: Dropper - description: Used to transfer small amounts of chemical solution between containers. Extended for use by medical borgs. id: BorgDropper + name: hydraulic pipette + description: State-of-the-art hydraulic dropper built for cyborgs. It features a higher capacity than hand-powered droppers, able to hold 15 units of liquid. components: - type: Sprite sprite: Objects/Specific/Chemistry/dropper.rsi @@ -329,7 +387,7 @@ - type: SolutionContainerManager solutions: injector: - maxVol: 10 + maxVol: 15 - type: Item sprite: Objects/Specific/Chemistry/dropper.rsi @@ -591,7 +649,7 @@ areaInsertRadius: 1 storageInsertSound: /Audio/Effects/pill_insert.ogg storageRemoveSound: /Audio/Effects/pill_remove.ogg - whitelist: + whitelist: tags: - Pill - type: Dumpable diff --git a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml index b64aa3a041..992c3313e2 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml @@ -68,3 +68,14 @@ materialComposition: Plastic: 50 - type: DnaSubstanceTrace + +- type: entity + parent: Bucket + id: BorgBucket + name: internal tank + description: The internal reservoir of a custodial cyborg, capable of holding a entire mop bucket worth of water. + components: + - type: SolutionContainerManager + solutions: + bucket: + maxVol: 500 diff --git a/Resources/Prototypes/Entities/Objects/Tools/gps.yml b/Resources/Prototypes/Entities/Objects/Tools/gps.yml index becbb638f4..990d0d0437 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gps.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gps.yml @@ -19,3 +19,9 @@ - type: Tag tags: - GPS + +- type: entity #why does this exist? Well, "global positioning system" is too long to fit in the cyborg's hand slot. + name: Integrated GPS + parent: HandheldGPSBasic + id: BorgHandheldGPSBasic + description: A miniaturized Global Positioning System for use in cyborg units. diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index d84dec120a..71c1e6bf4e 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -356,7 +356,7 @@ id: RCDRecharging parent: RCD name: experimental RCD - description: A bluespace-enhanced rapid construction device that passively generates its own compressed matter. + description: Cyborg-mounted Rapid Construction Device which creates compressed matter on the fly using an internal fabricator. suffix: AutoRecharge components: - type: LimitedCharges diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/robotics.yml b/Resources/Prototypes/Recipes/Lathes/Packs/robotics.yml index 19bff4a94e..d6d88992d7 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/robotics.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/robotics.yml @@ -11,10 +11,8 @@ - type: latheRecipePack id: BorgModulesStatic recipes: - - BorgModuleCable - - BorgModuleFireExtinguisher - - BorgModuleRadiationDetection - BorgModuleTool + - BorgModuleFireExtinguisher - type: latheRecipePack id: BorgLimbsStatic @@ -38,13 +36,8 @@ recipes: - BorgModuleAdvancedCleaning - BorgModuleAdvancedTool - - BorgModuleGPS - - BorgModuleArtifact - - BorgModuleAnomaly - - BorgModuleGardening - - BorgModuleHarvesting - - BorgModuleDefibrillator - - BorgModuleAdvancedTreatment + - BorgModuleAdvancedChemical + - BorgModuleAdvancedMining - type: latheRecipePack id: MechParts diff --git a/Resources/Prototypes/Recipes/Lathes/robotics.yml b/Resources/Prototypes/Recipes/Lathes/robotics.yml index 60b762c1f1..15f6d7ea6c 100644 --- a/Resources/Prototypes/Recipes/Lathes/robotics.yml +++ b/Resources/Prototypes/Recipes/Lathes/robotics.yml @@ -124,28 +124,20 @@ - type: latheRecipe parent: BaseBorgModuleRecipe - id: BorgModuleCable - result: BorgModuleCable + id: BorgModuleTool + result: BorgModuleTool - type: latheRecipe parent: BaseBorgModuleRecipe id: BorgModuleFireExtinguisher result: BorgModuleFireExtinguisher -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleGPS - result: BorgModuleGPS - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleRadiationDetection - result: BorgModuleRadiationDetection +# Cargo Modules - type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleTool - result: BorgModuleTool + parent: BaseGoldBorgModuleRecipe + id: BorgModuleAdvancedMining + result: BorgModuleAdvancedMining # Engineering Modules @@ -165,34 +157,9 @@ - type: latheRecipe parent: BaseGoldBorgModuleRecipe - id: BorgModuleAdvancedTreatment - result: BorgModuleAdvancedTreatment - -- type: latheRecipe - parent: BaseGoldBorgModuleRecipe - id: BorgModuleDefibrillator - result: BorgModuleDefibrillator - -# Science Modules + id: BorgModuleAdvancedChemical + result: BorgModuleAdvancedChemical -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleArtifact - result: BorgModuleArtifact - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleAnomaly - result: BorgModuleAnomaly +# Science Modules (if we add a advanced sci module that requires crafting) # Service Modules - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleGardening - result: BorgModuleGardening - -- type: latheRecipe - parent: BaseBorgModuleRecipe - id: BorgModuleHarvesting - result: BorgModuleHarvesting diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index cdb8225544..55298d05a1 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -10,8 +10,6 @@ tier: 1 cost: 5000 recipeUnlocks: - - BorgModuleGardening - - BorgModuleHarvesting - SeedExtractorMachineCircuitboard - HydroponicsTrayMachineCircuitboard - ReagentGrinderIndustrialMachineCircuitboard @@ -71,18 +69,6 @@ - MassMediaCircuitboard - JukeboxCircuitBoard -- type: technology - id: RoboticCleanliness - name: research-technology-robotic-cleanliness - icon: - sprite: Mobs/Silicon/chassis.rsi - state: janitor - discipline: CivilianServices - tier: 1 - cost: 5000 - recipeUnlocks: - - BorgModuleAdvancedCleaning - - type: technology id: MeatManipulation name: research-technology-meat-manipulation @@ -131,7 +117,7 @@ - CryostasisBeaker - SyringeCryostasis -- type: technology +- type: technology # Merge with other T2 medical research if possible! id: MechanizedTreatment name: research-technology-mechanized-treatment icon: @@ -141,8 +127,7 @@ tier: 2 cost: 5000 recipeUnlocks: - - BorgModuleAdvancedTreatment - - BorgModuleDefibrillator + - BorgModuleAdvancedChemical - type: technology id: AdvancedCleaning @@ -156,6 +141,7 @@ recipeUnlocks: - AdvMopItem - MegaSprayBottle + - BorgModuleAdvancedCleaning - type: technology id: HONKMech diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index da3c053c68..b5646de7e7 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -25,7 +25,6 @@ - AnomalyScanner - AnomalyLocator - AnomalyLocatorWide - - BorgModuleAnomaly - APECircuitboard - AnomalyVesselCircuitboard @@ -40,7 +39,6 @@ cost: 5000 recipeUnlocks: - NodeScanner - - BorgModuleArtifact - AnalysisComputerCircuitboard - ArtifactAnalyzerMachineCircuitboard diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml index c0f184f71b..c9c9520894 100644 --- a/Resources/Prototypes/Research/industrial.yml +++ b/Resources/Prototypes/Research/industrial.yml @@ -27,8 +27,7 @@ recipeUnlocks: - RadarConsoleCircuitboard - HandHeldMassScanner - - BorgModuleGPS - + - type: technology id: AdvancedPowercells name: research-technology-advanced-powercells @@ -182,6 +181,7 @@ - OreBagOfHolding - MiningDrillDiamond - AdvancedMineralScannerEmpty + - BorgModuleAdvancedMining # Tier 3 diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index 2f1eb21b1f..1c49713e26 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -14,7 +14,8 @@ defaultModules: - BorgModuleTool - + - BorgModuleArtifact + - BorgModuleAnomaly radioChannels: - Science @@ -81,10 +82,10 @@ - BorgModuleCargo defaultModules: + - BorgModuleTool - BorgModuleMining - - BorgModuleGrapplingGun + - BorgModuleTraversal - BorgModuleAppraisal - - BorgModuleTool radioChannels: - Supply @@ -118,8 +119,9 @@ - BorgModuleJanitor defaultModules: - - BorgModuleLightReplacer + - BorgModuleTool - BorgModuleCleaning + - BorgModuleCustodial radioChannels: - Science @@ -153,7 +155,10 @@ - BorgModuleMedical defaultModules: - - BorgModuleTreatment + - BorgModuleTool + - BorgModuleChemical + - BorgModuleTopicals + - BorgModuleRescue radioChannels: - Science @@ -200,10 +205,12 @@ - BorgModuleService defaultModules: + - BorgModuleTool - BorgModuleMusique - BorgModuleService - BorgModuleClowning - + - BorgModuleGardening + - BorgModuleHarvesting radioChannels: - Science - Service diff --git a/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml b/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml index c1507ca539..9015ef59af 100644 --- a/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml +++ b/Resources/ServerInfo/Guidebook/Science/Cyborgs.xml @@ -42,7 +42,6 @@ [color=#a4885c]Generic[/color] modules add versatility. They can be fitted into any chassis, granting useful tools such as crowbars, GPS, and the ability to interact with cables. [bold]The generic cyborg chassis can fit up to five additional modules.[/bold] - @@ -56,7 +55,7 @@ - + [italic]Examples of specialized modules. Note the housing and circuit board colors. diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-chem-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-chem-module.png new file mode 100644 index 0000000000..39020fb819 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-chem-module.png differ diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-mining-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-mining-module.png new file mode 100644 index 0000000000..36f6f8da44 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/adv-mining-module.png differ diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/chem-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/chem-module.png new file mode 100644 index 0000000000..d1a71fa4ca Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/chem-module.png differ diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json index 2ebb6eddcf..884e922ac8 100644 --- a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9, Module actions by Scarky0. chem, adv-chem, and adv-mining by mubururu_", "size": { "x": 32, "y": 32 @@ -46,6 +46,9 @@ { "name":"mining-module" }, + { + "name":"adv-mining-module" + }, { "name":"light-replacer-module" }, @@ -61,6 +64,12 @@ { "name":"treatment-module" }, + { + "name":"chem-module" + }, + { + "name":"adv-chem-module" + }, { "name":"adv-diagnosis-module" }, diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-chem.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-chem.png new file mode 100644 index 0000000000..857580355d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-chem.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-mining-adv.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-mining-adv.png new file mode 100644 index 0000000000..a517885b1b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-mining-adv.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index cb48ef147b..3a25fbc953 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github). layered inhands by mubururu_ (github).", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14. icon-construction.png created by deltanedas (github). syndicateborgbomb.png created by Mangohydra (github). icon-chem.png & icon-mining-adv.png created by mubururu_ (github)", "size": { "x": 32, "y": 32 @@ -31,6 +31,9 @@ { "name": "icon-chemist" }, + { + "name": "icon-chem" + }, { "name": "icon-clown" }, @@ -67,6 +70,9 @@ { "name": "icon-mining" }, + { + "name": "icon-mining-adv" + }, { "name": "icon-mop" }, diff --git a/Resources/migration.yml b/Resources/migration.yml index 74b2ca987f..742429bbec 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -540,6 +540,10 @@ LightTree06: LightTree DrinkIrishCarBomb: DrinkIrishSlammer # 2025-01-06 +BorgModuleRadiationDetection: null +BorgModuleGPS: null +BorgModuleLightReplacer: BorgModuleCustodial +BorgModuleAdvancedTreatment: null ClothingMaskSexyClown: ClothingMaskBlushingClown ClothingMaskSexyMime: ClothingMaskBlushingMime