diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index dd69521f48..b3d6848915 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -1,9 +1,12 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Numerics; +using Content.Client.DisplacementMap; using Content.Client.Inventory; using Content.Shared.Clothing; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; +using Content.Shared.DisplacementMap; using Content.Shared.Humanoid; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; @@ -49,6 +52,7 @@ public sealed class ClientClothingSystem : ClothingSystem [Dependency] private readonly IResourceCache _cache = default!; [Dependency] private readonly ISerializationManager _serialization = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; + [Dependency] private readonly DisplacementMapSystem _displacement = default!; public override void Initialize() { @@ -63,15 +67,14 @@ public sealed class ClientClothingSystem : ClothingSystem private void OnAppearanceUpdate(EntityUid uid, InventoryComponent component, ref AppearanceChangeEvent args) { - // May need to update jumpsuit stencils if the sex changed. Also required to properly set the stencil on init + // May need to update displacement maps if the sex changed. Also required to properly set the stencil on init if (args.Sprite == null) return; - if (_inventorySystem.TryGetSlotEntity(uid, Jumpsuit, out var suit, component) - && TryComp(suit, out ClothingComponent? clothing)) + var enumerator = _inventorySystem.GetSlotEnumerator((uid, component)); + while (enumerator.NextItem(out var item, out var slot)) { - SetGenderedMask(uid, args.Sprite, clothing); - return; + RenderEquipment(uid, item, slot.Name, component); } // No clothing equipped -> make sure the layer is hidden, though this should already be handled by on-unequip. @@ -181,14 +184,6 @@ public sealed class ClientClothingSystem : ClothingSystem private void OnDidUnequip(EntityUid uid, SpriteComponent component, DidUnequipEvent args) { - // Hide jumpsuit mask layer. - if (args.Slot == Jumpsuit - && TryComp(uid, out SpriteComponent? sprite) - && sprite.LayerMapTryGet(HumanoidVisualLayers.StencilMask, out var maskLayer)) - { - sprite.LayerSetVisible(maskLayer, false); - } - if (!TryComp(uid, out InventorySlotsComponent? inventorySlots)) return; @@ -233,9 +228,6 @@ public sealed class ClientClothingSystem : ClothingSystem return; } - if (slot == Jumpsuit) - SetGenderedMask(equipee, sprite, clothingComponent); - if (!_inventorySystem.TryGetSlot(equipee, slot, out var slotDef, inventory)) return; @@ -267,7 +259,25 @@ public sealed class ClientClothingSystem : ClothingSystem // temporary, until layer draw depths get added. Basically: a layer with the key "slot" is being used as a // bookmark to determine where in the list of layers we should insert the clothing layers. bool slotLayerExists = sprite.LayerMapTryGet(slot, out var index); - var displacementData = inventory.Displacements.GetValueOrDefault(slot); + + // Select displacement maps + var displacementData = inventory.Displacements.GetValueOrDefault(slot); //Default unsexed map + + var equipeeSex = CompOrNull(equipee)?.Sex; + if (equipeeSex != null) + { + switch (equipeeSex) + { + case Sex.Male: + if (inventory.MaleDisplacements.Count > 0) + displacementData = inventory.MaleDisplacements.GetValueOrDefault(slot); + break; + case Sex.Female: + if (inventory.FemaleDisplacements.Count > 0) + displacementData = inventory.FemaleDisplacements.GetValueOrDefault(slot); + break; + } + } // add the new layers foreach (var (key, layerData) in ev.Layers) @@ -292,7 +302,7 @@ public sealed class ClientClothingSystem : ClothingSystem index = sprite.LayerMapReserveBlank(key); if (sprite[index] is not Layer layer) - return; + continue; // In case no RSI is given, use the item's base RSI as a default. This cuts down on a lot of unnecessary yaml entries. if (layerData.RsiPath == null @@ -303,78 +313,20 @@ public sealed class ClientClothingSystem : ClothingSystem layer.SetRsi(clothingSprite.BaseRSI); } - // Another "temporary" fix for clothing stencil masks. - // Sprite layer redactor when - // Sprite "redactor" just a week away. - if (slot == Jumpsuit) - layerData.Shader ??= "StencilDraw"; - sprite.LayerSetData(index, layerData); layer.Offset += slotDef.Offset; - if (displacementData != null) + if (displacementData is not null) { - if (displacementData.ShaderOverride != null) - sprite.LayerSetShader(index, displacementData.ShaderOverride); - - var displacementKey = $"{key}-displacement"; - if (!revealedLayers.Add(displacementKey)) - { - Log.Warning($"Duplicate key for clothing visuals DISPLACEMENT: {displacementKey}."); + //Checking that the state is not tied to the current race. In this case we don't need to use the displacement maps. + if (layerData.State is not null && inventory.SpeciesId is not null && layerData.State.EndsWith(inventory.SpeciesId)) continue; - } - var displacementLayer = _serialization.CreateCopy(displacementData.Layer, notNullableOverride: true); - displacementLayer.CopyToShaderParameters!.LayerKey = key; - - // Add before main layer for this item. - sprite.AddLayer(displacementLayer, index); - sprite.LayerMapSet(displacementKey, index); - - revealedLayers.Add(displacementKey); + if (_displacement.TryAddDisplacement(displacementData, sprite, index, key, revealedLayers)) + index++; } } RaiseLocalEvent(equipment, new EquipmentVisualsUpdatedEvent(equipee, slot, revealedLayers), true); } - - - /// - /// Sets a sprite's gendered mask based on gender (obviously). - /// - /// Sprite to modify - /// Humanoid, to get gender from - /// Clothing component, to get mask sprite type - private void SetGenderedMask(EntityUid uid, SpriteComponent sprite, ClothingComponent clothing) - { - if (!sprite.LayerMapTryGet(HumanoidVisualLayers.StencilMask, out var layer)) - return; - - ClothingMask mask; - string prefix; - - switch (CompOrNull(uid)?.Sex) - { - case Sex.Male: - mask = clothing.MaleMask; - prefix = "male_"; - break; - case Sex.Female: - mask = clothing.FemaleMask; - prefix = "female_"; - break; - default: - mask = clothing.UnisexMask; - prefix = "unisex_"; - break; - } - - sprite.LayerSetState(layer, mask switch - { - ClothingMask.NoMask => $"{prefix}none", - ClothingMask.UniformTop => $"{prefix}top", - _ => $"{prefix}full", - }); - sprite.LayerSetVisible(layer, true); - } } diff --git a/Content.Client/DisplacementMap/DisplacementMapSystem.cs b/Content.Client/DisplacementMap/DisplacementMapSystem.cs new file mode 100644 index 0000000000..6db164a09f --- /dev/null +++ b/Content.Client/DisplacementMap/DisplacementMapSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.DisplacementMap; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Shared.Serialization.Manager; + +namespace Content.Client.DisplacementMap; + +public sealed class DisplacementMapSystem : EntitySystem +{ + [Dependency] private readonly ISerializationManager _serialization = default!; + + public bool TryAddDisplacement(DisplacementData data, SpriteComponent sprite, int index, string key, HashSet revealedLayers) + { + if (data.ShaderOverride != null) + sprite.LayerSetShader(index, data.ShaderOverride); + + var displacementKey = $"{key}-displacement"; + if (!revealedLayers.Add(displacementKey)) + { + Log.Warning($"Duplicate key for DISPLACEMENT: {displacementKey}."); + return false; + } + + //allows you not to write it every time in the YML + foreach (var pair in data.SizeMaps) + { + pair.Value.CopyToShaderParameters??= new() + { + LayerKey = "dummy", + ParameterTexture = "displacementMap", + ParameterUV = "displacementUV", + }; + } + + if (!data.SizeMaps.ContainsKey(32)) + { + Log.Error($"DISPLACEMENT: {displacementKey} don't have 32x32 default displacement map"); + return false; + } + + // We choose a displacement map from the possible ones, matching the size with the original layer size. + // If there is no such a map, we use a standard 32 by 32 one + var displacementDataLayer = data.SizeMaps[EyeManager.PixelsPerMeter]; + var actualRSI = sprite.LayerGetActualRSI(index); + if (actualRSI is not null) + { + if (actualRSI.Size.X != actualRSI.Size.Y) + Log.Warning($"DISPLACEMENT: {displacementKey} has a resolution that is not 1:1, things can look crooked"); + + var layerSize = actualRSI.Size.X; + if (data.SizeMaps.ContainsKey(layerSize)) + displacementDataLayer = data.SizeMaps[layerSize]; + } + + var displacementLayer = _serialization.CreateCopy(displacementDataLayer, notNullableOverride: true); + displacementLayer.CopyToShaderParameters!.LayerKey = key; + + sprite.AddLayer(displacementLayer, index); + sprite.LayerMapSet(displacementKey, index); + + revealedLayers.Add(displacementKey); + + return true; + } +} diff --git a/Content.Client/Hands/Systems/HandsSystem.cs b/Content.Client/Hands/Systems/HandsSystem.cs index 7ea3b69de5..ba2d10bccb 100644 --- a/Content.Client/Hands/Systems/HandsSystem.cs +++ b/Content.Client/Hands/Systems/HandsSystem.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Client.DisplacementMap; using Content.Client.Examine; using Content.Client.Strip; using Content.Client.Verbs.UI; @@ -29,6 +30,7 @@ namespace Content.Client.Hands.Systems [Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly StrippableSystem _stripSys = default!; [Dependency] private readonly ExamineSystem _examine = default!; + [Dependency] private readonly DisplacementMapSystem _displacement = default!; public event Action? OnPlayerAddHand; public event Action? OnPlayerRemoveHand; @@ -378,6 +380,10 @@ namespace Content.Client.Hands.Systems } sprite.LayerSetData(index, layerData); + + //Add displacement maps + if (handComp.HandDisplacement is not null) + _displacement.TryAddDisplacement(handComp.HandDisplacement, sprite, index, key, revealedLayers); } RaiseLocalEvent(held, new HeldVisualsUpdatedEvent(uid, revealedLayers), true); diff --git a/Content.Shared/Clothing/Components/ClothingComponent.cs b/Content.Shared/Clothing/Components/ClothingComponent.cs index 6d7226e767..1e2307b92b 100644 --- a/Content.Shared/Clothing/Components/ClothingComponent.cs +++ b/Content.Shared/Clothing/Components/ClothingComponent.cs @@ -54,18 +54,6 @@ public sealed partial class ClothingComponent : Component [DataField("sprite")] public string? RsiPath; - [ViewVariables(VVAccess.ReadWrite)] - [DataField("maleMask")] - public ClothingMask MaleMask = ClothingMask.UniformFull; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("femaleMask")] - public ClothingMask FemaleMask = ClothingMask.UniformFull; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("unisexMask")] - public ClothingMask UnisexMask = ClothingMask.UniformFull; - /// /// Name of the inventory slot the clothing is in. /// diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index 9e3f917e96..17129ce8b2 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -248,7 +248,6 @@ public abstract class ClothingSystem : EntitySystem clothing.ClothingVisuals = otherClothing.ClothingVisuals; clothing.EquippedPrefix = otherClothing.EquippedPrefix; clothing.RsiPath = otherClothing.RsiPath; - clothing.FemaleMask = otherClothing.FemaleMask; _itemSys.VisualsChanged(uid); Dirty(uid, clothing); diff --git a/Content.Shared/DisplacementMap/DisplacementData.cs b/Content.Shared/DisplacementMap/DisplacementData.cs new file mode 100644 index 0000000000..7bd5b580e1 --- /dev/null +++ b/Content.Shared/DisplacementMap/DisplacementData.cs @@ -0,0 +1,14 @@ +namespace Content.Shared.DisplacementMap; + +[DataDefinition] +public sealed partial class DisplacementData +{ + /// + /// allows you to attach different maps for layers of different sizes. + /// + [DataField(required: true)] + public Dictionary SizeMaps = new(); + + [DataField] + public string? ShaderOverride = "DisplacedStencilDraw"; +} diff --git a/Content.Shared/Hands/Components/HandsComponent.cs b/Content.Shared/Hands/Components/HandsComponent.cs index a7464e5bac..5fe6c61872 100644 --- a/Content.Shared/Hands/Components/HandsComponent.cs +++ b/Content.Shared/Hands/Components/HandsComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.DisplacementMap; using Content.Shared.Hands.EntitySystems; using Robust.Shared.Containers; using Robust.Shared.GameStates; @@ -77,6 +78,9 @@ public sealed partial class HandsComponent : Component /// [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan ThrowCooldown = TimeSpan.FromSeconds(0.5f); + + [DataField] + public DisplacementData? HandDisplacement; } [Serializable, NetSerializable] diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index edc8e6641c..db761ad693 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Containers; +using Content.Shared.DisplacementMap; +using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; @@ -13,19 +14,22 @@ public sealed partial class InventoryComponent : Component [DataField("speciesId")] public string? SpeciesId { get; set; } - [DataField] public Dictionary Displacements = []; - public SlotDefinition[] Slots = Array.Empty(); public ContainerSlot[] Containers = Array.Empty(); - [DataDefinition] - public sealed partial class SlotDisplacementData - { - [DataField(required: true)] - public PrototypeLayerData Layer = default!; + [DataField] + public Dictionary Displacements = new(); - [DataField] - public string? ShaderOverride = "DisplacedStencilDraw"; - } + /// + /// Alternate displacement maps, which if available, will be selected for the player of the appropriate gender. + /// + [DataField] + public Dictionary FemaleDisplacements = new(); + + /// + /// Alternate displacement maps, which if available, will be selected for the player of the appropriate gender. + /// + [DataField] + public Dictionary MaleDisplacements = new(); } diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml index 55e256c7bb..35a466ec50 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_livestock.yml @@ -231,7 +231,7 @@ - type: cargoProduct id: LivestockMothroach icon: - sprite: Mobs/Animals/mothroach.rsi + sprite: Mobs/Animals/mothroach/mothroach.rsi state: mothroach product: CrateNPCMothroach cost: 5000 diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 52a2f340ef..142619a0eb 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -296,7 +296,6 @@ sprite: Clothing/Uniforms/Jumpsuit/clown.rsi - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/clown.rsi - femaleMask: UniformTop - type: Tag tags: - ClownSuit @@ -310,7 +309,6 @@ sprite: Clothing/Uniforms/Jumpsuit/clown_banana.rsi - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/clown_banana.rsi - femaleMask: UniformTop - type: Construction graph: BananaClownJumpsuit node: jumpsuit diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml index e113f0ffc7..7d4dfc5990 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml @@ -19,8 +19,6 @@ - state: mask_null map: [ "overlay" ] - type: Clothing - femaleMask: UniformTop - maleMask: UniformTop sprite: Clothing/Uniforms/procedural.rsi clothingVisuals: jumpsuit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 6e369389a9..4837c83e94 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -468,7 +468,7 @@ insertingState: inserting_mothroach - type: MothAccent - type: Sprite - sprite: Mobs/Animals/mothroach.rsi + sprite: Mobs/Animals/mothroach/mothroach.rsi layers: - map: ["enum.DamageStateVisualLayers.Base", "movement"] state: mothroach @@ -483,7 +483,7 @@ size: Normal - type: Clothing quickEquip: false - sprite: Mobs/Animals/mothroach.rsi + sprite: Mobs/Animals/mothroach/mothroach.rsi equippedPrefix: 0 slots: - HEAD @@ -569,11 +569,44 @@ - type: FireVisuals sprite: Mobs/Effects/onfire.rsi normalState: Mouse_burning + - type: Strippable - type: SurgeryTarget - type: UserInterface interfaces: + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface enum.SurgeryUIKey.Key: type: SurgeryBui + - type: InventorySlots + - type: Inventory + speciesId: hamster + templateId: hamster + displacements: + head: + sizeMaps: + 32: + sprite: Mobs/Animals/mothroach/displacement.rsi + state: head + mask: + sizeMaps: + 32: + sprite: Mobs/Animals/mothroach/displacement.rsi + state: mask + suitstorage: + sizeMaps: + 32: + sprite: Mobs/Animals/mothroach/displacement.rsi + state: suitstorage + eyes: + sizeMaps: + 32: + sprite: Mobs/Animals/mothroach/displacement.rsi + state: eyes + neck: + sizeMaps: + 32: + sprite: Mobs/Animals/mothroach/displacement.rsi + state: neck # Note that the mallard duck is actually a male drake mallard, with the brown duck being the female variant of the same species, however ss14 lacks sex specific textures # The white duck is more akin to a pekin or call duck. diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 88822ab037..448812d48b 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -30,8 +30,6 @@ spawned: - id: FoodMeatSpider amount: 5 - - type: Inventory - templateId: arachnid - type: Reactive reactions: - reagents: [Water] @@ -85,16 +83,6 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - shader: StencilClear - sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 - # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. - # sprite refactor when - state: l_leg - - shader: StencilMask - map: ["enum.HumanoidVisualLayers.StencilMask"] - sprite: Mobs/Customization/masking_helpers.rsi - state: unisex_full - visible: false - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -132,6 +120,8 @@ - type: FootPrints leftBarePrint: "footprint-left-bare-spider" rightBarePrint: "footprint-right-bare-spider" + - type: Inventory + speciesId: arachnid - type: entity parent: BaseSpeciesDummy @@ -141,4 +131,5 @@ - type: HumanoidAppearance species: Arachnid -#88w88 + +#>88w88< diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index e425a3a87e..b2f696a44d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -17,16 +17,6 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - shader: StencilClear - sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 - # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. - # sprite refactor when - state: l_leg - - shader: StencilMask - map: ["enum.HumanoidVisualLayers.StencilMask"] - sprite: Mobs/Customization/masking_helpers.rsi - state: unisex_full - visible: false - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -351,14 +341,6 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - shader: StencilClear - sprite: Mobs/Species/Human/parts.rsi - state: l_leg - - shader: StencilMask - map: ["enum.HumanoidVisualLayers.StencilMask"] - sprite: Mobs/Customization/masking_helpers.rsi - state: unisex_full - visible: false - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -396,4 +378,4 @@ - type: UserInterface interfaces: enum.HumanoidMarkingModifierKey.Key: # sure, this can go here too - type: HumanoidMarkingModifierBoundUserInterface + type: HumanoidMarkingModifierBoundUserInterface \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 530bfe49b2..aafbe78629 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -85,8 +85,6 @@ - MobMask layer: - MobLayer - - type: Inventory - templateId: diona - type: Speech speechVerb: Plant - type: Vocal @@ -123,13 +121,27 @@ - type: FootPrints leftBarePrint: "footprint-left-bare-diona" rightBarePrint: "footprint-right-bare-diona" + - type: Inventory + templateId: diona + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy id: MobDionaDummy categories: [ HideSpawnMenu ] components: - - type: Inventory - templateId: diona - type: HumanoidAppearance species: Diona + - type: Inventory + templateId: diona + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index bb2975e201..cfd3708036 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -64,8 +64,23 @@ - SolCommon - type: LightweightDrunk boozeStrengthMultiplier: 0.5 + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy id: MobDwarfDummy categories: [ HideSpawnMenu ] + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml index b0a43551c8..406aa920c1 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml @@ -40,6 +40,14 @@ - MobMask layer: - MobLayer + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: entity parent: BaseSpeciesDummy @@ -48,3 +56,10 @@ components: - type: HumanoidAppearance species: Gingerbread + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 4310fb1c65..38d9261337 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -29,8 +29,23 @@ - TauCetiBasic - SolCommon - type: FootPrints + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy id: MobHumanDummy categories: [ HideSpawnMenu ] + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 2a4a157ecb..e75434e918 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -80,16 +80,6 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - shader: StencilClear - sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115 - # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. - # sprite refactor when - state: l_leg - - shader: StencilMask - map: [ "enum.HumanoidVisualLayers.StencilMask" ] - sprite: Mobs/Customization/masking_helpers.rsi - state: unisex_full - visible: false - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] @@ -123,6 +113,13 @@ state: "creampie_moth" visible: false - type: FootPrints + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy @@ -131,3 +128,10 @@ components: - type: HumanoidAppearance species: Moth + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index 45be82a448..1e70faeba4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -23,8 +23,6 @@ spawned: - id: FoodMeatLizard amount: 5 - - type: Inventory - speciesId: reptilian - type: LizardAccent - type: Speech speechSounds: Lizard @@ -69,6 +67,14 @@ - type: FootPrints leftBarePrint: "footprint-left-bare-lizard" rightBarePrint: "footprint-right-bare-lizard" + - type: Inventory + speciesId: reptilian + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy @@ -78,5 +84,17 @@ components: - type: HumanoidAppearance species: Reptilian + hideLayersOnEquip: + - Snout + - HeadTop + - HeadSide + - type: Inventory + speciesId: reptilian + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female #Weh diff --git a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml index 96c6185693..0117def02d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml @@ -104,11 +104,26 @@ - type: FireVisuals alternateState: Standing - type: FootPrints + - type: FlashImmunity + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: BaseSpeciesDummy id: MobSkeletonPersonDummy categories: [ HideSpawnMenu ] components: - - type: HumanoidAppearance - species: Skeleton + - type: HumanoidAppearance + species: Skeleton + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index ba04b6e5fa..b237f3f747 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -122,11 +122,25 @@ - type: FootPrints leftBarePrint: "footprint-left-bare-slime" rightBarePrint: "footprint-right-bare-slime" + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female - type: entity parent: MobHumanDummy id: MobSlimePersonDummy categories: [ HideSpawnMenu ] components: - - type: HumanoidAppearance - species: SlimePerson + - type: HumanoidAppearance + species: SlimePerson + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 62e04b5578..f2cf77bb62 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -14,18 +14,6 @@ - type: HumanoidAppearance species: Vox #- type: VoxAccent # Not yet coded - - type: Inventory - speciesId: vox - displacements: - jumpsuit: - layer: - sprite: Mobs/Species/Vox/displacement.rsi - state: jumpsuit - copyToShaderParameters: - # Value required, provide a dummy. Gets overridden when applied. - layerKey: dummy - parameterTexture: displacementMap - parameterUV: displacementUV - type: Speech speechVerb: Vox speechSounds: Vox @@ -105,6 +93,44 @@ - type: FootPrints leftBarePrint: "footprint-left-bare-lizard" rightBarePrint: "footprint-right-bare-lizard" + - type: Inventory + speciesId: vox + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: jumpsuit + eyes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: eyes + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hand + head: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: head + back: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: back + ears: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: ears + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: shoes - type: entity parent: BaseSpeciesDummy @@ -115,4 +141,41 @@ species: Vox - type: Body prototype: Vox - + - type: Inventory + speciesId: vox + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: jumpsuit + eyes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: eyes + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hand + head: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: head + back: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: back + ears: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: ears + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: shoes diff --git a/Resources/Prototypes/InventoryTemplates/hamster_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/hamster_inventory_template.yml index 3170417d9d..f48ae94e69 100644 --- a/Resources/Prototypes/InventoryTemplates/hamster_inventory_template.yml +++ b/Resources/Prototypes/InventoryTemplates/hamster_inventory_template.yml @@ -15,7 +15,7 @@ slotTexture: neck slotFlags: NECK uiWindowPos: 0,1 - strippingWindowPos: 1,0 + strippingWindowPos: 0,1 displayName: Neck whitelist: tags: @@ -24,7 +24,7 @@ slotTexture: glasses slotFlags: EYES stripTime: 3 - uiWindowPos: 0,1 + uiWindowPos: 0,2 strippingWindowPos: 0,0 displayName: Eyes whitelist: @@ -33,9 +33,8 @@ - name: suitstorage slotTexture: suit_storage slotFlags: SUITSTORAGE - slotGroup: SecondHotbar stripTime: 3 - uiWindowPos: 2,0 + uiWindowPos: 1,0 strippingWindowPos: 2,5 displayName: Suit Storage whitelist: diff --git a/Resources/Prototypes/InventoryTemplates/pet_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/pet_inventory_template.yml index 1297b65d8d..e6c2984221 100644 --- a/Resources/Prototypes/InventoryTemplates/pet_inventory_template.yml +++ b/Resources/Prototypes/InventoryTemplates/pet_inventory_template.yml @@ -4,7 +4,7 @@ - name: mask slotTexture: mask slotFlags: MASK - uiWindowPos: 1,0 + uiWindowPos: 0,2 strippingWindowPos: 1,1 displayName: Mask whitelist: @@ -14,9 +14,8 @@ - name: suitstorage slotTexture: suit_storage slotFlags: SUITSTORAGE - slotGroup: SecondHotbar stripTime: 3 - uiWindowPos: 2,0 + uiWindowPos: 0,1 strippingWindowPos: 2,5 displayName: Suit Storage whitelist: diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Uniforms/costumes.yml b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Uniforms/costumes.yml index 0ef1a5a85a..c5c7861db2 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Uniforms/costumes.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Uniforms/costumes.yml @@ -63,8 +63,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Costume/bunny.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Uniforms/Costume/bunny.rsi - # TODO: Remove the line below when the sprite accounts for FemaleMask. - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -109,8 +107,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Costume/rat.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Uniforms/Costume/rat.rsi - # TODO: Remove the line below when the sprite accounts for FemaleMask. - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -122,7 +118,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Costume/red_dress.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Uniforms/Costume/red_dress.rsi - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -134,7 +129,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Costume/swimsuit.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Uniforms/Costume/swimsuit.rsi - femaleMask: UniformTop ## old schoolgirl uniforms @@ -341,7 +335,6 @@ sprite: Nyanotrasen/Clothing/Uniforms/Costume/gakuran.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Uniforms/Costume/gakuran.rsi - femaleMask: NoMask ## mnk @@ -355,7 +348,6 @@ sprite: Nyanotrasen/Clothing/Misc/office_skirt.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/office_skirt.rsi - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -378,7 +370,6 @@ sprite: Nyanotrasen/Clothing/Misc/gym_bra.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/gym_bra.rsi - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -390,7 +381,6 @@ sprite: Nyanotrasen/Clothing/Misc/black_dress.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/black_dress.rsi - femaleMask: UniformTop - type: entity parent: ClothingUniformBase @@ -402,7 +392,6 @@ sprite: Nyanotrasen/Clothing/Misc/black_overall.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/black_overall.rsi - femaleMask: NoMask - type: entity parent: ClothingUniformSkirtBase @@ -414,7 +403,6 @@ sprite: Nyanotrasen/Clothing/Misc/exposed_shoulder.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/exposed_shoulder.rsi - femaleMask: UniformTop - type: entity parent: ClothingUniformBase @@ -426,4 +414,3 @@ sprite: Nyanotrasen/Clothing/Misc/tracksuit.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Misc/tracksuit.rsi - femaleMask: NoMask diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/mobs.yml index 6bc5c8e878..9ff3915362 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/mobs.yml @@ -6,7 +6,7 @@ - type: Sprite layers: - state: green - - sprite: Mobs/Animals/mothroach.rsi + - sprite: Mobs/Animals/mothroach/mothroach.rsi state: mothroach - state: ai - type: ConditionalSpawner diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/equipped-HAND-vox.png b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/equipped-HAND-vox.png deleted file mode 100644 index b7f2122c19..0000000000 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/equipped-HAND-vox.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json index b6aeef7f36..7c5b9dfb2b 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json @@ -21,11 +21,6 @@ { "name": "inhand-right", "directions": 4 - }, - { - "name": "equipped-HAND-vox", - "directions": 4, - "delays": [[1.0], [1.0], [1.0], [1.0]] } ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/equipped-OUTERCLOTHING-vox.png index fa32996aa8..a6546c4655 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/open-equipped-OUTERCLOTHING-vox.png index ce7c029026..2ecf1e68e0 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/equipped-OUTERCLOTHING-vox.png index 6d96d0a037..7d73e55461 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/open-equipped-OUTERCLOTHING-vox.png index f83538ee60..bcf14c7791 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/equipped-OUTERCLOTHING-vox.png index 58b84263ac..eaef945508 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/open-equipped-OUTERCLOTHING-vox.png index 547839061b..b9da47830b 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/equipped-OUTERCLOTHING-vox.png index fa9a53d373..03a4e52f7b 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/open-equipped-OUTERCLOTHING-vox.png index 9cba3e8ef3..1824ac30a7 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/equipped-OUTERCLOTHING-vox.png index e432bb2d01..38b48d0a2d 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/open-equipped-OUTERCLOTHING-vox.png index 2363b4118d..ca6d049a1f 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/equipped-OUTERCLOTHING-vox.png index 89369f8794..f99be74a5a 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/open-equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/open-equipped-OUTERCLOTHING-vox.png index 973451e5f5..d4813efe64 100644 Binary files a/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/open-equipped-OUTERCLOTHING-vox.png and b/Resources/Textures/Clothing/OuterClothing/Coats/rndcoat.rsi/open-equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/equipped-FEET-vox.png new file mode 100644 index 0000000000..77af7765e5 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/meta.json index f5bb702feb..b0c4419dda 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/combatboots.rsi/meta.json @@ -1,26 +1,30 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Made by @ninruB#7795, based off tgstation's jackboots at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by @ninruB#7795, based off tgstation's jackboots at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe. Vox state modified from jackboots.rsi by Flareguy", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/equipped-FEET-vox.png new file mode 100644 index 0000000000..dc22be4ac2 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/meta.json index 2880b8eec4..6b1053d8ea 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Drawn by Ubaser.", + "copyright": "Drawn by Ubaser. Vox states made by Flareguy, modified from magboots.rsi", "size": { "x": 32, "y": 32 @@ -15,6 +15,14 @@ "name": "on-equipped-FEET", "directions": 4 }, + { + "name": "equipped-FEET-vox", + "directions": 4 + }, + { + "name": "on-equipped-FEET-vox", + "directions": 4 + }, { "name": "icon" }, diff --git a/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/on-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/on-equipped-FEET-vox.png new file mode 100644 index 0000000000..04605be106 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/magboots-science.rsi/on-equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET-vox.png new file mode 100644 index 0000000000..ff5c3a0589 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/equipped-FEET-vox.png differ diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json index 3aa61e31c5..7c3599192c 100644 --- a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404", + "copyright": "Created by EmoGarbage404. Vox states made by Flareguy, modified from magboots.rsi", "size": { "x": 32, "y": 32 @@ -15,6 +15,14 @@ "name": "on-equipped-FEET", "directions": 4 }, + { + "name": "equipped-FEET-vox", + "directions": 4 + }, + { + "name": "on-equipped-FEET-vox", + "directions": 4 + }, { "name": "icon" }, diff --git a/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET-vox.png new file mode 100644 index 0000000000..66ae1ee7e8 Binary files /dev/null and b/Resources/Textures/Clothing/Shoes/Boots/speedboots.rsi/on-equipped-FEET-vox.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/eyes.png b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/eyes.png new file mode 100644 index 0000000000..2cb7e553b6 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/eyes.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/head.png b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/head.png new file mode 100644 index 0000000000..d77878fdcc Binary files /dev/null and b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/head.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/mask.png b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/mask.png new file mode 100644 index 0000000000..5eb6ea0163 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/mask.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/meta.json b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/meta.json new file mode 100644 index 0000000000..30fcee2998 --- /dev/null +++ b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Vermidia", + "size": { + "x": 32, + "y": 32 + }, + "load": { + "srgb": false + }, + "states": [ + { + "name": "head", + "directions": 4 + }, + { + "name": "mask", + "directions": 4 + }, + { + "name": "suitstorage", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + }, + { + "name": "neck", + "directions": 4 + } + ] +} + diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/neck.png b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/neck.png new file mode 100644 index 0000000000..c503f75e1d Binary files /dev/null and b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/neck.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/suitstorage.png b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/suitstorage.png new file mode 100644 index 0000000000..b37a81363f Binary files /dev/null and b/Resources/Textures/Mobs/Animals/mothroach/displacement.rsi/suitstorage.png differ diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/0-equipped-HELMET.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/0-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/0-equipped-HELMET.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/0-equipped-HELMET.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/icon.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/icon.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/icon.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/icon.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/inhand-left.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/inhand-left.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/inhand-left.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/inhand-right.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/inhand-right.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/inhand-right.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/meta.json b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/meta.json similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/meta.json rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/meta.json diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach-moving.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach-moving.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach-moving.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach-moving.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_dead.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_dead.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_dead.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_dead.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_lazy.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_lazy.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_lazy.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_lazy.png diff --git a/Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_sleep.png b/Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_sleep.png similarity index 100% rename from Resources/Textures/Mobs/Animals/mothroach.rsi/mothroach_sleep.png rename to Resources/Textures/Mobs/Animals/mothroach/mothroach.rsi/mothroach_sleep.png diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png index 50627ac522..9072c9f4fc 100644 Binary files a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png and b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_stenciled.png differ diff --git a/Resources/Textures/Mobs/Species/Human/displacement.rsi/jumpsuit-female.png b/Resources/Textures/Mobs/Species/Human/displacement.rsi/jumpsuit-female.png new file mode 100644 index 0000000000..be9c1064fb Binary files /dev/null and b/Resources/Textures/Mobs/Species/Human/displacement.rsi/jumpsuit-female.png differ diff --git a/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json new file mode 100644 index 0000000000..7ac587cad7 --- /dev/null +++ b/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by TheShuEd", + "size": { + "x": 32, + "y": 32 + }, + "load": { + "srgb": false + }, + "states": [ + { + "name": "jumpsuit-female", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/back.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/back.png new file mode 100644 index 0000000000..c300bba8a5 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/back.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/ears.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/ears.png new file mode 100644 index 0000000000..0b16382144 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/ears.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/eyes.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/eyes.png new file mode 100644 index 0000000000..f705c337de Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/eyes.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hand.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hand.png new file mode 100644 index 0000000000..4a0266dfd3 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hand.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/head.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/head.png new file mode 100644 index 0000000000..676262eca6 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/head.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json index 6ea6c552b9..002f826b3e 100644 --- a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by PJB3005", + "copyright": "jumpsuit state made by PJB3005. back, hand, head, and eyes states made by Flareguy, ears and shoes made by TheShuEd", "size": { "x": 32, "y": 32 @@ -13,6 +13,30 @@ { "name": "jumpsuit", "directions": 4 + }, + { + "name": "back", + "directions": 4 + }, + { + "name": "hand", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + }, + { + "name": "ears", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + }, + { + "name": "shoes", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/shoes.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/shoes.png new file mode 100644 index 0000000000..107a7500bb Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/shoes.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso.png b/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso.png index 841d409735..3910fb39a6 100644 Binary files a/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso.png and b/Resources/Textures/Mobs/Species/Vox/parts.rsi/torso.png differ