Permissions for species change
image
About The Pull Request
Goodbye batform
Hello, new preference called vampire status. Outcast vampires act just like normal, Inoculated vampires join their department under a unified "vampire house name" everyone shares.
image
image
image
Why It's Good For The Game
I've heard people complain about batform for years now, if vampires aren't gone by next halloween we can at least enjoy making them far less griefy (ruining a lot of the fun of halloween as just a dumb grief holiday) and more roleplay oriented. I don't even know why vampires got a griefy spell when they already have their main mechanic encourage randomly attacking people and stealing their blood to stay alive
Changelog
cl
del: Batform is gone!
add: ...Replaced by vampire houses as a preference. Join your department as a vampire ménage!
/cl
About The Pull Request
This is for the admin combo HUD. Players shouldn't notice any difference (except at roundend).
2021-11-09T16-27-26.mp4
Removes the ability to set custom antag HUDs for custom admin teams for complexity, though if there's a large enough demand I can try to bring it back in another PR.
Fixes#59767
TM candidate only so that I can make sure antags aren't getting leaked to people who shouldn't see them.
Changelog
cl
fix: Antag HUDs will no longer clear on deconversion if the player was another antag.
qol: Antag HUDs (as seen by admins and at the round end) will now animate between all antagonists, rather than just choosing the most latest.
/cl
It kept on tripping because the RegEx expression was malformed due to an absence of words in to_join_on_whitespace_splits, which caused it to filter out spaces that were at the beginning or at the end of a message, or if there was two spaces one by the other.
Also prevents people from sending a message that's only spaces in OOC, because that's a little silly.
expansion: Nearsighter quirk now lets you pick the look of your prescription glasses from the character preference menu
imageadd: Added thin prescription glasses
Bring _HELPERS/_lists.dm to latest standards by:
-Adding proper documentation and fixing existing one
-Giving vars proper names
-Procs now use snake case as per standard (many files that use those procs will be affected)
bring code up to latest standards, move many procs to named files inside _HELPERS
no idea where to put some of these procs, help is appreciated
made more files to contain some unique code, deleted unsorted.dm, we can rest now
This pr (maybe) fixes#61383 . Testing it is difficult as I don't know how to set up a DB on local - I suggest a testmerge on Manuel?
If panic bunker interviews are enabled, everyone should be able to connect - either they have enough hours and don't need an interview or are a new player and will enter an interview.
If panic bunker interviews are disabled, we then check panic_bunker_living.
If 0, we only check for whether the client has a database entry.
If a set number, we check for the client's playtime vs that number. (Players underneath the living playtime, will be prompted to fill out an interview)
#60289 made it so people who should bypass the panic bunker to enter an interview were wrongfully rejected.
Since the default value for living time was 0, and the time we use on the game servers was 0, it ALWAYS rejected new players from entering the game, even if interviews was enabled.
What does the PR do
This reworks how our rendering is handled, specifically moves away from plane masters as the end solution:
Instead we replace plane masters rendering directly to client with planes that render multiple planes onto them as objects in order to be able to affect multiple planes while treating them as a single object. This is done by relaying the plane using a "render relay" onto a "render plate" which acts as a plane master of plane masters of sorts, and since planes are rendered onto it as single objects any filters we apply to them will render over the planes, treating them as a single unit
image
Also cleaned up unused plane masters and render targets to reduce clutter, as well as removing a useless filter that was resulting from confusion due to said clutter.
Clientside performance testing showed no significant change, no effect on serverside performance as this is clientside.
Also added the blackness plane master so it can be relayed, side effect is that it can now be used to adjust how blackness is rendered
P2 should introduce rendering one plane to multiple render_plates, but i want to get this done before I finish that, though testing shows its feasible
Why It's Good For The Game
Allows more advanced effects.
As an example i made a grav anomaly effect in like 30 seconds for this video i will improve it once im awake properly:
https://streamable.com/lu98dz
Documentation images should be merged here after this pr is done
tgstation/documentation-assets#2
Changelog
cl
qol: grav anomalies now have a pretty effect
refactor: Rendering has been refactored, remember to report bugs
/cl
Fixed not being able to disable specific antagonists randomly.
For me, this meant I was unable to toggle cultist and traitor. This might've been a migration bug, though it's safe to just sanitize it on read.
So I started with fixing some timing stuff in #61540, decided to look into foam harddels since I've known about them for a while, got bored, tried to figure out the plane master failures I've seen, and well uh, did.
I'm sure there'll be more, but for now:
Fixes foam darts sticking around post qdel due to dumb guncode, adds a stack trace to handle it.
Makes map popups actually clear the screen they're effecting of their objects, preventing plane master harddels, most commonly sourced from admin pod memes. Not clearing from the screen WAS SOMEHOW AN INTENDED FEATURE!?!@ because "clients log out often anyway and that clears screen so it's fine" I am having a meltdown
Changes examine timers from a ref + signal to a ref(), the timer's 1 second, it's not gonna cause any collisions for the love of christ
The bug #61469 (940d9aa99d) was trying to fix is mostly successful, except in rare cases of a lot of people opening preferences pre-timer SS init, where addtimer is delayed. This changes it to spawn, which is good to run pre-init, though in small amounts. If this doesn't work, then I'm going to make a savefile pass through every proc as an argument, but it's a very tedious and frustrating change to do, and I only really want to do it if necessary.
Fixes#61515. Preferences were only applied on load_preferences(), which only fires when the preferences datum is created. Preferences datums are cached, and so load_preferences is only called the once.
About The Pull Request
Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.
Splits game preferences into its own window.
Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.
This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.
Fixes#60823Fixes#28907Fixes#44887Fixes#59912Fixes#58458Fixes#59181
Major TODOs
Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc
A lot of specialized testing so that people's real data don't get corrupted
Changelog
cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
Implements the Requests Manager, a new admin tool used to view all prayers, Centcom/Syndicate requests, and nuke code requests within the span of a round.
The verb can be found under Admin.Game, or alternatively just use the verb directly Requests Manager. The requests can be filtered by type (using the type filter button), or using a text search which searches both the message text as well as the request owner's name.
It will now check any disconnected player who was once inside the round (round start or late join) on top of the existing connected players check.
It will now omit an extra notice to admins when players match both cid and ip, as well as make the existing one stand out.
It will now inform admins when one of the pairs is active in the round.
If panic bunker is enabled, interviews disabled, and living bunker disabled, and a player whitelisted previously by only observing connects, you will get the message
"ADMIN LOG: Failed Login: [Ckey attempting to join] - Account attempting to connect during panic bunker, but they do not have the required living time 0/0."
Instead what should happen is the living time is ignored as it should be
(This also fixes when it's set to say 5 minutes and someone with 5 minutes connect but is rejected anyway)
Requested by oranges and inspired by the upcoming event. A new subsyetem, non-processing (for now), aimed at providing some toggle switches that can be flipped as a last ditch effort to save some CPU cycles by sacrificing some non-critical mechanics. Below you can see each individual toggle.
Screenshot of the admin panel:
image
Surely there are more opportunities for toggles I missed, but adding new ones is not very difficult at all.
Why It's Good For The Game
Better performance during extreme pop, I hope.
Changelog
cl
code: Introduces the Lag Switch subsystem for when a smoother experience is worth trading a few bells and whistles for. Performance enhancement measures can be togged by admins with the Show Lag Switches admin verb or enabled automatically at a pop amount set via config.
config: Added a new config var: number/auto_lag_switch_pop