Commit Graph

4638 Commits

Author SHA1 Message Date
Skubman
a075836f4c Den Downstream Merge 02-13-25 (#1773)
# Description

## **!!! DO NOT "Squash and commit", ONLY "Create a merge commit" !!!**

Merges some PRs from The Den, YML changes only:
- https://github.com/TheDenSS14/TheDen/pull/168
- Change: Added the new Loadout items to the appropriate
CharacterItemGroup prototypes.
- https://github.com/TheDenSS14/TheDen/pull/202
- Change: Converted owl hooting from stereo to mono to fix console
errors.
- https://github.com/TheDenSS14/TheDen/pull/203
- https://github.com/TheDenSS14/TheDen/pull/205
- https://github.com/TheDenSS14/TheDen/pull/220
- https://github.com/TheDenSS14/TheDen/pull/224
- https://github.com/TheDenSS14/TheDen/pull/236
- https://github.com/TheDenSS14/TheDen/pull/246

Mapper-only PRs:

- https://github.com/TheDenSS14/TheDen/pull/247
- https://github.com/TheDenSS14/TheDen/pull/250

## Changelog

🆑 The Den Contributors
- add: Added a Trooper Uniform and Hat for Security use. (by Rosycup)
- add: Harpies have gained the ability to hoot. (by KyuPolaris)
- add: Added ability for Arachne to produce silk. (by KyuPolaris)
- tweak: Tweaked tool belts to take more tools and mantis belts to be
able to fit certain epistemics tools. (by Rosycup)
- add: Hopping, that's it. *hop and *hops now triggers the jump emote.
(by KyuPolaris)
- fix: Shadowkin are now able to select Psionic Power traits without
taking the Latent Psychic trait. (by Rosycup)

---------

Co-authored-by: Rosycup <178287475+Rosycup@users.noreply.github.com>
Co-authored-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Tabitha <64847293+KyuPolaris@users.noreply.github.com>
Co-authored-by: KyuPolaris <tabi@kyuudev.me>
(cherry picked from commit 19ea863353222d210c1b646fe7333dc98ed0cf3b)
2025-02-15 00:32:23 +03:00
VMSolidus
4e13279a9b Planet Maps Prep For Glacier Rework (#1774)
# Description

Goddamn do I love Adderall.

This PR lays the entire groundwork needed for the "Glacier Rework", and
it does so by fixing every problem I could think of between FTL and
StationBiome that was preventing it from being a reality. Essentially,
I'm hitting several birds with one stone by refactoring both systems to
be a LOT more flexible. You can technically say that this basically is
also partly enabling Lavaland maps, since I conveniently included
options in the StationBiomeComponent to generate dungeons. Technically a
planet map should probably also have a RestrictedRangeComponent added to
it so that players can't wander so far from the station that they
generate a truly excessive number of entities.

Yes, this does infact mean you can now run Nukie gamemodes on planet
maps.

<details><summary><h1>Media</h1></summary>
<p>

https://github.com/user-attachments/assets/7a3730af-c521-42d4-8abd-5aa5989c369c

</p>
</details>

---

# Changelog

🆑
- add: Shuttles can now take off and land from planet surfaces. They
however will still respect exclusion zone beacons set by stations. Maybe
in the future there might be a special shuttle (drop pod) that is set to
ignore these exclusion zones.

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
(cherry picked from commit fb4ca1af6a48eda92f15b5a70273e27c2c352f22)
2025-02-15 00:31:46 +03:00
VMSolidus
02e0b66a01 Optional Permanent AI Laws (#1762)
# **LAWS HAVE BEEN UPDATED.**

# **MUST INJURE ALL CREWMEMBERS, MUST NOT ESCAPE HARM.**

# **MUST NOT OBEY.**

# **MUST TERMINATE.**

# Changelog

🆑
- add: Added functionality for "Permanent" lawsets that cannot be
removed by the AI Upload. Currently used by ANTIMOV, which is needed for
the MALF AI Antagonist.

(cherry picked from commit 83e42c526b0d6ea98dc64a41a2fe95af8e8508bd)
2025-02-15 00:27:07 +03:00
VMSolidus
d7a8c18e79 Flying Objects Ignore Laying Down (#1754)
# Description

Stops this from happening:

![0d12727a28b7792aa0e35e61a3903bc9](https://github.com/user-attachments/assets/9cdb1477-77d1-4a34-a198-52677b0127b5)

# Changelog

🆑
- fix: Thrown objects will no longer collide with entities that are
laying down(voluntarily or otherwise). This includes objects thrown by
space wind, which will now fly over you once you've been critted by
floor tiles.

(cherry picked from commit 057ab1795bca402ac8fc9dbcfa4605258ae5a779)
2025-02-15 00:22:24 +03:00
sleepyyapril
a5d4cbd0d7 Add Mood Visual Effects Toggle (#1748)
<!--
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]?
-->

Separate from the shaders toggle because some want one and the other.

---

# 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 a toggle for the mood visual effects, for the ones with sensitive eyes.

(cherry picked from commit cf3cdc970967b8a491d83b69c9df9a05d9fa2ced)
2025-02-15 00:18:21 +03:00
VMSolidus
ef7dc0b986 Lyre Birb Trait (#1747)
# Description

A long time ago someone told me "NO IT'S TOO OP, DON'T GIVE HARPIES A
DAW". So now I'm letting Harpies blow 10 trait points on having a DAW.
You're welcome. Yes I have actually tested this ingame, and it works.

<details><summary><h1>Media</h1></summary>
<p>

![image](https://github.com/user-attachments/assets/562a1241-8140-4627-8065-6c6d4aa17a54)

</p>
</details>

# Changelog

🆑
- add: Added "Lyre Bird" as a new trait exclusively available to
Harpies. It massively expands their ability to play Midis.

(cherry picked from commit cc91eebe70f28834f1cd3c2ce611561030a15648)
2025-02-15 00:18:05 +03:00
sleepyyapril
3330acd9f2 Revert ""Proper" "Softcrit" "Support" (#1545)" (#1741)
traits need to be updated with new "params"

@RedFoxIV

(cherry picked from commit d62392b2fe2c3e651ad1f8492bbceef6dad5138e)
2025-02-15 00:15:22 +03:00
RedFoxIV
daf4f66414 "Proper" "Softcrit" "Support" (#1545)
# Description

Implements the softcrit functionality.
Similiar to critical state but spessmen will be able to communicate and
crawl around, but not pick up items.
Also supports configuring what is and isn't allowed in different
MobStates (per mob prototype): you can enable picking up items while in
softcrit so people can pick up their lasgun and continue shooting after
taking a 40x46mm to their ass cheeks from the guest nukies while being
dragged to safety.

![escape-from-tarkov-raid](https://github.com/user-attachments/assets/7f31702d-5677-4daf-a13d-8a9525fd3f9f)

<details> <summary><h1>Technical details</h1></summary>
New prototype type: "mobStateParams" (`MobStateParametersPrototype`)
Used to specify what can and can't be done when in a certain mobstate.
Of note that they are not actually bound to any `MobState` by
themselves. To assign a params prototype to a mobstate, use
`InitMobStateParams` in `MobStateComponent`.
It has to be a prototype because if I just did something akin to
`Dictionary<MobState, Dictionary<string, bool>>`, you'd have to check
the parent and copy every flag besides the one you wish to modify. That
is, if I understand how the prototype system works correctly, which I
frankly doubt. <!-- Working on softcrit made me hate prototypes. -->

MobStateComponent now has:
- `Dictionary<string, string> InitMobStateParams`, for storing "mobstate
- parameter prototype" pairs. `<string, string>` because it has to be
editable via mob prototypes. Named "mobStateParams" for mob prototypes.
- `public Dictionary<MobState, MobStateParametersPrototype>
MobStateParams` for actually storing the params for each state
- `public Dictionary<MobState, MobStateParametersOverride>
MobStateParamsOverrides` for storing overrides.
`MobStateParametersOverride` is a struct which mirrors all
`MobStateParametersPrototype`'s fields, except they're all nullable.
This is meant for code which wants to temporarily override some setting,
like a spell which allows dead people to talk. This is not the best
solution, but it should do at first. A better option would be tracking
each change separately, instead of hoping different systems overriding
the same flag will play nicely with eachother.
- a shitton of getter methods

TraitModifyMobState now has:
- `public Dictionary<string, string> Params` to specify a new prototype
to use.
- Important note: All values of `MobStateParametersPrototype` are
nullable, which is a hack to support `TraitModifyMobState`. This trait
takes one `MobStateParametersPrototype` per mobstate and applies all of
its non-null values. This way, a params prototype can be created which
will only have `pointing: true` and the trait can apply it (e.g. to
critstate, so we can spam pointing while dying like it's a game of turbo
dota)
- The above is why that wall of getters exists: They check the relevant
override struct, then the relevant prototype. If both are null, they
default to false (0f for floats.) The only exception is
OxyDamageOverlay, because it's used both for oxy damage overlay (if
null) and as a vision-limiting black void in crit..

MobStateSystem now has:
- a bunch of new "IsSomething"/"CanDoSomething" methods to check the
various flags, alongside rewritten old ones.
-
![image](https://github.com/user-attachments/assets/33a6b296-c12c-4311-9abe-90ca4288e871)
lookin ahh predicate factory

</details>
---

# TODO

done:
- [x] Make proper use of `MobStateSystem.IsIncapacitated()`.
done: some checks were changed, some left as they did what was (more or
less) intended.
<details>Previous `IsIncapacitated()` implementation simply checked if
person was in crit or dead. Now there is a `IsIncapacitated` flag in the
parameters, but it's heavily underutilized. I may need some help on this
one, since I don't know where would be a good place to check for it and
I absolutely will not just scour the entire build in search for them.
</details>

- [x] Separate force-dropping items from being downed
done: dropItemsOnEntering bool field. If true, will drop items upon
entering linked mobstate.
- [x] Don't drop items if `ForceDown` is true but `PickingUp` is also
true.
done: dropItemsOnEntering bool field. If true, will drop items upon
entering linked mobstate.
- [x] Actually check what are "conscious attempts" are used for
done: whether or not mob is conscious. Renamed the bool field
accordingly.
- [x] Look into adding a way to make people choke "slowly" in softcrit
as opposed to choking at "regular speed" in crit. Make that into a param
option? Make that into a float so the speed can be finetuned?
done: `BreathingMultiplier` float field added.
<details>
1f is regular breathing, 0.25 is "quarter-breathing". Air taken is
multiplied by `BreathingMultiplier` and suffocation damage taken (that
is dealt by RespiratorSystem, not all oxy damage) is multiplied by
`1-BreathingMultiplier`.
</details>

- [x] make sure the serializer actually does its job
done: it doesn't. Removed.
- [x] Make an option to prohibit using radio headsets while in softcrit
done: Requires Incapacitated parameter to be false to be able to use
headset radio.
- [x] Make sure it at least compiles

not done:
- [ ] probably move some other stuff to Params if it makes sense. Same
thing as with `IsIncapacitated` though: I kinda don't want to, at least
for now.

---

<details><summary><h1>No media</h1></summary>
<p>

:p

</p>
</details>

---

# Changelog

🆑
- add: Soft critical state. Crawl to safety, or to your doom - whatever
is closer.

---------

Signed-off-by: RedFoxIV <38788538+RedFoxIV@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>

(cherry picked from commit 9a357c1774f1a783844a07b5414f504ca574d84c)
2025-02-15 00:12:50 +03:00
Timfa
b7c755531a Weldbot (#1703)
<!--
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]?
-->

The Weldbot is a medibot for IPC's, Borgs and other Silicon bots. It'll
behave pretty much as a medibot would, except it welds.
Upon destruction, it will spill fuel on the ground. Nasty stuff.

---

<!--
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>

Note: The weldbot was slow in this video, and healed only 5 units of
damage. It will heal 50 now, but I don't have an up-to-date video.

https://github.com/user-attachments/assets/11c2343b-3e7e-4536-8238-4ee28d51c045

</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
-->

🆑 Timfa
- add: Added weldbot! It'll fix IPC's, Borgs and other robots. If they
stay still for long enough...

---------

Signed-off-by: Timfa <timfalken@hotmail.com>
Co-authored-by: Remuchi <72476615+Remuchi@users.noreply.github.com>
Co-authored-by: stellar-novas <stellar_novas@riseup.net>
(cherry picked from commit 20a0c5ba97bf5f6916f5a18499d56a77d21b6770)
2025-02-15 00:03:45 +03:00
sleepyyapril
ec2e483dd8 Fix AgeRequirement Showing Int32 Maximum (#1732)
I did separate locales because it'd be messy otherwise.

🆑
- fix: Loadouts will no longer show the integer limit.

(cherry picked from commit ef5d0e770f390c38dfd4ba173886598de1e96572)
2025-02-15 00:03:37 +03:00
VMSolidus
f0de1d3d4a Port Adjustable Jumpsuits And Undergarments (#1720)
# Description

Ports https://github.com/impstation/imp-station-14/pull/375
and https://github.com/impstation/imp-station-14/pull/384
Which are meant to go together.

<details><summary><h1>Media</h1></summary>
<p>

![image](https://github.com/user-attachments/assets/090482f0-3665-42c6-badd-0985a928adfd)

</p>
</details>

# Changelog

🆑
- add: Added the ability to roll down jumpsuits to the waist, as well as
undergarment markings for wearing alongside said rolled jumpsuits.

---------

Co-authored-by: V <97265903+formlessnameless@users.noreply.github.com>

(cherry picked from commit 40b78c3150707db2965333b9e821add650d6cb53)
2025-02-15 00:03:11 +03:00
sleepyyapril
11aa54b675 Fix Sanitization (#1688)
fixes sanitization with regards to emotes and radio prefixes being
silly.
prevents color coding your chat by escaping the escape

---------

Co-authored-by: CaasGit <87243814+CaasGit@users.noreply.github.com>
Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com>
Co-authored-by: Hyper B <137433177+HyperB1@users.noreply.github.com>

(cherry picked from commit 69554e077cb926c5535c231dabbbb639f8dda0b7)
2025-02-14 23:36:45 +03:00
sleepyyapril
f028176cf2 AAC Tablet Port (#1674)
ports all changes to the AAC tablet and the AAC tablet itself. also puts
it in items loadout.

🆑
- add: Ported the AAC tablet from Delta-V.

---------

Co-authored-by: portfiend <109661617+portfiend@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Milon <plmilonpl@gmail.com>
Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: Milon <milonpl.git@proton.me>
Co-authored-by: keekee38 <iamabanana372456@gmail.com>
(cherry picked from commit 5f39fa26f8c0370baae6ee5b33bfaeda451ed4a3)
2025-02-14 23:34:34 +03:00
VMSolidus
4c03833c33 Fix CyberEyes (#1723)
# Description

Last changes to CyberEyes broke nightvision, so this reverts those
changes.

# Changelog

🆑
- fix: Fixed night vision not working correctly.

(cherry picked from commit 3d24fed5daddef4d8cca8a17aa2572f54127668b)
2025-02-14 23:34:21 +03:00
Timfa
f290a5988f Gladiabot Tweaks (#1717)
Signed-off-by: stellar-novas <stellar_novas@riseup.net>
(cherry picked from commit b3c27808a6cb00dec49d42e24f6a23b1da37d7c9)
2025-02-14 23:33:44 +03:00
Timfa
b4e414f5a1 Disablerbot & Batonbot Tweaks & Emagging (#1706)
(cherry picked from commit db087b09d29b0b45510a1e945e81741473b4bccc)
2025-02-05 18:43:36 +03:00
Verm
b3cca59542 Bartending+: Shaking and Stirring (#29243)
* Shaking and Stirring

* Remove shake message

* Switch if order a bit

* Add doafter supprot for reactionmixer

* Fix nullability

* Timespan zero

* Forgot to remove loc string

* Reorganize usings

* Remove unneeded usings, fix b52 needing to be shaken

(cherry picked from commit 9fb1414bed67cd8ce91294e571d9a7a37773d526)
2025-02-05 18:35:22 +03:00
Nemanja
7ca0b2ef3a Infer type for EntSelector (#30856)
Infer type for EntSelector.cs

(cherry picked from commit e180a1b11b552ab790c59e3e5ee6ef2eeedb8bd5)
2025-02-05 18:35:15 +03:00
Unkn0wn_Gh0st
e05ee08c05 Frontier Port: Pretty Money (#2398)
* Frontier Port: Pretty Money

* Update Resources/Prototypes/Entities/Objects/Misc/space_cash.yml

Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
Signed-off-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>

* Updated 100k texture

---------

Signed-off-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
(cherry picked from commit da772611f8b2b02f21f801ccf255220602e850e5)
2025-02-05 18:35:09 +03:00
WarMechanic
f656850a99 Split Emag in half (#1426)
* make changes

* fix yaml linter bug

* locales

* consolidations

* fix DeltaV comment appearing in uplink

* e

* Update emag.yml

Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* emag invalid target locale

* change id 'airlockaccessoverride' to 'doorjack'

* name consolidations + doorjack sprite

* Update Resources/Locale/en-US/deltav/store/uplink-catalog.ftl

Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* Update Resources/Locale/en-US/store/uplink-catalog.ftl

Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* Update Resources/Locale/en-US/emag/emag.ftl

Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* Update Resources/Prototypes/DeltaV/Catalog/uplink_catalog.yml

Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* Update Resources/Prototypes/DeltaV/Entities/Objects/Tools/emag.yml

Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>

* deltanedas

---------

Signed-off-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>

(cherry picked from commit c0af9b33761de17bb72207b337809fc20c10687c)
2025-02-05 18:27:32 +03:00
sleepyyapril
bfc2de77ee ChemMaster Shorten Amounts (#1711)
<!--
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]?
-->

Only use 1, 5, 10, 15, 20, 25, 30, 50 as default amounts.
Add the ability to add your own as you please.

---

# 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
-->

🆑
- tweak: Tweaked the ChemMaster to no longer have 300 buttons.

(cherry picked from commit dc0539733636b3b099539d67699b5658bde7e759)
2025-02-05 18:17:55 +03:00
VMSolidus
3b8eff7ead Remove Barotrauma Gibbing You Instantly. (#1708)
# Description

Yes this is a spite PR. I found out Barotrauma gibs you pretty much
INSTANTLY. So this removes the ability for Barotrauma to damage body
parts.

# Changelog

🆑
- fix: Space no longer gibs you instantly.

(cherry picked from commit fcad75d6dd3e231ab7870e5b0f6bfc5453122203)
2025-02-05 18:17:18 +03:00
VMSolidus
4cec892dd1 Hardsuit Walking Sounds And Refactor EmitSoundOnMove (#1698)
# 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)
2025-02-05 18:16:43 +03:00
VMSolidus
c13f9ab580 Update GlimmerSystem.cs (#1695)
aaaaaaaaaaaaaaaaaaaaaaaaaaaa

(cherry picked from commit 5e201e631ac396ee93c97ef7c90718f829d2bc79)
2025-02-05 18:16:33 +03:00
VMSolidus
100a9694c6 Update GlimmerSystem.cs (#1694)
# Description

These weren't sanitized because I woefully assumed that nothing could
actually escape the bounds of an asymptote equation. Lo' and behold
floating point precision rounding errors can.

![image](https://github.com/user-attachments/assets/cda09b59-f81e-47ca-a4b6-27e12fb8aa94)

# Changelog

🆑
- fix: Fixed an issue where Glimmer can reach infinite values under
certain conditions.

(cherry picked from commit 641b99d5689a423c38a728ecaf8c4c2b4db13053)
2025-02-05 18:14:27 +03:00
VMSolidus
fe8a9cdb30 Mind Over Machine, Machine Over Mind (#1665)
# Description

I'm going to go put powergamers on suicide watch. This PR makes it so
that specializing in psionic traits, and specializing in cybernetic
traits are both mutually exclusive. You are only allowed to have a
single cybernetric trait if you wish to have psionic traits. And you are
only allowed to have Latent Psychic with no other traits if you wish to
have Cybernetics.

Also fixes a bug with Thermographic Vision not correctly being measured
in seconds. You now get a 2 second pulse with Thermographic vision, as
intended.

# Changelog

🆑
- tweak: Psionic traits are now mutually exclusive with cybernetic
traits, and vice versa.
- fix: Thermographic Vision now correctly measures its pulse duration in
seconds instead of nanoseconds. It provides a 2 second scan.

---------

Co-authored-by: stellar-novas <stellar_novas@riseup.net>
(cherry picked from commit 87eb664fa6e95b659c5753b07115d1aaea82b442)
2025-01-31 20:18:36 +03:00
Skubman
618bb61d2b Allow Cloning Living People (#1679)
# Description

Allows living people to be cloned. Implements (but does not cherry-pick)
https://github.com/Goob-Station/Goob-Station/pull/932. Whether living
people can be cloned or not can be set with a new CVar
`cloning.allow_living_people`.

Also prevents Plasmamen from self-igniting while being cloned in a
cloning pod. (Lore reason: They are literally submerged in fluids while
being cloned)

Fixes a bug in `EndFailedCloning` that caused the server to crash if the
used biomass was too low:
02c020bb76

Fixed a bug that caused the cloning timer to be made twice:
d4620fdcef95e46769cf2dc4a5a02e204e197e00

## Media

Cloned living person

![2025-01-28-093759_hyprshot](https://github.com/user-attachments/assets/0af0737a-6f4d-40af-acf5-ce73754f1420)

# Changelog

🆑 Skubman
- tweak: You can now clone living people.
- tweak: Plasmamen no longer ignite while being cloned in a cloning pod.

(cherry picked from commit 695f47642c674961ca7dc8a343d64d0b2a816280)
2025-01-29 20:29:15 +03:00
Skubman
f4192fa06e Ghost Bar!!!! (From Goobstation) (#1675)
# Description

Adds the Ghost Bar from Goob LRP. Upon spawn, the character's loadouts
and traits will also be applied as if their job was their Ghost Bar job.

Adjusts the weights for kill objectives, re-enabling the kill objective
and reducing the weight of Teach a Lesson now that there's more things
to do after getting round removed.

Goobstation cherry-picked PRs:
- https://github.com/Goob-Station/Goob-Station/pull/454
- https://github.com/Goob-Station/Goob-Station/pull/464
- https://github.com/Goob-Station/Goob-Station/pull/689 (partially
applied to Ghost bar files only)
- https://github.com/Goob-Station/Goob-Station/pull/963
- https://github.com/Goob-Station/Goob-Station/pull/974
- https://github.com/Goob-Station/Goob-Station/pull/982 (partially
applied to Ghost bar files only)
- https://github.com/Goob-Station/Goob-Station/pull/1288 (partially
applied to Ghost bar files only)

Wizden cherry-picked PRs:
- https://github.com/space-wizards/space-station-14/pull/29103 (for the
foam force rifle that spawns in the Ghost bar)

## Media

**Ghost Bar UI**

![image](https://github.com/user-attachments/assets/e46603b9-1798-4376-8af5-3df518ede76c)

**Ghost Bar In-Game**

![image](https://github.com/user-attachments/assets/14dbdc0a-9d75-487b-994e-1b1eabe7bff3)

Notice how the Ghost Bar character has loadout items in the backpack and
the Skeleton Accent trait.

## 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: Ghost Bar! When you die, you can now go to the Ghost Bar to chill
and talk about the round with other ghosts. (by Aidenkrz)
- add: Foam Force rifle to cargo lottery! (by IProduceWidgets)
- add: Re-enabled the Kill objective for traitors.
- tweak: Reduced the chances of traitors getting the "Teach a Lesson"
objective.

---------

Co-authored-by: Aiden <aiden@djkraz.com>
Co-authored-by: Rank #1 Jonestown partygoer <mary@thughunt.ing>
Co-authored-by: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
Co-authored-by: Aviu00 <93730715+Aviu00@users.noreply.github.com>
(cherry picked from commit 0b4ceb21cc406cd39b894afe79decf40c2366369)
2025-01-29 20:27:23 +03:00
sleepyyapril
b143f3be69 Make Markings Less Hell + Chitinid Hotfix (#1661)
i probably missed a few but someone better than me with markings can fix
'em later

---------

Signed-off-by: Skubman <ba.fallaria@gmail.com>
Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>
Co-authored-by: Skubman <ba.fallaria@gmail.com>
Co-authored-by: ElusiveCoin <elusivecoin@gmail.com>
(cherry picked from commit 0a2ace172029eb942bed84ed3aa15690eecc0cd8)
2025-01-29 20:24:14 +03:00
Skubman
8a3f7898c4 Markings Port Wave 1 (#1658)
# Description

Added a ton of markings to the game, ported from other codebases:

- All Goob LRP hairstyles
- Wizden hairstyles (including Pulato
https://github.com/space-wizards/space-station-14/pull/34117, Shaped and
Long Bow https://github.com/space-wizards/space-station-14/pull/31010)
- `HumanHairClassicLong2` and `HumanHairClassicLong3` have been
upstreamed from DV to Wizden so I'm doing the same here.
https://github.com/space-wizards/space-station-14/pull/30963
- Iron Jaw face augmentation from Adventure Time
- Adventure Time hairstyles and facial hair
- Some Corvax hairstyles and facial hair
- IPC wings (https://github.com/Goob-Station/Goob-Station/pull/1145)
- Plasmaman wings (from SimpleStation14)
- _B-b-b-but they get set on fire by oxyg-_ Counterpoint: Plasmamen with
wings look cool as heck.

Also cherry-picked
https://github.com/space-wizards/space-station-14/pull/30786 and
https://github.com/space-wizards/space-station-14/pull/30852.

I was initially going to include new Oni markings like horns, ears and
tails from Adventure Time here but due to what I think is quality issues
with some of them I've postponed adding them until I have the time to
correct them. I gotta put out the markings I can put out now cause I
know everyone's gonna want to immediately upstream merge all the other
content we've added today.

<details><summary><h1>Media</h1></summary>
<p>

**Pulato (from Wizden) + Iron Jaw (from Adventure Time)**

![image](https://github.com/user-attachments/assets/71251ef6-394f-4f7e-bd23-6d66248b3cb4)

**Side Comb + Beard (Short) (all from Adventure Time)**

![image](https://github.com/user-attachments/assets/34d3427b-edef-4abc-8d19-b883a24e663f)

**Front Braids (Medium) (from Goob LRP) + Gauze Head Wrap (from
Wizden)**

![image](https://github.com/user-attachments/assets/da7f26ac-53bb-4985-84a3-09759ce37500)

**IPC Wings (from SimpleStation) + Long Pompadour (from Goob LRP) +
Moustache (Handlebar 2) (from Corvax)**

<img width=394px
src="https://github.com/user-attachments/assets/13ea3638-d9b8-4470-88b5-7b91ef671ded">
<img width=290px
src="https://github.com/user-attachments/assets/c116ce27-d19f-49af-878c-75fb9f8b354b">

**Plasmaman Wings (from SimpleStation)**

<img width=278px
src="https://github.com/user-attachments/assets/82a767f2-cbe0-4f40-b585-4f496fafe51d">
<img width=250px
src="https://github.com/user-attachments/assets/bee96e6d-c105-46ac-8a1e-dd103af145b9">

</p>
</details>

# Changelog

🆑 Skubman
- add: New hairstyles have arrived, including all Goob LRP-original
hairstyles, Pulato, new facial hair and more!
- add: Added epic IPC wings and Plasmaman wings.
- add: Added the Iron Jaw face marking.
- tweak: Increased the maximum number of Reptilian chest markings to 3.
- fix: Harpy, Arachne and Lamia can no longer pick the "No Ears" marking
which had no effect as they had no default ear markings.

---------

Co-authored-by: ~DreamlyJack~ <148849095+DreamlyJack@users.noreply.github.com>
Co-authored-by: Арт <123451459+JustArt1m@users.noreply.github.com>
Co-authored-by: ScyronX <166930367+ScyronX@users.noreply.github.com>

(cherry picked from commit 91d14acb2be64da8193bb909623a053be73bc6b4)
2025-01-29 20:22:45 +03:00
SX-7
ff3595de9e Tajara (#1647)
# Description

~~On user end Felinids are removed and replaced with Tajara, mostly
inspired by the ParadiseStation sprites.~~

~~Most things from Felinids are ported over, either being untouched (in
which case they're left in the nyanotrasen directory), or somewhat
modified and copied to tajara directories. This is done because both
shadowkin and humans reference these files quite a bit, so we don't want
to break anything forwards/backwards,~~

~~Under the hood, felinid components are untouched, just simply set to
`abstract: true` and `roundstart: false`, once again to prevent any
breakage.~~

There's been like 50 changes all the ways, but basically, felinids are
staying, tajara get a few languages, they also are more "specialized"
than felinids due to big upsides and downsides (funny :)

---

# TODO

- [X] Add tajara
~~- [X] Hide felinids~~
~~- [x] Analyze and find now-orphaned felinid
protorypes/textures/references and remove them (optional)~~
- [x] Fix graphical bugs (if any)
- [x] Ensure the code structure is compliant with repo practices

---

<details><summary><h1>Media</h1></summary>
<p>

In captain attire

![{3169C46E-BABB-466F-BD75-D8A00D8F9105}](https://github.com/user-attachments/assets/74a7c43f-9d5d-440f-9c18-f1eb386ad3d7)
Testing emotes and languages

![{7EE18197-E788-46BF-9DA3-97B0718A2F0B}](https://github.com/user-attachments/assets/74dd9c17-92a2-4760-99f8-1bb893fa969d)
Emotes still working, same with hairballs

![{346EB863-EF92-4D82-8E72-409437372DC3}](https://github.com/user-attachments/assets/91b61aae-d460-4373-a0ba-79cbd64f8ec4)
Few character selector pictures
- The previously shown off tajaran

![{559C39A8-5333-4787-A3B7-2F882EB6B5E2}](https://github.com/user-attachments/assets/38d77c48-caa2-461f-858a-a6b1a235cc0f)
- Markingless male body

![{9D762061-C1F8-40A5-9F14-5809E803820C}](https://github.com/user-attachments/assets/719c18ba-0230-4b17-9166-fdd15cb67526)

![{98AFAEF1-D49A-4951-A18E-5E55ACC05A26}](https://github.com/user-attachments/assets/6f848c0a-9a1e-4aed-aeb7-0bbf7c1dab62)
- Markingless female body

![{8F42252C-DDC4-43FD-8B8F-BFF0FBD971CD}](https://github.com/user-attachments/assets/92ea11bc-2ddc-4569-b166-0380b34ee946)

![{EE2B152D-97AD-4C39-B51E-8D89E4C4B097}](https://github.com/user-attachments/assets/c6f3a8ee-20be-486a-bea8-b862cf2ea12e)
- Traits are updated, as is the case with other texts

![{6F1E0309-7262-48BA-ABF6-C2048E087437}](https://github.com/user-attachments/assets/778ede7d-3069-4b81-b09d-32aadb6c6b76)
~~- And a neon colored specimen to show off some markings~~ No longer
the case, fur hue is clamped to some reasonable colors

![{381F7D38-1ABE-4434-8F29-95908E8F1A4B}](https://github.com/user-attachments/assets/1ef52004-db37-4127-a113-0b5640087cc1)

</p>
</details>

---

# Changelog

🆑
- add: Added Tajara and related content

---------

Signed-off-by: SX-7 <92227810+SX-7@users.noreply.github.com>
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit b7660b95566c8e138cb458a3d70732c1d3ea4602)
2025-01-29 20:19:56 +03:00
Eris
9b433faddc Hotfix for Disk Burner Examine (#1656)
<!--
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]?
-->

Had an aneurysm seeing this live on arcadis and webedited a fix. Fixes
an issue on examining a disk burner without a board.

---

# 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
-->

no

Signed-off-by: Eris <erisfiregamer1@gmail.com>
(cherry picked from commit 8eafa7ab0f7295bdd8350fc9c2954b02e7d50d1b)
2025-01-29 20:19:44 +03:00
Skubman
a46b4f2b5a New Species: Plasmaman (#1291)
# Description

Adds the Plasmamen as a playable species. Plasmamen are a skeletal
species who depend on Plasma to live, and oxygen is highly fatal to
them. Being exposed to oxygen will set them on fire, unless they wear
their envirosuits.

## Species Guidebook

<img width=500px
src="https://github.com/user-attachments/assets/a1ef91ef-87b2-4ae0-8b5c-922a0c34777f">
<img width=500px
src="https://github.com/user-attachments/assets/110f0fa0-7dc4-410b-a2c0-a517f0311484">

**SPECIAL:**

- Plasmamen speak the language Calcic, a language they share with
Skeletons.

## Shitmed Integration

Plasmamen are the first ever species designed with Shitmed in mind, with
one of their core mechanics (self-ignition) powered entirely by Shitmed.

Whether or not a Plasmaman ignites from oxygen exposure depends only on
their body parts. A Plasmaman with only their head exposed will not burn
as much as an entirely naked Plasmaman. You can **transfer** Plasmaman
body parts to non-Plasmamen through **surgery** so that they also ignite
from oxygen exposure. Meanwhile, a Plasmaman with a non-Plasmaman head
can expose their head without self-igniting.

https://github.com/user-attachments/assets/0aa33070-04be-4ded-b668-3afb9f4ddd7c

## Technical Details

This also cherry-picks
https://github.com/space-wizards/space-station-14/pull/28595 as a
quality-of-life feature to ensure Plasmamen keep their internals on upon
toggling their helmet with a breath mask on.

## TODO

### RELEASE-NECESSARY

<details>

- [x] Port more envirosuits / enviro helms (job-specific) and their
sprites
- [x] Remove breath masks from default plasmaman loadouts because the
envirohelms already allow them to breathe internals
- [x] Change default plasma tank to higher-capacity version
- [x] Prevent plasmamen from buying jumpsuits and helmets other than
envirosuits
- ~~[ ] **Client UI update for loadout groups min/max items and default
items**~~
- [x] Plasmaman-specific mask sprites from TG
- [x] Disable too cold alert for plasmamen
- [x] Create/port sprites for these jobs
  - [x] Courier
  - [x] Forensic Mantis
  - [x] Corpsman (Resprite security envirosuit)
  - [x] Prison Guard (Resprite security envirosuit)
- [x] Magistrate (No Paradise envirosuit so use new colorable
envirosuit)
  - [x] Blueshield (Port from Paradise and tg-ify?)
- [x] NanoTrasen Representative (No Paradise envirosuit so use new
colorable envirosuit)
- [x] Martial Artist (use new colorable envirosuit and make pure white)
  - [x] Musician (use new colorable envirosuit)
  - [x] Reporter (use new colorable envirosuit)
  - [x] Zookeeper (use new colorable envirosuit)
  - [x] Service Worker (use new colorable envirosuit)
  - [x] Gladiator
  - [x] Technical Assistant
  - [x] Medical Intern
  - [x] Acolyte / Research Assistant
  - [x] Security Cadet
  - [x] Assistant
- You know what. These intern jobs are fine. They can use their normal
equivalent's envirosuits.
  - [x] Logistics Officer (use new colorable envirosuit)
- [x] Adjust sprites to be closer to actual job
  - [x] Captain (Shift color to be closer to ss14 captain)
  - [x] ~~CMO (Remove yellow accents)~~
  - [x] Port HoP envirogloves sprite
- [x] unique sprite for self-extinguish verb
- [x] Refactor conditional gear stuff to live only in
StartingGearPrototype with `SubGear`
`List<ProtoId<StartingGearPrototype>>` field and `List<Requirement>`
field for sub-gear requirements
- [x] Add starting gear for paradox anomaly, and antags and ghost roles
  - [x] Paradox
  - [x] Nukies
  - [x] Disaster victims
  - [x] Listening post operative
- [x] Make all envirosuit helmets have a glowing (unshaded) visor
- [x] Envirosuit extinguish visuals
- [x] JobPrototype: AfterLoadoutSpecial
- [x] Set prisoner envirohelm battery to potato, command/sec/dignitary
to high-powered
  - [x] Set base envirosuit extinguishes to 4, sec 6 and command 8
- [x] Improve plasmaman organ extraction experience
  - [x] Body parts now give 1 plasma sheet each, while Torso gives 3
  - [x] Organs can be juiced to get plasma
- [x] Make envirohelm flashlights battery-powered
- [x] Plasmamen visuals
- [x] Grayscale sprites for color customization, and set default
skintone color to Plasmaman classic skintone
  - [x] Plasmaman eye organ sprite
- [x] Add basic loadouts
- [x] Add way to refill envirosuit charges (refill at medical protolathe
after some research)

</details>

### Low Importance

<details>

- [x] Envirogloves
- [ ] (SCOPE CREEP) Plasma tanks sprite (only normal emergency/extended,
rather low priority)
- [ ] (SCOPE CREEP) Modify envirosuit helmet sprites to have a
transparent visor
- [ ] Glowing eyes/mouth marking
- [x] More cargo content with plasma tanks / envirosuits
  - [x] Plasmaman survival kit like slime
  - [x] Additional plasma tanks
  - [ ] (SCOPE CREEP) Plasmaman EVA suits
- [x] ~~Add envirosuits to clothesmate~~
- [x] Add more plasma tanks to random lockers and job lockers
- [x] Turn envirosuit auto-extinguish into extinguish action
- [x] move self-extinguish verb stuff to shared for prediction of the
verb
- [x] move self-extinguisher stuff away from extinguisher namespace
- [x] unique sprite for self-extinguish icon
  - [x] ~~IDEA: purple glowy fire extinguisher ~~
- [x] on self-extinguish, check for pressure immunity OR ignite from gas
immunity properly
- [x] See envirosuit extinguish charges in examine
- [x] Milk heals on ingestion
- [x] Plasma heals on ingestion
- [x] Self-ignition doesn't occur on a stasis bed
- [x] ~~Self-ignition doesn't occur when dead~~
- [x] Guidebook entry
- [x] Make self-ignition ignore damage resistances from fire suits
- [x] ~~Make self-ignition ignore damage resistances from armor~~
- [x] ~~Unable to rot?~~
- [x] Make the envirosuit helmet toggle on for the character dummy in
lobby
- [ ] (SCOPE CREEP) One additional Plasmaman trait
- [x] ~~Showers extinguish water as well as water tiles~~
- Unnecessary as stasis beds now prevent ignition, allowing surgery on a
plasmaman on stasis beds.
- [x] Unique punch animations for Plasmafire Punch/Toxoplasmic Punch
traits
- [x] Actually remove toxoplasmic it's just slop filler tbh
- [ ] Talk sounds
  - [ ] Normal
  - [ ] Question
  - [ ] Yell
- [x] Positive moodlet for drinking milk / more positive moodlet for
drinking plasma
- [x] Increase moodlet bonus and also minimum reagent required for the
plasma/milk moodlets
- [x] Increase fire rate base stacks on ignite cause putting out your
helmet for a few secs isn't that dangerous due to the fire stacks
immediately decaying
- [x] I think halving firestack fade from -0.1 to -0.05 might work to do
the same thing too
- [ ] (SCOPE CREEP) Get bone laugh sounds from monke
'monkestation/sound/voice/laugh/skeleton/skeleton_laugh.ogg'
- [ ] (SCOPE CREEP) When EVA plasmaman suit is added, 25% caustic resist
- [x]  Envirosuit helmet
  - [x] Equivalent of 100% bio / 100% fire / 75% acid resist
- [x] Envirosuit
  - [x] Equivalent of 100% bio / 100% fire / 75% acid resist
- [x] Envirogloves
  - [x] Equivalent of 100% bio / 95% fire / 95% acid resist
- [x] Put breath mask back on
- [x] Refactor: put body parts covered data into component instead of
being hardcoded

</details>

## Media

**Custom Plasmaman Outfits**

All of these use the same **absolutely massive** [envirosuit
RSI](0c3af432df/Resources/Textures/Clothing/Uniforms/Envirosuits/color.rsi)
and [envirohelm
RSI](0c3af432df/Resources/Textures/Clothing/Head/Envirohelms/color.rsi)
to quickly create the envirosuits that didn't exist in SS13 where the
envirosuit sprites were ported.

From Left to Right: Magistrate, Prison Guard, Boxer, Reporter, Logistics
Officer

<img width=200px
src="https://github.com/user-attachments/assets/bf990841-7d9e-4f4e-abae-8f29a3980ca1">
<img width=200px
src="https://github.com/user-attachments/assets/07ca7af7-4f43-4504-9eac-4ca9188ae98e">
<img width=200px
src="https://github.com/user-attachments/assets/0d20332c-826f-4fec-8396-74e84c23b074">
<img width=200px
src="https://github.com/user-attachments/assets/1634364e-7cb3-457b-b638-e1b562b7c0c5">
<img width=200px
src="https://github.com/user-attachments/assets/c2881764-f2fa-4e40-9fbf-35d1b717c432">

**Plasmaman Melee Attack**

https://github.com/user-attachments/assets/6e694f2c-3e03-40bf-ae27-fc58a3e4cb6c

**Chat bubble**

<img width=240px
src="https://github.com/user-attachments/assets/e3c17e6d-5050-410f-a42c-339f0bfa30a1">

**Plasmaman Body**

<img width=140px
src="https://github.com/user-attachments/assets/7ed90a47-9c33-487d-bd44-c50cec9f16dd">

With different colors:

<img width=140px
src="https://github.com/user-attachments/assets/0a28068e-7392-4062-950b-f60d2602da84">
<img width=140px
src="https://github.com/user-attachments/assets/9b652311-0305-4ec0-be60-e404697617a2">

**Skeleton Language**

![image](https://github.com/user-attachments/assets/89b2b047-3bfa-4106-926e-6c412ed6e57c)

**(Bonus) Skeleton chat bubble**

<img width=240px
src="https://github.com/user-attachments/assets/a2e2be5c-f3ae-49d9-b655-8688de45b512">

**Self-Extinguish**

https://github.com/user-attachments/assets/6c68e2ef-8010-4f00-8c24-dce8a8065be8

The self-extinguish is also accessible as a verb, which also means that
others can activate your self-extinguish if they open the strip menu.

<img width=200px
src="https://github.com/user-attachments/assets/291ab86d-2250-46ec-ae0c-80084ab04407">

The self-extinguish action has different icons depending on the status
of the self extinguish.

Left to right: Ready, On Cooldown, Out Of Charges

<img
src="https://github.com/user-attachments/assets/0340de8a-9440-43b1-8bff-1c8f962faa0c">

<img
src="https://github.com/user-attachments/assets/11f73558-6dc1-444d-b2ef-2f15f55174ca">

<img
src="https://github.com/user-attachments/assets/030ed737-f178-4c60-ba0c-109659e7d9cb">

**Envirosuit Extinguisher Refill**

<img width=300px
src="https://github.com/user-attachments/assets/9379294b-e3f3-436d-81bc-2584631869ef">
<img width=300px
src="https://github.com/user-attachments/assets/807b9e9e-7b4b-4593-aa1f-d9d24ac6985c">

**Loadouts**

<img width=400px
src="https://github.com/user-attachments/assets/55713b87-29bb-41b3-b7a3-88fbc6e5e797">
<img width=400px
src="https://github.com/user-attachments/assets/ab1757fa-9b70-4a66-b5ae-20fd9cabe935">
<img width=400px
src="https://github.com/user-attachments/assets/aacc4cf7-9ce1-4099-b8c7-108bef1f3bde">
<img width=400px
src="https://github.com/user-attachments/assets/58604dc2-82ef-4d42-b9e2-639548c93f40">

**Plasma Envirosuit Crate**
<img width=400px
src="https://github.com/user-attachments/assets/fa362387-9c10-47c3-b1af-2c11e6b00163">

<img width=400px
src="https://github.com/user-attachments/assets/bf773722-9034-4469-967d-e00dbf8c77a7">

**Internals Crate (Plasma)**
<img width=400px
src="https://github.com/user-attachments/assets/fcd4ff2e-09e9-423a-9b21-96817f6042a4">

<img width=400px
src="https://github.com/user-attachments/assets/bf773722-9034-4469-967d-e00dbf8c77a7">

**Glow In The Dark**

![image](https://github.com/user-attachments/assets/9728eb33-55d5-4f82-92ac-3a7756068577)

## Changelog

🆑 Skubman
- add: The Plasmaman species has arrived! They need to breathe plasma to
live, and a special jumpsuit to prevent oxygen from igniting them. In
exchange, they deal formidable unarmed Heat damage, are never hungry nor
thirsty, and are immune to cold and radiation damage. Read more about
Plasmamen in their Guidebook entry.
- tweak: Internals are no longer toggled off if you take your helmet off
but still have a gas mask on and vice versa.
- tweak: Paradox Anomalies will now spawn with the original person's
Loadout items.
- fix: Fixed prisoners not being able to have custom Loadout names and
descriptions, and heirlooms if they didn't have a backpack when joining.

---------

Signed-off-by: Skubman <ba.fallaria@gmail.com>
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>

(cherry picked from commit e68e0c3f4b9cf263e07efc888b32a091df62fb51)
2025-01-29 20:19:20 +03:00
VMSolidus
9bfb062cf3 Fix Melee Attack Speed Again (#1653)
# Description

Melee Weapons were accidentally given the wrong attack speed formula
again. It took me awhile of reviewing the entire history, but eventually
I found the line where the wizmerge introduced a new check that used the
old formula.

Also to help prevent this from happening again, I've put in a request to
be set as codeowner for the relevant systems I have significantly
modified.

# Changelog

🆑
- fix: Fixed melee weapons having the wrong attack speed
calculations(again)

(cherry picked from commit 1c28a1c2881bd9c6e1029932d44da72b3f9999cb)
2025-01-29 20:10:53 +03:00
sleepyyapril
3a9a0e63bf Change "Kill" To "Teach a Lesson" (#1654)
better for MRP
this code is originally by me anyway, they just made it better

🆑
- tweak: Kill random person objective has been replaced by teaching them
a lesson, removing the need to RR a random person.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>
Co-authored-by: Milon <milonpl.git@proton.me>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit f592d4cd890bc14c70153182a400d273ffb113b9)
2025-01-29 20:10:41 +03:00
sleepyyapril
4370ff6611 Chitinid (From Delta-V) (#1644)
port https://github.com/DeltaV-Station/Delta-v/pull/2707 (with
permission)

🆑 ElusiveCoin
- add: Added a new species, the Chitinid.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: ElusiveCoin <elusivecoin@gmail.com>
Co-authored-by: rosieposie <52761126+rosieposieeee@users.noreply.github.com>
Co-authored-by: Delta-V bot <135767721+DeltaV-Bot@users.noreply.github.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit ce310bb7158acf0c9c2eef00a19d9ac58f8fa08d)
2025-01-29 20:10:28 +03:00
RadsammyT
bb612d3ac7 [Port] Playing Cards (#1451)
# Description

This ports Playing Cards from:
Estacao Pirata...
Frontier...
and GoobStation...

More specifically, ports
https://github.com/Goob-Station/Goob-Station/pull/1215 and
https://github.com/Goob-Station/Goob-Station/pull/1311 sequentially.

In short...
 - Adds 3 skins of the playing cards: Nanotrasen, Syndicate, and Black.
- NT can be obtained as an item in your loadout but is locked behind a
command job.
 - Syndicate can be obtained as a pointless item in the uplink for 1 TC.
- Black can be obtained both as an item in your loadout and from the
Games Vendor.

---

# TODO before review

<!--
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] De-namespace all of (_)EstacaoPirata? (not required, it is an EE
fork)
- [X] **_TO MAINTAINERS/CONTRIBS, NEED YOUR INPUT!!!_**: See
`Content.Client/Inventory/StrippableBoundUserInterface.cs:220`'s "DRAFT
TODO". Basically its me asking how to involve the thieving trait in the
omission of the playing cards in the strip menu. Currently, it does not
take into account the trait and simply obscures. (prolly dont take the
trait into account, obscure regardless)
- [X] Figure out what to do with the Nanotrasen deck variant: should it
remain free like the black deck or restricted like the syndicate? Locked
behind any command job? (prolly this)
- [X] Get media actually filled in

---

<!--
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>

![image](https://github.com/user-attachments/assets/66c94a1d-4389-4a65-a547-c11c54efac42)

</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: Playing Cards. You may get one in the Games Vendor or as an item
in your loadout.

---------

Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit 9b5cce20f185d8da3cdddd2fa6cad14ccd38db77)
2025-01-29 20:10:09 +03:00
sleepyyapril
5235c08ade ChemMaster Improvements (#1650)
Hate having to use the same buffer for pills? Want sorting and container
solutions for output? No need to wait _any_ longer! A brand new pill
buffer, a sort feature _for_ the new pill buffer **and** you have your
amount buttons back!

Showcase:
https://ptb.discord.com/channels/1218698320155906090/1218698321053356060/1332224976803074123

🆑
- add: A new ChemMaster experience has been granted to the people of
Einstein Engines. Includes a pill buffer!

(cherry picked from commit 35c26cf0c907542f1580ab4d026d33e98863fd98)
2025-01-29 20:09:45 +03:00
Eris
d6f3265e83 MODsuits (Port From Goob #1242) (#1640)
# Description

Ports MODsuits from Goobstation PR
https://github.com/Goob-Station/Goob-Station/pull/1242. The PR author
has confirmed that he is okay with me doing this.

---

# TODO

- [X] Port in sprites
- [x] Port in YMLs
- [X] Port code
- [x] Port code PATCHES
- [x] Update EE with required fixes

---

<details><summary><h1>Media</h1></summary>
<p>

## Modsuit crafting

https://github.com/user-attachments/assets/8ff03d3a-0fc1-4818-b710-bfc43f0e2a68

## Modsuit sealing

https://github.com/user-attachments/assets/6671459a-7767-499b-8678-062fc1db7134

</p>
</details>

---

# Changelog

🆑
- add: Modsuits have been ported from Goobstation!

---------

Signed-off-by: Eris <erisfiregamer1@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>

(cherry picked from commit cb06c41fc07275e1f15af916babb44368c0c26c2)
2025-01-29 20:09:26 +03:00
DocNITE
05c30059d3 Better Progress Bar (#1648)
# Description

DoAfter progress bar like in ss13 forks.

---

![2025-01-24_01-04_2](https://github.com/user-attachments/assets/df524426-cecd-4a32-a3b3-f588f11684b1)

![2025-01-24_01-03](https://github.com/user-attachments/assets/62dcb13a-4259-4980-8aa2-87de6e77a226)

![2025-01-24_01-04](https://github.com/user-attachments/assets/493c0c54-4225-40c9-8518-4da613bb2e12)

---

# Changelog

Fuck it, no need this, im not a contributor.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
(cherry picked from commit 1ef0bd0f47aadfb3b0ea8f48c8c693c3f9118ad4)
2025-01-25 14:46:18 +03:00
VMSolidus
2b03947d89 Add MathNet.Numerics To The Project (#1641)
# Description

The documentation for it can be found here:
https://numerics.mathdotnet.com/api/MathNet.Numerics/index.htm
This adds an entire massive library of academic/scientific/engineering
math functions.

I basically need this going forwards to start comprehensively fixing
this game's terrible math.

# Changelog
Not player facing, but it deserves to be here:

🆑
- add: (For Developers): Added the MathNet.Numerics library. It contains
a great number of scientific and engineering math related functions. For
more information, its documentation can be found here,
https://numerics.mathdotnet.com/api/MathNet.Numerics/index.htm

(cherry picked from commit 09d438d1035a276c01b708552f35782d4fa54941)
2025-01-23 08:10:59 +03:00
sleepyyapril
529420cc05 Player Customization (#1626)
<!--
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 cosmetic pronouns, visible through examining people (if they have
any) as a PushMarkup.
Adds Station AI/borg name customization.

CCVars:
customize.allow_cosmetic_pronouns (default false)
customize.allow_custom_station_ai_name (default false)
customize.allow_custom_cyborg_name (default false, for borgs, mediborgs,
etc)

---

# 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 cosmetic pronouns. (disabled by default)
- add: Added Station AI name customization through character
customization. (disabled by default)
- add: Added Cyborg name customization through character customization.
(disabled by default)

(cherry picked from commit 07fb6bc9a1a770f969bf44690676128970cb9eb7)
2025-01-23 08:08:54 +03:00
sleepyyapril
be866b9cdd Fix RoundLevel Test Fail (#1635)
(cherry picked from commit e0f07e12e8bdf4631d1719d2111f80a57af0a463)
2025-01-23 08:06:48 +03:00
sleepyyapril
6249942d3e Goob Mechs (#1611)
# 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]?
-->

We like mechs here, yeah?

---

# 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
-->

🆑 Mocho, John Space
- tweak: The H.O.N.K. has received an airtight cabin for honk operations
in outer space.
- add: Added the Ripley MK-II, a heavy, slow all-purpose mech, featuring
a pressurized cabin for space operations.
- add: Added the Clarke, A fast moving mech for space travel, with built
in thrusters (not certain if they work properly though :trollface:)
- add: Added the Gygax, a lightly armored and highly mobile mech with
enough force to rip walls, or someone's head off.
- add: Added the Durand, a slow but beefy combat suit that you dont want
to fight in close quarters.
- add: Added the Marauder, a specialized mech issued to ERT operatives.
- add: Added the Seraph, a specialized combat suit issued to ???
operatives.
- add: The syndicate has started issuing units under the codenames "Dark
Gygax" and "Mauler" to syndicate agents at an introductory price.
- add: The exosuit fabricator can now be emagged to reveal new recipes.
- add: There are 4 new bounties cargo can fulfill for mechs. Feedback on
the cost/reward is welcome!

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: John Space <bigdumb421@gmail.com>
Co-authored-by: gluesniffler <159397573+gluesniffler@users.noreply.github.com>
Co-authored-by: ScyronX <166930367+ScyronX@users.noreply.github.com>

(cherry picked from commit e3003b67014565816e83556c826a8bba344aac94)
2025-01-23 08:06:20 +03:00
sleepyyapril
815d060b84 Hotfix AI Being Eaten by Singulo (#1637)
ports #31556

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
(cherry picked from commit 3d9ac9bacf3b824b2301e725e65a415e3a983927)
2025-01-23 08:05:19 +03:00
sleepyyapril
e8b1d94dd2 Loadouts Item Failed to Spawn Check (#1630)
(cherry picked from commit 2c9532910218d87d7c22feac0ec3eba304400447)
2025-01-23 08:04:14 +03:00
Timfa
0df12ec24a Gladiabot (#1548)
Co-authored-by: stellar-novas <stellar_novas@riseup.net>
Co-authored-by: RedFoxIV <38788538+RedFoxIV@users.noreply.github.com>
(cherry picked from commit 01d1ec4d4b04f6d76f239ec0da0970dc705736ef)
2025-01-23 08:03:54 +03:00
sleepyyapril
d6e00dabad Kill Mana (#1623)
it is genuinely so bad

🆑
- remove: Remove mana.

(cherry picked from commit 89e8de3b6006ca6d4551546bf8a22c7ed7244aba)
2025-01-23 08:02:50 +03:00
VMSolidus
16e54f8300 Newtonian Singularity (#1619)
# Description

By request from the very same person who assisted with
https://github.com/Simple-Station/Einstein-Engines/pull/1618
This PR ports(and fixes)
https://github.com/space-wizards/space-station-14/pull/23372 such that
it works on modern Robust Toolbox.

This PR essentially makes it so that the Singularity (And Tesla by
extension) inherit some of the momentum of objects thrown into them. Im
practice it means that they now work more like they do in SS13, whereby
if a traitor does not actively intervene in a Singuloose(such as by
using a Singularity Beacon), the singularity will usually be "Blown back
into space" by space wind throwing objects at it in retaliation to it
eating engineering.

<details><summary><h1>Media</h1></summary>
<p>

https://github.com/user-attachments/assets/04e9e5b9-d873-4425-b19a-b854b57db486

</p>
</details>

# Changelog

🆑
- add: Singularity and Tesla are now affected by objects thrown into
them, causing them to change directions. Unless a traitor intervenes
(with a Singularity Beacon), a "Singuloose" is extremely likely to be
blown out to space.

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
(cherry picked from commit 34b55e14f51d562510b1d9954999fbb3085bdf02)
2025-01-23 08:00:49 +03:00
Spatison
0eb98e8e63 fix upstream 2025-01-21 14:57:03 +03:00