Vox sprite rework (#26985)

weh
This commit is contained in:
Errant
2024-04-27 08:04:51 +02:00
committed by GitHub
parent 2f7d0dedbd
commit 257b04d277
43 changed files with 392 additions and 40 deletions

View File

@@ -697,6 +697,20 @@ namespace Content.Client.Preferences.UI
var color = SkinColor.TintedHues(_rgbSkinColorSelector.Color); var color = SkinColor.TintedHues(_rgbSkinColorSelector.Color);
CMarkings.CurrentSkinColor = color;
Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color));
break;
}
case HumanoidSkinColor.VoxFeathers:
{
if (!_rgbSkinColorContainer.Visible)
{
_skinColor.Visible = false;
_rgbSkinColorContainer.Visible = true;
}
var color = SkinColor.ClosestVoxColor(_rgbSkinColorSelector.Color);
CMarkings.CurrentSkinColor = color; CMarkings.CurrentSkinColor = color;
Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color)); Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color));
break; break;
@@ -908,6 +922,18 @@ namespace Content.Client.Preferences.UI
_rgbSkinColorSelector.Color = Profile.Appearance.SkinColor; _rgbSkinColorSelector.Color = Profile.Appearance.SkinColor;
break; break;
} }
case HumanoidSkinColor.VoxFeathers:
{
if (!_rgbSkinColorContainer.Visible)
{
_skinColor.Visible = false;
_rgbSkinColorContainer.Visible = true;
}
_rgbSkinColorSelector.Color = SkinColor.ClosestVoxColor(Profile.Appearance.SkinColor);
break;
}
} }
} }

View File

@@ -104,7 +104,8 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance
HumanoidSkinColor.HumanToned => Humanoid.SkinColor.HumanSkinTone(speciesPrototype.DefaultHumanSkinTone), HumanoidSkinColor.HumanToned => Humanoid.SkinColor.HumanSkinTone(speciesPrototype.DefaultHumanSkinTone),
HumanoidSkinColor.Hues => speciesPrototype.DefaultSkinTone, HumanoidSkinColor.Hues => speciesPrototype.DefaultSkinTone,
HumanoidSkinColor.TintedHues => Humanoid.SkinColor.TintedHues(speciesPrototype.DefaultSkinTone), HumanoidSkinColor.TintedHues => Humanoid.SkinColor.TintedHues(speciesPrototype.DefaultSkinTone),
_ => Humanoid.SkinColor.ValidHumanSkinTone HumanoidSkinColor.VoxFeathers => Humanoid.SkinColor.ClosestVoxColor(speciesPrototype.DefaultSkinTone),
_ => Humanoid.SkinColor.ValidHumanSkinTone,
}; };
return new( return new(
@@ -166,6 +167,9 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance
case HumanoidSkinColor.TintedHues: case HumanoidSkinColor.TintedHues:
newSkinColor = Humanoid.SkinColor.ValidTintedHuesSkinTone(newSkinColor); newSkinColor = Humanoid.SkinColor.ValidTintedHuesSkinTone(newSkinColor);
break; break;
case HumanoidSkinColor.VoxFeathers:
newSkinColor = Humanoid.SkinColor.ProportionalVoxColor(newSkinColor);
break;
} }
return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ()); return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ());

View File

