diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleBui.cs b/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleBui.cs
index 5fe9bb87fdaf..360d3647faef 100644
--- a/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleBui.cs
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleBui.cs
@@ -1,27 +1,12 @@
-using Content.Client._Starlight;
-using Content.Client._Starlight;
-using Content.Client._Starlight.Medical.Surgery;
-using Content.Client.Administration.UI.CustomControls;
-using Content.Client.Hands.Systems;
-using Content.Shared.Starlight.Antags.Abductor;
-using Content.Shared.Starlight.Medical.Surgery;
-using Content.Shared.Body.Part;
+using Content.Shared.Starlight.Antags.Abductor;
using JetBrains.Annotations;
-using Robust.Client.GameObjects;
-using Robust.Client.Graphics;
-using Robust.Client.Player;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Utility;
using static Content.Shared.Pinpointer.SharedNavMapSystem;
-using static Robust.Client.UserInterface.Control;
namespace Content.Client._Starlight.Antags.Abductor;
[UsedImplicitly]
public sealed class AbductorCameraConsoleBui : BoundUserInterface
{
- [Dependency] private readonly IEntityManager _entities = default!;
-
[ViewVariables]
private AbductorCameraConsoleWindow? _window;
private int? _station;
diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleWindow.xaml b/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleWindow.xaml
index fb614686a0a8..4dbc793795a3 100644
--- a/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleWindow.xaml
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorCameraConsoleWindow.xaml
@@ -7,7 +7,7 @@
-
diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleBui.cs b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleBui.cs
new file mode 100644
index 000000000000..aaa46104675b
--- /dev/null
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleBui.cs
@@ -0,0 +1,118 @@
+using Content.Shared.Starlight.Antags.Abductor;
+using JetBrains.Annotations;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.RichText;
+using Robust.Shared.Utility;
+using static Content.Shared.Pinpointer.SharedNavMapSystem;
+
+namespace Content.Client._Starlight.Antags.Abductor;
+
+[UsedImplicitly]
+public sealed class AbductorConsoleBui : BoundUserInterface
+{
+ [Dependency] private readonly IEntityManager _entities = default!;
+
+ [ViewVariables]
+ private AbductorConsoleWindow? _window;
+ public AbductorConsoleBui(EntityUid owner, Enum uiKey) : base(owner, uiKey)
+ {
+
+ }
+ protected override void Open() => UpdateState(State);
+ protected override void UpdateState(BoundUserInterfaceState? state)
+ {
+ if (state is AbductorConsoleBuiState s)
+ Update(s);
+ }
+
+ private void Update(AbductorConsoleBuiState state)
+ {
+ TryInitWindow();
+
+ View(ViewType.Teleport);
+
+ RefreshUI();
+
+ if (!_window!.IsOpen)
+ _window.OpenCentered();
+ }
+
+ private void TryInitWindow()
+ {
+ if (_window != null) return;
+ _window = new AbductorConsoleWindow();
+ _window.OnClose += Close;
+ _window.Title = "console";
+
+ _window.TeleportTabButton.OnPressed += _ => View(ViewType.Teleport);
+
+ _window.ExperimentTabButton.OnPressed += _ => View(ViewType.Experiment);
+ }
+
+ private void RefreshUI()
+ {
+ if (_window == null || State is not AbductorConsoleBuiState state)
+ return;
+
+ // teleportTab
+ _window.TargetLabel.Children.Clear();
+
+ var padMsg = new FormattedMessage();
+ padMsg.AddMarkupOrThrow(state.AlienPadFound ? "pad: [color=green]connected[/color]" : "pad: [color=red]not found[/color]");
+ _window.PadLabel.SetMessage(padMsg);
+
+ var msg = new FormattedMessage();
+ msg.AddMarkupOrThrow(state.Target == null ? "target: [color=red]NONE[/color]" : $"target: [color=green]{state.TargetName}[/color]");
+ _window.TeleportButton.Disabled = state.Target == null || !state.AlienPadFound;
+ _window.TeleportButton.OnPressed += _ =>
+ {
+ SendMessage(new AbductorAttractBuiMsg());
+ Close();
+ };
+ _window.TargetLabel.SetMessage(msg, new Type[1] { typeof(ColorTag) });
+
+ // experiment tab
+
+ var experimentatorMsg = new FormattedMessage();
+ experimentatorMsg.AddMarkupOrThrow(state.AlienPadFound ? "experimentator: [color=green]connected[/color]" : "experimentator: [color=red]not found[/color]");
+ _window.ExperimentatorLabel.SetMessage(experimentatorMsg);
+
+ var victimMsg = new FormattedMessage();
+ victimMsg.AddMarkupOrThrow(state.VictimName == null ? "victim: [color=red]NONE[/color]" : $"victim: [color=green]{state.VictimName}[/color]");
+ _window.VictimLabel.SetMessage(victimMsg);
+
+ _window.CompleteExperimentButton.Disabled = state.VictimName == null;
+ _window.CompleteExperimentButton.OnPressed += _ =>
+ {
+ SendMessage(new AbductorCompleteExperimentBuiMsg());
+ Close();
+ };
+ }
+
+ private void View(ViewType type)
+ {
+ if (_window == null)
+ return;
+
+ _window.TeleportTabButton.Parent!.Margin = new Thickness(0, 0, 0, 10);
+
+ _window.TeleportTabButton.Disabled = type == ViewType.Teleport;
+ _window.ExperimentTabButton.Disabled = type == ViewType.Experiment;
+ _window.TeleportTab.Visible = type == ViewType.Teleport;
+ _window.ExperimentTab.Visible = type == ViewType.Experiment;
+ }
+
+ private enum ViewType
+ {
+ Teleport,
+ Experiment
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ base.Dispose(disposing);
+
+ if (disposing)
+ _window?.Dispose();
+ }
+}
diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml
new file mode 100644
index 000000000000..c4acaf95a4ad
--- /dev/null
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml.cs b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml.cs
new file mode 100644
index 000000000000..6ea5fe185c8b
--- /dev/null
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorConsoleWindow.xaml.cs
@@ -0,0 +1,10 @@
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.CustomControls;
+using Robust.Client.UserInterface.XAML;
+
+namespace Content.Client._Starlight.Antags.Abductor;
+[GenerateTypedNameReferences]
+public sealed partial class AbductorConsoleWindow : DefaultWindow
+{
+ public AbductorConsoleWindow() => RobustXamlLoader.Load(this);
+}
diff --git a/Content.Client/_Starlight/Antags/Abductor/AbductorSystem.cs b/Content.Client/_Starlight/Antags/Abductor/AbductorSystem.cs
new file mode 100644
index 000000000000..fbead9d38266
--- /dev/null
+++ b/Content.Client/_Starlight/Antags/Abductor/AbductorSystem.cs
@@ -0,0 +1,11 @@
+using Content.Shared.Starlight.Antags.Abductor;
+
+namespace Content.Client._Starlight.Antags.Abductor;
+
+public sealed class AbductorSystem : SharedAbductorSystem
+{
+ public override void Initialize()
+ {
+ base.Initialize();
+ }
+}
diff --git a/Content.Client/_Starlight/TextToSpeech/TTSSystem.cs b/Content.Client/_Starlight/TextToSpeech/TTSSystem.cs
index 81bf3c7f29aa..02397211422c 100644
--- a/Content.Client/_Starlight/TextToSpeech/TTSSystem.cs
+++ b/Content.Client/_Starlight/TextToSpeech/TTSSystem.cs
@@ -1,17 +1,13 @@
using System.Collections.Concurrent;
using System.IO;
-using System.Linq;
-using Content.Shared.Starlight;
using Content.Shared.Starlight.CCVar;
using Content.Shared.Starlight.TextToSpeech;
using Robust.Client.Audio;
-using Robust.Client.ResourceManagement;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Components;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Configuration;
using Robust.Shared.ContentPack;
-using Robust.Shared.Utility;
namespace Content.Client._Starlight.TTS;
@@ -21,11 +17,8 @@ namespace Content.Client._Starlight.TTS;
public sealed class TextToSpeechSystem : EntitySystem
{
[Dependency] private readonly IConfigurationManager _cfg = default!;
- [Dependency] private readonly IResourceManager _res = default!;
[Dependency] private readonly AudioSystem _audio = default!;
[Dependency] private readonly SharedAudioSystem _sharedAudio = default!;
- [Dependency] private readonly IResourceCache _resourceCache = default!;
- [Dependency] private readonly IDependencyCollection _dependencyCollection = default!;
[Dependency] private readonly IAudioManager _audioManager = default!;
private readonly ConcurrentQueue<(byte[] file, SoundSpecifier? specifier)> _ttsQueue = [];
diff --git a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs
index 3527e2a11c2b..8adfa356d1e8 100644
--- a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs
+++ b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs
@@ -31,7 +31,6 @@ private void OnSelectEntity(Entity ent, ref Antag
? _prefs.GetPreferences(args.Session.UserId).SelectedCharacter as HumanoidCharacterProfile
: HumanoidCharacterProfile.RandomWithSpecies();
-
if (profile?.Species is not { } speciesId || !_proto.TryIndex(speciesId, out var species))
{
species = _proto.Index(SharedHumanoidAppearanceSystem.DefaultSpecies);
@@ -43,6 +42,9 @@ private void OnSelectEntity(Entity ent, ref Antag
species = _proto.Index(ent.Comp.SpeciesOverride.Value);
}
+ if(ent.Comp.SpeciesHardOverride is not null)
+ species = _proto.Index(ent.Comp.SpeciesHardOverride.Value);
+
args.Entity = Spawn(species.Prototype);
_humanoid.LoadProfile(args.Entity.Value, profile?.WithSpecies(species.ID));
}
diff --git a/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs b/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs
index 3a4cb5fc75ea..9426bc4ce7c1 100644
--- a/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs
+++ b/Content.Server/GameTicking/Rules/Components/AntagLoadProfileRuleCOmponent.cs
@@ -15,6 +15,9 @@ public sealed partial class AntagLoadProfileRuleComponent : Component
[DataField]
public ProtoId? SpeciesOverride;
+ [DataField]
+ public ProtoId? SpeciesHardOverride;
+
///
/// List of species that trigger the override
///
diff --git a/Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.Actions.cs b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Actions.cs
similarity index 55%
rename from Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.Actions.cs
rename to Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Actions.cs
index 612db3041438..211185eefb72 100644
--- a/Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.Actions.cs
+++ b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Actions.cs
@@ -6,19 +6,23 @@
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Spawners;
-using Robust.Server.GameObjects;
+using Robust.Shared.Audio.Systems;
+using Content.Shared.Movement.Pulling.Systems;
+using Content.Shared.Movement.Pulling.Components;
namespace Content.Server.Starlight.Antags.Abductor;
-public sealed partial class ConsoleSystem : SharedAbductorSystem
+public sealed partial class AbductorSystem : SharedAbductorSystem
{
+ [Dependency] private readonly SharedAudioSystem _audioSystem = default!;
[Dependency] private readonly SharedColorFlashEffectSystem _color = default!;
- [Dependency] private readonly TransformSystem _transform = default!;
+ [Dependency] private readonly PullingSystem _pullingSystem = default!;
- private readonly EntProtoId SendYourself = "ActionSendYourself";
- private readonly EntProtoId ExitAction = "ActionExitConsole";
- private readonly EntProtoId TeleportationEffect = "EffectTeleportation";
- private readonly EntProtoId TeleportationEffectEntity = "EffectTeleportationEntity";
+ private static readonly EntProtoId _sendYourself = "ActionSendYourself";
+ private static readonly EntProtoId _exitAction = "ActionExitConsole";
+
+ private static readonly EntProtoId _teleportationEffect = "EffectTeleportation";
+ private static readonly EntProtoId _teleportationEffectEntity = "EffectTeleportationEntity";
public void InitializeActions()
{
SubscribeLocalEvent(AbductorScientistComponentStartup);
@@ -33,7 +37,7 @@ public void InitializeActions()
}
private void AbductorScientistComponentStartup(Entity ent, ref ComponentStartup args)
- => ent.Comp.Position = _xformSys.GetMapCoordinates(ent);
+ => ent.Comp.SpawnPosition = EnsureComp(ent).Coordinates;
private void OnReturn(AbductorReturnToShipEvent ev)
{
@@ -41,16 +45,18 @@ private void OnReturn(AbductorReturnToShipEvent ev)
_color.RaiseEffect(Color.FromHex("#BA0099"), new List(1) { ev.Performer }, Filter.Pvs(ev.Performer, entityManager: EntityManager));
EnsureComp(ev.Performer, out var xform);
- var effectEnt = SpawnAttachedTo(TeleportationEffectEntity, xform.Coordinates);
- _transform.SetParent(effectEnt, ev.Performer);
+ var effectEnt = SpawnAttachedTo(_teleportationEffectEntity, xform.Coordinates);
+ _xformSys.SetParent(effectEnt, ev.Performer);
EnsureComp(effectEnt, out var despawnEffectEntComp);
despawnEffectEntComp.Lifetime = 3.0f;
+ _audioSystem.PlayPvs("/Audio/_Starlight/Misc/alien_teleport.ogg", effectEnt);
- if(TryComp(ev.Performer, out var abductorScientistComponent) && abductorScientistComponent.Position.HasValue)
+ if (TryComp(ev.Performer, out var abductorScientistComponent) && abductorScientistComponent.SpawnPosition.HasValue)
{
- var effect = _entityManager.SpawnEntity(TeleportationEffect, abductorScientistComponent.Position.Value);
+ var effect = _entityManager.SpawnEntity(_teleportationEffect, abductorScientistComponent.SpawnPosition.Value);
EnsureComp(effect, out var despawnComp);
despawnComp.Lifetime = 3.0f;
+ _audioSystem.PlayPvs("/Audio/_Starlight/Misc/alien_teleport.ogg", effect);
}
var doAfter = new DoAfterArgs(EntityManager, ev.Performer, TimeSpan.FromSeconds(3), new AbductorReturnDoAfterEvent(), ev.Performer);
@@ -60,8 +66,22 @@ private void OnReturn(AbductorReturnToShipEvent ev)
private void OnDoAfterAbductorReturn(Entity ent, ref AbductorReturnDoAfterEvent args)
{
_color.RaiseEffect(Color.FromHex("#BA0099"), new List(1) { ent }, Filter.Pvs(ent, entityManager: EntityManager));
- if (ent.Comp.Position is not null)
- _xformSys.SetMapCoordinates(ent, ent.Comp.Position.Value);
+ if (_pullingSystem.IsPulling(ent))
+ {
+ if (!TryComp(ent, out var pullerComp)
+ || pullerComp.Pulling == null
+ || !TryComp(pullerComp.Pulling.Value, out var pullableComp)
+ || !_pullingSystem.TryStopPull(pullerComp.Pulling.Value, pullableComp)) return;
+ }
+
+ if (_pullingSystem.IsPulled(ent))
+ {
+ if (!TryComp(ent, out var pullableComp)
+ || !_pullingSystem.TryStopPull(ent, pullableComp)) return;
+ }
+
+ if (ent.Comp.SpawnPosition is not null)
+ _xformSys.SetCoordinates(ent, ent.Comp.SpawnPosition.Value);
OnCameraExit(ent);
}
@@ -69,11 +89,11 @@ private void OnSendYourself(SendYourselfEvent ev)
{
_color.RaiseEffect(Color.FromHex("#BA0099"), new List(1) { ev.Performer }, Filter.Pvs(ev.Performer, entityManager: EntityManager));
EnsureComp(ev.Performer, out var xform);
- var effectEnt = SpawnAttachedTo(TeleportationEffectEntity, xform.Coordinates);
- _transform.SetParent(effectEnt, ev.Performer);
+ var effectEnt = SpawnAttachedTo(_teleportationEffectEntity, xform.Coordinates);
+ _xformSys.SetParent(effectEnt, ev.Performer);
EnsureComp(effectEnt, out var despawnEffectEntComp);
- var effect = _entityManager.SpawnEntity(TeleportationEffect, ev.Target);
+ var effect = _entityManager.SpawnEntity(_teleportationEffect, ev.Target);
EnsureComp(effect, out var despawnComp);
var @event = new AbductorSendYourselfDoAfterEvent(GetNetCoordinates(ev.Target));
@@ -84,8 +104,20 @@ private void OnSendYourself(SendYourselfEvent ev)
private void OnDoAfterSendYourself(Entity ent, ref AbductorSendYourselfDoAfterEvent args)
{
_color.RaiseEffect(Color.FromHex("#BA0099"), new List(1) { ent }, Filter.Pvs(ent, entityManager: EntityManager));
- if (ent.Comp.Position is not null)
- _xformSys.SetMapCoordinates(ent, _xformSys.ToMapCoordinates(args.TargetCoordinates));
+ if (_pullingSystem.IsPulling(ent))
+ {
+ if (!TryComp(ent, out var pullerComp)
+ || pullerComp.Pulling == null
+ || !TryComp(pullerComp.Pulling.Value, out var pullableComp)
+ || !_pullingSystem.TryStopPull(pullerComp.Pulling.Value, pullableComp)) return;
+ }
+
+ if (_pullingSystem.IsPulled(ent))
+ {
+ if (!TryComp(ent, out var pullableComp)
+ || !_pullingSystem.TryStopPull(ent, pullableComp)) return;
+ }
+ _xformSys.SetCoordinates(ent, GetCoordinates(args.TargetCoordinates));
OnCameraExit(ent);
}
@@ -95,8 +127,8 @@ private void AddActions(AbductorBeaconChosenBuiMsg args)
{
EnsureComp(args.Actor, out var comp);
comp.HiddenActions = _actions.HideActions(args.Actor);
- _actions.AddAction(args.Actor, ref comp.ExitConsole, ExitAction);
- _actions.AddAction(args.Actor, ref comp.SendYourself, SendYourself);
+ _actions.AddAction(args.Actor, ref comp.ExitConsole, _exitAction);
+ _actions.AddAction(args.Actor, ref comp.SendYourself, _sendYourself);
}
private void RemoveActions(EntityUid actor)
{
diff --git a/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Console.cs b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Console.cs
new file mode 100644
index 000000000000..a9b11776b625
--- /dev/null
+++ b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Console.cs
@@ -0,0 +1,156 @@
+using Content.Shared.Starlight.Antags.Abductor;
+using Content.Shared.UserInterface;
+using System.Linq;
+using Content.Shared.DoAfter;
+using Content.Shared.Starlight.Medical.Surgery;
+using Robust.Shared.Spawners;
+using Content.Shared.Objectives.Components;
+using Content.Server.Objectives.Systems;
+using Content.Shared.Mind.Components;
+using Content.Shared.Mind;
+using Content.Shared.Movement.Pulling.Components;
+
+namespace Content.Server.Starlight.Antags.Abductor;
+
+public sealed partial class AbductorSystem : SharedAbductorSystem
+{
+ [Dependency] private readonly NumberObjectiveSystem _number = default!;
+
+ public void InitializeConsole()
+ {
+ SubscribeLocalEvent(OnBeforeActivatableUIOpen);
+ SubscribeLocalEvent(OnAbductGetProgress);
+
+ Subs.BuiEvents(AbductorConsoleUIKey.Key, subs => subs.Event(OnAttractBuiMsg));
+ Subs.BuiEvents(AbductorConsoleUIKey.Key, subs => subs.Event(OnCompleteExperimentBuiMsg));
+ SubscribeLocalEvent(OnDoAfterAttract);
+ }
+ private void OnAbductGetProgress(Entity ent, ref ObjectiveGetProgressEvent args)
+ => args.Progress = DoorjackProgress(ent.Comp, _number.GetTarget(ent.Owner));
+
+ private float DoorjackProgress(AbductConditionComponent comp, int target)
+ => target == 0 ? 1f : MathF.Min(comp.Abducted / (float)target, 1f);
+
+ private void OnCompleteExperimentBuiMsg(EntityUid uid, AbductorConsoleComponent component, AbductorCompleteExperimentBuiMsg args)
+ {
+ if (component.Experimentator != null
+ && GetEntity(component.Experimentator) is EntityUid experimentatorId
+ && TryComp(experimentatorId, out var experimentatorComp))
+ {
+ var container = _container.GetContainer(experimentatorId, experimentatorComp.ContainerId);
+ var victim = container.ContainedEntities.FirstOrDefault(HasComp);
+ if (victim != default && TryComp(victim, out AbductorVictimComponent? victimComp))
+ {
+ if (victimComp.Organ != AbductorOrganType.None
+ && TryComp(args.Actor, out var mindContainer)
+ && mindContainer.Mind.HasValue
+ && TryComp(mindContainer.Mind.Value, out var mind)
+ && mind.Objectives.FirstOrDefault(HasComp) is EntityUid objId
+ && TryComp(objId, out var condition)
+ && !condition.AbductedHashs.Contains(GetNetEntity(victim)))
+ {
+ condition.AbductedHashs.Add(GetNetEntity(victim));
+ condition.Abducted++;
+ }
+ _audioSystem.PlayPvs("/Audio/Voice/Human/wilhelm_scream.ogg", experimentatorId);
+
+ if (victimComp.Position is not null)
+ _xformSys.SetCoordinates(victim, victimComp.Position.Value);
+ }
+ }
+ }
+
+ private void OnAttractBuiMsg(Entity ent, ref AbductorAttractBuiMsg args)
+ {
+ if (ent.Comp.Target == null || ent.Comp.AlienPod == null) return;
+ var target = GetEntity(ent.Comp.Target.Value);
+ EnsureComp(target, out var xform);
+ var effectEnt = SpawnAttachedTo(_teleportationEffectEntity, xform.Coordinates);
+ _xformSys.SetParent(effectEnt, target);
+ EnsureComp(effectEnt, out var despawnEffectEntComp);
+ despawnEffectEntComp.Lifetime = 3.0f;
+ _audioSystem.PlayPvs("/Audio/_Starlight/Misc/alien_teleport.ogg", effectEnt);
+
+ var telepad = GetEntity(ent.Comp.AlienPod.Value);
+ var telepadXform = EnsureComp(telepad);
+ var effect = _entityManager.SpawnEntity(_teleportationEffect, telepadXform.Coordinates);
+ EnsureComp(effect, out var despawnComp);
+ despawnComp.Lifetime = 3.0f;
+ _audioSystem.PlayPvs("/Audio/_Starlight/Misc/alien_teleport.ogg", effect);
+
+ var @event = new AbductorAttractDoAfterEvent(GetNetCoordinates(telepadXform.Coordinates), GetNetEntity(target));
+ ent.Comp.Target = null;
+ var doAfter = new DoAfterArgs(EntityManager, args.Actor, TimeSpan.FromSeconds(3), @event, args.Actor)
+ {
+ BreakOnDamage = false,
+ BreakOnDropItem = false,
+ BreakOnHandChange = false,
+ BreakOnMove = false,
+ BreakOnWeightlessMove = false,
+ };
+ _doAfter.TryStartDoAfter(doAfter);
+ }
+ private void OnDoAfterAttract(Entity ent, ref AbductorAttractDoAfterEvent args)
+ {
+ var victim = GetEntity(args.Victim);
+ if (_pullingSystem.IsPulling(victim))
+ {
+ if (!TryComp(victim, out var pullerComp)
+ || pullerComp.Pulling == null
+ || !TryComp(pullerComp.Pulling.Value, out var pullableComp)
+ || !_pullingSystem.TryStopPull(pullerComp.Pulling.Value, pullableComp)) return;
+ }
+ if (_pullingSystem.IsPulled(victim))
+ {
+ if (!TryComp(victim, out var pullableComp)
+ || !_pullingSystem.TryStopPull(victim, pullableComp)) return;
+ }
+ _xformSys.SetCoordinates(victim, GetCoordinates(args.TargetCoordinates));
+ }
+ private void OnBeforeActivatableUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) => UpdateGui(ent.Comp.Target, ent);
+
+ protected override void UpdateGui(NetEntity? target, Entity computer)
+ {
+ string? targetName = null;
+ string? victimName = null;
+ if (target.HasValue && TryComp(GetEntity(target.Value), out MetaDataComponent? metadata))
+ targetName = metadata?.EntityName;
+
+ if (computer.Comp.AlienPod == null)
+ {
+ var xform = EnsureComp(computer.Owner);
+ var alienpad = _entityLookup.GetEntitiesInRange(xform.Coordinates, 4, LookupFlags.Approximate | LookupFlags.Dynamic)
+ .FirstOrDefault().Owner;
+ if (alienpad != default)
+ computer.Comp.AlienPod = GetNetEntity(alienpad);
+ }
+
+ if (computer.Comp.Experimentator == null)
+ {
+ var xform = EnsureComp(computer.Owner);
+ var experimentator = _entityLookup.GetEntitiesInRange(xform.Coordinates, 4, LookupFlags.Approximate | LookupFlags.Dynamic)
+ .FirstOrDefault().Owner;
+ if (experimentator != default)
+ computer.Comp.Experimentator = GetNetEntity(experimentator);
+ }
+
+ if (computer.Comp.Experimentator != null
+ && GetEntity(computer.Comp.Experimentator) is EntityUid experimentatorId
+ && TryComp(experimentatorId, out var experimentatorComp))
+ {
+ var container = _container.GetContainer(experimentatorId, experimentatorComp.ContainerId);
+ var victim = container.ContainedEntities.FirstOrDefault(e => HasComp(e));
+ if (victim != default && TryComp(victim, out MetaDataComponent? victimMetadata))
+ victimName = victimMetadata?.EntityName;
+ }
+
+ _uiSystem.SetUiState(computer.Owner, AbductorConsoleUIKey.Key, new AbductorConsoleBuiState()
+ {
+ Target = target,
+ TargetName = targetName,
+ VictimName = victimName,
+ AlienPadFound = computer.Comp.AlienPod != default,
+ ExperimentatorFound = computer.Comp.Experimentator != default
+ });
+ }
+}
diff --git a/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Gizmo.cs b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Gizmo.cs
new file mode 100644
index 000000000000..ccbdc66733ac
--- /dev/null
+++ b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Gizmo.cs
@@ -0,0 +1,79 @@
+using Content.Shared.Starlight.Antags.Abductor;
+using Content.Shared.Starlight.Medical.Surgery;
+using Content.Shared.Actions;
+using Content.Shared.DoAfter;
+using Content.Shared.Effects;
+using Robust.Shared.Player;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Spawners;
+using Robust.Server.GameObjects;
+using Content.Shared.Interaction;
+using Content.Shared.Weapons.Melee.Events;
+using System.Linq;
+using Content.Shared.Tag;
+using Content.Shared.Popups;
+using System;
+
+namespace Content.Server.Starlight.Antags.Abductor;
+
+public sealed partial class AbductorSystem : SharedAbductorSystem
+{
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
+
+ private static readonly ProtoId _abductor = "Abductor";
+ public void InitializeGizmo()
+ {
+ SubscribeLocalEvent(OnGizmoInteract);
+ SubscribeLocalEvent(OnGizmoHitInteract);
+
+ SubscribeLocalEvent(OnGizmoDoAfter);
+ }
+
+ private void OnGizmoHitInteract(Entity ent, ref MeleeHitEvent args)
+ {
+ if (args.HitEntities.Count != 1) return;
+ var target = args.HitEntities[0];
+ if (!HasComp(target)) return;
+ GizmoUse(ent, target, args.User);
+ }
+
+ private void OnGizmoInteract(Entity ent, ref AfterInteractEvent args)
+ {
+ if (!args.Target.HasValue) return;
+ if (TryComp(args.Target, out var console))
+ {
+ console.Target = ent.Comp.Target;
+ _popup.PopupClient(Loc.GetString("abductors-ui-gizmo-transferred"), args.User);
+ _color.RaiseEffect(Color.FromHex("#00BA00"), new List(2) { ent.Owner, args.Target.Value }, Filter.Pvs(args.User, entityManager: EntityManager));
+ UpdateGui(console.Target, (args.Target.Value, console));
+ return;
+ }
+
+ if (HasComp(args.Target))
+ GizmoUse(ent, args.Target.Value, args.User);
+ }
+
+ private void GizmoUse(Entity ent, EntityUid target, EntityUid user)
+ {
+ var time = TimeSpan.FromSeconds(6);
+ if (_tags.HasTag(target, _abductor))
+ time = TimeSpan.FromSeconds(0.5);
+
+ var doAfter = new DoAfterArgs(EntityManager, user, time, new AbductorGizmoMarkDoAfterEvent(), ent, target, ent.Owner)
+ {
+ BreakOnMove = true,
+ BreakOnDamage = true,
+ DistanceThreshold = 1f
+ };
+ _doAfter.TryStartDoAfter(doAfter);
+ }
+
+ private void OnGizmoDoAfter(Entity ent, ref AbductorGizmoMarkDoAfterEvent args)
+ {
+ if (args.Target is null) return;
+ ent.Comp.Target = GetNetEntity(args.Target);
+ EnsureComp(args.Target.Value, out var victimComponent);
+ victimComponent.LastActivation = _time.CurTime + TimeSpan.FromMinutes(5);
+ victimComponent.Position = EnsureComp(args.Target.Value).Coordinates;
+ }
+}
diff --git a/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Organs.cs b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Organs.cs
new file mode 100644
index 000000000000..7c3355510b7f
--- /dev/null
+++ b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.Organs.cs
@@ -0,0 +1,103 @@
+using Content.Shared.Starlight.Antags.Abductor;
+using Content.Shared.Starlight.Medical.Surgery;
+using Content.Shared.Actions;
+using Content.Shared.DoAfter;
+using Content.Shared.Effects;
+using Robust.Shared.Player;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Spawners;
+using Robust.Server.GameObjects;
+using Content.Shared.Interaction;
+using Content.Shared.Weapons.Melee.Events;
+using System.Linq;
+using Content.Shared.Tag;
+using Content.Shared.Popups;
+using System;
+using Robust.Shared.Timing;
+using Content.Shared.Damage;
+using Robust.Shared.Toolshed.TypeParsers;
+using Content.Shared.Damage.Prototypes;
+using Content.Server.Atmos.EntitySystems;
+using Content.Server.Supermatter.Components;
+using Content.Shared.Atmos;
+using Content.Server.Chat.Systems;
+
+namespace Content.Server.Starlight.Antags.Abductor;
+
+public sealed partial class AbductorSystem : SharedAbductorSystem
+{
+ [Dependency] private readonly IGameTiming _time = default!;
+ [Dependency] private readonly DamageableSystem _damageable = default!;
+ [Dependency] private readonly IPrototypeManager _prototypes = default!;
+ [Dependency] private readonly AtmosphereSystem _atmos = default!;
+ [Dependency] private readonly ChatSystem _chat = default!;
+
+ private float _delayAccumulator = 0f;
+ private readonly Stopwatch _stopwatch = new();
+ private readonly DamageSpecifier _passiveHealing = new();
+
+ public void InitializeOrgans()
+ {
+ foreach (var specif in _prototypes.EnumeratePrototypes())
+ _passiveHealing.DamageDict.Add(specif.ID, -3);
+ _stopwatch.Start();
+ }
+
+ public override void Update(float frameTime)
+ {
+ _delayAccumulator += frameTime;
+ if (_delayAccumulator > 3)
+ {
+ _delayAccumulator = 0;
+ _stopwatch.Restart();
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var victim) && _stopwatch.Elapsed < TimeSpan.FromMilliseconds(1))
+ {
+ if(victim.Organ != AbductorOrganType.None)
+ Do(uid, victim);
+ }
+ }
+ }
+
+ private void Do(EntityUid uid, AbductorVictimComponent victim)
+ {
+ switch (victim.Organ)
+ {
+ case AbductorOrganType.Health:
+ if(_time.CurTime - victim.LastActivation < TimeSpan.FromSeconds(3))
+ return;
+ victim.LastActivation = _time.CurTime;
+ _damageable.TryChangeDamage(uid, _passiveHealing);
+ break;
+ case AbductorOrganType.Plasma:
+ if (_time.CurTime - victim.LastActivation < TimeSpan.FromSeconds(60))
+ return;
+ victim.LastActivation = _time.CurTime;
+ var mix = _atmos.GetContainingMixture((uid, Transform(uid)), true, true) ?? new();
+ mix.AdjustMoles(Gas.Plasma, 60);
+ _chat.TryEmoteWithChat(uid, "Cough");
+ break;
+ case AbductorOrganType.Gravity:
+ if (_time.CurTime - victim.LastActivation < TimeSpan.FromSeconds(60))
+ return;
+ victim.LastActivation = _time.CurTime;
+ var gravity = SpawnAttachedTo("AdminInstantEffectGravityWell", Transform(uid).Coordinates);
+ _xformSys.SetParent(gravity, uid);
+ break;
+ case AbductorOrganType.Egg:
+ if (_time.CurTime - victim.LastActivation < TimeSpan.FromSeconds(30))
+ return;
+ victim.LastActivation = _time.CurTime;
+ SpawnAttachedTo("FoodEggChickenFertilized", Transform(uid).Coordinates);
+ break;
+ case AbductorOrganType.Spider:
+ if (_time.CurTime - victim.LastActivation < TimeSpan.FromSeconds(120))
+ return;
+ victim.LastActivation = _time.CurTime;
+ SpawnAttachedTo("EggSpiderFertilized", Transform(uid).Coordinates);
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.cs b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.cs
similarity index 91%
rename from Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.cs
rename to Content.Server/_Starlight/Antags/Abductor/AbductorSystem.cs
index 1440db212a14..c5245d5d697d 100644
--- a/Content.Server/_Starlight/Antags/Abductor/ConsoleSystem.cs
+++ b/Content.Server/_Starlight/Antags/Abductor/AbductorSystem.cs
@@ -11,10 +11,13 @@
using Content.Shared.Silicons.StationAi;
using Content.Shared.UserInterface;
using Robust.Server.GameObjects;
+using Content.Shared.Tag;
+using Content.Server.DeviceLinking.Systems;
+using Robust.Server.Containers;
namespace Content.Server.Starlight.Antags.Abductor;
-public sealed partial class ConsoleSystem : SharedAbductorSystem
+public sealed partial class AbductorSystem : SharedAbductorSystem
{
[Dependency] private readonly StationSystem _stationSystem = default!;
[Dependency] private readonly EntityManager _entityManager = default!;
@@ -25,6 +28,9 @@ public sealed partial class ConsoleSystem : SharedAbductorSystem
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly DoAfterSystem _doAfter = default!;
[Dependency] private readonly TransformSystem _xformSys = default!;
+ [Dependency] private readonly TagSystem _tags = default!;
+ [Dependency] private readonly EntityLookupSystem _entityLookup = default!;
+ [Dependency] private readonly ContainerSystem _container = default!;
public override void Initialize()
{
@@ -32,6 +38,10 @@ public override void Initialize()
Subs.BuiEvents(AbductorCameraConsoleUIKey.Key, subs => subs.Event(OnAbductorBeaconChosenBuiMsg));
InitializeActions();
+ InitializeGizmo();
+ InitializeConsole();
+ InitializeOrgans();
+ base.Initialize();
}
private void OnAbductorBeaconChosenBuiMsg(Entity ent, ref AbductorBeaconChosenBuiMsg args)
diff --git a/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.Steps.cs b/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.Steps.cs
index 9e71d3153014..d9655a86cb21 100644
--- a/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.Steps.cs
+++ b/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.Steps.cs
@@ -18,6 +18,7 @@
using Content.Shared.Starlight;
using Content.Shared.Overlays;
using Content.Shared.Humanoid.Prototypes;
+using Content.Shared.Starlight.Antags.Abductor;
namespace Content.Server.Starlight.Medical.Surgery;
// Based on the RMC14.
@@ -65,15 +66,16 @@ private void OnStepOrganInsertComplete(Entity e
_delayAccumulator = 0;
_delayQueue.Enqueue(() =>
{
- if (_body.InsertOrgan(part, organId, ent.Comp.Slot, bodyPart, organComp)
+ if (_body.InsertOrgan(part, organId, ent.Comp.Slot, bodyPart, organComp) // todo move to system
&& TryComp(organId, out var organDamageable)
- && TryComp(body, out var bodyDamageable))
+ && TryComp(body, out var bodyDamageable))
{
if (TryComp(organId, out var organEyes)
&& TryComp(body, out var blindable))
{
_blindable.SetMinDamage((body, blindable), organEyes.MinDamage ?? 0);
_blindable.AdjustEyeDamage((body, blindable), (organEyes.EyeDamage ?? 0) - blindable.MaxDamage);
+ // This needs to be redesigned into prototypes.
if (_tag.HasTag(organId, "MedCyberEyes"))
{
AddComp(body);
@@ -100,6 +102,8 @@ private void OnStepOrganInsertComplete(Entity e
if (organImplant.ImplantID == "Welding")
AddComp(body);
}
+ if (TryComp(organId, out var abductorOrgan) && TryComp(body, out var victim))
+ victim.Organ = abductorOrgan.Organ;
if (TryComp(organId, out var organTongue)
&& !organTongue.IsMuted)
RemComp(body);
@@ -115,9 +119,9 @@ private void OnStepOrganExtractComplete(Entity
if (ent.Comp.Organ?.Count != 1) return;
var organs = _body.GetPartOrgans(args.Part, Comp(args.Part));
var type = ent.Comp.Organ.Values.First().Component.GetType();
- foreach (var organ in organs)
+ foreach (var organ in organs) // todo move to system
{
- if (HasComp(organ.Id, type))
+ if (HasComp(organ.Id, type))
{
if (_body.RemoveOrgan(organ.Id, organ.Component)
&& TryComp(organ.Id, out var damageRule)
@@ -131,6 +135,7 @@ private void OnStepOrganExtractComplete(Entity
organEyes.EyeDamage = blindable.EyeDamage;
organEyes.MinDamage = blindable.MinDamage;
_blindable.UpdateIsBlind((args.Body, blindable));
+ // This needs to be redesigned into prototypes.
if (_tag.HasTag(organ.Id, "MedCyberEyes"))
{
RemComp(args.Body);
@@ -162,6 +167,11 @@ private void OnStepOrganExtractComplete(Entity
organTongue.IsMuted = HasComp(args.Body);
AddComp(args.Body);
}
+ if (TryComp(organ.Id, out var abductorOrgan) && TryComp(args.Body, out var victim))
+ {
+ if(victim.Organ == abductorOrgan.Organ)
+ victim.Organ = AbductorOrganType.None;
+ }
var change = _damageableSystem.TryChangeDamage(args.Body, damageRule.Damage.Invert(), true, false, bodyDamageable);
if (change is not null)
_damageableSystem.TryChangeDamage(organ.Id, change.Invert(), true, false, organDamageable);
diff --git a/Content.Server/_Starlight/OnHit/ConsoleSystem.Actions.cs b/Content.Server/_Starlight/OnHit/ConsoleSystem.Actions.cs
deleted file mode 100644
index aec779183949..000000000000
--- a/Content.Server/_Starlight/OnHit/ConsoleSystem.Actions.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Content.Shared.Starlight.Antags.Abductor;
-using Content.Shared.Starlight.Medical.Surgery;
-using Content.Shared.Starlight.OnHit;
-using Content.Shared.Actions;
-using Content.Shared.DoAfter;
-using Robust.Shared.Prototypes;
-
-namespace Content.Server.Starlight.Antags.Abductor;
-
-public sealed partial class OnHitSystem : SharedOnHitSystem
-{
-
-}
diff --git a/Content.Server/_Starlight/OnHit/OnHitSystem.cs b/Content.Server/_Starlight/OnHit/OnHitSystem.cs
new file mode 100644
index 000000000000..69b175d91177
--- /dev/null
+++ b/Content.Server/_Starlight/OnHit/OnHitSystem.cs
@@ -0,0 +1,37 @@
+using Content.Shared.Starlight.Antags.Abductor;
+using Content.Shared.Starlight.Medical.Surgery;
+using Content.Shared.Starlight.OnHit;
+using Content.Shared.Actions;
+using Content.Shared.DoAfter;
+using Robust.Shared.Prototypes;
+using Content.Shared.Cuffs.Components;
+using Content.Shared.Damage.Components;
+using Content.Shared.Weapons.Melee.Events;
+
+namespace Content.Server.Starlight.Antags.Abductor;
+
+public sealed partial class OnHitSystem : SharedOnHitSystem
+{
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnCuffsOnHitDoAfter);
+ base.Initialize();
+ }
+ private void OnCuffsOnHitDoAfter(Entity ent, ref CuffsOnHitDoAfter args)
+ {
+ if (!args.Args.Target.HasValue || args.Handled || args.Cancelled) return;
+
+ var user = args.Args.User;
+ var target = args.Args.Target.Value;
+
+ if (!TryComp(target, out var cuffable) || cuffable.Container.Count != 0)
+ return;
+
+ args.Handled = true;
+
+ var handcuffs = SpawnNextToOrDrop(ent.Comp.HandcuffProtorype, args.User);
+
+ if (!_cuffs.TryAddNewCuffs(target, user, handcuffs, cuffable))
+ QueueDel(handcuffs);
+ }
+}
diff --git a/Content.Server/build.json b/Content.Server/build.json
index be0845290e34..52ba2453d46f 100644
--- a/Content.Server/build.json
+++ b/Content.Server/build.json
@@ -1,7 +1,7 @@
{
"engine_version": "237.1.0",
"fork_id": "Starlight",
- "version": "1730658117",
- "hash": "F892B648C509F169A133F80BDB7D6AAAA1E256D17857A1EE380AD5A0595B01BB",
- "download": "http://193.33.195.164/builds/1730658117/SS14.Client.zip"
+ "version": "1731297716",
+ "hash": "1A59BE6081A191F523BB130F55E721FF75F257462DD9E0E0282598618A1C4CA0",
+ "download": "http://193.33.195.164/builds/1731297716/SS14.Client.zip"
}
diff --git a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs
index 8a4b5baffd34..93c7f6a83cfd 100644
--- a/Content.Shared/ActionBlocker/ActionBlockerSystem.cs
+++ b/Content.Shared/ActionBlocker/ActionBlockerSystem.cs
@@ -1,4 +1,4 @@
-using Content.Shared.Body.Events;
+using Content.Shared.Body.Events;
using Content.Shared.Emoting;
using Content.Shared.Hands;
using Content.Shared.Interaction;
@@ -99,6 +99,15 @@ public bool CanInteract(EntityUid user, EntityUid? target)
return !targetEv.Cancelled;
}
+ //🌟Starlight🌟
+ public bool CanInstrumentInteract(EntityUid user, EntityUid used, EntityUid? target)
+ {
+ var ev = new InteractionAttemptEvent(user, target);
+ RaiseLocalEvent(used, ref ev);
+
+ return !ev.Cancelled;
+ }
+
///
/// Can a user utilize the entity that they are currently holding in their hands.
/// >
diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs
index 7f2ecb50f887..683c5d83e11a 100644
--- a/Content.Shared/Interaction/SharedInteractionSystem.cs
+++ b/Content.Shared/Interaction/SharedInteractionSystem.cs
@@ -1,4 +1,4 @@
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Content.Shared.ActionBlocker;
using Content.Shared.Administration.Logs;
@@ -1001,6 +1001,9 @@ public bool InteractUsing(
if (checkCanInteract && !_actionBlockerSystem.CanInteract(user, target))
return false;
+ if (!_actionBlockerSystem.CanInstrumentInteract(user, used, target)) // 🌟Starlight🌟
+ return false;
+
if (checkCanUse && !_actionBlockerSystem.CanUseHeldEntity(user, used))
return false;
diff --git a/Content.Shared/_Starlight/Antags/Abductor/AbductorCameraConsoleUI.cs b/Content.Shared/_Starlight/Antags/Abductor/AbductorCameraConsoleUI.cs
index 664d2af0d7b0..febc2ce12f14 100644
--- a/Content.Shared/_Starlight/Antags/Abductor/AbductorCameraConsoleUI.cs
+++ b/Content.Shared/_Starlight/Antags/Abductor/AbductorCameraConsoleUI.cs
@@ -3,16 +3,21 @@
using static Content.Shared.Pinpointer.SharedNavMapSystem;
namespace Content.Shared.Starlight.Antags.Abductor;
+
[Serializable, NetSerializable]
-public enum AbductorCameraConsoleUIKey
+public sealed class AbductorCameraConsoleBuiState : BoundUserInterfaceState
{
- Key
+ public required Dictionary Stations { get; init; }
}
[Serializable, NetSerializable]
-public sealed class AbductorCameraConsoleBuiState : BoundUserInterfaceState
+public sealed class AbductorConsoleBuiState : BoundUserInterfaceState
{
- public required Dictionary Stations { get; init; }
+ public NetEntity? Target { get; init; }
+ public string? TargetName { get; init; }
+ public string? VictimName { get; init; }
+ public bool AlienPadFound { get; init; }
+ public bool ExperimentatorFound { get; init; }
}
[Serializable, NetSerializable]
@@ -27,3 +32,11 @@ public sealed class AbductorBeaconChosenBuiMsg : BoundUserInterfaceMessage
{
public required NavMapBeacon Beacon { get; init; }
}
+[Serializable, NetSerializable]
+public sealed class AbductorAttractBuiMsg : BoundUserInterfaceMessage
+{
+}
+[Serializable, NetSerializable]
+public sealed class AbductorCompleteExperimentBuiMsg : BoundUserInterfaceMessage
+{
+}
diff --git a/Content.Shared/_Starlight/Antags/Abductor/AbductorEnums.cs b/Content.Shared/_Starlight/Antags/Abductor/AbductorEnums.cs
new file mode 100644
index 000000000000..3c54e6c9508a
--- /dev/null
+++ b/Content.Shared/_Starlight/Antags/Abductor/AbductorEnums.cs
@@ -0,0 +1,30 @@
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Starlight.Antags.Abductor;
+
+[Serializable, NetSerializable]
+public enum AbductorExperimentatorVisuals : byte
+{
+ Full
+}
+[Serializable, NetSerializable]
+public enum AbductorOrganType : byte
+{
+ None,
+ Health,
+ Plasma,
+ Gravity,
+ Egg,
+ Spider
+}
+[Serializable, NetSerializable]
+public enum AbductorCameraConsoleUIKey
+{
+ Key
+}
+
+[Serializable, NetSerializable]
+public enum AbductorConsoleUIKey
+{
+ Key
+}
\ No newline at end of file
diff --git a/Content.Shared/_Starlight/Antags/Abductor/AbductorHumanObservationConsoleComponent.cs b/Content.Shared/_Starlight/Antags/Abductor/AbductorHumanObservationConsoleComponent.cs
deleted file mode 100644
index 2cb3f362e163..000000000000
--- a/Content.Shared/_Starlight/Antags/Abductor/AbductorHumanObservationConsoleComponent.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using Content.Shared.Starlight.Medical.Surgery;
-using Content.Shared.Actions;
-using Content.Shared.Communications;
-using Robust.Shared.GameStates;
-using Robust.Shared.Map;
-using Robust.Shared.Prototypes;
-
-namespace Content.Shared.Starlight.Antags.Abductor;
-
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
-public sealed partial class AbductorHumanObservationConsoleComponent : Component
-{
- [DataField(readOnly: true)]
- public EntProtoId? RemoteEntityProto = "AbductorHumanObservationConsoleEye";
-
- [DataField, AutoNetworkedField]
- public EntityUid? RemoteEntity;
-}
-
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem))]
-public sealed partial class AbductorConsoleComponent : Component
-{
-}
-
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
-public sealed partial class AbductorScientistComponent : Component
-{
- [DataField, AutoNetworkedField]
- public MapCoordinates? Position;
-}
-
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
-public sealed partial class RemoteEyeSourceContainerComponent : Component
-{
- [DataField, AutoNetworkedField]
- public EntityUid? Actor;
-}
-
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
-public sealed partial class AbductorsAbilitiesComponent : Component
-{
- [DataField, AutoNetworkedField]
- public EntityUid? ExitConsole;
-
- [DataField, AutoNetworkedField]
- public EntityUid? SendYourself;
-
- [DataField]
- public EntityUid[] HiddenActions = [];
-}
-
-public sealed partial class ExitConsoleEvent : InstantActionEvent
-{
-
-}
-public sealed partial class SendYourselfEvent : WorldTargetActionEvent
-{
-
-}
-public sealed partial class AbductorReturnToShipEvent : InstantActionEvent
-{
-
-}
\ No newline at end of file
diff --git a/Content.Shared/_Starlight/Antags/Abductor/AbductorReturnDoAfterEvent.cs b/Content.Shared/_Starlight/Antags/Abductor/AbductorReturnDoAfterEvent.cs
index dbe0e4130a49..2114e1ea81a3 100644
--- a/Content.Shared/_Starlight/Antags/Abductor/AbductorReturnDoAfterEvent.cs
+++ b/Content.Shared/_Starlight/Antags/Abductor/AbductorReturnDoAfterEvent.cs
@@ -8,6 +8,12 @@ namespace Content.Shared.Starlight.Medical.Surgery;
public sealed partial class AbductorReturnDoAfterEvent : SimpleDoAfterEvent
{
}
+
+[Serializable, NetSerializable]
+public sealed partial class AbductorGizmoMarkDoAfterEvent : SimpleDoAfterEvent
+{
+}
+
[Serializable, NetSerializable]
public sealed partial class AbductorSendYourselfDoAfterEvent : SimpleDoAfterEvent
{
@@ -21,3 +27,23 @@ private AbductorSendYourselfDoAfterEvent()
public AbductorSendYourselfDoAfterEvent(NetCoordinates coords) => TargetCoordinates = coords;
public override DoAfterEvent Clone() => this;
}
+[Serializable, NetSerializable]
+public sealed partial class AbductorAttractDoAfterEvent : SimpleDoAfterEvent
+{
+ [DataField("coordinates", required: true)]
+ public NetCoordinates TargetCoordinates;
+
+ [DataField("victim", required: true)]
+ public NetEntity Victim;
+ private AbductorAttractDoAfterEvent()
+ {
+ }
+
+ public AbductorAttractDoAfterEvent(NetCoordinates coords, NetEntity target)
+ {
+ TargetCoordinates = coords;
+ Victim = target;
+ }
+
+ public override DoAfterEvent Clone() => this;
+}
diff --git a/Content.Shared/_Starlight/Antags/Abductor/AbductorsComponents.cs b/Content.Shared/_Starlight/Antags/Abductor/AbductorsComponents.cs
new file mode 100644
index 000000000000..74af60e48068
--- /dev/null
+++ b/Content.Shared/_Starlight/Antags/Abductor/AbductorsComponents.cs
@@ -0,0 +1,124 @@
+using Content.Shared.Actions;
+using Content.Shared.Communications;
+using Content.Shared.Ninja.Systems;
+using Robust.Shared.GameStates;
+using Robust.Shared.Map;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Starlight.Antags.Abductor;
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorHumanObservationConsoleComponent : Component
+{
+ [DataField(readOnly: true)]
+ public EntProtoId? RemoteEntityProto = "AbductorHumanObservationConsoleEye";
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? RemoteEntity;
+}
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorConsoleComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public NetEntity? Target;
+
+ [DataField, AutoNetworkedField]
+ public NetEntity? AlienPod;
+
+ [DataField, AutoNetworkedField]
+ public NetEntity? Experimentator;
+}
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem))]
+public sealed partial class AbductorAlienPadComponent : Component
+{
+}
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorExperimentatorComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public NetEntity? Console;
+
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ public string ContainerId = "storage";
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorGizmoComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public NetEntity? Target;
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem))]
+public sealed partial class AbductorComponent : Component
+{
+}
+
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+public sealed partial class AbductorVictimComponent : Component
+{
+ [DataField("position"), AutoNetworkedField]
+ public EntityCoordinates? Position;
+
+ [DataField("organ"), AutoNetworkedField]
+ public AbductorOrganType Organ = AbductorOrganType.None;
+
+ [DataField]
+ public TimeSpan? LastActivation;
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorOrganComponent : Component
+{
+ [DataField("organ"), AutoNetworkedField]
+ public AbductorOrganType Organ;
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorScientistComponent : Component
+{
+ [DataField("position"), AutoNetworkedField]
+ public EntityCoordinates? SpawnPosition;
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class RemoteEyeSourceContainerComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public EntityUid? Actor;
+}
+
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedAbductorSystem)), AutoGenerateComponentState]
+public sealed partial class AbductorsAbilitiesComponent : Component
+{
+ [DataField, AutoNetworkedField]
+ public EntityUid? ExitConsole;
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? SendYourself;
+
+ [DataField]
+ public EntityUid[] HiddenActions = [];
+}
+
+[RegisterComponent, Access(typeof(SharedAbductorSystem))]
+public sealed partial class AbductConditionComponent : Component
+{
+ [DataField("abducted"), ViewVariables(VVAccess.ReadWrite)]
+ public int Abducted;
+ [DataField("hashset"), ViewVariables(VVAccess.ReadWrite)]
+ public HashSet AbductedHashs = [];
+}
+
+public sealed partial class ExitConsoleEvent : InstantActionEvent
+{
+
+}
+public sealed partial class SendYourselfEvent : WorldTargetActionEvent
+{
+
+}
+public sealed partial class AbductorReturnToShipEvent : InstantActionEvent
+{
+
+}
\ No newline at end of file
diff --git a/Content.Shared/_Starlight/Antags/Abductor/ConsoleSystem.cs b/Content.Shared/_Starlight/Antags/Abductor/ConsoleSystem.cs
deleted file mode 100644
index c21731db3ca0..000000000000
--- a/Content.Shared/_Starlight/Antags/Abductor/ConsoleSystem.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Linq;
-using Content.Shared.Bed.Sleep;
-using Content.Shared.Clothing.EntitySystems;
-using Content.Shared.Damage.Components;
-using Content.Shared.Damage.Events;
-using Content.Shared.Weapons.Melee.Events;
-
-namespace Content.Shared.Starlight.Antags.Abductor;
-
-public abstract class SharedAbductorSystem : EntitySystem
-{
- public override void Initialize()
- {
- base.Initialize();
- }
-
- public override void Update(float frameTime)
- {
- }
-}
-
diff --git a/Content.Shared/_Starlight/Antags/Abductor/SharedAbductorSystem.cs b/Content.Shared/_Starlight/Antags/Abductor/SharedAbductorSystem.cs
new file mode 100644
index 000000000000..17b343a1bbd4
--- /dev/null
+++ b/Content.Shared/_Starlight/Antags/Abductor/SharedAbductorSystem.cs
@@ -0,0 +1,70 @@
+using System.Linq;
+using Content.Shared.Bed.Cryostorage;
+using Content.Shared.Bed.Sleep;
+using Content.Shared.Clothing.EntitySystems;
+using Content.Shared.Damage.Components;
+using Content.Shared.Damage.Events;
+using Content.Shared.Weapons.Melee.Events;
+using Robust.Shared.Containers;
+using Robust.Shared.Timing;
+
+namespace Content.Shared.Starlight.Antags.Abductor;
+
+public abstract class SharedAbductorSystem : EntitySystem
+{
+ [Dependency] private readonly EntityLookupSystem _entityLookup = default!;
+ [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+ [Dependency] protected readonly IGameTiming Timing = default!;
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnInsertedContainer);
+ SubscribeLocalEvent(OnRemovedContainer);
+ base.Initialize();
+ }
+
+ private void OnRemovedContainer(Entity ent, ref EntRemovedFromContainerMessage args)
+ {
+ if (args.Container.ID != ent.Comp.ContainerId)
+ return;
+
+ if (ent.Comp.Console == null)
+ {
+ var xform = EnsureComp(ent.Owner);
+ var console = _entityLookup.GetEntitiesInRange(xform.Coordinates, 5, LookupFlags.Approximate | LookupFlags.Dynamic)
+ .FirstOrDefault().Owner;
+ if (console != default)
+ ent.Comp.Console = GetNetEntity(console);
+ }
+ if (ent.Comp.Console != null && GetEntity(ent.Comp.Console.Value) is var consoleid && TryComp(consoleid, out var consoleComp))
+ UpdateGui(consoleComp.Target, (consoleid, consoleComp));
+
+ _appearance.SetData(ent, AbductorExperimentatorVisuals.Full, args.Container.ContainedEntities.Count > 0);
+ Dirty(ent);
+ }
+
+ private void OnInsertedContainer(Entity ent, ref EntInsertedIntoContainerMessage args)
+ {
+ if (args.Container.ID != ent.Comp.ContainerId)
+ return;
+ if (!Timing.IsFirstTimePredicted)
+ return;
+ if (ent.Comp.Console == null)
+ {
+ var xform = EnsureComp(ent.Owner);
+ var console = _entityLookup.GetEntitiesInRange(xform.Coordinates, 5, LookupFlags.Approximate | LookupFlags.Dynamic)
+ .FirstOrDefault().Owner;
+ if (console != default)
+ ent.Comp.Console = GetNetEntity(console);
+ }
+ if (ent.Comp.Console != null && GetEntity(ent.Comp.Console.Value) is var consoleid && TryComp(consoleid, out var consoleComp))
+ UpdateGui(consoleComp.Target, (consoleid, consoleComp));
+
+ _appearance.SetData(ent, AbductorExperimentatorVisuals.Full, args.Container.ContainedEntities.Count > 0);
+ Dirty(ent);
+ }
+ protected virtual void UpdateGui(NetEntity? target, Entity computer)
+ {
+
+ }
+}
+
diff --git a/Content.Shared/_Starlight/OnHit/SharedOnHitSystem.cs b/Content.Shared/_Starlight/OnHit/SharedOnHitSystem.cs
index d2e9f6dd4245..5bb8fbcc7a37 100644
--- a/Content.Shared/_Starlight/OnHit/SharedOnHitSystem.cs
+++ b/Content.Shared/_Starlight/OnHit/SharedOnHitSystem.cs
@@ -32,7 +32,6 @@ public override void Initialize()
{
SubscribeLocalEvent(OnInjectOnMeleeHit);
SubscribeLocalEvent(OnCuffsOnMeleeHit);
- SubscribeLocalEvent(OnCuffsOnHitDoAfter);
base.Initialize();
}
@@ -66,23 +65,6 @@ private void OnCuffsOnMeleeHit(Entity ent, ref MeleeHitEven
_color.RaiseEffect(Color.FromHex("#601653"), new List(1) { target }, Filter.Pvs(target, entityManager: EntityManager));
}
}
- private void OnCuffsOnHitDoAfter(Entity ent, ref CuffsOnHitDoAfter args)
- {
- if (!args.Args.Target.HasValue || args.Handled) return;
-
- var user = args.Args.User;
- var target = args.Args.Target.Value;
-
- if (!TryComp(target, out var cuffable) || cuffable.Container.Count != 0)
- return;
-
- args.Handled = true;
-
- var handcuffs = SpawnNextToOrDrop(ent.Comp.HandcuffProtorype, args.User);
-
- if (!_cuffs.TryAddNewCuffs(target, user, handcuffs, cuffable))
- QueueDel(handcuffs);
- }
private void OnInjectOnMeleeHit(Entity ent, ref MeleeHitEvent args)
{
diff --git a/Content.Shared/_Starlight/Restrict/SharedRestrictSystem.cs b/Content.Shared/_Starlight/Restrict/SharedRestrictSystem.cs
index 07ad8892188b..f0945b95e873 100644
--- a/Content.Shared/_Starlight/Restrict/SharedRestrictSystem.cs
+++ b/Content.Shared/_Starlight/Restrict/SharedRestrictSystem.cs
@@ -1,4 +1,6 @@
using System.Linq;
+using Content.Shared.Interaction.Events;
+using Content.Shared.Popups;
using Content.Shared.Tag;
using Content.Shared.Weapons.Melee.Events;
using Robust.Shared.Network;
@@ -9,9 +11,21 @@ public abstract partial class SharedRestrictSystem : EntitySystem
{
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly IRobustRandom _random = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
public override void Initialize()
{
SubscribeLocalEvent(OnAttemptMelee);
+ SubscribeLocalEvent(OnAttemptInteract);
+ }
+
+ private void OnAttemptInteract(Entity ent, ref InteractionAttemptEvent args)
+ {
+ if (!_tagSystem.HasAllTags(args.Uid, ent.Comp.Contains) || _tagSystem.HasAnyTag(args.Uid, ent.Comp.DoestContain))
+ {
+ args.Cancelled = true;
+ if (ent.Comp.Messages.Count != 0)
+ _popup.PopupClient(Loc.GetString(_random.Pick(ent.Comp.Messages)), args.Uid);
+ }
}
private void OnAttemptMelee(Entity ent, ref AttemptMeleeEvent args)
diff --git a/Resources/Audio/_Starlight/Medical/Surgery/attributions.yml b/Resources/Audio/_Starlight/Medical/Surgery/attributions.yml
index 0ddaa09bceb6..e814afd9f6c9 100644
--- a/Resources/Audio/_Starlight/Medical/Surgery/attributions.yml
+++ b/Resources/Audio/_Starlight/Medical/Surgery/attributions.yml
@@ -23,6 +23,16 @@
copyright: "Taken from cmss13"
source: "https://github.com/cmss13-devs/cmss13/blob/fae73dfa5aedb0a253de04b60085ed8a178d3bf7/sound/surgery/organ2.ogg"
+- files: ["bone_setter.ogg"]
+ license: "CC-BY-SA-3.0"
+ copyright: "Darkrell"
+ source: "https://github.com/ss14Starlight/space-station-14"
+
+- files: ["bone_saw.ogg"]
+ license: "CC-BY-SA-3.0"
+ copyright: "Darkrell"
+ source: "https://github.com/ss14Starlight/space-station-14"
+
- files: ["retractor1.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from cmss13"
diff --git a/Resources/Audio/_Starlight/Medical/Surgery/bone_saw.ogg b/Resources/Audio/_Starlight/Medical/Surgery/bone_saw.ogg
new file mode 100644
index 000000000000..8a9af325abd9
Binary files /dev/null and b/Resources/Audio/_Starlight/Medical/Surgery/bone_saw.ogg differ
diff --git a/Resources/Audio/_Starlight/Medical/Surgery/bone_setter.ogg b/Resources/Audio/_Starlight/Medical/Surgery/bone_setter.ogg
new file mode 100644
index 000000000000..23c03deeac11
Binary files /dev/null and b/Resources/Audio/_Starlight/Medical/Surgery/bone_setter.ogg differ
diff --git a/Resources/Audio/_Starlight/Misc/abductor.ogg b/Resources/Audio/_Starlight/Misc/abductor.ogg
new file mode 100644
index 000000000000..93f0a0e1cc25
Binary files /dev/null and b/Resources/Audio/_Starlight/Misc/abductor.ogg differ
diff --git a/Resources/Audio/_Starlight/Misc/alien_teleport.ogg b/Resources/Audio/_Starlight/Misc/alien_teleport.ogg
new file mode 100644
index 000000000000..f2a44984936e
Binary files /dev/null and b/Resources/Audio/_Starlight/Misc/alien_teleport.ogg differ
diff --git a/Resources/Audio/_Starlight/Misc/attributions.yml b/Resources/Audio/_Starlight/Misc/attributions.yml
new file mode 100644
index 000000000000..a54679b56896
--- /dev/null
+++ b/Resources/Audio/_Starlight/Misc/attributions.yml
@@ -0,0 +1,4 @@
+- files: ["abductor","alien_teleport"]
+ license: "CC-BY-4.0"
+ copyright: 'Darkrell'
+ source: "https://github.com/ss14Starlight/space-station-14"
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_Starlight/abductor/abductor-ui.ftl b/Resources/Locale/en-US/_Starlight/abductor/abductor-ui.ftl
new file mode 100644
index 000000000000..3c4de8260894
--- /dev/null
+++ b/Resources/Locale/en-US/_Starlight/abductor/abductor-ui.ftl
@@ -0,0 +1,30 @@
+abductors-ui-beacons = Beacons
+abductors-ui-teleport = Teleport
+abductors-ui-attract = Attract
+
+abductors-ui-experiment = Experiment
+abductors-ui-complete-experiment = Complete the experiment
+
+abductors-ui-gizmo-transferred = Target information transferred
+
+abductors-ghost-role-name = Lone Abductor
+abductors-ghost-role-desc = Kidnap people, stuff them with organs of dubious origin
+abductors-ghost-role-rules = You are a [color=red][bold]Solo Abductor[/bold][/color].
+ Your intentions are to abduct people from the station and replace their organs with various experimental devices,
+ after which you return them back. You are not allowed to destroy the station or intentionally kill people.
+ It is in your interest to return the test subjects alive and healthy for the purity of the experiment.
+
+ You don't remember any of your previous life, and you don't remember anything you learned as a ghost.
+ You are allowed to remember knowledge about the game in general, such as how to cook, how to use objects, etc.
+ You are absolutely [color=red]NOT[/color] allowed to remember, say, the name, appearance, etc. of your previous character.
+
+abductor-round-end-agent-name = abductor
+
+objective-issuer-abductors = [color=#FD0098]Mothership[/color]
+
+objective-condition-abduct-title = Abduct {$count} person.
+objective-condition-abduct-description = (use the Gizmo on a subdued victim, then use the Gizmo on the abductor console and select the attract action), then replace their heart with one of the glands, put them in the experimenter, and press complete experiment.
+
+abductor-role-greeting = I am a professional combat scientist of a high-tech race. My task is to abduct humans, conduct experiments on them, and return them intact for the purity of the experiment. It is not in my interest to destroy the station, kill, or assist the crew.
+
+roles-antag-abductor-objective = Find the nuke disk and blow up the station.
diff --git a/Resources/Locale/en-US/_Starlight/abductor/abductor.ftl b/Resources/Locale/en-US/_Starlight/abductor/abductor.ftl
index 531826d19343..6724c1d519aa 100644
--- a/Resources/Locale/en-US/_Starlight/abductor/abductor.ftl
+++ b/Resources/Locale/en-US/_Starlight/abductor/abductor.ftl
@@ -3,4 +3,6 @@ abductors-weapon-restricted-2 = Seems like they've grabbed the blade.
abductors-weapon-restricted-3 = Strokes the stick, but nothing happens.
abductors-weapon-restricted-4 = Sniffs the alien weapon.
+abductors-gizmo-restricted = Spins gizmo in their hand.
+
abductor-gun-restricted-1 = They try to press the trigger guard, but the finger doesn't fit.
\ No newline at end of file
diff --git a/Resources/Maps/Shuttles/ShuttleEvent/abductor_shuttle.yml b/Resources/Maps/Shuttles/ShuttleEvent/abductor_shuttle.yml
index 39feeb94b980..ec7a25e7f8ad 100644
--- a/Resources/Maps/Shuttles/ShuttleEvent/abductor_shuttle.yml
+++ b/Resources/Maps/Shuttles/ShuttleEvent/abductor_shuttle.yml
@@ -18,19 +18,19 @@ entities:
chunks:
0,0:
ind: 0,0
- tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
-1,0:
ind: -1,0
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
0,-1:
ind: 0,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
-1,-1:
ind: -1,-1
- tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA
+ tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA
version: 6
- type: Broadphase
- type: Physics
@@ -55,23 +55,135 @@ entities:
- type: GridAtmosphere
version: 2
data:
+ tiles:
+ 0,0:
+ 0: 53239
+ 0,-1:
+ 0: 30479
+ -1,0:
+ 0: 14796
+ 0,1:
+ 0: 1599
+ -1,1:
+ 0: 3226
+ 1,0:
+ 0: 5444
+ 1,1:
+ 0: 18
+ 1,-1:
+ 0: 21778
+ -2,0:
+ 0: 1092
+ -2,-1:
+ 0: 17416
+ -2,1:
+ 0: 8
+ -1,-1:
+ 0: 56606
+ 0,-2:
+ 0: 1792
+ -1,-2:
+ 0: 7168
+ 1,-2:
+ 0: 4096
+ uniqueMixes:
+ - volume: 2500
+ temperature: 293.15
+ moles:
+ - 21.824879
+ - 82.10312
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
chunkSize: 4
- type: GasTileOverlay
- type: RadiationGridResistance
- proto: AbductorAlienPad
entities:
- - uid: 2
+ - uid: 181
components:
- type: Transform
- pos: 2.5,1.5
+ pos: 1.5,2.5
parent: 1
- proto: AbductorConsole
entities:
- - uid: 152
+ - uid: 182
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: 2.5,0.5
+ pos: 0.5,2.5
+ parent: 1
+- proto: AbductorExperimentator
+ entities:
+ - uid: 2
+ components:
+ - type: Transform
+ pos: -0.5,2.5
+ parent: 1
+- proto: AbductorGizmo
+ entities:
+ - uid: 207
+ components:
+ - type: Transform
+ pos: -1.4933486,0.52918124
+ parent: 1
+- proto: AbductorHandcuffs
+ entities:
+ - uid: 196
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 197
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 198
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 199
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 200
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 201
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 202
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 203
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 204
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
+ parent: 1
+ - uid: 205
+ components:
+ - type: Transform
+ pos: 4.4806957,2.7953928
parent: 1
- proto: AbductorHumanObservationConsole
entities:
@@ -87,46 +199,111 @@ entities:
- type: Transform
pos: 0.5,0.5
parent: 1
- - uid: 151
+- proto: AirAlarm
+ entities:
+ - uid: 248
components:
- type: Transform
- pos: 1.5,-1.5
+ pos: -3.5,1.5
parent: 1
+ - type: DeviceList
+ devices:
+ - 240
- proto: APCHyperCapacity
entities:
- - uid: 81
+ - uid: 85
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -3.5,2.5
+ rot: 3.141592653589793 rad
+ pos: -3.5,0.5
parent: 1
- - uid: 82
+ - uid: 86
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: 4.5,2.5
+ rot: 3.141592653589793 rad
+ pos: 4.5,0.5
parent: 1
- proto: CableApcExtension
entities:
- - uid: 118
+ - uid: 5
components:
- type: Transform
- pos: -3.5,2.5
+ pos: -4.5,4.5
parent: 1
- - uid: 119
+ - uid: 6
components:
- type: Transform
- pos: -2.5,2.5
+ pos: -3.5,4.5
parent: 1
- - uid: 120
+ - uid: 7
components:
- type: Transform
- pos: 4.5,2.5
+ pos: 4.5,1.5
parent: 1
- - uid: 121
+ - uid: 8
+ components:
+ - type: Transform
+ pos: -3.5,0.5
+ parent: 1
+ - uid: 13
+ components:
+ - type: Transform
+ pos: -1.5,5.5
+ parent: 1
+ - uid: 15
+ components:
+ - type: Transform
+ pos: -3.5,5.5
+ parent: 1
+ - uid: 16
+ components:
+ - type: Transform
+ pos: 3.5,5.5
+ parent: 1
+ - uid: 19
+ components:
+ - type: Transform
+ pos: 4.5,4.5
+ parent: 1
+ - uid: 28
+ components:
+ - type: Transform
+ pos: 4.5,5.5
+ parent: 1
+ - uid: 32
+ components:
+ - type: Transform
+ pos: -3.5,1.5
+ parent: 1
+ - uid: 49
+ components:
+ - type: Transform
+ pos: -0.5,6.5
+ parent: 1
+ - uid: 88
+ components:
+ - type: Transform
+ pos: 4.5,0.5
+ parent: 1
+ - uid: 114
components:
- type: Transform
- pos: 3.5,2.5
+ pos: 2.5,5.5
+ parent: 1
+ - uid: 117
+ components:
+ - type: Transform
+ pos: 4.5,4.5
+ parent: 1
+ - uid: 118
+ components:
+ - type: Transform
+ pos: -2.5,5.5
+ parent: 1
+ - uid: 119
+ components:
+ - type: Transform
+ pos: -2.5,2.5
parent: 1
- uid: 122
components:
@@ -221,69 +398,64 @@ entities:
- uid: 140
components:
- type: Transform
- pos: -1.5,4.5
+ pos: 0.5,6.5
parent: 1
- uid: 141
components:
- type: Transform
- pos: -0.5,4.5
+ pos: 1.5,6.5
parent: 1
- uid: 142
components:
- type: Transform
pos: -0.5,5.5
parent: 1
- - uid: 143
- components:
- - type: Transform
- pos: 0.5,5.5
- parent: 1
- uid: 144
components:
- type: Transform
pos: 1.5,5.5
parent: 1
- - uid: 145
+ - uid: 149
components:
- type: Transform
- pos: 1.5,4.5
+ pos: 5.5,4.5
parent: 1
- - uid: 146
+ - uid: 186
components:
- type: Transform
- pos: 2.5,4.5
+ pos: 5.5,3.5
parent: 1
- - uid: 147
+ - uid: 187
components:
- type: Transform
- pos: 3.5,4.5
+ pos: 5.5,2.5
parent: 1
- - uid: 148
+ - uid: 188
components:
- type: Transform
- pos: 3.5,3.5
+ pos: 5.5,1.5
parent: 1
- - uid: 149
+ - uid: 189
components:
- type: Transform
- pos: 4.5,3.5
+ pos: -4.5,3.5
parent: 1
- - uid: 150
+ - uid: 190
components:
- type: Transform
- pos: 4.5,2.5
+ pos: -4.5,2.5
parent: 1
-- proto: CableHV
- entities:
- - uid: 96
+ - uid: 191
components:
- type: Transform
- pos: -3.5,0.5
+ pos: -4.5,1.5
parent: 1
- - uid: 97
+- proto: CableHV
+ entities:
+ - uid: 39
components:
- type: Transform
- pos: -3.5,-0.5
+ pos: -3.5,-2.5
parent: 1
- uid: 98
components:
@@ -353,569 +525,1179 @@ entities:
- uid: 111
components:
- type: Transform
- pos: 4.5,-0.5
+ pos: -2.5,-3.5
parent: 1
- uid: 112
components:
- type: Transform
- pos: 4.5,0.5
+ pos: -0.5,-2.5
parent: 1
- - uid: 113
+ - uid: 176
components:
- type: Transform
- pos: 4.5,1.5
+ pos: 3.5,-3.5
+ parent: 1
+ - uid: 177
+ components:
+ - type: Transform
+ pos: 4.5,-2.5
parent: 1
- proto: CableMV
entities:
- - uid: 114
+ - uid: 21
components:
- type: Transform
- pos: -3.5,1.5
+ pos: -3.5,0.5
parent: 1
- - uid: 115
+ - uid: 22
components:
- type: Transform
- pos: -3.5,2.5
+ pos: -3.5,-0.5
parent: 1
- - uid: 116
+ - uid: 23
components:
- type: Transform
- pos: 4.5,1.5
+ pos: -3.5,-1.5
parent: 1
- - uid: 117
+ - uid: 24
components:
- type: Transform
- pos: 4.5,2.5
+ pos: 4.5,0.5
parent: 1
-- proto: ComputerIFF
+ - uid: 25
+ components:
+ - type: Transform
+ pos: 4.5,-0.5
+ parent: 1
+ - uid: 91
+ components:
+ - type: Transform
+ pos: 4.5,-1.5
+ parent: 1
+- proto: CableTerminal
entities:
- - uid: 27
+ - uid: 38
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 1.5,3.5
+ pos: -1.5,-3.5
parent: 1
-- proto: ComputerShuttle
+- proto: ChairPilotSeat
entities:
- - uid: 56
+ - uid: 162
components:
- type: Transform
+ rot: 3.141592653589793 rad
pos: 0.5,4.5
parent: 1
-- proto: GeneratorWallmountBasic
+- proto: ClockworkGrille
entities:
- - uid: 83
+ - uid: 45
components:
- type: Transform
- pos: -3.5,0.5
+ pos: 0.5,6.5
parent: 1
- - uid: 84
+- proto: ClothingBackpackDuffelSyndicateFilledMedical
+ entities:
+ - uid: 208
components:
- type: Transform
- pos: -3.5,-1.5
+ pos: -1.5044186,0.16459793
parent: 1
- - uid: 85
+- proto: ClothingHeadHelmetAbductor
+ entities:
+ - uid: 206
components:
- type: Transform
- pos: -3.5,-0.5
+ pos: 4.4633284,3.5539389
parent: 1
- - uid: 86
+- proto: ComputerIFF
+ entities:
+ - uid: 183
components:
- type: Transform
- pos: 4.5,-0.5
+ rot: 1.5707963267948966 rad
+ pos: -0.5,4.5
parent: 1
- - uid: 87
+- proto: ComputerShuttle
+ entities:
+ - uid: 14
components:
- type: Transform
- pos: 4.5,-1.5
+ pos: 0.5,5.5
parent: 1
- - uid: 88
+- proto: Defibrillator
+ entities:
+ - uid: 231
components:
- type: Transform
- pos: 4.5,0.5
+ pos: 1.167351,-1.4260883
parent: 1
- - uid: 89
+- proto: GasMinerNitrogen
+ entities:
+ - uid: 241
components:
- type: Transform
- pos: 3.5,-2.5
+ pos: -3.5,3.5
parent: 1
- - uid: 90
+ - uid: 242
components:
- type: Transform
- pos: -2.5,-2.5
+ pos: -2.5,3.5
parent: 1
- - uid: 91
+- proto: GasMinerOxygen
+ entities:
+ - uid: 89
components:
- type: Transform
- pos: -1.5,-3.5
+ pos: -3.5,2.5
parent: 1
- - uid: 92
+- proto: GasPassiveVent
+ entities:
+ - uid: 58
components:
- type: Transform
- pos: -0.5,-3.5
+ rot: 3.141592653589793 rad
+ pos: 0.5,-5.5
parent: 1
- - uid: 93
+ - uid: 244
components:
- type: Transform
- pos: 0.5,-3.5
+ rot: 1.5707963267948966 rad
+ pos: -2.5,4.5
parent: 1
- - uid: 94
+ - uid: 245
components:
- type: Transform
- pos: 1.5,-3.5
+ rot: -1.5707963267948966 rad
+ pos: 0.5,4.5
parent: 1
- - uid: 95
+- proto: GasPipeStraight
+ entities:
+ - uid: 246
components:
- type: Transform
- pos: 2.5,-3.5
+ rot: -1.5707963267948966 rad
+ pos: -1.5,4.5
+ parent: 1
+ - uid: 247
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -0.5,4.5
+ parent: 1
+ - uid: 249
+ components:
+ - type: Transform
+ pos: 0.5,-2.5
+ parent: 1
+ - uid: 250
+ components:
+ - type: Transform
+ pos: 0.5,-3.5
+ parent: 1
+ - uid: 251
+ components:
+ - type: Transform
+ pos: 0.5,-4.5
+ parent: 1
+- proto: GasVentScrubber
+ entities:
+ - uid: 240
+ components:
+ - type: Transform
+ pos: 0.5,-1.5
+ parent: 1
+ - type: DeviceNetwork
+ configurators:
+ - invalid
+ deviceLists:
+ - 248
+- proto: GeneratorBasic15kW
+ entities:
+ - uid: 41
+ components:
+ - type: Transform
+ pos: -0.5,-3.5
+ parent: 1
+ - uid: 42
+ components:
+ - type: Transform
+ pos: 2.5,-3.5
+ parent: 1
+ - uid: 95
+ components:
+ - type: Transform
+ pos: 1.5,-3.5
+ parent: 1
+ - uid: 96
+ components:
+ - type: Transform
+ pos: 0.5,-3.5
+ parent: 1
+ - uid: 175
+ components:
+ - type: Transform
+ pos: 3.5,-3.5
parent: 1
- proto: GravityGeneratorMini
entities:
- - uid: 33
+ - uid: 148
components:
- type: Transform
- pos: -2.5,2.5
+ pos: -3.5,-2.5
parent: 1
- proto: Gyroscope
entities:
- - uid: 34
+ - uid: 47
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 3.5,2.5
+ pos: -3.5,-0.5
+ parent: 1
+ - uid: 92
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 4.5,-0.5
+ parent: 1
+ - uid: 173
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 4.5,-2.5
+ parent: 1
+- proto: HandheldHealthAnalyzer
+ entities:
+ - uid: 232
+ components:
+ - type: Transform
+ pos: 1.136101,-1.4417133
+ parent: 1
+- proto: LeftArmCyber
+ entities:
+ - uid: 212
+ components:
+ - type: Transform
+ pos: -0.80197245,-1.4083188
+ parent: 1
+ - uid: 213
+ components:
+ - type: Transform
+ pos: -0.80197245,-1.4083188
+ parent: 1
+- proto: LeftFootCyber
+ entities:
+ - uid: 214
+ components:
+ - type: Transform
+ pos: -0.28113908,-1.2312355
+ parent: 1
+ - uid: 215
+ components:
+ - type: Transform
+ pos: -0.28113908,-1.2312355
+ parent: 1
+- proto: LeftHandCyber
+ entities:
+ - uid: 216
+ components:
+ - type: Transform
+ pos: -0.73947245,-1.5020688
+ parent: 1
+ - uid: 217
+ components:
+ - type: Transform
+ pos: -0.73947245,-1.5020688
+ parent: 1
+- proto: LeftLegCyber
+ entities:
+ - uid: 218
+ components:
+ - type: Transform
+ pos: -0.6592576,-1.491652
+ parent: 1
+ - uid: 219
+ components:
+ - type: Transform
+ pos: -0.6592576,-1.491652
+ parent: 1
+- proto: SpawnPointLoneAbductor
+ entities:
+ - uid: 255
+ components:
+ - type: Transform
+ pos: 0.5,1.5
+ parent: 1
+- proto: MedkitAdvancedFilled
+ entities:
+ - uid: 228
+ components:
+ - type: Transform
+ pos: 1.5938609,-1.179152
+ parent: 1
+ - uid: 229
+ components:
+ - type: Transform
+ pos: 1.6042776,-1.3458188
+ parent: 1
+ - uid: 230
+ components:
+ - type: Transform
+ pos: 1.6355276,-1.5437355
+ parent: 1
+- proto: OrganCyberEyesMed
+ entities:
+ - uid: 209
+ components:
+ - type: Transform
+ pos: 2.4271944,0.14376462
+ parent: 1
+ - uid: 235
+ components:
+ - type: Transform
+ pos: 2.418554,0.112514615
+ parent: 1
+- proto: OrganCyberEyesOmni
+ entities:
+ - uid: 210
+ components:
+ - type: Transform
+ pos: 2.5521944,-0.30415207
+ parent: 1
+ - uid: 236
+ components:
+ - type: Transform
+ pos: 2.512304,-0.31468946
+ parent: 1
+- proto: OrganCyberEyesSec
+ entities:
+ - uid: 211
+ components:
+ - type: Transform
+ pos: 2.500111,0.508348
+ parent: 1
+ - uid: 234
+ components:
+ - type: Transform
+ pos: 2.4706373,0.5187646
+ parent: 1
+- proto: OrganDubiousEgg
+ entities:
+ - uid: 12
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -0.16077393,-1.3948383
+ parent: 1
+ - uid: 254
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -0.16077393,-1.3948383
+ parent: 1
+ - uid: 268
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.16735107,-1.5823383
+ parent: 1
+- proto: OrganDubiousGravity
+ entities:
+ - uid: 256
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.40172607,-1.2385883
+ parent: 1
+ - uid: 257
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.40172607,-1.2385883
+ parent: 1
+ - uid: 267
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -0.12952393,-1.4729633
+ parent: 1
+- proto: OrganDubiousHealth
+ entities:
+ - uid: 262
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.18297607,-1.4260883
+ parent: 1
+ - uid: 263
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.18297607,-1.4260883
+ parent: 1
+ - uid: 264
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.13610107,-1.4260883
+ parent: 1
+- proto: OrganDubiousPlasma
+ entities:
+ - uid: 260
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.55797607,-1.3479633
+ parent: 1
+ - uid: 261
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.55797607,-1.3479633
+ parent: 1
+ - uid: 265
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.16735107,-1.4417133
+ parent: 1
+- proto: OrganDubiousSpider
+ entities:
+ - uid: 258
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.27672607,-1.5042133
+ parent: 1
+ - uid: 259
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.27672607,-1.5042133
+ parent: 1
+ - uid: 266
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.13610107,-1.4417133
+ parent: 1
+- proto: Poweredlight
+ entities:
+ - uid: 237
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,0.5
+ parent: 1
+ - uid: 238
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 0.5,-1.5
+ parent: 1
+ - uid: 239
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 0.5,4.5
parent: 1
- proto: ReinforcedPlasmaWindow
entities:
- - uid: 39
+ - uid: 26
components:
- type: Transform
rot: 1.5707963267948966 rad
- pos: 0.5,5.5
+ pos: 0.5,6.5
parent: 1
-- proto: SubstationWallBasic
+- proto: RightArmCyber
entities:
- - uid: 24
+ - uid: 220
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -3.5,1.5
+ pos: -0.6905076,-1.397902
parent: 1
- - uid: 80
+ - uid: 221
+ components:
+ - type: Transform
+ pos: -0.6905076,-1.397902
+ parent: 1
+- proto: RightFootCyber
+ entities:
+ - uid: 222
+ components:
+ - type: Transform
+ pos: -0.45092422,-1.5124855
+ parent: 1
+ - uid: 223
+ components:
+ - type: Transform
+ pos: -0.45092422,-1.5124855
+ parent: 1
+- proto: RightHandCyber
+ entities:
+ - uid: 224
+ components:
+ - type: Transform
+ pos: -0.5342576,-1.4395688
+ parent: 1
+ - uid: 225
+ components:
+ - type: Transform
+ pos: -0.5342576,-1.4395688
+ parent: 1
+- proto: RightLegCyber
+ entities:
+ - uid: 226
+ components:
+ - type: Transform
+ pos: -0.5655076,-1.5020688
+ parent: 1
+ - uid: 227
+ components:
+ - type: Transform
+ pos: -0.5655076,-1.5020688
+ parent: 1
+- proto: SMESBasic
+ entities:
+ - uid: 174
+ components:
+ - type: Transform
+ pos: -2.5,-3.5
+ parent: 1
+- proto: SubstationBasic
+ entities:
+ - uid: 93
+ components:
+ - type: Transform
+ pos: -3.5,-1.5
+ parent: 1
+ - uid: 94
+ components:
+ - type: Transform
+ pos: 4.5,-1.5
+ parent: 1
+- proto: TableAbductor
+ entities:
+ - uid: 9
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,1.5
+ pos: -0.5,-1.5
+ parent: 1
+ - uid: 10
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,2.5
+ parent: 1
+ - uid: 11
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -1.5,-0.5
+ parent: 1
+ - uid: 18
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -1.5,0.5
+ parent: 1
+ - uid: 51
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,3.5
+ parent: 1
+ - uid: 83
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 0.5,-1.5
+ parent: 1
+ - uid: 192
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,0.5
+ parent: 1
+ - uid: 193
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,-0.5
+ parent: 1
+ - uid: 194
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 1.5,-1.5
parent: 1
- proto: Thruster
entities:
- - uid: 28
+ - uid: 37
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: 2.5,-4.5
+ pos: -1.5,6.5
parent: 1
- uid: 40
components:
- type: Transform
- pos: -1.5,5.5
+ pos: 6.5,2.5
parent: 1
- - uid: 41
+ - uid: 79
components:
- type: Transform
- pos: 2.5,5.5
+ rot: 1.5707963267948966 rad
+ pos: -5.5,1.5
parent: 1
- - uid: 42
+ - uid: 80
components:
- type: Transform
- pos: 5.5,2.5
+ rot: 1.5707963267948966 rad
+ pos: -5.5,0.5
parent: 1
- - uid: 43
+ - uid: 81
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: -5.5,-0.5
+ parent: 1
+ - uid: 82
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: -5.5,-1.5
+ parent: 1
+ - uid: 87
+ components:
+ - type: Transform
+ pos: 2.5,6.5
+ parent: 1
+ - uid: 156
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 5.5,1.5
+ pos: 6.5,1.5
parent: 1
- - uid: 44
+ - uid: 157
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 5.5,0.5
+ pos: 6.5,-0.5
parent: 1
- - uid: 45
+ - uid: 158
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 5.5,-0.5
+ pos: 6.5,-1.5
parent: 1
- - uid: 46
+ - uid: 159
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 5.5,-1.5
+ pos: 6.5,0.5
parent: 1
- - uid: 47
+ - uid: 160
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 1.5,-4.5
+ pos: -1.5,-5.5
parent: 1
- - uid: 48
+ - uid: 161
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 0.5,-4.5
+ pos: -0.5,-5.5
parent: 1
- - uid: 49
+ - uid: 163
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: -0.5,-4.5
+ pos: 1.5,-5.5
+ parent: 1
+ - uid: 164
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 2.5,-5.5
+ parent: 1
+ - uid: 178
+ components:
+ - type: Transform
+ pos: -5.5,2.5
+ parent: 1
+ - uid: 252
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 0.5,-5.5
+ parent: 1
+- proto: TurboItemRecharger
+ entities:
+ - uid: 233
+ components:
+ - type: Transform
+ pos: -1.5,-0.5
+ parent: 1
+- proto: WallAbductor
+ entities:
+ - uid: 20
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,2.5
+ parent: 1
+ - uid: 29
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: -2.5,2.5
+ parent: 1
+ - uid: 30
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: -0.5,3.5
+ parent: 1
+ - uid: 35
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: -2.5,5.5
+ parent: 1
+ - uid: 36
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 2.5,5.5
+ parent: 1
+ - uid: 43
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -3.5,-3.5
+ parent: 1
+ - uid: 44
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,-3.5
+ parent: 1
+ - uid: 46
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 4.5,0.5
+ parent: 1
+ - uid: 48
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 2.5,-4.5
parent: 1
- uid: 50
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: -1.5,-4.5
- parent: 1
- - uid: 51
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: -4.5,-1.5
+ pos: -1.5,5.5
parent: 1
- uid: 52
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -4.5,-0.5
+ rot: -1.5707963267948966 rad
+ pos: 5.5,1.5
parent: 1
- uid: 53
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -4.5,0.5
+ rot: -1.5707963267948966 rad
+ pos: 5.5,-0.5
parent: 1
- uid: 54
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -4.5,1.5
+ rot: -1.5707963267948966 rad
+ pos: 5.5,0.5
parent: 1
- uid: 55
components:
- type: Transform
- pos: -4.5,2.5
+ rot: -1.5707963267948966 rad
+ pos: 5.5,-1.5
parent: 1
-- proto: WallAbductor
- entities:
- - uid: 8
+ - uid: 56
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -3.5,2.5
+ pos: 1.5,-4.5
parent: 1
- - uid: 9
+ - uid: 59
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: -3.5,1.5
+ rot: 3.141592653589793 rad
+ pos: -1.5,3.5
parent: 1
- - uid: 10
+ - uid: 60
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -3.5,0.5
+ pos: 0.5,-4.5
parent: 1
- - uid: 11
+ - uid: 61
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -3.5,-0.5
+ pos: 2.5,-2.5
parent: 1
- - uid: 12
+ - uid: 62
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -3.5,-1.5
+ pos: 1.5,-2.5
parent: 1
- - uid: 13
+ - uid: 63
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,2.5
+ pos: 0.5,-2.5
parent: 1
- - uid: 14
+ - uid: 64
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,1.5
+ pos: -0.5,-2.5
parent: 1
- - uid: 15
+ - uid: 65
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,0.5
+ pos: -1.5,-2.5
parent: 1
- - uid: 16
+ - uid: 66
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,-0.5
+ pos: -2.5,-0.5
parent: 1
- - uid: 17
+ - uid: 67
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,-1.5
+ pos: -2.5,0.5
parent: 1
- - uid: 18
+ - uid: 68
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 2.5,-3.5
+ pos: -2.5,1.5
parent: 1
- - uid: 19
+ - uid: 69
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 1.5,-3.5
+ pos: -2.5,-1.5
parent: 1
- - uid: 20
+ - uid: 70
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 0.5,-3.5
+ pos: 3.5,0.5
parent: 1
- - uid: 21
+ - uid: 71
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -0.5,-3.5
+ pos: 3.5,-0.5
parent: 1
- - uid: 22
+ - uid: 72
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -1.5,-3.5
+ pos: 3.5,-1.5
parent: 1
- - uid: 35
+ - uid: 73
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: -1.5,4.5
+ rot: -1.5707963267948966 rad
+ pos: -0.5,-4.5
parent: 1
- - uid: 36
+ - uid: 76
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: 2.5,4.5
+ rot: -1.5707963267948966 rad
+ pos: -1.5,-4.5
parent: 1
- - uid: 57
+ - uid: 77
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: -2.5,-2.5
+ rot: 3.141592653589793 rad
+ pos: -1.5,2.5
parent: 1
- - uid: 58
+ - uid: 78
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 3.5,-2.5
+ pos: -4.5,1.5
parent: 1
- - uid: 59
+ - uid: 84
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: -1.5,3.5
+ rot: -1.5707963267948966 rad
+ pos: -3.5,0.5
parent: 1
- - uid: 60
+ - uid: 121
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: 2.5,3.5
+ rot: -1.5707963267948966 rad
+ pos: -2.5,-4.5
parent: 1
- - uid: 61
+ - uid: 143
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 2.5,-2.5
+ pos: 3.5,-4.5
parent: 1
- - uid: 62
+ - uid: 145
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 1.5,-2.5
+ pos: -4.5,-2.5
parent: 1
- - uid: 63
+ - uid: 146
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 0.5,-2.5
+ pos: 5.5,-2.5
parent: 1
- - uid: 64
+ - uid: 147
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -0.5,-2.5
+ pos: -4.5,3.5
parent: 1
- - uid: 65
+ - uid: 150
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -1.5,-2.5
+ pos: -4.5,2.5
parent: 1
- - uid: 66
+ - uid: 151
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: -2.5,-0.5
+ rot: 3.141592653589793 rad
+ pos: 4.5,1.5
parent: 1
- - uid: 67
+ - uid: 152
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: -2.5,0.5
+ rot: 3.141592653589793 rad
+ pos: -3.5,1.5
parent: 1
- - uid: 68
+ - uid: 153
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -2.5,1.5
+ pos: -4.5,0.5
parent: 1
- - uid: 69
+ - uid: 154
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: -2.5,-1.5
+ pos: -4.5,-0.5
parent: 1
- - uid: 70
+ - uid: 155
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 3.5,0.5
+ pos: -4.5,-1.5
parent: 1
- - uid: 71
+ - uid: 169
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 3.5,-0.5
+ pos: 5.5,3.5
parent: 1
- - uid: 72
+ - uid: 170
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: 3.5,-1.5
+ rot: 3.141592653589793 rad
+ pos: 3.5,5.5
parent: 1
- - uid: 73
+ - uid: 179
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 3.5,1.5
+ pos: 4.5,4.5
parent: 1
- - uid: 76
+ - uid: 180
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 2.5,2.5
+ pos: -3.5,4.5
parent: 1
- - uid: 77
+ - uid: 184
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: -1.5,2.5
+ pos: 0.5,3.5
parent: 1
- - uid: 78
+ - uid: 185
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: -2.5,3.5
+ pos: 1.5,3.5
parent: 1
- - uid: 79
+ - uid: 243
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 3.5,3.5
+ pos: -1.5,4.5
parent: 1
- proto: WallAbductorDiagonal
entities:
- - uid: 5
+ - uid: 17
components:
- type: Transform
- rot: 3.141592653589793 rad
- pos: 3.5,-3.5
+ rot: 1.5707963267948966 rad
+ pos: 3.5,4.5
parent: 1
- - uid: 6
+ - uid: 27
components:
- type: Transform
- pos: -0.5,5.5
+ rot: -1.5707963267948966 rad
+ pos: 1.5,6.5
parent: 1
- - uid: 7
+ - uid: 31
components:
- type: Transform
- rot: -1.5707963267948966 rad
+ rot: 1.5707963267948966 rad
pos: 1.5,5.5
parent: 1
- - uid: 23
+ - uid: 33
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: 4.5,-2.5
+ pos: -0.5,5.5
parent: 1
- - uid: 25
+ - uid: 34
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -2.5,-3.5
+ pos: -0.5,6.5
parent: 1
- - uid: 26
+ - uid: 57
components:
- type: Transform
- rot: 1.5707963267948966 rad
- pos: -3.5,-2.5
+ rot: 3.141592653589793 rad
+ pos: 3.5,-2.5
parent: 1
- - uid: 29
+ - uid: 74
components:
- type: Transform
- pos: -3.5,3.5
+ pos: 2.5,-1.5
parent: 1
- - uid: 30
+ - uid: 75
components:
- type: Transform
- pos: -2.5,4.5
+ rot: -1.5707963267948966 rad
+ pos: -1.5,-1.5
parent: 1
- - uid: 31
+ - uid: 90
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: -2.5,-2.5
+ parent: 1
+ - uid: 97
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 4.5,3.5
+ pos: 4.5,5.5
parent: 1
- - uid: 32
+ - uid: 113
components:
- type: Transform
rot: -1.5707963267948966 rad
- pos: 3.5,4.5
+ pos: 2.5,3.5
parent: 1
- - uid: 37
+ - uid: 115
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 5.5,4.5
+ parent: 1
+ - uid: 116
components:
- type: Transform
rot: 3.141592653589793 rad
- pos: -0.5,4.5
+ pos: 2.5,2.5
parent: 1
- - uid: 38
+ - uid: 120
+ components:
+ - type: Transform
+ pos: 3.5,1.5
+ parent: 1
+ - uid: 165
components:
- type: Transform
rot: 1.5707963267948966 rad
- pos: 1.5,4.5
+ pos: -4.5,-3.5
parent: 1
- - uid: 74
+ - uid: 166
components:
- type: Transform
- pos: 2.5,-1.5
+ rot: 1.5707963267948966 rad
+ pos: -3.5,-4.5
parent: 1
- - uid: 75
+ - uid: 167
components:
- type: Transform
- rot: -1.5707963267948966 rad
- pos: -1.5,-1.5
+ rot: 3.141592653589793 rad
+ pos: 4.5,-4.5
+ parent: 1
+ - uid: 168
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 5.5,-3.5
+ parent: 1
+ - uid: 171
+ components:
+ - type: Transform
+ pos: -3.5,5.5
parent: 1
+ - uid: 172
+ components:
+ - type: Transform
+ pos: -4.5,4.5
+ parent: 1
+- proto: Wonderprod
+ entities:
+ - uid: 195
+ components:
+ - type: Transform
+ pos: 4.5119457,3.4933095
+ parent: 1
+ - type: Item
+ heldPrefix: stun
+ - type: Clothing
+ equippedPrefix: stun
+ - type: StaminaDamageOnHit
+ sound: !type:SoundPathSpecifier
+ path: /Audio/Weapons/Guns/Hits/taser_hit.ogg
+ damage: 225
+ - type: MeleeWeapon
+ attackRate: 0.5
+ damage:
+ types:
+ Shock: 0
+ soundNoDamage: !type:SoundCollectionSpecifier
+ collection: WeakHit
+ animation: WeaponArcThrust
+ wideAnimationRotation: -2.356194490192345 rad
+ soundSwing: !type:SoundPathSpecifier
+ params:
+ variation: 0.025
+ volume: -3
+ path: /Audio/Weapons/punchmiss.ogg
...
diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml
index 4732ab0dfe07..e7b8669d5aed 100644
--- a/Resources/Maps/centcomm.yml
+++ b/Resources/Maps/centcomm.yml
@@ -41698,7 +41698,7 @@ entities:
- type: Transform
pos: 26.613934,-11.4401045
parent: 1668
-- proto: WeaponTurretHostile
+- proto: WeaponTurretNanoTrasen
entities:
- uid: 6577
components:
diff --git a/Resources/Maps/omega.yml b/Resources/Maps/omega.yml
index 9cc2639e7543..cb7cba4d2685 100644
--- a/Resources/Maps/omega.yml
+++ b/Resources/Maps/omega.yml
@@ -3801,7 +3801,8 @@ entities:
6,-2:
0: 48059
7,-5:
- 0: 8209
+ 0: 8193
+ 3: 16
0,-8:
0: 46071
0,-9:
@@ -4195,11 +4196,11 @@ entities:
-10,8:
0: 2080
-12,4:
- 3: 546
- 4: 2184
+ 4: 546
+ 5: 2184
-13,4:
- 3: 2184
- 5: 546
+ 4: 2184
+ 6: 546
-12,5:
0: 1
1: 3856
@@ -4208,7 +4209,7 @@ entities:
-11,5:
1: 784
-11,4:
- 6: 546
+ 7: 546
-11,6:
0: 49152
-11,3:
@@ -4266,7 +4267,7 @@ entities:
0: 12288
-16,0:
1: 62227
- 3: 3276
+ 4: 3276
-17,0:
1: 8931
-16,1:
@@ -4276,22 +4277,22 @@ entities:
1: 43746
-16,2:
1: 13090
- 3: 34944
+ 4: 34944
-17,2:
1: 34986
-16,-1:
1: 57344
- 0: 4095
+ 0: 4092
-16,3:
1: 58594
-15,0:
- 3: 273
+ 4: 273
0: 52428
-15,1:
0: 239
1: 61440
-15,2:
- 3: 13104
+ 4: 13104
1: 34952
-15,3:
1: 16120
@@ -4308,28 +4309,38 @@ entities:
0: 61166
-14,4:
1: 12561
- 3: 2184
+ 4: 2184
+ -16,-4:
+ 0: 65520
+ -16,-5:
+ 1: 63624
+ 0: 85
+ -17,-4:
+ 0: 65520
-16,-3:
- 1: 4080
+ 0: 65535
-17,-3:
- 1: 4080
- -16,-2:
0: 65535
+ -16,-2:
+ 0: 56796
-17,-2:
- 0: 65535
+ 0: 65524
-17,-1:
- 0: 2303
+ 0: 4080
1: 12288
+ -15,-4:
+ 0: 65520
-15,-3:
- 0: 1296
+ 0: 65535
-15,-2:
0: 65535
-15,-1:
0: 1911
- -15,-4:
- 0: 16384
+ -15,-5:
+ 1: 4096
+ 0: 17
-14,-2:
- 0: 65520
+ 0: 65504
-14,-1:
1: 4080
-14,-4:
@@ -4354,9 +4365,6 @@ entities:
-17,-6:
1: 35064
0: 21765
- -16,-5:
- 0: 85
- 1: 63624
-17,-5:
1: 63624
0: 85
@@ -4368,9 +4376,6 @@ entities:
-15,-6:
0: 4481
1: 112
- -15,-5:
- 0: 17
- 1: 4096
-14,-8:
1: 61440
-14,-6:
@@ -4464,12 +4469,25 @@ entities:
1: 34952
1,-14:
1: 9010
+ -20,-2:
+ 1: 61128
+ -20,-1:
+ 1: 140
+ -19,-2:
+ 1: 65535
+ -19,-1:
+ 1: 4095
+ -19,-3:
+ 1: 61440
-18,-3:
- 1: 28384
+ 0: 61164
-18,-2:
- 1: 26214
+ 0: 26214
-18,-1:
- 1: 58982
+ 0: 3814
+ 1: 49152
+ -18,-4:
+ 0: 52416
-18,0:
1: 14
-17,3:
@@ -4520,6 +4538,21 @@ entities:
- 0
- 0
- 0
+ - volume: 2500
+ temperature: 293.15
+ moles:
+ - 21.554012
+ - 81.084145
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
+ - 0
- volume: 2500
temperature: 293.15
moles:
@@ -4746,9 +4779,9 @@ entities:
parent: 4812
- type: DeviceList
devices:
+ - 14169
- 13823
- 14140
- - 14141
- uid: 12171
components:
- type: Transform
@@ -7785,6 +7818,16 @@ entities:
- type: DeviceNetwork
deviceLists:
- 13677
+ - uid: 14169
+ components:
+ - type: Transform
+ pos: -61.5,-5.5
+ parent: 4812
+ - type: DeviceNetwork
+ configurators:
+ - invalid
+ deviceLists:
+ - 10755
- proto: AltarSpawner
entities:
- uid: 4008
@@ -19229,7 +19272,7 @@ entities:
- uid: 10482
components:
- type: Transform
- pos: -56.5,-6.5
+ pos: -57.5,-7.5
parent: 4812
- uid: 10485
components:
@@ -19401,6 +19444,11 @@ entities:
- type: Transform
pos: -22.5,8.5
parent: 4812
+ - uid: 10906
+ components:
+ - type: Transform
+ pos: -61.5,-3.5
+ parent: 4812
- uid: 11168
components:
- type: Transform
@@ -20761,6 +20809,16 @@ entities:
- type: Transform
pos: -55.5,-10.5
parent: 4812
+ - uid: 13773
+ components:
+ - type: Transform
+ pos: -61.5,-5.5
+ parent: 4812
+ - uid: 13792
+ components:
+ - type: Transform
+ pos: -61.5,-2.5
+ parent: 4812
- uid: 13862
components:
- type: Transform
@@ -20801,20 +20859,10 @@ entities:
- type: Transform
pos: -57.5,-5.5
parent: 4812
- - uid: 14090
- components:
- - type: Transform
- pos: -56.5,-11.5
- parent: 4812
- - uid: 14091
- components:
- - type: Transform
- pos: -56.5,-12.5
- parent: 4812
- uid: 14092
components:
- type: Transform
- pos: -56.5,-13.5
+ pos: -61.5,-6.5
parent: 4812
- uid: 14093
components:
@@ -21021,6 +21069,86 @@ entities:
- type: Transform
pos: -65.5,-6.5
parent: 4812
+ - uid: 14141
+ components:
+ - type: Transform
+ pos: -61.5,-7.5
+ parent: 4812
+ - uid: 14151
+ components:
+ - type: Transform
+ pos: -61.5,-8.5
+ parent: 4812
+ - uid: 14152
+ components:
+ - type: Transform
+ pos: -61.5,-9.5
+ parent: 4812
+ - uid: 14153
+ components:
+ - type: Transform
+ pos: -61.5,-4.5
+ parent: 4812
+ - uid: 14154
+ components:
+ - type: Transform
+ pos: -61.5,-10.5
+ parent: 4812
+ - uid: 14155
+ components:
+ - type: Transform
+ pos: -66.5,-8.5
+ parent: 4812
+ - uid: 14156
+ components:
+ - type: Transform
+ pos: -64.5,-8.5
+ parent: 4812
+ - uid: 14157
+ components:
+ - type: Transform
+ pos: -65.5,-8.5
+ parent: 4812
+ - uid: 14158
+ components:
+ - type: Transform
+ pos: -61.5,-11.5
+ parent: 4812
+ - uid: 14159
+ components:
+ - type: Transform
+ pos: -61.5,-12.5
+ parent: 4812
+ - uid: 14160
+ components:
+ - type: Transform
+ pos: -61.5,-13.5
+ parent: 4812
+ - uid: 14161
+ components:
+ - type: Transform
+ pos: -67.5,-8.5
+ parent: 4812
+ - uid: 14162
+ components:
+ - type: Transform
+ pos: -63.5,-8.5
+ parent: 4812
+ - uid: 14163
+ components:
+ - type: Transform
+ pos: -65.5,-13.5
+ parent: 4812
+ - uid: 14164
+ components:
+ - type: Transform
+ pos: -65.5,-11.5
+ parent: 4812
+ - uid: 14165
+ components:
+ - type: Transform
+ pos: -65.5,-12.5
+ parent: 4812
- proto: CableApcStack
entities:
- uid: 6196
@@ -24835,6 +24963,11 @@ entities:
- type: Transform
pos: -67.5,-2.5
parent: 4812
+ - uid: 14168
+ components:
+ - type: Transform
+ pos: -56.5,-8.5
+ parent: 4812
- proto: CableHVStack
entities:
- uid: 8587
@@ -28049,11 +28182,6 @@ entities:
- type: Transform
pos: -60.5,-11.5
parent: 4812
- - uid: 13895
- components:
- - type: Transform
- pos: -56.5,-7.5
- parent: 4812
- uid: 13904
components:
- type: Transform
@@ -28122,6 +28250,12 @@ entities:
- type: Transform
pos: 33.5,-38.5
parent: 4812
+ - uid: 14166
+ components:
+ - type: Transform
+ rot: 1.5707963267948966 rad
+ pos: -57.5,-6.5
+ parent: 4812
- proto: CandyBowl
entities:
- uid: 10667
@@ -33174,6 +33308,42 @@ entities:
- type: Transform
pos: -28.553808,-33.515636
parent: 4812
+- proto: ClothingBeltUtility
+ entities:
+ - uid: 14170
+ components:
+ - type: Transform
+ pos: 28.522884,-20.278097
+ parent: 4812
+ - type: Storage
+ storedItems:
+ 6309:
+ position: 2,0
+ _rotation: South
+ 14173:
+ position: 4,0
+ _rotation: South
+ 14171:
+ position: 0,0
+ _rotation: South
+ 14172:
+ position: 3,0
+ _rotation: South
+ - type: ContainerContainer
+ containers:
+ storagebase: !type:Container
+ showEnts: False
+ occludes: True
+ ents:
+ - 14171
+ - 6309
+ - 14172
+ - 14173
+ - type: UserInterface
+ actors:
+ enum.StorageUiKey.Key:
+ - invalid
+ - type: ActiveUserInterface
- proto: ClothingBeltUtilityFilled
entities:
- uid: 3371
@@ -41611,6 +41781,12 @@ entities:
- type: Transform
pos: 24.418009,-25.447226
parent: 4812
+ - uid: 14173
+ components:
+ - type: Transform
+ parent: 14170
+ - type: Physics
+ canCollide: False
- proto: GasFilter
entities:
- uid: 3737
@@ -53396,6 +53572,14 @@ entities:
- type: Transform
pos: -59.5,-6.5
parent: 4812
+ - uid: 14090
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: -52.5,-4.5
+ parent: 4812
+ - type: AtmosPipeColor
+ color: '#0055CCFF'
- proto: GasPipeTJunction
entities:
- uid: 373
@@ -55191,13 +55375,6 @@ entities:
- type: Transform
pos: -64.5,-2.5
parent: 4812
- - uid: 13773
- components:
- - type: Transform
- pos: -52.5,-4.5
- parent: 4812
- - type: AtmosPipeColor
- color: '#0055CCFF'
- uid: 13774
components:
- type: Transform
@@ -56644,17 +56821,7 @@ entities:
- type: DeviceNetwork
configurators:
- 14139
- deviceLists:
- - 10755
- - type: AtmosPipeColor
- color: '#0055CCFF'
- - uid: 14141
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: -52.5,-5.5
- parent: 4812
- - type: DeviceNetwork
+ - invalid
deviceLists:
- 10755
- type: AtmosPipeColor
@@ -57528,6 +57695,7 @@ entities:
- type: DeviceNetwork
configurators:
- 14139
+ - invalid
deviceLists:
- 10755
- type: AtmosPipeColor
@@ -62633,6 +62801,14 @@ entities:
- type: Transform
pos: -20.5,-7.5
parent: 4812
+- proto: JawsOfLife
+ entities:
+ - uid: 14171
+ components:
+ - type: Transform
+ parent: 14170
+ - type: Physics
+ canCollide: False
- proto: JetpackMini
entities:
- uid: 3412
@@ -63695,8 +63871,8 @@ entities:
immutable: False
temperature: 293.14957
moles:
- - 1.6033952
- - 6.031821
+ - 1.8742619
+ - 7.050795
- 0
- 0
- 0
@@ -64365,6 +64541,12 @@ entities:
'UID: 17066': 13823
'UID: 17067': 14140
linkModeActive: False
+ - uid: 14172
+ components:
+ - type: Transform
+ parent: 14170
+ - type: Physics
+ canCollide: False
- proto: NitrogenCanister
entities:
- uid: 4604
@@ -66047,8 +66229,9 @@ entities:
- uid: 6309
components:
- type: Transform
- pos: 28.456348,-20.243092
- parent: 4812
+ parent: 14170
+ - type: Physics
+ canCollide: False
- proto: Poweredlight
entities:
- uid: 742
@@ -73959,11 +74142,6 @@ entities:
- type: Transform
pos: -47.5,-11.5
parent: 4812
- - uid: 10906
- components:
- - type: Transform
- pos: -56.5,-7.5
- parent: 4812
- uid: 11392
components:
- type: MetaData
@@ -73971,6 +74149,11 @@ entities:
- type: Transform
pos: 33.5,-39.5
parent: 4812
+ - uid: 14167
+ components:
+ - type: Transform
+ pos: -56.5,-6.5
+ parent: 4812
- proto: SoapDeluxe
entities:
- uid: 2494
@@ -75348,7 +75531,7 @@ entities:
- type: Transform
pos: 30.5,-39.5
parent: 4812
- - uid: 13792
+ - uid: 13895
components:
- type: Transform
pos: -56.5,-8.5
@@ -89485,6 +89668,12 @@ entities:
rot: 1.5707963267948966 rad
pos: 4.5,6.5
parent: 4812
+ - uid: 14091
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 9.5,-39.5
+ parent: 4812
- proto: WindowReinforcedDirectional
entities:
- uid: 2477
diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml
index 9a22c0077636..7a364f478fcd 100644
--- a/Resources/Maps/packed.yml
+++ b/Resources/Maps/packed.yml
@@ -228,7 +228,7 @@ entities:
version: 6
3,-3:
ind: 3,-3
- tiles: TQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ tiles: TQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAewAAAAAAewAAAAAAewAAAAAAHQAAAAAATQAAAAAATQAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAWwAAAAAAWwAAAAAAWwAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAATQAAAAAATQAAAAAATQAAAAAAewAAAAAAewAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAegAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAewAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
version: 6
6,-2:
ind: 6,-2
@@ -891,12 +891,12 @@ entities:
1: 2040
0: 45056
12,-10:
- 0: 35775
- 1: 28672
+ 0: 43967
+ 1: 20480
12,-9:
- 1: 7
+ 0: 11
4: 1792
- 0: 8
+ 1: 4
4,7:
0: 61152
4,8:
@@ -1150,11 +1150,12 @@ entities:
0: 65524
16,-1:
0: 12047
+ 13,-8:
+ 0: 16
+ 1: 8738
13,-6:
0: 28672
1: 34
- 13,-8:
- 1: 8738
13,-7:
1: 8738
13,-9:
@@ -1398,7 +1399,7 @@ entities:
18,-7:
1: 63232
18,-9:
- 1: 17479
+ 1: 17487
19,-7:
1: 63488
20,-7:
@@ -1749,7 +1750,7 @@ entities:
15,-12:
0: 65535
15,-11:
- 0: 62207
+ 0: 63487
15,-10:
0: 61695
15,-9:
@@ -1759,7 +1760,7 @@ entities:
0: 61440
1: 240
16,-12:
- 0: 30583
+ 0: 30173
16,-11:
0: 26231
16,-10:
@@ -1847,8 +1848,8 @@ entities:
0: 4369
1: 8
16,-13:
- 1: 240
- 0: 28672
+ 1: 3838
+ 0: 53248
-7,-6:
0: 63728
-7,-5:
@@ -1929,7 +1930,8 @@ entities:
24,9:
1: 2
17,-12:
- 1: 61713
+ 0: 17
+ 1: 65518
17,-11:
1: 65535
17,-10:
@@ -1937,15 +1939,28 @@ entities:
17,-9:
1: 287
17,-13:
- 1: 4592
+ 0: 4096
+ 1: 61431
18,-12:
- 1: 29764
+ 1: 63351
18,-11:
- 1: 30583
+ 1: 65535
18,-10:
- 1: 30583
+ 1: 65535
18,-13:
- 1: 17520
+ 1: 30576
+ 19,-12:
+ 1: 4096
+ 19,-11:
+ 1: 4369
+ 19,-10:
+ 1: 4369
+ 19,-9:
+ 1: 1
+ 16,-14:
+ 1: 57344
+ 17,-14:
+ 1: 4096
uniqueMixes:
- volume: 2500
temperature: 293.15
@@ -6565,6 +6580,23 @@ entities:
- type: Broadphase
- type: OccluderTree
- type: LoadedMap
+ - uid: 15257
+ components:
+ - type: MetaData
+ name: solution - food
+ - type: Transform
+ parent: 15256
+ - type: Solution
+ solution:
+ maxVol: 1
+ name: food
+ reagents:
+ - data: []
+ ReagentId: Fiber
+ Quantity: 1
+ - type: ContainedSolution
+ containerName: food
+ container: 15256
- proto: AccordionInstrument
entities:
- uid: 13494
@@ -7716,7 +7748,7 @@ entities:
pos: 47.5,-39.5
parent: 2
- type: Door
- secondsUntilStateChange: -1278.8749
+ secondsUntilStateChange: -5712.0527
state: Opening
- type: DeviceLinkSource
lastSignals:
@@ -8133,6 +8165,28 @@ entities:
parent: 2
- type: DeviceLinkSink
invokeCounter: 1
+ - uid: 15655
+ components:
+ - type: Transform
+ pos: 48.5,-35.5
+ parent: 2
+ - type: DeviceLinkSink
+ invokeCounter: 1
+ - type: DeviceLinkSource
+ linkedPorts:
+ 15702:
+ - DoorStatus: DoorBolt
+ - uid: 15702
+ components:
+ - type: Transform
+ pos: 49.5,-36.5
+ parent: 2
+ - type: DeviceLinkSink
+ invokeCounter: 1
+ - type: DeviceLinkSource
+ linkedPorts:
+ 15655:
+ - DoorStatus: DoorBolt
- proto: AirlockExternalEngineeringLocked
entities:
- uid: 173
@@ -10831,6 +10885,14 @@ entities:
- type: Transform
pos: 66.5,-49.5
parent: 2
+- proto: AtmosDeviceFanTiny
+ entities:
+ - uid: 15703
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 48.5,-35.5
+ parent: 2
- proto: AtmosFixBlockerMarker
entities:
- uid: 1457
@@ -13401,6 +13463,11 @@ entities:
- type: Transform
pos: 0.5,-35.5
parent: 2
+ - uid: 4903
+ components:
+ - type: Transform
+ pos: 51.5,-38.5
+ parent: 2
- uid: 4929
components:
- type: Transform
@@ -21736,6 +21803,56 @@ entities:
- type: Transform
pos: 41.5,-12.5
parent: 2
+ - uid: 15088
+ components:
+ - type: Transform
+ pos: 55.5,-45.5
+ parent: 2
+ - uid: 15210
+ components:
+ - type: Transform
+ pos: 51.5,-37.5
+ parent: 2
+ - uid: 15243
+ components:
+ - type: Transform
+ pos: 60.5,-45.5
+ parent: 2
+ - uid: 15244
+ components:
+ - type: Transform
+ pos: 59.5,-45.5
+ parent: 2
+ - uid: 15245
+ components:
+ - type: Transform
+ pos: 57.5,-45.5
+ parent: 2
+ - uid: 15246
+ components:
+ - type: Transform
+ pos: 58.5,-45.5
+ parent: 2
+ - uid: 15248
+ components:
+ - type: Transform
+ pos: 56.5,-45.5
+ parent: 2
+ - uid: 15249
+ components:
+ - type: Transform
+ pos: 54.5,-45.5
+ parent: 2
+ - uid: 15254
+ components:
+ - type: Transform
+ pos: 51.5,-40.5
+ parent: 2
+ - uid: 15258
+ components:
+ - type: Transform
+ pos: 51.5,-39.5
+ parent: 2
- uid: 15268
components:
- type: Transform
@@ -21986,6 +22103,11 @@ entities:
- type: Transform
pos: 53.5,-42.5
parent: 2
+ - uid: 15462
+ components:
+ - type: Transform
+ pos: 53.5,-45.5
+ parent: 2
- uid: 15689
components:
- type: Transform
@@ -27312,50 +27434,55 @@ entities:
- type: Transform
pos: 36.5,-39.5
parent: 2
- - uid: 15250
+ - uid: 15231
components:
- type: Transform
- pos: 56.5,-36.5
+ pos: 53.5,-35.5
parent: 2
- - uid: 15251
+ - uid: 15232
components:
- type: Transform
- pos: 55.5,-36.5
+ pos: 52.5,-35.5
parent: 2
- - uid: 15252
+ - uid: 15233
components:
- type: Transform
- pos: 53.5,-36.5
+ pos: 51.5,-35.5
parent: 2
- - uid: 15253
+ - uid: 15237
components:
- type: Transform
- pos: 54.5,-36.5
+ pos: 65.5,-44.5
parent: 2
- - uid: 15254
+ - uid: 15238
components:
- type: Transform
- pos: 52.5,-35.5
+ pos: 65.5,-45.5
parent: 2
- - uid: 15255
+ - uid: 15250
components:
- type: Transform
- pos: 52.5,-36.5
+ pos: 56.5,-36.5
parent: 2
- - uid: 15256
+ - uid: 15251
components:
- type: Transform
- pos: 51.5,-35.5
+ pos: 55.5,-36.5
parent: 2
- - uid: 15257
+ - uid: 15252
components:
- type: Transform
- pos: 53.5,-35.5
+ pos: 53.5,-36.5
parent: 2
- - uid: 15654
+ - uid: 15253
components:
- type: Transform
- pos: 51.5,-36.5
+ pos: 54.5,-36.5
+ parent: 2
+ - uid: 15259
+ components:
+ - type: Transform
+ pos: 65.5,-43.5
parent: 2
- proto: CableHVStack
entities:
@@ -33137,141 +33264,56 @@ entities:
- type: Transform
pos: 61.5,-44.5
parent: 2
- - uid: 15228
- components:
- - type: Transform
- pos: 61.5,-43.5
- parent: 2
- - uid: 15229
- components:
- - type: Transform
- pos: 61.5,-42.5
- parent: 2
- - uid: 15230
- components:
- - type: Transform
- pos: 60.5,-42.5
- parent: 2
- - uid: 15231
- components:
- - type: Transform
- pos: 61.5,-42.5
- parent: 2
- - uid: 15232
- components:
- - type: Transform
- pos: 62.5,-42.5
- parent: 2
- - uid: 15233
- components:
- - type: Transform
- pos: 63.5,-42.5
- parent: 2
- uid: 15234
components:
- type: Transform
- pos: 64.5,-42.5
+ pos: 51.5,-35.5
parent: 2
- uid: 15235
components:
- type: Transform
- pos: 65.5,-42.5
+ pos: 52.5,-36.5
parent: 2
- uid: 15236
components:
- type: Transform
- pos: 65.5,-41.5
- parent: 2
- - uid: 15237
- components:
- - type: Transform
- pos: 65.5,-39.5
- parent: 2
- - uid: 15238
- components:
- - type: Transform
- pos: 65.5,-38.5
+ pos: 55.5,-36.5
parent: 2
- uid: 15239
components:
- type: Transform
- pos: 65.5,-37.5
+ pos: 51.5,-36.5
parent: 2
- uid: 15240
components:
- type: Transform
- pos: 65.5,-36.5
+ pos: 65.5,-45.5
parent: 2
- uid: 15241
components:
- type: Transform
- pos: 65.5,-40.5
+ pos: 64.5,-44.5
parent: 2
- uid: 15242
components:
- type: Transform
- pos: 64.5,-36.5
- parent: 2
- - uid: 15243
- components:
- - type: Transform
- pos: 62.5,-36.5
- parent: 2
- - uid: 15244
- components:
- - type: Transform
- pos: 61.5,-36.5
- parent: 2
- - uid: 15245
- components:
- - type: Transform
- pos: 60.5,-36.5
- parent: 2
- - uid: 15246
- components:
- - type: Transform
- pos: 59.5,-36.5
+ pos: 63.5,-44.5
parent: 2
- uid: 15247
components:
- type: Transform
- pos: 58.5,-36.5
- parent: 2
- - uid: 15248
- components:
- - type: Transform
- pos: 57.5,-36.5
- parent: 2
- - uid: 15249
- components:
- - type: Transform
- pos: 63.5,-36.5
+ pos: 65.5,-44.5
parent: 2
- uid: 15260
- components:
- - type: Transform
- pos: 56.5,-36.5
- parent: 2
- - uid: 15261
- components:
- - type: Transform
- pos: 55.5,-36.5
- parent: 2
- - uid: 15262
components:
- type: Transform
pos: 54.5,-36.5
parent: 2
- - uid: 15263
+ - uid: 15261
components:
- type: Transform
pos: 53.5,-36.5
parent: 2
- - uid: 15264
- components:
- - type: Transform
- pos: 53.5,-35.5
- parent: 2
- uid: 15265
components:
- type: Transform
@@ -33325,6 +33367,12 @@ entities:
- type: Transform
pos: 13.5,36.5
parent: 2
+ - uid: 4448
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 53.5,-36.5
+ parent: 2
- uid: 4872
components:
- type: Transform
@@ -33360,12 +33408,6 @@ entities:
rot: 3.141592653589793 rad
pos: 79.5,33.5
parent: 2
- - uid: 15655
- components:
- - type: Transform
- rot: 3.141592653589793 rad
- pos: 51.5,-36.5
- parent: 2
- proto: CandyBowl
entities:
- uid: 13078
@@ -36993,20 +37035,23 @@ entities:
- type: Transform
pos: 57.5,-40.5
parent: 2
- - uid: 15210
+ - uid: 15211
components:
- type: Transform
- pos: 65.5,-38.5
+ rot: 3.141592653589793 rad
+ pos: 65.5,-40.5
parent: 2
- - uid: 15211
+ - uid: 15212
components:
- type: Transform
+ rot: 3.141592653589793 rad
pos: 65.5,-39.5
parent: 2
- - uid: 15212
+ - uid: 15229
components:
- type: Transform
- pos: 65.5,-40.5
+ rot: 3.141592653589793 rad
+ pos: 65.5,-38.5
parent: 2
- uid: 15392
components:
@@ -38462,15 +38507,15 @@ entities:
- type: Transform
pos: 54.5,25.5
parent: 2
- - uid: 15088
+ - uid: 15255
components:
- type: Transform
- pos: 48.5,-37.5
+ pos: 49.5,-40.5
parent: 2
- - uid: 15089
+ - uid: 15263
components:
- type: Transform
- pos: 49.5,-37.5
+ pos: 48.5,-40.5
parent: 2
- proto: ClosetSteelBase
entities:
@@ -38607,6 +38652,35 @@ entities:
- type: Transform
pos: 72.5,-9.5
parent: 2
+ - uid: 15704
+ components:
+ - type: Transform
+ pos: 63.526283,8.736849
+ parent: 2
+ - type: Storage
+ storedItems:
+ 15705:
+ position: 0,0
+ _rotation: South
+ 10671:
+ position: 2,0
+ _rotation: South
+ 15706:
+ position: 3,0
+ _rotation: South
+ 15707:
+ position: 4,0
+ _rotation: South
+ - type: ContainerContainer
+ containers:
+ storagebase: !type:Container
+ showEnts: False
+ occludes: True
+ ents:
+ - 15705
+ - 10671
+ - 15706
+ - 15707
- proto: ClothingBeltUtilityEngineering
entities:
- uid: 602
@@ -47401,6 +47475,14 @@ entities:
- type: Transform
pos: 33.59406,-4.5126047
parent: 2
+- proto: GasAnalyzer
+ entities:
+ - uid: 15707
+ components:
+ - type: Transform
+ parent: 15704
+ - type: Physics
+ canCollide: False
- proto: GasFilterFlipped
entities:
- uid: 3290
@@ -48830,6 +48912,18 @@ entities:
parent: 2
- type: AtmosPipeColor
color: '#FF1212FF'
+ - uid: 15264
+ components:
+ - type: Transform
+ rot: -1.5707963267948966 rad
+ pos: 70.5,-41.5
+ parent: 2
+ - uid: 15451
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 68.5,-41.5
+ parent: 2
- uid: 15456
components:
- type: Transform
@@ -60503,12 +60597,6 @@ entities:
- type: Transform
pos: 60.5,-36.5
parent: 2
- - uid: 15451
- components:
- - type: Transform
- rot: 1.5707963267948966 rad
- pos: 68.5,-41.5
- parent: 2
- uid: 15452
components:
- type: Transform
@@ -60557,12 +60645,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 70.5,-40.5
parent: 2
- - uid: 15462
- components:
- - type: Transform
- rot: -1.5707963267948966 rad
- pos: 70.5,-41.5
- parent: 2
- uid: 15562
components:
- type: Transform
@@ -68958,6 +69040,14 @@ entities:
- type: Transform
pos: 4.5,-6.5
parent: 2
+- proto: JawsOfLife
+ entities:
+ - uid: 15705
+ components:
+ - type: Transform
+ parent: 15704
+ - type: Physics
+ canCollide: False
- proto: JetpackMiniFilled
entities:
- uid: 10308
@@ -70044,6 +70134,12 @@ entities:
- type: Transform
pos: 68.500786,-50.6057
parent: 2
+ - uid: 15706
+ components:
+ - type: Transform
+ parent: 15704
+ - type: Physics
+ canCollide: False
- proto: NetworkConfigurator
entities:
- uid: 909
@@ -70311,6 +70407,58 @@ entities:
- type: Transform
pos: 51.50651,4.646573
parent: 2
+ - uid: 15256
+ components:
+ - type: MetaData
+ desc: Notes by some old atmosian
+ name: Atmos notes
+ - type: Transform
+ pos: 47.406284,-21.536516
+ parent: 2
+ - type: Paper
+ content: "Hello future atmosians.\nI'm writing some tips in here for anyone to find, so enjoy reading them.\nTip 1: If the station has gas miners you don't need to filter said gas from waste loop, it could raise the temperature of that gas and overprresurize the tank with said gas stoping the waste loop. I recommend that you don't put gasses from waste loop into atmos tanks if said atmos tank has a miner. Especially if SM is working and generating a large amount of oxygen.\nTip 2: If you want to store more gas in a room or canister then cool it down, this is a common sense but did you know that you can cool down a plasma inside a canister and then you get more plasma in a tank which is used for radiation collectors? They don't need reffiling that often, cool tip, right?\nTip 3: If you are are struggling with not having enough plasma for your experiments then try setting up a simple SM, you only need one emitter turned on and it will start to produce a ton of oxygen and some amount of plasma but don't forget about tip 1, if the station doesn't need too much oxygen the cooling loop for your SM could stop flowing and you are looking at future cool firework (and half of engineering gone with that explosion) \n\nwell I hope you like my 3 tips, have fun with atmos. "
+ - type: SolutionContainerManager
+ solutions: null
+ containers:
+ - food
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape: !type:PolygonShape
+ radius: 0.01
+ vertices:
+ - -0.25,-0.25
+ - 0.25,-0.25
+ - 0.25,0.25
+ - -0.25,0.25
+ mask:
+ - Impassable
+ - HighImpassable
+ layer: []
+ density: 20
+ hard: True
+ restitution: 0.3
+ friction: 0.2
+ flammable:
+ shape: !type:PhysShapeCircle
+ radius: 0.35
+ position: 0,0
+ mask:
+ - TableLayer
+ - HighImpassable
+ - LowImpassable
+ - BulletImpassable
+ - InteractImpassable
+ - Opaque
+ layer: []
+ density: 1
+ hard: False
+ restitution: 0
+ friction: 0.4
+ - type: ContainerContainer
+ containers:
+ solution@food: !type:ContainerSlot
+ ent: 15257
- proto: PaperBin10
entities:
- uid: 1483
@@ -70325,6 +70473,37 @@ entities:
- type: Transform
pos: 43.5,19.5
parent: 2
+- proto: PaperOffice
+ entities:
+ - uid: 15654
+ components:
+ - type: MetaData
+ name: paper
+ - type: Transform
+ pos: 47.093784,-21.520891
+ parent: 2
+ - type: Paper
+ content: >-
+ Tip 1: Gas Miner and Waste Loop Interaction
+
+ Avoid filtering gas from waste loop: If a station has gas miners, filtering gas from the waste loop can lead to overheating and overpressurization, potentially disrupting the waste loop.
+
+ Don't store gas in atmos tanks with miners: Storing gas in atmos tanks that have miners, especially when SM is active, can lead to similar issues.
+
+
+ Tip 2: Cooling Gas for Storage
+
+ Cool gas to increase storage capacity: Cooling gas, including plasma, can increase the amount of gas that can be stored in a given volume, whether it's a room or a canister.
+
+ Cool plasma for radiation collectors: Cooling plasma can increase the amount of plasma stored in canisters used for radiation collectors, reducing the need for frequent refilling.
+
+
+ Tip 3: Plasma Generation with SM
+
+ Use SM for plasma generation: A simple SM setup with one emitter can produce a significant amount of oxygen and plasma.
+
+
+ A edit of the notes by some atmosian, I made it cleaner and esier to read
- proto: ParticleAcceleratorControlBoxUnfinished
entities:
- uid: 4800
@@ -71560,8 +71739,9 @@ entities:
- uid: 10671
components:
- type: Transform
- pos: 63.50305,8.626264
- parent: 2
+ parent: 15704
+ - type: Physics
+ canCollide: False
- proto: Poweredlight
entities:
- uid: 97
@@ -79619,6 +79799,11 @@ entities:
- type: Transform
pos: 80.5,28.5
parent: 2
+ - uid: 15262
+ components:
+ - type: Transform
+ pos: 48.5,-36.5
+ parent: 2
- proto: SignSurgery
entities:
- uid: 11202
@@ -79884,10 +80069,10 @@ entities:
- type: Transform
pos: 37.5,33.5
parent: 2
- - uid: 15258
+ - uid: 15089
components:
- type: Transform
- pos: 51.5,-35.5
+ pos: 53.5,-35.5
parent: 2
- proto: SmokingPipeFilledTobacco
entities:
@@ -81515,10 +81700,18 @@ entities:
- type: Transform
pos: 80.5,34.5
parent: 2
- - uid: 15259
+ - uid: 15228
components:
- type: Transform
- pos: 53.5,-35.5
+ pos: 51.5,-35.5
+ parent: 2
+- proto: SubstationWallBasic
+ entities:
+ - uid: 15230
+ components:
+ - type: Transform
+ rot: 3.141592653589793 rad
+ pos: 65.5,-45.5
parent: 2
- proto: SuitStorageCaptain
entities:
@@ -90392,11 +90585,6 @@ entities:
- type: Transform
pos: 42.5,-36.5
parent: 2
- - uid: 4448
- components:
- - type: Transform
- pos: 48.5,-35.5
- parent: 2
- uid: 4450
components:
- type: Transform
@@ -90512,11 +90700,6 @@ entities:
- type: Transform
pos: 4.5,15.5
parent: 2
- - uid: 4903
- components:
- - type: Transform
- pos: 49.5,-36.5
- parent: 2
- uid: 5194
components:
- type: Transform
diff --git a/Resources/Prototypes/Entities/Objects/Misc/eggspider.yml b/Resources/Prototypes/Entities/Objects/Misc/eggspider.yml
index c2357ed3c8ca..d5089b18b5bd 100644
--- a/Resources/Prototypes/Entities/Objects/Misc/eggspider.yml
+++ b/Resources/Prototypes/Entities/Objects/Misc/eggspider.yml
@@ -21,3 +21,19 @@
color: "#4faffb"
- type: StaticPrice
price: 500
+
+- type: entity
+ parent: BaseItem
+ id: EggSpiderFertilized
+ name: egg spider
+ description: Is it a gemstone? Is it an egg? It looks expensive.
+ components:
+ - type: Timer
+ - type: TimedSpawner
+ prototypes:
+ - MobGiantSpider
+ intervalSeconds: 60
+ minimumEntitiesSpawned: 1
+ maximumEntitiesSpawned: 1
+ - type: TimedDespawn
+ lifetime: 61
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml
index 6d80be9115ef..cf20a40b2d15 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml
@@ -249,7 +249,7 @@
- type: BoneSetter
- type: SurgeryTool
startSound:
- path: /Audio/Effects/hit_kick.ogg
+ path: /Audio/_Starlight/Medical/Surgery/bone_setter.ogg
- type: entity
name: advanced bone setter
@@ -269,7 +269,7 @@
- type: SurgeryTool
speed: 0.6
startSound:
- path: /Audio/Effects/hit_kick.ogg
+ path: /Audio/_Starlight/Medical/Surgery/bone_setter.ogg
# Saws
@@ -295,7 +295,7 @@
- Sawing
- type: SurgeryTool
startSound:
- path: /Audio/_Starlight/Medical/Surgery/saw.ogg
+ path: /Audio/_Starlight/Medical/Surgery/bone_saw.ogg
- type: BoneSaw
# No melee for regular saw because have you ever seen someone use a band saw as a weapon? It's dumb.
@@ -322,7 +322,7 @@
- type: SurgeryTool
speed: 0.8
startSound:
- path: /Audio/_Starlight/Medical/Surgery/saw.ogg
+ path: /Audio/_Starlight/Medical/Surgery/bone_saw.ogg
- type: BoneSaw
- type: entity
diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml
index 050cf798acd5..cfa04b6032d8 100644
--- a/Resources/Prototypes/GameRules/events.yml
+++ b/Resources/Prototypes/GameRules/events.yml
@@ -36,7 +36,8 @@
- id: SleeperAgents
- id: ZombieOutbreak
- id: LoneOpsSpawn
-
+ - id: LoneAbductorSpawn # Starlight
+
- type: entity
id: BaseStationEvent
parent: BaseGameRule
diff --git a/Resources/Prototypes/_StarLight/Actions/abductor.yml b/Resources/Prototypes/_StarLight/Actions/abductor.yml
index d50025ede286..383da1f8eea3 100644
--- a/Resources/Prototypes/_StarLight/Actions/abductor.yml
+++ b/Resources/Prototypes/_StarLight/Actions/abductor.yml
@@ -18,6 +18,7 @@
description: send yourself.
components:
- type: WorldTargetAction
+ useDelay: 10
priority: -19
range: -1
checkCanAccess: false
diff --git a/Resources/Prototypes/_StarLight/Body/Organs/dubious.yml b/Resources/Prototypes/_StarLight/Body/Organs/dubious.yml
new file mode 100644
index 000000000000..bc179e315943
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Body/Organs/dubious.yml
@@ -0,0 +1,59 @@
+- type: entity
+ id: OrganDubiousHealth
+ parent: [OrganHumanHeart]
+ name: gland
+ description: Suspicious alien gland, replaces the heart.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: health
+ - type: AbductorOrgan
+ organ: Health
+
+- type: entity
+ id: OrganDubiousPlasma
+ parent: [OrganHumanHeart]
+ name: gland
+ description: Suspicious alien gland, replaces the heart.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: gland
+ - type: AbductorOrgan
+ organ: Plasma
+
+- type: entity
+ id: OrganDubiousGravity
+ parent: [OrganHumanHeart]
+ name: gland
+ description: Suspicious alien gland, replaces the heart.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: slime
+ - type: AbductorOrgan
+ organ: Gravity
+
+- type: entity
+ id: OrganDubiousEgg
+ parent: [OrganHumanHeart]
+ name: gland
+ description: Suspicious alien gland, replaces the heart.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: egg
+ - type: AbductorOrgan
+ organ: Egg
+
+- type: entity
+ id: OrganDubiousSpider
+ parent: [OrganHumanHeart]
+ name: gland
+ description: Suspicious alien gland, replaces the heart.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: spider
+ - type: AbductorOrgan
+ organ: Spider
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Entities/Mobs/Player/abductor.yml b/Resources/Prototypes/_StarLight/Entities/Mobs/Player/abductor.yml
index ff7a9d9d273e..adc83ede5af7 100644
--- a/Resources/Prototypes/_StarLight/Entities/Mobs/Player/abductor.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Mobs/Player/abductor.yml
@@ -1,24 +1,73 @@
- type: entity
- name: abductor scientist
+ name: lone abductor
parent: BaseMobAbductor
id: MobAbductor
components:
+ - type: Abductor
+ - type: Tag
+ tags:
+ - Abductor
+ - AbductorScientist
+ - CanPilot
+
+- type: entity
+ name: lone abductor
+ parent: MobAbductor
+ id: MobLoneAbductor
+ components:
+ - type: AntagObjectives
+ objectives:
+ - StealResearchObjective
+ - type: GhostRole
+ name: abductors-ghost-role-name
+ description: abductors-ghost-role-desc
+ rules: abductors-ghost-role-rules
+ raffle:
+ settings: default
- type: AbductorScientist
- type: ActionGrant
actions:
- ActionReturnToShip
- type: Loadout
prototypes:
- - AbductorScientistGear
- - type: Tag
- tags:
- - Abductor
+ - LoneAbductorGear
- type: startingGear
- id: AbductorScientistGear
+ id: LoneAbductorGear
equipment:
+ head: ClothingHeadHelmetAbductor
jumpsuit: ClothingUniformJumpsuitAbductor
gloves: ClothingHandsGlovesCombat
shoes: ClothingShoesBootsCombat
+ pocket1: AbductorGizmo
inhand:
- - BriefcaseBrownFilled
\ No newline at end of file
+ - Wonderprod
+
+- type: entity
+ name: lone abductor spawner
+ id: SpawnPointLoneAbductor
+ parent: MarkerBase
+ components:
+ - type: SpawnPoint
+ - type: Sprite
+ sprite: Markers/jobs.rsi
+ layers:
+ - state: green
+ - sprite: Structures/Wallmounts/signs.rsi
+ state: radiation
+
+- type: entity
+ categories: [ HideSpawnMenu, Spawner ]
+ parent: BaseAntagSpawner
+ id: LoneAbductorSpawner
+ components:
+ - type: GhostRole
+ name: abductors-ghost-role-name
+ description: abductors-ghost-role-desc
+ rules: abductors-ghost-role-rules
+ - type: Sprite
+ sprite: Markers/jobs.rsi
+ layers:
+ - state: green
+ - sprite: Structures/Wallmounts/signs.rsi
+ state: radiation
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Entities/Mobs/Species/abductor.yml b/Resources/Prototypes/_StarLight/Entities/Mobs/Species/abductor.yml
index dd526fd313a7..f1bdb59ddee9 100644
--- a/Resources/Prototypes/_StarLight/Entities/Mobs/Species/abductor.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Mobs/Species/abductor.yml
@@ -3,7 +3,6 @@
name: Urist McAbductor
parent:
- MobBloodstream
- - MobAtmosStandard
- MobFlammable
- BaseMobSpecies
id: BaseMobAbductor
@@ -24,6 +23,11 @@
alternateState: Standing
- type: Damageable
damageContainer: Biological
+ - type: Tag
+ tags:
+ - CanPilot
+ - FootstepSound
+ - DoorBumpOpener
- type: DamageVisuals
damageOverlayGroups:
Brute:
@@ -47,4 +51,4 @@
categories: [ HideSpawnMenu ]
components:
- type: HumanoidAppearance
- species: Abductor
\ No newline at end of file
+ species: Abductor
diff --git a/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/wonderprod.yml b/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/wonderprod.yml
index 46bfa2cf15fa..59b4b7e096a1 100644
--- a/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/wonderprod.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/wonderprod.yml
@@ -1,12 +1,13 @@
- type: entity
name: wonderprod
parent: BaseItem
- id: wonderprod
+ id: Wonderprod
description: Universal tool of the abductor agent.
components:
- type: Item
sprite: _Starlight/Objects/Weapons/Melee/wonderprod.rsi
size: Huge
+ storedRotation: -90
- type: Clothing
sprite: _Starlight/Objects/Weapons/Melee/wonderprod.rsi
quickEquip: false
@@ -88,7 +89,7 @@
addComponents:
- type: MeleeWeapon
wideAnimationRotation: -135
- attackRate: 0.5
+ attackRate: 1
damage:
types:
Shock: 0
diff --git a/Resources/Prototypes/_StarLight/Entities/Specific/Abductor/gizmo.yml b/Resources/Prototypes/_StarLight/Entities/Specific/Abductor/gizmo.yml
new file mode 100644
index 000000000000..96610609acd5
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Entities/Specific/Abductor/gizmo.yml
@@ -0,0 +1,25 @@
+- type: entity
+ id: AbductorGizmo
+ parent: BaseItem
+ name: gizmo
+ description: A device that inserts a nano tracker, which can be used to target a teleportation beam.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Objects/Misc/gizmo.rsi
+ state: icon
+ - type: Item
+ sprite: _Starlight/Objects/Misc/gizmo.rsi
+ - type: RestrictByUserTag
+ contains:
+ - AbductorScientist
+ messages:
+ - abductors-gizmo-restricted
+ - type: MeleeWeapon
+ wideAnimationRotation: -135
+ attackRate: 0.5
+ damage:
+ types:
+ Shock: 0
+ angle: 60
+ animation: WeaponArcThrust
+ - type: AbductorGizmo
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/Computers/computers.yml b/Resources/Prototypes/_StarLight/Entities/Structures/Computers/computers.yml
index d1fc3f2e1433..d161e83ee962 100644
--- a/Resources/Prototypes/_StarLight/Entities/Structures/Computers/computers.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Structures/Computers/computers.yml
@@ -4,23 +4,18 @@
name: abductor console
description: A computer that is used for spying on the station.
components:
+ - type: AbductorConsole
- type: Sprite
sprite: _Starlight/Structures/Machines/abductor_console.rsi
layers:
- map: ["console"]
state: console
-# - type: CommunicationsConsole
-# title: comms-console-announcement-title-station
-# - type: DeviceNetwork
-# transmitFrequencyId: ShuttleTimer
-# - type: ActivatableUI
-# key: enum.CommunicationsConsoleUiKey.Key
-# - type: UserInterface
-# interfaces:
-# enum.AbductorConsoleUIKey.Key:
-# type: CommunicationsConsoleBoundUserInterface
-# - type: Computer
-# board: CommsComputerCircuitboard
+ - type: ActivatableUI
+ key: enum.AbductorConsoleUIKey.Key
+ - type: UserInterface
+ interfaces:
+ enum.AbductorConsoleUIKey.Key:
+ type: AbductorConsoleBui
- type: PointLight
enabled: true
radius: 1.5
diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml b/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml
index f2ab195fcec0..3680a9a19cec 100644
--- a/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Structures/Reflector/reflector.yml
@@ -12,6 +12,7 @@
- type: Pullable
- type: Rotatable
- type: Machine
+ - type: Clickable
- type: Physics
bodyType: Static
- type: Fixtures
diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/Tables/tables.yml b/Resources/Prototypes/_StarLight/Entities/Structures/Tables/tables.yml
new file mode 100644
index 000000000000..bc0031173e9b
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Entities/Structures/Tables/tables.yml
@@ -0,0 +1,13 @@
+- type: entity
+ id: TableAbductor
+ parent: TableBase
+ name: alien table
+ description: Literally the sturdiest thing you have ever seen.
+ components:
+ - type: Sprite
+ sprite: _Starlight/Structures/Tables/abductor_table.rsi
+ - type: Icon
+ sprite: _Starlight/Structures/Tables/abductor_table.rsi
+ - type: FootstepModifier
+ footstepSoundCollection:
+ collection: FootstepFloor
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/abductor_experimentator.yml b/Resources/Prototypes/_StarLight/Entities/Structures/abductor_experimentator.yml
new file mode 100644
index 000000000000..a2658b38058f
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Entities/Structures/abductor_experimentator.yml
@@ -0,0 +1,30 @@
+- type: entity
+ parent: BaseStructure
+ id: AbductorExperimentator
+ name: experimentator
+ description: A device that analyzes the result of the experiment and resets the subject to the place from where they were taken.
+ components:
+ - type: AbductorExperimentator
+ - type: Sprite
+ noRot: true
+ sprite: _Starlight/Structures/abductor_experimentator.rsi
+ layers:
+ - state: experimentator_0
+ map: ["base"]
+ - type: InteractionOutline
+ - type: Physics
+ canCollide: false
+ - type: DragInsertContainer
+ containerId: storage
+ - type: ExitContainerOnMove
+ containerId: storage
+ - type: ContainerContainer
+ containers:
+ storage: !type:ContainerSlot
+ - type: Appearance
+ - type: GenericVisualizer
+ visuals:
+ enum.AbductorExperimentatorVisuals.Full:
+ base:
+ True: { state: experimentator_1 }
+ False: { state: experimentator_0 }
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Entities/Structures/alien_pad.yml b/Resources/Prototypes/_StarLight/Entities/Structures/alien_pad.yml
index 6a04f093af65..4420a0bb2141 100644
--- a/Resources/Prototypes/_StarLight/Entities/Structures/alien_pad.yml
+++ b/Resources/Prototypes/_StarLight/Entities/Structures/alien_pad.yml
@@ -4,6 +4,7 @@
name: alien pad
description: Beam in the pizzas and dig in.
components:
+ - type: AbductorAlienPad
- type: InteractionOutline
- type: Physics
bodyType: Static
@@ -28,7 +29,6 @@
map: [ "enum.CargoTelepadLayers.Base" ]
- state: idle
map: [ "enum.CargoTelepadLayers.Beam" ]
- shader: unshaded
- type: WirelessNetworkConnection
range: 200
- type: Appearance
diff --git a/Resources/Prototypes/_StarLight/GameRules/events.yml b/Resources/Prototypes/_StarLight/GameRules/events.yml
new file mode 100644
index 000000000000..ed5de046de18
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/GameRules/events.yml
@@ -0,0 +1,45 @@
+- type: entity
+ parent: BaseGameRule
+ id: LoneAbductorSpawn
+ components:
+ - type: StationEvent
+ earliestStart: 15
+ weight: 7.5
+ minimumPlayers: 10
+ duration: 1
+ - type: RuleGrids
+ - type: LoadMapRule
+ mapPath: /Maps/Shuttles/ShuttleEvent/abductor_shuttle.yml
+ - type: AntagObjectives
+ objectives:
+ - AbductObjective
+ - type: AntagLoadProfileRule
+ speciesHardOverride: Abductor
+ - type: AntagSelection
+ definitions:
+ - spawnerPrototype: LoneAbductorSpawner
+ min: 1
+ max: 1
+ pickPlayer: false
+ startingGear: LoneAbductorGear
+ briefing:
+ text: abductor-role-greeting
+ color: Green
+ sound: /Audio/_Starlight/Misc/abductor.ogg
+ components:
+ - type: Abductor
+ - type: Muted
+ - type: AbductorScientist
+ - type: ActionGrant
+ actions:
+ - ActionReturnToShip
+ - type: Tag
+ tags:
+ - Abductor
+ - AbductorScientist
+ - CanPilot
+ - type: NpcFactionMember
+ factions:
+ - SimpleHostile
+ mindRoles:
+ - MindRoleLoneAbductor
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Objectives/abductor.yml b/Resources/Prototypes/_StarLight/Objectives/abductor.yml
new file mode 100644
index 000000000000..b6cf3e57b536
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Objectives/abductor.yml
@@ -0,0 +1,27 @@
+- type: entity
+ abstract: true
+ parent: BaseObjective
+ id: BaseAbductorObjective
+ components:
+ - type: Objective
+ difficulty: 1.5
+ issuer: objective-issuer-abductors
+ - type: RoleRequirement
+ roles:
+ mindRoles:
+ - Abductor
+
+- type: entity
+ parent: BaseAbductorObjective
+ id: AbductObjective
+ components:
+ - type: Objective
+ icon:
+ sprite: _Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi
+ state: gland
+ - type: NumberObjective
+ min: 6
+ max: 9
+ title: objective-condition-abduct-title
+ description: objective-condition-abduct-description
+ - type: AbductCondition
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Research/medical.yml b/Resources/Prototypes/_StarLight/Research/medical.yml
index 683f57602033..5f42a67d624c 100644
--- a/Resources/Prototypes/_StarLight/Research/medical.yml
+++ b/Resources/Prototypes/_StarLight/Research/medical.yml
@@ -68,6 +68,7 @@
tier: 2
cost: 10000
recipeUnlocks:
- - OrganCyberEyes
+ - OrganCyberEyesSec
+ - OrganCyberEyesMed
technologyPrerequisites:
- CyberLimbsTech
\ No newline at end of file
diff --git a/Resources/Prototypes/_StarLight/Roles/Antags/MindRoles/mind_roles.yml b/Resources/Prototypes/_StarLight/Roles/Antags/MindRoles/mind_roles.yml
new file mode 100644
index 000000000000..cd80326facde
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Roles/Antags/MindRoles/mind_roles.yml
@@ -0,0 +1,9 @@
+- type: entity
+ parent: BaseMindRoleAntag
+ id: MindRoleLoneAbductor
+ name: Lone Abductor Role
+ components:
+ - type: MindRole
+ exclusiveAntag: true
+ antagPrototype: LoneAbductorAntag
+ - type: Abductor
diff --git a/Resources/Prototypes/_StarLight/Roles/Antags/abductor.yml b/Resources/Prototypes/_StarLight/Roles/Antags/abductor.yml
new file mode 100644
index 000000000000..12699142d597
--- /dev/null
+++ b/Resources/Prototypes/_StarLight/Roles/Antags/abductor.yml
@@ -0,0 +1,6 @@
+- type: antag
+ id: LoneAbductorAntag
+ name: abductors-ghost-role-name
+ antagonist: true
+ setPreference: true
+ objective: roles-antag-abductor-objective
diff --git a/Resources/Prototypes/_StarLight/Shuttles/shuttles.yml b/Resources/Prototypes/_StarLight/Shuttles/shuttles.yml
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml
index 4c4e45b50023..6f21d1fef392 100644
--- a/Resources/Prototypes/tags.yml
+++ b/Resources/Prototypes/tags.yml
@@ -14,7 +14,10 @@
- type: Tag
id: Abductor
-
+
+- type: Tag
+ id: AbductorScientist
+
- type: Tag
id: Ambrosia
diff --git a/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/alive.png b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/alive.png
new file mode 100644
index 000000000000..bb950c45d77a
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/alive.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/dead.png b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/dead.png
new file mode 100644
index 000000000000..af866967975a
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/dead.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/meta.json
new file mode 100644
index 000000000000..5063f98cac91
--- /dev/null
+++ b/Resources/Textures/_Starlight/Mobs/Animals/spiderling.rsi/meta.json
@@ -0,0 +1,36 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tg station",
+ "states": [
+ {
+ "name": "alive",
+ "directions": 4,
+ "delays": [
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ],
+ [
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "dead"
+ }
+ ]
+}
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/egg.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/egg.png
new file mode 100644
index 000000000000..280f418b63bd
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/egg.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/emp.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/emp.png
new file mode 100644
index 000000000000..c157a533a230
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/emp.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/gland.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/gland.png
new file mode 100644
index 000000000000..091b27a58003
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/gland.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/health.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/health.png
new file mode 100644
index 000000000000..091b27a58003
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/health.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/meta.json
new file mode 100644
index 000000000000..0a47a4229e65
--- /dev/null
+++ b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/meta.json
@@ -0,0 +1,41 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Paradise Station",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "egg"
+ },
+ {
+ "name": "emp"
+ },
+ {
+ "name": "gland"
+ },
+ {
+ "name": "health"
+ },
+ {
+ "name": "mindshock"
+ },
+ {
+ "name": "slime"
+ },
+ {
+ "name": "spider"
+ },
+ {
+ "name": "vent"
+ },
+ {
+ "name": "viral"
+ },
+ {
+ "name": "species"
+ }
+ ]
+}
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/mindshock.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/mindshock.png
new file mode 100644
index 000000000000..e04bb29967b9
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/mindshock.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/slime.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/slime.png
new file mode 100644
index 000000000000..a766f7a452d5
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/slime.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/species.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/species.png
new file mode 100644
index 000000000000..5803b3840e72
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/species.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/spider.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/spider.png
new file mode 100644
index 000000000000..4feb39496d51
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/spider.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/vent.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/vent.png
new file mode 100644
index 000000000000..cccaf14e0cf3
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/vent.png differ
diff --git a/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/viral.png b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/viral.png
new file mode 100644
index 000000000000..1266110afc52
Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Cyberlimbs/dubious-organs.rsi/viral.png differ
diff --git a/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/icon.png b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/icon.png
new file mode 100644
index 000000000000..e085dfa617b7
Binary files /dev/null and b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/icon.png differ
diff --git a/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-left.png b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-left.png
new file mode 100644
index 000000000000..03cb7baaf79b
Binary files /dev/null and b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-right.png b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-right.png
new file mode 100644
index 000000000000..677f3fba372e
Binary files /dev/null and b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/meta.json b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/meta.json
new file mode 100644
index 000000000000..2a1676a5bc2c
--- /dev/null
+++ b/Resources/Textures/_Starlight/Objects/Misc/gizmo.rsi/meta.json
@@ -0,0 +1,31 @@
+{
+ "version": 1,
+ "copyright": "Taked From tg station, animated by darkrell",
+ "license": "CC-BY-SA-3.0",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon",
+ "directions": 1,
+ "delays": [
+ [
+ 1.3,
+ 0.1,
+ 0.2,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/full.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/full.png
new file mode 100644
index 000000000000..d2b58d8316c3
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/full.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/meta.json b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/meta.json
new file mode 100644
index 000000000000..09f516e549f9
--- /dev/null
+++ b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/meta.json
@@ -0,0 +1,163 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tg station",
+ "states": [
+ {
+ "name": "full",
+ "delays": [
+ [
+ 1
+ ]
+ ]
+ },
+ {
+ "name": "state_0",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_1",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_2",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_3",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_4",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_5",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_6",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ },
+ {
+ "name": "state_7",
+ "directions": 4,
+ "delays": [
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ],
+ [
+ 1.0
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_0.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_0.png
new file mode 100644
index 000000000000..f9d627cfeff0
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_0.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_1.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_1.png
new file mode 100644
index 000000000000..9ac57ea4a09a
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_1.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_2.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_2.png
new file mode 100644
index 000000000000..f9d627cfeff0
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_2.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_3.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_3.png
new file mode 100644
index 000000000000..9ac57ea4a09a
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_3.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_4.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_4.png
new file mode 100644
index 000000000000..cad43b520105
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_4.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_5.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_5.png
new file mode 100644
index 000000000000..504808cb548f
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_5.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_6.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_6.png
new file mode 100644
index 000000000000..cad43b520105
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_6.png differ
diff --git a/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_7.png b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_7.png
new file mode 100644
index 000000000000..504ff0a056c2
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/Tables/abductor_table.rsi/state_7.png differ
diff --git a/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_0.png b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_0.png
new file mode 100644
index 000000000000..ecb162cd2b6b
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_0.png differ
diff --git a/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_1.png b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_1.png
new file mode 100644
index 000000000000..3b098701855d
Binary files /dev/null and b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/experimentator_1.png differ
diff --git a/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/meta.json b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/meta.json
new file mode 100644
index 000000000000..aacdf0a08297
--- /dev/null
+++ b/Resources/Textures/_Starlight/Structures/abductor_experimentator.rsi/meta.json
@@ -0,0 +1,25 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tg",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "experimentator_0",
+ "directions": 1
+ },
+ {
+ "name": "experimentator_1",
+ "directions": 1,
+ "delays": [
+ [
+ 0.2,
+ 0.2
+ ]
+ ]
+ }
+ ]
+}
\ No newline at end of file