move lathe recipes into packs (easier for forks and maintaining) (#33095)

* add LatheRecipePackPrototype

* change Lathe and EmagLathe to use packs

* add AddRecipesFromPacks helper to SharedLatheSystem

* update lathe logic to work with packs and clean up some stuff

* migrate individual recipes to recipe packs

* update client

* remove node/artifact scanner from techs

* :trollface:

* fix test and make it include emag recipes

* add test that every dynamic recipe must be researched

* pro

* fix

* fix

* fix all tests, genuinely good test i wonder who made it

* add unused uranium and incendiary drozd mags to tech and lathe

* add recipes

* add incendiary prototype

* undo some changes

* troll

* :trollface:

* true

Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>

* shitmed real

Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>

* update funny test

* :trollface:

* :trollface:

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
This commit is contained in:
deltanedas 2025-02-07 18:22:49 +00:00 committed by deltanedas
parent 8ae4c36e34
commit b38b5a32a2
45 changed files with 1859 additions and 1213 deletions

View File

@ -74,7 +74,7 @@ public sealed partial class LatheMenu : DefaultWindow
if (_entityManager.TryGetComponent<LatheComponent>(Entity, out var latheComponent))
{
if (!latheComponent.DynamicRecipes.Any())
if (!latheComponent.DynamicPacks.Any())
{
ServerListButton.Visible = false;
}

View File

@ -26,6 +26,7 @@ public sealed class LatheTest
var compFactory = server.ResolveDependency<IComponentFactory>();
var materialStorageSystem = server.System<SharedMaterialStorageSystem>();
var whitelistSystem = server.System<EntityWhitelistSystem>();
var latheSystem = server.System<SharedLatheSystem>();
await server.WaitAssertion(() =>
{
@ -74,14 +75,14 @@ public sealed class LatheTest
}
}
// 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

View File

@ -52,13 +52,16 @@ public sealed class ResearchTest
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)
@ -69,30 +72,31 @@ public sealed class ResearchTest
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.");
}
});
});

View File

@ -20,6 +20,7 @@ using Content.Shared.Emag.Components;
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;
@ -58,6 +59,7 @@ namespace Content.Server.Lathe
/// Per-tick cache
/// </summary>
private readonly List<GasMixture> _environments = new();
private readonly HashSet<ProtoId<LatheRecipePrototype>> _availableRecipes = new();
public override void Initialize()
{
@ -157,19 +159,16 @@ namespace Content.Server.Lathe
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))
@ -279,35 +278,42 @@ namespace Content.Server.Lathe
_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)

View File

@ -1,4 +1,4 @@
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;
@ -9,15 +9,15 @@ namespace Content.Shared.Lathe
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();
}
}

View File

@ -1,4 +1,5 @@
using Content.Shared.Construction.Prototypes;
using Content.Shared.Lathe.Prototypes;
using Content.Shared.Research.Prototypes;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
@ -10,16 +11,16 @@ namespace Content.Shared.Lathe
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

View File

@ -0,0 +1,31 @@
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();
}

View File

@ -2,6 +2,7 @@ using System.Diagnostics.CodeAnalysis;
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;
@ -33,6 +34,18 @@ public abstract class SharedLatheSystem : EntitySystem
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)

View File

@ -315,3 +315,11 @@
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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,19 @@
## Static
- type: latheRecipePack
id: FriendlyCubesStatic
recipes:
- MonkeyCube
- KoboldCube
- CowCube
- GoatCube
- MothroachCube
- MouseCube
- CockroachCube
- type: latheRecipePack
id: HostileCubesStatic
recipes:
- AbominationCube
- SpaceCarpCube
- SpaceTickCube

View File

@ -0,0 +1,23 @@
## Static
- type: latheRecipePack
id: Bedsheets
recipes:
- BedsheetBlack
- BedsheetBlue
- BedsheetBrown
- BedsheetGreen
- BedsheetGrey
- BedsheetOrange
- BedsheetPurple
- BedsheetRed
- BedsheetWhite
- BedsheetYellow
- BedsheetClown
- BedsheetCosmos
- BedsheetIan
- BedsheetMedical
- BedsheetMime
- BedsheetNT
- BedsheetRainbow
- BedsheetBrigmedic

View File

@ -0,0 +1,30 @@
## 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