@@ -1,3 +1,6 @@
using System.Security.Cryptography;
using Microsoft.VisualBasic.CompilerServices;
namespace Content.Shared.Humanoid; namespace Content.Shared.Humanoid;
public static class SkinColor public static class SkinColor
@@ -7,6 +10,13 @@ public static class SkinColor
public const float MinHuesLightness = 0.175f; public const float MinHuesLightness = 0.175f;
public const float MinFeathersHue = 29f / 360;
public const float MaxFeathersHue = 174f / 360;
public const float MinFeathersSaturation = 20f / 100;
public const float MaxFeathersSaturation = 88f / 100;
public const float MinFeathersValue = 36f / 100;
public const float MaxFeathersValue = 55f / 100;
public static Color ValidHumanSkinTone => Color.FromHsv(new Vector4(0.07f, 0.2f, 1f, 1f)); public static Color ValidHumanSkinTone => Color.FromHsv(new Vector4(0.07f, 0.2f, 1f, 1f));
/// <summary> /// <summary>
@@ -140,6 +150,60 @@ public static class SkinColor
return Color.ToHsl(color).Y <= MaxTintedHuesSaturation && Color.ToHsl(color).Z >= MinTintedHuesLightness; return Color.ToHsl(color).Y <= MaxTintedHuesSaturation && Color.ToHsl(color).Z >= MinTintedHuesLightness;
} }
/// <summary>
/// Converts a Color proportionally to the allowed vox color range.
/// Will NOT preserve the specific input color even if it is within the allowed vox color range.
/// </summary>
/// <param name="color">Color to convert</param>
/// <returns>Vox feather coloration</returns>
public static Color ProportionalVoxColor(Color color)
{
var newColor = Color.ToHsv(color);
newColor.X = newColor.X * (MaxFeathersHue - MinFeathersHue) + MinFeathersHue;
newColor.Y = newColor.Y * (MaxFeathersSaturation - MinFeathersSaturation) + MinFeathersSaturation;
newColor.Z = newColor.Z * (MaxFeathersValue - MinFeathersValue) + MinFeathersValue;
return Color.FromHsv(newColor);
}
// /// <summary>
// /// Ensures the input Color is within the allowed vox color range.
// /// </summary>
// /// <param name="color">Color to convert</param>
// /// <returns>The same Color if it was within the allowed range, or the closest matching Color otherwise</returns>
public static Color ClosestVoxColor(Color color)
{
var hsv = Color.ToHsv(color);
hsv.X = Math.Clamp(hsv.X, MinFeathersHue, MaxFeathersHue);
hsv.Y = Math.Clamp(hsv.Y, MinFeathersSaturation, MaxFeathersSaturation);
hsv.Z = Math.Clamp(hsv.Z, MinFeathersValue, MaxFeathersValue);
return Color.FromHsv(hsv);
}
/// <summary>
/// Verify if this color is a valid vox feather coloration, or not.
/// </summary>
/// <param name="color">The color to verify</param>
/// <returns>True if valid, false otherwise</returns>
public static bool VerifyVoxFeathers(Color color)
{
var colorHsv = Color.ToHsv(color);
if (colorHsv.X < MinFeathersHue || colorHsv.X > MaxFeathersHue)
return false;
if (colorHsv.Y < MinFeathersSaturation || colorHsv.Y > MaxFeathersSaturation)
return false;
if (colorHsv.Z < MinFeathersValue || colorHsv.Z > MaxFeathersValue)
return false;
return true;
}
/// <summary> /// <summary>
/// This takes in a color, and returns a color guaranteed to be above MinHuesLightness /// This takes in a color, and returns a color guaranteed to be above MinHuesLightness
/// </summary> /// </summary>
@@ -169,6 +233,7 @@ public static class SkinColor
HumanoidSkinColor.HumanToned => VerifyHumanSkinTone(color), HumanoidSkinColor.HumanToned => VerifyHumanSkinTone(color),
HumanoidSkinColor.TintedHues => VerifyTintedHues(color), HumanoidSkinColor.TintedHues => VerifyTintedHues(color),
HumanoidSkinColor.Hues => VerifyHues(color), HumanoidSkinColor.Hues => VerifyHues(color),
HumanoidSkinColor.VoxFeathers => VerifyVoxFeathers(color),
_ => false, _ => false,
}; };
} }
@@ -180,6 +245,7 @@ public static class SkinColor
HumanoidSkinColor.HumanToned => ValidHumanSkinTone, HumanoidSkinColor.HumanToned => ValidHumanSkinTone,
HumanoidSkinColor.TintedHues => ValidTintedHuesSkinTone(color), HumanoidSkinColor.TintedHues => ValidTintedHuesSkinTone(color),
HumanoidSkinColor.Hues => MakeHueValid(color), HumanoidSkinColor.Hues => MakeHueValid(color),
HumanoidSkinColor.VoxFeathers => ClosestVoxColor(color),
_ => color _ => color
}; };
} }
@@ -189,5 +255,6 @@ public enum HumanoidSkinColor : byte
{ {
HumanToned, HumanToned,
Hues, Hues,
VoxFeathers, // Vox feathers are limited to a specific color range
TintedHues, //This gives a color tint to a humanoid's skin (10% saturation with full hue range). TintedHues, //This gives a color tint to a humanoid's skin (10% saturation with full hue range).
} }

View File

@@ -33,10 +33,10 @@
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: "torso_m" state: "torso"
- type: Icon - type: Icon
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: "torso_m" state: "torso"
- type: BodyPart - type: BodyPart
partType: Torso partType: Torso
- type: Extractable - type: Extractable
@@ -54,10 +54,10 @@
components: components:
- type: Sprite - type: Sprite
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: "head_m" state: "head"
- type: Icon - type: Icon
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: "head_m" state: "head"
- type: BodyPart - type: BodyPart
partType: Head partType: Head
vital: true vital: true

