diff --git a/Content.Client/Effects/ColorFlashEffectSystem.cs b/Content.Client/Effects/ColorFlashEffectSystem.cs index 956c946524..b584aa9ad1 100644 --- a/Content.Client/Effects/ColorFlashEffectSystem.cs +++ b/Content.Client/Effects/ColorFlashEffectSystem.cs @@ -124,6 +124,10 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem continue; } + var targetEv = new GetFlashEffectTargetEvent(ent); + RaiseLocalEvent(ent, ref targetEv); + ent = targetEv.Target; + EnsureComp(ent, out comp); comp.NetSyncEnabled = false; comp.Color = sprite.Color; @@ -132,3 +136,9 @@ public sealed class ColorFlashEffectSystem : SharedColorFlashEffectSystem } } } + +/// +/// Raised on an entity to change the target for a color flash effect. +/// +[ByRefEvent] +public record struct GetFlashEffectTargetEvent(EntityUid Target); diff --git a/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs b/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs index 5ba4878c6d..8ba09c6617 100644 --- a/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs +++ b/Content.Client/Polymorph/Systems/ChameleonProjectorSystem.cs @@ -1,7 +1,10 @@ +using Content.Client.Effects; +using Content.Client.Smoking; using Content.Shared.Chemistry.Components; using Content.Shared.Polymorph.Components; using Content.Shared.Polymorph.Systems; using Robust.Client.GameObjects; +using Robust.Shared.Player; namespace Content.Client.Polymorph.Systems; @@ -10,14 +13,20 @@ public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem [Dependency] private readonly SharedAppearanceSystem _appearance = default!; private EntityQuery _appearanceQuery; + private EntityQuery _spriteQuery; public override void Initialize() { base.Initialize(); _appearanceQuery = GetEntityQuery(); + _spriteQuery = GetEntityQuery(); SubscribeLocalEvent(OnHandleState); + + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnGetFlashEffectTargetEvent); } private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) @@ -25,9 +34,30 @@ public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem CopyComp(ent); CopyComp(ent); CopyComp(ent); + CopyComp(ent); // reload appearance to hopefully prevent any invisible layers if (_appearanceQuery.TryComp(ent, out var appearance)) _appearance.QueueUpdate(ent, appearance); } + + private void OnStartup(Entity ent, ref ComponentStartup args) + { + if (!_spriteQuery.TryComp(ent, out var sprite)) + return; + + ent.Comp.WasVisible = sprite.Visible; + sprite.Visible = false; + } + + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + if (_spriteQuery.TryComp(ent, out var sprite)) + sprite.Visible = ent.Comp.WasVisible; + } + + private void OnGetFlashEffectTargetEvent(Entity ent, ref GetFlashEffectTargetEvent args) + { + args.Target = ent.Comp.Disguise; + } } diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 1af471f28a..710ee7c7cb 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -157,7 +157,7 @@ public sealed partial class GunSystem : SharedGunSystem var useKey = gun.UseKey ? EngineKeyFunctions.Use : EngineKeyFunctions.UseSecondary; - if (_inputSystem.CmdStates.GetState(useKey) != BoundKeyState.Down) + if (_inputSystem.CmdStates.GetState(useKey) != BoundKeyState.Down && !gun.BurstActivated) { if (gun.ShotCounter != 0) EntityManager.RaisePredictiveEvent(new RequestStopShootEvent { Gun = GetNetEntity(gunUid) }); diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 224629ff2e..610c0ad182 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -55,6 +55,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem(OnTakeGhostRole); SubscribeLocalEvent(OnObjectivesTextGetInfo); @@ -360,6 +362,8 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem(wearer); - ent.Comp.OldFactions = npcFaction.Factions; + ent.Comp.OldFactions.Clear(); + ent.Comp.OldFactions.UnionWith(npcFaction.Factions); _npcFaction.ClearFactions((wearer, npcFaction), false); _npcFaction.AddFaction((wearer, npcFaction), ent.Comp.CursedMaskFaction); diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs index 8df6ed1098..950795fc05 100644 --- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs @@ -41,6 +41,8 @@ public sealed class TraitorRuleSystem : GameRuleSystem { base.Initialize(); + Log.Level = LogLevel.Debug; + SubscribeLocalEvent(AfterEntitySelected); SubscribeLocalEvent(OnObjectivesTextPrepend); } @@ -53,6 +55,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem private void AfterEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) { + Log.Debug($"AfterAntagEntitySelected {ToPrettyString(ent)}"); MakeTraitor(args.EntityUid, ent); } @@ -78,14 +81,22 @@ public sealed class TraitorRuleSystem : GameRuleSystem public bool MakeTraitor(EntityUid traitor, TraitorRuleComponent component) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - start"); + //Grab the mind if it wasn't provided if (!_mindSystem.TryGetMind(traitor, out var mindId, out var mind)) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - failed, no Mind found"); return false; + } var briefing = ""; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - added codewords flufftext to briefing"); briefing = Loc.GetString("traitor-role-codewords-short", ("codewords", string.Join(", ", component.Codewords))); + } var issuer = _random.Pick(_prototypeManager.Index(component.ObjectiveIssuers).Values); @@ -94,6 +105,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem if (component.GiveUplink) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink start"); // Calculate the amount of currency on the uplink. var startingBalance = component.StartingBalance; if (_jobs.MindTryGetJob(mindId, out var prototype)) @@ -105,18 +117,27 @@ public sealed class TraitorRuleSystem : GameRuleSystem } // Choose and generate an Uplink, and return the uplink code if applicable + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request start"); var uplinkParams = RequestUplink(traitor, startingBalance, briefing); code = uplinkParams.Item1; briefing = uplinkParams.Item2; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink request completed"); } string[]? codewords = null; if (component.GiveCodewords) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - set codewords from component"); codewords = component.Codewords; + } if (component.GiveBriefing) + { _antag.SendBriefing(traitor, GenerateBriefing(codewords, code, issuer), null, component.GreetSoundNotification); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Sent the Briefing"); + } + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Adding TraitorMind"); component.TraitorMinds.Add(mindId); // Assign briefing @@ -126,9 +147,14 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleSystem.MindHasRole(mindId, out var traitorRole); if (traitorRole is not null) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Add traitor briefing components"); AddComp(traitorRole.Value.Owner); Comp(traitorRole.Value.Owner).Briefing = briefing; } + else + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - did not get traitor briefing"); + } // Send codewords to only the traitor client var color = TraitorCodewordColor; // Fall back to a dark red Syndicate color if a prototype is not found @@ -137,9 +163,11 @@ public sealed class TraitorRuleSystem : GameRuleSystem _roleCodewordSystem.SetRoleCodewords(codewordComp, "traitor", component.Codewords.ToList(), color); // Change the faction + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Change faction"); _npcFaction.RemoveFaction(traitor, component.NanoTrasenFaction, false); _npcFaction.AddFaction(traitor, component.SyndicateFaction); + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Finished"); return true; } @@ -148,10 +176,12 @@ public sealed class TraitorRuleSystem : GameRuleSystem var pda = _uplink.FindUplinkTarget(traitor); Note[]? code = null; + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink add"); var uplinked = _uplink.AddUplink(traitor, startingBalance, pda, true); if (pda is not null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is PDA"); // Codes are only generated if the uplink is a PDA code = EnsureComp(pda.Value).Code; @@ -163,6 +193,7 @@ public sealed class TraitorRuleSystem : GameRuleSystem } else if (pda is null && uplinked) { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is implant"); briefing += "\n" + Loc.GetString("traitor-role-uplink-implant-short"); } diff --git a/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs b/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs index 1586973a21..ab12f2764c 100644 --- a/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs +++ b/Content.Server/Polymorph/Systems/ChameleonProjectorSystem.cs @@ -1,99 +1,5 @@ -using Content.Server.Polymorph.Components; -using Content.Shared.Actions; -using Content.Shared.Construction.Components; -using Content.Shared.Hands; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.Polymorph; -using Content.Shared.Polymorph.Components; using Content.Shared.Polymorph.Systems; -using Content.Shared.StatusIcon.Components; -using Robust.Shared.Physics.Components; namespace Content.Server.Polymorph.Systems; -public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem -{ - [Dependency] private readonly MetaDataSystem _meta = default!; - [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; - [Dependency] private readonly PolymorphSystem _polymorph = default!; - [Dependency] private readonly SharedActionsSystem _actions = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly SharedTransformSystem _xform = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnEquippedHand); - SubscribeLocalEvent(OnToggleNoRot); - SubscribeLocalEvent(OnToggleAnchored); - } - - private void OnEquippedHand(Entity ent, ref GotEquippedHandEvent args) - { - if (!TryComp(ent, out var poly)) - return; - - _polymorph.Revert((ent, poly)); - args.Handled = true; - } - - public override void Disguise(ChameleonProjectorComponent proj, EntityUid user, EntityUid entity) - { - if (_polymorph.PolymorphEntity(user, proj.Polymorph) is not {} disguise) - return; - - // make disguise look real (for simple things at least) - var meta = MetaData(entity); - _meta.SetEntityName(disguise, meta.EntityName); - _meta.SetEntityDescription(disguise, meta.EntityDescription); - - var comp = EnsureComp(disguise); - comp.SourceEntity = entity; - comp.SourceProto = Prototype(entity)?.ID; - Dirty(disguise, comp); - - // no sechud trolling - RemComp(disguise); - - _appearance.CopyData(entity, disguise); - - var mass = CompOrNull(entity)?.Mass ?? 0f; - - // let the disguise die when its taken enough damage, which then transfers to the player - // health is proportional to mass, and capped to not be insane - if (TryComp(disguise, out var thresholds)) - { - // if the player is of flesh and blood, cap max health to theirs - // so that when reverting damage scales 1:1 and not round removing - var playerMax = _mobThreshold.GetThresholdForState(user, MobState.Dead).Float(); - var max = playerMax == 0f ? proj.MaxHealth : Math.Max(proj.MaxHealth, playerMax); - - var health = Math.Clamp(mass, proj.MinHealth, proj.MaxHealth); - _mobThreshold.SetMobStateThreshold(disguise, health, MobState.Critical, thresholds); - _mobThreshold.SetMobStateThreshold(disguise, max, MobState.Dead, thresholds); - } - - // add actions for controlling transform aspects - _actions.AddAction(disguise, proj.NoRotAction); - _actions.AddAction(disguise, proj.AnchorAction); - } - - private void OnToggleNoRot(Entity ent, ref DisguiseToggleNoRotEvent args) - { - var xform = Transform(ent); - xform.NoLocalRotation = !xform.NoLocalRotation; - } - - private void OnToggleAnchored(Entity ent, ref DisguiseToggleAnchoredEvent args) - { - var uid = ent.Owner; - var xform = Transform(uid); - if (xform.Anchored) - _xform.Unanchor(uid, xform); - else - _xform.AnchorEntity((uid, xform)); - } -} +public sealed class ChameleonProjectorSystem : SharedChameleonProjectorSystem; diff --git a/Content.Server/Research/Disk/ResearchDiskSystem.cs b/Content.Server/Research/Disk/ResearchDiskSystem.cs index d32c49ce6f..4d65c19f6e 100644 --- a/Content.Server/Research/Disk/ResearchDiskSystem.cs +++ b/Content.Server/Research/Disk/ResearchDiskSystem.cs @@ -31,6 +31,7 @@ namespace Content.Server.Research.Disk _research.ModifyServerPoints(args.Target.Value, component.Points, server); _popupSystem.PopupEntity(Loc.GetString("research-disk-inserted", ("points", component.Points)), args.Target.Value, args.User); EntityManager.QueueDeleteEntity(uid); + args.Handled = true; } private void OnMapInit(EntityUid uid, ResearchDiskComponent component, MapInitEvent args) diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs index 39cd2486ed..e5439cdb06 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs @@ -1,4 +1,6 @@ +using Content.Shared.Damage; using Content.Shared.Weapons.Ranged.Components; +using Robust.Shared.Map; namespace Content.Server.Weapons.Ranged.Systems; @@ -13,17 +15,28 @@ public sealed partial class GunSystem */ // Automatic firing without stopping if the AutoShootGunComponent component is exist and enabled - var query = EntityQueryEnumerator(); + var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var autoShoot, out var gun)) + while (query.MoveNext(out var uid, out var gun)) { - if (!autoShoot.Enabled) - continue; - if (gun.NextFire > Timing.CurTime) continue; - AttemptShoot(uid, gun); + if (TryComp(uid, out AutoShootGunComponent? autoShoot)) + { + if (!autoShoot.Enabled) + continue; + + AttemptShoot(uid, gun); + } + else if (gun.BurstActivated) + { + var parent = _transform.GetParentUid(uid); + if (HasComp(parent)) + AttemptShoot(parent, uid, gun, gun.ShootCoordinates ?? new EntityCoordinates(uid, gun.DefaultDirection)); + else + AttemptShoot(uid, gun); + } } } } diff --git a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs index 1155030f93..31ac8bd2d0 100644 --- a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs +++ b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs @@ -17,4 +17,7 @@ public sealed class CartridgeUiMessage : BoundUserInterfaceMessage public abstract class CartridgeMessageEvent : EntityEventArgs { public NetEntity LoaderUid; + + [NonSerialized] + public EntityUid Actor; } diff --git a/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs b/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs index 2b9fba7b39..282106b8f6 100644 --- a/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs +++ b/Content.Shared/Polymorph/Components/ChameleonDisguiseComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Polymorph.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -7,9 +8,22 @@ namespace Content.Shared.Polymorph.Components; /// Component added to disguise entities. /// Used by client to copy over appearance from the disguise's source entity. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +[RegisterComponent, NetworkedComponent, Access(typeof(SharedChameleonProjectorSystem))] +[AutoGenerateComponentState(true)] public sealed partial class ChameleonDisguiseComponent : Component { + /// + /// The user of this disguise. + /// + [DataField] + public EntityUid User; + + /// + /// The projector that created this disguise. + /// + [DataField] + public EntityUid Projector; + /// /// The disguise source entity for copying the sprite. /// diff --git a/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs b/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs new file mode 100644 index 0000000000..cd2e26c420 --- /dev/null +++ b/Content.Shared/Polymorph/Components/ChameleonDisguisedComponent.cs @@ -0,0 +1,25 @@ +using Content.Shared.Polymorph.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Polymorph.Components; + +/// +/// Added to a player when they use a chameleon projector. +/// Handles making them invisible and revealing when damaged enough or switching hands. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedChameleonProjectorSystem))] +[AutoGenerateComponentState] +public sealed partial class ChameleonDisguisedComponent : Component +{ + /// + /// The disguise entity parented to the player. + /// + [DataField, AutoNetworkedField] + public EntityUid Disguise; + + /// + /// For client, whether the user's sprite was previously visible or not. + /// + [DataField] + public bool WasVisible; +} diff --git a/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs b/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs index 239b5236f2..1b289c54fc 100644 --- a/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs +++ b/Content.Shared/Polymorph/Components/ChameleonProjectorComponent.cs @@ -1,4 +1,3 @@ -using Content.Shared.Polymorph; using Content.Shared.Polymorph.Systems; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; @@ -25,22 +24,26 @@ public sealed partial class ChameleonProjectorComponent : Component public EntityWhitelist? Blacklist; /// - /// Polymorph configuration for the disguise entity. + /// Disguise entity to spawn and use. /// [DataField(required: true)] - public PolymorphConfiguration Polymorph = new(); + public EntProtoId DisguiseProto = string.Empty; /// /// Action for disabling your disguise's rotation. /// [DataField] public EntProtoId NoRotAction = "ActionDisguiseNoRot"; + [DataField] + public EntityUid? NoRotActionEntity; /// /// Action for anchoring your disguise in place. /// [DataField] public EntProtoId AnchorAction = "ActionDisguiseAnchor"; + [DataField] + public EntityUid? AnchorActionEntity; /// /// Minimum health to give the disguise. @@ -55,14 +58,8 @@ public sealed partial class ChameleonProjectorComponent : Component public float MaxHealth = 100f; /// - /// Popup shown to the user when they try to disguise as an invalid entity. + /// User currently disguised by this projector, if any /// [DataField] - public LocId InvalidPopup = "chameleon-projector-invalid"; - - /// - /// Popup shown to the user when they disguise as a valid entity. - /// - [DataField] - public LocId SuccessPopup = "chameleon-projector-success"; + public EntityUid? Disguised; } diff --git a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs index 00096b7d40..99737996b0 100644 --- a/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs +++ b/Content.Shared/Polymorph/Systems/SharedChameleonProjectorSystem.cs @@ -1,67 +1,264 @@ using Content.Shared.Actions; +using Content.Shared.Coordinates; +using Content.Shared.Damage; +using Content.Shared.Hands; using Content.Shared.Interaction; -using Content.Shared.Polymorph; +using Content.Shared.Item; using Content.Shared.Polymorph.Components; using Content.Shared.Popups; -using Robust.Shared.Serialization.Manager; -using Robust.Shared.Prototypes; -using System.Diagnostics.CodeAnalysis; +using Content.Shared.Storage.Components; +using Content.Shared.Verbs; using Content.Shared.Whitelist; +using Robust.Shared.Containers; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Polymorph.Systems; /// -/// Handles whitelist/blacklist checking. -/// Actual polymorphing and deactivation is done serverside. +/// Handles disguise validation, disguising and revealing. +/// Most appearance copying is done clientside. /// public abstract class SharedChameleonProjectorSystem : EntitySystem { + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly ISerializationManager _serMan = default!; + [Dependency] private readonly MetaDataSystem _meta = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnDisguiseInteractHand, before: [typeof(SharedItemSystem)]); + SubscribeLocalEvent(OnDisguiseDamaged); + SubscribeLocalEvent(OnDisguiseInsertAttempt); + SubscribeLocalEvent(OnDisguiseShutdown); + SubscribeLocalEvent(OnInteract); + SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent(OnToggleNoRot); + SubscribeLocalEvent(OnToggleAnchored); + SubscribeLocalEvent(OnDeselected); + SubscribeLocalEvent(OnUnequipped); + SubscribeLocalEvent(OnProjectorShutdown); } + #region Disguise entity + + private void OnDisguiseInteractHand(Entity ent, ref InteractHandEvent args) + { + TryReveal(ent.Comp.User); + args.Handled = true; + } + + private void OnDisguiseDamaged(Entity ent, ref DamageChangedEvent args) + { + // this mirrors damage 1:1 + if (args.DamageDelta is {} damage) + _damageable.TryChangeDamage(ent.Comp.User, damage); + } + + private void OnDisguiseInsertAttempt(Entity ent, ref InsertIntoEntityStorageAttemptEvent args) + { + // stay parented to the user, not the storage + args.Cancelled = true; + } + + private void OnDisguiseShutdown(Entity ent, ref ComponentShutdown args) + { + _actions.RemoveProvidedActions(ent.Comp.User, ent.Comp.Projector); + } + + #endregion + + #region Projector + private void OnInteract(Entity ent, ref AfterInteractEvent args) { - if (!args.CanReach || args.Target is not {} target) + if (args.Handled || !args.CanReach || args.Target is not {} target) + return; + + args.Handled = true; + TryDisguise(ent, args.User, target); + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess) return; var user = args.User; - args.Handled = true; + var target = args.Target; + args.Verbs.Add(new UtilityVerb() + { + Act = () => + { + TryDisguise(ent, user, target); + }, + Text = Loc.GetString("chameleon-projector-set-disguise") + }); + } + + public bool TryDisguise(Entity ent, EntityUid user, EntityUid target) + { + if (_container.IsEntityInContainer(target)) + { + _popup.PopupClient(Loc.GetString("chameleon-projector-inside-container"), target, user); + return false; + } if (IsInvalid(ent.Comp, target)) { - _popup.PopupClient(Loc.GetString(ent.Comp.InvalidPopup), target, user); - return; + _popup.PopupClient(Loc.GetString("chameleon-projector-invalid"), target, user); + return false; } - _popup.PopupClient(Loc.GetString(ent.Comp.SuccessPopup), target, user); - Disguise(ent.Comp, user, target); + _popup.PopupClient(Loc.GetString("chameleon-projector-success"), target, user); + Disguise(ent, user, target); + return true; } + private void OnToggleNoRot(Entity ent, ref DisguiseToggleNoRotEvent args) + { + if (ent.Comp.Disguised is not {} uid) + return; + + var xform = Transform(uid); + _xform.SetLocalRotationNoLerp(uid, 0, xform); + xform.NoLocalRotation = !xform.NoLocalRotation; + args.Handled = true; + } + + private void OnToggleAnchored(Entity ent, ref DisguiseToggleAnchoredEvent args) + { + if (ent.Comp.Disguised is not {} uid) + return; + + var xform = Transform(uid); + if (xform.Anchored) + _xform.Unanchor(uid, xform); + else + _xform.AnchorEntity((uid, xform)); + + args.Handled = true; + } + + private void OnDeselected(Entity ent, ref HandDeselectedEvent args) + { + RevealProjector(ent); + } + + private void OnUnequipped(Entity ent, ref GotUnequippedHandEvent args) + { + RevealProjector(ent); + } + + private void OnProjectorShutdown(Entity ent, ref ComponentShutdown args) + { + RevealProjector(ent); + } + + #endregion + + #region API + /// /// Returns true if an entity cannot be used as a disguise. /// public bool IsInvalid(ChameleonProjectorComponent comp, EntityUid target) { - return _whitelistSystem.IsWhitelistFail(comp.Whitelist, target) - || _whitelistSystem.IsBlacklistPass(comp.Blacklist, target); + return _whitelist.IsWhitelistFail(comp.Whitelist, target) + || _whitelist.IsBlacklistPass(comp.Blacklist, target); } /// /// On server, polymorphs the user into an entity and sets up the disguise. /// - public virtual void Disguise(ChameleonProjectorComponent comp, EntityUid user, EntityUid entity) + public void Disguise(Entity ent, EntityUid user, EntityUid entity) { + var proj = ent.Comp; + + // no spawning prediction sorry + if (_net.IsClient) + return; + + // reveal first to allow quick switching + TryReveal(user); + + // add actions for controlling transform aspects + _actions.AddAction(user, ref proj.NoRotActionEntity, proj.NoRotAction, container: ent); + _actions.AddAction(user, ref proj.AnchorActionEntity, proj.AnchorAction, container: ent); + + proj.Disguised = user; + + var disguise = SpawnAttachedTo(proj.DisguiseProto, user.ToCoordinates()); + + var disguised = AddComp(user); + disguised.Disguise = disguise; + Dirty(user, disguised); + + // make disguise look real (for simple things at least) + var meta = MetaData(entity); + _meta.SetEntityName(disguise, meta.EntityName); + _meta.SetEntityDescription(disguise, meta.EntityDescription); + + var comp = EnsureComp(disguise); + comp.User = user; + comp.Projector = ent; + comp.SourceEntity = entity; + comp.SourceProto = Prototype(entity)?.ID; + Dirty(disguise, comp); + + // item disguises can be picked up to be revealed, also makes sure their examine size is correct + CopyComp((disguise, comp)); + + _appearance.CopyData(entity, disguise); } + /// + /// Removes the disguise, if the user is disguised. + /// + public bool TryReveal(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) + return false; + + if (TryComp(ent.Comp.Disguise, out var disguise) + && TryComp(disguise.Projector, out var proj)) + { + proj.Disguised = null; + } + + var xform = Transform(ent); + xform.NoLocalRotation = false; + _xform.Unanchor(ent, xform); + + Del(ent.Comp.Disguise); + RemComp(ent); + return true; + } + + /// + /// Reveal a projector's user, if any. + /// + public void RevealProjector(Entity ent) + { + if (ent.Comp.Disguised is {} user) + TryReveal(user); + } + + #endregion + /// /// Copy a component from the source entity/prototype to the disguise entity. /// diff --git a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs index 37517c1371..cdcf1a7b31 100644 --- a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs @@ -22,6 +22,12 @@ public sealed partial class ChamberMagazineAmmoProviderComponent : MagazineAmmoP [ViewVariables(VVAccess.ReadWrite), DataField("autoCycle"), AutoNetworkedField] public bool AutoCycle = true; + /// + /// Can the gun be racked, which opens and then instantly closes the bolt to cycle a round. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("canRack"), AutoNetworkedField] + public bool CanRack = true; + [ViewVariables(VVAccess.ReadWrite), DataField("soundBoltClosed"), AutoNetworkedField] public SoundSpecifier? BoltClosedSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Bolt/rifle_bolt_closed.ogg"); diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index b404221abf..98b1d2fe2a 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -1,3 +1,4 @@ +using System.Numerics; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Audio; @@ -156,6 +157,30 @@ public sealed partial class GunComponent : Component [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] public int ShotsPerBurstModified = 3; + /// + /// How long time must pass between burstfire shots. + /// + [DataField, AutoNetworkedField] + public float BurstCooldown = 0.25f; + + /// + /// The fire rate of the weapon in burst fire mode. + /// + [DataField, AutoNetworkedField] + public float BurstFireRate = 8f; + + /// + /// Whether the burst fire mode has been activated. + /// + [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public bool BurstActivated = false; + + /// + /// The burst fire bullet count. + /// + [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + public int BurstShotsCount = 0; + /// /// Used for tracking semi-auto / burst /// @@ -232,6 +257,12 @@ public sealed partial class GunComponent : Component /// [DataField] public bool ClumsyProof = false; + + /// + /// Firing direction for an item not being held (e.g. shuttle cannons, thrown guns still firing). + /// + [DataField] + public Vector2 DefaultDirection = new Vector2(0, -1); } [Flags] diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs index d6f45ba77d..3060e2c1a9 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs @@ -67,7 +67,10 @@ public abstract partial class SharedGunSystem return; args.Handled = true; - UseChambered(uid, component, args.User); + if (component.CanRack) + UseChambered(uid, component, args.User); + else + ToggleBolt(uid, component, args.User); } /// @@ -75,7 +78,7 @@ public abstract partial class SharedGunSystem /// private void OnChamberActivationVerb(EntityUid uid, ChamberMagazineAmmoProviderComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || component.BoltClosed == null) + if (!args.CanAccess || !args.CanInteract || component.BoltClosed == null || !component.CanRack) return; args.Verbs.Add(new ActivationVerb() diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 794237b145..9bd786bbe0 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -218,7 +218,7 @@ public abstract partial class SharedGunSystem : EntitySystem /// public void AttemptShoot(EntityUid gunUid, GunComponent gun) { - var coordinates = new EntityCoordinates(gunUid, new Vector2(0, -1)); + var coordinates = new EntityCoordinates(gunUid, gun.DefaultDirection); gun.ShootCoordinates = coordinates; AttemptShoot(gunUid, gunUid, gun); gun.ShotCounter = 0; @@ -258,6 +258,9 @@ public abstract partial class SharedGunSystem : EntitySystem var fireRate = TimeSpan.FromSeconds(1f / gun.FireRateModified); + if (gun.SelectedMode == SelectiveFire.Burst || gun.BurstActivated) + fireRate = TimeSpan.FromSeconds(1f / gun.BurstFireRate); + // First shot // Previously we checked shotcounter but in some cases all the bullets got dumped at once // curTime - fireRate is insufficient because if you time it just right you can get a 3rd shot out slightly quicker. @@ -278,18 +281,24 @@ public abstract partial class SharedGunSystem : EntitySystem // Get how many shots we're actually allowed to make, due to clip size or otherwise. // Don't do this in the loop so we still reset NextFire. - switch (gun.SelectedMode) + if (!gun.BurstActivated) { - case SelectiveFire.SemiAuto: - shots = Math.Min(shots, 1 - gun.ShotCounter); - break; - case SelectiveFire.Burst: - shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); - break; - case SelectiveFire.FullAuto: - break; - default: - throw new ArgumentOutOfRangeException($"No implemented shooting behavior for {gun.SelectedMode}!"); + switch (gun.SelectedMode) + { + case SelectiveFire.SemiAuto: + shots = Math.Min(shots, 1 - gun.ShotCounter); + break; + case SelectiveFire.Burst: + shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); + break; + case SelectiveFire.FullAuto: + break; + default: + throw new ArgumentOutOfRangeException($"No implemented shooting behavior for {gun.SelectedMode}!"); + } + } else + { + shots = Math.Min(shots, gun.ShotsPerBurstModified - gun.ShotCounter); } var attemptEv = new AttemptShootEvent(user, null); @@ -301,7 +310,8 @@ public abstract partial class SharedGunSystem : EntitySystem { PopupSystem.PopupClient(attemptEv.Message, gunUid, user); } - + gun.BurstActivated = false; + gun.BurstShotsCount = 0; gun.NextFire = TimeSpan.FromSeconds(Math.Max(lastFire.TotalSeconds + SafetyNextFire, gun.NextFire.TotalSeconds)); return; } @@ -328,6 +338,10 @@ public abstract partial class SharedGunSystem : EntitySystem var emptyGunShotEvent = new OnEmptyGunShotEvent(); RaiseLocalEvent(gunUid, ref emptyGunShotEvent); + gun.BurstActivated = false; + gun.BurstShotsCount = 0; + gun.NextFire += TimeSpan.FromSeconds(gun.BurstCooldown); + // Play empty gun sounds if relevant // If they're firing an existing clip then don't play anything. if (shots > 0) @@ -347,6 +361,22 @@ public abstract partial class SharedGunSystem : EntitySystem return; } + // Handle burstfire + if (gun.SelectedMode == SelectiveFire.Burst) + { + gun.BurstActivated = true; + } + if (gun.BurstActivated) + { + gun.BurstShotsCount += shots; + if (gun.BurstShotsCount >= gun.ShotsPerBurstModified) + { + gun.NextFire += TimeSpan.FromSeconds(gun.BurstCooldown); + gun.BurstActivated = false; + gun.BurstShotsCount = 0; + } + } + // Shoot confirmed - sounds also played here in case it's invalid (e.g. cartridge already spent). Shoot(gunUid, gun, ev.Ammo, fromCoordinates, toCoordinates.Value, out var userImpulse, user, throwItems: attemptEv.ThrowItems); var shotEv = new GunShotEvent(user, ev.Ammo); diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eb0055f8a5..34a2d14358 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,31 +1,4 @@ Entries: -- author: mirrorcult - changes: - - message: With space law being overhauled, you can now examine items to see their - contraband status, and whether with your current access you'd be accosted by - Security for owning it. This will also clearly show non-stealth syndicate items. - type: Add - id: 7096 - time: '2024-08-12T03:57:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/28688 -- author: DieselMohawk - changes: - - message: Resprited Security vest and helmet - type: Tweak - id: 7097 - time: '2024-08-12T06:20:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30291 -- author: Ubaser - changes: - - message: Mantles are now available in loadouts, requiring 20 hours of that head - of department's time. - type: Add - - message: Mantles are no longer spawned in dressers or able to be printed at uniform - lathes. - type: Remove - id: 7098 - time: '2024-08-12T07:14:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30929 - author: LeoSantich changes: - message: Updated 'narsie' and 'ratvar' to 'Nar'Sie' and 'Ratvar' in randomly generated @@ -3944,3 +3917,35 @@ id: 7595 time: '2024-11-06T13:20:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33084 +- author: BramvanZijp + changes: + - message: Flare guns have been reworked to no longer automatically eject shells + after firing, and must now be opened manually to insert or eject shells. A safety + feature has also been added to prevent loading lethal shells into them. + type: Tweak + - message: Flare guns are twice as likely to appear in emergency closets, with the + same rarity as MRE's. + type: Tweak + - message: Added the security shell gun, a modified flare gun which is capable of + handling both nonlethal and lethal shotgun shells. It is able to be crafted + in the security techfab without needing any research. + type: Add + id: 7596 + time: '2024-11-06T14:27:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32829 +- author: SlamBamActionman + changes: + - message: WT550 and C20-r's "burst" firemodes are now actual bursts. + type: Tweak + - message: Drozd is now a burst-only weapon (DPS remains unchanged!). + type: Tweak + id: 7597 + time: '2024-11-06T14:39:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31292 +- author: PopGamer46 + changes: + - message: Fixed Lambordeere (botany shuttle) bolt buttons not being connected + type: Fix + id: 7598 + time: '2024-11-07T22:02:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33065 diff --git a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml index 2b059ca40e..28bab5d4c7 100644 --- a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml +++ b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml @@ -4,7 +4,7 @@ [game] desc = "Official English Space Station 14 servers. Vanilla, roleplay ruleset." lobbyenabled = true -soft_max_players = 70 +soft_max_players = 80 panic_bunker.enabled = true panic_bunker.disable_with_admins = true panic_bunker.enable_without_admins = true diff --git a/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl b/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl index 8a79516077..b525c9da1a 100644 --- a/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl +++ b/Resources/Locale/en-US/chameleon-projector/chameleon-projector.ftl @@ -1,2 +1,4 @@ +chameleon-projector-inside-container = There's no room to scan that! chameleon-projector-invalid = You can't disguise as that! chameleon-projector-success = Projected new disguise. +chameleon-projector-set-disguise = Set Disguise diff --git a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml b/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml index 56624fcd3b..fcb40acdf4 100644 --- a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml +++ b/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml @@ -1206,6 +1206,10 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,5.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 50: + - Pressed: DoorBolt - uid: 199 components: - type: MetaData @@ -1214,6 +1218,10 @@ entities: rot: 1.5707963267948966 rad pos: 0.5,2.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 82: + - Pressed: DoorBolt - proto: SMESBasic entities: - uid: 65 diff --git a/Resources/Maps/cog.yml b/Resources/Maps/cog.yml index 384c60f599..58310e561c 100644 --- a/Resources/Maps/cog.yml +++ b/Resources/Maps/cog.yml @@ -145,15 +145,15 @@ entities: version: 6 -4,-3: ind: -4,-3 - tiles: AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 -4,-4: ind: -4,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAIQAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAACgQAAAAAADwAAAAAAHwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAYAAAAAACYAAAAAACgQAAAAAAgQAAAAAAIQAAAAAADwAAAAAAgAAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAYAAAAAAAgQAAAAAAYAAAAAAAHwAAAAAADwAAAAAAAAAAAAAADwAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAHwAAAAAAgQAAAAAAYAAAAAABHwAAAAAAHwAAAAACgAAAAAAAgAAAAAAAgAAAAAAAIQAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAKgQAAAAAADwAAAAAAAAAAAAAADwAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAHwAAAAAADwAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAHwAAAAAADwAAAAAAgAAAAAAADwAAAAAAHwAAAAAAgAAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAHwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAADwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAIQAAAAAADwAAAAAADwAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAA version: 6 -3,-4: ind: -3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAABAAAAAAAgQAAAAAABAAAAAAABAAAAAAAIgAAAAAAgQAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAIgAAAAAAYAAAAAADgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAgQAAAAAABAAAAAAAgQAAAAAABAAAAAAABAAAAAAAIgAAAAAAgQAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAIgAAAAAAYAAAAAADgQAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAADwAAAAAAgQAAAAAABAAAAAAABAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAADDwAAAAAADwAAAAAADwAAAAAADwAAAAAAAAAAAAAAAAAAAAAADwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgQAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAUgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAYAAAAAADYAAAAAAAgQAAAAAAgQAAAAAA version: 6 -2,-4: ind: -2,-4 @@ -455,10 +455,6 @@ entities: ind: -5,-2 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAABYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 - -5,-4: - ind: -5,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 -3,-5: ind: -3,-5 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAA @@ -1906,8 +1902,6 @@ entities: 8675: -48,-44 8676: -51,-51 8677: -43,-54 - 8681: -61,-55 - 8682: -63,-56 8850: 62,-4 8851: 62,-1 8913: 48,-6 @@ -2844,14 +2838,6 @@ entities: 8671: -51,-44 8672: -48,-46 8673: -48,-46 - 8683: -62,-56 - 8684: -63,-55 - 8685: -62,-55 - 8686: -61,-56 - 8687: -61,-55 - 8688: -62,-54 - 8689: -63,-53 - 8690: -62,-53 8818: 39,-36 8819: 41,-36 8820: 43,-36 @@ -4151,19 +4137,6 @@ entities: 8612: 57,63 8613: 55,64 8645: -57,-34 - 8691: -63,-56 - 8692: -62,-56 - 8693: -61,-56 - 8694: -62,-55 - 8695: -62,-55 - 8696: -63,-54 - 8697: -63,-54 - 8698: -63,-53 - 8699: -63,-53 - 8700: -61,-54 - 8701: -61,-58 - 8702: -61,-59 - 8703: -61,-57 - node: cleanable: True zIndex: 1 @@ -9775,21 +9748,20 @@ entities: -14,-9: 0: 58620 -16,-12: - 2: 19524 + 2: 19660 -16,-13: - 1: 16592 - 2: 1024 + 1: 17026 -16,-11: 2: 3140 -15,-12: - 2: 61422 + 2: 61438 -15,-11: 2: 3918 + -15,-13: + 1: 4612 + 2: 60608 -15,-10: 0: 24584 - -15,-13: - 2: 59968 - 1: 5284 -14,-11: 2: 257 0: 17612 @@ -9802,48 +9774,36 @@ entities: 2: 273 -13,-13: 0: 61160 - -16,-15: - 1: 16 - 2: 12 - 0: 34944 - -17,-15: - 1: 2048 - 2: 17408 -16,-14: - 0: 28398 - -17,-14: - 0: 128 - 1: 32768 - 2: 68 - -15,-15: - 2: 42689 1: 2048 + -15,-15: + 2: 61440 -15,-14: - 1: 548 - 2: 57472 + 1: 40960 + 2: 2286 -14,-15: - 2: 57360 - 1: 256 + 2: 12288 -14,-14: - 0: 290 - 1: 4096 - 2: 10820 - -13,-15: - 2: 61440 + 2: 12288 + 1: 18432 -13,-14: - 2: 10180 - -12,-15: - 2: 61440 + 1: 640 + -13,-15: + 2: 24576 -12,-14: 0: 65024 - -11,-15: - 2: 61440 + 1: 8 + -12,-15: + 1: 4096 -11,-14: 0: 64256 -11,-16: 2: 58030 -11,-17: 2: 41646 + -11,-15: + 2: 2 + 1: 33920 -10,-16: 2: 58111 -10,-14: @@ -9853,7 +9813,7 @@ entities: -10,-15: 0: 61152 -9,-16: - 2: 2047 + 2: 767 -9,-14: 0: 4084 -9,-17: @@ -11671,8 +11631,6 @@ entities: -6,-17: 2: 1041 0: 14 - -17,-13: - 1: 4 -11,-18: 2: 41696 -10,-18: @@ -14021,11 +13979,6 @@ entities: - type: Transform pos: -17.5,-60.5 parent: 12 - - uid: 31026 - components: - - type: Transform - pos: -60.5,-53.5 - parent: 12 - proto: Airlock entities: - uid: 2309 @@ -16010,29 +15963,6 @@ entities: - type: Transform pos: -21.5,55.5 parent: 12 - - uid: 31049 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -60.5,-56.5 - parent: 12 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 32119: - - DoorStatus: DoorBolt - - uid: 32119 - components: - - type: Transform - pos: -60.5,-58.5 - parent: 12 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 31049: - - DoorStatus: DoorBolt - proto: AirlockHeadOfPersonnelLocked entities: - uid: 18846 @@ -16367,6 +16297,11 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,-20.5 parent: 12 + - uid: 1613 + components: + - type: Transform + pos: -44.5,68.5 + parent: 12 - uid: 2358 components: - type: Transform @@ -16740,18 +16675,6 @@ entities: rot: 3.141592653589793 rad pos: -5.5,8.5 parent: 12 - - uid: 29024 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,68.5 - parent: 12 - - type: Door - secondsUntilStateChange: -5764.909 - state: Opening - - type: DeviceLinkSource - lastSignals: - DoorStatus: True - uid: 29076 components: - type: Transform @@ -19607,12 +19530,6 @@ entities: rot: 1.5707963267948966 rad pos: 34.5,-12.5 parent: 12 - - uid: 32163 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -63.5,-53.5 - parent: 12 - proto: APCElectronics entities: - uid: 10892 @@ -19737,197 +19654,190 @@ entities: parent: 12 - proto: AsteroidRock entities: - - uid: 10821 + - uid: 4769 components: - type: Transform - pos: -62.5,-49.5 + pos: -58.5,-51.5 parent: 12 - - uid: 31015 + - uid: 4976 components: - type: Transform - pos: -57.5,-54.5 + pos: -52.5,-52.5 parent: 12 - - uid: 31024 - components: - - type: Transform - pos: -62.5,-50.5 - parent: 12 - - uid: 31025 - components: - - type: Transform - pos: -56.5,-51.5 - parent: 12 - - uid: 31027 + - uid: 7157 components: - type: Transform pos: -59.5,-53.5 parent: 12 - - uid: 31031 + - uid: 10819 components: - type: Transform - pos: -59.5,-50.5 + pos: -61.5,-49.5 parent: 12 - - uid: 31032 + - uid: 10823 components: - type: Transform - pos: -60.5,-49.5 + pos: -61.5,-50.5 parent: 12 - - uid: 31033 + - uid: 17288 components: - type: Transform - pos: -62.5,-51.5 + pos: -48.5,-55.5 parent: 12 - - uid: 31035 - components: - - type: Transform - pos: -56.5,-55.5 - parent: 12 - - uid: 31036 - components: - - type: Transform - pos: -55.5,-54.5 - parent: 12 - - uid: 31037 - components: - - type: Transform - pos: -57.5,-56.5 - parent: 12 - - uid: 31039 - components: - - type: Transform - pos: -53.5,-53.5 - parent: 12 - - uid: 31043 - components: - - type: Transform - pos: -58.5,-55.5 - parent: 12 - - uid: 31047 - components: - - type: Transform - pos: -64.5,-55.5 - parent: 12 - - uid: 31055 - components: - - type: Transform - pos: -63.5,-52.5 - parent: 12 - - uid: 31065 - components: - - type: Transform - pos: -55.5,-56.5 - parent: 12 - - uid: 31159 - components: - - type: Transform - pos: -63.5,-51.5 - parent: 12 - - uid: 31160 - components: - - type: Transform - pos: -61.5,-51.5 - parent: 12 - - uid: 32122 - components: - - type: Transform - pos: -65.5,-53.5 - parent: 12 - - uid: 32123 - components: - - type: Transform - pos: -65.5,-52.5 - parent: 12 - - uid: 32124 - components: - - type: Transform - pos: -64.5,-51.5 - parent: 12 - - uid: 32126 - components: - - type: Transform - pos: -63.5,-49.5 - parent: 12 - - uid: 32137 - components: - - type: Transform - pos: -63.5,-57.5 - parent: 12 - - uid: 32139 - components: - - type: Transform - pos: -62.5,-58.5 - parent: 12 - - uid: 32140 - components: - - type: Transform - pos: -63.5,-56.5 - parent: 12 - - uid: 32141 - components: - - type: Transform - pos: -64.5,-56.5 - parent: 12 - - uid: 32168 - components: - - type: Transform - pos: -59.5,-49.5 - parent: 12 - - uid: 32171 - components: - - type: Transform - pos: -58.5,-58.5 - parent: 12 - - uid: 32185 - components: - - type: Transform - pos: -60.5,-48.5 - parent: 12 -- proto: AsteroidRockCoal - entities: - - uid: 31041 - components: - - type: Transform - pos: -55.5,-55.5 - parent: 12 - - uid: 31042 - components: - - type: Transform - pos: -53.5,-52.5 - parent: 12 - - uid: 32138 - components: - - type: Transform - pos: -62.5,-57.5 - parent: 12 -- proto: AsteroidRockQuartz - entities: - - uid: 31111 + - uid: 25452 components: - type: Transform pos: -60.5,-52.5 parent: 12 -- proto: AsteroidRockTin - entities: - - uid: 31022 + - uid: 25568 components: - type: Transform - pos: -56.5,-53.5 + pos: -56.5,-51.5 parent: 12 - - uid: 31107 + - uid: 25682 components: - type: Transform - pos: -64.5,-53.5 + pos: -59.5,-49.5 parent: 12 - - uid: 32125 + - uid: 25738 components: - type: Transform - pos: -64.5,-50.5 + pos: -58.5,-53.5 parent: 12 - - uid: 32182 + - uid: 26291 components: - type: Transform pos: -59.5,-51.5 parent: 12 + - uid: 26305 + components: + - type: Transform + pos: -41.5,-55.5 + parent: 12 + - uid: 26413 + components: + - type: Transform + pos: -41.5,-56.5 + parent: 12 + - uid: 29024 + components: + - type: Transform + pos: -60.5,-51.5 + parent: 12 + - uid: 29978 + components: + - type: Transform + pos: -59.5,-47.5 + parent: 12 + - uid: 30180 + components: + - type: Transform + pos: -60.5,-48.5 + parent: 12 + - uid: 30184 + components: + - type: Transform + pos: -62.5,-50.5 + parent: 12 + - uid: 30271 + components: + - type: Transform + pos: -51.5,-53.5 + parent: 12 + - uid: 30305 + components: + - type: Transform + pos: -50.5,-54.5 + parent: 12 + - uid: 30426 + components: + - type: Transform + pos: -51.5,-54.5 + parent: 12 + - uid: 30533 + components: + - type: Transform + pos: -46.5,-55.5 + parent: 12 + - uid: 30536 + components: + - type: Transform + pos: -49.5,-54.5 + parent: 12 + - uid: 30537 + components: + - type: Transform + pos: -49.5,-53.5 + parent: 12 + - uid: 30538 + components: + - type: Transform + pos: -47.5,-55.5 + parent: 12 + - uid: 31026 + components: + - type: Transform + pos: -50.5,-52.5 + parent: 12 + - uid: 31034 + components: + - type: Transform + pos: -57.5,-52.5 + parent: 12 + - uid: 31036 + components: + - type: Transform + pos: -61.5,-51.5 + parent: 12 + - uid: 31042 + components: + - type: Transform + pos: -60.5,-49.5 + parent: 12 +- proto: AsteroidRockCoal + entities: + - uid: 11027 + components: + - type: Transform + pos: -59.5,-52.5 + parent: 12 + - uid: 30341 + components: + - type: Transform + pos: -40.5,-57.5 + parent: 12 + - uid: 30457 + components: + - type: Transform + pos: -49.5,-55.5 + parent: 12 + - uid: 31038 + components: + - type: Transform + pos: -58.5,-50.5 + parent: 12 +- proto: AsteroidRockTin + entities: + - uid: 10822 + components: + - type: Transform + pos: -51.5,-52.5 + parent: 12 + - uid: 25823 + components: + - type: Transform + pos: -59.5,-50.5 + parent: 12 + - uid: 30342 + components: + - type: Transform + pos: -57.5,-53.5 + parent: 12 + - uid: 31030 + components: + - type: Transform + pos: -45.5,-55.5 + parent: 12 - proto: AtmosDeviceFanDirectional entities: - uid: 193 @@ -20560,6 +20470,11 @@ entities: - type: Transform pos: 85.5,-30.5 parent: 12 + - uid: 17289 + components: + - type: Transform + pos: -50.5,-53.5 + parent: 12 - uid: 26206 components: - type: Transform @@ -20570,6 +20485,41 @@ entities: - type: Transform pos: 55.5,19.5 parent: 12 + - uid: 26304 + components: + - type: Transform + pos: -48.5,-54.5 + parent: 12 + - uid: 26306 + components: + - type: Transform + pos: -52.5,-53.5 + parent: 12 + - uid: 26307 + components: + - type: Transform + pos: -53.5,-52.5 + parent: 12 + - uid: 26610 + components: + - type: Transform + pos: -44.5,-55.5 + parent: 12 + - uid: 26758 + components: + - type: Transform + pos: -40.5,-56.5 + parent: 12 + - uid: 26866 + components: + - type: Transform + pos: -58.5,-52.5 + parent: 12 + - uid: 27910 + components: + - type: Transform + pos: -60.5,-53.5 + parent: 12 - uid: 28746 components: - type: Transform @@ -20590,100 +20540,60 @@ entities: - type: Transform pos: 12.5,6.5 parent: 12 - - uid: 32194 + - uid: 29082 components: - type: Transform - pos: -65.5,-51.5 + pos: -62.5,-49.5 parent: 12 - - uid: 32195 + - uid: 30185 components: - type: Transform - pos: -61.5,-48.5 + pos: -56.5,-52.5 parent: 12 - - uid: 32196 - components: - - type: Transform - pos: -63.5,-50.5 - parent: 12 - - uid: 32197 - components: - - type: Transform - pos: -64.5,-52.5 - parent: 12 - - uid: 32198 + - uid: 30196 components: - type: Transform pos: -60.5,-50.5 parent: 12 - - uid: 32199 - components: - - type: Transform - pos: -61.5,-50.5 - parent: 12 - - uid: 32200 - components: - - type: Transform - pos: -59.5,-48.5 - parent: 12 - - uid: 32201 - components: - - type: Transform - pos: -58.5,-50.5 - parent: 12 - - uid: 32202 - components: - - type: Transform - pos: -57.5,-49.5 - parent: 12 - - uid: 32203 + - uid: 30198 components: - type: Transform pos: -57.5,-51.5 parent: 12 - - uid: 32204 + - uid: 30272 components: - type: Transform - pos: -56.5,-50.5 + pos: -61.5,-48.5 parent: 12 - - uid: 32205 + - uid: 30279 components: - type: Transform - pos: -58.5,-53.5 + pos: -59.5,-48.5 parent: 12 - - uid: 32206 + - uid: 30298 components: - type: Transform - pos: -58.5,-54.5 + pos: -62.5,-51.5 parent: 12 - - uid: 32207 + - uid: 30343 components: - type: Transform - pos: -57.5,-55.5 + pos: -40.5,-58.5 parent: 12 - - uid: 32208 + - uid: 30454 components: - type: Transform - pos: -56.5,-57.5 + pos: -47.5,-56.5 parent: 12 - - uid: 32209 + - uid: 30489 components: - type: Transform - pos: -55.5,-57.5 + pos: -58.5,-49.5 parent: 12 - - uid: 32210 + - uid: 30490 components: - type: Transform - pos: -55.5,-52.5 - parent: 12 - - uid: 32211 - components: - - type: Transform - pos: -63.5,-58.5 - parent: 12 - - uid: 32212 - components: - - type: Transform - pos: -64.5,-57.5 + pos: -41.5,-57.5 parent: 12 - proto: AtmosFixFreezerMarker entities: @@ -20999,11 +20909,6 @@ entities: - type: Transform pos: 2.5,70.5 parent: 12 - - uid: 10819 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - uid: 23721 components: - type: Transform @@ -21030,11 +20935,6 @@ entities: - type: Transform pos: 41.5,-19.5 parent: 12 - - uid: 32187 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: BarSignOfficerBeersky entities: - uid: 14512 @@ -21590,18 +21490,6 @@ entities: - type: Transform pos: -20.5,47.5 parent: 12 -- proto: Bible - entities: - - uid: 13308 - components: - - type: Transform - pos: 56.419914,38.685394 - parent: 12 - - uid: 13322 - components: - - type: Transform - pos: 43.41042,29.810503 - parent: 12 - proto: Biogenerator entities: - uid: 107 @@ -40881,46 +40769,11 @@ entities: - type: Transform pos: 35.5,-32.5 parent: 12 - - uid: 25568 - components: - - type: Transform - pos: -60.5,-55.5 - parent: 12 - - uid: 25581 - components: - - type: Transform - pos: -60.5,-56.5 - parent: 12 - - uid: 25598 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - uid: 25610 components: - type: Transform pos: 50.5,-0.5 parent: 12 - - uid: 25682 - components: - - type: Transform - pos: -60.5,-58.5 - parent: 12 - - uid: 25738 - components: - - type: Transform - pos: -60.5,-59.5 - parent: 12 - - uid: 25822 - components: - - type: Transform - pos: -61.5,-59.5 - parent: 12 - - uid: 25823 - components: - - type: Transform - pos: -59.5,-59.5 - parent: 12 - uid: 26097 components: - type: Transform @@ -41761,6 +41614,11 @@ entities: - type: Transform pos: -28.5,-0.5 parent: 12 + - uid: 27665 + components: + - type: Transform + pos: -50.5,-46.5 + parent: 12 - uid: 27712 components: - type: Transform @@ -44691,31 +44549,6 @@ entities: - type: Transform pos: 49.5,54.5 parent: 12 - - uid: 32128 - components: - - type: Transform - pos: -62.5,-53.5 - parent: 12 - - uid: 32129 - components: - - type: Transform - pos: -61.5,-53.5 - parent: 12 - - uid: 32130 - components: - - type: Transform - pos: -61.5,-54.5 - parent: 12 - - uid: 32131 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32213 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - uid: 32230 components: - type: Transform @@ -44771,12 +44604,6 @@ entities: - type: Transform pos: 43.47266,63.509254 parent: 12 - - uid: 31067 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -50.484467,-46.507282 - parent: 12 - uid: 31288 components: - type: Transform @@ -45185,6 +45012,11 @@ entities: - type: Transform pos: -43.5,-13.5 parent: 12 + - uid: 1764 + components: + - type: Transform + pos: -56.5,-53.5 + parent: 12 - uid: 1835 components: - type: Transform @@ -46070,11 +45902,6 @@ entities: - type: Transform pos: 42.5,-0.5 parent: 12 - - uid: 4976 - components: - - type: Transform - pos: -57.5,-57.5 - parent: 12 - uid: 4994 components: - type: Transform @@ -47670,6 +47497,11 @@ entities: - type: Transform pos: 51.5,-6.5 parent: 12 + - uid: 9631 + components: + - type: Transform + pos: -57.5,-54.5 + parent: 12 - uid: 9636 components: - type: Transform @@ -52575,6 +52407,11 @@ entities: - type: Transform pos: 30.5,14.5 parent: 12 + - uid: 25598 + components: + - type: Transform + pos: -56.5,-54.5 + parent: 12 - uid: 25613 components: - type: Transform @@ -56220,26 +56057,11 @@ entities: - type: Transform pos: -54.5,-50.5 parent: 12 - - uid: 31013 - components: - - type: Transform - pos: -58.5,-52.5 - parent: 12 - uid: 31054 components: - type: Transform pos: 30.5,11.5 parent: 12 - - uid: 31056 - components: - - type: Transform - pos: -57.5,-52.5 - parent: 12 - - uid: 31057 - components: - - type: Transform - pos: -56.5,-54.5 - parent: 12 - uid: 31058 components: - type: Transform @@ -56275,16 +56097,6 @@ entities: - type: Transform pos: -58.5,-43.5 parent: 12 - - uid: 31730 - components: - - type: Transform - pos: -56.5,-56.5 - parent: 12 - - uid: 31731 - components: - - type: Transform - pos: -58.5,-56.5 - parent: 12 - uid: 31775 components: - type: Transform @@ -56410,96 +56222,6 @@ entities: - type: Transform pos: 40.5,-10.5 parent: 12 - - uid: 32152 - components: - - type: Transform - pos: -65.5,-57.5 - parent: 12 - - uid: 32153 - components: - - type: Transform - pos: -65.5,-56.5 - parent: 12 - - uid: 32154 - components: - - type: Transform - pos: -65.5,-55.5 - parent: 12 - - uid: 32155 - components: - - type: Transform - pos: -65.5,-54.5 - parent: 12 - - uid: 32156 - components: - - type: Transform - pos: -64.5,-54.5 - parent: 12 - - uid: 32157 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - - uid: 32158 - components: - - type: Transform - pos: -62.5,-54.5 - parent: 12 - - uid: 32159 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - - uid: 32169 - components: - - type: Transform - pos: -58.5,-56.5 - parent: 12 - - uid: 32170 - components: - - type: Transform - pos: -58.5,-57.5 - parent: 12 - - uid: 32172 - components: - - type: Transform - pos: -57.5,-58.5 - parent: 12 - - uid: 32175 - components: - - type: Transform - pos: -56.5,-58.5 - parent: 12 - - uid: 32176 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - - uid: 32177 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - - uid: 32178 - components: - - type: Transform - pos: -60.5,-56.5 - parent: 12 - - uid: 32179 - components: - - type: Transform - pos: -60.5,-55.5 - parent: 12 - - uid: 32180 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32181 - components: - - type: Transform - pos: -55.5,-58.5 - parent: 12 - proto: CableHVStack entities: - uid: 353 @@ -66935,11 +66657,6 @@ entities: - type: Transform pos: -33.5,-57.5 parent: 12 - - uid: 31023 - components: - - type: Transform - pos: -61.5,-53.5 - parent: 12 - uid: 31295 components: - type: Transform @@ -67120,31 +66837,6 @@ entities: - type: Transform pos: 49.5,54.5 parent: 12 - - uid: 32160 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - - uid: 32161 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32162 - components: - - type: Transform - pos: -61.5,-54.5 - parent: 12 - - uid: 32165 - components: - - type: Transform - pos: -62.5,-53.5 - parent: 12 - - uid: 32166 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - proto: CableMVStack entities: - uid: 5999 @@ -67274,7 +66966,7 @@ entities: - uid: 13090 components: - type: Transform - pos: 56.215126,38.011414 + pos: 56.275406,37.942432 parent: 12 - uid: 13095 components: @@ -67294,7 +66986,7 @@ entities: - uid: 13252 components: - type: Transform - pos: 56.166515,36.49058 + pos: 56.26499,37.33827 parent: 12 - uid: 13254 components: @@ -71868,6 +71560,11 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,31.5 parent: 12 + - uid: 10820 + components: + - type: Transform + pos: -57.5,-47.5 + parent: 12 - uid: 10835 components: - type: Transform @@ -74072,12 +73769,22 @@ entities: - type: Transform pos: -26.5,23.5 parent: 12 + - uid: 25822 + components: + - type: Transform + pos: -55.5,-50.5 + parent: 12 - uid: 26236 components: - type: Transform rot: 3.141592653589793 rad pos: -20.5,59.5 parent: 12 + - uid: 26379 + components: + - type: Transform + pos: -50.5,-46.5 + parent: 12 - uid: 26414 components: - type: Transform @@ -74255,11 +73962,6 @@ entities: - type: Transform pos: -40.5,-52.5 parent: 12 - - uid: 27665 - components: - - type: Transform - pos: -41.5,-52.5 - parent: 12 - uid: 27666 components: - type: Transform @@ -75130,12 +74832,6 @@ entities: rot: 1.5707963267948966 rad pos: -34.5,-66.5 parent: 12 - - uid: 29082 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -34.5,-62.5 - parent: 12 - uid: 29085 components: - type: Transform @@ -75618,6 +75314,11 @@ entities: - type: Transform pos: -43.5,68.5 parent: 12 + - uid: 30301 + components: + - type: Transform + pos: -57.5,-48.5 + parent: 12 - uid: 30473 components: - type: Transform @@ -75928,6 +75629,36 @@ entities: - type: Transform pos: 3.5,-50.5 parent: 12 + - uid: 31024 + components: + - type: Transform + pos: -57.5,-45.5 + parent: 12 + - uid: 31031 + components: + - type: Transform + pos: -57.5,-54.5 + parent: 12 + - uid: 31032 + components: + - type: Transform + pos: -55.5,-49.5 + parent: 12 + - uid: 31035 + components: + - type: Transform + pos: -57.5,-44.5 + parent: 12 + - uid: 31039 + components: + - type: Transform + pos: -55.5,-51.5 + parent: 12 + - uid: 31041 + components: + - type: Transform + pos: -57.5,-43.5 + parent: 12 - uid: 31270 components: - type: Transform @@ -75964,31 +75695,6 @@ entities: rot: 1.5707963267948966 rad pos: 35.5,-15.5 parent: 12 - - uid: 32133 - components: - - type: Transform - pos: -61.5,-55.5 - parent: 12 - - uid: 32134 - components: - - type: Transform - pos: -61.5,-59.5 - parent: 12 - - uid: 32135 - components: - - type: Transform - pos: -60.5,-59.5 - parent: 12 - - uid: 32136 - components: - - type: Transform - pos: -59.5,-59.5 - parent: 12 - - uid: 32174 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - proto: Cautery entities: - uid: 9752 @@ -80052,13 +79758,6 @@ entities: - type: Transform pos: -21.667349,-7.343448 parent: 12 -- proto: ClothingHeadHelmetEVA - entities: - - uid: 32167 - components: - - type: Transform - pos: -61.5426,-52.550335 - parent: 12 - proto: ClothingHeadHelmetRiot entities: - uid: 20866 @@ -80244,7 +79943,8 @@ entities: - uid: 32127 components: - type: Transform - pos: -63.43215,-50.381607 + rot: -6.283185307179586 rad + pos: -60.515457,-50.51032 parent: 12 - proto: ClothingNeckCloakTrans entities: @@ -80479,13 +80179,6 @@ entities: - type: Transform pos: -11.945792,60.527626 parent: 12 -- proto: ClothingOuterHardsuitEVA - entities: - - uid: 32142 - components: - - type: Transform - pos: -62.521767,-52.550335 - parent: 12 - proto: ClothingOuterHoodieBlack entities: - uid: 25982 @@ -84185,6 +83878,13 @@ entities: - type: Transform pos: -30.5,9.5 parent: 12 +- proto: DefaultStationBeaconVox + entities: + - uid: 30179 + components: + - type: Transform + pos: 4.5,69.5 + parent: 12 - proto: DefaultStationBeaconWardensOffice entities: - uid: 20823 @@ -95641,13 +95341,6 @@ entities: - type: Transform pos: -33.231888,44.587296 parent: 12 -- proto: DrinkCogChampBase - entities: - - uid: 31114 - components: - - type: Transform - pos: -57.4781,-55.502342 - parent: 12 - proto: DrinkColaCan entities: - uid: 13334 @@ -96040,7 +95733,12 @@ entities: - uid: 13325 components: - type: Transform - pos: 44.5166,29.691267 + pos: 44.358738,29.577848 + parent: 12 + - uid: 26293 + components: + - type: Transform + pos: 44.139988,29.75493 parent: 12 - proto: DrinkTeaGlass entities: @@ -97166,10 +96864,10 @@ entities: parent: 12 - proto: EpinephrineChemistryBottle entities: - - uid: 17614 + - uid: 30546 components: - type: Transform - pos: -52.83247,28.80966 + pos: -52.860172,28.779083 parent: 12 - proto: ExosuitFabricator entities: @@ -102837,11 +102535,6 @@ entities: - type: Transform pos: -34.115353,-56.58399 parent: 12 - - uid: 32189 - components: - - type: Transform - pos: -60.632877,-54.815796 - parent: 12 - proto: FoodFrozenSnowcone entities: - uid: 22491 @@ -102963,6 +102656,13 @@ entities: - type: Transform pos: -30.5,-58.5 parent: 12 +- proto: FoodPizzaUraniumSlice + entities: + - uid: 30340 + components: + - type: Transform + pos: -40.483036,-56.420677 + parent: 12 - proto: FoodPlate entities: - uid: 15048 @@ -103101,11 +102801,6 @@ entities: - type: Transform pos: -29.443712,-54.018364 parent: 12 - - uid: 32191 - components: - - type: Transform - pos: -61.584267,-54.808846 - parent: 12 - proto: FoodPotato entities: - uid: 31464 @@ -103226,11 +102921,6 @@ entities: - type: Transform pos: -28.587122,-59.26843 parent: 12 - - uid: 32192 - components: - - type: Transform - pos: -61.132877,-54.03053 - parent: 12 - proto: Football entities: - uid: 22487 @@ -103304,6 +102994,8 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 18269 components: - type: Transform @@ -103851,6 +103543,8 @@ entities: rot: 3.141592653589793 rad pos: -13.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2812 components: - type: Transform @@ -106637,6 +106331,8 @@ entities: - type: Transform pos: -11.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 3505 components: - type: Transform @@ -108419,6 +108115,8 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2814 components: - type: Transform @@ -129861,12 +129559,16 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-55.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2810 components: - type: Transform rot: 3.141592653589793 rad pos: -11.5,-56.5 parent: 12 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2811 components: - type: Transform @@ -133167,7 +132869,7 @@ entities: pos: -10.5,-55.5 parent: 12 - type: AtmosPipeColor - color: '#0055CCFF' + color: '#03FCD3FF' - uid: 4092 components: - type: MetaData @@ -133290,6 +132992,8 @@ entities: targetTemperature: 100 - type: ApcPowerReceiver powerDisabled: False + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 2960 components: - type: Transform @@ -137318,12 +137022,6 @@ entities: - type: Transform pos: -33.5,-55.5 parent: 12 - - uid: 31113 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -64.5,-54.5 - parent: 12 - uid: 31439 components: - type: Transform @@ -138268,18 +137966,6 @@ entities: - type: Transform pos: 11.5,3.5 parent: 12 - - uid: 1613 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,63.5 - parent: 12 - - uid: 1764 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,62.5 - parent: 12 - uid: 1885 components: - type: Transform @@ -141758,6 +141444,11 @@ entities: - type: Transform pos: -54.5,75.5 parent: 12 + - uid: 13322 + components: + - type: Transform + pos: -57.5,-56.5 + parent: 12 - uid: 13991 components: - type: Transform @@ -143089,6 +142780,11 @@ entities: - type: Transform pos: -59.5,35.5 parent: 12 + - uid: 17614 + components: + - type: Transform + pos: -55.5,-56.5 + parent: 12 - uid: 17811 components: - type: Transform @@ -143118,11 +142814,6 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,48.5 parent: 12 - - uid: 18315 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - uid: 18561 components: - type: Transform @@ -143737,12 +143428,6 @@ entities: - type: Transform pos: -26.5,74.5 parent: 12 - - uid: 25452 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,62.5 - parent: 12 - uid: 25489 components: - type: Transform @@ -144098,76 +143783,16 @@ entities: - type: Transform pos: -22.5,3.5 parent: 12 - - uid: 26291 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -35.5,70.5 - parent: 12 - - uid: 26293 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -33.5,70.5 - parent: 12 - - uid: 26298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -36.5,70.5 - parent: 12 - uid: 26303 components: - type: Transform pos: -25.5,62.5 parent: 12 - - uid: 26304 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,70.5 - parent: 12 - - uid: 26305 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -31.5,70.5 - parent: 12 - - uid: 26306 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -37.5,70.5 - parent: 12 - - uid: 26307 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,69.5 - parent: 12 - uid: 26322 components: - type: Transform pos: -0.5,-31.5 parent: 12 - - uid: 26377 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,65.5 - parent: 12 - - uid: 26378 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,66.5 - parent: 12 - - uid: 26379 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,68.5 - parent: 12 - uid: 26396 components: - type: Transform @@ -144188,12 +143813,6 @@ entities: - type: Transform pos: 24.5,90.5 parent: 12 - - uid: 26413 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,67.5 - parent: 12 - uid: 26420 components: - type: Transform @@ -144251,12 +143870,6 @@ entities: - type: Transform pos: 14.5,-13.5 parent: 12 - - uid: 26610 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,70.5 - parent: 12 - uid: 26620 components: - type: Transform @@ -144314,18 +143927,6 @@ entities: - type: Transform pos: 29.5,-29.5 parent: 12 - - uid: 26758 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,70.5 - parent: 12 - - uid: 26866 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,64.5 - parent: 12 - uid: 26945 components: - type: Transform @@ -144531,12 +144132,6 @@ entities: rot: 1.5707963267948966 rad pos: -37.5,-70.5 parent: 12 - - uid: 27910 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -34.5,70.5 - parent: 12 - uid: 27915 components: - type: Transform @@ -145093,11 +144688,6 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,-40.5 parent: 12 - - uid: 29978 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - uid: 29998 components: - type: Transform @@ -145713,6 +145303,11 @@ entities: rot: 3.141592653589793 rad pos: -2.5,76.5 parent: 12 + - uid: 30491 + components: + - type: Transform + pos: -49.5,-56.5 + parent: 12 - uid: 30509 components: - type: Transform @@ -145753,6 +145348,16 @@ entities: - type: Transform pos: -28.5,-60.5 parent: 12 + - uid: 30547 + components: + - type: Transform + pos: -39.5,66.5 + parent: 12 + - uid: 30549 + components: + - type: Transform + pos: -38.5,70.5 + parent: 12 - uid: 30555 components: - type: Transform @@ -145783,17 +145388,62 @@ entities: - type: Transform pos: -29.5,-52.5 parent: 12 + - uid: 30572 + components: + - type: Transform + pos: -39.5,67.5 + parent: 12 - uid: 30580 components: - type: Transform rot: 3.141592653589793 rad pos: -27.5,-56.5 parent: 12 + - uid: 30582 + components: + - type: Transform + pos: -35.5,70.5 + parent: 12 - uid: 30584 components: - type: Transform pos: -29.5,-60.5 parent: 12 + - uid: 30834 + components: + - type: Transform + pos: -37.5,70.5 + parent: 12 + - uid: 30875 + components: + - type: Transform + pos: -34.5,70.5 + parent: 12 + - uid: 30965 + components: + - type: Transform + pos: -39.5,70.5 + parent: 12 + - uid: 30966 + components: + - type: Transform + pos: -38.5,62.5 + parent: 12 + - uid: 30967 + components: + - type: Transform + pos: -33.5,70.5 + parent: 12 + - uid: 30968 + components: + - type: Transform + pos: -39.5,69.5 + parent: 12 + - uid: 30969 + components: + - type: Transform + pos: -39.5,65.5 + parent: 12 - uid: 30971 components: - type: Transform @@ -145824,77 +145474,51 @@ entities: - type: Transform pos: -54.5,-46.5 parent: 12 + - uid: 31000 + components: + - type: Transform + pos: -39.5,64.5 + parent: 12 + - uid: 31001 + components: + - type: Transform + pos: -39.5,62.5 + parent: 12 + - uid: 31002 + components: + - type: Transform + pos: -39.5,63.5 + parent: 12 + - uid: 31008 + components: + - type: Transform + pos: -31.5,70.5 + parent: 12 + - uid: 31013 + components: + - type: Transform + pos: -32.5,70.5 + parent: 12 + - uid: 31015 + components: + - type: Transform + pos: -39.5,68.5 + parent: 12 + - uid: 31016 + components: + - type: Transform + pos: -36.5,70.5 + parent: 12 + - uid: 31021 + components: + - type: Transform + pos: -61.5,-46.5 + parent: 12 - uid: 31029 components: - type: Transform pos: -26.5,-58.5 parent: 12 - - uid: 31076 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -40.5,-56.5 - parent: 12 - - uid: 31077 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -41.5,-56.5 - parent: 12 - - uid: 31078 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,-56.5 - parent: 12 - - uid: 31079 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-56.5 - parent: 12 - - uid: 31080 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,-56.5 - parent: 12 - - uid: 31081 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,-56.5 - parent: 12 - - uid: 31082 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-56.5 - parent: 12 - - uid: 31083 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -50.5,-56.5 - parent: 12 - - uid: 31084 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -51.5,-53.5 - parent: 12 - - uid: 31085 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-46.5 - parent: 12 - - uid: 31086 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-45.5 - parent: 12 - uid: 31087 components: - type: Transform @@ -145949,16 +145573,6 @@ entities: rot: 3.141592653589793 rad pos: -56.5,-41.5 parent: 12 - - uid: 31101 - components: - - type: Transform - pos: -53.5,-56.5 - parent: 12 - - uid: 31102 - components: - - type: Transform - pos: -49.5,-56.5 - parent: 12 - uid: 31163 components: - type: Transform @@ -146079,11 +145693,6 @@ entities: - type: Transform pos: 41.5,-18.5 parent: 12 - - uid: 32121 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: GrilleBroken entities: - uid: 3719 @@ -146106,6 +145715,11 @@ entities: - type: Transform pos: -1.5,15.5 parent: 12 + - uid: 11397 + components: + - type: Transform + pos: -54.5,-56.5 + parent: 12 - uid: 12027 components: - type: Transform @@ -146116,11 +145730,26 @@ entities: - type: Transform pos: 48.5,-2.5 parent: 12 + - uid: 18315 + components: + - type: Transform + pos: -42.5,-59.5 + parent: 12 + - uid: 23167 + components: + - type: Transform + pos: -56.5,-56.5 + parent: 12 - uid: 28921 components: - type: Transform pos: 32.5,10.5 parent: 12 + - uid: 29064 + components: + - type: Transform + pos: -58.5,-56.5 + parent: 12 - uid: 30492 components: - type: Transform @@ -146146,51 +145775,25 @@ entities: - type: Transform pos: -29.5,-55.5 parent: 12 - - uid: 31096 + - uid: 31022 components: - type: Transform - rot: 3.141592653589793 rad pos: -61.5,-47.5 parent: 12 - - uid: 31097 + - uid: 31023 components: - type: Transform - pos: -61.5,-49.5 + pos: -59.5,-56.5 parent: 12 - - uid: 31098 + - uid: 31028 components: - type: Transform - pos: -54.5,-56.5 + pos: -50.5,-56.5 parent: 12 - - uid: 31099 + - uid: 31033 components: - type: Transform - pos: -53.5,-55.5 - parent: 12 - - uid: 31100 - components: - - type: Transform - pos: -52.5,-56.5 - parent: 12 - - uid: 31103 - components: - - type: Transform - pos: -47.5,-56.5 - parent: 12 - - uid: 31104 - components: - - type: Transform - pos: -51.5,-56.5 - parent: 12 - - uid: 31105 - components: - - type: Transform - pos: -48.5,-56.5 - parent: 12 - - uid: 31106 - components: - - type: Transform - pos: -52.5,-53.5 + pos: -61.5,-45.5 parent: 12 - proto: GrilleDiagonal entities: @@ -149137,11 +148740,6 @@ entities: - type: Transform pos: 53.5,25.5 parent: 12 - - uid: 29064 - components: - - type: Transform - pos: -62.5,-54.5 - parent: 12 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 27841 @@ -149745,11 +149343,6 @@ entities: parent: 12 - proto: Mattress entities: - - uid: 29008 - components: - - type: Transform - pos: -61.5,-52.5 - parent: 12 - uid: 29146 components: - type: Transform @@ -150004,7 +149597,7 @@ entities: - uid: 32188 components: - type: Transform - pos: -63.506554,-50.71072 + pos: -50.514328,-53.502277 parent: 12 - proto: Mirror entities: @@ -151523,7 +151116,7 @@ entities: - uid: 13335 components: - type: Transform - pos: 56.52551,36.441574 + pos: 56.98374,36.64035 parent: 12 - uid: 13622 components: @@ -152088,14 +151681,6 @@ entities: rot: -12.566370614359172 rad pos: -11.731569,-12.627775 parent: 12 -- proto: PlushieRatvar - entities: - - uid: 11397 - components: - - type: Transform - rot: -62.83185307179591 rad - pos: -64.51839,-52.561867 - parent: 12 - proto: PlushieSharkBlue entities: - uid: 4060 @@ -152206,14 +151791,6 @@ entities: - type: Transform pos: 3.5,-47.5 parent: 12 - - uid: 32132 - components: - - type: Transform - anchored: True - pos: -61.5,-55.5 - parent: 12 - - type: Physics - bodyType: Static - proto: PortableGeneratorJrPacmanMachineCircuitboard entities: - uid: 5347 @@ -152365,18 +151942,6 @@ entities: - type: Transform pos: -3.5,-64.5 parent: 12 - - uid: 32145 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-55.5 - parent: 12 - - uid: 32146 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-58.5 - parent: 12 - proto: PosterContrabandAtmosiaDeclarationIndependence entities: - uid: 23 @@ -155077,18 +154642,6 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,65.5 parent: 12 - - uid: 17288 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -49.5,20.5 - parent: 12 - - uid: 17289 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,20.5 - parent: 12 - uid: 17333 components: - type: Transform @@ -155447,6 +155000,23 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,49.5 parent: 12 + - uid: 26298 + components: + - type: Transform + pos: 45.5,-44.5 + parent: 12 + - uid: 26377 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -55.5,-49.5 + parent: 12 + - uid: 26378 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -23.5,-66.5 + parent: 12 - uid: 26408 components: - type: Transform @@ -155540,6 +155110,18 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,-7.5 parent: 12 + - uid: 28825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,47.5 + parent: 12 + - uid: 29008 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,69.5 + parent: 12 - uid: 29077 components: - type: Transform @@ -155572,6 +155154,11 @@ entities: rot: 3.141592653589793 rad pos: 56.5,60.5 parent: 12 + - uid: 31027 + components: + - type: Transform + pos: -50.5,22.5 + parent: 12 - uid: 31472 components: - type: Transform @@ -156700,6 +156287,12 @@ entities: rot: -1.5707963267948966 rad pos: 33.5,15.5 parent: 12 + - uid: 31025 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -52.5,17.5 + parent: 12 - uid: 31126 components: - type: Transform @@ -156758,12 +156351,6 @@ entities: powerLoad: 60 - type: DamageOnInteract isDamageActive: False - - uid: 32147 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -61.5,-55.5 - parent: 12 - proto: Protolathe entities: - uid: 2321 @@ -157539,6 +157126,11 @@ entities: - type: Transform pos: -17.5,-61.5 parent: 12 + - uid: 31017 + components: + - type: Transform + pos: -53.5,-47.5 + parent: 12 - uid: 31261 components: - type: Transform @@ -157560,11 +157152,6 @@ entities: rot: 1.5707963267948966 rad pos: 55.5,64.5 parent: 12 - - uid: 32173 - components: - - type: Transform - pos: -62.5,-52.5 - parent: 12 - proto: RadioHandheld entities: - uid: 9805 @@ -159754,11 +159341,6 @@ entities: - type: Transform pos: 45.5,62.5 parent: 12 - - uid: 32193 - components: - - type: Transform - pos: -60.5,-57.5 - parent: 12 - proto: RandomVending entities: - uid: 9099 @@ -160017,20 +159599,6 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,14.5 parent: 12 -- proto: ReinforcedGirder - entities: - - uid: 4769 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -54.5,-52.5 - parent: 12 - - uid: 31161 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -55.5,-49.5 - parent: 12 - proto: ReinforcedPlasmaWindow entities: - uid: 501 @@ -165607,16 +165175,6 @@ entities: rot: 3.141592653589793 rad pos: 37.5,-13.5 parent: 12 - - uid: 32117 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 12 - - uid: 32186 - components: - - type: Transform - pos: -63.5,-54.5 - parent: 12 - proto: ReinforcedWindowDiagonal entities: - uid: 19673 @@ -166123,7 +165681,7 @@ entities: - uid: 13323 components: - type: Transform - pos: 44.037434,29.555851 + pos: 43.473324,29.66118 parent: 12 - uid: 23679 components: @@ -166273,6 +165831,11 @@ entities: rot: -43.98229715025713 rad pos: 57.301918,-5.261206 parent: 12 + - uid: 31043 + components: + - type: Transform + pos: 59.707104,12.565823 + parent: 12 - proto: SheetPlastic entities: - uid: 1947 @@ -168702,13 +168265,6 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,49.5 parent: 12 -- proto: SolarAssembly - entities: - - uid: 31075 - components: - - type: Transform - pos: -54.5,-53.5 - parent: 12 - proto: SolarControlComputerCircuitboard entities: - uid: 8834 @@ -169342,12 +168898,6 @@ entities: rot: 1.5707963267948966 rad pos: -28.5,-68.5 parent: 12 - - uid: 10823 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -55.5,-58.5 - parent: 12 - uid: 10953 components: - type: Transform @@ -169952,6 +169502,12 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,-62.5 parent: 12 + - uid: 25581 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-52.5 + parent: 12 - uid: 27495 components: - type: Transform @@ -170120,6 +169676,12 @@ entities: rot: 1.5707963267948966 rad pos: -40.5,-62.5 parent: 12 + - uid: 30181 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-54.5 + parent: 12 - uid: 31009 components: - type: Transform @@ -170150,32 +169712,11 @@ entities: rot: -1.5707963267948966 rad pos: -58.5,-43.5 parent: 12 - - uid: 31016 + - uid: 31040 components: - type: Transform rot: -1.5707963267948966 rad - pos: -58.5,-52.5 - parent: 12 - - uid: 32148 - components: - - type: Transform - pos: -65.5,-57.5 - parent: 12 - - uid: 32150 - components: - - type: Transform - pos: -65.5,-54.5 - parent: 12 - - uid: 32151 - components: - - type: Transform - pos: -65.5,-56.5 - parent: 12 - - uid: 32183 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -57.5,-58.5 + pos: -56.5,-43.5 parent: 12 - proto: SolarPanelBroken entities: @@ -170184,6 +169725,12 @@ entities: - type: Transform pos: -38.5,-66.5 parent: 12 + - uid: 10821 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -56.5,-53.5 + parent: 12 - uid: 24256 components: - type: Transform @@ -170209,29 +169756,17 @@ entities: - type: Transform pos: -30.5,-68.5 parent: 12 - - uid: 30875 + - uid: 30306 components: - type: Transform rot: -1.5707963267948966 rad - pos: -58.5,-56.5 + pos: -58.5,-44.5 parent: 12 - - uid: 31000 + - uid: 30437 components: - type: Transform rot: -1.5707963267948966 rad - pos: -56.5,-54.5 - parent: 12 - - uid: 31001 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -58.5,-53.5 - parent: 12 - - uid: 31002 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -56.5,-56.5 + pos: -58.5,-54.5 parent: 12 - uid: 31003 components: @@ -170263,22 +169798,11 @@ entities: rot: -1.5707963267948966 rad pos: -58.5,-46.5 parent: 12 - - uid: 31008 + - uid: 31037 components: - type: Transform rot: -1.5707963267948966 rad - pos: -56.5,-43.5 - parent: 12 - - uid: 32149 - components: - - type: Transform - pos: -65.5,-55.5 - parent: 12 - - uid: 32184 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -56.5,-58.5 + pos: -58.5,-52.5 parent: 12 - proto: SolarTracker entities: @@ -170302,10 +169826,12 @@ entities: - type: Transform pos: -25.5,-69.5 parent: 12 - - uid: 31017 +- proto: SolarTrackerElectronics + entities: + - uid: 13308 components: - type: Transform - pos: -61.5,-50.5 + pos: -53.441116,-47.48533 parent: 12 - proto: SolidSecretDoor entities: @@ -171361,11 +170887,6 @@ entities: rot: -12.566370614359172 rad pos: -8.433574,-66.54101 parent: 12 - - uid: 32143 - components: - - type: Transform - pos: -62.424545,-53.537132 - parent: 12 - proto: Spoon entities: - uid: 23545 @@ -172734,11 +172255,6 @@ entities: - type: Transform pos: -36.5,-50.5 parent: 12 - - uid: 32116 - components: - - type: Transform - pos: -62.5,-55.5 - parent: 12 - proto: SuitStorageCaptain entities: - uid: 18757 @@ -173161,17 +172677,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Atmos lockers/engi hallway - - uid: 7157 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,17.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: TEG West - uid: 9821 components: - type: Transform @@ -173440,17 +172945,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Southeast solars 2 - - uid: 28825 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -52.5,-47.5 - parent: 12 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Southwest solars - uid: 31882 components: - type: Transform @@ -179068,7 +178562,7 @@ entities: - uid: 12618 components: - type: Transform - pos: 57.698708,36.671814 + pos: 57.535824,36.64035 parent: 12 - uid: 23411 components: @@ -179344,11 +178838,6 @@ entities: - type: Transform pos: -29.544153,-55.516808 parent: 12 - - uid: 32190 - components: - - type: Transform - pos: -60.494305,-59.53066 - parent: 12 - proto: TrashBananaPeel entities: - uid: 9367 @@ -193556,11 +193045,6 @@ entities: rot: -1.5707963267948966 rad pos: 36.5,22.5 parent: 12 - - uid: 10822 - components: - - type: Transform - pos: -59.5,-58.5 - parent: 12 - uid: 10887 components: - type: Transform @@ -197485,11 +196969,6 @@ entities: - type: Transform pos: -3.5,-48.5 parent: 12 - - uid: 23167 - components: - - type: Transform - pos: -59.5,-55.5 - parent: 12 - uid: 23174 components: - type: Transform @@ -198792,21 +198271,6 @@ entities: rot: 3.141592653589793 rad pos: -27.5,-55.5 parent: 12 - - uid: 31028 - components: - - type: Transform - pos: -63.5,-55.5 - parent: 12 - - uid: 31030 - components: - - type: Transform - pos: -61.5,-56.5 - parent: 12 - - uid: 31050 - components: - - type: Transform - pos: -63.5,-53.5 - parent: 12 - uid: 31180 components: - type: Transform @@ -199063,11 +198527,6 @@ entities: rot: 3.141592653589793 rad pos: -45.5,69.5 parent: 12 - - uid: 9631 - components: - - type: Transform - pos: -60.5,-51.5 - parent: 12 - uid: 9671 components: - type: Transform @@ -199079,16 +198538,6 @@ entities: - type: Transform pos: 46.5,-37.5 parent: 12 - - uid: 10820 - components: - - type: Transform - pos: -59.5,-52.5 - parent: 12 - - uid: 11027 - components: - - type: Transform - pos: -59.5,-56.5 - parent: 12 - uid: 11332 components: - type: Transform @@ -200222,11 +199671,6 @@ entities: - type: Transform pos: -27.5,-58.5 parent: 12 - - uid: 31021 - components: - - type: Transform - pos: -62.5,-56.5 - parent: 12 - uid: 31044 components: - type: Transform @@ -200289,17 +199733,6 @@ entities: rot: 3.141592653589793 rad pos: 4.5,-62.5 parent: 12 - - uid: 32120 - components: - - type: Transform - pos: -61.5,-58.5 - parent: 12 - - uid: 32164 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -59.5,-54.5 - parent: 12 - proto: WallWood entities: - uid: 11826 @@ -202758,11 +202191,6 @@ entities: - type: Transform pos: 41.5,-18.5 parent: 12 - - uid: 32118 - components: - - type: Transform - pos: -61.5,-57.5 - parent: 12 - proto: WindowDirectional entities: - uid: 7837 diff --git a/Resources/Maps/core.yml b/Resources/Maps/core.yml index 1c5b67b500..aed0f19d81 100644 --- a/Resources/Maps/core.yml +++ b/Resources/Maps/core.yml @@ -12942,6 +12942,10 @@ entities: rot: -1.5707963267948966 rad pos: 30.5,-42.5 parent: 2 + - type: DeviceList + devices: + - 20006 + - 20005 - uid: 8436 components: - type: Transform @@ -95454,6 +95458,9 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,-42.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8434 - type: AtmosPipeColor color: '#0335FCFF' - uid: 20037 @@ -96655,6 +96662,9 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,-45.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8434 - type: AtmosPipeColor color: '#FF1212FF' - uid: 20038 diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index 1f210e438a..93a6bc31c4 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -10880,7 +10880,7 @@ entities: pos: -42.5,29.5 parent: 5350 - type: Door - secondsUntilStateChange: -5745.716 + secondsUntilStateChange: -5834.8745 state: Opening - type: DeviceLinkSink invokeCounter: 2 @@ -56106,11 +56106,6 @@ entities: rot: -1.5707963267948966 rad pos: -73.5,7.5 parent: 5350 - - uid: 6164 - components: - - type: Transform - pos: -71.5,-8.5 - parent: 5350 - uid: 6165 components: - type: Transform diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml index 5e2b6aeb75..4c0a9826de 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml @@ -30,7 +30,7 @@ - id: MedkitOxygenFilled prob: 0.2 - id: WeaponFlareGun - prob: 0.05 + prob: 0.1 - id: BoxMRE prob: 0.1 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index e2dd9ac3f3..2280c3fecb 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1784,6 +1784,11 @@ # intended for swarms that eat pills so only temporary - type: TimedDespawn lifetime: 60 + - type: Hunger + baseDecayRate: 10 # always hungry + starvingSlowdownModifier: 1 + - type: Thirst + baseDecayRate: 10 # always thirsty - type: entity parent: MobMouse @@ -3381,7 +3386,7 @@ - type: HTN rootTask: task: RuminantCompound - + - type: entity name: diona nymph parent: [SimpleMobBase, StripableInventoryBase] diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index be2b5a44f9..39750b470f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -69,8 +69,6 @@ canShuttle: false title: comms-console-announcement-title-station-ai color: "#2ed2fd" - - type: Speech - speechVerb: Robotic - type: ShowJobIcons - type: entity @@ -395,6 +393,9 @@ drawFov: false - type: Examiner - type: InputMover + - type: Speech + speechVerb: Robotic + speechSounds: Borg - type: Tag tags: - HideContextMenu diff --git a/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml b/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml index f07ae63569..b6819a18b9 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml @@ -17,15 +17,12 @@ blacklist: components: - ChameleonDisguise # no becoming kleiner - - InsideEntityStorage # no clark kent going in phone booth and becoming superman - MindContainer # no - Pda # PDAs currently make you invisible /!\ - polymorph: - entity: ChameleonDisguise + disguiseProto: ChameleonDisguise - type: entity categories: [ HideSpawnMenu ] - parent: BaseMob id: ChameleonDisguise name: Urist McKleiner components: @@ -33,20 +30,11 @@ - type: Sprite sprite: /Textures/Mobs/Species/Human/parts.rsi state: full - # so people can attempt to pick it up - - type: Item - # so it can take damage - # projector system sets health to be proportional to mass + - type: Transform + noRot: true # players rotation and anchor is used instead + - type: InteractionOutline + - type: Clickable - type: Damageable - - type: MobState - - type: MobThresholds - thresholds: - 0: Alive - 1: Critical - 200: Dead - - type: MovementSpeedModifier - baseWalkSpeed: 1 # precise movement for the perfect spot - baseSprintSpeed: 5 # the jig is up - type: ChameleonDisguise # actions @@ -57,6 +45,7 @@ components: - type: InstantAction icon: Interface/VerbIcons/refresh.svg.192dpi.png + itemIconStyle: BigAction event: !type:DisguiseToggleNoRotEvent - type: entity @@ -68,4 +57,5 @@ icon: sprite: Objects/Tools/wrench.rsi state: icon + itemIconStyle: BigAction event: !type:DisguiseToggleAnchoredEvent diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml index 47577b0857..dd00440eec 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -24,6 +24,11 @@ name: shell (.50 beanbag) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: beanbag @@ -52,6 +57,11 @@ name: shell (.50 flare) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: flare @@ -106,6 +116,11 @@ name: shell (.50 tranquilizer) parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: tranquilizer @@ -130,6 +145,11 @@ description: A homemade shotgun shell that shoots painful glass shrapnel. The spread is so wide that it couldn't hit the broad side of a barn. parent: BaseShellShotgun components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - ShellShotgunLight - type: Sprite layers: - state: improvised diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index a22be1da04..5140a358e1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -19,6 +19,7 @@ minAngle: 2 maxAngle: 16 fireRate: 8 + burstFireRate: 8 angleIncrease: 3 angleDecay: 16 selectedMode: FullAuto @@ -27,6 +28,7 @@ - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/smg.ogg + defaultDirection: 1, 0 - type: ChamberMagazineAmmoProvider soundRack: path: /Audio/Weapons/Guns/Cock/smg_cock.ogg @@ -140,12 +142,15 @@ - type: Gun minAngle: 21 maxAngle: 32 - fireRate: 6 - selectedMode: FullAuto + fireRate: 12 + burstFireRate: 12 + selectedMode: Burst soundGunshot: path: /Audio/Weapons/Guns/Gunshots/atreides.ogg availableModes: - - FullAuto + - Burst + shotsPerBurst: 3 + burstCooldown: 0.25 - type: ItemSlots slots: gun_magazine: @@ -250,6 +255,8 @@ angleDecay: 6 selectedMode: FullAuto shotsPerBurst: 5 + burstCooldown: 0.2 + burstFireRate: 7 availableModes: - SemiAuto - Burst diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml index 9b046a7aae..b63036c58b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/flare_gun.yml @@ -1,17 +1,44 @@ - type: entity name: flare gun - parent: BaseWeaponLauncher + parent: BaseItem id: WeaponFlareGun - description: A compact, single-shot pistol that fires shotgun shells. + description: A compact, single-shot pistol that fires shotgun shells. Comes with a safety feature that prevents the user from fitting lethal shells inside. components: - type: Sprite sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi layers: - - state: icon + - state: base map: ["enum.GunVisualLayers.Base"] - type: Item size: Small sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi + - type: ItemSlots + slots: + gun_chamber: + name: Chamber + startingItem: ShellShotgunFlare + priority: 1 + whitelist: + tags: ## TODO: Add a risk of the gun blowing up if using non-light shotgun shells, and then re-enable them. + ## - ShellShotgun + - ShellShotgunLight + - type: ContainerContainer + containers: + gun_chamber: !type:ContainerSlot + - type: ChamberMagazineAmmoProvider + autoCycle: false + boltClosed: true + canRack: false + soundBoltClosed: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + soundBoltOpened: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + soundRack: /Audio/Weapons/Guns/Cock/revolver_cock.ogg + - type: Clothing + sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi + quickEquip: false + slots: + - Belt + - suitStorage + - type: Appearance - type: Gun fireRate: 8 selectedMode: SemiAuto @@ -19,21 +46,30 @@ - SemiAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/flaregun.ogg - - type: BallisticAmmoProvider - whitelist: - tags: - - ShellShotgun - proto: ShellShotgunFlare - capacity: 1 - soundInsert: - path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg - - type: ContainerContainer - containers: - ballistic-ammo: !type:Container - ents: [] - - type: Clothing - sprite: Objects/Weapons/Guns/Shotguns/flaregun.rsi - quickEquip: false + + +- type: entity + name: security shell gun + parent: [WeaponFlareGun, BaseSecurityContraband] + id: WeaponFlareGunSecurity + description: A modified flare gun originally designed to be used by security to launch non-lethal shotgun shells, however it can also fire lethal shells without risk. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Shotguns/flaregun_security.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - type: Item + size: Small + sprite: Objects/Weapons/Guns/Shotguns/flaregun_security.rsi + - type: ItemSlots slots: - - Belt - - suitStorage + gun_chamber: + name: Chamber + priority: 1 + whitelist: + tags: + - ShellShotgun + - type: Tag + tags: + - Sidearm diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b27f2cc1b9..020566ad1a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -768,6 +768,7 @@ - TargetHuman - TargetSyndicate - WeaponDisablerPractice + - WeaponFlareGunSecurity - WeaponLaserCarbinePractice - Zipties dynamicRecipes: diff --git a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml index 3449d1d11a..8421b6b4dc 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/clockwork.yml @@ -152,4 +152,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: clockworkWindowDiagonal + node: clockworkWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/mining.yml b/Resources/Prototypes/Entities/Structures/Windows/mining.yml index f0b77e6689..9d05fbb5e2 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/mining.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/mining.yml @@ -91,4 +91,4 @@ - East - type: DamageVisuals damageOverlay: - sprite: Structures/Windows/cracks_diagonal.rsi + sprite: Structures/Windows/cracks_diagonal.rsi \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml index 58991b9286..8758e1075e 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plasma.yml @@ -152,4 +152,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: plasmaWindowDiagonal + node: plasmaWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml index e7af4b6c67..c50bc6e030 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/plastitanium.yml @@ -195,4 +195,4 @@ doAfterDelay: 3 - type: Damageable damageContainer: StructuralInorganic - damageModifierSet: RGlass + damageModifierSet: RGlass \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml index 9e80d46e64..238b71e3fd 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/reinforced.yml @@ -159,4 +159,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedWindowDiagonal + node: reinforcedWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml index 0dfe893a5c..2ad0eb8410 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/rplasma.yml @@ -155,4 +155,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedPlasmaWindowDiagonal + node: reinforcedPlasmaWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml index 2231ab6a49..daae6a4726 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/ruranium.yml @@ -152,4 +152,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: reinforcedUraniumWindowDiagonal + node: reinforcedUraniumWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml index 659f5b8a20..f70b684abd 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml @@ -94,4 +94,4 @@ - East - type: DamageVisuals damageOverlay: - sprite: Structures/Windows/cracks_diagonal.rsi + sprite: Structures/Windows/cracks_diagonal.rsi \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml index 514463f1d3..db93228009 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/uranium.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/uranium.yml @@ -147,4 +147,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: uraniumWindowDiagonal + node: uraniumWindowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Windows/window.yml b/Resources/Prototypes/Entities/Structures/Windows/window.yml index fdf4c2ccea..5b6530a9e5 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/window.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/window.yml @@ -284,4 +284,4 @@ sprite: Structures/Windows/cracks_diagonal.rsi - type: Construction graph: WindowDiagonal - node: windowDiagonal + node: windowDiagonal \ No newline at end of file diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index cec5c9ee09..6ca322d0d5 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -191,12 +191,17 @@ - type: entity id: TraitorReinforcement - parent: Traitor + parent: BaseTraitorRule components: - type: TraitorRule giveUplink: false giveCodewords: false # It would actually give them a different set of codewords than the regular traitors, anyway giveBriefing: false + - type: AntagSelection + definitions: + - prefRoles: [ Traitor ] + mindRoles: + - MindRoleTraitor - type: entity id: Revolutionary @@ -280,7 +285,6 @@ tableId: CalmPestEventsTable - !type:NestedSelector tableId: SpicyPestEventsTable - - type: entityTable id: SpaceTrafficControlTable diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml index b9e6eae081..37682eb091 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml @@ -4,63 +4,61 @@ graph: - node: start edges: - - to: window # 50 hp - steps: - - material: Glass - amount: 2 - doAfter: 2 - - - to: tintedWindow # 50 hp - steps: - - material: Glass - amount: 2 - - material: Plastic - amount: 2 - doAfter: 2 - - - to: plasmaWindow # 75 hp + - to: plasmaWindow steps: - material: PlasmaGlass amount: 2 - doAfter: 3 + doAfter: 2 - - to: uraniumWindow # 75 hp - steps: - - material: UraniumGlass - amount: 2 - doAfter: 3 - - - to: clockworkWindow # 75 hp reinforced damage mod - steps: - - material: ClockworkGlass - amount: 2 - doAfter: 3 - - - to: reinforcedWindow # 75 hp reinforced damage mod + - to: reinforcedWindow steps: - material: ReinforcedGlass amount: 2 - doAfter: 3 + doAfter: 2 - - to: reinforcedPlasmaWindow # 150 hp reinforced damage mod + - to: tintedWindow + steps: + - material: ReinforcedGlass + amount: 2 + doAfter: 2 + + - to: reinforcedPlasmaWindow steps: - material: ReinforcedPlasmaGlass amount: 2 - doAfter: 4 + doAfter: 3 - - to: reinforcedUraniumWindow # 150 hp reinforced damage mod + - to: uraniumWindow + steps: + - material: UraniumGlass + amount: 2 + doAfter: 2 + + - to: reinforcedUraniumWindow steps: - material: ReinforcedUraniumGlass amount: 2 - doAfter: 4 + doAfter: 3 - - to: shuttleWindow # 500 hp reinforced damage mod (wow) + - to: window + steps: + - material: Glass + amount: 2 + doAfter: 3 + + - to: shuttleWindow steps: - material: Plasteel amount: 2 - material: ReinforcedGlass amount: 2 - doAfter: 6 + doAfter: 4 + + - to: clockworkWindow + steps: + - material: ClockworkGlass + amount: 2 + doAfter: 3 - node: window entity: Window @@ -76,120 +74,6 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: tintedWindow - steps: - - material: Plastic - amount: 2 - doAfter: 0.5 - - to: plasmaWindow - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: uraniumWindow - steps: - - material: Uranium - amount: 2 - doAfter: 1 - - to: clockworkWindow - steps: - - material: Brass - amount: 2 - doAfter: 2 - - to: reinforcedWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 2 - - - node: tintedWindow - entity: TintedWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetGlass1 - amount: 2 - - !type:SpawnPrototype - prototype: SheetPlastic1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - - - node: plasmaWindow - entity: PlasmaWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetPGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedPlasmaWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: uraniumWindow - entity: UraniumWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedUraniumWindow - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: clockworkWindow - entity: ClockworkWindow - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetClockworkGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - node: reinforcedWindow entity: ReinforcedWindow @@ -213,20 +97,43 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindow - steps: - - material: Plasma + + - node: tintedWindow + entity: TintedWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetRGlass1 amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing doAfter: 1 - - to: reinforcedUraniumWindow - steps: - - material: Uranium - amount: 2 + - tool: Prying + doAfter: 2 + - tool: Screwing doAfter: 1 - - to: shuttleWindow - steps: - - material: Plasteel + - tool: Anchoring + doAfter: 2 + + - node: plasmaWindow + entity: PlasmaWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetPGlass1 amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring doAfter: 3 - node: reinforcedPlasmaWindow @@ -252,6 +159,25 @@ - tool: Anchoring doAfter: 3 + - node: uraniumWindow + entity: UraniumWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 + - node: reinforcedUraniumWindow entity: ReinforcedUraniumWindow edges: @@ -274,6 +200,29 @@ doAfter: 2 - tool: Anchoring doAfter: 3 + + - node: clockworkWindow + entity: ClockworkWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetClockworkGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: shuttleWindow entity: ShuttleWindow @@ -304,4 +253,4 @@ - tool: Welding doAfter: 4 - tool: Anchoring - doAfter: 1 + doAfter: 1 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml index 63788ae5ad..1efe1a8eac 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window_diagonal.yml @@ -4,30 +4,12 @@ graph: - node: start edges: - - to: windowDiagonal - steps: - - material: Glass - amount: 2 - doAfter: 2 - - to: plasmaWindowDiagonal steps: - material: PlasmaGlass amount: 2 doAfter: 2 - - to: uraniumWindowDiagonal - steps: - - material: UraniumGlass - amount: 2 - doAfter: 2 - - - to: clockworkWindowDiagonal - steps: - - material: ClockworkGlass - amount: 2 - doAfter: 3 - - to: reinforcedWindowDiagonal steps: - material: ReinforcedGlass @@ -40,12 +22,30 @@ amount: 2 doAfter: 3 + - to: uraniumWindowDiagonal + steps: + - material: UraniumGlass + amount: 2 + doAfter: 2 + - to: reinforcedUraniumWindowDiagonal steps: - material: ReinforcedUraniumGlass amount: 2 doAfter: 3 + - to: clockworkWindowDiagonal + steps: + - material: ClockworkGlass + amount: 2 + doAfter: 3 + + - to: windowDiagonal + steps: + - material: Glass + amount: 2 + doAfter: 3 + - node: windowDiagonal entity: WindowDiagonal edges: @@ -60,97 +60,6 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: plasmaWindowDiagonal - steps: - - material: Plasma - amount: 2 - doAfter: 1 - - to: uraniumWindowDiagonal - steps: - - material: Uranium - amount: 2 - doAfter: 1 - - to: clockworkWindowDiagonal - steps: - - material: Brass - amount: 2 - doAfter: 2 - - to: reinforcedWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 2 - - - node: plasmaWindowDiagonal - entity: PlasmaWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetPGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedPlasmaWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: uraniumWindowDiagonal - entity: UraniumWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: reinforcedUraniumWindowDiagonal - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - - node: clockworkWindowDiagonal - entity: ClockworkWindowDiagonal - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetClockworkGlass1 - amount: 2 - - !type:DeleteEntity {} - steps: - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 1 - - tool: Prying - doAfter: 2 - - tool: Welding - doAfter: 5 - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - node: reinforcedWindowDiagonal entity: ReinforcedWindowDiagonal @@ -174,16 +83,48 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: reinforcedPlasmaWindowDiagonal - steps: - - material: Plasma + + - node: clockworkWindowDiagonal + entity: ClockworkWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetClockworkGlass1 amount: 2 - doAfter: 1 - - to: reinforcedUraniumWindowDiagonal + - !type:DeleteEntity {} steps: - - material: Uranium - amount: 2 + - tool: Welding + doAfter: 5 + - tool: Screwing doAfter: 1 + - tool: Prying + doAfter: 2 + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + + - node: plasmaWindowDiagonal + entity: PlasmaWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetPGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: reinforcedPlasmaWindowDiagonal entity: ReinforcedPlasmaWindowDiagonal @@ -208,6 +149,25 @@ - tool: Anchoring doAfter: 3 + - node: uraniumWindowDiagonal + entity: UraniumWindowDiagonal + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 + - node: reinforcedUraniumWindowDiagonal entity: ReinforcedUraniumWindowDiagonal edges: @@ -229,4 +189,4 @@ - tool: Screwing doAfter: 2 - tool: Anchoring - doAfter: 3 + doAfter: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml index 7d3ace33c7..dc10ce9ecb 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/windowdirectional.yml @@ -4,55 +4,47 @@ graph: - node: start edges: - - to: windowDirectional # 25 hp + + - to: windowDirectional steps: - material: Glass amount: 1 - doAfter: 1 + doAfter: 2 - - to: windowFrostedDirectional # 25 hp - steps: - - material: Glass - amount: 1 - - material: Plastic - amount: 1 - doAfter: 1 - - - to: plasmaWindowDirectional # 37 hp - steps: - - material: PlasmaGlass - amount: 1 - doAfter: 1.5 - - - to: uraniumWindowDirectional # 37 hp - steps: - - material: UraniumGlass - amount: 1 - doAfter: 1.5 - - - to: windowClockworkDirectional # 37 hp reinforced damage mod - steps: - - material: ClockworkGlass - amount: 1 - doAfter: 1.5 - - - to: windowReinforcedDirectional # 37 hp reinforced damage mod + - to: windowReinforcedDirectional steps: - material: ReinforcedGlass amount: 1 - doAfter: 1.5 + doAfter: 3 - - to: plasmaReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: plasmaWindowDirectional + steps: + - material: PlasmaGlass + amount: 1 + doAfter: 2 + + - to: plasmaReinforcedWindowDirectional steps: - material: ReinforcedPlasmaGlass + amount: 1 + doAfter: 3 + - to: uraniumWindowDirectional + steps: + - material: UraniumGlass amount: 1 doAfter: 2 - - to: uraniumReinforcedWindowDirectional # 75 hp reinforced damage mod + - to: uraniumReinforcedWindowDirectional steps: - material: ReinforcedUraniumGlass amount: 1 - doAfter: 2 + doAfter: 3 + + - to: windowClockworkDirectional + steps: + - material: ClockworkGlass + amount: 1 + doAfter: 3 - node: windowDirectional entity: WindowDirectional @@ -68,45 +60,21 @@ doAfter: 1 - tool: Anchoring doAfter: 2 - - to: windowFrostedDirectional - steps: - - material: Plastic - amount: 1 - doAfter: 0.5 - - to: plasmaWindowDirectional - steps: - - material: Plasma - amount: 1 - doAfter: 0.5 - - to: uraniumWindowDirectional - steps: - - material: Uranium - amount: 1 - doAfter: 0.5 - - to: windowClockworkDirectional - steps: - - material: Brass - amount: 1 - doAfter: 1 - - to: windowReinforcedDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 1 - - node: windowFrostedDirectional - entity: WindowFrostedDirectional + - node: windowReinforcedDirectional + entity: WindowReinforcedDirectional edges: - to: start completed: - !type:SpawnPrototype - prototype: SheetGlass1 - amount: 1 - - !type:SpawnPrototype - prototype: SheetPlastic1 + prototype: SheetRGlass1 amount: 1 - !type:DeleteEntity {} steps: + - tool: Screwing + doAfter: 1 + - tool: Prying + doAfter: 2 - tool: Screwing doAfter: 1 - tool: Anchoring @@ -130,35 +98,6 @@ doAfter: 2 - tool: Anchoring doAfter: 3 - - to: plasmaReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - - - node: uraniumWindowDirectional - entity: UraniumWindowDirectional - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetUGlass1 - amount: 1 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 2 - - tool: Prying - doAfter: 3 - - tool: Screwing - doAfter: 2 - - tool: Anchoring - doAfter: 3 - - to: uraniumReinforcedWindowDirectional - steps: - - material: MetalRod - amount: 1 - doAfter: 0.5 - node: windowClockworkDirectional entity: WindowClockworkDirectional @@ -179,35 +118,6 @@ - tool: Anchoring doAfter: 3 - - node: windowReinforcedDirectional - entity: WindowReinforcedDirectional - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetRGlass1 - amount: 1 - - !type:DeleteEntity {} - steps: - - tool: Screwing - doAfter: 1 - - tool: Prying - doAfter: 2 - - tool: Screwing - doAfter: 1 - - tool: Anchoring - doAfter: 2 - - to: plasmaReinforcedWindowDirectional - steps: - - material: Plasma - amount: 1 - doAfter: 0.5 - - to: uraniumReinforcedWindowDirectional - steps: - - material: Uranium - amount: 1 - doAfter: 0.5 - - node: plasmaReinforcedWindowDirectional entity: PlasmaReinforcedWindowDirectional edges: @@ -226,6 +136,24 @@ doAfter: 2 - tool: Anchoring doAfter: 3 + - node: uraniumWindowDirectional + entity: UraniumWindowDirectional + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetUGlass1 + amount: 1 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Screwing + doAfter: 2 + - tool: Anchoring + doAfter: 3 - node: uraniumReinforcedWindowDirectional entity: UraniumReinforcedWindowDirectional @@ -244,4 +172,4 @@ - tool: Screwing doAfter: 2 - tool: Anchoring - doAfter: 3 + doAfter: 3 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 71fdbeedaf..44a7134597 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -1746,4 +1746,4 @@ sprite: Structures/Doors/secret_door.rsi state: closed conditions: - - !type:TileNotBlocked + - !type:TileNotBlocked \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 29227fb9db..f6f303e5e3 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -603,6 +603,15 @@ Plastic: 320 Uranium: 240 +- type: latheRecipe + parent: BaseWeaponRecipe + id: WeaponFlareGunSecurity + result: WeaponFlareGunSecurity + completetime: 6 + materials: + Plastic: 100 + Steel: 400 + - type: latheRecipe parent: BaseWeaponRecipe id: WeaponDisabler diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index fa1014e990..99a620aaae 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -19,7 +19,6 @@ weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 3e8b030ed7..f430ad259d 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -20,7 +20,6 @@ weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" - requireAdminNotify: true joinNotifyCrew: true supervisors: job-supervisors-centcom canBeAntag: false diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index e26fcc8cb7..87b63ae14d 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -20,7 +20,6 @@ weight: 20 startingGear: HoPGear icon: "JobIconHeadOfPersonnel" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index c1b3e2ef91..82f4ddf511 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -19,7 +19,6 @@ weight: 10 startingGear: ChiefEngineerGear icon: "JobIconChiefEngineer" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 33e0496678..b1ef57931e 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -21,7 +21,6 @@ weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index f308bf6d02..2575ca995e 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -13,7 +13,6 @@ weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 10344d7458..d5a48f7628 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -19,7 +19,6 @@ weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity" - requireAdminNotify: true supervisors: job-supervisors-captain canBeAntag: false access: diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 414673e39a..49da28bbf8 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -10,7 +10,6 @@ time: 36000 #10 hrs startingGear: WardenGear icon: "JobIconWarden" - requireAdminNotify: true supervisors: job-supervisors-hos canBeAntag: false access: diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 48bce7ddab..be9c90ce93 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1198,6 +1198,9 @@ - type: Tag id: ShellShotgun +- type: Tag + id: ShellShotgunLight # shotgun shells that are compatible with the flare gun. + - type: Tag id: Shiv diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml index 3821816128..1ddf73cc77 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml @@ -2,7 +2,7 @@ # Roleplay Rule 12 - Do not abandon your role Do not join the round as a role that you don't intend to play. Do not enable antagonist roles that you don't intend to play. Abandoning a role includes not completing tasks that the role is expected to do, in addition to things like leaving the game. Members of command should almost all stay on the station until the emergency shuttle arrives. Enforcement of this rule is more strict for command and antagonist roles, and less strict for less important roles like passengers. - Violations of this rule typically result in temporary or indefinite role bans. We understand that you may need to leave round early or unexpectedly. If you are in an important role (which is relayed to you in chat upon receiving your role), you should notify command members or an admin via ahelp so that they know you are leaving. Space Station 14 is a game. Do not endanger the safety of yourself or others, and do not neglect important things to avoid leaving a round early, even if you have to leave immediately without notifying anyone. Role bans for disconnecting are typically only applied if there is a pattern, and are almost always temporary. + Violations of this rule typically result in temporary or indefinite role bans. We understand that you may need to leave round early or unexpectedly. If you are in an important role (which is relayed to you in chat upon receiving your role), you should notify command members so that they know you are leaving and attempt to cryosleep if possible. Space Station 14 is a game. Do not endanger the safety of yourself or others, and do not neglect important things to avoid leaving a round early, even if you have to leave immediately without notifying anyone. Role bans for disconnecting are typically only applied if there is a pattern, and are almost always temporary. "Antag rolling" refers to a player abandoning their role if they do not get an antagonist role. diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/base.png similarity index 100% rename from Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/icon.png rename to Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/base.png diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json index fc96d8d519..4384076149 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun.rsi/meta.json @@ -8,7 +8,7 @@ }, "states": [ { - "name": "icon" + "name": "base" }, { "name": "bolt-open" diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png new file mode 100644 index 0000000000..0b39a08c92 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png new file mode 100644 index 0000000000..65052544c7 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/bolt-open.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-BELT.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-BELT.png new file mode 100644 index 0000000000..fb2854b6fe Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-BELT.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 0000000000..fb2854b6fe Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-left.png new file mode 100644 index 0000000000..bff3d731c4 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png new file mode 100644 index 0000000000..50297902ee Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json new file mode 100644 index 0000000000..04abe1a4e0 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/flaregun_security.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/3f9ebb72931ff884427c3004a594ec61aaaa7041/icons/obj/guns/projectile/flaregun.dmi and edited", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "bolt-open" + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "equipped-BELT", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + } + ] +}