Add undergarments & "Censor Nudity" toggle to options (#33185)

* Initial commit

* Attribution

* Review changes

* Added comment for upstream
This commit is contained in:
SlamBamActionman 2025-03-05 10:14:01 +01:00 committed by deltanedas
parent 544e710fc8
commit 48b7cd8d39
65 changed files with 534 additions and 275 deletions

View File

@ -1,8 +1,10 @@
using Content.Shared.CCVar;
using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Markings;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Preferences;
using Robust.Client.GameObjects;
using Robust.Shared.Configuration;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@ -12,12 +14,15 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly MarkingManager _markingManager = default!;
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HumanoidAppearanceComponent, AfterAutoHandleStateEvent>(OnHandleState);
Subs.CVar(_configurationManager, CCVars.AccessibilityClientCensorNudity, OnCvarChanged, true);
Subs.CVar(_configurationManager, CCVars.AccessibilityServerCensorNudity, OnCvarChanged, true);
}
private void OnHandleState(EntityUid uid, HumanoidAppearanceComponent component, ref AfterAutoHandleStateEvent args)
@ -25,6 +30,15 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
UpdateSprite(component, Comp<SpriteComponent>(uid));
}
private void OnCvarChanged(bool value)
{
var humanoidQuery = EntityManager.AllEntityQueryEnumerator<HumanoidAppearanceComponent, SpriteComponent>();
while (humanoidQuery.MoveNext(out var _, out var humanoidComp, out var spriteComp))
{
UpdateSprite(humanoidComp, spriteComp);
}
}
private void UpdateSprite(HumanoidAppearanceComponent component, SpriteComponent sprite)
{
UpdateLayers(component, sprite);
@ -209,16 +223,30 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
// Really, markings should probably be a separate component altogether.
ClearAllMarkings(humanoid, sprite);
var censorNudity = _configurationManager.GetCVar(CCVars.AccessibilityClientCensorNudity) ||
_configurationManager.GetCVar(CCVars.AccessibilityServerCensorNudity);
// The reason we're splitting this up is in case the character already has undergarment equipped in that slot.
var applyUndergarmentTop = censorNudity;
var applyUndergarmentBottom = censorNudity;
foreach (var markingList in humanoid.MarkingSet.Markings.Values)
{
foreach (var marking in markingList)
{
if (_markingManager.TryGetMarking(marking, out var markingPrototype))
{
ApplyMarking(markingPrototype, marking.MarkingColors, marking.Visible, humanoid, sprite);
if (markingPrototype.BodyPart == HumanoidVisualLayers.UndergarmentTop)
applyUndergarmentTop = false;
else if (markingPrototype.BodyPart == HumanoidVisualLayers.UndergarmentBottom)
applyUndergarmentBottom = false;
}
}
}
humanoid.ClientOldMarkings = new MarkingSet(humanoid.MarkingSet);
AddUndergarments(humanoid, sprite, applyUndergarmentTop, applyUndergarmentBottom);
}
private void ClearAllMarkings(HumanoidAppearanceComponent humanoid, SpriteComponent sprite)
@ -266,6 +294,31 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
spriteComp.RemoveLayer(index);
}
}
private void AddUndergarments(HumanoidAppearanceComponent humanoid, SpriteComponent sprite, bool undergarmentTop, bool undergarmentBottom)
{
if (undergarmentTop && humanoid.UndergarmentTop != null)
{
var marking = new Marking(humanoid.UndergarmentTop, new List<Color> { new Color() });
if (_markingManager.TryGetMarking(marking, out var prototype))
{
// Markings are added to ClientOldMarkings because otherwise it causes issues when toggling the feature on/off.
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentTop, new List<Marking>{ marking });
ApplyMarking(prototype, null, true, humanoid, sprite);
}
}
if (undergarmentBottom && humanoid.UndergarmentBottom != null)
{
var marking = new Marking(humanoid.UndergarmentBottom, new List<Color> { new Color() });
if (_markingManager.TryGetMarking(marking, out var prototype))
{
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentBottom, new List<Marking>{ marking });
ApplyMarking(prototype, null, true, humanoid, sprite);
}
}
}
private void ApplyMarking(MarkingPrototype markingPrototype,
IReadOnlyList<Color>? colors,
bool visible,

View File

@ -4,6 +4,8 @@
<BoxContainer Orientation="Vertical">
<ScrollContainer VerticalExpand="True" HScrollEnabled="False">
<BoxContainer Orientation="Vertical" Margin="8">
<Label Text="{Loc 'ui-options-accessability-header-visuals'}"
StyleClasses="LabelKeyText"/>
<CheckBox Name="ReducedMotionCheckBox" Text="{Loc 'ui-options-reduced-motion'}" />
<CheckBox Name="EnableColorNameCheckBox" Text="{Loc 'ui-options-enable-color-name'}" />
<CheckBox Name="ColorblindFriendlyCheckBox" Text="{Loc 'ui-options-colorblind-friendly'}" />
@ -12,6 +14,9 @@
<ui:OptionSlider Name="SpeechBubbleTextOpacitySlider" Title="{Loc 'ui-options-speech-bubble-text-opacity'}" />
<ui:OptionSlider Name="SpeechBubbleSpeakerOpacitySlider" Title="{Loc 'ui-options-speech-bubble-speaker-opacity'}" />
<ui:OptionSlider Name="SpeechBubbleBackgroundOpacitySlider" Title="{Loc 'ui-options-speech-bubble-background-opacity'}" />
<Label Text="{Loc 'ui-options-accessability-header-content'}"
StyleClasses="LabelKeyText"/>
<CheckBox Name="CensorNudityCheckBox" Text="{Loc 'ui-options-censor-nudity'}" />
</BoxContainer>
</ScrollContainer>
<ui:OptionsTabControlRow Name="Control" Access="Public" />

View File

@ -21,6 +21,8 @@ public sealed partial class AccessibilityTab : Control
Control.AddOptionPercentSlider(CCVars.SpeechBubbleSpeakerOpacity, SpeechBubbleSpeakerOpacitySlider);
Control.AddOptionPercentSlider(CCVars.SpeechBubbleBackgroundOpacity, SpeechBubbleBackgroundOpacitySlider);
Control.AddOptionCheckBox(CCVars.AccessibilityClientCensorNudity, CensorNudityCheckBox);
Control.Initialize();
}
}

