100 Commits
Author SHA1 Message Date
Pieter-Jan Briers 894e290331 Update RT to 272.0.0 (#42694) 2026-06-29 12:43:43 +02:00
Pieter-Jan Briers 987df8c06d Content.Packaging can now emit binlogs for the build (#42659)
* Content.Packaging can now emit binlogs for the build

I was checking why packaging is so much slower and it *seems* to be entirely the actual build being twice as slow as before .NET 10. Strange.

Content.Packaging can now emit MSBuild binlogs that we can analyze to see why that's the case.

* Enable --log-build on Test Packaging workflow, produce artifact with binlogs

* Disable setup-dotnet in packaging workflow

I have a suspicion...
2026-06-29 12:43:43 +02:00
Pieter-Jan Briers ed28d77fb2 Remove duplicate loc getstring calls (#42648)
guh
2026-06-29 12:43:41 +02:00
Pieter-Jan Briers 2c2be56ff6 Update RT to 271.2.0 (#42646) 2026-06-29 12:43:40 +02:00
Pieter-Jan Briers de269d0176 Fix PostgreSQL migration for ban DB refactor (#42609)
This didn't come up in testing. The ban hit foreign key was added before the data was migrated, so it didn't work.

Fix that.
2026-06-29 12:43:39 +02:00
Pieter-Jan Briers 7419408ec5 Ban database refactor (#42495)
* Ban DB refactor seems to work at a basic level for PostgreSQL

* New ban creation API

Supports all the new functionality (multiple players/addresses/hwids/roles/rounds per ban).

* Make the migration irreversible

* Re-implement ban notifications

The server ID check is no longer done as admins may want to place bans spanning multiple rounds irrelevant of the source server.

* Fix some split query warnings

* Implement migration on SQLite

* More comments

* Remove required from ban reason

SS14.Admin changes would like this

* More missing AsSplitQuery() calls

* Fix missing ban type filter

* Fix old CreateServerBan API with permanent time

* Fix department and role ban commands with permanent time

* Re-add banhits navigation property

Dropped this on accident, SS14.Admin needs it.

* More ban API fixes.

* Don't fetch ban exemption info for role bans

Not relevant, reduces query performance

* Regenerate migrations

* Fix adminnotes command for players that never connected

Would blow up handling null player records. Not a new bug introduced by the refactor, but I ran into it.

* Great shame... I accidentally committed submodule update...

* Update GDPR scripts

* Fix sandbox violation

* Fix bans with duplicate info causing DB exceptions

Most notably happened with role bans, as multiple departments may include the same role.
2026-06-29 12:43:39 +02:00
Pieter-Jan Briers e19f4643f2 Update RT to 271.1.0 (#42551) 2026-06-29 12:43:36 +02:00
Pieter-Jan Briers f1b20f2e2d Update RT to 271.0.0 (#42533) 2026-06-29 12:43:35 +02:00
Pieter-Jan Briers 96640650a0 Fix warning spam from ShortKeyName (#42351) 2026-04-04 16:57:24 +02:00
Pieter-Jan Briers 964c972c5b Update RT to 270.1.0 (#42198) 2026-04-04 16:57:22 +02:00
Pieter-Jan Briers b95e8ff6c4 Fix NanoTask and bounty print formatting (#42030)
Markup text was erroneously being appended via AddText().
2026-04-04 16:57:20 +02:00
Pieter-Jan Briers 84df6eb9cc Update RT to v270.0.0 (#42029)
Fix audio loading issues
2026-04-04 16:57:20 +02:00
Pieter-Jan BriersandDrSmugleaf eb33b88067 v269.0.0 RT update - .NET 10 (#41855)
* Make ServerPackaging automatically get extra server assemblies

* Make the switch

* Use Content.Server.deps.json instead

* Remove debug

* Rewrite

Now recursively fetches dependencies from Content.Server

Only copies dependencies not covered by Robust

This removes the need to manually specify most of the dependencies, even the content ones!

Also look at runtime key properly to figure out the proper dll name.

This actually removes some assemblies that were duplicated between the main directory and assemblies (various Microsoft.Extensions stuff)

* Fix test compile errors when updating dependencies

Ran across this while updating dependencies on the RT .NET 10 update. Should be fine to merge immediately.

* More .NET 10 prep

* Convert to SLNX

Hell yeah

* slnx now has size-2 indents

* Update SLNX with new RT system

* Remove reference to RT test in toolshed test

* Remove accidental usage of transitive RT dependencies

* Move Robust project references to RobustApi

* Update solution file

* Fix warnings in pow3r

* Fix nullable warnings in integration tests

idk where these came from

* gitignore binlog files

* Fix transitive dependency warnings in Content.Benchmarks

* Update slnx

* Okay, the Robust API thing didn't pan out. New plan.

It apparently broke clean builds, as the dependencies aren't in the project asset list or something anymore. I tried to fix this, but it seems impossible to do without relying on .NET SDK internals, as there's no point in the NuGet graph walk process that seems cleanly extensible.

Instead let's just do the much dumber thing: a bunch of .props files for content to import. Hooray!

This also means that I have to go through and *explicitly* disable transitive dependencies everywhere in RT. This thankfully isn't too hard.

* Update RT to 269.0.0

* One last solution update

* Fix more data definition issues

* Update RT to 269.0.1

* Fix it again

---------

Co-authored-by: DrSmugleaf <drsmugleaf@gmail.com>
2026-04-04 16:57:19 +02:00
Pieter-Jan Briers ef3800cd0b Fix loadout entity names not being exported/imported (#41891)
Fix entity names not being saved in loadouts.

Just missing a [DataField]
2026-04-04 16:57:18 +02:00
Pieter-Jan Briers 1c4806740c Fix ColorExtensions math (#41717)
All of this was doing sRGB -> OkLAB conversions without linearizing the sRGB first, so it was broken. I could have sworn I pointed this out in review but I guess that got lost.

Also, add a gamut clipping step since we have out-of-gamut colors and I don't want random negative values causing weird nightmare bugs somewhere. Shouldn't change anything in regular rendering.
2026-04-04 16:56:52 +02:00
Pieter-Jan Briers dc3eeb917c Fix shuttle FTL with UI scale (#40933)
Fixed click inputs being broken

Fixed rendering of background parallax.
2026-04-04 16:54:52 +02:00
Pieter-Jan Briers 4dc0ff5c6a C# 14 fixes (#41708)
Necessary for the move to .NET 10 & C# 14. Actual PR to change SS14 to C# 14 will be separate.
2026-04-04 16:54:52 +02:00
Pieter-Jan BriersandPrincess Cheeseballs 9dd9f5cd92 Reduce explosion airtight cache memory usage (#40912)
* Reduce explosion airtight cache memory usage

This means you can happily add explosion prototypes again

New approach has the tolerance value data in a shared storage with reference counting.

* Oops fix index removal

* Remove debug code and fix merge conflicts

* Also address my other review

* Oh it's in two places lmao

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-04-04 16:54:51 +02:00
Pieter-Jan Briers a9283034ad Update GDPR dump script to latest migration (#41387) 2026-01-26 19:22:37 +01:00
Pieter-Jan Briers b738d805a9 Nanotrasen is a word (#41124) 2025-12-29 11:39:32 -06:00
Pieter-Jan Briers d81594171b Fix pre-round Discord ahelps showing incorrect round number (#41060)
Why was there a +1 ???
2025-12-29 11:39:30 -06:00
Pieter-Jan Briers c20763751a Don't show NaN/infinity if AME has no cores (#41026)
Fixes #41025
2025-12-29 11:39:29 -06:00
Pieter-Jan Briers be28184aa3 Prometheus exporter for github repo stats (#38607)
* Prometheus exporter for github repo stats

I want more grafana charts

Already deployed on moon, this is just so other codebases can use it if they want.

* Add docs and issue/PR priorities

* Sure add merge conflicts too
2025-12-29 11:39:25 -06:00
Pieter-Jan Briers 1690c86ede You can now stuff the nuke disk in plushies (#40674)
Because there's no reason you shouldn't be able to.

Fixes #40669
2025-12-29 11:39:15 -06:00
Pieter-Jan Briers 17f418da46 Make file dialog API usages read-only (#37779)
Requires https://github.com/space-wizards/RobustToolbox/commit/4e7de2f272cafc687c775fceb16b88681fcfd7e3

Fixes #37762
2025-12-29 11:39:14 -06:00
Pieter-Jan Briers 2718a9c390 Fix render target caching in overlays (#40181)
Many newer overlays use IRenderTextures that are sized to the rendered viewport. This was completely broken, because a single viewport can be rendered on multiple viewports in a single frame.

The end result of this was that in the better case, constant render targets were allocated and freed, which is  extremely inefficient. In the worse case, many of these overlays completely failed to Dispose() their render targets, leading to *extremely* swift VRAM OOMs.

This fixes all the overlays to properly cache resources per viewport. This uses new engine functionality, so it requires engine master.

This is still a pretty lousy way to do GPU resource management but, well, anything better needs a render graph, so...
2025-12-29 11:39:10 -06:00
Pieter-Jan Briers 5ed496a4c5 Ignore non-content commands in AllCommandsHavePermissions (#39336)
Causing a test failure every time a Toolshed command gets added to engine is ridiculous.
2025-12-29 11:39:04 -06:00
Pieter-Jan Briersandslarticodefast b7f297f612 Fix usages of TryIndex() (#39124)
* Fix usages of TryIndex()

Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)

This then resulted in TryIndex() getting modified to log errors (https://github.com/space-wizards/RobustToolbox/commit/94f98073b07bd3fa3133ae6799b34d90f46f467e), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)

This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.

Fixes #39115

Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.

* fix tests

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:03 -06:00
Pieter-Jan Briers 7af1ea6f79 Fix admin logs going to admin chat (#40141)
Oops
2025-12-29 11:39:01 -06:00
Pieter-Jan Briers da2a287010 Package win-arm64 and osx-arm64 servers (#40113) 2025-12-29 11:39:00 -06:00
Pieter-Jan Briers ca250ab1f0 Skip MapImages folder in packaging (#38928) 2025-12-29 11:39:00 -06:00
Pieter-Jan Briers 23b9e50d84 Make dirt non-compressible (#39220)
This sets the new rsic: false flag in dirt.rsi. One of the interior PNGs is directly accessed by a tile definition, which would otherwise cause a game startup failure with the new packaging improvements: https://github.com/space-wizards/RobustToolbox/commit/c4dff678a9511190da2e6217992852d5e1df7985
2025-11-23 15:22:14 -06:00
Pieter-Jan Briersandslarticodefast a97f3dbb1f Fix horizontal space men in replays (#39338)
* Fix horizontal space men in replays

Visualizer should not bail if data unavailable.

* Update Content.Client/Rotation/RotationVisualizerSystem.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-11-23 15:22:14 -06:00
Pieter-Jan Briers aeea786127 Fix StoreTests EventBus usage (#38489)
Fix split off from #37349 to avoid needing to sync the content/engine PRs.
2025-11-23 15:22:14 -06:00
Pieter-Jan Briers 54f75362f4 New Discord integration fixes (#37793)
Fix admin chat relay.

Fix leaked task instance.

Fix warning about gateway intents on startup.

Fix packaging.
2025-08-05 16:24:38 +02:00
Pieter-Jan Briers ba7957d0d3 Optimize parallax VRAM usage (#37180)
* Disable parallax texture preloading

Many parallax layers are specific to a single map and will likely never be loaded for the duration of the game. Save VRAM by not loading them always.

Requires engine master

* Put generated parallax identifier in texture name

Makes it show up properly in debugging tools

* Don't load generated parallaxes multiple times

Many parallax prototypes re-use the same generated parallax configs. These generated parallaxes were being loaded multiple times at once, which was a massive waste of VRAM.

We now move these into a separate cache for deduplication. I had to write a lot of logic to handle loading cancellation and ref counting. Yay.

Also fixes some spaghetti with the previous parallax loading system: cancellation didn't work properly, give proper names to generated texture names, etc.

This saves like 100+ MB of VRAM.
2025-08-04 19:20:00 +02:00
Pieter-Jan Briers 22f7f127e2 Remove update from DeviceLinkSystem (#37152)
The tick updates were purely used to decrease the invoke counter once per tick. Now instead we just calculate the effective counter value with some trivial math on the tick number. This completely removes the need for an update function.

The relative tick is not stored to map files. If we really need this, we can add a TickOffsetSerializer (similar to TimeOffsetSerializer), but I doubt it matters.
2025-05-18 16:48:51 +01:00
Pieter-Jan Briers 0ae81e79a7 Update GDPR erase script to latest DB schema (#37162) 2025-05-18 16:48:37 +01:00
Pieter-Jan Briers 1b8c63cd7a Un-copypaste wallmount substation prototype to give them a UI (#37047)
*sigh*
2025-05-18 15:49:53 +01:00
Pieter-Jan Briers 9def8b9132 Remove unused PowerConsumer from grilles (#36077)
This caused tons of completely wasted processing in the power system. Incredible.
2025-04-06 20:38:23 +01:00
Pieter-Jan Briers 5aad72d42e Make pow3r validation logic available on release (#36075)
I want to run this on live servers. It's behind a power_validate command, it still doesn't automatically get ran outside debug otherwise.
2025-04-06 20:38:23 +01:00
Pieter-Jan Briers 11d7546672 Fix bogus AdminNameOverlay Rider error (#35432) 2025-03-01 14:18:26 +00:00
Pieter-Jan Briers cd10b7b518 Update submodule (#35411) 2025-03-01 14:12:49 +00:00
Pieter-Jan Briers a5720464d4 Update nuget packages (#34595) 2025-03-01 14:11:58 +00:00
Pieter-Jan Briers ba54784390 Comment out broken guidebook test speech code (#35398)
This code blatantly doesn't work and causes compile failures with https://github.com/space-wizards/RobustToolbox/pull/5540. It's only used for testing purposes, so we're just removing it.

Basically taken from https://github.com/space-wizards/space-station-14/pull/33610 in another PR, so I can merge this first separately.
2025-03-01 14:07:39 +00:00
Pieter-Jan Briers 91d585e1fe Fix prying shut unpowered doors (#35380) 2025-03-01 14:05:18 +00:00
Pieter-Jan Briers e4fc8c2ec5 Add system to kick people if they connect to multiple servers at once. (#34563) 2025-01-28 04:31:31 +00:00
PJB3005 c8eebcb3a9 Improve canister admin logs.
1. Now clearly says "opened"/"closed" when changing the release valve.
2. Clearly says whether the valve was opened while a canister was inserted or not.
3. When a tank is ejected, logs if the valve is open and the ejection started spilling into the environment.

Fixes #34488
2025-01-28 04:31:28 +00:00
PJB3005 eaf7cbda43 Make GasMixture enumerable
I noticed that enumerating gases is frequently done in an annoying way with Enum.GetValues. So I made it better. Now GasMixture is IEnumerable<(Gas gas, float moles)> and it just works.
2025-01-28 04:31:28 +00:00
Pieter-Jan Briers 539a31354a Minor client packaging changes (#33787) 2025-01-28 04:31:22 +00:00
Pieter-Jan Briers 1dc9cc6d2e STAThread client content start (#34212) 2025-01-28 04:31:22 +00:00
Pieter-Jan Briers 6f6888d339 Persist deadmin to database, add admin suspension system (#34048) 2025-01-28 04:31:22 +00:00
Pieter-Jan Briers 7979aef7e7 Disable meta-atlas for big rare RSIs (#33643) 2025-01-28 04:31:21 +00:00
Pieter-Jan Briers 5659c343f4 Fix bad Rider analysis error in AccessOverriderWindow.xaml.cs (#34213) 2025-01-28 04:31:21 +00:00
Pieter-Jan Briers d19a1c194f Update RT to v239.0.1 (#34454) 2025-01-15 21:43:01 +00:00
Pieter-Jan Briers 58496b9700 Update submodule, .NET 9 (#34320) 2025-01-12 08:17:24 +00:00
Pieter-Jan Briers dd8cc6f243 Fix race condition causing disconnected admins to appear in adminwho (#34033) 2025-01-01 17:10:37 +00:00
Pieter-Jan Briers b9710b9090 Fix the sensor monitoring console (#34035)
Still isn't really suitable to just map but at least it doesn't outright NRE anymore.

Alternative to #34032
2025-01-01 17:10:26 +00:00
Pieter-Jan Briers b2742a754a Singularity equipment can now be activated with E interact (#33762)
These were coded to only listen to InteractHand, which doesn't follow our interaction model properly.
2024-12-21 09:37:14 +00:00
Pieter-Jan Briersandslarticodefast 18ec5acfdd Give silicons proper lobby/character editor previews (#33763)
* Give silicons proper lobby/character editor previews

No more naked dummies, properly show a borg/AI sprite now.

This means taking the JobEntity into account when spawning the dummy. For AIs I had to add a "JobPreviewEntity" field because they'd look like a posibrain otherwise. AI therefore uses a custom dummy entity I defined.

Also I had to add some margins to the UI, because otherwise the 32x32 sprite of the AI would look bad.

* Update Content.Shared/Roles/JobPrototype.cs

* Update Content.Client/Lobby/LobbyUIController.cs

* Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2024-12-21 09:36:03 +00:00
Pieter-Jan Briers b888527b45 Give vox health regen for poison below 20 damage (#33722) 2024-12-07 22:02:39 +00:00
Pieter-Jan Briers 04862dfe24 Fix layout on wires UI (#33714)
Layout would break for machines with >6 lights because the column count was hardcoded. Uncap the UI width and fix the rows count instead.

Lights with less than 4 characters of text weren't aligned right, now they are.
2024-12-07 22:01:19 +00:00
Pieter-Jan Briers 7ece549aa8 .NET 9 forward compatibility changes (#33421)
This doesn't switch the projects over to .NET 9, but it does make them work on .NET 9 when we decide to switch in the future.
2024-12-07 16:21:13 +00:00
Pieter-Jan Briers c8bd723162 Database SnakeCaseNaming fixes
Fixes formatting of owned entity type property names. These are normally named "FooBar_Baz" by EF Core, but the snake case thing was turning them into "foo_bar__baz". The double underscore is now fixed.

We don't *yet* have any EF Core owned entity in use, but I am planning to add one. I don't know if downstreams are using any so this should still be marked as a breaking change.

Also fixed it creating and dropping a Compiled Regex instance for every name, the regex is now cached (and pregenerated).
2024-11-29 19:18:11 +01:00
Pieter-Jan Briers 318b0520ca Fix sandbox error with new HWID code. (#33461)
Oops
2024-11-29 19:18:11 +01:00
Pieter-Jan Briers 26b36db09d Integrate Modern HWID into content
This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server.

HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns.

This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such.

New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs.

Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans.

There's also some code cleanup to reduce copy pasting around the place from my changes.

Requires latest engine to support ImmutableArray<byte> in NetSerializer.
2024-11-29 19:18:11 +01:00
Pieter-Jan Briers 4aecc673ae Borg type switching. (#32586)
* Borg type switching.

This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything.

New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis.

These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI.

The modules that each borg type starts with:

* Generic: tools
* Engineering: advanced tools, construction, RCD, cable
* Salvage: Grappling gun, appraisal, mining
* Janitor: cleaning, light replacer
* Medical: treatment
* Service: music, service, clowning

Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5.

Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire.

The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs.

Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those.

The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future.

There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code.

* Fix sandbox failure due to collection expression.

* Module tweak

Fix salvage borg modules still having research/lathe recipes

Engie borg has regular tool module, not advanced.

* Fix inventory system breakage

* Fix migrations

Some things were missing

* Guidebook rewordings & review

* MinWidth on confirm selection button
2024-11-15 19:35:37 +00:00
Pieter-Jan Briers 0b504cf545 System to automatically restart server after certain uptime. (#32814) 2024-10-24 02:20:39 +01:00
Pieter-Jan Briers aeeb4749f8 HOTFIX submodule update (#32897)
Update submodule

This fixes an important memory leak.
2024-10-24 02:17:25 +01:00
Pieter-Jan Briers 8933a86e8a Allow strip removing items if you're holding something (#32750)
You were already able to strip more items at once from somebody than you could hold, and they would drop to the floor. This matched the behavior in SS13.

Annoyingly, however, you were not allowed to *start* a stripping action if you're holding something. This just feels like an annoying paper cut, so this is no longer a thing.
2024-10-24 02:15:56 +01:00
Pieter-Jan Briers a75c5b7eae Fix role ban loading bugs (#32725)
This code was a mess. Now it's less of a mess and user UserDbDataManager now.

Fixes the following bugs:

* If you connect to a server, restart your client, connect again in the same round, you role bans would not be visible in the client.
* If you role ban somebody who is not connected to the server, then they connect within the round, they will only have the recently-applied ban.

Likely fixes #24781, #27282
2024-10-24 02:01:46 +01:00
Pieter-Jan Briers a926d0810f Fix some rounds failing to end due to mind roles (#32792)
* Fix some rounds failing to end due to mind roles

Fixes #32791

This is caused by ShowRoundEndScoreboard running into a bug trying to display antags: some player is showing up as antag with MindIsAntagonist(), but has no antag roles listed in MindGetAllRoleInfo().

This was caused by one of the roles of the player having the Antag boolean set, but having no AntagPrototype set.

The responsible mind role appeared to be MindRoleSubvertedSilicon which is missing a set for the SubvertedSilicon antag prototype.

I also added resilience to the round-end code to make it so that an exception showing the scoreboard (and sending the Discord message) would not cause the round end logic to completely abort from an exception.

I am planning to add an integration test to cover this bug (no prototype in mind roles), but I'll leave that for not-the-immediate-hotfix.

* At least one maintainer approved this tiny PR without reading it, not naming names.
2024-10-24 01:59:40 +01:00
Pieter-Jan Briersandslarticodefast e475512e7b Fix error log when recycling something with small material counts. (#32723)
* Fix error log when recycling something with small material counts.

MaterialStorageSystem.SpawnMultipleFromMaterial now doesn't call StackSystem.SpawnMultiple if it tries to spawn zero. This happens because the recycler calls SpawnMultipleFromMaterial for everything recycled, even if the amount it has stored is < the amount for one sheet.

* Update Content.Server/Materials/MaterialStorageSystem.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2024-10-24 00:17:33 +01:00
Pieter-Jan Briers a1edff8457 Update submodule to v236.1.0 (#32704) 2024-10-24 00:11:33 +01:00
Pieter-Jan Briers a8b11660f7 Move client dumpentities command to "DEBUG" (#32687) 2024-10-07 22:41:35 +01:00
Pieter-Jan Briers 3337c91e7b Fix borg hands showing up in stripping menu (#32606)
* Fix borg hands showing up in stripping menu

Borgs can't drop their items anyways, and the amount of hands borgs have causes the UI to just bug out.

* Add more checks
2024-10-07 22:26:19 +01:00
Pieter-Jan Briersandslarticodefast 4adba145bc Disable bioluminescence plant mutations because it breaks the engine (#32561)
No fun allowed

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2024-10-07 22:26:19 +01:00
Pieter-Jan Briers 7974306676 Fix cartesian explosion in pref loading (#32434)
Lol .AsSingleQuery().

Some people's preferences wouldn't load on Lizard. Turns out the entire preferences set is loaded with a morbillion joins in a single query and one person had 240,000 (!!!) rows returned for their preferences query. Yeah.
2024-10-02 11:38:42 +01:00
Pieter-Jan Briers 63eefe060d Fix OOC not re-enabling if restartroundnow is used (#32401)
The ChatSystem code for re-enabling OOC only ran during PostRound, which gets skipped over when doing restartroundnow. Now it does this on PreRoundLobby too.
2024-10-02 11:29:23 +01:00
Pieter-Jan Briers f3a6a99a36 chmod +x publish_multi_request.py (#32274)
Fuck.
2024-09-22 02:38:56 +01:00
Pieter-Jan Briers bc8c5228ef New publish workflow for Robust.Cdn (#32222)
This uses multiple API requests to directly send the publish to the CDN server, no more GitHub artifacts.

Faster, less moving parts.

Needs Robust.Cdn 2.2.0
2024-09-22 02:38:38 +01:00
Pieter-Jan Briers 100e52568c Fix borg defib module throwing an exception (#32260)
ToggleCellDraw was erroneously added to the parent prototype instead of the one that actually has a battery.
2024-09-22 02:38:29 +01:00
Pieter-Jan Briers de1ecb95ca Fix powered machines working unpowered if the panel is open. (#32135) 2024-09-14 14:27:12 +01:00
Pieter-Jan Briers 391a253ef2 Fix replay load error screens (#32115)
If an error occurs while loading a replay, it's *supposed* to show a popup "hey do you wanna continue with error tolerance", and it does do this. But because of spaghetti in the replay state code, it also immediately tries to reload the replay without input, as a consequence of trying to reset to the game's default state.

Now the replay load system has a proper game state for "replay load failed", with nice presentation and explicit formatting and 10% less italian cuisine.
2024-09-14 14:27:11 +01:00
Pieter-Jan Briers da724770e9 Add "X.A.N.A." as an AI name (#31976)
Add "X.A.N.A." as an AI

Anyways I don't think we're gonna get sued for trademark infringement of an old dead French TV show yeah?
2024-09-14 14:23:14 +01:00
Pieter-Jan Briers 1a94de83db Extend shuttle dock time if the shuttle doesn't dock at evac. (#31496)
* Extend shuttle dock time if the shuttle doesn't dock at evac.

If the shuttle can't dock at evac for *some reason*, it will instead try to dock at another port on the station. And if that fails it goes somewhere random on the station.

Because of the chaos and confusion caused by this, many people will frequently not get to the shuttle in time under these circumstances. This sucks for everybody.

To alleviate this, the shuttle launch timer will now be extended if the station doesn't dock at its ideal spot. The default values (controlled via CVar) are 1.667x and 2x respectively for "wrong dock" and "no dock at all" scenarios.

The code around here was a mess, so I fixed that too. "CallEmergencyShuttle" has been renamed to "DockEmergencyShuttle", the overload that did the actual docking has been renamed to DockSingleEmergencyShuttle. Code has been split into separate dock -> announce methods so we can calculate shuttle delay in between the case of multiple stations.

Also made the "shuttle couldn't find a dock" text announce the time until it launches and fix the shuttle timers not triggering for it.

* Minor review

---------
2024-09-14 13:56:26 +01:00
Pieter-Jan Briers e1eb8373f0 Quick warning fixes (#31694) 2024-09-01 03:56:15 +01:00
Pieter-Jan Briers 25e4bb6e82 Test parallelization stuff. (#31650)
This is the content analogue of https://github.com/space-wizards/RobustToolbox/pull/5412

Made Content.Tests run tests parallelized, which doesn't really seem to matter much.

I tried to make Content.IntegrationTest more aggressively parallelized but ran into https://github.com/dotnet/runtime/issues/107197 so we need to shelve that. Added a comment explaining as such.
2024-09-01 03:55:29 +01:00
Pieter-Jan Briersandmetalgearsloth 17d3c84d3a Fix broken tests directly mutating entities from wrong thread. (#31647)
* Fix broken tests directly mutating entities from wrong thread.

* fix build

* gundam

* stuff

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-09-01 03:29:36 +01:00
Pieter-Jan Briers dddde4ab09 Increase (SUPER)PACMAN ramp rate/tolerance (#31403)
All PACMANs used to use the same ramping parameters, this meant a SUPERPACMAN (50 kW) took literally a 100 seconds to get up to its full output level. Ouch.

PACMAN has been raised to 5000 W/s with 1500 W tolerance, SUPERPACMAN to 7500 W/s with 2500 W tolerance
2024-08-27 01:00:43 +01:00
Pieter-Jan Briers 83e9fe51ac Fix ChemVend jugs again (#31398)
This re-introduces the dummy entity naming code, originally introduced in #29178 and randomly removed by #30064 with no technical justification given.

Fixes #31373
2024-08-27 00:50:40 +01:00
Pieter-Jan Briers 0d0a01549b "LV" is an acronym (#31402) 2024-08-27 00:49:10 +01:00
Pieter-Jan Briers 8927d50d38 Word wrap for vote titles (#31248) 2024-08-27 00:30:29 +01:00
Pieter-Jan Briers 9cdf9b0d70 Don't create new JsonSerializerOptions for every discord webhook (#31240)
*sigh*
2024-08-21 16:16:41 +01:00
Pieter-Jan Briers 9ae9b8f5e5 Rename CLF3 to "chlorine trifluoride" (#30510)
Other chemicals like sodium hydroxide are written in full too, why wouldn't ClF3 be.
2024-08-09 18:15:15 +01:00
Pieter-Jan Briers 8f95604f05 Fix invalid UI hover/click sounds breaking client (#30067)
fixes #29561
2024-08-09 17:47:51 +01:00
Pieter-Jan Briers 33c3af9990 Update host key for changelog RSS (#30068) 2024-08-09 17:47:50 +01:00
Pieter-Jan Briers 401379ee3a Fix AccessLevelControl breaking (#30045)
#29987 did an oopsie

This broke the ID computer, station records, and maybe some others too.
2024-08-09 17:47:50 +01:00
Pieter-Jan Briers bdb1929989 Update changelog RSS configuration (#30024)
New server
2024-08-09 17:47:22 +01:00
Pieter-Jan Briers f1d3ed9efc Remove outdated steps from Test Packaging workflow (#30018)
gen build info was removed in 5e800e0ece but I didn't realize this workflow also tested it. Gone now.
2024-08-09 17:47:20 +01:00