Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream Merge #15

Merged
merged 173 commits into from
Dec 29, 2024
Merged

Upstream Merge #15

merged 173 commits into from
Dec 29, 2024

Conversation

Aidenkrz
Copy link
Contributor

No description provided.

sleepyyapril and others added 30 commits November 17, 2024 14:47
<!--
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]?
-->

An attempt to do all engine updates in one go. Not focusing on content
associated, only what's needed for it to run and any bug fixes.

---

# TODO

- [x] Fix bug where unbuckling resets you to lying down.
- [x] Fix bug where you can no longer get up after lying down.
- [x] See what else I broke.
---

---------

Signed-off-by: sleepyyapril <[email protected]>
Co-authored-by: metalgearsloth <[email protected]>
Co-authored-by: Leon Friedrich <[email protected]>
Co-authored-by: Tayrtahn <[email protected]>
Co-authored-by: VMSolidus <[email protected]>
Co-authored-by: Nemanja <[email protected]>
Co-authored-by: ShadowCommander <[email protected]>
Co-authored-by: Plykiya <[email protected]>
Co-authored-by: plykiya <[email protected]>
Co-authored-by: Pieter-Jan Briers <[email protected]>
Co-authored-by: metalgearsloth <[email protected]>
Co-authored-by: Chief-Engineer <[email protected]>
Co-authored-by: deltanedas <[email protected]>
# Description

I hate that I have to check if the map even exists at all. How the hell
is there a station even existing in the first place if the default
loaded map is NULLSPACE?! GetSpawnableStations should have returned a
list containing zero stations if that was the case, which would then
exit out.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.
I hate these stupid tests.

# Changelog

No CL because this isn't player facing.
<!--
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]?
-->

Goal of this PR is to fix the stamina system, as was caused by #1220.

---

# Changelog

<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->

:cl:
- fix: Fixed stamina system

Co-authored-by: sleepyyapril <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>
# Description