View File

@ -0,0 +1,33 @@
## Static
- type: latheRecipePack
id: CargoStatic
recipes:
- AppraisalTool
- Pickaxe
- type: latheRecipePack
id: CargoBoardsStatic
recipes:
- OreProcessorMachineCircuitboard
- SalvageMagnetMachineCircuitboard
## Dynamic
- type: latheRecipePack
parent:
- MiningDeltaV # DeltaV
id: Mining
recipes:
- MiningDrill
- MiningDrillDiamond
- MineralScannerEmpty
- AdvancedMineralScannerEmpty
- OreBagOfHolding
- type: latheRecipePack
id: CargoBoards
recipes:
- OreProcessorIndustrialMachineCircuitboard
- CargoTelepadMachineCircuitboard
- ShuttleGunKineticCircuitboard

View File

@ -0,0 +1,239 @@
## Static
- type: latheRecipePack
id: ClothingCivilian
recipes:
- ClothingUniformJumpsuitColorGrey
- ClothingUniformJumpskirtColorGrey
- type: latheRecipePack
parent:
- ClothingCargoDeltaV # DeltaV
id: ClothingCargo
recipes:
- ClothingUniformJumpsuitCargo
- ClothingUniformJumpskirtCargo
- ClothingUniformJumpsuitSalvageSpecialist
- ClothingHeadHatQMsoft
- ClothingHeadHatBeretQM
- ClothingUniformJumpsuitQM
- ClothingUniformJumpskirtQM
- ClothingUniformJumpsuitQMTurtleneck
- ClothingUniformJumpskirtQMTurtleneck
- ClothingUniformJumpsuitQMFormal
- type: latheRecipePack
parent:
- ClothingCommandDeltaV # DeltaV
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
parent:
- ClothingEpistemics # DeltaV
id: ClothingScience
recipes:
- ClothingHeadHatBeretRND
- ClothingUniformJumpsuitResearchDirector
- ClothingUniformJumpskirtResearchDirector
- ClothingUniformJumpsuitScientist
- ClothingUniformJumpskirtScientist
- ClothingUniformJumpsuitSeniorResearcher
- ClothingUniformJumpskirtSeniorResearcher
- type: latheRecipePack
parent:
- ClothingSecurityDeltaV # DeltaV
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
parent:
- WinterCoatsDeltaV # DeltaV
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
parent:
- ClothingSyndieDeltaV # DeltaV
id: ClothingSyndie
recipes:
- ClothingHeadHatSyndieMAA
- ClothingHeadHatSyndie
- ClothingUniformJumpsuitOperative
- ClothingUniformJumpskirtOperative
- ClothingUniformJumpsuitSyndieFormal
- ClothingUniformJumpskirtSyndieFormalDress
- ClothingHeadPyjamaSyndicateBlack
- ClothingUniformJumpsuitPyjamaSyndicateBlack
- ClothingHeadPyjamaSyndicatePink
- ClothingUniformJumpsuitPyjamaSyndicatePink
- ClothingHeadPyjamaSyndicateRed
- ClothingUniformJumpsuitPyjamaSyndicateRed
- ClothingOuterWinterCentcom
- ClothingOuterWinterSyndie
- ClothingOuterWinterSyndieCap
- BedsheetSyndie

View File

@ -0,0 +1,91 @@
## 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
parent:
- AtmosToolsDeltaV # DeltaV
id: AtmosTools
recipes:
- HolofanProjector
- type: latheRecipePack
id: EngineeringWeapons
recipes:
- WeaponParticleDecelerator
- type: latheRecipePack
parent:
- EngineeringBoardsDeltaV # DeltaV
id: EngineeringBoards
recipes:
- ThermomachineFreezerMachineCircuitBoard
- HellfireFreezerMachineCircuitBoard
- PortableScrubberMachineCircuitBoard
- SolarControlComputerCircuitboard
- SolarTrackerElectronics
- GasRecyclerMachineCircuitboard
- PortableGeneratorPacmanMachineCircuitboard
- PortableGeneratorSuperPacmanMachineCircuitboard
- PortableGeneratorJrPacmanMachineCircuitboard
- EmitterCircuitboard
- TelecomServerCircuitboard
- SMESAdvancedMachineCircuitboard
- HolopadMachineCircuitboard

