Partial lathe ECS, fix cursed lathe visualizer, a bit more audiovisual feedback for lathes (#7238)
* Prototype that's mostly borked rather than completely borked * ECS inserting mats * Partial ECS mostly done, needs cleanup and visualizer * Replace timers * Power visualizes at least * First ""working"" version * Clean up all lathes * Colors * Fix animation timing * Fixes greyscale, adds a bunch of colors * Give every (used) material a color * Made most lathes take long enough you can at least see there's some sort of animation * Insertion feedback popup * Sound for circuit printer and uniform printer * Fix queueing, optimize update * Remove mono crash * cleanup * Fix test failure * Techfab inserting sprite * Cleanup and commenting * Fix bug in CanProduce check * Fix UI resolves * Mirror review stuff
15
Content.Client/Lathe/Components/LatheVisualsComponent.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
namespace Content.Client.Lathe;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Holds the idle and running state for machines to control
|
||||||
|
/// playing animtions on the client.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class LatheVisualsComponent : Component
|
||||||
|
{
|
||||||
|
[DataField("idleState", required: true)]
|
||||||
|
public string IdleState = default!;
|
||||||
|
|
||||||
|
[DataField("runningState", required: true)]
|
||||||
|
public string RunningState = default!;
|
||||||
|
}
|
||||||
43
Content.Client/Lathe/LatheSystem.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using Robust.Client.GameObjects;
|
||||||
|
using Content.Shared.Lathe;
|
||||||
|
using Content.Shared.Power;
|
||||||
|
using Content.Client.Power;
|
||||||
|
using Content.Client.Wires.Visualizers;
|
||||||
|
using Content.Shared.Wires;
|
||||||
|
|
||||||
|
namespace Content.Client.Lathe
|
||||||
|
{
|
||||||
|
public sealed class LatheSystem : VisualizerSystem<LatheVisualsComponent>
|
||||||
|
{
|
||||||
|
protected override void OnAppearanceChange(EntityUid uid, LatheVisualsComponent component, ref AppearanceChangeEvent args)
|
||||||
|
{
|
||||||
|
if (TryComp(uid, out SpriteComponent? sprite))
|
||||||
|
{
|
||||||
|
if (args.Component.TryGetData(PowerDeviceVisuals.Powered, out bool powered))
|
||||||
|
sprite.LayerSetVisible(PowerDeviceVisualLayers.Powered, powered);
|
||||||
|
if (args.Component.TryGetData(SharedWiresComponent.WiresVisuals.MaintenancePanelState, out bool panel))
|
||||||
|
sprite.LayerSetVisible(WiresVisualizer.WiresVisualLayers.MaintenancePanel, panel);
|
||||||
|
// Lathe specific stuff
|
||||||
|
if (args.Component.TryGetData(LatheVisuals.IsRunning, out bool isRunning))
|
||||||
|
{
|
||||||
|
var state = isRunning ? component.RunningState : component.IdleState;
|
||||||
|
sprite.LayerSetAnimationTime(LatheVisualLayers.IsRunning, 0f);
|
||||||
|
sprite.LayerSetState(LatheVisualLayers.IsRunning, state);
|
||||||
|
}
|
||||||
|
if (args.Component.TryGetData(LatheVisuals.IsInserting, out bool isInserting))
|
||||||
|
{
|
||||||
|
if (args.Component.TryGetData(LatheVisuals.InsertingColor, out Color color))
|
||||||
|
sprite.LayerSetColor(LatheVisualLayers.IsInserting, color);
|
||||||
|
|
||||||
|
sprite.LayerSetAnimationTime(LatheVisualLayers.IsInserting, 0f);
|
||||||
|
sprite.LayerSetVisible(LatheVisualLayers.IsInserting, isInserting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public enum LatheVisualLayers : byte
|
||||||
|
{
|
||||||
|
IsRunning,
|
||||||
|
IsInserting
|
||||||
|
}
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Content.Shared.Lathe;
|
|
||||||
using Content.Shared.Power;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.Animations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
|
|
||||||
namespace Content.Client.Lathe.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class AutolatheVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[Dependency] private readonly IEntityManager _entMan = default!;
|
|
||||||
|
|
||||||
private const string AnimationKey = "inserting_animation";
|
|
||||||
|
|
||||||
private Animation _buildingAnimation;
|
|
||||||
private Animation _insertingMetalAnimation;
|
|
||||||
private Animation _insertingGlassAnimation;
|
|
||||||
private Animation _insertingGoldAnimation;
|
|
||||||
private Animation _insertingPlasmaAnimation;
|
|
||||||
private Animation _insertingPlasticAnimation;
|
|
||||||
|
|
||||||
public AutolatheVisualizer()
|
|
||||||
{
|
|
||||||
_buildingAnimation = PopulateAnimation("building", "building_unlit", 0.5f);
|
|
||||||
_insertingMetalAnimation = PopulateAnimation("inserting_metal", "inserting_unlit", 0.5f);
|
|
||||||
_insertingGlassAnimation = PopulateAnimation("inserting_glass", "inserting_unlit", 0.5f);
|
|
||||||
_insertingGoldAnimation = PopulateAnimation("inserting_gold", "inserting_unlit", 0.5f);
|
|
||||||
_insertingPlasmaAnimation = PopulateAnimation("inserting_plasma", "inserting_unlit", 0.5f);
|
|
||||||
_insertingPlasticAnimation = PopulateAnimation("inserting_plastic", "inserting_unlit", 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Animation PopulateAnimation(string sprite, string spriteUnlit, float length)
|
|
||||||
{
|
|
||||||
var animation = new Animation {Length = TimeSpan.FromSeconds(length)};
|
|
||||||
|
|
||||||
var flick = new AnimationTrackSpriteFlick();
|
|
||||||
animation.AnimationTracks.Add(flick);
|
|
||||||
flick.LayerKey = AutolatheVisualLayers.Base;
|
|
||||||
flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame(sprite, 0f));
|
|
||||||
|
|
||||||
var flickUnlit = new AnimationTrackSpriteFlick();
|
|
||||||
animation.AnimationTracks.Add(flickUnlit);
|
|
||||||
flickUnlit.LayerKey = AutolatheVisualLayers.BaseUnlit;
|
|
||||||
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame(spriteUnlit, 0f));
|
|
||||||
|
|
||||||
return animation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
IoCManager.InjectDependencies(this);
|
|
||||||
|
|
||||||
_entMan.EnsureComponent<AnimationPlayerComponent>(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
var sprite = _entMan.GetComponent<ISpriteComponent>(component.Owner);
|
|
||||||
var animPlayer = _entMan.GetComponent<AnimationPlayerComponent>(component.Owner);
|
|
||||||
if (!component.TryGetData(PowerDeviceVisuals.VisualState, out LatheVisualState state))
|
|
||||||
{
|
|
||||||
state = LatheVisualState.Idle;
|
|
||||||
}
|
|
||||||
sprite.LayerSetVisible(AutolatheVisualLayers.AnimationLayer, true);
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case LatheVisualState.Idle:
|
|
||||||
if (animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Stop(AnimationKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
sprite.LayerSetState(AutolatheVisualLayers.Base, "icon");
|
|
||||||
sprite.LayerSetState(AutolatheVisualLayers.BaseUnlit, "unlit");
|
|
||||||
sprite.LayerSetVisible(AutolatheVisualLayers.AnimationLayer, false);
|
|
||||||
break;
|
|
||||||
case LatheVisualState.Producing:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_buildingAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingMetal:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingMetalAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingGlass:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingGlassAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingGold:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingGoldAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingPlasma:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingPlasmaAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingPlastic:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingPlasticAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
var glowingPartsVisible = !(component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) && !powered);
|
|
||||||
sprite.LayerSetVisible(AutolatheVisualLayers.BaseUnlit, glowingPartsVisible);
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum AutolatheVisualLayers : byte
|
|
||||||
{
|
|
||||||
Base,
|
|
||||||
BaseUnlit,
|
|
||||||
AnimationLayer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Content.Shared.Lathe;
|
|
||||||
using Content.Shared.Power;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.Animations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
|
|
||||||
namespace Content.Client.Lathe.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class ProtolatheVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[Dependency] private readonly IEntityManager _entMan = default!;
|
|
||||||
|
|
||||||
private const string AnimationKey = "inserting_animation";
|
|
||||||
|
|
||||||
private Animation _buildingAnimation;
|
|
||||||
private Animation _insertingMetalAnimation;
|
|
||||||
private Animation _insertingGlassAnimation;
|
|
||||||
private Animation _insertingGoldAnimation;
|
|
||||||
private Animation _insertingPlasmaAnimation;
|
|
||||||
private Animation _insertingPlasticAnimation;
|
|
||||||
|
|
||||||
public ProtolatheVisualizer()
|
|
||||||
{
|
|
||||||
_buildingAnimation = PopulateAnimation("building", "building_unlit", 0.8f);
|
|
||||||
_insertingMetalAnimation = PopulateAnimation("inserting_metal", "inserting_unlit", 0.8f);
|
|
||||||
_insertingGlassAnimation = PopulateAnimation("inserting_glass", "inserting_unlit", 0.8f);
|
|
||||||
_insertingGoldAnimation = PopulateAnimation("inserting_gold", "inserting_unlit", 0.8f);
|
|
||||||
_insertingPlasmaAnimation = PopulateAnimation("inserting_plasma", "inserting_unlit", 0.8f);
|
|
||||||
_insertingPlasticAnimation = PopulateAnimation("inserting_plastic", "inserting_unlit", 0.8f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Animation PopulateAnimation(string sprite, string spriteUnlit, float length)
|
|
||||||
{
|
|
||||||
var animation = new Animation { Length = TimeSpan.FromSeconds(length) };
|
|
||||||
|
|
||||||
var flick = new AnimationTrackSpriteFlick();
|
|
||||||
animation.AnimationTracks.Add(flick);
|
|
||||||
flick.LayerKey = ProtolatheVisualLayers.Base;
|
|
||||||
flick.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame(sprite, 0f));
|
|
||||||
|
|
||||||
var flickUnlit = new AnimationTrackSpriteFlick();
|
|
||||||
animation.AnimationTracks.Add(flickUnlit);
|
|
||||||
flickUnlit.LayerKey = ProtolatheVisualLayers.BaseUnlit;
|
|
||||||
flickUnlit.KeyFrames.Add(new AnimationTrackSpriteFlick.KeyFrame(spriteUnlit, 0f));
|
|
||||||
|
|
||||||
return animation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
IoCManager.InjectDependencies(this);
|
|
||||||
|
|
||||||
_entMan.EnsureComponent<AnimationPlayerComponent>(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
var sprite = _entMan.GetComponent<ISpriteComponent>(component.Owner);
|
|
||||||
var animPlayer = _entMan.GetComponent<AnimationPlayerComponent>(component.Owner);
|
|
||||||
if (!component.TryGetData(PowerDeviceVisuals.VisualState, out LatheVisualState state))
|
|
||||||
{
|
|
||||||
state = LatheVisualState.Idle;
|
|
||||||
}
|
|
||||||
sprite.LayerSetVisible(ProtolatheVisualLayers.AnimationLayer, true);
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case LatheVisualState.Idle:
|
|
||||||
if (animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Stop(AnimationKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
sprite.LayerSetState(ProtolatheVisualLayers.Base, "icon");
|
|
||||||
sprite.LayerSetState(ProtolatheVisualLayers.BaseUnlit, "unlit");
|
|
||||||
sprite.LayerSetVisible(ProtolatheVisualLayers.AnimationLayer, false);
|
|
||||||
break;
|
|
||||||
case LatheVisualState.Producing:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_buildingAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingMetal:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingMetalAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingGlass:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingGlassAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingGold:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingGoldAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingPlasma:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingPlasmaAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheVisualState.InsertingPlastic:
|
|
||||||
if (!animPlayer.HasRunningAnimation(AnimationKey))
|
|
||||||
{
|
|
||||||
animPlayer.Play(_insertingPlasticAnimation, AnimationKey);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new ArgumentOutOfRangeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
var glowingPartsVisible = !(component.TryGetData(PowerDeviceVisuals.Powered, out bool powered) && !powered);
|
|
||||||
sprite.LayerSetVisible(ProtolatheVisualLayers.BaseUnlit, glowingPartsVisible);
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum ProtolatheVisualLayers : byte
|
|
||||||
{
|
|
||||||
Base,
|
|
||||||
BaseUnlit,
|
|
||||||
AnimationLayer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Content.Server.Disease.Components;
|
using Content.Server.Disease.Components;
|
||||||
using Content.Shared.Disease;
|
using Content.Shared.Disease;
|
||||||
using Content.Shared.Disease.Components;
|
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Inventory;
|
using Content.Shared.Inventory;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
@@ -151,7 +150,7 @@ namespace Content.Server.Disease
|
|||||||
_popupSystem.PopupEntity(Loc.GetString("diagnoser-cant-use-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
_popupSystem.PopupEntity(Loc.GetString("diagnoser-cant-use-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_popupSystem.PopupEntity(Loc.GetString("diagnoser-insert-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
_popupSystem.PopupEntity(Loc.GetString("machine-insert-item", ("machine", uid), ("item", args.Used)), uid, Filter.Entities(args.User));
|
||||||
|
|
||||||
|
|
||||||
machine.Disease = swab.Disease;
|
machine.Disease = swab.Disease;
|
||||||
@@ -183,7 +182,7 @@ namespace Content.Server.Disease
|
|||||||
_popupSystem.PopupEntity(Loc.GetString("diagnoser-cant-use-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
_popupSystem.PopupEntity(Loc.GetString("diagnoser-cant-use-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_popupSystem.PopupEntity(Loc.GetString("diagnoser-insert-swab", ("machine", uid), ("swab", args.Used)), uid, Filter.Entities(args.User));
|
_popupSystem.PopupEntity(Loc.GetString("machine-insert-item", ("machine", uid), ("item", args.Used)), uid, Filter.Entities(args.User));
|
||||||
var machine = Comp<DiseaseMachineComponent>(uid);
|
var machine = Comp<DiseaseMachineComponent>(uid);
|
||||||
machine.Disease = swab.Disease;
|
machine.Disease = swab.Disease;
|
||||||
EntityManager.DeleteEntity(args.Used);
|
EntityManager.DeleteEntity(args.Used);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace Content.Server.Entry
|
|||||||
"ClientEntitySpawner",
|
"ClientEntitySpawner",
|
||||||
"CharacterInfo",
|
"CharacterInfo",
|
||||||
"ItemCabinetVisuals",
|
"ItemCabinetVisuals",
|
||||||
|
"LatheVisuals",
|
||||||
"DiseaseMachineVisuals",
|
"DiseaseMachineVisuals",
|
||||||
"HandheldGPS",
|
"HandheldGPS",
|
||||||
"ToggleableLightVisuals",
|
"ToggleableLightVisuals",
|
||||||
|
|||||||
@@ -1,219 +1,53 @@
|
|||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Content.Server.Materials;
|
|
||||||
using Content.Server.Power.Components;
|
|
||||||
using Content.Server.Research.Components;
|
|
||||||
using Content.Server.Stack;
|
|
||||||
using Content.Server.UserInterface;
|
using Content.Server.UserInterface;
|
||||||
using Content.Shared.Interaction;
|
|
||||||
using Content.Shared.Lathe;
|
using Content.Shared.Lathe;
|
||||||
using Content.Shared.Power;
|
|
||||||
using Content.Shared.Research.Prototypes;
|
using Content.Shared.Research.Prototypes;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Server.Player;
|
using Content.Shared.Sound;
|
||||||
|
|
||||||
namespace Content.Server.Lathe.Components
|
namespace Content.Server.Lathe.Components
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public sealed class LatheComponent : SharedLatheComponent, IInteractUsing
|
public sealed class LatheComponent : SharedLatheComponent
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IEntityManager _entMan = default!;
|
/// <summary>
|
||||||
|
/// How much volume in cm^3 each sheet of material adds
|
||||||
public const int VolumePerSheet = 100;
|
/// </summary>
|
||||||
|
public int VolumePerSheet = 100;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The lathe's construction queue
|
||||||
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public Queue<LatheRecipePrototype> Queue { get; } = new();
|
public Queue<LatheRecipePrototype> Queue { get; } = new();
|
||||||
|
/// <summary>
|
||||||
|
/// The recipe the lathe is currently producing
|
||||||
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public bool Producing { get; private set; }
|
public LatheRecipePrototype? ProducingRecipe;
|
||||||
|
/// <summary>
|
||||||
private LatheState _state = LatheState.Base;
|
/// How long the inserting animation will play
|
||||||
|
/// </summary>
|
||||||
private LatheState State
|
|
||||||
{
|
|
||||||
get => _state;
|
|
||||||
set => _state = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
private LatheRecipePrototype? _producingRecipe;
|
public float InsertionTime = 0.79f; // 0.01 off for animation timing
|
||||||
|
/// <summary>
|
||||||
|
/// Update accumulator for the insertion time
|
||||||
|
/// </suummary>
|
||||||
|
public float InsertionAccumulator = 0f;
|
||||||
|
/// <summary>
|
||||||
|
/// Production accumulator for the production time.
|
||||||
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
private bool Powered => !_entMan.TryGetComponent(Owner, out ApcPowerReceiverComponent? receiver) || receiver.Powered;
|
public float ProducingAccumulator = 0f;
|
||||||
|
|
||||||
private static readonly TimeSpan InsertionTime = TimeSpan.FromSeconds(0.9f);
|
/// <summary>
|
||||||
|
/// The sound that plays when the lathe is producing an item, if any
|
||||||
|
/// </summary>
|
||||||
|
[DataField("producingSound")]
|
||||||
|
public SoundSpecifier? ProducingSound;
|
||||||
|
|
||||||
[ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(LatheUiKey.Key);
|
/// <summmary>
|
||||||
|
/// The lathe's UI.
|
||||||
protected override void Initialize()
|
/// </summary>
|
||||||
{
|
[ViewVariables] public BoundUserInterface? UserInterface;
|
||||||
base.Initialize();
|
|
||||||
|
|
||||||
if (UserInterface != null)
|
|
||||||
{
|
|
||||||
UserInterface.OnReceiveMessage += UserInterfaceOnOnReceiveMessage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UserInterfaceOnOnReceiveMessage(ServerBoundUserInterfaceMessage message)
|
|
||||||
{
|
|
||||||
if (!Powered)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (message.Message)
|
|
||||||
{
|
|
||||||
case LatheQueueRecipeMessage msg:
|
|
||||||
PrototypeManager.TryIndex(msg.ID, out LatheRecipePrototype? recipe);
|
|
||||||
if (recipe != null!)
|
|
||||||
for (var i = 0; i < msg.Quantity; i++)
|
|
||||||
{
|
|
||||||
Queue.Enqueue(recipe);
|
|
||||||
UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue()));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case LatheSyncRequestMessage _:
|
|
||||||
if (!_entMan.HasComponent<MaterialStorageComponent>(Owner)) return;
|
|
||||||
UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue()));
|
|
||||||
if (_producingRecipe != null)
|
|
||||||
UserInterface?.SendMessage(new LatheProducingRecipeMessage(_producingRecipe.ID));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LatheServerSelectionMessage _:
|
|
||||||
if (!_entMan.TryGetComponent(Owner, out ResearchClientComponent? researchClient)) return;
|
|
||||||
researchClient.OpenUserInterface(message.Session);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LatheServerSyncMessage _:
|
|
||||||
if (!_entMan.TryGetComponent(Owner, out TechnologyDatabaseComponent? database)
|
|
||||||
|| !_entMan.TryGetComponent(Owner, out ProtolatheDatabaseComponent? protoDatabase)) return;
|
|
||||||
|
|
||||||
if (database.SyncWithServer())
|
|
||||||
protoDatabase.Sync();
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
internal bool Produce(LatheRecipePrototype recipe)
|
|
||||||
{
|
|
||||||
if (Producing || !Powered || !CanProduce(recipe) || !_entMan.TryGetComponent(Owner, out MaterialStorageComponent? storage)) return false;
|
|
||||||
|
|
||||||
UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue()));
|
|
||||||
|
|
||||||
Producing = true;
|
|
||||||
_producingRecipe = recipe;
|
|
||||||
|
|
||||||
foreach (var (material, amount) in recipe.RequiredMaterials)
|
|
||||||
{
|
|
||||||
// This should always return true, otherwise CanProduce fucked up.
|
|
||||||
storage.RemoveMaterial(material, amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
UserInterface?.SendMessage(new LatheProducingRecipeMessage(recipe.ID));
|
|
||||||
|
|
||||||
State = LatheState.Producing;
|
|
||||||
SetAppearance(LatheVisualState.Producing);
|
|
||||||
|
|
||||||
Owner.SpawnTimer(recipe.CompleteTime, () =>
|
|
||||||
{
|
|
||||||
Producing = false;
|
|
||||||
_producingRecipe = null;
|
|
||||||
_entMan.SpawnEntity(recipe.Result, _entMan.GetComponent<TransformComponent>(Owner).Coordinates);
|
|
||||||
UserInterface?.SendMessage(new LatheStoppedProducingRecipeMessage());
|
|
||||||
State = LatheState.Base;
|
|
||||||
SetAppearance(LatheVisualState.Idle);
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OpenUserInterface(IPlayerSession session)
|
|
||||||
{
|
|
||||||
UserInterface?.Open(session);
|
|
||||||
}
|
|
||||||
async Task<bool> IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs)
|
|
||||||
{
|
|
||||||
if (!_entMan.TryGetComponent(Owner, out MaterialStorageComponent? storage)
|
|
||||||
|| !_entMan.TryGetComponent(eventArgs.Using, out MaterialComponent? material)) return false;
|
|
||||||
|
|
||||||
var multiplier = 1;
|
|
||||||
|
|
||||||
if (_entMan.TryGetComponent(eventArgs.Using, out StackComponent? stack)) multiplier = stack.Count;
|
|
||||||
|
|
||||||
var totalAmount = 0;
|
|
||||||
|
|
||||||
// Check if it can insert all materials.
|
|
||||||
foreach (var mat in material.MaterialIds)
|
|
||||||
{
|
|
||||||
// TODO: Change how MaterialComponent works so this is not hard-coded.
|
|
||||||
if (!storage.CanInsertMaterial(mat, VolumePerSheet * multiplier)) return false;
|
|
||||||
totalAmount += VolumePerSheet * multiplier;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if it can take ALL of the material's volume.
|
|
||||||
if (storage.CanTakeAmount(totalAmount)) return false;
|
|
||||||
|
|
||||||
foreach (var mat in material.MaterialIds)
|
|
||||||
{
|
|
||||||
storage.InsertMaterial(mat, VolumePerSheet * multiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
State = LatheState.Inserting;
|
|
||||||
switch (material.Materials.FirstOrDefault()?.ID)
|
|
||||||
{
|
|
||||||
case "Steel":
|
|
||||||
SetAppearance(LatheVisualState.InsertingMetal);
|
|
||||||
break;
|
|
||||||
case "Glass":
|
|
||||||
SetAppearance(LatheVisualState.InsertingGlass);
|
|
||||||
break;
|
|
||||||
case "Gold":
|
|
||||||
SetAppearance(LatheVisualState.InsertingGold);
|
|
||||||
break;
|
|
||||||
case "Plastic":
|
|
||||||
SetAppearance(LatheVisualState.InsertingPlastic);
|
|
||||||
break;
|
|
||||||
case "Plasma":
|
|
||||||
SetAppearance(LatheVisualState.InsertingPlasma);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Owner.SpawnTimer(InsertionTime, () =>
|
|
||||||
{
|
|
||||||
State = LatheState.Base;
|
|
||||||
SetAppearance(LatheVisualState.Idle);
|
|
||||||
});
|
|
||||||
|
|
||||||
_entMan.DeleteEntity(eventArgs.Using);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetAppearance(LatheVisualState state)
|
|
||||||
{
|
|
||||||
if (_entMan.TryGetComponent(Owner, out AppearanceComponent? appearance))
|
|
||||||
{
|
|
||||||
appearance.SetData(PowerDeviceVisuals.VisualState, state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Queue<string> GetIdQueue()
|
|
||||||
{
|
|
||||||
var queue = new Queue<string>();
|
|
||||||
foreach (var recipePrototype in Queue)
|
|
||||||
{
|
|
||||||
queue.Enqueue(recipePrototype.ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
return queue;
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum LatheState : byte
|
|
||||||
{
|
|
||||||
Base,
|
|
||||||
Inserting,
|
|
||||||
Producing
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace Content.Server.Lathe.Components
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// For EntityQuery to keep track of which lathes are inserting
|
||||||
|
/// <summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class LatheInsertingComponent : Component
|
||||||
|
{}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace Content.Server.Lathe.Components
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// For EntityQuery to keep track of which lathes are producing
|
||||||
|
/// <summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class LatheProducingComponent : Component
|
||||||
|
{}
|
||||||
|
}
|
||||||
@@ -1,21 +1,286 @@
|
|||||||
using Content.Server.Lathe.Components;
|
using Content.Server.Lathe.Components;
|
||||||
|
using Content.Shared.Lathe;
|
||||||
|
using Content.Shared.Materials;
|
||||||
|
using Content.Shared.Research.Prototypes;
|
||||||
|
using Content.Server.Research.Components;
|
||||||
|
using Content.Shared.Interaction;
|
||||||
|
using Content.Server.Materials;
|
||||||
|
using Content.Server.Popups;
|
||||||
|
using Content.Server.Power.Components;
|
||||||
|
using Content.Server.Stack;
|
||||||
|
using Content.Server.UserInterface;
|
||||||
|
using Robust.Server.GameObjects;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Player;
|
||||||
|
using Robust.Shared.Audio;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
|
|
||||||
namespace Content.Server.Lathe
|
namespace Content.Server.Lathe
|
||||||
{
|
{
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
internal sealed class LatheSystem : EntitySystem
|
public sealed class LatheSystem : EntitySystem
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
SubscribeLocalEvent<LatheComponent, InteractUsingEvent>(OnInteractUsing);
|
||||||
|
SubscribeLocalEvent<LatheComponent, ComponentInit>(OnComponentInit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// These queues are to add/remove COMPONENTS to the lathes
|
||||||
|
private Queue<EntityUid> ProducingAddQueue = new();
|
||||||
|
private Queue<EntityUid> ProducingRemoveQueue = new();
|
||||||
|
private Queue<EntityUid> InsertingAddQueue = new();
|
||||||
|
private Queue<EntityUid> InsertingRemoveQueue = new();
|
||||||
|
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
{
|
{
|
||||||
foreach (var comp in EntityManager.EntityQuery<LatheComponent>())
|
foreach (var uid in ProducingAddQueue)
|
||||||
|
EnsureComp<LatheProducingComponent>(uid);
|
||||||
|
ProducingAddQueue.Clear();
|
||||||
|
foreach (var uid in ProducingRemoveQueue)
|
||||||
|
RemComp<LatheProducingComponent>(uid);
|
||||||
|
ProducingRemoveQueue.Clear();
|
||||||
|
foreach (var uid in InsertingAddQueue)
|
||||||
|
EnsureComp<LatheInsertingComponent>(uid);
|
||||||
|
InsertingAddQueue.Clear();
|
||||||
|
foreach (var uid in InsertingRemoveQueue)
|
||||||
|
RemComp<LatheInsertingComponent>(uid);
|
||||||
|
InsertingRemoveQueue.Clear();
|
||||||
|
|
||||||
|
foreach (var (insertingComp, lathe) in EntityQuery<LatheInsertingComponent, LatheComponent>(false))
|
||||||
{
|
{
|
||||||
if (comp.Producing == false && comp.Queue.Count > 0)
|
if (lathe.InsertionAccumulator < lathe.InsertionTime)
|
||||||
{
|
{
|
||||||
comp.Produce(comp.Queue.Dequeue());
|
lathe.InsertionAccumulator += frameTime;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
lathe.InsertionAccumulator = 0;
|
||||||
|
UpdateInsertingAppearance(lathe.Owner, false);
|
||||||
|
InsertingRemoveQueue.Enqueue(lathe.Owner);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var (producingComp, lathe) in EntityQuery<LatheProducingComponent, LatheComponent>(false))
|
||||||
|
{
|
||||||
|
if (lathe.ProducingRecipe == null)
|
||||||
|
continue;
|
||||||
|
if (lathe.ProducingAccumulator < lathe.ProducingRecipe.CompleteTime.TotalSeconds)
|
||||||
|
{
|
||||||
|
lathe.ProducingAccumulator += frameTime;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
lathe.ProducingAccumulator = 0;
|
||||||
|
|
||||||
|
FinishProducing(lathe.ProducingRecipe, lathe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initialize the UI and appearance.
|
||||||
|
/// Appearance requires initialization or the layers break
|
||||||
|
/// </summary>
|
||||||
|
private void OnComponentInit(EntityUid uid, LatheComponent component, ComponentInit args)
|
||||||
|
{
|
||||||
|
component.UserInterface = uid.GetUIOrNull(LatheUiKey.Key);
|
||||||
|
if (component.UserInterface != null)
|
||||||
|
{
|
||||||
|
component.UserInterface.OnReceiveMessage += msg => UserInterfaceOnOnReceiveMessage(uid, component, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TryComp<AppearanceComponent>(uid, out var appearance))
|
||||||
|
return;
|
||||||
|
appearance.SetData(LatheVisuals.IsInserting, false);
|
||||||
|
appearance.SetData(LatheVisuals.IsRunning, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When someone tries to use an item on the lathe,
|
||||||
|
/// insert it if it's a stack and fits inside
|
||||||
|
/// </summary>
|
||||||
|
private void OnInteractUsing(EntityUid uid, LatheComponent component, InteractUsingEvent args)
|
||||||
|
{
|
||||||
|
if (!TryComp<MaterialStorageComponent>(uid, out var storage) || !TryComp<MaterialComponent>(args.Used, out var material))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var multiplier = 1;
|
||||||
|
|
||||||
|
if (TryComp<StackComponent>(args.Used, out var stack))
|
||||||
|
multiplier = stack.Count;
|
||||||
|
|
||||||
|
var totalAmount = 0;
|
||||||
|
|
||||||
|
// Check if it can insert all materials.
|
||||||
|
foreach (var mat in material.MaterialIds)
|
||||||
|
{
|
||||||
|
// TODO: Change how MaterialComponent works so this is not hard-coded.
|
||||||
|
if (!storage.CanInsertMaterial(mat, component.VolumePerSheet * multiplier))
|
||||||
|
return;
|
||||||
|
totalAmount += component.VolumePerSheet * multiplier;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if it can take ALL of the material's volume.
|
||||||
|
if (storage.StorageLimit > 0 && !storage.CanTakeAmount(totalAmount))
|
||||||
|
return;
|
||||||
|
var lastMat = string.Empty;
|
||||||
|
foreach (var mat in material.MaterialIds)
|
||||||
|
{
|
||||||
|
storage.InsertMaterial(mat, component.VolumePerSheet * multiplier);
|
||||||
|
lastMat = mat;
|
||||||
|
}
|
||||||
|
/// We need the prototype to get the color
|
||||||
|
_prototypeManager.TryIndex(lastMat, out MaterialPrototype? matProto);
|
||||||
|
|
||||||
|
EntityManager.QueueDeleteEntity(args.Used);
|
||||||
|
InsertingAddQueue.Enqueue(uid);
|
||||||
|
_popupSystem.PopupEntity(Loc.GetString("machine-insert-item", ("machine", uid),
|
||||||
|
("item", args.Used)), uid, Filter.Entities(args.User));
|
||||||
|
if (matProto != null)
|
||||||
|
{
|
||||||
|
UpdateInsertingAppearance(uid, true, matProto.Color);
|
||||||
|
}
|
||||||
|
UpdateInsertingAppearance(uid, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This handles the checks to start producing an item, and
|
||||||
|
/// starts up the sound and visuals
|
||||||
|
/// </summary>
|
||||||
|
private bool Produce(LatheComponent component, LatheRecipePrototype recipe, bool SkipCheck = false)
|
||||||
|
{
|
||||||
|
if (!component.CanProduce(recipe)
|
||||||
|
|| !TryComp(component.Owner, out MaterialStorageComponent? storage))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!SkipCheck && HasComp<LatheProducingComponent>(component.Owner))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (TryComp<ApcPowerReceiverComponent>(component.Owner, out var receiver) && !receiver.Powered)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
component.UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue(component)));
|
||||||
|
|
||||||
|
component.ProducingRecipe = recipe;
|
||||||
|
|
||||||
|
foreach (var (material, amount) in recipe.RequiredMaterials)
|
||||||
|
{
|
||||||
|
// This should always return true, otherwise CanProduce fucked up.
|
||||||
|
storage.RemoveMaterial(material, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
component.UserInterface?.SendMessage(new LatheProducingRecipeMessage(recipe.ID));
|
||||||
|
if (component.ProducingSound != null)
|
||||||
|
{
|
||||||
|
SoundSystem.Play(Filter.Pvs(component.Owner), component.ProducingSound.GetSound(), component.Owner);
|
||||||
|
}
|
||||||
|
UpdateRunningAppearance(component.Owner, true);
|
||||||
|
ProducingAddQueue.Enqueue(component.Owner);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// After the production timer is up, this spawns the recipe and
|
||||||
|
/// either cleans up or continues to the next item in the queue
|
||||||
|
/// </summary>
|
||||||
|
private void FinishProducing(LatheRecipePrototype recipe, LatheComponent component)
|
||||||
|
{
|
||||||
|
component.ProducingRecipe = null;
|
||||||
|
EntityManager.SpawnEntity(recipe.Result, Comp<TransformComponent>(component.Owner).Coordinates);
|
||||||
|
component.UserInterface?.SendMessage(new LatheStoppedProducingRecipeMessage());
|
||||||
|
// Continue to next in queue if there are items left
|
||||||
|
if (component.Queue.Count > 0)
|
||||||
|
{
|
||||||
|
Produce(component, component.Queue.Dequeue(), true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProducingRemoveQueue.Enqueue(component.Owner);
|
||||||
|
UpdateRunningAppearance(component.Owner, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the machine sprite to either play the running animation
|
||||||
|
/// or stop.
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateRunningAppearance(EntityUid uid, bool isRunning)
|
||||||
|
{
|
||||||
|
if (!TryComp<AppearanceComponent>(uid, out var appearance))
|
||||||
|
return;
|
||||||
|
|
||||||
|
appearance.SetData(LatheVisuals.IsRunning, isRunning);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the machine sprite to play the inserting animation
|
||||||
|
/// and sets the color of the inserted mat if applicable
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateInsertingAppearance(EntityUid uid, bool isInserting, Color? color = null)
|
||||||
|
{
|
||||||
|
if (!TryComp<AppearanceComponent>(uid, out var appearance))
|
||||||
|
return;
|
||||||
|
|
||||||
|
appearance.SetData(LatheVisuals.IsInserting, isInserting);
|
||||||
|
if (color != null)
|
||||||
|
appearance.SetData(LatheVisuals.InsertingColor, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles all the button presses in the lathe UI
|
||||||
|
/// </summary>
|
||||||
|
private void UserInterfaceOnOnReceiveMessage(EntityUid uid, LatheComponent component, ServerBoundUserInterfaceMessage message)
|
||||||
|
{
|
||||||
|
if (TryComp<ApcPowerReceiverComponent>(uid, out var receiver) && !receiver.Powered)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (message.Message)
|
||||||
|
{
|
||||||
|
case LatheQueueRecipeMessage msg:
|
||||||
|
_prototypeManager.TryIndex(msg.ID, out LatheRecipePrototype? recipe);
|
||||||
|
if (recipe != null!)
|
||||||
|
for (var i = 0; i < msg.Quantity; i++)
|
||||||
|
{
|
||||||
|
component.Queue.Enqueue(recipe);
|
||||||
|
component.UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue(component)));
|
||||||
|
}
|
||||||
|
if (!HasComp<LatheProducingComponent>(component.Owner) && component.Queue.Count > 0)
|
||||||
|
Produce(component, component.Queue.Dequeue());
|
||||||
|
|
||||||
|
break;
|
||||||
|
case LatheSyncRequestMessage _:
|
||||||
|
if (!HasComp<MaterialStorageComponent>(uid)) return;
|
||||||
|
component.UserInterface?.SendMessage(new LatheFullQueueMessage(GetIdQueue(component)));
|
||||||
|
if (component.ProducingRecipe != null)
|
||||||
|
component.UserInterface?.SendMessage(new LatheProducingRecipeMessage(component.ProducingRecipe.ID));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LatheServerSelectionMessage _:
|
||||||
|
if (!TryComp(uid, out ResearchClientComponent? researchClient)) return;
|
||||||
|
researchClient.OpenUserInterface(message.Session);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LatheServerSyncMessage _:
|
||||||
|
if (!TryComp(uid, out TechnologyDatabaseComponent? database)
|
||||||
|
|| !TryComp(uid, out ProtolatheDatabaseComponent? protoDatabase)) return;
|
||||||
|
|
||||||
|
if (database.SyncWithServer())
|
||||||
|
protoDatabase.Sync();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets all the prototypes in the lathe's construction queue
|
||||||
|
/// </summary>
|
||||||
|
private Queue<string> GetIdQueue(LatheComponent lathe)
|
||||||
|
{
|
||||||
|
var queue = new Queue<string>();
|
||||||
|
foreach (var recipePrototype in lathe.Queue)
|
||||||
|
{
|
||||||
|
queue.Enqueue(recipePrototype.ID);
|
||||||
|
}
|
||||||
|
return queue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
94
Content.Shared/Lathe/LatheMessages.cs
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
|
namespace Content.Shared.Lathe;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the server to sync material storage and the recipe queue.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheSyncRequestMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public LatheSyncRequestMessage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the server to sync the lathe's technology database with the research server.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheServerSyncMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public LatheServerSyncMessage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the server to open the ResearchClient UI.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheServerSelectionMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public LatheServerSelectionMessage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the client when the lathe is producing a recipe.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheProducingRecipeMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public readonly string ID;
|
||||||
|
public LatheProducingRecipeMessage(string id)
|
||||||
|
{
|
||||||
|
ID = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the client when the lathe stopped/finished producing a recipe.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheStoppedProducingRecipeMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public LatheStoppedProducingRecipeMessage()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the client to let it know about the recipe queue.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheFullQueueMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public readonly Queue<string> Recipes;
|
||||||
|
public LatheFullQueueMessage(Queue<string> recipes)
|
||||||
|
{
|
||||||
|
Recipes = recipes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sent to the server when a client queues a new recipe.
|
||||||
|
/// </summary>
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public sealed class LatheQueueRecipeMessage : BoundUserInterfaceMessage
|
||||||
|
{
|
||||||
|
public readonly string ID;
|
||||||
|
public readonly int Quantity;
|
||||||
|
public LatheQueueRecipeMessage(string id, int quantity)
|
||||||
|
{
|
||||||
|
ID = id;
|
||||||
|
Quantity = quantity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[NetSerializable, Serializable]
|
||||||
|
public enum LatheUiKey
|
||||||
|
{
|
||||||
|
Key,
|
||||||
|
}
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Robust.Shared.Serialization;
|
|
||||||
|
|
||||||
namespace Content.Shared.Lathe
|
|
||||||
{
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public enum LatheVisualState
|
|
||||||
{
|
|
||||||
Idle,
|
|
||||||
Producing,
|
|
||||||
InsertingMetal,
|
|
||||||
InsertingGlass,
|
|
||||||
InsertingGold,
|
|
||||||
InsertingPlasma,
|
|
||||||
InsertingPlastic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
17
Content.Shared/Lathe/LatheVisuals.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
|
namespace Content.Shared.Lathe
|
||||||
|
{
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
/// <summary>
|
||||||
|
/// Stores bools for if the machine is on
|
||||||
|
/// and if it's currently running and/or inserting.
|
||||||
|
/// Used for the visualizer
|
||||||
|
/// </summary>
|
||||||
|
public enum LatheVisuals : byte
|
||||||
|
{
|
||||||
|
IsRunning,
|
||||||
|
IsInserting,
|
||||||
|
InsertingColor
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,11 +1,6 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Content.Shared.Research.Prototypes;
|
using Content.Shared.Research.Prototypes;
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.GameStates;
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Serialization;
|
|
||||||
|
|
||||||
namespace Content.Shared.Lathe
|
namespace Content.Shared.Lathe
|
||||||
{
|
{
|
||||||
@@ -24,7 +19,7 @@ namespace Content.Shared.Lathe
|
|||||||
|
|
||||||
foreach (var (material, amount) in recipe.RequiredMaterials)
|
foreach (var (material, amount) in recipe.RequiredMaterials)
|
||||||
{
|
{
|
||||||
if (storage[material] <= (amount * quantity)) return false;
|
if (storage[material] < (amount * quantity)) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -34,98 +29,5 @@ namespace Content.Shared.Lathe
|
|||||||
{
|
{
|
||||||
return PrototypeManager.TryIndex(id, out LatheRecipePrototype? recipe) && CanProduce(recipe, quantity);
|
return PrototypeManager.TryIndex(id, out LatheRecipePrototype? recipe) && CanProduce(recipe, quantity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the server to sync material storage and the recipe queue.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheSyncRequestMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public LatheSyncRequestMessage()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the server to sync the lathe's technology database with the research server.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheServerSyncMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public LatheServerSyncMessage()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the server to open the ResearchClient UI.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheServerSelectionMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public LatheServerSelectionMessage()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the client when the lathe is producing a recipe.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheProducingRecipeMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public readonly string ID;
|
|
||||||
public LatheProducingRecipeMessage(string id)
|
|
||||||
{
|
|
||||||
ID = id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the client when the lathe stopped/finished producing a recipe.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheStoppedProducingRecipeMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public LatheStoppedProducingRecipeMessage()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the client to let it know about the recipe queue.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheFullQueueMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public readonly Queue<string> Recipes;
|
|
||||||
public LatheFullQueueMessage(Queue<string> recipes)
|
|
||||||
{
|
|
||||||
Recipes = recipes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sent to the server when a client queues a new recipe.
|
|
||||||
/// </summary>
|
|
||||||
[Serializable, NetSerializable]
|
|
||||||
public sealed class LatheQueueRecipeMessage : BoundUserInterfaceMessage
|
|
||||||
{
|
|
||||||
public readonly string ID;
|
|
||||||
public readonly int Quantity;
|
|
||||||
public LatheQueueRecipeMessage(string id, int quantity)
|
|
||||||
{
|
|
||||||
ID = id;
|
|
||||||
Quantity = quantity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[NetSerializable, Serializable]
|
|
||||||
public enum LatheUiKey
|
|
||||||
{
|
|
||||||
Key,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Content.Shared.Materials;
|
using Content.Shared.Materials;
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
using Robust.Shared.ViewVariables;
|
|
||||||
|
|
||||||
namespace Content.Shared.Research.Prototypes
|
namespace Content.Shared.Research.Prototypes
|
||||||
{
|
{
|
||||||
@@ -32,7 +27,7 @@ namespace Content.Shared.Research.Prototypes
|
|||||||
private string _result = string.Empty;
|
private string _result = string.Empty;
|
||||||
|
|
||||||
[DataField("completetime")]
|
[DataField("completetime")]
|
||||||
private int _completeTime = 2500;
|
private TimeSpan _completeTime = TimeSpan.FromSeconds(5);
|
||||||
|
|
||||||
[DataField("materials", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, MaterialPrototype>))]
|
[DataField("materials", customTypeSerializer: typeof(PrototypeIdDictionarySerializer<int, MaterialPrototype>))]
|
||||||
private Dictionary<string, int> _requiredMaterials = new();
|
private Dictionary<string, int> _requiredMaterials = new();
|
||||||
@@ -102,6 +97,6 @@ namespace Content.Shared.Research.Prototypes
|
|||||||
/// Might lower depending on the lathe's upgrade level.
|
/// Might lower depending on the lathe's upgrade level.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public int CompleteTime => _completeTime;
|
public TimeSpan CompleteTime => _completeTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Resources/Audio/Machines/circuitprinter.ogg
Normal file
@@ -1,3 +1,7 @@
|
|||||||
diagnoser_printing.ogg taken from https://freesound.org/people/RobSp1derp1g/sounds/615419/ and edited
|
diagnoser_printing.ogg taken from https://freesound.org/people/RobSp1derp1g/sounds/615419/ and edited
|
||||||
|
|
||||||
vaccinator_running.ogg taken from https://freesound.org/people/RutgerMuller/sounds/365413/ and edited
|
vaccinator_running.ogg taken from https://freesound.org/people/RutgerMuller/sounds/365413/ and edited
|
||||||
|
|
||||||
|
uniformprinter.ogg taken from https://freesound.org/people/sukaton/sounds/60640/ and edited
|
||||||
|
|
||||||
|
circuitprinter.ogg taken from https://freesound.org/people/OroborosNZ/sounds/273649/ and https://freesound.org/people/170048@virtualwindow.co.za/sounds/408041/ and edited
|
||||||
|
|||||||
BIN
Resources/Audio/Machines/uniformprinter.ogg
Normal file
1
Resources/Locale/en-US/machine/machine.ftl
Normal file
@@ -0,0 +1 @@
|
|||||||
|
machine-insert-item = You insert {THE($item)} into {THE($machine)}.
|
||||||
@@ -9,14 +9,18 @@
|
|||||||
netsync: false
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.AutolatheVisualLayers.Base"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
- state: unlit
|
- state: unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: ["enum.AutolatheVisualLayers.BaseUnlit"]
|
map: ["enum.PowerDeviceVisualLayers.Powered"]
|
||||||
- state: building
|
- state: inserting
|
||||||
map: ["enum.AutolatheVisualLayers.AnimationLayer"]
|
map: ["enum.LatheVisualLayers.IsInserting"]
|
||||||
- state: panel
|
- state: panel
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
|
- type: Appearance
|
||||||
|
- type: LatheVisuals
|
||||||
|
idleState: icon
|
||||||
|
runningState: building
|
||||||
- type: Physics
|
- type: Physics
|
||||||
bodyType: Static
|
bodyType: Static
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
@@ -66,10 +70,6 @@
|
|||||||
- CableStack
|
- CableStack
|
||||||
- HandheldGPSBasic
|
- HandheldGPSBasic
|
||||||
- HandheldHealthAnalyzer
|
- HandheldHealthAnalyzer
|
||||||
- type: Appearance
|
|
||||||
visuals:
|
|
||||||
- type: AutolatheVisualizer
|
|
||||||
- type: WiresVisualizer
|
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
key: enum.LatheUiKey.Key
|
key: enum.LatheUiKey.Key
|
||||||
- type: ActivatableUIRequiresPower
|
- type: ActivatableUIRequiresPower
|
||||||
@@ -93,14 +93,18 @@
|
|||||||
netsync: false
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.ProtolatheVisualLayers.Base"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
- state: unlit
|
- state: unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: ["enum.ProtolatheVisualLayers.BaseUnlit"]
|
map: ["enum.PowerDeviceVisualLayers.Powered"]
|
||||||
- state: building
|
- state: inserting
|
||||||
map: ["enum.ProtolatheVisualLayers.AnimationLayer"]
|
map: ["enum.LatheVisualLayers.IsInserting"]
|
||||||
- state: panel
|
- state: panel
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
|
- type: Appearance
|
||||||
|
- type: LatheVisuals
|
||||||
|
idleState: icon
|
||||||
|
runningState: building
|
||||||
- type: Physics
|
- type: Physics
|
||||||
bodyType: Static
|
bodyType: Static
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
@@ -196,10 +200,6 @@
|
|||||||
type: LatheBoundUserInterface
|
type: LatheBoundUserInterface
|
||||||
- key: enum.ResearchClientUiKey.Key
|
- key: enum.ResearchClientUiKey.Key
|
||||||
type: ResearchClientBoundUserInterface
|
type: ResearchClientBoundUserInterface
|
||||||
- type: Appearance
|
|
||||||
visuals:
|
|
||||||
- type: ProtolatheVisualizer
|
|
||||||
- type: WiresVisualizer
|
|
||||||
- type: Transform
|
- type: Transform
|
||||||
anchored: true
|
anchored: true
|
||||||
- type: Pullable
|
- type: Pullable
|
||||||
@@ -216,12 +216,10 @@
|
|||||||
sprite: Structures/Machines/circuit_imprinter.rsi
|
sprite: Structures/Machines/circuit_imprinter.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.ProtolatheVisualLayers.Base"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
- state: unlit
|
- state: unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: ["enum.ProtolatheVisualLayers.BaseUnlit"]
|
map: ["enum.PowerDeviceVisualLayers.Powered"]
|
||||||
- state: building
|
|
||||||
map: ["enum.ProtolatheVisualLayers.AnimationLayer"]
|
|
||||||
- state: panel
|
- state: panel
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
- type: ProtolatheDatabase
|
- type: ProtolatheDatabase
|
||||||
@@ -248,6 +246,8 @@
|
|||||||
- StasisBedMachineCircuitboard
|
- StasisBedMachineCircuitboard
|
||||||
- type: Machine
|
- type: Machine
|
||||||
board: CircuitImprinterMachineCircuitboard
|
board: CircuitImprinterMachineCircuitboard
|
||||||
|
- type: Lathe
|
||||||
|
producingSound: /Audio/Machines/circuitprinter.ogg
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Protolathe
|
parent: Protolathe
|
||||||
@@ -260,14 +260,16 @@
|
|||||||
sprite: Structures/Machines/security_techfab.rsi
|
sprite: Structures/Machines/security_techfab.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.ProtolatheVisualLayers.Base"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
- state: unlit
|
- state: unlit
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
map: ["enum.ProtolatheVisualLayers.BaseUnlit"]
|
map: ["enum.PowerDeviceVisualLayers.Powered"]
|
||||||
- state: icon
|
- state: inserting
|
||||||
map: ["enum.ProtolatheVisualLayers.AnimationLayer"]
|
map: ["enum.LatheVisualLayers.IsInserting"]
|
||||||
- state: panel
|
- state: panel
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
||||||
|
idleState: icon
|
||||||
|
runningState: icon
|
||||||
- type: ProtolatheDatabase
|
- type: ProtolatheDatabase
|
||||||
protolatherecipes:
|
protolatherecipes:
|
||||||
- Flash
|
- Flash
|
||||||
@@ -375,13 +377,8 @@
|
|||||||
netsync: false
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.AutolatheVisualLayers.Base"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
- state: unlit
|
|
||||||
shader: unshaded
|
|
||||||
map: ["enum.AutolatheVisualLayers.BaseUnlit"]
|
|
||||||
- state: building
|
|
||||||
map: ["enum.AutolatheVisualLayers.AnimationLayer"]
|
|
||||||
- state: panel
|
|
||||||
map: ["enum.WiresVisualLayers.MaintenancePanel"]
|
|
||||||
- type: Machine
|
- type: Machine
|
||||||
board: UniformPrinterMachineCircuitboard
|
board: UniformPrinterMachineCircuitboard
|
||||||
|
- type: Lathe
|
||||||
|
producingSound: /Audio/Machines/uniformprinter.ogg
|
||||||
|
|||||||
@@ -3,33 +3,39 @@
|
|||||||
stack: Glass
|
stack: Glass
|
||||||
name: glass
|
name: glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/glass.png
|
icon: Objects/Materials/Sheets/glass.rsi/glass.png
|
||||||
|
color: "#a8ccd7"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: ReinforcedGlass
|
id: ReinforcedGlass
|
||||||
stack: ReinforcedGlass
|
stack: ReinforcedGlass
|
||||||
name: reinforced glass
|
name: reinforced glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/rglass.png
|
icon: Objects/Materials/Sheets/glass.rsi/rglass.png
|
||||||
|
color: "#549bb0"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: PlasmaGlass
|
id: PlasmaGlass
|
||||||
stack: PlasmaGlass
|
stack: PlasmaGlass
|
||||||
name: plasma glass
|
name: plasma glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/pglass.png
|
icon: Objects/Materials/Sheets/glass.rsi/pglass.png
|
||||||
|
color: "#b35989"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: ReinforcedPlasmaGlass
|
id: ReinforcedPlasmaGlass
|
||||||
stack: ReinforcedPlasmaGlass
|
stack: ReinforcedPlasmaGlass
|
||||||
name: reinforced plasma glass
|
name: reinforced plasma glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/rpglass.png
|
icon: Objects/Materials/Sheets/glass.rsi/rpglass.png
|
||||||
|
color: "#8c4069"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: TitaniumGlass
|
id: TitaniumGlass
|
||||||
stack: TitaniumGlass
|
stack: TitaniumGlass
|
||||||
name: titanium glass
|
name: titanium glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/titaniumglass.png
|
icon: Objects/Materials/Sheets/glass.rsi/titaniumglass.png
|
||||||
|
color: "#333135"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: PlastitaniumGlass
|
id: PlastitaniumGlass
|
||||||
stack: PlastitaniumGlass
|
stack: PlastitaniumGlass
|
||||||
name: plastitanium glass
|
name: plastitanium glass
|
||||||
icon: Objects/Materials/Sheets/glass.rsi/plastitaniumglass.png
|
icon: Objects/Materials/Sheets/glass.rsi/plastitaniumglass.png
|
||||||
|
color: "#232127"
|
||||||
|
|||||||
@@ -4,33 +4,39 @@
|
|||||||
stack: Cloth
|
stack: Cloth
|
||||||
name: cloth
|
name: cloth
|
||||||
icon: /Textures/Objects/Materials/materials.rsi/cloth.png
|
icon: /Textures/Objects/Materials/materials.rsi/cloth.png
|
||||||
|
color: "#e7e7de"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Durathread
|
id: Durathread
|
||||||
stack: Durathread
|
stack: Durathread
|
||||||
name: durathread
|
name: durathread
|
||||||
icon: /Textures/Objects/Materials/materials.rsi/durathread.png
|
icon: /Textures/Objects/Materials/materials.rsi/durathread.png
|
||||||
|
color: "#8291a1"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Plasma
|
id: Plasma
|
||||||
stack: Plasma
|
stack: Plasma
|
||||||
name: plasma
|
name: plasma
|
||||||
icon: Objects/Materials/Sheets/other.rsi/plasma.png
|
icon: Objects/Materials/Sheets/other.rsi/plasma.png
|
||||||
|
color: "#7e009e"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Phoron
|
id: Phoron
|
||||||
stack: Phoron
|
stack: Phoron
|
||||||
name: phoron
|
name: phoron
|
||||||
icon: Objects/Materials/Sheets/other.rsi/phoron.png
|
icon: Objects/Materials/Sheets/other.rsi/phoron.png
|
||||||
|
color: "#FF3300"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Plastic
|
id: Plastic
|
||||||
stack: Plastic
|
stack: Plastic
|
||||||
name: plastic
|
name: plastic
|
||||||
icon: Objects/Materials/Sheets/other.rsi/plastic.png
|
icon: Objects/Materials/Sheets/other.rsi/plastic.png
|
||||||
|
color: "#d9d9d9"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Wood
|
id: Wood
|
||||||
stack: WoodPlank
|
stack: WoodPlank
|
||||||
name: wood
|
name: wood
|
||||||
icon: Objects/Materials/materials.rsi/wood.png
|
icon: Objects/Materials/materials.rsi/wood.png
|
||||||
|
color: "#966F33"
|
||||||
|
|||||||
@@ -9,18 +9,21 @@
|
|||||||
stack: Adamantine
|
stack: Adamantine
|
||||||
name: adamantine
|
name: adamantine
|
||||||
icon: Objects/Materials/ingots.rsi/adamantine.png
|
icon: Objects/Materials/ingots.rsi/adamantine.png
|
||||||
|
color: "#7dc37f"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Copper
|
id: Copper
|
||||||
stack: Copper
|
stack: Copper
|
||||||
name: copper
|
name: copper
|
||||||
icon: Objects/Materials/ingots.rsi/copper.png
|
icon: Objects/Materials/ingots.rsi/copper.png
|
||||||
|
color: "#B87333"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Gold
|
id: Gold
|
||||||
stack: Gold
|
stack: Gold
|
||||||
name: gold
|
name: gold
|
||||||
icon: Objects/Materials/ingots.rsi/gold.png
|
icon: Objects/Materials/ingots.rsi/gold.png
|
||||||
|
color: "#FFD700"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Hydrogen
|
id: Hydrogen
|
||||||
@@ -32,34 +35,39 @@
|
|||||||
id: Iron
|
id: Iron
|
||||||
stack: Iron
|
stack: Iron
|
||||||
name: iron
|
name: iron
|
||||||
icon: Objects/Materials/ingots.rsi/iron.png
|
icon: Objects/Materials/ingots.rsi/iron.png #Do we even distinguish between steel and iron?
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Silver
|
id: Silver
|
||||||
stack: Silver
|
stack: Silver
|
||||||
name: silver
|
name: silver
|
||||||
icon: Objects/Materials/ingots.rsi/silver.png
|
icon: Objects/Materials/ingots.rsi/silver.png
|
||||||
|
color: "#C0C0C0"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Plasteel
|
id: Plasteel
|
||||||
stack: Plasteel
|
stack: Plasteel
|
||||||
name: plasteel
|
name: plasteel
|
||||||
icon: Objects/Materials/Sheets/metal.rsi/plasteel.png
|
icon: Objects/Materials/Sheets/metal.rsi/plasteel.png
|
||||||
|
color: "#696969" #Okay, this is epic
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Brass
|
id: Brass
|
||||||
stack: Brass
|
stack: Brass
|
||||||
name: brass
|
name: brass
|
||||||
icon: Objects/Materials/Sheets/metal.rsi/brass.png
|
icon: Objects/Materials/Sheets/metal.rsi/brass.png
|
||||||
|
color: "#E1C16E"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Titanium
|
id: Titanium
|
||||||
stack: Titanium
|
stack: Titanium
|
||||||
name: titanium
|
name: titanium
|
||||||
icon: Objects/Materials/Sheets/metal.rsi/titanium.png
|
icon: Objects/Materials/Sheets/metal.rsi/titanium.png
|
||||||
|
color: "#878681"
|
||||||
|
|
||||||
- type: material
|
- type: material
|
||||||
id: Plastitanium
|
id: Plastitanium
|
||||||
stack: Plastitanium
|
stack: Plastitanium
|
||||||
name: plastitanium
|
name: plastitanium
|
||||||
icon: Objects/Materials/Sheets/metal.rsi/plastitanium.png
|
icon: Objects/Materials/Sheets/metal.rsi/plastitanium.png
|
||||||
|
color: "#4e4e4b"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: CapacitorStockPart
|
id: CapacitorStockPart
|
||||||
icon: Objects/Misc/stock_parts.rsi/capacitor.png
|
icon: Objects/Misc/stock_parts.rsi/capacitor.png
|
||||||
result: CapacitorStockPart
|
result: CapacitorStockPart
|
||||||
completetime: 250
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
id: MatterBinStockPart
|
id: MatterBinStockPart
|
||||||
icon: Objects/Misc/stock_parts.rsi/matter_bin.png
|
icon: Objects/Misc/stock_parts.rsi/matter_bin.png
|
||||||
result: MatterBinStockPart
|
result: MatterBinStockPart
|
||||||
completetime: 250
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
id: MicroLaserStockPart
|
id: MicroLaserStockPart
|
||||||
icon: Objects/Misc/stock_parts.rsi/micro_laser.png
|
icon: Objects/Misc/stock_parts.rsi/micro_laser.png
|
||||||
result: MicroLaserStockPart
|
result: MicroLaserStockPart
|
||||||
completetime: 250
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 50
|
Glass: 50
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
id: MicroManipulatorStockPart
|
id: MicroManipulatorStockPart
|
||||||
icon: Objects/Misc/stock_parts.rsi/micro_mani.png
|
icon: Objects/Misc/stock_parts.rsi/micro_mani.png
|
||||||
result: MicroManipulatorStockPart
|
result: MicroManipulatorStockPart
|
||||||
completetime: 250
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
id: ScanningModuleStockPart
|
id: ScanningModuleStockPart
|
||||||
icon: Objects/Misc/stock_parts.rsi/scan_module_static.png
|
icon: Objects/Misc/stock_parts.rsi/scan_module_static.png
|
||||||
result: ScanningModuleStockPart
|
result: ScanningModuleStockPart
|
||||||
completetime: 250
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 50
|
Glass: 50
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Tools/Hydroponics/hoe.rsi
|
sprite: Objects/Tools/Hydroponics/hoe.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: HydroponicsToolMiniHoe
|
result: HydroponicsToolMiniHoe
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
sprite: Objects/Tools/Hydroponics/scythe.rsi
|
sprite: Objects/Tools/Hydroponics/scythe.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: HydroponicsToolScythe
|
result: HydroponicsToolScythe
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 300
|
Steel: 300
|
||||||
Plastic: 200
|
Plastic: 200
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
sprite: Objects/Tools/Hydroponics/hatchet.rsi
|
sprite: Objects/Tools/Hydroponics/hatchet.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: HydroponicsToolHatchet
|
result: HydroponicsToolHatchet
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
sprite: Objects/Tools/Hydroponics/spade.rsi
|
sprite: Objects/Tools/Hydroponics/spade.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: HydroponicsToolSpade
|
result: HydroponicsToolSpade
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Structures/conveyor.rsi
|
sprite: Structures/conveyor.rsi
|
||||||
state: conveyor_loose
|
state: conveyor_loose
|
||||||
result: ConveyorBeltAssembly
|
result: ConveyorBeltAssembly
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 500
|
Steel: 500
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Specific/Chemistry/beaker.rsi
|
sprite: Objects/Specific/Chemistry/beaker.rsi
|
||||||
state: beaker
|
state: beaker
|
||||||
result: Beaker
|
result: Beaker
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 100
|
Glass: 100
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
sprite: Objects/Specific/Chemistry/beaker_large.rsi
|
sprite: Objects/Specific/Chemistry/beaker_large.rsi
|
||||||
state: beakerlarge
|
state: beakerlarge
|
||||||
result: LargeBeaker
|
result: LargeBeaker
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 200
|
Glass: 200
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
sprite: Objects/Specific/Chemistry/beaker_cryostasis.rsi
|
sprite: Objects/Specific/Chemistry/beaker_cryostasis.rsi
|
||||||
state: beakernoreact
|
state: beakernoreact
|
||||||
result: CryostasisBeaker
|
result: CryostasisBeaker
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 250
|
Steel: 250
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
sprite: Objects/Specific/Chemistry/dropper.rsi
|
sprite: Objects/Specific/Chemistry/dropper.rsi
|
||||||
state: dropper
|
state: dropper
|
||||||
result: Dropper
|
result: Dropper
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 200
|
Glass: 200
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
sprite: Objects/Specific/Chemistry/syringe.rsi
|
sprite: Objects/Specific/Chemistry/syringe.rsi
|
||||||
state: syringe_base0
|
state: syringe_base0
|
||||||
result: Syringe
|
result: Syringe
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
Steel: 25
|
Steel: 25
|
||||||
@@ -55,6 +55,6 @@
|
|||||||
id: PillCanister
|
id: PillCanister
|
||||||
icon: Objects/Specific/Chemistry/pills_canister.rsi/pill_canister.png
|
icon: Objects/Specific/Chemistry/pills_canister.rsi/pill_canister.png
|
||||||
result: PillCanister
|
result: PillCanister
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitColorGrey
|
result: ClothingUniformJumpsuitColorGrey
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtColorGrey
|
result: ClothingUniformJumpskirtColorGrey
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/bartender.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/bartender.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitBartender
|
result: ClothingUniformJumpsuitBartender
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/bartender.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/bartender.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtBartender
|
result: ClothingUniformJumpskirtBartender
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/captain.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/captain.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitCaptain
|
result: ClothingUniformJumpsuitCaptain
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/captain.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/captain.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtCaptain
|
result: ClothingUniformJumpskirtCaptain
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/cargotech.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/cargotech.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitCargo
|
result: ClothingUniformJumpsuitCargo
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/cargotech.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/cargotech.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtCargo
|
result: ClothingUniformJumpskirtCargo
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/salvage.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/salvage.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitSalvageSpecialist
|
result: ClothingUniformJumpsuitSalvageSpecialist
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 500 #It's armored but I don't want to include durathread for a non-head
|
Cloth: 500 #It's armored but I don't want to include durathread for a non-head
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/ce.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/ce.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitChiefEngineer
|
result: ClothingUniformJumpsuitChiefEngineer
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/ce.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/ce.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtChiefEngineer
|
result: ClothingUniformJumpskirtChiefEngineer
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/chaplain.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/chaplain.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitChaplain
|
result: ClothingUniformJumpsuitChaplain
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/chaplain.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/chaplain.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtChaplain
|
result: ClothingUniformJumpskirtChaplain
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/chef.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/chef.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitChef
|
result: ClothingUniformJumpsuitChef
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/chef.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/chef.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtChef
|
result: ClothingUniformJumpskirtChef
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/chemistry.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/chemistry.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitChemistry
|
result: ClothingUniformJumpsuitChemistry
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/chemistry.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/chemistry.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtChemistry
|
result: ClothingUniformJumpskirtChemistry
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/clown.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/clown.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitClown
|
result: ClothingUniformJumpsuitClown
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitCMO
|
result: ClothingUniformJumpsuitCMO
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtCMO
|
result: ClothingUniformJumpskirtCMO
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/detective.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/detective.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitDetective
|
result: ClothingUniformJumpsuitDetective
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/detective.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/detective.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtDetective
|
result: ClothingUniformJumpskirtDetective
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/engineering.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/engineering.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitEngineering
|
result: ClothingUniformJumpsuitEngineering
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/engineering.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/engineering.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtEngineering
|
result: ClothingUniformJumpskirtEngineering
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/hop.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/hop.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitHoP
|
result: ClothingUniformJumpsuitHoP
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -263,7 +263,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/hop.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/hop.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtHoP
|
result: ClothingUniformJumpskirtHoP
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -274,7 +274,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/hos.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/hos.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitHoS
|
result: ClothingUniformJumpsuitHoS
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/hos.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/hos.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtHoS
|
result: ClothingUniformJumpskirtHoS
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -296,7 +296,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/hydro.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/hydro.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitHydroponics
|
result: ClothingUniformJumpsuitHydroponics
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/hydro.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/hydro.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtHydroponics
|
result: ClothingUniformJumpskirtHydroponics
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/janitor.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/janitor.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitJanitor
|
result: ClothingUniformJumpsuitJanitor
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/janitor.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/janitor.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtJanitor
|
result: ClothingUniformJumpskirtJanitor
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -336,7 +336,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/lawyerblack.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/lawyerblack.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitLawyerBlack
|
result: ClothingUniformJumpsuitLawyerBlack
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -346,7 +346,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/librarian.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/librarian.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitLibrarian
|
result: ClothingUniformJumpsuitLibrarian
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtColorLightBrown
|
result: ClothingUniformJumpskirtColorLightBrown
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -366,7 +366,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/medical.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/medical.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitMedicalDoctor
|
result: ClothingUniformJumpsuitMedicalDoctor
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -376,7 +376,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/medical.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/medical.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtMedicalDoctor
|
result: ClothingUniformJumpskirtMedicalDoctor
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/mime.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/mime.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitMime
|
result: ClothingUniformJumpsuitMime
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -396,7 +396,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/mime.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/mime.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtMime
|
result: ClothingUniformJumpskirtMime
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -406,7 +406,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/lawyerpurple.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/lawyerpurple.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitLawyerPurple
|
result: ClothingUniformJumpsuitLawyerPurple
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -416,7 +416,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/paramedic.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/paramedic.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitParamedic
|
result: ClothingUniformJumpsuitParamedic
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/paramedic.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/paramedic.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtParamedic
|
result: ClothingUniformJumpskirtParamedic
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitPrisoner
|
result: ClothingUniformJumpsuitPrisoner
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtPrisoner
|
result: ClothingUniformJumpskirtPrisoner
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -456,7 +456,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/qm.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/qm.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitQM
|
result: ClothingUniformJumpsuitQM
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -466,7 +466,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/qm.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/qm.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtQM
|
result: ClothingUniformJumpskirtQM
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -476,7 +476,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/rnd.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/rnd.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitResearchDirector
|
result: ClothingUniformJumpsuitResearchDirector
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -487,7 +487,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/rnd.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/rnd.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtResearchDirector
|
result: ClothingUniformJumpskirtResearchDirector
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
Durathread: 100
|
Durathread: 100
|
||||||
@@ -498,7 +498,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/scientist.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/scientist.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitScientist
|
result: ClothingUniformJumpsuitScientist
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -508,7 +508,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/scientist.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/scientist.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtScientist
|
result: ClothingUniformJumpskirtScientist
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -518,7 +518,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/security.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/security.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitSec
|
result: ClothingUniformJumpsuitSec
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -528,7 +528,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/security.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/security.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtSec
|
result: ClothingUniformJumpskirtSec
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -538,7 +538,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpsuit/warden.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/warden.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpsuitWarden
|
result: ClothingUniformJumpsuitWarden
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@
|
|||||||
sprite: Clothing/Uniforms/Jumpskirt/warden.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/warden.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: ClothingUniformJumpskirtWarden
|
result: ClothingUniformJumpskirtWarden
|
||||||
completetime: 800
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Cloth: 300
|
Cloth: 300
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Weapons/Melee/cleaver.rsi
|
sprite: Objects/Weapons/Melee/cleaver.rsi
|
||||||
state: butch
|
state: butch
|
||||||
result: ButchCleaver
|
result: ButchCleaver
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 300
|
Steel: 300
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
sprite: Objects/Weapons/Melee/kitchen_knife.rsi
|
sprite: Objects/Weapons/Melee/kitchen_knife.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: KitchenKnife
|
result: KitchenKnife
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
id: DrinkMug
|
id: DrinkMug
|
||||||
icon: Objects/Consumable/Drinks/mug.rsi
|
icon: Objects/Consumable/Drinks/mug.rsi
|
||||||
result: DrinkMug
|
result: DrinkMug
|
||||||
completetime: 200
|
completetime: 0.8
|
||||||
materials:
|
materials:
|
||||||
Glass: 50
|
Glass: 50
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
id: DrinkMugMetal
|
id: DrinkMugMetal
|
||||||
icon: Objects/Consumable/Drinks/mug_metal.rsi
|
icon: Objects/Consumable/Drinks/mug_metal.rsi
|
||||||
result: DrinkMugMetal
|
result: DrinkMugMetal
|
||||||
completetime: 200
|
completetime: 0.8
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
|
|
||||||
@@ -40,6 +40,6 @@
|
|||||||
id: DrinkGlass
|
id: DrinkGlass
|
||||||
icon: Objects/Consumable/Drinks/glass_clear.rsi
|
icon: Objects/Consumable/Drinks/glass_clear.rsi
|
||||||
result: DrinkGlass
|
result: DrinkGlass
|
||||||
completetime: 200
|
completetime: 0.8
|
||||||
materials:
|
materials:
|
||||||
Glass: 50
|
Glass: 50
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: FirelockElectronics
|
id: FirelockElectronics
|
||||||
icon: Objects/Misc/module.rsi/mainboard.png
|
icon: Objects/Misc/module.rsi/mainboard.png
|
||||||
result: FirelockElectronics
|
result: FirelockElectronics
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
id: DoorElectronics
|
id: DoorElectronics
|
||||||
icon: Objects/Misc/module.rsi/door_electronics.png
|
icon: Objects/Misc/module.rsi/door_electronics.png
|
||||||
result: DoorElectronics
|
result: DoorElectronics
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
id: AirAlarmElectronics
|
id: AirAlarmElectronics
|
||||||
icon: Objects/Misc/module.rsi/airalarm_electronics.png
|
icon: Objects/Misc/module.rsi/airalarm_electronics.png
|
||||||
result: AirAlarmElectronics
|
result: AirAlarmElectronics
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
id: FireAlarmElectronics
|
id: FireAlarmElectronics
|
||||||
icon: Objects/Misc/module.rsi/door_electronics.png
|
icon: Objects/Misc/module.rsi/door_electronics.png
|
||||||
result: FireAlarmElectronics
|
result: FireAlarmElectronics
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
id: CloningPodMachineCircuitboard
|
id: CloningPodMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: CloningPodMachineCircuitboard
|
result: CloningPodMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
id: ThermomachineFreezerMachineCircuitBoard
|
id: ThermomachineFreezerMachineCircuitBoard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ThermomachineFreezerMachineCircuitBoard
|
result: ThermomachineFreezerMachineCircuitBoard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 150
|
Steel: 150
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
id: MedicalScannerMachineCircuitboard
|
id: MedicalScannerMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: MedicalScannerMachineCircuitboard
|
result: MedicalScannerMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
id: ChemMasterMachineCircuitboard
|
id: ChemMasterMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ChemMasterMachineCircuitboard
|
result: ChemMasterMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
id: ChemDispenserMachineCircuitboard
|
id: ChemDispenserMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ChemDispenserMachineCircuitboard
|
result: ChemDispenserMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
id: HydroponicsTrayMachineCircuitboard
|
id: HydroponicsTrayMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: HydroponicsTrayMachineCircuitboard
|
result: HydroponicsTrayMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
id: AutolatheMachineCircuitboard
|
id: AutolatheMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: AutolatheMachineCircuitboard
|
result: AutolatheMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
id: ProtolatheMachineCircuitboard
|
id: ProtolatheMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ProtolatheMachineCircuitboard
|
result: ProtolatheMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
id: CircuitImprinterMachineCircuitboard
|
id: CircuitImprinterMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: CircuitImprinterMachineCircuitboard
|
result: CircuitImprinterMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
id: UniformPrinterMachineCircuitboard
|
id: UniformPrinterMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: UniformPrinterMachineCircuitboard
|
result: UniformPrinterMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
id: VaccinatorMachineCircuitboard
|
id: VaccinatorMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: VaccinatorMachineCircuitboard
|
result: VaccinatorMachineCircuitboard
|
||||||
completetime: 100
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
id: DiagnoserMachineCircuitboard
|
id: DiagnoserMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: DiagnoserMachineCircuitboard
|
result: DiagnoserMachineCircuitboard
|
||||||
completetime: 100
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
id: ReagentGrinderMachineCircuitboard
|
id: ReagentGrinderMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ReagentGrinderMachineCircuitboard
|
result: ReagentGrinderMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
id: CrewMonitoringComputerCircuitboard
|
id: CrewMonitoringComputerCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: CrewMonitoringComputerCircuitboard
|
result: CrewMonitoringComputerCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
id: ShuttleConsoleCircuitboard
|
id: ShuttleConsoleCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: ShuttleConsoleCircuitboard
|
result: ShuttleConsoleCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -180,7 +180,7 @@
|
|||||||
id: DawInstrumentMachineCircuitboard
|
id: DawInstrumentMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: DawInstrumentMachineCircuitboard
|
result: DawInstrumentMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -199,7 +199,7 @@
|
|||||||
id: APCElectronics
|
id: APCElectronics
|
||||||
icon: Objects/Misc/module.rsi/charger_APC.png
|
icon: Objects/Misc/module.rsi/charger_APC.png
|
||||||
result: APCElectronics
|
result: APCElectronics
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 100
|
Glass: 100
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
id: SubstationMachineCircuitboard
|
id: SubstationMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: SubstationMachineCircuitboard
|
result: SubstationMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 450
|
Glass: 450
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
id: WallmountSubstationElectronics
|
id: WallmountSubstationElectronics
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: WallmountSubstationElectronics
|
result: WallmountSubstationElectronics
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 350
|
Glass: 350
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
id: SMESMachineCircuitboard
|
id: SMESMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/power_mod.png
|
icon: Objects/Misc/module.rsi/power_mod.png
|
||||||
result: SMESMachineCircuitboard
|
result: SMESMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
id: GeneratorPlasmaMachineCircuitboard
|
id: GeneratorPlasmaMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: GeneratorPlasmaMachineCircuitboard
|
result: GeneratorPlasmaMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 350
|
Glass: 350
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
id: GeneratorUraniumMachineCircuitboard
|
id: GeneratorUraniumMachineCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: GeneratorUraniumMachineCircuitboard
|
result: GeneratorUraniumMachineCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 350
|
Glass: 350
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
id: WallmountGeneratorElectronics
|
id: WallmountGeneratorElectronics
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: WallmountGeneratorElectronics
|
result: WallmountGeneratorElectronics
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 350
|
Glass: 350
|
||||||
@@ -262,7 +262,7 @@
|
|||||||
id: WallmountGeneratorAPUElectronics
|
id: WallmountGeneratorAPUElectronics
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: WallmountGeneratorAPUElectronics
|
result: WallmountGeneratorAPUElectronics
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 350
|
Glass: 350
|
||||||
@@ -271,7 +271,7 @@
|
|||||||
id: SolarControlComputerCircuitboard
|
id: SolarControlComputerCircuitboard
|
||||||
icon: Objects/Misc/module.rsi/id_mod.png
|
icon: Objects/Misc/module.rsi/id_mod.png
|
||||||
result: SolarControlComputerCircuitboard
|
result: SolarControlComputerCircuitboard
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 900
|
Glass: 900
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Specific/Janitorial/mop.rsi
|
sprite: Objects/Specific/Janitorial/mop.rsi
|
||||||
state: mop
|
state: mop
|
||||||
result: MopItem
|
result: MopItem
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
id: MopBucket
|
id: MopBucket
|
||||||
icon: Objects/Specific/Janitorial/janitorial.rsi
|
icon: Objects/Specific/Janitorial/janitorial.rsi
|
||||||
result: MopBucket
|
result: MopBucket
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
sprite: Objects/Tools/bucket.rsi
|
sprite: Objects/Tools/bucket.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: Bucket
|
result: Bucket
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
id: WetFloorSign
|
id: WetFloorSign
|
||||||
icon: Objects/Specific/Janitorial/wet_floor_sign.rsi
|
icon: Objects/Specific/Janitorial/wet_floor_sign.rsi
|
||||||
result: WetFloorSign
|
result: WetFloorSign
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
sprite: Objects/Specific/Janitorial/janitorial.rsi
|
sprite: Objects/Specific/Janitorial/janitorial.rsi
|
||||||
state: cleaner
|
state: cleaner
|
||||||
result: SprayBottle
|
result: SprayBottle
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
id: TrashBag
|
id: TrashBag
|
||||||
icon: Objects/Specific/Janitorial/trashbag.rsi
|
icon: Objects/Specific/Janitorial/trashbag.rsi
|
||||||
result: TrashBag
|
result: TrashBag
|
||||||
completetime: 300
|
completetime: 1.2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
id: LightReplacer
|
id: LightReplacer
|
||||||
icon: Objects/Specific/Janitorial/light_replacer.rsi
|
icon: Objects/Specific/Janitorial/light_replacer.rsi
|
||||||
result: LightReplacer
|
result: LightReplacer
|
||||||
completetime: 600
|
completetime: 2.4
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 1000
|
Glass: 1000
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: Scalpel
|
id: Scalpel
|
||||||
icon: Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png
|
icon: Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png
|
||||||
result: Scalpel
|
result: Scalpel
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
id: Retractor
|
id: Retractor
|
||||||
icon: Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png
|
icon: Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png
|
||||||
result: Scalpel
|
result: Scalpel
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
id: Cautery
|
id: Cautery
|
||||||
icon: Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png
|
icon: Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png
|
||||||
result: Cautery
|
result: Cautery
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
id: Drill
|
id: Drill
|
||||||
icon: Objects/Specific/Medical/Surgery/drill.rsi/drill.png
|
icon: Objects/Specific/Medical/Surgery/drill.rsi/drill.png
|
||||||
result: Drill
|
result: Drill
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
id: Saw
|
id: Saw
|
||||||
icon: Objects/Specific/Medical/Surgery/saw.rsi/saw.png
|
icon: Objects/Specific/Medical/Surgery/saw.rsi/saw.png
|
||||||
result: Saw
|
result: Saw
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
id: Hemostat
|
id: Hemostat
|
||||||
icon: Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png
|
icon: Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png
|
||||||
result: Hemostat
|
result: Hemostat
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
id: BodyBag_Folded
|
id: BodyBag_Folded
|
||||||
icon: Objects/Specific/Medical/Morgue/bodybags.rsi/bag_folded.png
|
icon: Objects/Specific/Medical/Morgue/bodybags.rsi/bag_folded.png
|
||||||
result: BodyBag_Folded
|
result: BodyBag_Folded
|
||||||
completetime: 300
|
completetime: 1.2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 200
|
Plastic: 200
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
id: HandheldCrewMonitor
|
id: HandheldCrewMonitor
|
||||||
icon: Objects/Specific/Medical/handheldcrewmonitor.rsi/icon.png
|
icon: Objects/Specific/Medical/handheldcrewmonitor.rsi/icon.png
|
||||||
result: HandheldCrewMonitor
|
result: HandheldCrewMonitor
|
||||||
completetime: 5000
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 1200
|
Glass: 1200
|
||||||
Steel: 1000
|
Steel: 1000
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
id: HandheldHealthAnalyzer
|
id: HandheldHealthAnalyzer
|
||||||
icon: Objects/Specific/Medical/healthanalyzer.rsi/icon.png
|
icon: Objects/Specific/Medical/healthanalyzer.rsi/icon.png
|
||||||
result: HandheldHealthAnalyzer
|
result: HandheldHealthAnalyzer
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Glass: 500
|
Glass: 500
|
||||||
Steel: 500
|
Steel: 500
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: LightTube
|
id: LightTube
|
||||||
icon: Objects/Power/light_tube.rsi/normal.png
|
icon: Objects/Power/light_tube.rsi/normal.png
|
||||||
result: LightTube
|
result: LightTube
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 50
|
Glass: 50
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
id: LightBulb
|
id: LightBulb
|
||||||
icon: Objects/Power/light_bulb.rsi/normal.png
|
icon: Objects/Power/light_bulb.rsi/normal.png
|
||||||
result: LightBulb
|
result: LightBulb
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 50
|
Steel: 50
|
||||||
Glass: 50
|
Glass: 50
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
id: PowerCellSmallHigh
|
id: PowerCellSmallHigh
|
||||||
icon: Objects/Power/PowerCells/power_cell_small_hi.rsi
|
icon: Objects/Power/PowerCells/power_cell_small_hi.rsi
|
||||||
result: PowerCellSmallHigh
|
result: PowerCellSmallHigh
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 100
|
Glass: 100
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
id: GlowstickRed
|
id: GlowstickRed
|
||||||
icon: Objects/Misc/glowstick.rsi
|
icon: Objects/Misc/glowstick.rsi
|
||||||
result: GlowstickRed
|
result: GlowstickRed
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
id: Flare
|
id: Flare
|
||||||
icon: Objects/Misc/flare.rsi
|
icon: Objects/Misc/flare.rsi
|
||||||
result: Flare
|
result: Flare
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
sprite: Objects/Tools/flashlight.rsi
|
sprite: Objects/Tools/flashlight.rsi
|
||||||
state: flashlight
|
state: flashlight
|
||||||
result: FlashlightLantern
|
result: FlashlightLantern
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
Glass: 100
|
Glass: 100
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
sprite: Objects/Misc/fire_extinguisher.rsi
|
sprite: Objects/Misc/fire_extinguisher.rsi
|
||||||
state: fire_extinguisher_closed
|
state: fire_extinguisher_closed
|
||||||
result: FireExtinguisher
|
result: FireExtinguisher
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
id: Matchbox
|
id: Matchbox
|
||||||
icon: Objects/Tools/matches.rsi
|
icon: Objects/Tools/matches.rsi
|
||||||
result: Matchbox
|
result: Matchbox
|
||||||
completetime: 10
|
completetime: 1
|
||||||
materials:
|
materials:
|
||||||
Wood: 100
|
Wood: 100
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
sprite: Mobs/Silicon/drone.rsi
|
sprite: Mobs/Silicon/drone.rsi
|
||||||
state: shell
|
state: shell
|
||||||
result: Drone
|
result: Drone
|
||||||
completetime: 1500
|
completetime: 6
|
||||||
materials:
|
materials:
|
||||||
Steel: 500
|
Steel: 500
|
||||||
Glass: 500
|
Glass: 500
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
sprite: Objects/Fun/Instruments/h_synthesizer.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: SynthesizerInstrument
|
result: SynthesizerInstrument
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 300
|
Steel: 300
|
||||||
Plastic: 300
|
Plastic: 300
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Misc/handcuffs.rsi
|
sprite: Objects/Misc/handcuffs.rsi
|
||||||
state: handcuff
|
state: handcuff
|
||||||
result: Handcuffs
|
result: Handcuffs
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 300
|
Steel: 300
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
sprite: Objects/Weapons/Melee/stunbaton.rsi
|
sprite: Objects/Weapons/Melee/stunbaton.rsi
|
||||||
state: stunbaton_off
|
state: stunbaton_off
|
||||||
result: Stunbaton
|
result: Stunbaton
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 300
|
Steel: 300
|
||||||
Plastic: 300
|
Plastic: 300
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
sprite: Objects/Weapons/Melee/flash.rsi
|
sprite: Objects/Weapons/Melee/flash.rsi
|
||||||
state: flash
|
state: flash
|
||||||
result: Flash
|
result: Flash
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 100
|
Glass: 100
|
||||||
Plastic: 200
|
Plastic: 200
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi
|
||||||
state: base
|
state: base
|
||||||
result: ShellShotgunBeanbag
|
result: ShellShotgunBeanbag
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 15
|
Plastic: 15
|
||||||
Steel: 10
|
Steel: 10
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgePistolRubber
|
result: CartridgePistolRubber
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 5
|
Plastic: 5
|
||||||
Steel: 5
|
Steel: 5
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeMagnumRubber
|
result: CartridgeMagnumRubber
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 5
|
Plastic: 5
|
||||||
Steel: 5
|
Steel: 5
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeClRifleRubber
|
result: CartridgeClRifleRubber
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 10
|
Plastic: 10
|
||||||
Steel: 5
|
Steel: 5
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeLRifleRubber
|
result: CartridgeLRifleRubber
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 10
|
Plastic: 10
|
||||||
Steel: 5
|
Steel: 5
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeSRifleRubber
|
result: CartridgeSRifleRubber
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 10
|
Plastic: 10
|
||||||
Steel: 5
|
Steel: 5
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgePistol
|
result: CartridgePistol
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 10
|
Steel: 10
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi
|
||||||
state: base
|
state: base
|
||||||
result: ShellShotgun
|
result: ShellShotgun
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 20
|
Steel: 20
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeMagnum
|
result: CartridgeMagnum
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 20
|
Steel: 20
|
||||||
|
|
||||||
@@ -133,6 +133,6 @@
|
|||||||
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi
|
||||||
state: base
|
state: base
|
||||||
result: CartridgeLRifle
|
result: CartridgeLRifle
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 30
|
Steel: 30
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
sprite: Objects/Materials/Sheets/metal.rsi
|
sprite: Objects/Materials/Sheets/metal.rsi
|
||||||
state: steel
|
state: steel
|
||||||
result: SheetSteel1
|
result: SheetSteel1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
sprite: Objects/Materials/Sheets/glass.rsi
|
sprite: Objects/Materials/Sheets/glass.rsi
|
||||||
state: glass
|
state: glass
|
||||||
result: SheetGlass1
|
result: SheetGlass1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 100
|
Glass: 100
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
sprite: Objects/Materials/Sheets/glass.rsi
|
sprite: Objects/Materials/Sheets/glass.rsi
|
||||||
state: rglass
|
state: rglass
|
||||||
result: SheetRGlass1
|
result: SheetRGlass1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Glass: 100
|
Glass: 100
|
||||||
Steel: 50
|
Steel: 50
|
||||||
@@ -35,6 +35,6 @@
|
|||||||
sprite: Objects/Materials/Sheets/other.rsi
|
sprite: Objects/Materials/Sheets/other.rsi
|
||||||
state: plastic
|
state: plastic
|
||||||
result: SheetPlastic1
|
result: SheetPlastic1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Plastic: 100
|
Plastic: 100
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: Wirecutter
|
id: Wirecutter
|
||||||
icon: Objects/Tools/wirecutters.rsi/cutters-map.png
|
icon: Objects/Tools/wirecutters.rsi/cutters-map.png
|
||||||
result: Wirecutter
|
result: Wirecutter
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
sprite: Objects/Tools/screwdriver.rsi
|
sprite: Objects/Tools/screwdriver.rsi
|
||||||
state: screwdriver-map
|
state: screwdriver-map
|
||||||
result: Screwdriver
|
result: Screwdriver
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 50
|
Plastic: 50
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
sprite: /Textures/Objects/Tools/welder.rsi
|
sprite: /Textures/Objects/Tools/welder.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: Welder
|
result: Welder
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 400
|
Steel: 400
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
id: Wrench
|
id: Wrench
|
||||||
icon: Objects/Tools/wrench.rsi/icon.png
|
icon: Objects/Tools/wrench.rsi/icon.png
|
||||||
result: Wrench
|
result: Wrench
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
name: LV cable
|
name: LV cable
|
||||||
icon: /Textures/Objects/Tools/cable-coils.rsi/coillv-30.png
|
icon: /Textures/Objects/Tools/cable-coils.rsi/coillv-30.png
|
||||||
result: CableApcStack1
|
result: CableApcStack1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 100
|
Steel: 100
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
name: MV cable coil
|
name: MV cable coil
|
||||||
icon: /Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png
|
icon: /Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png
|
||||||
result: CableMVStack1
|
result: CableMVStack1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 150
|
Steel: 150
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
name: HV cable coil
|
name: HV cable coil
|
||||||
icon: /Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png
|
icon: /Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png
|
||||||
result: CableHVStack1
|
result: CableHVStack1
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
id: Crowbar
|
id: Crowbar
|
||||||
icon: Objects/Tools/crowbar.rsi/icon.png
|
icon: Objects/Tools/crowbar.rsi/icon.png
|
||||||
result: Crowbar
|
result: Crowbar
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
id: Pickaxe
|
id: Pickaxe
|
||||||
icon: Objects/Weapons/Melee/pickaxe.rsi
|
icon: Objects/Weapons/Melee/pickaxe.rsi
|
||||||
result: Pickaxe
|
result: Pickaxe
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Wood: 100
|
Wood: 100
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
sprite: Objects/Tools/shovel.rsi
|
sprite: Objects/Tools/shovel.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: Shovel
|
result: Shovel
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Wood: 100
|
Wood: 100
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
sprite: Objects/Tools/multitool.rsi
|
sprite: Objects/Tools/multitool.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: Multitool
|
result: Multitool
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 200
|
Steel: 200
|
||||||
Plastic: 200
|
Plastic: 200
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
sprite: Objects/Tools/drill.rsi
|
sprite: Objects/Tools/drill.rsi
|
||||||
state: drill_screw
|
state: drill_screw
|
||||||
result: PowerDrill
|
result: PowerDrill
|
||||||
completetime: 500
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 600
|
Steel: 600
|
||||||
Plastic: 200
|
Plastic: 200
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
sprite: Objects/Tools/rcd.rsi
|
sprite: Objects/Tools/rcd.rsi
|
||||||
state: icon
|
state: icon
|
||||||
result: RCD
|
result: RCD
|
||||||
completetime: 1000
|
completetime: 4
|
||||||
materials:
|
materials:
|
||||||
Steel: 1000
|
Steel: 1000
|
||||||
Plastic: 300
|
Plastic: 300
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
sprite: Objects/Tools/rcd.rsi
|
sprite: Objects/Tools/rcd.rsi
|
||||||
state: ammo
|
state: ammo
|
||||||
result: RCDAmmo
|
result: RCDAmmo
|
||||||
completetime: 600
|
completetime: 2.4
|
||||||
materials:
|
materials:
|
||||||
Steel: 500
|
Steel: 500
|
||||||
Plastic: 250
|
Plastic: 250
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
id: HandheldGPSBasic
|
id: HandheldGPSBasic
|
||||||
icon: Objects/Devices/gps.rsi/icon.png
|
icon: Objects/Devices/gps.rsi/icon.png
|
||||||
result: HandheldGPSBasic
|
result: HandheldGPSBasic
|
||||||
completetime: 2000
|
completetime: 2
|
||||||
materials:
|
materials:
|
||||||
Steel: 800
|
Steel: 800
|
||||||
Glass: 300
|
Glass: 300
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 390 B |
@@ -90,9 +90,6 @@
|
|||||||
{
|
{
|
||||||
"name": "leather_3"
|
"name": "leather_3"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "liggerhide"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "monkeyhide"
|
"name": "monkeyhide"
|
||||||
},
|
},
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 685 B |
|
After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 656 B |
@@ -33,124 +33,17 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "building_unlit",
|
"name": "inserting",
|
||||||
"delays": [
|
"delays": [
|
||||||
[
|
[
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1,
|
||||||
0.5,
|
0.1
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_glass",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_gold",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_metal",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_phoron",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_plasma",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_plastic",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 697 B |
@@ -20,68 +20,33 @@
|
|||||||
"name": "building",
|
"name": "building",
|
||||||
"delays": [
|
"delays": [
|
||||||
[
|
[
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08,
|
0.16,
|
||||||
0.08
|
0.18
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "building_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08,
|
|
||||||
0.08
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_unlit"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 468 B |
|
Before Width: | Height: | Size: 445 B |
|
Before Width: | Height: | Size: 490 B |
|
Before Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 486 B |
|
Before Width: | Height: | Size: 461 B |
|
Before Width: | Height: | Size: 469 B |
|
Before Width: | Height: | Size: 458 B |
|
Before Width: | Height: | Size: 397 B |
|
Before Width: | Height: | Size: 435 B |
@@ -37,203 +37,17 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "building_unlit",
|
"name": "inserting",
|
||||||
"delays": [
|
"delays": [
|
||||||
[
|
[
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1,
|
||||||
0.8,
|
0.1
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_unlit",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_glass",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_adamantine",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_bananium",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_diamond",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_silver",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_uranium",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_gold",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_metal",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_phoron",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_plasma",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inserting_plastic",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8,
|
|
||||||
0.8
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 5.6 KiB |
@@ -15,6 +15,21 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "unlit"
|
"name": "unlit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inserting",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,6 @@
|
|||||||
"name": "icon",
|
"name": "icon",
|
||||||
"directions": 4
|
"directions": 4
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "panel"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "unlit"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "building",
|
"name": "building",
|
||||||
"directions": 4,
|
"directions": 4,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |