Adds a config-optional endgame chat message (#72860)
This basically does what we do for roundstart announcements, but for
round end.
With a delay between a round ending, the server rebooting, and a new
round starting, sometimes it feels like players would be more likely to
catch a roundstart when they know the previous game has just ended, and
not a few moments before the next one starts.
This idea was suggested to me several times by many people who don't
have good connections to servers and keep missing roundstart because
they just aren't given enough time to get on SS13.
I also included Round ID in this, so people who know what time they've
played a round can also now easily see which round it was, if they
wanted to go back to look at the logs for any reason they have.
🆑
config: There's now a config-optional announcer for a round ending.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Medical/Security records now use the max/min age.
* merge conflict
* Refactors crew records (#72725)
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.
- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)
<details>
<summary>previews</summary>
Editable fields & security console

Medical records

Look and feel of the more current version

</details>
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler.
Manifest_inject is made readable.
Probably bug fixes
🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* I've got something that now actually works
Just got to incorporate the records into what players can actually see.
* Turns out that client has already been transferred after all
* Adds the past records in the TGUI records (they're kinda ugly but it works, so y'know)
* Whoops
* Hate you too sometimes Prettier
* Fixes ghost roles using LITERAL records, which caused problems
* Fixes the leaks caused by ghost roles not getting their name right because of the stupid freaking special() proc
* I hate list operations man they're so stupid
* Fixes the stars on the crew manifest!
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: KathrinBailey <53862927+KathrinBailey@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Makes the game-alert message also display the round ID
* Makes the fact that it's the round ID a little more obvious
* Actually I think this will be cleaner.
* Renews a bunch of old roundend new reports that got lost. Plus, some roundend report QoL for cult and revs. (#71284)
A few roundend reports got lost from moving to dynamic and other prs.
This PRs re-allows them to occur. Namely: "Wizard Killed" (lost in
dynamic), "Blob nuked" (lost in dynamic), "Cult escaped" (lost in cult
rework), and "Nuke Ops Victory" (station destroyed via nuke) (lost from,
what I can see, an oversight / accidental swap of report values).
Additionally, small roundend report QOL for cult: Removes antag datums
from spirit realm ghosts after being dusted, so they do not show up on
the report. And in reverse, heads of staff who were dusted / destroyed
in revolution rounds are now also shown in roundend reports.
Some of these reports are dead, which is is a shame because I think
they're cool and fun.
🆑 Melbert
qol: Successfully fending off a blob now has a cross station news report
again. More pressing reports will take priority over it, though.
qol: Successfully killing a wizard (and all of their apprentices) now
has a cross station news report again.
qol: If more than half of a cultist team manages to escape on the
shuttle (rather than summoning Nar'sie), they will send a unique cross
station news report. This is still a loss, by the way. Summon Nar'sie!
qol: Nuclear Operatives successfully nuking the station now has its
unique cross station news report again, and no longer uses the generic
"The station was nuked" report.
qol: Nuking the station to stop a blob infection now has a unique cross
station news report again. Good luck convincing admins to allow this.
qol: Cult ghosts from "Spirit Realm" no longer persist on the cult's
team after being desummoned, meaning they will not show up on roundend
report.
qol: Heads of staff will now always show up on revolution roundend
report - even if their body was fully destroyed.
/🆑
* Adds support for Rulesets having intrinsic template requirements (#72339)
Title
Ensures that we load templates for a ruleset before we attempt to place
or cache characters for that ruleset
Also makes wizard and abductor async load their template to improve
(apparent) loading times for them
This is the only thing left that I can think of that would cause antags
like nukies and abductors to spawn in wrong
This should not be player facing
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* TGUI Latejoin Menu!
* [PR PR] Fixes up the TGUI Latejoin Menu! (#18044)
* Makes Angel, Dragon and Robotic wings available in the preferences menu again (#18013)
Makes Angel, Dragon and Robotic wings available in the prefs menu again
* Automatic changelog for PR #18013 [ci skip]
* [MIRROR] Petrified human statues now drop a (stone) brain on destruction [MDB IGNORE] (#18026)
* Petrified human statues now drop a (stone) brain on destruction (#71816)
## About The Pull Request
Destroying a petrified human statue will now drop their brain, albeit a
little more statue-like.

Changed from original PR after talking w/ Fikou about it
## Why It's Good For The Game
While the combo *does* step on the toes of Smite, the statue+rod combo
is capable of fully removing you from the round without a way back very
quickly. This keeps the strength of the combo while not making it
entirely impossible to get back into the round.
## Changelog
🆑
balance: Destroying a petrified human statue will now drop their brain.
/🆑
* Petrified human statues now drop a (stone) brain on destruction
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Automatic changelog for PR #18026 [ci skip]
* [MIRROR] Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. [MDB IGNORE] (#18019)
* Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. (#71674)
## About The Pull Request
- The chaplain choice beacon now uses a radial to select the armor set,
instead of a list, giving the user a preview of what each looks like.

- Lots of additional cleanup to choice beacon code in general. Less copy
pasted code.
- All beacons now speak from the beacon with their message, instead of
some going by "headset message". Soul removed
## Why It's Good For The Game
I always forgot when selecting my armor which looks like what, and
choosing an ugly one is a pain since you only get one choice. This
should help chaplains get the armor they actually want without needing
to check the wiki.
## Changelog
🆑 Melbert
qol: The chaplain's armament beacon now displays a radial instead of a
text list, showing previews of what all the armor sets look like
qol: (Almost) all choice beacons now use a pod to send their item,
instead of just magicking it under your feet
code: Cleaned up some choice beacon code.
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup.
* update modular
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Automatic changelog for PR #18019 [ci skip]
* [MIRROR] Fixed an improper proc ref. [MDB IGNORE] (#18031)
Fixed an improper proc ref.
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Automatic changelog for PR #18031 [ci skip]
* Fiiix!
* Fuck
* [MIRROR] Windoors are vulnerable to a jaws of life [MDB IGNORE] (#18040)
* Windoors are vulnerable to a jaws of life (#71733)
## About The Pull Request
Windoors can be pried by a jaws of life now
## Why It's Good For The Game
Windoors are already immune to any kind of deconstruction outside of
bashing it, so making it immune to the jaws of life as well seems
excessive
## Changelog
🆑
balance: jaws of life can pry windoors
/🆑
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
* Windoors are vulnerable to a jaws of life
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
* Automatic changelog for PR #18040 [ci skip]
* Automatic changelog compile [ci skip]
* [fix] fixes det revolver icons (#18049)
* Delete guns.dmi
* Add files via upload
* Automatic changelog for PR #18049 [ci skip]
* [MIRROR] Fixes fake links in Adminwho that led to "no_feedback_link" [MDB IGNORE] (#18027)
* Fixes fake links in Adminwho that led to "no_feedback_link" (#71804)
## About The Pull Request
Basically, sometimes, very rarely, it was possible for this to happen,
when it shouldn't be happening. I was wondering for a little while what
it was about, and then I finally downloaded my chat logs for a round and
realized what was going on. It should no longer happen.
## Why It's Good For The Game
Clickable links that lead nowhere (and thus don't do anything) aren't
very good for the game.
## Changelog
🆑 GoldenAlpharex
fix: There shouldn't be clickable names in Adminwho that don't do
anything anymore.
/🆑
* Fixes fake links in Adminwho that led to "no_feedback_link"
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Fix: Self-Actualization Device Doubling Damage (#18015)
* Change adjustOrganLoss/BruteLoss/FireLoss to set
* Reverts my naive soluton
* Automatic changelog for PR #18027 [ci skip]
* Automatic changelog for PR #18015 [ci skip]
* Fix TGUI latejoin menu not closing properly, properly this time
* Oh yea, flavourtext requirement exists. Not that we actually have it enabled upstream.
* Revert "Merge remote-tracking branch 'upstream/upstream-merge-71883' into fixlatejoinmenu"
This reverts commit 3279e73418f95637162a2923b0431e9e26b43403, reversing
changes made to d46aab7b421fee94d49b57e863bfd8e0917fc43f.
* Fucking stupid code merge shit
* Cool newline bro
* Dumb stupid commented code
* Also this
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* fix
Co-authored-by: Rimi Nosha <riminosha@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Improves Readability/Documentation of SSTicker.force_ending (#71329)
## About The Pull Request
Hey there,
force_ending was a boolean (with inconsistent usage, flip-flopping
between using TRUE/FALSE and 1/0 variables), so let's just change it all
over to the macros and call it a good day.
I also updated documentation of the variables in that "code block" in
SSTicker while in the area because changing just one line made it look
ugly. Some of the documentation was no longer current to it's... current
use in code, so I updated those as well.
## Why It's Good For The Game
Pure code improvement, DMdocs are swell, and readability is kino.
## Changelog
Nothing here should affect players.
* Improves Readability/Documentation of SSTicker.force_ending
Co-authored-by: san7890 <the@san7890.com>
* Resolves is_banned_from headaches and lag (Speeds up roundstart significantly) (#69376)
About The Pull Request
Just to be clear, when I refer to time here, I am not talking about cpu time. I'm talking about real time.
This doesn't significantly reduce the amount of work we do, it just removes a lot of the waiting around we need to do for db calls to finish.
Adds queuing support to sql bans, so if an ongoing ban retrieval query is active any successive ban retrieval attempts will wait for the active query to finish
This uses the number/blocking_query_timeout config option, I hope it's still valid
This system will allow us to precache ban info, in parallel (or in batches)
With this, we can avoid needing to setup all uses of is_banned_from to support parallelization or eat the cost of in-series database requests
Clients who join after initialize will now build a ban cache automatically
Those who join before init is done will be gathered by a batch query sent by a new subsystem, SSban_cache.
This means that any post initalize uses of is_banned_from are worst case by NATURE parallel (since the request is already sent, and we're just waiting for the response)
This saves a lot of headache for implementers (users) of the proc, and saves ~0.9 second from roundstart setup for each client (on /tg/station)
There's a lot of in series is_banned_from calls in there, and this nukes them. This should bring down roundstart join times significantly.
It's hard to say exactly how much, since some cases generate the ban cache at other times.
At base tho, we save about 0.9 seconds of real time per client off doing this stuff in parallel.
Why It's Good For The Game
When I use percentages I'm speaking about cost per player
I don't like how slow roundstart feels, this kills about 66% of that. the rest is a lot of misc things. About 11% (it's actually 16%) is general mob placing which is hard to optimize. 22% is manifest generation, most of which is GetFlatIcons which REALLY do not need to be holding up the main thread of execution.
An additional 1 second is constant cost from a db query we make to tell the server we exist, which can be made async to avoid holding the proc chain.
That's it. I'm bullying someone into working on the manifest issue, so that should just leave 16% of mob placing, which is really not that bad compared to what we have now.
Changelog
cl
code: The time between the round starting and the game like, actually starting has been reduced by 66%
refactor: I've slightly changed how ban caches are generated, admins please let me know if anything goes fuckey
server: I'm using the blocking_query_timeout config. Make sure it's up to date and all.
/cl
* Resolves is_banned_from headaches and lag (Speeds up roundstart significantly)
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Supermatter Cascades are not Universe-Destroying Events (#66804)
* Supermatter Cascades are not Universe-Destroying Events
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Updates Round End News Message for when Nuclear Operatives succeed to be more gender-neutral (#63512)
About The Pull Request
On the tin. Hopefully the comedic timing isn't TOO gadzonked from this, but I think it feels OK.
Why It's Good For The Game
It just doesn't make sense to have the gender-neutral "he" for this game when you could have someone playing a female character (or anything else). I shrug my shoulders and ride off into the sunset.
Changelog
cl
fix: The Nanotrasen News Network has updated their news tickers for when a station horrifically blows up to be more accommodating towards the person directly responsible for making sure it didn't horrifically blow up.
/cl
* Updates Round End News Message for when Nuclear Operatives succeed to be more gender-neutral
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
* Adminwho and the status panel now shows when fellow admins are readied up in pre-game lobby (#62670)
* Adminwho and the status panel now shows when fellow admins are readied up in pre-game lobby
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
* removes double spaces before symbols
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixed the join/ready buttons not reverting if the game fails to setup. (#62112)
This will fix#61580
* Fixed the join/ready buttons not reverting if the game fails to setup.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Changes a bunch of New()s to Initialize()s (#61626)
* Changes a bunch of New()s to Initialize()s
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* tgui Preferences Menu + total rewrite of the preferences backend
* nah, we dont need to ping those people
* trying to remove the funny stuff
* unmodularizing this
* prefs reset
* this may need to be reverted, who knows
* okay, this part
* perhaps
* EEEEEEEEE
* unsanitary
* E
* Stage 1 + loadout system
* more fixes
* E
* I mean, it launches?
* More fixes and reorganisation
* E
* customisation code is spaget.
* disable ERP prefs
* Update erp_preferences.dm
* Update erp_preferences.dm
* E
* Slowly getting there
* It may be time for help :)
* tri...colors... help
* preferences now pass preferences
* Update dna.dm
* Fuck this man
* missing savefile return, set_species works, removed dumb stuff from updateappearance
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8199
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8224
* https://github.com/tgstation/tgstation/pull/61519
* https://github.com/Skyrat-SS13/Skyrat-tg/pull/8278
* e
* le butonAZARAK HELLO
* hhh
* Proper recognition where it's due, MrMelbert!
* EEEE
* examine block
* Better gen hit sounds from whitedream
* final loadout touches, more bug fixes im sure to come
* i said there would be bugfixes
* Update LoadoutManager.js
* Missing preferences in the html menu
* LIVE TESTING PHASE BABY
* Update LoadoutManager.js
* EEE
* LAUNCH TEST FIRE
* Update job.dm
* Update new_player.dm
* 50gb DAY ONE PATCH
* EEE
* Update preferences.dm
* buggle fixes
* Update examine.dm
* >LOOC starts on
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* The Failsafe can now recover from an deleted MC
Its also more reliable and can handle a situation where its main Loop runtimes and the MC is stuck
* Reset defcon level correctly
Oops left that in from debugging the levels
* Correctly recover SSasset
* Only decrease defcon if MC creation failed
Also add some sort sleep between emergency loops
* Makes the last two emergency actions manual procs
Since they are kinda unstantable its probalby best
if only admins call these manually
Its also more reliable and can handle a situation where its main Loop runtimes and the MC is stuck
You can also now debug Master/New()
While there will most likely never be any situation where the MC is just gone its still good to know that the game can recover from such a situation
For example maybe someone messed up a SDQL query or maybe someone wanted to delete the MC to create a new one hoping the Failsafe would do so for him
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Fix automatic evac news broadcast emergency_reason double encode (#60212)
I forgot to html_decode the reason when I did it for the station name.
* Fix automatic evac news broadcast emergency_reason double encode
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Fix some station name html encoding for plaintext handlers (#60021)
* fix (double) encoding
* tfw no server friends and no send2sameserver
* Fix some station name html encoding for plaintext handlers
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Drastic Lag Mitigation Subsystem: SSlag_switch (#59717)
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
* Drastic Lag Mitigation Subsystem: SSlag_switch
* mirrored the changes to the modular file
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>