View File

@ -0,0 +1,110 @@
## 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
parent:
- SurgeryStaticShitmed # Shitmed change
id: SurgeryStatic
recipes:
- Scalpel
- Retractor
- Cautery
- Drill
- Saw
- Hemostat
- type: latheRecipePack
parent:
- MedicalStaticDeltaV # DeltaV
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
parent:
- MedicalBoardsStaticShitmed # Shitmed change
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
parent:
- MedicalBoardsDeltaV # DeltaV
id: MedicalBoards
recipes:
- StasisBedMachineCircuitboard
- CryoPodMachineCircuitboard
- BiomassReclaimerMachineCircuitboard

View File

@ -0,0 +1,27 @@
## 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

View File

@ -0,0 +1,79 @@
## Static
- type: latheRecipePack
parent:
- IPCPartsStatic # Shitmed Change
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
parent:
- BorgModulesDeltaV # DeltaV
- BorgModulesShitmed # Shitmed change
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

View File

@ -0,0 +1,129 @@
## 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 # DeltaV
#- WeaponLaserSvalinn # DeltaV
- WeaponProtoKineticAccelerator
#- WeaponTetherGun # DeltaV
- 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
parent:
- EpistemicsBoards # DeltaV
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

View File

@ -0,0 +1,146 @@
## Static recipes
- type: latheRecipePack
parent:
- SecurityEquipmentStaticDeltaV # DeltaV
id: SecurityEquipmentStatic
recipes:
- ClothingEyesHudSecurity
- ForensicPad
- Handcuffs
- TargetClown
- TargetHuman
- TargetSyndicate
- Zipties
# Practice ammo/mags and practice weapons
- type: latheRecipePack
parent:
- SecurityPracticeStaticDeltaV # DeltaV
id: SecurityPracticeStatic
recipes:
- BoxShotgunPractice
- MagazineBoxLightRiflePractice
- MagazineBoxMagnumPractice
- MagazineBoxPistolPractice
- MagazineBoxRiflePractice
- WeaponDisablerPractice
- WeaponLaserCarbinePractice
- WeaponFlareGunSecurity
# Shared between secfab and emagged autolathe
- type: latheRecipePack
parent:
- SecurityAmmoStaticDeltaV # DeltaV
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
parent:
- SecurityWeaponsStaticDeltaV # DeltaV
id: SecurityWeaponsStatic
recipes:
- Flash
- Stunbaton
- CombatKnife
- RiotShield
## Dynamic recipes
- type: latheRecipePack
parent:
- SecurityEquipmentDeltaV # DeltaV
- SecurityCybernetics # Shitmed change
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
parent:
- SecurityAmmoDeltaV # DeltaV
id: SecurityAmmo
recipes:
#- BoxBeanbag # DeltaV - made roundstart
- BoxShotgunIncendiary
- BoxShotgunUranium
#- BoxShellTranquilizer # DeltaV - made roundstart
- MagazineBoxLightRifleIncendiary
- MagazineBoxLightRifleUranium
- MagazineBoxMagnumIncendiary
- MagazineBoxMagnumUranium
- MagazineBoxPistolIncendiary
- MagazineBoxPistolUranium
- MagazineBoxRifleIncendiary
- MagazineBoxRifleUranium
- MagazineLightRifleIncendiary
- MagazineLightRifleUranium
- MagazinePistolIncendiary
- MagazinePistolUranium
- MagazinePistolSubMachineGunIncendiary
- MagazinePistolSubMachineGunUranium
- MagazineRifleIncendiary
- MagazineRifleUranium
- MagazineShotgunBeanbag
- MagazineShotgunIncendiary
- SpeedLoaderMagnumIncendiary
- SpeedLoaderMagnumUranium
- type: latheRecipePack
parent:
- SecurityWeaponsDeltaV # DeltaV
id: SecurityWeapons
recipes:
- Truncheon
- WeaponAdvancedLaser
#- WeaponDisabler # DeltaV - made roundstart
- WeaponDisablerSMG
- WeaponLaserCannon
- WeaponLaserCarbine
- WeaponXrayCannon

View File

@ -0,0 +1,64 @@
## 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
parent:
- ServiceBoardsStaticDeltaV # DeltaV
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

View File

