diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 979f7430e17..925e3abf8cb 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -281,6 +281,9 @@ private void RenderEquipment(EntityUid equipee, EntityUid equipment, string slot // note that every insertion requires reshuffling & remapping all the existing layers. sprite.AddBlankLayer(index); sprite.LayerMapSet(key, index); + + if (layerData.Color != null) + sprite.LayerSetColor(key, layerData.Color.Value); } else index = sprite.LayerMapReserveBlank(key); diff --git a/Content.Client/Sprite/RandomSpriteSystem.cs b/Content.Client/Sprite/RandomSpriteSystem.cs index 04f6681136c..0e6f199b8a2 100644 --- a/Content.Client/Sprite/RandomSpriteSystem.cs +++ b/Content.Client/Sprite/RandomSpriteSystem.cs @@ -1,3 +1,5 @@ +using Content.Client.Clothing; +using Content.Shared.Clothing.Components; using Content.Shared.Sprite; using Robust.Client.GameObjects; using Robust.Shared.GameStates; @@ -8,6 +10,7 @@ namespace Content.Client.Sprite; public sealed class RandomSpriteSystem : SharedRandomSpriteSystem { [Dependency] private readonly IReflectionManager _reflection = default!; + [Dependency] private readonly ClientClothingSystem _clothing = default!; public override void Initialize() { @@ -31,10 +34,29 @@ private void OnHandleState(EntityUid uid, RandomSpriteComponent component, ref C component.Selected.Add(layer.Key, layer.Value); } - UpdateAppearance(uid, component); + UpdateSpriteComponentAppearance(uid, component); + UpdateClothingComponentAppearance(uid, component); } - private void UpdateAppearance(EntityUid uid, RandomSpriteComponent component, SpriteComponent? sprite = null) + private void UpdateClothingComponentAppearance(EntityUid uid, RandomSpriteComponent component, ClothingComponent? clothing = null) + { + if (!Resolve(uid, ref clothing, false)) + return; + + if (clothing.ClothingVisuals == null) + return; + + foreach (var slotPair in clothing.ClothingVisuals) + { + foreach (var keyColorPair in component.Selected) + { + _clothing.SetLayerColor(clothing, slotPair.Key, keyColorPair.Key, keyColorPair.Value.Color); + _clothing.SetLayerState(clothing, slotPair.Key, keyColorPair.Key, keyColorPair.Value.State); + } + } + } + + private void UpdateSpriteComponentAppearance(EntityUid uid, RandomSpriteComponent component, SpriteComponent? sprite = null) { if (!Resolve(uid, ref sprite, false)) return; @@ -55,7 +77,6 @@ private void UpdateAppearance(EntityUid uid, RandomSpriteComponent component, Sp continue; } } - sprite.LayerSetState(index, layer.Value.State); sprite.LayerSetColor(index, layer.Value.Color ?? Color.White); } diff --git a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs index 7bc1be02e37..e46a7c715ff 100644 --- a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs +++ b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs @@ -134,7 +134,7 @@ private bool CanDock( foreach (var config in configs) { - if (config.Coordinates.Equals(coordinates) && config.Angle.EqualsApprox(angle, 0.01)) + if (config.Coordinates.Equals(coordinates) && config.Angle.EqualsApprox(angle, 0.15)) { return config; } diff --git a/Content.Server/Zombies/PendingZombieComponent.cs b/Content.Server/Zombies/PendingZombieComponent.cs index e1121987117..a49b424c53f 100644 --- a/Content.Server/Zombies/PendingZombieComponent.cs +++ b/Content.Server/Zombies/PendingZombieComponent.cs @@ -16,8 +16,7 @@ public sealed partial class PendingZombieComponent : Component { DamageDict = new () { - { "Blunt", 0.25 }, - { "Poison", 0.1 }, + { "Poison", 0.3 }, } }; diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index 50a1d93a6c2..f189db005bc 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -217,5 +217,38 @@ public void CopyVisuals(EntityUid uid, ClothingComponent otherClothing, Clothing Dirty(uid, clothing); } + public void SetLayerColor(ClothingComponent clothing, string slot, string mapKey, Color? color) + { + if (clothing.ClothingVisuals == null) + return; + + foreach (var layer in clothing.ClothingVisuals[slot]) + { + if (layer.MapKeys == null) + return; + + if (!layer.MapKeys.Contains(mapKey)) + continue; + + layer.Color = color; + } + } + public void SetLayerState(ClothingComponent clothing, string slot, string mapKey, string state) + { + if (clothing.ClothingVisuals == null) + return; + + foreach (var layer in clothing.ClothingVisuals[slot]) + { + if (layer.MapKeys == null) + return; + + if (!layer.MapKeys.Contains(mapKey)) + continue; + + layer.State = state; + } + } + #endregion } diff --git a/Content.Shared/Zombies/ZombieComponent.cs b/Content.Shared/Zombies/ZombieComponent.cs index 5ae441b1327..023bf751ff3 100644 --- a/Content.Shared/Zombies/ZombieComponent.cs +++ b/Content.Shared/Zombies/ZombieComponent.cs @@ -20,14 +20,14 @@ public sealed partial class ZombieComponent : Component, IAntagStatusIconCompone /// The baseline infection chance you have if you are completely nude /// [ViewVariables(VVAccess.ReadWrite)] - public float MaxZombieInfectionChance = 0.50f; + public float MaxZombieInfectionChance = 0.80f; /// /// The minimum infection chance possible. This is simply to prevent /// being invincible by bundling up. /// [ViewVariables(VVAccess.ReadWrite)] - public float MinZombieInfectionChance = 0.20f; + public float MinZombieInfectionChance = 0.50f; [ViewVariables(VVAccess.ReadWrite)] public float ZombieMovementSpeedDebuff = 0.70f; diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 411a5bf2a2a..1eab2a3516f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4038,3 +4038,11 @@ Entries: message: Species in the character editor have a shortcut to their guidebook entry id: 6105 time: '2024-03-23T02:09:54.0000000+00:00' +- author: LovelyLophi + changes: + - type: Tweak + message: >- + Sectech now says "Crack communist skulls!" instead of "Crack syndicate + skulls!" + id: 6106 + time: '2024-04-17T04:07:41.0000000+00:00' diff --git a/Resources/Locale/en-US/advertisements/vending/sectech.ftl b/Resources/Locale/en-US/advertisements/vending/sectech.ftl index 8f028971429..1edaa980cdd 100644 --- a/Resources/Locale/en-US/advertisements/vending/sectech.ftl +++ b/Resources/Locale/en-US/advertisements/vending/sectech.ftl @@ -1,4 +1,4 @@ -advertisement-sectech-1 = Crack syndicate skulls! +advertisement-sectech-1 = Crack communist skulls! advertisement-sectech-2 = Beat some heads in! advertisement-sectech-3 = Don't forget - harm is good! advertisement-sectech-4 = Your weapons are right here. diff --git a/Resources/Locale/en-US/deltav/advertisements/vending/courierdrobe.ftl b/Resources/Locale/en-US/deltav/advertisements/vending/courierdrobe.ftl index 17ef24784c9..b411cf2eec7 100644 --- a/Resources/Locale/en-US/deltav/advertisements/vending/courierdrobe.ftl +++ b/Resources/Locale/en-US/deltav/advertisements/vending/courierdrobe.ftl @@ -3,3 +3,5 @@ advertisement-courierdrobe-2 = A great investment for your survival! advertisement-courierdrobe-3 = Wear your brown with pride! advertisement-courierdrobe-4 = These shorts are comfy and easy to wear, get yours now! advertisement-courierdrobe-5 = Outrun every danger with our stylish clothes! +thankyou-courierdrobe-1 = Now get out there and deliver that mail! +thankyou-courierdrobe-1 = Those parcels aren't going to deliver themselves! diff --git a/Resources/Locale/en-US/deltav/advertisements/vending/pride.ftl b/Resources/Locale/en-US/deltav/advertisements/vending/pride.ftl index 1a23169c463..d8c47a8e412 100644 --- a/Resources/Locale/en-US/deltav/advertisements/vending/pride.ftl +++ b/Resources/Locale/en-US/deltav/advertisements/vending/pride.ftl @@ -1,3 +1,5 @@ advertisement-pride-1 = Be gay do crime! advertisement-pride-2 = Full of colors! advertisement-pride-3 = You are valid! +thankyou-pride-1 = Go, do some crime! +thankyou-pride-1 = Have a colorful day! diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml index 0c7661452a1..2038ef00139 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml @@ -24,46 +24,6 @@ components: - type: StorageFill contents: - - id: ClothingUniformJumpsuitColorWhite - prob: 0.25 - - id: ClothingUniformJumpskirtColorWhite - prob: 0.25 - - id: ClothingUniformJumpsuitColorBlue - prob: 0.25 - - id: ClothingUniformJumpskirtColorBlue - prob: 0.25 - - id: ClothingUniformJumpsuitColorYellow - prob: 0.25 - - id: ClothingUniformJumpskirtColorYellow - prob: 0.25 - - id: ClothingUniformJumpsuitColorGreen - prob: 0.25 - - id: ClothingUniformJumpskirtColorGreen - prob: 0.25 - - id: ClothingUniformJumpsuitColorOrange - prob: 0.25 - - id: ClothingUniformJumpskirtColorOrange - prob: 0.25 - - id: ClothingUniformJumpsuitColorPink - prob: 0.25 - - id: ClothingUniformJumpskirtColorPink - prob: 0.25 - - id: ClothingUniformJumpsuitColorRed - prob: 0.25 - - id: ClothingUniformJumpskirtColorRed - prob: 0.25 - - id: ClothingUniformJumpsuitColorDarkBlue - prob: 0.25 - - id: ClothingUniformJumpskirtColorDarkBlue - prob: 0.25 - - id: ClothingUniformJumpsuitColorTeal - prob: 0.25 - - id: ClothingUniformJumpskirtColorTeal - prob: 0.25 - - id: ClothingUniformJumpsuitColorPurple - prob: 0.25 - - id: ClothingUniformJumpskirtColorPurple - prob: 0.25 - id: ClothingShoesColorBlack amount: 1 - id: ClothingShoesColorBrown @@ -74,6 +34,16 @@ prob: 0.4 - id: ClothingOuterCoatGentle prob: 0.3 + - id: ClothingUniformRandomShorts + amount: 3 + - id: ClothingUniformRandomArmless + amount: 5 + - id: ClothingUniformRandomStandart + amount: 5 + - id: ClothingUniformRandomBra + amount: 5 + - id: ClothingUniformRandomShirt + amount: 4 - type: entity id: WardrobeYellowFilled diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 9085bcb4fb3..8f40ce99de2 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -5,6 +5,7 @@ ClothingBackpackDuffel: 5 ClothingBackpackSatchel: 3 ClothingBackpackSatchelLeather: 2 + ClothingRandomSpawner: 8 ClothingHeadHatBeret: 4 ClothingHeadBandBlack: 2 ClothingHeadBandBlue: 2 diff --git a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/courierdrobe.yml b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/courierdrobe.yml index 9878e4bf890..eb9d3d038ae 100644 --- a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/courierdrobe.yml +++ b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/courierdrobe.yml @@ -6,3 +6,6 @@ - advertisement-courierdrobe-3 - advertisement-courierdrobe-4 - advertisement-courierdrobe-5 + thankyous: + - thankyou-courierdrobe-1 + - thankyou-courierdrobe-2 diff --git a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/pride.yml b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/pride.yml index f24ff8fa512..77f5a20858b 100644 --- a/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/pride.yml +++ b/Resources/Prototypes/DeltaV/Catalog/VendingMachines/Advertisements/pride.yml @@ -3,4 +3,7 @@ advertisements: - advertisement-pride-1 - advertisement-pride-2 - - advertisement-pride-3 \ No newline at end of file + - advertisement-pride-3 + thankyous: + - thankyou-pride-1 + - thankyou-pride-2 diff --git a/Resources/Prototypes/DeltaV/Voice/speech_emote_sounds.yml b/Resources/Prototypes/DeltaV/Voice/speech_emote_sounds.yml index ed462c4f7bb..5dbefa16841 100644 --- a/Resources/Prototypes/DeltaV/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/DeltaV/Voice/speech_emote_sounds.yml @@ -28,25 +28,25 @@ collection: HarpyGrowls Purr: collection: HarpyPurrs - Ring: + HarpyRing: collection: HarpyRings - HonkHarpy: + HarpyHonk: collection: HarpyHonks - Pew: + HarpyPew: collection: HarpyPews - Bang: + HarpyBang: collection: HarpyBangs - Beep: + HarpyBeep: collection: HarpyBeeps - Rev: + HarpyRev: collection: HarpyRevs -# Click: -# collection: HarpyClicks + Click: + collection: HarpyClicks Chitter: collection: HarpyChitter Squeak: collection: HarpySqueak - Caw: + HarpyCaw: collection: HarpyCaws Chirp: collection: HarpyChirps @@ -58,6 +58,10 @@ collection: VulpkaninWhines Howl: collection: VulpkaninHowls + Honk: + collection: BikeHorn + Weh: + collection: Weh - type: emoteSounds id: MaleVulpkanin @@ -72,12 +76,20 @@ collection: MaleSneezes Cough: collection: MaleCoughs + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Honk: + collection: BikeHorn + Sigh: + collection: MaleSigh Crying: collection: MaleCry Whistle: collection: Whistles - Sigh: - collection: MaleSigh + Weh: + collection: Weh Growl: collection: VulpkaninGrowls Snarl: @@ -102,12 +114,20 @@ collection: FemaleSneezes Cough: collection: FemaleCoughs + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Honk: + collection: CluwneHorn + Sigh: + collection: FemaleSigh Crying: collection: FemaleCry Whistle: collection: Whistles - Sigh: - collection: FemaleSigh + Weh: + collection: Weh Growl: collection: VulpkaninGrowls Snarl: diff --git a/Resources/Prototypes/DeltaV/Voice/speech_emotes.yml b/Resources/Prototypes/DeltaV/Voice/speech_emotes.yml index 45eec7cb411..2cef3fd038c 100644 --- a/Resources/Prototypes/DeltaV/Voice/speech_emotes.yml +++ b/Resources/Prototypes/DeltaV/Voice/speech_emotes.yml @@ -1,89 +1,157 @@ # Harpy - type: emote - id: HonkHarpy + id: HarpyHonk category: Vocal chatMessages: [honks.] chatTriggers: + - honk - honk. + - honk! + - honk? + - honks - honks. - honks! + - honks? + - honking - honking. + - honking! + - honking? + - honked - honked. + - honked! + - honked? - type: emote - id: Ring + id: HarpyRing category: Vocal chatMessages: [rings.] chatTriggers: + - ring - ring. + - ring! + - ring? + - rings - rings. - rings! + - rings? + - ringing - ringing. + - ringing! + - ringing? + - ringed - ringed. + - ringed! + - ringed? + - rang + - rang. + - rang! + - rang? - type: emote - id: Pew + id: HarpyPew category: Vocal chatMessages: [pews.] chatTriggers: + - pew - pew. - - pews. - pew! + - pew? + - pews + - pews. + - pews! + - pews? + - pewpew + - pewpew. + - pewpew! + - pewpew? - type: emote - id: Bang + id: HarpyBang category: Vocal chatMessages: [bangs.] chatTriggers: - - bangs. + - bang - bang. - bang! + - bang? + - bangs + - bangs. + - bangs! + - bangs? + - banging - banging. + - banging! + - banging? + - banged - banged. + - banged! + - banged? - type: emote - id: Beep + id: HarpyBeep category: Vocal chatMessages: [beeps.] chatTriggers: - - beeps. + - beep - beep. - beep! + - beep? + - beeps + - beeps. + - beeps! + - beeps? + - beeping - beeping. + - beeping! + - beeping? + - beeped - beeped. + - beeped! + - beeped? - type: emote - id: Rev + id: HarpyRev category: Vocal chatMessages: [revs.] chatTriggers: - - revs. + - rev - rev. - rev! + - rev? + - revs + - revs. + - revs! + - revs? - revving + - revving. + - revving! + - revving? - revved - -#- type: emote -# id: Click -# category: Vocal -# chatMessages: [clicks.] -# chatTriggers: -# - clicks. -# - click. -# - click! -# - clicking. -# - clicked. + - revved. + - revved! + - revved? - type: emote - id: Caw + id: HarpyCaw category: Vocal chatMessages: [caws.] chatTriggers: - - caws. + - caw - caw. - caw! + - caw? + - caws + - caws. + - caws! + - caws? - cawing + - cawing. + - cawing! + - cawing? - cawed + - cawed. + - cawed! + - cawed? #Vulpkanin - type: emote @@ -91,48 +159,85 @@ category: Vocal chatMessages: [barks.] chatTriggers: + - bark - bark. - bark! + - bark? + - barks - barks. - barks! + - barks? + - barked - barked. - barked! + - barked? + - barking - barking. + - barking! + - barking? - type: emote id: Snarl category: Vocal chatMessages: [snarls.] chatTriggers: + - snarl - snarl. - snarl! + - snarl? + - snarls - snarls. - snarls! + - snarls? + - snarled - snarled. - snarled! + - snarled? + - snarling - snarling. + - snarling! + - snarling? - type: emote id: Whine category: Vocal chatMessages: [whines.] chatTriggers: + - whine - whine. - whine! + - whine? + - whines - whines. - whines! + - whines? + - whined - whined. - whined! + - whined? + - whining - whining. + - whining! + - whining? - type: emote id: Howl category: Vocal chatMessages: [howls.] chatTriggers: + - howl - howl. - howl! + - howl? + - howls - howls. - howls! + - howls? + - howling - howling. + - howling! + - howling? + - howled - howled. + - howling! + - howling? diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml new file mode 100644 index 00000000000..88278077b5c --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml @@ -0,0 +1,169 @@ + +- type: entity + parent: ClothingUniformBase + id: ClothingUniformRandom + abstract: true + description: Generated by neural networks based on the latest fashion trends. + suffix: Random visual + components: + - type: SuitSensor + - type: Sprite + sprite: Clothing/Uniforms/procedural.rsi + layers: + - state: base_torso_standart + map: [ "torso" ] + - state: base_leg_standart + map: [ "leg" ] + - state: mask_null + map: [ "decor" ] + - state: mask_null + map: [ "overlay" ] + - type: Clothing + femaleMask: UniformTop + maleMask: UniformTop + sprite: Clothing/Uniforms/procedural.rsi + clothingVisuals: + jumpsuit: + - state: base_torso_standart + map: [ "torso" ] + - state: base_leg_standart + map: [ "leg" ] + - state: mask_null + map: [ "decor" ] + - state: mask_null + map: [ "overlay" ] + +- type: entity + parent: ClothingUniformRandom + id: ClothingRandomSpawner + name: random colorful costume + components: + - type: RandomSpawner + offset: 0 + prototypes: + - ClothingUniformRandomArmless + - ClothingUniformRandomStandart + - ClothingUniformRandomBra + - ClothingUniformRandomShorts + - ClothingUniformRandomShirt + +- type: entity + parent: ClothingUniformRandom + id: ClothingUniformRandomArmless + name: colorful hands-free costume + components: + - type: RandomSprite + available: + - torso: + base_torso_armless: Sixteen + leg: + base_leg_standart: Sixteen + base_leg_short: Sixteen + base_leg_skirt: Sixteen + base_leg_skirt_long: Sixteen + decor: + decor_torso_armless1: Sixteen + decor_torso_armless2: Sixteen + decor_torso_armless3: Sixteen + decor_torso_armless4: Sixteen + decor_torso_armless5: Sixteen + decor_torso_armless6: Sixteen + decor_torso_armless7: Sixteen + decor_torso_armless8: Sixteen + decor_torso_armless9: Sixteen + decor_torso_armless10: Sixteen + mask_null: "" + +- type: entity + parent: ClothingUniformRandom + id: ClothingUniformRandomStandart + name: colorful costume + components: + - type: RandomSprite + available: + - torso: + base_torso_standart: Sixteen + base_torso_standart2: Sixteen + leg: + base_leg_standart: Sixteen + base_leg_short: Sixteen + base_leg_skirt: Sixteen + base_leg_skirt_long: Sixteen + decor: + decor_torso_armless1: Sixteen + decor_torso_armless2: Sixteen + decor_torso_armless3: Sixteen + decor_torso_armless4: Sixteen + decor_torso_armless5: Sixteen + decor_torso_armless6: Sixteen + decor_torso_armless7: Sixteen + decor_torso_armless8: Sixteen + decor_torso_armless9: Sixteen + decor_torso_armless10: Sixteen + decor_torso_standart1: Sixteen + decor_torso_standart2: Sixteen + decor_torso_standart3: Sixteen + decor_torso_standart4: Sixteen + decor_torso_standart5: Sixteen + decor_torso_standart6: Sixteen + decor_torso_standart7: Sixteen + decor_torso_standart8: Sixteen + decor_torso_standart9: Sixteen + mask_null: "" + +- type: entity + parent: ClothingUniformRandom + id: ClothingUniformRandomBra + name: colorful bra + components: + - type: RandomSprite + available: + - torso: + base_torso_bra: Sixteen + leg: + base_leg_standart: Sixteen + base_leg_short: Sixteen + base_leg_skirt: Sixteen + base_leg_skirt_long: Sixteen + decor: + decor_torso_bra1: Sixteen + decor_torso_bra2: Sixteen + decor_torso_bra3: Sixteen + decor_torso_bra4: Sixteen + decor_torso_bra5: Sixteen + mask_null: "" + +- type: entity + parent: ClothingUniformRandom + id: ClothingUniformRandomShorts + name: colorful pants + components: + - type: RandomSprite + available: + - torso: + mask_null: "" + leg: + base_leg_standart: Sixteen + base_leg_short: Sixteen + base_leg_skirt: Sixteen + base_leg_skirt_long: Sixteen + +- type: entity + parent: ClothingUniformRandom + id: ClothingUniformRandomShirt + name: colorful costume + components: + - type: RandomSprite + available: + - torso: + base_torso_armless: Sixteen + mask_null: "" + leg: + base_leg_standart: Sixteen + base_leg_short: Sixteen + decor: + base_torso_shirt: Sixteen + overlay: + decor_torso_shirt1: Sixteen + decor_torso_shirt2: Sixteen + decor_torso_shirt3: Sixteen \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml index 19793f873f7..d7a5e2b787d 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml @@ -20,4 +20,4 @@ - type: UserInterface interfaces: - key: enum.ChameleonUiKey.Key - type: ChameleonBoundUserInterface + type: ChameleonBoundUserInterface \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml new file mode 100644 index 00000000000..274db344378 --- /dev/null +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml @@ -0,0 +1,22 @@ +- type: entity + name: random fancy table spawner + id: FancyTableSpawner + parent: MarkerBase + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Furniture/Tables/Fancy/blue.rsi + state: full + - type: RandomSpawner + prototypes: + - TableFancyBlue + - TableFancyCyan + - TableFancyBlack + - TableFancyRed + - TableFancyPurple + - TableFancyPink + - TableFancyGreen + - TableFancyOrange + - TableFancyWhite + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml index c8a098b586e..3b89d1075be 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml @@ -52,7 +52,7 @@ - KeyedInstrument - type: entity - parent: BaseHandheldInstrument + parent: [BaseHandheldInstrument, Clothing] id: HarmonicaInstrument name: harmonica components: @@ -64,6 +64,13 @@ - type: Item size: Small sprite: Objects/Fun/Instruments/harmonica.rsi + storedRotation: -90 + - type: Clothing + quickEquip: false + slots: + - neck + - type: ActivatableUI + inHandsOnly: false - type: Tag tags: - WoodwindInstrument diff --git a/Resources/Prototypes/Entities/Objects/Misc/carpets.yml b/Resources/Prototypes/Entities/Objects/Misc/carpets.yml index d8f32667307..dca2d40aedb 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/carpets.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/carpets.yml @@ -15,7 +15,7 @@ - type: Stack stackType: FloorCarpetRed - type: Tag - tags: + tags: - CarpetRed - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: Carpet @@ -34,7 +34,7 @@ - type: Stack stackType: FloorCarpetBlack - type: Tag - tags: + tags: - CarpetBlack - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetBlack @@ -53,7 +53,7 @@ - type: Stack stackType: FloorCarpetBlue - type: Tag - tags: + tags: - CarpetBlue - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetBlue @@ -72,7 +72,7 @@ - type: Stack stackType: FloorCarpetGreen - type: Tag - tags: + tags: - CarpetGreen - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetGreen @@ -91,7 +91,7 @@ - type: Stack stackType: FloorCarpetOrange - type: Tag - tags: + tags: - CarpetOrange - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetOrange @@ -109,6 +109,9 @@ heldPrefix: carpet-skyblue - type: Stack stackType: FloorCarpetSkyBlue + - type: Tag + tags: + - CarpetSBlue - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetSBlue doAfter: 0.5 @@ -126,7 +129,7 @@ - type: Stack stackType: FloorCarpetPurple - type: Tag - tags: + tags: - CarpetPurple - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetPurple @@ -145,7 +148,7 @@ - type: Stack stackType: FloorCarpetPink - type: Tag - tags: + tags: - CarpetPink - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetPink @@ -164,7 +167,7 @@ - type: Stack stackType: FloorCarpetCyan - type: Tag - tags: + tags: - CarpetCyan - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetCyan @@ -183,7 +186,7 @@ - type: Stack stackType: FloorCarpetWhite - type: Tag - tags: + tags: - CarpetWhite - type: SpawnAfterInteract #Nuke after convert to FloorTile prototype: CarpetWhite diff --git a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml index bfb3069efba..8f9fb382f52 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/cable_coils.yml @@ -18,7 +18,8 @@ sprite: Objects/Tools/cable-coils.rsi - type: Item sprite: Objects/Tools/cable-coils.rsi - size: Normal + size: Small + storedRotation: -90 - type: CablePlacer - type: Clickable - type: StaticPrice diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index 5cbe349416f..ae8d1313d0e 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseStation abstract: true components: @@ -46,15 +46,15 @@ path: /Maps/Shuttles/cargo.yml - type: GridSpawn groups: -# trade: -# addComponents: -# - type: ProtectedGrid -# - type: TradeStation -# paths: -# - /Maps/Shuttles/trading_outpost.yml -# mining: -# paths: -# - /Maps/Shuttles/mining.yml + trade: + addComponents: + - type: ProtectedGrid + - type: TradeStation + paths: + - /Maps/Shuttles/trading_outpost.yml + mining: + paths: + - /Maps/Shuttles/mining.yml # Spawn last ruins: hide: true @@ -80,9 +80,9 @@ cargo: paths: - /Maps/Shuttles/cargo_core.yml -# mining: -# paths: -# - /Maps/Shuttles/mining.yml + mining: + paths: + - /Maps/Shuttles/mining.yml ruins: hide: true nameGrid: true diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index cc8cc325fbb..a8534997f03 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -365,3 +365,32 @@ graph: Seat node: chairSteelBench +- type: entity + name: wooden bench + id: WoodenBench + parent: ChairBase + description: Did you get a splinter? Well, at least it’s eco friendly. + components: + - type: Sprite + state: wooden-bench + - type: Construction + graph: Seat + node: chairWoodBench + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank: + min: 2 + max: 4 + - type: StaticPrice + price: 20 diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index 2caa4010ca0..fa029c035ae 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -53,6 +53,18 @@ components: - type: StorageFill contents: + - id: ClothingUniformRandomArmless + prob: 0.05 + orGroup: dressermainloot + - id: ClothingUniformRandomStandart + prob: 0.05 + orGroup: dressermainloot + - id: ClothingUniformRandomBra + prob: 0.05 + orGroup: dressermainloot + - id: ClothingUniformRandomShorts + prob: 0.05 + orGroup: dressermainloot - id: ClothingNeckLGBTPin prob: 0.06 orGroup: dressermainloot diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 02eeca1dd19..28edde7a13f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -979,6 +979,8 @@ - ClothingUniformJumpskirtDetective - ClothingUniformJumpsuitEngineering - ClothingUniformJumpskirtEngineering + - ClothingUniformJumpsuitSeniorEngineer + - ClothingUniformJumpskirtSeniorEngineer - ClothingHeadHatHopcap - ClothingUniformJumpsuitHoP - ClothingUniformJumpskirtHoP @@ -1012,11 +1014,15 @@ - ClothingHeadHatBeretSeniorPhysician - ClothingUniformJumpsuitMedicalDoctor - ClothingUniformJumpskirtMedicalDoctor + - ClothingUniformJumpsuitSeniorPhysician + - ClothingUniformJumpskirtSeniorPhysician - ClothingUniformJumpsuitMime - ClothingUniformJumpskirtMime - ClothingUniformJumpsuitMusician - ClothingUniformJumpsuitParamedic - ClothingUniformJumpskirtParamedic + - ClothingUniformJumpsuitSeniorOfficer + - ClothingUniformJumpskirtSeniorOfficer - ClothingUniformJumpsuitPrisoner - ClothingUniformJumpskirtPrisoner - ClothingHeadHatQMsoft @@ -1031,6 +1037,8 @@ - ClothingUniformJumpskirtResearchDirector - ClothingUniformJumpsuitScientist - ClothingUniformJumpskirtScientist + - ClothingUniformJumpsuitSeniorResearcher + - ClothingUniformJumpskirtSeniorResearcher - ClothingHeadHatBeretSecurity - ClothingUniformJumpsuitSec - ClothingUniformJumpskirtSec diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml new file mode 100644 index 00000000000..539eca32b6f --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Walls/fence_wood.yml @@ -0,0 +1,418 @@ +- type: entity + parent: BaseStructure + id: BaseFenceWood + name: wooden fence + description: Wooden piece of fencing. I hope there is babushka's garden behind it. + abstract: true + components: + - type: MeleeSound + soundGroups: + Brute: + path: + "/Audio/Weapons/boxingpunch1.ogg" + - type: Tag + tags: + - RCDDeconstructWhitelist + - Wooden + - type: Sprite + sprite: Structures/Walls/wooden_fence.rsi + drawdepth: WallTops + - type: Physics + bodyType: Static + - type: Transform + anchored: true + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 125 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Climbable + delay: 5.0 + - type: Appearance + +- type: entity + parent: BaseFenceWood + id: BaseFenceWoodSmall + name: small wooden fence + description: Wooden piece of small fence. The best protection for the fencing of a private territory! + abstract: true + components: + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 75 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + MaterialWoodPlank: + min: 0 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Climbable + delay: 2.5 + + +#High +- type: entity + parent: BaseFenceWood + id: FenceWoodHighStraight + suffix: Straight + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: straight + - type: Sprite + layers: + - state: straight + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: straight + +- type: entity + parent: BaseFenceWood + id: FenceWoodHighEnd + suffix: End + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: end + - type: Sprite + layers: + - state: end + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.5,0.1,0.0" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: end + +- type: entity + parent: BaseFenceWood + id: FenceWoodHighCorner + suffix: Corner + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: corner + - type: Sprite + layers: + - state: corner + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.5" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,-0.1,0.1" + density: 1000 + mask: + - TableMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: corner + +- type: entity + parent: BaseFenceWood + id: FenceWoodHighTJunction + suffix: T-Junction + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: tjunction + - type: Sprite + layers: + - state: tjunction + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,-0.1,0.1" + density: 1000 + mask: + - TableMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: tjunction + +- type: entity + parent: BaseFenceWood + id: FenceWoodHighGate + name: wooden fence gate + description: Do you have any idea what awaits you behind these gates? It can be either a toilet or a luxurious mansion. But you continue to love your emo boys. + components: + - type: Sprite + layers: + - state: end + map: ["enum.DoorVisualLayers.Base"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,0.5,0.1" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: InteractionOutline + - type: Door + openSpriteState: door_opened + closedSpriteState: door_closed_small #idk how, but it's working + canPry: false + occludes: false + changeAirtight: false + bumpOpen: false + clickOpen: true + canCrush: false + closeTimeOne: 0 + closeTimeTwo: 0 + openTimeOne: 0 + openTimeTwo: 0 + openingAnimationTime: 0 + closingAnimationTime: 0 + openSound: + path: /Audio/Effects/door_open.ogg + closeSound: + path: /Audio/Effects/door_close.ogg + - type: Construction + graph: FenceWood + node: gate + +#Small +- type: entity + parent: BaseFenceWoodSmall + id: FenceWoodSmallStraight + suffix: Straight + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: straight_small + - type: Sprite + layers: + - state: straight_small + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: straight_small + +- type: entity + parent: BaseFenceWoodSmall + id: FenceWoodSmallEnd + suffix: End + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: end_small + - type: Sprite + layers: + - state: end_small + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.5,0.1,0.0" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: end_small + +- type: entity + parent: BaseFenceWoodSmall + id: FenceWoodSmallCorner + suffix: Corner + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: corner_small + - type: Sprite + layers: + - state: corner_small + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.5" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,-0.1,0.1" + density: 1000 + mask: + - TableMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: corner_small + +- type: entity + parent: BaseFenceWoodSmall + id: FenceWoodSmallTJunction + suffix: T-Junction + components: + - type: Icon + sprite: Structures/Walls/wooden_fence.rsi + state: tjunction_small + - type: Sprite + layers: + - state: tjunction_small + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.10,-0.5,0.10,0.5" + density: 1000 + mask: + - TableMask + layer: + - TableLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,-0.1,0.1" + density: 1000 + mask: + - TableMask + layer: + - MidImpassable + - LowImpassable + - type: Construction + graph: FenceWood + node: tjunction_small + +- type: entity + parent: BaseFenceWoodSmall + id: FenceWoodSmallGate + name: wooden fence gate + description: Looking at this gate, a familiar image pops up in your head. Where's my piggy? + components: + - type: Sprite + layers: + - state: end + map: ["enum.DoorVisualLayers.Base"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.1,0.5,0.1" + density: 1000 + mask: + - FullTileMask + layer: + - MidImpassable + - LowImpassable + - type: InteractionOutline + - type: Door + openSpriteState: door_opened_small + closedSpriteState: door_closed + canPry: false + occludes: false + changeAirtight: false + bumpOpen: false + clickOpen: true + canCrush: false + closeTimeOne: 0 + closeTimeTwo: 0 + openTimeOne: 0 + openTimeTwo: 0 + openingAnimationTime: 0 + closingAnimationTime: 0 + openSound: + path: /Audio/Effects/door_open.ogg + closeSound: + path: /Audio/Effects/door_close.ogg + - type: Construction + graph: FenceWood + node: gate_small \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/stairs.yml b/Resources/Prototypes/Entities/Structures/stairs.yml index 628c9331488..0ff3b0d7d36 100644 --- a/Resources/Prototypes/Entities/Structures/stairs.yml +++ b/Resources/Prototypes/Entities/Structures/stairs.yml @@ -1,7 +1,7 @@ - type: entity id: Stairs name: stairs - suffix: steel + suffix: Steel description: The greatest invention since rocket-propelled grenades. placement: mode: SnapgridCenter @@ -39,7 +39,7 @@ - type: entity id: StairStage parent: Stairs - suffix: steel, stage + suffix: Steel, stage components: - type: Sprite sprite: Structures/stairs.rsi @@ -49,7 +49,7 @@ - type: entity id: StairWhite parent: Stairs - suffix: white + suffix: White components: - type: Sprite sprite: Structures/stairs.rsi @@ -59,7 +59,7 @@ - type: entity id: StairStageWhite parent: Stairs - suffix: white, stage + suffix: White, stage components: - type: Sprite sprite: Structures/stairs.rsi @@ -69,7 +69,7 @@ - type: entity id: StairDark parent: Stairs - suffix: dark + suffix: Dark components: - type: Sprite sprite: Structures/stairs.rsi @@ -79,9 +79,29 @@ - type: entity id: StairStageDark parent: Stairs - suffix: dark, stage + suffix: Dark, stage components: - type: Sprite sprite: Structures/stairs.rsi state: stairs_stage_dark drawdepth: FloorTiles + +- type: entity + id: StairWood + parent: Stairs + suffix: Wood + components: + - type: Sprite + sprite: Structures/stairs.rsi + state: stairs_wood + drawdepth: FloorTiles + +- type: entity + id: StairStageWood + parent: Stairs + suffix: Wood, stage + components: + - type: Sprite + sprite: Structures/stairs.rsi + state: stairs_stage_wood + drawdepth: FloorTiles diff --git a/Resources/Prototypes/Nyanotrasen/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Nyanotrasen/Voice/speech_emote_sounds.yml index aa88242795d..b752e94020f 100644 --- a/Resources/Prototypes/Nyanotrasen/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Nyanotrasen/Voice/speech_emote_sounds.yml @@ -12,10 +12,20 @@ collection: MaleSneezes Cough: collection: MaleCoughs + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Honk: + collection: BikeHorn + Sigh: + collection: MaleSigh Crying: collection: MaleCry Whistle: collection: Whistles + Weh: + collection: Weh Hiss: collection: FelinidHisses Meow: @@ -26,8 +36,6 @@ collection: FelinidGrowls Purr: collection: FelinidPurrs - Sigh: - collection: MaleSigh - type: emoteSounds id: FemaleFelinid @@ -42,10 +50,20 @@ collection: FemaleSneezes Cough: collection: FemaleCoughs + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Honk: + collection: CluwneHorn + Sigh: + collection: FemaleSigh Crying: collection: FemaleCry Whistle: collection: Whistles + Weh: + collection: Weh Hiss: collection: FelinidHisses Meow: @@ -56,13 +74,3 @@ collection: FelinidGrowls Purr: collection: FelinidPurrs - Sigh: - collection: FemaleSigh - -# mobs -- type: emoteSounds - id: Mothroach - sound: - path: /Audio/Voice/Moth/moth_squeak.ogg - params: - variation: 0.125 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml index f859daabc9f..c587e47efb8 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml @@ -68,6 +68,11 @@ - material: Steel amount: 2 doAfter: 1 + - to: chairWoodBench + steps: + - material: WoodPlank + amount: 4 + doAfter: 2 - to: redComfBench steps: - material: Steel @@ -226,6 +231,18 @@ - tool: Screwing doAfter: 1 + - node: chairWoodBench + entity: WoodenBench + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 4 + steps: + - tool: Screwing + doAfter: 2 + - node: redComfBench entity: BenchRedComfy edges: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml new file mode 100644 index 00000000000..081328f1612 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml @@ -0,0 +1,176 @@ +- type: constructionGraph + id: FenceWood + start: start + graph: + - node: start + edges: + - to: straight + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: end + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: corner + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: tjunction + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: gate + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: straight_small + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: end_small + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: corner_small + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: tjunction_small + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - to: gate_small + steps: + - material: WoodPlank + amount: 2 + doAfter: 2.0 + - node: straight + entity: FenceWoodHighStraight + edges: + - to: start + steps: + - tool: Prying + doAfter: 5.0 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + - !type:DeleteEntity {} + - node: end + entity: FenceWoodHighEnd + edges: + - to: start + steps: + - tool: Prying + doAfter: 2.5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + - !type:DeleteEntity {} + - node: corner + entity: FenceWoodHighCorner + edges: + - to: start + steps: + - tool: Prying + doAfter: 5.0 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + - !type:DeleteEntity {} + - node: tjunction + entity: FenceWoodHighTJunction + edges: + - to: start + steps: + - tool: Prying + doAfter: 5.0 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + - !type:DeleteEntity {} + - node: gate + entity: FenceWoodHighGate + edges: + - to: start + steps: + - tool: Prying + doAfter: 5.0 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + - !type:DeleteEntity {} + - node: straight_small + entity: FenceWoodSmallStraight + edges: + - to: start + steps: + - tool: Prying + doAfter: 2.5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 1 + - !type:DeleteEntity {} + - node: end_small + entity: FenceWoodSmallEnd + edges: + - to: start + steps: + - tool: Prying + doAfter: 1.25 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 1 + - !type:DeleteEntity {} + - node: corner_small + entity: FenceWoodSmallCorner + edges: + - to: start + steps: + - tool: Prying + doAfter: 2.5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 1 + - !type:DeleteEntity {} + - node: tjunction_small + entity: FenceWoodSmallTJunction + edges: + - to: start + steps: + - tool: Prying + doAfter: 2.5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 1 + - !type:DeleteEntity {} + - node: gate_small + entity: FenceWoodSmallGate + edges: + - to: start + steps: + - tool: Prying + doAfter: 2.5 + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 1 + - !type:DeleteEntity {} \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/furniture.yml b/Resources/Prototypes/Recipes/Construction/furniture.yml index 4e05a4dfb86..1a17b2f856d 100644 --- a/Resources/Prototypes/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/Recipes/Construction/furniture.yml @@ -220,6 +220,23 @@ conditions: - !type:TileNotBlocked +- type: construction + name: wooden bench + id: ChairWoodBench + graph: Seat + startNode: start + targetNode: chairWoodBench + category: construction-category-furniture + description: Did you get a splinter? Well, at least it’s eco friendly. + icon: + sprite: Structures/Furniture/chairs.rsi + state: wooden-bench + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: comfortable red bench id: RedComfBench diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index efc4236389e..32117812eeb 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -996,6 +996,179 @@ conditions: - !type:TileNotBlocked +#Wooden fence high +- type: construction + name: wooden high fence + id: FenceWood + graph: FenceWood + startNode: start + targetNode: straight + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: straight + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden high fence end + id: FenceWoodEnd + graph: FenceWood + startNode: start + targetNode: end + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: end + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden high fence corner + id: FenceWoodCorner + graph: FenceWood + startNode: start + targetNode: corner + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: corner + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden high fence t-junction + id: FenceWoodTJunction + graph: FenceWood + startNode: start + targetNode: tjunction + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: tjunction + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden high fence gate + id: FenceWoodGate + graph: FenceWood + startNode: start + targetNode: gate + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: door_closed + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +#Wooden fence small +- type: construction + name: wooden small fence + id: FenceWoodSmall + graph: FenceWood + startNode: start + targetNode: straight_small + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: straight_small + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden small fence end + id: FenceWoodEndSmall + graph: FenceWood + startNode: start + targetNode: end_small + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: end_small + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden small fence corner + id: FenceWoodCornerSmall + graph: FenceWood + startNode: start + targetNode: corner_small + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: corner_small + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden small fence t-junction + id: FenceWoodTJunctionSmall + graph: FenceWood + startNode: start + targetNode: tjunction_small + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: tjunction_small + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: wooden small fence gate + id: FenceWoodGateSmall + graph: FenceWood + startNode: start + targetNode: gate_small + category: construction-category-structures + description: Part of a wooden fence meant to cordon off areas. + icon: + sprite: Structures/Walls/wooden_fence.rsi + state: door_closed_small + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +#Airlocks - type: construction name: airlock id: Airlock diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 626ec82a914..19b2fbb883c 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -245,6 +245,20 @@ materials: Cloth: 300 +- type: latheRecipe + id: ClothingUniformJumpsuitSeniorEngineer + result: ClothingUniformJumpsuitSeniorEngineer + completetime: 4 + materials: + Cloth: 300 + +- type: latheRecipe + id: ClothingUniformJumpskirtSeniorEngineer + result: ClothingUniformJumpskirtSeniorEngineer + completetime: 4 + materials: + Cloth: 300 + - type: latheRecipe id: ClothingUniformJumpsuitHoP result: ClothingUniformJumpsuitHoP @@ -404,6 +418,20 @@ materials: Cloth: 300 +- type: latheRecipe + id: ClothingUniformJumpsuitSeniorPhysician + result: ClothingUniformJumpsuitSeniorPhysician + completetime: 4 + materials: + Cloth: 300 + +- type: latheRecipe + id: ClothingUniformJumpskirtSeniorPhysician + result: ClothingUniformJumpskirtSeniorPhysician + completetime: 4 + materials: + Cloth: 300 + - type: latheRecipe id: ClothingUniformJumpsuitMime result: ClothingUniformJumpsuitMime @@ -453,6 +481,20 @@ materials: Cloth: 300 +- type: latheRecipe + id: ClothingUniformJumpsuitSeniorOfficer + result: ClothingUniformJumpsuitSeniorOfficer + completetime: 4 + materials: + Cloth: 300 + +- type: latheRecipe + id: ClothingUniformJumpskirtSeniorOfficer + result: ClothingUniformJumpskirtSeniorOfficer + completetime: 4 + materials: + Cloth: 300 + - type: latheRecipe id: ClothingUniformJumpsuitPrisoner result: ClothingUniformJumpsuitPrisoner @@ -532,6 +574,20 @@ materials: Cloth: 300 +- type: latheRecipe + id: ClothingUniformJumpsuitSeniorResearcher + result: ClothingUniformJumpsuitSeniorResearcher + completetime: 4 + materials: + Cloth: 300 + +- type: latheRecipe + id: ClothingUniformJumpskirtSeniorResearcher + result: ClothingUniformJumpskirtSeniorResearcher + completetime: 4 + materials: + Cloth: 300 + - type: latheRecipe id: ClothingUniformJumpsuitSec result: ClothingUniformJumpsuitSec diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index 8e33f483aa3..7eb2bd4f6a0 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -170,9 +170,19 @@ - click - click. - click! + - click? - clicks - clicks. - clicks! + - clicks? + - clicked + - clicked. + - clicked! + - clicked? + - clicking + - clicking. + - clicking! + - clicking? # hand emotes - type: emote @@ -253,14 +263,18 @@ chatMessages: [chirps!] chatTriggers: - chirp - - chirp! - chirp. + - chirp! + - chirp? - chirps - - churps. + - chirps. - chirps! + - chirps? - chirped - chirped. - chirped! + - chirped? - chirping - chirping. - chirping! + - chirping? diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 9f06df7bcb3..2b11b7991b0 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -271,6 +271,9 @@ - type: Tag id: CarpetPurple +- type: Tag + id: CarpetSBlue + - type: Tag id: CarpetPink diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_short.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_short.png new file mode 100644 index 00000000000..e3b74ba7b65 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_short.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt.png new file mode 100644 index 00000000000..3341ff44181 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt_long.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt_long.png new file mode 100644 index 00000000000..5c83cae1370 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_skirt_long.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png new file mode 100644 index 00000000000..7140a3869c3 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_armless.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_armless.png new file mode 100644 index 00000000000..2864e1c04e7 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_armless.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_bra.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_bra.png new file mode 100644 index 00000000000..03c8d493fb8 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_bra.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_shirt.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_shirt.png new file mode 100644 index 00000000000..b03f3942795 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_shirt.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png new file mode 100644 index 00000000000..1db1be4c682 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png new file mode 100644 index 00000000000..5397d8e8d7b Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless1.png new file mode 100644 index 00000000000..d2110b9f5a1 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless1.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless10.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless10.png new file mode 100644 index 00000000000..4060a0d6a5a Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless10.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless2.png new file mode 100644 index 00000000000..7f504cbc7ac Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless2.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless3.png new file mode 100644 index 00000000000..6897496738b Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless3.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless4.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless4.png new file mode 100644 index 00000000000..7f464aabeca Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless4.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless5.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless5.png new file mode 100644 index 00000000000..e971de5bd4a Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless5.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless6.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless6.png new file mode 100644 index 00000000000..fbc8f296ee7 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless6.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless7.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless7.png new file mode 100644 index 00000000000..6055cdc6522 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless7.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless8.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless8.png new file mode 100644 index 00000000000..979b9b80784 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless8.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless9.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless9.png new file mode 100644 index 00000000000..3e5919e1267 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_armless9.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra1.png new file mode 100644 index 00000000000..da752a9f451 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra1.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra2.png new file mode 100644 index 00000000000..a92430a43b4 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra2.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra3.png new file mode 100644 index 00000000000..516e059ac5c Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra3.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra4.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra4.png new file mode 100644 index 00000000000..f7c46e8ed6e Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra4.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra5.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra5.png new file mode 100644 index 00000000000..7a4c269dda7 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_bra5.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt1.png new file mode 100644 index 00000000000..c742af5197d Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt1.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt2.png new file mode 100644 index 00000000000..79f1cf1a838 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt2.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt3.png new file mode 100644 index 00000000000..6223263eaaf Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_shirt3.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png new file mode 100644 index 00000000000..4771eb94564 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png new file mode 100644 index 00000000000..38826113986 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png new file mode 100644 index 00000000000..30533972f29 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png new file mode 100644 index 00000000000..38879be4bd0 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png new file mode 100644 index 00000000000..fc747a3e997 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png new file mode 100644 index 00000000000..e6b72768015 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png new file mode 100644 index 00000000000..f2aa726ae69 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png new file mode 100644 index 00000000000..042b7f9d09b Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png new file mode 100644 index 00000000000..11e048f48bb Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/mask_null.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/mask_null.png new file mode 100644 index 00000000000..2975c479be7 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/procedural.rsi/mask_null.png differ diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json new file mode 100644 index 00000000000..08133fc00b0 --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json @@ -0,0 +1,159 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "The sprite base is taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, separated into layers and added new ones by TheShuEd (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base_leg_short", + "directions": 4 + }, + { + "name": "base_leg_skirt", + "directions": 4 + }, + { + "name": "base_leg_skirt_long", + "directions": 4 + }, + { + "name": "base_leg_standart", + "directions": 4 + }, + { + "name": "base_torso_armless", + "directions": 4 + }, + { + "name": "base_torso_bra", + "directions": 4 + }, + { + "name": "base_torso_shirt", + "directions": 4 + }, + { + "name": "base_torso_standart", + "directions": 4 + }, + { + "name": "base_torso_standart2", + "directions": 4 + }, + { + "name": "decor_torso_armless1", + "directions": 4 + }, + { + "name": "decor_torso_armless2", + "directions": 4 + }, + { + "name": "decor_torso_armless3", + "directions": 4 + }, + { + "name": "decor_torso_armless4", + "directions": 4 + }, + { + "name": "decor_torso_armless5", + "directions": 4 + }, + { + "name": "decor_torso_armless6", + "directions": 4 + }, + { + "name": "decor_torso_armless7", + "directions": 4 + }, + { + "name": "decor_torso_armless8", + "directions": 4 + }, + { + "name": "decor_torso_armless9", + "directions": 4 + }, + { + "name": "decor_torso_armless10", + "directions": 4 + }, + { + "name": "decor_torso_bra1", + "directions": 4 + }, + { + "name": "decor_torso_bra2", + "directions": 4 + }, + { + "name": "decor_torso_bra3", + "directions": 4 + }, + { + "name": "decor_torso_bra4", + "directions": 4 + }, + { + "name": "decor_torso_bra5", + "directions": 4 + }, + { + "name": "decor_torso_shirt1", + "directions": 4 + }, + { + "name": "decor_torso_shirt2", + "directions": 4 + }, + { + "name": "decor_torso_shirt3", + "directions": 4 + }, + { + "name": "decor_torso_standart1", + "directions": 4 + }, + { + "name": "decor_torso_standart2", + "directions": 4 + }, + { + "name": "decor_torso_standart3", + "directions": 4 + }, + { + "name": "decor_torso_standart4", + "directions": 4 + }, + { + "name": "decor_torso_standart5", + "directions": 4 + }, + { + "name": "decor_torso_standart6", + "directions": 4 + }, + { + "name": "decor_torso_standart7", + "directions": 4 + }, + { + "name": "decor_torso_standart8", + "directions": 4 + }, + { + "name": "decor_torso_standart9", + "directions": 4 + }, + { + "name": "mask_null", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..aeaa1825228 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json index d57c3cdf005..2adfbbc375d 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json @@ -54,6 +54,32 @@ 0.2 ] ] + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "on-equipped-SUITSTORAGE", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ] + ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..351623cf28f Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..d775e61dc7e Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json index d9ea7ada5fd..4f37eed72ca 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json @@ -59,6 +59,36 @@ 0.1 ] ] + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "on-equipped-SUITSTORAGE", + "directions": 4, + "delays": [ + [ + 0.5, + 0.2, + 0.1 + ], + [ + 0.5, + 0.2, + 0.1 + ], + [ + 0.5, + 0.2, + 0.1 + ], + [ + 0.5, + 0.2, + 0.1 + ] + ] } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..4348c5463c8 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..4b7e877c752 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/meta.json index 2fcae77e7b2..41bdc989584 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/meta.json @@ -36,6 +36,14 @@ { "name": "on-equipped-BACKPACK", "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, + { + "name": "on-equipped-SUITSTORAGE", + "directions": 4 } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/on-equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/on-equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..c1cbd4967bc Binary files /dev/null and b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/on-equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..57675fec220 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/anesthetic.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json index 26106db4a33..1450c5a2d23 100644 --- a/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/anesthetic.rsi/meta.json @@ -14,6 +14,10 @@ "name": "equipped-BACKPACK", "directions": 4 }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, { "name": "equipped-SUITSTORAGE-dog", "directions": 4, diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/generic.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..332f1d08f37 Binary files /dev/null and b/Resources/Textures/Objects/Tanks/generic.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/generic.rsi/meta.json b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json index 897d32989af..98b81aaf259 100644 --- a/Resources/Textures/Objects/Tanks/generic.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/generic.rsi/meta.json @@ -14,6 +14,10 @@ "name": "equipped-BACKPACK", "directions": 4 }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, { "name": "equipped-SUITSTORAGE-dog", "directions": 4, diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..d890d08c1af Binary files /dev/null and b/Resources/Textures/Objects/Tanks/oxygen.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json index 26106db4a33..1450c5a2d23 100644 --- a/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/oxygen.rsi/meta.json @@ -14,6 +14,10 @@ "name": "equipped-BACKPACK", "directions": 4 }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, { "name": "equipped-SUITSTORAGE-dog", "directions": 4, diff --git a/Resources/Textures/Objects/Tanks/red.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Tanks/red.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 00000000000..6c36a11d4de Binary files /dev/null and b/Resources/Textures/Objects/Tanks/red.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Tanks/red.rsi/meta.json b/Resources/Textures/Objects/Tanks/red.rsi/meta.json index 26106db4a33..1450c5a2d23 100644 --- a/Resources/Textures/Objects/Tanks/red.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/red.rsi/meta.json @@ -14,6 +14,10 @@ "name": "equipped-BACKPACK", "directions": 4 }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + }, { "name": "equipped-SUITSTORAGE-dog", "directions": 4, diff --git a/Resources/Textures/Structures/Furniture/chairs.rsi/meta.json b/Resources/Textures/Structures/Furniture/chairs.rsi/meta.json index c94ef979092..cbfc417444a 100644 --- a/Resources/Textures/Structures/Furniture/chairs.rsi/meta.json +++ b/Resources/Textures/Structures/Furniture/chairs.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/11402f6ae62facc2e8bcfa1f8ef5353b26663278, meat.png is CC0-1.0 by EmoGarbage404 (github) for Space Station 14. chair.png and its derrivatives taken from shiptest at commit https://github.com/shiptest-ss13/Shiptest/commit/f761c784812e827960a66cd10aac17ebc6edfac3, palette for chair.png, steel-bench.png and chair-greyscale.png taken from paradise equivalent chairs at commit https://github.com/ParadiseSS13/Paradise/commit/5ce5a66c814c4a60118d24885389357fd0240002, steel by SonicHDC, brass chair.png taken from tgstation at https://github.com/tgstation/tgstation/blob/b7e7779c19b76449c290aaf2150fb93545b1a79a/icons/obj/chairs.dmi", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/11402f6ae62facc2e8bcfa1f8ef5353b26663278, meat.png is CC0-1.0 by EmoGarbage404 (github) for Space Station 14. chair.png and its derrivatives taken from shiptest at commit https://github.com/shiptest-ss13/Shiptest/commit/f761c784812e827960a66cd10aac17ebc6edfac3, palette for chair.png, steel-bench.png and chair-greyscale.png taken from paradise equivalent chairs at commit https://github.com/ParadiseSS13/Paradise/commit/5ce5a66c814c4a60118d24885389357fd0240002, steel by SonicHDC, brass chair.png taken from tgstation at https://github.com/tgstation/tgstation/blob/b7e7779c19b76449c290aaf2150fb93545b1a79a/icons/obj/chairs.dmi, wooden bench by Ko4erga (discord)", "size": { "x": 32, "y": 32 @@ -71,6 +71,10 @@ "name": "wooden", "directions": 4 }, + { + "name": "wooden-bench", + "directions": 4 + }, { "name": "wooden-wings", "directions": 4 diff --git a/Resources/Textures/Structures/Furniture/chairs.rsi/wooden-bench.png b/Resources/Textures/Structures/Furniture/chairs.rsi/wooden-bench.png new file mode 100644 index 00000000000..00192a14479 Binary files /dev/null and b/Resources/Textures/Structures/Furniture/chairs.rsi/wooden-bench.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner.png new file mode 100644 index 00000000000..a7fe858c4bd Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner_small.png new file mode 100644 index 00000000000..4e80b4d19e6 Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/corner_small.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed.png new file mode 100644 index 00000000000..2f02a6f743a Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed_small.png new file mode 100644 index 00000000000..2b3693e9dcf Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_closed_small.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened.png new file mode 100644 index 00000000000..4464eac3be5 Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened_small.png new file mode 100644 index 00000000000..99dc852d35f Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/door_opened_small.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/end.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/end.png new file mode 100644 index 00000000000..8e4a035214a Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/end.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/end_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/end_small.png new file mode 100644 index 00000000000..aefaef6ed3d Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/end_small.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/meta.json b/Resources/Textures/Structures/Walls/wooden_fence.rsi/meta.json new file mode 100644 index 00000000000..9253b538d95 --- /dev/null +++ b/Resources/Textures/Structures/Walls/wooden_fence.rsi/meta.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by Ko4erga (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "straight", + "directions": 4 + }, + { + "name": "end", + "directions": 4 + }, + { + "name": "corner", + "directions": 4 + }, + { + "name": "door_closed", + "directions": 4 + }, + { + "name": "door_opened", + "directions": 4 + }, + { + "name": "tjunction", + "directions": 4 + }, + { + "name": "straight_small", + "directions": 4 + }, + { + "name": "end_small", + "directions": 4 + }, + { + "name": "corner_small", + "directions": 4 + }, + { + "name": "door_closed_small", + "directions": 4 + }, + { + "name": "door_opened_small", + "directions": 4 + }, + { + "name": "tjunction_small", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight.png new file mode 100644 index 00000000000..4eb510ff696 Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight_small.png new file mode 100644 index 00000000000..b148fc84310 Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/straight_small.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction.png new file mode 100644 index 00000000000..85cd3d431a6 Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction.png differ diff --git a/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction_small.png b/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction_small.png new file mode 100644 index 00000000000..8dc3ee32f6e Binary files /dev/null and b/Resources/Textures/Structures/Walls/wooden_fence.rsi/tjunction_small.png differ diff --git a/Resources/Textures/Structures/stairs.rsi/meta.json b/Resources/Textures/Structures/stairs.rsi/meta.json index d9f5a22fbe3..586e1cd2e4d 100644 --- a/Resources/Textures/Structures/stairs.rsi/meta.json +++ b/Resources/Textures/Structures/stairs.rsi/meta.json @@ -27,6 +27,13 @@ }, { "name": "stairs_stage_dark" + }, + { + "name": "stairs_wood", + "directions": 4 + }, + { + "name": "stairs_stage_wood" } ] } diff --git a/Resources/Textures/Structures/stairs.rsi/stairs_stage_wood.png b/Resources/Textures/Structures/stairs.rsi/stairs_stage_wood.png new file mode 100644 index 00000000000..615933e917d Binary files /dev/null and b/Resources/Textures/Structures/stairs.rsi/stairs_stage_wood.png differ diff --git a/Resources/Textures/Structures/stairs.rsi/stairs_wood.png b/Resources/Textures/Structures/stairs.rsi/stairs_wood.png new file mode 100644 index 00000000000..7c5d17a6c8d Binary files /dev/null and b/Resources/Textures/Structures/stairs.rsi/stairs_wood.png differ