* Throttle people trying to connect to a full server.
To reduce spam/load on the server and connection logs table.
Players are forced to wait 30 seconds after getting denied for "server full", before they can try connecting again.
This code is an absolute nightmare mess. I tried to re-use the existing code for the redial timer but god everything here sucks so much.
Requires https://github.com/space-wizards/RobustToolbox/pull/4487
* Use new NetDisconnectMessage API instead.
* Add admin.bypass_max_players CVar.
Just something to help with debugging the player cap on dev, I don't expect this to ever be disabled on real servers.
* Make department / job list sorting consistent.
This makes late join, crew manifest and character profile all apply consistent sorting for jobs and departments.
We use the already-defined weights for departments (so command, then sec, then station specific, then just sort by prototype ID). Jobs also use weight (so heads are always at the top) then prototype ID, then character name (for manifest).
Removed the crewmanifest.ordering CVar as doing it via prototype weight is just easier, and that CVar was already a mess anyways.
* Fix jittery job icons in lists.
They were set to KeepCentered in TextureRect. This has issues because the allocated space is actually an odd number of pixels, so it tries to position the draw at a half pixel offset.
Now, yes, fixing this in TextureRect would make much more sense, but get off my back. (Ok seriously we need better helper functions for doing that in the engine. Don't wanna deal with that right now and I already have this patch made.)
Instead I'm just gonna fix the issue by using VerticalAlignment in all these places instead which ends up doing exactly the same thing YIPPEE.
Also gave a margin next to the icon on the crew manifest. Margins people!
God bloody christ. There's like three layers of shit here.
So firstly, apparently we were still using Npgsql.EnableLegacyTimestampBehavior. This means that time values (which are stored UTC in the database) were converted to local time when read out. This meant they were passed around as kind Local to clients (instead of UTC in the case of SQLite). That's easy enough to fix just turn off the flag and fix the couple spots we're passing a local DateTime ez.
Oh but it turns out there's a DIFFERENT problem with SQLite: See SQLite we definitely store the DateTimes as UTC, but when Microsoft.Data.Sqlite reads them it reads them as Kind Unspecified instead of Utc.
Why are these so bad? Because the admin notes system passes DateTime instances from EF Core straight to the rest of the game code. And that means it's a PAIN IN THE ASS to run the necessary conversions to fix the DateTime instances. GOD DAMNIT now I have to make a whole new set of "Record" entities so we avoid leaking the EF Core model entities. WAAAAAAA.
Fixes#19897
This is a visualizer somewhat similar to the Generic. It allows configuring appearance info based on specific CVars the user has set. This allows YAML to easily configure alternatives for accessibility CVars like reduced motion.
* Adds option to disable character names in chat/speechbubbles
* Moved the coloring of names to clientside
* Move string functions to SharedChatSystem to avoid duplicate code in SpeechBubble.cs
* Changed to be put under Accessibility section
* Cache CVar
* Add AFK detection for aHelp relay and admin specific afk time.
* Correct query to new refactor
* Change AFK timeout to 10min or else Pancake closes my PR 😭
* It wasnt a bug it was a feature, way less aHelps that way.
* aHelp Colors arn't real!
* Update Content.Shared/CCVar/CCVars.cs
---------
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Add announce message length to UI and make a cvar for it
* Update comm console server-side trim to use the cvar
* Rely on the new OnTextChanged event
Because OnKeyBindUp only works for keys that have binds
* Add a similar indicator to nukies' war declaration UI
* Remove message length indicators for now cuz it requires the engine update
* Rename cvar slightly
* Refactor duplicated code to a helper method
* Remove message trimming from *Window class as it's better to live in the BoundUserInterface where the other message handling happens
* Rename to chat.max_announcement_length
* Restarts have max player count
* Now counts ingame ghosts to determine if restart can be called
* consistant cvar name
* Added a player count with state conditional
* Cryogenic sleep units
* pause map support
* no more body deletion
* Cryogenic Storage Units
* boowomp
* no more emag, no more dropping present people
* Stuff
* Fix RoundStatus Action
* Rename stuff
* Also needs to run on the main thread
* minor stuff
* Move to not be an EntitySystem
* Part 1 of making this less shit
* Make some more stuff run on main thread
* Actor check, logging and remove token from log.
* Better log
* Change ActionKick to use Guid instead of username
* Fix build
* Bandaid fix for test fails
* update cvars
* vote 1984
* rip
* add custom reason
* make panic_bunker.enabled a server cvar
I am kind of guessing
---------
Co-authored-by: DrSmugleaf <drsmugleaf@gmail.com>
* Change the vote and cvar
* Only denies successful votes
* Add comments because I'm a good coder, I swear
* I added a space to the first line of ccvars it's so over
* the grinch will ruin christmas
* comments here, comments there, comments should not be a thing :godo:
* Unsubscribe from CVar
* rename cvar to be clearer.
* Change switch to if statement.
Add atmos.speedup which is effectively a atmos-only time compression
CVar. This adjusts heat capacities and transfer rates to effectively
globally speed up the time constants of atmos.
This allows faster response to heating/cooling changes and faster
cleanups (by buffing scrubbers, pumps, and everything else) that is
tunable through one global time compression CVar.
It also achieves this without any thermodynamic unsoundness.
* Grid Inventory
* oh boy we keep cracking on
* auto insertion is kinda working? gross, too!
* pieces and proper layouts
* fix the sprites
* mousing over grid pieces... finally
* dragging deez nuts all over the screen
* eek!
* dragging is 90% less horrendous
* auto-rotating
* flatten
* Rotation at last
* fix rotation and change keybind for removing items.
* rebinding and keybinding
* wow! look at that! configurable with a button! cool!
* dragging is a bit cooler, eh?
* hover insert, my beloved
* add some grids for storage, fix 1x1 storages, fix multiple inputs at once
* el navigation
* oh yeah some stuff i forgor
* more fixes and QOL stuff
* the griddening
* the last of it (yippee)
* sloth review :)
* Disable artifact spam on roundend
I think part of the issue was the enormous amount of logspam but at any rate this turns it off.
* Also this
* And these
We've had it at like, 18, 12, and 7, I think 7 is too low and 18 is definitely too high.
Ideally:
- 2 minutes to get inside
- 7 or so minutes inside.
- 2 minutes as a buffer to either fulton themselves out or run out if necessary.