* say goodbye to no-snout lizards
* remove snout from plague doctor hat HideLayerClothing component
(cherry picked from commit 87467a358bfb874f15e7aa4afef5abd76423d22f)
# Description
I got baited by Ectoplasm, so I then spent 3 hours shaving off a
sizeable chunk of this game's performance cost, including by taking 3 of
the "Top 10 frametime consumers", and reducing their performance costs
by 99% each. Along with various examples of slimming down some of the
worst EQE's.
Oh, and I fixed EmitSoundOnMove being desynced with actual movement. As
part of making EmitSoundOnMove use 99% less CPU time, it was also
synchronized with the MoverController.
# Changelog
🆑
- fix: Fixed items such as tactical webbing, bell collars, and hardsuits
being desynced with character movement.
- tweak: Made various large performance improvements.
(cherry picked from commit 684e8175443167beb0e20e3323a05b5f493b3374)
# Description
This PR adds a mechanic to various hardsuits and tacsuits, which can now
include optional features such as Integrated Thrusters, or Integrated
Magboots. All the syndicate tacsuits and "Advanced" crew tacsuits have
both. Hardsuits typically have one or the other, rarely both. Vacsuits
never have either, get a jetpack nerd.
While I was at it, I fixed various bugs making these features obnoxious
to interact with, such as hardsuits helmet toggles not showing the
helmet, or turning on your integrated magboots also causing you to start
sucking the air out of your integrated thrusters.
Finally to address players incessantly complaining that "waaah space
wind is too unfair it keeps me in the air too long", I lowered the
maximum time player characters can go without being updated by space
wind to 1 second, down from 2. Base items are untouched, so they'll
remain in the air as per normal.
# Changelog
🆑
- add: Added "Integrated Thrusters" and "Integrated Magboots" as
features that hardsuits and tacsuits can sometimes have. Hardsuits
rarely have both, and sometimes have neither, while the more "Advanced"
Tacsuits such as the CSA series of suits will always have both.
- tweak: Reduced the maximum amount of time player characters can remain
in the air without being touched by space wind again to 1 second, down
from 2. This does nothing if you're actively being thrown.
- fix: Fixed a bug where the hardsuit action to toggle your helmet
wasn't displaying the helmet icon.
(cherry picked from commit b6be634252745fa61e3db3094d94c7f3c234a094)
# Description
Thanks to MajorMoth for making these sound effects! This PR adds custom
sound effects to Hardsuits & Tacsuits that are generated when the wearer
moves. However while making this PR, I ran into three different bugs
with the EmitSoundOnMoveSystem, so I fixed all 3 of them!
# TODO
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/cb5d3873-3eb7-4cab-8ec2-2ba5b5d6480d
</p>
</details>
# Changelog
🆑 VMSolidus and MajorMoth
- add: Hardsuits now have sounds made when the wearer moves!
- fix: Fixed several bugs with EmitSoundOnMove. It no longer plays the
same sound 7 times in a row for the client. It can now differentiate
between items that must be worn to make sounds and otherwise. It can
also have variable distance needed to travel to make a sound.
- add: Hardsuits and Tacsuits are now separated into Light, Medium, and
Heavy categories, with each category having its own sound effects, mass,
throwing statistics, and don/doff time. Most hardsuits are Light. Most
Tacsuits are Medium. Some suits like Warden, Juggernaut, Nukie
Commander, and Mysta Bombsuit are heavy.
(cherry picked from commit cdf8468717bd14a1036148b491b8aeb0fd845ffa)
# Description
Adds **almost two hundred** (192) new items to Loadouts, vastly
increasing the fashion content available to players. Most of them are
colorable, allowing for an insane amount of customization.
Most of the new clothing comes from Aurora Station, with ports from
World Server and Nuclear 14 as well. Also added were some unused clothes
to loadouts.
New loadout items count:
**Uniform:** 85
**Outer:** 31
**Head:** 18
**Neck:** 17
**Eyes:** 14
**Shoes:** 14
**Belt:** 7
**Security Eyewear:** 3
**Back:** 2
**Hands:** 1
## Technical Details
I had to touch C# for high heels, because I had to make sure they were
hiding the left foot and right foot layers and avoid a bug where the
Shitmed body part system enabled the feet layers again after the high
heels were equipped by the loadout system.
I added two new layers to all species, `innerBelt` and `innerNeck` which
are rendered below outer clothing so that the new belts and the neck tie
aren't rendered above jackets, coats and such.
## Lookbook
### New Outfits

