xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Ghost.Widgets"
xmlns:hotbar="clr-namespace:Content.Client.UserInterface.Systems.Hotbar.Widgets"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
+ xmlns:inventory="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Widgets"
Name="DefaultHud"
VerticalExpand="False"
VerticalAlignment="Bottom"
<actions:ActionsBar Name="Actions" Access="Protected" />
</BoxContainer>
<widgets:GhostGui Name="Ghost" Access="Protected" />
+ <inventory:InventoryGui Name="Inventory" Access="Protected" />
<hotbar:HotbarGui Name="Hotbar" Access="Protected" />
<chat:ResizableChatBox Name="Chat" Access="Protected" />
<alerts:AlertsUI Name="Alerts" Access="Protected" />
SetAnchorPreset(ViewportContainer, LayoutPreset.Wide);
SetAnchorAndMarginPreset(TopLeft, LayoutPreset.TopLeft, margin: 10);
SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80);
+ SetAnchorAndMarginPreset(Inventory, LayoutPreset.BottomLeft, margin: 5);
SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5);
SetAnchorAndMarginPreset(Chat, LayoutPreset.TopRight, margin: 10);
SetAnchorAndMarginPreset(Alerts, LayoutPreset.TopRight, margin: 10);
xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Ghost.Widgets"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
+ xmlns:inventory="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Widgets"
Name="SeparatedChatHud"
VerticalExpand="False"
VerticalAlignment="Bottom"
<LayoutContainer Name="ViewportContainer" HorizontalExpand="True" VerticalExpand="True">
<controls:MainViewport Name="MainViewport"/>
<widgets:GhostGui Name="Ghost" Access="Protected" />
- <hotbar:HotbarGui Name="Hotbar" Access="Protected" />
+ <inventory:InventoryGui Name="Inventory" Access="Protected"/>
+ <hotbar:HotbarGui Name="Hotbar" Access="Protected"/>
<BoxContainer Name="TopLeftContainer" Orientation="Vertical">
<actions:ActionsBar Name="Actions" Access="Protected" />
<BoxContainer Name="VoteMenu" Access="Public" Orientation="Vertical"/>
SetAnchorPreset(ScreenContainer, LayoutPreset.Wide);
SetAnchorPreset(ViewportContainer, LayoutPreset.Wide);
SetAnchorPreset(MainViewport, LayoutPreset.Wide);
+ SetAnchorAndMarginPreset(Inventory, LayoutPreset.BottomLeft, margin: 5);
SetAnchorAndMarginPreset(TopLeftContainer, LayoutPreset.TopLeft, margin: 10);
SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80);
SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5);
using Content.Client.UserInterface.Systems.Hotbar.Widgets;
using Content.Client.UserInterface.Systems.Inventory;
using Content.Client.UserInterface.Systems.Inventory.Controls;
+using Content.Client.UserInterface.Systems.Inventory.Widgets;
using Content.Client.UserInterface.Systems.Storage;
using Content.Client.UserInterface.Systems.Storage.Controls;
using Robust.Client.UserInterface;
ReloadHotbar();
}
- public void Setup(HandsContainer handsContainer, ItemSlotButtonContainer inventoryBar, ItemStatusPanel handStatus, StorageContainer storageContainer)
+ public void Setup(HandsContainer handsContainer, ItemStatusPanel handStatus, StorageContainer storageContainer)
{
_inventory = UIManager.GetUIController<InventoryUIController>();
_hands = UIManager.GetUIController<HandsUIController>();
_storage = UIManager.GetUIController<StorageUIController>();
_hands.RegisterHandContainer(handsContainer);
- _inventory.RegisterInventoryBarContainer(inventoryBar);
_storage.RegisterStorageContainer(storageContainer);
}
return;
}
- var hotbar = UIManager.ActiveScreen.GetWidget<HotbarGui>();
+ if (UIManager.ActiveScreen.GetWidget<HotbarGui>() is { } hotbar)
+ {
+ foreach (var container in GetAllItemSlotContainers(hotbar))
+ {
+ // Yes, this is dirty.
+ container.SlotGroup = container.SlotGroup;
+ }
+ }
- if (hotbar == null)
+ _hands?.ReloadHands();
+ _inventory?.ReloadSlots();
+
+ //todo move this over to its own hellhole
+ var inventory = UIManager.ActiveScreen.GetWidget<InventoryGui>();
+ if (inventory == null)
{
return;
}
- foreach (var container in GetAllItemSlotContainers(hotbar))
+ foreach (var container in GetAllItemSlotContainers(inventory))
{
// Yes, this is dirty.
container.SlotGroup = container.SlotGroup;
}
- _hands?.ReloadHands();
- _inventory?.ReloadSlots();
- _inventory?.RegisterInventoryBarContainer(hotbar.InventoryHotbar);
+ _inventory?.RegisterInventoryBarContainer(inventory.InventoryHotbar);
}
- private IEnumerable<ItemSlotButtonContainer> GetAllItemSlotContainers(Control gui)
+ private static IEnumerable<ItemSlotButtonContainer> GetAllItemSlotContainers(Control gui)
{
var result = new List<ItemSlotButtonContainer>();
xmlns:hands="clr-namespace:Content.Client.UserInterface.Systems.Hands.Controls"
xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Hotbar.Widgets"
Name="HotbarInterface"
- VerticalExpand="False"
+ VerticalExpand="True"
VerticalAlignment="Bottom"
Orientation="Vertical"
HorizontalAlignment="Center">
- <Control HorizontalAlignment="Center">
- <inventory:ItemStatusPanel
- Name="StatusPanel"
- Visible="False"
- HorizontalAlignment="Center"
- />
- <BoxContainer Name="StorageContainer"
- Access="Public"
- HorizontalAlignment="Center"
- Margin="10">
- <storage:StorageContainer
- Name="StoragePanel"
- Visible="False"/>
- </BoxContainer>
- </Control>
<BoxContainer Orientation="Vertical">
- <inventory:ItemSlotButtonContainer
- Name="InventoryHotbar"
- Access="Public"
- Visible="False"
- Columns="10"
- SlotGroup="Default"
- ExpandBackwards="True"
- VerticalExpand="True"
- HorizontalAlignment="Center"
- VerticalAlignment="Bottom"
- Margin="0 0 0 4"
- />
+ <Control HorizontalAlignment="Center">
+ <inventory:ItemStatusPanel
+ Name="StatusPanel"
+ Visible="False"
+ HorizontalAlignment="Center"
+ />
+ <BoxContainer Name="StorageContainer"
+ Access="Public"
+ HorizontalAlignment="Center"
+ Margin="10">
+ <storage:StorageContainer
+ Name="StoragePanel"
+ Visible="False"/>
+ </BoxContainer>
+ </Control>
<BoxContainer Orientation="Horizontal" Name="Hotbar" HorizontalAlignment="Center">
<inventory:ItemSlotButtonContainer
Name="SecondHotbar"
StatusPanel.Update(null);
var hotbarController = UserInterfaceManager.GetUIController<HotbarUIController>();
- hotbarController.Setup(HandContainer, InventoryHotbar, StatusPanel, StoragePanel);
+ hotbarController.Setup(HandContainer, StatusPanel, StoragePanel);
LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.Begin);
}
{
protected readonly Dictionary<string, T> Buttons = new();
+ private int? _maxColumns;
+
+ public int? MaxColumns
+ {
+ get => _maxColumns;
+ set => _maxColumns = value;
+ }
+
public virtual bool TryAddButton(T newButton, out T button)
{
var tempButton = AddButton(newButton);
{
if (!Children.Contains(newButton) && newButton.Parent == null && newButton.SlotName != "")
AddChild(newButton);
- Columns = ChildCount;
+ Columns = _maxColumns ?? ChildCount;
return AddButtonToDict(newButton);
}
+using System.Linq;
+using System.Numerics;
using Content.Client.Gameplay;
using Content.Client.Hands.Systems;
using Content.Client.Inventory;
using Content.Client.UserInterface.Controls;
+using Content.Client.UserInterface.Systems.Gameplay;
using Content.Client.UserInterface.Systems.Inventory.Controls;
+using Content.Client.UserInterface.Systems.Inventory.Widgets;
using Content.Client.UserInterface.Systems.Inventory.Windows;
using Content.Shared.Hands.Components;
using Content.Shared.Input;
using Robust.Shared.Map;
using Robust.Shared.Utility;
using static Content.Client.Inventory.ClientInventorySystem;
-using static Robust.Client.UserInterface.Controls.BaseButton;
namespace Content.Client.UserInterface.Systems.Inventory;
private StrippingWindow? _strippingWindow;
private ItemSlotButtonContainer? _inventoryHotbar;
- private MenuButton? InventoryButton => UIManager.ActiveScreen?.GetWidget<MenuBar.Widgets.GameTopMenuBar>()?.InventoryButton;
+ private SlotButton? _inventoryButton;
- private SlotControl? _lastHovered = null;
+ private SlotControl? _lastHovered;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ var gameplayStateLoad = UIManager.GetUIController<GameplayStateLoadController>();
+ gameplayStateLoad.OnScreenLoad += OnScreenLoad;
+ }
+
+ private void OnScreenLoad()
+ {
+ if (UIManager.ActiveScreen == null)
+ return;
+
+ var inventoryGui = UIManager.GetActiveUIWidget<InventoryGui>();
+ RegisterInventoryButton(inventoryGui.InventoryButton);
+ }
public void OnStateEntered(GameplayState state)
{
CommandBinds.Unregister<ClientInventorySystem>();
}
- public void UnloadButton()
- {
- if (InventoryButton == null)
- {
- return;
- }
-
- InventoryButton.OnPressed -= InventoryButtonPressed;
- }
-
- public void LoadButton()
- {
- if (InventoryButton == null)
- {
- return;
- }
-
- InventoryButton.OnPressed += InventoryButtonPressed;
- }
-
private SlotButton CreateSlotButton(SlotData data)
{
var button = new SlotButton(data);
_inventoryHotbar = inventoryHotbar;
}
- private void InventoryButtonPressed(ButtonEventArgs args)
+ public void RegisterInventoryButton(SlotButton? button)
+ {
+ if (_inventoryButton != null)
+ {
+ _inventoryButton.Pressed -= InventoryButtonPressed;
+ }
+
+ if (button != null)
+ {
+ _inventoryButton = button;
+ _inventoryButton.Pressed += InventoryButtonPressed;
+ }
+ }
+
+ private void InventoryButtonPressed(GUIBoundKeyEventArgs args, SlotControl control)
{
+ if (args.Function != EngineKeyFunctions.UIClick)
+ return;
+
ToggleInventoryBar();
}
var update = new SlotSpriteUpdate(data.HeldEntity, data.SlotGroup, data.SlotName, showStorage);
SpriteUpdated(update);
}
+
+ if (_inventoryHotbar == null)
+ return;
+
+ var clothing = clientInv.SlotData.Where(p => !p.Value.HasSlotGroup).ToList();
+
+ if (_inventoryButton != null)
+ _inventoryButton.Visible = clothing.Count != 0;
+ if (clothing.Count == 0)
+ return;
+
+ foreach (var child in new List<Control>(_inventoryHotbar.Children))
+ {
+ if (child is not SlotControl)
+ _inventoryHotbar.RemoveChild(child);
+ }
+
+ var maxWidth = clothing.Max(p => p.Value.ButtonOffset.X) + 1;
+ var maxIndex = clothing.Select(p => GetIndex(p.Value.ButtonOffset)).Max();
+
+ _inventoryHotbar.MaxColumns = maxWidth;
+ _inventoryHotbar.Columns = maxWidth;
+
+ for (var i = 0; i <= maxIndex; i++)
+ {
+ var index = i;
+ if (clothing.FirstOrNull(p => GetIndex(p.Value.ButtonOffset) == index) is { } pair)
+ {
+ if (_inventoryHotbar.TryGetButton(pair.Key, out var slot))
+ slot.SetPositionLast();
+ }
+ else
+ {
+ _inventoryHotbar.AddChild(new Control
+ {
+ MinSize = new Vector2(64, 64)
+ });
+ }
+ }
+
+ return;
+
+ int GetIndex(Vector2i position)
+ {
+ return position.Y * maxWidth + position.X;
+ }
}
private void UpdateStrippingWindow(InventorySlotsComponent? clientInv)
}
UpdateInventoryHotbar(_playerInventory);
- if (_inventoryHotbar.Visible)
- {
- _inventoryHotbar.Visible = false;
- if (InventoryButton != null)
- InventoryButton.Pressed = false;
- }
- else
- {
- _inventoryHotbar.Visible = true;
- if (InventoryButton != null)
- InventoryButton.Pressed = true;
- }
+ _inventoryHotbar.Visible = !_inventoryHotbar.Visible;
}
// Neuron Activation
--- /dev/null
+<widgets:InventoryGui
+ xmlns="https://spacestation14.io"
+ xmlns:inventory="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Controls"
+ xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Widgets"
+ xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
+ Name="InventoryInterface"
+ VerticalExpand="True"
+ VerticalAlignment="Bottom"
+ Orientation="Horizontal"
+ HorizontalAlignment="Center">
+ <Control HorizontalAlignment="Center">
+ <controls:SlotButton
+ Name="InventoryButton"
+ Access="Public"
+ VerticalAlignment="Bottom"
+ HorizontalExpand="False"
+ VerticalExpand="False"
+ ButtonTexturePath="Slots/toggle"/>
+ <inventory:ItemSlotButtonContainer
+ Name="InventoryHotbar"
+ Access="Public"
+ Visible="False"
+ MaxColumns="3"
+ SlotGroup="Default"
+ ExpandBackwards="True"
+ VerticalExpand="True"
+ HorizontalAlignment="Center"
+ />
+ </Control>
+</widgets:InventoryGui>
--- /dev/null
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.Controls;
+using Robust.Client.UserInterface.XAML;
+
+namespace Content.Client.UserInterface.Systems.Inventory.Widgets;
+
+[GenerateTypedNameReferences]
+public sealed partial class InventoryGui : UIWidget
+{
+ public InventoryGui()
+ {
+ RobustXamlLoader.Load(this);
+
+ var inventoryUIController = UserInterfaceManager.GetUIController<InventoryUIController>();
+ inventoryUIController.RegisterInventoryBarContainer(InventoryHotbar);
+
+ LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.Begin);
+ }
+}
using Content.Client.UserInterface.Systems.EscapeMenu;
using Content.Client.UserInterface.Systems.Gameplay;
using Content.Client.UserInterface.Systems.Guidebook;
-using Content.Client.UserInterface.Systems.Inventory;
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
using Content.Client.UserInterface.Systems.Sandbox;
using Robust.Client.UserInterface.Controllers;
public sealed class GameTopMenuBarUIController : UIController
{
[Dependency] private readonly EscapeUIController _escape = default!;
- [Dependency] private readonly InventoryUIController _inventory = default!;
[Dependency] private readonly AdminUIController _admin = default!;
[Dependency] private readonly CharacterUIController _character = default!;
[Dependency] private readonly CraftingUIController _crafting = default!;
{
_escape.UnloadButton();
_guidebook.UnloadButton();
- _inventory.UnloadButton();
_admin.UnloadButton();
_character.UnloadButton();
_crafting.UnloadButton();
{
_escape.LoadButton();
_guidebook.LoadButton();
- _inventory.LoadButton();
_admin.LoadButton();
_character.LoadButton();
_crafting.LoadButton();
HorizontalExpand="True"
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
/>
- <ui:MenuButton
- Name="InventoryButton"
- Access="Internal"
- Icon="{xe:Tex '/Textures/Interface/inventory.svg.192dpi.png'}"
- BoundKey = "{x:Static is:ContentKeyFunctions.OpenInventoryMenu}"
- ToolTip="{Loc 'game-hud-open-inventory-menu-button-tooltip'}"
- MinSize="42 64"
- HorizontalExpand="True"
- AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
- />
<ui:MenuButton
Name="CraftingButton"
Access="Internal"
slotTexture: shoes
slotFlags: FEET
stripTime: 3
- uiWindowPos: 1,3
+ uiWindowPos: 1,0
strippingWindowPos: 1,3
displayName: Shoes
- name: jumpsuit
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
- uiWindowPos: 0,2
+ uiWindowPos: 0,1
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 2,1
strippingWindowPos: 2,2
displayName: Gloves
- name: neck
slotTexture: neck
slotFlags: NECK
- uiWindowPos: 0,1
+ uiWindowPos: 0,2
strippingWindowPos: 0,1
displayName: Neck
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 1,2
strippingWindowPos: 1,1
displayName: Mask
- name: eyes
slotTexture: glasses
slotFlags: EYES
stripTime: 3
- uiWindowPos: 0,0
+ uiWindowPos: 0,3
strippingWindowPos: 0,0
displayName: Eyes
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
- uiWindowPos: 2,0
+ uiWindowPos: 2,2
strippingWindowPos: 2,0
displayName: Ears
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 1,0
+ uiWindowPos: 1,3
strippingWindowPos: 1,0
displayName: Head
- name: id
slotTexture: suit
slotFlags: OUTERCLOTHING
stripTime: 6
- uiWindowPos: 1,2
+ uiWindowPos: 1,1
strippingWindowPos: 1,2
displayName: Suit
- name: pocket1
- name: head
slotTexture: head
slotFlags: HEAD
- slotGroup: MainHotbar
- uiWindowPos: 0,0
+ uiWindowPos: 1,0
strippingWindowPos: 0,0
displayName: Head
offset: 0, -0.09375
- name: head
slotTexture: head
slotFlags: HEAD
- slotGroup: MainHotbar
- uiWindowPos: 0,0
+ uiWindowPos: 1,0
strippingWindowPos: 0,0
displayName: Head
offset: 0, -0.1875
- name: head
slotTexture: head
slotFlags: HEAD
- slotGroup: MainHotbar
- uiWindowPos: 0,0
+ uiWindowPos: 1,0
strippingWindowPos: 0,0
displayName: Head
offset: 0, 0.09375
slotTexture: shoes
slotFlags: FEET
stripTime: 3
- uiWindowPos: 1,3
+ uiWindowPos: 1,0
strippingWindowPos: 1,3
displayName: Shoes
- name: jumpsuit
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
- uiWindowPos: 0,2
+ uiWindowPos: 0,1
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: outerClothing
slotTexture: suit
slotFlags: OUTERCLOTHING
stripTime: 6
- uiWindowPos: 1,2
+ uiWindowPos: 1,1
strippingWindowPos: 1,2
displayName: Suit
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 2,1
strippingWindowPos: 2,2
displayName: Gloves
- name: neck
slotTexture: neck
slotFlags: NECK
- uiWindowPos: 0,1
+ uiWindowPos: 0,2
strippingWindowPos: 0,1
displayName: Neck
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 1,2
strippingWindowPos: 1,1
displayName: Mask
- name: eyes
slotTexture: glasses
slotFlags: EYES
stripTime: 3
- uiWindowPos: 0,0
+ uiWindowPos: 0,3
strippingWindowPos: 0,0
displayName: Eyes
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 1,0
+ uiWindowPos: 1,3
strippingWindowPos: 1,0
displayName: Head
- name: pocket1
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
- uiWindowPos: 0,2
+ uiWindowPos: 0,1
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: outerClothing
slotTexture: suit
slotFlags: OUTERCLOTHING
stripTime: 6
- uiWindowPos: 1,2
+ uiWindowPos: 1,1
strippingWindowPos: 1,2
displayName: Suit
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 2,1
strippingWindowPos: 2,2
displayName: Gloves
- name: neck
slotTexture: neck
slotFlags: NECK
- uiWindowPos: 0,1
+ uiWindowPos: 0,2
strippingWindowPos: 0,1
displayName: Neck
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 1,2
strippingWindowPos: 1,1
displayName: Mask
- name: eyes
slotTexture: glasses
slotFlags: EYES
stripTime: 3
- uiWindowPos: 0,0
+ uiWindowPos: 0,3
strippingWindowPos: 0,0
displayName: Eyes
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
- uiWindowPos: 2,0
+ uiWindowPos: 2,2
strippingWindowPos: 2,0
displayName: Ears
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 1,0
+ uiWindowPos: 1,3
strippingWindowPos: 1,0
displayName: Head
- name: pocket1
- name: head
slotTexture: head
slotFlags: HEAD
- slotGroup: MainHotbar
- uiWindowPos: 0,0
+ uiWindowPos: 1,0
strippingWindowPos: 0,0
displayName: Head
offset: 0, -0.45
slotTexture: neck
slotFlags: NECK
uiWindowPos: 0,1
- strippingWindowPos: 0,1
+ strippingWindowPos: 1,0
displayName: Neck
whitelist:
tags:
slotTexture: glasses
slotFlags: EYES
stripTime: 3
- uiWindowPos: 0,0
+ uiWindowPos: 0,1
strippingWindowPos: 0,0
displayName: Eyes
whitelist:
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 1,0
+ uiWindowPos: 1,2
strippingWindowPos: 1,0
displayName: Head
whitelist:
tags:
- - HamsterWearable
\ No newline at end of file
+ - HamsterWearable
- name: head
slotTexture: head
slotFlags: HEAD
- slotGroup: MainHotbar
- uiWindowPos: 0,0
+ uiWindowPos: 0,1
strippingWindowPos: 0,0
displayName: Head
slotTexture: shoes
slotFlags: FEET
stripTime: 3
- uiWindowPos: 1,3
+ uiWindowPos: 1,0
strippingWindowPos: 1,3
displayName: Shoes
- name: jumpsuit
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
- uiWindowPos: 0,2
+ uiWindowPos: 0,1
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: outerClothing
slotTexture: suit
slotFlags: OUTERCLOTHING
stripTime: 6
- uiWindowPos: 1,2
+ uiWindowPos: 1,1
strippingWindowPos: 1,2
displayName: Suit
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 2,1
strippingWindowPos: 2,2
displayName: Gloves
- name: neck
slotTexture: neck
slotFlags: NECK
- uiWindowPos: 0,1
+ uiWindowPos: 0,2
strippingWindowPos: 0,1
displayName: Neck
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 1,2
strippingWindowPos: 1,1
displayName: Mask
- name: eyes
slotTexture: glasses
slotFlags: EYES
stripTime: 3
- uiWindowPos: 0,0
+ uiWindowPos: 0,3
strippingWindowPos: 0,0
displayName: Eyes
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
- uiWindowPos: 2,0
+ uiWindowPos: 2,2
strippingWindowPos: 2,0
displayName: Ears
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 1,0
+ uiWindowPos: 1,3
strippingWindowPos: 1,0
displayName: Head
- name: pocket1
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 0,1
strippingWindowPos: 2,2
displayName: Gloves
whitelist:
- name: gloves
slotTexture: gloves
slotFlags: GLOVES
- uiWindowPos: 2,2
+ uiWindowPos: 1,0
strippingWindowPos: 2,2
displayName: Gloves
whitelist:
- name: head
slotTexture: head
slotFlags: HEAD
- uiWindowPos: 0,0
+ uiWindowPos: 1,2
strippingWindowPos: 0,0
displayName: Head
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
- uiWindowPos: 1,2
+ uiWindowPos: 0,2
strippingWindowPos: 1,2
displayName: Ears
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 0,1
strippingWindowPos: 1,1
displayName: Mask
whitelist:
slotTexture: uniform
slotFlags: INNERCLOTHING
stripTime: 6
- uiWindowPos: 0,2
+ uiWindowPos: 1,0
strippingWindowPos: 0,2
displayName: Jumpsuit
- name: id
slotTexture: suit
slotFlags: OUTERCLOTHING
stripTime: 6
- uiWindowPos: 1,3
+ uiWindowPos: 1,1
strippingWindowPos: 1,3
displayName: Suit
whitelist:
- name: mask
slotTexture: mask
slotFlags: MASK
- uiWindowPos: 1,1
+ uiWindowPos: 1,0
strippingWindowPos: 1,1
displayName: Mask
whitelist: