Hyper convection lathes and industrial ore processor (#23202)
* Hyper-convection lathes and industrial ore processor * balance * gold... why not? * review --------- Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
@@ -0,0 +1,21 @@
|
|||||||
|
using Content.Shared.Lathe;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||||
|
|
||||||
|
namespace Content.Server.Lathe.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This is used for a <see cref="LatheComponent"/> that releases heat into the surroundings while producing items.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
[Access(typeof(LatheSystem))]
|
||||||
|
public sealed partial class LatheHeatProducingComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The amount of energy produced each second when producing an item.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float EnergyPerSecond = 40000;
|
||||||
|
|
||||||
|
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
|
||||||
|
public TimeSpan NextSecond;
|
||||||
|
}
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Server.Administration.Logs;
|
using Content.Server.Administration.Logs;
|
||||||
using Content.Server.Construction;
|
using Content.Server.Atmos;
|
||||||
|
using Content.Server.Atmos.EntitySystems;
|
||||||
using Content.Server.Lathe.Components;
|
using Content.Server.Lathe.Components;
|
||||||
using Content.Server.Materials;
|
using Content.Server.Materials;
|
||||||
using Content.Server.Power.Components;
|
using Content.Server.Power.Components;
|
||||||
@@ -16,7 +17,6 @@ using Content.Shared.Research.Components;
|
|||||||
using Content.Shared.Research.Prototypes;
|
using Content.Shared.Research.Prototypes;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.Audio;
|
|
||||||
using Robust.Shared.Audio.Systems;
|
using Robust.Shared.Audio.Systems;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
@@ -29,12 +29,18 @@ namespace Content.Server.Lathe
|
|||||||
[Dependency] private readonly IGameTiming _timing = default!;
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||||
|
[Dependency] private readonly AtmosphereSystem _atmosphere = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||||
[Dependency] private readonly UserInterfaceSystem _uiSys = default!;
|
[Dependency] private readonly UserInterfaceSystem _uiSys = default!;
|
||||||
[Dependency] private readonly MaterialStorageSystem _materialStorage = default!;
|
[Dependency] private readonly MaterialStorageSystem _materialStorage = default!;
|
||||||
[Dependency] private readonly StackSystem _stack = default!;
|
[Dependency] private readonly StackSystem _stack = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly TransformSystem _transform = default!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Per-tick cache
|
||||||
|
/// </summary>
|
||||||
|
private readonly List<GasMixture> _environments = new();
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -42,8 +48,6 @@ namespace Content.Server.Lathe
|
|||||||
SubscribeLocalEvent<LatheComponent, GetMaterialWhitelistEvent>(OnGetWhitelist);
|
SubscribeLocalEvent<LatheComponent, GetMaterialWhitelistEvent>(OnGetWhitelist);
|
||||||
SubscribeLocalEvent<LatheComponent, MapInitEvent>(OnMapInit);
|
SubscribeLocalEvent<LatheComponent, MapInitEvent>(OnMapInit);
|
||||||
SubscribeLocalEvent<LatheComponent, PowerChangedEvent>(OnPowerChanged);
|
SubscribeLocalEvent<LatheComponent, PowerChangedEvent>(OnPowerChanged);
|
||||||
SubscribeLocalEvent<LatheComponent, RefreshPartsEvent>(OnPartsRefresh);
|
|
||||||
SubscribeLocalEvent<LatheComponent, UpgradeExamineEvent>(OnUpgradeExamine);
|
|
||||||
SubscribeLocalEvent<LatheComponent, TechnologyDatabaseModifiedEvent>(OnDatabaseModified);
|
SubscribeLocalEvent<LatheComponent, TechnologyDatabaseModifiedEvent>(OnDatabaseModified);
|
||||||
SubscribeLocalEvent<LatheComponent, ResearchRegistrationChangedEvent>(OnResearchRegistrationChanged);
|
SubscribeLocalEvent<LatheComponent, ResearchRegistrationChangedEvent>(OnResearchRegistrationChanged);
|
||||||
|
|
||||||
@@ -54,6 +58,7 @@ namespace Content.Server.Lathe
|
|||||||
SubscribeLocalEvent<LatheComponent, MaterialAmountChangedEvent>(OnMaterialAmountChanged);
|
SubscribeLocalEvent<LatheComponent, MaterialAmountChangedEvent>(OnMaterialAmountChanged);
|
||||||
SubscribeLocalEvent<TechnologyDatabaseComponent, LatheGetRecipesEvent>(OnGetRecipes);
|
SubscribeLocalEvent<TechnologyDatabaseComponent, LatheGetRecipesEvent>(OnGetRecipes);
|
||||||
SubscribeLocalEvent<EmagLatheRecipesComponent, LatheGetRecipesEvent>(GetEmagLatheRecipes);
|
SubscribeLocalEvent<EmagLatheRecipesComponent, LatheGetRecipesEvent>(GetEmagLatheRecipes);
|
||||||
|
SubscribeLocalEvent<LatheHeatProducingComponent, LatheStartPrintingEvent>(OnHeatStartPrinting);
|
||||||
|
|
||||||
SubscribeLocalEvent<LatheComponent, LatheEjectMaterialMessage>(OnLatheEjectMessage);
|
SubscribeLocalEvent<LatheComponent, LatheEjectMaterialMessage>(OnLatheEjectMessage);
|
||||||
}
|
}
|
||||||
@@ -63,14 +68,14 @@ namespace Content.Server.Lathe
|
|||||||
if (!lathe.CanEjectStoredMaterials)
|
if (!lathe.CanEjectStoredMaterials)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_prototypeManager.TryIndex<MaterialPrototype>(message.Material, out var material))
|
if (!_proto.TryIndex<MaterialPrototype>(message.Material, out var material))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var volume = 0;
|
var volume = 0;
|
||||||
|
|
||||||
if (material.StackEntity != null)
|
if (material.StackEntity != null)
|
||||||
{
|
{
|
||||||
var entProto = _prototypeManager.Index<EntityPrototype>(material.StackEntity);
|
var entProto = _proto.Index<EntityPrototype>(material.StackEntity);
|
||||||
if (!entProto.TryGetComponent<PhysicalCompositionComponent>(out var composition))
|
if (!entProto.TryGetComponent<PhysicalCompositionComponent>(out var composition))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -103,6 +108,34 @@ namespace Content.Server.Lathe
|
|||||||
if (_timing.CurTime - comp.StartTime >= comp.ProductionLength)
|
if (_timing.CurTime - comp.StartTime >= comp.ProductionLength)
|
||||||
FinishProducing(uid, lathe);
|
FinishProducing(uid, lathe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var heatQuery = EntityQueryEnumerator<LatheHeatProducingComponent, LatheProducingComponent, TransformComponent>();
|
||||||
|
while (heatQuery.MoveNext(out var uid, out var heatComp, out _, out var xform))
|
||||||
|
{
|
||||||
|
if (_timing.CurTime < heatComp.NextSecond)
|
||||||
|
continue;
|
||||||
|
heatComp.NextSecond += TimeSpan.FromSeconds(1);
|
||||||
|
|
||||||
|
var position = _transform.GetGridTilePositionOrDefault((uid,xform));
|
||||||
|
_environments.Clear();
|
||||||
|
|
||||||
|
if (_atmosphere.GetTileMixture(xform.GridUid, xform.MapUid, position, true) is { } tileMix)
|
||||||
|
_environments.Add(tileMix);
|
||||||
|
|
||||||
|
if (xform.GridUid != null)
|
||||||
|
{
|
||||||
|
_environments.AddRange(_atmosphere.GetAdjacentTileMixtures(xform.GridUid.Value, position, false, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_environments.Count > 0)
|
||||||
|
{
|
||||||
|
var heatPerTile = heatComp.EnergyPerSecond / _environments.Count;
|
||||||
|
foreach (var env in _environments)
|
||||||
|
{
|
||||||
|
_atmosphere.AddHeat(env, heatPerTile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnGetWhitelist(EntityUid uid, LatheComponent component, ref GetMaterialWhitelistEvent args)
|
private void OnGetWhitelist(EntityUid uid, LatheComponent component, ref GetMaterialWhitelistEvent args)
|
||||||
@@ -189,6 +222,9 @@ namespace Content.Server.Lathe
|
|||||||
lathe.ProductionLength = recipe.CompleteTime * component.TimeMultiplier;
|
lathe.ProductionLength = recipe.CompleteTime * component.TimeMultiplier;
|
||||||
component.CurrentRecipe = recipe;
|
component.CurrentRecipe = recipe;
|
||||||
|
|
||||||
|
var ev = new LatheStartPrintingEvent(recipe);
|
||||||
|
RaiseLocalEvent(uid, ref ev);
|
||||||
|
|
||||||
_audio.PlayPvs(component.ProducingSound, uid);
|
_audio.PlayPvs(component.ProducingSound, uid);
|
||||||
UpdateRunningAppearance(uid, true);
|
UpdateRunningAppearance(uid, true);
|
||||||
UpdateUserInterfaceState(uid, component);
|
UpdateUserInterfaceState(uid, component);
|
||||||
@@ -260,6 +296,11 @@ namespace Content.Server.Lathe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnHeatStartPrinting(EntityUid uid, LatheHeatProducingComponent component, LatheStartPrintingEvent args)
|
||||||
|
{
|
||||||
|
component.NextSecond = _timing.CurTime;
|
||||||
|
}
|
||||||
|
|
||||||
private void OnMaterialAmountChanged(EntityUid uid, LatheComponent component, ref MaterialAmountChangedEvent args)
|
private void OnMaterialAmountChanged(EntityUid uid, LatheComponent component, ref MaterialAmountChangedEvent args)
|
||||||
{
|
{
|
||||||
UpdateUserInterfaceState(uid, component);
|
UpdateUserInterfaceState(uid, component);
|
||||||
@@ -300,22 +341,6 @@ namespace Content.Server.Lathe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPartsRefresh(EntityUid uid, LatheComponent component, RefreshPartsEvent args)
|
|
||||||
{
|
|
||||||
var printTimeRating = args.PartRatings[component.MachinePartPrintSpeed];
|
|
||||||
var materialUseRating = args.PartRatings[component.MachinePartMaterialUse];
|
|
||||||
|
|
||||||
component.TimeMultiplier = MathF.Pow(component.PartRatingPrintTimeMultiplier, printTimeRating - 1);
|
|
||||||
component.MaterialUseMultiplier = MathF.Pow(component.PartRatingMaterialUseMultiplier, materialUseRating - 1);
|
|
||||||
Dirty(component);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnUpgradeExamine(EntityUid uid, LatheComponent component, UpgradeExamineEvent args)
|
|
||||||
{
|
|
||||||
args.AddPercentageUpgrade("lathe-component-upgrade-speed", 1 / component.TimeMultiplier);
|
|
||||||
args.AddPercentageUpgrade("lathe-component-upgrade-material-use", component.MaterialUseMultiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDatabaseModified(EntityUid uid, LatheComponent component, ref TechnologyDatabaseModifiedEvent args)
|
private void OnDatabaseModified(EntityUid uid, LatheComponent component, ref TechnologyDatabaseModifiedEvent args)
|
||||||
{
|
{
|
||||||
UpdateUserInterfaceState(uid, component);
|
UpdateUserInterfaceState(uid, component);
|
||||||
|
|||||||
@@ -57,39 +57,15 @@ namespace Content.Shared.Lathe
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A modifier that changes how long it takes to print a recipe
|
/// A modifier that changes how long it takes to print a recipe
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public float TimeMultiplier = 1;
|
public float TimeMultiplier = 1;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The machine part that reduces how long it takes to print a recipe.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public ProtoId<MachinePartPrototype> MachinePartPrintSpeed = "Manipulator";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The value that is used to calculate the modified <see cref="TimeMultiplier"/>
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public float PartRatingPrintTimeMultiplier = 0.5f;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A modifier that changes how much of a material is needed to print a recipe
|
/// A modifier that changes how much of a material is needed to print a recipe
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||||
public float MaterialUseMultiplier = 1;
|
public float MaterialUseMultiplier = 1;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The machine part that reduces how much material it takes to print a recipe.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public ProtoId<MachinePartPrototype> MachinePartMaterialUse = "MatterBin";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The value that is used to calculate the modifier <see cref="MaterialUseMultiplier"/>
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public float PartRatingMaterialUseMultiplier = DefaultPartRatingMaterialUseMultiplier;
|
|
||||||
|
|
||||||
public const float DefaultPartRatingMaterialUseMultiplier = 0.85f;
|
public const float DefaultPartRatingMaterialUseMultiplier = 0.85f;
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -105,4 +81,10 @@ namespace Content.Shared.Lathe
|
|||||||
Lathe = lathe;
|
Lathe = lathe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event raised on a lathe when it starts producing a recipe.
|
||||||
|
/// </summary>
|
||||||
|
[ByRefEvent]
|
||||||
|
public readonly record struct LatheStartPrintingEvent(LatheRecipePrototype Recipe);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,24 @@
|
|||||||
materialRequirements:
|
materialRequirements:
|
||||||
Glass: 1
|
Glass: 1
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseMachineCircuitboard
|
||||||
|
id: AutolatheHyperConvectionMachineCircuitboard
|
||||||
|
name: hyper convection autolathe machine board
|
||||||
|
description: A machine printed circuit board for a hyper convection autolathe
|
||||||
|
components:
|
||||||
|
- type: MachineBoard
|
||||||
|
prototype: AutolatheHyperConvection
|
||||||
|
requirements:
|
||||||
|
MatterBin: 3
|
||||||
|
materialRequirements:
|
||||||
|
Glass: 1
|
||||||
|
tagRequirements:
|
||||||
|
Igniter:
|
||||||
|
Amount: 1
|
||||||
|
DefaultPrototype: Igniter
|
||||||
|
ExamineName: Igniter
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: ProtolatheMachineCircuitboard
|
id: ProtolatheMachineCircuitboard
|
||||||
parent: BaseMachineCircuitboard
|
parent: BaseMachineCircuitboard
|
||||||
@@ -29,6 +47,26 @@
|
|||||||
DefaultPrototype: Beaker
|
DefaultPrototype: Beaker
|
||||||
ExamineName: Glass Beaker
|
ExamineName: Glass Beaker
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseMachineCircuitboard
|
||||||
|
id: ProtolatheHyperConvectionMachineCircuitboard
|
||||||
|
name: hyper convection protolathe machine board
|
||||||
|
description: A machine printed circuit board for a hyper convection protolathe.
|
||||||
|
components:
|
||||||
|
- type: MachineBoard
|
||||||
|
prototype: ProtolatheHyperConvection
|
||||||
|
requirements:
|
||||||
|
MatterBin: 2
|
||||||
|
tagRequirements:
|
||||||
|
GlassBeaker:
|
||||||
|
Amount: 2
|
||||||
|
DefaultPrototype: Beaker
|
||||||
|
ExamineName: Glass Beaker
|
||||||
|
Igniter:
|
||||||
|
Amount: 1
|
||||||
|
DefaultPrototype: Igniter
|
||||||
|
ExamineName: Igniter
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: SecurityTechFabCircuitboard
|
id: SecurityTechFabCircuitboard
|
||||||
parent: BaseMachineCircuitboard
|
parent: BaseMachineCircuitboard
|
||||||
@@ -873,6 +911,21 @@
|
|||||||
materialRequirements:
|
materialRequirements:
|
||||||
Glass: 1
|
Glass: 1
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseMachineCircuitboard
|
||||||
|
id: OreProcessorIndustrialMachineCircuitboard
|
||||||
|
name: industrial ore processor machine board
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
state: supply
|
||||||
|
- type: MachineBoard
|
||||||
|
prototype: OreProcessorIndustrial
|
||||||
|
requirements:
|
||||||
|
MatterBin: 1
|
||||||
|
Manipulator: 3
|
||||||
|
materialRequirements:
|
||||||
|
Glass: 1
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: SheetifierMachineCircuitboard
|
id: SheetifierMachineCircuitboard
|
||||||
parent: BaseMachineCircuitboard
|
parent: BaseMachineCircuitboard
|
||||||
|
|||||||
@@ -180,6 +180,21 @@
|
|||||||
- MagazineBoxLightRifleUranium
|
- MagazineBoxLightRifleUranium
|
||||||
- MagazineBoxRifleUranium
|
- MagazineBoxRifleUranium
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: AutolatheHyperConvection
|
||||||
|
parent: Autolathe
|
||||||
|
name: hyper convection autolathe
|
||||||
|
description: A highly-experimental autolathe that harnesses the power of extreme heat to slowly create objects more cost-effectively.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Structures/Machines/autolathe_hypercon.rsi
|
||||||
|
- type: Lathe
|
||||||
|
materialUseMultiplier: 0.70
|
||||||
|
timeMultiplier: 1.5
|
||||||
|
- type: LatheHeatProducing
|
||||||
|
- type: Machine
|
||||||
|
board: AutolatheHyperConvectionMachineCircuitboard
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: Protolathe
|
id: Protolathe
|
||||||
parent: BaseLathe
|
parent: BaseLathe
|
||||||
@@ -296,6 +311,21 @@
|
|||||||
- WeaponLaserCannon
|
- WeaponLaserCannon
|
||||||
- WeaponXrayCannon
|
- WeaponXrayCannon
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: ProtolatheHyperConvection
|
||||||
|
parent: Protolathe
|
||||||
|
name: hyper convection protolathe
|
||||||
|
description: A highly-experimental protolathe that harnesses the power of extreme heat to slowly create objects more cost-effectively.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Structures/Machines/protolathe_hypercon.rsi
|
||||||
|
- type: Lathe
|
||||||
|
materialUseMultiplier: 0.70
|
||||||
|
timeMultiplier: 1.5
|
||||||
|
- type: LatheHeatProducing
|
||||||
|
- type: Machine
|
||||||
|
board: ProtolatheHyperConvectionMachineCircuitboard
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: CircuitImprinter
|
id: CircuitImprinter
|
||||||
parent: BaseLathe
|
parent: BaseLathe
|
||||||
@@ -320,6 +350,11 @@
|
|||||||
idleState: icon
|
idleState: icon
|
||||||
runningState: building
|
runningState: building
|
||||||
staticRecipes:
|
staticRecipes:
|
||||||
|
- ProtolatheMachineCircuitboard
|
||||||
|
- AutolatheMachineCircuitboard
|
||||||
|
- CircuitImprinterMachineCircuitboard
|
||||||
|
- OreProcessorMachineCircuitboard
|
||||||
|
- MaterialReclaimerMachineCircuitboard
|
||||||
- ElectrolysisUnitMachineCircuitboard
|
- ElectrolysisUnitMachineCircuitboard
|
||||||
- CentrifugeMachineCircuitboard
|
- CentrifugeMachineCircuitboard
|
||||||
- CondenserMachineCircuitBoard
|
- CondenserMachineCircuitBoard
|
||||||
@@ -345,8 +380,8 @@
|
|||||||
- SolarControlComputerCircuitboard
|
- SolarControlComputerCircuitboard
|
||||||
- SolarTrackerElectronics
|
- SolarTrackerElectronics
|
||||||
- PowerComputerCircuitboard
|
- PowerComputerCircuitboard
|
||||||
- AutolatheMachineCircuitboard
|
- AutolatheHyperConvectionMachineCircuitboard
|
||||||
- ProtolatheMachineCircuitboard
|
- ProtolatheHyperConvectionMachineCircuitboard
|
||||||
- ReagentGrinderMachineCircuitboard
|
- ReagentGrinderMachineCircuitboard
|
||||||
- HotplateMachineCircuitboard
|
- HotplateMachineCircuitboard
|
||||||
- MicrowaveMachineCircuitboard
|
- MicrowaveMachineCircuitboard
|
||||||
@@ -356,13 +391,11 @@
|
|||||||
- UniformPrinterMachineCircuitboard
|
- UniformPrinterMachineCircuitboard
|
||||||
- ShuttleConsoleCircuitboard
|
- ShuttleConsoleCircuitboard
|
||||||
- RadarConsoleCircuitboard
|
- RadarConsoleCircuitboard
|
||||||
- CircuitImprinterMachineCircuitboard
|
|
||||||
- TechDiskComputerCircuitboard
|
- TechDiskComputerCircuitboard
|
||||||
- DawInstrumentMachineCircuitboard
|
- DawInstrumentMachineCircuitboard
|
||||||
- CloningConsoleComputerCircuitboard
|
- CloningConsoleComputerCircuitboard
|
||||||
- StasisBedMachineCircuitboard
|
- StasisBedMachineCircuitboard
|
||||||
- MaterialReclaimerMachineCircuitboard
|
- OreProcessorIndustrialMachineCircuitboard
|
||||||
- OreProcessorMachineCircuitboard
|
|
||||||
- CargoTelepadMachineCircuitboard
|
- CargoTelepadMachineCircuitboard
|
||||||
- RipleyCentralElectronics
|
- RipleyCentralElectronics
|
||||||
- RipleyPeripheralsElectronics
|
- RipleyPeripheralsElectronics
|
||||||
@@ -925,6 +958,20 @@
|
|||||||
- IngotSilver30
|
- IngotSilver30
|
||||||
- MaterialBananium10
|
- MaterialBananium10
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: OreProcessor
|
||||||
|
id: OreProcessorIndustrial
|
||||||
|
name: industrial ore processor
|
||||||
|
description: An ore processor specifically designed for mass-producing metals in industrial applications.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Structures/Machines/ore_processor_industrial.rsi
|
||||||
|
- type: Machine
|
||||||
|
board: OreProcessorIndustrialMachineCircuitboard
|
||||||
|
- type: Lathe
|
||||||
|
materialUseMultiplier: 0.75
|
||||||
|
timeMultiplier: 0.5
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseLathe
|
parent: BaseLathe
|
||||||
id: Sheetifier
|
id: Sheetifier
|
||||||
|
|||||||
@@ -188,6 +188,24 @@
|
|||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
|
|
||||||
|
- type: latheRecipe
|
||||||
|
id: AutolatheHyperConvectionMachineCircuitboard
|
||||||
|
result: AutolatheHyperConvectionMachineCircuitboard
|
||||||
|
completetime: 4
|
||||||
|
materials:
|
||||||
|
Steel: 100
|
||||||
|
Glass: 900
|
||||||
|
Gold: 100
|
||||||
|
|
||||||
|
- type: latheRecipe
|
||||||
|
id: ProtolatheHyperConvectionMachineCircuitboard
|
||||||
|
result: ProtolatheHyperConvectionMachineCircuitboard
|
||||||
|
completetime: 4
|
||||||
|
materials:
|
||||||
|
Steel: 100
|
||||||
|
Glass: 900
|
||||||
|
Gold: 100
|
||||||
|
|
||||||
- type: latheRecipe
|
- type: latheRecipe
|
||||||
id: CircuitImprinterMachineCircuitboard
|
id: CircuitImprinterMachineCircuitboard
|
||||||
result: CircuitImprinterMachineCircuitboard
|
result: CircuitImprinterMachineCircuitboard
|
||||||
@@ -390,6 +408,14 @@
|
|||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
|
|
||||||
|
- type: latheRecipe
|
||||||
|
id: OreProcessorIndustrialMachineCircuitboard
|
||||||
|
result: OreProcessorIndustrialMachineCircuitboard
|
||||||
|
completetime: 4
|
||||||
|
materials:
|
||||||
|
Steel: 100
|
||||||
|
Glass: 900
|
||||||
Gold: 100
|
Gold: 100
|
||||||
|
|
||||||
- type: latheRecipe
|
- type: latheRecipe
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
recipeUnlocks:
|
recipeUnlocks:
|
||||||
- MiningDrill
|
- MiningDrill
|
||||||
- BorgModuleMining
|
- BorgModuleMining
|
||||||
- OreProcessorMachineCircuitboard
|
- OreProcessorIndustrialMachineCircuitboard
|
||||||
- OreBagOfHolding
|
- OreBagOfHolding
|
||||||
|
|
||||||
- type: technology
|
- type: technology
|
||||||
@@ -45,16 +45,14 @@
|
|||||||
id: IndustrialEngineering
|
id: IndustrialEngineering
|
||||||
name: research-technology-industrial-engineering
|
name: research-technology-industrial-engineering
|
||||||
icon:
|
icon:
|
||||||
sprite: Structures/Machines/protolathe.rsi
|
sprite: Structures/Machines/protolathe_hypercon.rsi
|
||||||
state: icon
|
state: building
|
||||||
discipline: Industrial
|
discipline: Industrial
|
||||||
tier: 1
|
tier: 1
|
||||||
cost: 7500
|
cost: 10000
|
||||||
recipeUnlocks:
|
recipeUnlocks:
|
||||||
- ProtolatheMachineCircuitboard
|
- AutolatheHyperConvectionMachineCircuitboard
|
||||||
- AutolatheMachineCircuitboard
|
- ProtolatheHyperConvectionMachineCircuitboard
|
||||||
- CircuitImprinterMachineCircuitboard
|
|
||||||
- MaterialReclaimerMachineCircuitboard
|
|
||||||
- SheetifierMachineCircuitboard
|
- SheetifierMachineCircuitboard
|
||||||
|
|
||||||
- type: technology
|
- type: technology
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 711 B |
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Created by UbaserB (GitHub) for SS14",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "panel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unlit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "building",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inserting",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 470 B |
|
After Width: | Height: | Size: 166 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 903 B |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Created by UbaserB (GitHub) for SS14, based on ore processor sprite from tgstation",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "inserting",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
5
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "building",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "panel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unlit"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 223 B |
|
After Width: | Height: | Size: 167 B |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 652 B |
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Created by UbaserB (GitHub) for SS14",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "panel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "unlit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "building",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inserting",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 761 B |
|
After Width: | Height: | Size: 202 B |