diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index 65507dd463..1d30b1f2ab 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -257,9 +257,13 @@ void AddCheckBox(string checkBoxName, bool currentState, Action HandleTargetChange(session, TargetBodyPart.Torso))) .Bind(ContentKeyFunctions.TargetLeftArm, InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftArm))) -/* .Bind(ContentKeyFunctions.TargetLeftHand, - InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftHand))) SOON :TM: */ + .Bind(ContentKeyFunctions.TargetLeftHand, + InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftHand))) .Bind(ContentKeyFunctions.TargetRightArm, InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightArm))) -/* .Bind(ContentKeyFunctions.TargetRightHand, - InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightHand)))*/ + .Bind(ContentKeyFunctions.TargetRightHand, + InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightHand))) .Bind(ContentKeyFunctions.TargetLeftLeg, InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftLeg))) -/* .Bind(ContentKeyFunctions.TargetLeftFoot, - InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftFoot)))*/ + .Bind(ContentKeyFunctions.TargetLeftFoot, + InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.LeftFoot))) .Bind(ContentKeyFunctions.TargetRightLeg, InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightLeg))) -/* .Bind(ContentKeyFunctions.TargetRightFoot, - InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightFoot)))*/ + .Bind(ContentKeyFunctions.TargetRightFoot, + InputCmdHandler.FromDelegate((session) => HandleTargetChange(session, TargetBodyPart.RightFoot))) .Register(); } diff --git a/Content.Server/Body/Components/BrainComponent.cs b/Content.Server/Body/Components/BrainComponent.cs index 004ff24eaf..1a0ebc5f2a 100644 --- a/Content.Server/Body/Components/BrainComponent.cs +++ b/Content.Server/Body/Components/BrainComponent.cs @@ -5,5 +5,10 @@ namespace Content.Server.Body.Components [RegisterComponent, Access(typeof(BrainSystem))] public sealed partial class BrainComponent : Component { + /// + /// Is this brain currently controlling the entity? + /// + [DataField] + public bool Active = true; } } diff --git a/Content.Server/Body/Systems/BodySystem.cs b/Content.Server/Body/Systems/BodySystem.cs index 3dca4b81fe..2584e4daa2 100644 --- a/Content.Server/Body/Systems/BodySystem.cs +++ b/Content.Server/Body/Systems/BodySystem.cs @@ -168,6 +168,16 @@ public override HashSet GibPart( return gibs; } + public override bool BurnPart(EntityUid partId, BodyPartComponent? part = null) + { + if (!Resolve(partId, ref part, logMissing: false) + || TerminatingOrDeleted(partId) + || EntityManager.IsQueuedForDeletion(partId)) + return false; + + return base.BurnPart(partId, part); + } + protected override void ApplyPartMarkings(EntityUid target, BodyPartAppearanceComponent component) { return; diff --git a/Content.Server/Body/Systems/BrainSystem.cs b/Content.Server/Body/Systems/BrainSystem.cs index 6f6e7eda43..8338bc0f85 100644 --- a/Content.Server/Body/Systems/BrainSystem.cs +++ b/Content.Server/Body/Systems/BrainSystem.cs @@ -2,9 +2,11 @@ using Content.Server.Ghost.Components; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; +using Content.Shared.Body.Systems; using Content.Shared.Body.Events; using Content.Shared.Body.Organ; using Content.Server.DelayedDeath; +using Content.Server.DelayedDeath; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Pointing; @@ -25,29 +27,33 @@ public override void Initialize() SubscribeLocalEvent(OnPointAttempt); } - private void HandleRemoval(EntityUid uid, BrainComponent _, ref OrganRemovedFromBodyEvent args) + private void HandleRemoval(EntityUid uid, BrainComponent brain, ref OrganRemovedFromBodyEvent args) { if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.OldBody)) return; + brain.Active = false; // Prevents revival, should kill the user within a given timespan too. - EnsureComp(args.OldBody); - EnsureComp(args.OldBody); - HandleMind(uid, args.OldBody); + if (!CheckOtherBrains(args.OldBody)) + { + EnsureComp(args.OldBody); + HandleMind(uid, args.OldBody); + } } - private void HandleAddition(EntityUid uid, BrainComponent _, ref OrganAddedToBodyEvent args) + private void HandleAddition(EntityUid uid, BrainComponent brain, ref OrganAddedToBodyEvent args) { if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.Body)) return; - RemComp(args.Body); - if (_bodySystem.TryGetBodyOrganComponents(args.Body, out var _)) - RemComp(args.Body); - HandleMind(args.Body, uid); + if (!CheckOtherBrains(args.Body)) + { + RemComp(args.Body); + HandleMind(args.Body, uid, brain); + } } - private void HandleMind(EntityUid newEntity, EntityUid oldEntity) + private void HandleMind(EntityUid newEntity, EntityUid oldEntity, BrainComponent? brain = null) { if (TerminatingOrDeleted(newEntity) || TerminatingOrDeleted(oldEntity)) return; @@ -63,11 +69,36 @@ private void HandleMind(EntityUid newEntity, EntityUid oldEntity) return; _mindSystem.TransferTo(mindId, newEntity, mind: mind); + if (brain != null) + brain.Active = true; } private void OnPointAttempt(Entity ent, ref PointAttemptEvent args) { args.Cancel(); } + + private bool CheckOtherBrains(EntityUid entity) + { + var hasOtherBrains = false; + if (TryComp(entity, out var body)) + { + if (TryComp(entity, out var bodyBrain)) + hasOtherBrains = true; + else + { + foreach (var (organ, _) in _bodySystem.GetBodyOrgans(entity, body)) + { + if (TryComp(organ, out var brain) && brain.Active) + { + hasOtherBrains = true; + break; + } + } + } + } + + return hasOtherBrains; + } } } diff --git a/Content.Server/Body/Systems/DebrainedSystem.cs b/Content.Server/Body/Systems/DebrainedSystem.cs new file mode 100644 index 0000000000..f1d6348817 --- /dev/null +++ b/Content.Server/Body/Systems/DebrainedSystem.cs @@ -0,0 +1,56 @@ +using Content.Shared.Body.Systems; +using Content.Shared.Body.Organ; +using Content.Server.DelayedDeath; +using Content.Shared.Mind; +using Content.Server.Popups; +using Content.Shared.Speech; +using Content.Shared.Standing; +using Content.Shared.Stunnable; + +namespace Content.Server.Body.Systems; + +/// +/// This system handles behavior on entities when they lose their head or their brains are removed. +/// MindComponent fuckery should still be mainly handled on BrainSystem as usual. +/// +public sealed class DebrainedSystem : EntitySystem +{ + [Dependency] private readonly SharedBodySystem _bodySystem = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly StandingStateSystem _standingSystem = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnSpeakAttempt); + SubscribeLocalEvent(OnStandAttempt); + } + + private void OnComponentInit(EntityUid uid, DebrainedComponent _, ComponentInit args) + { + EnsureComp(uid); + EnsureComp(uid); + _standingSystem.Down(uid); + } + + private void OnComponentRemove(EntityUid uid, DebrainedComponent _, ComponentRemove args) + { + RemComp(uid); + RemComp(uid); + if (_bodySystem.TryGetBodyOrganComponents(uid, out var _)) + RemComp(uid); + } + + private void OnSpeakAttempt(EntityUid uid, DebrainedComponent _, SpeakAttemptEvent args) + { + _popupSystem.PopupEntity(Loc.GetString("speech-muted"), uid, uid); + args.Cancel(); + } + + private void OnStandAttempt(EntityUid uid, DebrainedComponent _, StandAttemptEvent args) + { + args.Cancel(); + } +} diff --git a/Content.Server/Body/Systems/EyesSystem.cs b/Content.Server/Body/Systems/EyesSystem.cs new file mode 100644 index 0000000000..b59b278711 --- /dev/null +++ b/Content.Server/Body/Systems/EyesSystem.cs @@ -0,0 +1,87 @@ +using Content.Server.Body.Components; +using Content.Shared.Body.Components; +using Content.Shared.Body.Events; +using Content.Shared.Body.Organ; +using Content.Shared.Eye.Blinding.Components; +using Content.Shared.Eye.Blinding.Systems; + +namespace Content.Server.Body.Systems +{ + public sealed class EyesSystem : EntitySystem + { + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly BlindableSystem _blindableSystem = default!; + [Dependency] private readonly BodySystem _bodySystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnOrganEnabled); + SubscribeLocalEvent(OnOrganDisabled); + } + + private void HandleSight(EntityUid newEntity, EntityUid oldEntity) + { + if (TerminatingOrDeleted(newEntity) || TerminatingOrDeleted(oldEntity)) + return; + + BlindableComponent? newSight; + BlindableComponent? oldSight; + //transfer existing component to organ + if (!TryComp(newEntity, out newSight)) + newSight = EnsureComp(newEntity); + + if (!TryComp(oldEntity, out oldSight)) + oldSight = EnsureComp(oldEntity); + + //give new sight all values of old sight + _blindableSystem.TransferBlindness(newSight, oldSight, newEntity); + + var hasOtherEyes = false; + //check for other eye components on owning body and owning body organs (if old entity has a body) + if (TryComp(oldEntity, out var body)) + { + if (TryComp(oldEntity, out var bodyEyes)) //some bodies see through their skin!!! (slimes) + hasOtherEyes = true; + else + { + foreach (var (organ, _) in _bodySystem.GetBodyOrgans(oldEntity, body)) + { + if (TryComp(organ, out var eyes)) + { + hasOtherEyes = true; + break; + } + } + //TODO (MS14): Should we do this for body parts too? might be a little overpowered but could be funny/interesting + } + } + + //if there are no existing eye components for the old entity - set old sight to be blind otherwise leave it as is + if (!hasOtherEyes && !TryComp(oldEntity, out var self)) + _blindableSystem.AdjustEyeDamage((oldEntity, oldSight), oldSight.MaxDamage); + + } + + private void OnOrganEnabled(EntityUid uid, EyesComponent component, OrganEnabledEvent args) + { + if (TerminatingOrDeleted(uid) + || args.Organ.Comp.Body is not { Valid: true } body) + return; + + RemComp(body); + HandleSight(uid, body); + } + + private void OnOrganDisabled(EntityUid uid, EyesComponent component, OrganDisabledEvent args) + { + if (TerminatingOrDeleted(uid) + || args.Organ.Comp.Body is not { Valid: true } body) + return; + + EnsureComp(body); + HandleSight(body, uid); + } + } +} diff --git a/Content.Server/Cybernetics/CyberneticsSystem.cs b/Content.Server/Cybernetics/CyberneticsSystem.cs new file mode 100644 index 0000000000..744e0e77ca --- /dev/null +++ b/Content.Server/Cybernetics/CyberneticsSystem.cs @@ -0,0 +1,54 @@ +using Content.Server.Emp; +using Content.Server.Body.Systems; +using Content.Shared.Body.Part; +using Content.Shared.Body.Organ; +using Content.Shared.Cybernetics; + +namespace Content.Server.Cybernetics; + +internal sealed class CyberneticsSystem : EntitySystem +{ + public override void Initialize() + { + SubscribeLocalEvent(OnEmpPulse); + SubscribeLocalEvent(OnEmpDisabledRemoved); + } + private void OnEmpPulse(Entity cyberEnt, ref EmpPulseEvent ev) + { + if (!cyberEnt.Comp.Disabled) + { + ev.Affected = true; + ev.Disabled = true; + cyberEnt.Comp.Disabled = true; + + if (HasComp(cyberEnt)) + { + var disableEvent = new OrganEnableChangedEvent(false); + RaiseLocalEvent(cyberEnt, ref disableEvent); + } + else if (HasComp(cyberEnt)) + { + var disableEvent = new BodyPartEnableChangedEvent(false); + RaiseLocalEvent(cyberEnt, ref disableEvent); + } + } + } + + private void OnEmpDisabledRemoved(Entity cyberEnt, ref EmpDisabledRemoved ev) + { + if (cyberEnt.Comp.Disabled) + { + cyberEnt.Comp.Disabled = false; + if (HasComp(cyberEnt)) + { + var enableEvent = new OrganEnableChangedEvent(true); + RaiseLocalEvent(cyberEnt, ref enableEvent); + } + else if (HasComp(cyberEnt)) + { + var enableEvent = new BodyPartEnableChangedEvent(true); + RaiseLocalEvent(cyberEnt, ref enableEvent); + } + } + } +} diff --git a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs index f0499dc6a2..7e70493c91 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs @@ -1,4 +1,5 @@ using Content.Shared.Body.Components; +using Content.Shared.Body.Part; using Content.Shared.Inventory; using Content.Shared.Popups; using JetBrains.Annotations; @@ -17,6 +18,7 @@ public void Execute(EntityUid bodyId, DestructibleSystem system, EntityUid? caus var inventorySystem = system.EntityManager.System(); var sharedPopupSystem = system.EntityManager.System(); + if (system.EntityManager.TryGetComponent(bodyId, out var comp)) { foreach (var item in inventorySystem.GetHandOrInventoryEntities(bodyId)) @@ -25,8 +27,16 @@ public void Execute(EntityUid bodyId, DestructibleSystem system, EntityUid? caus } } - sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyId)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); - - system.EntityManager.QueueDeleteEntity(bodyId); + if (system.EntityManager.TryGetComponent(bodyId, out var bodyPart)) + { + if (bodyPart.CanSever + && system.BodySystem.BurnPart(bodyId, bodyPart)) + sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyId)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); + } + else + { + sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyId)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); + system.EntityManager.QueueDeleteEntity(bodyId); + } } } diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs index 2a54337bc2..bcf240df53 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs @@ -137,12 +137,13 @@ public void ExitDisposals(EntityUid uid, DisposalHolderComponent? holder = null, else { _xformSystem.AttachToGridOrMap(entity, xform); + var direction = holder.CurrentDirection == Direction.Invalid ? holder.PreviousDirection : holder.CurrentDirection; - if (holder.PreviousDirection != Direction.Invalid && gridUid != null && _xformQuery.TryGetComponent(gridUid, out var parentXform)) + if (direction != Direction.Invalid && _xformQuery.TryGetComponent(gridUid, out var gridXform)) { - var direction = holder.CurrentDirection.ToAngle(); - direction += _xformSystem.GetWorldRotation(parentXform); - _throwing.TryThrow(entity, direction.ToWorldVec() * 3f, 10f); + var directionAngle = direction.ToAngle(); + directionAngle += _xformSystem.GetWorldRotation(gridXform); + _throwing.TryThrow(entity, directionAngle.ToWorldVec() * 3f, 10f); } } } diff --git a/Content.Server/Light/Components/MatchstickComponent.cs b/Content.Server/Light/Components/MatchstickComponent.cs deleted file mode 100644 index 3c47f4c18b..0000000000 --- a/Content.Server/Light/Components/MatchstickComponent.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Content.Server.Light.EntitySystems; -using Content.Shared.Smoking; -using Robust.Shared.Audio; - -namespace Content.Server.Light.Components -{ - [RegisterComponent] - [Access(typeof(MatchstickSystem))] - public sealed partial class MatchstickComponent : Component - { - /// - /// Current state to matchstick. Can be Unlit, Lit or Burnt. - /// - [DataField("state")] - public SmokableState CurrentState = SmokableState.Unlit; - - /// - /// How long will matchstick last in seconds. - /// - [ViewVariables(VVAccess.ReadOnly)] - [DataField("duration")] - public int Duration = 10; - - /// - /// Sound played when you ignite the matchstick. - /// - [DataField("igniteSound", required: true)] public SoundSpecifier IgniteSound = default!; - } -} diff --git a/Content.Server/Light/EntitySystems/MatchboxSystem.cs b/Content.Server/Light/EntitySystems/MatchboxSystem.cs index 9a73e44f87..e4925c610d 100644 --- a/Content.Server/Light/EntitySystems/MatchboxSystem.cs +++ b/Content.Server/Light/EntitySystems/MatchboxSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Storage.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Smoking; +using Content.Shared.Smoking.Components; namespace Content.Server.Light.EntitySystems { diff --git a/Content.Server/Light/EntitySystems/MatchstickSystem.cs b/Content.Server/Light/EntitySystems/MatchstickSystem.cs index 96e4695784..6748fa9ce6 100644 --- a/Content.Server/Light/EntitySystems/MatchstickSystem.cs +++ b/Content.Server/Light/EntitySystems/MatchstickSystem.cs @@ -1,9 +1,10 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Light.Components; using Content.Shared.Audio; using Content.Shared.Interaction; using Content.Shared.Item; using Content.Shared.Smoking; +using Content.Shared.Smoking.Components; +using Content.Shared.Smoking.Systems; using Content.Shared.Temperature; using Robust.Server.GameObjects; using Robust.Shared.Audio; @@ -12,7 +13,7 @@ namespace Content.Server.Light.EntitySystems { - public sealed class MatchstickSystem : EntitySystem + public sealed class MatchstickSystem : SharedMatchstickSystem { [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; @@ -84,18 +85,21 @@ public void Ignite(Entity matchstick, EntityUid user) _audio.PlayPvs(component.IgniteSound, matchstick, AudioParams.Default.WithVariation(0.125f).WithVolume(-0.125f)); // Change state - SetState(matchstick, component, SmokableState.Lit); + SetState((matchstick, component), SmokableState.Lit); _litMatches.Add(matchstick); matchstick.Owner.SpawnTimer(component.Duration * 1000, delegate { - SetState(matchstick, component, SmokableState.Burnt); + SetState((matchstick, component), SmokableState.Burnt); _litMatches.Remove(matchstick); }); } - private void SetState(EntityUid uid, MatchstickComponent component, SmokableState value) + public override bool SetState(Entity ent, SmokableState value) { - component.CurrentState = value; + if (!base.SetState(ent, value)) + return false; + + var (uid, component) = ent; if (_lights.TryGetLight(uid, out var pointLightComponent)) { @@ -119,6 +123,8 @@ private void SetState(EntityUid uid, MatchstickComponent component, SmokableStat { _appearance.SetData(uid, SmokingVisuals.Smoking, component.CurrentState, appearance); } + + return true; } } } diff --git a/Content.Server/Medical/Surgery/SurgerySystem.cs b/Content.Server/Medical/Surgery/SurgerySystem.cs index c5c99ac6f8..8d666d178a 100644 --- a/Content.Server/Medical/Surgery/SurgerySystem.cs +++ b/Content.Server/Medical/Surgery/SurgerySystem.cs @@ -134,12 +134,14 @@ private void OnSurgeryStepDamage(Entity ent, ref Surgery private void OnSurgerySpecialDamageChange(Entity ent, ref SurgeryStepDamageChangeEvent args) { + // Im killing this shit soon as well. if (ent.Comp.DamageType == "Rot") _rot.ReduceAccumulator(args.Body, TimeSpan.FromSeconds(2147483648)); // BEHOLD, SHITCODE THAT I JUST COPY PASTED. I'll redo it at some point, pinky swear :) - else if (ent.Comp.DamageType == "Eye" + + /*else if (ent.Comp.DamageType == "Eye" && TryComp(ent, out BlindableComponent? blindComp) && blindComp.EyeDamage > 0) - _blindableSystem.AdjustEyeDamage((args.Body, blindComp), -blindComp!.EyeDamage); + _blindableSystem.AdjustEyeDamage((args.Body, blindComp), -blindComp!.EyeDamage);*/ } private void OnSurgeryDamageChange(Entity ent, ref SurgeryStepDamageChangeEvent args) diff --git a/Content.Server/Speech/Components/OhioAccentComponent.cs b/Content.Server/Speech/Components/OhioAccentComponent.cs new file mode 100644 index 0000000000..101208bfef --- /dev/null +++ b/Content.Server/Speech/Components/OhioAccentComponent.cs @@ -0,0 +1,8 @@ +using Content.Server.Speech.EntitySystems; + +namespace Content.Server.Speech.Components; + +[RegisterComponent] +[Access(typeof(OhioAccentSystem))] +public sealed partial class OhioAccentComponent : Component +{ } \ No newline at end of file diff --git a/Content.Server/Speech/EntitySystems/OhioAccentSystem.cs b/Content.Server/Speech/EntitySystems/OhioAccentSystem.cs new file mode 100644 index 0000000000..3c424b6586 --- /dev/null +++ b/Content.Server/Speech/EntitySystems/OhioAccentSystem.cs @@ -0,0 +1,46 @@ +using System.Text.RegularExpressions; +using Content.Server.Speech.Components; +using Robust.Shared.Random; + +namespace Content.Server.Speech.EntitySystems; + +public sealed class OhioAccentSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ReplacementAccentSystem _replacement = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + private void OnAccent(EntityUid uid, OhioAccentComponent component, AccentGetEvent args) + { + var message = args.Message; + + message = _replacement.ApplyReplacements(message, "ohio"); + + // Prefix + if (_random.Prob(0.15f)) + { + var pick = _random.Next(1, 3); + + // Reverse sanitize capital + message = message[0].ToString().ToLower() + message.Remove(0, 1); + message = Loc.GetString($"accent-ohio-prefix-{pick}") + " " + message; + } + + // Sanitize capital again, in case we substituted a word that should be capitalized + message = message[0].ToString().ToUpper() + message.Remove(0, 1); + + // Suffixes + if (_random.Prob(0.3f)) + { + var pick = _random.Next(1, 8); + message += Loc.GetString($"accent-ohio-suffix-{pick}"); + } + + args.Message = message; + } +}; \ No newline at end of file diff --git a/Content.Shared/Body/Organ/OrganComponent.cs b/Content.Shared/Body/Organ/OrganComponent.cs index e964a2f47a..310a3f04a8 100644 --- a/Content.Shared/Body/Organ/OrganComponent.cs +++ b/Content.Shared/Body/Organ/OrganComponent.cs @@ -2,6 +2,7 @@ using Robust.Shared.Containers; using Robust.Shared.GameStates; using Content.Shared.Medical.Surgery.Tools; +using Robust.Shared.Prototypes; namespace Content.Shared.Body.Organ; @@ -27,15 +28,42 @@ public sealed partial class OrganComponent : Component, ISurgeryToolComponent /// without referencing the prototype or hardcoding. /// - [DataField] + [DataField, AlwaysPushInheritance] public string SlotId = ""; - [DataField] + [DataField, AlwaysPushInheritance] public string ToolName { get; set; } = "An organ"; + [DataField, AlwaysPushInheritance] + public float Speed { get; set; } = 1f; + /// /// If true, the organ will not heal an entity when transplanted into them. /// [DataField, AutoNetworkedField] public bool? Used { get; set; } + + /// + /// When attached, the organ will ensure these components on the entity, and delete them on removal. + /// + [DataField] + public ComponentRegistry? OnAdd; + + /// + /// When removed, the organ will ensure these components on the entity, and add them on removal. + /// + [DataField] + public ComponentRegistry? OnRemove; + + /// + /// Is this organ working or not? + /// + [DataField, AutoNetworkedField] + public bool Enabled = true; + + /// + /// Can this organ be enabled or disabled? Used mostly for prop, damaged or useless organs. + /// + [DataField] + public bool CanEnable = true; } diff --git a/Content.Shared/Body/Organ/OrganEvents.cs b/Content.Shared/Body/Organ/OrganEvents.cs new file mode 100644 index 0000000000..b94df359d4 --- /dev/null +++ b/Content.Shared/Body/Organ/OrganEvents.cs @@ -0,0 +1,12 @@ +namespace Content.Shared.Body.Organ; + +public readonly record struct OrganComponentsModifyEvent(EntityUid Body, bool Add); + +[ByRefEvent] +public readonly record struct OrganEnableChangedEvent(bool Enabled); + +[ByRefEvent] +public readonly record struct OrganEnabledEvent(Entity Organ); + +[ByRefEvent] +public readonly record struct OrganDisabledEvent(Entity Organ); diff --git a/Content.Shared/Body/Part/BodyPartComponent.cs b/Content.Shared/Body/Part/BodyPartComponent.cs index 2a93f6aed2..85fa74c1f7 100644 --- a/Content.Shared/Body/Part/BodyPartComponent.cs +++ b/Content.Shared/Body/Part/BodyPartComponent.cs @@ -7,6 +7,7 @@ using Content.Shared.Targeting; using Robust.Shared.Containers; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Body.Part; @@ -28,7 +29,7 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent [DataField, AutoNetworkedField] public BodyPartSlot? ParentSlot; - [DataField, AutoNetworkedField] + [DataField, AutoNetworkedField, AlwaysPushInheritance] public BodyPartType PartType = BodyPartType.Other; // TODO BODY Replace with a simulation of organs @@ -47,12 +48,15 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent public FixedPoint2 VitalDamage = 100; - [DataField, AutoNetworkedField] + [DataField, AutoNetworkedField, AlwaysPushInheritance] public BodyPartSymmetry Symmetry = BodyPartSymmetry.None; - [DataField] + [DataField, AlwaysPushInheritance] public string ToolName { get; set; } = "A body part"; + [DataField, AlwaysPushInheritance] + public float Speed { get; set; } = 1f; + [DataField, AutoNetworkedField] public bool? Used { get; set; } = null; @@ -74,6 +78,12 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent [DataField] public float MinIntegrity; + /// + /// Whether this body part can be severed or not + /// + [DataField, AutoNetworkedField] + public bool CanSever = true; + /// /// Whether this body part is enabled or not. /// @@ -86,6 +96,12 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent [DataField] public bool CanEnable = true; + /// + /// Whether this body part can attach children or not. + /// + [DataField] + public bool CanAttachChildren = true; + /// /// How long it takes to run another self heal tick on the body part. /// @@ -115,7 +131,6 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent [DataField, AutoNetworkedField] public ItemSlot ItemInsertionSlot = new(); - /// /// Current species. Dictates things like body part sprites. /// @@ -132,7 +147,7 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent /// /// The ID of the base layer for this body part. /// - [DataField, AutoNetworkedField] + [DataField, AutoNetworkedField, AlwaysPushInheritance] public string? BaseLayerId; /// @@ -152,6 +167,18 @@ public sealed partial class BodyPartComponent : Component, ISurgeryToolComponent { TargetIntegrity.Healthy, 10 }, }; + /// + /// When attached, the part will ensure these components on the entity, and delete them on removal. + /// + [DataField, AlwaysPushInheritance] + public ComponentRegistry? OnAdd; + + /// + /// When removed, the part will ensure these components on the entity, and add them on removal. + /// + [DataField, AlwaysPushInheritance] + public ComponentRegistry? OnRemove; + /// /// These are only for VV/Debug do not use these for gameplay/systems /// diff --git a/Content.Shared/Body/Part/BodyPartEvents.cs b/Content.Shared/Body/Part/BodyPartEvents.cs index 9872b09200..8246a9b004 100644 --- a/Content.Shared/Body/Part/BodyPartEvents.cs +++ b/Content.Shared/Body/Part/BodyPartEvents.cs @@ -25,3 +25,5 @@ namespace Content.Shared.Body.Part; [ByRefEvent] public readonly record struct BodyPartDisabledEvent(Entity Part); + +public readonly record struct BodyPartComponentsModifyEvent(EntityUid Body, bool Add); diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs b/Content.Shared/Body/Systems/SharedBodySystem.Body.cs index 78e24b12c3..a56504b5f0 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Body.cs @@ -372,7 +372,7 @@ public virtual HashSet GibPart( if (part.Body is { } bodyEnt) { - if (IsPartRoot(bodyEnt, partId, part: part)) + if (IsPartRoot(bodyEnt, partId, part: part) || !part.CanSever) return gibs; ChangeSlotState((partId, part), true); @@ -405,6 +405,26 @@ public virtual HashSet GibPart( return gibs; } + public virtual bool BurnPart(EntityUid partId, + BodyPartComponent? part = null) + { + if (!Resolve(partId, ref part, logMissing: false)) + return false; + + if (part.Body is { } bodyEnt) + { + if (IsPartRoot(bodyEnt, partId, part: part)) + return false; + + ChangeSlotState((partId, part), true); + RemovePartChildren((partId, part), bodyEnt); + QueueDel(partId); + return true; + } + + return false; + } + private void OnProfileLoadFinished(EntityUid uid, BodyComponent component, ProfileLoadFinishedEvent args) { if (!HasComp(uid) diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs index a1e89c1f8f..9c9fdc5727 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs @@ -3,6 +3,7 @@ using Content.Shared.Body.Events; using Content.Shared.Body.Organ; using Content.Shared.Body.Part; +using Content.Shared.BodyEffects; using Content.Shared.Damage; using Robust.Shared.Containers; @@ -10,6 +11,18 @@ namespace Content.Shared.Body.Systems; public partial class SharedBodySystem { + private void InitializeOrgans() + { + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnOrganEnableChanged); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (ent.Comp.OnAdd is not null || ent.Comp.OnRemove is not null) + EnsureComp(ent); + } + private void AddOrgan( Entity organEnt, EntityUid bodyUid, @@ -24,6 +37,8 @@ private void AddOrgan( organEnt.Comp.OriginalBody = organEnt.Comp.Body; var addedInBodyEv = new OrganAddedToBodyEvent(bodyUid, parentPartUid); RaiseLocalEvent(organEnt, ref addedInBodyEv); + var organEnabledEv = new OrganEnableChangedEvent(true); + RaiseLocalEvent(organEnt, ref organEnabledEv); } Dirty(organEnt, organEnt.Comp); @@ -36,9 +51,11 @@ private void RemoveOrgan(Entity organEnt, EntityUid parentPartUi if (organEnt.Comp.Body is { Valid: true } bodyUid) { + organEnt.Comp.OriginalBody = organEnt.Comp.Body; + var organDisabledEv = new OrganEnableChangedEvent(false); + RaiseLocalEvent(organEnt, ref organDisabledEv); var removedInBodyEv = new OrganRemovedFromBodyEvent(bodyUid, parentPartUid); RaiseLocalEvent(organEnt, ref removedInBodyEv); - organEnt.Comp.OriginalBody = bodyUid; } if (TryComp(parentPartUid, out DamageableComponent? damageable) @@ -230,4 +247,48 @@ public bool TrySetOrganUsed(EntityUid organId, bool used, OrganComponent? organ Dirty(organId, organ); return true; } + + private void OnOrganEnableChanged(Entity organEnt, ref OrganEnableChangedEvent args) + { + if (!organEnt.Comp.CanEnable && args.Enabled) + return; + + organEnt.Comp.Enabled = args.Enabled; + + if (args.Enabled) + EnableOrgan(organEnt); + else + DisableOrgan(organEnt); + + if (organEnt.Comp.Body is { Valid: true } bodyEnt) + RaiseLocalEvent(organEnt, new OrganComponentsModifyEvent(bodyEnt, args.Enabled)); + + Dirty(organEnt, organEnt.Comp); + } + + private void EnableOrgan(Entity organEnt) + { + if (!TryComp(organEnt.Comp.Body, out BodyComponent? body)) + return; + + // I hate having to hardcode these checks so much. + if (HasComp(organEnt)) + { + var ev = new OrganEnabledEvent(organEnt); + RaiseLocalEvent(organEnt, ref ev); + } + } + + private void DisableOrgan(Entity organEnt) + { + if (!TryComp(organEnt.Comp.Body, out BodyComponent? body)) + return; + + // I hate having to hardcode these checks so much. + if (HasComp(organEnt)) + { + var ev = new OrganDisabledEvent(organEnt); + RaiseLocalEvent(organEnt, ref ev); + } + } } diff --git a/Content.Shared/Body/Systems/SharedBodySystem.PartAppearance.cs b/Content.Shared/Body/Systems/SharedBodySystem.PartAppearance.cs index 1a8f91acad..347ec487ab 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.PartAppearance.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.PartAppearance.cs @@ -20,8 +20,8 @@ private void InitializePartAppearances() SubscribeLocalEvent(OnPartAppearanceStartup); SubscribeLocalEvent(HandleState); - SubscribeLocalEvent(OnPartAttachedToBody); - SubscribeLocalEvent(OnPartDroppedFromBody); + SubscribeLocalEvent(OnPartAttachedToBody); + SubscribeLocalEvent(OnPartDroppedFromBody); } private void OnPartAppearanceStartup(EntityUid uid, BodyPartAppearanceComponent component, ComponentStartup args) @@ -130,7 +130,7 @@ public void ModifyMarkings(EntityUid uid, private void HandleState(EntityUid uid, BodyPartAppearanceComponent component, ref AfterAutoHandleStateEvent args) => ApplyPartMarkings(uid, component); - private void OnPartAttachedToBody(EntityUid uid, BodyComponent component, ref BodyPartAttachedEvent args) + private void OnPartAttachedToBody(EntityUid uid, BodyComponent component, ref BodyPartAddedEvent args) { if (!TryComp(args.Part, out BodyPartAppearanceComponent? partAppearance) || !TryComp(uid, out HumanoidAppearanceComponent? bodyAppearance)) @@ -142,7 +142,7 @@ private void OnPartAttachedToBody(EntityUid uid, BodyComponent component, ref Bo UpdateAppearance(uid, partAppearance); } - private void OnPartDroppedFromBody(EntityUid uid, BodyComponent component, ref BodyPartDroppedEvent args) + private void OnPartDroppedFromBody(EntityUid uid, BodyComponent component, ref BodyPartRemovedEvent args) { if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.Part) diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs index 2c6d128f63..dc08854227 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs @@ -2,6 +2,7 @@ using Content.Shared.Body.Events; using Content.Shared.Body.Organ; using Content.Shared.Body.Part; +using Content.Shared.BodyEffects; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Content.Shared.Humanoid; @@ -43,6 +44,14 @@ private void OnMapInit(Entity ent, ref MapInitEvent args) _slots.AddItemSlot(ent, ent.Comp.ContainerName, ent.Comp.ItemInsertionSlot); Dirty(ent, ent.Comp); } + + if (ent.Comp.OnAdd is not null || ent.Comp.OnRemove is not null) + EnsureComp(ent); + + foreach (var connection in ent.Comp.Children.Keys) + { + Containers.EnsureContainer(ent, GetPartSlotContainerId(connection)); + } } private void OnBodyPartRemove(Entity ent, ref ComponentRemove args) @@ -143,6 +152,9 @@ protected virtual void AddPart( Dirty(partEnt, partEnt.Comp); partEnt.Comp.Body = bodyEnt; + if (partEnt.Comp.Enabled && partEnt.Comp.Body is { Valid: true } body) + RaiseLocalEvent(partEnt, new BodyPartComponentsModifyEvent(body, true)); + var ev = new BodyPartAddedEvent(slotId, partEnt); RaiseLocalEvent(bodyEnt, ref ev); AddLeg(partEnt, bodyEnt); @@ -158,6 +170,10 @@ protected virtual void RemovePart( partEnt.Comp.ParentSlot = null; partEnt.Comp.OriginalBody = partEnt.Comp.Body; + + if (partEnt.Comp.Body is { Valid: true } body) + RaiseLocalEvent(partEnt, new BodyPartComponentsModifyEvent(body, false)); + var ev = new BodyPartRemovedEvent(slotId, partEnt); RaiseLocalEvent(bodyEnt, ref ev); RemoveLeg(partEnt, bodyEnt); @@ -268,12 +284,21 @@ private void OnPartEnableChanged(Entity partEnt, ref BodyPart return; partEnt.Comp.Enabled = args.Enabled; - Dirty(partEnt, partEnt.Comp); if (args.Enabled) + { EnablePart(partEnt); + if (partEnt.Comp.Body is { Valid: true } bodyEnt) + RaiseLocalEvent(partEnt, new BodyPartComponentsModifyEvent(bodyEnt, true)); + } else + { DisablePart(partEnt); + if (partEnt.Comp.Body is { Valid: true } bodyEnt) + RaiseLocalEvent(partEnt, new BodyPartComponentsModifyEvent(bodyEnt, false)); + } + + Dirty(partEnt, partEnt.Comp); } private void EnablePart(Entity partEnt) { @@ -309,12 +334,13 @@ private void EnablePart(Entity partEnt) public void ChangeSlotState(Entity partEnt, bool disable) { if (partEnt.Comp.Body is not null + && TryComp(partEnt.Comp.Body, out var inventory) && GetBodyPartCount(partEnt.Comp.Body.Value, partEnt.Comp.PartType) == 1 && TryGetPartSlotContainerName(partEnt.Comp.PartType, out var containerNames)) { foreach (var containerName in containerNames) { - _inventorySystem.SetSlotStatus(partEnt.Comp.Body.Value, containerName, disable); + _inventorySystem.SetSlotStatus(partEnt.Comp.Body.Value, containerName, disable, inventory); var ev = new RefreshInventorySlotsEvent(containerName); RaiseLocalEvent(partEnt.Comp.Body.Value, ev); } @@ -1023,8 +1049,8 @@ private bool TryGetPartSlotContainerName(BodyPartType partType, out HashSet new() { "gloves" }, - BodyPartType.Leg => new() { "shoes" }, + BodyPartType.Hand => new() { "gloves" }, + BodyPartType.Foot => new() { "shoes" }, BodyPartType.Head => new() { "eyes", "ears", "head", "mask" }, _ => new() }; @@ -1045,5 +1071,13 @@ public int GetBodyPartCount(EntityUid bodyId, BodyPartType partType, BodyCompone return count; } + public string GetSlotFromBodyPart(BodyPartComponent part) + { + if (part.Symmetry != BodyPartSymmetry.None) + return $"{part.Symmetry.ToString().ToLower()} {part.PartType.ToString().ToLower()}"; + else + return part.PartType.ToString().ToLower(); + } + #endregion } diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Targeting.cs b/Content.Shared/Body/Systems/SharedBodySystem.Targeting.cs index 45495896bc..09c3c5fa52 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.Targeting.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.Targeting.cs @@ -62,7 +62,7 @@ public IntegrityJob(SharedBodySystem self, Entity ent, double private void InitializeIntegrityQueue() { _queryTargeting = GetEntityQuery(); - SubscribeLocalEvent(OnBeforeDamageChanged); + SubscribeLocalEvent(OnTryChangePartDamage); SubscribeLocalEvent(OnBodyDamageModify); SubscribeLocalEvent(OnPartDamageModify); SubscribeLocalEvent(OnDamageChanged); @@ -104,7 +104,7 @@ public override void Update(float frameTime) } } - private void OnBeforeDamageChanged(Entity ent, ref BeforeDamageChangedEvent args) + private void OnTryChangePartDamage(Entity ent, ref TryChangePartDamageEvent args) { // If our target has a TargetingComponent, that means they will take limb damage // And if their attacker also has one, then we use that part. @@ -221,6 +221,7 @@ private void OnDamageChanged(Entity partEnt, ref DamageChange var delta = args.DamageDelta; if (args.CanSever + && partEnt.Comp.CanSever && partIdSlot is not null && delta != null && !HasComp(partEnt) diff --git a/Content.Shared/Body/Systems/SharedBodySystem.cs b/Content.Shared/Body/Systems/SharedBodySystem.cs index 013e302633..966d2fa95b 100644 --- a/Content.Shared/Body/Systems/SharedBodySystem.cs +++ b/Content.Shared/Body/Systems/SharedBodySystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Damage; using Content.Shared.Movement.Systems; +using Content.Shared.Body.Part; using Content.Shared.Standing; using Robust.Shared.Containers; using Robust.Shared.Prototypes; @@ -42,6 +43,7 @@ public override void Initialize() InitializeBody(); InitializeParts(); + InitializeOrgans(); // To try and mitigate the server load due to integrity checks, we set up a Job Queue. InitializeIntegrityQueue(); InitializePartAppearances(); diff --git a/Content.Shared/BodyEffects/BodyPartEffectComponent.cs b/Content.Shared/BodyEffects/BodyPartEffectComponent.cs new file mode 100644 index 0000000000..72269be1f2 --- /dev/null +++ b/Content.Shared/BodyEffects/BodyPartEffectComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.BodyEffects; + +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentPause] +public sealed partial class BodyPartEffectComponent : Component +{ + /// + /// The components that are active on the part and will be refreshed every 5s + /// + [DataField] + public ComponentRegistry Active = new(); + + /// + /// How long to wait between each refresh. + /// Effects can only last at most this long once the organ is removed. + /// + [DataField] + public TimeSpan Delay = TimeSpan.FromSeconds(5); + + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField] + public TimeSpan NextUpdate = TimeSpan.Zero; +} diff --git a/Content.Shared/BodyEffects/BodyPartEffectSystem.cs b/Content.Shared/BodyEffects/BodyPartEffectSystem.cs new file mode 100644 index 0000000000..c814f6dd3b --- /dev/null +++ b/Content.Shared/BodyEffects/BodyPartEffectSystem.cs @@ -0,0 +1,95 @@ +using Content.Shared.Body.Part; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Timing; +using System.Linq; + +namespace Content.Shared.BodyEffects; +public partial class BodyPartEffectSystem : EntitySystem +{ + [Dependency] private readonly IComponentFactory _compFactory = default!; + [Dependency] private readonly ISerializationManager _serManager = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPartComponentsModify); + } + + // While I would love to kill this function, problem is that if we happen to have two parts that add the same + // effect, removing one will remove both of them, since we cant tell what the source of a Component is. + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + var now = _gameTiming.CurTime; + while (query.MoveNext(out var uid, out var comp, out var part)) + { + if (now < comp.NextUpdate || !comp.Active.Any() || part.Body is not { } body) + continue; + + comp.NextUpdate = now + comp.Delay; + AddComponents(body, uid, comp.Active); + } + } + + private void OnPartComponentsModify(Entity partEnt, + ref BodyPartComponentsModifyEvent ev) + { + if (partEnt.Comp.OnAdd != null) + { + if (ev.Add) + AddComponents(ev.Body, partEnt, partEnt.Comp.OnAdd); + else + RemoveComponents(ev.Body, partEnt, partEnt.Comp.OnAdd); + } + + if (partEnt.Comp.OnRemove != null) + { + if (ev.Add) + AddComponents(ev.Body, partEnt, partEnt.Comp.OnRemove); + else + RemoveComponents(ev.Body, partEnt, partEnt.Comp.OnRemove); + } + + Dirty(partEnt, partEnt.Comp); + } + + private void AddComponents(EntityUid body, + EntityUid part, + ComponentRegistry reg, + BodyPartEffectComponent? effectComp = null) + { + if (!Resolve(part, ref effectComp, logMissing: false)) + return; + + foreach (var (key, comp) in reg) + { + var compType = comp.Component.GetType(); + if (HasComp(body, compType)) + continue; + + var newComp = (Component) _serManager.CreateCopy(comp.Component, notNullableOverride: true); + EntityManager.AddComponent(body, newComp, true); + + effectComp.Active[key] = comp; + } + } + + private void RemoveComponents(EntityUid body, + EntityUid part, + ComponentRegistry reg, + BodyPartEffectComponent? effectComp = null) + { + if (!Resolve(part, ref effectComp, logMissing: false)) + return; + + foreach (var (key, comp) in reg) + { + RemComp(body, comp.Component.GetType()); + effectComp.Active.Remove(key); + } + } +} diff --git a/Content.Shared/BodyEffects/OrganEffectComponent.cs b/Content.Shared/BodyEffects/OrganEffectComponent.cs new file mode 100644 index 0000000000..ee6990b2c5 --- /dev/null +++ b/Content.Shared/BodyEffects/OrganEffectComponent.cs @@ -0,0 +1,27 @@ +// We keep this clone of the other component since I don't know yet if I'll need organ specific functions in the future. +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.BodyEffects; + +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentPause] +public sealed partial class OrganEffectComponent : Component +{ + /// + /// The components that are active on the part and will be refreshed every 5s + /// + [DataField] + public ComponentRegistry Active = new(); + + /// + /// How long to wait between each refresh. + /// Effects can only last at most this long once the organ is removed. + /// + [DataField] + public TimeSpan Delay = TimeSpan.FromSeconds(5); + + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField] + public TimeSpan NextUpdate = TimeSpan.Zero; +} diff --git a/Content.Shared/BodyEffects/OrganEffectSystem.cs b/Content.Shared/BodyEffects/OrganEffectSystem.cs new file mode 100644 index 0000000000..679d9ddef0 --- /dev/null +++ b/Content.Shared/BodyEffects/OrganEffectSystem.cs @@ -0,0 +1,109 @@ +// We keep this clone of the other system since I don't know yet if I'll need organ specific functions in the future. +// will delete or refactor as time goes on. +using Content.Shared.Body.Organ; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Timing; +using System.Linq; +using Robust.Shared.Network; + + +namespace Content.Shared.BodyEffects; +public partial class OrganEffectSystem : EntitySystem +{ + [Dependency] private readonly IComponentFactory _compFactory = default!; + [Dependency] private readonly ISerializationManager _serManager = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly INetManager _net = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnOrganComponentsModify); + } + + // While I would love to kill this function, problem is that if we happen to have two parts that add the same + // effect, removing one will remove both of them, since we cant tell what the source of a Component is. + public override void Update(float frameTime) + { + base.Update(frameTime); + + if (!_net.IsServer) // TODO: Kill this once I figure out whats breaking the Diagnostic Cybernetics. + return; + + var query = EntityQueryEnumerator(); + var now = _gameTiming.CurTime; + while (query.MoveNext(out var uid, out var comp, out var part)) + { + if (now < comp.NextUpdate || !comp.Active.Any() || part.Body is not { } body) + continue; + + comp.NextUpdate = now + comp.Delay; + AddComponents(body, uid, comp.Active); + } + } + + private void OnOrganComponentsModify(Entity organEnt, + ref OrganComponentsModifyEvent ev) + { + if (!_net.IsServer) // TODO: Kill this once I figure out whats breaking the Diagnostic Cybernetics. + return; + + if (organEnt.Comp.OnAdd != null) + { + if (ev.Add) + AddComponents(ev.Body, organEnt, organEnt.Comp.OnAdd); + else + RemoveComponents(ev.Body, organEnt, organEnt.Comp.OnAdd); + } + + if (organEnt.Comp.OnRemove != null) + { + if (ev.Add) + AddComponents(ev.Body, organEnt, organEnt.Comp.OnRemove); + else + RemoveComponents(ev.Body, organEnt, organEnt.Comp.OnRemove); + } + } + + private void AddComponents(EntityUid body, + EntityUid part, + ComponentRegistry reg, + OrganEffectComponent? effectComp = null) + { + if (!Resolve(part, ref effectComp, logMissing: false)) + return; + + foreach (var (key, comp) in reg) + { + var compType = comp.Component.GetType(); + if (HasComp(body, compType)) + continue; + + var newComp = (Component) _serManager.CreateCopy(comp.Component, notNullableOverride: true); + newComp.Owner = body; + EntityManager.AddComponent(body, newComp, true); + effectComp.Active[key] = comp; + if (newComp.NetSyncEnabled) + { + Dirty(body, newComp); + Dirty(part, effectComp); + } + } + } + + private void RemoveComponents(EntityUid body, + EntityUid part, + ComponentRegistry reg, + OrganEffectComponent? effectComp = null) + { + if (!Resolve(part, ref effectComp, logMissing: false)) + return; + + foreach (var (key, comp) in reg) + { + RemComp(body, comp.Component.GetType()); + effectComp.Active.Remove(key); + } + } +} diff --git a/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartComponent.cs b/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartComponent.cs new file mode 100644 index 0000000000..289c4c4749 --- /dev/null +++ b/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartComponent.cs @@ -0,0 +1,18 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.BodyEffects.Subsystems; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class GenerateChildPartComponent : Component +{ + + [DataField(required: true)] + public EntProtoId Id = ""; + + [DataField, AutoNetworkedField] + public EntityUid? ChildPart; + + [DataField] + public bool Destroyed = false; +} diff --git a/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartSystem.cs b/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartSystem.cs new file mode 100644 index 0000000000..74455802f9 --- /dev/null +++ b/Content.Shared/BodyEffects/Subsystems/GenerateChildPart/GenerateChildPartSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.Body.Part; +using Content.Shared.Body.Systems; +using Content.Shared.Body.Events; +using Robust.Shared.Map; +using Robust.Shared.Timing; +using Robust.Shared.Network; +using System.Numerics; + +namespace Content.Shared.BodyEffects.Subsystems; + +public sealed class GenerateChildPartSystem : EntitySystem +{ + [Dependency] private readonly SharedBodySystem _bodySystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPartComponentsModify); + } + + private void OnPartComponentsModify(EntityUid uid, GenerateChildPartComponent component, ref BodyPartComponentsModifyEvent args) + { + if (args.Add) + CreatePart(uid, component); + //else + //DeletePart(uid, component); + } + + private void CreatePart(EntityUid uid, GenerateChildPartComponent component) + { + if (!TryComp(uid, out BodyPartComponent? partComp) + || partComp.Body is null) + return; + + if (_net.IsServer) + { + var childPart = Spawn(component.Id, new EntityCoordinates(partComp.Body.Value, Vector2.Zero)); + + if (!TryComp(childPart, out BodyPartComponent? childPartComp)) + return; + + var slotName = _bodySystem.GetSlotFromBodyPart(childPartComp); + _bodySystem.TryCreatePartSlot(uid, slotName, childPartComp.PartType, out var _); + _bodySystem.AttachPart(uid, slotName, childPart, partComp, childPartComp); + component.ChildPart = childPart; + Dirty(childPart, childPartComp); + } + + _bodySystem.ChangeSlotState((uid, partComp), false); + } + + private void DeletePart(EntityUid uid, GenerateChildPartComponent component) + { + if (!TryComp(uid, out BodyPartComponent? partComp)) + return; + + _bodySystem.ChangeSlotState((uid, partComp), true); + var ev = new BodyPartDroppedEvent((uid, partComp)); + RaiseLocalEvent(uid, ref ev); + QueueDel(uid); + } +} + diff --git a/Content.Shared/Cybernetics/CyberneticsComponent.cs b/Content.Shared/Cybernetics/CyberneticsComponent.cs new file mode 100644 index 0000000000..36c9754cce --- /dev/null +++ b/Content.Shared/Cybernetics/CyberneticsComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Cybernetics; + +/// +/// Component for cybernetic implants that can be installed in entities +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class CyberneticsComponent : Component { + + /// + /// Is the cybernetic implant disabled by EMPs, etc? + /// + [DataField, AutoNetworkedField] + public bool Disabled = false; +} diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index ffa15993c1..c951b364f1 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -146,10 +146,16 @@ public void DamageChanged(EntityUid uid, DamageableComponent component, DamageSp return damage; } - var before = new BeforeDamageChangedEvent(damage, origin, targetPart, canSever ?? true, canEvade ?? false, partMultiplier ?? 1.00f); + var before = new BeforeDamageChangedEvent(damage, origin, targetPart); RaiseLocalEvent(uid.Value, ref before); - if (before.Cancelled || before.Evaded) + if (before.Cancelled) + return null; + + var partDamage = new TryChangePartDamageEvent(damage, origin, targetPart, canSever ?? true, canEvade ?? false, partMultiplier ?? 1.00f); + RaiseLocalEvent(uid.Value, ref partDamage); + + if (partDamage.Evaded || partDamage.Cancelled) return null; // Apply resistances @@ -229,6 +235,17 @@ public void SetAllDamage(EntityUid uid, DamageableComponent component, FixedPoin // Setting damage does not count as 'dealing' damage, even if it is set to a larger value, so we pass an // empty damage delta. DamageChanged(uid, component, new DamageSpecifier()); + + // Shitmed Start + if (HasComp(uid)) + foreach (var (part, _) in _body.GetBodyChildren(uid)) + { + if (!TryComp(part, out DamageableComponent? damageComp)) + continue; + + SetAllDamage(part, damageComp, newValue); + } + // Shitmed End } public void SetDamageModifierSetId(EntityUid uid, string damageModifierSetId, DamageableComponent? comp = null) @@ -272,11 +289,6 @@ private void OnRejuvenate(EntityUid uid, DamageableComponent component, Rejuvena TryComp(uid, out var thresholds); _mobThreshold.SetAllowRevives(uid, true, thresholds); // do this so that the state changes when we set the damage SetAllDamage(uid, component, 0); - // Shitmed Start - if (HasComp(uid)) - foreach (var part in _body.GetBodyChildren(uid)) - RaiseLocalEvent(part.Id, new RejuvenateEvent()); - // Shitmed End _mobThreshold.SetAllowRevives(uid, false, thresholds); } @@ -307,6 +319,16 @@ private void DamageableHandleState(EntityUid uid, DamageableComponent component, /// [ByRefEvent] public record struct BeforeDamageChangedEvent( + DamageSpecifier Damage, + EntityUid? Origin = null, + TargetBodyPart? TargetPart = null, + bool Cancelled = false); + + /// + /// Raised on parts before damage is done so we can cancel the damage if they evade. + /// + [ByRefEvent] + public record struct TryChangePartDamageEvent( DamageSpecifier Damage, EntityUid? Origin = null, TargetBodyPart? TargetPart = null, diff --git a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs index d904c211ee..ab46684a6f 100644 --- a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs +++ b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs @@ -2,13 +2,15 @@ using Content.Shared.Rejuvenate; using Content.Shared.Slippery; using Content.Shared.StatusEffect; +using Content.Shared.Body.Systems; +using Content.Shared.Targeting; namespace Content.Shared.Damage.Systems; public abstract class SharedGodmodeSystem : EntitySystem { [Dependency] private readonly DamageableSystem _damageable = default!; - + [Dependency] private readonly SharedBodySystem _bodySystem = default!; public override void Initialize() { base.Initialize(); @@ -49,7 +51,12 @@ public virtual void EnableGodmode(EntityUid uid, GodmodeComponent? godmode = nul } // Rejuv to cover other stuff + RaiseLocalEvent(uid, new RejuvenateEvent()); + foreach (var (id, _) in _bodySystem.GetBodyChildren(uid)) + { + EnableGodmode(id); + } } public virtual void DisableGodmode(EntityUid uid, GodmodeComponent? godmode = null) @@ -63,6 +70,10 @@ public virtual void DisableGodmode(EntityUid uid, GodmodeComponent? godmode = nu } RemComp(uid); + foreach (var (id, _) in _bodySystem.GetBodyChildren(uid)) + { + DisableGodmode(id); + } } /// diff --git a/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs b/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs index 24eed3adcf..57d087125d 100644 --- a/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs +++ b/Content.Shared/Eye/Blinding/Systems/BlindableSystem.cs @@ -87,6 +87,17 @@ public void SetMinDamage(Entity blindable, int amount) blindable.Comp.MinDamage = amount; UpdateEyeDamage(blindable, false); } + + public void TransferBlindness(BlindableComponent newSight, BlindableComponent oldSight, EntityUid newEntity) + { + newSight.IsBlind = oldSight.IsBlind; + newSight.EyeDamage = oldSight.EyeDamage; + newSight.LightSetup = oldSight.LightSetup; + newSight.GraceFrame = oldSight.GraceFrame; + newSight.MinDamage = oldSight.MinDamage; + newSight.MaxDamage = oldSight.MaxDamage; + UpdateEyeDamage((newEntity, newSight), true); + } } /// diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index e5726e833c..d4d75b179b 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -66,10 +66,13 @@ public static class ContentKeyFunctions public static readonly BoundKeyFunction TargetHead = "TargetHead"; public static readonly BoundKeyFunction TargetTorso = "TargetTorso"; public static readonly BoundKeyFunction TargetLeftArm = "TargetLeftArm"; + public static readonly BoundKeyFunction TargetLeftHand = "TargetLeftHand"; public static readonly BoundKeyFunction TargetRightArm = "TargetRightArm"; + public static readonly BoundKeyFunction TargetRightHand = "TargetRightHand"; public static readonly BoundKeyFunction TargetLeftLeg = "TargetLeftLeg"; + public static readonly BoundKeyFunction TargetLeftFoot = "TargetLeftFoot"; public static readonly BoundKeyFunction TargetRightLeg = "TargetRightLeg"; - + public static readonly BoundKeyFunction TargetRightFoot = "TargetRightFoot"; public static readonly BoundKeyFunction ArcadeUp = "ArcadeUp"; public static readonly BoundKeyFunction ArcadeDown = "ArcadeDown"; public static readonly BoundKeyFunction ArcadeLeft = "ArcadeLeft"; diff --git a/Content.Shared/Medical/Surgery/Conditions/SurgeryComponentConditionComponent.cs b/Content.Shared/Medical/Surgery/Conditions/SurgeryComponentConditionComponent.cs new file mode 100644 index 0000000000..3f0fb6305c --- /dev/null +++ b/Content.Shared/Medical/Surgery/Conditions/SurgeryComponentConditionComponent.cs @@ -0,0 +1,16 @@ +using Content.Shared.Body.Part; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Medical.Surgery.Conditions; + +[RegisterComponent, NetworkedComponent] +public sealed partial class SurgeryComponentConditionComponent : Component +{ + [DataField] + public ComponentRegistry Component; + + [DataField] + public bool Inverse; + +} \ No newline at end of file diff --git a/Content.Shared/Medical/Surgery/SharedSurgerySystem.Steps.cs b/Content.Shared/Medical/Surgery/SharedSurgerySystem.Steps.cs index 2bde1f4c86..476a23a21b 100644 --- a/Content.Shared/Medical/Surgery/SharedSurgerySystem.Steps.cs +++ b/Content.Shared/Medical/Surgery/SharedSurgerySystem.Steps.cs @@ -70,7 +70,7 @@ private void OnToolStep(Entity ent, ref SurgeryStepEvent a { foreach (var reg in ent.Comp.Tool.Values) { - if (!AnyHaveComp(args.Tools, reg.Component, out var tool)) + if (!AnyHaveComp(args.Tools, reg.Component, out var tool, out _)) return; if (_net.IsServer && @@ -93,6 +93,17 @@ private void OnToolStep(Entity ent, ref SurgeryStepEvent a } } + if (ent.Comp.BodyAdd != null) + { + foreach (var reg in ent.Comp.BodyAdd.Values) + { + var compType = reg.Component.GetType(); + if (HasComp(args.Body, compType)) + continue; + AddComp(args.Body, _compFactory.GetComponent(compType)); + } + } + if (ent.Comp.Remove != null) { foreach (var reg in ent.Comp.Remove.Values) @@ -148,6 +159,18 @@ private void OnToolCheck(Entity ent, ref SurgeryStepComple } } + if (ent.Comp.BodyAdd != null) + { + foreach (var reg in ent.Comp.BodyAdd.Values) + { + if (!HasComp(args.Body, reg.Component.GetType())) + { + args.Cancelled = true; + return; + } + } + } + if (ent.Comp.BodyRemove != null) { foreach (var reg in ent.Comp.BodyRemove.Values) @@ -193,21 +216,21 @@ private void OnToolCanPerform(Entity ent, ref SurgeryCanPe if (ent.Comp.Tool != null) { - args.ValidTools ??= new HashSet(); + args.ValidTools ??= new Dictionary(); foreach (var reg in ent.Comp.Tool.Values) { - if (!AnyHaveComp(args.Tools, reg.Component, out var withComp)) + if (!AnyHaveComp(args.Tools, reg.Component, out var tool, out var speed)) { args.Invalid = StepInvalidReason.MissingTool; - if (reg.Component is ISurgeryToolComponent tool) - args.Popup = $"You need {tool.ToolName} to perform this step!"; + if (reg.Component is ISurgeryToolComponent required) + args.Popup = $"You need {required.ToolName} to perform this step!"; return; } - args.ValidTools.Add(withComp); + args.ValidTools[tool] = speed; } } } @@ -250,11 +273,10 @@ private void OnTendWoundsStep(Entity ent, ref bonus *= 0.2; var adjustedDamage = new DamageSpecifier(ent.Comp.Damage); - var bonusPerType = bonus / group.Length; foreach (var type in group) { - adjustedDamage.DamageDict[type] -= bonusPerType; + adjustedDamage.DamageDict[type] -= bonus; } var ev = new SurgeryStepDamageEvent(args.User, args.Body, args.Part, args.Surgery, adjustedDamage, 0.5f); @@ -597,28 +619,41 @@ private void OnSurgeryTargetStepChosen(Entity ent, ref S if (!CanPerformStep(user, body, part, step, true, out _, out _, out var validTools)) return; - if (_net.IsServer && validTools?.Count > 0) + // make the doafter longer for ghetto tools, or shorter for advanced ones + var speed = 1f; + var usedEv = new SurgeryToolUsedEvent(user, body); + // We need to check for nullability because of surgeries that dont require a tool, like Cavity Implants + if (validTools?.Count > 0) { - foreach (var tool in validTools) + foreach (var (tool, toolSpeed) in validTools) { - if (TryComp(tool, out SurgeryToolComponent? toolComp) && - toolComp.EndSound != null) + RaiseLocalEvent(tool, ref usedEv); + if (usedEv.Cancelled) + return; + + speed *= toolSpeed; + } + + if (_net.IsServer) + { + foreach (var tool in validTools.Keys) { - _audio.PlayEntity(toolComp.StartSound, user, tool); + if (TryComp(tool, out SurgeryToolComponent? toolComp) && + toolComp.EndSound != null) + { + _audio.PlayEntity(toolComp.StartSound, user, tool); + } } } } + if (TryComp(body, out TransformComponent? xform)) _rotateToFace.TryFaceCoordinates(user, _transform.GetMapCoordinates(body, xform).Position); var ev = new SurgeryDoAfterEvent(args.Surgery, args.Step); - // TODO: Make this serialized on a per surgery step basis, and also add penalties based on ghetto tools. - var duration = 2f; - if (TryComp(user, out SurgerySpeedModifierComponent? surgerySpeedMod) - && surgerySpeedMod is not null) - duration = duration / surgerySpeedMod.SpeedModifier; - + // TODO: Serialize each surgery with a custom duration. + var duration = GetSurgeryDuration(step, user, body, speed); var doAfter = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(duration), ev, body, part) { BreakOnUserMove = true, @@ -646,6 +681,19 @@ private void OnSurgeryTargetStepChosen(Entity ent, ref S } } + private float GetSurgeryDuration(EntityUid surgeryStep, EntityUid user, EntityUid target, float toolSpeed) + { + if (!TryComp(surgeryStep, out SurgeryStepComponent? stepComp)) + return 2f; // Shouldnt really happen but just a failsafe. + + var speed = toolSpeed; + + if (TryComp(user, out SurgerySpeedModifierComponent? surgerySpeedMod)) + speed *= surgerySpeedMod.SpeedModifier; + + return stepComp.Duration / speed; + } + private (Entity Surgery, int Step)? GetNextStep(EntityUid body, EntityUid part, Entity surgery, List requirements) { if (!Resolve(surgery, ref surgery.Comp)) @@ -705,7 +753,7 @@ public bool PreviousStepsComplete(EntityUid body, EntityUid part, Entity? validTools) + out Dictionary? validTools) { var type = BodyPartType.Other; if (TryComp(part, out BodyPartComponent? partComp)) @@ -759,18 +807,20 @@ public bool IsStepComplete(EntityUid body, EntityUid part, EntProtoId step, Enti return !ev.Cancelled; } - private bool AnyHaveComp(List tools, IComponent component, out EntityUid withComp) + private bool AnyHaveComp(List tools, IComponent component, out EntityUid withComp, out float speed) { foreach (var tool in tools) { - if (HasComp(tool, component.GetType())) + if (EntityManager.TryGetComponent(tool, component.GetType(), out var found) && found is ISurgeryToolComponent toolComp) { withComp = tool; + speed = toolComp.Speed; return true; } } - withComp = default; + withComp = EntityUid.Invalid; + speed = 1f; return false; } } diff --git a/Content.Shared/Medical/Surgery/SharedSurgerySystem.cs b/Content.Shared/Medical/Surgery/SharedSurgerySystem.cs index 7fa0f94525..db8f65c33a 100644 --- a/Content.Shared/Medical/Surgery/SharedSurgerySystem.cs +++ b/Content.Shared/Medical/Surgery/SharedSurgerySystem.cs @@ -58,6 +58,7 @@ public override void Initialize() SubscribeLocalEvent(OnTargetDoAfter); SubscribeLocalEvent(OnCloseIncisionValid); //SubscribeLocalEvent(OnLarvaValid); + SubscribeLocalEvent(OnComponentConditionValid); SubscribeLocalEvent(OnPartConditionValid); SubscribeLocalEvent(OnOrganConditionValid); SubscribeLocalEvent(OnWoundedValid); @@ -127,6 +128,21 @@ private void OnWoundedValid(Entity ent, ref Su if (infected != null && infected.SpawnedLarva != null) args.Cancelled = true; }*/ + + private void OnComponentConditionValid(Entity ent, ref SurgeryValidEvent args) + { + var present = true; + foreach (var reg in ent.Comp.Component.Values) + { + var compType = reg.Component.GetType(); + if (!HasComp(args.Part, compType)) + present = false; + } + + if (ent.Comp.Inverse ? present : !present) + args.Cancelled = true; + } + private void OnPartConditionValid(Entity ent, ref SurgeryValidEvent args) { if (!TryComp(args.Part, out var part)) @@ -177,7 +193,7 @@ private void OnPartRemovedConditionValid(Entity? ValidTools = null -) : IInventoryRelayEvent; \ No newline at end of file + Dictionary? ValidTools = null +) : IInventoryRelayEvent; diff --git a/Content.Shared/Medical/Surgery/Steps/SurgeryStepComponent.cs b/Content.Shared/Medical/Surgery/Steps/SurgeryStepComponent.cs index 1c6e801a42..529fc5a566 100644 --- a/Content.Shared/Medical/Surgery/Steps/SurgeryStepComponent.cs +++ b/Content.Shared/Medical/Surgery/Steps/SurgeryStepComponent.cs @@ -14,9 +14,15 @@ public sealed partial class SurgeryStepComponent : Component [DataField] public ComponentRegistry? Add; + [DataField] + public ComponentRegistry? BodyAdd; + [DataField] public ComponentRegistry? Remove; [DataField] public ComponentRegistry? BodyRemove; + + [DataField] + public float Duration = 2f; } diff --git a/Content.Shared/Medical/Surgery/Tools/BoneGelComponent.cs b/Content.Shared/Medical/Surgery/Tools/BoneGelComponent.cs index 50f614afe1..601c8bc8a4 100644 --- a/Content.Shared/Medical/Surgery/Tools/BoneGelComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/BoneGelComponent.cs @@ -8,4 +8,7 @@ public sealed partial class BoneGelComponent : Component, ISurgeryToolComponent public string ToolName => "bone gel"; public bool? Used { get; set; } = null; -} \ No newline at end of file + + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/BoneSawComponent.cs b/Content.Shared/Medical/Surgery/Tools/BoneSawComponent.cs index 2b7c76eeac..8392dad89b 100644 --- a/Content.Shared/Medical/Surgery/Tools/BoneSawComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/BoneSawComponent.cs @@ -7,4 +7,6 @@ public sealed partial class BoneSawComponent : Component, ISurgeryToolComponent { public string ToolName => "a bone saw"; public bool? Used { get; set; } = null; -} \ No newline at end of file + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/BoneSetterComponent.cs b/Content.Shared/Medical/Surgery/Tools/BoneSetterComponent.cs index e68d64b407..2a4edc4680 100644 --- a/Content.Shared/Medical/Surgery/Tools/BoneSetterComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/BoneSetterComponent.cs @@ -3,4 +3,10 @@ namespace Content.Shared.Medical.Surgery.Tools; [RegisterComponent, NetworkedComponent] -public sealed partial class BoneSetterComponent : Component; \ No newline at end of file +public sealed partial class BoneSetterComponent : Component, ISurgeryToolComponent +{ + public string ToolName => "a bone setter"; + public bool? Used { get; set; } = null; + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/CauteryComponent.cs b/Content.Shared/Medical/Surgery/Tools/CauteryComponent.cs index 9a56f80973..a81315d69f 100644 --- a/Content.Shared/Medical/Surgery/Tools/CauteryComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/CauteryComponent.cs @@ -7,4 +7,6 @@ public sealed partial class CauteryComponent : Component, ISurgeryToolComponent { public string ToolName => "a cautery"; public bool? Used { get; set; } = null; -} \ No newline at end of file + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/DrillComponent.cs b/Content.Shared/Medical/Surgery/Tools/DrillComponent.cs new file mode 100644 index 0000000000..1fa7c0726c --- /dev/null +++ b/Content.Shared/Medical/Surgery/Tools/DrillComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Medical.Surgery.Tools; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DrillComponent : Component, ISurgeryToolComponent +{ + public string ToolName => "a drill"; + public bool? Used { get; set; } = null; + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/HemostatComponent.cs b/Content.Shared/Medical/Surgery/Tools/HemostatComponent.cs index 3e869e1c09..76934fff08 100644 --- a/Content.Shared/Medical/Surgery/Tools/HemostatComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/HemostatComponent.cs @@ -7,4 +7,6 @@ public sealed partial class HemostatComponent : Component, ISurgeryToolComponent { public string ToolName => "a hemostat"; public bool? Used { get; set; } = null; -} \ No newline at end of file + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/ISurgeryToolComponent.cs b/Content.Shared/Medical/Surgery/Tools/ISurgeryToolComponent.cs index 7fb4491f0c..af9eb37e5a 100644 --- a/Content.Shared/Medical/Surgery/Tools/ISurgeryToolComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/ISurgeryToolComponent.cs @@ -8,4 +8,11 @@ public interface ISurgeryToolComponent // Mostly intended for discardable or non-reusable tools. [DataField] public bool? Used { get; set; } -} \ No newline at end of file + + /// + /// Divide the doafter's duration by this value. + /// This is per-type so you can have something that's a good scalpel but a bad retractor. + /// + [DataField] + public float Speed { get; set; } +} diff --git a/Content.Shared/Medical/Surgery/Tools/RetractorComponent.cs b/Content.Shared/Medical/Surgery/Tools/RetractorComponent.cs index bf57c70729..a81f6d6eb6 100644 --- a/Content.Shared/Medical/Surgery/Tools/RetractorComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/RetractorComponent.cs @@ -7,4 +7,6 @@ public sealed partial class RetractorComponent : Component, ISurgeryToolComponen { public string ToolName => "a retractor"; public bool? Used { get; set; } = null; -} \ No newline at end of file + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/ScalpelComponent.cs b/Content.Shared/Medical/Surgery/Tools/ScalpelComponent.cs index 40fb4af556..394692c838 100644 --- a/Content.Shared/Medical/Surgery/Tools/ScalpelComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/ScalpelComponent.cs @@ -7,4 +7,6 @@ public sealed partial class ScalpelComponent : Component, ISurgeryToolComponent { public string ToolName => "a scalpel"; public bool? Used { get; set; } = null; -} \ No newline at end of file + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/SurgeryToolComponent.cs b/Content.Shared/Medical/Surgery/Tools/SurgeryToolComponent.cs index f0dd96ecb0..de999ed928 100644 --- a/Content.Shared/Medical/Surgery/Tools/SurgeryToolComponent.cs +++ b/Content.Shared/Medical/Surgery/Tools/SurgeryToolComponent.cs @@ -13,4 +13,11 @@ public sealed partial class SurgeryToolComponent : Component [DataField, AutoNetworkedField] public SoundSpecifier? EndSound; -} \ No newline at end of file +} + +/// +/// Raised on a tool to see if it can be used in a surgery step. +/// If this is cancelled the step can't be completed. +/// +[ByRefEvent] +public record struct SurgeryToolUsedEvent(EntityUid User, EntityUid Target, bool Cancelled = false); diff --git a/Content.Shared/Medical/Surgery/Tools/SurgeryToolExamineSystem.cs b/Content.Shared/Medical/Surgery/Tools/SurgeryToolExamineSystem.cs new file mode 100644 index 0000000000..6bfbc59b5f --- /dev/null +++ b/Content.Shared/Medical/Surgery/Tools/SurgeryToolExamineSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.Body.Organ; +using Content.Shared.Body.Part; +using Content.Shared.Examine; +using Content.Shared.Verbs; +using Robust.Shared.Utility; + +namespace Content.Shared.Medical.Surgery.Tools; + +/// +/// Examining a surgical or ghetto tool shows everything it can be used for. +/// +public sealed class SurgeryToolExamineSystem : EntitySystem +{ + [Dependency] private readonly ExamineSystemShared _examine = default!; + + public override void Initialize() + { + SubscribeLocalEvent>(OnGetVerbs); + + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnExamined); + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + var msg = FormattedMessage.FromMarkupOrThrow(Loc.GetString("surgery-tool-header")); + msg.PushNewline(); + var ev = new SurgeryToolExaminedEvent(msg); + RaiseLocalEvent(ent, ref ev); + + _examine.AddDetailedExamineVerb(args, ent.Comp, ev.Message, + Loc.GetString("surgery-tool-examinable-verb-text"), "/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png", + Loc.GetString("surgery-tool-examinable-verb-message")); + } + + private void OnExamined(EntityUid uid, ISurgeryToolComponent comp, ref SurgeryToolExaminedEvent args) + { + var msg = args.Message; + var color = comp.Speed switch + { + < 1f => "red", + > 1f => "green", + _ => "white" + }; + var key = "surgery-tool-" + (comp.Used == true ? "used" : "unlimited"); + var speed = comp.Speed.ToString("N2"); // 2 decimal places to not get trolled by float + msg.PushMarkup(Loc.GetString(key, ("tool", comp.ToolName), ("speed", speed), ("color", color))); + } +} + +[ByRefEvent] +public record struct SurgeryToolExaminedEvent(FormattedMessage Message); diff --git a/Content.Shared/Medical/Surgery/Tools/SurgeryToolsConditionsSystem.cs b/Content.Shared/Medical/Surgery/Tools/SurgeryToolsConditionsSystem.cs new file mode 100644 index 0000000000..4e86b764d9 --- /dev/null +++ b/Content.Shared/Medical/Surgery/Tools/SurgeryToolsConditionsSystem.cs @@ -0,0 +1,57 @@ +using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.Popups; +using Content.Shared.Smoking; +using Content.Shared.Smoking.Components; +using Content.Shared.Weapons.Ranged; +using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Events; + +namespace Content.Shared.Medical.Surgery.Tools; + +/// +/// Prevents using esword or welder when off, laser when no charges. +/// +public sealed class SurgeryToolConditionsSystem : EntitySystem +{ + [Dependency] private readonly SharedPopupSystem _popup = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggleUsed); + SubscribeLocalEvent(OnGunUsed); + SubscribeLocalEvent(OnMatchUsed); + } + + private void OnToggleUsed(Entity ent, ref SurgeryToolUsedEvent args) + { + if (ent.Comp.Activated) + return; + + _popup.PopupEntity(Loc.GetString("surgery-tool-turn-on"), ent, args.User); + args.Cancelled = true; + } + + private void OnGunUsed(Entity ent, ref SurgeryToolUsedEvent args) + { + var coords = Transform(args.User).Coordinates; + var ev = new TakeAmmoEvent(1, new List<(EntityUid? Entity, IShootable Shootable)>(), coords, args.User); + if (ev.Ammo.Count > 0) + return; + + _popup.PopupEntity(Loc.GetString("surgery-tool-reload"), ent, args.User); + args.Cancelled = true; + } + + private void OnMatchUsed(Entity ent, ref SurgeryToolUsedEvent args) + { + var state = ent.Comp.CurrentState; + if (state == SmokableState.Lit) + return; + + var key = "surgery-tool-match-" + (state == SmokableState.Burnt ? "replace" : "light"); + _popup.PopupEntity(Loc.GetString(key), ent, args.User); + args.Cancelled = true; + } +} diff --git a/Content.Shared/Medical/Surgery/Tools/SurgicalDrillComponent.cs b/Content.Shared/Medical/Surgery/Tools/SurgicalDrillComponent.cs deleted file mode 100644 index c8995edcec..0000000000 --- a/Content.Shared/Medical/Surgery/Tools/SurgicalDrillComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Medical.Surgery.Tools; - -[RegisterComponent, NetworkedComponent] -public sealed partial class SurgicalDrillComponent : Component, ISurgeryToolComponent -{ - public string ToolName => "a surgical drill"; - public bool? Used { get; set; } = null; -} \ No newline at end of file diff --git a/Content.Shared/Medical/Surgery/Tools/TendingComponent.cs b/Content.Shared/Medical/Surgery/Tools/TendingComponent.cs new file mode 100644 index 0000000000..365af32004 --- /dev/null +++ b/Content.Shared/Medical/Surgery/Tools/TendingComponent.cs @@ -0,0 +1,15 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Medical.Surgery.Tools; + +/// +/// Like Hemostat but lets ghetto tools be used differently for clamping and tending wounds. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class TendingComponent : Component, ISurgeryToolComponent +{ + public string ToolName => "a wound tender"; + public bool? Used { get; set; } = null; + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Medical/Surgery/Tools/TweezersComponent.cs b/Content.Shared/Medical/Surgery/Tools/TweezersComponent.cs new file mode 100644 index 0000000000..6f0c8b4d29 --- /dev/null +++ b/Content.Shared/Medical/Surgery/Tools/TweezersComponent.cs @@ -0,0 +1,15 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Medical.Surgery.Tools; + +/// +/// Like Hemostat but lets ghetto tools be used differently for clamping and removing organs. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class TweezersComponent : Component, ISurgeryToolComponent +{ + public string ToolName => "tweezers"; + public bool? Used { get; set; } = null; + [DataField] + public float Speed { get; set; } = 1f; +} diff --git a/Content.Shared/Overlays/ShowHealthBarsComponent.cs b/Content.Shared/Overlays/ShowHealthBarsComponent.cs index 48e3162269..ed9ce4b765 100644 --- a/Content.Shared/Overlays/ShowHealthBarsComponent.cs +++ b/Content.Shared/Overlays/ShowHealthBarsComponent.cs @@ -7,12 +7,12 @@ namespace Content.Shared.Overlays; /// /// This component allows you to see health bars above damageable mobs. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ShowHealthBarsComponent : Component { /// /// Displays health bars of the damage containers. /// - [DataField("damageContainers", customTypeSerializer: typeof(PrototypeIdListSerializer))] + [DataField("damageContainers", customTypeSerializer: typeof(PrototypeIdListSerializer)), AutoNetworkedField] public List DamageContainers = new(); } diff --git a/Content.Shared/Overlays/ShowHealthIconsComponent.cs b/Content.Shared/Overlays/ShowHealthIconsComponent.cs index c2526c2f40..b212b77289 100644 --- a/Content.Shared/Overlays/ShowHealthIconsComponent.cs +++ b/Content.Shared/Overlays/ShowHealthIconsComponent.cs @@ -7,12 +7,12 @@ namespace Content.Shared.Overlays; /// /// This component allows you to see health status icons above damageable mobs. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ShowHealthIconsComponent : Component { /// /// Displays health status icons of the damage containers. /// - [DataField("damageContainers", customTypeSerializer: typeof(PrototypeIdListSerializer))] + [DataField("damageContainers", customTypeSerializer: typeof(PrototypeIdListSerializer)), AutoNetworkedField] public List DamageContainers = new(); } diff --git a/Content.Shared/Prying/Components/PryingComponent.cs b/Content.Shared/Prying/Components/PryingComponent.cs index 7a7f304d8f..650c998f0d 100644 --- a/Content.Shared/Prying/Components/PryingComponent.cs +++ b/Content.Shared/Prying/Components/PryingComponent.cs @@ -3,13 +3,13 @@ namespace Content.Shared.Prying.Components; -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class PryingComponent : Component { /// /// Whether the entity can pry open powered doors /// - [DataField("pryPowered")] + [DataField("pryPowered"), AutoNetworkedField] public bool PryPowered = false; /// @@ -22,7 +22,7 @@ public sealed partial class PryingComponent : Component /// Modifier on the prying time. /// Lower values result in more time. /// - [DataField("speedModifier")] + [DataField("speedModifier"), AutoNetworkedField] public float SpeedModifier = 1.0f; /// diff --git a/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs b/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs index 8b0c866cbe..26012cae58 100644 --- a/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs +++ b/Content.Shared/Research/Prototypes/LatheRecipePrototype.cs @@ -33,7 +33,7 @@ public sealed partial class LatheRecipePrototype : IPrototype [DataField("icon")] public SpriteSpecifier? Icon; - [DataField("completetime")] + [DataField("completeTime")] private TimeSpan _completeTime = TimeSpan.FromSeconds(5); [DataField("materials", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] diff --git a/Content.Shared/Smoking/Components/MatchstickComponent.cs b/Content.Shared/Smoking/Components/MatchstickComponent.cs new file mode 100644 index 0000000000..527553549b --- /dev/null +++ b/Content.Shared/Smoking/Components/MatchstickComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Smoking.Systems; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Smoking.Components; + +[RegisterComponent, NetworkedComponent, Access(typeof(SharedMatchstickSystem))] +[AutoGenerateComponentState] +public sealed partial class MatchstickComponent : Component +{ + /// + /// Current state to matchstick. Can be Unlit, Lit or Burnt. + /// + [DataField("state"), AutoNetworkedField] + public SmokableState CurrentState = SmokableState.Unlit; + + /// + /// How long will matchstick last in seconds. + /// + [DataField] + public int Duration = 10; + + /// + /// Sound played when you ignite the matchstick. + /// + [DataField(required: true)] + public SoundSpecifier IgniteSound = default!; +} diff --git a/Content.Shared/Smoking/Systems/SharedMatchstickSystem.cs b/Content.Shared/Smoking/Systems/SharedMatchstickSystem.cs new file mode 100644 index 0000000000..bda75c42d2 --- /dev/null +++ b/Content.Shared/Smoking/Systems/SharedMatchstickSystem.cs @@ -0,0 +1,16 @@ +using Content.Shared.Smoking.Components; + +namespace Content.Shared.Smoking.Systems; + +public abstract class SharedMatchstickSystem : EntitySystem +{ + public virtual bool SetState(Entity ent, SmokableState state) + { + if (ent.Comp.CurrentState == state) + return false; + + ent.Comp.CurrentState = state; + Dirty(ent); + return true; + } +} diff --git a/Content.Shared/Standing/SharedLayingDownSystem.cs b/Content.Shared/Standing/SharedLayingDownSystem.cs index 2f95a06f19..d52986c7a9 100644 --- a/Content.Shared/Standing/SharedLayingDownSystem.cs +++ b/Content.Shared/Standing/SharedLayingDownSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Movement.Systems; using Content.Shared.Body.Components; +using Content.Shared.Body.Organ; using Content.Shared.Standing; using Content.Shared.Popups; using Content.Shared.Stunnable; @@ -145,7 +146,8 @@ public bool TryStandUp(EntityUid uid, LayingDownComponent? layingDown = null, St || !_mobState.IsAlive(uid) || TerminatingOrDeleted(uid) || !TryComp(uid, out var body) - || body.LegEntities.Count == 0) + || body.LegEntities.Count == 0 + || HasComp(uid)) return false; var args = new DoAfterArgs(EntityManager, uid, layingDown.StandingUpTime, new StandingUpDoAfterEvent(), uid) @@ -188,4 +190,4 @@ public enum DropHeldItemsBehavior : byte NoDrop, DropIfStanding, AlwaysDrop -} \ No newline at end of file +} diff --git a/Resources/Locale/en-US/accent/ohio.ftl b/Resources/Locale/en-US/accent/ohio.ftl new file mode 100644 index 0000000000..be191ce9fc --- /dev/null +++ b/Resources/Locale/en-US/accent/ohio.ftl @@ -0,0 +1,421 @@ +# Gondola +accent-words-gondola-1 = ... + +# Ohio +accent-ohio-prefix-1 = Gyatt dang, +accent-ohio-prefix-2 = Chat... +accent-ohio-prefix-3 = Epic win, +accent-ohio-prefix-4 = Widewawwy... +accent-ohio-prefix-5 = BRO... +accent-ohio-prefix-6 = Call me the rizzler cause, +accent-ohio-prefix-7 = It's giving... + +accent-ohio-suffix-1 = . Like in Ohio. +accent-ohio-suffix-2 = . From Ohio... +accent-ohio-suffix-3 = . Like in Fortnite. +accent-ohio-suffix-4 = . Like from Fortnite. +accent-ohio-suffix-5 = . For the Rizzler. +accent-ohio-suffix-6 = . Chat is this real? +accent-ohio-suffix-7 = . Bro knew what he was doing. +accent-ohio-suffix-8 = . Goofy ahh. +accent-ohio-suffix-9 = . Like erm... what the sigma??? +accent-ohio-suffix-10 = . What the scallop? +accent-ohio-suffix-11 = . It's so over. +accent-ohio-suffix-12 = . I oop!!!!!!11!!!111! +accent-ohio-suffix-13 = . I need to work on my mewing. + +accent-ohio-words-1 = charisma +accent-ohio-words-replace-1 = rizz + +accent-ohio-words-2 = cool +accent-ohio-words-replace-2 = sigma + +accent-ohio-words-3 = amazing +accent-ohio-words-replace-3 = rizzlike + +accent-ohio-words-4 = god +accent-ohio-words-replace-4 = gyatt + +accent-ohio-words-5 = attack +accent-ohio-words-replace-5 = unalive + +accent-ohio-words-6 = kill +accent-ohio-words-replace-6 = unalive + +accent-ohio-words-7 = murder +accent-ohio-words-replace-7 = unalive + +accent-ohio-words-8 = dead +accent-ohio-words-replace-8 = in ohio + +accent-ohio-words-9 = maints +accent-ohio-words-replace-9 = the backrooms + +accent-ohio-words-10 = maintenance +accent-ohio-words-replace-10 = the backrooms + +accent-ohio-words-11 = maint +accent-ohio-words-replace-11 = the backrooms + +accent-ohio-words-12 = attacked +accent-ohio-words-replace-12 = unalived + +accent-ohio-words-13 = nukie +accent-ohio-words-replace-13 = sussy baka impostor from Among Us + +accent-ohio-words-14 = syndicate +accent-ohio-words-replace-14 = sussy baka impostor from Among Us + +accent-ohio-words-15 = syndi +accent-ohio-words-replace-15 = sussy baka impostor from Among Us + +accent-ohio-words-16 = traitor +accent-ohio-words-replace-16 = sussy baka impostor from Among Us + +accent-ohio-words-17 = got +accent-ohio-words-replace-17 = gyatt + +accent-ohio-words-18 = delicious +accent-ohio-words-replace-18 = bussin' + +accent-ohio-words-19 = yummy +accent-ohio-words-replace-19 = bussin' + +accent-ohio-words-20 = women +accent-ohio-words-replace-20 = FEMALES + +accent-ohio-words-21 = girls +accent-ohio-words-replace-21 = FEMALES + +accent-ohio-words-22 = girl +accent-ohio-words-replace-22 = FEMALE + +accent-ohio-words-23 = woman +accent-ohio-words-replace-23 = FEMALE + +accent-ohio-words-24 = miss +accent-ohio-words-replace-24 = FEMALE + +accent-ohio-words-25 = ms +accent-ohio-words-replace-25 = FEMALE + +accent-ohio-words-26 = mrs +accent-ohio-words-replace-26 = FEMALE + +accent-ohio-words-27 = ms. +accent-ohio-words-replace-27 = FEMALE + +accent-ohio-words-28 = mrs. +accent-ohio-words-replace-28 = FEMALE + +accent-ohio-words-29 = bitch +accent-ohio-words-replace-29 = FEMALE + +accent-ohio-words-30 = really +accent-ohio-words-replace-30 = for real + +accent-ohio-words-31 = definitely +accent-ohio-words-replace-31 = lowkey + +accent-ohio-words-32 = mhm +accent-ohio-words-replace-32 = on god + +accent-ohio-words-33 = epic +accent-ohio-words-replace-33 = poggers + +accent-ohio-words-34 = lingium +accent-ohio-words-replace-34 = ligma + +accent-ohio-words-35 = game +accent-ohio-words-replace-35 = roblox + +accent-ohio-words-36 = nah +accent-ohio-words-replace-36 = cope + +accent-ohio-words-37 = weird +accent-ohio-words-replace-37 = sus + +accent-ohio-words-38 = brother +accent-ohio-words-replace-38 = bro + +accent-ohio-words-39 = man +accent-ohio-words-replace-39 = bro + +accent-ohio-words-40 = marijuana +accent-ohio-words-replace-40 = 420 leaf + +accent-ohio-words-41 = weed +accent-ohio-words-replace-41 = 420 leaf + +accent-ohio-words-42 = best +accent-ohio-words-replace-42 = GOAT + +accent-ohio-words-43 = loss +accent-ohio-words-replace-43 = L + +accent-ohio-words-44 = lose +accent-ohio-words-replace-44 = take an L + +accent-ohio-words-45 = lost +accent-ohio-words-replace-45 = took an L + +accent-ohio-words-46 = silly +accent-ohio-words-replace-46 = goofy ahh + +accent-ohio-words-47 = clown +accent-ohio-words-replace-47 = goofy ahh + +accent-ohio-words-48 = funny +accent-ohio-words-replace-48 = goofy + +accent-ohio-words-49 = joke +accent-ohio-words-replace-49 = meme + +accent-ohio-words-50 = idiot +accent-ohio-words-replace-50 = baka + +accent-ohio-words-51 = ugly +accent-ohio-words-replace-51 = rizzless + +accent-ohio-words-52 = smartass +accent-ohio-words-replace-52 = nerd + +accent-ohio-words-53 = smart +accent-ohio-words-replace-53 = nerdlike + +accent-ohio-words-54 = science +accent-ohio-words-replace-54 = nerdland + +accent-ohio-words-55 = scientist +accent-ohio-words-replace-55 = professional nerd + +accent-ohio-words-56 = story +accent-ohio-words-replace-56 = lorepage + +accent-ohio-words-57 = loser +accent-ohio-words-replace-57 = L + Ratio idiot + +accent-ohio-words-58 = nice +accent-ohio-words-replace-58 = rizzlike + +accent-ohio-words-59 = spesos +accent-ohio-words-replace-59 = rizzbucks + +accent-ohio-words-60 = dollars +accent-ohio-words-replace-60 = rizzbucks + +accent-ohio-words-61 = dollar +accent-ohio-words-replace-61 = rizzbuck + +accent-ohio-words-62 = speso +accent-ohio-words-replace-62 = rizzbuck + +accent-ohio-words-63 = money +accent-ohio-words-replace-63 = rizzbucks + +accent-ohio-words-64 = kill you +accent-ohio-words-replace-64 = send you to Brazil + +accent-ohio-words-65 = dick +accent-ohio-words-replace-65 = glizzy + +accent-ohio-words-66 = hot dog +accent-ohio-words-replace-66 = glizzy + +accent-ohio-words-67 = butt +accent-ohio-words-replace-67 = bussy + +accent-ohio-words-68 = bum +accent-ohio-words-replace-68 = bussy + +accent-ohio-words-69 = ass +accent-ohio-words-replace-69 = bussy + +accent-ohio-words-70 = kill yourself +accent-ohio-words-replace-70 = send yourself to Brazil you stupid rizzless citizen of Ohio + +accent-ohio-words-71 = felinid +accent-ohio-words-replace-71 = hecking chonker + +accent-ohio-words-72 = cat +accent-ohio-words-replace-72 = hecking chonker + +accent-ohio-words-73 = kitty +accent-ohio-words-replace-73 = hecking chonker + +accent-ohio-words-74 = ian +accent-ohio-words-replace-74 = hecking chonker + +accent-ohio-words-75 = dog +accent-ohio-words-replace-75 = hecking chonker + +accent-ohio-words-76 = cerberus +accent-ohio-words-replace-76 = hecking chonker + +accent-ohio-words-77 = puppy +accent-ohio-words-replace-77 = hecking chonker + +accent-ohio-words-78 = pup +accent-ohio-words-replace-78 = hecking chonker + +accent-ohio-words-79 = tesla +accent-ohio-words-replace-79 = sparkly rizzball + +accent-ohio-words-80 = singularity +accent-ohio-words-replace-80 = sussy singuawungoose + +accent-ohio-words-81 = singu +accent-ohio-words-replace-81 = sussy singuawungoose + +accent-ohio-words-82 = singulo +accent-ohio-words-replace-82 = sussy singuawungoose + +accent-ohio-words-83 = tesloose +accent-ohio-words-replace-83 = SPARKLY RIZZBALL LOOSE NO CAP + +accent-ohio-words-84 = tesla loose +accent-ohio-words-replace-84 = SPARKLY RIZZBALL LOOSE NO CAP + +accent-ohio-words-85 = hacking +accent-ohio-words-replace-85 = hacking like in a video game + +accent-ohio-words-86 = robust +accent-ohio-words-replace-86 = cooking + +accent-ohio-words-87 = die +accent-ohio-words-replace-87 = get unalived + +accent-ohio-words-88 = died +accent-ohio-words-replace-88 = was unalived + +accent-ohio-words-89 = goddamn +accent-ohio-words-replace-89 = gyattdamn + +accent-ohio-words-90 = godamn +accent-ohio-words-replace-90 = gyattdamn + +accent-ohio-words-91 = goddamned +accent-ohio-words-replace-91 = gyatdamned + +accent-ohio-words-92 = goddang +accent-ohio-words-replace-92 = gyattdang + +accent-ohio-words-93 = fuck +accent-ohio-words-replace-93 = skibidi + +accent-ohio-words-94 = shit +accent-ohio-words-replace-94 = skibidi + +accent-ohio-words-95 = im high +accent-ohio-words-replace-95 = im tweaking + +accent-ohio-words-96 = i'm high +accent-ohio-words-replace-96 = i'm tweaking + +accent-ohio-words-97 = supermatter +accent-ohio-words-replace-97 = fanum crystal + +accent-ohio-words-98 = erping +accent-ohio-words-replace-98 = going to freaky town + +accent-ohio-words-99 = erp +accent-ohio-words-replace-99 = freaky + +accent-ohio-words-100 = sm +accent-ohio-words-replace-100 = fanum crystal + +accent-ohio-words-101 = changeling +accent-ohio-words-replace-101 = shapeshifting ohioan + +accent-ohio-words-102 = cling +accent-ohio-words-replace-102 = shapeshifting ohioan + +accent-ohio-words-103 = heretic +accent-ohio-words-replace-103 = facebook crystal worshipper + +accent-ohio-words-104 = heretics +accent-ohio-words-replace-104 = members of a crystal-worshipping facebook group + +accent-ohio-words-105 = news +accent-ohio-words-replace-105 = fake news + +accent-ohio-words-106 = tax +accent-ohio-words-replace-106 = fanum tax + +accent-ohio-words-107 = cool guy +accent-ohio-words-replace-107 = real sigma alpha male guy + +accent-ohio-words-108 = fed +accent-ohio-words-replace-108 = fanum taxer + +accent-ohio-words-109 = athlete +accent-ohio-words-replace-109 = ishowspeed + +accent-ohio-words-110 = meth +accent-ohio-words-replace-110 = speed + +accent-ohio-words-111 = chemistry +accent-ohio-words-replace-111 = walter white + +accent-ohio-words-112 = chem +accent-ohio-words-replace-112 = walter white + +accent-ohio-words-113 = real news +accent-ohio-words-replace-113 = fake news + +accent-ohio-words-114 = important +accent-ohio-words-replace-114 = important like paying your fanum taxes + +accent-ohio-words-115 = literally +accent-ohio-words-replace-115 = widewawwy + +accent-ohio-words-116 = best friend +accent-ohio-words-replace-116 = bestie + +accent-ohio-words-117 = caught +accent-ohio-words-replace-117 = caught in 4k + +accent-ohio-words-118 = delusional +accent-ohio-words-replace-118 = delulu + +accent-ohio-words-119 = toes +accent-ohio-words-replace-119 = dogs + +accent-ohio-words-120 = boss +accent-ohio-words-replace-120 = girlboss + +accent-ohio-words-121 = make-over +accent-ohio-words-replace-121 = glow-up + +accent-ohio-words-122 = makeover +accent-ohio-words-replace-122 = glowup + +accent-ohio-words-123 = make over +accent-ohio-words-replace-123 = glow up + +accent-ohio-words-124 = greatest +accent-ohio-words-replace-124 = goat + +accent-ohio-words-125 = gross +accent-ohio-words-replace-125 = icky + +accent-ohio-words-126 = pun pun +accent-ohio-words-replace-126 = ipad-addicted monkey + +accent-ohio-words-127 = security +accent-ohio-words-replace-127 = karen department + +accent-ohio-words-128 = secoff +accent-ohio-words-replace-128 = pig + +accent-ohio-words-129 = hos +accent-ohio-words-replace-129 = donut-feasting karen + +accent-ohio-words-130 = rumor +accent-ohio-words-replace-130 = tea + +accent-ohio-words-131 = throw +accent-ohio-words-replace-131 = yeet + +accent-ohio-words-132 = gay +accent-ohio-words-replace-132 = zesty \ No newline at end of file diff --git a/Resources/Locale/en-US/medical/surgery/surgery-tools.ftl b/Resources/Locale/en-US/medical/surgery/surgery-tools.ftl new file mode 100644 index 0000000000..75b48e776f --- /dev/null +++ b/Resources/Locale/en-US/medical/surgery/surgery-tools.ftl @@ -0,0 +1,9 @@ +surgery-tool-turn-on = Turn it on first! +surgery-tool-reload = Reload it first! +surgery-tool-match-light = Light it first! +surgery-tool-match-replace = Get a new match! +surgery-tool-examinable-verb-text = Surgery Tool +surgery-tool-examinable-verb-message = Examine the uses of this tool in surgeries. +surgery-tool-header = This can be used in surgeries as: +surgery-tool-unlimited = - {$tool} at [color={$color}]{$speed}x[/color] speed +surgery-tool-used = - {$tool} at [color={$color}]{$speed}x[/color] speed, [color=red]then gets used up[/color] diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl index fe7293d848..b4d14468aa 100644 --- a/Resources/Locale/en-US/research/technologies.ftl +++ b/Resources/Locale/en-US/research/technologies.ftl @@ -63,7 +63,9 @@ research-technology-advanced-entertainment = Advanced Entertainment research-technology-audio-visual-communication = A/V Communication research-technology-faux-astro-tiles = Faux Astro-Tiles research-technology-biochemical-stasis = Biochemical Stasis -research-technology-mechanized-treatment = Mechanized Treatment +research-technology-advanced-treatment = Advanced Treatment +research-technology-high-end-surgery = High End Surgical Tools +research-technology-cybernetic-enhancements = Cybernetic Enhancements research-technology-robotic-cleanliness = Robotic Cleanliness research-technology-advanced-cleaning = Advanced Cleaning research-technology-meat-manipulation = Meat Manipulation diff --git a/Resources/Maps/glacier.yml b/Resources/Maps/glacier.yml index f3a84373f5..7a7f458bac 100644 --- a/Resources/Maps/glacier.yml +++ b/Resources/Maps/glacier.yml @@ -52962,6 +52962,14 @@ entities: - BorgModuleClowning - BorgModuleDiagnosis - BorgModuleDefibrillator + - BorgModuleJetpack + - BorgModulePka + - BorgModuleAdvancedSurgery + - JawsOfLifeLeftArm + - JawsOfLifeRightArm + - SpeedLeftLeg + - SpeedRightLeg + - BasicCyberneticEyes - BorgModuleAdvancedTreatment - RipleyHarness - RipleyLArm diff --git a/Resources/Prototypes/Body/Organs/Animal/animal.yml b/Resources/Prototypes/Body/Organs/Animal/animal.yml index 619ceebe19..9355f9835e 100644 --- a/Resources/Prototypes/Body/Organs/Animal/animal.yml +++ b/Resources/Prototypes/Body/Organs/Animal/animal.yml @@ -153,3 +153,21 @@ maxReagents: 5 metabolizerTypes: [ Animal ] removeEmpty: true + +- type: entity + parent: OrganAnimalLungs + id: OrganSpaceAnimalLungs + name: space animal lungs + components: + - type: Organ + onAdd: + - type: RespiratorImmune + +- type: entity + parent: OrganAnimalHeart + id: OrganSpaceAnimalHeart + name: space animal heart + components: + - type: Organ + onAdd: + - type: PressureImmunity diff --git a/Resources/Prototypes/Body/Organs/cybernetic.yml b/Resources/Prototypes/Body/Organs/cybernetic.yml new file mode 100644 index 0000000000..a7e68c5a29 --- /dev/null +++ b/Resources/Prototypes/Body/Organs/cybernetic.yml @@ -0,0 +1,51 @@ +- type: entity + parent: OrganHumanEyes + abstract: true + id: BaseCyberneticEyes + components: + - type: Cybernetics + - type: Sprite + sprite: Mobs/Species/IPC/organs.rsi + state: "eyes" + +- type: entity + parent: BaseCyberneticEyes + id: BasicCyberneticEyes + name: cybernetic eyes + description: A pair of cybernetic eyes that enhance your vision, and protect you from eye damage. + components: + - type: Organ + onAdd: + - type: FlashImmunity + - type: EyeProtection + +- type: entity + parent: BaseCyberneticEyes + id: SecurityCyberneticEyes + name: cybernetic security eyes + description: A pair of cybernetic eyes that enhance your vision, featuring an integrated SecHUD. + components: + - type: Organ + onAdd: + - type: FlashImmunity + - type: EyeProtection + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + +- type: entity + parent: BaseCyberneticEyes + id: MedicalCyberneticEyes + name: cybernetic diagnostic eyes + description: A pair of cybernetic eyes that enhance your vision, featuring an integrated MedHUD. + components: + - type: Organ + onAdd: + - type: FlashImmunity + - type: EyeProtection + - type: ShowHealthBars + damageContainers: + - Biological + - type: ShowHealthIcons + damageContainers: + - Biological diff --git a/Resources/Prototypes/Body/Organs/generic.yml b/Resources/Prototypes/Body/Organs/generic.yml new file mode 100644 index 0000000000..9f032de074 --- /dev/null +++ b/Resources/Prototypes/Body/Organs/generic.yml @@ -0,0 +1,23 @@ +- type: entity + parent: OrganHumanHeart + id: BioSynthHeart + name: bio-synthetic heart + description: This heart can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: OrganHumanLiver + id: BioSynthLiver + name: bio-synthetic liver + description: This liver can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: OrganHumanLungs + id: BioSynthLungs + name: bio-synthetic lungs + description: These lungs can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: OrganHumanEyes + id: BioSynthEyes + name: bio-synthetic eyes + description: These eyes can be transplanted into any living organism and it will adapt to its recipient. diff --git a/Resources/Prototypes/Body/Parts/animal.yml b/Resources/Prototypes/Body/Parts/animal.yml index bc3d4b935c..bfd90d4fad 100644 --- a/Resources/Prototypes/Body/Parts/animal.yml +++ b/Resources/Prototypes/Body/Parts/animal.yml @@ -103,4 +103,42 @@ components: - type: Sprite layers: - - state: head_m \ No newline at end of file + - state: head_m + +- type: entity + abstract: true + parent: PartAnimal + id: BaseCarpPart + components: + - type: Sprite + sprite: Mobs/Aliens/Carps/carp_parts.rsi + +- type: entity + categories: [ HideSpawnMenu ] + parent: BaseCarpPart + id: TailCarp + name: carp tail + description: Unique glands in this tail let space carp fly in a vacuum. + components: + - type: Sprite + layers: + - state: tail + - type: BodyPart + partType: Tail + - type: MovementBodyPart + walkSpeed: 2.5 + sprintSpeed: 3.5 + # TODO: Make it actually needed. Legs are hardcoded to be the only parts that matter for movement. + # TODO: space flight stuff + +- type: entity + categories: [ HideSpawnMenu ] + parent: BaseCarpPart + id: TorsoCarp + name: carp torso + components: + - type: Sprite + layers: + - state: torso + - type: BodyPart + partType: Torso diff --git a/Resources/Prototypes/Body/Parts/cybernetic.yml b/Resources/Prototypes/Body/Parts/cybernetic.yml new file mode 100644 index 0000000000..fe8901e2bb --- /dev/null +++ b/Resources/Prototypes/Body/Parts/cybernetic.yml @@ -0,0 +1,169 @@ +- type: entity + id: LeftArmCybernetic + parent: LeftArmHuman + abstract: true + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopLArm + - type: GenerateChildPart + id: LeftHandCybernetic + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_arm-combined" + +- type: entity + id: RightArmCybernetic + parent: RightArmHuman + abstract: true + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopRArm + - type: GenerateChildPart + id: RightHandCybernetic + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_arm-combined" + +- type: entity + id: LeftLegCybernetic + parent: LeftLegHuman + abstract: true + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopLLeg + - type: GenerateChildPart + id: LeftFootCybernetic + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_leg-combined" + +- type: entity + id: RightLegCybernetic + parent: RightLegHuman + abstract: true + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopRLeg + - type: GenerateChildPart + id: RightFootCybernetic + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_leg-combined" + +- type: entity + id: LeftHandCybernetic + parent: LeftHandHuman + name: cybernetic left hand + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopLHand + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_hand" + +- type: entity + id: RightHandCybernetic + parent: RightHandHuman + name: cybernetic right hand + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopRHand + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_hand" + +- type: entity + id: LeftFootCybernetic + parent: LeftFootHuman + name: cybernetic left foot + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopLFoot + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_foot" + +- type: entity + id: RightFootCybernetic + parent: RightFootHuman + name: cybernetic right foot + components: + - type: Damageable + damageContainer: Silicon + - type: BodyPart + baseLayerId: MobCyberneticBishopRFoot + - type: Cybernetics + - type: Sprite + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_foot" + +- type: entity + parent: LeftArmCybernetic + id: JawsOfLifeLeftArm + name: J.W.L left arm + description: A cybernetic left arm with the ability to pry doors open. + components: + - type: BodyPart + onAdd: + - type: Prying + speedModifier: 1.5 + pryPowered: true + +- type: entity + parent: RightArmCybernetic + id: JawsOfLifeRightArm + name: J.W.L right arm + description: A cybernetic right arm with the ability to pry doors open. + components: + - type: BodyPart + onAdd: + - type: Prying + speedModifier: 1.5 + pryPowered: true + +- type: entity + parent: LeftLegCybernetic + id: SpeedLeftLeg + name: S.P.E.E.D left leg + description: A cybernetic left leg that allows its wearer to run faster. + components: + - type: MovementBodyPart + walkSpeed: 3.125 + sprintSpeed: 5.625 + - type: BodyPart + onAdd: + - type: NoSlip + +- type: entity + parent: RightLegCybernetic + id: SpeedRightLeg + name: S.P.E.E.D right leg + description: A cybernetic left leg that allows its wearer to run faster. + components: + - type: MovementBodyPart + walkSpeed: 3.125 + sprintSpeed: 5.625 + - type: BodyPart + onAdd: + - type: NoSlip diff --git a/Resources/Prototypes/Body/Parts/generic.yml b/Resources/Prototypes/Body/Parts/generic.yml new file mode 100644 index 0000000000..ef97ac86d8 --- /dev/null +++ b/Resources/Prototypes/Body/Parts/generic.yml @@ -0,0 +1,103 @@ +- type: entity + parent: LeftArmHuman + id: BioSynthLeftArm + name: bio-synthetic left arm + description: This left arm can be transplanted into any living organism and it will adapt to its recipient. + components: + - type: BodyPart + children: + left hand: + id: "left hand" + type: Hand + +- type: entity + parent: RightArmHuman + id: BioSynthRightArm + name: bio-synthetic right arm + description: This right arm can be transplanted into any living organism and it will adapt to its recipient. + components: + - type: BodyPart + children: + right hand: + id: "right hand" + type: Hand + +- type: entity + parent: LeftHandHuman + id: BioSynthLeftHand + name: bio-synthetic left hand + description: This left hand can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: RightHandHuman + id: BioSynthRightHand + name: bio-synthetic right hand + description: This right hand can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: LeftLegHuman + id: BioSynthLeftLeg + name: bio-synthetic left leg + description: This left leg can be transplanted into any living organism and it will adapt to its recipient. + components: + - type: BodyPart + children: + right foot: + id: "right foot" + type: Foot + +- type: entity + parent: RightLegHuman + id: BioSynthRightLeg + name: bio-synthetic right leg + description: This right leg can be transplanted into any living organism and it will adapt to its recipient. + components: + - type: BodyPart + children: + right foot: + id: "right foot" + type: Foot + +- type: entity + parent: LeftFootHuman + id: BioSynthLeftFoot + name: bio-synthetic left foot + description: This left foot can be transplanted into any living organism and it will adapt to its recipient. + +- type: entity + parent: RightFootHuman + id: BioSynthRightFoot + name: bio-synthetic right foot + description: This right foot can be transplanted into any living organism and it will adapt to its recipient. + +# JOKE ITEMS + +- type: entity + parent: LeftArmHuman + id: PizzaLeftArm + name: pizza left arm + description: For when you want to turn someone into a Space John's. + components: + - type: BodyPart + partType: Arm + symmetry: Left + toolName: "a left arm" + baseLayerId: MobPizzaLArm + - type: Sprite + sprite: Mobs/Species/Misc/Pizza/parts.rsi + state: "l_arm" + +- type: entity + parent: RightArmHuman + id: PizzaRightArm + name: pizza right arm + description: For when you want to turn someone into a Space John's. + components: + - type: BodyPart + partType: Arm + symmetry: Right + toolName: "a right arm" + baseLayerId: MobPizzaRArm + - type: Sprite + sprite: Mobs/Species/Misc/Pizza/parts.rsi + state: "r_arm" diff --git a/Resources/Prototypes/Body/Parts/silicon.yml b/Resources/Prototypes/Body/Parts/silicon.yml index 3208280db7..092504960a 100644 --- a/Resources/Prototypes/Body/Parts/silicon.yml +++ b/Resources/Prototypes/Body/Parts/silicon.yml @@ -41,6 +41,11 @@ - type: BodyPart partType: Arm symmetry: Left + toolName: "a left arm" + children: + left hand: + id: "left hand" + type: Hand - type: Tag tags: - Trash @@ -55,6 +60,11 @@ - type: BodyPart partType: Arm symmetry: Right + toolName: "a right arm" + children: + right hand: + id: "right hand" + type: Hand - type: Tag tags: - Trash @@ -69,6 +79,11 @@ - type: BodyPart partType: Leg symmetry: Left + toolName: "a left leg" + children: + left foot: + id: "left foot" + type: Foot - type: Tag tags: - Trash @@ -84,6 +99,11 @@ - type: BodyPart partType: Leg symmetry: Right + toolName: "a right leg" + children: + right foot: + id: "right foot" + type: Foot - type: Tag tags: - Trash @@ -113,4 +133,4 @@ partType: Torso - type: Tag tags: - - Trash \ No newline at end of file + - Trash diff --git a/Resources/Prototypes/Body/Prototypes/Animal/animal.yml b/Resources/Prototypes/Body/Prototypes/Animal/animal.yml index a8c81f9eb6..e37f329fa9 100644 --- a/Resources/Prototypes/Body/Prototypes/Animal/animal.yml +++ b/Resources/Prototypes/Body/Prototypes/Animal/animal.yml @@ -40,4 +40,4 @@ connections: - feet feet: - part: FeetAnimal \ No newline at end of file + part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/Animal/carp.yml b/Resources/Prototypes/Body/Prototypes/Animal/carp.yml new file mode 100644 index 0000000000..81bf6a4bd5 --- /dev/null +++ b/Resources/Prototypes/Body/Prototypes/Animal/carp.yml @@ -0,0 +1,17 @@ +- type: body + id: Carp + name: carp + root: torso + slots: + torso: + part: TorsoAnimal + connections: + - tail + organs: + lungs: OrganSpaceAnimalLungs # Immunity to airloss + stomach: OrganAnimalStomach + liver: OrganAnimalLiver + heart: OrganSpaceAnimalHeart # Immunity to cold + kidneys: OrganAnimalKidneys + tail: + part: TailCarp diff --git a/Resources/Prototypes/DeltaV/Body/Organs/harpy.yml b/Resources/Prototypes/DeltaV/Body/Organs/harpy.yml index adc626bc11..d573ce0dfb 100644 --- a/Resources/Prototypes/DeltaV/Body/Organs/harpy.yml +++ b/Resources/Prototypes/DeltaV/Body/Organs/harpy.yml @@ -9,6 +9,8 @@ - state: lung-l - state: lung-r - type: Lung + - type: Organ + slotId: lungs - type: Metabolizer updateInterval: 2.0 removeEmpty: true diff --git a/Resources/Prototypes/DeltaV/Body/Parts/vulpkanin.yml b/Resources/Prototypes/DeltaV/Body/Parts/vulpkanin.yml index 1a6931df67..9f95eb2575 100644 --- a/Resources/Prototypes/DeltaV/Body/Parts/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Body/Parts/vulpkanin.yml @@ -7,7 +7,7 @@ abstract: true components: - type: Damageable - damageContainer: Biological + damageContainer: OrganicPart - type: BodyPart - type: ContainerContainer containers: diff --git a/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml b/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml index b20b94cce2..e695811fc9 100644 --- a/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml +++ b/Resources/Prototypes/DeltaV/Body/Prototypes/harpy.yml @@ -17,6 +17,7 @@ - left arm - right leg - left leg + - head organs: heart: OrganHumanHeart lungs: OrganHarpyLungs diff --git a/Resources/Prototypes/DeltaV/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/DeltaV/Body/Prototypes/vulpkanin.yml index 4ac73acfc4..378e7eee6d 100644 --- a/Resources/Prototypes/DeltaV/Body/Prototypes/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Body/Prototypes/vulpkanin.yml @@ -23,6 +23,7 @@ - left arm - right leg - left leg + - head right arm: part: RightArmVulpkanin connections: diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/clothing.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/clothing.yml index b0b469d05c..9bf3e296f7 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/clothing.yml @@ -3,28 +3,28 @@ - type: latheRecipe id: ClothingUniformJumpsuitSecBlue result: ClothingUniformJumpsuitSecBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSecGrey result: ClothingUniformJumpsuitSecGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitWardenBlue result: ClothingUniformJumpsuitWardenBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitWardenGrey result: ClothingUniformJumpsuitWardenGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -33,42 +33,42 @@ - type: latheRecipe id: ClothingUniformJumpskirtSecBlue result: ClothingUniformJumpskirtSecBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSecGrey result: ClothingUniformJumpskirtSecGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtHoSBlue result: ClothingUniformJumpskirtHoSBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtHoSGrey result: ClothingUniformJumpskirtHoSGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtWardenBlue result: ClothingUniformJumpskirtWardenBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtWardenGrey result: ClothingUniformJumpskirtWardenGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -77,6 +77,6 @@ - type: latheRecipe id: ClothingOuterStasecSweater result: ClothingOuterStasecSweater - completetime: 4 + completeTime: 4 materials: Cloth: 500 diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/electronics.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/electronics.yml index 82e0294e82..2efcc605a2 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/electronics.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: SalvageExpeditionsComputerCircuitboard result: SalvageExpeditionsComputerCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 900 diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml index cd79417a44..dc56a8018e 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/security.yml @@ -2,7 +2,7 @@ id: SpeedLoaderSpecial result: SpeedLoaderSpecial category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 200 @@ -10,7 +10,7 @@ id: MagazinePistolSpecial result: MagazinePistolSpecial category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 100 @@ -18,7 +18,7 @@ id: CartridgeSpecial result: CartridgeSpecial category: Ammo - completetime: 2 + completeTime: 2 materials: Steel: 20 @@ -26,7 +26,7 @@ id: CartridgeSpecialRubber result: CartridgeSpecialRubber category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 5 Steel: 5 @@ -35,7 +35,7 @@ id: CartridgeSpecialIncendiary result: CartridgeSpecialIncendiary category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 @@ -43,7 +43,7 @@ id: CartridgeSpecialUranium result: CartridgeSpecialUranium category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 Uranium: 10 @@ -52,7 +52,7 @@ id: CartridgeSpecialHoly result: CartridgeSpecialHoly category: Ammo - completetime: 2 + completeTime: 2 materials: Steel: 15 Silver: 5 @@ -61,7 +61,7 @@ id: CartridgeSpecialMindbreaker result: CartridgeSpecialMindbreaker category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 15 Steel: 5 @@ -71,7 +71,7 @@ id: MagazineBoxSpecial result: MagazineBoxSpecial category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 1250 @@ -79,7 +79,7 @@ id: MagazineBoxSpecialPractice result: MagazineBoxSpecialPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 1200 @@ -87,7 +87,7 @@ id: MagazineBoxSpecialRubber result: MagazineBoxSpecialRubber category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 350 Plastic: 300 @@ -96,7 +96,7 @@ id: MagazineBoxSpecialIncendiary result: MagazineBoxSpecialIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 1250 @@ -104,7 +104,7 @@ id: MagazineBoxSpecialUranium result: MagazineBoxSpecialUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 1250 Uranium: 125 @@ -113,7 +113,7 @@ id: MagazineBoxSpecialMindbreaker result: MagazineBoxSpecialMindbreaker category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 1250 Steel: 75 @@ -122,7 +122,7 @@ - type: latheRecipe id: ClothingOuterArmorPlateCarrier result: ClothingOuterArmorPlateCarrier - completetime: 10 + completeTime: 10 materials: Steel: 1500 Plastic: 1500 @@ -130,7 +130,7 @@ - type: latheRecipe id: ClothingOuterArmorDuraVest result: ClothingOuterArmorDuraVest - completetime: 10 + completeTime: 10 materials: Steel: 500 Plastic: 1000 @@ -139,7 +139,7 @@ id: WeaponEnergyGun result: WeaponEnergyGun category: Weapons - completetime: 8 + completeTime: 8 materials: Steel: 2000 Glass: 800 @@ -149,7 +149,7 @@ id: WeaponEnergyGunMini result: WeaponEnergyGunMini category: Weapons - completetime: 4 + completeTime: 4 materials: #Half of Energy Gun Recipe Steel: 1000 Glass: 400 @@ -159,7 +159,7 @@ id: WeaponEnergyGunPistol result: WeaponEnergyGunPistol category: Weapons - completetime: 10 + completeTime: 10 materials: Steel: 1500 Glass: 600 @@ -170,7 +170,7 @@ id: WeaponGunLaserCarbineAutomatic result: WeaponGunLaserCarbineAutomatic category: Weapons - completetime: 15 + completeTime: 15 materials: Steel: 2000 Glass: 1000 diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index e0dc4a0ad4..5c84f7258d 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -258,6 +258,7 @@ - ActionFabricateGumball - type: SiliconLawProvider laws: Medical + - type: SurgeryTarget - type: entity id: BorgChassisService diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index b26269d070..bf13f9dfa4 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -81,6 +81,13 @@ interactFailureString: petting-failure-carp interactFailureSound: path: /Audio/Effects/bite.ogg + - type: Body # Shitmed - Adds carp organs. + prototype: Carp + - type: SurgeryTarget + - type: UserInterface + interfaces: + enum.SurgeryUIKey.Key: + type: SurgeryBui - type: entity parent: BaseMobCarp diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml index 5e0b8890cc..28f206a4f0 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml @@ -81,6 +81,13 @@ - type: DeleteOnTrigger - type: StaticPrice price: 0 + - type: Scalpel + speed: 0.45 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/scalpel1.ogg + endSound: + path: /Audio/Medical/Surgery/scalpel2.ogg - type: entity parent: ShardBase diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 9c54e14f50..d30fead363 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -332,6 +332,13 @@ - type: PhysicalComposition materialComposition: Steel: 25 + - type: Tending + speed: 0.55 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/retractor1.ogg + endSound: + path: /Audio/Medical/Surgery/hemostat1.ogg - type: entity parent: Pen diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index 86667f094f..7dee744ff7 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -8,6 +8,13 @@ - type: Item # TODO add inhand sprites for all utensils sprite: Objects/Misc/utensils.rsi - type: SpaceGarbage + - type: Tweezers # Any utensil can poorly remove organs + speed: 0.2 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/retractor1.ogg + endSound: + path: /Audio/Medical/Surgery/hemostat1.ogg - type: entity parent: UtensilBase @@ -50,6 +57,8 @@ damage: types: Piercing: 5 + - type: Tweezers # Forks are better than spoons + speed: 0.35 - type: entity parent: UtensilBasePlastic @@ -62,6 +71,8 @@ - type: Utensil types: - Fork + - type: Tweezers # Forks are better than spoons + speed: 0.35 - type: entity parent: UtensilBase diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml index 7512960116..316294787b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml @@ -52,6 +52,15 @@ - type: Item sprite: Objects/Tools/Hydroponics/clippers.rsi storedRotation: -90 + - type: Retractor # Same as wirecutters + speed: 0.35 + - type: Hemostat + speed: 0.6 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/retractor1.ogg + endSound: + path: /Audio/Medical/Surgery/retractor2.ogg - type: entity name: scythe @@ -109,6 +118,11 @@ heavyStaminaCost: 5 - type: Item sprite: Objects/Tools/Hydroponics/hatchet.rsi + - type: BoneSaw + speed: 0.35 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/saw.ogg - type: entity name: spade diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml index 5683f700f4..638b194c34 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml @@ -40,6 +40,39 @@ path: /Audio/Medical/Surgery/cautery2.ogg - type: Cautery +# TODO: Make a system to toggle modes so people have to think a bit more. + +- type: entity + name: searing tool + id: EnergyCautery + parent: Cautery + description: A cautery with an energy tip, also serves as a drill in its powered state. + components: + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/e-cautery.rsi + state: e-cautery-on + - type: Item + sprite: Objects/Specific/Medical/Surgery/e-cautery.rsi + inhandVisuals: + left: + - state: inhand-left-on + right: + - state: inhand-right-on + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/cautery1.ogg + endSound: + path: /Audio/Medical/Surgery/cautery2.ogg + - type: MeleeWeapon + damage: + types: + Piercing: 10 + Heat: 1 + - type: Cautery + speed: 1.5 + - type: Drill + speed: 1.5 + # Drill - type: entity @@ -73,7 +106,7 @@ - type: SurgeryTool startSound: path: /Audio/Medical/Surgery/saw.ogg - - type: SurgicalDrill + - type: Drill # Scalpel @@ -116,6 +149,36 @@ path: /Audio/Medical/Surgery/scalpel2.ogg - type: Scalpel +- type: entity + name: energy scalpel + id: EnergyScalpel + parent: Scalpel + description: A scalpel which uses an energy blade, also serves as a saw in its powered state. + components: + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/e-scalpel.rsi + state: e-scalpel-on + - type: Item + sprite: Objects/Specific/Medical/Surgery/e-scalpel.rsi + inhandVisuals: + left: + - state: inhand-left-on + right: + - state: inhand-right-on + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/scalpel1.ogg + endSound: + path: /Audio/Medical/Surgery/scalpel2.ogg + - type: MeleeWeapon + damage: + types: + Slash: 10 + Heat: 1 + - type: Scalpel + speed: 1.5 + - type: BoneSaw + speed: 1.5 - type: entity name: shiv @@ -124,8 +187,10 @@ description: A pointy piece of glass, abraded to an edge and wrapped in tape for a handle. # Could become a decent tool or weapon with right tool mods. components: - type: Sprite + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi state: shiv - type: Item + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi heldPrefix: shiv - type: entity @@ -135,13 +200,17 @@ description: Made of more expensive materials, sharper and generally more reliable. components: - type: Sprite + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi state: advanced - type: Item + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi heldPrefix: advanced - type: MeleeWeapon damage: types: Slash: 8 + - type: Scalpel + speed: 1.25 - type: entity name: laser scalpel @@ -150,16 +219,22 @@ description: A scalpel which uses a directed laser to slice instead of a blade, for more precise surgery while also cauterizing as it cuts. components: - type: Sprite + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi state: laser + - type: Item + sprite: Objects/Specific/Medical/Surgery/oldscalpel.rsi + heldPrefix: laser - type: MeleeWeapon damage: types: Slash: 6.5 Heat: 1 - - type: Item - heldPrefix: laser + - type: Scalpel + speed: 1.25 # These shouldnt be obtainable but yknow they are better. + - type: Cautery + speed: 1.25 -# Scissors +# Retractor - type: entity name: retractor @@ -168,10 +243,10 @@ description: A surgical tool used to hold open incisions. components: - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/retractor.rsi state: retractor - type: Item - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/retractor.rsi storedRotation: 90 - type: SurgeryTool startSound: @@ -179,6 +254,45 @@ endSound: path: /Audio/Medical/Surgery/retractor2.ogg - type: Retractor + - type: Tweezers + - type: Tending + +- type: entity + name: mechanical pinches + id: AdvancedRetractor + parent: Retractor + description: A retractor with mechanical pinches, also serves as a hemostat in its powered state. + components: + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/adv-retractor.rsi + state: adv-retractor-on + - type: Item + sprite: Objects/Specific/Medical/Surgery/adv-retractor.rsi + inhandVisuals: + left: + - state: inhand-left-on + right: + - state: inhand-right-on + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/retractor1.ogg + endSound: + path: /Audio/Medical/Surgery/retractor2.ogg + - type: MeleeWeapon + damage: + types: + Slash: 6.5 + Heat: 1 + - type: Hemostat + speed: 1.5 + - type: Retractor + speed: 1.5 + - type: Tweezers + speed: 1.5 + - type: Tending + speed: 1.5 + +# Hemostat - type: entity name: hemostat @@ -187,11 +301,10 @@ description: A surgical tool used to compress blood vessels to prevent bleeding. components: - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: Item - heldPrefix: hemostat - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi storedRotation: 90 - type: SurgeryTool startSound: @@ -222,7 +335,7 @@ description: A container for bone gel that often needs to be refilled from a specialized machine. components: - type: Sprite - sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + sprite: Objects/Specific/Medical/Surgery/bone-gel.rsi state: bone-gel - type: BoneGel @@ -293,6 +406,7 @@ - Sawing speed: 0.5 - type: BoneSaw + speed: 0.5 - type: entity name: circular saw @@ -301,9 +415,10 @@ description: For heavy duty cutting. components: - type: Sprite - state: electric + sprite: Objects/Specific/Medical/Surgery/circular-saw.rsi + state: circular-saw - type: Item - heldPrefix: electric + sprite: Objects/Specific/Medical/Surgery/circular-saw.rsi storedRotation: 90 - type: MeleeWeapon attackRate: 1.15 @@ -328,6 +443,7 @@ startSound: path: /Audio/Medical/Surgery/saw.ogg - type: BoneSaw + speed: 1.25 - type: entity name: advanced circular saw @@ -360,112 +476,38 @@ - Sawing speed: 2.0 - type: BoneSaw - -# ORGANS - -- type: entity - parent: OrganHumanHeart - id: BioSynthHeart - name: bio-synthetic heart - description: This heart can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: OrganHumanLiver - id: BioSynthLiver - name: bio-synthetic liver - description: This liver can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: OrganHumanLungs - id: BioSynthLungs - name: bio-synthetic lungs - description: These lungs can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: OrganHumanEyes - id: BioSynthEyes - name: bio-synthetic eyes - description: These eyes can be transplanted into any living organism and it will adapt to its recipient. - - -# PARTS - -- type: entity - parent: LeftArmHuman - id: BioSynthLeftArm - name: bio-synthetic left arm - description: This left arm can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: RightArmHuman - id: BioSynthRightArm - name: bio-synthetic right arm - description: This right arm can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: LeftHandHuman - id: BioSynthLeftHand - name: bio-synthetic left hand - description: This left hand can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: RightHandHuman - id: BioSynthRightHand - name: bio-synthetic right hand - description: This right hand can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: LeftLegHuman - id: BioSynthLeftLeg - name: bio-synthetic left leg - description: This left leg can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: RightLegHuman - id: BioSynthRightLeg - name: bio-synthetic right leg - description: This right leg can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: LeftFootHuman - id: BioSynthLeftFoot - name: bio-synthetic left foot - description: This left foot can be transplanted into any living organism and it will adapt to its recipient. - -- type: entity - parent: RightFootHuman - id: BioSynthRightFoot - name: bio-synthetic right foot - description: This right foot can be transplanted into any living organism and it will adapt to its recipient. - -# JOKE ITEMS - -- type: entity - parent: LeftArmHuman - id: PizzaLeftArm - name: pizza left arm - description: For when you want to turn someone into a Space John's. - components: - - type: BodyPart - partType: Arm - symmetry: Left - toolName: "a left arm" - baseLayerId: MobPizzaLArm - - type: Sprite - sprite: Mobs/Species/Misc/Pizza/parts.rsi - state: "l_arm" + speed: 1.5 - type: entity - parent: RightArmHuman - id: PizzaRightArm - name: pizza right arm - description: For when you want to turn someone into a Space John's. + name: medical multitool + id: OmnimedTool + parent: BaseToolSurgery components: - - type: BodyPart - partType: Arm - symmetry: Right - toolName: "a right arm" - baseLayerId: MobPizzaRArm - type: Sprite - sprite: Mobs/Species/Misc/Pizza/parts.rsi - state: "r_arm" + sprite: Objects/Specific/Medical/Surgery/omnimed.rsi + state: omnimed + - type: Item + sprite: Objects/Specific/Medical/Surgery/omnimed.rsi + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/saw.ogg + - type: Hemostat + speed: 2 + - type: Scalpel + speed: 2 + - type: Drill + speed: 2 + - type: BoneSetter + speed: 2 + - type: Retractor + speed: 2 + - type: Cautery + speed: 2 + - type: BoneGel + speed: 2 + - type: BoneSaw + speed: 2 + - type: Tweezers + speed: 2 + - type: Tending + speed: 2 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 53a7a8f075..07ad5c760f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -381,6 +381,41 @@ - Syringe - Dropper +- type: entity + id: BorgModuleSurgery + parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] + name: surgery cyborg module + components: + - type: Sprite + layers: + - state: medical + - state: icon-surgery + - type: ItemBorgModule + items: + - Scalpel + - Drill + - Hemostat + - Retractor + - Cautery + - SawElectric + - BoneGel + +- type: entity + id: BorgModuleAdvancedSurgery + parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] + name: advanced surgery cyborg module + components: + - type: Sprite + layers: + - state: medical + - state: icon-advanced-surgery + - type: ItemBorgModule + items: + - EnergyScalpel + - EnergyCautery + - AdvancedRetractor + - BoneGel + - type: entity id: BorgModuleDefibrillator parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ] diff --git a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml index d03cc725ef..8a832c746e 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml @@ -87,6 +87,13 @@ netsync: false radius: 1.1 #smallest possible color: orange + - type: Cautery + speed: 0.45 + - type: SurgeryTool + startSound: + collection: lighterOnSounds + endSound: + collection: lighterOffSounds - type: entity name: cheap lighter diff --git a/Resources/Prototypes/Entities/Objects/Tools/matches.yml b/Resources/Prototypes/Entities/Objects/Tools/matches.yml index 561e478d93..1cdb207bb3 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/matches.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/matches.yml @@ -41,6 +41,13 @@ unlitIcon: match_unlit litIcon: match_lit burntIcon: match_burnt + - type: Cautery + speed: 0.2 + - type: SurgeryTool + startSound: + path: /Audio/Weapons/Guns/Hits/energy_meat1.ogg + endSound: + path: /Audio/Weapons/Guns/Hits/energy_meat1.ogg - type: entity parent: Matchstick diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 1f1b67349f..a58cf5fc66 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -59,6 +59,19 @@ Steel: 100 - type: StaticPrice price: 30 + - type: Retractor + speed: 0.35 + - type: Hemostat + speed: 0.6 + - type: SurgeryTool + startSound: + path: /Audio/Items/wirecutter.ogg + params: + variation: 0.125 + endSound: + path: /Audio/Items/wirecutter.ogg + params: + variation: 0.125 - type: entity name: screwdriver @@ -119,6 +132,15 @@ Steel: 100 - type: StaticPrice price: 30 + - type: Retractor + speed: 0.45 + - type: Tending + speed: 0.65 + - type: SurgeryTool + startSound: + collection: Screwdriver + endSound: + path: /Audio/Medical/Surgery/retractor2.ogg - type: entity name: wrench @@ -231,6 +253,10 @@ - type: StaticPrice price: 22 - type: Prying + - type: Tweezers + speed: 0.55 + - type: SurgeryTool + startSound: /Audio/Items/crowbar.ogg - type: entity parent: Crowbar diff --git a/Resources/Prototypes/Entities/Objects/Tools/welders.yml b/Resources/Prototypes/Entities/Objects/Tools/welders.yml index c501237b4c..69d6d80ab4 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/welders.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/welders.yml @@ -114,6 +114,13 @@ Blunt: -15 Piercing: -15 Slash: -15 + - type: Cautery + speed: 0.7 + - type: SurgeryTool + startSound: + collection: Welder + endSound: + collection: WelderOff - type: entity name: industrial welding tool diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 57db6326bc..62a98bd5da 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -32,6 +32,11 @@ - type: Appearance - type: StaticPrice price: 500 + - type: Cautery + speed: 0.9 + - type: SurgeryTool + endSound: + path: /Audio/Weapons/Guns/Gunshots/laser.ogg - type: entity id: BaseWeaponPowerCell @@ -68,6 +73,11 @@ - type: ContainerContainer containers: gun_magazine: !type:ContainerSlot + - type: Cautery + speed: 0.9 + - type: SurgeryTool + endSound: + path: /Audio/Weapons/Guns/Gunshots/laser.ogg - type: entity id: BaseWeaponBatterySmall diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 497876f359..2d31e4372a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -22,3 +22,10 @@ qualities: - Prying - type: Prying + - type: Scalpel + speed: 0.3 + - type: BoneSaw + speed: 0.75 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/saw.ogg diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index b2727b334c..d69173ff46 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -51,3 +51,10 @@ maxVol: 300 - type: UseDelay delay: 1 + - type: BoneSaw + speed: 0.5 # TODO: arm-mounted version becomes 0.65 - We dont have that though??? + - type: SurgeryTool + startSound: + path: /Audio/Weapons/chainsawwield.ogg + endSound: + path: /Audio/Weapons/chainsaw.ogg diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index 72b43296af..ec1d8a82be 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -85,6 +85,17 @@ - NoPaint - type: IgnitionSource temperature: 700 + - type: Scalpel + speed: 0.75 + - type: Cautery + speed: 0.2 + - type: SurgeryTool + startSound: + path: /Audio/Weapons/ebladehum.ogg + endSound: + path: /Audio/Weapons/eblade1.ogg + params: + variation: 0.250 - type: entity name: antique energy sword diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index 6630a22ea7..ffbb1c6d05 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -52,6 +52,13 @@ stealGroup: FireAxe - type: IgniteOnMeleeHit fireStacks: -4 + - type: Scalpel + speed: 0.3 + - type: BoneSaw + speed: 0.5 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/saw.ogg - type: entity id: FireAxeFlaming diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml index 5502f75289..3705775dd6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml @@ -31,6 +31,13 @@ - Slicing useSound: path: /Audio/Items/Culinary/chop.ogg + - type: Scalpel + speed: 0.65 + - type: SurgeryTool + startSound: + path: /Audio/Medical/Surgery/scalpel1.ogg + endSound: + path: /Audio/Medical/Surgery/scalpel2.ogg - type: entity name: kitchen knife diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 896c927a75..dd9da0424b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -290,6 +290,9 @@ - CryostasisBeaker - SyringeCryostasis - Syringe + - EnergyScalpel + - EnergyCautery + - AdvancedRetractor - Implanter - PillCanister - ChemistryEmptyBottle01 @@ -609,6 +612,7 @@ - BorgModuleConstruction - BorgModuleService - BorgModuleTreatment + - BorgModuleSurgery - BorgModuleCleaning - CyborgEndoskeleton - LeftArmBorg @@ -665,6 +669,12 @@ - BorgModuleDiagnosis - BorgModuleDefibrillator - BorgModuleAdvancedTreatment + - BorgModuleAdvancedSurgery + - JawsOfLifeLeftArm + - JawsOfLifeRightArm + - SpeedLeftLeg + - SpeedRightLeg + - BasicCyberneticEyes - RipleyHarness - RipleyLArm - RipleyRArm @@ -906,6 +916,8 @@ - MagazineBoxSpecialIncendiary - MagazineBoxSpecialUranium - MagazineBoxSpecialMindbreaker + - SecurityCyberneticEyes + - MedicalCyberneticEyes - type: MaterialStorage whitelist: tags: @@ -1036,6 +1048,11 @@ - ClothingEyesHudMedical # Nyano - ChemicalPayload # Nyano - SyringeCryostasis + - EnergyScalpel + - EnergyCautery + - AdvancedRetractor + - OmnimedTool + - MedicalCyberneticEyes - HypoMini # Floof - type: Machine board: MedicalTechFabCircuitboard diff --git a/Resources/Prototypes/Entities/Surgery/surgeries.yml b/Resources/Prototypes/Entities/Surgery/surgeries.yml index 43d8adfd6e..ad71b27806 100644 --- a/Resources/Prototypes/Entities/Surgery/surgeries.yml +++ b/Resources/Prototypes/Entities/Surgery/surgeries.yml @@ -43,6 +43,41 @@ - type: SurgeryPartCondition part: Torso +- type: entity + parent: SurgeryBase + id: SurgeryLobotomize + name: Lobotomize + categories: [ HideSpawnMenu ] + components: + - type: Surgery + requirement: SurgeryOpenIncision + steps: + - SurgeryStepLobotomize + - SurgeryStepCloseIncision + - type: SurgeryComponentCondition + component: + - type: OhioAccent + inverse: true + - type: SurgeryPartCondition + part: Head + +- type: entity + parent: SurgeryBase + id: SurgeryMendBrainTissue + name: Mend brain tissue + categories: [ HideSpawnMenu ] + components: + - type: Surgery + requirement: SurgeryOpenIncision + steps: + - SurgeryStepMendBrainTissue + - SurgeryStepCloseIncision + - type: SurgeryComponentCondition + component: + - type: OhioAccent + - type: SurgeryPartCondition + part: Head + - type: entity parent: SurgeryBase id: SurgeryRemovePart @@ -283,6 +318,24 @@ part: Foot symmetry: None +- type: entity + parent: SurgeryBase + id: SurgeryAttachTail + name: Attach Tail + categories: [ HideSpawnMenu ] + components: + - type: Surgery + requirement: SurgeryOpenIncision + steps: + - SurgeryStepInsertFeature + - SurgeryStepSealWounds + - type: SurgeryPartCondition + part: Torso + - type: SurgeryPartRemovedCondition + connection: tail + part: Tail + symmetry: None + #- type: entity # parent: SurgeryBase # id: SurgeryAlienEmbryoRemoval diff --git a/Resources/Prototypes/Entities/Surgery/surgery_steps.yml b/Resources/Prototypes/Entities/Surgery/surgery_steps.yml index b157e6425d..a0fd45cabd 100644 --- a/Resources/Prototypes/Entities/Surgery/surgery_steps.yml +++ b/Resources/Prototypes/Entities/Surgery/surgery_steps.yml @@ -15,6 +15,7 @@ - type: Scalpel add: - type: IncisionOpen + duration: 2 - type: Sprite sprite: Objects/Specific/Medical/Surgery/scalpel.rsi state: scalpel @@ -36,8 +37,9 @@ - type: Hemostat add: - type: BleedersClamped + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: SurgeryDamageChangeEffect damage: @@ -56,8 +58,9 @@ - type: Retractor add: - type: SkinRetracted + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/retractor.rsi state: retractor - type: entity @@ -71,6 +74,7 @@ - type: BoneSaw add: - type: RibcageSawed + duration: 4 - type: Sprite sprite: Objects/Specific/Medical/Surgery/saw.rsi state: saw @@ -87,8 +91,9 @@ - type: Retractor add: - type: RibcageOpen + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/retractor.rsi state: retractor #- type: entity @@ -120,7 +125,7 @@ # bodyRemove: # - type: VictimInfected # - type: Sprite -# sprite: Objects/Specific/Medical/Surgery/scissors.rsi +# sprite: Objects/Specific/Medical/Surgery/hemostat.rsi # state: hemostat # - type: SurgeryOperatingTableCondition # - type: SurgeryStepSpawnEffect @@ -137,8 +142,9 @@ - type: Retractor remove: - type: RibcageOpen + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/retractor.rsi state: retractor - type: entity @@ -152,8 +158,9 @@ - type: BoneGel remove: - type: RibcageSawed + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + sprite: Objects/Specific/Medical/Surgery/bone-gel.rsi state: bone-gel - type: entity @@ -173,6 +180,7 @@ - type: IncisionOpen - type: BodyPartReattached - type: InternalBleedersClamped + duration: 2 - type: Sprite sprite: Objects/Specific/Medical/Surgery/cautery.rsi state: cautery @@ -194,6 +202,7 @@ - type: SurgeryStep tool: - type: BodyPart + duration: 6 - type: Sprite sprite: Objects/Specific/Medical/Surgery/manipulation.rsi state: insertion @@ -213,6 +222,7 @@ - type: BleedersClamped - type: IncisionOpen - type: InternalBleedersClamped + duration: 2 - type: SurgeryAffixPartStep - type: Sprite sprite: Objects/Specific/Medical/Surgery/cautery.rsi @@ -237,6 +247,7 @@ - type: BoneSaw add: - type: BodyPartSawed + duration: 4 - type: Sprite sprite: Objects/Specific/Medical/Surgery/saw.rsi state: saw @@ -253,8 +264,9 @@ - type: Hemostat add: - type: InternalBleedersClamped + duration: 2 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: SurgeryDamageChangeEffect damage: @@ -277,6 +289,7 @@ - type: BleedersClamped - type: InternalBleedersClamped - type: IncisionOpen + duration: 8 - type: Sprite sprite: Objects/Specific/Medical/Surgery/saw.rsi state: saw @@ -296,6 +309,7 @@ - type: Scalpel add: - type: IncisionOpen + duration: 3 - type: Sprite sprite: Objects/Specific/Medical/Surgery/scalpel.rsi state: scalpel @@ -309,9 +323,10 @@ components: - type: SurgeryStep tool: - - type: Hemostat + - type: Tending + duration: 1 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: SurgeryTendWoundsEffect damage: @@ -327,9 +342,10 @@ components: - type: SurgeryStep tool: - - type: Hemostat + - type: Tending + duration: 1 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: SurgeryTendWoundsEffect mainGroup: Burn @@ -349,6 +365,7 @@ - type: Cautery remove: - type: IncisionOpen + duration: 2 - type: Sprite sprite: Objects/Specific/Medical/Surgery/cautery.rsi state: cautery @@ -368,6 +385,7 @@ categories: [ HideSpawnMenu ] components: - type: SurgeryStep + duration: 4 - type: Sprite sprite: Objects/Specific/Medical/Surgery/manipulation.rsi state: insertion @@ -382,6 +400,7 @@ categories: [ HideSpawnMenu ] components: - type: SurgeryStep + duration: 4 - type: Sprite sprite: Objects/Specific/Medical/Surgery/manipulation.rsi state: insertion @@ -399,9 +418,10 @@ components: - type: SurgeryStep tool: - - type: Hemostat + - type: Tweezers + duration: 8 - type: Sprite - sprite: Objects/Specific/Medical/Surgery/scissors.rsi + sprite: Objects/Specific/Medical/Surgery/hemostat.rsi state: hemostat - type: SurgeryRemoveOrganStep - type: SurgeryStepEmoteEffect @@ -415,6 +435,7 @@ - type: SurgeryStep tool: - type: Organ + duration: 6 - type: Sprite sprite: Objects/Specific/Medical/Surgery/manipulation.rsi state: insertion @@ -427,6 +448,8 @@ name: Add lungs categories: [ HideSpawnMenu ] components: + - type: SurgeryStep + duration: 6 - type: SurgeryDamageChangeEffect damage: types: @@ -440,6 +463,8 @@ name: Add liver categories: [ HideSpawnMenu ] components: + - type: SurgeryStep + duration: 6 - type: SurgeryDamageChangeEffect damage: types: @@ -453,9 +478,8 @@ name: Add eyes categories: [ HideSpawnMenu ] components: - - type: SurgerySpecialDamageChangeEffect - damageType: Eye - isConsumable: true + - type: SurgeryStep + duration: 6 - type: entity parent: SurgeryStepInsertOrgan @@ -463,6 +487,8 @@ name: Add heart categories: [ HideSpawnMenu ] components: + - type: SurgeryStep + duration: 6 - type: SurgerySpecialDamageChangeEffect damageType: Rot isConsumable: true @@ -473,6 +499,9 @@ id: SurgeryStepInsertStomach name: Add stomach categories: [ HideSpawnMenu ] + components: + - type: SurgeryStep + duration: 6 - type: entity parent: SurgeryStepBase @@ -483,6 +512,7 @@ - type: SurgeryStep tool: - type: Cautery + duration: 2 - type: SurgeryAffixOrganStep - type: Sprite sprite: Objects/Specific/Medical/Surgery/cautery.rsi @@ -494,6 +524,48 @@ Heat: -5 sleepModifier: 2 +- type: entity + parent: SurgeryStepBase + id: SurgeryStepLobotomize + name: Lobotomize patient + categories: [ HideSpawnMenu ] + components: + - type: SurgeryStep + tool: + - type: Drill + bodyAdd: + - type: OhioAccent + - type: RatvarianLanguage + - type: SlurredAccent + duration: 5 + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/drill.rsi + state: drill + - type: SurgeryStepEmoteEffect + - type: SurgeryDamageChangeEffect + damage: + types: + Piercing: 10 + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepMendBrainTissue + name: Mend brain tissue + categories: [ HideSpawnMenu ] + components: + - type: SurgeryStep + tool: + - type: Hemostat + duration: 5 + bodyRemove: + - type: OhioAccent + - type: RatvarianLanguage + - type: SlurredAccent + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/drill.rsi + state: drill + - type: SurgeryStepEmoteEffect + # The lengths I go to just for a joke... I HATE HARDCODING AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # Maybe I should modify species prototypes to include tails and ears properly... diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/language.yml b/Resources/Prototypes/Floof/Recipes/Lathes/language.yml index 09694caf77..5dbc38d9f4 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/language.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/language.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: ArachnicTranslator result: ArachnicTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -11,7 +11,7 @@ - type: latheRecipe id: ArachnicTranslatorImplanter result: ArachnicTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/medical.yml b/Resources/Prototypes/Floof/Recipes/Lathes/medical.yml index c4cb83c179..bdce2ecd2f 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/medical.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: HypoMini result: HypoMini - completetime: 40 + completeTime: 40 materials: PlasmaGlass: 500 Plasteel: 500 diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/security.yml b/Resources/Prototypes/Floof/Recipes/Lathes/security.yml index 5713d0c3b5..2965cc123a 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/security.yml @@ -2,7 +2,7 @@ id: MagazineMagnumEmpty result: MagazineMagnumEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 50 @@ -10,6 +10,6 @@ id: MagazineMagnum result: MagazineMagnum category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 210 diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/sockoutfits.yml b/Resources/Prototypes/Floof/Recipes/Lathes/sockoutfits.yml index a9a2f4341d..76d455dbb2 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/sockoutfits.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/sockoutfits.yml @@ -3,49 +3,49 @@ - type: latheRecipe id: ClothingHandsPlainWarmers result: ClothingHandsPlainWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsStripeRainbowWarmers result: ClothingHandsStripeRainbowWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsStripePurpleWarmers result: ClothingHandsStripePurpleWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsStripeWhiteWarmers result: ClothingHandsStripeWhiteWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsBeeWarmers result: ClothingHandsBeeWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsCoderWarmers result: ClothingHandsCoderWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingHandsCoderValidWarmers result: ClothingHandsCoderValidWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 @@ -54,49 +54,49 @@ - type: latheRecipe id: ClothingUnderSocksPlain result: ClothingUnderSocksPlain - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksStripedRainbow result: ClothingUnderSocksStripedRainbow - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksStripedPurple result: ClothingUnderSocksStripedPurple - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksStripedWhite result: ClothingUnderSocksStripedWhite - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksBee result: ClothingUnderSocksBee - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksCoder result: ClothingUnderSocksCoder - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUnderSocksCoderValid result: ClothingUnderSocksCoderValid - completetime: 2 + completeTime: 2 materials: Cloth: 200 @@ -105,48 +105,48 @@ - type: latheRecipe id: ClothingUniformThongPlain result: ClothingUniformThongPlain - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformStripedThongRainbow result: ClothingUniformStripedThongRainbow - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformStripedThongPurple result: ClothingUniformStripedThongPurple - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformStripedThongWhite result: ClothingUniformStripedThongWhite - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformThongBee result: ClothingUniformThongBee - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformThongCoder result: ClothingUniformThongCoder - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingUniformThongCoderValid result: ClothingUniformThongCoderValid - completetime: 2 + completeTime: 2 materials: Cloth: 200 diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/tools.yml b/Resources/Prototypes/Floof/Recipes/Lathes/tools.yml index 69d3ecba2a..2372e22da0 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/tools.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/tools.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: LeashBasic result: LeashBasic - completetime: 3.5 + completeTime: 3.5 materials: Cloth: 50 Plastic: 500 @@ -10,7 +10,7 @@ - type: latheRecipe id: ShortLeash result: ShortLeash - completetime: 2.5 + completeTime: 2.5 materials: Cloth: 25 Plastic: 300 diff --git a/Resources/Prototypes/Floof/Recipes/Lathes/uniformssocksect.yml b/Resources/Prototypes/Floof/Recipes/Lathes/uniformssocksect.yml index f273a085a7..a33cbcafaa 100644 --- a/Resources/Prototypes/Floof/Recipes/Lathes/uniformssocksect.yml +++ b/Resources/Prototypes/Floof/Recipes/Lathes/uniformssocksect.yml @@ -3,7 +3,7 @@ - type: latheRecipe id: ClothingHandsCaptainWarmers result: ClothingHandsCaptainWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 Durathread: 100 @@ -11,7 +11,7 @@ - type: latheRecipe id: ClothingUnderSocksCaptain result: ClothingUnderSocksCaptain - completetime: 2 + completeTime: 2 materials: Cloth: 300 Durathread: 100 @@ -19,7 +19,7 @@ - type: latheRecipe id: ClothingUniformCaptainThong result: ClothingUniformCaptainThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 100 @@ -29,7 +29,7 @@ - type: latheRecipe id: ClothingHandsCommandWarmers result: ClothingHandsCommandWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 Durathread: 100 @@ -37,7 +37,7 @@ - type: latheRecipe id: ClothingUnderSocksCommand result: ClothingUnderSocksCommand - completetime: 2 + completeTime: 2 materials: Cloth: 300 Durathread: 100 @@ -45,7 +45,7 @@ - type: latheRecipe id: ClothingUniformCommandThong result: ClothingUniformCommandThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 100 @@ -55,21 +55,21 @@ - type: latheRecipe id: ClothingHandsEngiWarmers result: ClothingHandsEngiWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksEngi result: ClothingUnderSocksEngi - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformEngiThong result: ClothingUniformEngiThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -77,21 +77,21 @@ - type: latheRecipe id: ClothingHandsEpiWarmers result: ClothingHandsEpiWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksEpi result: ClothingUnderSocksEpi - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformEpiThong result: ClothingUniformEpiThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -99,21 +99,21 @@ - type: latheRecipe id: ClothingHandsChaplainWarmers result: ClothingHandsChaplainWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksChaplain result: ClothingUnderSocksChaplain - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformChaplainThong result: ClothingUniformChaplainThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -121,21 +121,21 @@ - type: latheRecipe id: ClothingHandsLogisWarmers result: ClothingHandsLogisWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksLogis result: ClothingUnderSocksLogis - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformLogisThong result: ClothingUniformLogisThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -143,21 +143,21 @@ - type: latheRecipe id: ClothingHandsMedicWarmers result: ClothingHandsMedicWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksMedic result: ClothingUnderSocksMedic - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformMedicThong result: ClothingUniformMedicThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -165,7 +165,7 @@ - type: latheRecipe id: ClothingHandsSecurityWarmers result: ClothingHandsSecurityWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 200 Durathread: 100 @@ -173,7 +173,7 @@ - type: latheRecipe id: ClothingUnderSocksSecurity result: ClothingUnderSocksSecurity - completetime: 2 + completeTime: 2 materials: Cloth: 200 Durathread: 100 @@ -181,7 +181,7 @@ - type: latheRecipe id: ClothingUniformSecurityThong result: ClothingUniformSecurityThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -190,21 +190,21 @@ - type: latheRecipe id: ClothingHandsServiceWarmers result: ClothingHandsServiceWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksService result: ClothingUnderSocksService - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformServiceThong result: ClothingUniformServiceThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -212,21 +212,21 @@ - type: latheRecipe id: ClothingHandsJanitorWarmers result: ClothingHandsJanitorWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksJanitor result: ClothingUnderSocksJanitor - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJanitorThong result: ClothingUniformJanitorThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -234,21 +234,21 @@ - type: latheRecipe id: ClothingHandsBartenderWarmers result: ClothingHandsBartenderWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksBartender result: ClothingUnderSocksBartender - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformBartenderThong result: ClothingUniformBartenderThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 @@ -256,20 +256,20 @@ - type: latheRecipe id: ClothingHandsMusicianWarmers result: ClothingHandsMusicianWarmers - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUnderSocksMusician result: ClothingUnderSocksMusician - completetime: 2 + completeTime: 2 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformMusicianThong result: ClothingUniformMusicianThong - completetime: 2 + completeTime: 2 materials: Cloth: 100 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Body/Parts/spider.yml b/Resources/Prototypes/Nyanotrasen/Entities/Body/Parts/spider.yml index 7e71227dbc..fbd45804dd 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Body/Parts/spider.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Body/Parts/spider.yml @@ -5,7 +5,7 @@ abstract: true components: - type: Damageable - damageContainer: Biological + damageContainer: OrganicPart - type: BodyPart - type: ContainerContainer containers: diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/arachne.yml b/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/arachne.yml index 1dc8ac8230..9ce7fd07a6 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/arachne.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/arachne.yml @@ -16,6 +16,7 @@ - right arm - left arm - thorax + - head organs: heart: OrganHumanHeart lungs: OrganHumanLungs diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/felinid.yml index a09f3b6ab7..1f397ad04e 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Body/Prototypes/felinid.yml @@ -17,6 +17,7 @@ - left arm - right leg - left leg + - head organs: heart: OrganAnimalHeart lungs: OrganHumanLungs diff --git a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/clothing.yml index 45ad773013..8ba95c39de 100644 --- a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/clothing.yml @@ -4,7 +4,7 @@ sprite: Nyanotrasen/Clothing/Uniforms/Jumpsuit/prisonguard.rsi state: icon result: ClothingUniformJumpsuitPrisonGuard - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -14,7 +14,7 @@ sprite: Nyanotrasen/Clothing/Uniforms/Jumpsuit/mantis_uniform.rsi state: icon result: ClothingUniformJumpsuitMantis - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -24,7 +24,7 @@ sprite: Nyanotrasen/Clothing/Uniforms/Jumpskirt/mantis_jumpskirt.rsi state: icon result: ClothingUniformSkirtMantis - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -34,7 +34,7 @@ sprite: Nyanotrasen/Clothing/Uniforms/Jumpsuit/mailman.rsi state: icon result: ClothingUniformCourier - completetime: 4 + completeTime: 4 materials: Cloth: 300 @@ -44,6 +44,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Jumpskirt/mailman.rsi state: icon result: ClothingUniformSkirtCourier - completetime: 4 + completeTime: 4 materials: Cloth: 300 diff --git a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/devices.yml b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/devices.yml index 8b95b9dfe2..01fe26f871 100644 --- a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/devices.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: EncryptionKeySyndie result: EncryptionKeySyndie - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 100 @@ -10,7 +10,7 @@ - type: latheRecipe id: JetpackBlue result: JetpackBlue - completetime: 10 + completeTime: 10 materials: Steel: 8000 Plastic: 8000 @@ -19,7 +19,7 @@ - type: latheRecipe id: JetpackMini result: JetpackMini - completetime: 10 + completeTime: 10 materials: Steel: 4000 Plastic: 4000 diff --git a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml index 695fb42150..e1a417fb4b 100644 --- a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: ReverseEngineeringMachineCircuitboard result: ReverseEngineeringMachineCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 700 @@ -10,7 +10,7 @@ - type: latheRecipe id: SalvageMagnetMachineCircuitboard result: SalvageMagnetMachineCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 700 @@ -19,7 +19,7 @@ - type: latheRecipe id: CrewMonitoringComputerCircuitboard result: CrewMonitoringComputerCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 700 @@ -28,7 +28,7 @@ id: ClothingEyesHudMedical icon: { sprite: Clothing/Eyes/Hud/med.rsi, state: icon } result: ClothingEyesHudMedical - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 300 @@ -38,7 +38,7 @@ id: DeepFryerMachineCircuitboard icon: { sprite: Objects/Misc/module.rsi, state: id_mod } result: DeepFryerMachineCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 700 diff --git a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/security.yml b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/security.yml index 34aa7e7ce8..4f525b4897 100644 --- a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/security.yml @@ -4,7 +4,7 @@ sprite: Nyanotrasen/Clothing/Head/Hats/cage.rsi state: icon result: ClothingHeadCage - completetime: 4 + completeTime: 4 materials: Steel: 400 Bluespace: 20 @@ -12,7 +12,7 @@ - type: latheRecipe id: ClothingHeadHelmetInsulated result: ClothingHeadHelmetInsulated - completetime: 4 + completeTime: 4 materials: Steel: 400 Bluespace: 20 @@ -23,7 +23,7 @@ sprite: Nyanotrasen/Clothing/Neck/Misc/shock.rsi state: icon result: ShockCollar - completetime: 2 + completeTime: 2 materials: Steel: 300 Glass: 100 @@ -35,7 +35,7 @@ sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi state: practice result: ShellSoulbreaker - completetime: 4 + completeTime: 4 materials: Plastic: 15 Steel: 10 diff --git a/Resources/Prototypes/Recipes/Lathes/Parts.yml b/Resources/Prototypes/Recipes/Lathes/Parts.yml index 4534bf6097..ed6a4d7c4e 100644 --- a/Resources/Prototypes/Recipes/Lathes/Parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/Parts.yml @@ -3,7 +3,7 @@ id: CapacitorStockPart result: CapacitorStockPart category: Parts - completetime: 1 + completeTime: 1 materials: Steel: 50 Plastic: 50 @@ -12,7 +12,7 @@ id: MatterBinStockPart result: MatterBinStockPart category: Parts - completetime: 1 + completeTime: 1 materials: Steel: 50 Plastic: 50 @@ -21,7 +21,7 @@ id: MicroManipulatorStockPart result: MicroManipulatorStockPart category: Parts - completetime: 1 + completeTime: 1 materials: Steel: 50 Plastic: 50 @@ -30,7 +30,7 @@ - type: latheRecipe id: AdvancedCapacitorStockPart result: AdvancedCapacitorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 80 Plastic: 80 @@ -39,7 +39,7 @@ - type: latheRecipe id: AdvancedMatterBinStockPart result: AdvancedMatterBinStockPart - completetime: 3 + completeTime: 3 materials: Steel: 80 Plastic: 80 @@ -48,7 +48,7 @@ - type: latheRecipe id: NanoManipulatorStockPart result: NanoManipulatorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 80 Plastic: 80 @@ -58,7 +58,7 @@ - type: latheRecipe id: SuperCapacitorStockPart result: SuperCapacitorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 @@ -68,7 +68,7 @@ - type: latheRecipe id: SuperMatterBinStockPart result: SuperMatterBinStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 @@ -78,7 +78,7 @@ - type: latheRecipe id: PicoManipulatorStockPart result: PicoManipulatorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 @@ -89,7 +89,7 @@ - type: latheRecipe id: BluespaceCapacitorStockPart result: BluespaceCapacitorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 @@ -99,7 +99,7 @@ - type: latheRecipe id: BluespaceMatterBinStockPart result: BluespaceMatterBinStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 @@ -109,7 +109,7 @@ - type: latheRecipe id: BluespaceManipulatorStockPart result: BluespaceManipulatorStockPart - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 150 diff --git a/Resources/Prototypes/Recipes/Lathes/botany.yml b/Resources/Prototypes/Recipes/Lathes/botany.yml index 010beb491a..05491f16bb 100644 --- a/Resources/Prototypes/Recipes/Lathes/botany.yml +++ b/Resources/Prototypes/Recipes/Lathes/botany.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: MiniHoe result: HydroponicsToolMiniHoe - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 100 @@ -9,7 +9,7 @@ - type: latheRecipe id: HydroponicsToolScythe result: HydroponicsToolScythe - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 200 @@ -17,7 +17,7 @@ - type: latheRecipe id: HydroponicsToolHatchet result: HydroponicsToolHatchet - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 100 @@ -25,7 +25,7 @@ - type: latheRecipe id: Spade result: HydroponicsToolSpade - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 100 @@ -33,7 +33,7 @@ - type: latheRecipe id: Clippers result: HydroponicsToolClippers - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/cargo.yml b/Resources/Prototypes/Recipes/Lathes/cargo.yml index 630dc1d062..09660ef35c 100644 --- a/Resources/Prototypes/Recipes/Lathes/cargo.yml +++ b/Resources/Prototypes/Recipes/Lathes/cargo.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: ConveyorBeltAssembly result: ConveyorBeltAssembly - completetime: 4 + completeTime: 4 materials: Steel: 500 Plastic: 50 @@ -9,6 +9,6 @@ - type: latheRecipe id: AppraisalTool result: AppraisalTool - completetime: 4 + completeTime: 4 materials: Steel: 500 diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index 7ee8f1ed49..ed80263b17 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -1,21 +1,21 @@ - type: latheRecipe id: Beaker result: Beaker - completetime: 2 + completeTime: 2 materials: Glass: 100 - type: latheRecipe id: LargeBeaker result: LargeBeaker - completetime: 2 + completeTime: 2 materials: Glass: 200 - type: latheRecipe id: CryostasisBeaker result: CryostasisBeaker - completetime: 2 + completeTime: 2 materials: Steel: 250 Plastic: 50 @@ -23,7 +23,7 @@ - type: latheRecipe id: SyringeCryostasis result: SyringeCryostasis - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 @@ -31,7 +31,7 @@ - type: latheRecipe id: Dropper result: Dropper - completetime: 2 + completeTime: 2 materials: Glass: 200 Plastic: 100 @@ -39,7 +39,7 @@ - type: latheRecipe id: Syringe result: Syringe - completetime: 2 + completeTime: 2 materials: Plastic: 100 Steel: 25 @@ -47,7 +47,7 @@ - type: latheRecipe id: BluespaceBeaker result: BluespaceBeaker - completetime: 2 + completeTime: 2 materials: Steel: 200 #Cheaper Due to Needing Bluespace Plastic: 200 @@ -58,7 +58,7 @@ - type: latheRecipe id: SyringeBluespace result: SyringeBluespace - completetime: 2 + completeTime: 2 materials: Steel: 100 #Cheaper Due to Needing Bluespace Plastic: 100 @@ -70,14 +70,14 @@ - type: latheRecipe id: PillCanister result: PillCanister - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: ChemistryEmptyBottle01 result: ChemistryEmptyBottle01 - completetime: 2 + completeTime: 2 materials: Glass: 50 @@ -87,7 +87,7 @@ # sprite: Objects/Consumable/Smokeables/Vapes/vape-standard.rsi # state: icon # result: Vape -# completetime: 2 +# completeTime: 2 # materials: # Plastic: 100 # Steel: 250 @@ -95,7 +95,7 @@ - type: latheRecipe id: ClothingEyesGlassesChemical result: ClothingEyesGlassesChemical - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 300 diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index b06a7732fd..dc4c7f5f09 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -3,35 +3,35 @@ - type: latheRecipe id: ClothingUniformJumpsuitColorGrey # Tide result: ClothingUniformJumpsuitColorGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtColorGrey result: ClothingUniformJumpskirtColorGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitBartender result: ClothingUniformJumpsuitBartender - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtBartender result: ClothingUniformJumpskirtBartender - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitCaptain result: ClothingUniformJumpsuitCaptain - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -39,7 +39,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitCapFormal result: ClothingUniformJumpsuitCapFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -48,7 +48,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtCapFormalDress result: ClothingUniformJumpskirtCapFormalDress - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -56,7 +56,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtCaptain result: ClothingUniformJumpskirtCaptain - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -64,28 +64,28 @@ - type: latheRecipe id: ClothingUniformJumpsuitCargo result: ClothingUniformJumpsuitCargo - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtCargo result: ClothingUniformJumpskirtCargo - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSalvageSpecialist result: ClothingUniformJumpsuitSalvageSpecialist - completetime: 4 + completeTime: 4 materials: Cloth: 500 #It's armored but I don't want to include durathread for a non-head - type: latheRecipe id: ClothingUniformJumpsuitCentcomAgent result: ClothingUniformJumpsuitCentcomAgent - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -93,7 +93,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitCentcomFormal result: ClothingUniformJumpsuitCentcomFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -101,7 +101,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtCentcomFormalDress result: ClothingUniformJumpskirtCentcomFormalDress - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -109,7 +109,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitCentcomOfficer result: ClothingUniformJumpsuitCentcomOfficer - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -117,7 +117,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitCentcomOfficial result: ClothingUniformJumpsuitCentcomOfficial - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -125,7 +125,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitChiefEngineer result: ClothingUniformJumpsuitChiefEngineer - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -133,7 +133,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtChiefEngineer result: ClothingUniformJumpskirtChiefEngineer - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -141,70 +141,70 @@ - type: latheRecipe id: ClothingUniformJumpsuitChiefEngineerTurtle result: ClothingUniformJumpsuitChiefEngineerTurtle - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtChiefEngineerTurtle result: ClothingUniformJumpskirtChiefEngineerTurtle - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitChaplain result: ClothingUniformJumpsuitChaplain - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtChaplain result: ClothingUniformJumpskirtChaplain - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitChef result: ClothingUniformJumpsuitChef - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtChef result: ClothingUniformJumpskirtChef - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitChemistry result: ClothingUniformJumpsuitChemistry - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtChemistry result: ClothingUniformJumpskirtChemistry - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitClown result: ClothingUniformJumpsuitClown - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitCMO result: ClothingUniformJumpsuitCMO - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -212,7 +212,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtCMO result: ClothingUniformJumpskirtCMO - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -220,7 +220,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitCMOTurtle result: ClothingUniformJumpsuitCMOTurtle - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -228,7 +228,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtCMOTurtle result: ClothingUniformJumpskirtCMOTurtle - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -236,49 +236,49 @@ - type: latheRecipe id: ClothingUniformJumpsuitDetective result: ClothingUniformJumpsuitDetective - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtDetective result: ClothingUniformJumpskirtDetective - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitEngineering result: ClothingUniformJumpsuitEngineering - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtEngineering result: ClothingUniformJumpskirtEngineering - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSeniorEngineer result: ClothingUniformJumpsuitSeniorEngineer - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSeniorEngineer result: ClothingUniformJumpskirtSeniorEngineer - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitHoP result: ClothingUniformJumpsuitHoP - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -286,7 +286,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtHoP result: ClothingUniformJumpskirtHoP - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -294,7 +294,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHoS result: ClothingUniformJumpsuitHoS - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -302,7 +302,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtHoS result: ClothingUniformJumpskirtHoS - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -310,7 +310,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHosFormal result: ClothingUniformJumpsuitHosFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -318,7 +318,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtHosFormal result: ClothingUniformJumpskirtHosFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -326,7 +326,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHoSParadeMale result: ClothingUniformJumpsuitHoSParadeMale - completetime: 5 + completeTime: 5 materials: Cloth: 300 Durathread: 100 @@ -334,7 +334,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtHoSParadeMale result: ClothingUniformJumpskirtHoSParadeMale - completetime: 5 + completeTime: 5 materials: Cloth: 300 Durathread: 100 @@ -342,7 +342,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHoSAlt result: ClothingUniformJumpsuitHoSAlt - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -350,7 +350,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHoSBlue result: ClothingUniformJumpsuitHoSBlue - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -358,7 +358,7 @@ - type: latheRecipe id: ClothingUniformJumpsuitHoSGrey result: ClothingUniformJumpsuitHoSGrey - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -366,7 +366,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtHoSAlt result: ClothingUniformJumpskirtHoSAlt - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -374,196 +374,196 @@ - type: latheRecipe id: ClothingUniformJumpsuitHydroponics result: ClothingUniformJumpsuitHydroponics - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtHydroponics result: ClothingUniformJumpskirtHydroponics - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitJanitor result: ClothingUniformJumpsuitJanitor - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtJanitor result: ClothingUniformJumpskirtJanitor - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitLawyerBlack result: ClothingUniformJumpsuitLawyerBlack - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitLibrarian result: ClothingUniformJumpsuitLibrarian - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtColorLightBrown #Librarian result: ClothingUniformJumpskirtColorLightBrown - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitMedicalDoctor result: ClothingUniformJumpsuitMedicalDoctor - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtMedicalDoctor result: ClothingUniformJumpskirtMedicalDoctor - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSeniorPhysician result: ClothingUniformJumpsuitSeniorPhysician - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSeniorPhysician result: ClothingUniformJumpskirtSeniorPhysician - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitMime result: ClothingUniformJumpsuitMime - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtMime result: ClothingUniformJumpskirtMime - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitMusician result: ClothingUniformJumpsuitMusician - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitOperative result: ClothingUniformJumpsuitOperative - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtOperative result: ClothingUniformJumpskirtOperative - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitParamedic result: ClothingUniformJumpsuitParamedic - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtParamedic result: ClothingUniformJumpskirtParamedic - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSeniorOfficer result: ClothingUniformJumpsuitSeniorOfficer - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSeniorOfficer result: ClothingUniformJumpskirtSeniorOfficer - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitPrisoner result: ClothingUniformJumpsuitPrisoner - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtPrisoner result: ClothingUniformJumpskirtPrisoner - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitQM result: ClothingUniformJumpsuitQM - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitQMFormal result: ClothingUniformJumpsuitQMFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtQM result: ClothingUniformJumpskirtQM - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitQMTurtleneck result: ClothingUniformJumpsuitQMTurtleneck - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtQMTurtleneck result: ClothingUniformJumpskirtQMTurtleneck - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitResearchDirector result: ClothingUniformJumpsuitResearchDirector - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -571,7 +571,7 @@ - type: latheRecipe id: ClothingUniformJumpskirtResearchDirector result: ClothingUniformJumpskirtResearchDirector - completetime: 4 + completeTime: 4 materials: Cloth: 300 Durathread: 100 @@ -579,112 +579,112 @@ - type: latheRecipe id: ClothingUniformJumpsuitScientist result: ClothingUniformJumpsuitScientist - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtScientist result: ClothingUniformJumpskirtScientist - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSeniorResearcher result: ClothingUniformJumpsuitSeniorResearcher - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSeniorResearcher result: ClothingUniformJumpskirtSeniorResearcher - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSec result: ClothingUniformJumpsuitSec - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSec result: ClothingUniformJumpskirtSec - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitBrigmedic result: ClothingUniformJumpsuitBrigmedic - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtBrigmedic result: ClothingUniformJumpskirtBrigmedic - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitSyndieFormal result: ClothingUniformJumpsuitSyndieFormal - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtSyndieFormalDress result: ClothingUniformJumpskirtSyndieFormalDress - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitPyjamaSyndicateBlack result: ClothingUniformJumpsuitPyjamaSyndicateBlack - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitPyjamaSyndicatePink result: ClothingUniformJumpsuitPyjamaSyndicatePink - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitPyjamaSyndicateRed result: ClothingUniformJumpsuitPyjamaSyndicateRed - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpsuitWarden result: ClothingUniformJumpsuitWarden - completetime: 4 + completeTime: 4 materials: Cloth: 300 - type: latheRecipe id: ClothingUniformJumpskirtWarden result: ClothingUniformJumpskirtWarden - completetime: 4 + completeTime: 4 materials: Cloth: 300 # Command winter coats - type: latheRecipe id: ClothingOuterWinterCap result: ClothingOuterWinterCap - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -692,7 +692,7 @@ - type: latheRecipe id: ClothingOuterWinterCE result: ClothingOuterWinterCE - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -700,7 +700,7 @@ - type: latheRecipe id: ClothingOuterWinterCentcom result: ClothingOuterWinterCentcom - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -708,7 +708,7 @@ - type: latheRecipe id: ClothingOuterWinterCMO result: ClothingOuterWinterCMO - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 500 @@ -716,7 +716,7 @@ - type: latheRecipe id: ClothingOuterWinterHoP result: ClothingOuterWinterHoP - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -724,7 +724,7 @@ - type: latheRecipe id: ClothingOuterWinterHoSUnarmored result: ClothingOuterWinterHoSUnarmored - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -732,7 +732,7 @@ - type: latheRecipe id: ClothingOuterWinterWardenUnarmored result: ClothingOuterWinterWardenUnarmored - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -740,7 +740,7 @@ - type: latheRecipe id: ClothingOuterWinterQM result: ClothingOuterWinterQM - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -748,7 +748,7 @@ - type: latheRecipe id: ClothingOuterWinterRD result: ClothingOuterWinterRD - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -756,7 +756,7 @@ - type: latheRecipe id: ClothingNeckMantleCap result: ClothingNeckMantleCap - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -764,7 +764,7 @@ - type: latheRecipe id: ClothingNeckMantleCE result: ClothingNeckMantleCE - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -772,7 +772,7 @@ - type: latheRecipe id: ClothingNeckMantleCMO result: ClothingNeckMantleCMO - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -780,7 +780,7 @@ - type: latheRecipe id: ClothingNeckMantleHOP result: ClothingNeckMantleHOP - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -788,7 +788,7 @@ - type: latheRecipe id: ClothingNeckMantleHOS result: ClothingNeckMantleHOS - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -796,7 +796,7 @@ - type: latheRecipe id: ClothingNeckMantleRD result: ClothingNeckMantleRD - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -804,7 +804,7 @@ - type: latheRecipe id: ClothingNeckMantleQM result: ClothingNeckMantleQM - completetime: 2.8 + completeTime: 2.8 materials: Cloth: 200 Durathread: 150 @@ -812,7 +812,7 @@ - type: latheRecipe id: ClothingOuterWinterMusician result: ClothingOuterWinterMusician - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -820,7 +820,7 @@ - type: latheRecipe id: ClothingOuterWinterClown result: ClothingOuterWinterClown - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -828,7 +828,7 @@ - type: latheRecipe id: ClothingOuterWinterMime result: ClothingOuterWinterMime - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -836,7 +836,7 @@ - type: latheRecipe id: ClothingOuterWinterCoat result: ClothingOuterWinterCoat - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -844,7 +844,7 @@ - type: latheRecipe id: ClothingOuterWinterJani result: ClothingOuterWinterJani - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -852,7 +852,7 @@ - type: latheRecipe id: ClothingOuterWinterBar result: ClothingOuterWinterBar - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -860,7 +860,7 @@ - type: latheRecipe id: ClothingOuterWinterChef result: ClothingOuterWinterChef - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -868,7 +868,7 @@ - type: latheRecipe id: ClothingOuterWinterHydro result: ClothingOuterWinterHydro - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -876,7 +876,7 @@ - type: latheRecipe id: ClothingOuterWinterAtmos result: ClothingOuterWinterAtmos - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -884,7 +884,7 @@ - type: latheRecipe id: ClothingOuterWinterEngi result: ClothingOuterWinterEngi - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -892,7 +892,7 @@ - type: latheRecipe id: ClothingOuterWinterCargo result: ClothingOuterWinterCargo - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -900,7 +900,7 @@ - type: latheRecipe id: ClothingOuterWinterMiner result: ClothingOuterWinterMiner - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -908,7 +908,7 @@ - type: latheRecipe id: ClothingOuterWinterMed result: ClothingOuterWinterMed - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -916,7 +916,7 @@ - type: latheRecipe id: ClothingOuterWinterPara result: ClothingOuterWinterPara - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 450 @@ -924,7 +924,7 @@ - type: latheRecipe id: ClothingOuterWinterChem result: ClothingOuterWinterChem - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 500 @@ -932,7 +932,7 @@ - type: latheRecipe id: ClothingOuterWinterGen result: ClothingOuterWinterGen - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -940,7 +940,7 @@ - type: latheRecipe id: ClothingOuterWinterViro result: ClothingOuterWinterViro - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -948,7 +948,7 @@ - type: latheRecipe id: ClothingOuterWinterSci result: ClothingOuterWinterSci - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 400 @@ -956,7 +956,7 @@ - type: latheRecipe id: ClothingOuterWinterRobo result: ClothingOuterWinterRobo - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -964,7 +964,7 @@ - type: latheRecipe id: ClothingOuterWinterSec result: ClothingOuterWinterSec - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -972,7 +972,7 @@ - type: latheRecipe id: ClothingOuterWinterSyndie result: ClothingOuterWinterSyndie - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -980,7 +980,7 @@ - type: latheRecipe id: ClothingOuterWinterSyndieCap result: ClothingOuterWinterSyndieCap - completetime: 3.2 + completeTime: 3.2 materials: Cloth: 500 Durathread: 300 @@ -988,7 +988,7 @@ - type: latheRecipe id: ClothingHeadHatCaptain result: ClothingHeadHatCaptain - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -996,7 +996,7 @@ - type: latheRecipe id: ClothingHeadHatCapcap result: ClothingHeadHatCapcap - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1004,7 +1004,7 @@ - type: latheRecipe id: ClothingHeadHatBeretHoS result: ClothingHeadHatBeretHoS - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1012,7 +1012,7 @@ - type: latheRecipe id: ClothingHeadHatHoshat result: ClothingHeadHatHoshat - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1020,7 +1020,7 @@ - type: latheRecipe id: ClothingHeadHatWarden result: ClothingHeadHatWarden - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1028,7 +1028,7 @@ - type: latheRecipe id: ClothingHeadHatBeretWarden result: ClothingHeadHatBeretWarden - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1036,7 +1036,7 @@ - type: latheRecipe id: ClothingHeadHatHopcap result: ClothingHeadHatHopcap - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1044,7 +1044,7 @@ - type: latheRecipe id: ClothingHeadHatQMsoft result: ClothingHeadHatQMsoft - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1052,7 +1052,7 @@ - type: latheRecipe id: ClothingHeadHatBeretRND result: ClothingHeadHatBeretRND - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1060,7 +1060,7 @@ - type: latheRecipe id: ClothingHeadHatBeretEngineering result: ClothingHeadHatBeretEngineering - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1068,7 +1068,7 @@ - type: latheRecipe id: ClothingHeadHatBeretQM result: ClothingHeadHatBeretQM - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1076,7 +1076,7 @@ - type: latheRecipe id: ClothingHeadHatBeretCmo result: ClothingHeadHatBeretCmo - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1084,35 +1084,35 @@ - type: latheRecipe id: ClothingHeadHatBeretMedic result: ClothingHeadHatBeretMedic - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatBeretBrigmedic result: ClothingHeadHatBeretBrigmedic - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatBeretSecurity result: ClothingHeadHatBeretSecurity - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatBeretSeniorPhysician result: ClothingHeadHatBeretSeniorPhysician - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatCentcom result: ClothingHeadHatCentcom - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1120,7 +1120,7 @@ - type: latheRecipe id: ClothingHeadHatCentcomcap result: ClothingHeadHatCentcomcap - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 @@ -1128,182 +1128,182 @@ - type: latheRecipe id: ClothingHeadHatSyndie result: ClothingHeadHatSyndie - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatSyndieMAA result: ClothingHeadHatSyndieMAA - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadPyjamaSyndicateBlack result: ClothingHeadPyjamaSyndicateBlack - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadPyjamaSyndicatePink result: ClothingHeadPyjamaSyndicatePink - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadPyjamaSyndicateRed result: ClothingHeadPyjamaSyndicateRed - completetime: 2 + completeTime: 2 materials: Cloth: 100 - type: latheRecipe id: ClothingHeadHatParamedicsoft result: ClothingHeadHatParamedicsoft - completetime: 1 + completeTime: 1 materials: Cloth: 100 # Ties - type: latheRecipe id: ClothingNeckTieRed result: ClothingNeckTieRed - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckTieDet result: ClothingNeckTieDet - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckTieSci result: ClothingNeckTieSci - completetime: 2 + completeTime: 2 materials: Cloth: 200 # Scarfs - type: latheRecipe id: ClothingNeckScarfStripedGreen result: ClothingNeckScarfStripedGreen - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedBlue result: ClothingNeckScarfStripedBlue - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedRed result: ClothingNeckScarfStripedRed - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedBrown result: ClothingNeckScarfStripedBrown - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedLightBlue result: ClothingNeckScarfStripedLightBlue - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedOrange result: ClothingNeckScarfStripedOrange - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedBlack result: ClothingNeckScarfStripedBlack - completetime: 2 + completeTime: 2 materials: Cloth: 200 - type: latheRecipe id: ClothingNeckScarfStripedPurple result: ClothingNeckScarfStripedPurple - completetime: 2 + completeTime: 2 materials: Cloth: 200 # Carpets - type: latheRecipe id: Carpet result: FloorCarpetItemRed - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetBlack result: FloorCarpetItemBlack - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetPink result: FloorCarpetItemPink - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetBlue result: FloorCarpetItemBlue - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetGreen result: FloorCarpetItemGreen - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetOrange result: FloorCarpetItemOrange - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetPurple result: FloorCarpetItemPurple - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetCyan result: FloorCarpetItemCyan - completetime: 1 + completeTime: 1 materials: Cloth: 100 - type: latheRecipe id: CarpetWhite result: FloorCarpetItemWhite - completetime: 1 + completeTime: 1 materials: Cloth: 100 @@ -1311,7 +1311,7 @@ - type: latheRecipe id: ClothingNeckCollarCmd result: ClothingNeckCollarCmd - completetime: 2 + completeTime: 2 materials: Cloth: 100 Durathread: 50 diff --git a/Resources/Prototypes/Recipes/Lathes/cooking.yml b/Resources/Prototypes/Recipes/Lathes/cooking.yml index bb857937f4..2c27b5223b 100644 --- a/Resources/Prototypes/Recipes/Lathes/cooking.yml +++ b/Resources/Prototypes/Recipes/Lathes/cooking.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: ButchCleaver result: ButchCleaver - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 50 @@ -9,7 +9,7 @@ - type: latheRecipe id: KitchenKnife result: KitchenKnife - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 @@ -17,90 +17,90 @@ - type: latheRecipe id: DrinkMug result: DrinkMug - completetime: 0.8 + completeTime: 0.8 materials: Glass: 100 - type: latheRecipe id: DrinkMugMetal result: DrinkMugMetal - completetime: 0.8 + completeTime: 0.8 materials: Steel: 100 - type: latheRecipe id: DrinkGlass result: DrinkGlass - completetime: 0.8 + completeTime: 0.8 materials: Glass: 100 - type: latheRecipe id: DrinkShotGlass result: DrinkShotGlass - completetime: 0.4 + completeTime: 0.4 materials: Glass: 100 - type: latheRecipe id: DrinkGlassCoupeShaped result: DrinkGlassCoupeShaped - completetime: 0.8 + completeTime: 0.8 materials: Glass: 100 - type: latheRecipe id: CustomDrinkJug result: CustomDrinkJug - completetime: 2 + completeTime: 2 materials: Plastic: 200 - type: latheRecipe id: FoodPlate result: FoodPlate - completetime: 0.8 + completeTime: 0.8 materials: Glass: 100 - type: latheRecipe id: FoodPlateSmall result: FoodPlateSmall - completetime: 0.4 + completeTime: 0.4 materials: Glass: 50 - type: latheRecipe id: FoodPlatePlastic result: FoodPlatePlastic - completetime: 0.8 + completeTime: 0.8 materials: Plastic: 100 - type: latheRecipe id: FoodPlateSmallPlastic result: FoodPlateSmallPlastic - completetime: 0.4 + completeTime: 0.4 materials: Plastic: 50 - type: latheRecipe id: FoodBowlBig result: FoodBowlBig - completetime: 0.8 + completeTime: 0.8 materials: Glass: 100 - type: latheRecipe id: FoodPlateTin result: FoodPlateTin - completetime: 0.4 + completeTime: 0.4 materials: Steel: 100 - type: latheRecipe id: FoodKebabSkewer result: FoodKebabSkewer - completetime: 0.4 + completeTime: 0.4 materials: Steel: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index 2b0d6fa44f..f864d259d5 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -2,7 +2,7 @@ id: TimerTrigger result: TimerTrigger category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 200 @@ -11,7 +11,7 @@ id: SignalTrigger result: SignalTrigger category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 200 @@ -20,7 +20,7 @@ id: VoiceTrigger result: VoiceTrigger category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 200 @@ -29,7 +29,7 @@ id: Igniter result: Igniter category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 100 @@ -39,7 +39,7 @@ id: ChemicalPayload result: ChemicalPayload category: Weapons - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 300 @@ -48,7 +48,7 @@ id: FlashPayload result: FlashPayload category: Weapons - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 100 @@ -59,7 +59,7 @@ id: ExplosivePayload result: ExplosivePayload category: Weapons - completetime: 4 + completeTime: 4 materials: Steel: 100 Plastic: 100 @@ -71,7 +71,7 @@ id: Signaller result: RemoteSignaller category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 200 @@ -81,7 +81,7 @@ id: SignallerAdvanced result: RemoteSignallerAdvanced category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 200 @@ -91,7 +91,7 @@ id: AnomalyLocator result: AnomalyLocatorEmpty category: Tools - completetime: 3 + completeTime: 3 materials: Steel: 400 Glass: 100 @@ -100,7 +100,7 @@ id: AnomalyLocatorWide result: AnomalyLocatorWideEmpty category: Tools - completetime: 3 + completeTime: 3 materials: Steel: 400 Glass: 100 @@ -109,7 +109,7 @@ id: AnomalyScanner result: AnomalyScanner category: Tools - completetime: 2 + completeTime: 2 materials: Plastic: 200 Glass: 150 @@ -118,7 +118,7 @@ id: WeaponPistolCHIMP result: WeaponPistolCHIMP category: Tools - completetime: 5 + completeTime: 5 materials: Steel: 500 Glass: 400 @@ -127,7 +127,7 @@ id: WeaponGauntletGorilla result: WeaponGauntletGorilla category: Tools - completetime: 5 + completeTime: 5 materials: Steel: 1500 Plastic: 300 @@ -138,7 +138,7 @@ - type: latheRecipe id: ClothingBackpackHolding result: ClothingBackpackHolding - completetime: 5 + completeTime: 5 materials: Steel: 2000 Silver: 750 @@ -149,7 +149,7 @@ - type: latheRecipe id: ClothingBackpackSatchelHolding result: ClothingBackpackSatchelHolding - completetime: 5 + completeTime: 5 materials: Steel: 2000 Silver: 750 @@ -160,7 +160,7 @@ - type: latheRecipe id: ClothingBackpackDuffelHolding result: ClothingBackpackDuffelHolding - completetime: 5 + completeTime: 5 materials: Steel: 2000 Silver: 750 @@ -171,7 +171,7 @@ - type: latheRecipe id: OreBagOfHolding result: OreBagOfHolding - completetime: 5 + completeTime: 5 materials: Steel: 2000 Silver: 750 @@ -181,7 +181,7 @@ - type: latheRecipe id: ClothingMaskWeldingGas result: ClothingMaskWeldingGas - completetime: 3 + completeTime: 3 materials: Steel: 600 Glass: 200 @@ -190,7 +190,7 @@ id: WeaponForceGun result: WeaponForceGun category: Tools - completetime: 5 + completeTime: 5 materials: Steel: 500 Glass: 400 @@ -199,7 +199,7 @@ - type: latheRecipe id: DeviceQuantumSpinInverter result: DeviceQuantumSpinInverter - completetime: 5 + completeTime: 5 materials: Steel: 700 Glass: 100 @@ -209,7 +209,7 @@ id: WeaponProtoKineticAccelerator result: WeaponProtoKineticAccelerator category: Weapons - completetime: 5 + completeTime: 5 materials: Steel: 1000 Glass: 500 @@ -219,7 +219,7 @@ id: WeaponTetherGun result: WeaponTetherGun category: Tools - completetime: 5 + completeTime: 5 materials: Steel: 500 Glass: 400 @@ -229,7 +229,7 @@ id: WeaponGrapplingGun result: WeaponGrapplingGun category: Tools - completetime: 5 + completeTime: 5 materials: Steel: 500 Glass: 400 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index af258ad31b..153f681592 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -2,7 +2,7 @@ id: FirelockElectronics result: FirelockElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 300 @@ -11,7 +11,7 @@ id: MailingUnitElectronics result: MailingUnitElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Plastic: 300 @@ -20,7 +20,7 @@ id: CellRechargerCircuitboard result: CellRechargerCircuitboard category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 50 @@ -29,7 +29,7 @@ id: BorgChargerCircuitboard result: BorgChargerCircuitboard category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 50 @@ -38,7 +38,7 @@ id: WeaponCapacitorRechargerCircuitboard result: WeaponCapacitorRechargerCircuitboard category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 50 @@ -47,7 +47,7 @@ id: TurboItemRechargerCircuitboard result: TurboItemRechargerCircuitboard category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 500 Plastic: 500 @@ -57,7 +57,7 @@ id: DoorElectronics result: DoorElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 300 @@ -66,7 +66,7 @@ id: AirAlarmElectronics result: AirAlarmElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 300 @@ -75,7 +75,7 @@ id: StationMapElectronics result: StationMapCircuitboard category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 50 @@ -84,7 +84,7 @@ id: IntercomElectronics result: IntercomElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 300 @@ -93,7 +93,7 @@ id: FireAlarmElectronics result: FireAlarmElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 300 @@ -102,7 +102,7 @@ id: SignalTimerElectronics result: SignalTimerElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Plastic: 50 @@ -111,7 +111,7 @@ id: CloningPodMachineCircuitboard result: CloningPodMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -120,7 +120,7 @@ - type: latheRecipe id: MetempsychoticMachineCircuitboard result: MetempsychoticMachineCircuitboard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 900 @@ -130,7 +130,7 @@ id: ThermomachineFreezerMachineCircuitBoard result: ThermomachineFreezerMachineCircuitBoard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 150 Glass: 500 @@ -140,7 +140,7 @@ id: HellfireFreezerMachineCircuitBoard result: HellfireFreezerMachineCircuitBoard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 150 Glass: 500 @@ -150,7 +150,7 @@ id: CondenserMachineCircuitBoard result: CondenserMachineCircuitBoard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -159,7 +159,7 @@ id: PortableScrubberMachineCircuitBoard result: PortableScrubberMachineCircuitBoard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 150 Glass: 500 @@ -169,7 +169,7 @@ id: SpaceHeaterMachineCircuitBoard result: SpaceHeaterMachineCircuitBoard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 150 Glass: 500 @@ -179,7 +179,7 @@ id: MedicalScannerMachineCircuitboard result: MedicalScannerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -188,7 +188,7 @@ id: CryoPodMachineCircuitboard result: CryoPodMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -198,7 +198,7 @@ id: ChemMasterMachineCircuitboard result: ChemMasterMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -207,7 +207,7 @@ id: ChemDispenserMachineCircuitboard result: ChemDispenserMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -217,7 +217,7 @@ id: BiomassReclaimerMachineCircuitboard result: BiomassReclaimerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -227,7 +227,7 @@ id: BiofabricatorMachineCircuitboard result: BiofabricatorMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -237,7 +237,7 @@ id: HydroponicsTrayMachineCircuitboard result: HydroponicsTrayMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -246,7 +246,7 @@ id: AutolatheMachineCircuitboard result: AutolatheMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -255,7 +255,7 @@ id: ProtolatheMachineCircuitboard result: ProtolatheMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -264,7 +264,7 @@ id: AutolatheHyperConvectionMachineCircuitboard result: AutolatheHyperConvectionMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -274,7 +274,7 @@ id: ProtolatheHyperConvectionMachineCircuitboard result: ProtolatheHyperConvectionMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -284,7 +284,7 @@ id: CircuitImprinterMachineCircuitboard result: CircuitImprinterMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -293,7 +293,7 @@ id: CircuitImprinterHyperConvectionMachineCircuitboard result: CircuitImprinterHyperConvectionMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 900 @@ -304,7 +304,7 @@ id: ExosuitFabricatorMachineCircuitboard result: ExosuitFabricatorMachineCircuitboard category: Circuitry - completetime: 5 + completeTime: 5 materials: Steel: 100 Glass: 500 @@ -313,7 +313,7 @@ id: UniformPrinterMachineCircuitboard result: UniformPrinterMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -322,7 +322,7 @@ id: VaccinatorMachineCircuitboard result: VaccinatorMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -332,7 +332,7 @@ id: DiagnoserMachineCircuitboard result: DiagnoserMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -342,7 +342,7 @@ id: ArtifactAnalyzerMachineCircuitboard result: ArtifactAnalyzerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -352,7 +352,7 @@ id: ArtifactCrusherMachineCircuitboard result: ArtifactCrusherMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -362,7 +362,7 @@ id: AnomalyVesselCircuitboard result: AnomalyVesselCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -371,7 +371,7 @@ id: AnomalyVesselExperimentalCircuitboard result: AnomalyVesselExperimentalCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -381,7 +381,7 @@ id: AnomalySynchronizerCircuitboard result: AnomalySynchronizerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 700 @@ -391,7 +391,7 @@ id: APECircuitboard result: APECircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -400,7 +400,7 @@ id: ReagentGrinderMachineCircuitboard result: ReagentGrinderMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -409,7 +409,7 @@ id: HotplateMachineCircuitboard result: HotplateMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -418,7 +418,7 @@ id: AnalysisComputerCircuitboard result: AnalysisComputerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -428,7 +428,7 @@ id: TechDiskComputerCircuitboard result: TechDiskComputerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -438,7 +438,7 @@ id: ShuttleConsoleCircuitboard result: ShuttleConsoleCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -448,7 +448,7 @@ id: RadarConsoleCircuitboard result: RadarConsoleCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -457,7 +457,7 @@ id: DawInstrumentMachineCircuitboard result: DawInstrumentMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -466,7 +466,7 @@ id: StasisBedMachineCircuitboard result: StasisBedMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -476,7 +476,7 @@ id: ElectrolysisUnitMachineCircuitboard result: ElectrolysisUnitMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -485,7 +485,7 @@ id: CentrifugeMachineCircuitboard result: CentrifugeMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -494,7 +494,7 @@ id: MaterialReclaimerMachineCircuitboard result: MaterialReclaimerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -503,7 +503,7 @@ id: OreProcessorMachineCircuitboard result: OreProcessorMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -512,7 +512,7 @@ id: OreProcessorIndustrialMachineCircuitboard result: OreProcessorIndustrialMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -522,7 +522,7 @@ id: RipleyCentralElectronics result: RipleyCentralElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -532,7 +532,7 @@ id: RipleyPeripheralsElectronics result: RipleyPeripheralsElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -542,7 +542,7 @@ id: HonkerCentralElectronics result: HonkerCentralElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -552,7 +552,7 @@ id: HonkerPeripheralsElectronics result: HonkerPeripheralsElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -562,7 +562,7 @@ id: HonkerTargetingElectronics result: HonkerTargetingElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -572,7 +572,7 @@ id: HamtrCentralElectronics result: HamtrCentralElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -582,7 +582,7 @@ id: HamtrPeripheralsElectronics result: HamtrPeripheralsElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -593,7 +593,7 @@ id: APCElectronics result: APCElectronics category: Circuitry - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 250 @@ -602,7 +602,7 @@ id: SubstationMachineCircuitboard result: SubstationMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 450 @@ -611,7 +611,7 @@ id: WallmountSubstationElectronics result: WallmountSubstationElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 450 @@ -620,7 +620,7 @@ id: SMESMachineCircuitboard result: SMESMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -629,7 +629,7 @@ id: PortableGeneratorPacmanMachineCircuitboard result: PortableGeneratorPacmanMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 350 @@ -638,7 +638,7 @@ id: PortableGeneratorSuperPacmanMachineCircuitboard result: PortableGeneratorSuperPacmanMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 350 @@ -647,7 +647,7 @@ id: PortableGeneratorJrPacmanMachineCircuitboard result: PortableGeneratorJrPacmanMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 350 @@ -656,7 +656,7 @@ id: WallmountGeneratorElectronics result: WallmountGeneratorElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 150 @@ -665,7 +665,7 @@ id: WallmountGeneratorAPUElectronics result: WallmountGeneratorAPUElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 50 Glass: 350 @@ -674,7 +674,7 @@ id: SolarControlComputerCircuitboard result: SolarControlComputerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -683,7 +683,7 @@ id: SolarTrackerElectronics result: SolarTrackerElectronics category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 150 Glass: 600 @@ -692,7 +692,7 @@ id: PowerComputerCircuitboard result: PowerComputerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -701,7 +701,7 @@ id: CloningConsoleComputerCircuitboard result: CloningConsoleComputerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -710,7 +710,7 @@ id: MicrowaveMachineCircuitboard result: MicrowaveMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -719,7 +719,7 @@ id: ElectricGrillMachineCircuitboard result: ElectricGrillMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -728,7 +728,7 @@ id: FatExtractorMachineCircuitboard result: FatExtractorMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -737,7 +737,7 @@ id: FlatpackerMachineCircuitboard result: FlatpackerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -747,7 +747,7 @@ id: SheetifierMachineCircuitboard result: SheetifierMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -756,7 +756,7 @@ id: SurveillanceCameraRouterCircuitboard result: SurveillanceCameraRouterCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -765,7 +765,7 @@ id: SurveillanceCameraWirelessRouterCircuitboard result: SurveillanceCameraWirelessRouterCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -774,7 +774,7 @@ id: SurveillanceWirelessCameraAnchoredCircuitboard result: SurveillanceWirelessCameraAnchoredCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -783,7 +783,7 @@ id: SurveillanceWirelessCameraMovableCircuitboard result: SurveillanceWirelessCameraMovableCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -792,7 +792,7 @@ id: SurveillanceCameraMonitorCircuitboard result: SurveillanceCameraMonitorCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -801,7 +801,7 @@ id: SurveillanceWirelessCameraMonitorCircuitboard result: SurveillanceWirelessCameraMonitorCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -810,7 +810,7 @@ id: ComputerTelevisionCircuitboard result: ComputerTelevisionCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -819,7 +819,7 @@ id: EmitterCircuitboard result: EmitterCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -828,7 +828,7 @@ id: ThrusterMachineCircuitboard result: ThrusterMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -837,7 +837,7 @@ id: GyroscopeMachineCircuitboard result: GyroscopeMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -846,7 +846,7 @@ id: GasRecyclerMachineCircuitboard result: GasRecyclerMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -855,7 +855,7 @@ id: SeedExtractorMachineCircuitboard result: SeedExtractorMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -864,7 +864,7 @@ id: BoozeDispenserMachineCircuitboard result: BoozeDispenserMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -873,7 +873,7 @@ id: CargoTelepadMachineCircuitboard result: CargoTelepadMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -883,7 +883,7 @@ id: SodaDispenserMachineCircuitboard result: SodaDispenserMachineCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -892,7 +892,7 @@ id: TelecomServerCircuitboard result: TelecomServerCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -901,7 +901,7 @@ id: MassMediaCircuitboard result: ComputerMassMediaCircuitboard category: Circuitry - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 @@ -910,7 +910,7 @@ id: MiniGravityGeneratorCircuitboard result: MiniGravityGeneratorCircuitboard category: Circuitry - completetime: 6 + completeTime: 6 materials: Steel: 100 Glass: 500 @@ -919,7 +919,7 @@ - type: latheRecipe id: PowerCageRechargerCircuitboard result: PowerCageRechargerCircuitboard - completetime: 6 + completeTime: 6 materials: Steel: 100 Glass: 500 @@ -927,7 +927,7 @@ - type: latheRecipe id: ShuttleGunSvalinnMachineGunCircuitboard result: ShuttleGunSvalinnMachineGunCircuitboard - completetime: 6 + completeTime: 6 materials: Steel: 100 @@ -936,7 +936,7 @@ - type: latheRecipe id: ShuttleGunPerforatorCircuitboard result: ShuttleGunPerforatorCircuitboard - completetime: 10 + completeTime: 10 materials: Steel: 100 Glass: 500 @@ -945,7 +945,7 @@ - type: latheRecipe id: ShuttleGunKineticCircuitboard result: ShuttleGunKineticCircuitboard - completetime: 6 + completeTime: 6 materials: Steel: 100 Glass: 500 @@ -953,7 +953,7 @@ - type: latheRecipe id: ShuttleGunFriendshipCircuitboard result: ShuttleGunFriendshipCircuitboard - completetime: 8 + completeTime: 8 materials: Steel: 100 Glass: 500 @@ -962,7 +962,7 @@ - type: latheRecipe id: ShuttleGunDusterCircuitboard result: ShuttleGunDusterCircuitboard - completetime: 12 + completeTime: 12 materials: Steel: 100 Glass: 500 @@ -971,7 +971,7 @@ - type: latheRecipe id: ReagentGrinderIndustrialMachineCircuitboard result: ReagentGrinderIndustrialMachineCircuitboard - completetime: 5 + completeTime: 5 materials: Steel: 100 Glass: 500 @@ -980,7 +980,7 @@ - type: latheRecipe id: JukeboxCircuitBoard result: JukeboxCircuitBoard - completetime: 4 + completeTime: 4 materials: Steel: 100 Glass: 500 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/janitorial.yml b/Resources/Prototypes/Recipes/Lathes/janitorial.yml index 9ba7dfa188..f534159440 100644 --- a/Resources/Prototypes/Recipes/Lathes/janitorial.yml +++ b/Resources/Prototypes/Recipes/Lathes/janitorial.yml @@ -1,14 +1,14 @@ - type: latheRecipe id: MopItem result: MopItem - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: MopBucket result: MopBucket - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 100 @@ -16,42 +16,42 @@ - type: latheRecipe id: Bucket result: Bucket - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: WetFloorSign result: WetFloorSign - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: MegaSprayBottle result: MegaSprayBottle - completetime: 3 + completeTime: 3 materials: Plastic: 250 - type: latheRecipe id: SprayBottle result: SprayBottle - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: TrashBag result: TrashBag - completetime: 1.2 + completeTime: 1.2 materials: Plastic: 100 - type: latheRecipe id: LightReplacer result: LightReplacerEmpty - completetime: 2.4 + completeTime: 2.4 materials: Steel: 100 Glass: 500 @@ -59,7 +59,7 @@ - type: latheRecipe id: Mousetrap result: Mousetrap - completetime: 1 + completeTime: 1 materials: Wood: 100 Steel: 50 @@ -67,7 +67,7 @@ - type: latheRecipe id: Holoprojector result: HoloprojectorEmpty - completetime: 3 + completeTime: 3 materials: Plastic: 250 Glass: 150 @@ -75,7 +75,7 @@ - type: latheRecipe id: AdvMopItem result: AdvMopItem - completetime: 2 + completeTime: 2 materials: Plastic: 400 Steel: 100 @@ -84,7 +84,7 @@ - type: latheRecipe id: Plunger result: Plunger - completetime: 2 + completeTime: 2 materials: Plastic: 50 Wood: 200 @@ -92,7 +92,7 @@ - type: latheRecipe id: WeaponSprayNozzle result: WeaponSprayNozzle - completetime: 5 + completeTime: 5 materials: Steel: 1500 Glass: 500 @@ -100,7 +100,7 @@ - type: latheRecipe id: ClothingBackpackWaterTank result: ClothingBackpackWaterTank - completetime: 4 + completeTime: 4 materials: Steel: 250 Glass: 1000 diff --git a/Resources/Prototypes/Recipes/Lathes/language.yml b/Resources/Prototypes/Recipes/Lathes/language.yml index 6871ed5228..74ac17c5ef 100644 --- a/Resources/Prototypes/Recipes/Lathes/language.yml +++ b/Resources/Prototypes/Recipes/Lathes/language.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: CanilunztTranslator result: CanilunztTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -11,7 +11,7 @@ - type: latheRecipe id: BubblishTranslator result: BubblishTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -21,7 +21,7 @@ - type: latheRecipe id: NekomimeticTranslator result: NekomimeticTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -31,7 +31,7 @@ - type: latheRecipe id: DraconicTranslator result: DraconicTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -41,7 +41,7 @@ - type: latheRecipe id: SolCommonTranslator result: SolCommonTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -51,7 +51,7 @@ - type: latheRecipe id: RootSpeakTranslator result: RootSpeakTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -61,7 +61,7 @@ - type: latheRecipe id: MofficTranslator result: MofficTranslator - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 100 @@ -71,7 +71,7 @@ - type: latheRecipe id: BasicGalaticCommonTranslatorImplanter result: BasicGalaticCommonTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -82,7 +82,7 @@ - type: latheRecipe id: XenoTranslator result: XenoTranslator - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 @@ -93,7 +93,7 @@ - type: latheRecipe id: AdvancedGalaticCommonTranslatorImplanter result: AdvancedGalaticCommonTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -104,7 +104,7 @@ - type: latheRecipe id: BubblishTranslatorImplanter result: BubblishTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -115,7 +115,7 @@ - type: latheRecipe id: NekomimeticTranslatorImplanter result: NekomimeticTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -126,7 +126,7 @@ - type: latheRecipe id: DraconicTranslatorImplanter result: DraconicTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -137,7 +137,7 @@ - type: latheRecipe id: CanilunztTranslatorImplanter result: CanilunztTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -148,7 +148,7 @@ - type: latheRecipe id: SolCommonTranslatorImplanter result: SolCommonTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -159,7 +159,7 @@ - type: latheRecipe id: RootSpeakTranslatorImplanter result: RootSpeakTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -170,7 +170,7 @@ - type: latheRecipe id: MofficTranslatorImplanter result: MofficTranslatorImplanter - completetime: 2 + completeTime: 2 materials: Steel: 500 Glass: 500 @@ -181,7 +181,7 @@ - type: latheRecipe id: AnimalTranslator result: AnimalTranslator - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 diff --git a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml index 4f9f84d0dc..c12815c93a 100644 --- a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml @@ -3,7 +3,7 @@ id: RipleyHarness result: RipleyHarness category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1500 Glass: 1200 @@ -12,7 +12,7 @@ id: RipleyLArm result: RipleyLArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1000 Glass: 750 @@ -21,7 +21,7 @@ id: RipleyLLeg result: RipleyLLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1000 Glass: 750 @@ -30,7 +30,7 @@ id: RipleyRLeg result: RipleyRLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1000 Glass: 750 @@ -39,7 +39,7 @@ id: RipleyRArm result: RipleyRArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1000 Glass: 750 @@ -48,7 +48,7 @@ id: MechEquipmentGrabber result: MechEquipmentGrabber category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 500 Plastic: 200 @@ -58,7 +58,7 @@ id: HonkerHarness result: HonkerHarness category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 3000 Glass: 1200 @@ -68,7 +68,7 @@ id: HonkerLArm result: HonkerLArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 3000 Glass: 1200 @@ -78,7 +78,7 @@ id: HonkerLLeg result: HonkerLLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 3000 Glass: 1200 @@ -88,7 +88,7 @@ id: HonkerRLeg result: HonkerRLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 3000 Glass: 1200 @@ -98,7 +98,7 @@ id: HonkerRArm result: HonkerRArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 3000 Glass: 1200 @@ -108,7 +108,7 @@ id: MechEquipmentHorn result: MechEquipmentHorn category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 500 Bananium: 200 @@ -118,7 +118,7 @@ id: HamtrHarness result: HamtrHarness category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 1200 Glass: 1000 @@ -127,7 +127,7 @@ id: HamtrLArm result: HamtrLArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 800 Glass: 600 @@ -136,7 +136,7 @@ id: HamtrLLeg result: HamtrLLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 800 Glass: 600 @@ -145,7 +145,7 @@ id: HamtrRLeg result: HamtrRLeg category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 800 Glass: 600 @@ -154,7 +154,7 @@ id: HamtrRArm result: HamtrRArm category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 800 Glass: 600 @@ -163,7 +163,7 @@ id: MechEquipmentGrabberSmall result: MechEquipmentGrabberSmall category: Mech - completetime: 10 + completeTime: 10 materials: Steel: 400 Plastic: 100 @@ -173,7 +173,7 @@ id: VimHarness result: VimHarness category: Mech - completetime: 5 + completeTime: 5 materials: Steel: 500 Glass: 200 diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index 4a8d233cd8..465d594b56 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -2,7 +2,7 @@ id: Scalpel result: Scalpel category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -10,7 +10,7 @@ id: Retractor result: Retractor category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -18,7 +18,7 @@ id: Cautery result: Cautery category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -26,7 +26,7 @@ id: Drill result: Drill category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 100 @@ -35,7 +35,7 @@ id: Saw result: Saw category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -43,21 +43,21 @@ id: Hemostat result: Hemostat category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 - type: latheRecipe id: BodyBag result: BodyBagFolded - completetime: 2 + completeTime: 2 materials: Plastic: 300 - type: latheRecipe id: Brutepack result: Brutepack1 - completetime: 1 + completeTime: 1 materials: Steel: 25 Plastic: 25 @@ -65,7 +65,7 @@ - type: latheRecipe id: Ointment result: Ointment1 - completetime: 1 + completeTime: 1 materials: Glass: 25 Plastic: 25 @@ -73,7 +73,7 @@ - type: latheRecipe id: BoneGel result: BoneGel - completetime: 2 + completeTime: 2 materials: Plastic: 200 Plasma: 200 @@ -81,7 +81,7 @@ - type: latheRecipe id: Gauze result: Gauze1 - completetime: 1 + completeTime: 1 materials: Cloth: 200 @@ -89,7 +89,7 @@ id: HandheldCrewMonitor result: HandheldCrewMonitorEmpty category: Tools - completetime: 2 + completeTime: 2 materials: Glass: 1200 Steel: 1000 @@ -99,7 +99,7 @@ id: HandheldHealthAnalyzer result: HandheldHealthAnalyzerEmpty category: Tools - completetime: 4 + completeTime: 4 materials: Glass: 500 Steel: 500 @@ -107,14 +107,14 @@ - type: latheRecipe id: ClothingHandsGlovesLatex result: ClothingHandsGlovesLatex - completetime: 2 + completeTime: 2 materials: Plastic: 300 - type: latheRecipe id: ClothingHandsGlovesNitrile result: ClothingHandsGlovesNitrile - completetime: 2 + completeTime: 2 materials: Plastic: 100 Durathread: 200 @@ -122,14 +122,14 @@ - type: latheRecipe id: ClothingMaskSterile result: ClothingMaskSterile - completetime: 2 + completeTime: 2 materials: Plastic: 50 - type: latheRecipe id: DiseaseSwab result: DiseaseSwab - completetime: 1 + completeTime: 1 materials: Cloth: 20 Plastic: 20 @@ -137,7 +137,7 @@ - type: latheRecipe id: Implanter result: Implanter - completetime: 1 + completeTime: 1 materials: Glass: 500 Steel: 500 @@ -145,7 +145,7 @@ - type: latheRecipe id: Defibrillator result: DefibrillatorEmpty - completetime: 2 + completeTime: 2 materials: Steel: 300 @@ -153,7 +153,7 @@ id: Medkit result: Medkit name: first aid kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -161,7 +161,7 @@ id: MedkitBurn result: MedkitBurn name: burn treatment kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -169,7 +169,7 @@ id: MedkitToxin result: MedkitToxin name: toxin treatment kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -177,7 +177,7 @@ id: MedkitO2 result: MedkitO2 name: oxygen deprivation treatment kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -185,7 +185,7 @@ id: MedkitBrute result: MedkitBrute name: brute trauma treatment kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -193,7 +193,7 @@ id: MedkitAdvanced result: MedkitAdvanced name: advanced first aid kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -201,7 +201,7 @@ id: MedkitRadiation result: MedkitRadiation name: radiation treatment kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -209,7 +209,7 @@ id: MedkitCombat result: MedkitCombat name: combat medical kit (empty) - completetime: 2 + completeTime: 2 materials: Plastic: 300 @@ -217,21 +217,21 @@ id: HandLabeler result: HandLabeler category: Tools - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: Jug result: Jug - completetime: 4 + completeTime: 4 materials: Plastic: 400 - type: latheRecipe id: RollerBedSpawnFolded result: RollerBedSpawnFolded - completetime: 1 + completeTime: 1 materials: Steel: 600 Plastic: 300 @@ -239,7 +239,7 @@ - type: latheRecipe id: CheapRollerBedSpawnFolded result: CheapRollerBedSpawnFolded - completetime: 1 + completeTime: 1 materials: Steel: 600 Plastic: 300 @@ -247,7 +247,7 @@ - type: latheRecipe id: EmergencyRollerBedSpawnFolded result: EmergencyRollerBedSpawnFolded - completetime: 1 + completeTime: 1 materials: Steel: 600 Plastic: 300 @@ -255,7 +255,56 @@ - type: latheRecipe id: WhiteCane result: WhiteCane - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 100 +- type: latheRecipe + id: MedicalCyberneticEyes + result: MedicalCyberneticEyes + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 + +- type: latheRecipe + id: EnergyScalpel + result: EnergyScalpel + completeTime: 2 + materials: + Steel: 600 + Glass: 150 + Gold: 150 + +- type: latheRecipe + id: AdvancedRetractor + result: AdvancedRetractor + completeTime: 2 + materials: + Steel: 600 + Glass: 150 + Silver: 150 + +- type: latheRecipe + id: EnergyCautery + result: EnergyCautery + completeTime: 2 + materials: + Steel: 600 + Glass: 150 + Plasma: 150 + +- type: latheRecipe + id: OmnimedTool + result: OmnimedTool + completeTime: 2 + materials: + Steel: 600 + Glass: 150 + Gold: 150 + Silver: 150 + Plasma: 150 diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index 2c0e1eeec3..0d6362afa5 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -2,7 +2,7 @@ id: LightTube result: LightTube category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -11,7 +11,7 @@ id: LedLightTube result: LedLightTube category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -20,7 +20,7 @@ id: SodiumLightTube result: SodiumLightTube category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -29,7 +29,7 @@ id: ExteriorLightTube result: ExteriorLightTube category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -38,7 +38,7 @@ id: LightBulb result: LightBulb category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -47,7 +47,7 @@ id: LedLightBulb result: LedLightBulb category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 50 Glass: 50 @@ -56,7 +56,7 @@ id: GlowstickRed result: GlowstickRed category: Lights - completetime: 2 + completeTime: 2 materials: Plastic: 50 @@ -64,7 +64,7 @@ id: Flare result: Flare category: Lights - completetime: 2 + completeTime: 2 materials: Plastic: 50 @@ -72,7 +72,7 @@ id: FlashlightLantern result: EmptyFlashlightLantern category: Lights - completetime: 2 + completeTime: 2 materials: Steel: 100 Glass: 100 @@ -82,21 +82,21 @@ id: FireExtinguisher result: FireExtinguisher category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 - type: latheRecipe id: Matchbox result: Matchbox - completetime: 1 + completeTime: 1 materials: Wood: 100 - type: latheRecipe id: SynthesizerInstrument result: SynthesizerInstrument - completetime: 4 + completeTime: 4 materials: Steel: 300 Plastic: 300 @@ -106,7 +106,7 @@ id: NodeScanner result: NodeScanner category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 100 Plastic: 50 @@ -114,14 +114,14 @@ - type: latheRecipe id: AirTank result: AirTank - completetime: 4 + completeTime: 4 materials: Steel: 300 - type: latheRecipe id: ClothingShoesBootsMagSci result: ClothingShoesBootsMagSci - completetime: 10 + completeTime: 10 materials: Steel: 1000 Plastic: 500 @@ -129,7 +129,7 @@ - type: latheRecipe id: ClothingShoesBootsSpeed result: ClothingShoesBootsSpeed - completetime: 2 + completeTime: 2 materials: Steel: 1500 Plastic: 1000 @@ -138,7 +138,7 @@ - type: latheRecipe id: ModularReceiver result: ModularReceiver - completetime: 12 + completeTime: 12 materials: Steel: 750 Plastic: 100 @@ -146,56 +146,56 @@ - type: latheRecipe id: FauxTileAstroGrass result: FloorTileItemAstroGrass - completetime: 1 + completeTime: 1 materials: Plastic: 100 - type: latheRecipe id: FauxTileMowedAstroGrass result: FloorTileItemMowedAstroGrass - completetime: 1 + completeTime: 1 materials: Plastic: 100 - type: latheRecipe id: FauxTileJungleAstroGrass result: FloorTileItemJungleAstroGrass - completetime: 1 + completeTime: 1 materials: Plastic: 100 - type: latheRecipe id: FauxTileAstroIce result: FloorTileItemAstroIce - completetime: 1 + completeTime: 1 materials: Plastic: 100 - type: latheRecipe id: FauxTileAstroSnow result: FloorTileItemAstroSnow - completetime: 1 + completeTime: 1 materials: Plastic: 100 - type: latheRecipe id: FloorGreenCircuit result: FloorTileItemGCircuit4 - completetime: 2 + completeTime: 2 materials: Steel: 100 - type: latheRecipe id: FloorBlueCircuit result: FloorTileItemBCircuit4 - completetime: 2 + completeTime: 2 materials: Steel: 100 - type: latheRecipe id: HandheldStationMap result: HandheldStationMapEmpty - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 100 @@ -203,7 +203,7 @@ - type: latheRecipe id: ClothingHeadHatWelding result: ClothingHeadHatWelding - completetime: 2 + completeTime: 2 materials: Steel: 400 Glass: 200 @@ -211,7 +211,7 @@ - type: latheRecipe id: ClothingShoesBootsMagAdv result: ClothingShoesBootsMagAdv - completetime: 12 + completeTime: 12 materials: Silver: 1000 Gold: 500 @@ -219,7 +219,7 @@ - type: latheRecipe id: MailCapsule result: MailCapsulePrimed - completetime: 1 + completeTime: 1 materials: Glass: 100 Plastic: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/powercells.yml b/Resources/Prototypes/Recipes/Lathes/powercells.yml index 21928a53d2..7bc01c8494 100644 --- a/Resources/Prototypes/Recipes/Lathes/powercells.yml +++ b/Resources/Prototypes/Recipes/Lathes/powercells.yml @@ -2,7 +2,7 @@ id: PowerCellSmall result: PowerCellSmallPrinted category: Parts - completetime: 1 + completeTime: 1 materials: Steel: 100 Plastic: 50 @@ -11,7 +11,7 @@ id: PowerCellMedium result: PowerCellMediumPrinted category: Parts - completetime: 6 + completeTime: 6 materials: Steel: 300 Glass: 300 @@ -22,7 +22,7 @@ id: PowerCellHigh result: PowerCellHighPrinted category: Parts - completetime: 10 + completeTime: 10 materials: Steel: 300 Glass: 400 @@ -33,7 +33,7 @@ id: PowerCellMicroreactor result: PowerCellMicroreactorPrinted category: Parts - completetime: 10 + completeTime: 10 materials: Steel: 500 Glass: 400 @@ -43,7 +43,7 @@ - type: latheRecipe id: PowerCageSmall result: PowerCageSmall - completetime: 3 + completeTime: 3 materials: Steel: 200 Plastic: 100 @@ -51,7 +51,7 @@ - type: latheRecipe id: PowerCageMedium result: PowerCageMedium - completetime: 6 + completeTime: 6 materials: Steel: 500 Glass: 500 @@ -61,7 +61,7 @@ - type: latheRecipe id: PowerCageHigh result: PowerCageHigh - completetime: 10 + completeTime: 10 materials: Steel: 600 Glass: 800 diff --git a/Resources/Prototypes/Recipes/Lathes/prizecounter.yml b/Resources/Prototypes/Recipes/Lathes/prizecounter.yml index 9e5e239c6f..2ea2afc654 100644 --- a/Resources/Prototypes/Recipes/Lathes/prizecounter.yml +++ b/Resources/Prototypes/Recipes/Lathes/prizecounter.yml @@ -2,7 +2,7 @@ id: PrizeBall result: PrizeBall applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 30 @@ -10,7 +10,7 @@ id: PlushieShadowkin result: PlushieShadowkin applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -18,7 +18,7 @@ id: PlushieMothRandom result: PlushieMothRandom applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -26,7 +26,7 @@ id: PlushieMothMusician result: PlushieMothMusician applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -34,7 +34,7 @@ id: PlushieMothBartender result: PlushieMothBartender applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -42,7 +42,7 @@ id: PlushieBee result: PlushieBee applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -50,7 +50,7 @@ id: PlushieHampter result: PlushieHampter applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -58,7 +58,7 @@ id: PlushieRouny result: PlushieRouny applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -66,7 +66,7 @@ id: PlushieLamp result: PlushieLamp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -74,7 +74,7 @@ id: PlushieArachind result: PlushieArachind applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -82,7 +82,7 @@ id: PlushieLizard result: PlushieLizard applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -90,7 +90,7 @@ id: PlushieSpaceLizard result: PlushieSpaceLizard applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -98,7 +98,7 @@ id: PlushieSharkBlue result: PlushieSharkBlue applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -106,7 +106,7 @@ id: PlushieSharkPink result: PlushieSharkPink applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -114,7 +114,7 @@ id: PlushieSharkGrey result: PlushieSharkGrey applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -122,7 +122,7 @@ id: PlushieCarp result: PlushieCarp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -130,7 +130,7 @@ id: PlushieMagicarp result: PlushieMagicarp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -138,7 +138,7 @@ id: PlushieHolocarp result: PlushieHolocarp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -146,7 +146,7 @@ id: PlushieSlime result: PlushieSlime applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -154,7 +154,7 @@ id: PlushieSnake result: PlushieSnake applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -162,7 +162,7 @@ id: ToyMouse result: ToyMouse applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -170,7 +170,7 @@ id: ToyRubberDuck result: ToyRubberDuck applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -178,7 +178,7 @@ id: PlushieVox result: PlushieVox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -186,7 +186,7 @@ id: PlushieAtmosian result: PlushieAtmosian applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -194,7 +194,7 @@ id: PlushiePenguin result: PlushiePenguin applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -202,7 +202,7 @@ id: PlushieHuman result: PlushieHuman applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -210,7 +210,7 @@ id: PlushieArachne result: PlushieArachne applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -218,7 +218,7 @@ id: PlushieGnome result: PlushieGnome applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -226,7 +226,7 @@ id: PlushieLoveable result: PlushieLoveable applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -234,7 +234,7 @@ id: PlushieDeer result: PlushieDeer applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -242,7 +242,7 @@ id: PlushieIpc result: PlushieIpc applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -250,7 +250,7 @@ id: PlushieGrey result: PlushieGrey applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -258,7 +258,7 @@ id: PlushieRedFox result: PlushieRedFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -266,7 +266,7 @@ id: PlushiePurpleFox result: PlushiePurpleFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -274,7 +274,7 @@ id: PlushiePinkFox result: PlushiePinkFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -282,7 +282,7 @@ id: PlushieOrangeFox result: PlushieOrangeFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -290,7 +290,7 @@ id: PlushieMarbleFox result: PlushieMarbleFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -298,7 +298,7 @@ id: PlushieCrimsonFox result: PlushieCrimsonFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -306,7 +306,7 @@ id: PlushieCoffeeFox result: PlushieCoffeeFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -314,7 +314,7 @@ id: PlushieBlueFox result: PlushieBlueFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -322,7 +322,7 @@ id: PlushieBlackFox result: PlushieBlackFox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -330,7 +330,7 @@ id: PlushieVulp result: PlushieVulp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -338,7 +338,7 @@ id: PlushieCorgi result: PlushieCorgi applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -346,7 +346,7 @@ id: PlushieGirlyCorgi result: PlushieGirlyCorgi applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -354,7 +354,7 @@ id: PlushieRobotCorgi result: PlushieRobotCorgi applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -362,7 +362,7 @@ id: PlushieCatBlack result: PlushieCatBlack applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -370,7 +370,7 @@ id: PlushieCatGrey result: PlushieCatGrey applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -378,7 +378,7 @@ id: PlushieCatOrange result: PlushieCatOrange applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -386,7 +386,7 @@ id: PlushieCatSiames result: PlushieCatSiames applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -394,7 +394,7 @@ id: PlushieCatTabby result: PlushieCatTabby applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -402,7 +402,7 @@ id: PlushieCatTuxedo result: PlushieCatTuxedo applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -410,7 +410,7 @@ id: PlushieCatWhite result: PlushieCatWhite applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -418,7 +418,7 @@ id: ToyAi result: ToyAi applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 30 @@ -426,7 +426,7 @@ id: ToyIan result: ToyIan applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 30 @@ -434,7 +434,7 @@ id: BalloonNT result: BalloonNT applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 30 @@ -442,7 +442,7 @@ id: BalloonCorgi result: BalloonCorgi applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 30 @@ -450,7 +450,7 @@ id: CrayonBox result: CrayonBox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 20 @@ -458,7 +458,7 @@ id: PetRockCarrier result: PetRockCarrier applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 50 @@ -466,7 +466,7 @@ id: PlushieXeno result: PlushieXeno applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -474,7 +474,7 @@ id: FoamCrossbow result: FoamCrossbow applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -482,7 +482,7 @@ id: RevolverCapGun result: RevolverCapGun applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -490,7 +490,7 @@ id: PonderingOrb result: PonderingOrb applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -498,7 +498,7 @@ id: ToyAmongPequeno result: ToyAmongPequeno applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -506,7 +506,7 @@ id: FoamCutlass result: FoamCutlass applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -514,7 +514,7 @@ id: ToyHammer result: ToyHammer applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -522,7 +522,7 @@ id: WhoopieCushion result: WhoopieCushion applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -530,7 +530,7 @@ id: PlasticBanana result: PlasticBanana applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -538,7 +538,7 @@ id: WeaponWaterPistol result: WeaponWaterPistol applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -546,7 +546,7 @@ id: WeaponWaterBlaster result: WeaponWaterBlaster applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -554,7 +554,7 @@ id: NewtonCradle result: NewtonCradle applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -562,7 +562,7 @@ id: SnapPopBox result: SnapPopBox applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -570,7 +570,7 @@ id: MrDips result: MrDips applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -578,7 +578,7 @@ id: MrChips result: MrChips applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -586,7 +586,7 @@ id: CrazyGlue result: CrazyGlue applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -594,7 +594,7 @@ id: PlushieRatvar result: PlushieRatvar applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -602,7 +602,7 @@ id: PlushieNar result: PlushieNar applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 80 @@ -612,7 +612,7 @@ id: PlushieGhost result: PlushieGhost applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -620,7 +620,7 @@ id: PlushieRGBee result: PlushieRGBee applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -628,7 +628,7 @@ id: PlushieRainbowCarp result: PlushieRainbowCarp applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -636,7 +636,7 @@ id: PlushieJester result: PlushieJester applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -644,7 +644,7 @@ id: PlushieSlips result: PlushieSlips applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -652,7 +652,7 @@ id: PlushieTrystan result: PlushieTrystan applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -660,7 +660,7 @@ id: PlushieAbductor result: PlushieAbductor applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -668,7 +668,7 @@ id: PlushieAbductorAgent result: PlushieAbductorAgent applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -676,7 +676,7 @@ id: PlushieNuke result: PlushieNuke applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -684,7 +684,7 @@ id: ToyNuke result: ToyNuke applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -692,7 +692,7 @@ id: FoamBlade result: FoamBlade applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 150 @@ -700,7 +700,7 @@ id: BalloonSyn result: BalloonSyn applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 100 @@ -708,7 +708,7 @@ id: SingularityToy result: SingularityToy applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 150 @@ -716,7 +716,7 @@ id: TeslaToy result: TeslaToy applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 150 @@ -724,7 +724,7 @@ id: ToySword result: ToySword applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 200 @@ -732,7 +732,7 @@ id: BwoinkHammer result: BwoinkHammer applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 200 @@ -740,6 +740,6 @@ id: ThronglerToy result: ThronglerToy applyMaterialDiscount: false - completetime: 0.1 + completeTime: 0.1 materials: PrizeTicket: 500 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/rehydrateable.yml b/Resources/Prototypes/Recipes/Lathes/rehydrateable.yml index b0b3b90838..dd365186f6 100644 --- a/Resources/Prototypes/Recipes/Lathes/rehydrateable.yml +++ b/Resources/Prototypes/Recipes/Lathes/rehydrateable.yml @@ -3,56 +3,56 @@ - type: latheRecipe id: MonkeyCube result: MonkeyCube - completetime: 30 + completeTime: 30 materials: Biomass: 16 - type: latheRecipe id: KoboldCube result: KoboldCube - completetime: 30 + completeTime: 30 materials: Biomass: 16 - type: latheRecipe id: CowCube result: CowCube - completetime: 30 + completeTime: 30 materials: Biomass: 120 - type: latheRecipe id: GoatCube result: GoatCube - completetime: 30 + completeTime: 30 materials: Biomass: 35 - type: latheRecipe id: MothroachCube result: MothroachCube - completetime: 45 # prevent biblical floods + completeTime: 45 # prevent biblical floods materials: Biomass: 20 # a lot of materials wasted due to complex genetics - type: latheRecipe id: MouseCube result: MouseCube - completetime: 15 + completeTime: 15 materials: Biomass: 12 - type: latheRecipe id: CockroachCube result: CockroachCube - completetime: 15 + completeTime: 15 materials: Biomass: 16 - type: latheRecipe id: SpaceCarpCube result: SpaceCarpCube - completetime: 30 + completeTime: 30 materials: Biomass: 24 Plasma: 600 @@ -60,7 +60,7 @@ - type: latheRecipe id: SpaceTickCube result: SpaceTickCube - completetime: 15 + completeTime: 15 materials: Biomass: 8 Plasma: 300 # less biomass but more plasma @@ -68,7 +68,7 @@ - type: latheRecipe id: AbominationCube result: AbominationCube - completetime: 30 + completeTime: 30 materials: # abominations are slow and essentially worse than even carp Biomass: 28 Plasma: 500 # more biomass but less plasma @@ -76,97 +76,97 @@ - type: latheRecipe id: SynthHeart result: BioSynthHeart - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLungs result: BioSynthLungs - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLiver result: BioSynthLiver - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthEyes result: BioSynthEyes - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLeftArm result: BioSynthLeftArm - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLeftHand result: BioSynthLeftHand - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthRightArm result: BioSynthRightArm - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthRightHand result: BioSynthRightHand - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLeftLeg result: BioSynthLeftLeg - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthRightLeg result: BioSynthRightLeg - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthLeftFoot result: BioSynthLeftFoot - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: SynthRightFoot result: BioSynthRightFoot - completetime: 30 + completeTime: 30 materials: Biomass: 10 - type: latheRecipe id: PizzaLeftArm result: PizzaLeftArm - completetime: 30 + completeTime: 30 materials: Biomass: 5 - type: latheRecipe id: PizzaRightArm result: PizzaRightArm - completetime: 30 + completeTime: 30 materials: Biomass: 5 diff --git a/Resources/Prototypes/Recipes/Lathes/robotics.yml b/Resources/Prototypes/Recipes/Lathes/robotics.yml index 2dc0a65748..2bd08bd719 100644 --- a/Resources/Prototypes/Recipes/Lathes/robotics.yml +++ b/Resources/Prototypes/Recipes/Lathes/robotics.yml @@ -2,7 +2,7 @@ id: ProximitySensor result: ProximitySensor category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 200 Glass: 300 @@ -11,7 +11,7 @@ id: SciFlash result: SciFlash category: Robotics - completetime: 2 + completeTime: 2 materials: Glass: 100 Plastic: 200 @@ -21,7 +21,7 @@ id: CyborgEndoskeleton result: CyborgEndoskeleton category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 1500 @@ -29,7 +29,7 @@ id: LeftArmBorg result: LeftArmBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -38,7 +38,7 @@ id: RightArmBorg result: RightArmBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -47,7 +47,7 @@ id: LeftLegBorg result: LeftLegBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -56,7 +56,7 @@ id: RightLegBorg result: RightLegBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -65,7 +65,7 @@ id: LightHeadBorg result: LightHeadBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -74,7 +74,7 @@ id: TorsoBorg result: TorsoBorg category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -83,7 +83,7 @@ id: LeftArmBorgEngineer result: LeftArmBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -92,7 +92,7 @@ id: RightArmBorgEngineer result: RightArmBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -101,7 +101,7 @@ id: LeftLegBorgEngineer result: LeftLegBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -110,7 +110,7 @@ id: RightLegBorgEngineer result: RightLegBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -119,7 +119,7 @@ id: HeadBorgEngineer result: HeadBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -128,7 +128,7 @@ id: TorsoBorgEngineer result: TorsoBorgEngineer category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -137,7 +137,7 @@ id: LeftArmBorgMedical result: LeftArmBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -146,7 +146,7 @@ id: RightArmBorgMedical result: RightArmBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -155,7 +155,7 @@ id: LeftLegBorgMedical result: LeftLegBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -164,7 +164,7 @@ id: RightLegBorgMedical result: RightLegBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -173,7 +173,7 @@ id: HeadBorgMedical result: HeadBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -182,7 +182,7 @@ id: TorsoBorgMedical result: TorsoBorgMedical category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -191,7 +191,7 @@ id: LeftArmBorgMining result: LeftArmBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -200,7 +200,7 @@ id: RightArmBorgMining result: RightArmBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -209,7 +209,7 @@ id: LeftLegBorgMining result: LeftLegBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -218,7 +218,7 @@ id: RightLegBorgMining result: RightLegBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -227,7 +227,7 @@ id: HeadBorgMining result: HeadBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -236,7 +236,7 @@ id: TorsoBorgMining result: TorsoBorgMining category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -245,7 +245,7 @@ id: LeftArmBorgService result: LeftArmBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -254,7 +254,7 @@ id: RightArmBorgService result: RightArmBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -263,7 +263,7 @@ id: LeftLegBorgService result: LeftLegBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -272,7 +272,7 @@ id: RightLegBorgService result: RightLegBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -281,7 +281,7 @@ id: HeadBorgService result: HeadBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -290,7 +290,7 @@ id: TorsoBorgService result: TorsoBorgService category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -299,7 +299,7 @@ id: LeftLegBorgJanitor result: LeftLegBorgJanitor category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -308,7 +308,7 @@ id: RightLegBorgJanitor result: RightLegBorgJanitor category: Robotics - completetime: 2 + completeTime: 2 materials: Steel: 250 Glass: 100 @@ -317,7 +317,7 @@ id: HeadBorgJanitor result: HeadBorgJanitor category: Robotics - completetime: 4 + completeTime: 4 materials: Steel: 500 Glass: 200 @@ -326,7 +326,7 @@ id: TorsoBorgJanitor result: TorsoBorgJanitor category: Robotics - completetime: 4 + completeTime: 4 materials: Steel: 500 Glass: 200 @@ -335,7 +335,7 @@ id: MMI result: MMI category: Robotics - completetime: 3 + completeTime: 3 icon: sprite: Objects/Specific/Robotics/mmi.rsi state: mmi_off @@ -349,7 +349,7 @@ id: PositronicBrain result: PositronicBrain category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Plastic: 500 @@ -361,7 +361,7 @@ id: BorgModuleCable result: BorgModuleCable category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -371,7 +371,7 @@ id: BorgModuleFireExtinguisher result: BorgModuleFireExtinguisher category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -381,7 +381,7 @@ id: BorgModuleGPS result: BorgModuleGPS category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -391,7 +391,7 @@ id: BorgModuleRadiationDetection result: BorgModuleRadiationDetection category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -401,7 +401,7 @@ id: BorgModuleTool result: BorgModuleTool category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -411,7 +411,7 @@ id: BorgModuleAppraisal result: BorgModuleAppraisal category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -421,7 +421,7 @@ id: BorgModuleMining result: BorgModuleMining category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -431,7 +431,7 @@ id: BorgModuleGrapplingGun result: BorgModuleGrapplingGun category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -442,7 +442,7 @@ id: BorgModuleAdvancedTool result: BorgModuleAdvancedTool category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -453,7 +453,7 @@ id: BorgModuleConstruction result: BorgModuleConstruction category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -463,7 +463,7 @@ id: BorgModuleRCD result: BorgModuleRCD category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -474,7 +474,7 @@ id: BorgModuleLightReplacer result: BorgModuleLightReplacer category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -484,7 +484,7 @@ id: BorgModuleCleaning result: BorgModuleCleaning category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -494,7 +494,7 @@ id: BorgModuleAdvancedCleaning result: BorgModuleAdvancedCleaning category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -505,7 +505,7 @@ id: BorgModuleDiagnosis result: BorgModuleDiagnosis category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -515,7 +515,7 @@ id: BorgModuleTreatment result: BorgModuleTreatment category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -525,7 +525,7 @@ id: BorgModuleAdvancedTreatment result: BorgModuleAdvancedTreatment category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -536,7 +536,7 @@ id: BorgModuleDefibrillator result: BorgModuleDefibrillator category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 500 Glass: 500 @@ -547,7 +547,7 @@ id: BorgModuleArtifact result: BorgModuleArtifact category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -557,7 +557,7 @@ id: BorgModuleAnomaly result: BorgModuleAnomaly category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -567,7 +567,7 @@ id: BorgModuleService result: BorgModuleService category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -577,7 +577,7 @@ id: BorgModuleMusique result: BorgModuleMusique category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -587,7 +587,7 @@ id: BorgModuleGardening result: BorgModuleGardening category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -597,7 +597,7 @@ id: BorgModuleHarvesting result: BorgModuleHarvesting category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -607,7 +607,7 @@ id: BorgModuleClowning result: BorgModuleClowning category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -617,7 +617,7 @@ id: BorgModulePka result: BorgModulePka category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 1000 Glass: 500 @@ -628,7 +628,7 @@ id: BorgModuleJetpack result: BorgModuleJetpack category: Robotics - completetime: 3 + completeTime: 3 materials: Steel: 250 Glass: 250 @@ -636,3 +636,83 @@ Gold: 100 Plasma: 1000 +- type: latheRecipe + id: BorgModuleSurgery + result: BorgModuleSurgery + category: Robotics + completeTime: 3 + materials: + Steel: 250 + Glass: 250 + Plastic: 250 + +- type: latheRecipe + id: BorgModuleAdvancedSurgery + result: BorgModuleAdvancedSurgery + category: Robotics + completeTime: 3 + materials: + Steel: 500 + Glass: 500 + Plastic: 250 + Gold: 50 + +- type: latheRecipe + id: JawsOfLifeLeftArm + result: JawsOfLifeLeftArm + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 + +- type: latheRecipe + id: JawsOfLifeRightArm + result: JawsOfLifeRightArm + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 + +- type: latheRecipe + id: SpeedLeftLeg + result: SpeedLeftLeg + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 + +- type: latheRecipe + id: SpeedRightLeg + result: SpeedRightLeg + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 + +- type: latheRecipe + id: BasicCyberneticEyes + result: BasicCyberneticEyes + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 diff --git a/Resources/Prototypes/Recipes/Lathes/salvage.yml b/Resources/Prototypes/Recipes/Lathes/salvage.yml index 9b3cb08643..70387ab536 100644 --- a/Resources/Prototypes/Recipes/Lathes/salvage.yml +++ b/Resources/Prototypes/Recipes/Lathes/salvage.yml @@ -1,7 +1,7 @@ - type: latheRecipe id: Fulton result: Fulton1 - completetime: 1 + completeTime: 1 materials: Steel: 200 Cloth: 100 @@ -9,7 +9,7 @@ - type: latheRecipe id: FultonBeacon result: FultonBeacon - completetime: 5 + completeTime: 5 materials: Steel: 1000 Glass: 500 diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 4a2e737e15..c71578c2d5 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -1,21 +1,21 @@ - type: latheRecipe id: Handcuffs result: Handcuffs - completetime: 2 + completeTime: 2 materials: Steel: 300 - type: latheRecipe id: Zipties result: Zipties - completetime: 2 + completeTime: 2 materials: Plastic: 200 - type: latheRecipe id: BolaEnergy result: BolaEnergy - completetime: 2 + completeTime: 2 materials: Plastic: 200 Plasma: 150 @@ -24,7 +24,7 @@ id: Stunbaton result: Stunbaton category: Weapons - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 300 @@ -33,7 +33,7 @@ id: Truncheon result: Truncheon category: Weapons - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 300 @@ -42,7 +42,7 @@ id: CombatKnife result: CombatKnife category: Weapons - completetime: 2 + completeTime: 2 materials: Steel: 250 Plastic: 100 @@ -51,7 +51,7 @@ id: WeaponLaserCarbine result: WeaponLaserCarbine category: Weapons - completetime: 8 + completeTime: 8 materials: Steel: 2000 Glass: 800 @@ -61,7 +61,7 @@ id: WeaponAdvancedLaser result: WeaponAdvancedLaser category: Weapons - completetime: 5 + completeTime: 5 materials: Steel: 1500 Glass: 1000 @@ -71,7 +71,7 @@ id: WeaponLaserCannon result: WeaponLaserCannon category: Weapons - completetime: 5 + completeTime: 5 materials: Steel: 1250 Plastic: 750 @@ -81,7 +81,7 @@ id: WeaponLaserSvalinn result: WeaponLaserSvalinn category: Weapons - completetime: 5 + completeTime: 5 materials: Steel: 2000 Gold: 500 @@ -90,7 +90,7 @@ id: WeaponXrayCannon result: WeaponXrayCannon category: Weapons - completetime: 5 + completeTime: 5 materials: Steel: 1500 Glass: 500 @@ -100,14 +100,14 @@ - type: latheRecipe id: ForensicPad result: ForensicPad - completetime: 4 + completeTime: 4 materials: Plastic: 100 - type: latheRecipe id: ClothingEyesGlassesSecurity result: ClothingEyesGlassesSecurity - completetime: 2 + completeTime: 2 materials: Steel: 300 Glass: 200 @@ -115,7 +115,7 @@ - type: latheRecipe id: ClothingEyesHudSecurity result: ClothingEyesHudSecurity - completetime: 2 + completeTime: 2 materials: Steel: 300 Glass: 200 @@ -123,7 +123,7 @@ - type: latheRecipe id: HoloprojectorSecurity result: HoloprojectorSecurityEmpty - completetime: 2 + completeTime: 2 materials: Steel: 300 Glass: 50 @@ -132,7 +132,7 @@ - type: latheRecipe id: RiotShield result: RiotShield - completetime: 4 + completeTime: 4 materials: Steel: 400 Glass: 400 @@ -140,7 +140,7 @@ - type: latheRecipe id: TelescopicShield result: TelescopicShield - completetime: 4 + completeTime: 4 materials: Steel: 300 Glass: 800 @@ -148,7 +148,7 @@ - type: latheRecipe id: Flash result: Flash - completetime: 2 + completeTime: 2 materials: Glass: 100 Plastic: 200 @@ -158,7 +158,7 @@ id: CartridgePistolRubber result: CartridgePistolRubber category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 5 Steel: 5 @@ -167,7 +167,7 @@ id: CartridgeMagnumRubber result: CartridgeMagnumRubber category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 5 Steel: 5 @@ -176,7 +176,7 @@ id: CartridgeLightRifleRubber result: CartridgeLightRifleRubber category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 10 Steel: 5 @@ -185,7 +185,7 @@ id: CartridgeRifleRubber result: CartridgeRifleRubber category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 10 Steel: 5 @@ -194,7 +194,7 @@ id: ShellTranquilizer result: ShellTranquilizer category: Ammo - completetime: 4 + completeTime: 4 materials: Plastic: 15 Steel: 10 @@ -205,7 +205,7 @@ - type: latheRecipe id: TargetHuman result: TargetHuman - completetime: 5 + completeTime: 5 applyMaterialDiscount: false # ingredients dropped when destroyed materials: Steel: 500 @@ -213,7 +213,7 @@ - type: latheRecipe id: TargetClown result: TargetClown - completetime: 5 + completeTime: 5 applyMaterialDiscount: false # ingredients dropped when destroyed materials: Steel: 500 @@ -221,7 +221,7 @@ - type: latheRecipe id: TargetSyndicate result: TargetSyndicate - completetime: 5 + completeTime: 5 applyMaterialDiscount: false # ingredients dropped when destroyed materials: Steel: 500 @@ -230,7 +230,7 @@ id: MagazinePistolEmpty result: MagazinePistolEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 @@ -238,7 +238,7 @@ id: MagazinePistol result: MagazinePistol category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 145 @@ -246,7 +246,7 @@ id: MagazinePistolPractice result: MagazinePistolPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 85 @@ -254,7 +254,7 @@ id: MagazinePistolUranium result: MagazinePistolUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 65 @@ -264,7 +264,7 @@ id: MagazinePistolIncendiary result: MagazinePistolIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 120 @@ -273,7 +273,7 @@ id: MagazinePistolSubMachineGunEmpty result: MagazinePistolSubMachineGunEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 30 @@ -281,7 +281,7 @@ id: MagazinePistolSubMachineGun result: MagazinePistolSubMachineGun category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 300 @@ -289,7 +289,7 @@ id: MagazinePistolSubMachineGunTopMountedEmpty result: MagazinePistolSubMachineGunTopMountedEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 30 @@ -297,7 +297,7 @@ id: MagazinePistolSubMachineGunTopMounted result: MagazinePistolSubMachineGunTopMounted category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 300 @@ -305,7 +305,7 @@ id: MagazineBoxPistol result: MagazineBoxPistol category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 600 @@ -313,7 +313,7 @@ id: MagazineBoxPistolRubber result: MagazineBoxPistolRubber category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 350 Plastic: 300 @@ -322,7 +322,7 @@ id: MagazineBoxMagnum result: MagazineBoxMagnum category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 240 @@ -330,7 +330,7 @@ id: MagazineRifleEmpty result: MagazineRifleEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 @@ -338,7 +338,7 @@ id: MagazineBoxMagnumRubber result: MagazineBoxMagnumRubber category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 350 Plastic: 300 @@ -347,7 +347,7 @@ id: MagazineRifle result: MagazineRifle category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 475 @@ -356,7 +356,7 @@ id: MagazineRiflePractice result: MagazineRiflePractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 175 @@ -364,7 +364,7 @@ id: MagazineRifleUranium result: MagazineRifleUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 300 @@ -374,7 +374,7 @@ id: MagazineRifleIncendiary result: MagazineRifleIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 450 @@ -383,7 +383,7 @@ id: MagazineLightRifleEmpty result: MagazineLightRifleEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 @@ -391,7 +391,7 @@ id: MagazineLightRifle result: MagazineLightRifle category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 565 @@ -399,7 +399,7 @@ id: MagazineLightRiflePractice result: MagazineLightRiflePractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 205 @@ -408,7 +408,7 @@ id: MagazineLightRifleUranium result: MagazineLightRifleUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 360 @@ -418,7 +418,7 @@ id: MagazineLightRifleIncendiary result: MagazineLightRifleIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 25 Plastic: 540 @@ -427,7 +427,7 @@ id: MagazineBoxRifle result: MagazineBoxRifle category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 750 @@ -435,7 +435,7 @@ id: MagazineBoxRifleRubber result: MagazineBoxRifleRubber category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 350 Plastic: 600 @@ -444,7 +444,7 @@ id: MagazineBoxLightRifle result: MagazineBoxLightRifle category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 900 @@ -452,7 +452,7 @@ id: BoxLethalshot result: BoxLethalshot category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 320 @@ -460,7 +460,7 @@ id: BoxBeanbag result: BoxBeanbag category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 160 Plastic: 240 @@ -469,7 +469,7 @@ id: BoxShotgunSlug result: BoxShotgunSlug category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 240 Plastic: 160 @@ -478,7 +478,7 @@ id: SpeedLoaderMagnumEmpty result: SpeedLoaderMagnumEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 50 @@ -486,7 +486,7 @@ id: MagazineBoxLightRifleRubber result: MagazineBoxLightRifleRubber category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 350 Plastic: 600 @@ -495,7 +495,7 @@ id: SpeedLoaderMagnum result: SpeedLoaderMagnum category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 190 @@ -503,7 +503,7 @@ id: SpeedLoaderMagnumPractice result: SpeedLoaderMagnumPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 90 @@ -511,7 +511,7 @@ id: SpeedLoaderMagnumUranium result: SpeedLoaderMagnumUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 50 Plastic: 150 @@ -521,7 +521,7 @@ id: SpeedLoaderMagnumIncendiary result: SpeedLoaderMagnumIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 50 Plastic: 150 @@ -530,7 +530,7 @@ id: MagazineShotgunEmpty result: MagazineShotgunEmpty category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 50 @@ -538,7 +538,7 @@ id: MagazineShotgun result: MagazineShotgun category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 240 @@ -546,7 +546,7 @@ id: MagazineShotgunBeanbag result: MagazineShotgunBeanbag category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 150 Plastic: 140 @@ -555,7 +555,7 @@ id: MagazineShotgunSlug result: MagazineShotgunSlug category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 190 Plastic: 100 @@ -564,7 +564,7 @@ id: MagazineShotgunIncendiary result: MagazineShotgunIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 100 Plastic: 190 @@ -573,7 +573,7 @@ id: MagazineBoxPistolIncendiary result: MagazineBoxPistolIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 600 @@ -581,7 +581,7 @@ id: MagazineBoxMagnumIncendiary result: MagazineBoxMagnumIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 240 @@ -589,7 +589,7 @@ id: MagazineBoxLightRifleIncendiary result: MagazineBoxLightRifleIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 900 @@ -597,7 +597,7 @@ id: MagazineBoxRifleIncendiary result: MagazineBoxRifleIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 750 @@ -605,7 +605,7 @@ id: BoxShotgunFlare result: BoxShotgunFlare category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 80 Plastic: 80 @@ -614,7 +614,7 @@ id: BoxShotgunIncendiary result: BoxShotgunIncendiary category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 80 Plastic: 320 @@ -623,7 +623,7 @@ id: MagazineBoxPistolPractice result: MagazineBoxPistolPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 300 @@ -631,7 +631,7 @@ id: MagazineBoxMagnumPractice result: MagazineBoxMagnumPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 60 @@ -639,7 +639,7 @@ id: MagazineBoxLightRiflePractice result: MagazineBoxLightRiflePractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 300 @@ -647,7 +647,7 @@ id: MagazineBoxRiflePractice result: MagazineBoxRiflePractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 250 @@ -655,7 +655,7 @@ id: WeaponLaserCarbinePractice result: WeaponLaserCarbinePractice category: Weapons - completetime: 6 + completeTime: 6 materials: Steel: 1800 Glass: 400 @@ -665,7 +665,7 @@ id: WeaponDisablerPractice result: WeaponDisablerPractice category: Weapons - completetime: 4 + completeTime: 4 materials: Steel: 500 Glass: 100 @@ -675,7 +675,7 @@ id: BoxShotgunPractice result: BoxShotgunPractice category: Ammo - completetime: 5 + completeTime: 5 materials: Steel: 80 @@ -683,7 +683,7 @@ id: MagazineBoxPistolUranium result: MagazineBoxPistolUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 300 Uranium: 600 @@ -692,7 +692,7 @@ id: MagazineBoxMagnumUranium result: MagazineBoxMagnumUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 240 Uranium: 180 @@ -701,7 +701,7 @@ id: MagazineBoxLightRifleUranium result: MagazineBoxLightRifleUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 600 Uranium: 600 @@ -710,7 +710,7 @@ id: MagazineBoxRifleUranium result: MagazineBoxRifleUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 500 Uranium: 500 @@ -719,7 +719,7 @@ id: BoxShotgunUranium result: BoxShotgunUranium category: Ammo - completetime: 5 + completeTime: 5 materials: Plastic: 320 Uranium: 240 @@ -728,7 +728,7 @@ id: WeaponDisabler result: WeaponDisabler category: Weapons - completetime: 6 + completeTime: 6 materials: Steel: 300 Glass: 200 @@ -738,7 +738,7 @@ id: WeaponDisablerSMG result: WeaponDisablerSMG category: Weapons - completetime: 6 + completeTime: 6 materials: Steel: 1000 Glass: 500 @@ -747,7 +747,7 @@ - type: latheRecipe id: MagazineGrenadeEmpty result: MagazineGrenadeEmpty - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 50 @@ -755,7 +755,7 @@ - type: latheRecipe id: GrenadeEMP result: GrenadeEMP - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 100 @@ -764,7 +764,7 @@ - type: latheRecipe id: GrenadeBlast result: GrenadeBlast - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 100 @@ -773,7 +773,7 @@ - type: latheRecipe id: GrenadeFlash result: GrenadeFlash - completetime: 3 + completeTime: 3 materials: Steel: 150 Plastic: 100 @@ -782,7 +782,7 @@ - type: latheRecipe id: PortableRecharger result: PortableRecharger - completetime: 15 + completeTime: 15 materials: Steel: 2000 Uranium: 2000 @@ -794,14 +794,14 @@ id: ShellShotgun result: ShellShotgun category: Ammo - completetime: 2 + completeTime: 2 materials: Steel: 20 - type: latheRecipe id: ShellShotgunSlug result: ShellShotgunSlug - completetime: 2 + completeTime: 2 materials: Steel: 25 @@ -809,7 +809,7 @@ id: ShellShotgunFlare result: ShellShotgunFlare category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 Steel: 5 @@ -818,7 +818,7 @@ id: CartridgeLightRifleIncendiary result: CartridgeLightRifleIncendiary category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 @@ -826,7 +826,7 @@ id: CartridgeMagnumIncendiary result: CartridgeMagnumIncendiary category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 @@ -834,7 +834,7 @@ id: CartridgePistolIncendiary result: CartridgePistolIncendiary category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 10 @@ -842,7 +842,7 @@ id: CartridgeRifleIncendiary result: CartridgeRifleIncendiary category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 15 @@ -850,7 +850,7 @@ id: CartridgePistolUranium result: CartridgePistolUranium category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 5 Uranium: 10 @@ -859,7 +859,7 @@ id: CartridgeMagnumUranium result: CartridgeMagnumUranium category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 Uranium: 10 @@ -868,7 +868,7 @@ id: CartridgeLightRifleUranium result: CartridgeLightRifleUranium category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 20 Uranium: 10 @@ -877,7 +877,7 @@ id: CartridgeRifleUranium result: CartridgeRifleUranium category: Ammo - completetime: 2 + completeTime: 2 materials: Plastic: 15 Uranium: 10 @@ -885,6 +885,18 @@ - type: latheRecipe id: ShadowkinRestraints result: ClothingOuterShadowkinRestraints - completetime: 6 + completeTime: 6 materials: Steel: 300 + +- type: latheRecipe + id: SecurityCyberneticEyes + result: SecurityCyberneticEyes + category: Robotics + completeTime: 5 + materials: + Steel: 1000 + Glass: 500 + Plastic: 500 + Gold: 300 + Silver: 300 diff --git a/Resources/Prototypes/Recipes/Lathes/sheet.yml b/Resources/Prototypes/Recipes/Lathes/sheet.yml index 9f83c58e66..a5f858f85a 100644 --- a/Resources/Prototypes/Recipes/Lathes/sheet.yml +++ b/Resources/Prototypes/Recipes/Lathes/sheet.yml @@ -2,14 +2,14 @@ id: SheetSteel result: SheetSteel1 applyMaterialDiscount: false - completetime: 2 + completeTime: 2 materials: RawIron: 100 - type: latheRecipe id: SheetSteel30 result: SheetSteel - completetime: 2 + completeTime: 2 materials: RawIron: 3000 Coal: 1000 @@ -18,14 +18,14 @@ id: SheetGlass1 result: SheetGlass1 applyMaterialDiscount: false - completetime: 2 + completeTime: 2 materials: RawQuartz: 100 - type: latheRecipe id: SheetGlass30 result: SheetGlass - completetime: 2 + completeTime: 2 materials: RawQuartz: 3000 @@ -33,7 +33,7 @@ id: SheetRGlass result: SheetRGlass1 applyMaterialDiscount: false - completetime: 2 + completeTime: 2 materials: Glass: 100 Steel: 50 @@ -41,7 +41,7 @@ - type: latheRecipe id: SheetRGlass30 result: SheetRGlass - completetime: 2 + completeTime: 2 materials: RawQuartz: 3000 RawIron: 1500 @@ -50,7 +50,7 @@ - type: latheRecipe id: SheetPGlass30 result: SheetPGlass - completetime: 2 + completeTime: 2 materials: RawQuartz: 3000 RawPlasma: 3000 @@ -58,7 +58,7 @@ - type: latheRecipe id: SheetRPGlass30 result: SheetRPGlass - completetime: 2 + completeTime: 2 materials: RawQuartz: 3000 RawPlasma: 3000 @@ -68,14 +68,14 @@ - type: latheRecipe id: SheetPlasma30 result: SheetPlasma - completetime: 2 + completeTime: 2 materials: RawPlasma: 3000 - type: latheRecipe id: SheetPlasteel30 result: SheetPlasteel - completetime: 5 + completeTime: 5 materials: RawPlasma: 3000 RawIron: 6000 #Twice as durable as steel, Twice the material cost @@ -84,14 +84,14 @@ - type: latheRecipe id: SheetUranium30 result: SheetUranium - completetime: 2 + completeTime: 2 materials: RawUranium: 3000 - type: latheRecipe id: SheetUGlass30 result: SheetUGlass - completetime: 2 + completeTime: 2 materials: RawUranium: 3000 RawQuartz: 3000 @@ -99,7 +99,7 @@ - type: latheRecipe id: SheetRUGlass30 result: SheetRUGlass - completetime: 2 + completeTime: 2 materials: RawUranium: 3000 RawQuartz: 3000 @@ -109,42 +109,42 @@ - type: latheRecipe id: IngotGold30 result: IngotGold - completetime: 2 + completeTime: 2 materials: RawGold: 3000 - type: latheRecipe id: IngotSilver30 result: IngotSilver - completetime: 2 + completeTime: 2 materials: RawSilver: 3000 - type: latheRecipe id: MaterialBananium10 result: MaterialBananium - completetime: 2 + completeTime: 2 materials: RawBananium: 3000 - type: latheRecipe id: SheetUranium1 result: SheetUranium1 - completetime: 2 + completeTime: 2 materials: RawUranium: 500 - type: latheRecipe id: IngotGold1 result: IngotGold1 - completetime: 2 + completeTime: 2 materials: RawGold: 500 - type: latheRecipe id: IngotSilver1 result: IngotSilver1 - completetime: 2 + completeTime: 2 materials: RawSilver: 500 @@ -152,28 +152,28 @@ id: SheetPlastic result: SheetPlastic1 applyMaterialDiscount: false - completetime: 2 + completeTime: 2 materials: Plastic: 100 - type: latheRecipe id: MaterialBananium1 result: MaterialBananium1 - completetime: 2 + completeTime: 2 materials: RawBananium: 500 - type: latheRecipe id: MaterialSheetMeat result: MaterialSheetMeat1 - completetime: 6.4 + completeTime: 6.4 materials: Meaterial: 200 - type: latheRecipe id: SheetPaper result: SheetPaper1 - completetime: 1 + completeTime: 1 materials: Wood: 50 @@ -183,7 +183,7 @@ sprite: Objects/Misc/guardian_info.rsi state: icon result: CoreSilver - completetime: 10 + completeTime: 10 materials: Bluespace: 500 Silver: 1000 @@ -196,7 +196,7 @@ state: bluespace result: MaterialBluespace1 applyMaterialDiscount: false - completetime: 4 + completeTime: 4 materials: RawBluespace: 100 @@ -207,6 +207,6 @@ state: normality result: MaterialNormality1 applyMaterialDiscount: false - completetime: 4 + completeTime: 4 materials: RawNormality: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/tools.yml b/Resources/Prototypes/Recipes/Lathes/tools.yml index 03d8a8511e..4e90b28d00 100644 --- a/Resources/Prototypes/Recipes/Lathes/tools.yml +++ b/Resources/Prototypes/Recipes/Lathes/tools.yml @@ -5,7 +5,7 @@ state: cutters-map result: Wirecutter category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 @@ -17,7 +17,7 @@ state: screwdriver-map result: Screwdriver category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 50 @@ -26,7 +26,7 @@ id: Welder result: Welder category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 400 @@ -34,7 +34,7 @@ id: Wrench result: Wrench category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -42,7 +42,7 @@ id: CableStack result: CableApcStack1 category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 30 @@ -50,7 +50,7 @@ id: CableMVStack result: CableMVStack1 category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 30 @@ -58,7 +58,7 @@ id: CableHVStack result: CableHVStack1 category: Parts - completetime: 2 + completeTime: 2 materials: Steel: 30 @@ -66,7 +66,7 @@ id: Crowbar result: Crowbar category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 @@ -74,7 +74,7 @@ id: Pickaxe result: Pickaxe category: Tools - completetime: 4 + completeTime: 4 materials: Steel: 1000 Wood: 500 @@ -83,7 +83,7 @@ id: Shovel result: Shovel category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Wood: 100 @@ -92,7 +92,7 @@ id: Multitool result: Multitool category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 200 @@ -101,7 +101,7 @@ id: NetworkConfigurator result: NetworkConfigurator category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 200 Plastic: 200 @@ -110,7 +110,7 @@ id: PowerDrill result: PowerDrill category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 600 Plastic: 200 @@ -119,7 +119,7 @@ id: RCD result: RCDEmpty category: Tools - completetime: 4 + completeTime: 4 materials: Steel: 1000 Plastic: 300 @@ -128,7 +128,7 @@ id: RCDAmmo result: RCDAmmo category: Tools - completetime: 2.4 + completeTime: 2.4 materials: Steel: 500 Plastic: 250 @@ -137,7 +137,7 @@ id: HandHeldMassScanner result: HandHeldMassScannerEmpty category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 800 Glass: 300 @@ -146,7 +146,7 @@ id: HandheldGPSBasic result: HandheldGPSBasic category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 800 Glass: 300 @@ -155,7 +155,7 @@ id: TRayScanner result: trayScanner category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 800 Glass: 300 @@ -164,7 +164,7 @@ id: GasAnalyzer result: GasAnalyzer category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 800 Glass: 300 @@ -173,7 +173,7 @@ id: SprayPainter result: SprayPainter category: Tools - completetime: 2 + completeTime: 2 materials: Steel: 300 Plastic: 100 @@ -182,7 +182,7 @@ id: UtilityBelt result: ClothingBeltUtility category: Tools - completetime: 2 + completeTime: 2 materials: Cloth: 100 Steel: 50 @@ -191,7 +191,7 @@ id: HolofanProjector result: HolofanProjectorEmpty category: Tools - completetime: 8 + completeTime: 8 materials: Steel: 300 Glass: 50 @@ -201,7 +201,7 @@ id: RPED result: RPED category: Tools - completetime: 10 + completeTime: 10 materials: Steel: 650 Plastic: 150 @@ -211,7 +211,7 @@ id: MiningDrill result: MiningDrill category: Tools - completetime: 3 + completeTime: 3 materials: Steel: 500 Plastic: 100 @@ -220,7 +220,7 @@ id: WelderExperimental result: WelderExperimental category: Tools - completetime: 6 + completeTime: 6 materials: Steel: 800 Plasma: 200 @@ -229,7 +229,7 @@ id: JawsOfLife result: JawsOfLife category: Tools - completetime: 6 + completeTime: 6 materials: Steel: 1000 Glass: 500 @@ -240,7 +240,7 @@ id: HoloprojectorField result: HoloprojectorFieldEmpty category: Tools - completetime: 3 + completeTime: 3 materials: Steel: 500 Plasma: 300 @@ -250,7 +250,7 @@ id: WeaponParticleDecelerator result: WeaponParticleDecelerator category: Tools - completetime: 6 + completeTime: 6 materials: Steel: 750 Plasma: 150 diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index a92f72f797..0445a4cd98 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -133,16 +133,20 @@ - SyringeCryostasis - type: technology - id: MechanizedTreatment - name: research-technology-mechanized-treatment + id: AdvancedTreatment + name: research-technology-advanced-treatment icon: - sprite: Mobs/Silicon/chassis.rsi - state: medical + sprite: Objects/Specific/Medical/Surgery/e-scalpel.rsi + state: e-scalpel-on discipline: CivilianServices tier: 2 cost: 5000 recipeUnlocks: - BorgModuleAdvancedTreatment + - EnergyScalpel + - EnergyCautery + - AdvancedRetractor + - BorgModuleAdvancedSurgery - BorgModuleDefibrillator - type: technology @@ -203,6 +207,24 @@ recipeUnlocks: - CargoTelepadMachineCircuitboard +- type: technology + id: CyberneticEnhancements + name: research-technology-cybernetic-enhancements + icon: + sprite: Mobs/Species/IPC/organs.rsi + state: eyes + discipline: CivilianServices + tier: 2 + cost: 15000 + recipeUnlocks: + - JawsOfLifeLeftArm + - JawsOfLifeRightArm + - SpeedLeftLeg + - SpeedRightLeg + - BasicCyberneticEyes + - SecurityCyberneticEyes + - MedicalCyberneticEyes + # Tier 3 - type: technology @@ -217,6 +239,18 @@ recipeUnlocks: - ClothingShoesBootsSpeed +- type: technology + id: HighEndSurgery + name: research-technology-high-end-surgery + icon: + sprite: Objects/Specific/Medical/Surgery/omnimed.rsi + state: omnimed + discipline: CivilianServices + tier: 3 + cost: 10000 + recipeUnlocks: + - OmnimedTool + - type: technology id: BluespaceChemistry name: research-technology-bluespace-chemistry diff --git a/Resources/Prototypes/Species/arachne.yml b/Resources/Prototypes/Species/arachne.yml index 54c91ff61a..22db38cc71 100644 --- a/Resources/Prototypes/Species/arachne.yml +++ b/Resources/Prototypes/Species/arachne.yml @@ -1,7 +1,7 @@ - type: species id: Arachne name: species-name-arachne - roundStart: true + roundStart: true # I'll kill these issues somehow. prototype: MobArachne sprites: MobArachneSprites markingLimits: MobArachneMarkingLimits diff --git a/Resources/Prototypes/Species/cybernetic.yml b/Resources/Prototypes/Species/cybernetic.yml new file mode 100644 index 0000000000..745212424f --- /dev/null +++ b/Resources/Prototypes/Species/cybernetic.yml @@ -0,0 +1,47 @@ +- type: humanoidBaseSprite + id: MobCyberneticBishopLArm + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_arm-combined" + +- type: humanoidBaseSprite + id: MobCyberneticBishopRArm + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_arm-combined" + +- type: humanoidBaseSprite + id: MobCyberneticBishopLLeg + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_leg-combined" + +- type: humanoidBaseSprite + id: MobCyberneticBishopRLeg + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_leg-combined" + +- type: humanoidBaseSprite + id: MobCyberneticBishopLHand + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_hand" + +- type: humanoidBaseSprite + id: MobCyberneticBishopRHand + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_hand" + +- type: humanoidBaseSprite + id: MobCyberneticBishopLFoot + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "l_foot" + +- type: humanoidBaseSprite + id: MobCyberneticBishopRFoot + baseSprite: + sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: "r_foot" diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/meta.json new file mode 100644 index 0000000000..cdecf550de --- /dev/null +++ b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from and modified by deltanedas (github) for GoobStation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "tail" + }, + { + "name": "torso" + } + ] +} diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/tail.png b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/tail.png new file mode 100644 index 0000000000..bb0b945810 Binary files /dev/null and b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/tail.png differ diff --git a/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/torso.png b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/torso.png new file mode 100644 index 0000000000..ab0f5ff82f Binary files /dev/null and b/Resources/Textures/Mobs/Aliens/Carps/carp_parts.rsi/torso.png differ diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-combined.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-combined.png new file mode 100644 index 0000000000..a6ddbf3589 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-combined.png differ diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-combined.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-combined.png new file mode 100644 index 0000000000..915b2af4d3 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-combined.png differ diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json index a3e6753cc4..94020ddda5 100644 --- a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json @@ -23,6 +23,10 @@ "name": "l_leg-secondary", "directions": 4 }, + { + "name": "l_leg-combined", + "directions": 4 + }, { "name": "r_leg-primary", "directions": 4 @@ -31,6 +35,10 @@ "name": "r_leg-secondary", "directions": 4 }, + { + "name": "r_leg-combined", + "directions": 4 + }, { "name": "torso-primary", "directions": 4 @@ -51,6 +59,10 @@ "name": "l_arm-tertiary", "directions": 4 }, + { + "name": "l_arm-combined", + "directions": 4 + }, { "name": "r_arm-primary", "directions": 4 @@ -63,6 +75,10 @@ "name": "r_arm-tertiary", "directions": 4 }, + { + "name": "r_arm-combined", + "directions": 4 + }, { "name": "l_hand", "directions": 4 @@ -76,4 +92,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-combined.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-combined.png new file mode 100644 index 0000000000..eabc7e4bd8 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-combined.png differ diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-combined.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-combined.png new file mode 100644 index 0000000000..a035dd8626 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-combined.png differ diff --git a/Resources/Textures/Mobs/Species/IPC/organs.rsi/eyes.png b/Resources/Textures/Mobs/Species/IPC/organs.rsi/eyes.png new file mode 100644 index 0000000000..0fb6412e1c Binary files /dev/null and b/Resources/Textures/Mobs/Species/IPC/organs.rsi/eyes.png differ diff --git a/Resources/Textures/Mobs/Species/IPC/organs.rsi/meta.json b/Resources/Textures/Mobs/Species/IPC/organs.rsi/meta.json index d6b1b51038..2905c5cbd0 100644 --- a/Resources/Textures/Mobs/Species/IPC/organs.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/IPC/organs.rsi/meta.json @@ -22,6 +22,9 @@ ] ] }, + { + "name": "eyes" + }, { "name": "eyeball-r" }, diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor-on.png new file mode 100644 index 0000000000..32e3da4497 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor.png new file mode 100644 index 0000000000..7df819a183 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/adv-retractor.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left-on.png new file mode 100644 index 0000000000..3c2e897282 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left.png new file mode 100644 index 0000000000..9a93d2bb5f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right-on.png new file mode 100644 index 0000000000..f91961a9df Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right.png new file mode 100644 index 0000000000..6444d08423 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/meta.json new file mode 100644 index 0000000000..592796b3e0 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/adv-retractor.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "adv-retractor" + }, + { + "name": "adv-retractor-on" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-left-on", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-right-on", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/bone-gel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/bone-gel.png new file mode 100644 index 0000000000..ac425d8014 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/bone-gel.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-left.png new file mode 100644 index 0000000000..2cd6321ee6 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-right.png new file mode 100644 index 0000000000..549de0c413 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/meta.json new file mode 100644 index 0000000000..48775ff522 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/bone-gel.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "bone-gel" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel.png deleted file mode 100644 index f66bf6cdf9..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_0.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_0.png deleted file mode 100644 index 4399c73304..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_0.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_25.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_25.png deleted file mode 100644 index 3d47302afd..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_25.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_50.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_50.png deleted file mode 100644 index 744b46f1ef..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_50.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_75.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_75.png deleted file mode 100644 index 4fbd689bb4..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/bone-gel_75.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/meta.json deleted file mode 100644 index 61ab52970b..0000000000 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/meta.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cmss13 at https://github.com/cmss13-devs/cmss13/blob/7917d83bac9cddd14c0ca0b457256b2683cc047f/icons/obj/items/surgery_tools.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "bone-gel" - }, - { - "name": "predator_bone-gel" - }, - { - "name": "bone-gel_75" - }, - { - "name": "bone-gel_50" - }, - { - "name": "bone-gel_25" - }, - { - "name": "bone-gel_0" - } - ] -} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/predator_bone-gel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/predator_bone-gel.png deleted file mode 100644 index 4eb66f5843..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bone_gel.rsi/predator_bone-gel.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/bonesetter.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/bonesetter.png index b876de0d28..08b79677c8 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/bonesetter.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/bonesetter.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-left.png new file mode 100644 index 0000000000..5dbbacced1 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-right.png new file mode 100644 index 0000000000..3b9942e76d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/meta.json index 227b276eda..bffe3ee730 100644 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/meta.json @@ -1,17 +1,22 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cmss13 at https://github.com/cmss13-devs/cmss13/blob/7917d83bac9cddd14c0ca0b457256b2683cc047f/icons/obj/items/surgery_tools.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "bonesetter" - }, - { - "name": "predator_bonesetter" - } - ] + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "bonesetter" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/predator_bonesetter.png b/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/predator_bonesetter.png deleted file mode 100644 index c77903ff77..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/bonesetter.rsi/predator_bonesetter.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png index 6a74b13d7e..f82e7f12a0 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/cautery.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-left.png index 1c94d4e488..dcc6bd6946 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-left.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-right.png index 35db4795ef..1c1cc9c4d8 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-right.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/meta.json index cb2fe31f9b..4b08c30b53 100644 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/cautery.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/circular-saw.png b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/circular-saw.png new file mode 100644 index 0000000000..816095a7fc Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/circular-saw.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-left.png new file mode 100644 index 0000000000..fb5a065550 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-right.png new file mode 100644 index 0000000000..c0e064d10b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/meta.json new file mode 100644 index 0000000000..42163ea24d --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/circular-saw.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "circular-saw" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/drapes.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/drapes.png new file mode 100644 index 0000000000..1119569bdd Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/drapes.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-left.png new file mode 100644 index 0000000000..7531299f2a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-right.png new file mode 100644 index 0000000000..57fea9b7e2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/meta.json new file mode 100644 index 0000000000..9c30d1b15d --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/drapes.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "drapes" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/0.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/0.png deleted file mode 100644 index 765094c4cf..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/0.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/100.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/100.png deleted file mode 100644 index af4d131c02..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/100.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/25.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/25.png deleted file mode 100644 index 6731fbc606..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/25.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/50.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/50.png deleted file mode 100644 index 30578d4ca7..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/50.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/75.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/75.png deleted file mode 100644 index af4d131c02..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/75.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/drill.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/drill.png index 267c3e0119..1f141fb217 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/drill.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/drill.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-left.png index 85164e2dc7..e2108b95a7 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-left.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-right.png index 7177e691b2..991fbea280 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-right.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/meta.json index b97c800777..a9c84b52f0 100644 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/drill.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", "size": { "x": 32, "y": 32 @@ -17,27 +17,6 @@ { "name": "inhand-right", "directions": 4 - }, - { - "name": "0", - "delays": [ - [ - 0.1, - 0.1 - ] - ] - }, - { - "name": "25" - }, - { - "name": "50" - }, - { - "name": "75" - }, - { - "name": "100" } ] } diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery-on.png new file mode 100644 index 0000000000..d0a512e94e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery.png new file mode 100644 index 0000000000..2cd5b0e97c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/e-cautery.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left-on.png new file mode 100644 index 0000000000..46e8c431e9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left.png new file mode 100644 index 0000000000..1ffa9e522a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right-on.png new file mode 100644 index 0000000000..1bbb533206 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right.png new file mode 100644 index 0000000000..fa95ce487d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/meta.json new file mode 100644 index 0000000000..4a4c2c11d6 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/e-cautery.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "e-cautery" + }, + { + "name": "e-cautery-on" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-left-on", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-right-on", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel-on.png new file mode 100644 index 0000000000..04a27c34bb Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel.png new file mode 100644 index 0000000000..1fbf799b60 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/e-scalpel.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left-on.png new file mode 100644 index 0000000000..72cbd3608f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left.png new file mode 100644 index 0000000000..151705c958 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right-on.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right-on.png new file mode 100644 index 0000000000..358f397c5e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right-on.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right.png new file mode 100644 index 0000000000..70a64d2b0e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/meta.json new file mode 100644 index 0000000000..701445e8ab --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/e-scalpel.rsi/meta.json @@ -0,0 +1,39 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "e-scalpel" + }, + { + "name": "e-scalpel-on", + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-left-on", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-right-on", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/hemostat.png b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/hemostat.png new file mode 100644 index 0000000000..951d323a52 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/hemostat.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-left.png new file mode 100644 index 0000000000..eb331bac35 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-right.png new file mode 100644 index 0000000000..b83b2b02c0 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/meta.json new file mode 100644 index 0000000000..afbaa9cd51 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/hemostat.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "hemostat" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/0.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/0.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/0.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/0.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/100.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/100.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/100.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/100.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/25.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/25.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/25.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/25.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/50.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/50.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/50.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/50.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/75.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/75.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/75.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/75.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced-inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced-inhand-left.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced-inhand-left.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced-inhand-left.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced-inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced-inhand-right.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced-inhand-right.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced-inhand-right.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/advanced.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/advanced.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-left.png new file mode 100644 index 0000000000..5c498d5f08 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-right.png new file mode 100644 index 0000000000..ce54cd652e Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser-inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser-inhand-left.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser-inhand-left.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser-inhand-left.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser-inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser-inhand-right.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser-inhand-right.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser-inhand-right.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/laser.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/laser.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/meta.json new file mode 100644 index 0000000000..d72a449679 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/meta.json @@ -0,0 +1,76 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "shiv" + }, + { + "name": "scalpel" + }, + { + "name": "advanced" + }, + { + "name": "laser" + }, + { + "name": "shiv-inhand-left", + "directions": 4 + }, + { + "name": "shiv-inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "advanced-inhand-left", + "directions": 4 + }, + { + "name": "advanced-inhand-right", + "directions": 4 + }, + { + "name": "laser-inhand-left", + "directions": 4 + }, + { + "name": "laser-inhand-right", + "directions": 4 + }, + { + "name": "0", + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "25" + }, + { + "name": "50" + }, + { + "name": "75" + }, + { + "name": "100" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/scalpel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/scalpel.png new file mode 100644 index 0000000000..8fbab261f4 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/scalpel.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv-inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv-inhand-left.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv-inhand-left.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv-inhand-left.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv-inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv-inhand-right.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv-inhand-right.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv-inhand-right.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv.png b/Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/shiv.png rename to Resources/Textures/Objects/Specific/Medical/Surgery/oldscalpel.rsi/shiv.png diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-left.png new file mode 100644 index 0000000000..4f9d45bdb9 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-right.png new file mode 100644 index 0000000000..70464f1211 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/meta.json new file mode 100644 index 0000000000..ff849d1338 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/b7c3ac536391a3dfe3046f3b5197721af4564d90", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "omnimed" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/omnimed.png b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/omnimed.png new file mode 100644 index 0000000000..9e0031744d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/omnimed.rsi/omnimed.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-left.png new file mode 100644 index 0000000000..a23bdae4c5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-right.png new file mode 100644 index 0000000000..cced67007f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/meta.json new file mode 100644 index 0000000000..a38e04dcfd --- /dev/null +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "retractor" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/retractor.png b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/retractor.png new file mode 100644 index 0000000000..24e04fe613 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/Surgery/retractor.rsi/retractor.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-left.png index 5c498d5f08..726e388eca 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-left.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-right.png index ce54cd652e..ed4b405d90 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-right.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/meta.json index d72a449679..7cbc120894 100644 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/meta.json @@ -1,32 +1,15 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", + "copyright": "Taken from /tg/station at https://github.com/tgstation/tgstation/commit/67d7577947b5079408dce1b7646fdd6c3df13bb5", "size": { "x": 32, "y": 32 }, "states": [ - { - "name": "shiv" - }, { "name": "scalpel" }, - { - "name": "advanced" - }, - { - "name": "laser" - }, - { - "name": "shiv-inhand-left", - "directions": 4 - }, - { - "name": "shiv-inhand-right", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 @@ -34,43 +17,6 @@ { "name": "inhand-right", "directions": 4 - }, - { - "name": "advanced-inhand-left", - "directions": 4 - }, - { - "name": "advanced-inhand-right", - "directions": 4 - }, - { - "name": "laser-inhand-left", - "directions": 4 - }, - { - "name": "laser-inhand-right", - "directions": 4 - }, - { - "name": "0", - "delays": [ - [ - 0.1, - 0.1 - ] - ] - }, - { - "name": "25" - }, - { - "name": "50" - }, - { - "name": "75" - }, - { - "name": "100" } ] } diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png index 8fbab261f4..44ec06e463 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png and b/Resources/Textures/Objects/Specific/Medical/Surgery/scalpel.rsi/scalpel.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-left.png deleted file mode 100644 index c498493780..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-right.png deleted file mode 100644 index ac71c383af..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat-inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png deleted file mode 100644 index 75be4d5e9c..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/hemostat.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-left.png deleted file mode 100644 index 79b85824e9..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-right.png deleted file mode 100644 index 4d4f3332f6..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/meta.json deleted file mode 100644 index 42737acdc7..0000000000 --- a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/meta.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "retractor" - }, - { - "name": "hemostat" - }, - { - "name": "setter" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "hemostat-inhand-left", - "directions": 4 - }, - { - "name": "hemostat-inhand-right", - "directions": 4 - }, - { - "name": "setter-inhand-left", - "directions": 4 - }, - { - "name": "setter-inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png deleted file mode 100644 index b37b9bb1a2..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/retractor.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-left.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-left.png deleted file mode 100644 index 6fefc908b2..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-right.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-right.png deleted file mode 100644 index 6edb10c942..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter-inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter.png b/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter.png deleted file mode 100644 index 135d8a72c4..0000000000 Binary files a/Resources/Textures/Objects/Specific/Medical/Surgery/scissors.rsi/setter.png and /dev/null differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-advanced-surgery.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-advanced-surgery.png new file mode 100644 index 0000000000..291a889e4c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-advanced-surgery.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-surgery.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-surgery.png new file mode 100644 index 0000000000..8147a74b76 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-surgery.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index 1b3eba668d..ba161f0b71 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -106,6 +106,12 @@ { "name": "icon-treatment" }, + { + "name": "icon-surgery" + }, + { + "name": "icon-advanced-surgery" + }, { "name": "icon-syndicate" }, diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index ef3196085b..d6cfb77354 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -70,27 +70,21 @@ binds: - function: CameraRotateLeft type: State key: NumpadNum7 - mod1: Control - function: CameraRotateRight type: State key: NumpadNum9 - mod1: Control - function: CameraReset type: State key: NumpadNum8 - mod1: Control - function: ZoomOut type: State key: NumpadNum4 - mod1: Control - function: ZoomIn type: State key: NumpadNum6 - mod1: Control - function: ResetZoom type: State key: NumpadNum5 - mod1: Control # Misc - function: ShowEscapeMenu type: State @@ -562,22 +556,3 @@ binds: - function: LookUp type: State key: Space -# Targeting -- function: TargetHead - type: State - key: NumpadNum8 -- function: TargetTorso - type: State - key: NumpadNum5 -- function: TargetLeftArm - type: State - key: NumpadNum6 -- function: TargetRightArm - type: State - key: NumpadNum4 -- function: TargetLeftLeg - type: State - key: NumpadNum3 -- function: TargetRightLeg - type: State - key: NumpadNum1 diff --git a/RobustToolbox b/RobustToolbox index 32bca7cfd4..92b0e7f1a8 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 32bca7cfd417edcad9a60c2b1703eba8675f56af +Subproject commit 92b0e7f1a853979a1361ed24d2fb5ffc11f43f66