View File

@@ -0,0 +1,145 @@
- type: marking
id: VoxBeak
bodyPart: Snout
markingCategory: Snout
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: beak
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxLArmScales
bodyPart: LArm
markingCategory: Arms
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: l_arm
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxLLegScales
bodyPart: LLeg
markingCategory: Legs
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: l_leg
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxRArmScales
bodyPart: RArm
markingCategory: Arms
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: r_arm
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxRLegScales
bodyPart: RLeg
markingCategory: Legs
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: r_leg
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxRHandScales
bodyPart: RHand
markingCategory: Arms
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: r_hand
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxLHandScales
bodyPart: LHand
markingCategory: Arms
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: l_hand
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxLFootScales
bodyPart: LFoot
markingCategory: Legs
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: l_foot
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxRFootScales
bodyPart: RFoot
markingCategory: Legs
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: r_foot
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxTail
bodyPart: Tail
markingCategory: Tail
speciesRestriction: [Vox]
forcedColoring: true
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
# Ideally this should use the normal tail sprite and apply an actual mask over it, not just use a butchered sprite
state: tail_stenciled

View File

@@ -60,6 +60,49 @@
damage: damage:
types: types:
Slash: 5 # Reduce? Slash: 5 # Reduce?
- type: Sprite # Need to redefine the whole order to draw the tail over their gas tank
layers:
- map: [ "enum.HumanoidVisualLayers.Chest" ]
- map: [ "enum.HumanoidVisualLayers.Head" ]
- map: [ "enum.HumanoidVisualLayers.Snout" ]
- map: [ "enum.HumanoidVisualLayers.Eyes" ]
- map: [ "enum.HumanoidVisualLayers.RArm" ]
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]
- map: [ "gloves" ]
- map: [ "shoes" ]
- map: [ "ears" ]
- map: [ "outerClothing" ]
- map: [ "eyes" ]
- map: [ "belt" ]
- map: [ "id" ]
- map: [ "neck" ]
- map: [ "back" ]
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
- map: [ "enum.HumanoidVisualLayers.Hair" ]
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
- map: [ "suitstorage" ] # This is not in the default order
- map: [ "enum.HumanoidVisualLayers.Tail" ]
- map: [ "mask" ]
- map: [ "head" ]
- map: [ "pocket1" ]
- map: [ "pocket2" ]
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
color: "#ffffff"
sprite: Objects/Misc/handcuffs.rsi
state: body-overlay-2
visible: false
- map: [ "clownedon" ]
sprite: "Effects/creampie.rsi"
state: "creampie_vox" # Not default
visible: false
- type: entity - type: entity
parent: BaseSpeciesDummy parent: BaseSpeciesDummy

View File

@@ -6,18 +6,19 @@
sprites: MobVoxSprites sprites: MobVoxSprites
markingLimits: MobVoxMarkingLimits markingLimits: MobVoxMarkingLimits
dollPrototype: MobVoxDummy dollPrototype: MobVoxDummy
skinColoration: Hues skinColoration: VoxFeathers
defaultSkinTone: "#6c741d"
maleFirstNames: names_vox maleFirstNames: names_vox
femaleFirstNames: names_vox femaleFirstNames: names_vox
naming: First naming: First
sexes: sexes:
- Unsexed - Unsexed
- type: speciesBaseSprites - type: speciesBaseSprites
id: MobVoxSprites id: MobVoxSprites
sprites: sprites:
Head: MobVoxHead Head: MobVoxHead
Snout: MobHumanoidAnyMarking
Hair: MobHumanoidAnyMarking Hair: MobHumanoidAnyMarking
FacialHair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking
Chest: MobVoxTorso Chest: MobVoxTorso
@@ -30,6 +31,7 @@
RLeg: MobVoxRLeg RLeg: MobVoxRLeg
LFoot: MobVoxLFoot LFoot: MobVoxLFoot
RFoot: MobVoxRFoot RFoot: MobVoxRFoot
Tail: MobHumanoidAnyMarking
- type: markingPoints - type: markingPoints
id: MobVoxMarkingLimits id: MobVoxMarkingLimits
@@ -41,57 +43,70 @@
FacialHair: FacialHair:
points: 1 points: 1
required: false required: false
Head:
points: 1
required: true
Snout:
points: 1
required: true
defaultMarkings: [ VoxBeak ]
Arms:
points: 4
required: true
defaultMarkings: [ VoxLArmScales, VoxRArmScales, VoxRHandScales, VoxLHandScales ]
Legs:
points: 4
required: true
defaultMarkings: [ VoxLLegScales, VoxRLegScales, VoxRFootScales, VoxLFootScales ]
Chest: Chest:
points: 1 points: 1
required: false required: false
Legs: Tail:
points: 2 points: 1
required: false required: true
Arms: defaultMarkings: [ VoxTail ]
points: 2
required: false
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxEyes id: MobVoxEyes
baseSprite: baseSprite:
sprite: Mobs/Customization/eyes.rsi sprite: Mobs/Species/Vox/parts.rsi
state: vox_eyes_s state: eyes
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxHead id: MobVoxHead
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: head_m state: head
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxHeadMale id: MobVoxHeadMale
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: head_m state: head
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxHeadFemale id: MobVoxHeadFemale
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: head_f state: head
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxTorso id: MobVoxTorso
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: torso_m state: torso
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxTorsoMale id: MobVoxTorsoMale
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: torso_m state: torso
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxTorsoFemale id: MobVoxTorsoFemale
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: torso_f state: torso
- type: humanoidBaseSprite - type: humanoidBaseSprite
id: MobVoxLLeg id: MobVoxLLeg
@@ -140,5 +155,3 @@
baseSprite: baseSprite:
sprite: Mobs/Species/Vox/parts.rsi sprite: Mobs/Species/Vox/parts.rsi
state: r_foot state: r_foot
#

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

View File

@@ -1,7 +1,7 @@
{ {
"version": 1, "version": 1,
"license": "CC-BY-SA-3.0", "license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0. creampie_moth by MilenVolf, creampie_arachnid by PixelTheKermit (Github)", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0. creampie_moth by MilenVolf, creampie_arachnid by PixelTheKermit (Github), creampie_vox by Errant",
"size": { "size": {
"x": 32, "x": 32,
"y": 32 "y": 32
@@ -66,6 +66,10 @@
"name": "creampie_standborg", "name": "creampie_standborg",
"directions": 4 "directions": 4
}, },
{
"name": "creampie_vox",
"directions": 4
},
{ {
"name": "creampie_xeno_crit" "name": "creampie_xeno_crit"
}, },

View File

@@ -1 +1 @@
{"version": 1, "license": "CC-BY-SA-3.0","copyright": "Vox_eyes Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb and human_eyes taken from https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf", "size": {"x": 32, "y": 32}, "states": [{"name": "diona", "directions": 4}, {"name": "eyes", "directions": 4}, {"name":"no_eyes"},{"name": "vox_eyes_s", "directions": 4}]} {"version": 1, "license": "CC-BY-SA-3.0","copyright": "human_eyes taken from https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf", "size": {"x": 32, "y": 32}, "states": [{"name": "diona", "directions": 4}, {"name": "eyes", "directions": 4}, {"name":"no_eyes"}]}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

View File

@@ -0,0 +1,55 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, modified by Bhijn, Errant and Flareguy",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "beak",
"directions": 4
},
{
"name": "l_arm",
"directions": 4
},
{
"name": "l_foot",
"directions": 4
},
{
"name": "l_hand",
"directions": 4
},
{
"name": "l_leg",
"directions": 4
},
{
"name": "r_arm",
"directions": 4
},
{
"name": "r_foot",
"directions": 4
},
{
"name": "r_hand",
"directions": 4
},
{
"name": "r_leg",
"directions": 4
},
{
"name": "tail",
"directions": 4
},
{
"name": "tail_stenciled",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 385 B

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 544 B

View File

@@ -1,26 +1,25 @@
{ {
"version": 1, "version": 1,
"license": "CC-BY-SA-3.0", "license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb", "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, by Bhijn, Errant and Flareguy",
"size": { "size": {
"x": 32, "x": 32,
"y": 32 "y": 32
}, },
"states": [ "states": [
{ {
"name": "groin_f", "name": "eyes",
"directions": 4 "directions": 4
}, },
{ {
"name": "groin_m", "name": "full"
},
{
"name": "groin",
"directions": 4 "directions": 4
}, },
{ {
"name": "head_f", "name": "head",
"directions": 4
},
{
"name": "head_m",
"directions": 4 "directions": 4
}, },
{ {
@@ -60,11 +59,7 @@
"directions": 4 "directions": 4
}, },
{ {
"name": "torso_f", "name": "torso",
"directions": 4
},
{
"name": "torso_m",
"directions": 4 "directions": 4
}, },
{ {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 B

After

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB