Commit Graph

4278 Commits

Author SHA1 Message Date
Leon Friedrich
b5cf297e3d Add reckless replay load button (#26212)
* Add reckless replay load button

* A

* More descriptive button

(cherry picked from commit 646f7e07a83816875157c1a445af445d2b72dfae)
2025-07-19 15:07:59 +10:00
DrSmugleaf
0769ef3930 Attempt to fix random test fail by undeleted AlertControl._spriteViewEntity (#29424)
(cherry picked from commit a4d93362c3dec0301f63fb71933a1a65f65ae114)
2025-07-19 15:07:59 +10:00
Partmedia
cd285acffc Widen power monitoring widget (#29062)
(cherry picked from commit e633fe801bb4755aa6015612b432571b687ce6ca)
2025-07-19 15:07:58 +10:00
Flesh
f88d485635 Tune spacing speed to fix under-pressure lockout (#28370)
(cherry picked from commit 4b9fa926c08ab5549a1263e0b65cbee31d632824)
2025-07-19 15:07:58 +10:00
eoineoineoin
683ca1e27f Improve Criminal Records Computer usability (#30292)
* Avoid destroying and recreating record list on every update message

* Add early-out on nullptr input

* Remove sussy null suppress

---------

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
(cherry picked from commit d0a2187a9bf11de9c1d7bcde62f403e0cb845c07)
2025-07-19 15:07:57 +10:00
lzk
437a999687 Remove random cyrillic letters (#31600)
(cherry picked from commit 6398f5bd49b34dfc569ffa17d6c573d6322316af)
2025-07-19 15:07:57 +10:00
Nemanja
1408d6c712 Replace IClickAlert with events (#30728)
* Replace IAlertClick with events

* whoop

* eek!
2025-07-19 11:12:44 +10:00
Tayrtahn
ec0752c39b Fixed buckled players thrashing while speaking in beds (#29653)
* Fix characters thrashing when talking while lying down

* Remove weird design choice
2025-07-19 10:58:17 +10:00
Tayrtahn
81aad95215 Add "fill levels" to spear in-hand/wielded/equipped sprites (#28865)
* Add fill level sprite support for equipped items

* Add fill sprites for held/equipped spears

(cherry picked from commit ed4ae1628c1fbea528dd4a320efc6fd402a7ccfd)
2025-07-17 14:30:28 +10:00
Tayrtahn
0025b83b39 Add support for HeldPrefix to SolutionContainerVisualsSystem (#28532)
(cherry picked from commit 0d864d324cd0ca06e06484b38eadd8ea5c06ef5b)
2025-07-17 14:27:41 +10:00
metalgearsloth
640d8b4c11 Add sprite exporting (#29874)
* Redo of code

* Dump IDs on lobby exports
2025-07-17 11:32:57 +10:00
ShadowCommander
b80c7a5d53 Fix profile editor save buttons disappearing at small resolutions (#28001)
(cherry picked from commit 63c551b20d28e7572833d7e3b5b6e706947167ae)
2025-07-16 17:32:17 +10:00
Winkarst-cpu
82ebe4a360 Character menu asks if you want to save your character on exit (#29875)
* Character menu asks if you want to save your character on exit

* Fix

* Another fix, little mistake by me

* Update Content.Client/Lobby/UI/CharacterSetupGuiSavePanel.xaml.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

(cherry picked from commit adcbe8d0be2ccdc76dd5e17af0206c623786874b)
2025-07-16 17:22:59 +10:00
Kirus59
d3b8705517 Hunger and thirst huds fix (#32832)
* Hunger and thirst huds fix

* delete poor caching

(cherry picked from commit cb59826dcb5e1182a2fa8aaa511bc27ffcf6b98b)
2025-07-16 17:22:52 +10:00
Nemanja
bb3abfb654 Recycler Overhaul (#30802)
* Recycler overhaul

* remove

(cherry picked from commit 476c7751c4989645fb735c9533bb67bbf85c0091)
2025-07-16 17:08:18 +10:00
metalgearsloth
19b0ccd1d8 Fix verb categories shuffling (#28368)
If it's an extra category we leave it in its default spot.

(cherry picked from commit d90cbee7f21e115b3b364bcb86c0085208c5b0d9)
2025-07-16 14:56:35 +10:00
AJCM-git
d413696695 Fix some job's drobes point light (#29590)
* Fix some job's drobes point light

* Fix some job's drobes point light

(cherry picked from commit fef679846cc53409c5132f9151925b513d6a1a1f)
2025-07-15 16:35:59 +10:00
deltanedas
6d4acd0724 unhardcode thief MaxSelectedSets (#29175)
* unhardcode thief MaxSelectedSets

* we do a little copy paste :trollface:

* :trollface:

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
(cherry picked from commit 0910983c4b538caf1445b56ca74bb4082de484f3)
2025-07-15 16:35:50 +10:00
Ed
02e19b7749 randomize iconSmoothing (#28158)
* randomize iconSmoothing

* Revert "randomize iconSmoothing"

This reverts commit 094356f975737c0af24ce39d849aec7852b9af6e.

* try 2

* trying work with client-server communication

* still dont work

* Tayrtahn good suggestion

* remove outdated code

* Fix!

* move data to Appearance

* Update RandomIconSmoothComponent.cs

(cherry picked from commit d6e0114126f778c298763d05fa59ee62c28f595a)
2025-07-15 11:59:44 +10:00
Ilya246
01e7f1f2ca remove backpack and clothing from HumanoidCharacterProfile 2025-07-14 18:52:06 +10:00
Spatison
ed336144ab content change for JobRequirementOverride 2025-07-14 17:22:07 +10:00
Plykiya
3142238eb9 Syndicate Reinforcement Specializations: Medic, Spy, Thief (#29853)
* Syndicate thief, spy, medic

* Fixes description for nukies

* update description for uplink

* Implement the radial menu

* forgot these were necessary to push lol

---------

Co-authored-by: plykiya <plykiya@protonmail.com>

(cherry picked from commit aded74a88afd5f6ef0b0aef3eb9e60b630179e12)
2025-07-14 17:22:07 +10:00
Ed
635fc53b00 Character menu issuer localization (#29840)
* Update CharacterUIController.cs

* TODO Burn this shit

* huh?

* huh!

---------

Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com>

(cherry picked from commit d8ab4982ade982b44f845e6532c291e39eec1203)
2025-07-14 16:33:42 +10:00
ShadowCommander
ec15147797 Dragdrop fold rollerbed (#30002)
* Deploy foldable

* Add NetworkedComponent and access to the component

* Add handled to afterinteract

* Use drop target location instead of setcoordinates

* Put back in hand after failed deploy

This prevents dropping the bed when clicking while inside a locker.

* Created BaseDeployFoldable for folding chairs, body bags, and rollerbeds

* Add dragdrop to fold rollerbed to hand

(cherry picked from commit 6a5cc883cebd20f87144e3f8f37086d7efb042de)
2025-07-14 14:24:38 +10:00
Plykiya
aaeda1b538 Replace xform.WorldPosition with xformSystem method for Setting/Getting (#30029)
* GET WORLD POSITON, ROTATION

* Missing parentheses

* ui system depndency

* the issue

* Unused

* Let the function do the transform

---------

Co-authored-by: plykiya <plykiya@protonmail.com>

(cherry picked from commit a87efd7d0157a0c4074e639b1da923f5c335f663)
2025-07-14 14:23:40 +10:00
Errant
6fda92d3f2 Fix replayghost spawning location (#30252)
Fix replayghost spawn

(cherry picked from commit bf1450fdc85f978c0d1b313fab551d85a98087a5)
2025-07-14 14:14:00 +10:00
Cojoke
8c6a64e5ac Remove all Assigned Values that are Never Used (#30110)
Remove all Assigned Values that are never used

(cherry picked from commit b57174007c8d455d10cfa6a2e8563993e935838e)
2025-07-14 14:13:59 +10:00
ShadowCommander
f1808c9179 Make firelock warning light not require power and add a PointLight (#29024)
* Add a PointLight to firelocks when warnings are active

* Remove power requirement for lights

(cherry picked from commit 789453adf0cf1b3310f75ef3ac5b1240a09be9b8)
2025-07-14 14:04:36 +10:00
Plykiya
fe8bfc0d16 Replace obsolete xform.ToMap() with xformSystem.ToMapCoordinates() (#30010)
* Get rid of a bunch of obsolete usages

* position

---------

Co-authored-by: plykiya <plykiya@protonmail.com>

(cherry picked from commit a03b88979e25a9778a30f30612790f6966369fca)
2025-07-14 14:04:30 +10:00
DrSmugleaf
941e2da878 Fix the client not passing the weapon to can attack checks (#28040)
(cherry picked from commit c94751f2d2c0d3951d1252d2c3955b01cedb543e)
2025-07-14 14:04:28 +10:00
Leon Friedrich
6849be2d9c Add Job preference tests (#28625) 2025-07-14 12:27:43 +10:00
metalgearsloth
2ec7d40f94 Set input coords to invalid if mouse off-screen (#30164)
This may be a breaking change for some stuff, I only tested basic combat stuff + throwing.

This fixes the coordinates setting an off-screen position to the top-left pixel and blocks throw attempts as a result.

(cherry picked from commit aca878c9f753538d64372f380df536098701f747)
2025-07-14 12:09:41 +10:00
SlamBamActionman
e9d715389a Change from using obsolete method in ExplosionOverlay (#30550)
* Change from obsolete method in ExplosionOverlay

* Send AppearanceSystem through constructor

(cherry picked from commit 7da2fb1218fb745506919a39d553ca63265cb4ca)
2025-07-14 12:09:41 +10:00
Ed
6a634fc84e Displacement maps big update (#30093) 2025-07-12 15:30:27 +10:00
slarticodefast
a8716ba679 Flash overlay rework and bugfixes (#27369) 2025-07-12 14:26:42 +10:00
nikthechampiongr
9faa666b33 Firelock improvements part 1 (#26582) 2025-07-12 13:39:16 +10:00
Will-Oliver-Br
c00f942bb1 Port SmartFridge Functionality (#2479)
# Description

Port smartfridge functionality from
[Delta-V](https://github.com/DeltaV-Station/Delta-v) and commits from
[Frontier](https://github.com/new-frontiers-14/frontier-station-14)
Pr and commits:
https://github.com/DeltaV-Station/Delta-v/pull/3207

70a9032085

2d4abf62b7

---

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


https://github.com/user-attachments/assets/a67f78ca-327c-4e08-8e34-8be6a1a59eac

</p>
</details>

---

# Changelog

🆑 sowelipililimute, Whatstone and Will-Oliver-Br
- tweak: SmartFridge now really has functionality

---------

Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
Co-authored-by: Whatstone <whatston3@gmail.com>
2025-07-12 12:42:31 +10:00
Kyoth25f
ed2301f840 Port Blob (#2441)
Ports Blob from https://github.com/Goob-Station/Goob-Station/pull/975
that was ported from https://github.com/Rxup/space-station-14.

Credit to VigersRay for original code, Roudenn and Rxup for maintaining
and jorgun for the Goob port.

---

- [X] Port https://github.com/Goob-Station/Goob-Station/pull/975;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/1209;
- [X] Port Blob related code from
https://github.com/Goob-Station/Goob-Station/pull/1262;
- [X] Port Blob related code from
https://github.com/Goob-Station/Goob-Station/pull/1340;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/1408;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/1419;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/1440;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/1817;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/2077;
- [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/1916~;
- [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/1917~;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/2077;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/2092;
- [X] Port https://github.com/Goob-Station/Goob-Station/pull/2546;
- [X] Port https://github.com/Rxup/space-station-14/pull/963;
- [X] Port https://github.com/Rxup/space-station-14/pull/998;
- [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/2563~.

- [X] Enable Blob and Blob gamemode;
- [X] Add `StationGlobConfig` to all stations;
- [X] Use `AnnouncerSystem` in `BlobRuleSystem.cs`;
- [X] Blob language and Hivemind (from
https://github.com/Rxup/space-station-14/pull/176);
- [x] Change CVars location;
- [X] Add media.

---

<details><summary><h1>Media</h1></summary>
<p>
https://youtu.be/-WtMQwRcmrU?si=su3An6RtiCTZg-DV
</p>
</details>

---

🆑 VigersRay, Roudenn, Rxup, vladospupuos, fishbait and Kyoth25f
- add: Added a new antagonist: Blob

---------

Co-authored-by: fishbait <gnesse@gmail.com>
Co-authored-by: Fishbait <Fishbait@git.ml>
Co-authored-by: Aiden <aiden@djkraz.com>
Co-authored-by: beck-thompson <107373427+beck-thompson@users.noreply.github.com>
Co-authored-by: lanse12 <cloudability.ez@gmail.com>
Co-authored-by: BombasterDS <deniskaporoshok@gmail.com>
Co-authored-by: Aviu00 <93730715+Aviu00@users.noreply.github.com>
Co-authored-by: Piras314 <p1r4s@proton.me>
Co-authored-by: shibe <95730644+shibechef@users.noreply.github.com>
Co-authored-by: Ilya246 <57039557+Ilya246@users.noreply.github.com>
Co-authored-by: JohnOakman <sremy2012@hotmail.fr>
Co-authored-by: Fat Engineer Gaming <159075414+Fat-Engineer-Gaming@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Rouden <149893554+Roudenn@users.noreply.github.com>
2025-07-12 12:20:25 +10:00
Nemanja
9e99eba248 fix lathe screen animations (#30479)
(cherry picked from commit c4c4a934af7655a3c9c936210c9ea5a777ae167e)
2025-07-12 03:22:40 +10:00
Nemanja
d94d32c25d Machine-code cleanup (#28489) 2025-07-12 03:03:26 +10:00
WarMechanic
6a89b524d5 Event Scheduler System (#2355)
<!--
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
-->

# Excerpt

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

thou shall be thy axe that continues the work - to behead all
`EntityQueryEnumerator`s, and thus i require it. 'tis imperative i have
at thee and perform the duties. if the plague bearing shitcode is not
cut at thy roots, it shall only nest a deeper grave and spread locusts.

---

# Description

It has been a reoccuring theme that someone irresponsibly uses
`EntityQueryEnumerator` and then suddenly server performance is worse. A
lot of these cases involve using EQE to iterate a timer on a component,
to start or stop an effect after a delay. Rather than iterating `frames
* n` times per second FOR EVERY UNIQUE SYSTEM THAT DOES THIS (QUITE A
FEW), we instead iterate `frames` per second regardless of systems using
the Event Scheduler.

The Event Scheduler itself is a list of events that wait to be triggered
after a delay. Rather than iterating through all of them, they are
sorted in order of occurance using a PriorityQueue. I love priority
queues because they sort as you enqueue to them, and apparently the sort
complexity is logarithmic? But mostly because of the former.

I chose to write the scheduler the way I did because the choice to use
async seems too big for me alone. So this system is synchronous and
updates on game time.

This is mostly a practical optimisation. The code which I have written
is almost certainly not optimal, but the simple act of replacing EQE
delays will significantly improve server performance anyway. Rust
monsters feel free to rewrite the event scheduler to be more performant.

NOTE: For some reason PriorityQueue is banned on the client, and
configuring it requires editing a RobustToolbox file. So for now this
system is restricted to Content.Server until we start using our engine
fork.
---

# TODO

<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->

- [x] Working queue of events ordered by execution times
- [x] A function to enqueue any-event-defined-ever into the scheduler
with a delay
- [x] Delay the event, and then fire it
- [x] Implement retroactive schedule cancelling

In a future PR:
- Add ```System.Collection.Generic.PriorityQueue`2``` to whitelist in
`RobustToolbox/Robust.Server/ContentPack/Sandbox.yml`
- - Shared files had to be relocated to server because they were banned
on the client and would cause an exception.
- Investigate insert performance as more systems are added to use the
EventScheduler
- - MLGTASTICa rose the idea of 'buckets' as an optimisation.
- - I theorise multiple priority queues for different types of events
might also work.

---

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

Demonstration:
https://youtu.be/CGB6SDWGc-Q

Response to MLGTASTICa, stress testing:
https://youtu.be/30OA06Pzhtk

</p>
</details>

---

# Changelog

<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
- add: Added the EventScheduler system that lets you raise an event at a
certain time or after a delay without killing performance.
- fix: Optimised EMP by migrating from EQE to the new EventScheduler
system.
2025-07-12 03:02:21 +10:00
deltanedas
876e1cf402 add tape recorder (#2498)
* add tape recorder

* add filled tape recorder to trinkets

* :trollface:

* :trollface:

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
2025-07-12 03:01:19 +10:00
Cojoke
78931e1c44 Makes Eyepatches Flippable (#26277)
(cherry picked from commit 390f8d19d1505364389e1f595a54df2cfa43a96e)
2025-07-12 02:32:16 +10:00
Plykiya
26faaaffc3 Swap some InRangeUnobstructed for InRangeUnoccluded (#28706) 2025-07-12 02:27:58 +10:00
Leon Friedrich
d577ee485e Make chat & examine systems use FormattedMessage.EscapeText() (#28431)
(cherry picked from commit c4291920a628a13684769f54adc4b0df7b7b09ad)
2025-07-12 02:20:12 +10:00
Tayrtahn
99fea7089b Hotfix for crashes from bad item names (#28256)
(cherry picked from commit 98503fc793be26acde787a6ab765f38887d0ae78)
2025-07-12 02:20:12 +10:00
ilmenwe
bfe577b9c7 Unused Varibles and Localization Fixes (#2424)
Removed all unused variables i could find, built and tested on a simple
upstart and clicking trough most systems.
Change Loc references to localization.

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

"using Robust.Shared.Prototypes;"
to
""

"[dependency] private readonly ISpriteComponent"
to
""

</p>
</details>

---

No CL this isn't player facing.

---------

Co-authored-by: ilmenwe <no@mail.com>
2025-07-12 02:20:02 +10:00
VMSolidus
4ca5bf2131 Weapon Range Fixes (#2442)
My previous code for melee weapon range modifiers was missing, this PR
restores and adds actual functionality for weapon range modifiers in all
instances of weapon range, as well as adds specific range modifiers for
light attack and disarm attack.

🆑
- fix: Fixed melee weapons "Bonus range for heavy attacks" not
functioning correctly.
- add: Added support for melee weapons having bonus range on disarms or
light attacks.
2025-07-12 02:16:34 +10:00
beck-thompson
864ecb9c02 Replaced some AddMarkups with AddMarkupOrThrow (#30632)
* First commit

* Silly me

* bruh

(cherry picked from commit ee922e37f6539a5c3da94e76a1a0efef4c8e2b59)
2025-07-12 01:47:31 +10:00
SlamBamActionman
4959f88522 Better DNA forensics & ReagentData (#26699)
* Added the ability for blood to track DNA using ReagentData; Forensic Scanner now accounts for solution DNA, non-DNA holders have "Unknown DNA"

* Removes touch DNA for puddles, adds DNA to vomit

* DNA now leaves traces in containers and those marked without don't show DNA on scan (except for puddles), gibbed parts have DNA

* Fix stupid metamorphic glass bug grrr

* Removed SpillableComponent since DnaSubstanceTraceComponent is used instead

* Removes data field from maps, adds DNA tracking for some missed items

* Give default value, fix missing values.

* Fixes recipe bug

* Review changes

* Make the Data list into a nullable type

* Revert map changes

* Move gibbed unknown DNA to forensicssystem

(cherry picked from commit 07174d0aaf2832bc6ecc3a6baba21bc0aa5e0556)
2025-07-12 01:47:22 +10:00