Outfit information:
<details><summary>
[Top Left] Summer Days
</summary>
<b>Head:</b> fedora (colorable)
<b>Neck:</b> necklace (colorable)
<b>Outer:</b> slim cardigan, opened (colorable)
<b>Uniform:</b> long-sleeve A-line dress (colorable)
<b>Belt:</b> waist belt (colorable)
<b>Back:</b> purse, flipped (colorable)
<b>Shoes:</b> flip flops, alternative (colorable)
Note how the waist belt is covered by the slim cardigan, due to being in
the `innerBelt` layer.
</details>
<details><summary>
[Top Middle] Formalwear
</summary>
<b>Head:</b> small hair bow (colorable)
<b>Neck:</b> necklace (colorable)
<b>Uniform:</b> asymmetric dress (colorable)
<b>Hands:</b> evening gloves (colorable)
<b>Belt:</b> thin waist belt (colorable)
<b>Back:</b> purse (colorable)
<b>Shoes:</b> high heels (colorable)
</details>
<details><summary>
[Top Right] Boho-Chic
</summary>
<b>Head:</b> hair flower (colorable)
<b>Neck:</b> small necklace (colorable)
<b>Outer:</b> asymmetric coat, opened (colorable)
<b>Uniform:</b> midi dress (colorable)
<b>Belt:</b> waist belt (colorable)
<b>Back:</b> purse (colorable)
<b>Shoes:</b> flats (colorable)
</details>
<details><summary>
[Bottom Left] Nurse
</summary>
<b>Head:</b> nurse hat
<b>Neck:</b> round necklace (colorable)
<b>Uniform:</b> club dress (colorable)
<b>Hands:</b> evening gloves (colorable)
<b>Back:</b> purse (colorable)
<b>Shoes:</b> flats (colorable)
</details>
<details><summary>
[Bottom Middle] Smart Casual
</summary>
<b>Outer:</b> modern coat (colorable)
<b>Uniform:</b> pencil skirt and gym bra (colorable)
<b>Back:</b> purse (colorable)
<b>Shoes:</b> high heels (colorable)
</details>
<details><summary>
[Bottom Right] Slaycurity Officer
</summary>
<b>Head:</b> security beret
<b>Neck:</b> gold necklace
<b>Uniform:</b> evening gown (colorable)
<b>Hands:</b> evening glovs (colorable)
<b>Belt:</b> security belt
<b>Back:</b> purse, flipped (colorable)
<b>Shoes:</b> high heels (colorable)
</details>
### High Heels Footsteps
https://github.com/user-attachments/assets/c4b99407-0f9b-4fb5-910e-603c024d9598
The high heels footsteps are also present on the high-heeled boots, long
high heels and flats. Pets are now colorable too (look at the pink
mothroach in the video). Reasons why they'd be a specific color could be
a natural variation, being dyed by their owner, or genetic modifications
(however unethical the last two may be).
<b>Cowboy</b>

