diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 3b666c9c9a7..6af553bc94e 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -186,7 +186,7 @@ private void OnVisualsChanged(EntityUid uid, InventoryComponent component, Visua if (!TryComp(item, out ClothingComponent? clothing) || clothing.InSlot == null) return; - + RenderEquipment(uid, item, clothing.InSlot, component, null, clothing); } diff --git a/Content.Client/SubFloor/TrayScannerSystem.cs b/Content.Client/SubFloor/TrayScannerSystem.cs index 61680f8a4c5..4a77a5e6fb7 100644 --- a/Content.Client/SubFloor/TrayScannerSystem.cs +++ b/Content.Client/SubFloor/TrayScannerSystem.cs @@ -7,6 +7,8 @@ using Content.Shared.Disposal.Tube; using Content.Shared.Input; using Content.Shared.Inventory; +using Content.Shared.Item.ItemToggle; +using Content.Shared.Item.ItemToggle.Components; using Content.Shared.SubFloor; using Robust.Client.Animations; using Robust.Client.GameObjects; @@ -25,6 +27,7 @@ public sealed partial class TrayScannerSystem : SharedTrayScannerSystem [Dependency] private AnimationPlayerSystem _animation = default!; [Dependency] private EntityLookupSystem _lookup = default!; [Dependency] private InventorySystem _inventory = default!; + [Dependency] private ItemToggleSystem _itemToggle = default!; [Dependency] private SharedAppearanceSystem _appearance = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private SpriteSystem _sprite = default!; @@ -67,9 +70,9 @@ public override void Update(float frameTime) // API is extremely skrungly. If this ever shows up on dottrace ping me and laugh. var canSee = false; - foreach (var item in _inventory.GetHandOrInventoryEntities(player.Value, SlotFlags.POCKET)) + foreach (var item in _inventory.GetHandOrInventoryEntities(player.Value)) // DEN: TRay in any slot (For modsuits visors) { - if (!_trayScannerQuery.TryGetComponent(item, out var scanner) || !scanner.Enabled) + if (!_trayScannerQuery.TryGetComponent(item, out var scanner) || !_itemToggle.IsActivated(item)) continue; range = MathF.Max(scanner.Range, range); @@ -194,26 +197,29 @@ private bool MatchesMode(EntityUid uid, TrayScannerMode mode) private Control OnCollectItemStatus(Entity entity) { _inputManager.TryGetKeyBinding((ContentKeyFunctions.AltUseItemInHand), out var binding); - return new StatusControl(entity, binding?.GetKeyString() ?? ""); + TryComp(entity, out var toggle); + return new StatusControl(entity, toggle, binding?.GetKeyString() ?? ""); } private sealed class StatusControl : PollingItemStatusControl { private readonly RichTextLabel _label; private readonly TrayScannerComponent _scanner; + private readonly ItemToggleComponent? _toggle; private readonly string _keyBindingName; - public StatusControl(TrayScannerComponent scanner, string keyBindingName) + public StatusControl(TrayScannerComponent scanner, ItemToggleComponent? toggle, string keyBindingName) { _scanner = scanner; _keyBindingName = keyBindingName; + _toggle = toggle; _label = new RichTextLabel { StyleClasses = { StyleClass.ItemStatus } }; AddChild(_label); } protected override TRayData PollData() { - return new TRayData(_scanner.Enabled, _scanner.Mode); + return new TRayData(_scanner.Mode, _toggle == null || _toggle.Activated); } protected override void Update(in TRayData data) @@ -237,7 +243,7 @@ protected override void Update(in TRayData data) ("keybinding", _keyBindingName))); } - public readonly record struct TRayData(bool Enabled, TrayScannerMode Mode); + public readonly record struct TRayData(TrayScannerMode Mode, bool Enabled); } #endregion } diff --git a/Content.Client/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs b/Content.Client/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs new file mode 100644 index 00000000000..3b78016f1c6 --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs @@ -0,0 +1,21 @@ +using Content.Client._DEN.Clothing.Modsuits.UI; +using Content.Client.Items; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +namespace Content.Client._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitSystem : SharedModsuitSystem +{ + [Dependency] private SharedUserInterfaceSystem _uiSystem = default!; + + protected override void UpdateUI(Entity entity) + { + base.UpdateUI(entity); + + if (_uiSystem.TryGetOpenUi(entity.Owner, ModsuitControllerUiKey.Key, out var bui)) + { + bui.Update(); + } + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml new file mode 100644 index 00000000000..821fab4fd8a --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml.cs b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml.cs new file mode 100644 index 00000000000..2eaa22556dc --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModsuitControllerWindow.xaml.cs @@ -0,0 +1,173 @@ +using System.Numerics; +using Content.Client.Power.EntitySystems; +using Content.Client.UserInterface.Controls; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Modules.Components; +using Content.Shared.IdentityManagement; +using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.PowerCell; +using Robust.Client.AutoGenerated; +using Robust.Client.Graphics; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using Robust.Shared.Utility; + +namespace Content.Client._DEN.Clothing.Modsuits.UI.Controls; + +[GenerateTypedNameReferences] +public sealed partial class ModsuitControllerWindow : FancyWindow +{ + [Dependency] private IEntityManager _entity = default!; + + private Entity? _modControlEntity; + + private Dictionary _gridControls = new(); + + public Action? OnModuleToggled; + + public ModsuitControllerWindow() + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + } + + public void Initialize(Entity entity) + { + _modControlEntity = entity; + SpriteView.SetEntity(_modControlEntity.Value); + var name = new FormattedMessage(); + name.PushColor(Color.White); + name.AddText(Identity.Name(_modControlEntity.Value, _entity)); + ControlName.SetMessage(name); + Update(); + } + + public void Update() + { + if (_modControlEntity == null) + return; + + var seen = new Dictionary(); + foreach (var entUid in _gridControls.Keys) + { + seen[entUid] = false; + } + + foreach (var module in _modControlEntity.Value.Comp2.ModuleSlots.Values) + { + if (module is null) + continue; + + if (_entity.TryGetComponent(module, out var toggleComp)) + { + if (_gridControls.TryGetValue(module.Value, out var controls)) + { + controls.Item1.Pressed = toggleComp.Activated; + seen[module.Value] = true; + } + else + { + var button = new SwitchButton + { + ToggleMode = true, + Pressed = toggleComp.Activated, + MinWidth = 100.0f + }; + button.OnToggled += e => OnModuleToggled?.Invoke(module.Value, e.Pressed); + var moduleInfo = new ModuleInfoControl(module.Value, _entity); + ToggleGrid.AddChild(button); + ToggleGrid.AddChild(moduleInfo); + _gridControls.Add(module.Value, (button, moduleInfo)); + } + } + } + + foreach (var entUpdated in seen) + { + if (entUpdated.Value) + continue; + + var controls = _gridControls[entUpdated.Key]; + ToggleGrid.RemoveChild(controls.Item1); + ToggleGrid.RemoveChild(controls.Item2); + _gridControls.Remove(entUpdated.Key); + } + + var uiFunctional = _modControlEntity.Value.Comp1.UIFunctional; + foreach (var controls in _gridControls.Values) + { + controls.Item1.Disabled = !uiFunctional; + controls.Item2.SetScrambled(!uiFunctional); + } + UIErrorLabel.Visible = !uiFunctional; + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (_modControlEntity == null) + return; + + var powerSystem = _entity.System(); + var batterySystem = _entity.System(); + + if (!powerSystem.TryGetBatteryFromSlotOrEntity(_modControlEntity.Value.Owner, out var battery)) + { + NoCellLabel.Visible = true; + ChargeBar.Visible = false; + return; + } + + NoCellLabel.Visible = false; + ChargeBar.Visible = true; + + // These are just all from APC Menu. It'd be neat if they were pulled out into a separate control. + // But I'm done making changes to upstream systems. + var charge = batterySystem.GetChargeLevel(battery.Value.AsNullable()); + ChargeBar.Value = charge; + ChargePercentage.Text = Loc.GetString("apc-menu-charge-label", ("percent", charge.ToString("P0"))); + UpdateChargeBarColor(charge); + } + + private void UpdateChargeBarColor(float charge) + { + if (ChargeBar == null) + { + return; + } + + var normalizedCharge = charge / ChargeBar.MaxValue; + + const float leftHue = 0.0f; // Red + const float middleHue = 0.066f; // Orange + const float rightHue = 0.33f; // Green + const float saturation = 1.0f; // Uniform saturation + const float value = 0.8f; // Uniform value / brightness + const float alpha = 1.0f; // Uniform alpha + + // These should add up to 1.0 or your transition won't be smooth + const float leftSideSize = 0.5f; // Fraction of ChargeBar lerped from leftHue to middleHue + const float rightSideSize = 0.5f; // Fraction of ChargeBar lerped from middleHue to rightHue + + float finalHue; + if (normalizedCharge <= leftSideSize) + { + normalizedCharge /= leftSideSize; // Adjust range to 0.0 to 1.0 + finalHue = MathHelper.Lerp(leftHue, middleHue, normalizedCharge); + } + else + { + normalizedCharge = (normalizedCharge - leftSideSize) / rightSideSize; // Adjust range to 0.0 to 1.0. + finalHue = MathHelper.Lerp(middleHue, rightHue, normalizedCharge); + } + + // Check if null first to avoid repeatedly creating this. + ChargeBar.ForegroundStyleBoxOverride ??= new StyleBoxFlat(); + + var foregroundStyleBoxOverride = (StyleBoxFlat) ChargeBar.ForegroundStyleBoxOverride; + foregroundStyleBoxOverride.BackgroundColor = + Color.FromHsv(new Vector4(finalHue, saturation, value, alpha)); + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml new file mode 100644 index 00000000000..4bbc5c9727f --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml.cs b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml.cs new file mode 100644 index 00000000000..fb3b242c21d --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/UI/Controls/ModuleInfoControl.xaml.cs @@ -0,0 +1,89 @@ +using Content.Client.UserInterface; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Random; +using Robust.Shared.Timing; +using Robust.Shared.Utility; + +namespace Content.Client._DEN.Clothing.Modsuits.UI.Controls; + +[GenerateTypedNameReferences] +public sealed partial class ModuleInfoControl : BoxContainer, IEntityControl +{ + [Dependency] private IRobustRandom _random = default!; + private readonly IEntityManager _entityManager; + + private readonly EntityUid _entity; + + private bool _scrambled = true; + + private float _curFrameTime; + + private const float ScrambleDelay = 0.25f; + private static readonly string[] Cycles = ["cycle-0", "cycle-1", "cycle-2", "cycle-3"]; + + private static readonly char[] ScrambleText = + [ + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '+', + '/', '\\', '!', '@', '#', '$', '%', '^', '&', '*' + ]; + + public ModuleInfoControl(EntityUid entity, IEntityManager entityManager) + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + _entity = entity; + _entityManager= entityManager; + ModuleName.Text = entityManager.GetComponent(entity).EntityName; + SpriteView.SetEntity(entity); + + var brokenSprite = new SpriteSpecifier.Rsi(new ResPath("_DEN/Interface/Modsuits/ui_fried.rsi"),_random.Pick(Cycles)); + BrokenIcon.SetFromSpriteSpecifier(brokenSprite); + BrokenIcon.DisplayRect.Stretch = TextureRect.StretchMode.Scale; + _curFrameTime = ScrambleDelay; + } + + public void SetScrambled(bool scrambled) + { + _scrambled = scrambled; + if (!_scrambled) + { + ModuleName.Text = _entityManager.GetComponent(_entity).EntityName; + BrokenIcon.Visible = false; + SpriteView.Visible = true; + } + else + { + BrokenIcon.Visible = true; + SpriteView.Visible = false; + } + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (_scrambled) + { + _curFrameTime -= args.DeltaSeconds; + if (_curFrameTime <= 0) + { + _curFrameTime = ScrambleDelay; + // This should probably never be null but just in case. + var text = ModuleName.Text?.ToCharArray() ?? [' ']; + var toScramble = _random.Next(5); + for (int i = 0; i < toScramble; i++) + { + text[_random.Next(text.Length)] = _random.Pick(ScrambleText); + } + + ModuleName.Text = new(text); + } + } + } + + public EntityUid? UiEntity => _entity; +} \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Modsuits/UI/ModsuitControllerBoundUserInterface.cs b/Content.Client/_DEN/Clothing/Modsuits/UI/ModsuitControllerBoundUserInterface.cs new file mode 100644 index 00000000000..ec4490763d5 --- /dev/null +++ b/Content.Client/_DEN/Clothing/Modsuits/UI/ModsuitControllerBoundUserInterface.cs @@ -0,0 +1,41 @@ +using Content.Client._DEN.Clothing.Modsuits.UI.Controls; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Content.Shared._DEN.Modules.Components; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._DEN.Clothing.Modsuits.UI; + +[UsedImplicitly] +public sealed class ModsuitControllerBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) +{ + [ViewVariables] private ModsuitControllerWindow? _window; + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + if (EntMan.TryGetComponent(Owner, out ModuleStorageComponent? modStorage) + && EntMan.TryGetComponent(Owner, out ModsuitControllerComponent? modControllerComp)) + _window.Initialize((Owner, modControllerComp, modStorage)); + _window.OnModuleToggled += OnModuleToggled; + Update(); + } + + public override void Update() + { + if (_window == null || !EntMan.HasComponent(Owner) + || !EntMan.HasComponent(Owner)) + return; + + _window.Update(); + } + + private void OnModuleToggled(EntityUid entity, bool enabled) + { + var netEnt = EntMan.GetNetEntity(entity); + SendPredictedMessage(new ModsuitToggleModuleMessage(netEnt, enabled)); + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Sealable/Components/SealableClothingVisualsComponent.cs b/Content.Client/_DEN/Clothing/Sealable/Components/SealableClothingVisualsComponent.cs new file mode 100644 index 00000000000..85e84244171 --- /dev/null +++ b/Content.Client/_DEN/Clothing/Sealable/Components/SealableClothingVisualsComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Client._DEN.Clothing.Sealable.Components; + +[RegisterComponent] +public sealed partial class SealableClothingVisualsComponent : Component +{ + [DataField] public Dictionary> ClothingVisuals = new(); +} \ No newline at end of file diff --git a/Content.Client/_DEN/Clothing/Sealable/EntitySystems/SealableClothingVisualizerSystem.cs b/Content.Client/_DEN/Clothing/Sealable/EntitySystems/SealableClothingVisualizerSystem.cs new file mode 100644 index 00000000000..13ff7fa2b07 --- /dev/null +++ b/Content.Client/_DEN/Clothing/Sealable/EntitySystems/SealableClothingVisualizerSystem.cs @@ -0,0 +1,54 @@ +using System.Linq; +using Content.Client._DEN.Clothing.Sealable.Components; +using Content.Shared._DEN.Clothing.Sealable.EntitySystems; +using Content.Shared.Clothing; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Inventory; + +namespace Content.Client._DEN.Clothing.Sealable.EntitySystems; + +public sealed partial class SealableClothingVisualizerSystem : EntitySystem +{ + [Dependency] private SharedAppearanceSystem _appearanceSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetEquipmentVisuals, + after: [typeof(ClothingSystem)]); + } + + private void OnGetEquipmentVisuals(Entity entity, ref GetEquipmentVisualsEvent args) + { + if (!_appearanceSystem.TryGetData(entity, SealableClothingVisuals.State, out var state) || !state) + return; + + if (!TryComp(args.Equipee, out InventoryComponent? inventory)) + return; + + List? layers = null; + + // Try getting species variants first. + if (inventory.SpeciesId != null) + entity.Comp.ClothingVisuals.TryGetValue($"{args.Slot}-{inventory.SpeciesId}", out layers); + + // Fallback to default. + if (layers == null && !entity.Comp.ClothingVisuals.TryGetValue(args.Slot, out layers)) + return; + + // Loop over all the defined layers and add them. + var i = 0; + foreach (var layer in layers) + { + var key = layer.MapKeys?.FirstOrDefault(); + if (key == null) + { + key = i == 0 ? $"{args.Slot}-sealed" : $"{args.Slot}-sealed-{i}"; + i++; + } + + args.Layers.Add((key, layer)); + } + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs b/Content.Client/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs new file mode 100644 index 00000000000..6a89d8aa4ca --- /dev/null +++ b/Content.Client/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared._DEN.Modules.Components; +using Content.Shared._DEN.Modules.EntitySystems; +using Robust.Client.GameObjects; + +namespace Content.Client._DEN.Modules.EntitySystems; + +public sealed partial class ModuleStorageSystem : SharedModuleStorageSystem +{ + [Dependency] private UserInterfaceSystem _uiSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnModuleStorageAfterState); + } + + protected override void UpdateUi(Entity entity) + { + if (!_uiSystem.TryGetOpenUi(entity.Owner, ModuleUiKey.Key, + out var bui)) + return; + + bui.Update(); + } + + private void OnModuleStorageAfterState(Entity entity, ref AfterAutoHandleStateEvent evt) + { + UpdateUi(entity); + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Modules/UI/Controls/ModuleGridPiece.cs b/Content.Client/_DEN/Modules/UI/Controls/ModuleGridPiece.cs new file mode 100644 index 00000000000..fd5e675b059 --- /dev/null +++ b/Content.Client/_DEN/Modules/UI/Controls/ModuleGridPiece.cs @@ -0,0 +1,78 @@ +using System.Numerics; +using Content.Client.Resources; +using Content.Client.UserInterface; +using Content.Shared._DEN.Modules.Components; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Input; + +namespace Content.Client._DEN.Modules.UI.Controls; + +public sealed class ModuleGridPiece : Control, IEntityControl +{ + private readonly IEntityManager _entityManager; + + private readonly Entity _entity; + + private TextureRect? _texture; + + public event Action? OnModuleClicked; + + public ModuleGridPiece(Entity entity, IEntityManager entityManager, IResourceCache resourceCache) + { + IoCManager.InjectDependencies(this); + + _entityManager = entityManager; + + _entity = entity; + + Visible = true; + MouseFilter = MouseFilterMode.Stop; + + TooltipSupplier = SupplyTooltip; + + _texture = new TextureRect + { + Texture = resourceCache.GetTexture(entity.Comp.UITexture), + TextureScale = new Vector2(2, 2), + CanShrink = true, + }; + + AddChild(_texture); + } + + private Control? SupplyTooltip(Control sender) + { + return new Tooltip + { + Text = _entityManager.GetComponent(_entity).EntityName + }; + } + + protected override void KeyBindDown(GUIBoundKeyEventArgs args) + { + base.KeyBindDown(args); + + if (args.Function != EngineKeyFunctions.UIClick) + { + return; + } + + OnModuleClicked?.Invoke(_entity); + } + + protected override bool HasPoint(Vector2 point) + { + if (_texture != null) + { + var size = _texture.Texture!.Size * 2 * UIScale; + return point.X >= 0 && point.X <= size.X && point.Y >= 0 && point.Y <= size.Y; + } + + return false; + } + + public EntityUid? UiEntity => _entity; +} \ No newline at end of file diff --git a/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml b/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml new file mode 100644 index 00000000000..c23a1a2f39d --- /dev/null +++ b/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml.cs b/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml.cs new file mode 100644 index 00000000000..b588600b236 --- /dev/null +++ b/Content.Client/_DEN/Modules/UI/Controls/ModuleStorageWindow.xaml.cs @@ -0,0 +1,235 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Numerics; +using Content.Client._DEN.Modules.EntitySystems; +using Content.Client.Hands.Systems; +using Content.Client.Resources; +using Content.Client.UserInterface.Controls; +using Content.Shared._DEN.Modules.Components; +using Robust.Client.AutoGenerated; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Input; +using Robust.Shared.Timing; + +namespace Content.Client._DEN.Modules.UI.Controls; + +[GenerateTypedNameReferences] +public sealed partial class ModuleStorageWindow : FancyWindow +{ + [Dependency] private IResourceCache _resourceCache = default!; + [Dependency] private IEntityManager _entity = default!; + + private Entity? _modControlEntity; + + public event Action? OnSlotClicked; + + private readonly string _leftTexturePath = "/Textures/_DEN/Interface/Modules/module-background-left.png"; + private Texture? _leftTexture; + private readonly string _middleTexturePath = "/Textures/_DEN/Interface/Modules/module-background-middle.png"; + private Texture? _middleTexture; + private readonly string _rightTexturePath = "/Textures/_DEN/Interface/Modules/module-background-right.png"; + private Texture? _rightTexture; + + private int _busSize = 0; + + private readonly Dictionary _modules = new(); + private readonly List _controlGrid = new(); + + public ModuleStorageWindow() + { + IoCManager.InjectDependencies(this); + RobustXamlLoader.Load(this); + + _leftTexture = _resourceCache.GetTexture(_leftTexturePath); + _middleTexture = _resourceCache.GetTexture(_middleTexturePath); + _rightTexture = _resourceCache.GetTexture(_rightTexturePath); + } + + public void Initialize(Entity entity) + { + _modControlEntity = entity; + _busSize = entity.Comp.MaxBusWidth; + BuildBackground(_busSize); + } + + private void BuildBackground(int busSize) + { + BackgroundGrid.Columns = busSize; + ModuleGrid.Columns = busSize; + + BackgroundGrid.AddChild(new TextureRect + { + Texture = _leftTexture, + TextureScale = new Vector2(2, 2) + }); + for (var i = 1; i < busSize-1; i++) + { + BackgroundGrid.AddChild(new TextureRect + { + Texture = _middleTexture, + TextureScale = new Vector2(2, 2) + }); + } + BackgroundGrid.AddChild(new TextureRect + { + Texture = _rightTexture, + TextureScale = new Vector2(2, 2) + }); + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + var handsSystem = _entity.System(); + var modsuitSystem = _entity.System(); + + foreach (var child in BackgroundGrid.Children) + { + child.ModulateSelfOverride = null; + } + + if (UserInterfaceManager.CurrentlyHovered != this || _modControlEntity == null) + return; + + if (handsSystem.GetActiveHandEntity() is { } handsEntity) + { + if (!_entity.TryGetComponent(handsEntity, out var moduleComp)) + return; + + var location = GetMouseModuleLocation(); + var isValid = modsuitSystem.ModuleFitsInStorage(_modControlEntity.Value, handsEntity, location.X); + var color = isValid ? Color.Aqua : Color.Red; + for (var x = 0; x < _busSize; x++) + { + if (TryGetBackgroundModule(x, out var module)) + { + if (location.Y == 0 && x >= location.X && x < (location.X + moduleComp.BusWidth)) + { + module.ModulateSelfOverride = color; + } + } + } + } + } + + private bool TryGetBackgroundModule(int x, [NotNullWhen(true)] out Control? module) + { + module = null; + if (x < 0 || x >= _busSize) + return false; + + module = BackgroundGrid.GetChild(x); + return true; + } + + private Vector2i GetMouseModuleLocation() + { + var textureSize = (Vector2) _middleTexture!.Size * 2; + return ((UserInterfaceManager.MousePositionScaled.Position - BackgroundGrid.GlobalPosition) / textureSize).Floored(); + } + + protected override void KeyBindDown(GUIBoundKeyEventArgs args) + { + base.KeyBindDown(args); + + if (args.Function != EngineKeyFunctions.UIClick || _modControlEntity == null) + return; + + var handsSystem = _entity.System(); + var modsuitSystem = _entity.System(); + + if (handsSystem.GetActiveHandEntity() is not { } handEntity) + return; + + var location = GetMouseModuleLocation(); + if (location.Y != 0) + return; + + var slot = location.X; + if (modsuitSystem.ModuleFitsInStorage(_modControlEntity.Value, handEntity, slot)) + { + OnSlotClicked?.Invoke(slot); + args.Handle(); + } + } + + private void OnModulePressed(EntityUid module) + { + OnSlotClicked?.Invoke(_modules[module].Item1); + } + + public void Update() + { + if (_modControlEntity == null) + return; + + var size = _middleTexture!.Size * 2; + + ModuleGrid.Columns = _modControlEntity.Value.Comp.MaxBusWidth; + ModuleGrid.RemoveAllChildren(); + _controlGrid.Clear(); + for (var i = 0; i < _busSize; i++) + { + var control = new Control + { + MinSize = size + }; + + _controlGrid.Add(control); + ModuleGrid.AddChild(control); + } + + var moduleSlots = _modControlEntity.Value.Comp.ModuleSlots; + + List toRemove = new(); + foreach (var (ent, data) in _modules) + { + if (moduleSlots.ContainsValue(ent)) + { + var curSlot = moduleSlots.Where(kvp => kvp.Value == ent).MinBy(kvp => kvp.Key).Key; + + data.Item2.Orphan(); + _controlGrid[curSlot].AddChild(data.Item2); + _modules[ent] = (curSlot, data.Item2); + + continue; + } + toRemove.Add(ent); + } + + foreach (var ent in toRemove) + { + _modules.Remove(ent, out var data); + data.Item2.Orphan(); + } + + toRemove.Clear(); + + foreach (var (slot, ent) in moduleSlots) + { + if (ent == null) + continue; + + if (_modules.TryGetValue(ent.Value, out var existing)) + { + continue; + } + + if (_entity.TryGetComponent(ent, out var moduleComp)) + { + var modulePiece = new ModuleGridPiece((ent.Value, moduleComp), _entity, _resourceCache) + { + MinSize = size, + }; + modulePiece.OnModuleClicked += OnModulePressed; + _controlGrid[slot].AddChild(modulePiece); + _modules[ent.Value] = (slot, modulePiece); + } + } + } +} \ No newline at end of file diff --git a/Content.Client/_DEN/Modules/UI/ModuleBoundUserInterface.cs b/Content.Client/_DEN/Modules/UI/ModuleBoundUserInterface.cs new file mode 100644 index 00000000000..4282f542365 --- /dev/null +++ b/Content.Client/_DEN/Modules/UI/ModuleBoundUserInterface.cs @@ -0,0 +1,39 @@ +using Content.Client._DEN.Modules.UI.Controls; +using Content.Shared._DEN.Modules.Components; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._DEN.Modules.UI; + +// I would rather this be called ModuleStorageBoundUserInterface however it cannot be called that because +// it's too close to StorageBoundUserInterface and that makes the reflection system pick the wrong BoundUserInterface +// to construct when building UI's for backpacks. +[UsedImplicitly] +public sealed class ModuleBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) +{ + [ViewVariables] private ModuleStorageWindow? _window; + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + if (EntMan.TryGetComponent(Owner, out ModuleStorageComponent? modControl)) + _window.Initialize((Owner, modControl)); + _window.OnSlotClicked += ModuleInsertAttempt; + Update(); + } + + public override void Update() + { + if (_window == null || !EntMan.TryGetComponent(Owner, out ModuleStorageComponent? modControl)) + return; + + _window.Update(); + } + + private void ModuleInsertAttempt(int slot) + { + SendPredictedMessage(new ModuleSlotActionMessage(slot)); + } +} \ No newline at end of file diff --git a/Content.Server/Access/AccessWireAction.cs b/Content.Server/Access/AccessWireAction.cs index 2682fff286d..b5ed89e8906 100644 --- a/Content.Server/Access/AccessWireAction.cs +++ b/Content.Server/Access/AccessWireAction.cs @@ -21,7 +21,7 @@ public sealed partial class AccessWireAction : ComponentWireAction AccessWireActionKey.Status; - public override bool Cut(EntityUid user, Wire wire, AccessReaderComponent comp) + public override bool Cut(EntityUid? user, Wire wire, AccessReaderComponent comp) { WiresSystem.TryCancelWireAction(wire.Owner, PulseTimeoutKey.Key); EntityManager.System().SetActive((wire.Owner, comp), false); @@ -29,14 +29,14 @@ public override bool Cut(EntityUid user, Wire wire, AccessReaderComponent comp) return true; } - public override bool Mend(EntityUid user, Wire wire, AccessReaderComponent comp) + public override bool Mend(EntityUid? user, Wire wire, AccessReaderComponent comp) { EntityManager.System().SetActive((wire.Owner, comp), true); return true; } - public override void Pulse(EntityUid user, Wire wire, AccessReaderComponent comp) + public override void Pulse(EntityUid? user, Wire wire, AccessReaderComponent comp) { EntityManager.System().SetActive((wire.Owner, comp), false); WiresSystem.StartWireAction(wire.Owner, _pulseTimeout, PulseTimeoutKey.Key, new TimedWireEvent(AwaitPulseCancel, wire)); diff --git a/Content.Server/Access/LogWireAction.cs b/Content.Server/Access/LogWireAction.cs index d6ba3dbfcd4..58763bff8af 100644 --- a/Content.Server/Access/LogWireAction.cs +++ b/Content.Server/Access/LogWireAction.cs @@ -34,7 +34,7 @@ public override void Initialize() _access = EntityManager.System(); } - public override bool Cut(EntityUid user, Wire wire, AccessReaderComponent comp) + public override bool Cut(EntityUid? user, Wire wire, AccessReaderComponent comp) { WiresSystem.TryCancelWireAction(wire.Owner, PulseTimeoutKey.Key); EntityManager.System().SetLoggingActive((wire.Owner, comp), false); @@ -42,13 +42,13 @@ public override bool Cut(EntityUid user, Wire wire, AccessReaderComponent comp) return true; } - public override bool Mend(EntityUid user, Wire wire, AccessReaderComponent comp) + public override bool Mend(EntityUid? user, Wire wire, AccessReaderComponent comp) { EntityManager.System().SetLoggingActive((wire.Owner, comp), true); return true; } - public override void Pulse(EntityUid user, Wire wire, AccessReaderComponent comp) + public override void Pulse(EntityUid? user, Wire wire, AccessReaderComponent comp) { _access.LogAccess((wire.Owner, comp), Loc.GetString(PulseLog)); EntityManager.System().SetLoggingActive((wire.Owner, comp), false); diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index 6e75ae62e8b..c54c434e57f 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -7,6 +7,7 @@ using Content.Server.Stack; using Content.Server.Station.Systems; using Content.Server.Weapons.Ranged.Systems; +using Content.Server.Wires; using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; @@ -28,6 +29,7 @@ using Content.Shared.Station.Components; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Wires; using Robust.Server.Physics; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -53,6 +55,7 @@ public sealed partial class AdminVerbSystem [Dependency] private SharedBatterySystem _batterySystem = default!; [Dependency] private MetaDataSystem _metaSystem = default!; [Dependency] private GunSystem _gun = default!; + [Dependency] private WiresSystem _wiresSystem = default!; private void AddTricksVerbs(GetVerbsEvent args) { @@ -211,6 +214,45 @@ private void AddTricksVerbs(GetVerbsEvent args) args.Verbs.Add(infiniteBattery); } + if (TryComp(args.Target, out var wires)) + { + Verb cutWires = new() + { + Text = Loc.GetString("admin-verbs-cut-wires"), + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/WireHacking/wire_1_cut.svg.96dpi.png")), + Act = () => + { + foreach (var wire in wires.WiresList) + { + _wiresSystem.TryForceWireAction(args.Target, wire, WiresAction.Cut, wires); + } + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-cut-wires-description"), + Priority = (int)TricksVerbPriorities.CutWires, + }; + args.Verbs.Add(cutWires); + + Verb mendWires = new() + { + Text = Loc.GetString("admin-verbs-mend-wires"), + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/WireHacking/wire_1.svg.96dpi.png")), + Act = () => + { + foreach (var wire in wires.WiresList) + { + _wiresSystem.TryForceWireAction(args.Target, wire, WiresAction.Mend, wires); + } + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-mend-wires-description"), + Priority = (int)TricksVerbPriorities.CutWires, + }; + args.Verbs.Add(mendWires); + } + if (TryComp(args.Target, out var anchor)) { Verb blockUnanchor = new() @@ -855,26 +897,28 @@ public enum TricksVerbPriorities BlockUnanchoring = -6, RefillBattery = -7, DrainBattery = -8, - RefillOxygen = -9, - RefillNitrogen = -10, - RefillPlasma = -11, - SendToTestArena = -12, - GrantAllAccess = -13, - RevokeAllAccess = -14, - Rejuvenate = -15, - AdjustStack = -16, - FillStack = -17, - Rename = -18, - Redescribe = -19, - RenameAndRedescribe = -20, - BarJobSlots = -21, - LocateCargoShuttle = -22, - InfiniteBattery = -23, - HaltMovement = -24, - Unpause = -25, - Pause = -26, - SnapJoints = -27, - MakeMinigun = -28, - SetBulletAmount = -29, + CutWires = -9, + MendWires = -10, + RefillOxygen = -11, + RefillNitrogen = -12, + RefillPlasma = -13, + SendToTestArena = -14, + GrantAllAccess = -15, + RevokeAllAccess = -16, + Rejuvenate = -17, + AdjustStack = -18, + FillStack = -19, + Rename = -20, + Redescribe = -21, + RenameAndRedescribe = -22, + BarJobSlots = -23, + LocateCargoShuttle = -24, + InfiniteBattery = -25, + HaltMovement = -26, + Unpause = -27, + Pause = -28, + SnapJoints = -29, + MakeMinigun = -30, + SetBulletAmount = -31, } } diff --git a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs index 80b688d5cdf..c9528c807fe 100644 --- a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs +++ b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.Components; using Content.Shared.Alert; using Content.Shared.Atmos; +using Content.Shared.Clothing.Components; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.Database; @@ -60,6 +61,19 @@ private void OnUpdateResistance(EntityUid uid, PressureProtectionComponent press { UpdateCachedResistances(uid, barotrauma); } + // DEN: Handle clothing component lifestage + else if (TryComp(uid, out var clothing) + && clothing.InSlotFlag is {} slotFlag + && clothing.Slots.HasFlag(slotFlag)) + { + // If we're clothing, update our wearer instead. + var wearer = Transform(uid).ParentUid; + if (TryComp(wearer, out barotrauma)) + { + UpdateCachedResistances(wearer, barotrauma); + } + } + // DEN: End } private void OnPressureProtectionEquipped(EntityUid uid, PressureProtectionComponent pressureProtection, GotEquippedEvent args) diff --git a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs index c0a82e575c5..3d4dc87cd06 100644 --- a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs +++ b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs @@ -28,7 +28,7 @@ public override void Initialize() _airAlarmSystem = EntityManager.System(); } - public override bool Cut(EntityUid user, Wire wire, AirAlarmComponent comp) + public override bool Cut(EntityUid? user, Wire wire, AirAlarmComponent comp) { comp.PanicWireCut = true; if (EntityManager.TryGetComponent(wire.Owner, out var devNet)) @@ -39,7 +39,7 @@ public override bool Cut(EntityUid user, Wire wire, AirAlarmComponent comp) return true; } - public override bool Mend(EntityUid user, Wire wire, AirAlarmComponent alarm) + public override bool Mend(EntityUid? user, Wire wire, AirAlarmComponent alarm) { alarm.PanicWireCut = false; if (EntityManager.TryGetComponent(wire.Owner, out var devNet) @@ -51,7 +51,7 @@ public override bool Mend(EntityUid user, Wire wire, AirAlarmComponent alarm) return true; } - public override void Pulse(EntityUid user, Wire wire, AirAlarmComponent comp) + public override void Pulse(EntityUid? user, Wire wire, AirAlarmComponent comp) { if (EntityManager.TryGetComponent(wire.Owner, out var devNet)) { diff --git a/Content.Server/Atmos/Monitor/WireActions/AtmosAlarmableAlarmWire.cs b/Content.Server/Atmos/Monitor/WireActions/AtmosAlarmableAlarmWire.cs index 7dcb4427ca4..36cce0e1099 100644 --- a/Content.Server/Atmos/Monitor/WireActions/AtmosAlarmableAlarmWire.cs +++ b/Content.Server/Atmos/Monitor/WireActions/AtmosAlarmableAlarmWire.cs @@ -39,19 +39,19 @@ public override void Initialize() _atmosAlarmableSystem = EntityManager.System(); } - public override bool Cut(EntityUid user, Wire wire, AtmosAlarmableComponent comp) + public override bool Cut(EntityUid? user, Wire wire, AtmosAlarmableComponent comp) { comp.IgnoreAlarms = true; return true; } - public override bool Mend(EntityUid user, Wire wire, AtmosAlarmableComponent comp) + public override bool Mend(EntityUid? user, Wire wire, AtmosAlarmableComponent comp) { comp.IgnoreAlarms = false; return true; } - public override void Pulse(EntityUid user, Wire wire, AtmosAlarmableComponent comp) + public override void Pulse(EntityUid? user, Wire wire, AtmosAlarmableComponent comp) { if (_alarmOnPulse) _atmosAlarmableSystem.ForceAlert(wire.Owner, AtmosAlarmType.Danger, comp); diff --git a/Content.Server/Defusable/Systems/DefusableSystem.cs b/Content.Server/Defusable/Systems/DefusableSystem.cs index 190307cdaa4..effbf587ee6 100644 --- a/Content.Server/Defusable/Systems/DefusableSystem.cs +++ b/Content.Server/Defusable/Systems/DefusableSystem.cs @@ -123,7 +123,7 @@ private bool CheckAnchorAttempt(EntityUid uid, DefusableComponent component, Bas #region Public - public void TryStartCountdown(EntityUid uid, EntityUid user, DefusableComponent comp) + public void TryStartCountdown(EntityUid uid, EntityUid? user, DefusableComponent comp) { if (!comp.Usable) { @@ -152,7 +152,7 @@ public void TryStartCountdown(EntityUid uid, EntityUid user, DefusableComponent _wiresSystem.TogglePanel(uid, wiresPanelComponent, false); } - public void TryDetonateBomb(EntityUid uid, EntityUid detonator, DefusableComponent comp) + public void TryDetonateBomb(EntityUid uid, EntityUid? detonator, DefusableComponent comp) { if (!comp.Activated) return; @@ -234,7 +234,7 @@ public void SetBolt(DefusableComponent component, bool value) #region Wires - public void DelayWirePulse(EntityUid user, Wire wire, DefusableComponent comp) + public void DelayWirePulse(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp is not { Activated: true, DelayWireUsed: false }) return; @@ -244,7 +244,7 @@ public void DelayWirePulse(EntityUid user, Wire wire, DefusableComponent comp) comp.DelayWireUsed = true; } - public bool ProceedWireCut(EntityUid user, Wire wire, DefusableComponent comp) + public bool ProceedWireCut(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp is not { Activated: true, ProceedWireCut: false }) return true; @@ -256,7 +256,7 @@ public bool ProceedWireCut(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public void ProceedWirePulse(EntityUid user, Wire wire, DefusableComponent comp) + public void ProceedWirePulse(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp is { Activated: true, ProceedWireUsed: false }) { @@ -267,7 +267,7 @@ public void ProceedWirePulse(EntityUid user, Wire wire, DefusableComponent comp) _popup.PopupEntity(Loc.GetString("defusable-popup-wire-proceed-pulse", ("name", wire.Owner)), wire.Owner); } - public bool ActivateWireCut(EntityUid user, Wire wire, DefusableComponent comp) + public bool ActivateWireCut(EntityUid? user, Wire wire, DefusableComponent comp) { // if you cut the wire it just defuses the bomb @@ -282,7 +282,7 @@ public bool ActivateWireCut(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public void ActivateWirePulse(EntityUid user, Wire wire, DefusableComponent comp) + public void ActivateWirePulse(EntityUid? user, Wire wire, DefusableComponent comp) { // if the component isnt active, just start the countdown // if it is and it isn't already used then delay it @@ -302,7 +302,7 @@ public void ActivateWirePulse(EntityUid user, Wire wire, DefusableComponent comp } } - public bool BoomWireCut(EntityUid user, Wire wire, DefusableComponent comp) + public bool BoomWireCut(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp.Activated) { @@ -315,7 +315,7 @@ public bool BoomWireCut(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public bool BoomWireMend(EntityUid user, Wire wire, DefusableComponent comp) + public bool BoomWireMend(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp is { Activated: false, Usable: false }) { @@ -325,7 +325,7 @@ public bool BoomWireMend(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public void BoomWirePulse(EntityUid user, Wire wire, DefusableComponent comp) + public void BoomWirePulse(EntityUid? user, Wire wire, DefusableComponent comp) { if (comp.Activated) { @@ -333,7 +333,7 @@ public void BoomWirePulse(EntityUid user, Wire wire, DefusableComponent comp) } } - public bool BoltWireMend(EntityUid user, Wire wire, DefusableComponent comp) + public bool BoltWireMend(EntityUid? user, Wire wire, DefusableComponent comp) { if (!comp.Activated) return true; @@ -345,7 +345,7 @@ public bool BoltWireMend(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public bool BoltWireCut(EntityUid user, Wire wire, DefusableComponent comp) + public bool BoltWireCut(EntityUid? user, Wire wire, DefusableComponent comp) { if (!comp.Activated) return true; @@ -357,7 +357,7 @@ public bool BoltWireCut(EntityUid user, Wire wire, DefusableComponent comp) return true; } - public void BoltWirePulse(EntityUid user, Wire wire, DefusableComponent comp) + public void BoltWirePulse(EntityUid? user, Wire wire, DefusableComponent comp) { _popup.PopupEntity(Loc.GetString("defusable-popup-wire-bolt-pulse", ("name", wire.Owner)), wire.Owner); } diff --git a/Content.Server/Defusable/WireActions/ActivateWireAction.cs b/Content.Server/Defusable/WireActions/ActivateWireAction.cs index c5e498080de..d5b7feff36d 100644 --- a/Content.Server/Defusable/WireActions/ActivateWireAction.cs +++ b/Content.Server/Defusable/WireActions/ActivateWireAction.cs @@ -23,19 +23,19 @@ public sealed partial class ActivateWireAction : ComponentWireAction().ActivateWireCut(user, wire, comp); } - public override bool Mend(EntityUid user, Wire wire, DefusableComponent comp) + public override bool Mend(EntityUid? user, Wire wire, DefusableComponent comp) { // if its not disposable defusable system already handles* this // *probably return true; } - public override void Pulse(EntityUid user, Wire wire, DefusableComponent comp) + public override void Pulse(EntityUid? user, Wire wire, DefusableComponent comp) { EntityManager.System().ActivateWirePulse(user, wire, comp); } diff --git a/Content.Server/Defusable/WireActions/BoltWireAction.cs b/Content.Server/Defusable/WireActions/BoltWireAction.cs index cec8f715802..1f8190bfe57 100644 --- a/Content.Server/Defusable/WireActions/BoltWireAction.cs +++ b/Content.Server/Defusable/WireActions/BoltWireAction.cs @@ -21,17 +21,17 @@ public sealed partial class BoltWireAction : ComponentWireAction().BoltWireCut(user, wire, comp); } - public override bool Mend(EntityUid user, Wire wire, DefusableComponent comp) + public override bool Mend(EntityUid? user, Wire wire, DefusableComponent comp) { return EntityManager.System().BoltWireMend(user, wire, comp); } - public override void Pulse(EntityUid user, Wire wire, DefusableComponent comp) + public override void Pulse(EntityUid? user, Wire wire, DefusableComponent comp) { EntityManager.System().BoltWirePulse(user, wire, comp); } diff --git a/Content.Server/Defusable/WireActions/BoomWireAction.cs b/Content.Server/Defusable/WireActions/BoomWireAction.cs index bb1ae17f4fb..f226259dcab 100644 --- a/Content.Server/Defusable/WireActions/BoomWireAction.cs +++ b/Content.Server/Defusable/WireActions/BoomWireAction.cs @@ -22,17 +22,17 @@ public sealed partial class BoomWireAction : ComponentWireAction().BoomWireCut(user, wire, comp); } - public override bool Mend(EntityUid user, Wire wire, DefusableComponent comp) + public override bool Mend(EntityUid? user, Wire wire, DefusableComponent comp) { return EntityManager.System().BoomWireMend(user, wire, comp); } - public override void Pulse(EntityUid user, Wire wire, DefusableComponent comp) + public override void Pulse(EntityUid? user, Wire wire, DefusableComponent comp) { EntityManager.System().BoomWirePulse(user, wire, comp); } diff --git a/Content.Server/Defusable/WireActions/DelayWireAction.cs b/Content.Server/Defusable/WireActions/DelayWireAction.cs index 4d326b34003..9a27e45b30b 100644 --- a/Content.Server/Defusable/WireActions/DelayWireAction.cs +++ b/Content.Server/Defusable/WireActions/DelayWireAction.cs @@ -27,17 +27,17 @@ public sealed partial class DelayWireAction : ComponentWireAction().DelayWirePulse(user, wire, comp); } diff --git a/Content.Server/Defusable/WireActions/ProceedWireAction.cs b/Content.Server/Defusable/WireActions/ProceedWireAction.cs index 4c8fa874abc..985f5cdeaaa 100644 --- a/Content.Server/Defusable/WireActions/ProceedWireAction.cs +++ b/Content.Server/Defusable/WireActions/ProceedWireAction.cs @@ -24,17 +24,17 @@ public sealed partial class ProceedWireAction : ComponentWireAction().ProceedWireCut(user, wire, comp); } - public override bool Mend(EntityUid user, Wire wire, DefusableComponent comp) + public override bool Mend(EntityUid? user, Wire wire, DefusableComponent comp) { return true; } - public override void Pulse(EntityUid user, Wire wire, DefusableComponent comp) + public override void Pulse(EntityUid? user, Wire wire, DefusableComponent comp) { EntityManager.System().ProceedWirePulse(user, wire, comp); } diff --git a/Content.Server/Doors/WireActions/DoorBoltLightWireAction.cs b/Content.Server/Doors/WireActions/DoorBoltLightWireAction.cs index c5e3aa80c9e..24877f8ca73 100644 --- a/Content.Server/Doors/WireActions/DoorBoltLightWireAction.cs +++ b/Content.Server/Doors/WireActions/DoorBoltLightWireAction.cs @@ -16,19 +16,19 @@ public sealed partial class DoorBoltLightWireAction : ComponentWireAction().SetBoltLightsEnabled((wire.Owner, door), false); return true; } - public override bool Mend(EntityUid user, Wire wire, DoorBoltComponent door) + public override bool Mend(EntityUid? user, Wire wire, DoorBoltComponent door) { EntityManager.System().SetBoltLightsEnabled((wire.Owner, door), true); return true; } - public override void Pulse(EntityUid user, Wire wire, DoorBoltComponent door) + public override void Pulse(EntityUid? user, Wire wire, DoorBoltComponent door) { EntityManager.System().SetBoltLightsEnabled((wire.Owner, door), !door.BoltLightsEnabled); } diff --git a/Content.Server/Doors/WireActions/DoorBoltWireAction.cs b/Content.Server/Doors/WireActions/DoorBoltWireAction.cs index 80555f68f9b..08cd6ea429a 100644 --- a/Content.Server/Doors/WireActions/DoorBoltWireAction.cs +++ b/Content.Server/Doors/WireActions/DoorBoltWireAction.cs @@ -16,7 +16,7 @@ public sealed partial class DoorBoltWireAction : ComponentWireAction().SetBoltWireCut((wire.Owner, airlock), true); if (!airlock.BoltsDown && IsPowered(wire.Owner)) @@ -25,13 +25,13 @@ public override bool Cut(EntityUid user, Wire wire, DoorBoltComponent airlock) return true; } - public override bool Mend(EntityUid user, Wire wire, DoorBoltComponent door) + public override bool Mend(EntityUid? user, Wire wire, DoorBoltComponent door) { EntityManager.System().SetBoltWireCut((wire.Owner, door), false); return true; } - public override void Pulse(EntityUid user, Wire wire, DoorBoltComponent door) + public override void Pulse(EntityUid? user, Wire wire, DoorBoltComponent door) { if (IsPowered(wire.Owner)) EntityManager.System().SetBoltsDown((wire.Owner, door), !door.BoltsDown); diff --git a/Content.Server/Doors/WireActions/DoorSafetyWireAction.cs b/Content.Server/Doors/WireActions/DoorSafetyWireAction.cs index 9eef70b4883..fbadf8d22ff 100644 --- a/Content.Server/Doors/WireActions/DoorSafetyWireAction.cs +++ b/Content.Server/Doors/WireActions/DoorSafetyWireAction.cs @@ -20,20 +20,20 @@ public sealed partial class DoorSafetyWireAction : ComponentWireAction().SetSafety(door, false); return true; } - public override bool Mend(EntityUid user, Wire wire, AirlockComponent door) + public override bool Mend(EntityUid? user, Wire wire, AirlockComponent door) { EntityManager.System().SetSafety(door, true); return true; } - public override void Pulse(EntityUid user, Wire wire, AirlockComponent door) + public override void Pulse(EntityUid? user, Wire wire, AirlockComponent door) { EntityManager.System().SetSafety(door, false); WiresSystem.StartWireAction(wire.Owner, _timeout, PulseTimeoutKey.Key, new TimedWireEvent(AwaitSafetyTimerFinish, wire)); diff --git a/Content.Server/Doors/WireActions/DoorTimingWireAction.cs b/Content.Server/Doors/WireActions/DoorTimingWireAction.cs index 7fde1022285..00b01d06a5b 100644 --- a/Content.Server/Doors/WireActions/DoorTimingWireAction.cs +++ b/Content.Server/Doors/WireActions/DoorTimingWireAction.cs @@ -29,20 +29,20 @@ public sealed partial class DoorTimingWireAction : ComponentWireAction().SetAutoCloseDelayModifier(door, 0.01f); return true; } - public override bool Mend(EntityUid user, Wire wire, AirlockComponent door) + public override bool Mend(EntityUid? user, Wire wire, AirlockComponent door) { EntityManager.System().SetAutoCloseDelayModifier(door, 1f); return true; } - public override void Pulse(EntityUid user, Wire wire, AirlockComponent door) + public override void Pulse(EntityUid? user, Wire wire, AirlockComponent door) { EntityManager.System().SetAutoCloseDelayModifier(door, 0.5f); WiresSystem.StartWireAction(wire.Owner, _timeout, PulseTimeoutKey.Key, new TimedWireEvent(AwaitTimingTimerFinish, wire)); diff --git a/Content.Server/Medical/CryoPodEjectLockWireAction.cs b/Content.Server/Medical/CryoPodEjectLockWireAction.cs index d9bd2b32500..6f9d38e76c1 100644 --- a/Content.Server/Medical/CryoPodEjectLockWireAction.cs +++ b/Content.Server/Medical/CryoPodEjectLockWireAction.cs @@ -14,7 +14,7 @@ public sealed partial class CryoPodEjectLockWireAction : ComponentWireAction comp.Locked ? StatusLightState.On : StatusLightState.Off; diff --git a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorInterfaceWireAction.cs b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorInterfaceWireAction.cs index 688571d9f5a..8e57b16ea40 100644 --- a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorInterfaceWireAction.cs +++ b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorInterfaceWireAction.cs @@ -17,7 +17,7 @@ public sealed partial class ParticleAcceleratorKeyboardWireAction : ComponentWir return component.InterfaceDisabled ? StatusLightState.BlinkingFast : StatusLightState.On; } - public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Cut(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.InterfaceDisabled = true; var paSystem = EntityManager.System(); @@ -25,7 +25,7 @@ public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBo return true; } - public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Mend(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.InterfaceDisabled = false; var paSystem = EntityManager.System(); @@ -33,7 +33,7 @@ public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlB return true; } - public override void Pulse(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override void Pulse(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.InterfaceDisabled = !controller.InterfaceDisabled; } diff --git a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorLimiterWireAction.cs b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorLimiterWireAction.cs index 33c8761a832..b39e9b8dce5 100644 --- a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorLimiterWireAction.cs +++ b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorLimiterWireAction.cs @@ -31,7 +31,7 @@ public sealed partial class ParticleAcceleratorLimiterWireAction : ComponentWire return StatusLightState.On; } - public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Cut(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.MaxStrength = ParticleAcceleratorPowerState.Level3; var paSystem = EntityManager.System(); @@ -39,7 +39,7 @@ public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBo return true; } - public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Mend(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.MaxStrength = ParticleAcceleratorPowerState.Level2; @@ -54,12 +54,12 @@ public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlB return true; } - public override void Pulse(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override void Pulse(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { EntityManager.System() .PopupEntity( Loc.GetString("particle-accelerator-control-box-component-wires-update-limiter-on-pulse"), - user, + wire.Owner, PopupType.SmallCaution ); } diff --git a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorStrengthWireAction.cs b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorStrengthWireAction.cs index 15a425f4c26..cf6acea3534 100644 --- a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorStrengthWireAction.cs +++ b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorStrengthWireAction.cs @@ -18,7 +18,7 @@ public sealed partial class ParticleAcceleratorStrengthWireAction : ComponentWir return component.StrengthLocked ? StatusLightState.BlinkingSlow : StatusLightState.On; } - public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Cut(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.StrengthLocked = true; var paSystem = EntityManager.System(); @@ -26,7 +26,7 @@ public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBo return true; } - public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Mend(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.StrengthLocked = false; var paSystem = EntityManager.System(); @@ -34,7 +34,7 @@ public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlB return true; } - public override void Pulse(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override void Pulse(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { var paSystem = EntityManager.System(); paSystem.SetStrength(wire.Owner, (ParticleAcceleratorPowerState) ((int) controller.SelectedStrength + 1), user, controller); diff --git a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorToggleWireAction.cs b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorToggleWireAction.cs index 98d2efa7f52..f0714281c61 100644 --- a/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorToggleWireAction.cs +++ b/Content.Server/ParticleAccelerator/Wires/ParticleAcceleratorToggleWireAction.cs @@ -21,7 +21,7 @@ public sealed partial class ParticleAcceleratorPowerWireAction : ComponentWireAc return component.Enabled ? StatusLightState.On : StatusLightState.BlinkingSlow; } - public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Cut(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { var paSystem = EntityManager.System(); @@ -30,13 +30,13 @@ public override bool Cut(EntityUid user, Wire wire, ParticleAcceleratorControlBo return true; } - public override bool Mend(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override bool Mend(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { controller.CanBeEnabled = true; return true; } - public override void Pulse(EntityUid user, Wire wire, ParticleAcceleratorControlBoxComponent controller) + public override void Pulse(EntityUid? user, Wire wire, ParticleAcceleratorControlBoxComponent controller) { var paSystem = EntityManager.System(); var multipartMachine = EntityManager.System(); diff --git a/Content.Server/Power/PowerWireAction.cs b/Content.Server/Power/PowerWireAction.cs index 82736155469..7a46f61defe 100644 --- a/Content.Server/Power/PowerWireAction.cs +++ b/Content.Server/Power/PowerWireAction.cs @@ -113,7 +113,7 @@ private void SetElectrified(EntityUid used, bool setting, ElectrifiedComponent? } /// false if failed, true otherwise, or if the entity cannot be electrified - private bool TrySetElectrocution(EntityUid user, Wire wire, bool timed = false) + private bool TrySetElectrocution(EntityUid? user, Wire wire, bool timed = false) { if (!EntityManager.TryGetComponent(wire.Owner, out var electrified)) { @@ -122,8 +122,11 @@ private bool TrySetElectrocution(EntityUid user, Wire wire, bool timed = false) // always set this to true SetElectrified(wire.Owner, true, electrified); + + if (user is null) + return true; - var electrifiedAttempt = _electrocution.TryDoElectrifiedAct(wire.Owner, user); + var electrifiedAttempt = _electrocution.TryDoElectrifiedAct(wire.Owner, user.Value); // if we were electrified, then return false return !electrifiedAttempt; @@ -186,7 +189,7 @@ public override bool AddWire(Wire wire, int count) return true; } - public override bool Cut(EntityUid user, Wire wire) + public override bool Cut(EntityUid? user, Wire wire) { base.Cut(user, wire); if (!TrySetElectrocution(user, wire)) @@ -199,7 +202,7 @@ public override bool Cut(EntityUid user, Wire wire) return true; } - public override bool Mend(EntityUid user, Wire wire) + public override bool Mend(EntityUid? user, Wire wire) { base.Mend(user, wire); if (!TrySetElectrocution(user, wire)) @@ -216,7 +219,7 @@ public override bool Mend(EntityUid user, Wire wire) return true; } - public override void Pulse(EntityUid user, Wire wire) + public override void Pulse(EntityUid? user, Wire wire) { base.Pulse(user, wire); WiresSystem.TryCancelWireAction(wire.Owner, PowerWireActionKey.ElectrifiedCancel); diff --git a/Content.Server/Silicons/StationAi/AiInteractWireAction.cs b/Content.Server/Silicons/StationAi/AiInteractWireAction.cs index b7b4247a19a..93cab7c6060 100644 --- a/Content.Server/Silicons/StationAi/AiInteractWireAction.cs +++ b/Content.Server/Silicons/StationAi/AiInteractWireAction.cs @@ -19,19 +19,19 @@ public sealed partial class AiInteractWireAction : ComponentWireAction() .SetWhitelistEnabled((wire.Owner, component), false, announce: true); } - public override bool Mend(EntityUid user, Wire wire, StationAiWhitelistComponent component) + public override bool Mend(EntityUid? user, Wire wire, StationAiWhitelistComponent component) { return EntityManager.System() .SetWhitelistEnabled((wire.Owner, component), true); } - public override void Pulse(EntityUid user, Wire wire, StationAiWhitelistComponent component) + public override void Pulse(EntityUid? user, Wire wire, StationAiWhitelistComponent component) { } } diff --git a/Content.Server/Silicons/StationAi/AiVisionWireAction.cs b/Content.Server/Silicons/StationAi/AiVisionWireAction.cs index 0e84d843d02..7fd41b41fb6 100644 --- a/Content.Server/Silicons/StationAi/AiVisionWireAction.cs +++ b/Content.Server/Silicons/StationAi/AiVisionWireAction.cs @@ -20,19 +20,19 @@ public sealed partial class AiVisionWireAction : ComponentWireAction() .SetVisionEnabled((wire.Owner, component), false, announce: true); } - public override bool Mend(EntityUid user, Wire wire, StationAiVisionComponent component) + public override bool Mend(EntityUid? user, Wire wire, StationAiVisionComponent component) { return EntityManager.System() .SetVisionEnabled((wire.Owner, component), true); } - public override void Pulse(EntityUid user, Wire wire, StationAiVisionComponent component) + public override void Pulse(EntityUid? user, Wire wire, StationAiVisionComponent component) { // TODO: This should turn it off for a bit // Need timer cleanup first out of scope. diff --git a/Content.Server/Speech/Components/ListenWireAction.cs b/Content.Server/Speech/Components/ListenWireAction.cs index f9f1d9e92ea..c47a5344b77 100644 --- a/Content.Server/Speech/Components/ListenWireAction.cs +++ b/Content.Server/Speech/Components/ListenWireAction.cs @@ -68,7 +68,7 @@ public override bool GetValue(EntityUid owner) return !EntityManager.HasComponent(owner); } - public override void Pulse(EntityUid user, Wire wire) + public override void Pulse(EntityUid? user, Wire wire) { if (!GetValue(wire.Owner) || !IsPowered(wire.Owner)) return; diff --git a/Content.Server/Speech/Components/SpeechWireAction.cs b/Content.Server/Speech/Components/SpeechWireAction.cs index dd95f2051b8..bc61d73fca9 100644 --- a/Content.Server/Speech/Components/SpeechWireAction.cs +++ b/Content.Server/Speech/Components/SpeechWireAction.cs @@ -26,19 +26,19 @@ public override void Initialize() _popup = EntityManager.System(); } - public override bool Cut(EntityUid user, Wire wire, SpeechComponent component) + public override bool Cut(EntityUid? user, Wire wire, SpeechComponent component) { _speech.SetSpeech(wire.Owner, false, component); return true; } - public override bool Mend(EntityUid user, Wire wire, SpeechComponent component) + public override bool Mend(EntityUid? user, Wire wire, SpeechComponent component) { _speech.SetSpeech(wire.Owner, true, component); return true; } - public override void Pulse(EntityUid user, Wire wire, SpeechComponent component) + public override void Pulse(EntityUid? user, Wire wire, SpeechComponent component) { _popup.PopupEntity(Loc.GetString("wire-speech-pulse", ("name", wire.Owner)), wire.Owner); } diff --git a/Content.Server/SurveillanceCamera/CameraMapVisibilityWireAction.cs b/Content.Server/SurveillanceCamera/CameraMapVisibilityWireAction.cs index a673cf383f5..a31fff3ceb7 100644 --- a/Content.Server/SurveillanceCamera/CameraMapVisibilityWireAction.cs +++ b/Content.Server/SurveillanceCamera/CameraMapVisibilityWireAction.cs @@ -19,19 +19,19 @@ public sealed partial class CameraMapVisibilityWireAction : ComponentWireAction< : StatusLightState.Off; } - public override bool Cut(EntityUid user, Wire wire, SurveillanceCameraComponent component) + public override bool Cut(EntityUid? user, Wire wire, SurveillanceCameraComponent component) { _cameraMapSystem.SetCameraVisibility(wire.Owner, false); return true; } - public override bool Mend(EntityUid user, Wire wire, SurveillanceCameraComponent component) + public override bool Mend(EntityUid? user, Wire wire, SurveillanceCameraComponent component) { _cameraMapSystem.SetCameraVisibility(wire.Owner, true); return true; } - public override void Pulse(EntityUid user, Wire wire, SurveillanceCameraComponent component) + public override void Pulse(EntityUid? user, Wire wire, SurveillanceCameraComponent component) { } diff --git a/Content.Server/VendingMachines/VendingMachineEjectItemWireAction.cs b/Content.Server/VendingMachines/VendingMachineEjectItemWireAction.cs index 45e5e96426c..0c7cb095a0b 100644 --- a/Content.Server/VendingMachines/VendingMachineEjectItemWireAction.cs +++ b/Content.Server/VendingMachines/VendingMachineEjectItemWireAction.cs @@ -23,19 +23,19 @@ public override void Initialize() _vendingMachineSystem = EntityManager.System(); } - public override bool Cut(EntityUid user, Wire wire, VendingMachineComponent vending) + public override bool Cut(EntityUid? user, Wire wire, VendingMachineComponent vending) { _vendingMachineSystem.SetShooting(wire.Owner, true, vending); return true; } - public override bool Mend(EntityUid user, Wire wire, VendingMachineComponent vending) + public override bool Mend(EntityUid? user, Wire wire, VendingMachineComponent vending) { _vendingMachineSystem.SetShooting(wire.Owner, false, vending); return true; } - public override void Pulse(EntityUid user, Wire wire, VendingMachineComponent vending) + public override void Pulse(EntityUid? user, Wire wire, VendingMachineComponent vending) { _vendingMachineSystem.EjectRandom(wire.Owner, true, vendComponent: vending); } diff --git a/Content.Server/Wires/BaseToggleWireAction.cs b/Content.Server/Wires/BaseToggleWireAction.cs index e5348958dd4..81466cef451 100644 --- a/Content.Server/Wires/BaseToggleWireAction.cs +++ b/Content.Server/Wires/BaseToggleWireAction.cs @@ -27,7 +27,7 @@ public abstract partial class BaseToggleWireAction : BaseWireAction public virtual object? TimeoutKey { get; } = null; public virtual int Delay { get; } = 30; - public override bool Cut(EntityUid user, Wire wire) + public override bool Cut(EntityUid? user, Wire wire) { base.Cut(user, wire); ToggleValue(wire.Owner, false); @@ -40,7 +40,7 @@ public override bool Cut(EntityUid user, Wire wire) return true; } - public override bool Mend(EntityUid user, Wire wire) + public override bool Mend(EntityUid? user, Wire wire) { base.Mend(user, wire); ToggleValue(wire.Owner, true); @@ -48,7 +48,7 @@ public override bool Mend(EntityUid user, Wire wire) return true; } - public override void Pulse(EntityUid user, Wire wire) + public override void Pulse(EntityUid? user, Wire wire) { base.Pulse(user, wire); ToggleValue(wire.Owner, !GetValue(wire.Owner)); diff --git a/Content.Server/Wires/BaseWireAction.cs b/Content.Server/Wires/BaseWireAction.cs index ef6a0fdf36e..a31831b2189 100644 --- a/Content.Server/Wires/BaseWireAction.cs +++ b/Content.Server/Wires/BaseWireAction.cs @@ -59,11 +59,11 @@ public virtual void Initialize() } public virtual bool AddWire(Wire wire, int count) => count == 1; - public virtual bool Cut(EntityUid user, Wire wire) => Log(user, wire, "cut"); - public virtual bool Mend(EntityUid user, Wire wire) => Log(user, wire, "mended"); - public virtual void Pulse(EntityUid user, Wire wire) => Log(user, wire, "pulsed"); + public virtual bool Cut(EntityUid? user, Wire wire) => Log(user, wire, "cut"); + public virtual bool Mend(EntityUid? user, Wire wire) => Log(user, wire, "mended"); + public virtual void Pulse(EntityUid? user, Wire wire) => Log(user, wire, "pulsed"); - private bool Log(EntityUid user, Wire wire, string verb) + private bool Log(EntityUid? user, Wire wire, string verb) { var player = EntityManager.ToPrettyString(user); var owner = EntityManager.ToPrettyString(wire.Owner); @@ -72,7 +72,11 @@ private bool Log(EntityUid user, Wire wire, string verb) var action = GetType().Name; // logs something like "... mended red POWR wire (PowerWireAction) in ...." - _adminLogger.Add(LogType.WireHacking, LogImpact.Medium, $"{player} {verb} {color} {name} wire ({action}) in {owner}"); + if (user is not null) + _adminLogger.Add(LogType.WireHacking, LogImpact.Medium, $"{player} {verb} {color} {name} wire ({action}) in {owner}"); + else + // Lower impact if being caused without a user. + _adminLogger.Add(LogType.WireHacking, LogImpact.Low, $"{color} {name} {verb} ({action}) in {owner}"); return true; } diff --git a/Content.Server/Wires/ComponentWireAction.cs b/Content.Server/Wires/ComponentWireAction.cs index 90c8a7594d4..eb86d762700 100644 --- a/Content.Server/Wires/ComponentWireAction.cs +++ b/Content.Server/Wires/ComponentWireAction.cs @@ -15,24 +15,24 @@ public abstract partial class ComponentWireAction : BaseWireAction w : StatusLightState.Off; } - public abstract bool Cut(EntityUid user, Wire wire, TComponent component); - public abstract bool Mend(EntityUid user, Wire wire, TComponent component); - public abstract void Pulse(EntityUid user, Wire wire, TComponent component); + public abstract bool Cut(EntityUid? user, Wire wire, TComponent component); + public abstract bool Mend(EntityUid? user, Wire wire, TComponent component); + public abstract void Pulse(EntityUid? user, Wire wire, TComponent component); - public override bool Cut(EntityUid user, Wire wire) + public override bool Cut(EntityUid? user, Wire wire) { base.Cut(user, wire); // if the entity doesn't exist, we need to return true otherwise the wire sprite is never updated return EntityManager.TryGetComponent(wire.Owner, out TComponent? component) ? Cut(user, wire, component) : true; } - public override bool Mend(EntityUid user, Wire wire) + public override bool Mend(EntityUid? user, Wire wire) { base.Mend(user, wire); return EntityManager.TryGetComponent(wire.Owner, out TComponent? component) ? Mend(user, wire, component) : true; } - public override void Pulse(EntityUid user, Wire wire) + public override void Pulse(EntityUid? user, Wire wire) { base.Pulse(user, wire); if (EntityManager.TryGetComponent(wire.Owner, out TComponent? component)) diff --git a/Content.Server/Wires/IWireAction.cs b/Content.Server/Wires/IWireAction.cs index 903ac0d347d..36472e57541 100644 --- a/Content.Server/Wires/IWireAction.cs +++ b/Content.Server/Wires/IWireAction.cs @@ -46,7 +46,7 @@ public interface IWireAction /// The user attempting to interact with the wire. /// The wire being interacted with. /// true if successful, false otherwise. - public bool Cut(EntityUid user, Wire wire); + public bool Cut(EntityUid? user, Wire wire); /// /// What happens when this wire is mended. If this returns false, the wire will not actually get cut. @@ -54,14 +54,14 @@ public interface IWireAction /// The user attempting to interact with the wire. /// The wire being interacted with. /// true if successful, false otherwise. - public bool Mend(EntityUid user, Wire wire); + public bool Mend(EntityUid? user, Wire wire); /// /// This method gets called when the wire is pulsed.. /// /// The user attempting to interact with the wire. /// The wire being interacted with. - public void Pulse(EntityUid user, Wire wire); + public void Pulse(EntityUid? user, Wire wire); /// /// Used when a wire's state on an entity needs to be updated. diff --git a/Content.Server/Wires/WiresSystem.cs b/Content.Server/Wires/WiresSystem.cs index 2ca7d8a2489..033c7c76f4c 100644 --- a/Content.Server/Wires/WiresSystem.cs +++ b/Content.Server/Wires/WiresSystem.cs @@ -786,6 +786,68 @@ private void UpdateWires(EntityUid used, EntityUid user, EntityUid toolEntity, i wires.WiresQueue.Remove(id); } + /// + /// Causes the passed wire action to be activated on the target entity and wire ID. + /// + /// The target entity + /// The ID of the wire to call the action on + /// The wire action to activate + /// True if the action was called, false otherwise + public bool TryForceWireAction(EntityUid uid, int id, WiresAction action, WiresComponent? wires = null) + { + if (!Resolve(uid, ref wires)) + return false; + + var wire = TryGetWire(uid, id, wires); + if (wire == null) + return false; + + return TryForceWireAction(uid, wire, action, wires); + } + + /// + /// Causes the passed wire action to be activated on the target entity and wire. + /// + /// The target entity + /// The wire to call the action on + /// The wire action to activate + /// True if the action was called, false otherwise + public bool TryForceWireAction(EntityUid uid, Wire wire, WiresAction action, WiresComponent? wires = null) + { + if (!Resolve(uid, ref wires)) + return false; + + if (wire.Owner != uid) + return false; + + switch (action) + { + case WiresAction.Cut: + if (wire.Action == null || wire.Action.Cut(null, wire)) + { + wire.IsCut = true; + } + + UpdateUserInterface(uid); + break; + case WiresAction.Mend: + if (wire.Action == null || wire.Action.Mend(null, wire)) + { + wire.IsCut = false; + } + + UpdateUserInterface(uid); + break; + case WiresAction.Pulse: + wire.Action?.Pulse(null, wire); + + UpdateUserInterface(uid); + break; + } + + return true; + } + /// /// Tries to get the stateful data stored in this entity's WiresComponent. /// diff --git a/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitStorageModuleSystem.cs b/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitStorageModuleSystem.cs new file mode 100644 index 00000000000..db89063040d --- /dev/null +++ b/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitStorageModuleSystem.cs @@ -0,0 +1,56 @@ +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Storage; +using Robust.Shared.Containers; + +namespace Content.Server._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitStorageModuleSystem : EntitySystem +{ + [Dependency] private SharedContainerSystem _container = default!; + [Dependency] private SharedUserInterfaceSystem _interfaceSystem = default!; + + private const string StorageBoundUserInterface = "StorageBoundUserInterface"; + + public override void Initialize() + { + SubscribeLocalEvent(OnModuleInserted); + SubscribeLocalEvent(OnModuleRemoved); + } + + private void OnModuleInserted(Entity entity, ref ModuleInsertedEvent args) + { + var target = args.Storage; + + // Don't try to do this if it's already a storage. + if (HasComp(target)) + return; + + EntityManager.AddComponents(target, entity.Comp.StorageComponent); + + if (!_interfaceSystem.HasUi(target, StorageComponent.StorageUiKey.Key)) + { + _interfaceSystem.SetUi(target.Owner, StorageComponent.StorageUiKey.Key, new InterfaceData(StorageBoundUserInterface)); + } + + DirtyEntity(target); + } + + private void OnModuleRemoved(Entity entity, ref ModuleRemovedEvent args) + { + // If our parent is being deleted, just let everything be deleted. + if (TerminatingOrDeleted(args.Storage)) + return; + + var coordinates = Transform(args.Storage).Coordinates; + var target = args.Storage; + + if (TryComp(target, out var storage)) + { + var container = storage.Container; + RemComp(target); + _container.EmptyContainer(container, destination: coordinates); + _container.ShutdownContainer(container); + } + } +} \ No newline at end of file diff --git a/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs b/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs new file mode 100644 index 00000000000..0c55fc20b86 --- /dev/null +++ b/Content.Server/_DEN/Clothing/Modsuits/EntitySystems/ModsuitSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +namespace Content.Server._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitSystem : SharedModsuitSystem +{ + +} \ No newline at end of file diff --git a/Content.Server/_DEN/Clothing/Modsuits/WireActions/InterfaceWireAction.cs b/Content.Server/_DEN/Clothing/Modsuits/WireActions/InterfaceWireAction.cs new file mode 100644 index 00000000000..aa65ccd6292 --- /dev/null +++ b/Content.Server/_DEN/Clothing/Modsuits/WireActions/InterfaceWireAction.cs @@ -0,0 +1,43 @@ +using Content.Server.Wires; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Content.Shared.Wires; +using JetBrains.Annotations; + +namespace Content.Server._DEN.Clothing.Modsuits.WireActions; + +[UsedImplicitly] +public sealed partial class InterfaceWireAction : ComponentWireAction +{ + private SharedModsuitSystem _modsuitSystem = default!; + + public override string Name { get; set; } = "wire-name-interface"; + public override Color Color { get; set; } = Color.Blue; + public override object? StatusKey { get; } = InterfaceWireActionKey.StatusKey; + + public override void Initialize() + { + base.Initialize(); + + _modsuitSystem = EntityManager.System(); + } + + public override StatusLightState? GetLightState(Wire wire, ModsuitControllerComponent component) + => component.UIFunctional ? StatusLightState.On : StatusLightState.Off; + + public override bool Cut(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + _modsuitSystem.SetUIFunctionality((wire.Owner, component), false); + return true; + } + + public override bool Mend(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + _modsuitSystem.SetUIFunctionality((wire.Owner, component), true); + return true; + } + + public override void Pulse(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + } +} \ No newline at end of file diff --git a/Content.Server/_DEN/Clothing/Modsuits/WireActions/SealableWireAction.cs b/Content.Server/_DEN/Clothing/Modsuits/WireActions/SealableWireAction.cs new file mode 100644 index 00000000000..020fe206f62 --- /dev/null +++ b/Content.Server/_DEN/Clothing/Modsuits/WireActions/SealableWireAction.cs @@ -0,0 +1,50 @@ +using Content.Server.Popups; +using Content.Server.Wires; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Content.Shared.Popups; +using Content.Shared.Wires; +using JetBrains.Annotations; + +namespace Content.Server._DEN.Clothing.Modsuits.WireActions; + +[UsedImplicitly] +public sealed partial class SealableWireAction : ComponentWireAction +{ + private SharedModsuitSystem _modsuitSystem = default!; + private PopupSystem _popupSystem = default!; + + public override string Name { get; set; } = "wire-name-seals"; + public override Color Color { get; set; } = Color.Red; + public override object? StatusKey { get; } = SealableWireActionKey.StatusKey; + + public override void Initialize() + { + base.Initialize(); + + _modsuitSystem = EntityManager.System(); + _popupSystem = EntityManager.System(); + } + + public override StatusLightState? GetLightState(Wire wire, ModsuitControllerComponent component) + => component.PartsSpringlocked ? StatusLightState.BlinkingFast : StatusLightState.On; + + public override bool Cut(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + _popupSystem.PopupEntity(Loc.GetString("springlock-wire-cut", ("name", wire.Owner)), wire.Owner, PopupType.LargeCaution); + _modsuitSystem.TrySetSpringlocked((wire.Owner, component), true); + return true; + } + + public override bool Mend(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + _popupSystem.PopupEntity(Loc.GetString("springlock-wire-repaired", ("name", wire.Owner)), wire.Owner); + _modsuitSystem.TrySetSpringlocked((wire.Owner, component), false); + return true; + } + + public override void Pulse(EntityUid? user, Wire wire, ModsuitControllerComponent component) + { + _popupSystem.PopupEntity(Loc.GetString("springlock-wire-pulsed", ("name", wire.Owner)), wire.Owner); + } +} \ No newline at end of file diff --git a/Content.Server/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs b/Content.Server/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs new file mode 100644 index 00000000000..c41eb74b592 --- /dev/null +++ b/Content.Server/_DEN/Modules/EntitySystems/ModuleStorageSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared._DEN.Modules.EntitySystems; + +namespace Content.Server._DEN.Modules.EntitySystems; + +public sealed partial class ModuleStorageSystem : SharedModuleStorageSystem +{ +} \ No newline at end of file diff --git a/Content.Server/_DEN/Wires/EntitySystems/EmpWireFrySystem.cs b/Content.Server/_DEN/Wires/EntitySystems/EmpWireFrySystem.cs new file mode 100644 index 00000000000..48a07084993 --- /dev/null +++ b/Content.Server/_DEN/Wires/EntitySystems/EmpWireFrySystem.cs @@ -0,0 +1,39 @@ +using Content.Server.Wires; +using Content.Shared._DEN.Wires.Components; +using Content.Shared.Emp; +using Content.Shared.Wires; +using Robust.Shared.Random; + +namespace Content.Server._DEN.Wires.EntitySystems; + +public sealed partial class EmpWireFrySystem : EntitySystem +{ + [Dependency] private IRobustRandom _random = default!; + [Dependency] private WiresSystem _wiresSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEmpPulse); + } + + private void OnEmpPulse(Entity entity, ref EmpPulseEvent evt) + { + if (!TryComp(entity, out var wires)) + return; + + var attemptEv = new AttemptEmpBreakWiresEvent(); + RaiseLocalEvent(entity, attemptEv); + if (attemptEv.Cancelled) + return; + + foreach (var wire in wires.WiresList) + { + if (_random.Prob(entity.Comp.Chance)) + { + _wiresSystem.TryForceWireAction(entity, wire, WiresAction.Cut, wires); + } + } + } +} \ No newline at end of file diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 04bac214728..eb5781e33d3 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -849,7 +849,7 @@ public void RemoveAction(Entity performer, Entity diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.BreathTool.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.BreathTool.cs index 26b4d1949f6..d5b034fe40a 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.BreathTool.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.BreathTool.cs @@ -10,6 +10,9 @@ private void InitializeBreathTool() { SubscribeLocalEvent(OnBreathToolShutdown); SubscribeLocalEvent(OnMaskToggled); + + // DEN: Modsuits need ComponentInit... + InitializeModsuits(); } private void OnBreathToolShutdown(Entity entity, ref ComponentShutdown args) diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs index de7d0ad7ee6..5a1c033a501 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs @@ -1024,7 +1024,7 @@ private void OnSolutionExaminableVerb(Entity entity args.Verbs.Add(verb); } - private FormattedMessage GetSolutionExamine(Solution solution) + public FormattedMessage GetSolutionExamine(Solution solution) // DEN: Make Public { var msg = new FormattedMessage(); diff --git a/Content.Shared/Chemistry/SolutionScannerSystem.cs b/Content.Shared/Chemistry/SolutionScannerSystem.cs index 0e6d784777a..a7a6bbab598 100644 --- a/Content.Shared/Chemistry/SolutionScannerSystem.cs +++ b/Content.Shared/Chemistry/SolutionScannerSystem.cs @@ -20,5 +20,5 @@ private void OnSolutionScanAttempt(EntityUid eid, SolutionScannerComponent compo public sealed class SolutionScanEvent : EntityEventArgs, IInventoryRelayEvent { public bool CanScan; - public SlotFlags TargetSlots { get; } = SlotFlags.EYES; + public SlotFlags TargetSlots { get; } = SlotFlags.EYES | SlotFlags.HEAD; // DEN: Modsuit helmets can be scanners. } diff --git a/Content.Shared/Clothing/Components/ToggleableClothingComponent.cs b/Content.Shared/Clothing/Components/ToggleableClothingComponent.cs index 3053efe89aa..942c9e87af2 100644 --- a/Content.Shared/Clothing/Components/ToggleableClothingComponent.cs +++ b/Content.Shared/Clothing/Components/ToggleableClothingComponent.cs @@ -26,17 +26,11 @@ public sealed partial class ToggleableClothingComponent : Component public EntityUid? ActionEntity; /// - /// Default clothing entity prototype to spawn into the clothing container. - /// - [DataField(required: true), AutoNetworkedField] - public EntProtoId ClothingPrototype = default!; - - /// - /// The inventory slot that the clothing is equipped to. + /// Map of inventory slots to clothing entity prototypes to spawn into the clothing container. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField, AutoNetworkedField] - public string Slot = "head"; + [DataField(required: true), AutoNetworkedField] + public Dictionary ClothingPrototypes = new(); /// /// The inventory slot flags required for this component to function. @@ -51,14 +45,14 @@ public sealed partial class ToggleableClothingComponent : Component public string ContainerId = DefaultClothingContainerId; [ViewVariables] - public ContainerSlot? Container; + public Container? Container; /// - /// The Id of the piece of clothing that belongs to this component. Required for map-saving if the clothing is - /// currently not inside of the container. + /// The Ids of the pieces of clothing that belongs to this component, as well as the slot they belong in. + /// Required for map-saving if the clothing is currently not inside the container. /// [DataField, AutoNetworkedField] - public EntityUid? ClothingUid; + public Dictionary ClothingUids = new(); /// /// Time it takes for this clothing to be toggled via the stripping menu verbs. Null prevents the verb from even showing up. diff --git a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs index 8628419ce51..ee1f472fc61 100644 --- a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs @@ -1,3 +1,5 @@ +using System.Collections.Immutable; +using System.Linq; using Content.Shared.Actions; using Content.Shared.Clothing.Components; using Content.Shared.DoAfter; @@ -55,12 +57,20 @@ public override void Initialize() private void GetRelayedVerbs(EntityUid uid, ToggleableClothingComponent component, InventoryRelayedEvent> args) { - OnGetVerbs(uid, component, args.Args); + GetVerbs(uid, null, component, args.Args); } private void OnGetVerbs(EntityUid uid, ToggleableClothingComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || args.Hands == null || component.ClothingUid == null || component.Container == null) + GetVerbs(uid, null, component, args); + } + + private void GetVerbs(EntityUid uid, + EntityUid? targetClothing, + ToggleableClothingComponent component, + GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null || component.Container == null) return; var text = component.VerbText ?? (component.ActionEntity == null ? null : Name(component.ActionEntity.Value)); @@ -74,33 +84,63 @@ private void OnGetVerbs(EntityUid uid, ToggleableClothingComponent component, Ge if (args.User != wearer && component.StripDelay == null) return; - var verb = new EquipmentVerb() + // Handle the case of only a single kind specially so there's no needless nesting. + if (component.ClothingUids.Count == 1 || targetClothing != null) { - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), - Text = Loc.GetString(text), - }; - - if (args.User == wearer) - { - verb.EventTarget = uid; - verb.ExecutionEventArgs = new ToggleClothingEvent() { Performer = args.User }; + var target = targetClothing ?? component.ClothingUids.First().Key; + + var verb = new EquipmentVerb() + { + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")), + Text = Loc.GetString(text), + }; + + if (args.User == wearer) + { + verb.EventTarget = uid; + verb.ExecutionEventArgs = new ToggleClothingEvent(target: target) { Performer = args.User }; + } + else + { + verb.Act = () => StartDoAfter(args.User, uid, target, Transform(uid).ParentUid, component); + } + + args.Verbs.Add(verb); } else { - verb.Act = () => StartDoAfter(args.User, uid, Transform(uid).ParentUid, component); + foreach (var (target, slot) in component.ClothingUids) + { + var verb = new EquipmentVerb() + { + Text = Loc.GetString(text), + IconEntity = GetNetEntity(target), + Category = VerbCategory.ToggleClothing, + }; + + if (args.User == wearer) + { + verb.EventTarget = uid; + verb.ExecutionEventArgs = new ToggleClothingEvent(target: target) { Performer = args.User }; + } + else + { + verb.Act = () => StartDoAfter(args.User, uid, target, Transform(uid).ParentUid, component); + } + + args.Verbs.Add(verb); + } } - - args.Verbs.Add(verb); } - private void StartDoAfter(EntityUid user, EntityUid item, EntityUid wearer, ToggleableClothingComponent component) + private void StartDoAfter(EntityUid user, EntityUid item, EntityUid targetClothing, EntityUid wearer, ToggleableClothingComponent component) { if (component.StripDelay == null) return; var (time, stealth) = _strippable.GetStripTimeModifiers(user, wearer, item, component.StripDelay.Value); - var args = new DoAfterArgs(EntityManager, user, time, new ToggleClothingDoAfterEvent(), item, wearer, item) + var args = new DoAfterArgs(EntityManager, user, time, new ToggleClothingDoAfterEvent(GetNetEntity(targetClothing)), item, wearer, item) { BreakOnDamage = true, BreakOnMove = true, @@ -122,8 +162,8 @@ private void StartDoAfter(EntityUid user, EntityUid item, EntityUid wearer, Togg private void OnGetAttachedStripVerbsEvent(EntityUid uid, AttachedClothingComponent component, GetVerbsEvent args) { - // redirect to the attached entity. - OnGetVerbs(component.AttachedUid, Comp(component.AttachedUid), args); + // Use the parents GetVerbs but specify that this child is the target. + GetVerbs(component.AttachedUid, uid, Comp(component.AttachedUid), args); } private void OnDoAfterComplete(EntityUid uid, ToggleableClothingComponent component, ToggleClothingDoAfterEvent args) @@ -131,7 +171,7 @@ private void OnDoAfterComplete(EntityUid uid, ToggleableClothingComponent compon if (args.Cancelled) return; - ToggleClothing(args.User, uid, component); + DoMultiToggle(args.User, uid, GetEntity(args.TargetClothing), component); } private void OnInteractHand(EntityUid uid, AttachedClothingComponent component, InteractHandEvent args) @@ -143,7 +183,10 @@ private void OnInteractHand(EntityUid uid, AttachedClothingComponent component, || toggleCom.Container == null) return; - if (!_inventorySystem.TryUnequip(Transform(uid).ParentUid, toggleCom.Slot, force: true)) + if (!toggleCom.ClothingUids.TryGetValue(uid, out var slot)) + return; + + if (!_inventorySystem.TryUnequip(Transform(uid).ParentUid, slot, force: true)) return; _containerSystem.Insert(uid, toggleCom.Container); @@ -151,7 +194,7 @@ private void OnInteractHand(EntityUid uid, AttachedClothingComponent component, } /// - /// Called when the suit is unequipped, to ensure that the helmet also gets unequipped. + /// Called when the clothing is unequipped, to ensure that all attached clothing also gets unequipped. /// private void OnToggleableUnequip(EntityUid uid, ToggleableClothingComponent component, GotUnequippedEvent args) { @@ -159,11 +202,26 @@ private void OnToggleableUnequip(EntityUid uid, ToggleableClothingComponent comp if (_timing.ApplyingState) return; - // If the attached clothing is not currently in the container, this just assumes that it is currently equipped. - // This should maybe double check that the entity currently in the slot is actually the attached clothing, but - // if its not, then something else has gone wrong already... - if (component.Container != null && component.Container.ContainedEntity == null && component.ClothingUid != null) - _inventorySystem.TryUnequip(args.EquipTarget, component.Slot, force: true, triggerHandContact: true); + if (component.Container == null) + return; + + foreach (var (entity, slot) in component.ClothingUids) + { + // Assume that if a particular entity is not in the internal container then it is currently equipped. + // Log if that is not the case (though this system has been working correctly this entire time). + if (component.Container.Contains(entity)) + continue; + + if (!_inventorySystem.TryUnequip(args.EquipTarget, + slot, + out var removed, + force: true, + triggerHandContact: true)) + continue; + + if (removed != entity) + Log.Warning($"Unequipped {ToPrettyString(removed)} instead of {ToPrettyString(entity)} when removing Toggleable {ToPrettyString(uid)}"); + } } private void OnRemoveToggleable(EntityUid uid, ToggleableClothingComponent component, ComponentRemove args) @@ -175,8 +233,11 @@ private void OnRemoveToggleable(EntityUid uid, ToggleableClothingComponent compo _actionsSystem.RemoveAction(component.ActionEntity); - if (component.ClothingUid != null && !_netMan.IsClient) - QueueDel(component.ClothingUid.Value); + if (!_netMan.IsClient) + { + foreach (var entity in component.ClothingUids.Keys) + QueueDel(entity); + } } private void OnAttachedUnequipAttempt(EntityUid uid, AttachedClothingComponent component, BeingUnequippedAttemptEvent args) @@ -186,10 +247,10 @@ private void OnAttachedUnequipAttempt(EntityUid uid, AttachedClothingComponent c private void OnRemoveAttached(EntityUid uid, AttachedClothingComponent component, ComponentRemove args) { - // if the attached component is being removed (maybe entity is being deleted?) we will just remove the - // toggleable clothing component. This means if you had a hard-suit helmet that took too much damage, you would - // still be left with a suit that was simply missing a helmet. There is currently no way to fix a partially - // broken suit like this. + // if the attached component is being removed (maybe entity is being deleted?) we will remove it from the set + // of entities that the toggleable clothing can toggle. If there are no entities left then we just remove + // the entire toggleable component. There is currently no way to fix a piece of clothing that has lost + // one of its attached pieces. if (!TryComp(component.AttachedUid, out ToggleableClothingComponent? toggleComp)) return; @@ -197,12 +258,18 @@ private void OnRemoveAttached(EntityUid uid, AttachedClothingComponent component if (toggleComp.LifeStage > ComponentLifeStage.Running) return; + toggleComp.ClothingUids.Remove(uid); + + // There are still other AttachedClothing pieces left that could be used, so keep the component. + if (toggleComp.ClothingUids.Count != 0) + return; + _actionsSystem.RemoveAction(toggleComp.ActionEntity); RemComp(component.AttachedUid, toggleComp); } /// - /// Called if the helmet was unequipped, to ensure that it gets moved into the suit's container. + /// Called if the clothing was unequipped, to ensure that it gets moved into the parent's container. /// private void OnAttachedUnequip(EntityUid uid, AttachedClothingComponent component, GotUnequippedEvent args) { @@ -221,8 +288,8 @@ private void OnAttachedUnequip(EntityUid uid, AttachedClothingComponent componen // As unequipped gets called in the middle of container removal, we cannot call a container-insert without causing issues. // So we delay it and process it during a system update: - if (toggleComp.ClothingUid != null && toggleComp.Container != null) - _containerSystem.Insert(toggleComp.ClothingUid.Value, toggleComp.Container); + if (toggleComp.Container != null) + _containerSystem.Insert(uid, toggleComp.Container); } /// @@ -234,30 +301,94 @@ private void OnToggleClothing(EntityUid uid, ToggleableClothingComponent compone return; args.Handled = true; - ToggleClothing(args.Performer, uid, component); + DoMultiToggle(args.Performer, uid, args.TargetClothing, component); + } + + private void DoMultiToggle(EntityUid user, + EntityUid target, + EntityUid? targetClothing, + ToggleableClothingComponent component) + { + // We want to toggle the target if we have one. + // Otherwise, if there is some clothing that isn't deployed, then we deploy all undeployed clothing. + // If there is no undeployed clothing, then we retract everything instead. + // This preserves the default Action behavior on single piece ToggleableClothing, and provides a sensible + // default on multi-piece ToggleableClothing. Though multi-piece could also provide a different action + // that provides a method of selecting a piece instead. + if (targetClothing != null) + { + ToggleClothing(user, target, targetClothing.Value, component); + return; + } + + if (component.Container is {} container && container.ContainedEntities.Count > 0) + { + // Determine if any of the unequipped clothes can be equipped. If they can, put them on. If they can't, then + // instead try to unequip any currently equipped ones. This is so that if the user is wearing a piece of + // clothing that blocks only one of the slots, the default action continues to function for the rest of the + // slots. + var unequippedClothing = container.ContainedEntities.Where(clothing => + CanEquip(user, clothing, component.ClothingUids[clothing])) + .ToArray(); + + if (unequippedClothing.Length != 0) + { + foreach (var entity in unequippedClothing) + { + ToggleClothing(user, target, entity, component); + } + + return; + } + } + + foreach (var entity in component.ClothingUids.Keys) + { + if (!component.Container?.Contains(entity) ?? false) + ToggleClothing(user, target, entity, component); + } } - private void ToggleClothing(EntityUid user, EntityUid target, ToggleableClothingComponent component) + private bool CanEquip(EntityUid user, EntityUid targetClothing, string slot) { - if (component.Container == null || component.ClothingUid == null) + if (_inventorySystem.TryGetSlotEntity(user, slot, out _)) + return false; + + return _inventorySystem.CanEquip(user, targetClothing, slot, out _); + } + + private void ToggleClothing(EntityUid user, EntityUid target, EntityUid targetClothing, ToggleableClothingComponent component) + { + if (component.Container == null || !component.ClothingUids.ContainsKey(targetClothing)) return; var parent = Transform(target).ParentUid; - if (component.Container.ContainedEntity == null) - _inventorySystem.TryUnequip(user, parent, component.Slot, force: true); - else if (_inventorySystem.TryGetSlotEntity(parent, component.Slot, out var existing)) + var slot = component.ClothingUids[targetClothing]; + + // DEN: Check if clothing can be toggled for MODsuits. + if (!CanToggleClothing(targetClothing, out var reason)) + { + if (reason is not null) + _popupSystem.PopupClient(Loc.GetString(reason), user, user); + return; + } + + if (!component.Container.Contains(targetClothing)) + { + _inventorySystem.TryUnequip(user, parent, slot, force: true); + } + else if (_inventorySystem.TryGetSlotEntity(parent, slot, out var existing)) { _popupSystem.PopupClient(Loc.GetString("toggleable-clothing-remove-first", ("entity", existing)), user, user); } else - _inventorySystem.TryEquip(user, parent, component.ClothingUid.Value, component.Slot, triggerHandContact: true); + _inventorySystem.TryEquip(user, parent, targetClothing, slot, triggerHandContact: true); } private void OnGetActions(EntityUid uid, ToggleableClothingComponent component, GetItemActionsEvent args) { - if (component.ClothingUid != null - && component.ActionEntity != null + if (component.ActionEntity != null && (args.SlotFlags & component.RequiredFlags) == component.RequiredFlags) { args.AddAction(component.ActionEntity.Value); @@ -266,7 +397,7 @@ private void OnGetActions(EntityUid uid, ToggleableClothingComponent component, private void OnInit(EntityUid uid, ToggleableClothingComponent component, ComponentInit args) { - component.Container = _containerSystem.EnsureContainer(uid, component.ContainerId); + component.Container = _containerSystem.EnsureContainer(uid, component.ContainerId); } /// @@ -275,39 +406,63 @@ private void OnInit(EntityUid uid, ToggleableClothingComponent component, Compon /// private void OnMapInit(EntityUid uid, ToggleableClothingComponent component, MapInitEvent args) { - if (component.Container!.ContainedEntity is {} ent) + if (component.Container!.ContainedEntities is {} ents) { - DebugTools.Assert(component.ClothingUid == ent, "Unexpected entity present inside of a toggleable clothing container."); - return; + foreach (var ent in ents) + { + DebugTools.Assert(component.ClothingUids.ContainsKey(ent), "Unexpected entity present inside of a toggleable clothing container."); + return; + } } - if (component.ClothingUid != null && component.ActionEntity != null) + if (component.ClothingUids.Count == 0 && component.ActionEntity != null) { - DebugTools.Assert(Exists(component.ClothingUid), "Toggleable clothing is missing expected entity."); - DebugTools.Assert(TryComp(component.ClothingUid, out AttachedClothingComponent? comp), "Toggleable clothing is missing an attached component"); - DebugTools.Assert(comp?.AttachedUid == uid, "Toggleable clothing uid mismatch"); + foreach (var entity in component.ClothingUids.Keys) + { + DebugTools.Assert(Exists(entity), "Toggleable clothing is missing expected entity."); + DebugTools.Assert(TryComp(entity, out AttachedClothingComponent? comp), "Toggleable clothing is missing an attached component"); + DebugTools.Assert(comp?.AttachedUid == uid, "Toggleable clothing uid mismatch"); + } } else { var xform = Transform(uid); - component.ClothingUid = Spawn(component.ClothingPrototype, xform.Coordinates); - var attachedClothing = EnsureComp(component.ClothingUid.Value); - attachedClothing.AttachedUid = uid; - Dirty(component.ClothingUid.Value, attachedClothing); - _containerSystem.Insert(component.ClothingUid.Value, component.Container, containerXform: xform); + foreach (var (slot, protoId) in component.ClothingPrototypes) + { + var entity = Spawn(protoId, xform.Coordinates); + component.ClothingUids.Add(entity, slot); + var attachedClothing = EnsureComp(entity); + attachedClothing.AttachedUid = uid; + Dirty(entity, attachedClothing); + _containerSystem.Insert(entity, component.Container, containerXform: xform); + } Dirty(uid, component); } if (_actionContainer.EnsureAction(uid, ref component.ActionEntity, out var action, component.Action)) - _actionsSystem.SetEntityIcon((component.ActionEntity.Value, action), component.ClothingUid); + { + _actionsSystem.SetEntityIcon((component.ActionEntity.Value, action), component.ClothingUids.First().Key); + } } } public sealed partial class ToggleClothingEvent : InstantActionEvent { + public EntityUid? TargetClothing; + + public ToggleClothingEvent(EntityUid target) + { + TargetClothing = target; + } } [Serializable, NetSerializable] public sealed partial class ToggleClothingDoAfterEvent : SimpleDoAfterEvent { + public NetEntity TargetClothing; + + public ToggleClothingDoAfterEvent(NetEntity target) + { + TargetClothing = target; + } } diff --git a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs index 9ca70790a6b..0469e59e175 100644 --- a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs +++ b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs @@ -27,6 +27,7 @@ public override void Initialize() SubscribeLocalEvent(OnActionInit); SubscribeLocalEvent(OnRetractableItemAction); + SubscribeLocalEvent(OnRetractableItemActionShutdown); // DEN: Handle shutdown. SubscribeLocalEvent(OnActionSummonedShutdown); Subs.SubscribeWithRelay>(OnItemHandcuffed, inventory: false); diff --git a/Content.Shared/SubFloor/SharedTrayScannerSystem.cs b/Content.Shared/SubFloor/SharedTrayScannerSystem.cs index e732450de40..306b075d196 100644 --- a/Content.Shared/SubFloor/SharedTrayScannerSystem.cs +++ b/Content.Shared/SubFloor/SharedTrayScannerSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Hands; using Content.Shared.Interaction; using Content.Shared.Inventory.Events; +using Content.Shared.Item.ItemToggle; using Content.Shared.Timing; using Content.Shared.Verbs; using Robust.Shared.Audio; @@ -19,6 +20,7 @@ public abstract partial class SharedTrayScannerSystem : EntitySystem [Dependency] private SharedEyeSystem _eye = default!; [Dependency] private UseDelaySystem _delay = default!; [Dependency] private INetManager _netMan = default!; + [Dependency] private ItemToggleSystem _itemToggle = default!; public const float SubfloorRevealAlpha = 0.8f; @@ -26,18 +28,19 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnTrayScannerActivate); SubscribeLocalEvent>(OnAddSwitchModeVerb); SubscribeLocalEvent(OnTrayHandEquipped); SubscribeLocalEvent(OnTrayHandUnequipped); SubscribeLocalEvent(OnTrayEquipped); SubscribeLocalEvent(OnTrayUnequipped); SubscribeLocalEvent(OnUserGetVis); + + InitializeDen(); } private void OnAddSwitchModeVerb(Entity scanner, ref GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || !args.Using.HasValue || !scanner.Comp.Enabled) + if (!args.CanAccess || !args.CanInteract || !args.Using.HasValue || !_itemToggle.IsActivated(scanner.Owner)) return; var user = args.User; @@ -135,20 +138,4 @@ private void OnTrayEquipped(Entity ent, ref GotEquippedEve { OnEquip(args.EquipTarget); } - - private void OnTrayScannerActivate(Entity ent, ref ActivateInWorldEvent args) - { - if (args.Handled || !args.Complex) - return; - - ent.Comp.Enabled = !ent.Comp.Enabled; - Dirty(ent); - - if (TryComp(ent, out var appearance)) - { - _appearance.SetData(ent, TrayScannerVisual.Visual, ent.Comp.Enabled ? TrayScannerVisual.On : TrayScannerVisual.Off, appearance); - } - - args.Handled = true; - } } diff --git a/Content.Shared/SubFloor/TrayScannerComponent.cs b/Content.Shared/SubFloor/TrayScannerComponent.cs index cacb3457183..6e7a33b2beb 100644 --- a/Content.Shared/SubFloor/TrayScannerComponent.cs +++ b/Content.Shared/SubFloor/TrayScannerComponent.cs @@ -7,12 +7,6 @@ namespace Content.Shared.SubFloor; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class TrayScannerComponent : Component { - /// - /// Whether the scanner is currently on. - /// - [DataField, AutoNetworkedField] - public bool Enabled; - /// /// Current mode of operation, defines which subfloor entities are shown. /// diff --git a/Content.Shared/Verbs/VerbCategory.cs b/Content.Shared/Verbs/VerbCategory.cs index c824858af4a..9c7a8fecd19 100644 --- a/Content.Shared/Verbs/VerbCategory.cs +++ b/Content.Shared/Verbs/VerbCategory.cs @@ -88,5 +88,8 @@ public VerbCategory(string text, string? icon, bool iconsOnly = false) public static readonly VerbCategory Adjust = new("verb-categories-adjust", "/Textures/Interface/VerbIcons/screwdriver.png"); + + public static readonly VerbCategory ToggleClothing = + new("verb-categories-toggle-clothing", "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png"); } } diff --git a/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs b/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs index 4f99790d127..d11baddefbc 100644 --- a/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs +++ b/Content.Shared/Weapons/Misc/SharedTetherGunSystem.cs @@ -52,6 +52,7 @@ public override void Initialize() SubscribeLocalEvent(OnTetheredContainerInserted); InitializeForce(); + InitializeToggle(); // DEN: ItemToggle behavior. } private void OnTetheredContainerInserted(EntityUid uid, TetheredComponent component, EntGotInsertedIntoContainerMessage args) diff --git a/Content.Shared/Wires/SharedWiresSystem.cs b/Content.Shared/Wires/SharedWiresSystem.cs index 76d622f1424..dcf5fd6903a 100644 --- a/Content.Shared/Wires/SharedWiresSystem.cs +++ b/Content.Shared/Wires/SharedWiresSystem.cs @@ -32,6 +32,8 @@ public override void Initialize() SubscribeLocalEvent(OnAttemptOpenActivatableUI); SubscribeLocalEvent(OnActivatableUIPanelChanged); + + InitializeLock(); // DEN: Panel locking item slots. } private void OnStartup(Entity ent, ref ComponentStartup args) diff --git a/Content.Shared/_DEN/Actions/Components/ActivateUsingActionComponent.cs b/Content.Shared/_DEN/Actions/Components/ActivateUsingActionComponent.cs new file mode 100644 index 00000000000..30b8d20fd4e --- /dev/null +++ b/Content.Shared/_DEN/Actions/Components/ActivateUsingActionComponent.cs @@ -0,0 +1,8 @@ +using Content.Shared.Actions; + +namespace Content.Shared._DEN.Actions.Components; + +[RegisterComponent] +public sealed partial class ActivateUsingActionComponent : Component; + +public sealed partial class ActivateUsingActionEvent : InstantActionEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Actions/Components/InteractInWorldActionComponent.cs b/Content.Shared/_DEN/Actions/Components/InteractInWorldActionComponent.cs new file mode 100644 index 00000000000..a226a716237 --- /dev/null +++ b/Content.Shared/_DEN/Actions/Components/InteractInWorldActionComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Actions; + +namespace Content.Shared._DEN.Actions.Components; + +/// +/// Used on an entity to communicate that it should get InteractInWorldActionEvents +/// +[RegisterComponent] +public sealed partial class InteractInWorldActionComponent : Component; + +public sealed partial class InteractInWorldActionEvent : WorldTargetActionEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Actions/Components/InteractUsingActionComponent.cs b/Content.Shared/_DEN/Actions/Components/InteractUsingActionComponent.cs new file mode 100644 index 00000000000..bf3173fa952 --- /dev/null +++ b/Content.Shared/_DEN/Actions/Components/InteractUsingActionComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Actions; + +namespace Content.Shared._DEN.Actions.Components; + +/// +/// Marks an entity as usable with InteractUsingActionEvents +/// +[RegisterComponent] +public sealed partial class InteractUsingActionComponent : Component; + +public sealed partial class InteractUsingActionEvent : EntityTargetActionEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Actions/EntitySystems/UsingActionSystem.cs b/Content.Shared/_DEN/Actions/EntitySystems/UsingActionSystem.cs new file mode 100644 index 00000000000..d579be9f245 --- /dev/null +++ b/Content.Shared/_DEN/Actions/EntitySystems/UsingActionSystem.cs @@ -0,0 +1,33 @@ +using Content.Shared._DEN.Actions.Components; +using Content.Shared.Interaction; + +namespace Content.Shared._DEN.Actions.EntitySystems; + +public sealed partial class UsingActionSystem : EntitySystem +{ + [Dependency] private SharedInteractionSystem _interactionSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnInteractAction); + SubscribeLocalEvent(OnActivateAction); + SubscribeLocalEvent(OnInteractInWorldAction); + } + + private void OnInteractAction(Entity entity, ref InteractUsingActionEvent args) + { + args.Handled = _interactionSystem.InteractUsing(args.Performer, entity, args.Target, Transform(args.Target).Coordinates); + } + + private void OnActivateAction(Entity entity, ref ActivateUsingActionEvent args) + { + args.Handled = _interactionSystem.InteractionActivate(args.Performer, entity.Owner); + } + + private void OnInteractInWorldAction(Entity entity, ref InteractInWorldActionEvent args) + { + args.Handled = true; + var canReach = _interactionSystem.InRangeUnobstructed(args.Performer, args.Target); + _interactionSystem.InteractUsingRanged(args.Performer, entity, args.Entity, args.Target, canReach); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Atmos/EntitySystems/SharedAtmosphereSystem.Modsuits.cs b/Content.Shared/_DEN/Atmos/EntitySystems/SharedAtmosphereSystem.Modsuits.cs new file mode 100644 index 00000000000..84a8c860ae9 --- /dev/null +++ b/Content.Shared/_DEN/Atmos/EntitySystems/SharedAtmosphereSystem.Modsuits.cs @@ -0,0 +1,25 @@ +using Content.Shared.Atmos.Components; +using Content.Shared.Clothing.Components; + +namespace Content.Shared.Atmos.EntitySystems; + +public abstract partial class SharedAtmosphereSystem +{ + private void InitializeModsuits() + { + SubscribeLocalEvent(OnBreathToolInit); + } + + private void OnBreathToolInit(Entity entity, ref ComponentInit evt) + { + // The comment in the mask system is so right there needs to be a better way to get something's wearer. + if (TryComp(entity, out var clothing) + && clothing.InSlotFlag is { } slotFlag + && entity.Comp.AllowedSlots.HasFlag(slotFlag)) + { + var wearer = Transform(entity).ParentUid; + if (_internalsQuery.TryComp(wearer, out var internals)) + _internals.ConnectBreathTool((wearer, internals), entity); + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/EntitySystems/ToggleableClothingSystem.DEN.cs b/Content.Shared/_DEN/Clothing/EntitySystems/ToggleableClothingSystem.DEN.cs new file mode 100644 index 00000000000..9af99d84594 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/EntitySystems/ToggleableClothingSystem.DEN.cs @@ -0,0 +1,18 @@ +// ReSharper disable once CheckNamespace +namespace Content.Shared.Clothing.EntitySystems; + +public sealed partial class ToggleableClothingSystem +{ + private bool CanToggleClothing(EntityUid targetClothing, out LocId? reason) + { + var evt = new ToggleClothingAttemptEvent(); + RaiseLocalEvent(targetClothing, evt); + reason = evt.Reason; + return !evt.Cancelled; + } +} + +public sealed class ToggleClothingAttemptEvent : CancellableEntityEventArgs +{ + public LocId? Reason; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ConsumeModsuitPowerOnMeleeComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ConsumeModsuitPowerOnMeleeComponent.cs new file mode 100644 index 00000000000..a44b200362f --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ConsumeModsuitPowerOnMeleeComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Makes an entity drain power from something else (A modsuit) in order to deal damage with a melee hit. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ConsumeModsuitPowerOnMeleeComponent : Component +{ + /// + /// How much power is consumed when the attached entity hits something in melee. This is consumed once per hit event + /// regardless of targets. + /// + [DataField, AutoNetworkedField] public float DrainOnMelee = 1.0f; + + /// + /// Controls if power is consumed even when nothing is hit. + /// + [DataField] public bool MissesConsumePower = false; + + /// + /// The inventory slot that the item will look in on the user for a modsuit to take power from. + /// + [DataField] public string ExpectedModsuitSlot = "back"; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitArmorModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitArmorModuleComponent.cs new file mode 100644 index 00000000000..140f8a4cca0 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitArmorModuleComponent.cs @@ -0,0 +1,24 @@ +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Content.Shared.Damage; +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Allows a modsuit module to provide armor to the modsuit. This component interacts with +/// ModsuitPartAttachedModuleComponent and ItemToggleComponent to handle being turned on and off and requiring specific +/// parts to be enabled. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(ModsuitArmorSystem))] +public sealed partial class ModsuitArmorModuleComponent : Component +{ + /// + /// Default damage modifier set. Applied to every part if there are multiple. + /// + [DataField, AutoNetworkedField] public DamageModifierSet? Modifiers; + + /// + /// Per slot modifier sets. Use this if you need multiple parts and want the values to be different per part.s + /// + [DataField, AutoNetworkedField] public Dictionary SlotModifiers = new(); +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitControllerComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitControllerComponent.cs new file mode 100644 index 00000000000..39c88537f45 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitControllerComponent.cs @@ -0,0 +1,20 @@ +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), Access(typeof(SharedModsuitSystem))] +public sealed partial class ModsuitControllerComponent : Component +{ + [DataField] public EntProtoId ActionId = "ActionOpenModsuitUI"; + + [DataField] public EntityUid? UiActionEntity; + + [DataField, AutoNetworkedField] public bool PartsSpringlocked = false; + + [DataField, AutoNetworkedField] public bool UIFunctional = true; + + [DataField, AutoNetworkedField] public Dictionary SlotToPart = new(); + [DataField, AutoNetworkedField] public Dictionary PartToSlot = new(); +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitEmpProtectionModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitEmpProtectionModuleComponent.cs new file mode 100644 index 00000000000..827d4dff45f --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitEmpProtectionModuleComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class ModsuitEmpProtectionModuleComponent : Component +{ + [DataField("broken", required: true)] public EntProtoId BrokenProtoId; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitExplosionResistanceModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitExplosionResistanceModuleComponent.cs new file mode 100644 index 00000000000..81d9711195a --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitExplosionResistanceModuleComponent.cs @@ -0,0 +1,21 @@ +using Content.Shared._DEN.Clothing.Modsuits.EntitySystems; +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Used for a modsuit module which modifies the explosion resistance of attached pieces of the modsuit.s +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(ModsuitArmorSystem))] +public sealed partial class ModsuitExplosionResistanceModuleComponent : Component +{ + /// + /// The damage coefficient applied to all attached parts if present. + /// + [DataField, AutoNetworkedField] public float? DamageCoefficient = 1.0f; + + /// + /// Per slot explosion modifiers, these are preferred over DamageCoefficient if present. + /// + [DataField, AutoNetworkedField] public Dictionary SlotCoefficients = new(); +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitHolsterModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitHolsterModuleComponent.cs new file mode 100644 index 00000000000..dfc2605e1cc --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitHolsterModuleComponent.cs @@ -0,0 +1,23 @@ +using Robust.Shared.Containers; +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitHolsterModuleComponent : Component +{ + /// + /// The inventory slot that the holster will equip and unequip items from along with the attached part. + /// + [DataField, AutoNetworkedField] public string InventorySlot = "suitstorage"; + + /// + /// ID of the slot container for the holster. + /// + [DataField, AutoNetworkedField] public string SlotId = "MODHolster"; + + /// + /// The ContainerSlot that the holstered item will be stored in. + /// + [DataField] public ContainerSlot Slot = new(); +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleActionGrantComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleActionGrantComponent.cs new file mode 100644 index 00000000000..1c0c99780cf --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleActionGrantComponent.cs @@ -0,0 +1,13 @@ +using Content.Shared.Actions.Components; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitModuleActionGrantComponent : Component +{ + [DataField(required: true)] public List> Actions; + + [DataField, AutoNetworkedField] public Dictionary, EntityUid> ActionEntities = new(); +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleComponent.cs new file mode 100644 index 00000000000..52b9bc96cc4 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Indicates that a module is one that belongs to a modsuit. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitModuleComponent : Component +{ + [AutoNetworkedField, ViewVariables(VVAccess.ReadOnly)] + public EntityUid? ModController; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleToggleParentComponentsComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleToggleParentComponentsComponent.cs new file mode 100644 index 00000000000..652259b477d --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleToggleParentComponentsComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Causes a set of components to be toggled on the wearer entity of the modsuit when this module is toggled. +/// +[RegisterComponent] +public sealed partial class ModsuitModuleToggleParentComponentsComponent : Component +{ + /// + /// Components that are added to the part on toggle. These will be removed when toggled off. + /// + [DataField] public ComponentRegistry? AddOnToggle; + + /// + /// Components that are removed from the part on toggle. These will be added when toggled off. + /// + [DataField] public ComponentRegistry? RemoveOnToggle; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponent.cs new file mode 100644 index 00000000000..7bd29580616 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Causes a module to toggle the associated modsuit part when the module is toggled. +/// Does nothing without ModsuitPartAttachedModuleComponent +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ModsuitModuleTogglePartComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponentsComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponentsComponent.cs new file mode 100644 index 00000000000..885d35b83cf --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitModuleTogglePartComponentsComponent.cs @@ -0,0 +1,23 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Causes a set of components to be added to the part this module is associated with when the module is toggled. +/// +/// Uses ModsuitPartAttachedModuleComponent to be associated with a part. +/// +// TODO: This should be more generic. +[RegisterComponent] +public sealed partial class ModsuitModuleTogglePartComponentsComponent : Component +{ + /// + /// Components that are added to the part on toggle. These will be removed when toggled off. + /// + [DataField] public ComponentRegistry? AddOnToggle; + + /// + /// Components that are removed from the part on toggle. These will be added when toggled off. + /// + [DataField] public ComponentRegistry? RemoveOnToggle; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartAttachedModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartAttachedModuleComponent.cs new file mode 100644 index 00000000000..8fc9434768d --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartAttachedModuleComponent.cs @@ -0,0 +1,23 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Marks that a modsuit module's functionality is attached to specific parts of the modsuit, indicated by the slots +/// that those pieces go in. This current relies on the controller having a ToggleableClothingComponent that the +/// matching parts are fetched from. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitPartAttachedModuleComponent : Component +{ + /// + /// The slots that this module is considered to be 'attached' to for the sake of modsuit functionality. + /// + [DataField(required: true), AutoNetworkedField] + public List Slots; + + /// + /// If all the listed slots must be present and sealed, or just one. + /// + [DataField, AutoNetworkedField] public bool NeedsAll = true; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartComponent.cs new file mode 100644 index 00000000000..edfd8c016bc --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPartComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitPartComponent : Component +{ + [DataField, AutoNetworkedField] public EntityUid Controller; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPassiveComponentModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPassiveComponentModuleComponent.cs new file mode 100644 index 00000000000..60f044d1ccc --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPassiveComponentModuleComponent.cs @@ -0,0 +1,35 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Causes a set of components to be added to, removed from, or prevented from being added to the parts in +/// the provided slots when they are sealed or unsealed. There is no enforcement of a particular order for these modules. +/// If two modules are going to modify the same set of components then they should likely be prevented from being +/// installed together. See ModuleComponent's blacklist and whitelist. +/// +/// Relevant slots / parts are determined from ModsuitPartAttachedModuleComponent. If you do not have one this +/// +[RegisterComponent] +public sealed partial class ModsuitPassiveComponentModuleComponent : Component +{ + /// + /// These components are prevented from being added to the part on seal if they otherwise would have been. + /// + [DataField] public ComponentRegistry? BlockOnSeal; + + /// + /// These components are prevented from being added to the part on unseal if they otherwise would have been. + /// + [DataField] public ComponentRegistry? BlockOnUnseal; + + /// + /// These components are added to the part on seal. They are removed on unseal + /// + [DataField] public ComponentRegistry? AddOnSeal; + + /// + /// These components are added to the part on unseal. They are removed on seal. + /// + [DataField] public ComponentRegistry? AddOnUnseal; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPowerDrainActionComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPowerDrainActionComponent.cs new file mode 100644 index 00000000000..c47ea277508 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitPowerDrainActionComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Causes an action to consume power from a MODsuit before it can occur. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModsuitPowerDrainActionComponent : Component +{ + /// + /// The amount of power that must be drained from the MODsuit for the action to occur. + /// + [DataField, AutoNetworkedField] public float DrainOnAction = 1.0f; + + /// + /// The slot to look in for the modsuit. + /// + [DataField, AutoNetworkedField] public string ExpectedModsuitSlot = "back"; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitRelayVerbsComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitRelayVerbsComponent.cs new file mode 100644 index 00000000000..e3fa4b1f83e --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitRelayVerbsComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +/// +/// Marks a modsuit module as wanting GetVerbsEvent's relayed to it from its attached parts. +/// +[RegisterComponent] +public sealed partial class ModsuitRelayVerbsComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitStorageModuleComponent.cs b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitStorageModuleComponent.cs new file mode 100644 index 00000000000..895ce0f39ec --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/Components/ModsuitStorageModuleComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Item; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.Components; + +[RegisterComponent] +public sealed partial class ModsuitStorageModuleComponent : Component +{ + [DataField] public ComponentRegistry StorageComponent; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ConsumeModsuitPowerSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ConsumeModsuitPowerSystem.cs new file mode 100644 index 00000000000..fd8c3b35d91 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ConsumeModsuitPowerSystem.cs @@ -0,0 +1,70 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Modules.EntitySystems; +using Content.Shared.Actions; +using Content.Shared.Actions.Events; +using Content.Shared.Inventory; +using Content.Shared.Weapons.Melee.Events; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ConsumeModsuitPowerSystem : EntitySystem +{ + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private ModulePowerSystem _powerSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnMeleeHit); + SubscribeLocalEvent(OnActionValidate, after: [typeof(SharedActionsSystem)]); + SubscribeLocalEvent(OnActionPerformed); + } + + private bool TryGetModsuit(EntityUid user, string slot, [NotNullWhen(true)] out Entity? modsuit) + { + modsuit = null; + if (!_inventory.TryGetSlotEntity(user, slot, out var maybeModsuit) || + !TryComp(maybeModsuit, out var modsuitComp)) + return false; + modsuit = (maybeModsuit.Value, modsuitComp); + return true; + } + + private void OnMeleeHit(Entity ent, ref MeleeHitEvent args) + { + if ((!args.IsHit || args.HitEntities.Count == 0) && !ent.Comp.MissesConsumePower) + return; + + if (!TryGetModsuit(args.User, ent.Comp.ExpectedModsuitSlot, out var modsuit)) + return; + + if (!_powerSystem.TryUseCharge(modsuit.Value.Owner, ent.Comp.DrainOnMelee, args.User, true)) + { + args.Handled = true; + } + } + + private void OnActionValidate(Entity ent, ref ActionValidateEvent args) + { + // Can't find a modsuit to get power from. + if (!TryGetModsuit(args.User, ent.Comp.ExpectedModsuitSlot, out var modsuit)) + { + args.Invalid = true; + return; + } + + if (!_powerSystem.HasCharge(modsuit.Value.Owner, ent.Comp.DrainOnAction, args.User, true)) + { + args.Invalid = true; + } + } + + private void OnActionPerformed(Entity ent, ref ActionPerformedEvent args) + { + // Can't find a modsuit to get power from. + if (!TryGetModsuit(args.Performer, ent.Comp.ExpectedModsuitSlot, out var modsuit)) + return; + + _powerSystem.TryUseCharge(modsuit.Value.Owner, ent.Comp.DrainOnAction, args.Performer, true); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitArmorSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitArmorSystem.cs new file mode 100644 index 00000000000..f5b494ca7c5 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitArmorSystem.cs @@ -0,0 +1,210 @@ +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared.Armor; +using Content.Shared.Damage; +using Content.Shared.Damage.Systems; +using Content.Shared.Explosion; +using Content.Shared.Inventory; +using Content.Shared.Item.ItemToggle; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitArmorSystem : EntitySystem +{ + [Dependency] private ItemToggleSystem _toggleSystem = default!; + [Dependency] private SharedModsuitSystem _modsuitSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent>>(OnCoefficientQuery); + SubscribeLocalEvent>>( + OnDamageModify); + SubscribeLocalEvent>(OnArmorExamine); + + SubscribeLocalEvent>>(OnGetModuleExplosionResistance); + SubscribeLocalEvent>(OnExplosionResistanceExamine); + } + + private void TryGetSlotFromModulePart(EntityUid ent, EntityUid part, out string? slot) + { + slot = null; + if (!TryComp(ent, out var attached)) + return; + + foreach (var kvp in _modsuitSystem.GetModuleAttachedParts((ent, attached))) + { + if (kvp.Item2 != part) + continue; + + slot = kvp.Item1; + return; + } + } + + private void OnCoefficientQuery(Entity ent, + ref ModsuitRelayedEvent> args) + { + var evt = args.Args.Args; + + TryGetSlotFromModulePart(ent, args.Owner, out var slot); + + // If we're toggleable and we're off then don't set. ModsuitPartAttachedModuleComponent handles not enabling + // if our parts aren't sealed. + if (!_toggleSystem.IsActivated(ent.Owner)) + return; + + Dictionary? armorCoefficients = null; + if (ent.Comp.Modifiers is { } modifiers) + { + armorCoefficients = modifiers.Coefficients; + } + + if (slot is not null && ent.Comp.SlotModifiers.TryGetValue(slot, out var slotModifier)) + { + armorCoefficients = slotModifier.Coefficients; + } + + if (armorCoefficients is null) + return; + + foreach (var armorCoefficient in armorCoefficients) + { + evt.DamageModifiers.Coefficients[armorCoefficient.Key] = + evt.DamageModifiers.Coefficients.TryGetValue(armorCoefficient.Key, out var coefficient) + ? coefficient * armorCoefficient.Value + : armorCoefficient.Value; + } + } + + private void OnDamageModify(Entity ent, + ref ModsuitRelayedEvent> args) + { + var evt = args.Args.Args; + + TryGetSlotFromModulePart(ent, args.Owner, out var slot); + + // If we're toggleable and we're off then don't set. ModsuitPartAttachedModuleComponent handles not enabling + // if our parts aren't sealed. + if (!_toggleSystem.IsActivated(ent.Owner)) + return; + + DamageModifierSet? damageModifierSet = null; + if (ent.Comp.Modifiers is { } modifiers) + { + damageModifierSet = modifiers; + } + + if (slot is not null && ent.Comp.SlotModifiers.TryGetValue(slot, out var slotModifier)) + { + damageModifierSet = slotModifier; + } + + if (damageModifierSet is null) + return; + + evt.Damage = DamageSpecifier.ApplyModifierSet(evt.Damage, damageModifierSet); + } + + private void OnArmorExamine(Entity ent, + ref ModsuitRelayedEvent args) + { + var evt = args.Args; + + TryGetSlotFromModulePart(ent, args.Owner, out var slot); + + // If we're toggleable and we're off then don't set. ModsuitPartAttachedModuleComponent handles not enabling + // if our parts aren't sealed. + if (!_toggleSystem.IsActivated(ent.Owner)) + return; + + DamageModifierSet? damageModifierSet = null; + if (ent.Comp.Modifiers is { } modifiers) + { + damageModifierSet = modifiers; + } + + if (slot is not null && ent.Comp.SlotModifiers.TryGetValue(slot, out var slotModifier)) + { + damageModifierSet = slotModifier; + } + + if (damageModifierSet is null) + return; + + evt.Msg.PushNewline(); + evt.Msg.AddMarkupOrThrow(Loc.GetString("armor-module-examine", ("entity", ent.Owner))); + + foreach (var coefficientArmor in damageModifierSet.Coefficients) + { + evt.Msg.PushNewline(); + + var armorType = Loc.GetString("armor-damage-type-" + coefficientArmor.Key.ToLower()); + evt.Msg.AddMarkupOrThrow(Loc.GetString("armor-coefficient-value", + ("type", armorType), + ("value", MathF.Round((1f - coefficientArmor.Value) * 100, 1)) + )); + } + + foreach (var flatArmor in damageModifierSet.FlatReduction) + { + evt.Msg.PushNewline(); + + var armorType = Loc.GetString("armor-damage-type-" + flatArmor.Key.ToLower()); + evt.Msg.AddMarkupOrThrow(Loc.GetString("armor-reduction-value", + ("type", armorType), + ("value", flatArmor.Value) + )); + } + } + + private void OnGetModuleExplosionResistance(Entity ent, ref ModsuitRelayedEvent> args) + { + var evt = args.Args.Args; + + TryGetSlotFromModulePart(ent, args.Owner, out var slot); + + float? coefficient = null; + if (ent.Comp.DamageCoefficient is { } damageCoefficient) + { + coefficient = damageCoefficient; + } + + if (slot is not null && ent.Comp.SlotCoefficients.TryGetValue(slot, out var slotCoefficient)) + { + coefficient = slotCoefficient; + } + + if (coefficient is null) + return; + + evt.DamageCoefficient *= coefficient.Value; + } + + private void OnExplosionResistanceExamine(Entity ent, ref ModsuitRelayedEvent args) + { + var evt = args.Args; + + TryGetSlotFromModulePart(ent, args.Owner, out var slot); + + float? coefficient = null; + if (ent.Comp.DamageCoefficient is { } damageCoefficient) + { + coefficient = damageCoefficient; + } + + if (slot is not null && ent.Comp.SlotCoefficients.TryGetValue(slot, out var slotCoefficient)) + { + coefficient = slotCoefficient; + } + + if (coefficient is null) + return; + + coefficient = MathF.Round((1f - coefficient.Value) * 100, 1); + + evt.Msg.PushNewline(); + evt.Msg.AddMarkupOrThrow(Loc.GetString("explosion-resist-module-examine", ("entity", ent.Owner))); + evt.Msg.PushNewline(); + evt.Msg.AddMarkupOrThrow(Loc.GetString("explosion-resistance-coefficient-value", ("value", coefficient.Value))); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitEmpProtectionModuleSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitEmpProtectionModuleSystem.cs new file mode 100644 index 00000000000..4a651891013 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitEmpProtectionModuleSystem.cs @@ -0,0 +1,53 @@ +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Modules.Components; +using Content.Shared._DEN.Modules.EntitySystems; +using Content.Shared._DEN.Wires.Components; +using Content.Shared.Popups; +using Robust.Shared.Network; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitEmpProtectionModuleSystem : EntitySystem +{ + [Dependency] private SharedModuleStorageSystem _moduleStorage = default!; + [Dependency] private SharedModsuitSystem _modsuitSystem = default!; + [Dependency] private INetManager _netManager = default!; + [Dependency] private SharedPopupSystem _popupSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent>(OnAttemptEmpBreakWiresEvent); + } + + private void OnAttemptEmpBreakWiresEvent(Entity ent, ref ModsuitRelayedEvent args) + { + + if (!_modsuitSystem.TryGetModuleController(ent.Owner, out var controller)) + return; + + if (!TryComp(controller.Value.Owner, out var storageComp)) + return; + + var storage = controller.Value.Owner; + + if (!_moduleStorage.TryGetModuleContainingSlot(storage, ent.Owner, out var slot)) + return; + + _moduleStorage.TryRemoveModule((storage, storageComp), null, null, slot.Value, out var removedModule, true); + if (removedModule != ent.Owner) + { + Log.Warning($"TryRemoveModule removed module {ToPrettyString(removedModule)} rather than the intended {ToPrettyString(ent.Owner)}"); + } + + _popupSystem.PopupPredicted(Loc.GetString("modsuit-emp-protection-module-breaks", ("entity", ent)), args.Owner, null, PopupType.LargeCaution); + PredictedQueueDel(ent); + args.Args.Cancel(); + + // Client can't predict spawning. + if (!_netManager.IsServer) + return; + + var brokenModule = Spawn(ent.Comp.BrokenProtoId); + _moduleStorage.TryInsertModule((storage, storageComp), brokenModule, null, slot.Value); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitHolsterModuleSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitHolsterModuleSystem.cs new file mode 100644 index 00000000000..04dbbdcdc7b --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitHolsterModuleSystem.cs @@ -0,0 +1,87 @@ +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Modules.Components; +using Content.Shared._DEN.Modules.EntitySystems; +using Content.Shared.Clothing; +using Content.Shared.Inventory; +using Robust.Shared.Containers; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitHolsterModuleSystem : EntitySystem +{ + [Dependency] private SharedContainerSystem _containerSystem = default!; + [Dependency] private SharedModsuitSystem _modsuitSystem = default!; + [Dependency] private InventorySystem _inventorySystem = default!; + [Dependency] private ModulePowerSystem _powerSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnModuleRemoved); + + SubscribeLocalEvent>( + OnClothingEquipRelay); + SubscribeLocalEvent>(OnClothingUnequipRelay); + } + + private void OnComponentInit(Entity ent, ref ComponentInit args) + { + ent.Comp.Slot = _containerSystem.EnsureContainer(ent, ent.Comp.SlotId); + } + + private void OnComponentRemove(Entity ent, ref ComponentRemove args) + { + _containerSystem.EmptyContainer(ent.Comp.Slot); + _containerSystem.ShutdownContainer(ent.Comp.Slot); + } + + private void OnModuleRemoved(Entity ent, ref ModuleRemovedEvent args) + { + _containerSystem.EmptyContainer(ent.Comp.Slot); + } + + private void OnClothingEquipRelay(Entity ent, ref ModsuitRelayedEvent args) + { + if (!_modsuitSystem.PartMatchesModule(ent.Owner, args.Owner)) + return; + + if (ent.Comp.Slot.ContainedEntity is not {} containedItem) + return; + + if (TryComp(ent, out var powerDraw)) + { + if (!_modsuitSystem.TryGetModuleController(ent.Owner, out var controller)) + return; + + if (!_powerSystem.TryUseCharge(controller.Value.Owner, powerDraw.UseCharge)) + return; + } + + var wearer = args.Args.Wearer; + _inventorySystem.TryUnequip(wearer, ent.Comp.InventorySlot); + _containerSystem.RemoveEntity(ent, containedItem); + _inventorySystem.TryEquip(wearer, containedItem, ent.Comp.InventorySlot, silent: false); + } + + private void OnClothingUnequipRelay(Entity ent, ref ModsuitRelayedEvent args) + { + if (!_modsuitSystem.PartMatchesModule(ent.Owner, args.Owner)) + return; + + if (TryComp(ent, out var powerDraw)) + { + if (!_modsuitSystem.TryGetModuleController(ent.Owner, out var controller)) + return; + + if (!_powerSystem.TryUseCharge(controller.Value.Owner, powerDraw.UseCharge)) + return; + } + + var wearer = args.Args.Wearer; + if (!_inventorySystem.TryGetSlotEntity(wearer, ent.Comp.InventorySlot, out var wornItem)) + return; + + _containerSystem.Insert(wornItem.Value, ent.Comp.Slot); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitModuleActionSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitModuleActionSystem.cs new file mode 100644 index 00000000000..e313756851d --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitModuleActionSystem.cs @@ -0,0 +1,57 @@ +using System.Linq; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Sealable.EntitySystems; +using Content.Shared.Actions; +using Content.Shared.Item.ItemToggle; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitModuleActionSystem : EntitySystem +{ + [Dependency] private SharedActionsSystem _actions = default!; + [Dependency] private SharedModsuitSystem _modsuitSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent>( + OnClothingSealed); + SubscribeLocalEvent>( + OnClothingUnsealed); + } + + private void OnClothingSealed(Entity entity, + ref ModsuitRelayedEvent evt) + { + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner)) + return; + + var wearer = Transform(evt.Owner).ParentUid; + foreach (var action in entity.Comp.Actions) + { + EntityUid? actionEntity = entity.Comp.ActionEntities.GetValueOrDefault(action); + _actions.AddAction(entity.Owner, ref actionEntity, action); + if (actionEntity is not null) + entity.Comp.ActionEntities[action] = actionEntity.Value; + } + _actions.GrantContainedActions(wearer, entity.Owner); + } + + private void OnClothingUnsealed(Entity entity, + ref ModsuitRelayedEvent evt) + { + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner)) + { + var wearer = Transform(evt.Owner).ParentUid; + // Copy so removing mid-iteration doesn't error. + var actions = entity.Comp.ActionEntities.Keys.ToList(); + foreach (var action in actions) + { + if (!entity.Comp.ActionEntities.Remove(action, out var actionEnt)) + continue; + + _actions.RemoveAction(wearer, actionEnt); + PredictedQueueDel(actionEnt); + } + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitToggleSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitToggleSystem.cs new file mode 100644 index 00000000000..403b7615f2d --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/ModsuitToggleSystem.cs @@ -0,0 +1,170 @@ +using System.Linq; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Sealable.EntitySystems; +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Item.ItemToggle; +using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.Toggleable; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public sealed partial class ModsuitToggleSystem : EntitySystem +{ + [Dependency] private SharedModsuitSystem _modsuitSystem = default!; + [Dependency] private ItemToggleSystem _toggleSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnModsuitModuleToggleAttempt); + SubscribeLocalEvent(OnModsuitModuleToggleAction); + SubscribeLocalEvent(OnModsuitModuleToggled); + + SubscribeLocalEvent(OnModsuitModulePartToggle); + + SubscribeLocalEvent>( + OnClothingUnsealed); + + SubscribeLocalEvent(OnModsuitModuleTogglePartComponents); + SubscribeLocalEvent>(OnAttachedPartUnsealed); + SubscribeLocalEvent>(OnAttachedPartSealed); + + SubscribeLocalEvent(OnModsuitModuleToggleParentComponents); + } + + private void OnModsuitModuleToggleAttempt(Entity entity, + ref ItemToggleActivateAttemptEvent args) + { + if (args.Cancelled) + return; + + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner)) + args.Cancelled = true; + } + + private void OnModsuitModuleToggled(Entity entity, ref ItemToggledEvent args) + { + _modsuitSystem.ModuleUpdateUI(entity.AsNullable()); + } + + private void OnAttachedPartUnsealed(Entity entity, + ref ModsuitRelayedEvent args) + { + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner) + || !HasComp(entity)) + return; + + if (!_modsuitSystem.PartMatchesModule(entity.Owner, args.Owner)) + return; + + var target = args.Owner; + ToggleComponentsOnTarget(target, entity.Comp.AddOnToggle, entity.Comp.RemoveOnToggle, false); + } + + // This exists to catch when the module doesn't have `NeedsAll`, in which case it might be activated while one + // part is unsealed. + private void OnAttachedPartSealed(Entity entity, + ref ModsuitRelayedEvent args) + { + if (!_toggleSystem.IsActivated(entity.Owner)) + return; + + if (!TryComp(entity, out var attachedComp)) + return; + + if (!_modsuitSystem.PartMatchesModule(entity.Owner, args.Owner)) + return; + + var target = args.Owner; + ToggleComponentsOnTarget(target, entity.Comp.AddOnToggle, entity.Comp.RemoveOnToggle, true); + } + + private void OnModsuitModuleTogglePartComponents(Entity entity, + ref ItemToggledEvent args) + { + if (!TryComp(entity, out var attachedComp)) + return; + + foreach (var target in _modsuitSystem.GetModuleAttachedParts((entity.Owner, attachedComp))) + { + if (!_modsuitSystem.CanPartBeActivated(target.Item2)) + continue; + + ToggleComponentsOnTarget(target.Item2, entity.Comp.AddOnToggle, entity.Comp.RemoveOnToggle, args.Activated); + } + } + + private void OnModsuitModuleToggleParentComponents(Entity entity, + ref ItemToggledEvent args) + { + if (!_modsuitSystem.ModuleHasActiveController(entity.Owner, out var controller)) + return; + + var wearer = Transform(controller.Value).ParentUid; + + ToggleComponentsOnTarget(wearer, entity.Comp.AddOnToggle, entity.Comp.RemoveOnToggle, args.Activated); + } + + private void OnClothingUnsealed(Entity entity, + ref ModsuitRelayedEvent args) + { + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner)) + { + _toggleSystem.TryDeactivate(entity.Owner); + } + } + + private void OnModsuitModuleToggleAction(Entity entity, + ref ToggleActionEvent args) + { + args.Handled = _toggleSystem.Toggle(entity.Owner, args.Performer); + } + + private void OnModsuitModulePartToggle(Entity entity, ref ItemToggledEvent args) + { + // We don't have an attached part, do nothing. + if (!TryComp(entity, out var attachedComp)) + return; + + // Skip checking slots if we're turning off, just in case something got unequipped before we did this. + if (!args.Activated) + { + foreach (var part in _modsuitSystem.GetModuleAttachedParts((entity.Owner, attachedComp))) + { + _toggleSystem.TryDeactivate(part.Item2); + } + return; + } + + if (!_modsuitSystem.CanModuleBeEnabled(entity.Owner)) + return; + + // Try to turn on all the relevant parts. + foreach (var part in _modsuitSystem.GetModuleAttachedParts((entity.Owner, attachedComp))) + { + if (_modsuitSystem.CanPartBeActivated(part.Item2)) + _toggleSystem.TrySetActive(part.Item2, args.Activated, args.User); + } + } + + private void ToggleComponentsOnTarget(EntityUid target, ComponentRegistry? addOnToggle, + ComponentRegistry? removeOnToggle, bool activated) + { + if (activated) + { + if (addOnToggle is not null) + EntityManager.AddComponents(target, addOnToggle); + + if (removeOnToggle is not null) + EntityManager.RemoveComponents(target, removeOnToggle); + } + else + { + if (addOnToggle is not null) + EntityManager.RemoveComponents(target, addOnToggle); + + if (removeOnToggle is not null) + EntityManager.AddComponents(target, removeOnToggle); + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.Relay.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.Relay.cs new file mode 100644 index 00000000000..da0b5e527b5 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.Relay.cs @@ -0,0 +1,72 @@ +using System.Linq; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Sealable.EntitySystems; +using Content.Shared._DEN.Wires.Components; +using Content.Shared.Armor; +using Content.Shared.Clothing; +using Content.Shared.Damage.Systems; +using Content.Shared.Explosion; +using Content.Shared.Inventory; +using Content.Shared.Verbs; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public abstract partial class SharedModsuitSystem +{ + private void InitializeRelay() + { + SubscribeLocalEvent(RelayModsuitEvent); + SubscribeLocalEvent(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent(RelayModsuitEvent); + SubscribeLocalEvent>( + RelayModsuitEvent); + SubscribeLocalEvent(RelayModsuitEvent); + SubscribeLocalEvent(RelayModsuitEvent); + SubscribeLocalEvent(RelayModsuitEvent); + + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + SubscribeLocalEvent>(RelayModsuitEvent); + + // These are different because they just get called directly on the module, rather than raised wrapped in ModsuitRelayedEvent + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + SubscribeLocalEvent>>(OnRelayedVerbsEvent); + } + + private void RelayModsuitEvent(Entity entity, ref T args) + { + EntityUid controller = entity.Comp.Controller; + + var evt = new ModsuitRelayedEvent(args, entity); + + // Modules might move or delete themselves in response to events so copy the list. + var modules = _moduleSystem.GetContainedModules(controller).ToList(); + foreach (var module in modules) + { + RaiseLocalEvent(module, evt); + } + + args = evt.Args; + } + + private void OnRelayedVerbsEvent(EntityUid entity, ModsuitRelayVerbsComponent _, ref ModsuitRelayedEvent> evt) + where T: Verb + { + if (!PartMatchesModule(entity, evt.Owner) || !CanModuleBeEnabled(entity)) + return; + + var args = evt.Args; + RaiseLocalEvent(entity, args); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.cs b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.cs new file mode 100644 index 00000000000..c8ea79bcd14 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Modsuits/EntitySystems/SharedModsuitSystem.cs @@ -0,0 +1,419 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared._DEN.Clothing.Modsuits.Components; +using Content.Shared._DEN.Clothing.Sealable.Components; +using Content.Shared._DEN.Clothing.Sealable.EntitySystems; +using Content.Shared._DEN.Modules.Components; +using Content.Shared._DEN.Modules.EntitySystems; +using Content.Shared.Actions; +using Content.Shared.Clothing.Components; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.Interaction; +using Content.Shared.Inventory.Events; +using Content.Shared.Item.ItemToggle; +using Robust.Shared.Serialization; + +namespace Content.Shared._DEN.Clothing.Modsuits.EntitySystems; + +public abstract partial class SharedModsuitSystem : EntitySystem +{ + [Dependency] private SharedModuleStorageSystem _moduleSystem = default!; + [Dependency] private SealableClothingSystem _sealableSystem = default!; + [Dependency] private SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] private ItemToggleSystem _toggleSystem = default!; + [Dependency] private SpringlockSystem _springlockSystem = default!; + [Dependency] private EntityQuery _modsuitControllerQuery = default!; + [Dependency] private EntityQuery _modsuitPartQuery = default!; + [Dependency] private EntityQuery _clothingQuery = default!; + + public override void Initialize() + { + InitializeRelay(); + + SubscribeLocalEvent(OnModsuitModuleInserted); + SubscribeLocalEvent(OnModsuitModuleRemoved); + SubscribeLocalEvent(OnAccessibleOverride); + SubscribeLocalEvent(OnInRangeOverride); + + SubscribeLocalEvent(OnControllerItemActions); + SubscribeLocalEvent(OnControllerInit, after: [typeof(ToggleableClothingSystem)]); + SubscribeLocalEvent(OnControllerOpenUi); + SubscribeLocalEvent(OnModsuitModuleToggle); + SubscribeLocalEvent(OnModsuitUnequipped); + SubscribeLocalEvent(OnModsuitHandleState); + + SubscribeLocalEvent>(OnPassiveComponentSealed); + SubscribeLocalEvent>(OnPassiveComponentUnsealed); + } + + private void OnAccessibleOverride(Entity ent, ref AccessibleOverrideEvent args) + { + // We're not in a controller so behave like a normal item. + if (ent.Comp.ModController is not { } controller) + return; + + // If the controller is parented to the user, then we're accessible as a module installed in it. + if (Transform(controller).ParentUid != args.User) + return; + + args.Accessible = true; + args.Handled = true; + } + + private void OnInRangeOverride(Entity ent, ref InRangeOverrideEvent args) + { + // We're not in a controller so behave like a normal item. + if (ent.Comp.ModController is not { } controller) + return; + + // If the controller is parented to the user, then we're accessible as a module installed in it. + if (Transform(controller).ParentUid != args.User) + return; + + args.InRange = true; + args.Handled = true; + } + + private void OnModsuitModuleToggle(Entity entity, ref ModsuitToggleModuleMessage msg) + { + if (!TryComp(entity, out var storage) || storage.ModuleContainer is null) + return; + + var target = GetEntity(msg.Target); + + if (!storage.ModuleContainer.Contains(target)) + return; + + _toggleSystem.TrySetActive(target, msg.State, msg.Actor); + UpdateUI(entity); + } + + private void OnControllerItemActions(Entity entity, ref GetItemActionsEvent evt) + { + if (evt.InHands) + return; + + evt.AddAction(ref entity.Comp.UiActionEntity, entity.Comp.ActionId); + } + + private void OnControllerOpenUi(Entity entity, ref ModsuitControllerOpenUiEvent evt) + { + if (!_uiSystem.HasUi(entity, ModsuitControllerUiKey.Key)) + return; + + if (_uiSystem.IsUiOpen(entity.Owner, ModsuitControllerUiKey.Key, evt.Performer)) + { + _uiSystem.CloseUi(entity.Owner, ModsuitControllerUiKey.Key, evt.Performer); + evt.Handled = true; + } + else + { + evt.Handled = _uiSystem.TryOpenUi(entity.Owner, ModsuitControllerUiKey.Key, evt.Performer); + } + } + + // I need this helper please god. + private bool IsWorn(EntityUid entity) + { + return _clothingQuery.TryComp(entity, out var clothing) + && clothing.InSlotFlag is { } slotFlag + && clothing.Slots.HasFlag(slotFlag); + } + + public bool TryGetModuleController(Entity entity, + [NotNullWhen(true)] out Entity? controller) + { + controller = null; + if (!Resolve(entity, ref entity.Comp)) + return false; + + if (entity.Comp.ModController is not { } controlEnt) + return false; + + if (!_modsuitControllerQuery.TryComp(controlEnt, out var controllerComp)) + return false; + + controller = (controlEnt, controllerComp); + return true; + } + + public bool ModuleHasActiveController(Entity entity, + [NotNullWhen(true)] out Entity? controller) + { + controller = null; + if (!Resolve(entity, ref entity.Comp)) + return false; + + if (!TryGetModuleController(entity, out var controlEnt) + || !IsActiveController(controlEnt.Value)) + return false; + + controller = controlEnt; + return true; + } + + private bool IsActiveController(Entity controller) + { + return IsWorn(controller) && _sealableSystem.IsSealed(controller.Owner); + } + + public bool CanPartBeActivated(Entity part) + { + if (!Resolve(part, ref part.Comp)) + return false; + + return IsWorn(part) && _sealableSystem.IsSealed(part.Owner); + } + + public bool CanModuleBeEnabled(Entity entity) + { + if (!ModuleHasActiveController(entity, out _)) + return false; + + // This defaults to true because if it doesn't have the comp, then all it needs is the controller. + var seenOne = true; + if (!TryComp(entity, out var attachedPartComp)) + return seenOne; + + // Ok we have the comp, we have to find at least one part. + seenOne = false; + foreach (var part in GetModuleAttachedParts((entity, attachedPartComp))) + { + if (!_sealableSystem.IsSealed(part.Item2)) + { + if (attachedPartComp.NeedsAll) + return false; + } + else + { + seenOne = true; + } + } + + return seenOne; + } + + public bool PartMatchesModule(Entity module, Entity part) + { + if (!Resolve(module, ref module.Comp) || !Resolve(part, ref part.Comp)) + return false; + + // Module doesn't have a controller so no part matches. + if (!TryGetModuleController(module, out var controller)) + return false; + + // If there's no part attached comp then EVERY part matches. + if (!TryComp(module.Owner, out var attachedPartComp)) + return true; + + // Do any of our slots match? + foreach (var slot in attachedPartComp.Slots) + { + if (controller.Value.Comp.SlotToPart[slot] == part.Owner) + return true; + } + + return false; + } + + public IReadOnlyList<(string, EntityUid)> GetModuleAttachedParts(Entity module) + { + if (!TryGetModuleController(module.Owner, out var controller) + || !Resolve(module, ref module.Comp)) + return []; + + var result = new List<(string, EntityUid)>(); + foreach (var slot in module.Comp.Slots) + { + result.Add((slot, controller.Value.Comp.SlotToPart[slot])); + } + + return result; + } + + private void OnControllerInit(Entity entity, ref MapInitEvent evt) + { + if (!TryComp(entity, out var clothing)) + { + Log.Warning($"{ToPrettyString(entity):entity} is a modsuit that is not also ToggleableClothing!"); + return; + } + + entity.Comp.SlotToPart["back"] = entity; + entity.Comp.PartToSlot[entity] = "back"; + // We actually just invert the list. + foreach (var part in clothing.ClothingUids) + { + entity.Comp.SlotToPart[part.Value] = part.Key; + entity.Comp.PartToSlot[part.Key] = part.Value; + + if (_modsuitPartQuery.TryComp(part.Key, out var partComp)) + { + partComp.Controller = entity.Owner; + Dirty(part.Key, partComp); + } + } + if (_modsuitPartQuery.TryComp(entity, out var controllerPartComp)) + controllerPartComp.Controller = entity; + Dirty(entity); + } + + private void OnPassiveComponentSealed(Entity entity, + ref ModsuitRelayedEvent evt) + { + if (!PartMatchesModule(entity.Owner, evt.Owner)) + return; + + var args = evt.Args; + foreach (var comp in entity.Comp.BlockOnSeal ?? []) + { + args.AddingComponents.Remove(comp.Key); + } + + foreach (var comp in entity.Comp.AddOnSeal ?? []) + { + args.AddingComponents[comp.Key] = comp.Value; + } + + foreach (var comp in entity.Comp.AddOnUnseal ?? []) + { + args.RemovingComponents[comp.Key] = comp.Value; + } + } + + private void OnPassiveComponentUnsealed(Entity entity, + ref ModsuitRelayedEvent evt) + { + if (!PartMatchesModule(entity.Owner, evt.Owner)) + return; + + var args = evt.Args; + foreach (var comp in entity.Comp.BlockOnUnseal ?? []) + { + args.AddingComponents.Remove(comp.Key); + } + + foreach (var comp in entity.Comp.AddOnUnseal ?? []) + { + args.AddingComponents[comp.Key] = comp.Value; + } + + foreach (var comp in entity.Comp.AddOnSeal ?? []) + { + args.RemovingComponents[comp.Key] = comp.Value; + } + } + + private void OnModsuitModuleInserted(Entity entity, ref ModuleInsertedEvent args) + { + if (!_modsuitControllerQuery.HasComp(args.Storage)) + return; + + entity.Comp.ModController = args.Storage; + Dirty(entity); + } + + private void OnModsuitModuleRemoved(Entity entity, ref ModuleRemovedEvent args) + { + entity.Comp.ModController = null; + _toggleSystem.TryDeactivate(entity.Owner); + Dirty(entity); + } + + public void TrySetSpringlocked(Entity entity, bool locked) + { + foreach (var part in entity.Comp.PartToSlot) + { + var target = part.Key; + // Doesn't make sense to seal it if it's not this, also if this somehow happened something has gone really + // really wrong. + if (!_modsuitPartQuery.HasComp(target)) + continue; + + _springlockSystem.SetSpringlocked(target, locked); + } + _springlockSystem.SetSpringlocked(entity, locked); + + entity.Comp.PartsSpringlocked = locked; + Dirty(entity); + } + + public void SetUIFunctionality(Entity entity, bool functional) + { + entity.Comp.UIFunctional = functional; + Dirty(entity); + } + + public void ModuleUpdateUI(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (entity.Comp.ModController == null) + return; + + if (!_modsuitControllerQuery.TryComp(entity.Comp.ModController, out var modsuitController)) + return; + + UpdateUI((entity.Comp.ModController.Value, modsuitController)); + } + + private void OnModsuitUnequipped(Entity entity, ref GotUnequippedEvent args) + { + _uiSystem.CloseUi(entity.Owner, ModsuitControllerUiKey.Key); + } + + private void OnModsuitHandleState(Entity entity, ref AfterAutoHandleStateEvent args) + { + UpdateUI(entity); + } + + protected virtual void UpdateUI(Entity entity) + { + } +} + +[Serializable, NetSerializable] +public enum ModsuitControllerUiKey +{ + Key, +} + +[Serializable, NetSerializable] +public sealed class ModsuitToggleModuleMessage : BoundUserInterfaceMessage +{ + public NetEntity Target; + public bool State; + + public ModsuitToggleModuleMessage(NetEntity target, bool state) + { + Target = target; + State = state; + } +} + +public sealed class ModsuitRelayedEvent : EntityEventArgs +{ + public TEvent Args; + + public EntityUid Owner; + + public ModsuitRelayedEvent(TEvent args, EntityUid owner) + { + Args = args; + Owner = owner; + } +} + +public sealed partial class ModsuitControllerOpenUiEvent : InstantActionEvent; + +[Serializable, NetSerializable] +public enum SealableWireActionKey : byte +{ + StatusKey +} + +[Serializable, NetSerializable] +public enum InterfaceWireActionKey : byte +{ + StatusKey +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/Components/SealableClothingComponent.cs b/Content.Shared/_DEN/Clothing/Sealable/Components/SealableClothingComponent.cs new file mode 100644 index 00000000000..b100639e47c --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/Components/SealableClothingComponent.cs @@ -0,0 +1,42 @@ +using Content.Shared.Inventory; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Sealable.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class SealableClothingComponent : Component +{ + [DataField, AutoNetworkedField] public bool IsSealed = false; + + [DataField] public List SealedSpriteLayers = []; + + [DataField] public TimeSpan SealDoAfterTime = TimeSpan.FromSeconds(1.5); + + [DataField("requiredSlot", required: true)] + public SlotFlags RequiredFlags; + + [DataField] public LocId SealMessage = "sealable-clothing-started-sealing"; + + [DataField] public LocId UnsealMessage = "sealable-clothing-started-unsealing"; + + /// + /// Default set of components that are added when this piece is sealed. + /// + [DataField] public ComponentRegistry? SealedAddComponents; + + /// + /// Default set of components that are removed when this piece is sealed. + /// + [DataField] public ComponentRegistry? SealedRemoveComponents; + + /// + /// Default set of components that are added when this piece is unsealed. + /// + [DataField] public ComponentRegistry? UnsealedAddComponents; + + /// + /// Default set of components that are removed when this piece is unsealed. + /// + [DataField] public ComponentRegistry? UnsealedRemoveComponents; +} diff --git a/Content.Shared/_DEN/Clothing/Sealable/Components/SealableControllerComponent.cs b/Content.Shared/_DEN/Clothing/Sealable/Components/SealableControllerComponent.cs new file mode 100644 index 00000000000..4620389a191 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/Components/SealableControllerComponent.cs @@ -0,0 +1,31 @@ +using Content.Shared.Actions; +using Content.Shared.Inventory; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Sealable.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class SealableControllerComponent : Component +{ + [DataField, AutoNetworkedField] public EntProtoId Action = "ActionToggleClothingSeals"; + + [DataField, AutoNetworkedField] public EntityUid? ActionEntity; + + [DataField, AutoNetworkedField] public List ControlledSlots = new(); + + [DataField("requiredSlot"), AutoNetworkedField] + public SlotFlags RequiredFlags = SlotFlags.BACK; + + // Which controlled slot was the last one we checked. Used to continue to the next slot after each DoAfters + [DataField, AutoNetworkedField] + public int CurrentSlot = 0; + + // If the controller is currently in the process of sealing/unsealing parts. + [DataField, AutoNetworkedField] + public bool IsToggling = false; + + // Whether the current activity is sealing of unsealing parts. + [DataField, AutoNetworkedField] + public bool Sealing = true; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/Components/SealedByControllerComponent.cs b/Content.Shared/_DEN/Clothing/Sealable/Components/SealedByControllerComponent.cs new file mode 100644 index 00000000000..a2531c2ad53 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/Components/SealedByControllerComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Clothing.Sealable.Components; + +/// +/// Marks a component as interacting with a controller so that it can get relevant events. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class SealedByControllerComponent : Component +{ + [DataField, AutoNetworkedField] public EntityUid? Controller; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/Components/SpringlockedComponent.cs b/Content.Shared/_DEN/Clothing/Sealable/Components/SpringlockedComponent.cs new file mode 100644 index 00000000000..e36efae40a4 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/Components/SpringlockedComponent.cs @@ -0,0 +1,26 @@ +using Content.Shared.Tools; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._DEN.Clothing.Sealable.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class SpringlockedComponent : Component +{ + [DataField, AutoNetworkedField] public ProtoId OpenTool = "Prying"; + + [DataField, AutoNetworkedField] public float OpenTimeMultiplier = 2.5f; + + [DataField, AutoNetworkedField] public bool HasBeenForced = false; + + [DataField] public LocId FailedUnsealMessage = "springlock-could-not-open"; + + [DataField] public LocId FailedSealMessage = "springlock-could-not-close"; + + [DataField, AutoNetworkedField] + public SoundSpecifier? SoundForceOpen = new SoundPathSpecifier("/Audio/Machines/airlock_creaking.ogg") + { + Params = AudioParams.Default.WithVolume(-3f), + }; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableClothingSystem.cs b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableClothingSystem.cs new file mode 100644 index 00000000000..fd35d3ca789 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableClothingSystem.cs @@ -0,0 +1,274 @@ +using Content.Shared._DEN.Clothing.Sealable.Components; +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.DoAfter; +using Content.Shared.Inventory; +using Content.Shared.Inventory.Events; +using Content.Shared.Item; +using Content.Shared.Popups; +using Content.Shared.Verbs; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._DEN.Clothing.Sealable.EntitySystems; + +public sealed partial class SealableClothingSystem : EntitySystem +{ + [Dependency] private SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private SharedDoAfterSystem _doAfter = default!; + [Dependency] private SharedItemSystem _item = default!; + [Dependency] private SharedPopupSystem _popupSystem = default!; + [Dependency] private InventorySystem _inventorySystem = default!; + + private readonly LocId _cantToggleReason = "sealable-clothing-cant-toggle-sealed"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSealableUnequipped); + SubscribeLocalEvent(OnBeingUnequipped); + SubscribeLocalEvent(OnToggleSealDoAfter); + SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent(OnToggleClothingAttempt); + SubscribeLocalEvent>(OnToggleSealDoAfterAttempt); + } + + private void OnToggleClothingAttempt(Entity entity, ref ToggleClothingAttemptEvent evt) + { + // Clothing toggles use force unequip so we need a different way to cancel it and inform. + if (entity.Comp.IsSealed) + { + evt.Reason = _cantToggleReason; + evt.Cancel(); + } + } + + private void OnBeingUnequipped(Entity entity, ref BeingUnequippedAttemptEvent evt) + { + // Stop a sealed piece being taken off until it's unsealed. + if (entity.Comp.IsSealed) + evt.Cancel(); + } + + private void OnToggleSealDoAfterAttempt(Entity entity, ref DoAfterAttemptEvent args) + { + // If someone takes of a piece of gear before it finishes sealing, stop sealing it. + if (!_inventorySystem.InSlotWithFlags(entity.Owner, entity.Comp.RequiredFlags)) + args.Cancel(); + } + + private void OnSealableUnequipped(Entity entity, ref GotUnequippedEvent args) + { + if (TerminatingOrDeleted(entity)) + return; + + // Sealed clothing is only intended to be so while worn. This makes sure that if the entity somehow gets + // force unequipped it doesn't stay stuck in a sealed state. + if (entity.Comp.IsSealed) + SetSealed(entity.AsNullable(), false); + } + + private void OnToggleSealDoAfter(Entity entity, ref ToggleSealDoAfterEvent args) + { + if (args.Cancelled) + return; + + SetSealed(entity.AsNullable(), !entity.Comp.IsSealed); + } + + private void OnGetVerbs(Entity entity, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null) + return; + + if (!_inventorySystem.InSlotWithFlags(entity.Owner, entity.Comp.RequiredFlags)) + return; + + var user = args.User; + + var verb = new EquipmentVerb() + { + Text = Loc.GetString("sealable-clothing-verb-text"), + Act = () => TryToggleSeal(user, entity.AsNullable()), + }; + args.Verbs.Add(verb); + } + + /// + /// Causes a user to start the doafter toggling the seal on the passed entity. + /// + /// The user who is trying to seal the clothing. + /// The piece of clothing being sealed. + /// Multiplies the doafter duration by this value. + /// Sealing message is replaced with this. + /// Unsealing message is replaced with this. + [PublicAPI] + public void TryToggleSeal(EntityUid user, Entity entity, float timeMultiplier = 1.0f, LocId? customSealMsg = null, LocId? customUnsealMsg = null) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (!_inventorySystem.InSlotWithFlags(entity.Owner, entity.Comp.RequiredFlags)) + return; + + var evt = new ChangeSealStateAttemptEvent(user, !entity.Comp.IsSealed); + RaiseLocalEvent(entity, evt); + if (evt.Cancelled) + return; + + // The sealing can continue while doing anything else, however, only one piece can seal or unseal at a time. + var args = new DoAfterArgs(EntityManager, user, entity.Comp.SealDoAfterTime * timeMultiplier, new ToggleSealDoAfterEvent(), entity, user, entity) + { + BreakOnDamage = false, + BreakOnMove = false, + CancelDuplicate = true, + AttemptFrequency = AttemptFrequency.EveryTick, + DuplicateCondition = DuplicateConditions.SameEvent, + }; + + if (!_doAfter.TryStartDoAfter(args)) + return; + + var popup = entity.Comp.IsSealed + ? Loc.GetString(customUnsealMsg ?? entity.Comp.UnsealMessage, ("entity", entity)) + : Loc.GetString(customSealMsg ?? entity.Comp.SealMessage, ("entity", entity)); + + _popupSystem.PopupPredicted(popup, user, user, PopupType.Medium); + } + + /// + /// Checks if a piece of clothing is sealed. + /// + /// The entity to check. + /// The sealed state, or false if it is not Sealable + [PublicAPI] + public bool IsSealed(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + { + Log.Debug("Uhh... " + Name(entity)); + return false; + } + + return entity.Comp.IsSealed; + } + + private void SetSealed(Entity entity, bool state) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + var hasChange = entity.Comp.IsSealed != state; + entity.Comp.IsSealed = state; + // Don't do work if the new state isn't different. + if (!hasChange) + return; + + UpdateVisuals(entity.AsNullable()); + + ComponentRegistry addingComps = new(); + ComponentRegistry removingComps = new(); + if (state) + { + foreach (var entry in entity.Comp.SealedAddComponents ?? []) + { + addingComps[entry.Key] = entry.Value; + } + + // Unsealed is removed first because these are 'implicit' and we want the explict ones from the yml to take + // priority + foreach (var entry in entity.Comp.UnsealedAddComponents ?? []) + { + removingComps[entry.Key] = entry.Value; + } + + foreach (var entry in entity.Comp.SealedRemoveComponents ?? []) + { + removingComps[entry.Key] = entry.Value; + } + } + else + { + foreach (var entry in entity.Comp.UnsealedAddComponents ?? []) + { + addingComps[entry.Key] = entry.Value; + } + + // Remove the Sealed Add Comps + foreach (var entry in entity.Comp.SealedAddComponents ?? []) + { + removingComps[entry.Key] = entry.Value; + } + + foreach (var entry in entity.Comp.UnsealedRemoveComponents ?? []) + { + removingComps[entry.Key] = entry.Value; + } + } + + // Create the right event type for the state change. + ComponentRegistry? evtAddComps; + ComponentRegistry? evtRemoveComps; + + if (state) + { + var evt = new ClothingSealedEvent(addingComps, removingComps); + RaiseLocalEvent(entity, evt); + evtAddComps = evt.AddingComponents; + evtRemoveComps = evt.RemovingComponents; + } + else + { + var evt = new ClothingUnsealedEvent(addingComps, removingComps); + RaiseLocalEvent(entity, evt); + evtAddComps = evt.AddingComponents; + evtRemoveComps = evt.RemovingComponents; + } + + // Apply all the changes handled in the event. + EntityManager.AddComponents(entity, evtAddComps); + EntityManager.RemoveComponents(entity, evtRemoveComps); + Dirty(entity); + } + + private void UpdateVisuals(Entity entity) + { + if (!Resolve(entity, ref entity.Comp1, ref entity.Comp2)) + return; + + _appearanceSystem.SetData(entity, SealableClothingVisuals.State, entity.Comp1.IsSealed, entity.Comp2); + _item.VisualsChanged(entity); + } +} + +[Serializable, NetSerializable] +public enum SealableClothingVisuals : byte +{ + State +} + +public abstract class ClothingSealStateChangedEvent(ComponentRegistry addingComponents, ComponentRegistry removingComponents) +{ + public ComponentRegistry AddingComponents = addingComponents; + public ComponentRegistry RemovingComponents = removingComponents; +} + +public sealed class ClothingSealedEvent(ComponentRegistry addingComponents, ComponentRegistry removingComponents) + : ClothingSealStateChangedEvent(addingComponents, removingComponents); + +public sealed class ClothingUnsealedEvent(ComponentRegistry addingComponents, ComponentRegistry removingComponents) + : ClothingSealStateChangedEvent(addingComponents, removingComponents); + +/// +/// Raised BEFORE the doAfter to change the state of a piece of Sealable Clothing is created. Cancel to prevent it. +/// +/// If the clothing is being sealed or unsealed +public sealed class ChangeSealStateAttemptEvent(EntityUid user, bool goalState) : CancellableEntityEventArgs +{ + public readonly EntityUid User = user; + public readonly bool GoalState = goalState; +} + +[Serializable, NetSerializable] +public sealed partial class ToggleSealDoAfterEvent : SimpleDoAfterEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableControllerSystem.cs b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableControllerSystem.cs new file mode 100644 index 00000000000..0dcda0df9f5 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SealableControllerSystem.cs @@ -0,0 +1,178 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared._DEN.Clothing.Sealable.Components; +using Content.Shared.Actions; +using Content.Shared.Inventory; +using Content.Shared.Inventory.Events; +using Robust.Shared.Timing; + +namespace Content.Shared._DEN.Clothing.Sealable.EntitySystems; + +public sealed partial class SealableControllerSystem : EntitySystem +{ + [Dependency] private SharedActionsSystem _actionsSystem = default!; + [Dependency] private ActionContainerSystem _actionContainer = default!; + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private SealableClothingSystem _sealableClothing = default!; + [Dependency] private IGameTiming _timing = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnRemoveController); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnGetActions); + SubscribeLocalEvent(OnToggleSealable); + SubscribeLocalEvent(OnControllerUnequipAttempt); + + SubscribeLocalEvent(OnSealFinished, after: [typeof(SealableClothingSystem)]); + } + + private void OnControllerUnequipAttempt(Entity entity, + ref BeingUnequippedAttemptEvent evt) + { + foreach (var slot in entity.Comp.ControlledSlots) + { + if (HasTarget(entity, slot, out var target) && _sealableClothing.IsSealed(target.Value.AsNullable())) + { + evt.Cancel(); + return; + } + } + } + + private void OnToggleSealable(Entity entity, ref ToggleSealableControllerEvent evt) + { + if (!_timing.IsFirstTimePredicted) + return; + + // If we were in the process of toggling, stop. + if (!entity.Comp.IsToggling) + { + entity.Comp.IsToggling = true; + if (TryToggleNextPiece(entity, evt.Performer)) + { + Dirty(entity, entity.Comp); + return; + } + } + + // Either we're already toggling, or all of the clothing is in the right state already. + entity.Comp.IsToggling = false; + entity.Comp.CurrentSlot = 0; + entity.Comp.Sealing = !entity.Comp.Sealing; + Dirty(entity, entity.Comp); + } + + /// + /// Tries to find the next piece in the controlled set to toggle, incrementing CurrentSlot as it goes. + /// + /// The controller entity. + /// The user causing this action to occur. + /// + private bool TryToggleNextPiece(Entity entity, EntityUid user) + { + while (entity.Comp.CurrentSlot < entity.Comp.ControlledSlots.Count) + { + // Is there actually a sealable piece of clothing in this slot. + var slot = entity.Comp.ControlledSlots[entity.Comp.CurrentSlot]; + if (HasTarget(entity, slot, out var target)) + { + var comp = EnsureComp(target.Value); + comp.Controller = entity; + // Is this piece of clothing already sealed? (or not sealed, whichever we care about right now) + if (entity.Comp.Sealing == _sealableClothing.IsSealed(target.Value.AsNullable())) + { + entity.Comp.CurrentSlot++; + continue; + } + + // We have a piece of clothing that is in the wrong state at this point. + // This is delayed entirely for the aesthetics of letting the previous doafter bar despawn before starting the next one. + Timer.Spawn(TimeSpan.FromMilliseconds(200), () => _sealableClothing.TryToggleSeal(user, target.Value.AsNullable())); + entity.Comp.CurrentSlot++; + return true; + } + + entity.Comp.CurrentSlot++; + } + + return false; + } + + private void OnSealFinished(Entity entity, ref ToggleSealDoAfterEvent evt) + { + // Stop the doAfter bar from flickering (a little). + if (!_timing.IsFirstTimePredicted) + return; + + // Somehow an entity became sealed by a controller without a controller... + if (entity.Comp.Controller is not { } controller) + return; + + if (!TryComp(controller, out var sealable)) + return; + + // Sealing got canceled, don't queue the next one. + if (!sealable.IsToggling) + return; + + // Try Toggling the next piece + if (TryToggleNextPiece((controller, sealable), Transform(entity).ParentUid)) + { + Dirty(controller, sealable); + return; + } + + // There's no other piece to toggle, so we're done, reset to a clean state. + sealable.IsToggling = false; + sealable.Sealing = !sealable.Sealing; + sealable.CurrentSlot = 0; + Dirty(controller, sealable); + } + + /// + /// Checks if the user is wearing a valid SealableClothing in the target slot. + /// + /// The controller entity we're checking + /// The slot to check for a SealableClothing + /// The entity found if there was one. + /// Whether a target was found + private bool HasTarget(Entity entity, string slot, [NotNullWhen(true)] out Entity? target) + { + target = null; + + var parent = Transform(entity).ParentUid; + if (!_inventory.TryGetSlotEntity(parent, slot, out var worn)) + return false; + + if (!TryComp(worn, out var sealable)) + return false; + + target = (worn.Value, sealable); + return true; + + } + + private void OnGetActions(Entity entity, ref GetItemActionsEvent evt) + { + if (entity.Comp.ActionEntity != null + && (evt.SlotFlags & entity.Comp.RequiredFlags) == entity.Comp.RequiredFlags) + { + evt.AddAction(entity.Comp.ActionEntity); + } + } + + private void OnRemoveController(Entity entity, ref ComponentRemove args) + { + _actionsSystem.RemoveAction(entity.Comp.ActionEntity); + } + + private void OnMapInit(Entity entity, ref MapInitEvent evt) + { + if (_actionContainer.EnsureAction(entity, ref entity.Comp.ActionEntity, out var action, entity.Comp.Action)) + { + _actionsSystem.SetEntityIcon((entity.Comp.ActionEntity.Value, action), entity); + } + } +} + +public sealed partial class ToggleSealableControllerEvent : InstantActionEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SpringlockSystem.cs b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SpringlockSystem.cs new file mode 100644 index 00000000000..06a9f330d79 --- /dev/null +++ b/Content.Shared/_DEN/Clothing/Sealable/EntitySystems/SpringlockSystem.cs @@ -0,0 +1,81 @@ +using Content.Shared._DEN.Clothing.Sealable.Components; +using Content.Shared.Examine; +using Content.Shared.Interaction; +using Content.Shared.Popups; +using Content.Shared.Tools.Components; +using Content.Shared.Tools.Systems; +using Robust.Shared.Audio.Systems; + +namespace Content.Shared._DEN.Clothing.Sealable.EntitySystems; + +public sealed partial class SpringlockSystem : EntitySystem +{ + [Dependency] private SharedToolSystem _toolSystem = default!; + [Dependency] private SealableClothingSystem _sealableSystem = default!; + [Dependency] private SharedAudioSystem _audioSystem = default!; + [Dependency] private SharedPopupSystem _popupSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSealStateAttempt); + SubscribeLocalEvent(OnSpringlockInteract); + SubscribeLocalEvent(OnSpringlockedExamined); + } + + public void SetSpringlocked(EntityUid target, bool locked) + { + if (!HasComp(target)) + return; + + if (locked) + { + var evt = new SpringlockActivatedEvent(); + RaiseLocalEvent(target, evt); + EnsureComp(target); + } + else + { + var evt = new SpringlockDeactivatedEvent(); + RaiseLocalEvent(target, evt); + RemComp(target); + } + } + + private void OnSpringlockedExamined(Entity entity, ref ExaminedEvent args) + { + if (_sealableSystem.IsSealed(entity.Owner)) + args.PushMarkup(Loc.GetString("springlock-examine")); + } + + private void OnSealStateAttempt(Entity entity, ref ChangeSealStateAttemptEvent args) + { + if (!entity.Comp.HasBeenForced) + { + var isSealed = _sealableSystem.IsSealed(entity.Owner); + _popupSystem.PopupPredicted(Loc.GetString(isSealed ? entity.Comp.FailedUnsealMessage : entity.Comp.FailedSealMessage, ("name", entity)), args.User, args.User, PopupType.MediumCaution); + args.Cancel(); + } + + entity.Comp.HasBeenForced = false; + } + + private void OnSpringlockInteract(Entity entity, ref InteractUsingEvent args) + { + if (args.Handled || !_sealableSystem.IsSealed(entity.Owner)) + return; + + if (TryComp(args.Used, out var toolComp) && _toolSystem.HasQuality(args.Used, entity.Comp.OpenTool, toolComp)) + { + args.Handled = true; + entity.Comp.HasBeenForced = true; + _audioSystem.PlayPredicted(entity.Comp.SoundForceOpen, entity, args.User); + _sealableSystem.TryToggleSeal(args.User, entity.Owner, timeMultiplier: entity.Comp.OpenTimeMultiplier, customSealMsg: "springlock-prying-seal", customUnsealMsg: "springlock-prying-unseal"); + } + } +} + +public readonly record struct SpringlockActivatedEvent; + +public readonly record struct SpringlockDeactivatedEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Examine/Components/ContainerExamineRelayComponent.cs b/Content.Shared/_DEN/Examine/Components/ContainerExamineRelayComponent.cs new file mode 100644 index 00000000000..bbba442cd43 --- /dev/null +++ b/Content.Shared/_DEN/Examine/Components/ContainerExamineRelayComponent.cs @@ -0,0 +1,21 @@ +namespace Content.Shared._DEN.Examine.Components; + +/// +/// Causes an examine event to also be passed to the container in the form of a ContainedRelayEvent. +/// +[RegisterComponent] +public sealed partial class ContainerExamineRelayComponent : Component; + + +public sealed class ContainedRelayEvent : EntityEventArgs +{ + public TEvent Args; + + public EntityUid Owner; + + public ContainedRelayEvent(TEvent args, EntityUid owner) + { + Args = args; + Owner = owner; + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Examine/Components/RelayedSolutionExamineComponent.cs b/Content.Shared/_DEN/Examine/Components/RelayedSolutionExamineComponent.cs new file mode 100644 index 00000000000..72288069ac8 --- /dev/null +++ b/Content.Shared/_DEN/Examine/Components/RelayedSolutionExamineComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared._DEN.Examine.Components; + +/// +/// Handles relayed examine events from ContainerExamineRelayComponent and adds solution examine information to them. +/// +[RegisterComponent] +public sealed partial class RelayedSolutionExamineComponent : Component +{ + [DataField(required: true)] public string Solution; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Examine/EntitySystems/ContainerExamineRelaySystem.cs b/Content.Shared/_DEN/Examine/EntitySystems/ContainerExamineRelaySystem.cs new file mode 100644 index 00000000000..ede38bd4606 --- /dev/null +++ b/Content.Shared/_DEN/Examine/EntitySystems/ContainerExamineRelaySystem.cs @@ -0,0 +1,38 @@ +using Content.Shared._DEN.Examine.Components; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Examine; +using Robust.Shared.Containers; + +namespace Content.Shared._DEN.Examine.EntitySystems; + +public sealed partial class ContainerExamineRelaySystem : EntitySystem +{ + [Dependency] private SharedContainerSystem _containerSystem = default!; + [Dependency] private SharedSolutionContainerSystem _solutionSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent>(OnSolutionExamineRelay); + } + + private void OnExamined(Entity entity, ref ExaminedEvent args) + { + if (!_containerSystem.TryGetContainingContainer(entity.Owner, out var container)) + return; + + var parent = container.Owner; + var evt = new ContainedRelayEvent(args, entity); + RaiseLocalEvent(parent, evt); + } + + private void OnSolutionExamineRelay(Entity entity, + ref ContainedRelayEvent evt) + { + if (!_solutionSystem.TryGetSolution(entity.Owner, entity.Comp.Solution, out _, out var solution)) + return; + + var args = evt.Args; + args.PushMessage(_solutionSystem.GetSolutionExamine(solution)); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModuleComponent.cs b/Content.Shared/_DEN/Modules/Components/ModuleComponent.cs new file mode 100644 index 00000000000..8dc4c9ee7ca --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModuleComponent.cs @@ -0,0 +1,50 @@ +using Content.Shared.Whitelist; +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Modules.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModuleComponent : Component +{ + /// + /// How much 'bus space' this module consumes when installed. + /// + [DataField(required: true), AutoNetworkedField] public int BusWidth; + + [DataField("texture", required: true)] public string UITexture; + + /// + /// Whitelist that at least one already installed module must pass to allow this module to be installed. + /// These should be symmetrical between modules because only the one being installed is ever checked. + /// + [DataField] public EntityWhitelist? SiblingWhitelist; + + /// + /// Blacklist that all installed modules must pass to allow this module to be installed. + /// These should be symmetrical between modules because only the one being installed is ever checked. + /// + [DataField] public EntityWhitelist? SiblingBlacklist; + + /// + /// The module storage that this module is currently inside. + /// + [DataField, AutoNetworkedField] public EntityUid? StoredIn; +} + +/// +/// Raised on the module when it is removed from a ModuleStorage +/// +/// The storage it was removed from. +public sealed class ModuleRemovedEvent(Entity storage) : EntityEventArgs +{ + public Entity Storage = storage; +} + +/// +/// Raised on the module when it is inserted into a ModuleStorage +/// +/// The storage it was interted into. +public sealed class ModuleInsertedEvent(Entity storage) : EntityEventArgs +{ + public Entity Storage = storage; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModulePowerDrawComponent.cs b/Content.Shared/_DEN/Modules/Components/ModulePowerDrawComponent.cs new file mode 100644 index 00000000000..3c2bde95476 --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModulePowerDrawComponent.cs @@ -0,0 +1,28 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Modules.Components; + +/// +/// Similar to PowerCellDrawComponent except drawing from the modules holder instead of a cell in the entity itself. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModulePowerDrawComponent : Component +{ + /// + /// Whether this module's power draw is enabled. + /// + [DataField, AutoNetworkedField, ViewVariables] + public bool Enabled; + + /// + /// How much power the module draws while active. This value is subtracted, so negative values would be charging. + /// + [DataField, AutoNetworkedField, ViewVariables] + public float DrawRate = 1f; + + /// + /// How much power is used when the module is 'activated', if it has a single activation instead of constant draw. + /// + [DataField, AutoNetworkedField, ViewVariables] + public float UseCharge; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModulePowerProviderComponent.cs b/Content.Shared/_DEN/Modules/Components/ModulePowerProviderComponent.cs new file mode 100644 index 00000000000..6b6cbd4f5f3 --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModulePowerProviderComponent.cs @@ -0,0 +1,37 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Modules.Components; + +/// +/// Indicates that this entity is used to provide power to modules. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ModulePowerProviderComponent : Component +{ + /// + /// The base module drain is multiplied by this to determine the overall drain. + /// + [DataField, AutoNetworkedField, ViewVariables] + public float DrainMultiplier = 1f; +} + +/// +/// Used by the ModulePowerProvider to determine the total charge rate of the modules it contains. +/// +[ByRefEvent] +public record struct RefreshModuleChargeRateEvent +{ + public float ChargeRate; +} + +/// +/// Used by the ModulePowerProvider to inform modules that there is no power left. +/// +[ByRefEvent] +public record struct ModulePowerDrainedEvent; + +/// +/// Used to inform modules that power is restored. +/// +[ByRefEvent] +public record struct ModulePowerRestoredEvent; \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModuleStorageBlockWornComponent.cs b/Content.Shared/_DEN/Modules/Components/ModuleStorageBlockWornComponent.cs new file mode 100644 index 00000000000..e3574fc3cda --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModuleStorageBlockWornComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared._DEN.Modules.Components; + +/// +/// Prevents the ModuleStorageUI from being opened while worn, also closes it when put on. +/// +[RegisterComponent] +public sealed partial class ModuleStorageBlockWornComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModuleStorageComponent.cs b/Content.Shared/_DEN/Modules/Components/ModuleStorageComponent.cs new file mode 100644 index 00000000000..ed67f7762ff --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModuleStorageComponent.cs @@ -0,0 +1,116 @@ +using Content.Shared.Tools; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._DEN.Modules.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class ModuleStorageComponent : Component +{ + private const string DefaultContainerId = "modules"; + + public Container? ModuleContainer; + + /// + /// The maximum Bus Width that this storage can support. Modules consume this based on their complexity. + /// + [DataField(required: true)] public int MaxBusWidth; + + /// + /// The container ID to use for the modules. + /// + [DataField, AutoNetworkedField] + public string ContainerId = DefaultContainerId; + + /// + /// What kind of tool quality is needed to remove things from this storage. This can be set to null to not need one. + /// + [DataField, AutoNetworkedField] public ProtoId? RemovalQuality = "Prying"; + + /// + /// Maps bus 'slots' to modules in the ModuleContainer, used to make the UI show a consistent order. + /// Multiple slots may be mapped to the same module based on its complexity. + /// + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadOnly)] + public Dictionary ModuleSlots = new(); + + /// + /// The sound that is played when a module is inserted into this storage. + /// + [DataField] public SoundSpecifier? InsertSound = + new SoundPathSpecifier("/Audio/Weapons/Guns/MagIn/revolver_magin.ogg"); + + /// + /// Modules must pass this whitelist in order to be installed. + /// + [DataField] public EntityWhitelist? Whitelist; + + /// + /// Modules must pass this blacklist in order to be installed. + /// + [DataField] public EntityWhitelist? Blacklist; +} + +/// +/// Sent from the client to the server (as well as prediction on the client) to demonstrate intent to interact with +/// a slot in the module storage. The system will look at the user's active items and the state of the slot and use +/// that to determine the correct action to take (inserting a module, removing a module, or doing nothing). +/// +/// The slot the user is trying to interact with. +[Serializable, NetSerializable] +public sealed class ModuleSlotActionMessage(int slot) : BoundUserInterfaceMessage +{ + public int Slot = slot; +} + +/// +/// Raised on the ModuleStorage when a module is removed from it. +/// +/// The module that was removed. +public sealed class ModuleRemovedFromStorageEvent(Entity module) : EntityEventArgs +{ + public Entity Module = module; +} + +/// +/// Raised on the ModuleStorage entity when a module is inserted into it. +/// +/// The module entity that was inserted. +public sealed class ModuleInsertedIntoStorageEvent(Entity module) : EntityEventArgs +{ + public Entity Module = module; +} + +/// +/// Raised on the module storage entity when a user tries to open its UI. +/// +/// The user attempting to open the UI. +public sealed class ModuleStorageUIOpenAttemptEvent(EntityUid user) + : CancellableEntityEventArgs +{ + public EntityUid User = user; +} + +/// +/// Raised on a module to verify that it can be inserted into a storage. The storage has already checked to ensure that +/// the module fits at this point. +/// +/// The storage the module is being put into. +public sealed class ModuleGettingInsertedAttemptEvent(Entity storage) : CancellableEntityEventArgs +{ + public Entity Storage = storage; +} + +/// +/// Raised on a storage to verify that a module can be inserted into it. The storage has already checked to ensure that +/// the module fits at this point. +/// +/// The module trying to be inserted. +public sealed class AttemptInsertModuleIntoStorageEvent(Entity module) : CancellableEntityEventArgs +{ + public Entity Module = module; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModuleStorageNeedsPanelComponent.cs b/Content.Shared/_DEN/Modules/Components/ModuleStorageNeedsPanelComponent.cs new file mode 100644 index 00000000000..52e09665379 --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModuleStorageNeedsPanelComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared._DEN.Modules.Components; + +/// +/// Requires that the module storage have an open panel for the UI to be opened. +/// +[RegisterComponent] +public sealed partial class ModuleStorageNeedsPanelComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/ModuleTogglePowerDrawComponent.cs b/Content.Shared/_DEN/Modules/Components/ModuleTogglePowerDrawComponent.cs new file mode 100644 index 00000000000..befc38690d8 --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/ModuleTogglePowerDrawComponent.cs @@ -0,0 +1,4 @@ +namespace Content.Shared._DEN.Modules.Components; + +[RegisterComponent] +public sealed partial class ModuleTogglePowerDrawComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/Components/UnremoveableModuleComponent.cs b/Content.Shared/_DEN/Modules/Components/UnremoveableModuleComponent.cs new file mode 100644 index 00000000000..1268fb1ace3 --- /dev/null +++ b/Content.Shared/_DEN/Modules/Components/UnremoveableModuleComponent.cs @@ -0,0 +1,6 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Modules.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class UnremoveableModuleComponent : Component; \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/EntitySystems/ModulePowerSystem.cs b/Content.Shared/_DEN/Modules/EntitySystems/ModulePowerSystem.cs new file mode 100644 index 00000000000..1fa9420fc5a --- /dev/null +++ b/Content.Shared/_DEN/Modules/EntitySystems/ModulePowerSystem.cs @@ -0,0 +1,181 @@ +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Item.ItemToggle; +using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; +using Content.Shared.PowerCell; + +namespace Content.Shared._DEN.Modules.EntitySystems; + +public sealed partial class ModulePowerSystem : EntitySystem +{ + [Dependency] private SharedBatterySystem _battery = default!; + [Dependency] private ItemToggleSystem _toggle = default!; + [Dependency] private PowerCellSystem _cell = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnPowerSlotEmpty); + SubscribeLocalEvent(OnRefreshChargeRate); + SubscribeLocalEvent(OnChargeChanged); + + SubscribeLocalEvent(OnRefreshModuleChargeRate); + + SubscribeLocalEvent(OnModuleToggled); + SubscribeLocalEvent(OnModulePowerDrained); + SubscribeLocalEvent(OnModulePowerToggleAttempt); + } + + private void OnChargeChanged(Entity entity, ref ChargeChangedEvent args) + { + if (!TryComp(entity, out var storage) || storage.ModuleContainer is null) + return; + + if (args.CurrentCharge > 0 || args.CurrentChargeRate > 0) + { + var powerRestoredEvent = new ModulePowerRestoredEvent(); + foreach (var ent in storage.ModuleContainer.ContainedEntities) + { + RaiseLocalEvent(ent, ref powerRestoredEvent); + } + } + } + + private void OnRefreshChargeRate(Entity entity, ref RefreshChargeRateEvent args) + { + if (!TryComp(entity, out var storage) || storage.ModuleContainer is null) + return; + + var refreshModuleChargeEvt = new RefreshModuleChargeRateEvent(); + foreach (var ent in storage.ModuleContainer.ContainedEntities) + { + RaiseLocalEvent(ent, ref refreshModuleChargeEvt); + } + args.NewChargeRate += refreshModuleChargeEvt.ChargeRate; + } + + private void OnPowerSlotEmpty(Entity entity, ref PowerCellSlotEmptyEvent args) + { + if (!TryComp(entity, out var storage) || storage.ModuleContainer is null) + return; + + var powerDrainedEvt = new ModulePowerDrainedEvent(); + foreach (var ent in storage.ModuleContainer.ContainedEntities) + { + RaiseLocalEvent(ent, ref powerDrainedEvt); + } + } + + private void OnRefreshModuleChargeRate(Entity entity, + ref RefreshModuleChargeRateEvent args) + { + if (entity.Comp.Enabled) + args.ChargeRate -= entity.Comp.DrawRate; + } + + private void OnModuleToggled(Entity entity, ref ItemToggledEvent args) + { + if (!TryComp(entity, out var powerDraw)) + return; + + powerDraw.Enabled = args.Activated; + + if (!TryComp(entity, out var module) || module.StoredIn is not { } storage) + return; + + if (_cell.TryGetBatteryFromSlot(storage, out var battery)) + _battery.RefreshChargeRate(battery.Value.AsNullable()); + } + + private void OnModulePowerDrained(Entity entity, ref ModulePowerDrainedEvent args) + { + _toggle.TryDeactivate(entity.Owner); + } + + private void OnModulePowerToggleAttempt(Entity entity, + ref ItemToggleActivateAttemptEvent evt) + { + if (!TryComp(entity, out var module) || module.StoredIn is not { } storage) + { + evt.Cancelled = true; + return; + } + + if (!TryComp(entity, out var powerDraw)) + { + evt.Cancelled = true; + return; + } + + if (!_cell.HasCharge(storage, powerDraw.DrawRate, user: evt.User, predicted: true) + || !_cell.HasCharge(storage, powerDraw.UseCharge, user: evt.User, predicted: true)) + evt.Cancelled = true; + } + + /// + /// Attempts to use charge on the module, this involves finding the controller that is responsible for the module + /// and applying its DrainMultiplier to the provided value. + /// + /// The module or module power provider being operated on. + /// The amount of power to drain. + /// Optional user trying to perform this action (passed to PowerCellSystem). + /// If the no power popup is predicted (passed to PowerCellSystem). + /// If using the charge succeeded. + public bool TryUseCharge(EntityUid entity, float draw, EntityUid? user = null, bool predicted = false) + { + Entity? provider = null; + + if (TryComp(entity, out var module)) + { + if (module.StoredIn is null) + return false; + + if (!TryComp(module.StoredIn, out var providerComp)) + return false; + + provider = (module.StoredIn.Value, providerComp); + } + else if (TryComp(entity, out var providerComp)) + { + provider = (entity, providerComp); + } + + if (provider is null) + return false; + + return _cell.TryUseCharge(provider.Value.Owner, draw * provider.Value.Comp.DrainMultiplier, user, predicted); + } + + /// + /// Checks if the entity has access to enough charge through ModulePowerSystem. + /// + /// The module or module power provider being operated on. + /// The amount of power being drained. + /// Optional user trying to perform this action (passed to PowerCellSystem). + /// If the no power popup is predicted (passed to PowerCellSystem). + /// If the charge is available. + public bool HasCharge(EntityUid entity, float draw, EntityUid? user, bool predicted = false) + { + Entity? provider = null; + + if (TryComp(entity, out var module)) + { + if (module.StoredIn is null) + return false; + + if (!TryComp(module.StoredIn, out var providerComp)) + return false; + + provider = (module.StoredIn.Value, providerComp); + } + else if (TryComp(entity, out var providerComp)) + { + provider = (entity, providerComp); + } + + if (provider is null) + return false; + + return _cell.HasCharge(provider.Value.Owner, draw * provider.Value.Comp.DrainMultiplier, user, predicted); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/EntitySystems/ModuleStorageUINeedsPanelSystem.cs b/Content.Shared/_DEN/Modules/EntitySystems/ModuleStorageUINeedsPanelSystem.cs new file mode 100644 index 00000000000..14aa14a45ad --- /dev/null +++ b/Content.Shared/_DEN/Modules/EntitySystems/ModuleStorageUINeedsPanelSystem.cs @@ -0,0 +1,32 @@ +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Wires; + +namespace Content.Shared._DEN.Modules.EntitySystems; + +// This is its own system so that I can enforce ordering between this and the worn clothing check. +public sealed partial class ModuleStorageUINeedsPanelSystem : EntitySystem +{ + [Dependency] private SharedUserInterfaceSystem _uiSystem = default!; + + public override void Initialize() + { + SubscribeLocalEvent( + OnNeedsPanelUIOpenAttempt, before: [typeof(SharedModuleStorageSystem)]); + SubscribeLocalEvent(OnPanelChanged); + } + + private void OnNeedsPanelUIOpenAttempt(Entity entity, + ref ModuleStorageUIOpenAttemptEvent args) + { + if (TryComp(entity, out var wiresPanel) && !wiresPanel.Open) + args.Cancel(); + } + + private void OnPanelChanged(Entity entity, ref PanelChangedEvent args) + { + if (!args.Open) + { + _uiSystem.CloseUi(entity.Owner, ModuleUiKey.Key); + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.UILimits.cs b/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.UILimits.cs new file mode 100644 index 00000000000..89c59c42497 --- /dev/null +++ b/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.UILimits.cs @@ -0,0 +1,32 @@ +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Inventory; +using Content.Shared.Inventory.Events; + +namespace Content.Shared._DEN.Modules.EntitySystems; + +public abstract partial class SharedModuleStorageSystem +{ + private void InitializeUILimits() + { + SubscribeLocalEvent(OnBlockWornUIOpenAttempt); + SubscribeLocalEvent(OnBlockWornUIGotEquipped); + } + + private void OnBlockWornUIGotEquipped(Entity entity, ref GotEquippedEvent args) + { + _uiSystem.CloseUi(entity.Owner, ModuleUiKey.Key); + } + + private void OnBlockWornUIOpenAttempt(Entity entity, + ref ModuleStorageUIOpenAttemptEvent args) + { + if (args.Cancelled) + return; + + if (_inventorySystem.InSlotWithAnyFlags(entity.Owner, SlotFlags.WITHOUT_POCKET)) + { + _popupSystem.PopupPredicted(Loc.GetString("module-storage-cannot-modify-while-worn", ("entity", entity)), entity, args.User); + args.Cancel(); + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.cs b/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.cs new file mode 100644 index 00000000000..41f7b9d5e42 --- /dev/null +++ b/Content.Shared/_DEN/Modules/EntitySystems/SharedModuleStorageSystem.cs @@ -0,0 +1,508 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Shared._DEN.Modules.Components; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Interaction; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using Content.Shared.Storage.EntitySystems; +using Content.Shared.Tools.Components; +using Content.Shared.Tools.Systems; +using Content.Shared.Verbs; +using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._DEN.Modules.EntitySystems; + +public abstract partial class SharedModuleStorageSystem : EntitySystem +{ + [Dependency] private SharedAudioSystem _audioSystem = default!; + [Dependency] private SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] private SharedContainerSystem _containerSystem = default!; + [Dependency] private SharedPopupSystem _popupSystem = default!; + [Dependency] private SharedInteractionSystem _interactionSystem = default!; + [Dependency] private SharedHandsSystem _handsSystem = default!; + [Dependency] private SharedToolSystem _toolSystem = default!; + [Dependency] private InventorySystem _inventorySystem = default!; + [Dependency] private EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private IPrototypeManager _protoManager = default!; + [Dependency] private EntityQuery _moduleQuery = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnModultStorageInit); + SubscribeLocalEvent(OnActivateInWorld, before: [typeof(SharedStorageSystem)]); + SubscribeLocalEvent(OnModuleSlotAction); + SubscribeLocalEvent(OnStorageEntityRemoved); + SubscribeLocalEvent(OnStorageEntityInserted); + SubscribeLocalEvent(OnIsInsertingAttempt); + SubscribeLocalEvent>(AddUiVerb); + + InitializeUILimits(); + } + + private void OnIsInsertingAttempt(Entity entity, ref ContainerIsInsertingAttemptEvent args) + { + if (args.Container != entity.Comp.ModuleContainer) + return; + + if (!_moduleQuery.TryComp(args.EntityUid, out var moduleComp)) + { + args.Cancel(); + return; + } + + var module = (args.EntityUid, moduleComp); + + // The module is already in our storage list, likely from being assigned a slot as part of UI based insertion. + if (entity.Comp.ModuleSlots.ContainsValue(args.EntityUid)) + return; + + // If the module is bigger than the BusWidth it will never fit. + if (moduleComp.BusWidth > entity.Comp.MaxBusWidth) + { + args.Cancel(); + return; + } + + // At this point, if there were no other modules, it would fit. + if (args.AssumeEmpty) + return; + + // If we can't find a slot that it fits in it can't be inserted. + if (!TryFindAvailableSlot(entity, module, out var slot) || !ModuleFitsInStorage(entity, module, slot.Value)) + { + args.Cancel(); + } + } + + private void OnModultStorageInit(Entity entity, ref ComponentInit args) + { + entity.Comp.ModuleContainer = _containerSystem.EnsureContainer(entity, entity.Comp.ContainerId); + // Point Light my behated... + entity.Comp.ModuleContainer.OccludesLight = false; + } + + private void OnActivateInWorld(Entity entity, ref ActivateInWorldEvent args) + { + if (args.Handled || !args.Complex) + return; + + var attemptOpenEvt = new ModuleStorageUIOpenAttemptEvent(args.User); + RaiseLocalEvent(entity, attemptOpenEvt); + if (attemptOpenEvt.Cancelled) + return; + + _uiSystem.OpenUi(entity.Owner, ModuleUiKey.Key, args.User); + args.Handled = true; + } + + // This is separated out because it is used internally to find open slots. TryFindAvailableSlot uses this instead of + // ModuleFitsInStorage in order to avoid spamming attempt events on every slot in the storage. + private bool ModuleFitsInSlot(Entity storage, Entity module, int slot) + { + if (!Resolve(module, ref module.Comp)) + return false; + + if (slot < 0 || (slot + module.Comp.BusWidth) > storage.Comp.MaxBusWidth) + return false; + + for (var i = slot; i < (slot + module.Comp.BusWidth); i++) + { + if (storage.Comp.ModuleSlots.TryGetValue(i, out var result) && result is not null) + return false; + } + + return true; + } + + private bool PassesAllWhitelists(Entity storage, Entity module) + { + if (!_whitelistSystem.IsWhitelistPassOrNull(storage.Comp.Whitelist, module)) + return false; + + // Can't have any siblings if this is null, let it fail somewhere else to indicate a problem instead of silently + // failing the whitelist check. + if (storage.Comp.ModuleContainer is null) + return true; + + var passes = true; + var siblingWhitelist = module.Comp.SiblingWhitelist; + // We have a whitelist we need to pass, so default to false. + if (siblingWhitelist is not null) + passes = false; + var siblingBlacklist = module.Comp.SiblingBlacklist; + foreach (var sibling in storage.Comp.ModuleContainer.ContainedEntities) + { + if (_whitelistSystem.IsWhitelistPassOrNull(siblingWhitelist, sibling)) + passes = true; + + if (!_whitelistSystem.IsWhitelistFailOrNull(siblingBlacklist, sibling)) + return false; + } + + // Entity passed the blacklist. + if (!_whitelistSystem.IsWhitelistFailOrNull(storage.Comp.Blacklist, module)) + passes = false; + + return passes; + } + + private void OnModuleSlotAction(Entity entity, ref ModuleSlotActionMessage args) + { + var player = args.Actor; + + // Gotta have hands to do anything meaningful with module storage. + if (!TryComp(player, out HandsComponent? handsComponent)) + { + _popupSystem.PopupPredicted(Loc.GetString("module-storage-ui-on-receive-message-no-hands"), entity, player); + return; + } + + // Gotta be able to reach it as well. + if (!_interactionSystem.InRangeUnobstructed(player, entity.Owner)) + { + _popupSystem.PopupPredicted(Loc.GetString("module-storage-ui-on-receive-message-cannot-reach"), entity, + player); + return; + } + + // If we have nothing in our hands, check to make sure we don't need a tool. + if (!_handsSystem.TryGetActiveItem((player, handsComponent), out var item)) + { + if (entity.Comp.RemovalQuality is null) + TryRemoveModule(entity.AsNullable(), player, null, args.Slot, out _); + + return; + } + + if (args.Slot >= entity.Comp.MaxBusWidth) + return; + + // Tools remove things from storage. + if (TryComp(item, out var tool)) + { + TryRemoveModule(entity.AsNullable(), player, (item.Value, tool), args.Slot, out _); + return; + } + + // Modules get put into storage. + if (TryComp(item, out var module)) + { + TryInsertModule(entity.AsNullable(), (item.Value, module), player, args.Slot); + } + } + + private bool TryFindAvailableSlot(Entity entity, Entity module, + [NotNullWhen(true)] out int? slot) + { + slot = null; + + for (int i = 0; i < entity.Comp.MaxBusWidth; i++) + { + if (ModuleFitsInSlot(entity, module.AsNullable(), i)) + { + slot = i; + return true; + } + } + + return false; + } + + private void ClearSlot(Entity entity, int slot, int width) + { + for (int i = slot; i < slot + width; i++) + { + entity.Comp.ModuleSlots[i] = null; + } + + Dirty(entity); + } + + private void AssignModuleToSlot(Entity entity, Entity module, int slot) + { + for (int i = slot; i < slot + module.Comp.BusWidth; i++) + { + entity.Comp.ModuleSlots[i] = module.Owner; + } + Dirty(entity); + } + + private void OnStorageEntityInserted(Entity entity, + ref EntInsertedIntoContainerMessage args) + { + if (args.Container == entity.Comp.ModuleContainer && _moduleQuery.TryComp(args.Entity, out var module)) + { + OnModuleInserted(entity, (args.Entity, module)); + } + } + + private void OnModuleInserted(Entity entity, Entity module) + { + if (entity.Comp.ModuleContainer is null) + { + Log.Warning($"OnModuleInserted occurred while Container was null in: {ToPrettyString(entity)}"); + return; + } + + if (!entity.Comp.ModuleSlots.Values.Contains(module.AsNullable())) + { + if (!TryFindAvailableSlot(entity, module, out var slot)) + { + _containerSystem.Remove(module.Owner, entity.Comp.ModuleContainer, force: true); + return; + } + AssignModuleToSlot(entity, module, slot.Value); + } + + module.Comp.StoredIn = entity.Owner; + + var controlEvt = new ModuleInsertedIntoStorageEvent(module); + RaiseLocalEvent(entity, controlEvt); + + var moduleEvt = new ModuleInsertedEvent(entity); + RaiseLocalEvent(module, moduleEvt); + + Dirty(module); + UpdateUi(entity); + } + + private void OnStorageEntityRemoved(Entity entity, + ref EntRemovedFromContainerMessage args) + { + if (args.Container == entity.Comp.ModuleContainer && _moduleQuery.TryComp(args.Entity, out var module)) + { + OnModuleRemoved(entity, (args.Entity, module)); + } + } + + private void OnModuleRemoved(Entity entity, Entity module) + { + module.Comp.StoredIn = null; + + var controlEvt = new ModuleRemovedFromStorageEvent(module); + RaiseLocalEvent(entity, controlEvt); + + var moduleEvt = new ModuleRemovedEvent(entity); + RaiseLocalEvent(module, moduleEvt); + + UpdateUi(entity); + } + + private void AddUiVerb(Entity entity, ref GetVerbsEvent evt) + { + var args = evt; + + var attemptOpenEvt = new ModuleStorageUIOpenAttemptEvent(args.User); + RaiseLocalEvent(entity, attemptOpenEvt); + if (attemptOpenEvt.Cancelled) + return; + + var uiOpen = _uiSystem.IsUiOpen(entity.Owner, ModuleUiKey.Key, args.User); + + ActivationVerb verb = new() + { + Act = () => + { + if (uiOpen) + { + _uiSystem.CloseUi(entity.Owner, ModuleUiKey.Key, args.User); + } + else + { + _uiSystem.OpenUi(entity.Owner, ModuleUiKey.Key, args.User); + } + }, + Text = Loc.GetString(uiOpen ? "module-storage-verb-close-storage" : "module-storage-verb-open-storage") + }; + + args.Verbs.Add(verb); + } + + protected virtual void UpdateUi(Entity entity) + { + } + + #region PublicAPI + + /// + /// Attempts to remove the specified module from the modsuit, placing it into the user's hands if possible, or + /// on the ground otherwise. + /// + /// The module storage to remove from. + /// The user attempting to remove the module, if there is one. + /// The tool being used to remove the module, if there is one. + /// The slot to try removing from. + /// The module that was removed. + /// Whether to skip tool checks and just remove the module. + /// Whether a module was removed. + public bool TryRemoveModule(Entity entity, EntityUid? user, Entity? heldTool, + int slot, [NotNullWhen(true)] out EntityUid? removedModule, bool ignoreTools = false) + { + removedModule = null; + if (!Resolve(entity, ref entity.Comp) || entity.Comp.ModuleContainer is null) + return false; + + // There's nothing in this slot, so nothing to do. + if (entity.Comp.ModuleSlots.GetValueOrDefault(slot) is not {} module) + return false; + + if (HasComp(entity)) + { + _popupSystem.PopupPredicted(Loc.GetString("module-storage-ui-module-unremoveable"), entity, user); + return false; + } + + if (!ignoreTools) + { + if (entity.Comp.RemovalQuality is {} quality + && heldTool is {} tool + && !_toolSystem.HasQuality(tool, quality)) + { + var resolvedQuality = _protoManager.Index(quality); + _popupSystem.PopupPredicted(Loc.GetString("module-storage-ui-on-receive-message-need-tool-quality", ("quality", resolvedQuality.Name)), entity, user); + return false; + } + } + + if (!entity.Comp.ModuleContainer.Contains(module)) + { + Log.Debug("We have a module that isn't in our container."); + return false; + } + + _containerSystem.Remove(module, entity.Comp.ModuleContainer); + _handsSystem.PickupOrDrop(user, module); + // Only play the sound if we actually used a tool. + if (heldTool is not null && entity.Comp.RemovalQuality is not null) + _toolSystem.PlayToolSound(heldTool.Value, heldTool.Value.Comp, user); + + if (_moduleQuery.TryComp(module, out var moduleComp)) + { + ClearSlot((entity, entity.Comp), slot, moduleComp.BusWidth); + } + + removedModule = module; + Dirty(entity); + UpdateUi((entity, entity.Comp)); + return true; + } + + /// + /// Attempts to insert the provided module into the provided storage. + /// + /// The storage to insert into + /// + /// + /// + /// Whether insertion succeeded. + public bool TryInsertModule(Entity entity, + Entity module, EntityUid? player, int slot) + { + if (!Resolve(entity, ref entity.Comp) || !Resolve(module, ref module.Comp) || entity.Comp.ModuleContainer is null) + return false; + + if (!ModuleFitsInStorage((entity, entity.Comp), module.AsNullable(), slot)) + return false; + + AssignModuleToSlot((entity, entity.Comp), (module, module.Comp), slot); + + if (!_containerSystem.Insert(module.Owner, entity.Comp.ModuleContainer)) + { + + return false; + } + + if (entity.Comp.InsertSound is { } insertSound && player is not null) + _audioSystem.PlayPredicted(insertSound, entity, player); + + Dirty(entity); + UpdateUi((entity, entity.Comp)); + return true; + } + + /// + /// Checks to see if a module fits in a slot within a storage, including raising events and passing whitelists. + /// + /// The storage to check + /// The module to check + /// The slot in the storage to check + /// Whether the module fits in the slot. + public bool ModuleFitsInStorage(Entity storage, Entity module, int slot) + { + if (!Resolve(module, ref module.Comp, false)) + return false; + + if (!ModuleFitsInSlot(storage, module, slot)) + return false; + + if (!PassesAllWhitelists(storage, (module, module.Comp))) + return false; + + // Raised on the module itself to allow it to reject the insertion. + var moduleInsertAttempt = new ModuleGettingInsertedAttemptEvent(storage); + RaiseLocalEvent(module, moduleInsertAttempt); + if (moduleInsertAttempt.Cancelled) + return false; + + // Raised on the storage to allow it to reject the insertion. + var storageInsertAttempt = new AttemptInsertModuleIntoStorageEvent((module, module.Comp)); + RaiseLocalEvent(storage, storageInsertAttempt); + return !storageInsertAttempt.Cancelled; + } + + /// + /// Returns the list of modules contained within the storage. + /// + /// The storage entity + /// The list of contained modules. + public IReadOnlyList GetContainedModules(Entity storage) + { + // I'm expecting this to get passed invalid entities during shutdown, it's fine. + if (!Resolve(storage, ref storage.Comp, false) || storage.Comp.ModuleContainer is null) + return new List(); + + return storage.Comp.ModuleContainer.ContainedEntities; + } + + /// + /// Returns (one of) the slots containing the passed module, if it is present in the provided storage. + /// + /// The storage to look in. + /// The module to search for. + /// The slot the module is contained in. + /// Whether the module was found in the storage. + public bool TryGetModuleContainingSlot(Entity storage, Entity module, + [NotNullWhen(true)] out int? slot) + { + slot = null; + if (!Resolve(storage, ref storage.Comp) || !Resolve(module, ref module.Comp)) + return false; + + foreach (var slotData in storage.Comp.ModuleSlots) + { + if (slotData.Value == module) + { + slot = slotData.Key; + return true; + } + } + + return false; + } + + #endregion +} + +[Serializable, NetSerializable] +public enum ModuleUiKey : byte +{ + Key, +} \ No newline at end of file diff --git a/Content.Shared/_DEN/RetractableItemAction/RetractableItemActionSystem.DEN.cs b/Content.Shared/_DEN/RetractableItemAction/RetractableItemActionSystem.DEN.cs new file mode 100644 index 00000000000..4cd4dd77ddd --- /dev/null +++ b/Content.Shared/_DEN/RetractableItemAction/RetractableItemActionSystem.DEN.cs @@ -0,0 +1,12 @@ +namespace Content.Shared.RetractableItemAction; + +public sealed partial class RetractableItemActionSystem +{ + private void OnRetractableItemActionShutdown(Entity entity, ref ComponentShutdown args) + { + if (entity.Comp.ActionItemUid is { } actionItem) + { + PredictedQueueDel(actionItem); + } + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/SubFloor/EntitySystems/SharedTrayScannerSystem.DEN.cs b/Content.Shared/_DEN/SubFloor/EntitySystems/SharedTrayScannerSystem.DEN.cs new file mode 100644 index 00000000000..0e48e5358c1 --- /dev/null +++ b/Content.Shared/_DEN/SubFloor/EntitySystems/SharedTrayScannerSystem.DEN.cs @@ -0,0 +1,35 @@ +using Content.Shared.Inventory; + +namespace Content.Shared.SubFloor; + +public abstract partial class SharedTrayScannerSystem +{ + [Dependency] private InventorySystem _inventorySystem = default!; + + private void InitializeDen() + { + SubscribeLocalEvent(OnTrayStartup); + SubscribeLocalEvent(OnTrayShutdown); + + } + + private void OnTrayStartup(Entity entity, ref ComponentStartup args) + { + // Are we equipped anywhere on a person + if (!_inventorySystem.InSlotWithAnyFlags(entity.Owner, SlotFlags.All)) + return; + + var wearer = Transform(entity).ParentUid; + OnEquip(wearer); + } + + private void OnTrayShutdown(Entity entity, ref ComponentShutdown args) + { + // Are we equipped anywhere on a person + if (!_inventorySystem.InSlotWithAnyFlags(entity.Owner, SlotFlags.All)) + return; + + var wearer = Transform(entity).ParentUid; + OnUnequip(wearer); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Weapons/Misc/SharedTetherGunSystem.Toggle.cs b/Content.Shared/_DEN/Weapons/Misc/SharedTetherGunSystem.Toggle.cs new file mode 100644 index 00000000000..d1bb3190a7e --- /dev/null +++ b/Content.Shared/_DEN/Weapons/Misc/SharedTetherGunSystem.Toggle.cs @@ -0,0 +1,25 @@ +using Content.Shared.Item.ItemToggle.Components; + +namespace Content.Shared.Weapons.Misc; + +public abstract partial class SharedTetherGunSystem +{ + private void InitializeToggle() + { + // Make it so if some external system toggles the gun it drops the item. + SubscribeLocalEvent(OnTetherToggle); + SubscribeLocalEvent(OnForceToggle); + } + + private void OnForceToggle(Entity ent, ref ItemToggledEvent args) + { + if (!args.Activated) + StopTether(ent.Owner, ent.Comp); + } + + private void OnTetherToggle(Entity ent, ref ItemToggledEvent args) + { + if (!args.Activated) + StopTether(ent.Owner, ent.Comp); + } +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Wires/Components/EmpBreaksWiresComponent.cs b/Content.Shared/_DEN/Wires/Components/EmpBreaksWiresComponent.cs new file mode 100644 index 00000000000..00b39c8af0b --- /dev/null +++ b/Content.Shared/_DEN/Wires/Components/EmpBreaksWiresComponent.cs @@ -0,0 +1,9 @@ +namespace Content.Shared._DEN.Wires.Components; + +[RegisterComponent] +public sealed partial class EmpBreaksWiresComponent : Component +{ + [DataField] public float Chance = 0.8f; +} + +public sealed partial class AttemptEmpBreakWiresEvent : CancellableEntityEventArgs; \ No newline at end of file diff --git a/Content.Shared/_DEN/Wires/Components/PanelLocksItemSlotComponent.cs b/Content.Shared/_DEN/Wires/Components/PanelLocksItemSlotComponent.cs new file mode 100644 index 00000000000..c48361ed838 --- /dev/null +++ b/Content.Shared/_DEN/Wires/Components/PanelLocksItemSlotComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared._DEN.Wires.Components; + +[RegisterComponent] +public sealed partial class PanelLocksItemSlotComponent : Component +{ + [DataField(required: true)] public List LockedSlots; +} \ No newline at end of file diff --git a/Content.Shared/_DEN/Wires/EntitySystems/SharedWiresSystem.Lock.cs b/Content.Shared/_DEN/Wires/EntitySystems/SharedWiresSystem.Lock.cs new file mode 100644 index 00000000000..b5a17b51a06 --- /dev/null +++ b/Content.Shared/_DEN/Wires/EntitySystems/SharedWiresSystem.Lock.cs @@ -0,0 +1,35 @@ +using Content.Shared._DEN.Wires.Components; +using Content.Shared.Containers.ItemSlots; + +namespace Content.Shared.Wires; + +public abstract partial class SharedWiresSystem +{ + [Dependency] private ItemSlotsSystem _itemSlots = default!; + + private void InitializeLock() + { + SubscribeLocalEvent(OnPanelChanged); + SubscribeLocalEvent(OnMapInit); + } + + private void OnPanelChanged(Entity entity, ref PanelChangedEvent evt) + { + foreach (var slot in entity.Comp.LockedSlots) + { + _itemSlots.SetLock(entity.Owner, slot, !evt.Open); + } + } + + // The event doesn't occur for the component loading, so make sure the lock is set correctly at MapInit. + private void OnMapInit(Entity entity, ref MapInitEvent evt) + { + if (!TryComp(entity, out var wiresPanel)) + return; + + foreach (var slot in entity.Comp.LockedSlots) + { + _itemSlots.SetLock(entity.Owner, slot, wiresPanel.Open); + } + } +} \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/containers/container-selection.ftl b/Resources/Locale/en-US/_DEN/containers/container-selection.ftl new file mode 100644 index 00000000000..cf92d44a14f --- /dev/null +++ b/Resources/Locale/en-US/_DEN/containers/container-selection.ftl @@ -0,0 +1,6 @@ +container-selection-ui-title = Select Container Contents +container-selection-ui-choose-button = Choose +container-selection-ui-contents = Contains: + +container-selection-group-crowbars = Crowbars +container-selection-group-plushies = Plushies diff --git a/Resources/Locale/en-US/_DEN/containers/modules.ftl b/Resources/Locale/en-US/_DEN/containers/modules.ftl new file mode 100644 index 00000000000..3fc0bc22a5b --- /dev/null +++ b/Resources/Locale/en-US/_DEN/containers/modules.ftl @@ -0,0 +1,7 @@ +module-storage-ui-on-receive-message-no-hands = You have no hands. +module-storage-ui-on-receive-message-cannot-reach = You can't reach there! +module-storage-ui-module-unremoveable = This module cannot be removed. +module-storage-ui-on-receive-message-need-prying = You need a tool with {$quality} to remove this module. +module-storage-cannot-modify-while-worn = You cannot modify the modules installed in the {$entity} while wearing it. +module-storage-verb-close-storage = Close Module Storage +module-storage-verb-open-storage = Open Module Storage \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/modsuits/control-ui.ftl b/Resources/Locale/en-US/_DEN/modsuits/control-ui.ftl new file mode 100644 index 00000000000..8a8ae3636dc --- /dev/null +++ b/Resources/Locale/en-US/_DEN/modsuits/control-ui.ftl @@ -0,0 +1,4 @@ +wires-board-name-modsuit-control = MODsuit Control +modsuit-controller-ui-title = MODsuit Control +modsuit-controller-ui-no-cell = Missing power cell +modsuit-controller-ui-malfunction = [color=RED][bold]SEVERE INTERFACE ERROR DETECTED[/bold][/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/modsuits/modules.ftl b/Resources/Locale/en-US/_DEN/modsuits/modules.ftl new file mode 100644 index 00000000000..3757eac412f --- /dev/null +++ b/Resources/Locale/en-US/_DEN/modsuits/modules.ftl @@ -0,0 +1,5 @@ +armor-module-examine = The {$entity} is providing the following protection: +explosion-resist-module-examine = The {$entity} is providing the following: +modsuit-injector-component-spray-injecting-user = You ready the injector from your MODsuit gauntlets. +modsuit-injector-component-spray-injecting-target = {CAPITALIZE(THE($user))} is trying to place their MODsuit injector against you. +modsuit-emp-projection-module-breaks = The {$entity} cracks as it absorbs some of the EMP. \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/modsuits/sealable.ftl b/Resources/Locale/en-US/_DEN/modsuits/sealable.ftl new file mode 100644 index 00000000000..f82fe1b7e6f --- /dev/null +++ b/Resources/Locale/en-US/_DEN/modsuits/sealable.ftl @@ -0,0 +1,12 @@ +sealable-clothing-verb-text = Toggle Seals +sealable-clothing-started-sealing = The seals on the {$entity} start hissing closed. +sealable-clothing-started-unsealing = The seals on the {$entity} begin to loosen. +sealable-clothing-cant-toggle-sealed = Sealed clothing must be unsealed to be removed. +springlock-prying-unseal = You start forcing the seals on the {$entity} open. +springlock-prying-seal = You start forcing the seals on the {$entity} shut. +springlock-wire-cut = The motorized seals on the {$name} seize with a screech. +springlock-wire-repaired = The motorized seals on the {$name} spring free. +springlock-wire-pulsed = The motorized seals on the {$name} whine concerningly. +springlock-could-not-open = The motors sealing the {$name} refuse to release. +springlock-could-not-close = The motors of the {$name} refuse to close. +springlock-examine = The motors have seized and will need to be pried open. \ No newline at end of file diff --git a/Resources/Locale/en-US/_DEN/wires/wire-names.ftl b/Resources/Locale/en-US/_DEN/wires/wire-names.ftl new file mode 100644 index 00000000000..cf493be2f82 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/wires/wire-names.ftl @@ -0,0 +1,2 @@ +wire-name-seals = SEAL +wire-name-interface = INTF \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/admin-verbs.ftl b/Resources/Locale/en-US/administration/admin-verbs.ftl index 8007aa6cca1..7b7afd144eb 100644 --- a/Resources/Locale/en-US/administration/admin-verbs.ftl +++ b/Resources/Locale/en-US/administration/admin-verbs.ftl @@ -47,6 +47,8 @@ admin-verbs-pause-map = Pause Map admin-verbs-snap-joints = Snap Joints admin-verbs-make-minigun = Make Minigun admin-verbs-set-bullet-amount = Set Bullet Amount +admin-verbs-cut-wires = Cut Wires +admin-verbs-mend-wires = Mend Wires # Toggles verbs admin-verbs-bolt = Bolt diff --git a/Resources/Locale/en-US/administration/smites.ftl b/Resources/Locale/en-US/administration/smites.ftl index 2de4e790818..f5ae448ccb0 100644 --- a/Resources/Locale/en-US/administration/smites.ftl +++ b/Resources/Locale/en-US/administration/smites.ftl @@ -147,3 +147,5 @@ admin-trick-pause-map-description = Pause the selected map. Note this doesn't en admin-trick-snap-joints-description = Remove all physics joints from an object. Unfortunately does not snap every bone in their body. admin-trick-minigun-fire-description = Makes the targetted gun fire like a minigun (very fast). admin-trick-set-bullet-amount-description = Quickly set the amount of unspawned bullets in a gun. +admin-trick-cut-wires-description = Cuts all of the wires on this device. +admin-trick-mend-wires-description = Mends all of the wires on this device. \ No newline at end of file diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl index cc9167d9069..b99a6fd9ce9 100644 --- a/Resources/Locale/en-US/verbs/verb-system.ftl +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -29,6 +29,7 @@ verb-categories-select-type = Select Type verb-categories-fax = Set Destination verb-categories-power-level = Power Level verb-categories-adjust = Adjust +verb-categories-toggle-clothing = Toggle Clothing verb-common-toggle-light = Toggle light verb-common-close = Close diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index c5e4cca8ce2..05c47abe030 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -153,13 +153,13 @@ - type: Sprite sprite: Clothing/Neck/Cloaks/goliathcloak.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodGoliathCloak + clothingPrototypes: + head: ClothingHeadHatHoodGoliathCloak requiredSlot: - neck - slot: head - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: entity parent: ClothingNeckBase @@ -179,13 +179,13 @@ - type: Sprite sprite: Clothing/Neck/Cloaks/moth.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodMoth + clothingPrototypes: + head: ClothingHeadHatHoodMoth requiredSlot: - neck - slot: head - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: TypingIndicatorClothing proto: moth @@ -198,13 +198,13 @@ - type: Sprite sprite: Clothing/Neck/Cloaks/void.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodVoidCloak + clothingPrototypes: + head: ClothingHeadHatHoodVoidCloak requiredSlot: - neck - slot: head - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: TypingIndicatorClothing proto: alien diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index 762f92e355d..62986c2424c 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -109,11 +109,11 @@ id: ClothingOuterStorageToggleableBase components: - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterDefault - slot: head + clothingPrototypes: + head: ClothingHeadHatHoodWinterDefault - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} storagebase: !type:Container ents: [] @@ -146,11 +146,9 @@ Piercing: 0.95 Heat: 0.90 Radiation: 0.25 - - type: ToggleableClothing - slot: head - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: GroupExamine - type: Tag tags: @@ -206,11 +204,11 @@ abstract: True components: - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterDefault - slot: head + clothingPrototypes: + head: ClothingHeadHatHoodWinterDefault - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} storagebase: !type:Container ents: [] diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index 235650d7891..925e4536593 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -110,7 +110,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Coats/jensencoat.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodChaplainHood + clothingPrototypes: + head: ClothingHeadHatHoodChaplainHood - type: entity parent: ClothingOuterCoatJensen diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 34272150493..ba56269f2a5 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -35,7 +35,8 @@ sprintModifier: 0.7 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitAtmos + clothingPrototypes: + head: ClothingHeadHelmetHardsuitAtmos - type: Tag tags: - Hardsuit @@ -71,7 +72,8 @@ sprintModifier: 0.7 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitEngineering + clothingPrototypes: + head: ClothingHeadHelmetHardsuitEngineering - type: Tag tags: - Hardsuit @@ -104,7 +106,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSpatio + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSpatio - type: Tag tags: - Hardsuit @@ -141,7 +144,8 @@ sprintModifier: 0.75 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSalvage + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSalvage - type: Tag tags: - Hardsuit @@ -177,7 +181,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitGoliath + clothingPrototypes: + head: ClothingHeadHelmetHardsuitGoliath - type: Construction graph: HardsuitGoliath node: hardsuitGoliath @@ -217,7 +222,8 @@ heatingCoefficient: 0.001 coolingCoefficient: 0.001 - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitMaxim + clothingPrototypes: + head: ClothingHeadHelmetHardsuitMaxim #Security Hardsuit - type: entity @@ -248,7 +254,8 @@ sprintModifier: 0.75 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSecurity + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSecurity - type: Tag tags: - Hardsuit @@ -279,7 +286,8 @@ sprintModifier: 0.65 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitBrigmedic + clothingPrototypes: + head: ClothingHeadHelmetHardsuitBrigmedic #Warden's Hardsuit - type: entity @@ -310,7 +318,8 @@ sprintModifier: 0.7 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitWarden + clothingPrototypes: + head: ClothingHeadHelmetHardsuitWarden #Captain's Hardsuit - type: entity @@ -342,7 +351,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitCap + clothingPrototypes: + head: ClothingHeadHelmetHardsuitCap - type: Tag tags: - Hardsuit @@ -380,7 +390,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitEngineeringWhite + clothingPrototypes: + head: ClothingHeadHelmetHardsuitEngineeringWhite - type: Tag tags: - Hardsuit @@ -411,7 +422,8 @@ sprintModifier: 0.95 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitMedical + clothingPrototypes: + head: ClothingHeadHelmetHardsuitMedical - type: Tag tags: - Hardsuit @@ -456,7 +468,8 @@ - HighRiskItem - Hardsuit - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitRd + clothingPrototypes: + head: ClothingHeadHelmetHardsuitRd - type: StaticPrice price: 750 - type: StealTarget @@ -492,7 +505,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSecurityRed + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSecurityRed #Luxury Mining Hardsuit - type: entity @@ -525,7 +539,8 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitLuxury + clothingPrototypes: + head: ClothingHeadHelmetHardsuitLuxury #ANTAG HARDSUITS #Blood-red Hardsuit @@ -562,7 +577,8 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSyndie + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSyndie - type: Tag tags: - MonkeyWearable @@ -584,7 +600,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/syndiemedic.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSyndieMedic + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSyndieMedic - type: Tag tags: - Hardsuit @@ -629,7 +646,8 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSyndieElite + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSyndieElite - type: Tag tags: - Hardsuit @@ -667,7 +685,8 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSyndieCommander + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSyndieCommander - type: Tag tags: - Hardsuit @@ -703,7 +722,8 @@ sprintModifier: 0.65 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitCybersun + clothingPrototypes: + head: ClothingHeadHelmetHardsuitCybersun - type: Tag tags: - MonkeyWearable @@ -740,7 +760,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitWizard + clothingPrototypes: + head: ClothingHeadHelmetHardsuitWizard - type: Tag tags: - Hardsuit @@ -774,7 +795,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitLing + clothingPrototypes: + head: ClothingHeadHelmetHardsuitLing #Pirate EVA Suit (Deep Space EVA Suit) #Despite visually appearing like a softsuit, it functions exactly like a hardsuit would (parents off of base hardsuit, has resistances and toggleable clothing, etc.) so it goes here. @@ -806,7 +828,8 @@ sprintModifier: 0.6 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitPirateEVA + clothingPrototypes: + head: ClothingHeadHelmetHardsuitPirateEVA - type: StaticPrice price: 0 @@ -841,7 +864,8 @@ sprintModifier: 0.8 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitPirateCap + clothingPrototypes: + head: ClothingHeadHelmetHardsuitPirateCap - type: StaticPrice price: 0 @@ -858,7 +882,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertleader.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTLeader + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTLeader #ERT Chaplain Hardsuit - type: entity @@ -872,7 +897,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTChaplain + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTChaplain #ERT Engineer Hardsuit - type: entity @@ -886,7 +912,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTEngineer + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTEngineer - type: FireProtection reduction: 0.8 @@ -902,7 +929,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertmedical.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTMedical + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTMedical #ERT Security Hardsuit - type: entity @@ -916,7 +944,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertsecurity.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTSecurity + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTSecurity - type: Tag tags: - Hardsuit @@ -934,7 +963,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertjanitor.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitERTJanitor + clothingPrototypes: + head: ClothingHeadHelmetHardsuitERTJanitor #Deathsquad - type: entity @@ -973,7 +1003,8 @@ sprintModifier: 1.0 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitDeathsquad + clothingPrototypes: + head: ClothingHeadHelmetHardsuitDeathsquad #CBURN Hardsuit - type: entity @@ -1012,7 +1043,8 @@ sprintModifier: 1.0 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetCBURN + clothingPrototypes: + head: ClothingHeadHelmetCBURN #MISC. HARDSUITS #Clown Hardsuit @@ -1046,7 +1078,8 @@ graph: ClownHardsuit node: clownHardsuit - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitClown + clothingPrototypes: + head: ClothingHeadHelmetHardsuitClown #Mime Hardsuit - type: entity @@ -1063,7 +1096,8 @@ graph: MimeHardsuit node: mimeHardsuit - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitMime + clothingPrototypes: + head: ClothingHeadHelmetHardsuitMime #Santa's Hardsuit - type: entity @@ -1093,4 +1127,5 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSanta + clothingPrototypes: + head: ClothingHeadHelmetHardsuitSanta diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml index 6ad290d4e34..1945b06df45 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml @@ -121,7 +121,8 @@ - type: Clothing sprite: Clothing/OuterClothing/Misc/chaplain_hoodie.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodChaplainHood + clothingPrototypes: + head: ClothingHeadHatHoodChaplainHood - type: entity parent: ClothingOuterBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml index 3f55f1204e7..f7e2133207a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml @@ -53,11 +53,11 @@ heatingCoefficient: 0.75 coolingCoefficient: 0.5 - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetEVALarge - slot: head + clothingPrototypes: + head: ClothingHeadHelmetEVALarge - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: Tag tags: - CorgiWearable @@ -140,7 +140,8 @@ - type: StealTarget stealGroup: ClothingOuterHardsuitVoidParamed - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetVoidParamed + clothingPrototypes: + head: ClothingHeadHelmetVoidParamed - type: ItemToggle onUse: false soundActivate: @@ -167,7 +168,7 @@ speed: 360 - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: Tag tags: - WhitelistChameleon diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 5dffcb8aadc..57dbc4346d8 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -132,11 +132,11 @@ sprite: Clothing/OuterClothing/Suits/rad.rsi - type: GroupExamine - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodRad - slot: head + clothingPrototypes: + head: ClothingHeadHatHoodRad - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: ProtectedFromStepTriggers slots: WITHOUT_POCKET - type: HideLayerClothing @@ -259,7 +259,7 @@ sprite: Clothing/OuterClothing/Suits/monkey.rsi - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: ProtectedFromStepTriggers slots: WITHOUT_POCKET @@ -276,10 +276,11 @@ - type: Clothing sprite: Clothing/OuterClothing/Suits/iansuit.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodIan + clothingPrototypes: + head: ClothingHeadHatHoodIan - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: Construction graph: ClothingOuterSuitIan node: suit @@ -305,10 +306,11 @@ - type: Clothing sprite: Clothing/OuterClothing/Suits/carpsuit.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodCarp + clothingPrototypes: + head: ClothingHeadHatHoodCarp - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} - type: HideLayerClothing slots: - Tail @@ -326,7 +328,8 @@ heatingCoefficient: 0.01 coolingCoefficient: 0.01 - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitCarp + clothingPrototypes: + head: ClothingHeadHelmetHardsuitCarp - type: StaticPrice price: 1500 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index bf193de55ca..58a511df0cd 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -36,11 +36,11 @@ categories: [ HideSpawnMenu ] components: - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterDefault - slot: head + clothingPrototypes: + head: ClothingHeadHatHoodWinterDefault - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot {} + toggleable-clothing: !type:Container {} storagebase: !type:Container ents: [] @@ -65,7 +65,8 @@ outerClothing: - state: ATMOS-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterEngineer + clothingPrototypes: + head: ClothingHeadHatHoodWinterEngineer - type: entity parent: ClothingOuterWinterCoatToggleable @@ -88,7 +89,8 @@ outerClothing: - state: BAR-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterBartender + clothingPrototypes: + head: ClothingHeadHatHoodWinterBartender - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseCommandContraband] @@ -111,7 +113,8 @@ outerClothing: - state: CAP-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterCaptain + clothingPrototypes: + head: ClothingHeadHatHoodWinterCaptain - type: entity parent: ClothingOuterWinterCoatToggleable @@ -134,7 +137,8 @@ outerClothing: - state: CARGO-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterCargo + clothingPrototypes: + head: ClothingHeadHatHoodWinterCargo - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseCommandContraband] @@ -157,7 +161,8 @@ outerClothing: - state: CE-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterCE + clothingPrototypes: + head: ClothingHeadHatHoodWinterCE - type: entity parent: [ ClothingOuterWinterCoatToggleable, BaseCentcommContraband ] @@ -180,7 +185,8 @@ outerClothing: - state: CENTCOM-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterCentcom + clothingPrototypes: + head: ClothingHeadHatHoodWinterCentcom - type: entity parent: ClothingOuterWinterCoat @@ -232,7 +238,8 @@ Caustic: 0.75 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterChem + clothingPrototypes: + head: ClothingHeadHatHoodWinterChem - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseCommandContraband] @@ -262,7 +269,8 @@ Caustic: 0.75 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterCMO + clothingPrototypes: + head: ClothingHeadHatHoodWinterCMO - type: entity parent: ClothingOuterWinterCoat @@ -295,7 +303,8 @@ outerClothing: - state: ENGI-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterEngineer + clothingPrototypes: + head: ClothingHeadHatHoodWinterEngineer - type: entity parent: ClothingOuterWinterCoatToggleable @@ -325,7 +334,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSci + clothingPrototypes: + head: ClothingHeadHatHoodWinterSci - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseCommandContraband] @@ -348,7 +358,8 @@ outerClothing: - state: HOP-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterHOP + clothingPrototypes: + head: ClothingHeadHatHoodWinterHOP ########################################################## @@ -363,10 +374,11 @@ - type: Clothing sprite: Clothing/OuterClothing/WinterCoats/coathosarmored.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterHOS + clothingPrototypes: + head: ClothingHeadHatHoodWinterHOS - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot { } + toggleable-clothing: !type:Container { } storagebase: !type:Container ents: [ ] ########################################################## @@ -393,7 +405,8 @@ outerClothing: - state: HOS-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterHOS + clothingPrototypes: + head: ClothingHeadHatHoodWinterHOS - type: entity parent: ClothingOuterWinterCoatToggleable @@ -416,7 +429,8 @@ outerClothing: - state: HYDRO-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterHydro + clothingPrototypes: + head: ClothingHeadHatHoodWinterHydro - type: entity parent: ClothingOuterWinterCoatToggleable @@ -446,7 +460,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterJani + clothingPrototypes: + head: ClothingHeadHatHoodWinterJani - type: entity parent: ClothingOuterWinterCoatToggleable @@ -476,7 +491,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterMed + clothingPrototypes: + head: ClothingHeadHatHoodWinterMed - type: entity parent: ClothingOuterWinterCoatToggleable @@ -499,7 +515,8 @@ outerClothing: - state: MIME-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterMime + clothingPrototypes: + head: ClothingHeadHatHoodWinterMime - type: entity parent: ClothingOuterWinterCoatToggleable @@ -522,7 +539,8 @@ outerClothing: - state: MINER-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterMiner + clothingPrototypes: + head: ClothingHeadHatHoodWinterMiner - type: entity parent: ClothingOuterWinterCoatToggleable @@ -552,7 +570,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterPara + clothingPrototypes: + head: ClothingHeadHatHoodWinterPara - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseCommandContraband] @@ -575,7 +594,8 @@ outerClothing: - state: QM-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterQM + clothingPrototypes: + head: ClothingHeadHatHoodWinterQM - type: entity @@ -606,7 +626,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterRD + clothingPrototypes: + head: ClothingHeadHatHoodWinterRD - type: entity parent: ClothingOuterWinterCoatToggleable @@ -629,7 +650,8 @@ outerClothing: - state: ROBO-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterRobo + clothingPrototypes: + head: ClothingHeadHatHoodWinterRobo - type: entity @@ -660,7 +682,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSci + clothingPrototypes: + head: ClothingHeadHatHoodWinterSci - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseSecurityContraband] @@ -683,7 +706,8 @@ outerClothing: - state: SEC-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSec + clothingPrototypes: + head: ClothingHeadHatHoodWinterSec - type: entity parent: ClothingOuterWinterCoatToggleable @@ -713,7 +737,8 @@ Caustic: 0.9 priceMultiplier: 0.15 - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSci + clothingPrototypes: + head: ClothingHeadHatHoodWinterSci ################################################################ - type: entity @@ -727,10 +752,11 @@ - type: Clothing sprite: Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterWarden + clothingPrototypes: + head: ClothingHeadHatHoodWinterWarden - type: ContainerContainer containers: - toggleable-clothing: !type:ContainerSlot { } + toggleable-clothing: !type:Container { } storagebase: !type:Container ents: [ ] ################################################################ @@ -757,7 +783,8 @@ outerClothing: - state: WARD-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterWarden + clothingPrototypes: + head: ClothingHeadHatHoodWinterWarden - type: entity parent: [ClothingOuterWinterCoatToggleable, BaseSyndicateContraband] @@ -781,7 +808,8 @@ outerClothing: - state: SYNDIECAP-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSyndie + clothingPrototypes: + head: ClothingHeadHatHoodWinterSyndie ############################################################## - type: entity @@ -795,7 +823,8 @@ - type: Clothing sprite: Clothing/OuterClothing/WinterCoats/syndicate/coatsyndiecaparmored.rsi - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSyndie + clothingPrototypes: + head: ClothingHeadHatHoodWinterSyndie ############################################################## - type: entity @@ -820,7 +849,8 @@ outerClothing: - state: SYNDIE-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterSyndie + clothingPrototypes: + head: ClothingHeadHatHoodWinterSyndie - type: entity parent: ClothingOuterWinterCoat @@ -872,7 +902,8 @@ - ReagentId: Fiber Quantity: 50 # 50 (10 (fiber count of web) * 5 (to craft)) - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterWeb + clothingPrototypes: + head: ClothingHeadHatHoodWinterWeb - type: entity parent: ClothingOuterWinterCoatToggleable @@ -903,7 +934,8 @@ color: "#1d1d1d" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorBlack + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorBlack - type: entity parent: ClothingOuterWinterCoatToggleable @@ -934,7 +966,8 @@ color: "#9C0DE1" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorPurple + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorPurple - type: entity parent: ClothingOuterWinterCoatToggleable @@ -965,7 +998,8 @@ color: "#940000" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorRed + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorRed - type: entity parent: ClothingOuterWinterCoatToggleable @@ -996,7 +1030,8 @@ color: "#0089EF" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorBlue + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorBlue - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1027,7 +1062,8 @@ color: "#723A02" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorBrown + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorBrown - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1058,7 +1094,8 @@ color: "#999999" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorGray + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorGray - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1089,7 +1126,8 @@ color: "#5ABF2F" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorGreen + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorGreen - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1120,7 +1158,8 @@ color: "#C09F72" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorLightBrown + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorLightBrown - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1151,7 +1190,8 @@ color: "#EF8100" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorOrange + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorOrange - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1182,7 +1222,8 @@ color: "#EAE8E8" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorWhite + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorWhite - type: entity parent: ClothingOuterWinterCoatToggleable @@ -1213,4 +1254,5 @@ color: "#EBE216" - state: winterbits-equipped-OUTERCLOTHING - type: ToggleableClothing - clothingPrototype: ClothingHeadHatHoodWinterColorYellow + clothingPrototypes: + head: ClothingHeadHatHoodWinterColorYellow diff --git a/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml b/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml index edc8e1b089c..7d87b566fc3 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/t-ray.yml @@ -10,15 +10,16 @@ - state: tray-off map: ["base"] - type: TrayScanner + - type: ItemToggle - type: Item sprite: Objects/Tools/t-ray.rsi - type: Appearance - type: GenericVisualizer visuals: - enum.TrayScannerVisual.Visual: + enum.ToggleableVisuals.Enabled: base: - On: { state: tray-on } - Off: { state: tray-off } + True: { state: tray-on } + False: { state: tray-off } - type: PhysicalComposition materialComposition: Steel: 400 diff --git a/Resources/Prototypes/_DEN/Actions/types.yml b/Resources/Prototypes/_DEN/Actions/types.yml new file mode 100644 index 00000000000..f008ee333aa --- /dev/null +++ b/Resources/Prototypes/_DEN/Actions/types.yml @@ -0,0 +1,152 @@ +- type: entity + parent: BaseAction + id: ActionToggleClothingSeals + name: Toggle Clothing Seals + description: Toggle the seals on your suit, or stop in-progress sealing. + components: + - type: Action + itemIconStyle: BigItem + useDelay: 1 + - type: InstantAction + event: !type:ToggleSealableControllerEvent + +- type: entity + parent: BaseAction + id: ActionOpenModsuitUI + name: Open MODsuit Controller UI + description: Opens the MODsuit Controller UI. + components: + - type: Action + itemIconStyle: BigItem + - type: InstantAction + event: !type:ModsuitControllerOpenUiEvent + +- type: entity + parent: BaseToggleAction + id: ActionToggleModsuitModule + name: Toggle Modsuit Module + description: Toggles the modsuit module. + components: + - type: Action + itemIconStyle: BigItem + +- type: entity + parent: BaseAction + id: ActionModsuitBikeHorn + name: Bike Horn Module + description: Honks that bike horn! + components: + - type: Action + useDelay: 0.5 + itemIconStyle: BigItem + - type: InstantAction + event: !type:ActivateUsingActionEvent + - type: ModsuitPowerDrainAction + drainOnAction: 1.0 + +- type: entity + parent: BaseAction + id: ActionRetractableItemModsuitDrill + name: Modsuit Drill + description: Deploy the contained drill from your MODsuit + components: + - type: Action + useDelay: 2 + raiseOnAction: true + itemIconStyle: BigAction + icon: + sprite: Objects/Tools/handdrill.rsi + state: handdrill + - type: InstantAction + event: !type:OnRetractableItemActionEvent + - type: RetractableItemAction + spawnedPrototype: ModsuitMiningDrill + summonSounds: + collection: Drill + retractSounds: + collection: Drill + +- type: entity + parent: BaseAction + id: ActionHealthAnalyzerScan + name: Modsuit Health Analyzer Scan + description: Use the scanner built into your modsuit gauntlets to read something's vitals. + components: + - type: Action + useDelay: 1 + icon: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: health_module } + iconOn: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: health_module } + itemIconStyle: BigAction + - type: TargetAction + - type: EntityTargetAction + whitelist: + components: + - MobState + event: !type:InteractUsingActionEvent + - type: ModsuitPowerDrainAction + drainOnAction: 2.5 + +- type: entity + parent: BaseAction + id: ActionInjectorUse + name: Modsuit Injector + description: Use the injector build into your modsuit gauntlets to draw or inject from a target. + components: + - type: Action + useDelay: 0.25 + icon: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: injector_module } + iconOn: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: injector_module } + itemIconStyle: BigAction + - type: TargetAction + - type: EntityTargetAction + whitelist: + components: + - Bloodstream + - DrawableSolution + event: !type:InteractUsingActionEvent + - type: ModsuitPowerDrainAction + drainOnAction: 1.5 + - type: ContainerExamineRelay + +- type: entity + parent: BaseAction + id: ActionDefibrillatorUse + name: Modsuit Defibrillator + description: Use the defibrillator paddles integrated into your MODsuit gauntlets to shock the target. + components: + - type: Action + useDelay: 3.0 + icon: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: defibrillator } + iconOn: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: defibrillator } + itemIconStyle: BigAction + - type: TargetAction + - type: EntityTargetAction + whitelist: + components: + - Bloodstream + - DrawableSolution + event: !type:InteractUsingActionEvent + - type: ModsuitPowerDrainAction + drainOnAction: 100 + - type: ContainerExamineRelay + +- type: entity + parent: BaseAction + id: ActionKinesisUse + name: Modsuit Kinesis Module + description: Use the kinesis module of your MODsuit gauntlets. + components: + - type: Action + useDelay: 1.0 + icon: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: kinesismodule } + iconOn: { sprite: _DEN/Objects/ModsuitModules/modules.rsi, state: kinesismodule } + itemIconStyle: BigAction + - type: TargetAction + range: 0 + checkCanAccess: false + - type: EntityTargetAction + event: null + - type: WorldTargetAction + event: !type:InteractInWorldActionEvent + - type: ModsuitPowerDrainAction + drainOnAction: 3.5 \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/Chemistry/injector_modes.yml b/Resources/Prototypes/_DEN/Chemistry/injector_modes.yml new file mode 100644 index 00000000000..351e97e6db1 --- /dev/null +++ b/Resources/Prototypes/_DEN/Chemistry/injector_modes.yml @@ -0,0 +1,14 @@ +- type: injectorMode + abstract: true + parent: BaseJetInjectorMode + id: BaseModsuitInjectorMode + popupUserAttempt: modsuit-injector-component-spray-injecting-user + popupTargetAttempt: modsuit-injector-component-spray-injecting-target + +- type: injectorMode + parent: [ BaseModsuitInjectorMode, BaseInjectMode ] + id: ModsuitInjectorInjectMode + +- type: injectorMode + parent: [ BaseModsuitInjectorMode, BaseDynamicMode ] + id: ModsuitInjectorDynamicMode \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/advanced.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/advanced.yml new file mode 100644 index 00000000000..786c0e2636d --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/advanced.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitAdvanced + name: advanced modsuit control + description: The controller for a advanced model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/advanced.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetAdvanced + gloves: ClothingModsuitGauntletsAdvanced + outerClothing: ClothingModsuitChestplateAdvanced + shoes: ClothingModsuitBootsAdvanced + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsAdvanced + categories: [ HideSpawnMenu ] + name: advanced modsuit gauntlets + description: A pair of gauntlets from a advanced MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/advanced.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/advanced.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetAdvanced + categories: [ HideSpawnMenu ] + name: advanced modsuit helmet + description: A helmet from a advanced MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/advanced.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "DarkOrange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/advanced.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateAdvanced + categories: [ HideSpawnMenu ] + name: advanced modsuit chestplate + description: A chestplate from a advanced MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/advanced.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/advanced.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsAdvanced + categories: [ HideSpawnMenu ] + name: advanced modsuit boots + description: A pair of boots from a advanced MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/advanced.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/advanced.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/apocryphal.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/apocryphal.yml new file mode 100644 index 00000000000..daec9cd169b --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/apocryphal.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitApocryphal + name: apocryphal modsuit control + description: The controller for a apocryphal model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/apocryphal.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetApocryphal + gloves: ClothingModsuitGauntletsApocryphal + outerClothing: ClothingModsuitChestplateApocryphal + shoes: ClothingModsuitBootsApocryphal + - type: ModuleStorage + maxBusWidth: 25 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsApocryphal + categories: [ HideSpawnMenu ] + name: apocryphal modsuit gauntlets + description: A pair of gauntlets from a apocryphal MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/apocryphal.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/apocryphal.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetApocryphal + categories: [ HideSpawnMenu ] + name: apocryphal modsuit helmet + description: A helmet from a apocryphal MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/apocryphal.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/apocryphal.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateApocryphal + categories: [ HideSpawnMenu ] + name: apocryphal modsuit chestplate + description: A chestplate from a apocryphal MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsApocryphal + categories: [ HideSpawnMenu ] + name: apocryphal modsuit boots + description: A pair of boots from a apocryphal MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/apocryphal.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/apocryphal.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/asteroid.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/asteroid.yml new file mode 100644 index 00000000000..e9bc9472a26 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/asteroid.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitAsteroid + name: asteroid modsuit control + description: The controller for a asteroid model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/asteroid.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetAsteroid + gloves: ClothingModsuitGauntletsAsteroid + outerClothing: ClothingModsuitChestplateAsteroid + shoes: ClothingModsuitBootsAsteroid + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsAsteroid + categories: [ HideSpawnMenu ] + name: asteroid modsuit gauntlets + description: A pair of gauntlets from a asteroid MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/asteroid.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/asteroid.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetAsteroid + categories: [ HideSpawnMenu ] + name: asteroid modsuit helmet + description: A helmet from a asteroid MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/asteroid.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/asteroid.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateAsteroid + categories: [ HideSpawnMenu ] + name: asteroid modsuit chestplate + description: A chestplate from a asteroid MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsAsteroid + categories: [ HideSpawnMenu ] + name: asteroid modsuit boots + description: A pair of boots from a asteroid MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/asteroid.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/asteroid.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/atmospheric.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/atmospheric.yml new file mode 100644 index 00000000000..b73cf2a4691 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/atmospheric.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitAtmospheric + name: atmospheric modsuit control + description: The controller for a atmospheric model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/atmospheric.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetAtmospheric + gloves: ClothingModsuitGauntletsAtmospheric + outerClothing: ClothingModsuitChestplateAtmospheric + shoes: ClothingModsuitBootsAtmospheric + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsAtmospheric + categories: [ HideSpawnMenu ] + name: atmospheric modsuit gauntlets + description: A pair of gauntlets from a atmospheric MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/atmospheric.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/atmospheric.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetAtmospheric + categories: [ HideSpawnMenu ] + name: atmospheric modsuit helmet + description: A helmet from a atmospheric MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/atmospheric.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/atmospheric.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateAtmospheric + categories: [ HideSpawnMenu ] + name: atmospheric modsuit chestplate + description: A chestplate from a atmospheric MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsAtmospheric + categories: [ HideSpawnMenu ] + name: atmospheric modsuit boots + description: A pair of boots from a atmospheric MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/atmospheric.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/atmospheric.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/base.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/base.yml new file mode 100644 index 00000000000..db0a5fec85a --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/base.yml @@ -0,0 +1,213 @@ +- type: entity + abstract: true + parent: [ Clothing, ContentsExplosionResistanceBase ] + id: ClothingModsuitBase + components: + - type: Item + size: Ginormous + - type: Clothing + quickEquip: false + slots: + - back + - type: ContainerContainer + containers: + toggleable-clothing: !type:Container { } + modules: !type:Container { } + cell_slot: !type:ContainerSlot { } + - type: ToggleableClothing + requiredSlot: + - back + - type: SealableClothing + requiredSlot: + - back + - type: ExplosionResistance + damageCoefficient: 0.9 + - type: SealableClothingVisuals + clothingVisuals: + back: + - state: equipped-BACKPACK-sealed + - type: SealableController + controlledSlots: [ back, head, outerClothing, shoes, gloves ] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SealableClothingVisuals.State: + sealedLayer: + True: { visible: true } + False: { visible: false } + - type: WiresPanel + - type: Wires + boardName: wires-board-name-modsuit-control + layoutId: ModControl + - type: UserInterface + interfaces: + enum.WiresUiKey.Key: + type: WiresBoundUserInterface + enum.ModuleUiKey.Key: + type: ModuleBoundUserInterface + enum.ModsuitControllerUiKey.Key: + type: ModsuitControllerBoundUserInterface + - type: PowerCellSlot + cellSlotId: cell_slot + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + - type: PanelLocksItemSlot + lockedSlots: + - cell_slot + - type: EmpBreaksWires + - type: ModuleStorage + maxBusWidth: 10 + - type: ModulePowerProvider + - type: ModuleStorageBlockWorn + - type: ModuleStorageNeedsPanel + - type: ModsuitController + - type: ModsuitPart + +- type: entity + abstract: true + parent: ClothingHandsBase + id: ClothingModsuitGauntletsBase + components: + - type: SealableClothing + requiredSlot: + - gloves + - type: SealableClothingVisuals + clothingVisuals: + gloves: + - state: equipped-HAND-sealed + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SealableClothingVisuals.State: + sealedLayer: + True: { visible: true } + False: { visible: false } + - type: ModsuitPart + - type: Tag + tags: + - WhitelistChameleon + - type: Armor + modifiers: { } + +- type: entity + abstract: true + parent: ClothingHeadBase + id: ClothingModsuitHelmetBase + components: + - type: SealableClothing + sealedAddComponents: + - type: BreathMask + - type: IngestionBlocker + - type: IdentityBlocker + requiredSlot: + - head + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SealableClothingVisuals.State: + sealedLayer: + True: { visible: true } + False: { visible: false } + - type: Tag + tags: + - WhitelistChameleon + - type: ModsuitPart + - type: Armor + modifiers: { } + +- type: entity + abstract: true + parent: ClothingModsuitHelmetBase + id: ClothingModsuitHelmetBaseExo + components: + - type: SealableClothing + sealedAddComponents: + - type: BreathMask + - type: IngestionBlocker + - type: IdentityBlocker + - type: PressureProtection + highPressureMultiplier: 0.5 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + heatingCoefficient: 0.1 + coolingCoefficient: 0.1 + - type: ModsuitPart + - type: Armor + modifiers: { } + +- type: entity + abstract: true + parent: [ ClothingOuterBase, AllowSuitStorageClothing ] + id: ClothingModsuitChestplateBase + components: + - type: SealableClothing + requiredSlot: + - outerClothing + - type: SealableClothingVisuals + clothingVisuals: + outerClothing: + - state: equipped-OUTERCLOTHING-sealed + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SealableClothingVisuals.State: + sealedLayer: + True: { visible: true } + False: { visible: false } + - type: Tag + tags: + - WhitelistChameleon + - type: ModsuitPart + - type: Armor + modifiers: { } + +- type: entity + abstract: true + parent: ClothingModsuitChestplateBase + id: ClothingModsuitChestplateBaseExo + components: + - type: SealableClothing + sealedAddComponents: + - type: PressureProtection + highPressureMultiplier: 0.5 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + heatingCoefficient: 0.1 + coolingCoefficient: 0.1 + - type: ModsuitPart + - type: Armor + modifiers: { } + +- type: entity + abstract: true + parent: ClothingShoesBase + id: ClothingModsuitBootsBase + components: + - type: SealableClothing + requiredSlot: + - feet + - type: SealableClothingVisuals + clothingVisuals: + shoes: + - state: equipped-FEET-sealed + - type: Appearance + - type: GenericVisualizer + visuals: + enum.SealableClothingVisuals.State: + sealedLayer: + True: { visible: true } + False: { visible: false } + - type: Tag + tags: + - WhitelistChameleon + - type: ModsuitPart + - type: Armor + modifiers: { } \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/chrono.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/chrono.yml new file mode 100644 index 00000000000..b21920cc8c5 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/chrono.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitChrono + name: chrono modsuit control + description: The controller for a chrono model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/chrono.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetChrono + gloves: ClothingModsuitGauntletsChrono + outerClothing: ClothingModsuitChestplateChrono + shoes: ClothingModsuitBootsChrono + - type: ModuleStorage + maxBusWidth: 18 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsChrono + categories: [ HideSpawnMenu ] + name: chrono modsuit gauntlets + description: A pair of gauntlets from a chrono MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/chrono.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/chrono.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetChrono + categories: [ HideSpawnMenu ] + name: chrono modsuit helmet + description: A helmet from a chrono MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/chrono.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/chrono.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateChrono + categories: [ HideSpawnMenu ] + name: chrono modsuit chestplate + description: A chestplate from a chrono MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/chrono.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/chrono.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsChrono + categories: [ HideSpawnMenu ] + name: chrono modsuit boots + description: A pair of boots from a chrono MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/chrono.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/chrono.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/civilian.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/civilian.yml new file mode 100644 index 00000000000..2a18678d893 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/civilian.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitCivilian + name: civilian modsuit control + description: The controller for a civilian model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/civilian.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetCivilian + gloves: ClothingModsuitGauntletsCivilian + outerClothing: ClothingModsuitChestplateCivilian + shoes: ClothingModsuitBootsCivilian + - type: ModuleStorage + maxBusWidth: 12 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsCivilian + categories: [ HideSpawnMenu ] + name: civilian modsuit gauntlets + description: A pair of gauntlets from a civilian MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/civilian.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/civilian.rsi + +- type: entity + parent: ClothingModsuitHelmetBase + id: ClothingModsuitHelmetCivilian + categories: [ HideSpawnMenu ] + name: civilian modsuit helmet + description: A helmet from a civilian MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/civilian.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/civilian.rsi + +- type: entity + parent: ClothingModsuitChestplateBase + id: ClothingModsuitChestplateCivilian + categories: [ HideSpawnMenu ] + name: civilian modsuit chestplate + description: A chestplate from a civilian MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/civilian.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/civilian.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsCivilian + categories: [ HideSpawnMenu ] + name: civilian modsuit boots + description: A pair of boots from a civilian MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/civilian.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/civilian.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corporate.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corporate.yml new file mode 100644 index 00000000000..b516437613b --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corporate.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitCorporate + name: corporate modsuit control + description: The controller for a corporate model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/corporate.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetCorporate + gloves: ClothingModsuitGauntletsCorporate + outerClothing: ClothingModsuitChestplateCorporate + shoes: ClothingModsuitBootsCorporate + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsCorporate + categories: [ HideSpawnMenu ] + name: corporate modsuit gauntlets + description: A pair of gauntlets from a corporate MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/corporate.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/corporate.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetCorporate + categories: [ HideSpawnMenu ] + name: corporate modsuit helmet + description: A helmet from a corporate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/corporate.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/corporate.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateCorporate + categories: [ HideSpawnMenu ] + name: corporate modsuit chestplate + description: A chestplate from a corporate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/corporate.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/corporate.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsCorporate + categories: [ HideSpawnMenu ] + name: corporate modsuit boots + description: A pair of boots from a corporate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/corporate.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/corporate.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corpsman.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corpsman.yml new file mode 100644 index 00000000000..da81fccfd75 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/corpsman.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitCorpsman + name: corpsman modsuit control + description: The controller for a corpsman model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/corpsman.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetCorpsman + gloves: ClothingModsuitGauntletsCorpsman + outerClothing: ClothingModsuitChestplateCorpsman + shoes: ClothingModsuitBootsCorpsman + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsCorpsman + categories: [ HideSpawnMenu ] + name: corpsman modsuit gauntlets + description: A pair of gauntlets from a corpsman MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/corpsman.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/corpsman.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetCorpsman + categories: [ HideSpawnMenu ] + name: corpsman modsuit helmet + description: A helmet from a corpsman MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/corpsman.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/corpsman.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateCorpsman + categories: [ HideSpawnMenu ] + name: corpsman modsuit chestplate + description: A chestplate from a corpsman MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsCorpsman + categories: [ HideSpawnMenu ] + name: corpsman modsuit boots + description: A pair of boots from a corpsman MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/corpsman.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/corpsman.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/cosmohonk.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/cosmohonk.yml new file mode 100644 index 00000000000..cd438df6978 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/cosmohonk.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitCosmohonk + name: cosmohonk modsuit control + description: The controller for a cosmohonk model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/cosmohonk.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetCosmohonk + gloves: ClothingModsuitGauntletsCosmohonk + outerClothing: ClothingModsuitChestplateCosmohonk + shoes: ClothingModsuitBootsCosmohonk + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsCosmohonk + categories: [ HideSpawnMenu ] + name: cosmohonk modsuit gauntlets + description: A pair of gauntlets from a cosmohonk MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/cosmohonk.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/cosmohonk.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetCosmohonk + categories: [ HideSpawnMenu ] + name: cosmohonk modsuit helmet + description: A helmet from a cosmohonk MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/cosmohonk.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Red" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/cosmohonk.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateCosmohonk + categories: [ HideSpawnMenu ] + name: cosmohonk modsuit chestplate + description: A chestplate from a cosmohonk MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsCosmohonk + categories: [ HideSpawnMenu ] + name: cosmohonk modsuit boots + description: A pair of boots from a cosmohonk MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/debug.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/debug.yml new file mode 100644 index 00000000000..87f11958a88 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/debug.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitDebug + name: debug modsuit control + description: The controller for a debug model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/debug.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetDebug + gloves: ClothingModsuitGauntletsDebug + outerClothing: ClothingModsuitChestplateDebug + shoes: ClothingModsuitBootsDebug + - type: ModuleStorage + maxBusWidth: 50 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsDebug + categories: [ HideSpawnMenu ] + name: debug modsuit gauntlets + description: A pair of gauntlets from a debug MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/debug.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/debug.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetDebug + categories: [ HideSpawnMenu ] + name: debug modsuit helmet + description: A helmet from a debug MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/debug.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/debug.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateDebug + categories: [ HideSpawnMenu ] + name: debug modsuit chestplate + description: A chestplate from a debug MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/debug.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/debug.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsDebug + categories: [ HideSpawnMenu ] + name: debug modsuit boots + description: A pair of boots from a debug MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/debug.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/debug.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/elite.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/elite.yml new file mode 100644 index 00000000000..6eeb6535818 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/elite.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitElite + name: elite modsuit control + description: The controller for a elite model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/elite.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetElite + gloves: ClothingModsuitGauntletsElite + outerClothing: ClothingModsuitChestplateElite + shoes: ClothingModsuitBootsElite + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsElite + categories: [ HideSpawnMenu ] + name: elite modsuit gauntlets + description: A pair of gauntlets from a elite MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/elite.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/elite.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetElite + categories: [ HideSpawnMenu ] + name: elite modsuit helmet + description: A helmet from a elite MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/elite.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "DarkOrange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/elite.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateElite + categories: [ HideSpawnMenu ] + name: elite modsuit chestplate + description: A chestplate from a elite MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/elite.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/elite.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsElite + categories: [ HideSpawnMenu ] + name: elite modsuit boots + description: A pair of boots from a elite MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/elite.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/elite.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/enchanted.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/enchanted.yml new file mode 100644 index 00000000000..5cf0da841d3 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/enchanted.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitEnchanted + name: enchanted modsuit control + description: The controller for a enchanted model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/enchanted.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetEnchanted + gloves: ClothingModsuitGauntletsEnchanted + outerClothing: ClothingModsuitChestplateEnchanted + shoes: ClothingModsuitBootsEnchanted + - type: ModuleStorage + maxBusWidth: 10 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsEnchanted + categories: [ HideSpawnMenu ] + name: enchanted modsuit gauntlets + description: A pair of gauntlets from a enchanted MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/enchanted.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/enchanted.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetEnchanted + categories: [ HideSpawnMenu ] + name: enchanted modsuit helmet + description: A helmet from a enchanted MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/enchanted.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/enchanted.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateEnchanted + categories: [ HideSpawnMenu ] + name: enchanted modsuit chestplate + description: A chestplate from a enchanted MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsEnchanted + categories: [ HideSpawnMenu ] + name: enchanted modsuit boots + description: A pair of boots from a enchanted MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/enchanted.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/enchanted.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/engineering.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/engineering.yml new file mode 100644 index 00000000000..db3a8180f8f --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/engineering.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitEngineering + name: engineering modsuit control + description: The controller for a engineering model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/engineering.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetEngineering + gloves: ClothingModsuitGauntletsEngineering + outerClothing: ClothingModsuitChestplateEngineering + shoes: ClothingModsuitBootsEngineering + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsEngineering + categories: [ HideSpawnMenu ] + name: engineering modsuit gauntlets + description: A pair of gauntlets from a engineering MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/engineering.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/engineering.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetEngineering + categories: [ HideSpawnMenu ] + name: engineering modsuit helmet + description: A helmet from a engineering MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/engineering.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/engineering.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateEngineering + categories: [ HideSpawnMenu ] + name: engineering modsuit chestplate + description: A chestplate from a engineering MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/engineering.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/engineering.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsEngineering + categories: [ HideSpawnMenu ] + name: engineering modsuit boots + description: A pair of boots from a engineering MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/engineering.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/engineering.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/glitch.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/glitch.yml new file mode 100644 index 00000000000..4171d7f66e9 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/glitch.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitGlitch + name: glitch modsuit control + description: The controller for a glitch model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/glitch.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetGlitch + gloves: ClothingModsuitGauntletsGlitch + outerClothing: ClothingModsuitChestplateGlitch + shoes: ClothingModsuitBootsGlitch + - type: ModuleStorage + maxBusWidth: 18 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsGlitch + categories: [ HideSpawnMenu ] + name: glitch modsuit gauntlets + description: A pair of gauntlets from a glitch MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/glitch.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/glitch.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetGlitch + categories: [ HideSpawnMenu ] + name: glitch modsuit helmet + description: A helmet from a glitch MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/glitch.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/glitch.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateGlitch + categories: [ HideSpawnMenu ] + name: glitch modsuit chestplate + description: A chestplate from a glitch MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/glitch.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/glitch.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsGlitch + categories: [ HideSpawnMenu ] + name: glitch modsuit boots + description: A pair of boots from a glitch MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/glitch.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/glitch.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/honkerative.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/honkerative.yml new file mode 100644 index 00000000000..13bb17b3bad --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/honkerative.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitHonkerative + name: honkerative modsuit control + description: The controller for a honkerative model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/honkerative.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetHonkerative + gloves: ClothingModsuitGauntletsHonkerative + outerClothing: ClothingModsuitChestplateHonkerative + shoes: ClothingModsuitBootsHonkerative + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsHonkerative + categories: [ HideSpawnMenu ] + name: honkerative modsuit gauntlets + description: A pair of gauntlets from a honkerative MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/honkerative.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/honkerative.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetHonkerative + categories: [ HideSpawnMenu ] + name: honkerative modsuit helmet + description: A helmet from a honkerative MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/honkerative.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Orange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/honkerative.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateHonkerative + categories: [ HideSpawnMenu ] + name: honkerative modsuit chestplate + description: A chestplate from a honkerative MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsHonkerative + categories: [ HideSpawnMenu ] + name: honkerative modsuit boots + description: A pair of boots from a honkerative MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/honkerative.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/honkerative.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/infiltrator.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/infiltrator.yml new file mode 100644 index 00000000000..02be4bf74b1 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/infiltrator.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitInfiltrator + name: infiltrator modsuit control + description: The controller for a infiltrator model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/infiltrator.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetInfiltrator + gloves: ClothingModsuitGauntletsInfiltrator + outerClothing: ClothingModsuitChestplateInfiltrator + shoes: ClothingModsuitBootsInfiltrator + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsInfiltrator + categories: [ HideSpawnMenu ] + name: infiltrator modsuit gauntlets + description: A pair of gauntlets from a infiltrator MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/infiltrator.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/infiltrator.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetInfiltrator + categories: [ HideSpawnMenu ] + name: infiltrator modsuit helmet + description: A helmet from a infiltrator MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/infiltrator.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Orange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/infiltrator.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateInfiltrator + categories: [ HideSpawnMenu ] + name: infiltrator modsuit chestplate + description: A chestplate from a infiltrator MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsInfiltrator + categories: [ HideSpawnMenu ] + name: infiltrator modsuit boots + description: A pair of boots from a infiltrator MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/infiltrator.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/infiltrator.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/inquisitor.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/inquisitor.yml new file mode 100644 index 00000000000..43c9e69d87d --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/inquisitor.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitInquisitor + name: inquisitor modsuit control + description: The controller for a inquisitor model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/inquisitor.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetInquisitor + gloves: ClothingModsuitGauntletsInquisitor + outerClothing: ClothingModsuitChestplateInquisitor + shoes: ClothingModsuitBootsInquisitor + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsInquisitor + categories: [ HideSpawnMenu ] + name: inquisitor modsuit gauntlets + description: A pair of gauntlets from a inquisitor MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/inquisitor.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/inquisitor.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetInquisitor + categories: [ HideSpawnMenu ] + name: inquisitor modsuit helmet + description: A helmet from a inquisitor MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/inquisitor.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/inquisitor.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateInquisitor + categories: [ HideSpawnMenu ] + name: inquisitor modsuit chestplate + description: A chestplate from a inquisitor MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsInquisitor + categories: [ HideSpawnMenu ] + name: inquisitor modsuit boots + description: A pair of boots from a inquisitor MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/inquisitor.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/inquisitor.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/interdyne.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/interdyne.yml new file mode 100644 index 00000000000..5f121473c2f --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/interdyne.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitInterdyne + name: interdyne modsuit control + description: The controller for a interdyne model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/interdyne.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetInterdyne + gloves: ClothingModsuitGauntletsInterdyne + outerClothing: ClothingModsuitChestplateInterdyne + shoes: ClothingModsuitBootsInterdyne + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsInterdyne + categories: [ HideSpawnMenu ] + name: interdyne modsuit gauntlets + description: A pair of gauntlets from a interdyne MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/interdyne.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/interdyne.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetInterdyne + categories: [ HideSpawnMenu ] + name: interdyne modsuit helmet + description: A helmet from a interdyne MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/interdyne.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Red" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/interdyne.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateInterdyne + categories: [ HideSpawnMenu ] + name: interdyne modsuit chestplate + description: A chestplate from a interdyne MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsInterdyne + categories: [ HideSpawnMenu ] + name: interdyne modsuit boots + description: A pair of boots from a interdyne MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/interdyne.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/interdyne.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/loader.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/loader.yml new file mode 100644 index 00000000000..5fcf5b28784 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/loader.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitLoader + name: loader modsuit control + description: The controller for a loader model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/loader.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetLoader + gloves: ClothingModsuitGauntletsLoader + outerClothing: ClothingModsuitChestplateLoader + shoes: ClothingModsuitBootsLoader + - type: ModuleStorage + maxBusWidth: 10 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsLoader + categories: [ HideSpawnMenu ] + name: loader modsuit gauntlets + description: A pair of gauntlets from a loader MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/loader.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/loader.rsi + +- type: entity + parent: ClothingModsuitHelmetBase + id: ClothingModsuitHelmetLoader + categories: [ HideSpawnMenu ] + name: loader modsuit helmet + description: A helmet from a loader MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/loader.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/loader.rsi + +- type: entity + parent: ClothingModsuitChestplateBase + id: ClothingModsuitChestplateLoader + categories: [ HideSpawnMenu ] + name: loader modsuit chestplate + description: A chestplate from a loader MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/loader.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/loader.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsLoader + categories: [ HideSpawnMenu ] + name: loader modsuit boots + description: A pair of boots from a loader MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/loader.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/loader.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/magnate.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/magnate.yml new file mode 100644 index 00000000000..3f3039d0f59 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/magnate.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitMagnate + name: magnate modsuit control + description: The controller for a magnate model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/magnate.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetMagnate + gloves: ClothingModsuitGauntletsMagnate + outerClothing: ClothingModsuitChestplateMagnate + shoes: ClothingModsuitBootsMagnate + - type: ModuleStorage + maxBusWidth: 20 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsMagnate + categories: [ HideSpawnMenu ] + name: magnate modsuit gauntlets + description: A pair of gauntlets from a magnate MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/magnate.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/magnate.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetMagnate + categories: [ HideSpawnMenu ] + name: magnate modsuit helmet + description: A helmet from a magnate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/magnate.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "MediumPurple" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/magnate.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateMagnate + categories: [ HideSpawnMenu ] + name: magnate modsuit chestplate + description: A chestplate from a magnate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/magnate.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/magnate.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsMagnate + categories: [ HideSpawnMenu ] + name: magnate modsuit boots + description: A pair of boots from a magnate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/magnate.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/magnate.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/medical.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/medical.yml new file mode 100644 index 00000000000..1177c048234 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/medical.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitMedical + name: medical modsuit control + description: The controller for a medical model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/medical.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetMedical + gloves: ClothingModsuitGauntletsMedical + outerClothing: ClothingModsuitChestplateMedical + shoes: ClothingModsuitBootsMedical + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsMedical + categories: [ HideSpawnMenu ] + name: medical modsuit gauntlets + description: A pair of gauntlets from a medical MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/medical.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/medical.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetMedical + categories: [ HideSpawnMenu ] + name: medical modsuit helmet + description: A helmet from a medical MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/medical.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/medical.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateMedical + categories: [ HideSpawnMenu ] + name: medical modsuit chestplate + description: A chestplate from a medical MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/medical.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/medical.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsMedical + categories: [ HideSpawnMenu ] + name: medical modsuit boots + description: A pair of boots from a medical MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/medical.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/medical.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/mining.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/mining.yml new file mode 100644 index 00000000000..1ed084ab51e --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/mining.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitMining + name: mining modsuit control + description: The controller for a mining model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/mining.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetMining + gloves: ClothingModsuitGauntletsMining + outerClothing: ClothingModsuitChestplateMining + shoes: ClothingModsuitBootsMining + - type: ModuleStorage + maxBusWidth: 13 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsMining + categories: [ HideSpawnMenu ] + name: mining modsuit gauntlets + description: A pair of gauntlets from a mining MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/mining.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/mining.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetMining + categories: [ HideSpawnMenu ] + name: mining modsuit helmet + description: A helmet from a mining MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/mining.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/mining.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateMining + categories: [ HideSpawnMenu ] + name: mining modsuit chestplate + description: A chestplate from a mining MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/mining.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/mining.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsMining + categories: [ HideSpawnMenu ] + name: mining modsuit boots + description: A pair of boots from a mining MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/mining.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/mining.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/ninja.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/ninja.yml new file mode 100644 index 00000000000..a2fc1845696 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/ninja.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitNinja + name: ninja modsuit control + description: The controller for a ninja model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/ninja.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetNinja + gloves: ClothingModsuitGauntletsNinja + outerClothing: ClothingModsuitChestplateNinja + shoes: ClothingModsuitBootsNinja + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsNinja + categories: [ HideSpawnMenu ] + name: ninja modsuit gauntlets + description: A pair of gauntlets from a ninja MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/ninja.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/ninja.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetNinja + categories: [ HideSpawnMenu ] + name: ninja modsuit helmet + description: A helmet from a ninja MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/ninja.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "LimeGreen" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/ninja.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateNinja + categories: [ HideSpawnMenu ] + name: ninja modsuit chestplate + description: A chestplate from a ninja MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/ninja.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/ninja.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsNinja + categories: [ HideSpawnMenu ] + name: ninja modsuit boots + description: A pair of boots from a ninja MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/ninja.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/ninja.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/prototype.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/prototype.yml new file mode 100644 index 00000000000..bee25efeb43 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/prototype.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitPrototype + name: prototype modsuit control + description: The controller for a prototype model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/prototype.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetPrototype + gloves: ClothingModsuitGauntletsPrototype + outerClothing: ClothingModsuitChestplatePrototype + shoes: ClothingModsuitBootsPrototype + - type: ModuleStorage + maxBusWidth: 25 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsPrototype + categories: [ HideSpawnMenu ] + name: prototype modsuit gauntlets + description: A pair of gauntlets from a prototype MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/prototype.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/prototype.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetPrototype + categories: [ HideSpawnMenu ] + name: prototype modsuit helmet + description: A helmet from a prototype MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/prototype.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/prototype.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplatePrototype + categories: [ HideSpawnMenu ] + name: prototype modsuit chestplate + description: A chestplate from a prototype MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/prototype.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/prototype.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsPrototype + categories: [ HideSpawnMenu ] + name: prototype modsuit boots + description: A pair of boots from a prototype MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/prototype.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/prototype.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/rescue.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/rescue.yml new file mode 100644 index 00000000000..8da1323fc46 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/rescue.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitRescue + name: rescue modsuit control + description: The controller for a rescue model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/rescue.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetRescue + gloves: ClothingModsuitGauntletsRescue + outerClothing: ClothingModsuitChestplateRescue + shoes: ClothingModsuitBootsRescue + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsRescue + categories: [ HideSpawnMenu ] + name: rescue modsuit gauntlets + description: A pair of gauntlets from a rescue MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/rescue.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/rescue.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetRescue + categories: [ HideSpawnMenu ] + name: rescue modsuit helmet + description: A helmet from a rescue MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/rescue.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/rescue.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateRescue + categories: [ HideSpawnMenu ] + name: rescue modsuit chestplate + description: A chestplate from a rescue MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/rescue.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/rescue.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsRescue + categories: [ HideSpawnMenu ] + name: rescue modsuit boots + description: A pair of boots from a rescue MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/rescue.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/rescue.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/research.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/research.yml new file mode 100644 index 00000000000..7fe9f3fadce --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/research.yml @@ -0,0 +1,101 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitResearch + name: research modsuit control + description: The controller for a research model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/research.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetResearch + gloves: ClothingModsuitGauntletsResearch + outerClothing: ClothingModsuitChestplateResearch + shoes: ClothingModsuitBootsResearch + - type: ModuleStorage + maxBusWidth: 20 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsResearch + categories: [ HideSpawnMenu ] + name: research modsuit gauntlets + description: A pair of gauntlets from a research MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/research.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/research.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetResearch + categories: [ HideSpawnMenu ] + name: research modsuit helmet + description: A helmet from a research MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/research.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/research.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateResearch + categories: [ HideSpawnMenu ] + name: research modsuit chestplate + description: A chestplate from a research MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/research.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/research.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsResearch + categories: [ HideSpawnMenu ] + name: research modsuit boots + description: A pair of boots from a research MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/research.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/research.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/responsory.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/responsory.yml new file mode 100644 index 00000000000..57f24e84fa1 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/responsory.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitResponsory + name: responsory modsuit control + description: The controller for a responsory model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/responsory.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetResponsory + gloves: ClothingModsuitGauntletsResponsory + outerClothing: ClothingModsuitChestplateResponsory + shoes: ClothingModsuitBootsResponsory + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsResponsory + categories: [ HideSpawnMenu ] + name: responsory modsuit gauntlets + description: A pair of gauntlets from a responsory MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/responsory.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/responsory.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetResponsory + categories: [ HideSpawnMenu ] + name: responsory modsuit helmet + description: A helmet from a responsory MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/responsory.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/responsory.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateResponsory + categories: [ HideSpawnMenu ] + name: responsory modsuit chestplate + description: A chestplate from a responsory MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/responsory.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/responsory.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsResponsory + categories: [ HideSpawnMenu ] + name: responsory modsuit boots + description: A pair of boots from a responsory MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/responsory.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/responsory.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/safeguard.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/safeguard.yml new file mode 100644 index 00000000000..6f9ac8f2dee --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/safeguard.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitSafeguard + name: safeguard modsuit control + description: The controller for a safeguard model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/safeguard.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetSafeguard + gloves: ClothingModsuitGauntletsSafeguard + outerClothing: ClothingModsuitChestplateSafeguard + shoes: ClothingModsuitBootsSafeguard + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsSafeguard + categories: [ HideSpawnMenu ] + name: safeguard modsuit gauntlets + description: A pair of gauntlets from a safeguard MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/safeguard.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/safeguard.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetSafeguard + categories: [ HideSpawnMenu ] + name: safeguard modsuit helmet + description: A helmet from a safeguard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/safeguard.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "DarkOrange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/safeguard.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateSafeguard + categories: [ HideSpawnMenu ] + name: safeguard modsuit chestplate + description: A chestplate from a safeguard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsSafeguard + categories: [ HideSpawnMenu ] + name: safeguard modsuit boots + description: A pair of boots from a safeguard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/safeguard.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/safeguard.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/security.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/security.yml new file mode 100644 index 00000000000..eb414677d84 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/security.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitSecurity + name: security modsuit control + description: The controller for a security model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/security.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetSecurity + gloves: ClothingModsuitGauntletsSecurity + outerClothing: ClothingModsuitChestplateSecurity + shoes: ClothingModsuitBootsSecurity + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsSecurity + categories: [ HideSpawnMenu ] + name: security modsuit gauntlets + description: A pair of gauntlets from a security MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/security.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/security.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetSecurity + categories: [ HideSpawnMenu ] + name: security modsuit helmet + description: A helmet from a security MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/security.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Orange" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/security.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateSecurity + categories: [ HideSpawnMenu ] + name: security modsuit chestplate + description: A chestplate from a security MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/security.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/security.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsSecurity + categories: [ HideSpawnMenu ] + name: security modsuit boots + description: A pair of boots from a security MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/security.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/security.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/standard.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/standard.yml new file mode 100644 index 00000000000..81e6b025b37 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/standard.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitStandard + name: standard modsuit control + description: The controller for a standard model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/standard.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetStandard + gloves: ClothingModsuitGauntletsStandard + outerClothing: ClothingModsuitChestplateStandard + shoes: ClothingModsuitBootsStandard + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsStandard + categories: [ HideSpawnMenu ] + name: standard modsuit gauntlets + description: A pair of gauntlets from a standard MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/standard.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/standard.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetStandard + categories: [ HideSpawnMenu ] + name: standard modsuit helmet + description: A helmet from a standard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/standard.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Cyan" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/standard.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateStandard + categories: [ HideSpawnMenu ] + name: standard modsuit chestplate + description: A chestplate from a standard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/standard.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/standard.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsStandard + categories: [ HideSpawnMenu ] + name: standard modsuit boots + description: A pair of boots from a standard MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/standard.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/standard.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/syndicate.yml b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/syndicate.yml new file mode 100644 index 00000000000..90d7f85d64b --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Clothing/Modsuits/syndicate.yml @@ -0,0 +1,104 @@ +- type: entity + parent: ClothingModsuitBase + id: ClothingModsuitSyndicate + name: syndicate modsuit control + description: The controller for a syndicate model MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Back/syndicate.rsi + layers: + - state: control + - state: control-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: ToggleableClothing + requiredSlot: + - back + clothingPrototypes: + head: ClothingModsuitHelmetSyndicate + gloves: ClothingModsuitGauntletsSyndicate + outerClothing: ClothingModsuitChestplateSyndicate + shoes: ClothingModsuitBootsSyndicate + - type: ModuleStorage + maxBusWidth: 15 + +- type: entity + parent: ClothingModsuitGauntletsBase + id: ClothingModsuitGauntletsSyndicate + categories: [ HideSpawnMenu ] + name: syndicate modsuit gauntlets + description: A pair of gauntlets from a syndicate MODsuit. TODO + components: + - type: FingerprintMask + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Hands/syndicate.rsi + layers: + - state: gauntlets + - state: gauntlets-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Hands/syndicate.rsi + +- type: entity + parent: ClothingModsuitHelmetBaseExo + id: ClothingModsuitHelmetSyndicate + categories: [ HideSpawnMenu ] + name: syndicate modsuit helmet + description: A helmet from a syndicate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Head/syndicate.rsi + layers: + - state: helmet + - state: helmet-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: SealableClothingVisuals + clothingVisuals: + head: + - state: equipped-HELMET-sealed + - state: equipped-HELMET-visor + shader: unshaded + color: "Green" + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Head/syndicate.rsi + +- type: entity + parent: ClothingModsuitChestplateBaseExo + id: ClothingModsuitChestplateSyndicate + categories: [ HideSpawnMenu ] + name: syndicate modsuit chestplate + description: A chestplate from a syndicate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi + layers: + - state: chestplate + - state: chestplate-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi + +- type: entity + parent: ClothingModsuitBootsBase + id: ClothingModsuitBootsSyndicate + categories: [ HideSpawnMenu ] + name: syndicate modsuit boots + description: A pair of boots from a syndicate MODsuit. TODO + components: + - type: Sprite + sprite: _DEN/Clothing/Modsuits/Shoes/syndicate.rsi + layers: + - state: boots + - state: boots-sealed + visible: false + shader: unshaded + map: [ "sealedLayer" ] + - type: Clothing + sprite: _DEN/Clothing/Modsuits/Shoes/syndicate.rsi diff --git a/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/modules.yml b/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/modules.yml new file mode 100644 index 00000000000..84aba2a8f3e --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/modules.yml @@ -0,0 +1,699 @@ +- type: entity + abstract: true + parent: BaseItem + id: BaseModsuitModule + components: + - type: Module + - type: ModsuitModule + +- type: entity + abstract: true + parent: BaseModsuitModule + id: ModsuitModuleWidth1 + components: + - type: Item + size: Small + - type: Module + busWidth: 1 + texture: "/Textures/_DEN/Interface/Modules/module-width-1.png" + +- type: entity + abstract: true + parent: BaseModsuitModule + id: ModsuitModuleWidth2 + components: + - type: Item + size: Normal + - type: Module + busWidth: 2 + texture: "/Textures/_DEN/Interface/Modules/module-width-2.png" + +- type: entity + abstract: true + parent: BaseModsuitModule + id: ModsuitModuleWidth3 + components: + - type: Item + size: Large + - type: Module + busWidth: 3 + texture: "/Textures/_DEN/Interface/Modules/module-width-3.png" + +- type: entity + abstract: true + parent: BaseModsuitModule + id: ModsuitModuleWidth4 + components: + - type: Item + size: Huge + - type: Module + busWidth: 4 + texture: "/Textures/_DEN/Interface/Modules/module-width-4.png" + +- type: entity + abstract: true + id: ModsuitModuleTogglePower + components: + - type: ModuleTogglePowerDraw + - type: ItemToggle + onUse: false + onActivate: false + - type: ModulePowerDraw + +- type: entity + parent: ModsuitModuleWidth2 + id: ModsuitModuleBrokenWidth2 + name: broken module + description: This module is cracked clean through and no longer functions... + components: + - type: Sprite + sprite: Objects/Materials/Scrap/generic.rsi + layers: + - state: glass-1 + - type: Module + texture: "/Textures/_DEN/Interface/Modules/module-width-2-broken.png" + - type: Tag + tags: + - Trash + +- type: entity + parent: ModsuitModuleWidth2 + id: ModsuitModuleEmpProtection + name: emp protection module + description: A module which will absorb the charge from an EMP in order to prevent it causing physical damage to the MODsuit. Only works once. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: empshield_module + - type: ModsuitEmpProtectionModule + broken: ModsuitModuleBrokenWidth2 + +- type: entity + parent: ModsuitModuleWidth1 + id: ModsuitModuleEatingApparatus + name: eating apparatus module + description: A module which projects a barrier in front of the mouth, allowing for eating while retaining pressure and atmosphere protection. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: apparatus + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModsuitPassiveComponentModule + blockOnSeal: + - type: IngestionBlocker + +- type: entity + parent: ModsuitModuleWidth2 + id: ModsuitModuleArmorBooster + name: armor booster module + description: A collection of armored plates that greatly increase the defensive capabilities of the modsuit, but prevent it from sealing enough to protect the user from the vacuum of space. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: armorbooster + - type: Module + siblingBlacklist: + tags: + - ArmorModule + - type: Tag + tags: + - ArmorModule + - type: ModsuitPartAttachedModule + slots: + - head + - outerClothing + - type: ModsuitArmorModule + slotModifiers: + outerClothing: + coefficients: + Blunt: 0.6 + Slash: 0.6 + Piercing: 0.6 + Heat: 0.8 + Caustic: 0.7 + head: + coefficients: + Blunt: 0.9 + Slash: 0.9 + Piercing: 0.9 + Heat: 0.9 + - type: ModsuitExplosionResistanceModule + slotCoefficients: + outerClothing: 0.6 + head: 0.9 + - type: ModsuitPassiveComponentModule + blockOnSeal: + - type: PressureProtection + - type: TemperatureProtection + +- type: entity + parent: ModsuitModuleWidth1 + id: ModsuitModuleElectricalInsulation + name: electrical insulation module + description: A module which allows the modsuit gloves to be insulated against electrical shocks while sealed. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: quickcarry + - type: ModsuitPartAttachedModule + slots: + - gloves + - type: ModsuitPassiveComponentModule + addOnSeal: + - type: Insulated + +- type: entity + parent: ModsuitModuleWidth4 + id: ModsuitModuleHolster + name: holster module + description: A module which allows the modsuit to store items worn in suit storage internally when retracted. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: holster_module + - type: ModsuitPartAttachedModule + slots: + - outerClothing + - type: ModsuitHolsterModule + - type: ModulePowerDraw + drawRate: 0.0 + useCharge: 5.0 + +- type: entity + parent: [ ModsuitModuleWidth2, ModsuitModuleTogglePower ] + id: ModsuitModuleNoSlip + name: no slip module + description: A module which provides the modsuit boots incredible grip, preventing slipping. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: noslip + - type: ModulePowerDraw + drawRate: 0.2 + - type: ModsuitPartAttachedModule + slots: + - shoes + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: NoSlip + +- type: entity + parent: [ModsuitModuleWidth2, ModsuitModuleTogglePower] + id: ModsuitModuleRadiationShielding + name: radiation shielding module + description: A module which allows the modsuit to block radiation from reaching the wearer. Requires a deployed chestplate. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: radshield_module + - type: ModsuitPartAttachedModule + slots: + - outerClothing + - type: ModulePowerDraw + drawRate: 0.1 + - type: ModsuitArmorModule + modifiers: + coefficients: + Radiation: 0.0 + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleThermalRegulator + name: thermal regulator module + description: A module which allows the modsuit to insulate the user from extreme temperatures and fire. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: regulator_module + - type: ModsuitPartAttachedModule + needsAll: false + slots: + - outerClothing + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: TemperatureProtection + heatingCoefficient: 0.01 + coolingCoefficient: 0.01 + - type: FireProtection + reduction: 0.8 + +- type: entity + parent: [ModsuitModuleWidth2, ModsuitModuleTogglePower] + id: ModsuitModuleMagneticStabilizer + name: magnetic stabilizer module + description: A module containing powerful electromagnets which integrate with the modsuit's boots. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: magnet_module + - type: Module + siblingBlacklist: + tags: + - MagbootModule + - type: Tag + tags: + - MagbootModule + - type: ModulePowerDraw + drawRate: 0.5 + - type: ModsuitModuleActionGrant + actions: + - ActionToggleModsuitModule + - type: ModsuitModuleTogglePart + - type: ModsuitPartAttachedModule + slots: + - shoes + - type: ModsuitPassiveComponentModule + addOnSeal: + - type: ItemToggle + onUse: false + onActivate: false + - type: Magboots + - type: ClothingSpeedModifier + walkModifier: 0.8 + sprintModifier: 0.8 + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleFlashlight + name: flashlight module + description: A module that installs a powerful flashlight on the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: flashlight_module + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleActionGrant + actions: + - ActionToggleModsuitModule + - type: ModsuitPartAttachedModule + slots: + - head + - type: ItemTogglePointLight + - type: PointLight + enabled: false + radius: 5 + energy: 3 + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + +- type: entity + parent: [ModsuitModuleWidth1] + id: ModsuitModuleBikeHorn + name: bike horn module + description: A module that installs a bike horn into your MODsuit controller. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: honk_module + - type: ModsuitModuleActionGrant + actions: + - ActionModsuitBikeHorn + - type: ModsuitPartAttachedModule + slots: + - back + - type: ActivateUsingAction + - type: UseDelay + delay: 0.5 + - type: EmitSoundOnUse + sound: &SoundBikeHorn + collection: BikeHorn + params: + variation: 0.125 + - type: EmitSoundOnLand + sound: *SoundBikeHorn + - type: EmitSoundOnActivate + sound: *SoundBikeHorn + - type: EmitSoundOnCollide + sound: *SoundBikeHorn + +- type: entity + parent: [ModsuitModuleWidth2] + id: ModsuitModuleHealthAnalyzer + name: health analyzer module + description: A module that provides a built in health analyzer in the modsuits gauntlets for reading the vitals of patients. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: health_module + - type: ModsuitPartAttachedModule + slots: + - gloves + - type: InteractUsingAction + - type: ModsuitModuleActionGrant + actions: + - ActionHealthAnalyzerScan + - type: HealthAnalyzer + - type: UserInterface + interfaces: + enum.HealthAnalyzerUiKey.Key: + type: HealthAnalyzerBoundUserInterface + +- type: entity + parent: [ModsuitModuleWidth1] + id: ModsuitModuleInjector + name: injector module + description: A module that provides a jet injector built into the wrist of the MODsuit's gauntlets. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: injector_module + - type: ModsuitPartAttachedModule + slots: + - gloves + - type: ModsuitRelayVerbs + - type: ModsuitModuleActionGrant + actions: + - ActionInjectorUse + - type: InteractUsingAction + - type: UseDelay + delay: 1.5 + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 15 + - type: RelayedSolutionExamine + solution: hypospray + - type: ExaminableSolution + solution: hypospray + exactVolume: true + - type: Spillable + solution: hypospray + - type: Injector + solutionName: hypospray + ignoreClosed: false + currentTransferAmount: null + activeModeProtoId: ModsuitInjectorDynamicMode + allowedModes: + - ModsuitInjectorDynamicMode + - ModsuitInjectorInjectMode + +- type: entity + parent: [ ModsuitModuleWidth2 ] + id: ModsuitModuleDefibrillator + name: defibrillator module + description: A module that integrates defibrillator paddles into the hands of the MODsuit gauntlets. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: defibrillator + - type: ModsuitPartAttachedModule + slots: + - gloves + - type: InteractUsingAction + - type: ModsuitModuleActionGrant + actions: + - ActionDefibrillatorUse + - type: UseDelay + delay: 3.0 + - type: ItemToggle + onUse: false + onActivate: false + - type: Defibrillator + zapHeal: + types: + Asphyxiation: -40 + +- type: entity + parent: [ ModsuitModuleWidth2, ModsuitModuleTogglePower ] + id: ModsuitModuleKinesis + name: kinesis module + description: A module that allows the user to project + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: kinesismodule + - type: ModsuitPartAttachedModule + slots: + - gloves + - type: InteractInWorldAction + - type: ModsuitModuleActionGrant + actions: + - ActionKinesisUse + - type: UseDelay + delay: 3.0 + - type: ItemToggle + onUse: false + onActivate: false + - type: ModulePowerDraw + drawRate: 1.5 + - type: ForceGun + frequency: 15 + dampingRatio: 4 + massLimit: 50 + lineColor: "#18a2d5" + soundLaunch: + path: /Audio/Weapons/soup.ogg + params: + volume: 2 + +- type: entity + parent: MiningDrill + id: ModsuitMiningDrill + name: modsuit mining drill + description: The collapsable drill from a MODsuit module, consumes power on use. + categories: [HideSpawnMenu] + components: + - type: ConsumeModsuitPowerOnMelee + drainOnMelee: 1.0 + +- type: entity + parent: [ModsuitModuleWidth2] + id: ModsuitModuleMiningDrill + name: drill module + description: A module that incorporates a collapsible drill into the MODsuit for mining. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: drill_module + - type: ModsuitModuleActionGrant + actions: + - ActionRetractableItemModsuitDrill + - type: ModsuitPartAttachedModule + slots: + - gloves + +- type: entity + parent: [ModsuitModuleWidth4, ModsuitModuleTogglePower] + id: ModsuitModuleCloak + name: cloaking module + description: An advanced module which allows the user to become invisible. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: advancedcloak + - type: ModsuitPartAttachedModule + slots: + - outerClothing + - head + - type: ModulePowerDraw + drawRate: 2.0 + - type: ModsuitModuleToggleParentComponents + addOnToggle: + - type: Stealth + minVisibility: 0.1 + lastVisibility: 0.1 + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleGPS + name: gps module + description: A module which adds a built-in gps to the modsuit controller. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: gps_module + - type: ModsuitPartAttachedModule + slots: + - back + - type: ModulePowerDraw + drawRate: 0.2 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: HandheldGPS + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleMedicalVisor + name: medical visor module + description: A module which provides a built in medical hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: medhud_visor + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: ShowHealthBars + - type: ShowHealthIcons + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleDiagnosticVisor + name: diagnostic visor module + description: A module which provides a built in diagnostic hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: diaghud_visor + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: ShowHealthBars + damageContainers: + - Inorganic + - Silicon + - type: ShowAccessReaderSettings + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleSecurityVisor + name: security visor module + description: A module which provides a built in security hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: sechud_visor + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: ShowContrabandDetails + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleOreScanner + name: ore scanner visor module + description: A module which provides a built in ore scanner hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: meson_visor + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: MiningScanner + range: 10 + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleTrayScanner + name: t-ray scanner visor module + description: A module which provides a built in t-ray scanner hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: traymodule + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModsuitModuleTogglePart + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: TrayScanner + - type: ItemToggle + onUse: false + onActivate: false + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleThermal + name: thermal visor module + description: A module which provides a built in thermal hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: thermal_visor + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: ThermalSight + +- type: entity + parent: [ModsuitModuleWidth1, ModsuitModuleTogglePower] + id: ModsuitModuleReagentScanner + name: reagent scanner visor module + description: A module which provides a built in thermal hud to the modsuit helmet. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: scanner_module + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModulePowerDraw + drawRate: 0.3 + - type: ModsuitModuleTogglePartComponents + addOnToggle: + - type: SolutionScanner + +- type: entity + parent: [ModsuitModuleWidth1] + id: ModsuitModuleWeldingProtection + name: welding protection visor module + description: A module which provides a tinted shielding layer protecting from welder arcs. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: weldingprot + - type: ModsuitPartAttachedModule + slots: + - head + - type: ModsuitPassiveComponentModule + addOnSeal: + - type: EyeProtection \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/storage.yml b/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/storage.yml new file mode 100644 index 00000000000..00ca9b0342e --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Objects/ModsuitModules/storage.yml @@ -0,0 +1,100 @@ +- type: entity + parent: ModsuitModuleWidth4 + id: ModsuitStorageModuleBluespace + name: bluespace storage module + description: A storage module utilizing bluespace technology. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: bluespace_storage + - type: Module + siblingBlacklist: + tags: + - StorageModule + - type: Tag + tags: + - StorageModule + - type: ModsuitStorageModule + storageComponent: + - type: Storage + grid: + - 0,0,19,9 + maxItemSize: Huge + +- type: entity + parent: ModsuitModuleWidth4 + id: ModsuitStorageModule + name: storage module + description: A storage module for a modsuit. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: mod_storage + - type: Module + siblingBlacklist: + tags: + - StorageModule + - type: Tag + tags: + - StorageModule + - type: ModsuitStorageModule + storageComponent: + - type: Storage + grid: + - 0,0,1,3 + - 3,0,5,3 + - 7,0,7,3 + maxItemSize: Huge + +- type: entity + parent: ModsuitModuleWidth4 + id: ModsuitStorageModuleLarge + name: large storage module + description: An expanded storage module for a modsuit. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: large_storage + - type: Module + siblingBlacklist: + tags: + - StorageModule + - type: Tag + tags: + - StorageModule + - type: ModsuitStorageModule + storageComponent: + - type: Storage + grid: + - 0,0,0,3 + - 2,0,8,3 + maxItemSize: Huge + +- type: entity + parent: ModsuitModuleWidth4 + id: ModsuitStorageModuleSyndicate + name: syndicate storage module + description: An expanded storage module for a modsuit. + components: + - type: Sprite + sprite: _DEN/Objects/ModsuitModules/modules.rsi + layers: + - state: syndie_storage + - type: Module + siblingBlacklist: + tags: + - StorageModule + - type: Tag + tags: + - StorageModule + - type: ModsuitStorageModule + storageComponent: + - type: Storage + grid: + - 0,0,6,4 + - 8,0,8,1 + - 8,3,8,4 + maxItemSize: Huge \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/SoundCollections/drill.yml b/Resources/Prototypes/_DEN/SoundCollections/drill.yml new file mode 100644 index 00000000000..c331fdf25ef --- /dev/null +++ b/Resources/Prototypes/_DEN/SoundCollections/drill.yml @@ -0,0 +1,4 @@ +- type: soundCollection + id: Drill + files: + - "/Audio/Items/drill_hit.ogg" \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/Wires/layouts.yml b/Resources/Prototypes/_DEN/Wires/layouts.yml new file mode 100644 index 00000000000..4930801b6b7 --- /dev/null +++ b/Resources/Prototypes/_DEN/Wires/layouts.yml @@ -0,0 +1,7 @@ +- type: wireLayout + id: ModControl + dummyWires: 2 + wires: + - !type:SealableWireAction + - !type:InterfaceWireAction + \ No newline at end of file diff --git a/Resources/Prototypes/_DEN/tags.yml b/Resources/Prototypes/_DEN/tags.yml index 55ef7a0247a..88d98881607 100644 --- a/Resources/Prototypes/_DEN/tags.yml +++ b/Resources/Prototypes/_DEN/tags.yml @@ -70,5 +70,14 @@ - type: Tag id: TeddyRibbon # Ribbon slot for teddy bears +- type: Tag + id: StorageModule # Storage modules for modsuits + +- type: Tag + id: MagbootModule # Magboot modules for modsuits + +- type: Tag + id: ArmorModule # Armor modules for modsuits + - type: Tag id: XenoQueen # Xeno Queen tag for hivemind diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control-sealed.png new file mode 100644 index 00000000000..9f2bb261d35 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control.png new file mode 100644 index 00000000000..9e5c2c314a8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..44bf4e075ce Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..459fb5ca68c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/advanced.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control-sealed.png new file mode 100644 index 00000000000..1104caff56b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control.png new file mode 100644 index 00000000000..3a85eec9415 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..0b8755325ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..b8bf6e65040 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/apocryphal.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control-sealed.png new file mode 100644 index 00000000000..f5fa5606461 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control.png new file mode 100644 index 00000000000..21e7928a566 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..fa69e8bb726 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..50b7a4115af Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/asteroid.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control-sealed.png new file mode 100644 index 00000000000..21e099f1a4d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control.png new file mode 100644 index 00000000000..682a01c71d0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..f423c3b20ae Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..6bce998ad33 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/atmospheric.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control-sealed.png new file mode 100644 index 00000000000..82f0df2096f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control.png new file mode 100644 index 00000000000..0a151eb5c53 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..cd9790533a8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..d7b676bb0bc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/meta.json new file mode 100644 index 00000000000..7f7d92c6647 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/chrono.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control-sealed.png new file mode 100644 index 00000000000..1c7625a41da Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control.png new file mode 100644 index 00000000000..d75afb0b008 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..69ab07758a1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..1cf1ac0aae3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/civilian.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control-sealed.png new file mode 100644 index 00000000000..f5fa5606461 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control.png new file mode 100644 index 00000000000..e3e3d6495ab Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..da47b915a67 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..b1657d8cbe2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corporate.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control-sealed.png new file mode 100644 index 00000000000..8076a6d8bb6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control.png new file mode 100644 index 00000000000..ee4c549a99c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..220467349f4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..4fc1d89773f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/corpsman.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control-sealed.png new file mode 100644 index 00000000000..e6dd0e6e675 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control.png new file mode 100644 index 00000000000..63919b499f5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..10cd74a6425 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..d9a42d15b7e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/cosmohonk.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control-sealed.png new file mode 100644 index 00000000000..ba58dabf692 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control.png new file mode 100644 index 00000000000..50a8715aa19 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..904cf50aa88 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..d2162c371fb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/debug.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control-sealed.png new file mode 100644 index 00000000000..84f390577b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control.png new file mode 100644 index 00000000000..8975bf7b7ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..e4891c2d71c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..32109e5a589 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/elite.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control-sealed.png new file mode 100644 index 00000000000..aa386960eb4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control.png new file mode 100644 index 00000000000..1016bba2aeb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..a5ea948b89c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..44e9ca15150 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/enchanted.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control-sealed.png new file mode 100644 index 00000000000..ef151fc3dc1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control.png new file mode 100644 index 00000000000..eef1024e1b8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..74583f50969 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..04604b38689 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/engineering.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control-sealed.png new file mode 100644 index 00000000000..26034c29453 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control.png new file mode 100644 index 00000000000..015eb4a20e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..0b8755325ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..b8bf6e65040 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/glitch.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control-sealed.png new file mode 100644 index 00000000000..f03cec8a107 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control.png new file mode 100644 index 00000000000..fda7eba787c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..17a3e0ec87b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..643f7fcae45 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/honkerative.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control-sealed.png new file mode 100644 index 00000000000..7e92cbfe848 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control.png new file mode 100644 index 00000000000..f102efb11f1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..40ba5aa1e22 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..0b8755325ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/infiltrator.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control-sealed.png new file mode 100644 index 00000000000..8ebe3210239 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control.png new file mode 100644 index 00000000000..90d71342752 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..44a3db356f4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..a2ca89ffd27 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/inquisitor.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control-sealed.png new file mode 100644 index 00000000000..b43291af1a2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control.png new file mode 100644 index 00000000000..545bc6e0c75 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..81a6cfdedbf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..e903476e7b5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/interdyne.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control-sealed.png new file mode 100644 index 00000000000..2a721c89e22 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control.png new file mode 100644 index 00000000000..b53224960f0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..54bbc401932 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..6c52f0d2fab Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/loader.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control-sealed.png new file mode 100644 index 00000000000..c224f286ccd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control.png new file mode 100644 index 00000000000..cb3598b4126 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..8b100cad739 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..bf6ee86c94d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/magnate.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control-sealed.png new file mode 100644 index 00000000000..ca46a11ecd9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control.png new file mode 100644 index 00000000000..acb07d91093 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..75bb93a2de7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..aa61a1c7894 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/medical.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control-sealed.png new file mode 100644 index 00000000000..f5fa5606461 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control.png new file mode 100644 index 00000000000..365cfc2cb58 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..b1c214ee777 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..a774e592901 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/mining.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control-sealed.png new file mode 100644 index 00000000000..7e92cbfe848 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control.png new file mode 100644 index 00000000000..81b0f859d7c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..d559354c58b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..b0bfce7aa2e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/ninja.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control-sealed.png new file mode 100644 index 00000000000..075051429b3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control.png new file mode 100644 index 00000000000..65523ed4a0c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..a2a4640f13d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..dc8dd60bd36 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/prototype.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control-sealed.png new file mode 100644 index 00000000000..ca46a11ecd9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control.png new file mode 100644 index 00000000000..dd01500c8c3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..75bb93a2de7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..75391b7cd26 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/rescue.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control-sealed.png new file mode 100644 index 00000000000..ca46a11ecd9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control.png new file mode 100644 index 00000000000..9a8e6bdc105 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..5a4f48ea252 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..a3087aed317 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/research.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control-sealed.png new file mode 100644 index 00000000000..26034c29453 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control.png new file mode 100644 index 00000000000..015eb4a20e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..a715e1e6553 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..5451a5db530 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/responsory.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control-sealed.png new file mode 100644 index 00000000000..fa0d55327b1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control.png new file mode 100644 index 00000000000..d6a4dd572d3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..3fef0e0e679 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..b34d4cd6c70 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/safeguard.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control-sealed.png new file mode 100644 index 00000000000..fa0d55327b1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control.png new file mode 100644 index 00000000000..6a7ab8c0368 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..3fef0e0e679 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..8fd64b6d199 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/security.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control-sealed.png new file mode 100644 index 00000000000..19ae72eb09e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control.png new file mode 100644 index 00000000000..7d3c910ceed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..5b2afcb79d2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..9fea78a1ef6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/standard.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control-sealed.png new file mode 100644 index 00000000000..7e92cbfe848 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control.png new file mode 100644 index 00000000000..fda7eba787c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/control.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK-sealed.png new file mode 100644 index 00000000000..0cf43f3aa73 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK.png b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..643f7fcae45 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/meta.json new file mode 100644 index 00000000000..aeec0175210 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Back/syndicate.rsi/meta.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "control" + }, + { + "name": "control-sealed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-BACKPACK-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..b8e42486e59 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND.png new file mode 100644 index 00000000000..e78c8675063 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..7c7011ab3bf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets.png new file mode 100644 index 00000000000..8cb0e07a263 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/advanced.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..48e8a82b9e8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND.png new file mode 100644 index 00000000000..57cf7ff3468 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..a5bedaec084 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets.png new file mode 100644 index 00000000000..bdf94e1a192 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/apocryphal.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..057f57ef34d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND.png new file mode 100644 index 00000000000..974feec1ce7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..04368759038 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets.png new file mode 100644 index 00000000000..a24a71dc66a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/asteroid.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..92c0c7af50c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND.png new file mode 100644 index 00000000000..49ab1a8605d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..389ecac9d94 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets.png new file mode 100644 index 00000000000..8a01846ac70 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/atmospheric.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..298be9c5644 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND.png new file mode 100644 index 00000000000..eedb53bdd6b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..532da437160 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets.png new file mode 100644 index 00000000000..a53e1ffac66 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/chrono.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..c2847f6a33e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND.png new file mode 100644 index 00000000000..0e7a86efd06 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..3d09baec255 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets.png new file mode 100644 index 00000000000..8f66d4a30ea Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/civilian.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..0109799d019 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND.png new file mode 100644 index 00000000000..31baf1f777f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..fd41a7a0d83 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets.png new file mode 100644 index 00000000000..1518956b2a5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corporate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..67581fae1dd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND.png new file mode 100644 index 00000000000..c1f6b492ad2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..4e591e98994 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets.png new file mode 100644 index 00000000000..b57d5a8d37b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/corpsman.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..b520285ddbf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND.png new file mode 100644 index 00000000000..639c2deb079 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..5a90e25df42 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets.png new file mode 100644 index 00000000000..98af996ffdd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/cosmohonk.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..afe06e9a606 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND.png new file mode 100644 index 00000000000..6a625c1aaab Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..79a5516888d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets.png new file mode 100644 index 00000000000..4a48bf13328 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/debug.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..e5c214be55c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND.png new file mode 100644 index 00000000000..c248b7d6dec Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..a884dbedb15 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets.png new file mode 100644 index 00000000000..c21bf2bbca2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/elite.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..95ffce49cfa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND.png new file mode 100644 index 00000000000..60a1124cd5f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..7eaba2f57bc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets.png new file mode 100644 index 00000000000..7ac3823bd44 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/enchanted.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..55947cb4746 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND.png new file mode 100644 index 00000000000..926ada9e8c4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..1aaf95b39bb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets.png new file mode 100644 index 00000000000..96d64dbea07 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/engineering.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..72f177fcb7f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND.png new file mode 100644 index 00000000000..00acf1ce980 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..3eae4116b78 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets.png new file mode 100644 index 00000000000..251390681c1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/glitch.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..ca12f28500a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND.png new file mode 100644 index 00000000000..ad3034b0248 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..7399f220345 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets.png new file mode 100644 index 00000000000..7dce64337ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/honkerative.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..86636686ee2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND.png new file mode 100644 index 00000000000..86636686ee2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..0bb6ec4621a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets.png new file mode 100644 index 00000000000..40d38746bdd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/infiltrator.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..fd7c7c0073c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND.png new file mode 100644 index 00000000000..294f59643a0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..74e8e76f05b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets.png new file mode 100644 index 00000000000..393ddd68a0e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/inquisitor.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..2a305d94158 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND.png new file mode 100644 index 00000000000..08a6cce20a6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..e97156583db Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets.png new file mode 100644 index 00000000000..50590e318d1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/interdyne.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..2bdfe3cbdfa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND.png new file mode 100644 index 00000000000..5e0e5cc819e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..8c69a842262 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets.png new file mode 100644 index 00000000000..b1bfc508b05 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/loader.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..3dbe7018c72 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND.png new file mode 100644 index 00000000000..5713d886a35 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..e86a7fb015d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets.png new file mode 100644 index 00000000000..6fbf7f5da0f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/magnate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..6fca5e2c4fa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND.png new file mode 100644 index 00000000000..dcf0d1f7887 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..777d3acda9c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets.png new file mode 100644 index 00000000000..113a3285ea8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/medical.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..e063a345044 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND.png new file mode 100644 index 00000000000..8413fe9e582 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..b8dbfa6e06b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets.png new file mode 100644 index 00000000000..1fbf2dff0ff Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/mining.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..24d17f15fc4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND.png new file mode 100644 index 00000000000..dab273c13b8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..7d69c7c4e6d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets.png new file mode 100644 index 00000000000..1b145ba6008 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/ninja.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..b20bc126462 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND.png new file mode 100644 index 00000000000..d7778c95764 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..0a8b227783d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets.png new file mode 100644 index 00000000000..eea4ecd6d06 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/prototype.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..efad7be6d5b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND.png new file mode 100644 index 00000000000..2f75dd5ed2b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..63e3af6efea Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets.png new file mode 100644 index 00000000000..b909cd6e886 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/rescue.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..8186f8fea60 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND.png new file mode 100644 index 00000000000..c56023367d5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..1f8b9b4737f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets.png new file mode 100644 index 00000000000..10363fe0b9a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/research.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..e989947d8b4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND.png new file mode 100644 index 00000000000..0a53f0d8983 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..3eae4116b78 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets.png new file mode 100644 index 00000000000..251390681c1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/responsory.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..6fd75c245aa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND.png new file mode 100644 index 00000000000..44ec65da93f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..834f992df65 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets.png new file mode 100644 index 00000000000..0b56c463ec4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/safeguard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..631ad65fef9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND.png new file mode 100644 index 00000000000..89c0d2ae25a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..d6e6976a6ad Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets.png new file mode 100644 index 00000000000..cde9b59adaf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/security.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..89dfeefab45 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND.png new file mode 100644 index 00000000000..b0fc7a1964c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..09f6f79e987 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets.png new file mode 100644 index 00000000000..c99ace86af1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/standard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND-sealed.png new file mode 100644 index 00000000000..ca12f28500a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND.png new file mode 100644 index 00000000000..ad3034b0248 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/equipped-HAND.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets-sealed.png new file mode 100644 index 00000000000..7399f220345 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets.png b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets.png new file mode 100644 index 00000000000..7dce64337ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/gauntlets.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/meta.json new file mode 100644 index 00000000000..88a00369478 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Hands/syndicate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "gauntlets" + }, + { + "name": "gauntlets-sealed" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "equipped-HAND-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..c001d093601 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..982f918e3b0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..2df908ccbea Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet-sealed.png new file mode 100644 index 00000000000..6bfbc78dd25 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet.png new file mode 100644 index 00000000000..32eb011a586 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/advanced.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..11bcab7e9d4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..808c23e0f1a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..c51c5b0cfee Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet-sealed.png new file mode 100644 index 00000000000..28aaeaa72b8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet.png new file mode 100644 index 00000000000..9a921eb2fee Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/apocryphal.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..ec879b73e92 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..4ccf93f11b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..f554cdcea4b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet-sealed.png new file mode 100644 index 00000000000..cdb311c62d1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet.png new file mode 100644 index 00000000000..4f86a5bfa70 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/asteroid.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..99918f60cd4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..76a9641df37 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..d87b1087a45 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet-sealed.png new file mode 100644 index 00000000000..017736eddf9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet.png new file mode 100644 index 00000000000..b3813184b61 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/atmospheric.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..1c98d045d64 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..0e17b99bdb9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..393b69bf2c1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet-sealed.png new file mode 100644 index 00000000000..dd381a5db5a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet.png new file mode 100644 index 00000000000..1336d7ddc1c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/chrono.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..40840563f4d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..376e75dfe61 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..8a67463bf0f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet-sealed.png new file mode 100644 index 00000000000..49de4b720fe Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet.png new file mode 100644 index 00000000000..687d29e79d8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/civilian.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..977e0214835 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..4ccf93f11b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..2e24712f75c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet-sealed.png new file mode 100644 index 00000000000..43ec14dbd04 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet.png new file mode 100644 index 00000000000..37ec2af5e01 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corporate.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..b78e9501215 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..d261eee682b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..cbcbdc7ddbd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet-sealed.png new file mode 100644 index 00000000000..19194125a0b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet.png new file mode 100644 index 00000000000..741226e75e8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/corpsman.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..babd0c0af49 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..bcff52207a8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..8f47cfcfaef Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet-sealed.png new file mode 100644 index 00000000000..05bb06ade10 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet.png new file mode 100644 index 00000000000..d04cadafa46 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/cosmohonk.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..62d9fa05a44 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..9c97c3bfa1f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..169b8f3f2cc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet-sealed.png new file mode 100644 index 00000000000..aeb0e751439 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet.png new file mode 100644 index 00000000000..fb8ffbc8bcd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/debug.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..239af1d2ed4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..53a27580bc6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..2ba2eaec568 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet-sealed.png new file mode 100644 index 00000000000..e7d647bdacc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet.png new file mode 100644 index 00000000000..42841f4516e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/elite.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..d2ef09255ac Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..5c70a8c82e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..5c29520ef1c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet-sealed.png new file mode 100644 index 00000000000..4f055abff3b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet.png new file mode 100644 index 00000000000..6eacc8347e1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/enchanted.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..40610c2f8e8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..96b11df61c9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..439b63e9d48 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet-sealed.png new file mode 100644 index 00000000000..39ad7b23282 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet.png new file mode 100644 index 00000000000..8e7785974a1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/engineering.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..70ebf913a27 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..310ec3a7132 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..be6b69fa55d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet-sealed.png new file mode 100644 index 00000000000..2358970fcb3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet.png new file mode 100644 index 00000000000..c5ad37f6b42 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/glitch.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..076412a6f23 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..31fe7cd63f4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..944f597441d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet-sealed.png new file mode 100644 index 00000000000..a57a9a2a47e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet.png new file mode 100644 index 00000000000..8d90c3fc852 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/honkerative.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..dbf8c634103 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..54547a9e208 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..ed3780e0faf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet-sealed.png new file mode 100644 index 00000000000..12a5aece1cd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet.png new file mode 100644 index 00000000000..1094c090ad8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/infiltrator.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..0d8fce99d08 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..f411bff721b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..8d4063b83ad Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet-sealed.png new file mode 100644 index 00000000000..a5438aa0bf0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet.png new file mode 100644 index 00000000000..70650b9a165 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/inquisitor.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..a3d6c875def Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..2bea2cf8dd0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..b8b333f3b09 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet-sealed.png new file mode 100644 index 00000000000..6156a8afcf3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet.png new file mode 100644 index 00000000000..1770d1de652 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/interdyne.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..c654a32c202 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..4a5781e9b41 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..273c94d1cd9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet-sealed.png new file mode 100644 index 00000000000..26abf8a78d6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet.png new file mode 100644 index 00000000000..ab9ffba8d05 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/loader.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..651073d80de Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..876ae81e5df Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..5b8985f1290 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet-sealed.png new file mode 100644 index 00000000000..eb8ec907d6f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet.png new file mode 100644 index 00000000000..0935bc2ae9c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/magnate.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..9f85beae430 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..e34bf1eb940 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..0131e23d8ef Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet-sealed.png new file mode 100644 index 00000000000..2d7c9556188 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet.png new file mode 100644 index 00000000000..ab533c2f974 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/medical.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..491800e9544 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..ee968066dcd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..fda0769284a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet-sealed.png new file mode 100644 index 00000000000..30b865c6e1e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet.png new file mode 100644 index 00000000000..4d9a88ac68f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/mining.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..842f8e9e113 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..ee968066dcd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..060f767d83b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet-sealed.png new file mode 100644 index 00000000000..c280bf7b177 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet.png new file mode 100644 index 00000000000..e3b4a18e9f8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/ninja.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..1c43ddf5105 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..39bdab46929 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..fbdf7c7fde7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet-sealed.png new file mode 100644 index 00000000000..a3ab0cfd61e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet.png new file mode 100644 index 00000000000..f94fd88daf8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/prototype.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..c1cd3c4a90a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..e34bf1eb940 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..2e93ec284f9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet-sealed.png new file mode 100644 index 00000000000..33c5f3df5b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet.png new file mode 100644 index 00000000000..bb89f48a8ce Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/rescue.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..79e9723fa23 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..36dd9306651 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..6c2c814cb04 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet-sealed.png new file mode 100644 index 00000000000..ed6ca3ff531 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet.png new file mode 100644 index 00000000000..3aee68282e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/research.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..baf400f84fc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..476e17a7478 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..b6094e51aea Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet-sealed.png new file mode 100644 index 00000000000..2358970fcb3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet.png new file mode 100644 index 00000000000..c5ad37f6b42 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/responsory.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..bf6b8771460 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..946f0ee3cca Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..9be8ba808fb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet-sealed.png new file mode 100644 index 00000000000..4e655284539 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet.png new file mode 100644 index 00000000000..3f1a22e8dd9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/safeguard.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..f8df92fb4ef Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..80ab49b29b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..50b43a71fb4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet-sealed.png new file mode 100644 index 00000000000..f193195e508 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet.png new file mode 100644 index 00000000000..9579c1a5ead Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/security.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..2086fae4de8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..3320bbd54b7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..54ef064c6f7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet-sealed.png new file mode 100644 index 00000000000..d657be29940 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet.png new file mode 100644 index 00000000000..d73c15f57bb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/standard.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-sealed.png new file mode 100644 index 00000000000..50f2fb13b20 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-visor.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-visor.png new file mode 100644 index 00000000000..31fe7cd63f4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET-visor.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..ec7961d27fe Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet-sealed.png new file mode 100644 index 00000000000..92b778a785e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet.png b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet.png new file mode 100644 index 00000000000..c3462a22c63 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/helmet.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/meta.json new file mode 100644 index 00000000000..00809c2d5b3 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Head/syndicate.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "helmet" + }, + { + "name": "helmet-sealed" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-sealed", + "directions": 4 + }, + { + "name": "equipped-HELMET-visor", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..571fcef964a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate.png new file mode 100644 index 00000000000..45613d5ff9a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..a1b3906fc3b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..5a995e730d5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/advanced.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..21c4d56aa2b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate.png new file mode 100644 index 00000000000..a8499c1328e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..3b22518d7ed Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..8c99546de6c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/apocryphal.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..983d738ec1e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate.png new file mode 100644 index 00000000000..948e3e3b07b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..c5f744f3162 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..bd990cca0ce Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/asteroid.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..a445655a190 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate.png new file mode 100644 index 00000000000..f8c2a0fe732 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..8a5769d834d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..fd4cc6480c9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/atmospheric.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..c6e5edcf09a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate.png new file mode 100644 index 00000000000..c142d7acf87 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..81f645e3ae1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..f72e9c86fec Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/chrono.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..56b20cf4611 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate.png new file mode 100644 index 00000000000..f05046f91af Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..0ceebaa7233 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..29edab41b37 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/civilian.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..b8d638ce49d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate.png new file mode 100644 index 00000000000..d90ed5f00be Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..b27230f3b63 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..e296b07f5af Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corporate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..c34acd73c36 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate.png new file mode 100644 index 00000000000..7b3054896ce Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..439f0e023e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..b4ac415d7c9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/corpsman.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..3a722dc8440 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate.png new file mode 100644 index 00000000000..b217ee3033b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..8a78e45c353 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..f22c197afa8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/cosmohonk.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..c52b1fe173f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate.png new file mode 100644 index 00000000000..24607388c13 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..0f792b1fef9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..ba47810b7d1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/debug.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..5f94ab3424c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate.png new file mode 100644 index 00000000000..a322e12c373 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..65a763b93a8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..87f004c2780 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/elite.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..6af58935843 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate.png new file mode 100644 index 00000000000..a78b1a6e6af Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..0dabe0608cd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..e9e72808bc8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/enchanted.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..08f30b70162 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate.png new file mode 100644 index 00000000000..d1d4b82a998 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..62b44786128 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..3e300f6a20c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/engineering.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..d5f1621bfa0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate.png new file mode 100644 index 00000000000..672785680aa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..2a5039ecece Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..2672db7ea5f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/glitch.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..3fedd7d3bb8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate.png new file mode 100644 index 00000000000..2d52db8d0e2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..e5fee40bdb8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..ef9ce831c66 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/honkerative.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..116c8b2ed9b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate.png new file mode 100644 index 00000000000..884a9c5bd70 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..d7a5077e84d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..e06d75da4c2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/infiltrator.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..6ef0fda6a3a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate.png new file mode 100644 index 00000000000..a03a75f391c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..abf05008518 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..886016bc6ce Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/inquisitor.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..f1d62d2f9c7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate.png new file mode 100644 index 00000000000..bba66e3a59f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..4252bfbd229 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..4f92d16c652 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/interdyne.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..0f517ffd598 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate.png new file mode 100644 index 00000000000..f22f393718b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..0896e0a1e0a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..a9b7adc6473 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/loader.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..8c0920a8970 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate.png new file mode 100644 index 00000000000..3e078b1cdb2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..c8bab7fc68b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..9037dfc5543 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/magnate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..2bdf425a3a7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate.png new file mode 100644 index 00000000000..be6f92220a9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..e61632b8063 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..77c91b88a2b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/medical.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..9ab9a942d6a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate.png new file mode 100644 index 00000000000..49021e67fd5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..a37c53d7a79 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..73c3db7b82d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/mining.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..15fb99fd659 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate.png new file mode 100644 index 00000000000..f8f0ec84e20 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..0ab3661963e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..0f527bc4130 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/ninja.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..d6f9392fa16 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate.png new file mode 100644 index 00000000000..a74bfc86bd5 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..8ccaf96569c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..1cbaf7af818 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/prototype.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..65fdecdf99d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate.png new file mode 100644 index 00000000000..23af4392a7e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..084a064132c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..8dc10063a08 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/rescue.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..533b8680868 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate.png new file mode 100644 index 00000000000..2ddb4395133 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..e766520f6ac Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..e45a9a5f7e7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/research.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..d5f1621bfa0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate.png new file mode 100644 index 00000000000..672785680aa Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..d7f807655b9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..581eb2ec267 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/responsory.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..70e34ed2681 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate.png new file mode 100644 index 00000000000..12c8c90b167 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..daa0eb681b6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..732f754388f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/safeguard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..8a83f7ad263 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate.png new file mode 100644 index 00000000000..ef0eba70546 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..f9a77292761 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..898ea09b20a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/security.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..973f297bd8f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate.png new file mode 100644 index 00000000000..bcddf220100 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..a6013c411ac Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..f2f6e280d35 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/standard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate-sealed.png new file mode 100644 index 00000000000..e549223f54e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate.png new file mode 100644 index 00000000000..f0736b0a0bf Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/chestplate.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING-sealed.png new file mode 100644 index 00000000000..4ddbd136d56 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 00000000000..8adb4fc45fe Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/meta.json new file mode 100644 index 00000000000..9f15fceb9bc --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/OuterClothing/syndicate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chestplate" + }, + { + "name": "chestplate-sealed" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots-sealed.png new file mode 100644 index 00000000000..9667b32eabd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots.png new file mode 100644 index 00000000000..0752b0167d4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..bf3e8f6379c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET.png new file mode 100644 index 00000000000..8cecec07434 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/advanced.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots-sealed.png new file mode 100644 index 00000000000..01270d29e31 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots.png new file mode 100644 index 00000000000..3bae49fe05e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..641b283827c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET.png new file mode 100644 index 00000000000..30903feb463 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/apocryphal.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots-sealed.png new file mode 100644 index 00000000000..4088ebbdd4a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots.png new file mode 100644 index 00000000000..cbd1721ef2b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..3ac8950771a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET.png new file mode 100644 index 00000000000..434e532c81d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/asteroid.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots-sealed.png new file mode 100644 index 00000000000..b97bd9645d1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots.png new file mode 100644 index 00000000000..d1306b3f9f2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..cb8842f546f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET.png new file mode 100644 index 00000000000..31d64b80cc0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/atmospheric.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots-sealed.png new file mode 100644 index 00000000000..4f9ed9666d3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots.png new file mode 100644 index 00000000000..66f2b3898a0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..114f2d73284 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET.png new file mode 100644 index 00000000000..f28494b574d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/chrono.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots-sealed.png new file mode 100644 index 00000000000..8945d556a19 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots.png new file mode 100644 index 00000000000..446c9e38633 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..d3c804ed7e1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET.png new file mode 100644 index 00000000000..eadde985812 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/civilian.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots-sealed.png new file mode 100644 index 00000000000..77e7ea38518 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots.png new file mode 100644 index 00000000000..334bd6057db Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..c3332c934dc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET.png new file mode 100644 index 00000000000..4c351451b0f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corporate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots-sealed.png new file mode 100644 index 00000000000..b7ed8fa1193 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots.png new file mode 100644 index 00000000000..ac3fe813816 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..7c4b7a1251b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET.png new file mode 100644 index 00000000000..4de57494c44 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/corpsman.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots-sealed.png new file mode 100644 index 00000000000..d42a11644f0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots.png new file mode 100644 index 00000000000..e3e933a63d7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..38f312e5afc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET.png new file mode 100644 index 00000000000..1b54badab59 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/cosmohonk.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots-sealed.png new file mode 100644 index 00000000000..15333751b7a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots.png new file mode 100644 index 00000000000..b7852198407 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..7251d26126d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET.png new file mode 100644 index 00000000000..97a92213ede Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/debug.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots-sealed.png new file mode 100644 index 00000000000..4939692b688 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots.png new file mode 100644 index 00000000000..9dcbb6d6f9f Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..01f60b0edcd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET.png new file mode 100644 index 00000000000..4e1c36d3628 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/elite.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots-sealed.png new file mode 100644 index 00000000000..42bb8bf10d8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots.png new file mode 100644 index 00000000000..b413ca68edd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..58bca21d947 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET.png new file mode 100644 index 00000000000..f4868ab751c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/enchanted.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots-sealed.png new file mode 100644 index 00000000000..c3c49044503 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots.png new file mode 100644 index 00000000000..0f3a3cf4fc7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..678ea5b2724 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET.png new file mode 100644 index 00000000000..2130beb805b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/engineering.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots-sealed.png new file mode 100644 index 00000000000..b9348136296 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots.png new file mode 100644 index 00000000000..6af6f9fd72d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..255cd2341b2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET.png new file mode 100644 index 00000000000..30903feb463 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/glitch.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots-sealed.png new file mode 100644 index 00000000000..d42a11644f0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots.png new file mode 100644 index 00000000000..e3e933a63d7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..cf58a59aa84 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET.png new file mode 100644 index 00000000000..1b54badab59 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/honkerative.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots-sealed.png new file mode 100644 index 00000000000..1c74a609244 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots.png new file mode 100644 index 00000000000..b2bc9005182 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..58c01a8222b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET.png new file mode 100644 index 00000000000..59274c405eb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/infiltrator.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots-sealed.png new file mode 100644 index 00000000000..d37b09fbb28 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots.png new file mode 100644 index 00000000000..c63d191f35d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..0ab6e2fd585 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET.png new file mode 100644 index 00000000000..7dd76d09d2d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/inquisitor.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots-sealed.png new file mode 100644 index 00000000000..ca9a175f9e0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots.png new file mode 100644 index 00000000000..b1faf7960c4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..70d2b9691b1 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET.png new file mode 100644 index 00000000000..0bac45a708c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/interdyne.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots-sealed.png new file mode 100644 index 00000000000..7698e712800 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots.png new file mode 100644 index 00000000000..ae465877410 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..8cf44caed98 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET.png new file mode 100644 index 00000000000..8bb493aecc2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/loader.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots-sealed.png new file mode 100644 index 00000000000..7698de91003 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots.png new file mode 100644 index 00000000000..60cf2e2d837 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..28e2c8ae2ea Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET.png new file mode 100644 index 00000000000..9908c04b970 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/magnate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots-sealed.png new file mode 100644 index 00000000000..794b33851b2 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots.png new file mode 100644 index 00000000000..e99f5207c53 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..d627c01c74d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET.png new file mode 100644 index 00000000000..7dc3549f0d6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/medical.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots-sealed.png new file mode 100644 index 00000000000..3fadf10b836 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots.png new file mode 100644 index 00000000000..6ed0daea014 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..f5a522910cd Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET.png new file mode 100644 index 00000000000..a3c192d994c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/mining.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots-sealed.png new file mode 100644 index 00000000000..401c2a8c00d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots.png new file mode 100644 index 00000000000..9a5059cdd60 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..9b6a537644a Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET.png new file mode 100644 index 00000000000..7c051c62727 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/ninja.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots-sealed.png new file mode 100644 index 00000000000..3301f68f560 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots.png new file mode 100644 index 00000000000..1c53ac223d3 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..d332bfde71e Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET.png new file mode 100644 index 00000000000..1ce93512357 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/prototype.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots-sealed.png new file mode 100644 index 00000000000..7646424c121 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots.png new file mode 100644 index 00000000000..63b7ac88eb9 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..fd44b750b77 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET.png new file mode 100644 index 00000000000..594b6119e74 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/rescue.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots-sealed.png new file mode 100644 index 00000000000..56ece61b5a6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots.png new file mode 100644 index 00000000000..0a407d92dcb Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..63cffa6c821 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET.png new file mode 100644 index 00000000000..5ca0bc4fbb4 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/research.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots-sealed.png new file mode 100644 index 00000000000..b9348136296 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots.png new file mode 100644 index 00000000000..6af6f9fd72d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..ad81d5aadcc Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET.png new file mode 100644 index 00000000000..b2457728fb0 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/responsory.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots-sealed.png new file mode 100644 index 00000000000..57a1df9ad89 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots.png new file mode 100644 index 00000000000..0254160625b Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..8fe6541d194 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET.png new file mode 100644 index 00000000000..7ad0c12bd48 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/safeguard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots-sealed.png new file mode 100644 index 00000000000..8e7e56ac61d Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots.png new file mode 100644 index 00000000000..55568f75cc7 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..9880bc243e8 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET.png new file mode 100644 index 00000000000..42369b94199 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/security.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots-sealed.png new file mode 100644 index 00000000000..ee3280b2314 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots.png new file mode 100644 index 00000000000..82d568c86e6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..d4cd978bc99 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET.png new file mode 100644 index 00000000000..c3d8eef554c Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/standard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots-sealed.png new file mode 100644 index 00000000000..a8f106dbab6 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots.png new file mode 100644 index 00000000000..f236669c997 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/boots.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET-sealed.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET-sealed.png new file mode 100644 index 00000000000..a10ee827b31 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET-sealed.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET.png b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET.png new file mode 100644 index 00000000000..23e52ae2c10 Binary files /dev/null and b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/equipped-FEET.png differ diff --git a/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/meta.json b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/meta.json new file mode 100644 index 00000000000..3bf9634d8d1 --- /dev/null +++ b/Resources/Textures/_DEN/Clothing/Modsuits/Shoes/syndicate.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From tgstation - https://github.com/tgstation/tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "boots" + }, + { + "name": "boots-sealed" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-sealed", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-0.png b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-0.png new file mode 100644 index 00000000000..8f6dbab60a0 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-0.png differ diff --git a/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-1.png b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-1.png new file mode 100644 index 00000000000..cf549077520 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-1.png differ diff --git a/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-2.png b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-2.png new file mode 100644 index 00000000000..9ce8638363d Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-2.png differ diff --git a/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-3.png b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-3.png new file mode 100644 index 00000000000..cecd3917b61 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/cycle-3.png differ diff --git a/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/meta.json b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/meta.json new file mode 100644 index 00000000000..47dbe651c08 --- /dev/null +++ b/Resources/Textures/_DEN/Interface/Modsuits/ui_fried.rsi/meta.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Random noise, generated by Dirius77", + "size": { + "x": 16, + "y": 16 + }, + "states": [ + { + "name": "cycle-0", + "delays": [ + [ + 0.35, + 0.35, + 0.35, + 0.35 + ] + ] + }, + { + "name": "cycle-1", + "delays": [ + [ + 0.35, + 0.35, + 0.35, + 0.35 + ] + ] + }, + { + "name": "cycle-2", + "delays": [ + [ + 0.35, + 0.35, + 0.35, + 0.35 + ] + ] + }, + { + "name": "cycle-3", + "delays": [ + [ + 0.35, + 0.35, + 0.35, + 0.35 + ] + ] + } + ] +} diff --git a/Resources/Textures/_DEN/Interface/Modules/module-background-left.png b/Resources/Textures/_DEN/Interface/Modules/module-background-left.png new file mode 100644 index 00000000000..b4afddbf195 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-background-left.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-background-middle.png b/Resources/Textures/_DEN/Interface/Modules/module-background-middle.png new file mode 100644 index 00000000000..e443cd87668 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-background-middle.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-background-right.png b/Resources/Textures/_DEN/Interface/Modules/module-background-right.png new file mode 100644 index 00000000000..d982a74857b Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-background-right.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-width-1.png b/Resources/Textures/_DEN/Interface/Modules/module-width-1.png new file mode 100644 index 00000000000..55d24a68a92 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-width-1.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-width-2-broken.png b/Resources/Textures/_DEN/Interface/Modules/module-width-2-broken.png new file mode 100644 index 00000000000..85f2016c92e Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-width-2-broken.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-width-2.png b/Resources/Textures/_DEN/Interface/Modules/module-width-2.png new file mode 100644 index 00000000000..31926b1dba0 Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-width-2.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-width-3.png b/Resources/Textures/_DEN/Interface/Modules/module-width-3.png new file mode 100644 index 00000000000..233344880bd Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-width-3.png differ diff --git a/Resources/Textures/_DEN/Interface/Modules/module-width-4.png b/Resources/Textures/_DEN/Interface/Modules/module-width-4.png new file mode 100644 index 00000000000..4efd7c2869f Binary files /dev/null and b/Resources/Textures/_DEN/Interface/Modules/module-width-4.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/advancedcloak.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/advancedcloak.png new file mode 100644 index 00000000000..a405a365ef5 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/advancedcloak.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/antigravmod.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/antigravmod.png new file mode 100644 index 00000000000..7093fe52d1c Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/antigravmod.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/apparatus.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/apparatus.png new file mode 100644 index 00000000000..4bc05bd94fd Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/apparatus.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/armorbooster.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/armorbooster.png new file mode 100644 index 00000000000..a0601f012b8 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/armorbooster.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/atrocinator.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/atrocinator.png new file mode 100644 index 00000000000..169c1c27309 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/atrocinator.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/battlemageshield.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/battlemageshield.png new file mode 100644 index 00000000000..84f14dd8d3e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/battlemageshield.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bloon.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bloon.png new file mode 100644 index 00000000000..f331a3b785e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bloon.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bluespace_storage.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bluespace_storage.png new file mode 100644 index 00000000000..34164de2ea3 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/bluespace_storage.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/burgdispenser.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/burgdispenser.png new file mode 100644 index 00000000000..ced0d332c0b Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/burgdispenser.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/clampmodule.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/clampmodule.png new file mode 100644 index 00000000000..f7c899d38e6 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/clampmodule.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/cloak_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/cloak_module.png new file mode 100644 index 00000000000..3ebbe2aa91e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/cloak_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/constructor_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/constructor_module.png new file mode 100644 index 00000000000..1893c6a12d2 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/constructor_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/defibrillator.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/defibrillator.png new file mode 100644 index 00000000000..d066606eb55 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/defibrillator.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/diaghud_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/diaghud_visor.png new file mode 100644 index 00000000000..817fe31b2b3 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/diaghud_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/dna_lock_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/dna_lock_module.png new file mode 100644 index 00000000000..3b259322b8e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/dna_lock_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/drill_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/drill_module.png new file mode 100644 index 00000000000..f3cf81ce93f Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/drill_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/empshield_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/empshield_module.png new file mode 100644 index 00000000000..e203c1be425 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/empshield_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/energyshield.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/energyshield.png new file mode 100644 index 00000000000..3bb5ae4b431 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/energyshield.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/flashlight_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/flashlight_module.png new file mode 100644 index 00000000000..c976e79c191 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/flashlight_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/gps_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/gps_module.png new file mode 100644 index 00000000000..5f83d8884ed Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/gps_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/health_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/health_module.png new file mode 100644 index 00000000000..d0a37962574 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/health_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/holster_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/holster_module.png new file mode 100644 index 00000000000..bdaee9a2727 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/holster_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/honk_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/honk_module.png new file mode 100644 index 00000000000..47f0fe50813 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/honk_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/injector_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/injector_module.png new file mode 100644 index 00000000000..f8ad20e28a3 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/injector_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/insigniamodule.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/insigniamodule.png new file mode 100644 index 00000000000..a26e3db1845 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/insigniamodule.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/jetpack.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/jetpack.png new file mode 100644 index 00000000000..355e2afbf48 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/jetpack.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/kinesismodule.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/kinesismodule.png new file mode 100644 index 00000000000..08de2dcb448 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/kinesismodule.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/large_storage.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/large_storage.png new file mode 100644 index 00000000000..ec708561d90 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/large_storage.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/longfall.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/longfall.png new file mode 100644 index 00000000000..fdc2ce46e81 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/longfall.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magicnullifier.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magicnullifier.png new file mode 100644 index 00000000000..5d5a25b6086 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magicnullifier.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magnet_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magnet_module.png new file mode 100644 index 00000000000..ed34c3a42e1 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/magnet_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/medhud_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/medhud_visor.png new file mode 100644 index 00000000000..8ada41cd1f0 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/medhud_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meson_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meson_visor.png new file mode 100644 index 00000000000..a30e2a1b55d Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meson_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meta.json b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meta.json new file mode 100644 index 00000000000..43f14f63b77 --- /dev/null +++ b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/meta.json @@ -0,0 +1,209 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Retrieved from https://github.com/tgstation/tgstation and https://github.com/ParadiseSS13/Paradise", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "advancedcloak" + }, + { + "name": "antigravmod" + }, + { + "name": "apparatus" + }, + { + "name": "armorbooster" + }, + { + "name": "atrocinator" + }, + { + "name": "battlemageshield" + }, + { + "name": "bloon" + }, + { + "name": "bluespace_storage", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "burgdispenser" + }, + { + "name": "clampmodule" + }, + { + "name": "cloak_module" + }, + { + "name": "constructor_module" + }, + { + "name": "defibrillator" + }, + { + "name": "diaghud_visor" + }, + { + "name": "dna_lock_module" + }, + { + "name": "drill_module" + }, + { + "name": "empshield_module" + }, + { + "name": "energyshield" + }, + { + "name": "flashlight_module" + }, + { + "name": "gps_module" + }, + { + "name": "health_module" + }, + { + "name": "holster_module" + }, + { + "name": "honk_module" + }, + { + "name": "injector_module" + }, + { + "name": "insigniamodule", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "jetpack" + }, + { + "name": "kinesismodule" + }, + { + "name": "large_storage" + }, + { + "name": "longfall" + }, + { + "name": "magicnullifier" + }, + { + "name": "magnet_module" + }, + { + "name": "medhud_visor" + }, + { + "name": "meson_visor" + }, + { + "name": "microwavebeam" + }, + { + "name": "mod_storage" + }, + { + "name": "night_visor" + }, + { + "name": "noslip" + }, + { + "name": "orebag_module" + }, + { + "name": "organthrower" + }, + { + "name": "pathfinder_module" + }, + { + "name": "plasmastabilizer" + }, + { + "name": "quickcarry" + }, + { + "name": "radshield_module" + }, + { + "name": "ravevisor", + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "regulator_module" + }, + { + "name": "scanner_module" + }, + { + "name": "sechud_visor" + }, + { + "name": "springlock" + }, + { + "name": "syndie_storage" + }, + { + "name": "tanning" + }, + { + "name": "teleportmod" + }, + { + "name": "tether_module" + }, + { + "name": "thermal_visor" + }, + { + "name": "traymodule" + }, + { + "name": "waddleboots" + }, + { + "name": "weldingprot" + } + ] +} diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/microwavebeam.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/microwavebeam.png new file mode 100644 index 00000000000..10f1372750d Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/microwavebeam.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/mod_storage.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/mod_storage.png new file mode 100644 index 00000000000..f7b34ed40cb Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/mod_storage.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/night_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/night_visor.png new file mode 100644 index 00000000000..c615866f3db Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/night_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/noslip.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/noslip.png new file mode 100644 index 00000000000..62ef8c04898 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/noslip.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/orebag_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/orebag_module.png new file mode 100644 index 00000000000..137ba8b0fc1 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/orebag_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/organthrower.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/organthrower.png new file mode 100644 index 00000000000..fb7d1838b7d Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/organthrower.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/pathfinder_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/pathfinder_module.png new file mode 100644 index 00000000000..74cb22b7e3b Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/pathfinder_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/plasmastabilizer.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/plasmastabilizer.png new file mode 100644 index 00000000000..d51ab8f7424 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/plasmastabilizer.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/quickcarry.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/quickcarry.png new file mode 100644 index 00000000000..e55076f676e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/quickcarry.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/radshield_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/radshield_module.png new file mode 100644 index 00000000000..8f99360c367 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/radshield_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/ravevisor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/ravevisor.png new file mode 100644 index 00000000000..c7916febcfd Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/ravevisor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/regulator_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/regulator_module.png new file mode 100644 index 00000000000..d13d1180015 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/regulator_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/scanner_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/scanner_module.png new file mode 100644 index 00000000000..6e982d06f30 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/scanner_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/sechud_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/sechud_visor.png new file mode 100644 index 00000000000..c7b5c889123 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/sechud_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/springlock.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/springlock.png new file mode 100644 index 00000000000..eea4b632cb4 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/springlock.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/syndie_storage.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/syndie_storage.png new file mode 100644 index 00000000000..77cddf66656 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/syndie_storage.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tanning.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tanning.png new file mode 100644 index 00000000000..3b1f711b002 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tanning.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/teleportmod.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/teleportmod.png new file mode 100644 index 00000000000..c10a60e0c62 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/teleportmod.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tether_module.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tether_module.png new file mode 100644 index 00000000000..f919de51549 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/tether_module.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/thermal_visor.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/thermal_visor.png new file mode 100644 index 00000000000..85d744dc1d3 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/thermal_visor.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/traymodule.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/traymodule.png new file mode 100644 index 00000000000..232e8c3194e Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/traymodule.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/waddleboots.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/waddleboots.png new file mode 100644 index 00000000000..b18e9bb7029 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/waddleboots.png differ diff --git a/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/weldingprot.png b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/weldingprot.png new file mode 100644 index 00000000000..01ea15c83e4 Binary files /dev/null and b/Resources/Textures/_DEN/Objects/ModsuitModules/modules.rsi/weldingprot.png differ