diff --git a/Content.Client/Lathe/Components/LatheVisualsComponent.cs b/Content.Client/Lathe/Components/LatheVisualsComponent.cs new file mode 100644 index 0000000000..9622641787 --- /dev/null +++ b/Content.Client/Lathe/Components/LatheVisualsComponent.cs @@ -0,0 +1,15 @@ +namespace Content.Client.Lathe; + +/// +/// Holds the idle and running state for machines to control +/// playing animtions on the client. +/// +[RegisterComponent] +public sealed class LatheVisualsComponent : Component +{ + [DataField("idleState", required: true)] + public string IdleState = default!; + + [DataField("runningState", required: true)] + public string RunningState = default!; +} diff --git a/Content.Client/Lathe/LatheSystem.cs b/Content.Client/Lathe/LatheSystem.cs new file mode 100644 index 0000000000..cb23a2606d --- /dev/null +++ b/Content.Client/Lathe/LatheSystem.cs @@ -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 + { + 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 +} diff --git a/Content.Client/Lathe/Visualizers/AutolatheVisualizer.cs b/Content.Client/Lathe/Visualizers/AutolatheVisualizer.cs deleted file mode 100644 index a27ff0b137..0000000000 --- a/Content.Client/Lathe/Visualizers/AutolatheVisualizer.cs +++ /dev/null @@ -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(entity); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - var sprite = _entMan.GetComponent(component.Owner); - var animPlayer = _entMan.GetComponent(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 - } - } -} diff --git a/Content.Client/Lathe/Visualizers/ProtolatheVisualizer.cs b/Content.Client/Lathe/Visualizers/ProtolatheVisualizer.cs deleted file mode 100644 index bdeb3e0d2a..0000000000 --- a/Content.Client/Lathe/Visualizers/ProtolatheVisualizer.cs +++ /dev/null @@ -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(entity); - } - - public override void OnChangeData(AppearanceComponent component) - { - base.OnChangeData(component); - - var sprite = _entMan.GetComponent(component.Owner); - var animPlayer = _entMan.GetComponent(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 - } - } -} diff --git a/Content.Server/Disease/DiseaseDiagnosisSystem.cs b/Content.Server/Disease/DiseaseDiagnosisSystem.cs index 4686adb090..5d76f5297d 100644 --- a/Content.Server/Disease/DiseaseDiagnosisSystem.cs +++ b/Content.Server/Disease/DiseaseDiagnosisSystem.cs @@ -1,7 +1,6 @@ using System.Threading; using Content.Server.Disease.Components; using Content.Shared.Disease; -using Content.Shared.Disease.Components; using Content.Shared.Interaction; using Content.Shared.Inventory; 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)); 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; @@ -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)); 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(uid); machine.Disease = swab.Disease; EntityManager.DeleteEntity(args.Used); diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index 41fd5e6514..44997f3d96 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -18,6 +18,7 @@ namespace Content.Server.Entry "ClientEntitySpawner", "CharacterInfo", "ItemCabinetVisuals", + "LatheVisuals", "DiseaseMachineVisuals", "HandheldGPS", "ToggleableLightVisuals", diff --git a/Content.Server/Lathe/Components/LatheComponent.cs b/Content.Server/Lathe/Components/LatheComponent.cs index 203b563382..2bf7e343ed 100644 --- a/Content.Server/Lathe/Components/LatheComponent.cs +++ b/Content.Server/Lathe/Components/LatheComponent.cs @@ -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.Shared.Interaction; using Content.Shared.Lathe; -using Content.Shared.Power; using Content.Shared.Research.Prototypes; using Robust.Server.GameObjects; -using Robust.Server.Player; +using Content.Shared.Sound; namespace Content.Server.Lathe.Components { [RegisterComponent] - public sealed class LatheComponent : SharedLatheComponent, IInteractUsing + public sealed class LatheComponent : SharedLatheComponent { - [Dependency] private readonly IEntityManager _entMan = default!; - - public const int VolumePerSheet = 100; + /// + /// How much volume in cm^3 each sheet of material adds + /// + public int VolumePerSheet = 100; + /// + /// The lathe's construction queue + /// [ViewVariables] public Queue Queue { get; } = new(); - + /// + /// The recipe the lathe is currently producing + /// [ViewVariables] - public bool Producing { get; private set; } - - private LatheState _state = LatheState.Base; - - private LatheState State - { - get => _state; - set => _state = value; - } - + public LatheRecipePrototype? ProducingRecipe; + /// + /// How long the inserting animation will play + /// [ViewVariables] - private LatheRecipePrototype? _producingRecipe; + public float InsertionTime = 0.79f; // 0.01 off for animation timing + /// + /// Update accumulator for the insertion time + /// + public float InsertionAccumulator = 0f; + /// + /// Production accumulator for the production time. + /// [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); + /// + /// The sound that plays when the lathe is producing an item, if any + /// + [DataField("producingSound")] + public SoundSpecifier? ProducingSound; - [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(LatheUiKey.Key); - - protected override void Initialize() - { - 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(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(Owner).Coordinates); - UserInterface?.SendMessage(new LatheStoppedProducingRecipeMessage()); - State = LatheState.Base; - SetAppearance(LatheVisualState.Idle); - }); - - return true; - } - - public void OpenUserInterface(IPlayerSession session) - { - UserInterface?.Open(session); - } - async Task 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 GetIdQueue() - { - var queue = new Queue(); - foreach (var recipePrototype in Queue) - { - queue.Enqueue(recipePrototype.ID); - } - - return queue; - } - - private enum LatheState : byte - { - Base, - Inserting, - Producing - } + /// + /// The lathe's UI. + /// + [ViewVariables] public BoundUserInterface? UserInterface; } } diff --git a/Content.Server/Lathe/Components/LatheInsertingComponent.cs b/Content.Server/Lathe/Components/LatheInsertingComponent.cs new file mode 100644 index 0000000000..e808c4d26d --- /dev/null +++ b/Content.Server/Lathe/Components/LatheInsertingComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Server.Lathe.Components +{ + /// + /// For EntityQuery to keep track of which lathes are inserting + /// + [RegisterComponent] + public sealed class LatheInsertingComponent : Component + {} +} diff --git a/Content.Server/Lathe/Components/LatheProducingComponent.cs b/Content.Server/Lathe/Components/LatheProducingComponent.cs new file mode 100644 index 0000000000..55ff79d625 --- /dev/null +++ b/Content.Server/Lathe/Components/LatheProducingComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Server.Lathe.Components +{ + /// + /// For EntityQuery to keep track of which lathes are producing + /// + [RegisterComponent] + public sealed class LatheProducingComponent : Component + {} +} diff --git a/Content.Server/Lathe/LatheSystem.cs b/Content.Server/Lathe/LatheSystem.cs index ad5025129e..cdb37f42ab 100644 --- a/Content.Server/Lathe/LatheSystem.cs +++ b/Content.Server/Lathe/LatheSystem.cs @@ -1,21 +1,286 @@ 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 Robust.Shared.GameObjects; namespace Content.Server.Lathe { [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(OnInteractUsing); + SubscribeLocalEvent(OnComponentInit); + } + + // These queues are to add/remove COMPONENTS to the lathes + private Queue ProducingAddQueue = new(); + private Queue ProducingRemoveQueue = new(); + private Queue InsertingAddQueue = new(); + private Queue InsertingRemoveQueue = new(); + public override void Update(float frameTime) { - foreach (var comp in EntityManager.EntityQuery()) + foreach (var uid in ProducingAddQueue) + EnsureComp(uid); + ProducingAddQueue.Clear(); + foreach (var uid in ProducingRemoveQueue) + RemComp(uid); + ProducingRemoveQueue.Clear(); + foreach (var uid in InsertingAddQueue) + EnsureComp(uid); + InsertingAddQueue.Clear(); + foreach (var uid in InsertingRemoveQueue) + RemComp(uid); + InsertingRemoveQueue.Clear(); + + foreach (var (insertingComp, lathe) in EntityQuery(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(false)) + { + if (lathe.ProducingRecipe == null) + continue; + if (lathe.ProducingAccumulator < lathe.ProducingRecipe.CompleteTime.TotalSeconds) + { + lathe.ProducingAccumulator += frameTime; + continue; + } + lathe.ProducingAccumulator = 0; + + FinishProducing(lathe.ProducingRecipe, lathe); + } + } + + /// + /// Initialize the UI and appearance. + /// Appearance requires initialization or the layers break + /// + 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(uid, out var appearance)) + return; + appearance.SetData(LatheVisuals.IsInserting, false); + appearance.SetData(LatheVisuals.IsRunning, false); + } + + /// + /// When someone tries to use an item on the lathe, + /// insert it if it's a stack and fits inside + /// + private void OnInteractUsing(EntityUid uid, LatheComponent component, InteractUsingEvent args) + { + if (!TryComp(uid, out var storage) || !TryComp(args.Used, out var material)) + return; + + var multiplier = 1; + + if (TryComp(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); + } + + /// + /// This handles the checks to start producing an item, and + /// starts up the sound and visuals + /// + 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(component.Owner)) + return false; + + if (TryComp(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; + } + + /// + /// After the production timer is up, this spawns the recipe and + /// either cleans up or continues to the next item in the queue + /// + private void FinishProducing(LatheRecipePrototype recipe, LatheComponent component) + { + component.ProducingRecipe = null; + EntityManager.SpawnEntity(recipe.Result, Comp(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); + } + + /// + /// Sets the machine sprite to either play the running animation + /// or stop. + /// + private void UpdateRunningAppearance(EntityUid uid, bool isRunning) + { + if (!TryComp(uid, out var appearance)) + return; + + appearance.SetData(LatheVisuals.IsRunning, isRunning); + } + + /// + /// Sets the machine sprite to play the inserting animation + /// and sets the color of the inserted mat if applicable + /// + private void UpdateInsertingAppearance(EntityUid uid, bool isInserting, Color? color = null) + { + if (!TryComp(uid, out var appearance)) + return; + + appearance.SetData(LatheVisuals.IsInserting, isInserting); + if (color != null) + appearance.SetData(LatheVisuals.InsertingColor, color); + } + + /// + /// Handles all the button presses in the lathe UI + /// + private void UserInterfaceOnOnReceiveMessage(EntityUid uid, LatheComponent component, ServerBoundUserInterfaceMessage message) + { + if (TryComp(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(component.Owner) && component.Queue.Count > 0) + Produce(component, component.Queue.Dequeue()); + + break; + case LatheSyncRequestMessage _: + if (!HasComp(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; + } + } + + /// + /// Gets all the prototypes in the lathe's construction queue + /// + private Queue GetIdQueue(LatheComponent lathe) + { + var queue = new Queue(); + foreach (var recipePrototype in lathe.Queue) + { + queue.Enqueue(recipePrototype.ID); + } + return queue; } } } diff --git a/Content.Shared/Lathe/LatheMessages.cs b/Content.Shared/Lathe/LatheMessages.cs new file mode 100644 index 0000000000..0ffffb1306 --- /dev/null +++ b/Content.Shared/Lathe/LatheMessages.cs @@ -0,0 +1,94 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Lathe; + + /// + /// Sent to the server to sync material storage and the recipe queue. + /// + [Serializable, NetSerializable] + public sealed class LatheSyncRequestMessage : BoundUserInterfaceMessage + { + public LatheSyncRequestMessage() + { + } + } + + /// + /// Sent to the server to sync the lathe's technology database with the research server. + /// + [Serializable, NetSerializable] + public sealed class LatheServerSyncMessage : BoundUserInterfaceMessage + { + public LatheServerSyncMessage() + { + } + } + + /// + /// Sent to the server to open the ResearchClient UI. + /// + [Serializable, NetSerializable] + public sealed class LatheServerSelectionMessage : BoundUserInterfaceMessage + { + public LatheServerSelectionMessage() + { + } + } + + /// + /// Sent to the client when the lathe is producing a recipe. + /// + [Serializable, NetSerializable] + public sealed class LatheProducingRecipeMessage : BoundUserInterfaceMessage + { + public readonly string ID; + public LatheProducingRecipeMessage(string id) + { + ID = id; + } + } + + /// + /// Sent to the client when the lathe stopped/finished producing a recipe. + /// + [Serializable, NetSerializable] + public sealed class LatheStoppedProducingRecipeMessage : BoundUserInterfaceMessage + { + public LatheStoppedProducingRecipeMessage() + { + } + } + + /// + /// Sent to the client to let it know about the recipe queue. + /// + [Serializable, NetSerializable] + public sealed class LatheFullQueueMessage : BoundUserInterfaceMessage + { + public readonly Queue Recipes; + public LatheFullQueueMessage(Queue recipes) + { + Recipes = recipes; + } + } + + /// + /// Sent to the server when a client queues a new recipe. + /// + [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, + } diff --git a/Content.Shared/Lathe/LatheVisualState.cs b/Content.Shared/Lathe/LatheVisualState.cs deleted file mode 100644 index 1f2c7a5834..0000000000 --- a/Content.Shared/Lathe/LatheVisualState.cs +++ /dev/null @@ -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 - } -} diff --git a/Content.Shared/Lathe/LatheVisuals.cs b/Content.Shared/Lathe/LatheVisuals.cs new file mode 100644 index 0000000000..7ae780a592 --- /dev/null +++ b/Content.Shared/Lathe/LatheVisuals.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Lathe +{ + [Serializable, NetSerializable] + /// + /// Stores bools for if the machine is on + /// and if it's currently running and/or inserting. + /// Used for the visualizer + /// + public enum LatheVisuals : byte + { + IsRunning, + IsInserting, + InsertingColor + } +} diff --git a/Content.Shared/Lathe/SharedLatheComponent.cs b/Content.Shared/Lathe/SharedLatheComponent.cs index f47212cbcc..217dd67911 100644 --- a/Content.Shared/Lathe/SharedLatheComponent.cs +++ b/Content.Shared/Lathe/SharedLatheComponent.cs @@ -1,11 +1,6 @@ -using System; -using System.Collections.Generic; using Content.Shared.Research.Prototypes; -using Robust.Shared.GameObjects; using Robust.Shared.GameStates; -using Robust.Shared.IoC; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; namespace Content.Shared.Lathe { @@ -24,7 +19,7 @@ namespace Content.Shared.Lathe foreach (var (material, amount) in recipe.RequiredMaterials) { - if (storage[material] <= (amount * quantity)) return false; + if (storage[material] < (amount * quantity)) return false; } return true; @@ -34,98 +29,5 @@ namespace Content.Shared.Lathe { return PrototypeManager.TryIndex(id, out LatheRecipePrototype? recipe) && CanProduce(recipe, quantity); } - - /// - /// Sent to the server to sync material storage and the recipe queue. - /// - [Serializable, NetSerializable] - public sealed class LatheSyncRequestMessage : BoundUserInterfaceMessage - { - public LatheSyncRequestMessage() - { - } - } - - - - /// - /// Sent to the server to sync the lathe's technology database with the research server. - /// - [Serializable, NetSerializable] - public sealed class LatheServerSyncMessage : BoundUserInterfaceMessage - { - public LatheServerSyncMessage() - { - } - } - - /// - /// Sent to the server to open the ResearchClient UI. - /// - [Serializable, NetSerializable] - public sealed class LatheServerSelectionMessage : BoundUserInterfaceMessage - { - public LatheServerSelectionMessage() - { - } - } - - /// - /// Sent to the client when the lathe is producing a recipe. - /// - [Serializable, NetSerializable] - public sealed class LatheProducingRecipeMessage : BoundUserInterfaceMessage - { - public readonly string ID; - public LatheProducingRecipeMessage(string id) - { - ID = id; - } - } - - /// - /// Sent to the client when the lathe stopped/finished producing a recipe. - /// - [Serializable, NetSerializable] - public sealed class LatheStoppedProducingRecipeMessage : BoundUserInterfaceMessage - { - public LatheStoppedProducingRecipeMessage() - { - } - } - - /// - /// Sent to the client to let it know about the recipe queue. - /// - [Serializable, NetSerializable] - public sealed class LatheFullQueueMessage : BoundUserInterfaceMessage - { - public readonly Queue Recipes; - public LatheFullQueueMessage(Queue recipes) - { - Recipes = recipes; - } - } - - /// - /// Sent to the server when a client queues a new recipe. - /// - [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, - } } } diff --git a/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs b/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs index e247d5ada8..be6a0a62d2 100644 --- a/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs +++ b/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs @@ -1,14 +1,9 @@ -using System; -using System.Collections.Generic; using Content.Shared.Materials; -using Robust.Shared.IoC; using Robust.Shared.Prototypes; 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.Dictionary; using Robust.Shared.Utility; -using Robust.Shared.ViewVariables; namespace Content.Shared.Research.Prototypes { @@ -32,7 +27,7 @@ namespace Content.Shared.Research.Prototypes private string _result = string.Empty; [DataField("completetime")] - private int _completeTime = 2500; + private TimeSpan _completeTime = TimeSpan.FromSeconds(5); [DataField("materials", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] private Dictionary _requiredMaterials = new(); @@ -102,6 +97,6 @@ namespace Content.Shared.Research.Prototypes /// Might lower depending on the lathe's upgrade level. /// [ViewVariables] - public int CompleteTime => _completeTime; + public TimeSpan CompleteTime => _completeTime; } } diff --git a/Resources/Audio/Machines/circuitprinter.ogg b/Resources/Audio/Machines/circuitprinter.ogg new file mode 100644 index 0000000000..ce4c375c38 Binary files /dev/null and b/Resources/Audio/Machines/circuitprinter.ogg differ diff --git a/Resources/Audio/Machines/license.txt b/Resources/Audio/Machines/license.txt index b81583c745..eb1ca88436 100644 --- a/Resources/Audio/Machines/license.txt +++ b/Resources/Audio/Machines/license.txt @@ -1,3 +1,7 @@ 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 + +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 diff --git a/Resources/Audio/Machines/uniformprinter.ogg b/Resources/Audio/Machines/uniformprinter.ogg new file mode 100644 index 0000000000..ddef963bdf Binary files /dev/null and b/Resources/Audio/Machines/uniformprinter.ogg differ diff --git a/Resources/Locale/en-US/machine/machine.ftl b/Resources/Locale/en-US/machine/machine.ftl new file mode 100644 index 0000000000..b6bf7862cf --- /dev/null +++ b/Resources/Locale/en-US/machine/machine.ftl @@ -0,0 +1 @@ +machine-insert-item = You insert {THE($item)} into {THE($machine)}. diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 94a3ed64b0..6b67df4d02 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -9,14 +9,18 @@ netsync: false layers: - state: icon - map: ["enum.AutolatheVisualLayers.Base"] + map: ["enum.LatheVisualLayers.IsRunning"] - state: unlit shader: unshaded - map: ["enum.AutolatheVisualLayers.BaseUnlit"] - - state: building - map: ["enum.AutolatheVisualLayers.AnimationLayer"] + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: inserting + map: ["enum.LatheVisualLayers.IsInserting"] - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: Appearance + - type: LatheVisuals + idleState: icon + runningState: building - type: Physics bodyType: Static - type: Fixtures @@ -66,10 +70,6 @@ - CableStack - HandheldGPSBasic - HandheldHealthAnalyzer - - type: Appearance - visuals: - - type: AutolatheVisualizer - - type: WiresVisualizer - type: ActivatableUI key: enum.LatheUiKey.Key - type: ActivatableUIRequiresPower @@ -93,14 +93,18 @@ netsync: false layers: - state: icon - map: ["enum.ProtolatheVisualLayers.Base"] + map: ["enum.LatheVisualLayers.IsRunning"] - state: unlit shader: unshaded - map: ["enum.ProtolatheVisualLayers.BaseUnlit"] - - state: building - map: ["enum.ProtolatheVisualLayers.AnimationLayer"] + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: inserting + map: ["enum.LatheVisualLayers.IsInserting"] - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: Appearance + - type: LatheVisuals + idleState: icon + runningState: building - type: Physics bodyType: Static - type: Fixtures @@ -196,10 +200,6 @@ type: LatheBoundUserInterface - key: enum.ResearchClientUiKey.Key type: ResearchClientBoundUserInterface - - type: Appearance - visuals: - - type: ProtolatheVisualizer - - type: WiresVisualizer - type: Transform anchored: true - type: Pullable @@ -216,12 +216,10 @@ sprite: Structures/Machines/circuit_imprinter.rsi layers: - state: icon - map: ["enum.ProtolatheVisualLayers.Base"] + map: ["enum.LatheVisualLayers.IsRunning"] - state: unlit shader: unshaded - map: ["enum.ProtolatheVisualLayers.BaseUnlit"] - - state: building - map: ["enum.ProtolatheVisualLayers.AnimationLayer"] + map: ["enum.PowerDeviceVisualLayers.Powered"] - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - type: ProtolatheDatabase @@ -248,6 +246,8 @@ - StasisBedMachineCircuitboard - type: Machine board: CircuitImprinterMachineCircuitboard + - type: Lathe + producingSound: /Audio/Machines/circuitprinter.ogg - type: entity parent: Protolathe @@ -260,14 +260,16 @@ sprite: Structures/Machines/security_techfab.rsi layers: - state: icon - map: ["enum.ProtolatheVisualLayers.Base"] + map: ["enum.LatheVisualLayers.IsRunning"] - state: unlit shader: unshaded - map: ["enum.ProtolatheVisualLayers.BaseUnlit"] - - state: icon - map: ["enum.ProtolatheVisualLayers.AnimationLayer"] + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: inserting + map: ["enum.LatheVisualLayers.IsInserting"] - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] + idleState: icon + runningState: icon - type: ProtolatheDatabase protolatherecipes: - Flash @@ -375,13 +377,8 @@ netsync: false layers: - state: icon - map: ["enum.AutolatheVisualLayers.Base"] - - state: unlit - shader: unshaded - map: ["enum.AutolatheVisualLayers.BaseUnlit"] - - state: building - map: ["enum.AutolatheVisualLayers.AnimationLayer"] - - state: panel - map: ["enum.WiresVisualLayers.MaintenancePanel"] + map: ["enum.LatheVisualLayers.IsRunning"] - type: Machine board: UniformPrinterMachineCircuitboard + - type: Lathe + producingSound: /Audio/Machines/uniformprinter.ogg diff --git a/Resources/Prototypes/Reagents/Materials/glass.yml b/Resources/Prototypes/Reagents/Materials/glass.yml index c056c78967..73387a86a0 100644 --- a/Resources/Prototypes/Reagents/Materials/glass.yml +++ b/Resources/Prototypes/Reagents/Materials/glass.yml @@ -3,33 +3,39 @@ stack: Glass name: glass icon: Objects/Materials/Sheets/glass.rsi/glass.png + color: "#a8ccd7" - type: material id: ReinforcedGlass stack: ReinforcedGlass name: reinforced glass icon: Objects/Materials/Sheets/glass.rsi/rglass.png + color: "#549bb0" - type: material id: PlasmaGlass stack: PlasmaGlass name: plasma glass icon: Objects/Materials/Sheets/glass.rsi/pglass.png + color: "#b35989" - type: material id: ReinforcedPlasmaGlass stack: ReinforcedPlasmaGlass name: reinforced plasma glass icon: Objects/Materials/Sheets/glass.rsi/rpglass.png + color: "#8c4069" - type: material id: TitaniumGlass stack: TitaniumGlass name: titanium glass icon: Objects/Materials/Sheets/glass.rsi/titaniumglass.png + color: "#333135" - type: material id: PlastitaniumGlass stack: PlastitaniumGlass name: plastitanium glass icon: Objects/Materials/Sheets/glass.rsi/plastitaniumglass.png + color: "#232127" diff --git a/Resources/Prototypes/Reagents/Materials/materials.yml b/Resources/Prototypes/Reagents/Materials/materials.yml index 4ed56ac8e1..152691d3cf 100644 --- a/Resources/Prototypes/Reagents/Materials/materials.yml +++ b/Resources/Prototypes/Reagents/Materials/materials.yml @@ -4,33 +4,39 @@ stack: Cloth name: cloth icon: /Textures/Objects/Materials/materials.rsi/cloth.png + color: "#e7e7de" - type: material id: Durathread stack: Durathread name: durathread icon: /Textures/Objects/Materials/materials.rsi/durathread.png + color: "#8291a1" - type: material id: Plasma stack: Plasma name: plasma icon: Objects/Materials/Sheets/other.rsi/plasma.png + color: "#7e009e" - type: material id: Phoron stack: Phoron name: phoron icon: Objects/Materials/Sheets/other.rsi/phoron.png + color: "#FF3300" - type: material id: Plastic stack: Plastic name: plastic icon: Objects/Materials/Sheets/other.rsi/plastic.png + color: "#d9d9d9" - type: material id: Wood stack: WoodPlank name: wood icon: Objects/Materials/materials.rsi/wood.png + color: "#966F33" diff --git a/Resources/Prototypes/Reagents/Materials/metals.yml b/Resources/Prototypes/Reagents/Materials/metals.yml index 18c4ad33fe..47b0371c7e 100644 --- a/Resources/Prototypes/Reagents/Materials/metals.yml +++ b/Resources/Prototypes/Reagents/Materials/metals.yml @@ -9,18 +9,21 @@ stack: Adamantine name: adamantine icon: Objects/Materials/ingots.rsi/adamantine.png + color: "#7dc37f" - type: material id: Copper stack: Copper name: copper icon: Objects/Materials/ingots.rsi/copper.png + color: "#B87333" - type: material id: Gold stack: Gold name: gold icon: Objects/Materials/ingots.rsi/gold.png + color: "#FFD700" - type: material id: Hydrogen @@ -32,34 +35,39 @@ id: Iron stack: 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 id: Silver stack: Silver name: silver icon: Objects/Materials/ingots.rsi/silver.png + color: "#C0C0C0" - type: material id: Plasteel stack: Plasteel name: plasteel icon: Objects/Materials/Sheets/metal.rsi/plasteel.png + color: "#696969" #Okay, this is epic - type: material id: Brass stack: Brass name: brass icon: Objects/Materials/Sheets/metal.rsi/brass.png + color: "#E1C16E" - type: material id: Titanium stack: Titanium name: titanium icon: Objects/Materials/Sheets/metal.rsi/titanium.png + color: "#878681" - type: material id: Plastitanium stack: Plastitanium name: plastitanium icon: Objects/Materials/Sheets/metal.rsi/plastitanium.png + color: "#4e4e4b" diff --git a/Resources/Prototypes/Recipes/Lathes/Parts.yml b/Resources/Prototypes/Recipes/Lathes/Parts.yml index f0f4b4fb3b..168ccb963f 100644 --- a/Resources/Prototypes/Recipes/Lathes/Parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/Parts.yml @@ -2,7 +2,7 @@ id: CapacitorStockPart icon: Objects/Misc/stock_parts.rsi/capacitor.png result: CapacitorStockPart - completetime: 250 + completetime: 1 materials: Steel: 50 Plastic: 50 @@ -11,7 +11,7 @@ id: MatterBinStockPart icon: Objects/Misc/stock_parts.rsi/matter_bin.png result: MatterBinStockPart - completetime: 250 + completetime: 1 materials: Steel: 50 Plastic: 50 @@ -20,7 +20,7 @@ id: MicroLaserStockPart icon: Objects/Misc/stock_parts.rsi/micro_laser.png result: MicroLaserStockPart - completetime: 250 + completetime: 1 materials: Steel: 50 Glass: 50 @@ -30,7 +30,7 @@ id: MicroManipulatorStockPart icon: Objects/Misc/stock_parts.rsi/micro_mani.png result: MicroManipulatorStockPart - completetime: 250 + completetime: 1 materials: Steel: 50 Plastic: 50 @@ -39,7 +39,7 @@ id: ScanningModuleStockPart icon: Objects/Misc/stock_parts.rsi/scan_module_static.png result: ScanningModuleStockPart - completetime: 250 + completetime: 1 materials: Steel: 50 Glass: 50 diff --git a/Resources/Prototypes/Recipes/Lathes/botany.yml b/Resources/Prototypes/Recipes/Lathes/botany.yml index a14894d889..46a1288146 100644 --- a/Resources/Prototypes/Recipes/Lathes/botany.yml +++ b/Resources/Prototypes/Recipes/Lathes/botany.yml @@ -4,7 +4,7 @@ sprite: Objects/Tools/Hydroponics/hoe.rsi state: icon result: HydroponicsToolMiniHoe - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 100 @@ -15,7 +15,7 @@ sprite: Objects/Tools/Hydroponics/scythe.rsi state: icon result: HydroponicsToolScythe - completetime: 500 + completetime: 2 materials: Steel: 300 Plastic: 200 @@ -26,7 +26,7 @@ sprite: Objects/Tools/Hydroponics/hatchet.rsi state: icon result: HydroponicsToolHatchet - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 100 @@ -37,7 +37,7 @@ sprite: Objects/Tools/Hydroponics/spade.rsi state: icon result: HydroponicsToolSpade - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/cargo.yml b/Resources/Prototypes/Recipes/Lathes/cargo.yml index 98d4a636be..5ebce40fbd 100644 --- a/Resources/Prototypes/Recipes/Lathes/cargo.yml +++ b/Resources/Prototypes/Recipes/Lathes/cargo.yml @@ -4,7 +4,7 @@ sprite: Structures/conveyor.rsi state: conveyor_loose result: ConveyorBeltAssembly - completetime: 1000 + completetime: 4 materials: Steel: 500 Plastic: 50 diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index 6d9be1a84f..6716bb5aa8 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -4,7 +4,7 @@ sprite: Objects/Specific/Chemistry/beaker.rsi state: beaker result: Beaker - completetime: 500 + completetime: 2 materials: Glass: 100 @@ -14,7 +14,7 @@ sprite: Objects/Specific/Chemistry/beaker_large.rsi state: beakerlarge result: LargeBeaker - completetime: 500 + completetime: 2 materials: Glass: 200 @@ -24,18 +24,18 @@ sprite: Objects/Specific/Chemistry/beaker_cryostasis.rsi state: beakernoreact result: CryostasisBeaker - completetime: 500 + completetime: 2 materials: Steel: 250 Plastic: 50 - + - type: latheRecipe id: Dropper icon: sprite: Objects/Specific/Chemistry/dropper.rsi state: dropper result: Dropper - completetime: 500 + completetime: 2 materials: Glass: 200 Plastic: 100 @@ -46,7 +46,7 @@ sprite: Objects/Specific/Chemistry/syringe.rsi state: syringe_base0 result: Syringe - completetime: 500 + completetime: 2 materials: Plastic: 100 Steel: 25 @@ -55,6 +55,6 @@ id: PillCanister icon: Objects/Specific/Chemistry/pills_canister.rsi/pill_canister.png result: PillCanister - completetime: 500 + completetime: 2 materials: Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 5821a74d8c..015532656b 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -6,7 +6,7 @@ sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi state: icon result: ClothingUniformJumpsuitColorGrey - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -16,7 +16,7 @@ sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi state: icon result: ClothingUniformJumpskirtColorGrey - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -26,7 +26,7 @@ sprite: Clothing/Uniforms/Jumpsuit/bartender.rsi state: icon result: ClothingUniformJumpsuitBartender - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -36,7 +36,7 @@ sprite: Clothing/Uniforms/Jumpskirt/bartender.rsi state: icon result: ClothingUniformJumpskirtBartender - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -46,7 +46,7 @@ sprite: Clothing/Uniforms/Jumpsuit/captain.rsi state: icon result: ClothingUniformJumpsuitCaptain - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -57,7 +57,7 @@ sprite: Clothing/Uniforms/Jumpskirt/captain.rsi state: icon result: ClothingUniformJumpskirtCaptain - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -68,7 +68,7 @@ sprite: Clothing/Uniforms/Jumpsuit/cargotech.rsi state: icon result: ClothingUniformJumpsuitCargo - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -78,7 +78,7 @@ sprite: Clothing/Uniforms/Jumpskirt/cargotech.rsi state: icon result: ClothingUniformJumpskirtCargo - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -88,7 +88,7 @@ sprite: Clothing/Uniforms/Jumpsuit/salvage.rsi state: icon result: ClothingUniformJumpsuitSalvageSpecialist - completetime: 800 + completetime: 4 materials: 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 state: icon result: ClothingUniformJumpsuitChiefEngineer - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -109,7 +109,7 @@ sprite: Clothing/Uniforms/Jumpskirt/ce.rsi state: icon result: ClothingUniformJumpskirtChiefEngineer - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -120,7 +120,7 @@ sprite: Clothing/Uniforms/Jumpsuit/chaplain.rsi state: icon result: ClothingUniformJumpsuitChaplain - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -130,7 +130,7 @@ sprite: Clothing/Uniforms/Jumpskirt/chaplain.rsi state: icon result: ClothingUniformJumpskirtChaplain - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -140,7 +140,7 @@ sprite: Clothing/Uniforms/Jumpsuit/chef.rsi state: icon result: ClothingUniformJumpsuitChef - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -150,7 +150,7 @@ sprite: Clothing/Uniforms/Jumpskirt/chef.rsi state: icon result: ClothingUniformJumpskirtChef - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -160,7 +160,7 @@ sprite: Clothing/Uniforms/Jumpsuit/chemistry.rsi state: icon result: ClothingUniformJumpsuitChemistry - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -170,7 +170,7 @@ sprite: Clothing/Uniforms/Jumpskirt/chemistry.rsi state: icon result: ClothingUniformJumpskirtChemistry - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -180,7 +180,7 @@ sprite: Clothing/Uniforms/Jumpsuit/clown.rsi state: icon result: ClothingUniformJumpsuitClown - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -190,7 +190,7 @@ sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi state: icon result: ClothingUniformJumpsuitCMO - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -201,7 +201,7 @@ sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi state: icon result: ClothingUniformJumpskirtCMO - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -212,7 +212,7 @@ sprite: Clothing/Uniforms/Jumpsuit/detective.rsi state: icon result: ClothingUniformJumpsuitDetective - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -222,7 +222,7 @@ sprite: Clothing/Uniforms/Jumpskirt/detective.rsi state: icon result: ClothingUniformJumpskirtDetective - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -232,7 +232,7 @@ sprite: Clothing/Uniforms/Jumpsuit/engineering.rsi state: icon result: ClothingUniformJumpsuitEngineering - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -242,7 +242,7 @@ sprite: Clothing/Uniforms/Jumpskirt/engineering.rsi state: icon result: ClothingUniformJumpskirtEngineering - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -252,7 +252,7 @@ sprite: Clothing/Uniforms/Jumpsuit/hop.rsi state: icon result: ClothingUniformJumpsuitHoP - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -263,7 +263,7 @@ sprite: Clothing/Uniforms/Jumpskirt/hop.rsi state: icon result: ClothingUniformJumpskirtHoP - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -274,7 +274,7 @@ sprite: Clothing/Uniforms/Jumpsuit/hos.rsi state: icon result: ClothingUniformJumpsuitHoS - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -285,7 +285,7 @@ sprite: Clothing/Uniforms/Jumpskirt/hos.rsi state: icon result: ClothingUniformJumpskirtHoS - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -296,7 +296,7 @@ sprite: Clothing/Uniforms/Jumpsuit/hydro.rsi state: icon result: ClothingUniformJumpsuitHydroponics - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -306,7 +306,7 @@ sprite: Clothing/Uniforms/Jumpskirt/hydro.rsi state: icon result: ClothingUniformJumpskirtHydroponics - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -316,7 +316,7 @@ sprite: Clothing/Uniforms/Jumpsuit/janitor.rsi state: icon result: ClothingUniformJumpsuitJanitor - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -326,7 +326,7 @@ sprite: Clothing/Uniforms/Jumpskirt/janitor.rsi state: icon result: ClothingUniformJumpskirtJanitor - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -336,7 +336,7 @@ sprite: Clothing/Uniforms/Jumpsuit/lawyerblack.rsi state: icon result: ClothingUniformJumpsuitLawyerBlack - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -346,7 +346,7 @@ sprite: Clothing/Uniforms/Jumpsuit/librarian.rsi state: icon result: ClothingUniformJumpsuitLibrarian - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -356,7 +356,7 @@ sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi state: icon result: ClothingUniformJumpskirtColorLightBrown - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -366,7 +366,7 @@ sprite: Clothing/Uniforms/Jumpsuit/medical.rsi state: icon result: ClothingUniformJumpsuitMedicalDoctor - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -376,7 +376,7 @@ sprite: Clothing/Uniforms/Jumpskirt/medical.rsi state: icon result: ClothingUniformJumpskirtMedicalDoctor - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -386,7 +386,7 @@ sprite: Clothing/Uniforms/Jumpsuit/mime.rsi state: icon result: ClothingUniformJumpsuitMime - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -396,7 +396,7 @@ sprite: Clothing/Uniforms/Jumpskirt/mime.rsi state: icon result: ClothingUniformJumpskirtMime - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -406,7 +406,7 @@ sprite: Clothing/Uniforms/Jumpsuit/lawyerpurple.rsi state: icon result: ClothingUniformJumpsuitLawyerPurple - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -416,7 +416,7 @@ sprite: Clothing/Uniforms/Jumpsuit/paramedic.rsi state: icon result: ClothingUniformJumpsuitParamedic - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -426,7 +426,7 @@ sprite: Clothing/Uniforms/Jumpskirt/paramedic.rsi state: icon result: ClothingUniformJumpskirtParamedic - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -436,7 +436,7 @@ sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi state: icon result: ClothingUniformJumpsuitPrisoner - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -446,7 +446,7 @@ sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi state: icon result: ClothingUniformJumpskirtPrisoner - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -456,7 +456,7 @@ sprite: Clothing/Uniforms/Jumpsuit/qm.rsi state: icon result: ClothingUniformJumpsuitQM - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -466,7 +466,7 @@ sprite: Clothing/Uniforms/Jumpskirt/qm.rsi state: icon result: ClothingUniformJumpskirtQM - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -476,7 +476,7 @@ sprite: Clothing/Uniforms/Jumpsuit/rnd.rsi state: icon result: ClothingUniformJumpsuitResearchDirector - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -487,7 +487,7 @@ sprite: Clothing/Uniforms/Jumpskirt/rnd.rsi state: icon result: ClothingUniformJumpskirtResearchDirector - completetime: 800 + completetime: 4 materials: Cloth: 300 Durathread: 100 @@ -498,7 +498,7 @@ sprite: Clothing/Uniforms/Jumpsuit/scientist.rsi state: icon result: ClothingUniformJumpsuitScientist - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -508,7 +508,7 @@ sprite: Clothing/Uniforms/Jumpskirt/scientist.rsi state: icon result: ClothingUniformJumpskirtScientist - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -518,7 +518,7 @@ sprite: Clothing/Uniforms/Jumpsuit/security.rsi state: icon result: ClothingUniformJumpsuitSec - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -528,7 +528,7 @@ sprite: Clothing/Uniforms/Jumpskirt/security.rsi state: icon result: ClothingUniformJumpskirtSec - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -538,7 +538,7 @@ sprite: Clothing/Uniforms/Jumpsuit/warden.rsi state: icon result: ClothingUniformJumpsuitWarden - completetime: 800 + completetime: 4 materials: Cloth: 300 @@ -548,7 +548,7 @@ sprite: Clothing/Uniforms/Jumpskirt/warden.rsi state: icon result: ClothingUniformJumpskirtWarden - completetime: 800 + completetime: 4 materials: Cloth: 300 diff --git a/Resources/Prototypes/Recipes/Lathes/cooking.yml b/Resources/Prototypes/Recipes/Lathes/cooking.yml index 414d34f3a7..d81e068082 100644 --- a/Resources/Prototypes/Recipes/Lathes/cooking.yml +++ b/Resources/Prototypes/Recipes/Lathes/cooking.yml @@ -1,10 +1,10 @@ - type: latheRecipe id: ButchCleaver - icon: + icon: sprite: Objects/Weapons/Melee/cleaver.rsi state: butch result: ButchCleaver - completetime: 500 + completetime: 2 materials: Steel: 300 Plastic: 50 @@ -14,8 +14,8 @@ icon: sprite: Objects/Weapons/Melee/kitchen_knife.rsi state: icon - result: KitchenKnife - completetime: 500 + result: KitchenKnife + completetime: 2 materials: Steel: 200 Plastic: 50 @@ -24,7 +24,7 @@ id: DrinkMug icon: Objects/Consumable/Drinks/mug.rsi result: DrinkMug - completetime: 200 + completetime: 0.8 materials: Glass: 50 @@ -32,7 +32,7 @@ id: DrinkMugMetal icon: Objects/Consumable/Drinks/mug_metal.rsi result: DrinkMugMetal - completetime: 200 + completetime: 0.8 materials: Steel: 50 @@ -40,6 +40,6 @@ id: DrinkGlass icon: Objects/Consumable/Drinks/glass_clear.rsi result: DrinkGlass - completetime: 200 + completetime: 0.8 materials: Glass: 50 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index f044b04760..7563626c34 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -2,7 +2,7 @@ id: FirelockElectronics icon: Objects/Misc/module.rsi/mainboard.png result: FirelockElectronics - completetime: 500 + completetime: 2 materials: Steel: 50 Plastic: 50 @@ -11,7 +11,7 @@ id: DoorElectronics icon: Objects/Misc/module.rsi/door_electronics.png result: DoorElectronics - completetime: 500 + completetime: 2 materials: Steel: 50 Plastic: 50 @@ -20,7 +20,7 @@ id: AirAlarmElectronics icon: Objects/Misc/module.rsi/airalarm_electronics.png result: AirAlarmElectronics - completetime: 500 + completetime: 2 materials: Steel: 50 Plastic: 50 @@ -29,7 +29,7 @@ id: FireAlarmElectronics icon: Objects/Misc/module.rsi/door_electronics.png result: FireAlarmElectronics - completetime: 500 + completetime: 2 materials: Steel: 50 Plastic: 50 @@ -38,7 +38,7 @@ id: CloningPodMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: CloningPodMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -48,7 +48,7 @@ id: ThermomachineFreezerMachineCircuitBoard icon: Objects/Misc/module.rsi/id_mod.png result: ThermomachineFreezerMachineCircuitBoard - completetime: 1000 + completetime: 4 materials: Steel: 150 Glass: 900 @@ -58,7 +58,7 @@ id: MedicalScannerMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: MedicalScannerMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -67,7 +67,7 @@ id: ChemMasterMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: ChemMasterMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -76,7 +76,7 @@ id: ChemDispenserMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: ChemDispenserMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -86,7 +86,7 @@ id: HydroponicsTrayMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: HydroponicsTrayMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -95,7 +95,7 @@ id: AutolatheMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: AutolatheMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -104,7 +104,7 @@ id: ProtolatheMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: ProtolatheMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -113,7 +113,7 @@ id: CircuitImprinterMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: CircuitImprinterMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -122,7 +122,7 @@ id: UniformPrinterMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: UniformPrinterMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -131,7 +131,7 @@ id: VaccinatorMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: VaccinatorMachineCircuitboard - completetime: 100 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -141,7 +141,7 @@ id: DiagnoserMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: DiagnoserMachineCircuitboard - completetime: 100 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -152,7 +152,7 @@ id: ReagentGrinderMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: ReagentGrinderMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -161,7 +161,7 @@ id: CrewMonitoringComputerCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: CrewMonitoringComputerCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -170,7 +170,7 @@ id: ShuttleConsoleCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: ShuttleConsoleCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -180,7 +180,7 @@ id: DawInstrumentMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: DawInstrumentMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -199,7 +199,7 @@ id: APCElectronics icon: Objects/Misc/module.rsi/charger_APC.png result: APCElectronics - completetime: 500 + completetime: 2 materials: Steel: 50 Glass: 100 @@ -208,7 +208,7 @@ id: SubstationMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: SubstationMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 450 @@ -217,7 +217,7 @@ id: WallmountSubstationElectronics icon: Objects/Misc/module.rsi/id_mod.png result: WallmountSubstationElectronics - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 350 @@ -226,7 +226,7 @@ id: SMESMachineCircuitboard icon: Objects/Misc/module.rsi/power_mod.png result: SMESMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 @@ -235,7 +235,7 @@ id: GeneratorPlasmaMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: GeneratorPlasmaMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 350 @@ -244,7 +244,7 @@ id: GeneratorUraniumMachineCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: GeneratorUraniumMachineCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 350 @@ -253,7 +253,7 @@ id: WallmountGeneratorElectronics icon: Objects/Misc/module.rsi/id_mod.png result: WallmountGeneratorElectronics - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 350 @@ -262,7 +262,7 @@ id: WallmountGeneratorAPUElectronics icon: Objects/Misc/module.rsi/id_mod.png result: WallmountGeneratorAPUElectronics - completetime: 1000 + completetime: 4 materials: Steel: 50 Glass: 350 @@ -271,7 +271,7 @@ id: SolarControlComputerCircuitboard icon: Objects/Misc/module.rsi/id_mod.png result: SolarControlComputerCircuitboard - completetime: 1000 + completetime: 4 materials: Steel: 100 Glass: 900 diff --git a/Resources/Prototypes/Recipes/Lathes/janitorial.yml b/Resources/Prototypes/Recipes/Lathes/janitorial.yml index b58750de19..3632811f06 100644 --- a/Resources/Prototypes/Recipes/Lathes/janitorial.yml +++ b/Resources/Prototypes/Recipes/Lathes/janitorial.yml @@ -1,10 +1,10 @@ - type: latheRecipe id: MopItem - icon: + icon: sprite: Objects/Specific/Janitorial/mop.rsi state: mop result: MopItem - completetime: 500 + completetime: 2 materials: Plastic: 100 @@ -12,7 +12,7 @@ id: MopBucket icon: Objects/Specific/Janitorial/janitorial.rsi result: MopBucket - completetime: 500 + completetime: 2 materials: Steel: 100 Plastic: 100 @@ -23,7 +23,7 @@ sprite: Objects/Tools/bucket.rsi state: icon result: Bucket - completetime: 500 + completetime: 2 materials: Steel: 100 @@ -31,7 +31,7 @@ id: WetFloorSign icon: Objects/Specific/Janitorial/wet_floor_sign.rsi result: WetFloorSign - completetime: 500 + completetime: 2 materials: Plastic: 100 @@ -41,7 +41,7 @@ sprite: Objects/Specific/Janitorial/janitorial.rsi state: cleaner result: SprayBottle - completetime: 500 + completetime: 2 materials: Plastic: 100 @@ -49,7 +49,7 @@ id: TrashBag icon: Objects/Specific/Janitorial/trashbag.rsi result: TrashBag - completetime: 300 + completetime: 1.2 materials: Plastic: 100 @@ -57,7 +57,7 @@ id: LightReplacer icon: Objects/Specific/Janitorial/light_replacer.rsi result: LightReplacer - completetime: 600 + completetime: 2.4 materials: Steel: 100 Glass: 1000 diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index 01673908af..84e7761cde 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -2,7 +2,7 @@ id: Scalpel icon: Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png result: Scalpel - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -10,7 +10,7 @@ id: Retractor icon: Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png result: Scalpel - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -18,7 +18,7 @@ id: Cautery icon: Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png result: Cautery - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -26,7 +26,7 @@ id: Drill icon: Objects/Specific/Medical/Surgery/drill.rsi/drill.png result: Drill - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 100 @@ -35,7 +35,7 @@ id: Saw icon: Objects/Specific/Medical/Surgery/saw.rsi/saw.png result: Saw - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -43,7 +43,7 @@ id: Hemostat icon: Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png result: Hemostat - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -51,7 +51,7 @@ id: BodyBag_Folded icon: Objects/Specific/Medical/Morgue/bodybags.rsi/bag_folded.png result: BodyBag_Folded - completetime: 300 + completetime: 1.2 materials: Plastic: 200 @@ -59,7 +59,7 @@ id: HandheldCrewMonitor icon: Objects/Specific/Medical/handheldcrewmonitor.rsi/icon.png result: HandheldCrewMonitor - completetime: 5000 + completetime: 2 materials: Glass: 1200 Steel: 1000 @@ -69,7 +69,7 @@ id: HandheldHealthAnalyzer icon: Objects/Specific/Medical/healthanalyzer.rsi/icon.png result: HandheldHealthAnalyzer - completetime: 1000 + completetime: 4 materials: Glass: 500 Steel: 500 diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index 3601fb520f..6320e4d114 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -2,7 +2,7 @@ id: LightTube icon: Objects/Power/light_tube.rsi/normal.png result: LightTube - completetime: 500 + completetime: 2 materials: Steel: 50 Glass: 50 @@ -11,7 +11,7 @@ id: LightBulb icon: Objects/Power/light_bulb.rsi/normal.png result: LightBulb - completetime: 500 + completetime: 2 materials: Steel: 50 Glass: 50 @@ -20,7 +20,7 @@ id: PowerCellSmallHigh icon: Objects/Power/PowerCells/power_cell_small_hi.rsi result: PowerCellSmallHigh - completetime: 500 + completetime: 2 materials: Steel: 100 Glass: 100 @@ -29,7 +29,7 @@ id: GlowstickRed icon: Objects/Misc/glowstick.rsi result: GlowstickRed - completetime: 500 + completetime: 2 materials: Plastic: 50 @@ -37,7 +37,7 @@ id: Flare icon: Objects/Misc/flare.rsi result: Flare - completetime: 500 + completetime: 2 materials: Plastic: 50 @@ -47,7 +47,7 @@ sprite: Objects/Tools/flashlight.rsi state: flashlight result: FlashlightLantern - completetime: 500 + completetime: 2 materials: Steel: 100 Glass: 100 @@ -59,7 +59,7 @@ sprite: Objects/Misc/fire_extinguisher.rsi state: fire_extinguisher_closed result: FireExtinguisher - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -67,7 +67,7 @@ id: Matchbox icon: Objects/Tools/matches.rsi result: Matchbox - completetime: 10 + completetime: 1 materials: Wood: 100 @@ -77,7 +77,7 @@ sprite: Mobs/Silicon/drone.rsi state: shell result: Drone - completetime: 1500 + completetime: 6 materials: Steel: 500 Glass: 500 @@ -89,7 +89,7 @@ sprite: Objects/Fun/Instruments/h_synthesizer.rsi state: icon result: SynthesizerInstrument - completetime: 1000 + completetime: 4 materials: Steel: 300 Plastic: 300 diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 00f93dc309..cbfd33dab1 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -4,7 +4,7 @@ sprite: Objects/Misc/handcuffs.rsi state: handcuff result: Handcuffs - completetime: 500 + completetime: 2 materials: Steel: 300 @@ -14,7 +14,7 @@ sprite: Objects/Weapons/Melee/stunbaton.rsi state: stunbaton_off result: Stunbaton - completetime: 500 + completetime: 2 materials: Steel: 300 Plastic: 300 @@ -25,7 +25,7 @@ sprite: Objects/Weapons/Melee/flash.rsi state: flash result: Flash - completetime: 500 + completetime: 2 materials: Glass: 100 Plastic: 200 @@ -37,62 +37,62 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_beanbag.rsi state: base result: ShellShotgunBeanbag - completetime: 500 + completetime: 2 materials: Plastic: 15 Steel: 10 - + - type: latheRecipe id: CartridgePistolRubber icon: sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgePistolRubber - completetime: 500 + completetime: 2 materials: Plastic: 5 Steel: 5 - + - type: latheRecipe id: CartridgeMagnumRubber icon: sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeMagnumRubber - completetime: 500 + completetime: 2 materials: Plastic: 5 Steel: 5 - + - type: latheRecipe id: CartridgeClRifleRubber icon: sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeClRifleRubber - completetime: 500 + completetime: 2 materials: Plastic: 10 Steel: 5 - + - type: latheRecipe id: CartridgeLRifleRubber icon: sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeLRifleRubber - completetime: 500 + completetime: 2 materials: Plastic: 10 Steel: 5 - + - type: latheRecipe id: CartridgeSRifleRubber icon: sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeSRifleRubber - completetime: 500 + completetime: 2 materials: Plastic: 10 Steel: 5 @@ -103,7 +103,7 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgePistol - completetime: 500 + completetime: 2 materials: Steel: 10 @@ -113,7 +113,7 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi state: base result: ShellShotgun - completetime: 500 + completetime: 2 materials: Steel: 20 @@ -123,7 +123,7 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeMagnum - completetime: 500 + completetime: 2 materials: Steel: 20 @@ -133,6 +133,6 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi state: base result: CartridgeLRifle - completetime: 500 + completetime: 2 materials: Steel: 30 diff --git a/Resources/Prototypes/Recipes/Lathes/sheet.yml b/Resources/Prototypes/Recipes/Lathes/sheet.yml index 5670e0f6c1..4cea46e015 100644 --- a/Resources/Prototypes/Recipes/Lathes/sheet.yml +++ b/Resources/Prototypes/Recipes/Lathes/sheet.yml @@ -4,7 +4,7 @@ sprite: Objects/Materials/Sheets/metal.rsi state: steel result: SheetSteel1 - completetime: 500 + completetime: 2 materials: Steel: 100 @@ -14,7 +14,7 @@ sprite: Objects/Materials/Sheets/glass.rsi state: glass result: SheetGlass1 - completetime: 500 + completetime: 2 materials: Glass: 100 @@ -24,7 +24,7 @@ sprite: Objects/Materials/Sheets/glass.rsi state: rglass result: SheetRGlass1 - completetime: 500 + completetime: 2 materials: Glass: 100 Steel: 50 @@ -35,6 +35,6 @@ sprite: Objects/Materials/Sheets/other.rsi state: plastic result: SheetPlastic1 - completetime: 500 + completetime: 2 materials: Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/tools.yml b/Resources/Prototypes/Recipes/Lathes/tools.yml index 9a7e4b1866..2c91e78347 100644 --- a/Resources/Prototypes/Recipes/Lathes/tools.yml +++ b/Resources/Prototypes/Recipes/Lathes/tools.yml @@ -2,7 +2,7 @@ id: Wirecutter icon: Objects/Tools/wirecutters.rsi/cutters-map.png result: Wirecutter - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 50 @@ -13,7 +13,7 @@ sprite: Objects/Tools/screwdriver.rsi state: screwdriver-map result: Screwdriver - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 50 @@ -24,7 +24,7 @@ sprite: /Textures/Objects/Tools/welder.rsi state: icon result: Welder - completetime: 500 + completetime: 2 materials: Steel: 400 @@ -32,7 +32,7 @@ id: Wrench icon: Objects/Tools/wrench.rsi/icon.png result: Wrench - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -41,7 +41,7 @@ name: LV cable icon: /Textures/Objects/Tools/cable-coils.rsi/coillv-30.png result: CableApcStack1 - completetime: 500 + completetime: 2 materials: Steel: 100 @@ -50,7 +50,7 @@ name: MV cable coil icon: /Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png result: CableMVStack1 - completetime: 500 + completetime: 2 materials: Steel: 150 @@ -59,7 +59,7 @@ name: HV cable coil icon: /Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png result: CableHVStack1 - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -67,7 +67,7 @@ id: Crowbar icon: Objects/Tools/crowbar.rsi/icon.png result: Crowbar - completetime: 500 + completetime: 2 materials: Steel: 200 @@ -75,7 +75,7 @@ id: Pickaxe icon: Objects/Weapons/Melee/pickaxe.rsi result: Pickaxe - completetime: 500 + completetime: 2 materials: Steel: 200 Wood: 100 @@ -86,7 +86,7 @@ sprite: Objects/Tools/shovel.rsi state: icon result: Shovel - completetime: 500 + completetime: 2 materials: Steel: 200 Wood: 100 @@ -97,7 +97,7 @@ sprite: Objects/Tools/multitool.rsi state: icon result: Multitool - completetime: 500 + completetime: 2 materials: Steel: 200 Plastic: 200 @@ -108,7 +108,7 @@ sprite: Objects/Tools/drill.rsi state: drill_screw result: PowerDrill - completetime: 500 + completetime: 2 materials: Steel: 600 Plastic: 200 @@ -119,7 +119,7 @@ sprite: Objects/Tools/rcd.rsi state: icon result: RCD - completetime: 1000 + completetime: 4 materials: Steel: 1000 Plastic: 300 @@ -130,7 +130,7 @@ sprite: Objects/Tools/rcd.rsi state: ammo result: RCDAmmo - completetime: 600 + completetime: 2.4 materials: Steel: 500 Plastic: 250 @@ -139,7 +139,7 @@ id: HandheldGPSBasic icon: Objects/Devices/gps.rsi/icon.png result: HandheldGPSBasic - completetime: 2000 + completetime: 2 materials: Steel: 800 Glass: 300 diff --git a/Resources/Textures/Objects/Materials/materials.rsi/liggerhide.png b/Resources/Textures/Objects/Materials/materials.rsi/liggerhide.png deleted file mode 100644 index 061a89dbad..0000000000 Binary files a/Resources/Textures/Objects/Materials/materials.rsi/liggerhide.png and /dev/null differ diff --git a/Resources/Textures/Objects/Materials/materials.rsi/meta.json b/Resources/Textures/Objects/Materials/materials.rsi/meta.json index 30ed4cee60..354aa4c9b0 100644 --- a/Resources/Textures/Objects/Materials/materials.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/materials.rsi/meta.json @@ -90,9 +90,6 @@ { "name": "leather_3" }, - { - "name": "liggerhide" - }, { "name": "monkeyhide" }, diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/building_unlit.png b/Resources/Textures/Structures/Machines/autolathe.rsi/building_unlit.png deleted file mode 100644 index 1930e8707d..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/building_unlit.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting.png new file mode 100644 index 0000000000..9f2801ace4 Binary files /dev/null and b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting.png differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_glass.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_glass.png deleted file mode 100644 index 907864a7cb..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_glass.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_gold.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_gold.png deleted file mode 100644 index d5d07bfb4f..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_gold.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_metal.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_metal.png deleted file mode 100644 index ccee553393..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_metal.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_phoron.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_phoron.png deleted file mode 100644 index 9b05fcf763..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_phoron.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plasma.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plasma.png deleted file mode 100644 index ac63a5293c..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plasma.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plastic.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plastic.png deleted file mode 100644 index c1ebffb3d9..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_plastic.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_unlit.png b/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_unlit.png deleted file mode 100644 index 87c876ff29..0000000000 Binary files a/Resources/Textures/Structures/Machines/autolathe.rsi/inserting_unlit.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/autolathe.rsi/meta.json b/Resources/Textures/Structures/Machines/autolathe.rsi/meta.json index efa929279e..b53c89c7a6 100644 --- a/Resources/Textures/Structures/Machines/autolathe.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/autolathe.rsi/meta.json @@ -33,124 +33,17 @@ ] }, { - "name": "building_unlit", + "name": "inserting", "delays": [ [ - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 0.5, - 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 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] } diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/building_unlit.png b/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/building_unlit.png deleted file mode 100644 index 5eec827ab1..0000000000 Binary files a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/building_unlit.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/meta.json b/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/meta.json index ff792f6c41..9b989ca421 100644 --- a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/meta.json @@ -20,68 +20,33 @@ "name": "building", "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 + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 0.16, + 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" } ] } diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/building_unlit.png b/Resources/Textures/Structures/Machines/protolathe.rsi/building_unlit.png deleted file mode 100644 index f89b32d447..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/building_unlit.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/inserting_unlit.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting.png similarity index 50% rename from Resources/Textures/Structures/Machines/circuit_imprinter.rsi/inserting_unlit.png rename to Resources/Textures/Structures/Machines/protolathe.rsi/inserting.png index 9a9e240fbc..3f3c09debf 100644 Binary files a/Resources/Textures/Structures/Machines/circuit_imprinter.rsi/inserting_unlit.png and b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting.png differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_adamantine.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_adamantine.png deleted file mode 100644 index b4baebf24c..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_adamantine.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_bananium.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_bananium.png deleted file mode 100644 index 2e639d0996..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_bananium.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_diamond.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_diamond.png deleted file mode 100644 index bb2bf4a3f0..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_diamond.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_glass.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_glass.png deleted file mode 100644 index c6970276e8..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_glass.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_gold.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_gold.png deleted file mode 100644 index 5b891b54d1..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_gold.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_metal.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_metal.png deleted file mode 100644 index 0c2fb3b7ee..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_metal.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_phoron.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_phoron.png deleted file mode 100644 index 8c3c2a995d..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_phoron.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plasma.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plasma.png deleted file mode 100644 index b40410b614..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plasma.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plastic.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plastic.png deleted file mode 100644 index b6d71d9fed..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_plastic.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_silver.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_silver.png deleted file mode 100644 index 41dea825dc..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_silver.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_unlit.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_unlit.png deleted file mode 100644 index cce8a4f5af..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_unlit.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_uranium.png b/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_uranium.png deleted file mode 100644 index 3ae789356d..0000000000 Binary files a/Resources/Textures/Structures/Machines/protolathe.rsi/inserting_uranium.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/protolathe.rsi/meta.json b/Resources/Textures/Structures/Machines/protolathe.rsi/meta.json index 35c6d0d38a..17832603ef 100644 --- a/Resources/Textures/Structures/Machines/protolathe.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/protolathe.rsi/meta.json @@ -37,203 +37,17 @@ ] }, { - "name": "building_unlit", + "name": "inserting", "delays": [ [ - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 0.8, - 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 + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] ] } diff --git a/Resources/Textures/Structures/Machines/security_techfab.rsi/inserting.png b/Resources/Textures/Structures/Machines/security_techfab.rsi/inserting.png new file mode 100644 index 0000000000..3f3c09debf Binary files /dev/null and b/Resources/Textures/Structures/Machines/security_techfab.rsi/inserting.png differ diff --git a/Resources/Textures/Structures/Machines/security_techfab.rsi/meta.json b/Resources/Textures/Structures/Machines/security_techfab.rsi/meta.json index 56cd60cf57..c95ca36111 100644 --- a/Resources/Textures/Structures/Machines/security_techfab.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/security_techfab.rsi/meta.json @@ -15,6 +15,21 @@ }, { "name": "unlit" + }, + { + "name": "inserting", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Machines/uniform_printer.rsi/meta.json b/Resources/Textures/Structures/Machines/uniform_printer.rsi/meta.json index 78abd9d924..102fdffd50 100644 --- a/Resources/Textures/Structures/Machines/uniform_printer.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/uniform_printer.rsi/meta.json @@ -11,12 +11,6 @@ "name": "icon", "directions": 4 }, - { - "name": "panel" - }, - { - "name": "unlit" - }, { "name": "building", "directions": 4, diff --git a/Resources/Textures/Structures/Machines/uniform_printer.rsi/panel.png b/Resources/Textures/Structures/Machines/uniform_printer.rsi/panel.png deleted file mode 100644 index 4bc9f78502..0000000000 Binary files a/Resources/Textures/Structures/Machines/uniform_printer.rsi/panel.png and /dev/null differ diff --git a/Resources/Textures/Structures/Machines/uniform_printer.rsi/unlit.png b/Resources/Textures/Structures/Machines/uniform_printer.rsi/unlit.png deleted file mode 100644 index a375e8f32e..0000000000 Binary files a/Resources/Textures/Structures/Machines/uniform_printer.rsi/unlit.png and /dev/null differ