View File

@ -60,5 +60,17 @@ public sealed partial class CCVars
public static readonly CVarDef<float> SpeechBubbleBackgroundOpacity =
CVarDef.Create("accessibility.speech_bubble_background_opacity", 0.75f, CVar.CLIENTONLY | CVar.ARCHIVE);
/// <summary>
/// If enabled, censors character nudity by forcing clothes markings on characters, selected by the client.
/// Both this and AccessibilityServerCensorNudity must be false to display nudity on the client.
/// </summary>
public static readonly CVarDef<bool> AccessibilityClientCensorNudity =
CVarDef.Create("accessibility.censor_nudity", false, CVar.CLIENTONLY | CVar.ARCHIVE);
/// <summary>
/// If enabled, censors character nudity by forcing clothes markings on characters, selected by the server.
/// Both this and AccessibilityClientCensorNudity must be false to display nudity on the client.
/// </summary>
public static readonly CVarDef<bool> AccessibilityServerCensorNudity =
CVarDef.Create("accessibility.server_censor_nudity", false, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER);
}

View File

@ -88,6 +88,15 @@ public sealed partial class HumanoidAppearanceComponent : Component
/// </summary>
[DataField]
public HashSet<HumanoidVisualLayers> HideLayersOnEquip = [HumanoidVisualLayers.Hair];
/// <summary>
/// Which markings the humanoid defaults to when nudity is toggled off.
/// </summary>
[DataField]
public ProtoId<MarkingPrototype>? UndergarmentTop = new ProtoId<MarkingPrototype>("UndergarmentTopTanktop");
[DataField]
public ProtoId<MarkingPrototype>? UndergarmentBottom = new ProtoId<MarkingPrototype>("UndergarmentBottomBoxers");
}
[DataDefinition]