@ -0,0 +1,53 @@
## 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
parent:
- EquipmentDeltaV # DeltaV
id: Equipment
recipes:
- HandHeldMassScanner
- ClothingMaskWeldingGas
- SignallerAdvanced

View File

@ -0,0 +1,7 @@
## Static
- type: latheRecipePack
id: SheetifierStatic
recipes:
- MaterialSheetMeat
- SheetPaper

View File

@ -0,0 +1,51 @@
## Static
- type: latheRecipePack
parent:
- FloorTilesStaticDeltaV # DeltaV
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

View File

@ -283,6 +283,23 @@
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

View File

@ -2,7 +2,7 @@
#- type: technology # DeltaV merged draconic and uranium munitions and moved to our namespace
# id: DraconicMunitions
# name: research-technology-draconic-muntions
# name: research-technology-draconic-munitions
# icon:
# sprite: Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi
# state: incendiarydisplay
@ -13,6 +13,7 @@
# - BoxShotgunIncendiary
# - MagazineRifleIncendiary
# - MagazinePistolIncendiary
# - MagazinePistolSubMachineGunIncendiary
# - MagazineLightRifleIncendiary
# - SpeedLoaderMagnumIncendiary
# - MagazineShotgunIncendiary
@ -61,6 +62,7 @@
# recipeUnlocks:
# - MagazineRifleUranium
# - MagazinePistolUranium
# - MagazinePistolSubMachineGunUranium
# - MagazineLightRifleUranium
# - SpeedLoaderMagnumUranium
# - MagazineBoxPistolUranium
@ -68,10 +70,6 @@
# - MagazineBoxLightRifleUranium
# - MagazineBoxRifleUranium
# - BoxShotgunUranium
# DeltaV - .38 special uranium ammo - Adds .38 special uranium ammo to the research tree
# - SpeedLoaderSpecialUranium
# - MagazineBoxSpecialUranium
# End of modified code
- type: technology
id: AdvancedRiotControl
@ -149,22 +147,6 @@
# recipeUnlocks:
# - WeaponXrayCannon
- type: technology
id: ExperimentalSalvageWeaponry
name: research-technology-experimental-salvage-weaponry
icon:
sprite: Objects/Weapons/Melee/crusher_glaive.rsi
state: icon
discipline: Arsenal
tier: 2
cost: 10000
recipeUnlocks:
- WeaponCrusher
- WeaponCrusherDagger
- WeaponCrusherGlaive
- BorgModuleFauna
- ShuttleGunKineticCircuitboard
- type: technology
id: BasicShuttleArmament
name: research-technology-basic-shuttle-armament

View File

@ -11,8 +11,7 @@
cost: 5000
recipeUnlocks:
- ProximitySensor
- ExosuitFabricatorMachineCircuitboard
- ClothingEyesHudDiagnostic
- ClothingEyesHudDiagnostic # DeltaV
- type: technology
id: BasicAnomalousResearch

View File

