From 9a1d5367bb5e335810acc7e1eb58b6f39219a66a Mon Sep 17 00:00:00 2001 From: John 117 Date: Thu, 20 Feb 2025 17:59:25 -0500 Subject: [PATCH 1/8] inital --- .../Actions/ToggleLayersAction.cs | 47 ++++++++ .../Humanoid/HumanoidVisualLayers.cs | 2 + .../Humanoid/Markings/MarkingCategories.cs | 4 + .../InteractionVerbPrototype.cs | 1 + .../Requirements/AssortedRequirements.cs | 15 +++ .../SharedInteractionVerbsSystem.cs | 2 + .../en-US/interaction/verbs/underwear.ftl | 19 +++ Resources/Locale/en-US/markings/underwear.ftl | 41 +++++++ .../DeltaV/Entities/Mobs/Species/rodentia.yml | 2 + .../Entities/Mobs/Species/vulpkanin.yml | 2 + .../Prototypes/DeltaV/Species/rodentia.yml | 9 ++ .../Prototypes/DeltaV/Species/vulpkanin.yml | 9 ++ .../Customization/Markings/undershirt.yml | 111 ++++++++++++++++++ .../Mobs/Customization/Markings/underwear.yml | 69 +++++++++++ .../Entities/Mobs/Species/arachne.yml | 2 + .../Entities/Mobs/Species/arachnid.yml | 2 + .../Prototypes/Entities/Mobs/Species/base.yml | 4 + .../Entities/Mobs/Species/harpy.yml | 2 + .../Prototypes/Entities/Mobs/Species/moth.yml | 2 + .../Entities/Mobs/Species/shadowkin.yml | 2 + .../Interactions/underwear_interactions.yml | 38 ++++++ Resources/Prototypes/Species/arachne.yml | 9 ++ Resources/Prototypes/Species/arachnid.yml | 9 ++ Resources/Prototypes/Species/diona.yml | 9 ++ Resources/Prototypes/Species/harpy.yml | 9 ++ Resources/Prototypes/Species/human.yml | 9 ++ Resources/Prototypes/Species/ipc.yml | 2 + Resources/Prototypes/Species/moth.yml | 9 ++ Resources/Prototypes/Species/reptilian.yml | 9 ++ Resources/Prototypes/Species/shadowkin.yml | 9 ++ Resources/Prototypes/Species/skeleton.yml | 2 + Resources/Prototypes/Species/slime.yml | 9 ++ .../Customization/undershirt.rsi/meta.json | 43 +++++++ .../Customization/undershirt.rsi/snow_bra.png | Bin 0 -> 488 bytes .../undershirt.rsi/snow_sports.png | Bin 0 -> 543 bytes .../undershirt.rsi/snow_strapless.png | Bin 0 -> 435 bytes .../undershirt.rsi/t_long_undershirt.png | Bin 0 -> 786 bytes .../undershirt.rsi/t_rolled_undershirt.png | Bin 0 -> 747 bytes .../t_rolled_undershirt_sleeveless.png | Bin 0 -> 642 bytes .../undershirt.rsi/t_undershirt.png | Bin 0 -> 770 bytes .../t_undershirt_sleeveless.png | Bin 0 -> 669 bytes .../Customization/underwear.rsi/meta.json | 31 +++++ .../underwear.rsi/snow_boxers.png | Bin 0 -> 494 bytes .../underwear.rsi/snow_briefs.png | Bin 0 -> 412 bytes .../underwear.rsi/snow_lowriders.png | Bin 0 -> 490 bytes .../underwear.rsi/snow_satin.png | Bin 0 -> 452 bytes .../underwear.rsi/snow_tanga.png | Bin 0 -> 472 bytes 47 files changed, 544 insertions(+) create mode 100644 Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs create mode 100644 Resources/Locale/en-US/interaction/verbs/underwear.ftl create mode 100644 Resources/Locale/en-US/markings/underwear.ftl create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml create mode 100644 Resources/Prototypes/Interactions/underwear_interactions.yml create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/meta.json create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_bra.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_sports.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_strapless.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_long_undershirt.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt_sleeveless.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt_sleeveless.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/meta.json create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_boxers.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_briefs.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_lowriders.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_satin.png create mode 100644 Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_tanga.png diff --git a/Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs b/Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs new file mode 100644 index 00000000000..188987b4569 --- /dev/null +++ b/Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs @@ -0,0 +1,47 @@ +using Content.Server.Humanoid; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; +using Content.Shared.InteractionVerbs; + +namespace Content.Server.InteractionVerbs.Actions; + +/// +/// Toggles a humanoid visual layer. +/// +[Serializable] +public sealed partial class ToggleLayersAction : InteractionAction +{ + [DataField] + public HumanoidVisualLayers? NeededMarkingCategory; + + [DataField] + public HashSet ToggleLayers; + + public override bool CanPerform(InteractionArgs args, InteractionVerbPrototype proto, bool isBefore, VerbDependencies deps) + { + if (NeededMarkingCategory == null) + return true; + + var markingCategory = MarkingCategoriesConversion.FromHumanoidVisualLayers(NeededMarkingCategory.Value); + + return deps.EntMan.TryGetComponent(args.Target, out HumanoidAppearanceComponent? bodyAppearance) + && bodyAppearance.MarkingSet.Markings.TryGetValue(markingCategory, out var markingList) + && markingList.Count > 0; // Check if at least one entry exists + } + + public override bool Perform(InteractionArgs args, InteractionVerbPrototype proto, VerbDependencies deps) + { + if (deps.EntMan.TryGetComponent(args.Target, out var humanoidAppearance)) + { + foreach (HumanoidVisualLayers layer in ToggleLayers) + { + deps.EntMan.System().SetLayerVisibility( + args.Target, + layer, humanoidAppearance.HiddenLayers.Contains(layer) + ); + } + } + + return true; + } +} diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index 8a2353d270e..17931fd6608 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -11,6 +11,8 @@ public enum HumanoidVisualLayers : byte Hair, FacialHair, Chest, + Underwear, + Undershirt, Head, Snout, HeadSide, // side parts (i.e., frills) diff --git a/Content.Shared/Humanoid/Markings/MarkingCategories.cs b/Content.Shared/Humanoid/Markings/MarkingCategories.cs index 324c5463823..5a43ffa0ed6 100644 --- a/Content.Shared/Humanoid/Markings/MarkingCategories.cs +++ b/Content.Shared/Humanoid/Markings/MarkingCategories.cs @@ -12,6 +12,8 @@ public enum MarkingCategories : byte HeadSide, Snout, Chest, + Underwear, + Undershirt, RightArm, RightHand, LeftArm, @@ -38,6 +40,8 @@ public static MarkingCategories FromHumanoidVisualLayers(HumanoidVisualLayers la HumanoidVisualLayers.HeadSide => MarkingCategories.HeadSide, HumanoidVisualLayers.Snout => MarkingCategories.Snout, HumanoidVisualLayers.Chest => MarkingCategories.Chest, + HumanoidVisualLayers.Underwear => MarkingCategories.Underwear, + HumanoidVisualLayers.Undershirt => MarkingCategories.Undershirt, HumanoidVisualLayers.RArm => MarkingCategories.RightArm, HumanoidVisualLayers.LArm => MarkingCategories.LeftArm, HumanoidVisualLayers.RHand => MarkingCategories.RightHand, diff --git a/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs b/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs index 671e8e47184..5bf549e8f35 100644 --- a/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs +++ b/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs @@ -1,4 +1,5 @@ using Content.Shared.DoAfter; +using Content.Shared.Humanoid; using Content.Shared.InteractionVerbs.Events; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs b/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs index 9a4dd323360..d2809e6b3db 100644 --- a/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs +++ b/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs @@ -1,3 +1,4 @@ +using Content.Shared.Inventory; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Standing; @@ -71,3 +72,17 @@ public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, return (args.Target == args.User) ^ Inverted; } } + +/// +/// Requires a mob to not be wearing anything in this slot. +/// +[Serializable, NetSerializable] +public sealed partial class ClothingSlotBlacklistRequirement : InvertableInteractionRequirement +{ + [DataField] public string Slot; + + public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, InteractionAction.VerbDependencies deps) + { + return !deps.EntMan.System().TryGetSlotEntity(args.Target, Slot, out _); + } +} diff --git a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs index f8100e71c39..4b349395cb6 100644 --- a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs +++ b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Contests; using Content.Shared.DoAfter; using Content.Shared.Ghost; +using Content.Shared.Humanoid; using Content.Shared.Interaction; using Content.Shared.InteractionVerbs.Events; using Content.Shared.Popups; @@ -32,6 +33,7 @@ public abstract class SharedInteractionVerbsSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _containers = default!; [Dependency] private readonly ContestsSystem _contests = default!; [Dependency] private readonly SharedInteractionSystem _interactions = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoid = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedPopupSystem _popups = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!; diff --git a/Resources/Locale/en-US/interaction/verbs/underwear.ftl b/Resources/Locale/en-US/interaction/verbs/underwear.ftl new file mode 100644 index 00000000000..819ef8eb96b --- /dev/null +++ b/Resources/Locale/en-US/interaction/verbs/underwear.ftl @@ -0,0 +1,19 @@ +interaction-ToggleUndershirt-name = Toggle undershirt +interaction-ToggleUndershirt-description = Toggle the undershirt of this person! + +interaction-ToggleUndershirt-success-self-popup = You toggle {THE($target)}'s undershirt. +interaction-ToggleUndershirt-success-target-popup = {THE($user)} toggles your undershirt! +interaction-ToggleUndershirt-fail-self-popup = You fail to toggle the undershirt. + +interaction-ToggleUndershirt-delayed-self-popup = You try to toggle {THE($target)}'s undershirt. +interaction-ToggleUndershirt-delayed-target-popup = {THE($user)} is trying to toggle your undershirt! + +interaction-ToggleUnderwear-name = Toggle underwear +interaction-ToggleUnderwear-description = Toggle the underwear of this person! + +interaction-ToggleUnderwear-success-self-popup = You toggle {THE($target)}'s underwear. +interaction-ToggleUnderwear-success-target-popup = {THE($user)} toggles your underwear! +interaction-ToggleUnderwear-fail-self-popup = You fail to toggle the underwear. + +interaction-ToggleUnderwear-delayed-self-popup = You try to toggle {THE($target)}'s underwear. +interaction-ToggleUnderwear-delayed-target-popup = {THE($user)} is trying to toggle your underwear! diff --git a/Resources/Locale/en-US/markings/underwear.ftl b/Resources/Locale/en-US/markings/underwear.ftl new file mode 100644 index 00000000000..2caf959e76e --- /dev/null +++ b/Resources/Locale/en-US/markings/underwear.ftl @@ -0,0 +1,41 @@ +markings-category-Undershirt = Undershirt +markings-category-Underwear = Underwear + +marking-UndershirtStandard = Undershirt (Standard) +marking-UndershirtStandard-t_undershirt = Undershirt + +marking-UndershirtSleeveless = Undershirt (Sleeveless) +marking-UndershirtSleeveless-t_undershirt_sleeveless = Undershirt + +marking-UndershirtRolled = Undershirt (Rolled) +marking-UndershirtRolled-t_rolled_undershirt = Undershirt + +marking-UndershirtRolledSleeveless = Undershirt (Sleeveless Rolled) +marking-UndershirtRolledSleeveless-t_rolled_undershirt_sleeveless = Undershirt + +marking-UndershirtLong = Undershirt (Long) +marking-UndershirtLong-t_long_undershirt = Undershirt + +marking-UndershirtClassic = Bra (Classic) +marking-UndershirtClassic-snow_classic = Bra + +marking-UndershirtSports = Bra (Sport) +marking-UndershirtSports-snow_sports = Bra + +marking-UndershirtStrapless = Bra (Strapless) +marking-UndershirtStrapless-snow_strapless = Bra + +marking-UnderwearBoxers = Boxers +marking-UnderwearBoxers-snow_boxers = Boxers + +marking-UnderwearBriefs = Briefs +marking-UnderwearBriefs-snow_briefs = Briefs + +marking-UnderwearLowriders = Lowrides +marking-UnderwearLowriders-snow_lowriders = Lowrides + +marking-UnderwearSatin = Satin +marking-UnderwearSatin-snow_satin = Satin + +marking-UnderwearTanga = Tanga +marking-UnderwearTanga-snow_tanga = Tanga diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/rodentia.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/rodentia.yml index b82d6cad014..577d7b78d93 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/rodentia.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/rodentia.yml @@ -42,6 +42,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml index 51641dd0182..d4278a44819 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml @@ -33,6 +33,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/DeltaV/Species/rodentia.yml b/Resources/Prototypes/DeltaV/Species/rodentia.yml index 57c9cd89346..b7caa49cfbd 100644 --- a/Resources/Prototypes/DeltaV/Species/rodentia.yml +++ b/Resources/Prototypes/DeltaV/Species/rodentia.yml @@ -28,6 +28,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobRodentiaTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -45,6 +47,13 @@ - type: markingPoints id: MobRodentiaMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml index 520485ba9d4..9b4c356770f 100644 --- a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml @@ -21,6 +21,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobVulpkaninTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -38,6 +40,13 @@ - type: markingPoints id: MobVulpkaninMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml new file mode 100644 index 00000000000..38e2da8be3a --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml @@ -0,0 +1,111 @@ +- type: marking + id: UndershirtStandard + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: t_undershirt + +- type: marking + id: UndershirtSleeveless + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: t_undershirt_sleeveless + +- type: marking + id: UndershirtRolled + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: t_rolled_undershirt + +- type: marking + id: UndershirtRolledSleeveless + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: t_rolled_undershirt_sleeveless + +- type: marking + id: UndershirtLong + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: t_long_undershirt + +- type: marking + id: UndershirtClassic + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: snow_bra + +- type: marking + id: UndershirtSports + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: snow_sports + +- type: marking + id: UndershirtStrapless + bodyPart: Undershirt + markingCategory: Undershirt + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/undershirt.rsi + state: snow_strapless diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml new file mode 100644 index 00000000000..5b9b8cee2c2 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml @@ -0,0 +1,69 @@ +- type: marking + id: UnderwearBoxers + bodyPart: Underwear + markingCategory: Underwear + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/underwear.rsi + state: snow_boxers + +- type: marking + id: UnderwearLowriders + bodyPart: Underwear + markingCategory: Underwear + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/underwear.rsi + state: snow_lowriders + +- type: marking + id: UnderwearBriefs + bodyPart: Underwear + markingCategory: Underwear + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/underwear.rsi + state: snow_briefs + +- type: marking + id: UnderwearSatin + bodyPart: Underwear + markingCategory: Underwear + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/underwear.rsi + state: snow_satin + +- type: marking + id: UnderwearTanga + bodyPart: Underwear + markingCategory: Underwear + speciesRestriction: [Shadowkin, Diona, Arachnid, Reptilian, Moth, SlimePerson, Resomi, Rodentia, Human, Rodentia, Felinid, Oni, Vulpkanin, Harpy] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Floof/Mobs/Customization/underwear.rsi + state: snow_tanga diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml index ab4fba96311..010c54247dd 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml @@ -34,6 +34,8 @@ color: "#e8b59b" sprite: Mobs/Species/Human/parts.rsi state: l_arm + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] color: "#e8b59b" diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index e357f573f1e..309c4a3ed16 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -92,6 +92,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 02d3355b325..e66d5f4acf4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -17,6 +17,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -349,6 +351,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: ["enum.HumanoidVisualLayers.Undershirt"] + - map: ["enum.HumanoidVisualLayers.Underwear"] - shader: StencilClear sprite: Mobs/Species/Human/parts.rsi state: l_leg diff --git a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml index b3fcd565c4b..d51e488adbf 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml @@ -24,6 +24,8 @@ - map: [ "underpants" ] - map: [ "undershirt" ] - map: [ "socks" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: [ "jumpsuit" ] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index b9ce75978a8..923f91a9169 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -80,6 +80,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml b/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml index 71dabd42ab6..963b6c40f67 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml @@ -160,6 +160,8 @@ - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] - map: ["socks"] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] - map: ["underpants"] - map: ["undershirt"] - map: ["jumpsuit"] diff --git a/Resources/Prototypes/Interactions/underwear_interactions.yml b/Resources/Prototypes/Interactions/underwear_interactions.yml new file mode 100644 index 00000000000..1e473340dce --- /dev/null +++ b/Resources/Prototypes/Interactions/underwear_interactions.yml @@ -0,0 +1,38 @@ +- type: Interaction + parent: [BaseGlobal, BaseHands] + id: ToggleUndershirt + priority: -11 + delay: 6 + allowSelfInteract: true + hideByRequirement: true + requirement: + !type:ComplexRequirement + requirements: + - !type:EntityWhitelistRequirement + whitelist: + components: [HumanoidAppearance] + - !type:ClothingSlotBlacklistRequirement + slot: jumpsuit + effectSuccess: + popup: Obvious + sound: {path: /Audio/Effects/thudswoosh.ogg} + soundPerceivedByOthers: false + action: + !type:ToggleLayersAction + neededMarkingCategory: Undershirt + toggleLayers: + - Undershirt + +- type: Interaction + parent: ToggleUndershirt + id: ToggleUnderwear + priority: -12 + effectSuccess: + popup: Obvious + sound: {path: /Audio/Effects/thudswoosh.ogg} + soundPerceivedByOthers: false + action: + !type:ToggleLayersAction + neededMarkingCategory: Underwear + toggleLayers: + - Underwear diff --git a/Resources/Prototypes/Species/arachne.yml b/Resources/Prototypes/Species/arachne.yml index 7daf122a197..ab950295eb8 100644 --- a/Resources/Prototypes/Species/arachne.yml +++ b/Resources/Prototypes/Species/arachne.yml @@ -18,6 +18,13 @@ - type: markingPoints id: MobArachneMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false @@ -59,6 +66,8 @@ Head: MobHumanHead Hair: MobHumanoidAnyMarking Chest: MobHumanTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking Eyes: MobArachneEyes LArm: MobHumanLArm RArm: MobHumanRArm diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index a7965370639..4fe3b51157f 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -21,6 +21,8 @@ Head: MobArachnidHead Snout: MobHumanoidAnyMarking Chest: MobArachnidTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -45,6 +47,13 @@ id: MobArachnidMarkingLimits onlyWhitelisted: true points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 0 required: false diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index 2edd329103e..ae6a3638c31 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -21,6 +21,8 @@ HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Chest: MobDionaTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking Eyes: MobDionaEyes LArm: MobDionaLArm RArm: MobDionaRArm @@ -37,6 +39,13 @@ id: MobDionaMarkingLimits onlyWhitelisted: true points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Head: points: 2 required: false diff --git a/Resources/Prototypes/Species/harpy.yml b/Resources/Prototypes/Species/harpy.yml index bb6e04fe372..3498d0c3638 100644 --- a/Resources/Prototypes/Species/harpy.yml +++ b/Resources/Prototypes/Species/harpy.yml @@ -23,6 +23,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobHarpyTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -41,6 +43,13 @@ - type: markingPoints id: MobHarpyMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index 012fc4ba42d..7867156d0f8 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -23,6 +23,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobHumanTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking Eyes: MobHumanoidEyes LArm: MobHumanLArm RArm: MobHumanRArm @@ -40,6 +42,13 @@ - type: markingPoints id: MobHumanMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/ipc.yml b/Resources/Prototypes/Species/ipc.yml index afebc7be190..e4c9f2ab2ca 100644 --- a/Resources/Prototypes/Species/ipc.yml +++ b/Resources/Prototypes/Species/ipc.yml @@ -35,6 +35,8 @@ Wings: MobHumanoidAnyMarking Hair: MobHumanoidMarkingMatchSkin Chest: MobIPCTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking LArm: MobIPCLArm RArm: MobIPCRArm LHand: MobIPCLHand diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 23dc9a98772..3a5864dd0ba 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -19,6 +19,8 @@ Head: MobMothHead Snout: MobHumanoidAnyMarking Chest: MobMothTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -42,6 +44,13 @@ id: MobMothMarkingLimits onlyWhitelisted: true points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 0 required: false diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 0cfd6d89456..6fd8dfbf156 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -25,6 +25,8 @@ Head: MobReptilianHead Snout: MobHumanoidAnyMarking Chest: MobReptilianTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -43,6 +45,13 @@ id: MobReptilianMarkingLimits onlyWhitelisted: true points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 0 required: false diff --git a/Resources/Prototypes/Species/shadowkin.yml b/Resources/Prototypes/Species/shadowkin.yml index 7cbd752092f..e200d6cb178 100644 --- a/Resources/Prototypes/Species/shadowkin.yml +++ b/Resources/Prototypes/Species/shadowkin.yml @@ -35,6 +35,8 @@ HeadSide: MobShadowkinAnyMarkingFollowSkin Tail: MobShadowkinAnyMarkingFollowSkin Chest: MobShadowkinTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking Eyes: MobShadowkinEyes LArm: MobShadowkinLArm RArm: MobShadowkinRArm @@ -48,6 +50,13 @@ - type: markingPoints id: MobShadowkinMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Tail: points: 1 required: true diff --git a/Resources/Prototypes/Species/skeleton.yml b/Resources/Prototypes/Species/skeleton.yml index 1f2a95e9918..f43223d87cf 100644 --- a/Resources/Prototypes/Species/skeleton.yml +++ b/Resources/Prototypes/Species/skeleton.yml @@ -16,6 +16,8 @@ sprites: Head: MobSkeletonHead Chest: MobSkeletonTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking LArm: MobSkeletonLArm RArm: MobSkeletonRArm LHand: MobSkeletonLHand diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index f7b8adf2eff..754075ccc54 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -18,6 +18,8 @@ FacialHair: MobSlimeMarkingFollowSkin Snout: MobSlimeMarkingFollowSkin Chest: MobSlimeTorso + Underwear: MobHumanoidAnyMarking + Undershirt: MobHumanoidAnyMarking HeadTop: MobSlimeMarkingFollowSkin HeadSide: MobSlimeMarkingFollowSkin Tail: MobSlimeMarkingFollowSkin @@ -35,6 +37,13 @@ - type: markingPoints id: MobSlimeMarkingLimits points: + Underwear: + points: 1 + required: true + defaultMarkings: [ UnderwearBoxers ] + Undershirt: + points: 1 + required: false Hair: points: 1 required: false diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/meta.json b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/meta.json new file mode 100644 index 00000000000..a26b06084a8 --- /dev/null +++ b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/meta.json @@ -0,0 +1,43 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken and modified from cmss13 at https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/undershirt.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "t_undershirt", + "directions": 4 + }, + { + "name": "t_undershirt_sleeveless", + "directions": 4 + }, + { + "name": "t_rolled_undershirt", + "directions": 4 + }, + { + "name": "t_rolled_undershirt_sleeveless", + "directions": 4 + }, + { + "name": "t_long_undershirt", + "directions": 4 + }, + { + "name": "snow_bra", + "directions": 4 + }, + { + "name": "snow_sports", + "directions": 4 + }, + { + "name": "snow_strapless", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_bra.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_bra.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1231602f64fa83549b39669daf1c94a64eb5d9 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|VnM zPZ!6KiaBp*8TuV|5OGl#a`&8Qvg8quW@hFCCQF9&2MjwIOtwt1WDd>nnYeof&!fe> zO-EkGT6-A#Z`u@h^ylvL_ocmm>nrrJI>>N0Scowc>M%TtaCpah{dDT@O*egZeY^gw zZflnOwb!24{{^RT&+uJ-!+%S0eeS*T-D^MsD{LEzFKaV@JMOs4@b3>xH?}M14(Kq> zd2#nG@2u@_(`T2@ZCo!_d`4gVkJtL=2JM^en0OAIEZ$@zH-Da^V#{A=dp1Q|BfUI_ zEx&bIBANDu{Vdy-yRSLOX-oS*@s5*ASN;p%t$j0_K|NCHi~U1!#g1e~f#XbQ&Sf~V zkpWra#NLKhftNoeTm_G7$ofxfxWCFF>2OhwpbWRUTYX;Jv#?cPZpzpylx0L3ANag* z`|;#-i==YN$A(?k8Q7jYIle;B?fHA&LGQyZlIcGS(tUkDZT~E3_J01^ z&ruE`^8=Y?tYFPfZeGP+prU5}X14Lat+&lRh2tvo&nN%xiDTS6+j3e)+Tu-Sd`)l7 zCR~cJsq48SDxsV3f3G!X-rMAa|KIcWOnK_Rh-J>^GdJav*HNtAMlW~rA}xt)N=CbKN#Nv4{CV0e`2a*eE0p)glV~kCBPVG@O1TaS?83{ F1OUe$;b8y( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_strapless.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/snow_strapless.png new file mode 100644 index 0000000000000000000000000000000000000000..b27b44860e3406b1ee04afcc8e575d1c46785729 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R5K zr;B4q#hkaZ7UnTIin!`~+Or1w1pZ}9@pbjp&R+4}{6Y6hmf*nPljaLnENrU3S!8Zw zB6xg*N`Lmits(eBz&A zO2gmh7Ry-XbZY4J#&`W^Rp?`Nkl}8?;wV%JhhEQ1lcO)a+GFt6bw#N}v`&NP#~oEA z#_x`=t!7yyp7?w3!MLh$t=+f85}cN#_A@;1v)HO3bYSUxv6^*qjW_aoj>~u@iE(BW n#?^cId}j|i!h~V-MDY*YnH^m#5~6%SvB2Qz>gTe~DWM4flD)2N literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_long_undershirt.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_long_undershirt.png new file mode 100644 index 0000000000000000000000000000000000000000..3e16fc0a532bb02269adadf2d4cdf2ac7885bce0 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1U2Ka=y&YnGc!GZ-_wrqL)`0>@NR}UXP{PgM5y?giW+qdua>(?hvoapN6 zs;Q~DbLUP+N5`Bwb9#Du&YU^3Zr!?L$Bw0>q_noS0!=by(!T|y#7lzwg8yR$49^^% z#Q~LY7I;J!GcfQS0b$0e+I-SLL5ULAh?3y^w370~qEv=}#LT=BJwMkF1yemkJ>#C; z#tJ|++fpMu(>y)37&w3&Rt70XRt82O%L|C5p=?kHXfQH^#hHL?Lq;YB0U#X(#F_0Z zVDT&<8w7aD85v#x0}4i?S;_#En!wJ$0#s>WWNg5=0Aec0M%D!olcoUKAixAPmkF#g z$kGDHg6c9fFaXJNEl#Sz3;S;yfa zy|mXbN;1~CWzMd3i;e2J*Su?dzhJA$NjGCk(}=%-c^-~ z5B7ULnD@%~YK+y}G^+jBmJlab*tUb=3{Xqvk%Ablk)8>BECNt6UE5$~j@&p!47%!}ip@I~cit#fg0=Xt;fpS1eDd{!l7o z{q3EduHxK{-{*5YI%ckZkh_v?LOrV---lAo2f@o$tN9sDW-;Vpc37kJCUT#m_@6Gd hjHUzi+&S{CV0va?@O1TaS?83{1OS^R8{Yr` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt.png new file mode 100644 index 0000000000000000000000000000000000000000..786eb63f4d72bfecdf4a2ee874a522eb8977fa3d GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0p2l#}z&YnGc!GZ;A*RFl~^y$^BR}UXPym#;3$B!Rx*|KH%^5rK_o~)^< zIdS5|>({UM?b~5n9ZN|`S-*Zg&^)d4wflgSWJ!=; z@P8bDfzgC(J5Uj4fk$L90|Va?5N4dJ%_j{MlqhkHC<)F_D=AMbN@WO0%*-p%^K%VR zFx4~EGw#`KtN>KAEj7Y3&C^qhfdj~4WsqWIWncudynt95$_9mm1|u_AoC(M_WMpCx z0Mb!FoY~F-7S95*L4c>6k>Ld}z+g0*r3^r+3G56kK$QkY#s-WFAf|$BWL*F;X$p`H z0!%=2nZPQ8EG>X6s4hbT1CT7|(lgE*?!NB=Mv0uKi(^QH``c-!`wlDcxE4C~-rf^E z>(l>utFjc|Lg7s>&P>|eVK80hWX=Zf`XyYe9Dam1GC$CF@T{7V?t1wbH$zO#?H7GZ z3uo=Nspr0s{GsCo^ZF8f_oA%Z({lcaS?me=aF2c0qd;Nv5|=r`mU~{xO_qJTK%UK> z$F^iw^2<5T^v)L_on z=NX=2lCw{U_2GA$a7oMfNN287v?>Wa`*1ZSkVLuHBVPRmvv4FO#rte+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt_sleeveless.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_rolled_undershirt_sleeveless.png new file mode 100644 index 0000000000000000000000000000000000000000..59d93e8ef73fe820f782c7ae0fe226306f9dd37c GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0Z1^9%xE?BT&@7}#vuU(~4C?Ynd5 z&ieK1fy!6h{~QUV_)3EOg8w4}2G;|3P5@;%3p^r=feMa*FymBhK53w!M2TxeNpOBz zNqJ&XDnmeGW?qS&pKFMMsh**panEjJ1)!R3sS%!Oo}O9^96$~$gA^kx10#^-1;o-& zHpq7xjLcwhCLr68k%>V7NJjy2W;+X5JPXJM0iJS3h8Msx> z8!#?_m$Nv;eZ8x(p2rK(d@m&p2r+eabD4E@NMx@5dD88O?aO_l2j&Sa+p;=6$KbbF$_>^N zAmyd(KOdyqeEPt*Ca&Gd*EY=F?ysU=LE{4^aSkB0faULhKlkz_ybeV(HN8AvIe!hE z@cn>vat6aZ`R@yb@~s&2dp0&aKQ4W6ucBI$k$xJ}O@ZXbDa8jhrJeS93*U=yw|n07 oeEpJ%WlBG|#CJFp94y_-uxRmdi~jQC3LuYry85}Sb4q9e06*r?xc~qF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt.png new file mode 100644 index 0000000000000000000000000000000000000000..9e953adc767050b3989ff510ada77a4a45c11dea GIT binary patch literal 770 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0p1o(uw&YnGc!GZ;A*RFl~^y$^BR}UXPym#;3$B!Rx*|O#2$&)oTH78D- zc>VhIzJ2@d+_}@y(J^PvoSvSZGiT1MTet4mv12JIDXp!oK*IzZ<&OXP`RVo;pQ`+$>M z@9y&zHetNX;(Ng4;LWDW$YB0Lh6B6KRL+^uB>7P;k>$*1eTCMKeHy&23N}ego(4R-8fG!yxO9l$jx%h5{|>zc`POUdwJVsu zGW?2O@Qh(zJJYRHt6fJlQ)el(-eFi0+4|i_Z$gv&MWEe(wkO=b&ye&mvhr?f*bPvC Ndb;|#taD0e0ssJa9Etz{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt_sleeveless.png b/Resources/Textures/Floof/Mobs/Customization/undershirt.rsi/t_undershirt_sleeveless.png new file mode 100644 index 0000000000000000000000000000000000000000..96432de20d74eb9c60842620bfbe81263a6eb36b GIT binary patch literal 669 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E2l#}zE?BT&@7}#vuU(~4C?Ynd5 z4p6Pm*;*qY#aj~O7yKUyFxb9OY6D7e7I;J!GcfQS0b$0e+I-SLL5ULAh?3y^w370~ zqEv=}#LT=BJwMkF1yemkJ>#C;#tJ|++fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^-P zG#Ht|;!HrcAtMum0FaIX;>>myuy_`b4FWvnj0`V;0RW@XEM)*nO<-qW0je}GGB#jb z05KJ0BkKZ)NmGDq5MTnD%LG;#WN86pL3J4#7=UCsm!5InaQA%|Fo+pET^vIq+}}=f z6lzxBab*_T^5XCL+bjib4ha`;y;RFz_^<9+=-OcB>(gf(U^%mxiNP;*^}=tt1$B$d zKCgQww^h99!Q5gyA6CZX9*y5&8&mEQ2*eh`7%AMfbKPUeXR5M^qW)e0~tB5lA zlittceT(75>?!419;x@H&XDZObjz?8X5i(ooFBZ<{+VQg-ipHqofvGG&#>Cad{{MW zrlZ694?7#~zqJ?pU@G%DzOk)&&x#{w3V5EsQk$3R>(?5%p<>#*JhdMj!ZR9vZhx@r Y-u{bQS5>~h6$%O$Pgg&ebxsLQ0M>xy4gdfE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/meta.json b/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/meta.json new file mode 100644 index 00000000000..78d8f7eab41 --- /dev/null +++ b/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Take from https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/underwear.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "snow_boxers", + "directions": 4 + }, + { + "name": "snow_lowriders", + "directions": 4 + }, + { + "name": "snow_briefs", + "directions": 4 + }, + { + "name": "snow_satin", + "directions": 4 + }, + { + "name": "snow_tanga", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_boxers.png b/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_boxers.png new file mode 100644 index 0000000000000000000000000000000000000000..e49b8b72773cd8a9a0daa6806fefd6285e418abe GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|Vm% zPZ!6KiaBp*ZS-Su6lkj#l5b^_T3N%UmAtT(cbeIa-#p(gMR)-@8y`uo*l@6^+;T2= z^~{(JH)6|rfBx53+`d!UeDnRcaw^8^3hqn}eJl+!oD7yi3`HsoPdpe-Ok|j#%m|S< zQu8y(D%b7s!}Ztqms#&wAI2_$$Y{+W*-d{aucW><ns`V zb`{3IZXNqGdM(5FJeji0T&J9K{Lc&y$|}bD?1mS+O_`4*10#^Z)78&qol`;+0AQfY AqyPW_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_briefs.png b/Resources/Textures/Floof/Mobs/Customization/underwear.rsi/snow_briefs.png new file mode 100644 index 0000000000000000000000000000000000000000..2eab274ab7ec0f6e68fc4c4d91795e455f688cf6 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TR< zr;B4q#hkaZHu4@a5OLw}3=DE$7ByayqQ{mXaO#W$tFOi;?+5M@lG+@#?Cp=;H5GcP58EmIfJ421_A^A{B-w9t>wnh1j(Z$@ zSto$ww14sC?EHPdSt1_f?Up&4wf5_awl&5S@F>9 z`whk^k9O|!J5NS~ta`$wU3My<1>1b*@7NfwvVBtc?M+`d|GBY#;LeEXmGFf;c z)<-RAajGc$+qP2U&!+z-+nm3D>-D3zl1DZ&bR;th9A{GKV|9?>Zmi_OMRJ8S;{N(9BwYeR1 zXU*2`(L46L#_q$@iZ8EY^6I{+9}qayp3Yd4A$C!HP2#_A8>I#EX20F3pg28;k%#MB zecX1l9;T&NTE6!i&r9FTXy5&%hA)!oP)E7wvDcnGloPH}i~d9!zoSN^^!C36p4e(WqA z^(<7}Lx3&k?e;tU(U-PHKQ?SH+NoQ~-2JR!gORdc!``YdESujgzihU4Wy>Sa4gFsk yj{jKyMv1X@9j8T@^OpD;`TuN+pa867ynkWYWf%E&mmFZ^F?hQAxvXR6sa(PB^u_; zmY;U|g70#3`~Oz+H{O1)F41Xn|I?+z9Tzb|Lq;q<O+Vpq(R?TZm+N?e-bNK7szmA(-x~8ZwUhUFZeYoW>(~{Lr znJV%hnfumWl0XKh`^Z;VOw$JAZZhgr_1FVa+am&wog? dK!d7=QOIHMELj=dSHP%Z@O1TaS?83{1OT>K!q5N! literal 0 HcmV?d00001 From f2e7614aac6342784deb0fa53a5f5c7f3cd2d5e4 Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 06:48:06 -0500 Subject: [PATCH 2/8] fixes --- .../ClothingSlotBlacklistRequirement.cs | 20 +++++++++++++++++++ .../Humanoid/HumanoidVisualLayers.cs | 4 ++-- .../Humanoid/Markings/MarkingCategories.cs | 8 ++++---- .../InteractionVerbPrototype.cs | 1 - .../Requirements/AssortedRequirements.cs | 15 -------------- .../SharedInteractionVerbsSystem.cs | 1 - .../Entities/Mobs/Species/arachne.yml | 4 ++-- .../Entities/Mobs/Species/arachnid.yml | 4 ++-- .../Prototypes/Entities/Mobs/Species/base.yml | 8 ++++---- .../Entities/Mobs/Species/harpy.yml | 4 ++-- .../Prototypes/Entities/Mobs/Species/moth.yml | 4 ++-- .../Entities/Mobs/Species/shadowkin.yml | 4 ++-- .../Customization/Markings/undershirt.yml | 0 .../Mobs/Customization/Markings/underwear.yml | 0 Resources/Prototypes/Species/arachne.yml | 6 +----- 15 files changed, 41 insertions(+), 42 deletions(-) create mode 100644 Content.Shared/Floofstation/InteractionVerbs/Requirements/ClothingSlotBlacklistRequirement.cs rename Resources/Prototypes/{ => Floof}/Entities/Mobs/Customization/Markings/undershirt.yml (100%) rename Resources/Prototypes/{ => Floof}/Entities/Mobs/Customization/Markings/underwear.yml (100%) diff --git a/Content.Shared/Floofstation/InteractionVerbs/Requirements/ClothingSlotBlacklistRequirement.cs b/Content.Shared/Floofstation/InteractionVerbs/Requirements/ClothingSlotBlacklistRequirement.cs new file mode 100644 index 00000000000..befc4e35174 --- /dev/null +++ b/Content.Shared/Floofstation/InteractionVerbs/Requirements/ClothingSlotBlacklistRequirement.cs @@ -0,0 +1,20 @@ +using Content.Shared.InteractionVerbs; +using Content.Shared.Inventory; +using Robust.Shared.Serialization; + +namespace Content.Shared.Floofstation.InteractionVerbs.Requirements; + + +/// +/// Requires a mob to not be wearing anything in this slot. +/// +[Serializable, NetSerializable] +public sealed partial class ClothingSlotBlacklistRequirement : InvertableInteractionRequirement +{ + [DataField] public string Slot; + + public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, InteractionAction.VerbDependencies deps) + { + return !deps.EntMan.System().TryGetSlotEntity(args.Target, Slot, out _); + } +} diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index 17931fd6608..3aa3f767057 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -11,8 +11,8 @@ public enum HumanoidVisualLayers : byte Hair, FacialHair, Chest, - Underwear, - Undershirt, + Underwear, // Floof, add underwear + Undershirt, // Floof, add underwear Head, Snout, HeadSide, // side parts (i.e., frills) diff --git a/Content.Shared/Humanoid/Markings/MarkingCategories.cs b/Content.Shared/Humanoid/Markings/MarkingCategories.cs index 5a43ffa0ed6..9e71da6764f 100644 --- a/Content.Shared/Humanoid/Markings/MarkingCategories.cs +++ b/Content.Shared/Humanoid/Markings/MarkingCategories.cs @@ -12,8 +12,8 @@ public enum MarkingCategories : byte HeadSide, Snout, Chest, - Underwear, - Undershirt, + Underwear, // Floof, add underwear + Undershirt, // Floof, add underwear RightArm, RightHand, LeftArm, @@ -40,8 +40,8 @@ public static MarkingCategories FromHumanoidVisualLayers(HumanoidVisualLayers la HumanoidVisualLayers.HeadSide => MarkingCategories.HeadSide, HumanoidVisualLayers.Snout => MarkingCategories.Snout, HumanoidVisualLayers.Chest => MarkingCategories.Chest, - HumanoidVisualLayers.Underwear => MarkingCategories.Underwear, - HumanoidVisualLayers.Undershirt => MarkingCategories.Undershirt, + HumanoidVisualLayers.Underwear => MarkingCategories.Underwear, // Floof, add underwear + HumanoidVisualLayers.Undershirt => MarkingCategories.Undershirt, // Floof, add underwear HumanoidVisualLayers.RArm => MarkingCategories.RightArm, HumanoidVisualLayers.LArm => MarkingCategories.LeftArm, HumanoidVisualLayers.RHand => MarkingCategories.RightHand, diff --git a/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs b/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs index 5bf549e8f35..671e8e47184 100644 --- a/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs +++ b/Content.Shared/InteractionVerbs/InteractionVerbPrototype.cs @@ -1,5 +1,4 @@ using Content.Shared.DoAfter; -using Content.Shared.Humanoid; using Content.Shared.InteractionVerbs.Events; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs b/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs index d2809e6b3db..9a4dd323360 100644 --- a/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs +++ b/Content.Shared/InteractionVerbs/Requirements/AssortedRequirements.cs @@ -1,4 +1,3 @@ -using Content.Shared.Inventory; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Standing; @@ -72,17 +71,3 @@ public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, return (args.Target == args.User) ^ Inverted; } } - -/// -/// Requires a mob to not be wearing anything in this slot. -/// -[Serializable, NetSerializable] -public sealed partial class ClothingSlotBlacklistRequirement : InvertableInteractionRequirement -{ - [DataField] public string Slot; - - public override bool IsMet(InteractionArgs args, InteractionVerbPrototype proto, InteractionAction.VerbDependencies deps) - { - return !deps.EntMan.System().TryGetSlotEntity(args.Target, Slot, out _); - } -} diff --git a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs index 4b349395cb6..da44e26d0b8 100644 --- a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs +++ b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs @@ -33,7 +33,6 @@ public abstract class SharedInteractionVerbsSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _containers = default!; [Dependency] private readonly ContestsSystem _contests = default!; [Dependency] private readonly SharedInteractionSystem _interactions = default!; - [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoid = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedPopupSystem _popups = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!; diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml index 010c54247dd..fa8d6550f5f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml @@ -34,8 +34,8 @@ color: "#e8b59b" sprite: Mobs/Species/Human/parts.rsi state: l_arm - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] color: "#e8b59b" diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 309c4a3ed16..7153fa8842a 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -92,8 +92,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index e66d5f4acf4..95b9cd7309d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -17,8 +17,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -351,8 +351,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: ["enum.HumanoidVisualLayers.Undershirt"] - - map: ["enum.HumanoidVisualLayers.Underwear"] + - map: ["enum.HumanoidVisualLayers.Undershirt"] # Floof, add underwear + - map: ["enum.HumanoidVisualLayers.Underwear"] # Floof, add underwear - shader: StencilClear sprite: Mobs/Species/Human/parts.rsi state: l_leg diff --git a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml index d51e488adbf..2105586b0f0 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml @@ -24,8 +24,8 @@ - map: [ "underpants" ] - map: [ "undershirt" ] - map: [ "socks" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: [ "jumpsuit" ] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 923f91a9169..d1f86f339a2 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -80,8 +80,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml b/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml index 963b6c40f67..ea8053ff8d3 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/shadowkin.yml @@ -160,8 +160,8 @@ - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] - map: ["socks"] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.Underwear" ] # Floof, add underwear + - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # Floof, add underwear - map: ["underpants"] - map: ["undershirt"] - map: ["jumpsuit"] diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml b/Resources/Prototypes/Floof/Entities/Mobs/Customization/Markings/undershirt.yml similarity index 100% rename from Resources/Prototypes/Entities/Mobs/Customization/Markings/undershirt.yml rename to Resources/Prototypes/Floof/Entities/Mobs/Customization/Markings/undershirt.yml diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml b/Resources/Prototypes/Floof/Entities/Mobs/Customization/Markings/underwear.yml similarity index 100% rename from Resources/Prototypes/Entities/Mobs/Customization/Markings/underwear.yml rename to Resources/Prototypes/Floof/Entities/Mobs/Customization/Markings/underwear.yml diff --git a/Resources/Prototypes/Species/arachne.yml b/Resources/Prototypes/Species/arachne.yml index ab950295eb8..04e9fa634eb 100644 --- a/Resources/Prototypes/Species/arachne.yml +++ b/Resources/Prototypes/Species/arachne.yml @@ -18,13 +18,9 @@ - type: markingPoints id: MobArachneMarkingLimits points: - Underwear: - points: 1 - required: true - defaultMarkings: [ UnderwearBoxers ] Undershirt: points: 1 - required: false + required: false # Floof, add underwear Hair: points: 1 required: false From e8a562f9711a5d03f0522cd322bb9f72d2e5c51c Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 06:53:48 -0500 Subject: [PATCH 3/8] more fixes --- .../InteractionVerbs/Actions/ToggleLayersAction.cs | 2 +- .../InteractionVerbs/SharedInteractionVerbsSystem.cs | 1 - Resources/Prototypes/Species/arachnid.yml | 8 ++++---- Resources/Prototypes/Species/diona.yml | 8 ++++---- Resources/Prototypes/Species/harpy.yml | 8 ++++---- Resources/Prototypes/Species/human.yml | 8 ++++---- Resources/Prototypes/Species/ipc.yml | 4 ++-- Resources/Prototypes/Species/moth.yml | 8 ++++---- Resources/Prototypes/Species/reptilian.yml | 8 ++++---- Resources/Prototypes/Species/shadowkin.yml | 8 ++++---- Resources/Prototypes/Species/skeleton.yml | 4 ++-- Resources/Prototypes/Species/slime.yml | 8 ++++---- 12 files changed, 37 insertions(+), 38 deletions(-) rename Content.Server/{ => FloofStation}/InteractionVerbs/Actions/ToggleLayersAction.cs (96%) diff --git a/Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs b/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs similarity index 96% rename from Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs rename to Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs index 188987b4569..f7b69b6cafc 100644 --- a/Content.Server/InteractionVerbs/Actions/ToggleLayersAction.cs +++ b/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs @@ -3,7 +3,7 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.InteractionVerbs; -namespace Content.Server.InteractionVerbs.Actions; +namespace Content.Server.Floofstation.InteractionVerbs.Actions; /// /// Toggles a humanoid visual layer. diff --git a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs index da44e26d0b8..f8100e71c39 100644 --- a/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs +++ b/Content.Shared/InteractionVerbs/SharedInteractionVerbsSystem.cs @@ -4,7 +4,6 @@ using Content.Shared.Contests; using Content.Shared.DoAfter; using Content.Shared.Ghost; -using Content.Shared.Humanoid; using Content.Shared.Interaction; using Content.Shared.InteractionVerbs.Events; using Content.Shared.Popups; diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 4fe3b51157f..66e9b3aacc0 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -21,8 +21,8 @@ Head: MobArachnidHead Snout: MobHumanoidAnyMarking Chest: MobArachnidTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -50,10 +50,10 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: points: 1 - required: false + required: false # Floof, add underwear Hair: points: 0 required: false diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index ae6a3638c31..689b57018f5 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -21,8 +21,8 @@ HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Chest: MobDionaTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear Eyes: MobDionaEyes LArm: MobDionaLArm RArm: MobDionaRArm @@ -42,10 +42,10 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: points: 1 - required: false + required: false # Floof, add underwear Head: points: 2 required: false diff --git a/Resources/Prototypes/Species/harpy.yml b/Resources/Prototypes/Species/harpy.yml index 3498d0c3638..55676f30d3f 100644 --- a/Resources/Prototypes/Species/harpy.yml +++ b/Resources/Prototypes/Species/harpy.yml @@ -23,8 +23,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobHarpyTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -46,9 +46,9 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: - points: 1 + points: 1 # Floof, add underwear required: false Hair: points: 1 diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index 7867156d0f8..88433dedf6d 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -23,8 +23,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobHumanTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear Eyes: MobHumanoidEyes LArm: MobHumanLArm RArm: MobHumanRArm @@ -45,10 +45,10 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: points: 1 - required: false + required: false # Floof, add underwear Hair: points: 1 required: false diff --git a/Resources/Prototypes/Species/ipc.yml b/Resources/Prototypes/Species/ipc.yml index e4c9f2ab2ca..10003dd2ad2 100644 --- a/Resources/Prototypes/Species/ipc.yml +++ b/Resources/Prototypes/Species/ipc.yml @@ -35,8 +35,8 @@ Wings: MobHumanoidAnyMarking Hair: MobHumanoidMarkingMatchSkin Chest: MobIPCTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear LArm: MobIPCLArm RArm: MobIPCRArm LHand: MobIPCLHand diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 3a5864dd0ba..7254d605ced 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -19,8 +19,8 @@ Head: MobMothHead Snout: MobHumanoidAnyMarking Chest: MobMothTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -47,9 +47,9 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: - points: 1 + points: 1 # Floof, add underwear required: false Hair: points: 0 diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 6fd8dfbf156..29d3270c463 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -25,8 +25,8 @@ Head: MobReptilianHead Snout: MobHumanoidAnyMarking Chest: MobReptilianTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking @@ -48,9 +48,9 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: - points: 1 + points: 1 # Floof, add underwear required: false Hair: points: 0 diff --git a/Resources/Prototypes/Species/shadowkin.yml b/Resources/Prototypes/Species/shadowkin.yml index e200d6cb178..dc6d23ef0b2 100644 --- a/Resources/Prototypes/Species/shadowkin.yml +++ b/Resources/Prototypes/Species/shadowkin.yml @@ -35,8 +35,8 @@ HeadSide: MobShadowkinAnyMarkingFollowSkin Tail: MobShadowkinAnyMarkingFollowSkin Chest: MobShadowkinTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear Eyes: MobShadowkinEyes LArm: MobShadowkinLArm RArm: MobShadowkinRArm @@ -53,10 +53,10 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: points: 1 - required: false + required: false # Floof, add underwear Tail: points: 1 required: true diff --git a/Resources/Prototypes/Species/skeleton.yml b/Resources/Prototypes/Species/skeleton.yml index f43223d87cf..4c4066e18f1 100644 --- a/Resources/Prototypes/Species/skeleton.yml +++ b/Resources/Prototypes/Species/skeleton.yml @@ -16,8 +16,8 @@ sprites: Head: MobSkeletonHead Chest: MobSkeletonTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear LArm: MobSkeletonLArm RArm: MobSkeletonRArm LHand: MobSkeletonLHand diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index 754075ccc54..60c36c6fdc0 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -18,8 +18,8 @@ FacialHair: MobSlimeMarkingFollowSkin Snout: MobSlimeMarkingFollowSkin Chest: MobSlimeTorso - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + Underwear: MobHumanoidAnyMarking # Floof, add underwear + Undershirt: MobHumanoidAnyMarking # Floof, add underwear HeadTop: MobSlimeMarkingFollowSkin HeadSide: MobSlimeMarkingFollowSkin Tail: MobSlimeMarkingFollowSkin @@ -40,10 +40,10 @@ Underwear: points: 1 required: true - defaultMarkings: [ UnderwearBoxers ] + defaultMarkings: [ UnderwearBoxers ] # Floof, add underwear Undershirt: points: 1 - required: false + required: false # Floof, add underwear Hair: points: 1 required: false From e9895facd4ba25dc6a9187bb7f4188e6c7a2956b Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 06:55:40 -0500 Subject: [PATCH 4/8] yay --- .../Locale/en-US/{ => Floof}/interaction/verbs/underwear.ftl | 0 Resources/Locale/en-US/{ => Floof}/markings/underwear.ftl | 0 .../{ => Floof}/Interactions/underwear_interactions.yml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename Resources/Locale/en-US/{ => Floof}/interaction/verbs/underwear.ftl (100%) rename Resources/Locale/en-US/{ => Floof}/markings/underwear.ftl (100%) rename Resources/Prototypes/{ => Floof}/Interactions/underwear_interactions.yml (100%) diff --git a/Resources/Locale/en-US/interaction/verbs/underwear.ftl b/Resources/Locale/en-US/Floof/interaction/verbs/underwear.ftl similarity index 100% rename from Resources/Locale/en-US/interaction/verbs/underwear.ftl rename to Resources/Locale/en-US/Floof/interaction/verbs/underwear.ftl diff --git a/Resources/Locale/en-US/markings/underwear.ftl b/Resources/Locale/en-US/Floof/markings/underwear.ftl similarity index 100% rename from Resources/Locale/en-US/markings/underwear.ftl rename to Resources/Locale/en-US/Floof/markings/underwear.ftl diff --git a/Resources/Prototypes/Interactions/underwear_interactions.yml b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml similarity index 100% rename from Resources/Prototypes/Interactions/underwear_interactions.yml rename to Resources/Prototypes/Floof/Interactions/underwear_interactions.yml From 11e5f418f4f20c41bd921675b9f55d0e9d66a7dd Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 06:59:52 -0500 Subject: [PATCH 5/8] a --- .../FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs b/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs index f7b69b6cafc..bd80cd52436 100644 --- a/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs +++ b/Content.Server/FloofStation/InteractionVerbs/Actions/ToggleLayersAction.cs @@ -3,7 +3,7 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.InteractionVerbs; -namespace Content.Server.Floofstation.InteractionVerbs.Actions; +namespace Content.Server.FloofStation.InteractionVerbs.Actions; /// /// Toggles a humanoid visual layer. From a2f2f6dd93079f35a57ff5588751ccad1d739e10 Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 07:02:04 -0500 Subject: [PATCH 6/8] make faster --- .../Prototypes/Floof/Interactions/underwear_interactions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml index 1e473340dce..a961453cbb5 100644 --- a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml +++ b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml @@ -2,7 +2,7 @@ parent: [BaseGlobal, BaseHands] id: ToggleUndershirt priority: -11 - delay: 6 + delay: 3.5 allowSelfInteract: true hideByRequirement: true requirement: From 37f0054bf80b5152371bdea3a6a6861ff9f5b64c Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 07:02:16 -0500 Subject: [PATCH 7/8] fr now --- .../Prototypes/Floof/Interactions/underwear_interactions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml index a961453cbb5..87fdf34912c 100644 --- a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml +++ b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml @@ -2,7 +2,7 @@ parent: [BaseGlobal, BaseHands] id: ToggleUndershirt priority: -11 - delay: 3.5 + delay: 2.5 allowSelfInteract: true hideByRequirement: true requirement: From 6c13282330486ceb6c935be34d1629bb81efc365 Mon Sep 17 00:00:00 2001 From: John 117 Date: Fri, 21 Feb 2025 07:02:40 -0500 Subject: [PATCH 8/8] yea --- .../Prototypes/Floof/Interactions/underwear_interactions.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml index 87fdf34912c..c990aa5996e 100644 --- a/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml +++ b/Resources/Prototypes/Floof/Interactions/underwear_interactions.yml @@ -2,7 +2,7 @@ parent: [BaseGlobal, BaseHands] id: ToggleUndershirt priority: -11 - delay: 2.5 + delay: 3 allowSelfInteract: true hideByRequirement: true requirement: @@ -27,6 +27,7 @@ parent: ToggleUndershirt id: ToggleUnderwear priority: -12 + delay: 2.2 effectSuccess: popup: Obvious sound: {path: /Audio/Effects/thudswoosh.ogg}