View File

@ -10,9 +10,9 @@ namespace Content.Shared.Humanoid
Tail,
Hair,
FacialHair,
UndergarmentTop,
UndergarmentBottom,
Chest,
Underwear, // DeltaV
Undershirt, // DeltaV
Head,
Snout,
HeadSide, // side parts (i.e., frills)
@ -21,7 +21,6 @@ namespace Content.Shared.Humanoid
RArm,
LArm,
RHand,
LHand,
RLeg,
LLeg,

View File

@ -13,8 +13,8 @@ namespace Content.Shared.Humanoid.Markings
HeadSide,
Snout,
Chest,
Underwear, // DeltaV
Undershirt, // DeltaV
UndergarmentTop,
UndergarmentBottom,
Arms,
Legs,
Tail,
@ -34,9 +34,9 @@ namespace Content.Shared.Humanoid.Markings
HumanoidVisualLayers.HeadTop => MarkingCategories.HeadTop,
HumanoidVisualLayers.HeadSide => MarkingCategories.HeadSide,
HumanoidVisualLayers.Snout => MarkingCategories.Snout,
HumanoidVisualLayers.Undershirt => MarkingCategories.Undershirt, // DeltaV
HumanoidVisualLayers.Underwear => MarkingCategories.Underwear, // DeltaV
HumanoidVisualLayers.Chest => MarkingCategories.Chest,
HumanoidVisualLayers.UndergarmentTop => MarkingCategories.UndergarmentTop,
HumanoidVisualLayers.UndergarmentBottom => MarkingCategories.UndergarmentBottom,
HumanoidVisualLayers.RArm => MarkingCategories.Arms,
HumanoidVisualLayers.LArm => MarkingCategories.Arms,
HumanoidVisualLayers.RHand => MarkingCategories.Arms,

View File