@ -0,0 +1,86 @@
## Static
- type: latheRecipePack
id: ClothingCargoDeltaV
recipes:
# Courier
- ClothingUniformCourier
- ClothingUniformSkirtCourier
# QM
- ClothingUniformJumpskirtQMFormal
- type: latheRecipePack
id: ClothingCommandDeltaV
recipes:
# HoP
- ClothingUniformJumpsuitHoPFormal
- ClothingUniformJumpskirtHoPFormal
- type: latheRecipePack
id: ClothingEpistemics
recipes:
# Psionic Mantis
- ClothingUniformJumpsuitMantis
- ClothingUniformSkirtMantis
- type: latheRecipePack
id: ClothingJustice
recipes:
# CJ
- ClothingHeadHatCJToque
- ClothingUniformJumpsuitChiefJustice
- ClothingUniformJumpskirtChiefJustice
- ClothingUniformJumpsuitChiefJusticeFormal
- ClothingUniformJumpskirtCJFormal
- ClothingUniformJumpsuitChiefJusticeWhite
- type: latheRecipePack
id: ClothingSecurityDeltaV
recipes:
# HoS
- ClothingUniformJumpsuitHoSBlue
- ClothingUniformJumpskirtHoSBlue
- ClothingUniformJumpsuitHoSGrey
- ClothingUniformJumpskirtHoSGrey
# Security Officer
- ClothingUniformJumpsuitSecBlue
- ClothingUniformJumpskirtSecBlue
- ClothingUniformJumpsuitSecGrey
- ClothingUniformJumpskirtSecGrey
# Warden
- ClothingUniformJumpsuitWardenBlue
- ClothingUniformJumpskirtWardenBlue
- ClothingUniformJumpsuitWardenGrey
- ClothingUniformJumpskirtWardenGrey
- type: latheRecipePack
id: WinterCoatsDeltaV
recipes:
# Coats
- ClothingOuterChiefJustice
- ClothingOuterStasecSweater
# Ponchos
- ClothingNeckCWPSec
- ClothingNeckCWPArctic
- type: latheRecipePack
id: BeltsDeltaV
recipes:
- ClothingBeltPaperwork
- type: latheRecipePack
id: ClothingSyndieDeltaV
recipes:
- ClothingUniformInterdyneChemist
- UniformScrubsColorCybersun
- ClothingUniformCybersunAttorney
- ClothingHeadHatSurgcapCybersun
- ClothingOuterInterdyneChemistrySuit
- ClothingOuterCoatCybersunWindbreaker
- ClothingMaskInterdyneChemistry
- ClothingHeadHatSurgcapCybersun
- ClothingUniformCybersunHazard
- ClothingUniformCybersunCasual
- ClothingUniformCybersunRND
- ClothingOuterCybersunOvercoat
- ClothingBeltSyndicateUtility

View File

@ -0,0 +1,21 @@
## Dynamic
- type: latheRecipePack
id: Jetpacks
recipes:
- JetpackBlue
- JetpackMini
- JetpackVoid
- type: latheRecipePack
parent: Jetpacks
id: AtmosToolsDeltaV
recipes:
- FireExtinguisherBluespace
- PowerCellHyper
- RCDAmmo
- type: latheRecipePack
id: EngineeringBoardsDeltaV
recipes:
- AlertsComputerCircuitboard

View File

@ -0,0 +1,12 @@
## Dynamic
- type: latheRecipePack
id: Golemancy
recipes:
- CoreSilver
- type: latheRecipePack
id: EpistemicsBoards
recipes:
- ReverseEngineeringMachineCircuitboard
- MetempsyhoticMachineCircuitboard

View File

@ -0,0 +1,19 @@
## Dynamic
- type: latheRecipePack
id: MiningDeltaV
recipes:
- Fulton
- FultonBeacon
- type: latheRecipePack
id: SalvageWeapons
recipes:
- WeaponCrusher
- WeaponCrusherDagger
- WeaponCrusherGlaive
- type: latheRecipePack
id: SalvageBoardsDeltaV
recipes:
- SalvageExpeditionsComputerCircuitboard

View File

@ -0,0 +1,26 @@
## Static
- type: latheRecipePack
id: MedicalStaticDeltaV
recipes:
- AACTablet
- TankHarness
- ClothingEyesHudMedical
## Dynamic
- type: latheRecipePacks
id: SyringeGuns
recipes:
- LauncherSyringe
- MiniSyringe
- type: latheRecipePack
id: MedicalRE
recipes:
- HandheldCrewMonitor
- type: latheRecipePack
id: MedicalBoardsDeltaV
recipes:
- CrewMonitoringComputerCircuitboard

View File

@ -0,0 +1,9 @@
## Static
- type: latheRecipePack
id: RingsStatic
recipes:
- GoldRing
- SilverRing
- GoldRingDiamond
- SilverRingDiamond

View File

@ -0,0 +1,7 @@
## Dynamic
- type: latheRecipePack
id: BorgModulesDeltaV
recipes:
- BorgModuleSecurityChase
- BorgModuleSecurityEscalate

View File

