Commit Graph

7934 Commits

Author SHA1 Message Date
sleepyyapril
5b2cd95609 Sedin (#27110) (#1786)
<!--
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]?
-->

Ports https://github.com/space-wizards/space-station-14/pull/27110

---

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

🆑 Erisfiregamer1
- add: New chemical, Sedin. It restores seeds on plants 20% of the time
with other adverse effects included.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: Eris <eris@erisws.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit ed593f070a579a47f2e8800d4a5191741971b3b9)
2025-02-15 00:33:17 +03:00
Skubman
0db014ecd1 Plasmaman Damage Resist and Density Changes (#1769)
# Description

Plasmamen receive these changes:

- Density reduced by 13.5% (185 to 160)
- Reference: Human density = 185, Felinid density = 140, Skeleton
density = 130.
- Slash resist increased from 15% to 20%, Piercing resist increased from
25% to 40%
- Reference: Skeletons take 10% more Blunt, 20% less Slash, 40% less
Piercing damage.
- Upon being gibbed or ashed, spew out plasma everywhere
  - Not in changelog to catch players by surprise :trollface:
- Reduce price of extinguisher refill in Loadouts to 5 points to 4
points.

## Why / Balance

Plasmamen are "just" skeletons, so it makes sense that they'd be lighter
than average. But not Felinid-levels of light, because that's not really
the selling point of Plasmamen and would increase their difficulty in an
unintended direction. Why they'd be heavier than Felinids and Skeletons
can be explained by the plasma in their body having a lot of weight.

To compensate, they will get 20% Slash and 40% Piercing resist. For
comparison, Slime People have a 40% resistance to Blunt, a more common
damage type than Piercing. This will give Plasmamen a niche of being
excellent against spears and ballistic weapons especially with
additional armor, while still being vulnerable to Space Wind throwing
Blunt weapons and opponents closing in on them with a Blunt weapon.

## Media

**Plasmaman Gibbing**

https://github.com/user-attachments/assets/bd7c0edc-37dc-4ab4-ab1e-170f78306b24

**New Guidebook Description**

<img width=450px
src="https://github.com/user-attachments/assets/d70ed0ed-e0cd-4079-9d99-4d6bf012ed7e">

## Changelog

🆑 Skubman
- tweak: Plasmamen now have a slightly lower density and thus lower
weight than the average species (this is a nerf).
- tweak: Plasmamen have their Slash resist increased from 15% to 20%,
and their Piercing resist increased from 25% to 40% (this is a buff).
- tweak: The cost of the envirosuit extinguisher refill in Loadouts has
been reduced from 5 points to 4 points.

(cherry picked from commit f6289bf223a570e68bf85f2ffd92c01b9e20f200)
2025-02-15 00:32:09 +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
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
dootythefrooty
2d67d13fa1 Artifact Analyzer and Anomaly Vessel Part Upgrading (#1729)
<!--
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

It's simple as it sounds, really. Adds part upgrading to these machines.
The experimental anomaly vessel becomes a stronger demon core every time
you upgrade it because I wanted to keep the "More Good but Dangerous"
motif and to keep it somewhat balanced...

---

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

i don't feel like opening up OBS today...

</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 part upgrading to the artifact analysis machine.
- tweak: Tweaked default artifact analysis scan time to 40 seconds.
- fix: Fixed anomaly vessels not actually upgrading.

---------

Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit cf6707bd67b9c2ab27bc57d91205b204ac3636de)
2025-02-15 00:14:13 +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
VMSolidus
d0b50a9d0d No More Telepathy While Unconscious (#1725)
# Description

This removes the ability to use telepathy while unconscious.

# Changelog

🆑
- remove: Removed the ability to use Telepathy while unconscious. It is
now safe to sleepy-pen people who have psi powers.

(cherry picked from commit 7f4350b92714377afeeceaac9361a58bf926d38e)
2025-02-14 23:37:07 +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
Avalon
cbd63b94ae Port Magic Crayon From Frontier (#2410)
* ART

* Update clown.yml

* Loadout fixes, time req

* loadout bgone

* Fixes, moved things

* fixoneoops

* More fixes

* CRAFTING WORKS!

* Flipped slashes

* UNTOUCHED! AT LAST

* Fix comment

* Mailladd

* Webedit ops

Signed-off-by: Avalon <jfbentley1@gmail.com>

* untroll indent

Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>

---------

Signed-off-by: Avalon <jfbentley1@gmail.com>
Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
(cherry picked from commit fe630d7391693b4ee6cb389f4460c064ae3e8d21)
2025-02-05 18:35:28 +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
Peptide90
1b249463fb International Space Station Update - New Accent Traits (#1712)
Ports Russian and German languages from Wizden and adds traits for them.

Also adds traits for Italian, French and Spanish since they already
exist.

Not tested because the game didn't want to build locally.

# 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 traits for accents: Russian, German, French, Italian and
Spanish

---------

Signed-off-by: Peptide90 <78795277+Peptide90@users.noreply.github.com>
(cherry picked from commit 91eb7bff09e7c61896b92fde70ac7c4d47e96a6d)
2025-02-05 18:18:09 +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
ce4494bb32 Fix Standard Cloners Not Transferring Appearance (#1709)
# Description

I only just now found out that the stock cloner doesn't transfer your
character's appearance. And neither does the Metem machine if you win
the roll. This fixes that.

# Changelog

🆑
- fix: Both standard Cloner, and Metem Machines(when you win the psychic
willpower roll) now correctly transfer over your old character
appearance.

(cherry picked from commit 428c83d1c16ccb9dff7c0c2e4864fb65e394fb5e)
2025-02-05 18:17:27 +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
Spatison
148d16a2d6 upstream fix 2025-01-30 00:17:52 +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
SixplyDev
3bca3427ca Glass Cannon Shadowkin (#1531)
# Description

Honestly... much needed until they can get a proper rework from the
original creators. This PR nerfs them a shit ton (no more teleporting
away when you're in danger, smh) to make them more in line with the
other species so they aren't powergamer central. Additionally, brings
them more in-line with the traditional SS13 shadowkin. Shadowkins should
no longer get darkswap and such, in fact I've commented out the entire
ability until it too can get a rework.

---

# TODO

- [x] Removed DarkSwap from Shadowkin
- [x] Made shadowkins take more damage from heat, slash, and piercing
- [x]  Brought shadowkin much more in line with their SS13 counterparts
- [x] Fixed shadowkin lore, making the guidebook entry more interesting
- [x] Fixed shadowkin lore file, adding in their species lore instead of
relying on a google doc
- [x] Shadowkin can be chosen as a player species roundstart
- [x] Rework Marish to have a more fleshed out language protoype
- [ ] Make DarkSwap unable to interact with the world as a whole
- [ ] Give DarkSwap a longer cooldown
- [ ] Make DarkSwap unable to be used if stunned
- [ ] Adjust DarkSwap glimmer production
- [x] Shadowkin do not have black eyes by default
- [x] Shadowkin have the black eyes trait listed (Waveform Misalignment
equivalent)
- [x] Shadowkin can now be mystagogue, mantis, chaplain, cataloguer, and
prisoner.
- [x] Shadowkin cannot have blackeye trait for mystagogue, mantis,
chaplain, or cataloguer.
- [x] Shadowkin must have blackeye trait for prisoner.

---

# Changelog

🆑 ShirouAjisai
- add: Shadowkins can now be roundstart species again
- add: Shadowkins now have a lungs, yippee!
- add: Shadowkins now have organs with funny little descriptions
- add: Shadowkins now have a brand new and expanded list of names
- add: Shadowkins now have roundstart innate telepathy ability rather
than a whole new language for it.
- tweak: Shadowkins take more damage from heat, slash, and piercing
- tweak: Shadowkins are much more like their SS13 counterparters
- tweak: Shadowkins now have much better lore in their guidebook entry
- tweak: Shadowkins now have a more fleshed out language (to outside
observers)
- tweak: Shadowkins now can be mystagogue, mantis, chaplain, and
cataloguer
- tweak: Shadowkins must now have blackeye trait to play prisoner
- tweak: Shadowkins no longer have blackeye trait by default
- tweak: Shadowkins now take asphyxiation damage, albeit at half the
rate of others.
- tweak: Shadowkins now have a more pronounced snout.
- remove: Removed DarkSwap from Shadowkin roundstart

---------

Signed-off-by: SixplyDev <einlichen@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
Co-authored-by: ShirouAjisai <zaneromeave319@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>

(cherry picked from commit 031a102e2fe8ca1533375168b3ae64f65f5e99ea)
2025-01-29 20:23:55 +03:00
VMSolidus
7603272c73 Better Teach Lesson Code (#1657)
# Description

Thanks to Router for pointing out we can actually reuse code that is
apparently just always running exclusively on player characters. So it
turns out that this game actually has a system for tracking who the
killer is. We can skip enumeration outright if the killer was the one
who downed the player. There's still BETTER ways to do this, like
subscribing to KillReportedEvent instead of MobStateChanged, but I'm a
bit too zonked out to pursue that right now.

(cherry picked from commit f325d2e78cfb2a2c09466c3e08a8a818cfd6dfbb)
2025-01-29 20:19:49 +03:00
VMSolidus
7fcaa07a16 Don't Assume Sessions Are Real (#1655)
# Description

This system was just blindly assuming a session couldn't be null without
proving it wasn't, and two different functions both incorrectly made
this assumption. I have no idea how the hell they managed to sneak it
past the compiler's null reference test.

(cherry picked from commit 53aaba2f17fb382a669af70ee0e3b05b36b13cc3)
2025-01-29 20:19:34 +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
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
sleepyyapril
7c1abbacaf Try Fix Loadouts, Again (#1652)
more than likely this is just because of invalid loadouts

(cherry picked from commit 3417f35117df6d2061dba2b799352cb592b5f2a3)
2025-01-29 20:10:22 +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
VMSolidus
67ec276ea8 MathNet.Numerics Apparently Needed To Be In Server And Client Too (#1643)
Whoops. To be fair it's my first time adding something like this to a
project. :)

(cherry picked from commit 8e4fc9d6a2e58a8cd9ed609be00d417a2acfe0d5)
2025-01-25 14:46:09 +03:00
VMSolidus
9f28a3a139 Update SupermatterSystem.Processing.cs (#1642)
# Description

Mirror of a bugfix from
https://github.com/Goob-Station/Goob-Station/pull/1469

(cherry picked from commit e1afb1dafbc79b3a23791b19f7490821edf9b65f)
2025-01-23 08:11:08 +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
67fcc08a5c Fix Gun Contests (#1638)
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit 46c8540aa4beb3519de25fbb50d7061ef6811791)
2025-01-23 08:06:30 +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
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
77a91de37f Only Use Roundstart Species for RandomHumanoid (#1624)
it will no longer choose vox or lamia.

(cherry picked from commit c7784ce45462d4515e94df7b51ec1c432d51eee4)
2025-01-23 08:03:37 +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
sleepyyapril
cd82693663 Use System (#1622)
yes this is a system

i dont know why it's not better named

(cherry picked from commit d5866a64e9884a2dd369aa3ab2133503063c08dc)
2025-01-23 08:01:07 +03:00
VMSolidus
ef4182db5d Yet Another "OnPlayerSpawn" Crash Fix Attempt (#1621)
There absolutely should not be something deleting the player characters
when starting a round.

---------

Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
(cherry picked from commit 611cc196dd8be14e5b365b6115846777e208a9cc)
2025-01-23 08:00:59 +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
VMSolidus
58aaacf0f5 Supermatter Fixes (#1618)
# Description

Supermatter was essentially interacting with atmos about 20 to 60 times
faster than the atmos system was doing its own calculations, since *at
least some of atmos* is differentiated with respect to time, whereas
Supermatter was not. Thus supermatter was updating atmos fully every
single tick, whereas elsewhere these variables were being divided by the
delta time(multiply by Update(frameTime)). You can think of these
equations as, "How much it is modified per unit of time", and
multiplying by frameTime is the same as making it, "Per second".

This should rather dramatically cut down on the problem Supermatter has
where its seemingly going to explode every single round if even the
tiniest thing goes wrong, and that nothing you could do could save it if
it catches fire.

# Changelog

🆑
- fix: Fixed the Supermatter engine math so that it actually respects
the server's tickrate. It should now be SIGNIFICANTLY less likely to
enter a plasma fire death spiral. If it does catch fire, just make sure
coolant is being pumped into the engine, and start blasting it with a
fire extinguisher.

(cherry picked from commit c887fff72bee70f3ef8ba9a9202e31bcd921ba7d)
2025-01-23 07:58:38 +03:00
Spatison
0eb98e8e63 fix upstream 2025-01-21 14:57:03 +03:00
John Willis
c565776b57 Psionics Registry Computer, PsiWatch, and Epi-Glasses/Epi-HUD (#1598)
# Description
This adds the wonderful `Psionics Registry Computer` which allows you
to, just like Criminal Records, mark people that will show their icons
to other individuals wearing the appropriate gear, and will allow you to
keep track of such individuals in a similar way by making a `PsiWatch`
app that will show the reasons.

For the purposes of easement, I've left the fingerprints and DNA in
there, but individuals will not show up with it in the actual file. The
game would just crash when I removed the filters, so I left them in. The
dropdown also just looked cleaner when it was there instead of removing
it and replacing it with a label.

I've recolored the sprites for the sec-glasses and sec-HUD to make the
epi-glasses and epi-HUD using Epistemics colors.
I've recolored the sprite for the CriminalRecords computer to look
different and be cool.

---

# TODO
A list of things I've done split into categories.

### Spriting
- [x] (Recolor) Sprite the epi-glasses and epi-HUD.
- [x] Sprite the PsionicsRecords computer screen.
- [x] Sprite the Psionics Status icons.
- [x] Change the sprite for the Psionics Abusing (it is hard to tell any
difference from suspected right now).

### Records
- [x] Set up records XAML that basically duplicates the Criminal
Records.
- [x] Remove History (not necessary).
- [x] Change all the naming schema to match.
- [x] Change the categories and setup reason-requirement for each
submission type.
- [x] Change the "reason" to "psionics" so it is more intuitive.

### Computer Setup
- [x] Setup computer to show UI.
- [x] Setup system to report to report to Epistemics (Science) radio
when anything is changed.
- [x] Setup the system to only accept Epistemics (Research) access.
- [x] Setup the computer board.
- [x] Setup the sprites for the computers.

### Equipment and Icons
- [x] Create the icons and ensure the ShowPsionicsRecordIcons prototype
works.
- [x] Create the entity prototypes for the glasses and HUD in the game
to show textures.
- [x] Set it up so the glasses and HUD show the user the icons when
they're wearing them (having hard time fixing this at 06:00 in the
morning).

### PDA App
- [x] Setup the PDA app to mimic the SecWatch app as its own (PsiWatch).
- [x] Add the PDA app cartridge to Chaplain, Mantis, Cataloguer, and
Mystagogue.
- [x] Add cartridge to the Mystagogue locker (so they can give others
it).

### Loadouts
- [x] Add the epi-HUD to the Chaplain, Mantis, Cataloguer and
Mystagogue.
- [x] Add the epi-glasses to the Mystagogue.
- [x] Add the epi-glasses to Chaplain, Mantis, and Cataloguer (for 3
points).

### Mapping
- [x] Add the Psionics Registry Computer to every map.

### Miscellaneous Fixes/Changes
- [x] Make the computer only work for Chaplain (Chapel), Cataloguer
(Library), Mantis (Mantis), and Mystagogue (ResearchDirector).
- [x] Fix Chaplain PDA (did not have any programs installed
automatically, now it does).

---

# Media
I will add more media when I finish the rest. For now, it's just us.

<details><summary><h3>Registry Working</h3></summary>
<p>

https://github.com/user-attachments/assets/f534a1b6-6873-4bcd-9fe5-c7138069ecc0

</p>
</details>
<details><summary><h3>Loadouts and PsiWatch</h3></summary>
<p>

Cataloguer

![image](https://github.com/user-attachments/assets/3a5c3b2c-13e8-470f-8ea7-cff828f03e8d)
Chaplain

![image](https://github.com/user-attachments/assets/35a1255c-9447-4aeb-b200-48f2d00782e1)
Mantis

![image](https://github.com/user-attachments/assets/155ac859-10fd-4233-a84d-31f8f32b2f71)
Mystagogue

![image](https://github.com/user-attachments/assets/ddfd178f-2d79-4e1f-9226-51352eb8c0c9)

---

No Users in PsiWatch

![image](https://github.com/user-attachments/assets/63186e30-8c04-409b-8478-eb6bc9006f5f)
Suspected in PsiWatch

![image](https://github.com/user-attachments/assets/e9009714-0ed5-496f-a836-04f01f9e13e8)
Registered in PsiWatch

![image](https://github.com/user-attachments/assets/5f565ec6-4f5f-4303-89cc-f9201de01568)
Abusing in PsiWatch

![image](https://github.com/user-attachments/assets/d2f623b4-f2fa-419b-9b3e-a77001aff8ae)
PsiWatch in PDA

![image](https://github.com/user-attachments/assets/262ffd2e-f798-41db-8e45-4b64613aac0d)
Picture of the PDAs and PsiWatch Cartridge

![image](https://github.com/user-attachments/assets/ed334e8d-6236-4252-82b8-327f59609751)

---

Mystagogue Lockers with PsiWatch Cartridge

![image](https://github.com/user-attachments/assets/e56cef9c-2d9e-46bb-87ca-3e6cd2c85240)

</p>
</details>
<details><summary><h3>Mapping Locations</h3></summary>
<p>

Arena

![image](https://github.com/user-attachments/assets/b24e997d-051d-4def-a28c-dc1029566f0d)
Asterisk

![image](https://github.com/user-attachments/assets/6e2faf02-350e-4608-b629-c402d8c2a0fc)
Core

![image](https://github.com/user-attachments/assets/0d43e3a0-36c2-4c51-9745-d2a4e1d70217)
Edge

![image](https://github.com/user-attachments/assets/478180e2-e63a-4d9a-bf13-365b2648778b)
Europa

![image](https://github.com/user-attachments/assets/a385fc48-016e-40bd-8dbc-dc3904b62f05)
Gaxstation

![image](https://github.com/user-attachments/assets/207c267b-bf01-4ba5-b829-034ad26d48ef)
Glacier

![image](https://github.com/user-attachments/assets/2432840a-2ecc-4957-b82e-ed8406453fbc)
Hive

![image](https://github.com/user-attachments/assets/d03ec8a0-de82-4f0f-af90-3bb3e76c1ff7)
Lighthouse

![image](https://github.com/user-attachments/assets/3a6b8cc0-5692-4e12-a90f-8d0427469cd5)
Meta

![image](https://github.com/user-attachments/assets/c8092fd1-a2cb-4b07-966c-c13a673f16ac)
Pebble

![image](https://github.com/user-attachments/assets/084d76a1-b458-4693-a22e-3787a00f69fd)
Radstation

![image](https://github.com/user-attachments/assets/a98b48dc-70e3-429c-b2f5-99ba2a5f194a)
Saltern

![image](https://github.com/user-attachments/assets/b7e52f6f-8d55-476f-9991-de72c559fc16)
Shoukou

![image](https://github.com/user-attachments/assets/2495e13f-f07a-414d-993e-7e29e48c7f9c)
Submarine

![image](https://github.com/user-attachments/assets/08a92a84-513f-40d2-8ed3-313189805838)
Tortuga

![image](https://github.com/user-attachments/assets/0009b512-ff07-4d17-8825-71a182cb67dc)

</p>
</details>

---

# Changelog
🆑
- add: Added Psionics Registry Computer. Now you can record Psionics
users in Epistemics.
- add: Added epi-glasses and epi-HUD to see Psionics Users icons.
(Chaplain, Cataloguer, Mantis, and Mystagogue have access in loadout).
- add: Added PsiWatch. Now you can see the Psionics Records data on your
PDA!
- fix: Fixed Chaplain not having any programs in their PDA on spawn.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
Co-authored-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>

(cherry picked from commit fc7ecc44a748f8ef7a4cec613033f51acf238288)
2025-01-20 21:39:09 +03:00
sleepyyapril
a4ab8448b9 Mapping Mini-Wizmerge & New Central Command (#1610)
# 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]?
-->

Ports https://github.com/space-wizards/space-station-14/pull/32294
Ports https://github.com/ss14-harmony/ss14-harmony/pull/310 (and
everything needed for it to function)
Early-merges
https://github.com/space-wizards/space-station-14/pull/34302

Adds the ability for multiple central command maps that get randomly
selected.
Tested and works.

---

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

🆑 Several contributors
- add: Added a new central command map that is randomly picked alongside
the old one (thank you to Spanky from Harmony)
- add: Added Advanced SMES for mappers.
- add: Added the atmospheric network monitor for seeing what the
temperature, moles, and pressure is on every pipe everywhere through a
computer.
- add: Nukie med bundle now contains a compact defibrillator.
- add: Ported a better mapping editor.
- add: Added the throngler plushie.
- remove: Removed the Throngler as a possible loot spawn for gamble
crates.

---------

Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>

(cherry picked from commit 9272f65b64392f66a7cd4fd7c84bb152dc93b65a)
2025-01-20 21:34:45 +03:00
VMSolidus
962e9eba4e Fix Possible Loadout Related Crash (#1607)
# Description

Servers are occasionally experiencing roundstart crashes, and the logs I
received concerning this crash imply that LoadoutSystem is SOMEHOW being
handed a player character that doesn't actually exist. Well an easy
solution I guess is to just make LoadoutSystem check if the entity
*factually* exists, before attempting to apply a loadout to it.

# Changelog

🆑
- fix: Possibly fixed a crash related to Loadouts being applied to
entities that don't exist.

(cherry picked from commit 9e24c4ae3fcdd1646cfc49829dbf7073a13d364f)
2025-01-20 21:24:42 +03:00
VMSolidus
0acf7c5b4b Replace Tech Lockout With Softcap (#1605)
# Description

This PR fully replaces the "Tier 3 Tech Lockout" with a research
softcap. How it works is that technologies are allowed to set a softcap
contribution, meaning that they multiplicatively increase the cost of
all other research by a certain amount. By default, this is done by all
Tier 3 Technologies. Essentially, this means that you're no longer
limited to a single research category's tier 3 selections. Instead the
costs of research increase the more capstones you unlock. The current
cost increase for research is displayed on the console.

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

![image](https://github.com/user-attachments/assets/e65fa1ee-c849-489c-b690-f7ce8d98b678)

</p>
</details>

# Changelog

🆑
- remove: Removed the "Tier 3 Tech Lockout" mechanic. You are no longer
limited to 1 discipline worth of t3 research.
- add: Research is now "Softcapped" by Tier 3 unlocks. Each unlocked
Tier 3 technology multiplicatively increases the cost of all other
research. Rushing a capstone can be quite expensive, as will be getting
multiple capstones. I hope you're glad that you can build more than one
prober now without guaranteeing the station will explode.

(cherry picked from commit b7da1f4ff64ca3ce8c4dc4545186573174b3e89c)
2025-01-20 21:24:31 +03:00