@ -89,7 +89,7 @@ public static class MarkingColoring
public sealed partial class LayerColoringDefinition
{
[DataField("type")]
public LayerColoringType Type = new SkinColoring();
public LayerColoringType? Type = new SkinColoring();
/// <summary>
/// Coloring types that will be used if main coloring type will return nil
@ -105,7 +105,9 @@ public sealed partial class LayerColoringDefinition
public Color GetColor(Color? skin, Color? eyes, MarkingSet markingSet)
{
var color = Type.GetColor(skin, eyes, markingSet);
Color? color = null;
if (Type != null)
color = Type.GetColor(skin, eyes, markingSet);
if (color == null)
{
foreach (var type in FallbackTypes)

View File

@ -1,2 +0,0 @@
markings-category-Undershirt = Undershirt
markings-category-Underwear = Underwear

View File

@ -1 +1,2 @@
namepreset-lastfirst = {$last} {$first}
namepreset-lastnofirst = {$last}-no-{$first}

View File

@ -1,5 +1,7 @@
## Species Names
species-name-oni = Oni
species-name-felinid = Felinid
species-name-vulpkanin = Vulpkanin
species-name-harpy = Harpy
species-name-rodentia = Rodentia

View File

@ -16,14 +16,5 @@ marking-UndershirtRolledSleeveless = Tanktop (Rolled)
marking-UndershirtNanotrasen-nanotrasen = Undershirt
marking-UndershirtNanotrasen = Undershirt (Nanotrasen)
marking-UndershirtBinder-binder = Binder
marking-UndershirtBinder = Binder
marking-UndershirtBraClassic-classic = Bra
marking-UndershirtBraClassic = Bra (Classic)
marking-UndershirtBraSports-sports = Bra
marking-UndershirtBraSports = Bra (Sports)
marking-UndershirtBraStrapless-strapless = Bra
marking-UndershirtBraStrapless = Bra (Strapless)

View File

@ -1,10 +1,4 @@
marking-UnderwearDefault-boxers = Underwear
marking-UnderwearDefault = Underwear (Default)
marking-UnderwearBriefs-briefs = Underwear
marking-UnderwearBriefs = Underwear (Briefs)
marking-UnderwearLowriders-lowriders = Underwear
marking-UnderwearLowriders = Underwear (Lowriders)
marking-UnderwearSatin-satin = Underwear
marking-UnderwearSatin = Underwear (Satin)
marking-UnderwearTanga-tanga = Underwear
marking-UnderwearTanga = Underwear (Tanga)

View File

@ -279,6 +279,9 @@ cmd-options-help = Usage: options [tab]
## Accessibility menu
ui-options-accessability-header-visuals = Visuals
ui-options-accessability-header-content = Content
ui-options-enable-color-name = Add colors to character names
ui-options-colorblind-friendly = Colorblind friendly mode
ui-options-reduced-motion = Reduce motion of visual effects
@ -289,6 +292,8 @@ ui-options-speech-bubble-text-opacity = Speech bubble text opacity
ui-options-speech-bubble-speaker-opacity = Speech bubble speaker opacity
ui-options-speech-bubble-background-opacity = Speech bubble background opacity
ui-options-censor-nudity = Censor character nudity
## Admin menu
ui-options-enable-classic-overlay = Revert antag overlay to classic mode

View File

@ -0,0 +1,21 @@
marking-UndergarmentTopTanktop = Tanktop
marking-UndergarmentTopBinder = Binder
marking-UndergarmentTopBra = Classic Bra
marking-UndergarmentTopSportsbra = Sports Bra
marking-UndergarmentBottomBoxers = Boxers
marking-UndergarmentBottomBriefs = Briefs
marking-UndergarmentBottomSatin = Satin
marking-UndergarmentTopTanktopVox = Tanktop
marking-UndergarmentTopBinderVox = Binder
marking-UndergarmentTopBraVox = Classic Bra
marking-UndergarmentTopSportsbraVox = Sports Bra
marking-UndergarmentBottomBoxersVox = Boxers
marking-UndergarmentBottomBriefsVox = Briefs
marking-UndergarmentBottomSatinVox = Satin
marking-UndergarmentBottomBoxersReptilian = Boxers
marking-UndergarmentBottomBriefsReptilian = Briefs
marking-UndergarmentBottomSatinReptilian = Satin

View File

@ -1 +0,0 @@
namepreset-lastnofirst = {$last}-no-{$first}

View File

@ -1,2 +0,0 @@
species-name-oni = Oni
species-name-felinid = Felinid

View File

@ -20,6 +20,8 @@ markings-category-Head = Head
markings-category-HeadTop = Head (Top)
markings-category-HeadSide = Head (Side)
markings-category-Snout = Snout
markings-category-UndergarmentTop = Undergarment (Top)
markings-category-UndergarmentBottom = Undergarment (Bottom)
markings-category-Chest = Chest
markings-category-Arms = Arms
markings-category-Legs = Legs

View File

@ -0,0 +1,223 @@
# These options are kept very sparse to not put emphasis on nudity, and to provide a base for players to feel comfortable with.
# It's unlikely more will be added to upstream for cosmetic reasons.
- type: marking
id: UndergarmentBottomBoxers
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: boxers
- type: marking
id: UndergarmentBottomBriefs
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: briefs
- type: marking
id: UndergarmentBottomSatin
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: satin
- type: marking
id: UndergarmentTopBra
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: classic
- type: marking
id: UndergarmentTopSportsbra
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: sports
- type: marking
id: UndergarmentTopBinder
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: binder
- type: marking
id: UndergarmentTopTanktop
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: tanktop
- type: marking
id: UndergarmentBottomBoxersVox # Voxers.
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: boxers_vox
- type: marking
id: UndergarmentBottomBriefsVox
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: briefs_vox
- type: marking
id: UndergarmentBottomSatinVox
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: satin_vox
- type: marking
id: UndergarmentTopBraVox
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: classic_vox
- type: marking
id: UndergarmentTopSportsbraVox
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: sports_vox
- type: marking
id: UndergarmentTopBinderVox
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: binder_vox
- type: marking
id: UndergarmentTopTanktopVox
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: [Vox]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: tanktop_vox
- type: marking
id: UndergarmentBottomBoxersReptilian
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Reptilian]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: boxers_reptilian
- type: marking
id: UndergarmentBottomBriefsReptilian
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Reptilian]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: briefs_reptilian
- type: marking
id: UndergarmentBottomSatinReptilian
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: [Reptilian]
coloring:
default:
type: null
fallbackColor: '#FFFFFF'
sprites:
- sprite: Mobs/Customization/undergarments.rsi
state: satin_reptilian

View File

@ -83,8 +83,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: ["jumpsuit"]
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]

