Repository: lagrange14/substations
Pull request #93: Printable PDA Cartridges
Author: login: Maezel
Labels: name: Changes: YML
Created: 2025-04-25T17:12:27Z | Merged: 2025-04-27T18:16:11Z

Made a handful of the useful carts printable, exceptions are the ones every PDA starts with if you have the oldest PDA known to man  that doesn't come with uno idk die sorry and the glimmer monitor because it just wouldn't show up in the fab

They cost 6 glass, 4 gold, and 2 silver and take 8 seconds to make but are just there by default. Seems like a needless hassle to make them researched but you basically only ever need one of each so I figure the cost and time to print is an okay trade off?

oh yeah and uhh it fixes issue #87 

![dotnet_2sB5I3nb5C](https://github.com/user-attachments/assets/fc1a1217-398b-449c-abe4-d04ec0ef7156)

**Changelog**
:cl:
- add: MailMetrics, AstroNav, StockTrading carts to the logifab
- add: MedTek cart to the medfab
- add: LogProbe and CrimeAssist to the secfab
- add: the logifab  recipes are in the autolathe also as a treat(side effect of me not entirely knowing how the recipe packs work)



Diff:
diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/cargo.yml b/Resources/Prototypes/Recipes/Lathes/Packs/cargo.yml
index fc6ff6f290..b371e359f4 100644
--- a/Resources/Prototypes/Recipes/Lathes/Packs/cargo.yml
+++ b/Resources/Prototypes/Recipes/Lathes/Packs/cargo.yml
@@ -5,6 +5,9 @@
   recipes:
   - AppraisalTool
   - Pickaxe
+  - AstroNav # L5
+  - StockTrading # L5
+  - MailMetrics # L5
 
 - type: latheRecipePack
   id: CargoBoardsStatic
diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml b/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml
index d8ce71f039..3f0cdc756b 100644
--- a/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml
+++ b/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml
@@ -19,6 +19,7 @@
   - HandheldStationMap
   - ClothingHeadHatWelding
   - ClothingHeadHatCone
+  - NetProbe # L5
 
 - type: latheRecipePack
   id: AtmosStatic
@@ -91,6 +92,6 @@
   - TelecomServerCircuitboard
   - SMESAdvancedMachineCircuitboard
   - HolopadMachineCircuitboard
-  - PowerComputerCircuitBoard
-  - AtmosMonitoringComputerCircuitBoard
+  - PowerComputerCircuitBoard # L5
+  - AtmosMonitoringComputerCircuitBoard # L5
 #  - WallmountGeneratorElectronics # L5 (j/k too easymode
diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml b/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml
index 2ce5f90519..44bfd587af 100644
--- a/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml
+++ b/Resources/Prototypes/Recipes/Lathes/Packs/medical.yml
@@ -50,7 +50,8 @@
   - DiseaseSwab
   - BodyBag
   - WhiteCane
-  - Cane
+  - Cane # L5
+  - MedTek # L5
 
 - type: latheRecipePack
   id: RollerBedsStatic
diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml
index 7c3c4972ec..e4d22cf9f8 100644
--- a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml
+++ b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml
@@ -12,6 +12,8 @@
   - TargetHuman
   - TargetSyndicate
   - Zipties
+  - CrimeAssist # L5
+  - LogProbe # L5
 
 # Practice ammo/mags and practice weapons
 - type: latheRecipePack
diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/service.yml b/Resources/Prototypes/Recipes/Lathes/Packs/service.yml
index 71e3dff7c7..2a04c0e6c0 100644
--- a/Resources/Prototypes/Recipes/Lathes/Packs/service.yml
+++ b/Resources/Prototypes/Recipes/Lathes/Packs/service.yml
@@ -24,7 +24,12 @@
   - MopItem
   - Holoprojector
   - WetFloorSign
-  - DiseaseSwab # botanists can make swabs at their fab now
+  - DiseaseSwab # L5 botanists can make swabs at their fab now
+  - CrewManifest # L5 craftable PDA carts
+  - NanoChat # ditto
+  - NanoTask # ditto 2x
+  - Notekeeper # ditto 3x
+  - NewsReader # ditto 4x combo
 
 - type: latheRecipePack
   parent:
diff --git a/Resources/Prototypes/_L5/Recipes/Lathes/pda_cartridges.yml b/Resources/Prototypes/_L5/Recipes/Lathes/pda_cartridges.yml
new file mode 100644
index 0000000000..a9ba3b33dc
--- /dev/null
+++ b/Resources/Prototypes/_L5/Recipes/Lathes/pda_cartridges.yml
@@ -0,0 +1,70 @@
+# cartridge base recipe
+- type: latheRecipe
+  abstract: true
+  id: BaseCartridgeRecipe
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
+
+# every PDA cartridge known to man
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: AstroNav
+  result: AstroNavCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: MailMetrics
+  result: MailMetricsCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: StockTrading
+  result: StockTradingCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: CrimeAssist
+  result: CrimeAssistCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: LogProbe
+  result: LogProbeCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: MedTek
+  result: MedTekCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: NanoChat
+  result: NanoChatCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: NanoTask
+  result: NanoTaskCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: CrewManifest
+  result: CrewManifestCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: Notekeeper
+  result: NotekeeperCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: NewsReader
+  result: NewsReaderCartridge
+
+- type: latheRecipe
+  parent: BaseCartridgeRecipe
+  id: NetProbe
+  result: NetProbeCartridge


Reviews:
user: login: Samsterious
body: I love the way you did this. All of the cartridges are separated out into their own Departmental TechFabs, you have a BaseCartridgeRecipe that sets a baseline price for easy tuning down the road, and we have pretty much all of the cartridges we actually care about with our current needs.
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T00:36:46Z
user: login: Maezel
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T01:53:09Z
user: login: Samsterious
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T01:55:35Z
user: login: makyo
body: My suggestion would be to make a file `Resources/Prototypes/_L5/Recipes/Lathes/pda_cartridges.yml` in which to define the base and all recipes. Since this is something we are *adding*, it's best to keep it namespaced under our folder. That means if we want to change something down the line, we know we can just look in our files and skip the rest of the Prototypes directory.

Other than that, I think it looks good!
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T09:47:11Z
user: login: Samsterious
body: Get some `# L5` comments on the added lines in the Packs/*.yml files and we can get this merged.
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T17:19:58Z
user: login: Samsterious
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-27T18:07:52Z

Review comments:
diff_hunk: @@ -224,3 +224,12 @@
   materials:
     Steel: 100
     Wood: 200
+
+- type: latheRecipe
+  id: MedTek
+  result: MedTekCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
path: Resources/Prototypes/Recipes/Lathes/medical.yml
user: login: Samsterious
body: I am pretty sure you can use the `BaseCartridgeRecipe` here as well, even though it is defined in `cargo.yaml`.
created_at: 2025-04-27T00:36:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -696,3 +696,21 @@
     Plastic: 1000
     Plasma: 500
     Glass: 500
+
+- type: latheRecipe
+  id: CrimeAssist
+  result: CrimeAssistCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
path: Resources/Prototypes/Recipes/Lathes/security.yml
user: login: Samsterious
body: I am pretty sure you can use the `BaseCartridgeRecipe` here as well, even though it is defined in `cargo.yaml`.
created_at: 2025-04-27T00:36:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -696,3 +696,21 @@
     Plastic: 1000
     Plasma: 500
     Glass: 500
+
+- type: latheRecipe
+  id: CrimeAssist
+  result: CrimeAssistCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
+
+- type: latheRecipe
+  id: LogProbe
+  result: LogProbeCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
path: Resources/Prototypes/Recipes/Lathes/security.yml
user: login: Samsterious
body: I am pretty sure you can use the `BaseCartridgeRecipe` here as well, even though it is defined in `cargo.yaml`.
created_at: 2025-04-27T00:36:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -696,3 +696,21 @@
     Plastic: 1000
     Plasma: 500
     Glass: 500
+
+- type: latheRecipe
+  id: CrimeAssist
+  result: CrimeAssistCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
+
+- type: latheRecipe
+  id: LogProbe
+  result: LogProbeCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
path: Resources/Prototypes/Recipes/Lathes/security.yml
user: login: Maezel
body: yeahh i sorta did the cargo ones and thus the basecartridgerecipe last and wasn't sure if I could actually refer to it across multiple files bc it seemed like each file had its base types defined in-file 
created_at: 2025-04-27T01:53:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -696,3 +696,21 @@
     Plastic: 1000
     Plasma: 500
     Glass: 500
+
+- type: latheRecipe
+  id: CrimeAssist
+  result: CrimeAssistCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
+
+- type: latheRecipe
+  id: LogProbe
+  result: LogProbeCartridge
+  completetime: 8
+  materials:
+    Glass: 600
+    Gold: 400
+    Silver: 200
path: Resources/Prototypes/Recipes/Lathes/security.yml
user: login: Samsterious
body: My understanding is that prototypes are always defined globally, but it is worth checking just in case.
created_at: 2025-04-27T01:55:35Z
author_association: CONTRIBUTOR

PR comments:
user: login: Maezel
created_at: 2025-04-25T17:13:14Z
body: I don't know how to crunch down all those commits as I fucked around figuring it out so enjoy my creative process
author_association: CONTRIBUTOR
user: login: Samsterious
created_at: 2025-04-27T00:31:38Z
body: Figuring out what to do with all the commits is something we deal with when we merge the PR. You do not have to worry about that.

I think getting *all* of the cartridges would be ideal, including the ones that are mostly unnecessary. It allows us to consider empty PDAs in the future. I think the only exception is the Glimmer Monitor, because we are planning to do away with magic in general.
author_association: CONTRIBUTOR
user: login: Maezel
created_at: 2025-04-27T14:04:01Z
body: NetProbe in the engi fab in case it's ever useful somehow, all the stock programs in the service fab
![dotnet_LFJSbGXsmK](https://github.com/user-attachments/assets/4d2de574-7278-438f-9050-6fc8b5a5293e)
author_association: CONTRIBUTOR