Add real world Day/Night cycle changing, with Ambient color
interpolation and some configurable features for mappers.
High inspired by
[Nuclear-14](https://github.com/Vault-Overseers/nuclear-14.git) and
[Crystall Punk 14](https://github.com/crystallpunk-14/)

TimeCycle use 24h day calculation, instead coefficient, like in N14. 

---

# TODO

[ ] - Add more examples/prepared map palettes for Day/Night ambient.
[ ] - (Optional) Move all palette description into List of variables,
instead calling `IPrototypeManager` every minute passing.

---


https://github.com/user-attachments/assets/cc5d1b8c-bd25-4042-8cee-e2edfa0d9acc


![image](https://github.com/user-attachments/assets/abcdc11d-fdb1-4b48-8599-0116a5797f8b)

---

# Changelog

:cl:
- add: Added Day/Night time cycle for admins and mapers.
# Description

First in a series of PRs to introduce bugfixes and updates to Shitmed,
this will generally feature PRs from Goobstation or Backmen as well
since they are actively helping me maintain the code.

Usual Shoutouts:
Deltanedas: Goob-Station/Goob-Station#882

---

# Changelog

:cl: Mocho, Deltanedas
- add: You can now perform surgery as a monke. Rejoice.
- add: You can perform surgery on a lot of animals now, I missed a lot
of them so just ask if you want any particular critter to get it.
- tweak: Entities now perish after 60 seconds of losing their heart
and/or brain.
- fix: Entities properly take asphyxiation damage after losing their
brain.
- fix: Torsos being gibbable, which would break surgery or just about
anything.
- fix: Items not being removed from their respective slots if the parts
were gibbed rather than dropped.
- fix: Animal organs not being usable properly in surgeries
- fix: Cyborg limbs are now usable as pseudo-peg arm/legs.

---------

Signed-off-by: gluesniffler <[email protected]>
Co-authored-by: FoxxoTrystan <[email protected]>
Co-authored-by: goet <[email protected]>
Co-authored-by: Saphire Lattice <[email protected]>
# Description
Quick fix to prevent the Self-Aware trait from crashing the client of a
player when examining their character's health.


[`HealthExaminableSystem.CreateMarkupSelfAware`](https://github.com/Simple-Station/Einstein-Engines/blob/6945e3027bc14eac1de0099d30f8f35b19a3034e/Content.Shared/HealthExaminable/HealthExaminableSystem.cs#L119)
attempts to access the `AnalyzableTypes` and `DetectableGroups` data
fields from
[`SelfAwareComponent`](https://github.com/Simple-Station/Einstein-Engines/blob/6945e3027bc14eac1de0099d30f8f35b19a3034e/Content.Shared/Traits/Assorted/Components/SelfAwareComponent.cs),
but since they are only initialized in the server and `null` in the
client, the client crashes. I believe this could be related to the
recent trait overhauls, but not sure. I just fixed it by adding
`AutoNetworkedField` to those fields to automatically propagate the
initialized values. Other traits might have a similar bug to this.

## Changelog

:cl: Skubman
- fix: Examining yourself with the Self-Aware trait will no longer crash
your game client.
# Description

Adds popups for surgery steps in Shitmed that every player within PVS
range can see. This allows other players to see if the correct procedure
is being performed. This PR also includes locale text for the new
procedures and steps in #1240.

## Media

**Remove Brain / Insert Brain**


https://github.com/user-attachments/assets/ac20afa1-df74-48ab-b1d5-2e9a273dfba2

<details><summary>See more</summary>

**Amputate Right Arm**


https://github.com/user-attachments/assets/17f78683-6d3b-44ee-aea3-bb6987844fdc

**Attach Right Arm**


https://github.com/user-attachments/assets/584d4da2-d8b0-4c82-a323-26636e7fa4b8

</details>

## Changelog

:cl: Skubman
- add: Surgery step descriptions (like making an incision,
removing/attaching limbs and organs) are now shown as popups to everyone
in range upon the start of the step. This makes it clear which surgical
procedure is being done and to which body part. No more stealthy
brain-stealing in front of everyone!
<!--
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]?
-->

Fixes the silly heisentest.

---------

Co-authored-by: sleepyyapril <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>
# Description
QoL updates to improve the stamina management experience with power
attacks:
- The stamina cost of an object's power attack can be revealed by
examining its damage values.
- Power attacks can't be done if your stamina is too low, so you can't
accidentally stamcrit yourself with power attacks anymore.
- **Nerf:** Power attacks now cost stamina even without hitting
anything.
- Prevent power attacks from showing a blue visual effect on the
character who attacked due to stamina damage.

## Media

**Gameplay**


https://github.com/user-attachments/assets/f5031ce3-8303-475a-9c37-d8004ed55dbc

**Damage Examine**

<img
src="https://github.com/user-attachments/assets/82821d5a-176b-4edf-93c4-f08f9c104c7a"
width=300px>
<img
src="https://github.com/user-attachments/assets/6347db9f-11e3-45fd-8317-f132a125082a"
width=300px>

## Changelog

:cl: Skubman
- add: The stamina cost of an object's power attack can now be revealed
by examining its damage values.
- tweak: Power attacks can't be done if your stamina is too low, so you
can't accidentally stamcrit yourself with power attacks anymore.
- tweak: Power attacks now cost stamina even without hitting anything.
- tweak: Prevent power attacks from showing a blue visual effect on the
character who attacked due to stamina damage.
# Description

Small oversight that Glimmer Wisps are generally described as drinking
their victim's soul and obliterating their entire personhood. Which is
fundamentally just mindbreaking said person. So this PR makes it so that
Glimmer Wisps killing a psion also inflicts the Mindbroken condition on
them.

# Changelog

:cl:
- add: Glimmer Wisps now completely obliterate their victim's
Personhood, inflicting the Mindbroken condition on them.
# Description

This was entirely too long overdue. I am reorganizing the entirety of
all ingame loadouts, so that it is possible to see what jobs are
actually missing loadout items. Every job in the game will have its own
loadout tab, each of them all sharing the same organization hierarchy
with *plainly visible blank spaces* that people can use to see what jobs
are in need of having things added to them.

Command category only contains Captain, Head of Personel, with space for
Centcomm roles and Blueshield if we ever add those. Instead all of the
"Department Specific Commands" are sorted with their respective
departments. Which makes it really obvious if for instance there's an
entire 2nd list of Head of Security drip...

# TODO

- [X] All of the Categories
- [x] Localize the categories
- [x] Make item groups for everything

## Organize Command

- [x] Captain
- [x] Head Of Personnel

## Organize Engineering

- [x] atmos tech
- [x] CE
- [x] senior engineer
- [x] station engineer
- [x] tech assistant

## Organize Epistemics
- [x] acolyte
- [x] cataloger
- [x] chaplain
- [x] golemancer
- [x] mystagogue
- [x] mystic
- [x] noviciate
- [x] psionic mantis

## Organize Logistics

- [x] cargo tech
- [x] courier
- [x] LO
- [x] salvage

## Organize Medical

- [x] chemist
- [x] CMO
- [x] doctor
- [x] medical intern
- [x] paramed
- [x] senior physician

## Organize Security

- [x] cadet
- [x] corpsman
- [x] detective
- [x] HOS
- [x] secoff
- [x] senior officer
- [x] warden

## Organize Service

- [x] bartender
- [x] botanist
- [x] chef
- [x] clown
- [x] janitor
- [x] lawyer
- [x] mime
- [x] musician
- [x] reporter

## GUH

- [x] Add literally everything we are missing
- [x] Do literally all of the Job specific Item Groups

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

![Example Media Embed](https://example.com/thisimageisntreal.png)

</p>
</details>

# Changelog

:cl:
- fix: Reorganized Loadouts so that all Jobs now have their own job
specific tabs. The code for them has been thoroughly reorganized too,
such that figuring out which jobs are missing crap is way easier to do.
- add: Captain's Personal Weapon loadout category. Currently only
contains a choice between the antique laser pistol, or a pulse pistol.
Whichever choice is made will be used as a target for a traitor
objective.

---------

Signed-off-by: VMSolidus <[email protected]>
# Description

This fixes some stupid math. Power attacks are now correctly slower than
left clicks. Previously they were faster.

# Changelog

:cl:
- fix: Power Attacks now correctly apply a penalty on swing speed, and
are no longer faster than left clicking.
# Description
Converted the descriptions of most wizden traits to a more formal and
roleplay-oriented style, also clarifying some aspects of other traits in
the process.

---

TODO:
- [ ] Test this

---

# Changelog
:cl:
- tweak: Tweaked the descriptions of most Wizden traits to be more vivid
and descriptive.

---------

Signed-off-by: Mnemotechnican <[email protected]>
# Description

This PR effectively "Reworks" several of the Bionic Traits through use
of new modular TraitFunctions. These being,

**TraitPushDescription**: Ensures that an entity has the new
ExtendDescriptionComponent, then writes to said component.
ExtendDescriptionComponent serves as a new highly modular "One stop
shop" for any system wanting to add text to the shift-click examine
window. It even accepts arguments for text color, font size, and whether
or not a person must be standing within touching distance to "See" the
provided texts. It accepts arbitrarily any number of descriptions.


**TraitAddArmor**: This takes advantage of a new functionality for the
DamageableSystem, whereby entities are able to have more than one
DamageModifierSet. This allows arbitrarily any number of traits to add
as many modifier sets as desired, without fear of any compatibility
issues. These can be both negative and positive, and as Skubman has
pointed out, this can also be used to create negative traits that make a
character more vulnerable to a given damage type!

Additionally, most of the Bionics Traits have been reworked. CyberEyes
has been split into two modules, one for the base implant, and one for
the Flash Protection. Dermal Armor has been reworked using
TraitAddArmor, so that it no longer replaces your original modifier set,
and instead stacks multiplicatively with whatever your original species
modifier set was. Thus, it can now be taken by any species.

# TODO

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

TraitPushDescription

![image](https://github.com/user-attachments/assets/4661671a-6f20-4cb1-9fad-41c36f7ad79e)

TraitAddArmor

![image](https://github.com/user-attachments/assets/bbc823e1-73bf-471d-b5f6-ef8cdf35c746)

</p>
</details>

# Changelog

:cl:
- add: Five new functions for the Trait System, AddArmor,
PushDescription, ModifyMobThresholds, AddSolutionContainer, and
ModifyStamina.
- tweak: CyberEyes Basic System has been split, now Flash Protection is
a separate module.
- add: Dermal Armor no longer replaces your original species damage
resistances. It now stacks multiplicatively with your original
resistances.
- tweak: Dermal Armor can now be taken by any species, not just Humans.
- add: Dermal Armor, and Bionic Arms can now be revealed by a close
examination. Shift click on someone within touching distance will reveal
if they have these "Obvious" cyberware.

---------

Signed-off-by: VMSolidus <[email protected]>
Co-authored-by: Remuchi <[email protected]>
# Description
Makes it so that using one anomaly scanner on another transfers the
anomaly data onto the used scanner.

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


![image](https://github.com/user-attachments/assets/b212e6e8-58a3-4a64-a216-3ba496a81d4a)

</p>
</details>

# Changelog
:cl:
- add: You can now touch one anomaly scanner with another to copy the
anomaly scan data from it.
<!--
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]?
-->

Mass bug fixing, for bugs related to #1220.
Feel free to link or send bugs.

Fix list:
- #1242 
- #1243 
- #1244
- space-wizards/space-station-14#28084
- space-wizards/space-station-14#28282
- Actually fixed PirateRadioSpawnRule heisentest (with a bandaid) (I
cancel if it's 0)
- Simple-Station/Einstein-Engines#1263

---

# Changelog

<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->

:cl:
- fix: Fixed chair visuals drawing depth wrongly if you sat in a
north-facing chair.
- fix: Fixed buckling doing several buckles each time you did one.
- fix: Fixed the magic mirror.
- fix: Fixed beds re-positioning you every few seconds.
- fix: Fixed E not opening containers that are in another container.
- fix: Fixed disposal systems not flushing or ejecting properly.

---------

Co-authored-by: sleepyyapril <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>
Co-authored-by: Nemanja <[email protected]>
VMSolidus and others added 20 commits December 21, 2024 13:02
# Description

This PR cuts down significantly on Loadouts bloat by removing all
specific color versions of colorable items from the loadouts. I left the
original items untouched for compatibility reasons since certain things
in the game still need to be able to spawn a "Blue jumpsuit" etc.

Additionally, to help aid in clarity for players, I've added
localizations for all the generic colorable items so that they have
(colorable) in the loadout names, so that players can tell which items
have the option without needing to click into the customize button on
every item.

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


![image](https://github.com/user-attachments/assets/7ab30002-c7d4-4eeb-b018-45a9fda80ae6)

</p>
</details>

# Changelog

:cl:
- add: Added labels to all generic colorable items in loadouts, so that
players can see which items have custom colors as customization options.
- remove: Removed all 'specific color' variants of colorable items from
Loadouts, such as "Blue Jumpsuit" when a colorable jumpsuit exists.
# Description

This PR adds even more colorable items to loadouts, this time making
entirely new whitescale versions of existing items that did not have one
previously. This replaces several more options for items that had a
whole bunch of specific color entries with a single item that can take
any color.

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


![image](https://github.com/user-attachments/assets/31438bf7-6ca3-45d2-bf10-af5db5f6e4c4)

</p>
</details>

# Changelog

:cl:
- add: Added colorable variants of fingerless gloves, headbands, berets,
hairflowers, cloth masks, and the neck gaiter.
# Description

Light mode logo
# Description

This PR implements a reflection based system for applying functions
directly to entities spawned by loadouts. In order to provide an
"Example" use of this system, I have created a "LoadoutMakeFollower"
function, which can be applied to a loadout entity that happens to be an
NPC with the Follower blackboard, making it follow the player who
purchased that loadout.

Basically. Pet mouse. The pet mouse will follow its owner. 

Yes I actually have tested this ingame, and it works great. The longest
part about coding this was me spending almost 30 minutes straight
wondering why the mouse wasn't following my character, until I
remembered that I had to make a special "Pet" mouse variant that had the
right HTN root task.

This could be extended to other things. I happen to know that Nuclear14
wanted something like this for a Pet Dog.

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


![image](https://github.com/user-attachments/assets/a18b026b-07a3-4ad7-8cce-4ea4dc4c3036)

</p>
</details>

# Changelog

:cl:
- add: Loadouts can now apply modular functions to items upon spawning
in.
- add: A new LoadoutMakeFollower function, which lets you buy NPC
followers in loadouts.
- add: added Pet Mice, Cockroach, Mothroach, and Hamster to Loadouts.
All of which use the new LoadoutMakeFollower function.

Co-authored-by: sleepyyapril <[email protected]>
<!--
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]?
-->

Added two new plushies to the game! A harpy plushie and a plushie for
the beloved station pet Morty!


![image](https://github.com/user-attachments/assets/3e202da2-3571-4c67-82c9-54a6aaf3c91f)

![mortplush](https://github.com/user-attachments/assets/9f131eb9-ed89-4818-b54c-e9da949e8ce2)

![harpyplushie](https://github.com/user-attachments/assets/47aa5b91-0747-4a2c-8c5c-18c5429ab570)



---

# Changelog

<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->

:cl:
- add: two new cuddly friends to the station! (harpy and morty plush)

---------

Signed-off-by: sleepyyapril <[email protected]>
Co-authored-by: juniwoofs <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>
Co-authored-by: sleepyyapril <[email protected]>
# Description

It turns out that there was no system in place for serverside fact
checking of whether or not people have a legal traits list. Last night a
bug was reported whereby a player used Cheat Engine to give himself
every trait in the game, bypassing the points system entirely. It's not
actually possible to reduce a trait selection down to a legal list
without creating interesting race conditions, which limits my options on
how to deal with it.

So I made it a vote on the Einstein Engines discord, and the vote was
unanimous. PUNISH THE CHEATERS.

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

https://www.youtube.com/watch?v=X2QMN0a_TrA

</p>
</details>

# Changelog


:cl:
- add: Implemented Anti-cheat for Traits. Attempting to join a round
with an illegal traits list will result in hilarious consequences.
# Description

Prisoner is consistently the most problematic role in this entire game,
being seen as "The Self Antagging Role", which produces endless amounts
of administrative burden. This is especially a problem with lowpop
servers, or servers that are understaffed with admins. Players just join
as Prisoner, *immediately* break out of the permabrig, and then go on a
self antagging spree. The solution to this was staring us in the face
the whole time. Just give them the same Pacified component that the
Thief antag has. Now it's impossible for them to smash the permabrig
windows, someone has to intentionally let them out, and even if they do,
they will be hard pressed to selfantag when they can't turn on harm
intent.

# Changelog

:cl:
- add: Prisoners now spawn with a Pacifier Implant.
<!--
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]?
-->

Title.
Ported from Fansana/floofstation1#393
Resolves #1277

---

# Changelog

<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->

:cl:
- fix: Fixed jittering displacing your character when shaken.
# Description

This PR adds a simple server configuration option for enabling basic
"Soft-Crit", and not much else because oh my god this system is horribly
complicated. When enabled, characters can crawl around very slowly while
in crit, and really not much else. This more or less mirrors how crit
affects character movement in SS13, where you can at least crawl to
relative safety while bleeding to death.

# Changelog

:cl:
- add: Added server config options for basic "Soft-Crit". When enabled,
characters who are critically injured can still slowly crawl, but are
otherwise still helpless and dying.
# Description

This update comes courtesy of the SiN Mapping Team.

- Added job roles Courier, Robotics
- Did small edits to every department.
- Made escape pod area better.
- New arrivals dock area. (Including Sec checkpoint)
- Fixed multiple bugs
- Reworked a lot of medical
- Moved Cryogenics.
- New station beacons.
- Removed ID computers from all command rooms except HOP
- All maints space windows buffed.

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


![image](https://github.com/user-attachments/assets/038eec91-6900-4f33-8e0b-ee4167a8b770)


![image](https://github.com/user-attachments/assets/9670b1ad-4917-4ee5-b99a-a1f819c80f14)

</p>
</details>

# Changelog

:cl: SiN Mapping Team
- add: Another big update for Saltern

Co-authored-by: sleepyyapril <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.