View File

@ -19,8 +19,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: ["jumpsuit"]
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]
@ -325,8 +325,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: ["jumpsuit"]
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]

View File

@ -84,8 +84,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]

View File

@ -11,6 +11,7 @@
- Snout
- HeadTop
- HeadSide
undergarmentBottom: UndergarmentBottomBoxersReptilian
- type: Hunger
- type: Puller
needsHands: false
@ -93,6 +94,7 @@
- Snout
- HeadTop
- HeadSide
undergarmentBottom: UndergarmentBottomBoxersReptilian
- type: Inventory
speciesId: reptilian
femaleDisplacements:

View File

@ -13,6 +13,8 @@
requiredLegs: 2
- type: HumanoidAppearance
species: Vox
undergarmentTop: UndergarmentTopTanktopVox
undergarmentBottom: UndergarmentBottomBoxersVox
#- type: VoxAccent # Not yet coded
- type: Speech
speechVerb: Vox
@ -71,6 +73,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
@ -153,6 +157,8 @@
components:
- type: HumanoidAppearance
species: Vox
undergarmentTop: UndergarmentTopTanktopVox
undergarmentBottom: UndergarmentBottomBoxersVox
- type: Body
prototype: Vox
- type: Inventory

View File

@ -19,8 +19,8 @@
sprites:
Head: MobArachnidHead
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobArachnidTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -65,14 +65,6 @@
Chest:
points: 1
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Legs:
points: 6
required: false

View File

@ -19,8 +19,8 @@
Head: MobDionaHead
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobDionaTorso
Eyes: MobDionaEyes
LArm: MobDionaLArm
@ -45,20 +45,18 @@
HeadSide:
points: 1
required: false
UndergarmentTop:
points: 1
required: false
UndergarmentBottom:
points: 1
required: false
Chest:
points: 1
required: false
Legs:
points: 2
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Arms:
points: 2
required: false

View File

@ -15,8 +15,6 @@
Head: MobGingerbreadHead
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
Chest: MobGingerbreadTorso
Eyes: MobGingerbreadEyes
LArm: MobGingerbreadLArm

View File

@ -22,8 +22,8 @@
Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobHumanTorso
Eyes: MobHumanoidEyes
HeadTop: MobHumanoidAnyMarking
@ -59,17 +59,15 @@
HeadTop:
points: 1
required: false
UndergarmentTop:
points: 1
required: false
UndergarmentBottom:
points: 1
required: false
Chest:
points: 1
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Legs:
points: 6
required: false

View File

@ -17,8 +17,8 @@
sprites:
Head: MobMothHead
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobMothTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -66,17 +66,15 @@
Head:
points: 1
required: false
UndergarmentTop:
points: 1
required: false
UndergarmentBottom:
points: 1
required: false
Chest:
points: 1
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Legs:
points: 6
required: false

View File