@ -0,0 +1,84 @@
## Static
- type: latheRecipePack
id: SecurityEquipmentStaticDeltaV
recipes:
- ClothingNeckShockCollar
- ClothingOuterArmorPlateCarrier # plate carrier body armour
- ClothingOuterArmorDuraVest # stabproof vest body armour
- type: latheRecipePack
id: SecurityPracticeStaticDeltaV
recipes:
- MagazineBoxSpecialPractice
- SpeedLoaderSpecialPractice
- type: latheRecipePack
id: SecurityAmmoStaticDeltaV
recipes:
- MagazineBoxSpecial
- SpeedLoaderSpecial
- SpeedLoaderSpecialEmpty
- MagazinePistolSpecial
- BoxBeanbag
- BoxShellTranquilizer
- WeaponDisabler
- type: latheRecipePack
id: SecurityRubberAmmoStatic
recipes:
- MagazinePistolRubber
- SpeedLoaderMagnumRubber
- SpeedLoaderSpecialRubber
- MagazineRifleRubber
- MagazineLightRifleRubber
- MagazineBoxPistolRubber
- MagazineBoxMagnumRubber
- MagazineBoxLightRifleRubber
- MagazineBoxRifleRubber
- MagazineBoxSpecialRubber
- type: latheRecipePack
id: SecurityWeaponsStatic
recipes:
- WeaponDisabler
## Dynamic
- type: latheRecipePack
id: SecurityAmmoDeltaV
recipes:
- BoxShellSoulbreaker
- SpeedLoaderSpecialUranium
- MagazineBoxSpecialIncendiary
- MagazineBoxSpecialUranium
- MagazineBoxSpecialHoly
- MagazineBoxSpecialMindbreaker
- type: latheRecipePack
parent: SecurityHardsuits
id: SecurityEquipmentDeltaV
recipes:
- EncryptionKeySyndie # reverse engineered
- BorgModuleFauna
- ClothingHeadHelmetInsulated
- ClothingHeadCage
- ClothingShoesBootsSecurityMagboots
- type: latheRecipePack
parent: SalvageWeapons # crushers must be made in secfab
id: SecurityWeaponsDeltaV
recipes:
- WeaponEnergyGun
- WeaponEnergyGunMini
- WeaponEnergyGunPistol
- WeaponGunLaserCarbineAutomatic
- AdvancedTruncheon
- WeaponColdCannon
- WeaponBeanCannon
- type: latheRecipePack
id: SecurityHardsuits
recipes:
- ClothingOuterHardsuitJuggernautReverseEngineered
- ClothingOuterHardsuitSyndieReverseEngineered

View File

@ -0,0 +1,24 @@
## Static
- type: latheRecipePack
id: ReportingStatic
recipes:
- CassetteTape
- TapeRecorder
- type: latheRecipePacks
id: ServiceBoardsStaticDeltaV
recipes:
- DeepFryerMachineCircuitboard
## Dynamic
- type: latheRecipePack
id: ServiceDeltaV
recipes:
- PlantBagOfHolding
- type: latheRecipePack
id: ServiceBoardsDeltaV
recipes:
- AdvancedMicrowaveMachineCircuitBoard

View File

@ -0,0 +1,6 @@
## Dynamic
- type: latheRecipePack
id: EquipmentDeltaV
recipes:
- SignallerDeadMans

View File

@ -0,0 +1,21 @@
## Static
- type: latheRecipePack
id: FloorTilesStaticDeltaV
recipes:
- FloorTileItemBar
- FloorTileItemFreezer
- FloorTileItemHydro
- FloorTileItemKitchen
- FloorTileItemLaundry
- FloorTileItemShowroom
- FloorTileItemClown
- FloorTileItemMime
- FloorTileItemArcadeBlue
- FloorTileItemArcadeBlue2
- FloorTileItemArcadeRed
- FloorTileItemEighties
- FloorTileItemBoxing
- FloorTileItemGym
- FloorTileItemCarpetClown
- FloorTileItemCarpetOffice

View File

@ -3,11 +3,6 @@
id: SalvageExpeditionsComputerCircuitboard
result: SalvageExpeditionsComputerCircuitboard
- type: latheRecipe
parent: BaseCircuitboardRecipe
id: ComputerMassMediaCircuitboard
result: ComputerMassMediaCircuitboard
- type: latheRecipe
parent: BaseCircuitboardRecipe
id: AlertsComputerCircuitboard

View File