<b>Head:</b> slouch hat (colorable)
<b>Eyes:</b> hipster glasses (colorable)
<b>Neck:</b> suit tie (colorable)
<b>Outer:</b> vest (colorable)
<b>Uniform:</b> grey cowboy outfit (from Nuclear 14!)
<b>Hands:</b> gloves (colorable)
<b>Belt:</b> belt (colorable)
<b>Back:</b> leather satchel
<b>Shoes:</b> workboots (colorable
### Security Glasses Skins
<img width=240px
src="https://github.com/user-attachments/assets/b7c5dd03-ab00-4cff-9018-145271e48229">
Security now have three alternative skins for the security glasses to
personalize their looks. Thus, they should no longer have the problem
where every sec member's face looks samey because everyone had the same
security glasses.

From left to right: base security glasses, security aviators, big
security glasses, security visor glasses
<details><summary>
More Images
</summary>
<b>Skubsuit</b>

<b>Head:</b> artist beret (colorable)
<b>Eyes:</b> monocle (colorable)
<b>Neck:</b> suit tie (colorable)
<b>Outer:</b> blazer (colorable)
<b>Uniform:</b> amish suit (colorable)
<b>Belt:</b> belt (colorable)
<b>Shoes:</b> ankle boots (colorable)
Huh, skub.
<b>Rugged</b>

<b>Head:</b> green beanie (from Nuclear 14!)
<b>Eyes:</b> eyepatch (colorable)
<b>Neck:</b> small necklace (colorable)
<b>Outer:</b> sweater cardigan, opened (colorable)
<b>Uniform:</b> black flannel shirt and jeans (from Nuclear 14)
<b>Back:</b> grey satchel (colorable)
<b>Shoes:</b> workboots (colorable)
<b>The Rig Was Gamed From The Start</b>

<b>Eyes:</b> eyepatch, flipped (colorable)
<b>Neck:</b> short tie (colorable)
<b>Uniform:</b> checkered suit (from Nuclear 14!)
<b>Shoes:</b> fashion jackboots (colorable)
<b>New Dresses</b>
<img width=300px
src="https://github.com/user-attachments/assets/5289465a-b297-4bb2-b9be-27695ee36d2b">
<img width=300px
src="https://github.com/user-attachments/assets/e39e0acb-69ee-447b-ba78-5ccb9eac2497">
<img width=300px
src="https://github.com/user-attachments/assets/01c39422-3571-43ea-987d-e13e21dd6078">
<img width=300px
src="https://github.com/user-attachments/assets/02dc10f2-56da-440f-9b19-aa38e9cb9942">
About 48 new dresses/jumpskirts were added to loadouts.
</details>
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Skubman
- add: The Fashion Update is here. Almost two hundred brand-new clothes
have been added to Loadouts, like colorable suits, dresses, coats,
blazers, boots, necklaces, hats, glasses (including new Security
glasses), belts, a purse and more!
- add: Pets in the loadouts are now colorable. Go wild with pink
mothroaches, blue mice, green cockroaches and more!
(cherry picked from commit 6ba53e2ab9d648c05a943713af3d597347def3da)
# Description
This PR was originally going to be called "Psionic Refactor V3 Part 2,
Items Of Power", but I began getting shakes and started vomiting when I
saw the list of Components that make items do things when equipped, and
I had a conniption about how much code there is constantly being
repeated. So instead of this PR adding Items Of Power, I added a
universal modular generic system for making clothing items do things
when equipped and unequipped. Which hooks into the library of
TraitFunctions that we've previously created. I also added a few
"Inverse" versions of trait functions that can be used by these new
clothing functions.
<!--
# Changelog
🆑
- add: Added a universal modular system for making clothing items DO
things when equipped and unequipped. This will be used for "Psionic
Artifacts" in conjunction with the Psionic Refactor V3.
-->
(cherry picked from commit 731e14f100d8161c0f8f7eb1bc5accc2abaa24da)
* Displacement Map Visualizer QoL (#27392)
* Update Displacement Map Visualizer.lua
* Add files via upload
* Fix background layer being offset
This was caused by not taking the cel's own bounds into account.
Aseprite doesn't make an image layer "full size" if it only covers a
small part of the sprite.
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Displacement maps now works on any layers (#27405)
* try
* pipupi
* Update ClientClothingSystem.cs
* Update vox.yml
* Update ClientClothingSystem.cs
* Fix Vox clothing in character creation menu (#29709)
Update vox.yml
* Vox displacement updates (#29824)
* more vox displacement maps
* A
* remove vox insuls sprites
* sci magboots
* Update vox.yml
* Update meta.json
---------
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
* Displacement maps big update (#30093)
* split logic into own system
* add support for different size displacement maps
* some clothes may not use displacement maps
* displacement maps spport hand sprites
* Update DisplacementMapSystem.cs
* rename things
* fuck stencilmask
* fix bugs
* no masks
* Update jumpsuits.yml
* fix species specific sprites
* Update ClothingSystem.cs
* shoes + ears displacement, some bugfix
* Update DisplacementMapSystem.cs
* Vox head displacement map (#30699)
* head displacement for vox
* fixe
* fix index stepping to avoid pushing front layers into back layers (#32553)
Co-authored-by: charlie <charlie.sc.wong@veiwsonic.com>
* Mothroaches can now wear hamster-wearable clothes + pet inventory tweaks (#28956)
* moth displacement + inventory tweaks
* Fix off by 1 on the head sprites
* Move files to main mothroach folder
* Fix mask up a bit
* Fix side mask sprites
* Change format because it changed forever ago
* fix mothroach spawner
* remove nyano femaleMask
---------
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com>
Co-authored-by: Charlie <mio780308@gmail.com>
Co-authored-by: charlie <charlie.sc.wong@veiwsonic.com>
Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Add a bit of clothing specie related and some tiny misc changes.
Normally i wanted to add the spooders changes here but with the other
spider specie coming in il hold myself for now.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Add clothings
- [x] Loadouts/Vending machines
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- add: Xenowears! new non-human related clothings.
---------
Signed-off-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Adds `BeardTag = "HidesBeard"`
for helmets which cover entire head, masks which should hide beards and
such.
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- add: Added `HidesBeard` tag
# Description
Prevents players from picking up their own equipped clothing (via the
"put in hand" verb or otherwise) and thus bypassing the unequip delay
completely.
Does so by cancelling the GettingPickedUpAttemptEvent on equipped
clothing. This does not prevent unequipping the clothing normally, i.e.
by interacting with it in the inventory, or stripping clothing from
others.
# Changelog
No cl no fun - most people don't even know this was an option.
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Reworks felinid thieving to no longer act like passive thieving gloves
which grant invisible stripping (hereon referred to as hard stealing),
in favour of soft thievery (hereon referred to as soft stealing).
Soft thievery comprises of the following:
- A smaller popup, with the thief anonymised.
- A visible doafter bar
- A 33% faster strip speed, that stacks with Thieving gloves
- An additional ability to identify hidden items to better plan your
course of action
You no longer need to completely avoid felinids to maintain your
precious items as long as you pay attention. For a felinid to utilise
their thieving passive, they are encouraged to exploit any distractions
to make moves on a target. If there is none, create one through
conversation or other forms of player interaction. If you are suspected,
persuade your victim that the thief is in fact, the other person.
A faster strip speed makes thief bonuses diegetic to other players, and
also improves the value proposition of thieving gloves on someone who
already has thieving bonuses.
Any other race can also gain soft thievery via a moderate costing trait.
Non-felinid thieves are encouraged to exploit any felinids as a
scapegoat.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
Code
- [X] IgnoreStripHidden - allows thieves to look into peoples pockets
- [X] StripTimeMultiplier - stripping at a multiplicative rate helps
strip bags/belts which creates trait value
- [X] Stealthy > Stealth - rather than a bool, distinguishes stealth
levels as an enum
Balance
- [X] Soft thieves can identify items in pockets, which creates player
agency
- [X] Soft thieves steal 33% faster, which stacks with thieving gloves
- [X] Victims to soft stealing get a smaller popup, useful if they're
preoccupied
- [X] Soft thievery is a trait, which Felinids get for free
- [X] Felinids no longer hard steal items
Media
- [x] Attach media
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>


</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- add: Added the Thievery trait, which provides various soft stripping
bonuses
- tweak: Felinids no longer have passive thieving gloves, they instead
get the Thievery trait by default
---------
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
# Description
For some reason, ClothingSystem.TryEquip would return false if there's a
do-after to equip the clothing. This had caused all quick-equip attempts
on SMALL ITEMS to fail and ended up with every SMALL clothing item being
equipped into one of the pocket slots (which have no equip delays).
Also fixes quick swap - see the comments below.
# Changelog
🆑
- fix: Equipping clothing using the Z key works correctly again.
## Mirror of PR #25994: [StrippableSystem doafter
overhaul](https://github.com/space-wizards/space-station-14/pull/25994)
from <img src="https://avatars.githubusercontent.com/u/10567778?v=4"
alt="space-wizards" width="22"/>
[space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14)
###### `41ca8f3dfcb986432e1e509247bf239cac137836`
PR opened by <img
src="https://avatars.githubusercontent.com/u/42424291?v=4"
width="16"/><a href="https://github.com/Krunklehorn"> Krunklehorn</a> at
2024-03-11 12:36:28 UTC
---
PR changed 7 files with 465 additions and 305 deletions.
The PR had the following labels:
- Status: Needs Review
---
<details open="true"><summary><h1>Original Body</h1></summary>
> ## About the PR
>
> Refactors Strippable DoAfter events to make them synchronous and
organized.
>
>
> ## Technical details
>
> ### Strippable System & Component
> - Synchronous DoAfters
> - Made use of `TimeSpan`, `GetStripTimeModifiers()` and `ByRefEvent`
> - Reorganized checks, removed some redundant ones
> - Resolve pattern where useful
> - Added more asserts
> - Lots of cleanup
>
> The DoAfters were grouped under one event to avoid copy-pasting eight
separate cancel checks, asserts and function signatures.
>
> Let me know if this is bad for performance and I'll roll them out
instead.
>
>
> ## Media
>
> - [x] I have added screenshots/videos to this PR showcasing its
changes ingame, **or** this PR does not require an ingame showcase
>
>
> ## Breaking changes
>
> ### TimeSpans
> `ThievingComponent`, `InventoryTemplatePrototype` and
`ToggleableClothingSystem` use `TimeSpan` in places where they intersect
with `StrippableComponent`.
>
>
> **Changelog**
>
> N/A
>
</details>
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: SimpleStation14 <Unknown>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Use new Subs.CVar helper
Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.
This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.
* Fix a bunch of warnings
* More warning fixes
* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.
* Get rid of some more ISerializationHooks for enums
* And a little more
* Apply suggestions from code review
Co-authored-by: 0x6273 <0x40@keemail.me>
---------
Co-authored-by: 0x6273 <0x40@keemail.me>
(cherry picked from commit 68ce53ae17985876d6d112b764b2144964a9f42e)
* add face bandanas
* oops
* make face bandanas butcherable, also one bite
* oops
* Add mouth IdentityBlocker to bandanas
* refactor to use foldablecomponent
* remove some leftover bits
* remove HamsterWearable until face sprite updated
* oops
* review changes
* remove a few unneeded bits
(cherry picked from commit b503fe586423773ed6484a9ead8ff21673dcdc66)