diff --git a/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs new file mode 100644 index 0000000000..29d6c635eb --- /dev/null +++ b/Content.Client/Radio/EntitySystems/RadioDeviceSystem.cs @@ -0,0 +1,23 @@ +using Content.Client.Radio.Ui; +using Content.Shared.Radio; +using Content.Shared.Radio.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Radio.EntitySystems; + +public sealed class RadioDeviceSystem : EntitySystem +{ + [Dependency] private readonly UserInterfaceSystem _ui = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAfterHandleState); + } + + private void OnAfterHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (_ui.TryGetOpenUi(ent.Owner, IntercomUiKey.Key, out var bui)) + bui.Update(ent); + } +} diff --git a/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs b/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs index abbb1d58ec..7b3e39aa08 100644 --- a/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs +++ b/Content.Client/Radio/Ui/IntercomBoundUserInterface.cs @@ -1,6 +1,6 @@ using Content.Shared.Radio; +using Content.Shared.Radio.Components; using JetBrains.Annotations; -using Robust.Client.GameObjects; namespace Content.Client.Radio.Ui; @@ -19,7 +19,9 @@ protected override void Open() { base.Open(); - _menu = new(); + var comp = EntMan.GetComponent(Owner); + + _menu = new((Owner, comp)); _menu.OnMicPressed += enabled => { @@ -46,13 +48,8 @@ protected override void Dispose(bool disposing) _menu?.Close(); } - protected override void UpdateState(BoundUserInterfaceState state) + public void Update(Entity ent) { - base.UpdateState(state); - - if (state is not IntercomBoundUIState msg) - return; - - _menu?.Update(msg); + _menu?.Update(ent); } } diff --git a/Content.Client/Radio/Ui/IntercomMenu.xaml.cs b/Content.Client/Radio/Ui/IntercomMenu.xaml.cs index 8b4b38753c..2e08913051 100644 --- a/Content.Client/Radio/Ui/IntercomMenu.xaml.cs +++ b/Content.Client/Radio/Ui/IntercomMenu.xaml.cs @@ -1,8 +1,9 @@ using Content.Client.UserInterface.Controls; -using Content.Shared.Radio; +using Content.Shared.Radio.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Client.Radio.Ui; @@ -17,38 +18,54 @@ public sealed partial class IntercomMenu : FancyWindow private readonly List _channels = new(); - public IntercomMenu() + public IntercomMenu(Entity entity) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); MicButton.OnPressed += args => OnMicPressed?.Invoke(args.Button.Pressed); SpeakerButton.OnPressed += args => OnSpeakerPressed?.Invoke(args.Button.Pressed); + + Update(entity); } - public void Update(IntercomBoundUIState state) + public void Update(Entity entity) { - MicButton.Pressed = state.MicEnabled; - SpeakerButton.Pressed = state.SpeakerEnabled; + MicButton.Pressed = entity.Comp.MicrophoneEnabled; + SpeakerButton.Pressed = entity.Comp.SpeakerEnabled; + + MicButton.Disabled = entity.Comp.SupportedChannels.Count == 0; + SpeakerButton.Disabled = entity.Comp.SupportedChannels.Count == 0; + ChannelOptions.Disabled = entity.Comp.SupportedChannels.Count == 0; ChannelOptions.Clear(); _channels.Clear(); - for (var i = 0; i < state.AvailableChannels.Count; i++) + for (var i = 0; i < entity.Comp.SupportedChannels.Count; i++) { - var channel = state.AvailableChannels[i]; - if (!_prototype.TryIndex(channel, out var prototype)) + var channel = entity.Comp.SupportedChannels[i]; + if (!_prototype.TryIndex(channel, out var prototype)) continue; _channels.Add(channel); ChannelOptions.AddItem(Loc.GetString(prototype.Name), i); - if (channel == state.SelectedChannel) + if (channel == entity.Comp.CurrentChannel) ChannelOptions.Select(i); } + + if (entity.Comp.SupportedChannels.Count == 0) + { + ChannelOptions.AddItem(Loc.GetString("intercom-options-none"), 0); + ChannelOptions.Select(0); + } + ChannelOptions.OnItemSelected += args => { + if (!_channels.TryGetValue(args.Id, out var proto)) + return; + ChannelOptions.SelectId(args.Id); - OnChannelSelected?.Invoke(_channels[args.Id]); + OnChannelSelected?.Invoke(proto); }; } } diff --git a/Content.Client/Shuttles/UI/MapScreen.xaml.cs b/Content.Client/Shuttles/UI/MapScreen.xaml.cs index 10800b8c5f..489dbc8c90 100644 --- a/Content.Client/Shuttles/UI/MapScreen.xaml.cs +++ b/Content.Client/Shuttles/UI/MapScreen.xaml.cs @@ -261,7 +261,7 @@ private void RebuildMapObjects() ourMap = shuttleXform.MapID; } - while (mapComps.MoveNext(out var mapComp, out var mapXform, out var mapMetadata)) + while (mapComps.MoveNext(out var mapUid, out var mapComp, out var mapXform, out var mapMetadata)) { if (_console != null && !_shuttles.CanFTLTo(_shuttleEntity.Value, mapComp.MapId, _console.Value)) { @@ -327,8 +327,10 @@ private void RebuildMapObjects() { AddMapObject(mapComp.MapId, gridObj); } - else if (!_shuttles.IsBeaconMap(_mapManager.GetMapEntityId(mapComp.MapId)) && (iffComp == null || - (iffComp.Flags & IFFFlags.Hide) == 0x0)) + // If we can show it then add it to pending. + else if (!_shuttles.IsBeaconMap(mapUid) && (iffComp == null || + (iffComp.Flags & IFFFlags.Hide) == 0x0) && + !gridObj.HideButton) { _pendingMapObjects.Add((mapComp.MapId, gridObj)); } @@ -336,11 +338,17 @@ private void RebuildMapObjects() foreach (var (beacon, _) in _shuttles.GetExclusions(mapComp.MapId, _exclusions)) { + if (beacon.HideButton) + continue; + _pendingMapObjects.Add((mapComp.MapId, beacon)); } foreach (var (beacon, _) in _shuttles.GetBeacons(mapComp.MapId, _beacons)) { + if (beacon.HideButton) + continue; + _pendingMapObjects.Add((mapComp.MapId, beacon)); } @@ -425,9 +433,6 @@ private void AddMapObject(MapId mapId, IMapObject mapObj) var existing = _mapObjects.GetOrNew(mapId); existing.Add(mapObj); - if (mapObj.HideButton) - return; - var gridContents = _mapHeadings[mapId]; var gridButton = new Button() diff --git a/Content.Server/Ame/AmeNodeGroup.cs b/Content.Server/Ame/AmeNodeGroup.cs index 40da6222d2..bb482f7726 100644 --- a/Content.Server/Ame/AmeNodeGroup.cs +++ b/Content.Server/Ame/AmeNodeGroup.cs @@ -134,22 +134,11 @@ public float InjectFuel(int fuel, out bool overloading) // The AME is being overloaded. // Note about these maths: I would assume the general idea here is to make larger engines less safe to overload. // In other words, yes, those are supposed to be CoreCount, not safeFuelLimit. - var instability = 0; var overloadVsSizeResult = fuel - CoreCount; - // fuel > safeFuelLimit: Slow damage. Can safely run at this level for burst periods if the engine is small and someone is keeping an eye on it. - if (_random.Prob(0.5f)) - instability = 1; - // overloadVsSizeResult > 5: - if (overloadVsSizeResult > 5) - instability = 3; - // overloadVsSizeResult > 10: This will explode in at most 20 injections. - if (overloadVsSizeResult > 10) - instability = 5; - - // Apply calculated instability - if (instability == 0) - return powerOutput; + var instability = overloadVsSizeResult / CoreCount; + var fuzz = _random.Next(-1, 2); // -1 to 1 + instability += fuzz; // fuzz the values a tiny bit. overloading = true; var integrityCheck = 100; @@ -179,10 +168,12 @@ public float InjectFuel(int fuel, out bool overloading) /// public float CalculatePower(int fuel, int cores) { - // Fuel is squared so more fuel vastly increases power and efficiency - // We divide by the number of cores so a larger AME is less efficient at the same fuel settings - // this results in all AMEs having the same efficiency at the same fuel-per-core setting - return 20000f * fuel * fuel / cores; + // Balanced around a single core AME with injection level 2 producing 120KW. + // Overclocking yields diminishing returns until it evens out at around 360KW. + + // The adjustment for cores make it so that a 1 core AME at 2 injections is better than a 2 core AME at 2 injections. + // However, for the relative amounts for each (1 core at 2 and 2 core at 4), more cores has more output. + return 200000f * MathF.Log10(fuel * fuel) * MathF.Pow(0.75f, cores - 1); } public int GetTotalStability() diff --git a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs index e6abe98b95..eda9158273 100644 --- a/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs +++ b/Content.Server/Ame/EntitySystems/AmeControllerSystem.cs @@ -274,9 +274,9 @@ public void SetInjectionAmount(EntityUid uid, int value, EntityUid? user = null, At the time of editing, players regularly "overclock" the AME and those cases require no admin attention. // Admin alert - var safeLimit = 0; + var safeLimit = int.MaxValue; if (TryGetAMENodeGroup(uid, out var group)) - safeLimit = group.CoreCount * 2; + safeLimit = group.CoreCount * 4; if (oldValue <= safeLimit && value > safeLimit) { @@ -291,10 +291,20 @@ public void SetInjectionAmount(EntityUid uid, int value, EntityUid? user = null, */ } - public void AdjustInjectionAmount(EntityUid uid, int delta, int min = 0, int max = int.MaxValue, EntityUid? user = null, AmeControllerComponent? controller = null) + public void AdjustInjectionAmount(EntityUid uid, int delta, EntityUid? user = null, AmeControllerComponent? controller = null) { - if (Resolve(uid, ref controller)) - SetInjectionAmount(uid, MathHelper.Clamp(controller.InjectionAmount + delta, min, max), user, controller); + if (!Resolve(uid, ref controller)) + return; + + var max = GetMaxInjectionAmount((uid, controller)); + SetInjectionAmount(uid, MathHelper.Clamp(controller.InjectionAmount + delta, 0, max), user, controller); + } + + public int GetMaxInjectionAmount(Entity ent) + { + if (!TryGetAMENodeGroup(ent, out var group)) + return 0; + return group.CoreCount * 8; } private void UpdateDisplay(EntityUid uid, int stability, AmeControllerComponent? controller = null, AppearanceComponent? appearance = null) diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index 922d48f13e..d6ece39d59 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -100,7 +100,7 @@ public void ToggleInternals( // Toggle off if they're on if (AreInternalsWorking(internals)) { - if (force || user == uid) + if (force) { DisconnectTank(internals); return; diff --git a/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs b/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs index d5f7655f88..a81f38a21d 100644 --- a/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs @@ -1,6 +1,9 @@ +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reaction; +using Content.Shared.DoAfter; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Nutrition.EntitySystems; using Content.Server.Chemistry.Containers.EntitySystems; using Content.Server.Popups; @@ -10,34 +13,68 @@ public sealed partial class ReactionMixerSystem : EntitySystem { [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly SolutionContainerSystem _solutionContainers = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnShake); + SubscribeLocalEvent(OnDoAfter); } private void OnAfterInteract(Entity entity, ref AfterInteractEvent args) { - if (!args.Target.HasValue || !args.CanReach) + if (!args.Target.HasValue || !args.CanReach || !entity.Comp.MixOnInteract) return; - var mixAttemptEvent = new MixingAttemptEvent(entity); - RaiseLocalEvent(entity, ref mixAttemptEvent); - if (mixAttemptEvent.Cancelled) - { + if (!MixAttempt(entity, args.Target.Value, out var solution)) return; - } - if (!_solutionContainers.TryGetMixableSolution(args.Target.Value, out var solution, out _)) + var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.TimeToMix, new ReactionMixDoAfterEvent(), entity, args.Target.Value, entity); + + _doAfterSystem.TryStartDoAfter(doAfterArgs); + } + + private void OnDoAfter(Entity entity, ref ReactionMixDoAfterEvent args) + { + //Do again to get the solution again + if (!MixAttempt(entity, args.Target!.Value, out var solution)) return; - _popup.PopupEntity(Loc.GetString(entity.Comp.MixMessage, ("mixed", Identity.Entity(args.Target.Value, EntityManager)), ("mixer", Identity.Entity(entity.Owner, EntityManager))), args.User, args.User); + _popup.PopupEntity(Loc.GetString(entity.Comp.MixMessage, ("mixed", Identity.Entity(args.Target!.Value, EntityManager)), ("mixer", Identity.Entity(entity.Owner, EntityManager))), args.User, args.User); + + _solutionContainers.UpdateChemicals(solution!.Value, true, entity.Comp); + + var afterMixingEvent = new AfterMixingEvent(entity, args.Target!.Value); + RaiseLocalEvent(entity, afterMixingEvent); + } + + private void OnShake(Entity entity, ref ShakeEvent args) + { + if (!MixAttempt(entity, entity, out var solution)) + return; - _solutionContainers.UpdateChemicals(solution.Value, true, entity.Comp); + _solutionContainers.UpdateChemicals(solution!.Value, true, entity.Comp); - var afterMixingEvent = new AfterMixingEvent(entity, args.Target.Value); + var afterMixingEvent = new AfterMixingEvent(entity, entity); RaiseLocalEvent(entity, afterMixingEvent); } + + private bool MixAttempt(EntityUid ent, EntityUid target, out Entity? solution) + { + solution = null; + var mixAttemptEvent = new MixingAttemptEvent(ent); + RaiseLocalEvent(ent, ref mixAttemptEvent); + if (mixAttemptEvent.Cancelled) + { + return false; + } + + if (!_solutionContainers.TryGetMixableSolution(target, out solution, out _)) + return false; + + return true; + } } diff --git a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs index 481f1fc27c..858da2b360 100644 --- a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs +++ b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs @@ -1,4 +1,5 @@ using Content.Server.Fluids.EntitySystems; +using Content.Server.Spreader; using Content.Shared.Audio; using Content.Shared.Coordinates.Helpers; using Content.Shared.Database; @@ -64,16 +65,19 @@ public override void Effect(EntityEffectBaseArgs args) var transform = reagentArgs.EntityManager.GetComponent(reagentArgs.TargetEntity); var mapManager = IoCManager.Resolve(); var mapSys = reagentArgs.EntityManager.System(); - var sys = reagentArgs.EntityManager.System(); + var spreaderSys = args.EntityManager.System(); + var sys = args.EntityManager.System(); var mapCoords = sys.GetMapCoordinates(reagentArgs.TargetEntity, xform: transform); if (!mapManager.TryFindGridAt(mapCoords, out var gridUid, out var grid) || - !mapSys.TryGetTileRef(gridUid, grid, transform.Coordinates, out var tileRef) || - tileRef.Tile.IsSpace()) + !mapSys.TryGetTileRef(gridUid, grid, transform.Coordinates, out var tileRef)) { return; } + if (spreaderSys.RequiresFloorToSpread(_prototypeId) && tileRef.Tile.IsSpace()) + return; + var coords = mapSys.MapToGrid(gridUid, mapCoords); var ent = reagentArgs.EntityManager.SpawnEntity(_prototypeId, coords.SnapToGrid()); diff --git a/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs b/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs index f958373ac7..3d3c5d8563 100644 --- a/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/SmokeOnTriggerSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Explosion.Components; using Content.Shared.Explosion.EntitySystems; using Content.Server.Fluids.EntitySystems; +using Content.Server.Spreader; using Content.Shared.Chemistry.Components; using Content.Shared.Coordinates.Helpers; using Content.Shared.Maps; @@ -17,6 +18,7 @@ public sealed class SmokeOnTriggerSystem : SharedSmokeOnTriggerSystem [Dependency] private readonly IMapManager _mapMan = default!; [Dependency] private readonly SmokeSystem _smoke = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly SpreaderSystem _spreader = default!; public override void Initialize() { @@ -31,11 +33,14 @@ private void OnTrigger(EntityUid uid, SmokeOnTriggerComponent comp, TriggerEvent var mapCoords = _transform.GetMapCoordinates(uid, xform); if (!_mapMan.TryFindGridAt(mapCoords, out _, out var grid) || !grid.TryGetTileRef(xform.Coordinates, out var tileRef) || - tileRef.Tile.IsSpace()) + tileRef.Tile.IsEmpty) { return; } + if (_spreader.RequiresFloorToSpread(comp.SmokePrototype.ToString()) && tileRef.Tile.IsSpace()) + return; + var coords = grid.MapToGrid(mapCoords); var ent = Spawn(comp.SmokePrototype, coords.SnapToGrid()); if (!TryComp(ent, out var smoke)) diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs index 8cdae84a93..e722108e14 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Spillable.cs @@ -70,13 +70,18 @@ private void SplashOnMeleeHit(Entity entity, ref MeleeHitEve return; args.Handled = true; + + // First update the hit count so anything that is not reactive wont count towards the total! + foreach (var hit in args.HitEntities) + { + if (!HasComp(hit)) + hitCount -= 1; + } + foreach (var hit in args.HitEntities) { if (!HasComp(hit)) - { - hitCount -= 1; // so we don't undershoot solution calculation for actual reactive entities continue; - } var splitSolution = _solutionContainerSystem.SplitSolution(soln.Value, totalSplit / hitCount); diff --git a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs index 8484fb2336..1258e0b8c7 100644 --- a/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioDeviceSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Server.Chat.Systems; using Content.Server.Interaction; using Content.Server.Popups; @@ -6,13 +7,10 @@ using Content.Server.Radio.Components; using Content.Server.Speech; using Content.Server.Speech.Components; -using Content.Shared.UserInterface; -using Content.Shared.Chat; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Radio; using Content.Shared.Radio.Components; -using Robust.Server.GameObjects; using Robust.Shared.Prototypes; namespace Content.Server.Radio.EntitySystems; @@ -28,7 +26,6 @@ public sealed class RadioDeviceSystem : EntitySystem [Dependency] private readonly RadioSystem _radio = default!; [Dependency] private readonly InteractionSystem _interaction = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly UserInterfaceSystem _ui = default!; // Used to prevent a shitter from using a bunch of radios to spam chat. private HashSet<(string, EntityUid)> _recentlySent = new(); @@ -47,7 +44,7 @@ public override void Initialize() SubscribeLocalEvent(OnActivateSpeaker); SubscribeLocalEvent(OnReceiveRadio); - SubscribeLocalEvent(OnBeforeIntercomUiOpen); + SubscribeLocalEvent(OnIntercomEncryptionChannelsChanged); SubscribeLocalEvent(OnToggleIntercomMic); SubscribeLocalEvent(OnToggleIntercomSpeaker); SubscribeLocalEvent(OnSelectIntercomChannel); @@ -150,18 +147,18 @@ public void ToggleRadioSpeaker(EntityUid uid, EntityUid user, bool quiet = false SetSpeakerEnabled(uid, user, !component.Enabled, quiet, component); } - public void SetSpeakerEnabled(EntityUid uid, EntityUid user, bool enabled, bool quiet = false, RadioSpeakerComponent? component = null) + public void SetSpeakerEnabled(EntityUid uid, EntityUid? user, bool enabled, bool quiet = false, RadioSpeakerComponent? component = null) { if (!Resolve(uid, ref component)) return; component.Enabled = enabled; - if (!quiet) + if (!quiet && user != null) { var state = Loc.GetString(component.Enabled ? "handheld-radio-component-on-state" : "handheld-radio-component-off-state"); var message = Loc.GetString("handheld-radio-component-on-use", ("radioState", state)); - _popup.PopupEntity(message, user, user); + _popup.PopupEntity(message, user.Value, user.Value); } _appearance.SetData(uid, RadioDeviceVisuals.Speaker, component.Enabled); @@ -213,61 +210,74 @@ private void OnReceiveRadio(EntityUid uid, RadioSpeakerComponent component, ref var nameEv = new TransformSpeakerNameEvent(args.MessageSource, Name(args.MessageSource)); RaiseLocalEvent(args.MessageSource, nameEv); - var name = Loc.GetString("speech-name-relay", ("speaker", Name(uid)), + var name = Loc.GetString("speech-name-relay", + ("speaker", Name(uid)), ("originalName", nameEv.Name)); // log to chat so people can identity the speaker/source, but avoid clogging ghost chat if there are many radios _chat.TrySendInGameICMessage(uid, args.Message, InGameICChatType.Whisper, ChatTransmitRange.GhostRangeLimit, nameOverride: name, checkRadioPrefix: false); } - private void OnBeforeIntercomUiOpen(EntityUid uid, IntercomComponent component, BeforeActivatableUIOpenEvent args) + private void OnIntercomEncryptionChannelsChanged(Entity ent, ref EncryptionChannelsChangedEvent args) { - UpdateIntercomUi(uid, component); + ent.Comp.SupportedChannels = args.Component.Channels.Select(p => new ProtoId(p)).ToList(); + + var channel = args.Component.DefaultChannel; + if (ent.Comp.CurrentChannel != null && ent.Comp.SupportedChannels.Contains(ent.Comp.CurrentChannel.Value)) + channel = ent.Comp.CurrentChannel; + + SetIntercomChannel(ent, channel); } - private void OnToggleIntercomMic(EntityUid uid, IntercomComponent component, ToggleIntercomMicMessage args) + private void OnToggleIntercomMic(Entity ent, ref ToggleIntercomMicMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - SetMicrophoneEnabled(uid, args.Actor, args.Enabled, true); - UpdateIntercomUi(uid, component); + SetMicrophoneEnabled(ent, args.Actor, args.Enabled, true); + ent.Comp.MicrophoneEnabled = args.Enabled; + Dirty(ent); } - private void OnToggleIntercomSpeaker(EntityUid uid, IntercomComponent component, ToggleIntercomSpeakerMessage args) + private void OnToggleIntercomSpeaker(Entity ent, ref ToggleIntercomSpeakerMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - SetSpeakerEnabled(uid, args.Actor, args.Enabled, true); - UpdateIntercomUi(uid, component); + SetSpeakerEnabled(ent, args.Actor, args.Enabled, true); + ent.Comp.SpeakerEnabled = args.Enabled; + Dirty(ent); } - private void OnSelectIntercomChannel(EntityUid uid, IntercomComponent component, SelectIntercomChannelMessage args) + private void OnSelectIntercomChannel(Entity ent, ref SelectIntercomChannelMessage args) { - if (component.RequiresPower && !this.IsPowered(uid, EntityManager)) + if (ent.Comp.RequiresPower && !this.IsPowered(ent, EntityManager)) return; - if (!_protoMan.TryIndex(args.Channel, out _) || !component.SupportedChannels.Contains(args.Channel)) + if (!_protoMan.HasIndex(args.Channel) || !ent.Comp.SupportedChannels.Contains(args.Channel)) return; - if (TryComp(uid, out var mic)) - mic.BroadcastChannel = args.Channel; - if (TryComp(uid, out var speaker)) - speaker.Channels = new(){ args.Channel }; - UpdateIntercomUi(uid, component); + SetIntercomChannel(ent, args.Channel); } - private void UpdateIntercomUi(EntityUid uid, IntercomComponent component) + private void SetIntercomChannel(Entity ent, ProtoId? channel) { - var micComp = CompOrNull(uid); - var speakerComp = CompOrNull(uid); - - var micEnabled = micComp?.Enabled ?? false; - var speakerEnabled = speakerComp?.Enabled ?? false; - var availableChannels = component.SupportedChannels; - var selectedChannel = micComp?.BroadcastChannel ?? SharedChatSystem.CommonChannel; - var state = new IntercomBoundUIState(micEnabled, speakerEnabled, availableChannels, selectedChannel); - _ui.SetUiState(uid, IntercomUiKey.Key, state); + ent.Comp.CurrentChannel = channel; + + if (channel == null) + { + SetSpeakerEnabled(ent, null, false); + SetMicrophoneEnabled(ent, null, false); + ent.Comp.MicrophoneEnabled = false; + ent.Comp.SpeakerEnabled = false; + Dirty(ent); + return; + } + + if (TryComp(ent, out var mic)) + mic.BroadcastChannel = channel; + if (TryComp(ent, out var speaker)) + speaker.Channels = new(){ channel }; + Dirty(ent); } } diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index 4341746aaf..3ad101e62d 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -33,11 +33,15 @@ public sealed class RadioSystem : EntitySystem // set used to prevent radio feedback loops. private readonly HashSet _messages = new(); + private EntityQuery _exemptQuery; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnIntrinsicReceive); SubscribeLocalEvent(OnIntrinsicSpeak); + + _exemptQuery = GetEntityQuery(); } private void OnIntrinsicSpeak(EntityUid uid, IntrinsicRadioTransmitterComponent component, EntitySpokeEvent args) @@ -121,9 +125,8 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann var sourceMapId = Transform(radioSource).MapID; var hasActiveServer = HasActiveServer(sourceMapId, channel.ID); - var hasMicro = HasComp(radioSource); + var sourceServerExempt = _exemptQuery.HasComp(radioSource); - var speakerQuery = GetEntityQuery(); var radioQuery = EntityQueryEnumerator(); while (canSend && radioQuery.MoveNext(out var receiver, out var radio, out var transform)) { @@ -138,7 +141,7 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann continue; // don't need telecom server for long range channels or handheld radios and intercoms - var needServer = !channel.LongRange && (!hasMicro || !speakerQuery.HasComponent(receiver)); + var needServer = !channel.LongRange && !sourceServerExempt; if (needServer && !hasActiveServer) continue; diff --git a/Content.Server/Spreader/SpreaderSystem.cs b/Content.Server/Spreader/SpreaderSystem.cs index 7de8a43d35..50f5d81183 100644 --- a/Content.Server/Spreader/SpreaderSystem.cs +++ b/Content.Server/Spreader/SpreaderSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Shuttles.Components; using Content.Shared.Atmos; +using Content.Shared.Maps; using Content.Shared.Spreader; using Content.Shared.Tag; using Robust.Shared.Collections; @@ -175,11 +176,12 @@ private void Spread(EntityUid uid, TransformComponent xform, ProtoId public void GetNeighbors(EntityUid uid, TransformComponent comp, ProtoId prototype, out ValueList<(MapGridComponent, TileRef)> freeTiles, out ValueList occupiedTiles, out ValueList neighbors) { - // TODO remove occupiedTiles -- its currently unused and just slows this method down. - DebugTools.Assert(_prototype.HasIndex(prototype)); freeTiles = []; occupiedTiles = []; neighbors = []; + // TODO remove occupiedTiles -- its currently unused and just slows this method down. + if (!_prototype.TryIndex(prototype, out var spreaderPrototype)) + return; if (!TryComp(comp.GridUid, out var grid)) return; @@ -244,6 +246,9 @@ public void GetNeighbors(EntityUid uid, TransformComponent comp, ProtoId spreader) + { + if (!_prototype.Index(spreader).TryGetComponent(out var spreaderComp, EntityManager.ComponentFactory)) + return false; + + return _prototype.Index(spreaderComp.Id).PreventSpreadOnSpaced; + } } diff --git a/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs b/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs index 757a3a515b..455414597e 100644 --- a/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs +++ b/Content.Shared/Ame/Components/AmeFuelContainerComponent.cs @@ -9,11 +9,11 @@ public sealed partial class AmeFuelContainerComponent : Component /// The amount of fuel in the container. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public int FuelAmount = 1000; + public int FuelAmount = 500; /// /// The maximum fuel capacity of the container. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public int FuelCapacity = 1000; + public int FuelCapacity = 500; } diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index 0ce8c99268..0fbfd51d69 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -196,7 +196,6 @@ protected void SetBuckledTo(Entity buckle, Entity buckle, Entity strap SetBuckledTo(buckle, strap!); Appearance.SetData(strap, StrapVisuals.State, true); Appearance.SetData(buckle, BuckleVisuals.Buckled, true); - Appearance.SetData(buckle, RotationVisuals.RotationState, RotationState.Horizontal); _rotationVisuals.SetHorizontalAngle(buckle.Owner, strap.Comp.Rotation); @@ -363,10 +361,10 @@ private void Buckle(Entity buckle, Entity strap switch (strap.Comp.Position) { case StrapPosition.Stand: - _standing.Stand(buckle); + _standing.Stand(buckle, force: true); break; case StrapPosition.Down: - _standing.Down(buckle, false, false); + _standing.Down(buckle, false, false, force: true); break; } @@ -458,10 +456,9 @@ private void Unbuckle(Entity buckle, Entity str _rotationVisuals.ResetHorizontalAngle(buckle.Owner); Appearance.SetData(strap, StrapVisuals.State, strap.Comp.BuckledEntities.Count != 0); Appearance.SetData(buckle, BuckleVisuals.Buckled, false); - Appearance.SetData(buckle, RotationVisuals.RotationState, RotationState.Vertical); if (HasComp(buckle) || _mobState.IsIncapacitated(buckle)) - _standing.Down(buckle); + _standing.Down(buckle, playSound: false); else _standing.Stand(buckle); diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs b/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs index eb23aa973b..bfb0cd9cd6 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Strap.cs @@ -57,7 +57,7 @@ private void StrapRemoveAll(EntityUid uid, StrapComponent strapComp) { foreach (var entity in strapComp.BuckledEntities.ToArray()) { - TryUnbuckle(entity, entity, true); + Unbuckle(entity, entity); } } diff --git a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs index 118f224061..8edfa44ce8 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionMixerComponent.cs @@ -1,5 +1,7 @@ using Content.Shared.Chemistry.Components; +using Content.Shared.DoAfter; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Reaction; @@ -19,9 +21,28 @@ public sealed partial class ReactionMixerComponent : Component [ViewVariables] [DataField] public LocId MixMessage = "default-mixing-success"; + + /// + /// Defines if interacting is enough to mix with this component + /// + [ViewVariables] + [DataField] + public bool MixOnInteract = true; + + /// + /// How long it takes to mix with this + /// + [ViewVariables] + [DataField] + public TimeSpan TimeToMix = TimeSpan.Zero; } [ByRefEvent] public record struct MixingAttemptEvent(EntityUid Mixed, bool Cancelled = false); public readonly record struct AfterMixingEvent(EntityUid Mixed, EntityUid Mixer); + +[Serializable, NetSerializable] +public sealed partial class ReactionMixDoAfterEvent : SimpleDoAfterEvent +{ +} diff --git a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs index b31cc75576..4a5894d895 100644 --- a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs +++ b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs @@ -99,7 +99,7 @@ public bool TrySpawnVirtualItemInHand(EntityUid blockingEnt, EntityUid user, [No if (hand.HeldEntity is not { } held) continue; - if (held == blockingEnt || HasComp(held)) + if (held == blockingEnt) continue; if (!_handsSystem.TryDrop(user, hand)) diff --git a/Content.Shared/Radio/Components/IntercomComponent.cs b/Content.Shared/Radio/Components/IntercomComponent.cs index be2734ff16..8d7b87597b 100644 --- a/Content.Shared/Radio/Components/IntercomComponent.cs +++ b/Content.Shared/Radio/Components/IntercomComponent.cs @@ -1,23 +1,32 @@ using Robust.Shared.GameStates; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; +using Robust.Shared.Prototypes; namespace Content.Shared.Radio.Components; /// /// Handles intercom ui and is authoritative on the channels an intercom can access. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class IntercomComponent : Component { /// - /// Does this intercom require popwer to function + /// Does this intercom require power to function /// - [DataField("requiresPower"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool RequiresPower = true; + [DataField, AutoNetworkedField] + public bool SpeakerEnabled; + + [DataField, AutoNetworkedField] + public bool MicrophoneEnabled; + + [DataField, AutoNetworkedField] + public ProtoId? CurrentChannel; + /// /// The list of radio channel prototypes this intercom can choose between. /// - [DataField("supportedChannels", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List SupportedChannels = new(); + [DataField, AutoNetworkedField] + public List> SupportedChannels = new(); } diff --git a/Content.Shared/Radio/Components/TelecomExemptComponent.cs b/Content.Shared/Radio/Components/TelecomExemptComponent.cs new file mode 100644 index 0000000000..7af5c1c78c --- /dev/null +++ b/Content.Shared/Radio/Components/TelecomExemptComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Radio.Components; + +/// +/// This is used for a radio that doesn't need a telecom server in order to broadcast. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class TelecomExemptComponent : Component; diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index ea07b5f8a5..cfa553661a 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -31,6 +31,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly SharedWiresSystem _wires = default!; public override void Initialize() { @@ -150,7 +151,7 @@ private void TryRemoveKey(EntityUid uid, EncryptionKeyHolderComponent component, return; } - if (TryComp(uid, out var panel) && !panel.Open) + if (!_wires.IsPanelOpen(uid)) { _popup.PopupClient(Loc.GetString("encryption-keys-panel-locked"), uid, args.User); return; @@ -184,8 +185,15 @@ private void OnHolderExamined(EntityUid uid, EncryptionKeyHolderComponent compon if (component.Channels.Count > 0) { - args.PushMarkup(Loc.GetString("examine-encryption-channels-prefix")); - AddChannelsExamine(component.Channels, component.DefaultChannel, args, _protoManager, "examine-encryption-channel"); + using (args.PushGroup(nameof(EncryptionKeyComponent))) + { + args.PushMarkup(Loc.GetString("examine-encryption-channels-prefix")); + AddChannelsExamine(component.Channels, + component.DefaultChannel, + args, + _protoManager, + "examine-encryption-channel"); + } } } diff --git a/Content.Shared/Radio/SharedIntercom.cs b/Content.Shared/Radio/SharedIntercom.cs index 410843312f..f697add8b9 100644 --- a/Content.Shared/Radio/SharedIntercom.cs +++ b/Content.Shared/Radio/SharedIntercom.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Radio; @@ -8,23 +9,6 @@ public enum IntercomUiKey Key, } -[Serializable, NetSerializable] -public sealed class IntercomBoundUIState : BoundUserInterfaceState -{ - public bool MicEnabled; - public bool SpeakerEnabled; - public List AvailableChannels; - public string SelectedChannel; - - public IntercomBoundUIState(bool micEnabled, bool speakerEnabled, List availableChannels, string selectedChannel) - { - MicEnabled = micEnabled; - SpeakerEnabled = speakerEnabled; - AvailableChannels = availableChannels; - SelectedChannel = selectedChannel; - } -} - [Serializable, NetSerializable] public sealed class ToggleIntercomMicMessage : BoundUserInterfaceMessage { diff --git a/Content.Shared/Spreader/EdgeSpreaderPrototype.cs b/Content.Shared/Spreader/EdgeSpreaderPrototype.cs index fee8f93a6d..33665d82b5 100644 --- a/Content.Shared/Spreader/EdgeSpreaderPrototype.cs +++ b/Content.Shared/Spreader/EdgeSpreaderPrototype.cs @@ -10,4 +10,10 @@ public sealed partial class EdgeSpreaderPrototype : IPrototype { [IdDataField] public string ID { get; } = string.Empty; [DataField(required:true)] public int UpdatesPerSecond; + + /// + /// If true, this spreader can't spread onto spaced tiles like lattice. + /// + [DataField] + public bool PreventSpreadOnSpaced = true; } diff --git a/Content.Shared/Standing/StandingStateSystem.cs b/Content.Shared/Standing/StandingStateSystem.cs index ed586e970d..8d9be9ab77 100644 --- a/Content.Shared/Standing/StandingStateSystem.cs +++ b/Content.Shared/Standing/StandingStateSystem.cs @@ -25,7 +25,10 @@ public bool IsDown(EntityUid uid, StandingStateComponent? standingState = null) return !standingState.Standing; } - public bool Down(EntityUid uid, bool playSound = true, bool dropHeldItems = true, + public bool Down(EntityUid uid, + bool playSound = true, + bool dropHeldItems = true, + bool force = false, StandingStateComponent? standingState = null, AppearanceComponent? appearance = null, HandsComponent? hands = null) @@ -49,11 +52,14 @@ public bool Down(EntityUid uid, bool playSound = true, bool dropHeldItems = true RaiseLocalEvent(uid, new DropHandItemsEvent(), false); } - var msg = new DownAttemptEvent(); - RaiseLocalEvent(uid, msg, false); + if (!force) + { + var msg = new DownAttemptEvent(); + RaiseLocalEvent(uid, msg, false); - if (msg.Cancelled) - return false; + if (msg.Cancelled) + return false; + } standingState.Standing = false; Dirty(uid, standingState); diff --git a/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs b/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs new file mode 100644 index 0000000000..1b87082def --- /dev/null +++ b/Content.Shared/Tiles/ReplaceFloorOnSpawnComponent.cs @@ -0,0 +1,36 @@ +using Content.Shared.Maps; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Tiles; + +/// +/// Replaces floor tiles around this entity when it spawns +/// +[RegisterComponent, NetworkedComponent, Access(typeof(ReplaceFloorOnSpawnSystem))] +public sealed partial class ReplaceFloorOnSpawnComponent : Component +{ + /// + /// The floor tiles that will be replaced. If null, will replace all. + /// + [DataField] + public List>? ReplaceableTiles = new(); + + /// + /// The tiles that it will replace. Randomly picked from the list. + /// + [DataField] + public List> ReplacementTiles = new(); + + /// + /// Whether or not there has to be a tile in the location to be replaced. + /// + [DataField] + public bool ReplaceSpace = true; + + /// + /// List of offsets from the base tile, used to determine which tiles will be replaced. + /// + [DataField] + public List Offsets = new() { Vector2i.Up, Vector2i.Down, Vector2i.Left, Vector2i.Right, Vector2i.Zero }; +} diff --git a/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs b/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs new file mode 100644 index 0000000000..818991f823 --- /dev/null +++ b/Content.Shared/Tiles/ReplaceFloorOnSpawnSystem.cs @@ -0,0 +1,48 @@ +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Shared.Tiles; + +public sealed class ReplaceFloorOnSpawnSystem : EntitySystem +{ + [Dependency] private readonly ITileDefinitionManager _tile = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + var xform = Transform(ent); + if (xform.GridUid is not { } grid || !TryComp(grid, out var gridComp)) + return; + + if (ent.Comp.ReplaceableTiles != null && ent.Comp.ReplaceableTiles.Count == 0) + return; + + var tileIndices = _map.LocalToTile(grid, gridComp, xform.Coordinates); + + foreach (var offset in ent.Comp.Offsets) + { + var actualIndices = tileIndices + offset; + + if (!_map.TryGetTileRef(grid, gridComp, actualIndices, out var tile)) + continue; + + if (ent.Comp.ReplaceableTiles != null && + !tile.Tile.IsEmpty && + !ent.Comp.ReplaceableTiles.Contains(_tile[tile.Tile.TypeId].ID)) + continue; + + var tileToSet = _random.Pick(ent.Comp.ReplacementTiles); + _map.SetTile(grid, gridComp, tile.GridIndices, new Tile(_prototype.Index(tileToSet).TileId)); + } + } +} diff --git a/Content.Shared/Wires/SharedWiresSystem.cs b/Content.Shared/Wires/SharedWiresSystem.cs index d84766a5fc..7032293eaf 100644 --- a/Content.Shared/Wires/SharedWiresSystem.cs +++ b/Content.Shared/Wires/SharedWiresSystem.cs @@ -20,6 +20,7 @@ public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnPanelDoAfter); SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnExamine); @@ -28,6 +29,11 @@ public override void Initialize() SubscribeLocalEvent(OnActivatableUIPanelChanged); } + private void OnStartup(Entity ent, ref ComponentStartup args) + { + UpdateAppearance(ent, ent); + } + private void OnPanelDoAfter(EntityUid uid, WiresPanelComponent panel, WirePanelDoAfterEvent args) { if (args.Cancelled) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4d0bb277f8..c1f6f5632a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,75 +1,4 @@ Entries: -- author: icekot8 - changes: - - message: "\u0421argo request console now reports when a request is approved" - type: Add - id: 6374 - time: '2024-04-18T00:32:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27038 -- author: Bellwether - changes: - - message: Midround zombie outbreaks are less common and spread more slowly. - type: Tweak - id: 6375 - time: '2024-04-18T01:06:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27060 -- author: Flareguy - changes: - - message: Updated Remote Signaller sprites. - type: Tweak - id: 6376 - time: '2024-04-18T01:16:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27073 -- author: Dutch-VanDerLinde - changes: - - message: Grey security jumpsuits are now available in the security officer loadout. - type: Tweak - id: 6377 - time: '2024-04-18T01:22:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27023 -- author: Tayrtahn - changes: - - message: Sodas and other fizzy drinks can be shaken with the verbs menu to build - up fizziness so they spray when opened. - type: Add - id: 6378 - time: '2024-04-18T01:49:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25574 -- author: metalgearsloth - changes: - - message: Fix lobby UI not resetting for character changes. - type: Fix - id: 6379 - time: '2024-04-18T03:01:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/27075 -- author: TokenStyle - changes: - - message: Benzene is no longer required for the Insuzine recipe. - type: Tweak - id: 6380 - time: '2024-04-18T03:03:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26829 -- author: Golinth - changes: - - message: The Nukie Agent now comes with a medihud built into their visor! - type: Add - id: 6381 - time: '2024-04-18T03:04:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26218 -- author: Krunk - changes: - - message: Cyborgs no longer see criminal status icons. - type: Remove - id: 6382 - time: '2024-04-18T03:20:44.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26207 -- author: ArZarLordOfMango - changes: - - message: Added autolathe recipe for beverage jug. - type: Add - id: 6383 - time: '2024-04-18T03:24:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25681 - author: superjj18 changes: - message: Emergency lighting now changes based on station alert level! @@ -3818,3 +3747,84 @@ id: 6873 time: '2024-07-05T07:59:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29707 +- author: metalgearsloth + changes: + - message: Shuttle map buttons will show up faster. + type: Tweak + id: 6874 + time: '2024-07-06T03:51:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29757 +- author: JIPDawg + changes: + - message: Added Late join CryoSleepers to Origin. + type: Tweak + id: 6875 + time: '2024-07-06T17:33:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29761 +- author: Beck Thompson + changes: + - message: Splashing reagents on players will now apply the correct amounts. + type: Fix + id: 6876 + time: '2024-07-07T03:52:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29763 +- author: Tayrtahn + changes: + - message: Dead bodies will no longer remain standing after being unbuckled from + chairs. + type: Fix + id: 6877 + time: '2024-07-07T06:20:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29741 +- author: Simyon + changes: + - message: Ratkings now require at least 30 players in order to spawn. + type: Tweak + id: 6878 + time: '2024-07-07T13:06:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29737 +- author: EmoGarbage404 + changes: + - message: Intercoms now use encryption keys to determine what channels they can + broadcast on. + type: Tweak + - message: Intercoms and handheld radios no longer rely on telecom servers. + type: Fix + id: 6879 + time: '2024-07-07T14:19:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29580 +- author: Vermidia + changes: + - message: Some drink reactions now require shaking with the shaker or stirring + with a spoon + type: Add + id: 6880 + time: '2024-07-07T14:21:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29243 +- author: Dezzzix + changes: + - message: Now you can slice food with swords + type: Add + id: 6881 + time: '2024-07-07T14:22:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29005 +- author: EmoGarbage404 + changes: + - message: Changed AME power output. Lower injection amounts now produce more power + but further injections have diminishing returns. + type: Tweak + - message: Increased damage per injection overclocked AMEs. + type: Tweak + - message: Halved fuel per AME jar. + type: Tweak + id: 6882 + time: '2024-07-07T14:27:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29587 +- author: Plykiya + changes: + - message: Hyperzine's effective healing range has been changed from 70 to 120, + to anything above 70 total damage. + type: Tweak + id: 6883 + time: '2024-07-07T14:28:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29712 diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 1e41be2bb7..f3d458e046 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aeshus, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, ArkiveDev, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, dffdff2423, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, Futuristic-OK, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, hitomishirichan, Hmeister-real, HolySSSS, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Keer-Sar, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zonespace27, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aeshus, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, ArkiveDev, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, dffdff2423, diraven, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, Futuristic-OK, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, HerCoyote23, hitomishirichan, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JIPDawg, JoeHammad1844, joelsgp, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Keer-Sar, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, laok233, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zonespace27, Zumorica, Zymem diff --git a/Resources/Locale/en-US/chemistry/components/mixing-component.ftl b/Resources/Locale/en-US/chemistry/components/mixing-component.ftl index a486ed8ede..c434246fab 100644 --- a/Resources/Locale/en-US/chemistry/components/mixing-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/mixing-component.ftl @@ -6,9 +6,12 @@ mixing-verb-default-condense = condense mixing-verb-centrifuge = centrifugation mixing-verb-electrolysis = electrolyze mixing-verb-holy = bless +mixing-verb-stir = stir +mixing-verb-shake = shake ## Entity default-mixing-success = You mix the {$mixed} with the {$mixer} bible-mixing-success = You bless the {$mixed} with the {$mixer} +spoon-mixing-success = You stir the {$mixed} with the {$mixer} diff --git a/Resources/Locale/en-US/radio/components/intercom.ftl b/Resources/Locale/en-US/radio/components/intercom.ftl index e56e3cd0f7..63303999c2 100644 --- a/Resources/Locale/en-US/radio/components/intercom.ftl +++ b/Resources/Locale/en-US/radio/components/intercom.ftl @@ -1,5 +1,6 @@ intercom-menu-title = Intercom intercom-channel-label = Channel: intercom-button-text-mic = Mic. -intercom-button-text-speaker = Speak +intercom-button-text-speaker = Spkr. +intercom-options-none = No channels intercom-flavor-text-left = Keep lines free of chatter diff --git a/Resources/Locale/en-US/reagents/meta/narcotics.ftl b/Resources/Locale/en-US/reagents/meta/narcotics.ftl index b48eb03b7d..600ceffce6 100644 --- a/Resources/Locale/en-US/reagents/meta/narcotics.ftl +++ b/Resources/Locale/en-US/reagents/meta/narcotics.ftl @@ -5,7 +5,7 @@ reagent-name-ephedrine = ephedrine reagent-desc-ephedrine = A caffeinated adrenaline stimulator chemical that makes you faster and harder to knock down. Also helps combat narcolepsy at dosages over thirty, at the cost of severe nerval stress. reagent-name-stimulants = hyperzine -reagent-desc-stimulants = A chemical cocktail developed by Donk Co. that allows agents to recover from stuns faster, move more quickly, and grants a small heal while close to critical condition. Due to the complex nature of the chemical, it is much harder for the body to purge naturally. +reagent-desc-stimulants = A chemical cocktail developed by Donk Co. that allows agents to recover from stuns faster, move more quickly, and grants a small heal when you're more dead than alive. Due to the complex nature of the chemical, it is much harder for the body to purge naturally. reagent-name-experimental-stimulants = experimental stimulants reagent-desc-experimental-stimulants = A prototype version of hyperzine. Usage grants virtual immunity to stun weaponry, rapid tissue regeneration, extreme running speed by reducing lactic acid buildup, and a general feeling of euphoria. Side effects may include extreme levels of anticoagulation, tunnel vision, extreme toxin buildup in the bloodstream, and rapid liver death. Do not give to animals. diff --git a/Resources/Locale/en-US/tiles/tiles.ftl b/Resources/Locale/en-US/tiles/tiles.ftl index e5b6810fca..35cea19f78 100644 --- a/Resources/Locale/en-US/tiles/tiles.ftl +++ b/Resources/Locale/en-US/tiles/tiles.ftl @@ -87,6 +87,7 @@ tiles-gold-tile = gold tile tiles-silver-tile = silver tile tiles-glass-floor = glass floor tiles-reinforced-glass-floor = reinforced glass floor +tiles-metal-foam = metal foam floor tiles-green-circuit-floor = green circuit floor tiles-blue-circuit-floor = blue circuit floor tiles-snow = snow @@ -126,4 +127,4 @@ tiles-mowed-astro-grass = mowed astro-grass tiles-jungle-astro-grass = jungle astro-grass tiles-astro-ice = astro-ice tiles-astro-snow = astro-snow -tiles-wood-large = large wood \ No newline at end of file +tiles-wood-large = large wood diff --git a/Resources/Maps/origin.yml b/Resources/Maps/origin.yml index 7dd4d4386f..380447782f 100644 --- a/Resources/Maps/origin.yml +++ b/Resources/Maps/origin.yml @@ -12115,26 +12115,17 @@ entities: rot: 3.141592653589793 rad pos: -44.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24384 - uid: 116 components: - type: Transform pos: -51.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24382 - uid: 117 components: - type: Transform rot: 3.141592653589793 rad pos: -52.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24383 - uid: 118 components: - type: Transform @@ -12143,26 +12134,18 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24386 - uid: 119 components: - type: Transform rot: -1.5707963267948966 rad pos: -17.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24387 - uid: 120 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24389 - uid: 121 components: - type: Transform @@ -12389,7 +12372,7 @@ entities: pos: 19.5,16.5 parent: 2 - type: Door - secondsUntilStateChange: -25677.166 + secondsUntilStateChange: -25890.535 state: Opening - uid: 156 components: @@ -13799,17 +13782,11 @@ entities: - type: Transform pos: 26.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 390 components: - type: Transform pos: 24.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 391 components: - type: Transform @@ -13843,9 +13820,6 @@ entities: - type: Transform pos: 25.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24448 - uid: 397 components: - type: Transform @@ -14090,25 +14064,16 @@ entities: - type: Transform pos: 40.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 440 components: - type: Transform pos: 40.5,-42.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 441 components: - type: Transform pos: 40.5,-43.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 442 components: - type: Transform @@ -14206,7 +14171,7 @@ entities: pos: 51.5,-3.5 parent: 2 - type: Door - secondsUntilStateChange: -24490.984 + secondsUntilStateChange: -24704.354 state: Opening - uid: 458 components: @@ -14215,7 +14180,7 @@ entities: pos: 52.5,-3.5 parent: 2 - type: Door - secondsUntilStateChange: -24489.768 + secondsUntilStateChange: -24703.137 state: Opening - uid: 459 components: @@ -14372,25 +14337,16 @@ entities: - type: Transform pos: -21.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 487 components: - type: Transform pos: -21.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 488 components: - type: Transform pos: -21.5,20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 489 components: - type: Transform @@ -14468,9 +14424,6 @@ entities: - type: Transform pos: -21.5,21.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 504 components: - type: Transform @@ -14778,9 +14731,6 @@ entities: - type: Transform pos: 0.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - uid: 557 components: - type: MetaData @@ -14788,9 +14738,6 @@ entities: - type: Transform pos: 6.5,-7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - uid: 558 components: - type: Transform @@ -15239,9 +15186,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,-8.5 parent: 2 - - type: DeviceLinkSink - links: - - 24152 - proto: AirlockMaintJanitorLocked entities: - uid: 629 @@ -15501,9 +15445,6 @@ entities: - type: Transform pos: -22.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24387 - uid: 675 components: - type: Transform @@ -16300,9 +16241,6 @@ entities: - type: Transform pos: -25.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24388 - uid: 796 components: - type: MetaData @@ -16310,9 +16248,6 @@ entities: - type: Transform pos: -23.5,38.5 parent: 2 - - type: DeviceLinkSink - links: - - 24385 - proto: AirlockVirologyGlass entities: - uid: 797 @@ -17234,8 +17169,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - uid: 955 components: - type: MetaData @@ -17339,8 +17272,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - proto: APCHighCapacity entities: - uid: 969 @@ -17489,8 +17420,6 @@ entities: parent: 2 - type: Apc hasAccess: True - lastExternalState: Good - lastChargeState: Full - uid: 989 components: - type: MetaData @@ -23008,49 +22937,31 @@ entities: - type: Transform pos: -78.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2060 components: - type: Transform pos: -78.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2061 components: - type: Transform pos: -78.5,-42.5 parent: 2 - - type: DeviceLinkSink - links: - - 24444 - uid: 2062 components: - type: Transform pos: -74.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - uid: 2063 components: - type: Transform pos: -74.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - uid: 2064 components: - type: Transform pos: -74.5,-45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24443 - proto: BlastDoorBridge entities: - uid: 2065 @@ -23058,25 +22969,16 @@ entities: - type: Transform pos: 10.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - uid: 2066 components: - type: Transform pos: 10.5,49.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - uid: 2067 components: - type: Transform pos: 10.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24425 - proto: BlastDoorExterior1 entities: - uid: 2068 @@ -23084,229 +22986,142 @@ entities: - type: Transform pos: 18.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24401 - uid: 2069 components: - type: Transform pos: 47.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2070 components: - type: Transform pos: 47.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2071 components: - type: Transform pos: 47.5,-53.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2072 components: - type: Transform pos: 47.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24397 - uid: 2073 components: - type: Transform pos: 52.5,-58.5 parent: 2 - - type: DeviceLinkSink - links: - - 24398 - uid: 2074 components: - type: Transform pos: 50.5,-62.5 parent: 2 - - type: DeviceLinkSink - links: - - 24431 - uid: 2075 components: - type: Transform rot: 1.5707963267948966 rad pos: 55.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24400 - uid: 2076 components: - type: Transform rot: 1.5707963267948966 rad pos: 54.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24400 - uid: 2077 components: - type: Transform pos: -45.5,-34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24445 - uid: 2078 components: - type: Transform rot: -1.5707963267948966 rad pos: -40.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2079 components: - type: Transform rot: -1.5707963267948966 rad pos: -39.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2080 components: - type: Transform rot: -1.5707963267948966 rad pos: -38.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2081 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24404 - uid: 2082 components: - type: Transform pos: -49.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24406 - uid: 2083 components: - type: Transform pos: -49.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24406 - uid: 2084 components: - type: Transform pos: 51.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24414 - - 24416 - - 24421 - uid: 2085 components: - type: Transform pos: 54.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24412 - - 24414 - uid: 2086 components: - type: Transform pos: -52.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24435 - uid: 2087 components: - type: Transform pos: -52.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 24399 - uid: 2088 components: - type: Transform pos: -53.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24405 - uid: 2089 components: - type: Transform pos: -53.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24405 - uid: 2090 components: - type: Transform pos: 53.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24408 - - 24417 - - 24424 - uid: 2091 components: - type: Transform pos: 55.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24412 - - 24415 - uid: 2092 components: - type: Transform pos: 50.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24410 - uid: 2093 components: - type: Transform pos: 57.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24416 - uid: 2094 components: - type: Transform pos: 56.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24407 - uid: 2095 components: - type: Transform @@ -23317,72 +23132,41 @@ entities: - type: Transform pos: 53.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24407 - - 24422 - - 24424 - uid: 2097 components: - type: Transform pos: 55.5,48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24422 - uid: 2098 components: - type: Transform pos: 58.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24408 - uid: 2099 components: - type: Transform pos: 52.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24411 - - 24420 - uid: 2100 components: - type: Transform pos: 53.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24418 - - 24424 - uid: 2101 components: - type: Transform pos: 55.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24418 - - 24421 - uid: 2102 components: - type: Transform pos: 58.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24419 - uid: 2103 components: - type: Transform pos: 57.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24411 - - 24413 - - 24422 - uid: 2104 components: - type: Transform @@ -23393,101 +23177,62 @@ entities: - type: Transform pos: 54.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24415 - uid: 2106 components: - type: Transform pos: 52.5,47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24417 - uid: 2107 components: - type: Transform pos: 51.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24421 - - 24422 - uid: 2108 components: - type: Transform pos: 56.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24413 - - 24419 - uid: 2109 components: - type: Transform pos: 50.5,45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24410 - - 24420 - uid: 2110 components: - type: Transform pos: -18.5,-96.5 parent: 2 - - type: DeviceLinkSink - links: - - 24427 - uid: 2111 components: - type: Transform pos: -18.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 24427 - uid: 2112 components: - type: Transform pos: -26.5,-96.5 parent: 2 - - type: DeviceLinkSink - links: - - 24428 - uid: 2113 components: - type: Transform pos: -26.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 24428 - uid: 2114 components: - type: Transform pos: 67.5,-39.5 parent: 2 - - type: DeviceLinkSink - links: - - 24396 - uid: 2115 components: - type: Transform rot: 3.141592653589793 rad pos: 72.5,-27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24432 - uid: 2116 components: - type: Transform pos: -45.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24445 - proto: BlastDoorExterior1Open entities: - uid: 2117 @@ -23496,162 +23241,100 @@ entities: rot: -1.5707963267948966 rad pos: 24.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2118 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2119 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2120 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2121 components: - type: Transform rot: -1.5707963267948966 rad pos: 24.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2122 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2123 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2124 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2125 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2126 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24426 - uid: 2127 components: - type: Transform pos: -8.5,-91.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2128 components: - type: Transform pos: -8.5,-92.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2129 components: - type: Transform pos: -8.5,-93.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2130 components: - type: Transform pos: -6.5,-91.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2131 components: - type: Transform pos: -6.5,-90.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2132 components: - type: Transform pos: -6.5,-92.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2133 components: - type: Transform pos: -6.5,-93.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - uid: 2134 components: - type: Transform pos: -8.5,-90.5 parent: 2 - - type: DeviceLinkSink - links: - - 24429 - - 24430 - proto: BlastDoorOpen entities: - uid: 2135 @@ -23659,86 +23342,56 @@ entities: - type: Transform pos: -56.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2136 components: - type: Transform pos: -56.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2137 components: - type: Transform pos: -56.5,-13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2138 components: - type: Transform pos: -56.5,-14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2139 components: - type: Transform pos: -56.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24403 - uid: 2140 components: - type: Transform rot: -1.5707963267948966 rad pos: -64.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2141 components: - type: Transform rot: -1.5707963267948966 rad pos: -65.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2142 components: - type: Transform rot: -1.5707963267948966 rad pos: -66.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2143 components: - type: Transform rot: -1.5707963267948966 rad pos: -67.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - uid: 2144 components: - type: Transform rot: -1.5707963267948966 rad pos: -68.5,-22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24402 - proto: BlockGameArcadeComputerCircuitboard entities: - uid: 2145 @@ -23781,7 +23434,7 @@ entities: - type: Transform pos: -25.389751,-36.57607 parent: 2 -- proto: BookChefGaming +- proto: BookHowToCookForFortySpaceman entities: - uid: 2151 components: @@ -80698,906 +80351,592 @@ entities: rot: 1.5707963267948966 rad pos: 16.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12862 components: - type: Transform pos: 18.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12863 components: - type: Transform rot: 1.5707963267948966 rad pos: 17.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12864 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12865 components: - type: Transform pos: 18.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12866 components: - type: Transform rot: -1.5707963267948966 rad pos: -12.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12867 components: - type: Transform pos: 15.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12868 components: - type: Transform pos: 18.5,-57.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12869 components: - type: Transform rot: -1.5707963267948966 rad pos: 17.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12870 components: - type: Transform rot: -1.5707963267948966 rad pos: 16.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12871 components: - type: Transform rot: -1.5707963267948966 rad pos: 18.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - uid: 12872 components: - type: Transform rot: -1.5707963267948966 rad pos: -14.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12873 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12874 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12875 components: - type: Transform rot: 1.5707963267948966 rad pos: -25.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12876 components: - type: Transform rot: 1.5707963267948966 rad pos: -26.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12877 components: - type: Transform rot: 1.5707963267948966 rad pos: -27.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12878 components: - type: Transform rot: 1.5707963267948966 rad pos: -28.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12879 components: - type: Transform rot: 1.5707963267948966 rad pos: -30.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12880 components: - type: Transform rot: 1.5707963267948966 rad pos: -29.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26147 - uid: 12881 components: - type: Transform rot: 1.5707963267948966 rad pos: -35.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12882 components: - type: Transform rot: 1.5707963267948966 rad pos: -34.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12883 components: - type: Transform rot: 1.5707963267948966 rad pos: -36.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12884 components: - type: Transform rot: 1.5707963267948966 rad pos: -37.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12885 components: - type: Transform rot: 1.5707963267948966 rad pos: -38.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26151 - uid: 12886 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12887 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12888 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12889 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12890 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12891 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12892 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12893 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12894 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12895 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12896 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12897 components: - type: Transform rot: 1.5707963267948966 rad pos: -46.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 26150 - uid: 12898 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12899 components: - type: Transform rot: 1.5707963267948966 rad pos: -46.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12900 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12901 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26149 - uid: 12902 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12903 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12904 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12905 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12906 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12907 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12908 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12909 components: - type: Transform rot: 1.5707963267948966 rad pos: -51.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12910 components: - type: Transform rot: 1.5707963267948966 rad pos: -50.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12911 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12912 components: - type: Transform rot: 1.5707963267948966 rad pos: -48.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12913 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12914 components: - type: Transform rot: 1.5707963267948966 rad pos: -53.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12915 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,34.5 parent: 2 - - type: DeviceLinkSink - links: - - 26154 - uid: 12916 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,30.5 parent: 2 - - type: DeviceLinkSink - links: - - 26153 - uid: 12917 components: - type: Transform rot: -1.5707963267948966 rad pos: -12.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12918 components: - type: Transform pos: -10.5,28.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12919 components: - type: Transform rot: -1.5707963267948966 rad pos: -9.5,28.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12920 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12921 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,17.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12922 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12923 components: - type: Transform pos: -47.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12924 components: - type: Transform pos: -47.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12925 components: - type: Transform pos: -47.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 26155 - uid: 12926 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12927 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12928 components: - type: Transform rot: 1.5707963267948966 rad pos: -6.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12929 components: - type: Transform rot: 1.5707963267948966 rad pos: 43.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12930 components: - type: Transform rot: 1.5707963267948966 rad pos: 44.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12931 components: - type: Transform rot: 1.5707963267948966 rad pos: 45.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12932 components: - type: Transform pos: 46.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12933 components: - type: Transform rot: 1.5707963267948966 rad pos: 46.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12934 components: - type: Transform rot: 1.5707963267948966 rad pos: 47.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12935 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,36.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12936 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,37.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12937 components: - type: Transform rot: 1.5707963267948966 rad pos: -9.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12938 components: - type: Transform pos: -9.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12939 components: - type: Transform pos: -9.5,26.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12940 components: - type: Transform pos: -9.5,25.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12941 components: - type: Transform pos: -9.5,24.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12942 components: - type: Transform pos: -9.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12943 components: - type: Transform rot: 3.141592653589793 rad pos: -10.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12944 components: - type: Transform rot: 1.5707963267948966 rad pos: -10.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12945 components: - type: Transform rot: -1.5707963267948966 rad pos: -10.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12946 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 26152 - uid: 12947 components: - type: Transform rot: 3.141592653589793 rad pos: 48.5,38.5 parent: 2 - - type: DeviceLinkSink - links: - - 26156 - uid: 12948 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-99.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12949 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-98.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12950 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-100.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12951 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-101.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12952 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-102.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12953 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-103.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12954 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,-104.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12955 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12956 components: - type: Transform rot: -1.5707963267948966 rad pos: -36.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12957 components: - type: Transform rot: 3.141592653589793 rad pos: -38.5,-105.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12958 components: - type: Transform rot: 1.5707963267948966 rad pos: -38.5,-104.5 parent: 2 - - type: DeviceLinkSink - links: - - 26157 - - 26158 - uid: 12959 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-11.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12960 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-12.5 parent: 2 - - type: DeviceLinkSink - links: - - 26159 - uid: 12961 components: - type: Transform rot: 3.141592653589793 rad pos: -42.5,16.5 parent: 2 - - type: DeviceLinkSink - links: - - 26148 - uid: 12962 components: - type: Transform @@ -81605,8 +80944,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - uid: 12963 components: - type: Transform @@ -81614,8 +80951,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - uid: 12964 components: - type: Transform @@ -81623,8 +80958,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 26160 - proto: ConveyorBeltAssembly entities: - uid: 12965 @@ -82507,22 +81840,12 @@ entities: - type: Transform pos: 13.5,-83.5 parent: 2 - - uid: 13036 - components: - - type: Transform - pos: 13.5,-84.5 - parent: 2 - uid: 13037 components: - type: Transform rot: 1.5707963267948966 rad pos: 17.5,-82.5 parent: 2 - - uid: 13038 - components: - - type: Transform - pos: 13.5,-82.5 - parent: 2 - uid: 13039 components: - type: Transform @@ -82552,6 +81875,20 @@ entities: rot: 1.5707963267948966 rad pos: -8.5,-66.5 parent: 2 +- proto: CryogenicSleepUnitSpawner + entities: + - uid: 13036 + components: + - type: Transform + pos: 13.5,-84.5 + parent: 2 +- proto: CryogenicSleepUnitSpawnerLateJoin + entities: + - uid: 13038 + components: + - type: Transform + pos: 13.5,-82.5 + parent: 2 - proto: CryoPod entities: - uid: 13044 @@ -140558,44 +139895,29 @@ entities: - type: Transform pos: -5.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24456 - uid: 21473 components: - type: Transform pos: 38.5,-41.5 parent: 2 - - type: DeviceLinkSink - links: - - 24451 - uid: 21474 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24452 - uid: 21475 components: - type: Transform rot: 1.5707963267948966 rad pos: 24.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24454 - uid: 21476 components: - type: Transform rot: -1.5707963267948966 rad pos: 16.5,-23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24446 - uid: 21477 components: - type: Transform @@ -140604,43 +139926,29 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 2 - links: - - 24447 - uid: 21478 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,-33.5 parent: 2 - - type: DeviceLinkSink - links: - - 24455 - uid: 21479 components: - type: Transform rot: 1.5707963267948966 rad pos: 34.5,-23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24446 - uid: 21480 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,22.5 parent: 2 - - type: DeviceLinkSink - links: - - 24453 - uid: 21481 components: - type: Transform pos: 0.5,-25.5 parent: 2 - - type: DeviceLinkSink - links: - - 24457 - proto: JetpackBlueFilled entities: - uid: 21482 @@ -142227,9 +141535,6 @@ entities: - type: Transform pos: 72.5,-28.5 parent: 2 - - type: DeviceLinkSink - links: - - 12764 - proto: MachineCentrifuge entities: - uid: 21605 @@ -146478,9 +145783,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24450 - uid: 22311 components: - type: Transform @@ -149140,9 +148442,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,-7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24450 - uid: 22663 components: - type: Transform @@ -154237,9 +153536,6 @@ entities: rot: 1.5707963267948966 rad pos: 17.5,-55.5 parent: 2 - - type: DeviceLinkSink - links: - - 26146 - proto: ReinforcedPlasmaWindow entities: - uid: 23478 @@ -158447,18 +157743,12 @@ entities: rot: -1.5707963267948966 rad pos: 66.5,-45.5 parent: 2 - - type: DeviceLinkSink - links: - - 24395 - uid: 24237 components: - type: Transform rot: -1.5707963267948966 rad pos: 66.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24395 - proto: ShuttersNormalOpen entities: - uid: 24238 @@ -158468,8 +157758,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24463 - uid: 24239 components: - type: Transform @@ -158477,8 +157765,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24391 - uid: 24240 components: - type: Transform @@ -158486,8 +157772,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 4 - links: - - 24442 - uid: 24241 components: - type: Transform @@ -158495,17 +157779,12 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 4 - links: - - 24442 - uid: 24242 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24243 components: - type: Transform @@ -158517,332 +157796,212 @@ entities: - type: Transform pos: -32.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24245 components: - type: Transform pos: 37.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24246 components: - type: Transform pos: -8.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24247 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24248 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,10.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24249 components: - type: Transform pos: 18.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24250 components: - type: Transform pos: 17.5,15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24251 components: - type: Transform pos: -6.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24252 components: - type: Transform rot: 1.5707963267948966 rad pos: 48.5,6.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24253 components: - type: Transform rot: -1.5707963267948966 rad pos: 35.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24254 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,12.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24255 components: - type: Transform pos: 61.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24256 components: - type: Transform rot: -1.5707963267948966 rad pos: 15.5,14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24393 - uid: 24257 components: - type: Transform pos: 45.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24258 components: - type: Transform pos: 43.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24259 components: - type: Transform pos: 62.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24260 components: - type: Transform pos: 63.5,-56.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24261 components: - type: Transform pos: -30.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24262 components: - type: Transform pos: 29.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24263 components: - type: Transform pos: 34.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24264 components: - type: Transform pos: -31.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24265 components: - type: Transform rot: -1.5707963267948966 rad pos: 35.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24266 components: - type: Transform pos: -33.5,27.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24267 components: - type: Transform pos: -49.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24268 components: - type: Transform pos: -48.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24269 components: - type: Transform pos: -31.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24270 components: - type: Transform pos: 32.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24433 - uid: 24271 components: - type: Transform pos: 39.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24272 components: - type: Transform pos: -33.5,32.5 parent: 2 - - type: DeviceLinkSink - links: - - 24423 - uid: 24273 components: - type: Transform pos: -46.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24274 components: - type: Transform pos: -47.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24409 - uid: 24275 components: - type: Transform pos: 43.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24276 components: - type: Transform pos: 59.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24277 components: - type: Transform pos: 65.5,-54.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24278 components: - type: Transform rot: 1.5707963267948966 rad pos: 66.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24279 components: - type: Transform rot: 1.5707963267948966 rad pos: 66.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24280 components: - type: Transform rot: -1.5707963267948966 rad pos: 58.5,-51.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24281 components: - type: Transform rot: -1.5707963267948966 rad pos: 58.5,-52.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24282 components: - type: Transform pos: 61.5,-50.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24283 components: - type: Transform pos: 63.5,-50.5 parent: 2 - - type: DeviceLinkSink - links: - - 24434 - uid: 24284 components: - type: Transform @@ -158850,8 +158009,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24463 - uid: 24285 components: - type: Transform @@ -158863,640 +158020,412 @@ entities: rot: -1.5707963267948966 rad pos: -33.5,-15.5 parent: 2 - - type: DeviceLinkSink - links: - - 24390 - uid: 24287 components: - type: Transform rot: -1.5707963267948966 rad pos: -33.5,-17.5 parent: 2 - - type: DeviceLinkSink - links: - - 24390 - uid: 24288 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24289 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,8.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24290 components: - type: Transform rot: -1.5707963267948966 rad pos: 7.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24291 components: - type: Transform pos: 2.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24292 components: - type: Transform pos: 1.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24293 components: - type: Transform pos: 0.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24294 components: - type: Transform pos: 5.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24295 components: - type: Transform pos: 4.5,11.5 parent: 2 - - type: DeviceLinkSink - links: - - 24436 - uid: 24296 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-46.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24297 components: - type: Transform pos: 34.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24298 components: - type: Transform pos: 35.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24299 components: - type: Transform pos: 36.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24437 - uid: 24300 components: - type: Transform pos: -7.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24438 - uid: 24301 components: - type: Transform rot: 1.5707963267948966 rad pos: 48.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24302 components: - type: Transform pos: 46.5,9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24303 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24304 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-2.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24305 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-4.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24306 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,-5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24394 - uid: 24307 components: - type: Transform pos: 41.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24308 components: - type: Transform pos: 42.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24309 components: - type: Transform pos: 43.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24439 - uid: 24310 components: - type: Transform pos: 46.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24392 - uid: 24311 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-47.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24312 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-48.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24313 components: - type: Transform pos: 3.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24314 components: - type: Transform pos: 4.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24315 components: - type: Transform pos: 5.5,-44.5 parent: 2 - - type: DeviceLinkSink - links: - - 24391 - uid: 24316 components: - type: Transform pos: 23.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24317 components: - type: Transform pos: 22.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24318 components: - type: Transform pos: 21.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24319 components: - type: Transform pos: 25.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24320 components: - type: Transform pos: 26.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24321 components: - type: Transform pos: 27.5,5.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24322 components: - type: Transform pos: 27.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24323 components: - type: Transform pos: 26.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24324 components: - type: Transform pos: 25.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24325 components: - type: Transform pos: 23.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24326 components: - type: Transform pos: 22.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24327 components: - type: Transform pos: 21.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24328 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24329 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,2.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24330 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24331 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24332 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-0.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24333 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-1.5 parent: 2 - - type: DeviceLinkSink - links: - - 24440 - uid: 24334 components: - type: Transform pos: 22.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24335 components: - type: Transform pos: 23.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24336 components: - type: Transform pos: 24.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24337 components: - type: Transform pos: 25.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24338 components: - type: Transform pos: 26.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24339 components: - type: Transform pos: 27.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24340 components: - type: Transform pos: 28.5,-20.5 parent: 2 - - type: DeviceLinkSink - links: - - 24441 - uid: 24341 components: - type: Transform pos: 4.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24342 components: - type: Transform pos: 1.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24343 components: - type: Transform pos: 3.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24344 components: - type: Transform pos: 2.5,-3.5 parent: 2 - - type: DeviceLinkSink - links: - - 24458 - uid: 24345 components: - type: Transform pos: 23.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24346 components: - type: Transform pos: 24.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24347 components: - type: Transform pos: 26.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24348 components: - type: Transform pos: 27.5,-40.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24349 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-36.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24350 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24351 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-34.5 parent: 2 - - type: DeviceLinkSink - links: - - 24460 - uid: 24352 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-9.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24353 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-10.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24354 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-13.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24355 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,-14.5 parent: 2 - - type: DeviceLinkSink - links: - - 24459 - uid: 24356 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,24.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24357 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,23.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24358 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,19.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24359 components: - type: Transform rot: -1.5707963267948966 rad pos: -21.5,18.5 parent: 2 - - type: DeviceLinkSink - links: - - 24449 - uid: 24360 components: - type: Transform rot: -1.5707963267948966 rad pos: 37.5,-35.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - uid: 24361 components: - type: Transform rot: -1.5707963267948966 rad pos: 37.5,-36.5 parent: 2 - - type: DeviceLinkSink - links: - - 24461 - proto: ShuttleConsoleCircuitboard entities: - uid: 24362 @@ -199573,8 +198502,6 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 - links: - - 24462 - proto: WindoorSecureArmoryLocked entities: - uid: 31248 @@ -199784,18 +198711,12 @@ entities: rot: 3.141592653589793 rad pos: 29.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2261 - uid: 31280 components: - type: Transform rot: 1.5707963267948966 rad pos: 39.5,7.5 parent: 2 - - type: DeviceLinkSink - links: - - 2263 - uid: 31281 components: - type: Transform @@ -199814,18 +198735,12 @@ entities: rot: 3.141592653589793 rad pos: 32.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2262 - uid: 31284 components: - type: Transform rot: 1.5707963267948966 rad pos: 39.5,4.5 parent: 2 - - type: DeviceLinkSink - links: - - 2264 - uid: 31285 components: - type: Transform @@ -199838,9 +198753,6 @@ entities: rot: 3.141592653589793 rad pos: 35.5,13.5 parent: 2 - - type: DeviceLinkSink - links: - - 2260 - uid: 31287 components: - type: Transform diff --git a/Resources/Prototypes/Body/Parts/gingerbread.yml b/Resources/Prototypes/Body/Parts/gingerbread.yml index 661835ab84..f95e66145b 100644 --- a/Resources/Prototypes/Body/Parts/gingerbread.yml +++ b/Resources/Prototypes/Body/Parts/gingerbread.yml @@ -1,7 +1,7 @@ - type: entity id: PartGingerbread parent: [BaseItem, BasePart] - name: "gingerbead body part" + name: "gingerbread body part" abstract: true components: - type: Extractable diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml index 7ca6af8451..d4e2b4c60d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engineering.yml @@ -28,6 +28,16 @@ category: cargoproduct-category-name-engineering group: market +- type: cargoProduct + id: EngineeringFoamGrenade + icon: + sprite: Objects/Weapons/Grenades/metalfoam.rsi + state: icon + product: CrateEngineeringFoamGrenade + cost: 2500 + category: cargoproduct-category-name-engineering + group: market + - type: cargoProduct id: EngineeringCableBulk icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml index 26a8910c73..62d07b0bed 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml @@ -76,6 +76,17 @@ - id: CableHVStack amount: 3 +- type: entity + id: CrateEngineeringFoamGrenade + parent: CrateEngineeringSecure + name: sealant grenade crate + description: 5 metal foam sealant grenades. + components: + - type: StorageFill + contents: + - id: MetalFoamGrenade + amount: 5 + - type: entity id: CrateEngineeringCableBulk parent: CrateElectrical diff --git a/Resources/Prototypes/Chemistry/mixing_types.yml b/Resources/Prototypes/Chemistry/mixing_types.yml index 20d58e70ab..fd73256410 100644 --- a/Resources/Prototypes/Chemistry/mixing_types.yml +++ b/Resources/Prototypes/Chemistry/mixing_types.yml @@ -51,3 +51,17 @@ icon: sprite: Objects/Specific/Chapel/bible.rsi state: icon + +- type: mixingCategory + id: Shake + verbText: mixing-verb-shake + icon: + sprite: Objects/Consumable/Drinks/shaker.rsi + state: icon + +- type: mixingCategory + id: Stir + verbText: mixing-verb-stir + icon: + sprite: Objects/Misc/utensils.rsi + state: spoon diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 79c116b3ca..2053ced0f6 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -246,6 +246,7 @@ name: carp suit description: A special suit that makes you look just like a space carp, if your eyesight is bad. components: + - type: AllowSuitStorage - type: Sprite sprite: Clothing/OuterClothing/Suits/carpsuit.rsi - type: Item diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 096e88bcb6..ee300e9aea 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -101,6 +101,8 @@ state: m_foam-north - map: [ "enum.EdgeLayer.West" ] state: m_foam-west + - type: EdgeSpreader + id: MetalFoam - type: FoamVisuals animationTime: 0.6 animationState: m_foam-dissolve @@ -135,7 +137,7 @@ - type: RCDDeconstructable cost: 2 delay: 2 - fx: EffectRCDDeconstruct2 + fx: EffectRCDDeconstruct2 - type: Clickable - type: InteractionOutline - type: Sprite @@ -159,6 +161,13 @@ - type: Transform anchored: true - type: Airtight + - type: ReplaceFloorOnSpawn + replaceableTiles: + - Plating + - Lattice + - TrainLattice + replacementTiles: + - FloorMetalFoam - type: Damageable damageContainer: Inorganic damageModifierSet: Metallic diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 1686b723b5..172ed66cc3 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -338,6 +338,13 @@ sprite: Mobs/Silicon/Bots/supplybot.rsi layers: - state: supplybot + - type: SpriteMovement + movementLayers: + movement: + state: supplybot-moving + noMovementLayers: + movement: + state: supplybot - type: GhostRole makeSentient: true name: ghost-role-information-supplybot-name diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index d2c1249740..604ae28fb3 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -11,7 +11,7 @@ - type: MixableSolution solution: drink - type: Drink - - type: Shakeable # Doesn't do anything, but I mean... + - type: Shakeable - type: FitsInDispenser solution: drink - type: DrawableSolution @@ -34,6 +34,10 @@ - type: PhysicalComposition materialComposition: Steel: 50 + - type: ReactionMixer + mixOnInteract: false + reactionTypes: + - Shake - type: entity parent: DrinkGlassBase diff --git a/Resources/Prototypes/Entities/Objects/Devices/radio.yml b/Resources/Prototypes/Entities/Objects/Devices/radio.yml index 43f84fe404..77b6cac2d3 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/radio.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/radio.yml @@ -4,6 +4,7 @@ parent: BaseItem id: RadioHandheld components: + - type: TelecomExempt - type: RadioMicrophone broadcastChannel: Handheld - type: RadioSpeaker @@ -39,4 +40,4 @@ sprite: Objects/Devices/securityhandy.rsi - type: Item sprite: Objects/Devices/securityhandy.rsi - heldPrefix: walkietalkie \ No newline at end of file + heldPrefix: walkietalkie diff --git a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml index 86667f094f..e735b2dcdd 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/utensils.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/utensils.yml @@ -87,6 +87,11 @@ Blunt: 1 - type: Shovel speedModifier: 0.1 # you can try + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: entity parent: UtensilBasePlastic @@ -103,6 +108,11 @@ - Spoon - type: Shovel speedModifier: 0.1 # you can try + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: entity parent: UtensilBasePlastic @@ -137,6 +147,11 @@ - type: Utensil types: - Spoon + - type: ReactionMixer + mixMessage: "spoon-mixing-success" + timeToMix: 0.5 + reactionTypes: + - Stir - type: MeleeWeapon wideAnimationRotation: 180 attackRate: 2 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 7cc33b7155..d0d85beb6f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -1,15 +1,28 @@ - type: entity - name: captain's sabre parent: BaseItem + id: BaseSword + abstract: true + components: + - type: Sharp + - type: MeleeWeapon + wideAnimationRotation: -135 + - type: Sprite + state: icon + - type: Item + size: Normal + - type: Utensil + types: + - Knife + +- type: entity + name: captain's sabre + parent: BaseSword id: CaptainSabre description: A ceremonial weapon belonging to the captain of the station. components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/captain_sabre.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 1.5 damage: types: @@ -21,7 +34,6 @@ reflectProb: .1 spread: 90 - type: Item - size: Normal sprite: Objects/Weapons/Melee/captain_sabre.rsi - type: Tag tags: @@ -30,26 +42,22 @@ - type: entity name: katana - parent: BaseItem + parent: BaseSword id: Katana description: Ancient craftwork made with not so ancient plasteel. components: - - type: Sharp - type: Tag tags: - Katana - type: Sprite sprite: Objects/Weapons/Melee/katana.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 15 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/katana.rsi - type: DisarmMalus @@ -61,14 +69,12 @@ components: - type: Sprite sprite: Objects/Weapons/Melee/energykatana.rsi - state: icon - type: MeleeWeapon wideAnimationRotation: -60 damage: types: Slash: 30 - type: Item - size: Normal sprite: Objects/Weapons/Melee/energykatana.rsi - type: EnergyKatana - type: DashAbility @@ -86,41 +92,34 @@ - type: entity name: machete - parent: BaseItem + parent: BaseSword id: Machete description: A large, vicious looking blade. components: - - type: Sharp - type: Tag tags: - Machete - type: Sprite sprite: Objects/Weapons/Melee/machete.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 15 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/machete.rsi - type: DisarmMalus - type: entity name: claymore - parent: BaseItem + parent: BaseSword id: Claymore description: An ancient war blade. components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/claymore.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 0.75 damage: types: @@ -128,7 +127,6 @@ soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal - type: Clothing sprite: Objects/Weapons/Melee/claymore.rsi slots: @@ -137,41 +135,34 @@ - type: entity name: cutlass - parent: BaseItem + parent: BaseSword id: Cutlass description: A wickedly curved blade, often seen in the hands of space pirates. components: - - type: Sharp - type: Tag tags: - Machete - type: Sprite sprite: Objects/Weapons/Melee/cutlass.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 damage: types: Slash: 16 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal sprite: Objects/Weapons/Melee/cutlass.rsi - type: DisarmMalus - type: entity name: The Throngler - parent: BaseItem + parent: BaseSword id: Throngler description: Why would you make this? components: - - type: Sharp - type: Sprite sprite: Objects/Weapons/Melee/Throngler2.rsi - state: icon - type: MeleeWeapon - wideAnimationRotation: -135 attackRate: 10 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index b1d260c327..eb382c01e5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -422,6 +422,21 @@ - ReagentId: TearGas Quantity: 50 +- type: entity + parent: SmokeGrenade + id: MetalFoamGrenade + name: metal foam grenade + description: An emergency tool used for patching up holes. Almost as good as real walls. + components: + - type: Sprite + sprite: Objects/Weapons/Grenades/metalfoam.rsi + - type: SmokeOnTrigger + duration: 10 + spreadAmount: 13 + smokePrototype: AluminiumMetalFoam + - type: StaticPrice + price: 350 + # Non-explosive "dummy" grenades to use as a distraction. - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml index 2cf77d843c..ca1b1b6c40 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml @@ -1,5 +1,5 @@ - type: entity - id: Intercom + id: BaseIntercom name: intercom description: An intercom. For when the station just needs to know something. abstract: true @@ -9,6 +9,10 @@ - type: Electrified enabled: false usesApcPower: true + - type: TelecomExempt + - type: EncryptionKeyHolder + keySlots: 3 + keysExtractionMethod: Prying - type: RadioMicrophone powerRequired: true unobstructedRequired: true @@ -24,12 +28,14 @@ - type: InteractionOutline - type: Appearance - type: WiresVisuals + - type: WiresPanelSecurity - type: ContainerFill containers: board: [ IntercomElectronics ] - type: ContainerContainer containers: board: !type:Container + key_slots: !type:Container - type: Sprite noRot: false drawdepth: SmallObjects @@ -49,7 +55,6 @@ visible: false - state: panel map: ["enum.WiresVisualLayers.MaintenancePanel"] - shader: unshaded visible: false - type: Transform noRot: false @@ -61,6 +66,7 @@ - type: ActivatableUIRequiresPower - type: ActivatableUI key: enum.IntercomUiKey.Key + singleUser: true - type: UserInterface interfaces: enum.IntercomUiKey.Key: @@ -116,7 +122,7 @@ - Wallmount - type: entity - id: IntercomAssesmbly + id: IntercomAssembly name: intercom assembly description: An intercom. It doesn't seem very helpful right now. components: @@ -126,7 +132,18 @@ - type: Sprite drawdepth: SmallObjects sprite: Structures/Wallmounts/intercom.rsi - state: build + layers: + - state: build + - state: panel + visible: false + map: [ "wires" ] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ConstructionVisuals.Layer: + wires: + 0: { visible: false } + 1: { visible: true } - type: Construction graph: Intercom node: assembly @@ -137,97 +154,176 @@ snap: - Wallmount +# this weird inheritance BS exists for construction shitcode +- type: entity + id: IntercomConstructed + parent: BaseIntercom + suffix: Empty, Panel Open + components: + - type: Sprite + layers: + - state: base + - state: unshaded + map: ["enum.PowerDeviceVisualLayers.Powered"] + shader: unshaded + - state: broadcasting + map: ["enum.RadioDeviceVisualLayers.Broadcasting"] + shader: unshaded + visible: false + - state: speaker + map: ["enum.RadioDeviceVisualLayers.Speaker"] + shader: unshaded + visible: false + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + visible: true + - type: WiresPanel + open: true + +- type: entity + id: Intercom + parent: IntercomConstructed + suffix: "" + components: + - type: Sprite + layers: + - state: base + - state: unshaded + map: ["enum.PowerDeviceVisualLayers.Powered"] + shader: unshaded + - state: broadcasting + map: ["enum.RadioDeviceVisualLayers.Broadcasting"] + shader: unshaded + visible: false + - state: speaker + map: ["enum.RadioDeviceVisualLayers.Speaker"] + shader: unshaded + visible: false + - state: panel + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: WiresPanel + open: false + - type: entity id: IntercomCommon parent: Intercom suffix: Common components: - - type: Intercom - supportedChannels: - - Common + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon - type: entity id: IntercomCommand parent: Intercom suffix: Command components: - - type: Intercom - supportedChannels: - - Common - - Command + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyCommand - type: entity id: IntercomEngineering parent: Intercom suffix: Engineering components: - - type: Intercom - supportedChannels: - - Common - - Engineering + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyEngineering - type: entity id: IntercomMedical parent: Intercom suffix: Medical components: - - type: Intercom - supportedChannels: - - Common - - Medical + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyMedical - type: entity id: IntercomScience parent: Intercom suffix: Science components: - - type: Intercom - supportedChannels: - - Common - - Science + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyScience - type: entity id: IntercomSecurity parent: Intercom suffix: Security + description: An intercom. It's been reinforced with metal from security helmets, making it a bitch-and-a-half to open. components: - - type: Intercom - supportedChannels: - - Common - - Security + - type: WiresPanel + openDelay: 5 + - type: WiresPanelSecurity + examine: wires-panel-component-on-examine-security-level2 + wiresAccessible: false + - type: Construction + node: intercomReinforced + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeySecurity - type: entity id: IntercomService parent: Intercom suffix: Service components: - - type: Intercom - supportedChannels: - - Common - - Service + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyService - type: entity id: IntercomSupply parent: Intercom suffix: Supply components: - - type: Intercom - supportedChannels: - - Common - - Supply + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyCargo - type: entity id: IntercomAll parent: Intercom suffix: All components: - - type: Intercom - supportedChannels: - - Common - - Command - - Engineering - - Medical - - Science - - Security - - Service - - Supply + - type: ContainerFill + containers: + board: + - IntercomElectronics + key_slots: + - EncryptionKeyCommon + - EncryptionKeyStationMaster diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index bfd9dd6230..39e29ad115 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -230,7 +230,7 @@ earliestStart: 15 weight: 6 duration: 50 - minimumPlayers: 15 # Hopefully this is enough for the Rat King's potential Army + minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30) - type: VentCrittersRule entries: - id: MobMouse diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 21d7310483..bf311f23e7 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -151,8 +151,7 @@ - !type:HealthChange conditions: - !type:TotalDamage - min: 70 - max: 120 # you've got a chance to get out of crit + min: 70 # only heals when you're more dead than alive damage: # heals at the same rate as tricordrazine, doesn't heal poison because if you OD'd I'm not giving you a safety net groups: Burn: -1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml index 2247860f89..ba29d72539 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/intercom.yml @@ -11,13 +11,17 @@ doAfter: 2.0 - node: assembly - entity: IntercomAssesmbly + entity: IntercomAssembly edges: - to: wired steps: - material: Cable amount: 2 doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ConstructionVisuals.Layer" + data: 1 - to: start completed: - !type:GivePrototype @@ -29,7 +33,7 @@ doAfter: 2 - node: wired - entity: IntercomAssesmbly + entity: IntercomAssembly edges: - to: electronics steps: @@ -45,6 +49,9 @@ - !type:GivePrototype prototype: CableApcStack1 amount: 2 + - !type:VisualizerDataInt + key: "enum.ConstructionVisuals.Layer" + data: 0 steps: - tool: Cutting doAfter: 1 @@ -57,7 +64,11 @@ doAfter: 2 - node: intercom - entity: IntercomCommon #TODO: make this work with encryption keys + entity: IntercomConstructed + doNotReplaceInheritingEntities: true + actions: + - !type:SetWiresPanelSecurity + wiresAccessible: true edges: - to: wired conditions: @@ -72,3 +83,27 @@ steps: - tool: Prying doAfter: 1 + - to: intercomReinforced + conditions: + - !type:WirePanel + steps: + - material: Steel + amount: 1 + - tool: Welding + doAfter: 1 + + - node: intercomReinforced + actions: + - !type:SetWiresPanelSecurity + examine: wires-panel-component-on-examine-security-level2 + wiresAccessible: false + edges: + - to: intercom + conditions: + - !type:WirePanel + completed: + - !type:GivePrototype + prototype: SheetSteel1 + steps: + - tool: Welding + doAfter: 5 diff --git a/Resources/Prototypes/Recipes/Construction/utilities.yml b/Resources/Prototypes/Recipes/Construction/utilities.yml index 19f2fee183..82c16de7b6 100644 --- a/Resources/Prototypes/Recipes/Construction/utilities.yml +++ b/Resources/Prototypes/Recipes/Construction/utilities.yml @@ -790,7 +790,7 @@ # INTERCOM - type: construction name: intercom - id: IntercomAssesmbly + id: IntercomAssembly graph: Intercom startNode: start targetNode: intercom diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index 2a14c0ecd2..96cc5b6aaa 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -10,6 +10,8 @@ - type: reaction id: AlliesCocktail + requiredMixerCategories: + - Shake reactants: Martini: amount: 2 @@ -20,6 +22,8 @@ - type: reaction id: Amasec + requiredMixerCategories: + - Shake reactants: Wine: amount: 2 @@ -32,6 +36,8 @@ - type: reaction id: Andalusia + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -98,6 +104,8 @@ - type: reaction id: BlueHawaiian + requiredMixerCategories: + - Shake reactants: CoconutRum: amount: 2 @@ -126,6 +134,8 @@ - type: reaction id: BahamaMama + requiredMixerCategories: + - Shake reactants: Ice: amount: 1 @@ -168,6 +178,8 @@ - type: reaction id: BeepskySmash + requiredMixerCategories: + - Shake reactants: Iron: amount: 1 @@ -190,6 +202,8 @@ - type: reaction id: BloodyMary + requiredMixerCategories: + - Stir reactants: JuiceLime: amount: 1 @@ -280,6 +294,8 @@ - type: reaction id: DemonsBlood + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -294,6 +310,8 @@ - type: reaction id: DevilsKiss + requiredMixerCategories: + - Stir reactants: Rum: amount: 1 @@ -306,6 +324,8 @@ - type: reaction id: DoctorsDelight + requiredMixerCategories: + - Stir reactants: Cream: amount: 2 @@ -322,6 +342,8 @@ - type: reaction id: DriestMartini + requiredMixerCategories: + - Shake reactants: Gin: amount: 1 @@ -332,6 +354,8 @@ - type: reaction id: ErikaSurprise + requiredMixerCategories: + - Shake reactants: Ale: amount: 2 @@ -373,6 +397,8 @@ - type: reaction id: GargleBlaster + requiredMixerCategories: + - Shake reactants: Cognac: amount: 1 @@ -411,6 +437,8 @@ - type: reaction id: Gildlager + requiredMixerCategories: + - Shake reactants: Gold: amount: 1 @@ -548,6 +576,8 @@ - type: reaction id: IrishCoffee + requiredMixerCategories: + - Stir reactants: Coffee: amount: 1 @@ -568,6 +598,8 @@ - type: reaction id: KiraSpecial + requiredMixerCategories: + - Stir reactants: JuiceLime: amount: 1 @@ -580,6 +612,8 @@ - type: reaction id: Lemonade + requiredMixerCategories: + - Stir reactants: JuiceLemon: amount: 1 @@ -592,6 +626,8 @@ - type: reaction id: LemonLime + requiredMixerCategories: + - Stir reactants: JuiceLemon: amount: 1 @@ -604,6 +640,8 @@ - type: reaction id: LongIslandIcedTea + requiredMixerCategories: + - Stir reactants: CubaLibre: amount: 3 @@ -618,6 +656,8 @@ - type: reaction id: Manhattan + requiredMixerCategories: + - Shake reactants: Whiskey: amount: 2 @@ -658,6 +698,8 @@ - type: reaction id: Martini + requiredMixerCategories: + - Shake reactants: Gin: amount: 2 @@ -679,6 +721,8 @@ - type: reaction id: Mojito + requiredMixerCategories: + - Shake reactants: JuiceLime: amount: 1 @@ -726,6 +770,8 @@ - type: reaction id: Patron + requiredMixerCategories: + - Shake reactants: Tequila: amount: 10 @@ -736,6 +782,8 @@ - type: reaction id: Painkiller + requiredMixerCategories: + - Shake reactants: JuicePineapple: amount: 3 @@ -838,6 +886,8 @@ - type: reaction id: ScrewdriverCocktail + requiredMixerCategories: + - Shake reactants: JuiceOrange: amount: 2 @@ -955,6 +1005,8 @@ - type: reaction id: ToxinsSpecial + requiredMixerCategories: + - Shake reactants: Rum: amount: 2 @@ -967,6 +1019,8 @@ - type: reaction id: VodkaMartini + requiredMixerCategories: + - Shake reactants: Vermouth: amount: 1 diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 602e9bc441..91b61bec09 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -201,7 +201,7 @@ collection: FootstepHull itemDrop: FloorTileItemBrassFilled heatCapacity: 10000 - + - type: tile id: FloorBrassReebe name: tiles-brass-floor-reebe @@ -1391,6 +1391,21 @@ itemDrop: SheetRGlass1 heatCapacity: 10000 +- type: tile + id: FloorMetalFoam + name: tiles-metal-foam + sprite: /Textures/Tiles/foammetal.png + variants: 1 + placementVariants: + - 1.0 + baseTurf: Plating + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepHull + itemDrop: SheetSteel1 + heatCapacity: 10000 + # Circuits - type: tile id: FloorGreenCircuit diff --git a/Resources/Prototypes/edge_spreaders.yml b/Resources/Prototypes/edge_spreaders.yml index 061932c706..c93cc02ba9 100644 --- a/Resources/Prototypes/edge_spreaders.yml +++ b/Resources/Prototypes/edge_spreaders.yml @@ -9,3 +9,8 @@ - type: edgeSpreader id: Smoke updatesPerSecond: 8 + +- type: edgeSpreader + id: MetalFoam + updatesPerSecond: 16 + preventSpreadOnSpaced: false diff --git a/Resources/ServerInfo/Guidebook/Science/Science.xml b/Resources/ServerInfo/Guidebook/Science/Science.xml index 6e0183fc5f..e3de7738c7 100644 --- a/Resources/ServerInfo/Guidebook/Science/Science.xml +++ b/Resources/ServerInfo/Guidebook/Science/Science.xml @@ -22,7 +22,7 @@ Each technology costs [color=#a4885c]Research Points[/color] and unlocks recipes [textlink="Click here to see a list of technologies." link="Technologies"]. ## Disciplines -Technologies are spread over 5 different Disciplines: +Technologies are spread over 4 different Disciplines: diff --git a/Resources/ServerInfo/Guidebook/Science/Technologies.xml b/Resources/ServerInfo/Guidebook/Science/Technologies.xml index 7f0feaca42..ef89c80269 100644 --- a/Resources/ServerInfo/Guidebook/Science/Technologies.xml +++ b/Resources/ServerInfo/Guidebook/Science/Technologies.xml @@ -8,9 +8,6 @@ The different technologies and their respective discipline are listed below. ## Industrial -## Biochemical - - ## Arsenal diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json index 6bb3e77cfe..f459a7caa6 100644 --- a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json @@ -10,6 +10,28 @@ { "name": "supplybot", "directions": 4, + "delays": [ + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ], + [ + 0.3, + 0.1 + ] + ] + }, + { + "name": "supplybot-moving", + "directions": 4, "delays": [ [ 0.1, diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png new file mode 100644 index 0000000000..cac976240b Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot-moving.png differ diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png index cac976240b..9a4895603b 100644 Binary files a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png and b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png differ diff --git a/Resources/Textures/Mobs/Species/lungs_phoronman.png b/Resources/Textures/Mobs/Species/lungs_phoronman.png deleted file mode 100644 index 1c6d2dc11a..0000000000 Binary files a/Resources/Textures/Mobs/Species/lungs_phoronman.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png new file mode 100644 index 0000000000..d3cf1cf4c9 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png new file mode 100644 index 0000000000..a13dedfc20 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json new file mode 100644 index 0000000000..139eebb04d --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by EmoGarbage404", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "primed", + "delays": [ + [ + 0.2, + 0.1 + ] + ] + }, + { + "name": "equipped-BELT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png new file mode 100644 index 0000000000..dafc378c3b Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Grenades/metalfoam.rsi/primed.png differ diff --git a/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png b/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png index 58e2f14942..ef62ecf5f4 100644 Binary files a/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png and b/Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png index 787af3f538..a85cbfbecc 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/broadcasting.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/broadcasting.png index 0566c70e35..962417ccb4 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/broadcasting.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/broadcasting.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/build.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/build.png index cfd5d5fffa..e8edab0fa0 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/build.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/build.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/panel.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/panel.png index 3bfeb8df58..68f4cd1240 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/panel.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/panel.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/speaker.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/speaker.png index eb09c52fc3..4bcd29d7f4 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/speaker.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/speaker.png differ diff --git a/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png b/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png index 7b0bb63072..a8fda54fc9 100644 Binary files a/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png and b/Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png differ diff --git a/Resources/Textures/Tiles/attributions.yml b/Resources/Textures/Tiles/attributions.yml index 7cfe5535a0..6a6f545d1e 100644 --- a/Resources/Textures/Tiles/attributions.yml +++ b/Resources/Textures/Tiles/attributions.yml @@ -16,11 +16,11 @@ copyright: "Modified by github user @Flareguy from plating.png, using damaged plating sprites from /tg/station at commit https://github.com/tgstation/tgstation/blob/6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae/icons/turf/floors.dmi" source: "https://github.com/space-wizards/space-station-14/pull/21711" -- files: [ "asteroid_red.png", "asteroid_tile.png", "elevator_shaft.png", "freezer.png", "green_circuit.png", "lino.png", "mono.png", "rock_vault.png", "showroom.png"] +- files: [ "asteroid_red.png", "asteroid_tile.png", "elevator_shaft.png", "freezer.png", "foammetal.png", "green_circuit.png", "lino.png", "mono.png", "rock_vault.png", "showroom.png"] license: "CC-BY-SA-3.0" copyright: "vgstation13 at roughly commit e4d3ea7f69d21c3667be12b114fa935c4640cb05, asteroid_red and asteroid_tile taken from commit /vg/station at commit 02b9f6894af4419c9f7e699a22c402b086d8067e." source: "https://github.com/vgstation-coders/vgstation13" - + - files: [ "asteroid.png", "asteroid_dug.png", "asteroid0.png"] license: "CC-BY-SA-3.0" copyright: "Taken from /tg/station at commit 6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae." @@ -40,7 +40,7 @@ license: "CC-BY-SA-3.0" copyright: "Modified from plating.png by github user @Flareguy" source: "https://github.com/space-wizards/space-station-14/" - + - files: ["rglass.png"] license: "CC-BY-SA-3.0" copyright: "tgstation commit 8abb19545828230d92ba18827feeb42a67a55d49, rglass modified by github user @notquitehadouken." @@ -90,7 +90,7 @@ license: "CC-BY-SA-3.0" copyright: "Fortuna commit 2a9408a47e2f83d945335e4feeeeafb552173e6f, grasslight and dirt by Peptide based on grassdark.png and dirt." source: "https://github.com/FortunaSS13/Fortuna" - + - files: ["steel_maint.png", "grating_maint.png", "wood_tile.png"] license: "CC-BY-SA-3.0" copyright: "by brainfood for space-station-14, ." @@ -105,7 +105,7 @@ license: "CC-BY-SA-3.0" copyright: "taken at https://github.com/ParadiseSS13/Paradise/blob/8b7f4c8b69c74c6de5a755272eb8d3520f3d87c7/icons/turf/floors.dmi" source: "https://github.com/ParadiseSS13/Paradise" - + - files: ["chromite.png"] license: "CC-BY-NC-SA-3.0" copyright: "taken at commit 0587dd16e28108bdf0b0a28e2caae4319845e861, and recolored by TheShuEd" diff --git a/Resources/Textures/Tiles/foammetal.png b/Resources/Textures/Tiles/foammetal.png new file mode 100644 index 0000000000..a6afd53b25 Binary files /dev/null and b/Resources/Textures/Tiles/foammetal.png differ diff --git a/Resources/migration.yml b/Resources/migration.yml index ef0a5f46b7..bd42de8f2c 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -358,3 +358,6 @@ FloorTileItemReinforced: PartRodMetal1 #2024-06-25 BookChefGaming: BookHowToCookForFortySpaceman + +#2024-06-29 +IntercomAssesmbly: IntercomAssembly