@ -1,3 +1,19 @@
# Tier 1
- type: technology
id: SalvageWeapons
name: research-technology-salvage-weapons
icon:
sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi
state: icon
discipline: Arsenal
tier: 1
cost: 5000
recipeUnlocks:
- WeaponProtoKineticAccelerator
- ShuttleGunKineticCircuitboard
# These are roundstart but not replenishable for salvage
# Tier 2
- type: technology
@ -45,7 +61,23 @@
recipeUnlocks:
- WeaponEnergyGun
- WeaponEnergyGunMini
- BorgModuleSecurityChase # DeltaV SecBorg research
- BorgModuleSecurityChase
- type: technology
id: ExperimentalSalvageWeaponry
name: research-technology-experimental-salvage-weaponry
icon:
sprite: Objects/Weapons/Melee/crusher_glaive.rsi
state: icon
discipline: Arsenal
tier: 2
cost: 10000
recipeUnlocks:
- WeaponCrusher
- WeaponCrusherDagger
- WeaponCrusherGlaive
- BorgModuleFauna
- ShuttleGunKineticCircuitboard
- type: technology
id: EnergyGunsAdvanced
@ -60,6 +92,8 @@
- WeaponEnergyGunPistol
- WeaponGunLaserCarbineAutomatic
# Tier 3
- type: technology
id: RobustMelee
name: research-technology-robust-melee

View File

@ -0,0 +1,35 @@
- type: entity
id: MedicalBiofabricator
parent: BaseLathe
name: medical biofabricator
description: Produces organs and other organic matter that can be surgically grafted onto patients with biomass.
components:
- type: Sprite
sprite: _Shitmed/Structures/Machines/limbgrower.rsi
snapCardinals: true
layers:
- state: limbgrower_idleoff
map: ["enum.LatheVisualLayers.IsRunning"]
# - state: limbgrower_idleoff
# shader: unshaded
# map: ["enum.PowerDeviceVisualLayers.Powered"]
# - state: inserting
# map: ["enum.MaterialStorageVisualLayers.Inserting"]
# - state: panel
# map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: Machine
board: MedicalBiofabMachineBoard
- type: MaterialStorage
whitelist:
tags:
- Sheet
- RawMaterial
- type: Lathe
idleState: limbgrower_idleoff
runningState: limbgrower_idleon
staticPacks:
- SynthOrgansStatic
- SynthPartsStatic
- type: EmagLatheRecipes
emagStaticPacks:
- PizzaPartsStatic

View File

@ -0,0 +1,52 @@
## Static
- type: latheRecipePack
id: SurgeryStaticShitmed
recipes:
- BoneGel
- type: latheRecipePack
id: MedicalBoardsStaticShitmed
recipes:
- OperatingTableCircuitboard
- type: latheRecipePack
id: SynthOrgansStatic
recipes:
- SynthLiver
- SynthHeart
- SynthLungs
- SynthEyes
- type: latheRecipePack
id: SynthPartsStatic
recipes:
- SynthLeftLeg
- SynthRightLeg
- SynthLeftFoot
- SynthRightFoot
- SynthLeftArm
- SynthRightArm
- SynthLeftHand
- SynthRightHand
- type: latheRecipePack
id: PizzaPartsStatic
recipes:
- PizzaLeftArm
- PizzaRightArm
## Dynamic
- type: latheRecipePack
id: Surgery
recipes:
- EnergyScalpel
- EnergyCautery
- AdvancedRetractor
#- OmnimedTool # DeltaV - Removed medical multi tool as a tech.
- type: latheRecipePack
id: CyberneticsMedical
recipes:
- MedicalCyberneticEyes

View File

@ -0,0 +1,33 @@
## Static
- type: latheRecipePack
id: IPCPartsStatic
recipes:
- TorsoIPC
- LeftArmIPC
- RightArmIPC
- LeftLegIPC
- RightLegIPC
- HeadIPC
- LeftHandIPC
- RightHandIPC
- LeftFootIPC
- RightFootIPC
- OrganIPCEyes
- OrganIPCPump
## Dynamic
- type: latheRecipePack
id: BorgModulesShitmed
recipes:
- BorgModuleAdvancedSurgery
- type: latheRecipePack
id: Cybernetics
recipes:
- JawsOfLifeLeftArm
- JawsOfLifeRightArm
- SpeedLeftLeg
- SpeedRightLeg
- BasicCyberneticEyes

View File

@ -0,0 +1,6 @@
## Dynamic recipes
- type: latheRecipePack
id: SecurityCybernetics
recipes:
- SecurityCyberneticEyes