@ -17,8 +17,8 @@
sprites:
Head: MobReptilianHead
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobReptilianTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -57,17 +57,15 @@
HeadSide:
points: 1
required: false
UndergarmentTop:
points: 1
required: false
UndergarmentBottom:
points: 1
required: false
Chest:
points: 3
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Legs:
points: 6
required: false

View File

@ -15,8 +15,8 @@
Head: MobSlimeHead
Hair: MobSlimeMarkingFollowSkin
FacialHair: MobSlimeMarkingFollowSkin
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobSlimeTorso
Eyes: MobHumanoidEyes
LArm: MobSlimeLArm
@ -40,14 +40,6 @@
Chest:
points: 1
required: false
# Begin DeltaV changes.
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
# End DeltaV changes.
Legs:
points: 4
required: false

View File

@ -21,8 +21,8 @@
Snout: MobHumanoidAnyMarking
Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking # DeltaV
Undershirt: MobHumanoidAnyMarking # DeltaV
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobVoxTorso
Eyes: MobVoxEyes
LArm: MobVoxLArm
@ -60,14 +60,12 @@
points: 4
required: true
defaultMarkings: [ VoxLLegScales, VoxRLegScales, VoxRFootScales, VoxLFootScales ]
# Begin DeltaV changes.
Underwear:
UndergarmentTop:
points: 1
required: false
Undershirt:
UndergarmentBottom:
points: 1
required: false
# End DeltaV changes.
Chest:
points: 1
required: false

View File

@ -109,8 +109,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]

View File

@ -40,8 +40,8 @@
# 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
- map: [ "enum.HumanoidVisualLayers.Underwear" ]
- map: [ "enum.HumanoidVisualLayers.Undershirt" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]

View File

@ -42,8 +42,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ]
- map: [ "enum.HumanoidVisualLayers.Undershirt" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "underpants" ]
- map: [ "undershirt" ]
- map: [ "socks" ]
@ -177,8 +177,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ]
- map: [ "enum.HumanoidVisualLayers.Undershirt" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "underpants" ]
- map: [ "undershirt" ]
- map: [ "socks" ]

View File

@ -45,8 +45,8 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "enum.HumanoidVisualLayers.Underwear" ]
- map: [ "enum.HumanoidVisualLayers.Undershirt" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]

View File

@ -45,8 +45,8 @@
sprite: _DV/Mobs/Customization/Vulpkanin/masking_helpers.rsi
state: female_full
visible: false
- map: [ "enum.HumanoidVisualLayers.Underwear" ]
- map: [ "enum.HumanoidVisualLayers.Undershirt" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ]
- map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]

View File

@ -35,12 +35,6 @@
Chest:
points: 1
required: false
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Legs:
points: 6
required: false

View File

@ -17,8 +17,8 @@
sprites:
Head: MobChitinidHead
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking
Undershirt: MobHumanoidAnyMarking
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobChitinidTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -69,12 +69,6 @@
Chest:
points: 1
required: false
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Legs:
points: 6
required: false

View File

@ -6,7 +6,7 @@
sprites: MobHumanSprites
markingLimits: MobFelinidMarkingLimits
dollPrototype: MobFelinidDummy
skinColoration: Hues # DeltaV
skinColoration: Hues
- type: markingPoints
id: MobFelinidMarkingLimits
@ -28,12 +28,6 @@
Chest:
points: 1
required: false
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Legs:
points: 6
required: false

View File

@ -20,6 +20,8 @@
FacialHair: MobHumanoidAnyMarking
Snout: MobHumanoidAnyMarking
Chest: MobFeroxiTorso
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
Tail: MobHumanoidAnyMarking

View File

@ -15,8 +15,8 @@
Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking
Undershirt: MobHumanoidAnyMarking
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobHarpyTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -53,12 +53,6 @@
points: 1
required: true
defaultMarkings: [ HarpyChestDefault ]
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Legs:
points: 2
required: false

View File

@ -20,8 +20,8 @@
Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking
Undershirt: MobHumanoidAnyMarking
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobRodentiaTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -55,12 +55,6 @@
Arms:
points: 6
required: false
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Snout:
points: 1
required: false

