if (_entityManager.TryGetComponent<LatheComponent>(Entity, out var latheComponent))
{
- if (!latheComponent.DynamicRecipes.Any())
+ if (!latheComponent.DynamicPacks.Any())
{
ServerListButton.Visible = false;
}
var compFactory = server.ResolveDependency<IComponentFactory>();
var materialStorageSystem = server.System<SharedMaterialStorageSystem>();
var whitelistSystem = server.System<EntityWhitelistSystem>();
+ var latheSystem = server.System<SharedLatheSystem>();
await server.WaitAssertion(() =>
{
}
}
- // Collect all the recipes assigned to this lathe
- var recipes = new List<ProtoId<LatheRecipePrototype>>();
- recipes.AddRange(latheComp.StaticRecipes);
- recipes.AddRange(latheComp.DynamicRecipes);
+ // Collect all possible recipes assigned to this lathe
+ var recipes = new HashSet<ProtoId<LatheRecipePrototype>>();
+ latheSystem.AddRecipesFromPacks(recipes, latheComp.StaticPacks);
+ latheSystem.AddRecipesFromPacks(recipes, latheComp.DynamicPacks);
if (latheProto.TryGetComponent<EmagLatheRecipesComponent>(out var emagRecipesComp, compFactory))
{
- recipes.AddRange(emagRecipesComp.EmagStaticRecipes);
- recipes.AddRange(emagRecipesComp.EmagDynamicRecipes);
+ latheSystem.AddRecipesFromPacks(recipes, emagRecipesComp.EmagStaticPacks);
+ latheSystem.AddRecipesFromPacks(recipes, emagRecipesComp.EmagDynamicPacks);
}
// Check each recipe assigned to this lathe
await using var pair = await PoolManager.GetServerClient();
var server = pair.Server;
+ var entMan = server.ResolveDependency<IEntityManager>();
var protoManager = server.ResolveDependency<IPrototypeManager>();
var compFact = server.ResolveDependency<IComponentFactory>();
+ var latheSys = entMan.System<SharedLatheSystem>();
+
await server.WaitAssertion(() =>
{
var allEnts = protoManager.EnumeratePrototypes<EntityPrototype>();
- var allLathes = new HashSet<LatheComponent>();
+ var latheTechs = new HashSet<ProtoId<LatheRecipePrototype>>();
foreach (var proto in allEnts)
{
if (proto.Abstract)
if (!proto.TryGetComponent<LatheComponent>(out var lathe, compFact))
continue;
- allLathes.Add(lathe);
- }
- var latheTechs = new HashSet<string>();
- foreach (var lathe in allLathes)
- {
- if (lathe.DynamicRecipes == null)
- continue;
+ latheSys.AddRecipesFromPacks(latheTechs, lathe.DynamicPacks);
- foreach (var recipe in lathe.DynamicRecipes)
- {
- latheTechs.Add(recipe);
- }
+ if (proto.TryGetComponent<EmagLatheRecipesComponent>(out var emag, compFact))
+ latheSys.AddRecipesFromPacks(latheTechs, emag.EmagDynamicPacks);
}
Assert.Multiple(() =>
{
+ // check that every recipe a tech adds can be made on some lathe
+ var unlockedTechs = new HashSet<ProtoId<LatheRecipePrototype>>();
foreach (var tech in protoManager.EnumeratePrototypes<TechnologyPrototype>())
{
+ unlockedTechs.UnionWith(tech.RecipeUnlocks);
foreach (var recipe in tech.RecipeUnlocks)
{
- Assert.That(latheTechs, Does.Contain(recipe), $"Recipe \"{recipe}\" cannot be unlocked on any lathes.");
+ Assert.That(latheTechs, Does.Contain(recipe), $"Recipe '{recipe}' from tech '{tech.ID}' cannot be unlocked on any lathes.");
}
}
+
+ // now check that every dynamic recipe a lathe lists can be unlocked
+ foreach (var recipe in latheTechs)
+ {
+ Assert.That(unlockedTechs, Does.Contain(recipe), $"Recipe '{recipe}' is dynamic on a lathe but cannot be unlocked by research.");
+ }
});
});
using Content.Shared.Emag.Systems;
using Content.Shared.Examine;
using Content.Shared.Lathe;
+using Content.Shared.Lathe.Prototypes;
using Content.Shared.Materials;
using Content.Shared.Power;
using Content.Shared.ReagentSpeed;
/// Per-tick cache
/// </summary>
private readonly List<GasMixture> _environments = new();
+ private readonly HashSet<ProtoId<LatheRecipePrototype>> _availableRecipes = new();
public override void Initialize()
{
public List<ProtoId<LatheRecipePrototype>> GetAvailableRecipes(EntityUid uid, LatheComponent component, bool getUnavailable = false)
{
+ _availableRecipes.Clear();
+ AddRecipesFromPacks(_availableRecipes, component.StaticPacks);
var ev = new LatheGetRecipesEvent(uid, getUnavailable)
{
- Recipes = new HashSet<ProtoId<LatheRecipePrototype>>(component.StaticRecipes)
+ Recipes = _availableRecipes
};
RaiseLocalEvent(uid, ev);
return ev.Recipes.ToList();
}
- public static List<ProtoId<LatheRecipePrototype>> GetAllBaseRecipes(LatheComponent component)
- {
- return component.StaticRecipes.Union(component.DynamicRecipes).ToList();
- }
-
public bool TryAddToQueue(EntityUid uid, LatheRecipePrototype recipe, LatheComponent? component = null)
{
if (!Resolve(uid, ref component))
_uiSys.SetUiState(uid, LatheUiKey.Key, state);
}
+ /// <summary>
+ /// Adds every unlocked recipe from each pack to the recipes list.
+ /// </summary>
+ public void AddRecipesFromDynamicPacks(ref LatheGetRecipesEvent args, TechnologyDatabaseComponent database, IEnumerable<ProtoId<LatheRecipePackPrototype>> packs)
+ {
+ foreach (var id in packs)
+ {
+ var pack = _proto.Index(id);
+ foreach (var recipe in pack.Recipes)
+ {
+ if (args.getUnavailable || database.UnlockedRecipes.Contains(recipe))
+ args.Recipes.Add(recipe);
+ }
+ }
+ }
+
private void OnGetRecipes(EntityUid uid, TechnologyDatabaseComponent component, LatheGetRecipesEvent args)
{
if (uid != args.Lathe || !TryComp<LatheComponent>(uid, out var latheComponent))
return;
- foreach (var recipe in latheComponent.DynamicRecipes)
- {
- if (!(args.getUnavailable || component.UnlockedRecipes.Contains(recipe)) || args.Recipes.Contains(recipe))
- continue;
- args.Recipes.Add(recipe);
- }
+ AddRecipesFromDynamicPacks(ref args, component, latheComponent.DynamicPacks);
}
private void GetEmagLatheRecipes(EntityUid uid, EmagLatheRecipesComponent component, LatheGetRecipesEvent args)
{
- if (uid != args.Lathe || !TryComp<TechnologyDatabaseComponent>(uid, out var technologyDatabase))
+ if (uid != args.Lathe)
return;
+
if (!args.getUnavailable && !_emag.CheckFlag(uid, EmagType.Interaction))
return;
- foreach (var recipe in component.EmagDynamicRecipes)
- {
- if (!(args.getUnavailable || technologyDatabase.UnlockedRecipes.Contains(recipe)) || args.Recipes.Contains(recipe))
- continue;
- args.Recipes.Add(recipe);
- }
- foreach (var recipe in component.EmagStaticRecipes)
- {
- args.Recipes.Add(recipe);
- }
+
+ AddRecipesFromPacks(args.Recipes, component.EmagStaticPacks);
+
+ if (TryComp<TechnologyDatabaseComponent>(uid, out var database))
+ AddRecipesFromDynamicPacks(ref args, database, component.EmagDynamicPacks);
}
private void OnHeatStartPrinting(EntityUid uid, LatheHeatProducingComponent component, LatheStartPrintingEvent args)
-using Content.Shared.Research.Prototypes;
+using Content.Shared.Lathe.Prototypes;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
public sealed partial class EmagLatheRecipesComponent : Component
{
/// <summary>
- /// All of the dynamic recipes that the lathe is capable to get using EMAG
+ /// All of the dynamic recipe packs that the lathe is capable to get using EMAG
/// </summary>
[DataField, AutoNetworkedField]
- public List<ProtoId<LatheRecipePrototype>> EmagDynamicRecipes = new();
+ public List<ProtoId<LatheRecipePackPrototype>> EmagDynamicPacks = new();
/// <summary>
- /// All of the static recipes that the lathe is capable to get using EMAG
+ /// All of the static recipe packs that the lathe is capable to get using EMAG
/// </summary>
[DataField, AutoNetworkedField]
- public List<ProtoId<LatheRecipePrototype>> EmagStaticRecipes = new();
+ public List<ProtoId<LatheRecipePackPrototype>> EmagStaticPacks = new();
}
}
using Content.Shared.Construction.Prototypes;
+using Content.Shared.Lathe.Prototypes;
using Content.Shared.Research.Prototypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
public sealed partial class LatheComponent : Component
{
/// <summary>
- /// All of the recipes that the lathe has by default
+ /// All of the recipe packs that the lathe has by default
/// </summary>
[DataField]
- public List<ProtoId<LatheRecipePrototype>> StaticRecipes = new();
+ public List<ProtoId<LatheRecipePackPrototype>> StaticPacks = new();
/// <summary>
- /// All of the recipes that the lathe is capable of researching
+ /// All of the recipe packs that the lathe is capable of researching
/// </summary>
[DataField]
- public List<ProtoId<LatheRecipePrototype>> DynamicRecipes = new();
+ public List<ProtoId<LatheRecipePackPrototype>> DynamicPacks = new();
/// <summary>
/// The lathe's construction queue
--- /dev/null
+using Content.Shared.Research.Prototypes;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array;
+
+namespace Content.Shared.Lathe.Prototypes;
+
+/// <summary>
+/// A pack of lathe recipes that one or more lathes can use.
+/// Packs will inherit the parents recipes when using inheritance, so you don't need to copy paste them.
+/// </summary>
+[Prototype]
+public sealed partial class LatheRecipePackPrototype : IPrototype, IInheritingPrototype
+{
+ [ViewVariables]
+ [IdDataField]
+ public string ID { get; private set; } = default!;
+
+ [ParentDataField(typeof(AbstractPrototypeIdArraySerializer<LatheRecipePackPrototype>))]
+ public string[]? Parents { get; }
+
+ [NeverPushInheritance]
+ [AbstractDataField]
+ public bool Abstract { get; }
+
+ /// <summary>
+ /// The lathe recipes contained by this pack.
+ /// </summary>
+ [DataField(required: true)]
+ [AlwaysPushInheritance]
+ public HashSet<ProtoId<LatheRecipePrototype>> Recipes = new();
+}
using System.Linq;
using Content.Shared.Emag.Systems;
using Content.Shared.Examine;
+using Content.Shared.Lathe.Prototypes;
using Content.Shared.Localizations;
using Content.Shared.Materials;
using Content.Shared.Research.Prototypes;
BuildInverseRecipeDictionary();
}
+ /// <summary>
+ /// Add every recipe in the list of recipe packs to a single hashset.
+ /// </summary>
+ public void AddRecipesFromPacks(HashSet<ProtoId<LatheRecipePrototype>> recipes, IEnumerable<ProtoId<LatheRecipePackPrototype>> packs)
+ {
+ foreach (var id in packs)
+ {
+ var pack = _proto.Index(id);
+ recipes.UnionWith(pack.Recipes);
+ }
+ }
+
private void OnExamined(Entity<LatheComponent> ent, ref ExaminedEvent args)
{
if (!args.IsInDetailsRange)
map: ["enum.GunVisualLayers.Base"]
- state: mag-1
map: ["enum.GunVisualLayers.Mag"]
+
+- type: entity
+ parent: BaseMagazinePistolSubMachineGun
+ id: MagazinePistolSubMachineGunIncendiary
+ name: SMG magazine (.35 auto incendiary)
+ components:
+ - type: BallisticAmmoProvider
+ proto: CartridgePistolIncendiary
runningState: building
unlitIdleState: unlit
unlitRunningState: unlit-building
- staticRecipes:
- - Wirecutter
- - Igniter
- - Signaller
- - Screwdriver
- - Welder
- - Wrench
- - CrowbarGreen
- - Multitool
- - NetworkConfigurator
- - SprayPainter
- - FlashlightLantern
- - CableStack
- - CableMVStack
- - CableHVStack
- - HandheldGPSBasic
- - TRayScanner
- - AirTank
- - GasAnalyzer
- - UtilityBelt
- - Pickaxe
- - ModularReceiver
- - AppraisalTool
- - SheetRGlass
- - Beaker
- - Syringe
- - HandLabeler
- - LightTube
- - LedLightTube
- - SodiumLightTube
- - ExteriorLightTube
- - LightBulb
- - LedLightBulb
- - DimLightBulb
- - WarmLightBulb
- - Bucket
- - DrinkMug
- - DrinkMugMetal
- - DrinkGlass
- - DrinkShotGlass
- - DrinkGlassCoupeShaped
- - CustomDrinkJug
- - FoodPlate
- - FoodPlateSmall
- - FoodPlatePlastic
- - FoodPlateSmallPlastic
- - FoodBowlBig
- - FoodPlateTin
- - FoodPlateMuffinTin
- - FoodKebabSkewer
- - SprayBottle
- - MopItem
- - Holoprojector
- - Mousetrap
- - LightReplacer
- - TrashBag
- - PowerCellSmall
- - PowerCellMedium
- - RollerBedSpawnFolded
- - CheapRollerBedSpawnFolded
- - EmergencyRollerBedSpawnFolded
- - MicroManipulatorStockPart
- - MatterBinStockPart
- - CapacitorStockPart
- - ConveyorBeltAssembly
- - IntercomElectronics
- - FirelockElectronics
- - DoorElectronics
- - AirAlarmElectronics
- - StationMapElectronics
- - FireAlarmElectronics
- - MailingUnitElectronics
- - SignalTimerElectronics
- - APCElectronics
- - SMESMachineCircuitboard
- - SubstationMachineCircuitboard
- - WallmountSubstationElectronics
- - CellRechargerCircuitboard
- - WeaponCapacitorRechargerCircuitboard
- - HandheldStationMap
- - ClothingHeadHatWelding
- - WetFloorSign
- - ClothingHeadHatCone
- - FreezerElectronics
+ staticPacks:
+ - ToolsStatic
+ - PartsStatic
+ - AtmosStatic
+ - CablesStatic
+ - CargoStatic
+ - MaterialsStatic
+ - BasicChemistryStatic
+ - RollerBedsStatic
+ - LightsStatic
+ - ServiceStatic
+ - PowerCellsStatic
+ - ElectronicsStatic
- type: EmagLatheRecipes
- emagStaticRecipes:
- - BoxLethalshot
- - BoxShotgunSlug
- - CombatKnife
- - MagazineBoxLightRifle
- - MagazineBoxMagnum
- - MagazineBoxPistol
- - MagazineBoxRifle
- - MagazineLightRifle
- - MagazineLightRifleEmpty
- - MagazinePistol
- - MagazinePistolEmpty
- - MagazinePistolSubMachineGun
- - MagazinePistolSubMachineGunEmpty
- - MagazinePistolSubMachineGunTopMounted
- - MagazinePistolSubMachineGunTopMountedEmpty
- - MagazineRifle
- - MagazineRifleEmpty
- - MagazineShotgun
- - MagazineShotgunEmpty
- - MagazineShotgunSlug
- - RiotShield
- - SpeedLoaderMagnum
- - SpeedLoaderMagnumEmpty
+ emagStaticPacks:
+ - SecurityAmmoStatic
+ - SecurityWeaponsStatic
- type: BlueprintReceiver
whitelist:
tags:
runningState: building
unlitIdleState: unlit
unlitRunningState: unlit-building
- staticRecipes:
- - LargeBeaker
- - Dropper
- - ClothingEyesGlassesChemical
- dynamicRecipes:
- - PowerDrill
- - MiningDrill
- - MiningDrillDiamond
- - AnomalyScanner
- - AnomalyLocator
- - AnomalyLocatorWide
- - Scalpel
- - Retractor
- - Cautery
- - Drill
- - WeaponParticleDecelerator
- - HoloprojectorField
- - Saw
- - Hemostat
- - CryostasisBeaker
- - SyringeCryostasis
- - Syringe
- - Implanter
- - PillCanister
- - ChemistryEmptyBottle01
- - AdvMopItem
- - WeaponSprayNozzle
- - ClothingBackpackWaterTank
- - MegaSprayBottle
- - TimerTrigger
- - ChemicalPayload
- - FlashPayload
- - Signaller
- - SignallerAdvanced
- - SignalTrigger
- - VoiceTrigger
- - Igniter
- - HandHeldMassScanner
- - PowerCellMicroreactor
- - PowerCellHigh
- - WeaponPistolCHIMP
- - ClothingMaskWeldingGas
- - MineralScannerEmpty
- - AdvancedMineralScannerEmpty
- - WeaponGauntletGorilla
- - SynthesizerInstrument
- - ClothingShoesBootsMagSci
- - ClothingShoesBootsMoon
- - ClothingShoesBootsSpeed
- - NodeScanner
- - HolofanProjector
- - BluespaceBeaker
- - SyringeBluespace
- - WeaponForceGun
- - WeaponLaserSvalinn
- - WeaponProtoKineticAccelerator
- - WeaponTetherGun
- - ClothingBackpackHolding
- - ClothingBackpackSatchelHolding
- - ClothingBackpackDuffelHolding
- - WelderExperimental
- - JawsOfLife
- - FauxTileAstroGrass
- - FauxTileMowedAstroGrass
- - FauxTileJungleAstroGrass
- - FauxTileAstroIce
- - FauxTileAstroSnow
- - FauxTileAstroAsteroidSand
- - OreBagOfHolding
- - DeviceQuantumSpinInverter
+ staticPacks:
+ - ChemistryStatic
+ - SurgeryStatic
+ dynamicPacks:
+ - AdvancedTools
+ - ScienceEquipment
+ - ScienceClothing
+ - PowerCells
+ - ScienceWeapons
+ - Mining
+ - AtmosTools
+ - EngineeringWeapons
+ - Chemistry
+ - Janitor
+ - Instruments
+ - Equipment
+ - FauxTiles
- type: EmagLatheRecipes
- emagDynamicRecipes:
- - BoxBeanbag
- - BoxShotgunIncendiary
- - BoxShotgunUranium
- - BoxShellTranquilizer
- - ExplosivePayload
- - GrenadeBlast
- - GrenadeEMP
- - GrenadeFlash
- - HoloprojectorSecurity
- - MagazineBoxLightRifleIncendiary
- - MagazineBoxLightRifleUranium
- - MagazineBoxMagnumIncendiary
- - MagazineBoxMagnumUranium
- - MagazineBoxPistolIncendiary
- - MagazineBoxPistolUranium
- - MagazineBoxRifleIncendiary
- - MagazineBoxRifleUranium
- - MagazineGrenadeEmpty
- - MagazineLightRifleIncendiary
- - MagazineLightRifleUranium
- - MagazinePistolIncendiary
- - MagazinePistolUranium
- - MagazineRifleIncendiary
- - MagazineRifleUranium
- - MagazineShotgunBeanbag
- - MagazineShotgunIncendiary
- - MagazineShotgunIncendiary
- - PortableRecharger
- - PowerCageHigh
- - PowerCageMedium
- - PowerCageSmall
- - SpeedLoaderMagnumIncendiary
- - SpeedLoaderMagnumUranium
- - TelescopicShield
- - Truncheon
- - WeaponAdvancedLaser
- - WeaponLaserCannon
- - WeaponLaserCarbine
- - WeaponXrayCannon
+ emagDynamicPacks:
+ - SecurityAmmo
+ - SecurityExplosives
+ - SecurityEquipment
+ - SecurityWeapons
- type: entity
id: ProtolatheHyperConvection
producingSound: /Audio/Machines/circuitprinter.ogg
idleState: icon
runningState: building
- staticRecipes:
- - ProtolatheMachineCircuitboard
- - AutolatheMachineCircuitboard
- - CircuitImprinterMachineCircuitboard
- - BiogeneratorMachineCircuitboard
- - OreProcessorMachineCircuitboard
- - ElectrolysisUnitMachineCircuitboard
- - CentrifugeMachineCircuitboard
- - ChemDispenserMachineCircuitboard
- - ChemMasterMachineCircuitboard
- - CondenserMachineCircuitBoard
- - HotplateMachineCircuitboard
- - UniformPrinterMachineCircuitboard
- - FloorGreenCircuit
- - FloorBlueCircuit
- - FloorRedCircuit
- - MicrowaveMachineCircuitboard
- - ReagentGrinderMachineCircuitboard
- - ElectricGrillMachineCircuitboard
- - BoozeDispenserMachineCircuitboard
- - SodaDispenserMachineCircuitboard
- - SpaceHeaterMachineCircuitBoard
- - CutterMachineCircuitboard
- - SalvageMagnetMachineCircuitboard
- - BorgChargerCircuitboard
- dynamicRecipes:
- - ThermomachineFreezerMachineCircuitBoard
- - HellfireFreezerMachineCircuitBoard
- - PortableScrubberMachineCircuitBoard
- - CloningPodMachineCircuitboard
- - MedicalScannerMachineCircuitboard
- - CryoPodMachineCircuitboard
- - VaccinatorMachineCircuitboard
- - DiagnoserMachineCircuitboard
- - BiomassReclaimerMachineCircuitboard
- - BiofabricatorMachineCircuitboard
- - SurveillanceCameraRouterCircuitboard
- - SurveillanceCameraMonitorCircuitboard
- - SurveillanceWirelessCameraMonitorCircuitboard
- - SurveillanceCameraWirelessRouterCircuitboard
- - ComputerTelevisionCircuitboard
- - SurveillanceWirelessCameraMovableCircuitboard
- - SurveillanceWirelessCameraAnchoredCircuitboard
- - HydroponicsTrayMachineCircuitboard
- - SolarControlComputerCircuitboard
- - SolarTrackerElectronics
- - TurboItemRechargerCircuitboard
- - AutolatheHyperConvectionMachineCircuitboard
- - ProtolatheHyperConvectionMachineCircuitboard
- - CircuitImprinterHyperConvectionMachineCircuitboard
- - FatExtractorMachineCircuitboard
- - FlatpackerMachineCircuitboard
- - SheetifierMachineCircuitboard
- - ShuttleConsoleCircuitboard
- - RadarConsoleCircuitboard
- - TechDiskComputerCircuitboard
- - DawInstrumentMachineCircuitboard
- - CloningConsoleComputerCircuitboard
- - StasisBedMachineCircuitboard
- - OreProcessorIndustrialMachineCircuitboard
- - CargoTelepadMachineCircuitboard
- - RipleyCentralElectronics
- - RipleyPeripheralsElectronics
- - HonkerCentralElectronics
- - HonkerPeripheralsElectronics
- - HonkerTargetingElectronics
- - HamtrCentralElectronics
- - HamtrPeripheralsElectronics
- - PortableGeneratorPacmanMachineCircuitboard
- - PortableGeneratorSuperPacmanMachineCircuitboard
- - PortableGeneratorJrPacmanMachineCircuitboard
- - WallmountSubstationElectronics
- - PowerCageRechargerCircuitboard
- - EmitterCircuitboard
- - ThrusterMachineCircuitboard
- - GyroscopeMachineCircuitboard
- - MiniGravityGeneratorCircuitboard
- - ShuttleGunKineticCircuitboard
- - GasRecyclerMachineCircuitboard
- - SeedExtractorMachineCircuitboard
- - AnalysisComputerCircuitboard
- - ExosuitFabricatorMachineCircuitboard
- - AnomalyVesselCircuitboard
- - AnomalyVesselExperimentalCircuitboard
- - AnomalySynchronizerCircuitboard
- - APECircuitboard
- - ArtifactAnalyzerMachineCircuitboard
- - ArtifactCrusherMachineCircuitboard
- - TelecomServerCircuitboard
- - MassMediaCircuitboard
- - ReagentGrinderIndustrialMachineCircuitboard
- - JukeboxCircuitBoard
- - SMESAdvancedMachineCircuitboard
- - HolopadMachineCircuitboard
+ staticPacks:
+ - ScienceBoardsStatic
+ - ServiceBoardsStatic
+ - CargoBoardsStatic
+ - MedicalBoardsStatic
+ - EngineeringBoardsStatic
+ - CircuitFloorsStatic
+ dynamicPacks:
+ - EngineeringBoards
+ - CargoBoards
+ - MedicalBoards
+ - ServiceBoards
+ - ScienceBoards
+ - CameraBoards
+ - MechBoards
+ - ShuttleBoards
- type: EmagLatheRecipes
- emagDynamicRecipes:
- - ShuttleGunDusterCircuitboard
- - ShuttleGunFriendshipCircuitboard
- - ShuttleGunPerforatorCircuitboard
- - ShuttleGunSvalinnMachineGunCircuitboard
+ emagDynamicPacks:
+ - SecurityBoards
- type: MaterialStorage
whitelist:
tags:
- type: Lathe
idleState: fab-idle
runningState: fab-active
- staticRecipes:
- - MMI
- - PositronicBrain
- - SciFlash
- - BorgModuleCable
- - BorgModuleFireExtinguisher
- - BorgModuleRadiationDetection
- - BorgModuleTool
- - CyborgEndoskeleton
- - LeftArmBorg
- - RightArmBorg
- - LeftLegBorg
- - RightLegBorg
- - LightHeadBorg
- - TorsoBorg
- dynamicRecipes:
- - ProximitySensor
- - BorgModuleAdvancedCleaning
- - BorgModuleAdvancedTool
- - BorgModuleGPS
- - BorgModuleArtifact
- - BorgModuleAnomaly
- - BorgModuleGardening
- - BorgModuleHarvesting
- - BorgModuleDefibrillator
- - BorgModuleAdvancedTreatment
- - RipleyHarness
- - RipleyLArm
- - RipleyRArm
- - RipleyLLeg
- - RipleyRLeg
- - MechEquipmentGrabber
- - HonkerHarness
- - HonkerLArm
- - HonkerRArm
- - HonkerLLeg
- - HonkerRLeg
- - MechEquipmentHorn
- - MechEquipmentGrabberSmall
- - HamtrHarness
- - HamtrLArm
- - HamtrRArm
- - HamtrLLeg
- - HamtrRLeg
- - VimHarness
+ staticPacks:
+ - RoboticsStatic
+ - BorgModulesStatic
+ - BorgLimbsStatic
+ dynamicPacks:
+ - Robotics
+ - BorgModules
+ - MechParts
+ - MechEquipment
- type: MaterialStorage
whitelist:
tags:
- type: Lathe
idleState: icon
runningState: building
- staticRecipes:
- - MonkeyCube
- - KoboldCube
- - CowCube
- - GoatCube
- - MothroachCube
- - MouseCube
- - CockroachCube
+ staticPacks:
+ - FriendlyCubesStatic
- type: EmagLatheRecipes
- emagStaticRecipes:
- - AbominationCube
- - SpaceCarpCube
- - SpaceTickCube
+ emagStaticPacks:
+ - HostileCubesStatic
- type: entity
id: SecurityTechFab
- type: Lathe
idleState: icon
runningState: icon
- staticRecipes:
- - BoxLethalshot
- - BoxShotgunPractice
- - BoxShotgunSlug
- - ClothingEyesHudSecurity
- - CombatKnife
- - Flash
- - ForensicPad
- - Handcuffs
- - MagazineBoxLightRifle
- - MagazineBoxLightRiflePractice
- - MagazineBoxMagnum
- - MagazineBoxMagnumPractice
- - MagazineBoxPistol
- - MagazineBoxPistolPractice
- - MagazineBoxRifle
- - MagazineBoxRiflePractice
- - MagazineLightRifle
- - MagazineLightRifleEmpty
- - MagazinePistol
- - MagazinePistolEmpty
- - MagazinePistolSubMachineGun
- - MagazinePistolSubMachineGunEmpty
- - MagazinePistolSubMachineGunTopMounted
- - MagazinePistolSubMachineGunTopMountedEmpty
- - MagazineRifle
- - MagazineRifleEmpty
- - MagazineShotgun
- - MagazineShotgunEmpty
- - MagazineShotgunSlug
- - RiotShield
- - SpeedLoaderMagnum
- - SpeedLoaderMagnumEmpty
- - Stunbaton
- - TargetClown
- - TargetHuman
- - TargetSyndicate
- - WeaponDisablerPractice
- - WeaponFlareGunSecurity
- - WeaponLaserCarbinePractice
- - Zipties
- dynamicRecipes:
- - BoxBeanbag
- - BoxShotgunIncendiary
- - BoxShotgunUranium
- - BoxShellTranquilizer
- - ClothingBackpackElectropack
- - ExplosivePayload
- - FlashPayload
- - GrenadeBlast
- - GrenadeEMP
- - GrenadeFlash
- - HoloprojectorSecurity
- - MagazineBoxLightRifleIncendiary
- - MagazineBoxLightRifleUranium
- - MagazineBoxMagnumIncendiary
- - MagazineBoxMagnumUranium
- - MagazineBoxPistolIncendiary
- - MagazineBoxPistolUranium
- - MagazineBoxRifleIncendiary
- - MagazineBoxRifleUranium
- - MagazineGrenadeEmpty
- - MagazineLightRifleIncendiary
- - MagazineLightRifleUranium
- - MagazinePistolIncendiary
- - MagazinePistolUranium
- - MagazineRifleIncendiary
- - MagazineRifleUranium
- - MagazineShotgunBeanbag
- - MagazineShotgunIncendiary
- - PortableRecharger
- - PowerCageHigh
- - PowerCageMedium
- - PowerCageSmall
- - ShuttleGunDusterCircuitboard
- - ShuttleGunFriendshipCircuitboard
- - ShuttleGunPerforatorCircuitboard
- - ShuttleGunSvalinnMachineGunCircuitboard
- - Signaller
- - SignalTrigger
- - SpeedLoaderMagnumIncendiary
- - SpeedLoaderMagnumUranium
- - TelescopicShield
- - TimerTrigger
- - Truncheon
- - VoiceTrigger
- - WeaponAdvancedLaser
- - WeaponDisabler
- - WeaponDisablerSMG
- - WeaponLaserCannon
- - WeaponLaserCarbine
- - WeaponXrayCannon
+ staticPacks:
+ - SecurityEquipmentStatic
+ - SecurityPracticeStatic
+ - SecurityAmmoStatic
+ - SecurityWeaponsStatic
+ dynamicPacks:
+ - SecurityEquipment
+ - SecurityBoards
+ - SecurityExplosives
+ - SecurityAmmo
+ - SecurityWeapons
- type: MaterialStorage
whitelist:
tags:
- type: Lathe
idleState: icon
runningState: icon
- staticRecipes:
- - BoxLethalshot
- - BoxShotgunSlug
- - BoxShellTranquilizer
- - MagazineBoxLightRifle
- - MagazineBoxMagnum
- - MagazineBoxPistol
- - MagazineBoxRifle
- - MagazineLightRifle
- - MagazineLightRifleEmpty
- - MagazinePistol
- - MagazinePistolEmpty
- - MagazineRifle
- - MagazineRifleEmpty
- - MagazineShotgun
- - MagazineShotgunEmpty
- - MagazineShotgunSlug
- - SpeedLoaderMagnum
- - SpeedLoaderMagnumEmpty
+ staticPacks:
+ - SecurityAmmoStatic
- type: MaterialStorage
whitelist:
tags:
- type: Lathe
idleState: icon
runningState: icon
- staticRecipes:
- - Brutepack
- - Ointment
- - Gauze
- - HandLabeler
- - Defibrillator
- - HandheldHealthAnalyzer
- - ClothingHandsGlovesLatex
- - ClothingHandsGlovesNitrile
- - ClothingMaskSterile
- - DiseaseSwab
- - Beaker
- - LargeBeaker
- - Dropper
- - Jug
- - Syringe
- - Implanter
- - PillCanister
- - BodyBag
- - ChemistryEmptyBottle01
- - RollerBedSpawnFolded
- - CheapRollerBedSpawnFolded
- - EmergencyRollerBedSpawnFolded
- - Medkit
- - MedkitBurn
- - MedkitToxin
- - MedkitO2
- - MedkitBrute
- - MedkitAdvanced
- - MedkitRadiation
- - MedkitCombat
- - Scalpel
- - Retractor
- - Cautery
- - Drill
- - Saw
- - Hemostat
- - ClothingEyesGlassesChemical
- - WhiteCane
- dynamicRecipes:
- - ChemicalPayload
- - CryostasisBeaker
- - BluespaceBeaker
- - SyringeBluespace
- - SyringeCryostasis
+ staticPacks:
+ - TopicalsStatic
+ - ChemistryStatic
+ - MedicalStatic
+ - RollerBedsStatic
+ - MedicalClothingStatic
+ - EmptyMedkitsStatic
+ - SurgeryStatic
+ dynamicPacks:
+ - Chemistry
- type: Machine
board: MedicalTechFabCircuitboard
- type: StealTarget
producingSound: /Audio/Machines/uniformprinter.ogg
idleState: icon
runningState: building
- staticRecipes:
- - ClothingUniformJumpsuitColorGrey
- - ClothingUniformJumpskirtColorGrey
- - ClothingUniformJumpsuitBartender
- - ClothingUniformJumpskirtBartender
- - ClothingHeadHatCapcap
- - ClothingHeadHatCaptain
- - ClothingUniformJumpsuitCaptain
- - ClothingUniformJumpskirtCaptain
- - ClothingUniformJumpsuitCapFormal
- - ClothingUniformJumpskirtCapFormalDress
- - ClothingUniformJumpsuitCargo
- - ClothingUniformJumpskirtCargo
- - ClothingUniformJumpsuitSalvageSpecialist
- - ClothingHeadHatBeretEngineering
- - ClothingUniformJumpsuitChiefEngineer
- - ClothingUniformJumpskirtChiefEngineer
- - ClothingUniformJumpsuitChiefEngineerTurtle
- - ClothingUniformJumpskirtChiefEngineerTurtle
- - ClothingUniformJumpsuitChaplain
- - ClothingUniformJumpskirtChaplain
- - ClothingUniformJumpsuitChef
- - ClothingUniformJumpskirtChef
- - ClothingUniformJumpsuitChemistry
- - ClothingUniformJumpskirtChemistry
- - ClothingUniformJumpsuitClown
- - ClothingHeadHatBeretCmo
- - ClothingUniformJumpsuitCMO
- - ClothingUniformJumpskirtCMO
- - ClothingUniformJumpsuitCMOTurtle
- - ClothingUniformJumpskirtCMOTurtle
- - ClothingUniformJumpsuitDetective
- - ClothingUniformJumpskirtDetective
- - ClothingUniformJumpsuitEngineering
- - ClothingUniformJumpskirtEngineering
- - ClothingUniformJumpsuitSeniorEngineer
- - ClothingUniformJumpskirtSeniorEngineer
- - ClothingHeadHatHopcap
- - ClothingUniformJumpsuitHoP
- - ClothingUniformJumpskirtHoP
- - ClothingHeadHatBeretHoS
- - ClothingHeadHatHoshat
- - ClothingUniformJumpsuitHoS
- - ClothingUniformJumpskirtHoS
- - ClothingUniformJumpsuitHosFormal
- - ClothingUniformJumpskirtHosFormal
- - ClothingUniformJumpsuitHoSAlt
- - ClothingUniformJumpskirtHoSAlt
- - ClothingUniformJumpsuitHoSBlue
- - ClothingUniformJumpsuitHoSGrey
- - ClothingUniformJumpsuitHoSParadeMale
- - ClothingUniformJumpskirtHoSParadeMale
- - ClothingUniformJumpsuitHydroponics
- - ClothingUniformJumpskirtHydroponics
- - ClothingUniformJumpsuitJanitor
- - ClothingUniformJumpskirtJanitor
- - ClothingUniformJumpsuitLawyerBlack
- - ClothingUniformJumpsuitLibrarian
- - ClothingUniformJumpskirtColorLightBrown
- - ClothingHeadHatBeretSeniorPhysician
- - ClothingUniformJumpsuitMedicalDoctor
- - ClothingUniformJumpskirtMedicalDoctor
- - ClothingUniformJumpsuitSeniorPhysician
- - ClothingUniformJumpskirtSeniorPhysician
- - ClothingUniformJumpsuitMime
- - ClothingUniformJumpskirtMime
- - ClothingUniformJumpsuitMusician
- - ClothingUniformJumpsuitParamedic
- - ClothingUniformJumpskirtParamedic
- - ClothingUniformJumpsuitSeniorOfficer
- - ClothingUniformJumpskirtSeniorOfficer
- - ClothingUniformJumpsuitPrisoner
- - ClothingUniformJumpskirtPrisoner
- - ClothingHeadHatQMsoft
- - ClothingHeadHatBeretQM
- - ClothingUniformJumpsuitQM
- - ClothingUniformJumpskirtQM
- - ClothingUniformJumpsuitQMTurtleneck
- - ClothingUniformJumpskirtQMTurtleneck
- - ClothingUniformJumpsuitQMFormal
- - ClothingHeadHatBeretRND
- - ClothingUniformJumpsuitResearchDirector
- - ClothingUniformJumpskirtResearchDirector
- - ClothingUniformJumpsuitScientist
- - ClothingUniformJumpskirtScientist
- - ClothingUniformJumpsuitSeniorResearcher
- - ClothingUniformJumpskirtSeniorResearcher
- - ClothingHeadHatBeretSecurity
- - ClothingUniformJumpsuitSec
- - ClothingUniformJumpskirtSec
- - ClothingHeadHatBeretBrigmedic
- - ClothingUniformJumpsuitBrigmedic
- - ClothingUniformJumpskirtBrigmedic
- - ClothingHeadHatBeretWarden
- - ClothingHeadHatWarden
- - ClothingUniformJumpsuitWarden
- - ClothingUniformJumpskirtWarden
- - ClothingHeadHatParamedicsoft
- # Winter outfits
- - ClothingOuterWinterCap
- - ClothingOuterWinterCE
- - ClothingOuterWinterCMO
- - ClothingOuterWinterHoP
- - ClothingOuterWinterHoSUnarmored
- - ClothingOuterWinterWardenUnarmored
- - ClothingOuterWinterQM
- - ClothingOuterWinterRD
- - ClothingOuterWinterMusician
- - ClothingOuterWinterClown
- - ClothingOuterWinterMime
- - ClothingOuterWinterCoat
- - ClothingOuterWinterJani
- - ClothingOuterWinterBar
- - ClothingOuterWinterChef
- - ClothingOuterWinterHydro
- - ClothingOuterWinterAtmos
- - ClothingOuterWinterEngi
- - ClothingOuterWinterCargo
- - ClothingOuterWinterMiner
- - ClothingOuterWinterMed
- - ClothingOuterWinterPara
- - ClothingOuterWinterChem
- - ClothingOuterWinterGen
- - ClothingOuterWinterViro
- - ClothingOuterWinterSci
- - ClothingOuterWinterRobo
- - ClothingOuterWinterSec
- # Ties
- - ClothingNeckTieRed
- - ClothingNeckTieDet
- - ClothingNeckTieSci
- # Scarfs - All scarfs avaible in winterdrobe
- - ClothingNeckScarfStripedGreen
- - ClothingNeckScarfStripedBlue
- - ClothingNeckScarfStripedRed
- - ClothingNeckScarfStripedBrown
- - ClothingNeckScarfStripedLightBlue
- - ClothingNeckScarfStripedOrange
- - ClothingNeckScarfStripedBlack
- - ClothingNeckScarfStripedPurple
- # Carpets
- - Carpet
- - CarpetBlack
- - CarpetPink
- - CarpetBlue
- - CarpetGreen
- - CarpetOrange
- - CarpetPurple
- - CarpetCyan
- - CarpetWhite
- # Bedsheets
- - BedsheetBlack
- - BedsheetBlue
- - BedsheetBrown
- - BedsheetGreen
- - BedsheetGrey
- - BedsheetOrange
- - BedsheetPurple
- - BedsheetRed
- - BedsheetWhite
- - BedsheetYellow
- - BedsheetClown
- - BedsheetCosmos
- - BedsheetIan
- - BedsheetMedical
- - BedsheetMime
- - BedsheetNT
- - BedsheetRainbow
- - BedsheetBrigmedic
+ staticPacks:
+ - ClothingCivilian
+ - ClothingCargo
+ - ClothingCommand
+ - ClothingEngineering
+ - ClothingMedical
+ - ClothingScience
+ - ClothingSecurity
+ - ClothingService
+ - WinterCoats
+ - Ties
+ - Scarves
+ - Carpets
+ - Bedsheets
- type: EmagLatheRecipes
- emagStaticRecipes:
- # Clothing
- - ClothingHeadHatCentcomcap
- - ClothingHeadHatCentcom
- - ClothingUniformJumpsuitCentcomAgent
- - ClothingUniformJumpsuitCentcomFormal
- - ClothingUniformJumpskirtCentcomFormalDress
- - ClothingUniformJumpsuitCentcomOfficer
- - ClothingUniformJumpsuitCentcomOfficial
- - ClothingHeadHatSyndieMAA
- - ClothingHeadHatSyndie
- - ClothingUniformJumpsuitOperative
- - ClothingUniformJumpskirtOperative
- - ClothingUniformJumpsuitSyndieFormal
- - ClothingUniformJumpskirtSyndieFormalDress
- - ClothingHeadPyjamaSyndicateBlack
- - ClothingUniformJumpsuitPyjamaSyndicateBlack
- - ClothingHeadPyjamaSyndicatePink
- - ClothingUniformJumpsuitPyjamaSyndicatePink
- - ClothingHeadPyjamaSyndicateRed
- - ClothingUniformJumpsuitPyjamaSyndicateRed
- - ClothingOuterWinterCentcom
- - ClothingOuterWinterSyndie
- - ClothingOuterWinterSyndieCap
- # Bedsheets
- - BedsheetSyndie
+ emagStaticPacks:
+ - ClothingCentComm
+ - ClothingSyndie
- type: MaterialStorage
whitelist:
tags:
reagentOutputSlotId: beaker_slot
idleState: icon
runningState: building
- staticRecipes:
- - BioGenMilk
- - BioGenMilkSoy
- - BioGenEthanol
- - BioGenCream
- - BioGenBlackpepper
- - BioGenEnzyme
- - BioGenFlour
- - BioGenSugar
- - BioGenMonkeyCube
- - BioGenKoboldCube
- - BioGenMaterialCloth1
- - BioGenMaterialCardboard1
- - BioGenPaper
- - BioGenPaperRolling1
- - BioGenCandle
- - BioGenPlantBGone
- - BioGenWeedKiller
- - BioGenPestKiller
- - BioGenLeft4Zed
- - BioGenEZNutrient
- - BioGenRobustHarvest
+ staticPacks:
+ - BioGenIngredientsStatic
+ - BioGenMaterialsStatic
- type: entity
parent: BaseLathe
idleState: icon
runningState: building
defaultProductionAmount: 10
- staticRecipes:
- - SheetSteel
- - SheetGlass1
- - SheetRGlassRaw
- - SheetPlasma1
- - SheetPGlass1
- - SheetRPGlass1
- - SheetUranium1
- - IngotGold1
- - IngotSilver1
- - MaterialBananium1
- - MaterialDiamond
+ staticPacks:
+ - OreSmelting
+ - RGlassSmelting
- type: entity
parent: OreProcessor
- type: Lathe
materialUseMultiplier: 0.75
timeMultiplier: 0.5
- staticRecipes:
- - SheetSteel
- - SheetGlass1
- - SheetRGlassRaw
- - SheetPlasma1
- - SheetPGlass1
- - SheetRPGlass1
- - SheetPlasteel1
- - SheetUranium1
- - SheetUGlass1
- - SheetRUGlass1
- - IngotGold1
- - IngotSilver1
- - MaterialBananium1
- - MaterialDiamond
+ staticPacks:
+ - OreSmelting
+ - RGlassSmelting
+ - AdvancedSmelting
- type: entity
parent: BaseLathe
- type: Lathe
idleState: base_machine
runningState: base_machine_processing
- staticRecipes:
- - MaterialSheetMeat
- - SheetPaper
+ staticPacks:
+ - SheetifierStatic
- type: entity
parent: BaseLathe
producingSound: /Audio/Machines/cutter.ogg
idleState: icon
runningState: building
- staticRecipes:
- - FloorTileItemDark
- - FloorTileItemDarkDiagonalMini
- - FloorTileItemDarkDiagonal
- - FloorTileItemDarkHerringbone
- - FloorTileItemDarkMini
- - FloorTileItemDarkMono
- - FloorTileItemDarkPavement
- - FloorTileItemDarkPavementVertical
- - FloorTileItemDarkOffset
- - FloorTileItemSteelCheckerDark
- - FloorTileItemSteel
- - FloorTileItemSteelOffset
- - FloorTileItemSteelDiagonalMini
- - FloorTileItemSteelDiagonal
- - FloorTileItemSteelHerringbone
- - FloorTileItemSteelMini
- - FloorTileItemSteelMono
- - FloorTileItemSteelPavement
- - FloorTileItemSteelPavementVertical
- - FloorTileItemWhite
- - FloorTileItemWhiteOffset
- - FloorTileItemWhiteDiagonalMini
- - FloorTileItemWhiteDiagonal
- - FloorTileItemWhiteHerringbone
- - FloorTileItemWhiteMini
- - FloorTileItemWhiteMono
- - FloorTileItemWhitePavement
- - FloorTileItemWhitePavementVertical
- - FloorTileItemSteelCheckerLight
- - FloorTileItemGratingMaint
- - FloorTileItemTechmaint
- - FloorTileItemSteelMaint
- - FloorTileItemWood
- - FloorTileItemWoodLarge
- - FloorTileItemWoodPattern
- - FloorTileItemConcrete
- - FloorTileItemConcreteMono
- - FloorTileItemConcreteSmooth
- - FloorTileItemGrayConcrete
- - FloorTileItemGrayConcreteMono
- - FloorTileItemGrayConcreteSmooth
- - FloorTileItemOldConcrete
- - FloorTileItemOldConcreteMono
- - FloorTileItemOldConcreteSmooth
+ staticPacks:
+ - FloorTilesStatic
- type: MaterialStorage
whitelist:
tags:
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: FriendlyCubesStatic
+ recipes:
+ - MonkeyCube
+ - KoboldCube
+ - CowCube
+ - GoatCube
+ - MothroachCube
+ - MouseCube
+ - CockroachCube
+
+- type: latheRecipePack
+ id: HostileCubesStatic
+ recipes:
+ - AbominationCube
+ - SpaceCarpCube
+ - SpaceTickCube
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: Bedsheets
+ recipes:
+ - BedsheetBlack
+ - BedsheetBlue
+ - BedsheetBrown
+ - BedsheetGreen
+ - BedsheetGrey
+ - BedsheetOrange
+ - BedsheetPurple
+ - BedsheetRed
+ - BedsheetWhite
+ - BedsheetYellow
+ - BedsheetClown
+ - BedsheetCosmos
+ - BedsheetIan
+ - BedsheetMedical
+ - BedsheetMime
+ - BedsheetNT
+ - BedsheetRainbow
+ - BedsheetBrigmedic
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: BioGenIngredientsStatic
+ recipes:
+ - BioGenMilk
+ - BioGenMilkSoy
+ - BioGenEthanol
+ - BioGenCream
+ - BioGenBlackpepper
+ - BioGenEnzyme
+ - BioGenFlour
+ - BioGenSugar
+ - BioGenMonkeyCube
+ - BioGenKoboldCube
+ - BioGenCandle
+ - BioGenPlantBGone
+ - BioGenWeedKiller
+ - BioGenPestKiller
+ - BioGenLeft4Zed
+ - BioGenEZNutrient
+ - BioGenRobustHarvest
+
+- type: latheRecipePack
+ id: BioGenMaterialsStatic
+ recipes:
+ - BioGenMaterialCloth1
+ - BioGenMaterialCardboard1
+ - BioGenPaper
+ - BioGenPaperRolling1
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: CargoStatic
+ recipes:
+ - AppraisalTool
+ - Pickaxe
+
+- type: latheRecipePack
+ id: CargoBoardsStatic
+ recipes:
+ - OreProcessorMachineCircuitboard
+ - SalvageMagnetMachineCircuitboard
+
+## Dynamic
+
+- type: latheRecipePack
+ id: Mining
+ recipes:
+ - MiningDrill
+ - MiningDrillDiamond
+ - MineralScannerEmpty
+ - AdvancedMineralScannerEmpty
+ - OreBagOfHolding
+
+- type: latheRecipePack
+ id: CargoBoards
+ recipes:
+ - OreProcessorIndustrialMachineCircuitboard
+ - CargoTelepadMachineCircuitboard
+ - ShuttleGunKineticCircuitboard
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: ClothingCivilian
+ recipes:
+ - ClothingUniformJumpsuitColorGrey
+ - ClothingUniformJumpskirtColorGrey
+
+- type: latheRecipePack
+ id: ClothingCargo
+ recipes:
+ - ClothingUniformJumpsuitCargo
+ - ClothingUniformJumpskirtCargo
+ - ClothingUniformJumpsuitSalvageSpecialist
+ - ClothingHeadHatQMsoft
+ - ClothingHeadHatBeretQM
+ - ClothingUniformJumpsuitQM
+ - ClothingUniformJumpskirtQM
+ - ClothingUniformJumpsuitQMTurtleneck
+ - ClothingUniformJumpskirtQMTurtleneck
+ - ClothingUniformJumpsuitQMFormal
+
+- type: latheRecipePack
+ id: ClothingCommand
+ recipes:
+ # Captain
+ - ClothingHeadHatCapcap
+ - ClothingHeadHatCaptain
+ - ClothingUniformJumpsuitCaptain
+ - ClothingUniformJumpskirtCaptain
+ - ClothingUniformJumpsuitCapFormal
+ - ClothingUniformJumpskirtCapFormalDress
+ # HoP
+ - ClothingHeadHatHopcap
+ - ClothingUniformJumpsuitHoP
+ - ClothingUniformJumpskirtHoP
+
+- type: latheRecipePack
+ id: ClothingEngineering
+ recipes:
+ - ClothingHeadHatBeretEngineering
+ - ClothingUniformJumpsuitChiefEngineer
+ - ClothingUniformJumpskirtChiefEngineer
+ - ClothingUniformJumpsuitChiefEngineerTurtle
+ - ClothingUniformJumpskirtChiefEngineerTurtle
+ - ClothingUniformJumpsuitEngineering
+ - ClothingUniformJumpskirtEngineering
+ - ClothingUniformJumpsuitSeniorEngineer
+ - ClothingUniformJumpskirtSeniorEngineer
+
+- type: latheRecipePack
+ id: ClothingMedical
+ recipes:
+ - ClothingUniformJumpsuitChemistry
+ - ClothingUniformJumpskirtChemistry
+ - ClothingHeadHatBeretCmo
+ - ClothingUniformJumpsuitCMO
+ - ClothingUniformJumpskirtCMO
+ - ClothingUniformJumpsuitCMOTurtle
+ - ClothingUniformJumpskirtCMOTurtle
+ - ClothingHeadHatBeretSeniorPhysician
+ - ClothingUniformJumpsuitMedicalDoctor
+ - ClothingUniformJumpskirtMedicalDoctor
+ - ClothingUniformJumpsuitSeniorPhysician
+ - ClothingUniformJumpskirtSeniorPhysician
+ - ClothingUniformJumpsuitParamedic
+ - ClothingUniformJumpskirtParamedic
+ - ClothingHeadHatParamedicsoft
+
+- type: latheRecipePack
+ id: ClothingScience
+ recipes:
+ - ClothingHeadHatBeretRND
+ - ClothingUniformJumpsuitResearchDirector
+ - ClothingUniformJumpskirtResearchDirector
+ - ClothingUniformJumpsuitScientist
+ - ClothingUniformJumpskirtScientist
+ - ClothingUniformJumpsuitSeniorResearcher
+ - ClothingUniformJumpskirtSeniorResearcher
+
+- type: latheRecipePack
+ id: ClothingSecurity
+ recipes:
+ - ClothingUniformJumpsuitDetective
+ - ClothingUniformJumpskirtDetective
+ - ClothingHeadHatBeretHoS
+ - ClothingHeadHatHoshat
+ - ClothingUniformJumpsuitHoS
+ - ClothingUniformJumpskirtHoS
+ - ClothingUniformJumpsuitHosFormal
+ - ClothingUniformJumpskirtHosFormal
+ - ClothingUniformJumpsuitHoSAlt
+ - ClothingUniformJumpskirtHoSAlt
+ - ClothingUniformJumpsuitHoSBlue
+ - ClothingUniformJumpsuitHoSGrey
+ - ClothingUniformJumpsuitHoSParadeMale
+ - ClothingUniformJumpskirtHoSParadeMale
+ - ClothingUniformJumpsuitSeniorOfficer
+ - ClothingUniformJumpskirtSeniorOfficer
+ - ClothingUniformJumpsuitPrisoner
+ - ClothingUniformJumpskirtPrisoner
+ - ClothingHeadHatBeretSecurity
+ - ClothingUniformJumpsuitSec
+ - ClothingUniformJumpskirtSec
+ - ClothingHeadHatBeretBrigmedic
+ - ClothingUniformJumpsuitBrigmedic
+ - ClothingUniformJumpskirtBrigmedic
+ - ClothingHeadHatBeretWarden
+ - ClothingHeadHatWarden
+ - ClothingUniformJumpsuitWarden
+ - ClothingUniformJumpskirtWarden
+
+- type: latheRecipePack
+ id: ClothingService
+ recipes:
+ - ClothingUniformJumpsuitBartender
+ - ClothingUniformJumpskirtBartender
+ - ClothingUniformJumpsuitChaplain
+ - ClothingUniformJumpskirtChaplain
+ - ClothingUniformJumpsuitChef
+ - ClothingUniformJumpskirtChef
+ - ClothingUniformJumpsuitClown
+ - ClothingUniformJumpsuitHydroponics
+ - ClothingUniformJumpskirtHydroponics
+ - ClothingUniformJumpsuitJanitor
+ - ClothingUniformJumpskirtJanitor
+ - ClothingUniformJumpsuitLawyerBlack
+ - ClothingUniformJumpsuitLibrarian
+ - ClothingUniformJumpskirtColorLightBrown
+ - ClothingUniformJumpsuitMime
+ - ClothingUniformJumpskirtMime
+ - ClothingUniformJumpsuitMusician
+
+- type: latheRecipePack
+ id: WinterCoats
+ recipes:
+ - ClothingOuterWinterCap
+ - ClothingOuterWinterCE
+ - ClothingOuterWinterCMO
+ - ClothingOuterWinterHoP
+ - ClothingOuterWinterHoSUnarmored
+ - ClothingOuterWinterWardenUnarmored
+ - ClothingOuterWinterQM
+ - ClothingOuterWinterRD
+ - ClothingOuterWinterMusician
+ - ClothingOuterWinterClown
+ - ClothingOuterWinterMime
+ - ClothingOuterWinterCoat
+ - ClothingOuterWinterJani
+ - ClothingOuterWinterBar
+ - ClothingOuterWinterChef
+ - ClothingOuterWinterHydro
+ - ClothingOuterWinterAtmos
+ - ClothingOuterWinterEngi
+ - ClothingOuterWinterCargo
+ - ClothingOuterWinterMiner
+ - ClothingOuterWinterMed
+ - ClothingOuterWinterPara
+ - ClothingOuterWinterChem
+ - ClothingOuterWinterGen
+ - ClothingOuterWinterViro
+ - ClothingOuterWinterSci
+ - ClothingOuterWinterRobo
+ - ClothingOuterWinterSec
+
+- type: latheRecipePack
+ id: Ties
+ recipes:
+ - ClothingNeckTieRed
+ - ClothingNeckTieDet
+ - ClothingNeckTieSci
+
+- type: latheRecipePack
+ id: Scarves
+ recipes:
+ - ClothingNeckScarfStripedGreen
+ - ClothingNeckScarfStripedBlue
+ - ClothingNeckScarfStripedRed
+ - ClothingNeckScarfStripedBrown
+ - ClothingNeckScarfStripedLightBlue
+ - ClothingNeckScarfStripedOrange
+ - ClothingNeckScarfStripedBlack
+ - ClothingNeckScarfStripedPurple
+
+- type: latheRecipePack
+ id: Carpets
+ recipes:
+ - Carpet
+ - CarpetBlack
+ - CarpetPink
+ - CarpetBlue
+ - CarpetGreen
+ - CarpetOrange
+ - CarpetPurple
+ - CarpetCyan
+ - CarpetWhite
+
+- type: latheRecipePack
+ id: ClothingCentComm
+ recipes:
+ - ClothingHeadHatCentcomcap
+ - ClothingHeadHatCentcom
+ - ClothingUniformJumpsuitCentcomAgent
+ - ClothingUniformJumpsuitCentcomFormal
+ - ClothingUniformJumpskirtCentcomFormalDress
+ - ClothingUniformJumpsuitCentcomOfficer
+ - ClothingUniformJumpsuitCentcomOfficial
+
+- type: latheRecipePack
+ id: ClothingSyndie
+ recipes:
+ - ClothingHeadHatSyndieMAA
+ - ClothingHeadHatSyndie
+ - ClothingUniformJumpsuitOperative
+ - ClothingUniformJumpskirtOperative
+ - ClothingUniformJumpsuitSyndieFormal
+ - ClothingUniformJumpskirtSyndieFormalDress
+ - ClothingHeadPyjamaSyndicateBlack
+ - ClothingUniformJumpsuitPyjamaSyndicateBlack
+ - ClothingHeadPyjamaSyndicatePink
+ - ClothingUniformJumpsuitPyjamaSyndicatePink
+ - ClothingHeadPyjamaSyndicateRed
+ - ClothingUniformJumpsuitPyjamaSyndicateRed
+ - ClothingOuterWinterCentcom
+ - ClothingOuterWinterSyndie
+ - ClothingOuterWinterSyndieCap
+ - BedsheetSyndie
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: ToolsStatic
+ recipes:
+ - Wirecutter
+ - Screwdriver
+ - Welder
+ - Wrench
+ - CrowbarGreen
+ - Multitool
+ - NetworkConfigurator
+ - Signaller
+ - SprayPainter
+ - FlashlightLantern
+ - HandheldGPSBasic
+ - TRayScanner
+ - UtilityBelt
+ - HandheldStationMap
+ - ClothingHeadHatWelding
+ - ClothingHeadHatCone
+
+- type: latheRecipePack
+ id: AtmosStatic
+ recipes:
+ - AirTank
+ - GasAnalyzer
+
+- type: latheRecipePack
+ id: ElectronicsStatic
+ recipes:
+ - IntercomElectronics
+ - FirelockElectronics
+ - DoorElectronics
+ - AirAlarmElectronics
+ - StationMapElectronics
+ - FireAlarmElectronics
+ - MailingUnitElectronics
+ - SignalTimerElectronics
+ - APCElectronics
+ - SMESMachineCircuitboard
+ - SubstationMachineCircuitboard
+ - WallmountSubstationElectronics
+ - CellRechargerCircuitboard
+ - WeaponCapacitorRechargerCircuitboard
+ - FreezerElectronics
+
+- type: latheRecipePack
+ id: EngineeringBoardsStatic
+ recipes:
+ - SpaceHeaterMachineCircuitBoard
+
+## Dynamic
+
+- type: latheRecipePack
+ id: AdvancedTools
+ recipes:
+ - PowerDrill
+ - WelderExperimental
+ - JawsOfLife
+
+- type: latheRecipePack
+ id: AtmosTools
+ recipes:
+ - HolofanProjector
+
+- type: latheRecipePack
+ id: EngineeringWeapons
+ recipes:
+ - WeaponParticleDecelerator
+
+- type: latheRecipePack
+ id: EngineeringBoards
+ recipes:
+ - ThermomachineFreezerMachineCircuitBoard
+ - HellfireFreezerMachineCircuitBoard
+ - PortableScrubberMachineCircuitBoard
+ - SolarControlComputerCircuitboard
+ - SolarTrackerElectronics
+ - GasRecyclerMachineCircuitboard
+ - PortableGeneratorPacmanMachineCircuitboard
+ - PortableGeneratorSuperPacmanMachineCircuitboard
+ - PortableGeneratorJrPacmanMachineCircuitboard
+ - EmitterCircuitboard
+ - TelecomServerCircuitboard
+ - SMESAdvancedMachineCircuitboard
+ - HolopadMachineCircuitboard
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: TopicalsStatic
+ recipes:
+ - Brutepack
+ - Ointment
+ - Gauze
+
+- type: latheRecipePack
+ id: BasicChemistryStatic
+ recipes:
+ - Beaker
+ - LargeBeaker
+ - Syringe
+ - PillCanister
+ - HandLabeler
+
+- type: latheRecipePack
+ parent: BasicChemistryStatic
+ id: ChemistryStatic
+ recipes:
+ - Jug
+ - ChemistryEmptyBottle01
+ - ClothingEyesGlassesChemical
+
+- type: latheRecipePack
+ id: SurgeryStatic
+ recipes:
+ - Scalpel
+ - Retractor
+ - Cautery
+ - Drill
+ - Saw
+ - Hemostat
+
+- type: latheRecipePack
+ id: MedicalStatic
+ recipes:
+ - Implanter
+ - Defibrillator
+ - HandheldHealthAnalyzer
+ - DiseaseSwab
+ - BodyBag
+ - WhiteCane
+
+- type: latheRecipePack
+ id: RollerBedsStatic
+ recipes:
+ - RollerBedSpawnFolded
+ - CheapRollerBedSpawnFolded
+ - EmergencyRollerBedSpawnFolded
+
+- type: latheRecipePack
+ id: MedicalClothingStatic
+ recipes:
+ - ClothingHandsGlovesLatex
+ - ClothingHandsGlovesNitrile
+ - ClothingMaskSterile
+
+# These are all empty
+- type: latheRecipePack
+ id: EmptyMedkitsStatic
+ recipes:
+ - Medkit
+ - MedkitBurn
+ - MedkitToxin
+ - MedkitO2
+ - MedkitBrute
+ - MedkitAdvanced
+ - MedkitRadiation
+ - MedkitCombat
+
+- type: latheRecipePack
+ id: MedicalBoardsStatic
+ recipes:
+ - ElectrolysisUnitMachineCircuitboard
+ - CentrifugeMachineCircuitboard
+ - ChemDispenserMachineCircuitboard
+ - ChemMasterMachineCircuitboard
+ - CondenserMachineCircuitBoard
+ - HotplateMachineCircuitboard
+
+## Dynamic
+
+# Shared with protolathe
+- type: latheRecipePack
+ id: Chemistry
+ recipes:
+ - ChemicalPayload
+ - CryostasisBeaker
+ - SyringeCryostasis
+ - BluespaceBeaker
+ - SyringeBluespace
+
+- type: latheRecipePack
+ id: MedicalBoards
+ recipes:
+ - StasisBedMachineCircuitboard
+ - CryoPodMachineCircuitboard
+ - BiomassReclaimerMachineCircuitboard
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: OreSmelting
+ recipes:
+ - SheetSteel
+ - SheetGlass1
+ - SheetPlasma1
+ - SheetUranium1
+ - IngotGold1
+ - IngotSilver1
+ - MaterialBananium1
+ - MaterialDiamond
+
+- type: latheRecipePack
+ id: RGlassSmelting
+ recipes:
+ - SheetRGlassRaw
+ - SheetPGlass1
+ - SheetRPGlass1
+
+- type: latheRecipePack
+ id: AdvancedSmelting
+ recipes:
+ - SheetPlasteel1
+ - SheetUGlass1
+ - SheetRUGlass1
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: RoboticsStatic
+ recipes:
+ - MMI
+ - PositronicBrain
+ - SciFlash
+ - CyborgEndoskeleton
+
+- type: latheRecipePack
+ id: BorgModulesStatic
+ recipes:
+ - BorgModuleCable
+ - BorgModuleFireExtinguisher
+ - BorgModuleRadiationDetection
+ - BorgModuleTool
+
+- type: latheRecipePack
+ id: BorgLimbsStatic
+ recipes:
+ - LeftArmBorg
+ - RightArmBorg
+ - LeftLegBorg
+ - RightLegBorg
+ - LightHeadBorg
+ - TorsoBorg
+
+## Dynamic
+
+- type: latheRecipePack
+ id: Robotics
+ recipes:
+ - ProximitySensor
+
+- type: latheRecipePack
+ id: BorgModules
+ recipes:
+ - BorgModuleAdvancedCleaning
+ - BorgModuleAdvancedTool
+ - BorgModuleGPS
+ - BorgModuleArtifact
+ - BorgModuleAnomaly
+ - BorgModuleGardening
+ - BorgModuleHarvesting
+ - BorgModuleDefibrillator
+ - BorgModuleAdvancedTreatment
+
+- type: latheRecipePack
+ id: MechParts
+ recipes:
+ - RipleyHarness
+ - RipleyLArm
+ - RipleyRArm
+ - RipleyLLeg
+ - RipleyRLeg
+ - HonkerHarness
+ - HonkerLArm
+ - HonkerRArm
+ - HonkerLLeg
+ - HonkerRLeg
+ - HamtrHarness
+ - HamtrLArm
+ - HamtrRArm
+ - HamtrLLeg
+ - HamtrRLeg
+ - VimHarness
+
+- type: latheRecipePack
+ id: MechEquipment
+ recipes:
+ - MechEquipmentGrabber
+ - MechEquipmentHorn
+ - MechEquipmentGrabberSmall
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: ScienceBoardsStatic
+ recipes:
+ - ProtolatheMachineCircuitboard
+ - AutolatheMachineCircuitboard
+ - CircuitImprinterMachineCircuitboard
+ - ExosuitFabricatorMachineCircuitboard
+ - CutterMachineCircuitboard
+ - BorgChargerCircuitboard
+
+- type: latheRecipePack
+ id: CircuitFloorsStatic
+ recipes:
+ - FloorGreenCircuit
+ - FloorBlueCircuit
+ - FloorRedCircuit
+
+## Dynamic
+
+- type: latheRecipePack
+ id: ScienceEquipment
+ recipes:
+ - AnomalyScanner
+ - NodeScanner
+ - AnomalyLocator
+ - AnomalyLocatorWide
+ - HoloprojectorField
+ - SignallerAdvanced
+ - DeviceQuantumSpinInverter
+
+- type: latheRecipePack
+ id: ScienceClothing
+ recipes:
+ - ClothingShoesBootsMagSci
+ - ClothingShoesBootsMoon
+ - ClothingShoesBootsSpeed
+ - ClothingBackpackHolding
+ - ClothingBackpackSatchelHolding
+ - ClothingBackpackDuffelHolding
+
+- type: latheRecipePack
+ id: PowerCells
+ recipes:
+ - PowerCellMicroreactor
+ - PowerCellHigh
+
+- type: latheRecipePack
+ id: ScienceWeapons
+ recipes:
+ - WeaponPistolCHIMP
+ - WeaponForceGun
+ - WeaponLaserSvalinn
+ - WeaponProtoKineticAccelerator
+ - WeaponTetherGun
+ - WeaponGauntletGorilla
+
+- type: latheRecipePack
+ id: FauxTiles
+ recipes:
+ - FauxTileAstroGrass
+ - FauxTileMowedAstroGrass
+ - FauxTileJungleAstroGrass
+ - FauxTileAstroIce
+ - FauxTileAstroSnow
+ - FauxTileAstroAsteroidSand
+
+# Only contains parts for making basic modular grenades, no actual explosives
+- type: latheRecipePack
+ id: ScienceExplosives
+ recipes:
+ - ChemicalPayload
+ - FlashPayload
+ - TimerTrigger
+ - SignalTrigger
+ - VoiceTrigger
+
+- type: latheRecipePack
+ id: ScienceBoards
+ recipes:
+ - TurboItemRechargerCircuitboard
+ - AutolatheHyperConvectionMachineCircuitboard
+ - ProtolatheHyperConvectionMachineCircuitboard
+ - CircuitImprinterHyperConvectionMachineCircuitboard
+ - TechDiskComputerCircuitboard
+ - FlatpackerMachineCircuitboard
+ - SheetifierMachineCircuitboard
+ - PowerCageRechargerCircuitboard
+ - AnalysisComputerCircuitboard
+ - AnomalyVesselCircuitboard
+ - AnomalyVesselExperimentalCircuitboard
+ - AnomalySynchronizerCircuitboard
+ - APECircuitboard
+ - ArtifactAnalyzerMachineCircuitboard
+ - ArtifactCrusherMachineCircuitboard
+
+- type: latheRecipePack
+ id: CameraBoards
+ recipes:
+ - SurveillanceCameraRouterCircuitboard
+ - SurveillanceCameraMonitorCircuitboard
+ - SurveillanceWirelessCameraMonitorCircuitboard
+ - SurveillanceCameraWirelessRouterCircuitboard
+ - ComputerTelevisionCircuitboard
+ - SurveillanceWirelessCameraMovableCircuitboard
+ - SurveillanceWirelessCameraAnchoredCircuitboard
+
+- type: latheRecipePack
+ id: MechBoards
+ recipes:
+ - RipleyCentralElectronics
+ - RipleyPeripheralsElectronics
+ - HonkerCentralElectronics
+ - HonkerPeripheralsElectronics
+ - HonkerTargetingElectronics
+ - HamtrCentralElectronics
+ - HamtrPeripheralsElectronics
+
+- type: latheRecipePack
+ id: ShuttleBoards
+ recipes:
+ - ShuttleConsoleCircuitboard
+ - RadarConsoleCircuitboard
+ - ThrusterMachineCircuitboard
+ - GyroscopeMachineCircuitboard
+ - MiniGravityGeneratorCircuitboard
--- /dev/null
+## Static recipes
+
+- type: latheRecipePack
+ id: SecurityEquipmentStatic
+ recipes:
+ - ClothingEyesHudSecurity
+ - ForensicPad
+ - Handcuffs
+ - TargetClown
+ - TargetHuman
+ - TargetSyndicate
+ - Zipties
+
+# Practice ammo/mags and practice weapons
+- type: latheRecipePack
+ id: SecurityPracticeStatic
+ recipes:
+ - BoxShotgunPractice
+ - MagazineBoxLightRiflePractice
+ - MagazineBoxMagnumPractice
+ - MagazineBoxPistolPractice
+ - MagazineBoxRiflePractice
+ - WeaponDisablerPractice
+ - WeaponLaserCarbinePractice
+ - WeaponFlareGunSecurity
+
+# Shared between secfab and emagged autolathe
+- type: latheRecipePack
+ id: SecurityAmmoStatic
+ recipes:
+ - BoxLethalshot
+ - BoxShotgunSlug
+ - MagazineBoxLightRifle
+ - MagazineBoxMagnum
+ - MagazineBoxPistol
+ - MagazineBoxRifle
+ - MagazineLightRifle
+ - MagazineLightRifleEmpty
+ - MagazinePistol
+ - MagazinePistolEmpty
+ - MagazinePistolSubMachineGun
+ - MagazinePistolSubMachineGunEmpty
+ - MagazinePistolSubMachineGunTopMounted
+ - MagazinePistolSubMachineGunTopMountedEmpty
+ - MagazineRifle
+ - MagazineRifleEmpty
+ - MagazineShotgun
+ - MagazineShotgunEmpty
+ - MagazineShotgunSlug
+ - SpeedLoaderMagnum
+ - SpeedLoaderMagnumEmpty
+
+- type: latheRecipePack
+ id: SecurityWeaponsStatic
+ recipes:
+ - Flash
+ - Stunbaton
+ - CombatKnife
+ - RiotShield
+
+## Dynamic recipes
+
+- type: latheRecipePack
+ id: SecurityEquipment
+ recipes:
+ - ClothingBackpackElectropack
+ - HoloprojectorSecurity
+ - PortableRecharger
+ - PowerCageHigh
+ - PowerCageMedium
+ - PowerCageSmall
+ - TelescopicShield
+
+- type: latheRecipePack
+ id: SecurityBoards
+ recipes:
+ - ShuttleGunDusterCircuitboard
+ - ShuttleGunFriendshipCircuitboard
+ - ShuttleGunPerforatorCircuitboard
+ - ShuttleGunSvalinnMachineGunCircuitboard
+
+- type: latheRecipePack
+ parent:
+ - ScienceExplosives # sec gets everything for modular grenade making that sci does
+ id: SecurityExplosives
+ recipes:
+ - ExplosivePayload
+ - GrenadeBlast
+ - GrenadeEMP
+ - GrenadeFlash
+ - MagazineGrenadeEmpty
+
+# Shared between secfab and emagged protolathe
+- type: latheRecipePack
+ id: SecurityAmmo
+ recipes:
+ - BoxBeanbag
+ - BoxShotgunIncendiary
+ - BoxShotgunUranium
+ - BoxShellTranquilizer
+ - MagazineBoxLightRifleIncendiary
+ - MagazineBoxLightRifleUranium
+ - MagazineBoxMagnumIncendiary
+ - MagazineBoxMagnumUranium
+ - MagazineBoxPistolIncendiary
+ - MagazineBoxPistolUranium
+ - MagazineBoxRifleIncendiary
+ - MagazineBoxRifleUranium
+ - MagazineLightRifleIncendiary
+ - MagazineLightRifleUranium
+ - MagazinePistolIncendiary
+ - MagazinePistolUranium
+ - MagazinePistolSubMachineGunIncendiary
+ - MagazinePistolSubMachineGunUranium
+ - MagazineRifleIncendiary
+ - MagazineRifleUranium
+ - MagazineShotgunBeanbag
+ - MagazineShotgunIncendiary
+ - SpeedLoaderMagnumIncendiary
+ - SpeedLoaderMagnumUranium
+
+- type: latheRecipePack
+ id: SecurityWeapons
+ recipes:
+ - Truncheon
+ - WeaponAdvancedLaser
+ - WeaponDisabler
+ - WeaponDisablerSMG
+ - WeaponLaserCannon
+ - WeaponLaserCarbine
+ - WeaponXrayCannon
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: ServiceStatic
+ recipes:
+ - Bucket
+ - DrinkMug
+ - DrinkMugMetal
+ - DrinkGlass
+ - DrinkShotGlass
+ - DrinkGlassCoupeShaped
+ - CustomDrinkJug
+ - FoodPlate
+ - FoodPlateSmall
+ - FoodPlatePlastic
+ - FoodPlateSmallPlastic
+ - FoodBowlBig
+ - FoodPlateTin
+ - FoodPlateMuffinTin
+ - FoodKebabSkewer
+ - SprayBottle
+ - MopItem
+ - Holoprojector
+ - WetFloorSign
+
+- type: latheRecipePack
+ id: ServiceBoardsStatic
+ recipes:
+ - BiogeneratorMachineCircuitboard
+ - UniformPrinterMachineCircuitboard
+ - MicrowaveMachineCircuitboard
+ - ReagentGrinderMachineCircuitboard
+ - ElectricGrillMachineCircuitboard
+ - BoozeDispenserMachineCircuitboard
+ - SodaDispenserMachineCircuitboard
+
+## Dynamic
+
+- type: latheRecipePack
+ id: Janitor
+ recipes:
+ - AdvMopItem
+ - WeaponSprayNozzle
+ - ClothingBackpackWaterTank
+ - MegaSprayBottle
+
+- type: latheRecipePack
+ id: Instruments
+ recipes:
+ - SynthesizerInstrument
+
+- type: latheRecipePack
+ id: ServiceBoards
+ recipes:
+ - BiofabricatorMachineCircuitboard
+ - FatExtractorMachineCircuitboard
+ - HydroponicsTrayMachineCircuitboard # roundstart gear being unlocked roundstart when
+ - SeedExtractorMachineCircuitboard # ^
+ - MassMediaCircuitboard
+ - ReagentGrinderIndustrialMachineCircuitboard
+ - JukeboxCircuitBoard
+ - DawInstrumentMachineCircuitboard
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: MaterialsStatic
+ recipes:
+ - SheetRGlass
+
+- type: latheRecipePack
+ id: PartsStatic
+ recipes:
+ - Igniter
+ - ModularReceiver
+ - MicroManipulatorStockPart
+ - MatterBinStockPart
+ - CapacitorStockPart
+ - ConveyorBeltAssembly
+
+- type: latheRecipePack
+ id: LightsStatic
+ recipes:
+ - LightTube
+ - LedLightTube
+ - SodiumLightTube
+ - ExteriorLightTube
+ - LightBulb
+ - LedLightBulb
+ - DimLightBulb
+ - WarmLightBulb
+
+- type: latheRecipePack
+ id: PowerCellsStatic
+ recipes:
+ - PowerCellSmall
+ - PowerCellMedium
+
+- type: latheRecipePack
+ id: CablesStatic
+ recipes:
+ - CableStack
+ - CableMVStack
+ - CableHVStack
+
+## Dynamic
+
+# Things you'd expect sci salv and engi to make use of
+- type: latheRecipePack
+ id: Equipment
+ recipes:
+ - HandHeldMassScanner
+ - ClothingMaskWeldingGas
+ - SignallerAdvanced
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: SheetifierStatic
+ recipes:
+ - MaterialSheetMeat
+ - SheetPaper
--- /dev/null
+## Static
+
+- type: latheRecipePack
+ id: FloorTilesStatic
+ recipes:
+ - FloorTileItemDark
+ - FloorTileItemDarkDiagonalMini
+ - FloorTileItemDarkDiagonal
+ - FloorTileItemDarkHerringbone
+ - FloorTileItemDarkMini
+ - FloorTileItemDarkMono
+ - FloorTileItemDarkPavement
+ - FloorTileItemDarkPavementVertical
+ - FloorTileItemDarkOffset
+ - FloorTileItemSteelCheckerDark
+ - FloorTileItemSteel
+ - FloorTileItemSteelOffset
+ - FloorTileItemSteelDiagonalMini
+ - FloorTileItemSteelDiagonal
+ - FloorTileItemSteelHerringbone
+ - FloorTileItemSteelMini
+ - FloorTileItemSteelMono
+ - FloorTileItemSteelPavement
+ - FloorTileItemSteelPavementVertical
+ - FloorTileItemWhite
+ - FloorTileItemWhiteOffset
+ - FloorTileItemWhiteDiagonalMini
+ - FloorTileItemWhiteDiagonal
+ - FloorTileItemWhiteHerringbone
+ - FloorTileItemWhiteMini
+ - FloorTileItemWhiteMono
+ - FloorTileItemWhitePavement
+ - FloorTileItemWhitePavementVertical
+ - FloorTileItemSteelCheckerLight
+ - FloorTileItemGratingMaint
+ - FloorTileItemTechmaint
+ - FloorTileItemSteelMaint
+ - FloorTileItemWood
+ - FloorTileItemWoodLarge
+ - FloorTileItemWoodPattern
+ - FloorTileItemConcrete
+ - FloorTileItemConcreteMono
+ - FloorTileItemConcreteSmooth
+ - FloorTileItemGrayConcrete
+ - FloorTileItemGrayConcreteMono
+ - FloorTileItemGrayConcreteSmooth
+ - FloorTileItemOldConcrete
+ - FloorTileItemOldConcreteMono
+ - FloorTileItemOldConcreteSmooth
materials:
Steel: 300
+- type: latheRecipe
+ parent: BaseAmmoRecipe
+ id: MagazinePistolSubMachineGunUranium
+ result: MagazinePistolSubMachineGunUranium
+ materials:
+ Steel: 25
+ Plastic: 250
+ Uranium: 250
+
+- type: latheRecipe
+ parent: BaseAmmoRecipe
+ id: MagazinePistolSubMachineGunIncendiary
+ result: MagazinePistolSubMachineGunIncendiary
+ materials:
+ Steel: 25
+ Plastic: 275
+
- type: latheRecipe
parent: BaseEmptyAmmoRecipe
id: MagazinePistolSubMachineGunTopMountedEmpty
- BoxShotgunIncendiary
- MagazineRifleIncendiary
- MagazinePistolIncendiary
+ - MagazinePistolSubMachineGunIncendiary
- MagazineLightRifleIncendiary
- SpeedLoaderMagnumIncendiary
- MagazineShotgunIncendiary
recipeUnlocks:
- MagazineRifleUranium
- MagazinePistolUranium
+ - MagazinePistolSubMachineGunUranium
- MagazineLightRifleUranium
- SpeedLoaderMagnumUranium
- MagazineBoxPistolUranium
cost: 5000
recipeUnlocks:
- ProximitySensor
- - ExosuitFabricatorMachineCircuitboard
- type: technology
id: BasicAnomalousResearch