View File

@ -19,8 +19,8 @@
Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking
Snout: MobHumanoidAnyMarking
Underwear: MobHumanoidAnyMarking
Undershirt: MobHumanoidAnyMarking
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobVulpkaninTorso
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
@ -51,12 +51,6 @@
Head:
points: 3
required: false
Underwear:
points: 1
required: false
Undershirt:
points: 1
required: false
Legs:
points: 6
required: false

View File

@ -1,8 +1,8 @@
- type: marking
id: UndershirtDefault
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -14,9 +14,9 @@
- type: marking
id: UndershirtRolled
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -28,9 +28,9 @@
- type: marking
id: UndershirtSleeveless
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -42,9 +42,9 @@
- type: marking
id: UndershirtRolledSleeveless
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -56,9 +56,9 @@
- type: marking
id: UndershirtGrossSleeveless
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -70,9 +70,9 @@
- type: marking
id: UndershirtNanotrasen
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -82,53 +82,11 @@
- sprite: _Impstation/Mobs/Customization/undershirt.rsi
state: nanotrasen
- type: marking
id: UndershirtBinder
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/undershirt.rsi
state: binder
- type: marking
id: UndershirtBraClassic
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/undershirt.rsi
state: classic
- type: marking
id: UndershirtBraSports
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/undershirt.rsi
state: sports
- type: marking
id: UndershirtBraStrapless
bodyPart: Undershirt
markingCategory: Undershirt
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentTop
markingCategory: UndergarmentTop
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:

View File

@ -1,36 +1,8 @@
- type: marking
id: UnderwearDefault
bodyPart: Underwear
markingCategory: Underwear
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/underwear.rsi
state: boxers
- type: marking
id: UnderwearBriefs
bodyPart: Underwear
markingCategory: Underwear
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/underwear.rsi
state: briefs
- type: marking
id: UnderwearLowriders
bodyPart: Underwear
markingCategory: Underwear
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:
@ -40,25 +12,11 @@
- sprite: _Impstation/Mobs/Customization/underwear.rsi
state: lowriders
- type: marking
id: UnderwearSatin
bodyPart: Underwear
markingCategory: Underwear
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
coloring:
default:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Impstation/Mobs/Customization/underwear.rsi
state: satin
- type: marking
id: UnderwearTanga
bodyPart: Underwear
markingCategory: Underwear
speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi
bodyPart: UndergarmentBottom
markingCategory: UndergarmentBottom
speciesRestriction: null # DeltaV - removed restrictions
coloring:
default:
type:

View File

@ -24,6 +24,8 @@
Head: MobThavenHead
HeadTop: MobHumanoidAnyMarking
HeadSide: MobHumanoidAnyMarking
UndergarmentTop: MobHumanoidAnyMarking
UndergarmentBottom: MobHumanoidAnyMarking
Chest: MobThavenTorso
LArm: MobThavenLArm
RArm: MobThavenRArm

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,79 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "sprites taken from https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/underwear.dmi and https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/undershirt.dmi, edited by SlamBamActionman",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "briefs",
"directions": 4
},
{
"name": "satin",
"directions": 4
},
{
"name": "boxers",
"directions": 4
},
{
"name": "classic",
"directions": 4
},
{
"name": "sports",
"directions": 4
},
{
"name": "binder",
"directions": 4
},
{
"name": "tanktop",
"directions": 4
},
{
"name": "briefs_vox",
"directions": 4
},
{
"name": "satin_vox",
"directions": 4
},
{
"name": "boxers_vox",
"directions": 4
},
{
"name": "classic_vox",
"directions": 4
},
{
"name": "sports_vox",
"directions": 4
},
{
"name": "binder_vox",
"directions": 4
},
{
"name": "tanktop_vox",
"directions": 4
},
{
"name": "briefs_reptilian",
"directions": 4
},
{
"name": "satin_reptilian",
"directions": 4
},
{
"name": "boxers_reptilian",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB