* Fixes secrets panel disease outbreak button (#79946)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/79866
Hadn't been updated to the new system where candidates are found during
round event setup. Changes the failure message for clarity on why it
fails, and sends a message to admins same as a successful outbreak.
## Changelog
🆑 LT3
fix: Disease outbreak: classic spawned from the admin secrets panel no
longer fails to start
fix: Disease outbreak provides a message about why it fails to start
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Fixes secrets panel disease outbreak button
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro (#79935)
## About The Pull Request
Replaces all instances of `SSblackbox.record_feedback\("tally",
"admin_verb", 1, (.+)\)` with `BLACKBOX_LOG_ADMIN_VERB($1)`
This makes so the funny comment isn't necessary.
It also reveals one location which someone did not heed the comment, the
`debug_controller` proc copy+pasted the line but did not change the
fourth argument. PEOPLE DON'T READ!
* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Reworks transformation sting to be temporarily in living mobs, forever in dead mobs
* Modular updates
* Recaches the icons generated in the `changeling` unit test
* Pain
* More tweaks
* Disable unit test
* Let's see if we can pass test temporarily
* Makes transformation sting unobtainable more cleanly
* Unit test
* Cursed proc
* Kill the unholy copy pasta
Seriously this stuff is just awful. This is not maintainable.
* test this
* Update comments
* Fixing the screenshot test, maybe?
* grrr
* Update changeling.dm
* Attempt to fix this nonsense
* Update changeling.dm
* Update changeling.dm
* Update changeling.dm
* Update dna.dm
* Fixes it?
* Screenshot test
* Update _traits.dm
* Update _traits.dm
* Fix this
* Update dna.dm
* Update dna.dm
* Hmm
* This proc needs a new name
* I want to scream but I have no mutant parts
* Fix
* Update species.dm
* Update species.dm
* Update species.dm
* Update species.dm
* Some touch ups
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
* Puts all traits in the globalvars file + CI Testing (#79642)
Fixes#76349
I didn't know that people needed to add any new traits to a global list
so they can be easily read in View Variables, and was pretty shocked to
find out many other people didn't know it was a thing. Let's make it a
thing by testing it using a new CI Python Linter to check this. But oh
no-

There were about 200+ missing traits. Alright, so let's do the
following:
* Move trait defines to their own dedicated folder in the `_DEFINES`
folder.
* Split up the traits mega-file into different files, for better
organization. One for the macros, one for the sources, and a few for the
"trait declarations"
* Run the linter a load of times and add everything to the globalvars
file, removing anything that's no longer used and figuring out where the
best categorization of it is. also minor code improvements. also rename
all of the ones that look weird. also fix list indentations
* Also alphabetize the lists because it's easy
* Move everything to a new `traits_by_type` list, while keeping the
admin one the way it is for the time being while we figure out a better
way to show that list to admins.
* Profit
Mapping trait injectors will now work for any type of trait. You
shouldn't add any trait via this injector though, but you're no longer
limited to coders remembering to add it to that critical list you
needed.
Lays the framework for a better view variables experience. This work is
too lengthy to presently do, but hopefully we can get this done sooner
rather than later. we will need a code-accessible way to view these
traits for such a framework to be implemented, so let's just do that.
Future steps are to break down the mega-declarations file into a folder
full of separate files by typepath, but that requires a lot of auditing.
Does need to happen one day though, there's a lot of mob traits mingled
with datum traits and auuugh we gotta do this later this PR is already
massive.
there's probably ways to game this but this catches _my_ mistakes so
good luck to everyone else (it should work for 99% of everyone)
Nothing applicable to players. However, to mappers, the mapping trait
injector should always be able to add any kind of trait (which is rather
good for the times when you need it).
* Update tgstation.dme
* Update _traits.dm
* Comment these out for now
---------
Co-authored-by: san7890 <the@san7890.com>
* Adds an admin button to send nuke ops reinforcements (#79695)
## About The Pull Request
Often times I want to send a second wave of nukies if the first wave
completely flukes, but sending reinforcements is hard (I don't want to
trigger a whole new nuke team, the Infiltrator is deployed to NT space,
etc).
So I add a button to check-antagonists that allow admins to one-click
send more nuke ops.

I also took the opportunity to polish up the other admin button,
particularly giving a reminder if it's being forced under the pop limit.
## Changelog
🆑 Melbert
admin: Adds a button to check-antagonists that allows admins to send
Nuke Op reinforcements with a single button
admin: Nuke Ops check antagonists now show you full war status (declared
/ not declared)
fix: Fixes multiple nuke teams (or an admin) being able to declare war
at once
/🆑
* Adds an admin button to send nuke ops reinforcements
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fix admins without `R_POLL` getting (an unusable) poll verb (#79461)
## About The Pull Request
Copy paste error, I assume.
`admin_verbs_poll` only contains `/client/proc/poll_panel` which
requires `R_POLL` to use.
## Changelog
🆑 Melbert
admin: Admins without `R_POLL` no longer have access to "Server Poll
Management", not that they could have used it anyways.
/🆑
* Fix admins without `R_POLL` getting (an unusable) poll verb
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes vv of things in lists (#79282)
I forgot name could be a number for list indexes, so this switches to
using `in` instead.
Also improves the error message a little bit so reported issues can at
least say *something* about the value throwing an error.
fixes#79280fixes#79264
* Fixes vv of things in lists
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Precalculates special list var names and avoids incorrect vv targets (#79154)
## About The Pull Request
This adds a global list to precalculate lists that need to be handled
special by vv instead of manually updating such a list. @ LemonInTheDark
brought up a potential issue with handling all lists in the way special
lists are handled, that modifying a list in vv can in some cases result
in the wrong list being opened for editing. This makes only special
lists have the issue instead of blindly accessing all lists the same
way.
* Precalculates special list var names and avoids incorrect vv targets
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry (#78974)
## About The Pull Request
See title.
If someone was abusing signalers previously to cause server lag, going
into list signalers would actually cause even worse lag as byond sat
there and processed thousands of items into a string over and over,
which would cause string format operations on longer and longer strings,
resulting in more and more overhead. This is bad.
So instead there is now a limit to the size of the list, currently I
have that set to 500 although I am open to increasing and even reducing
the number.
I have also made signalers slightly more intuitive by having the
cooldown actually displayed in the ui as a tooltip instead of just being
a secret feature you didnt know about unless you code dived. Also made
the cooldown actually respected by things such as circuitry where it
didnt even implement the cooldown and would happily send as many signals
as you had items connected to your proximity circuit.
## Why It's Good For The Game
Admins won't accidentally kill the server by trying to parse a lag
machines signal list. Players lagging the server? No, how about the
admins trying to fix it!
## Changelog
🆑
qol: signalers now tell you their cooldown and also use balloon alerts
/🆑
* Updates signaler investigate code | Adds some nice QOL changes for signalers | Enforces cooldown on signaler circuitry
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Expands the SS13.lua module by adding loop helpers and functions to get the script runner. (#79081)
## About The Pull Request
`SS13.get_runner_client()` and `SS13.get_runner_ckey` will return the
client and the ckey respectively of the user who ran the lua script. Can
be unreliable after the first sleep or yield.
The SS13 module can now be made local as the tables that need to be
accessed globally have been moved to their own global variables.
Added `SS13.start_loop(time, amount, func)`, `SS13.end_loop(id)`,
`SS13.stop_all_loops()` that allow lua scripts to more easily make
loops. Removed the `timer` parameter from these functions, which
specified the timer subsystem to use.
Documentation on all new added functions have been added in the
lua/README.md
## Why It's Good For The Game
Getting the client who ran the script and the ckey that ran the script
is useful for self contained scripts that are looking for an entrypoint
(e.g. location to spawn some item/mob/structure). `dm.usr` is a special
variable used for other purposes and can be unreliable when used this
way even if there haven't been any sleeps or yields yet, so having a
dedicated variable and function to handle it makes things easier.
Being able to make the SS13 module local allows for more self-contained
scripts. Although this isn't super helpful because `require` will still
load the same object for all lua scripts loaded on the same state.
Basic looping helpers allow for lua scripts to more easily create loops
without needing to recursively do a `set_timeout` or to do a
`while(true) do SS13.wait(1) end` loop.
## Changelog
🆑
admin: Added SS13.get_runner_ckey() and SS13.get_runner_client() which
stores the ckey and returns the client of the user who ran the lua
script. Can be unreliable if accessed after sleeping.
admin: Added timer loop helpers to the SS13.lua module, check the docs
admin: The SS13.lua module can now be made local without causing any
errors.
/🆑
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Expands the SS13.lua module by adding loop helpers and functions to get the script runner.
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Invisibility refactor (#78908)
This adds a tracker for sources of invisibility and a priority system. I
needed this for another thing so I'm doing this first since it touches a
lot of code. As for the bugs fixed in the changelog, it's only what I
noticed while going through everything and there's likely a few more
things fixed with this. This should be testmerged for a while, I'll
bring this out of draft when it feels safe.
🆑
admin: Invisimin can now be used on mobs that are already invisible,
whether through temporary or permanent effects.
fix: Monkeyize/Humanize mob transformations no longer permanently reveal
invisible mobs if they had effects making them invisible otherwise.
fix: Objects with the undertile element that have been made invisible
through other means are no longer revealed by being uncovered.
/🆑
* Invisibility refactor
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* VV Upgrades (#78948)
## About The Pull Request
* Makes special byond lists display properly
* Makes images get a preview in the header
* Makes filters display properly
* Make variable value display a bit more robust to errors
* Kills single char vars
## Changelog
🆑
admin: VV can now display the contents of special byond lists like
filters, or client.images
admin: VV on images now displays the image in the header
admin: VV can now display filters and includes their type
/🆑
* VV Upgrades
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Fixes passing in list arguments in callproc (#78924)
Right now it unrolls positional list arguments.
* Fixes passing in list arguments in callproc
---------
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* count station food verb counts station food (#78864)
## About The Pull Request
it checked for food not on the station
## Why It's Good For The Game
bug bad
## Changelog
🆑
fix: count station food verb now counts food only onstation
/🆑
* count station food verb counts station food
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Pipe gas visuals (#78217)
## About The Pull Request
Primarily this pr is all about getting pipes to have a visual display
for the gas within them. A couple other things of note have been done to
make that easier though:
- A sprite generator that outputs to a dmi has been made for all pipe
variants and the layers. This is because I didn't want to work with
hundreds of pipe sprites just to do minor changes. In the future I would
like to generate things like this during a github action but for the
moment this is just a helper you can use for generating the pipe dmi
files.
- Some minor reorganization of the code in the pipe dm file.
- Some doc comments on things that bothered me
## Why It's Good For The Game
Gives a bit of visual feedback when working with pipes that should
hopefully make people more comfortable around them if they can easily
see if the pipes are empty or are filled with an unknown gas mixture.
Can also serve as a warning to those keeping an eye out for things like
plasma floods.
🆑 ninjanomnom
add: Pipes now have a colored visual display that shows their contents
at a glance.
/🆑
~~The colors for gases could stand to be better, if anyone wants to
suggest alternatives to what I've used please do as I put only a bare
minimum of thought into each choice.~~ I've switched to using the gas
colors defined in tgui constants.

* Pipe gas visuals
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Adds respawn config option forcing respawn as another character slot (#78459)
## About The Pull Request
Adds an option to the respawn config which forces you to pick another
character (slot) before you respawn.
## Why It's Good For The Game
Just an idea i'm throwing out there, not necessarily pushing for it to
be enabled on any servers.
Respawning as an alternative character can be a good way to make people
less frustrated at dying, particularly if paired with the cooldown
config that already exists:
"Oh shucks, I died and got my head cut off and got absorbed and got
spaced by some changeling. I won't be able to finish my project or
whatever. At least in 15 minutes I may be able to join as my botanist
character to try something else rather than having to wait an hour and a
half for the round to tick over."
Also nice for downstream support.
(Obviously you can just, *ban* people who respawn as the same character,
use an honor system, but codifying it seems better than not.)
## Changelog
🆑 Melbert
config: Adds a config option for player respawning that enables
respawns, but forces you pick a new character.
config: "NORESPAWN" has been replaced with "ALLOW_RESPAWN 0". Unlimited
respawns is "ALLOW_RESPAWN 1" and character limited respawns is
"ALLOW_RESPAWN 2".
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Adds respawn config option forcing respawn as another character slot
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* offical to official (#78762)
## About The Pull Request
Fixes "offical" to "official" in several locations - admin fax panel,
admin newscaster, art patron text, a photocopier template, and a corgi
tail pin item description. Adds this common misspelling to the
check_grep.sh ci tool.
## Why It's Good For The Game
I have corrected the typo manually every single time I have sent a fax
from Central Command.
## Changelog
🆑
spellcheck: "offical" has been officially corrected to "official" in
several official locations.
/🆑
* offical to official
---------
Co-authored-by: Isratosh <Isratosh@hotmail.com>
* Basic Mob Flesh Worm (#78744)
## About The Pull Request
Fixes#68614
Converts the Flesh Worm (Armsy) into a Basic Mob.
Most of its behaviour has been moved into a component which we can use
to make arbitrary mobs into linked lists of mobs.
To accomplish this I added a signal which is sent when you call any
`adjustXLoss` proc, let me know if my implementation is "calling the
same signal from several places" by a backdoor, I wanted to avoid
registering to 6 signals but I'll change it if I must.
While I was here I killed the unused "lesser" variant because we stopped
using it. Resultingly, Ascended Armsy doesn't need to distinguish itself
by inflating the sprite, so it doesn't. This means that now flesh worms
are using their sprites as intended to be displayed, but if people
really miss all of its segments being poorly scaled by the byond engine
then I guess I can restore it.
## Why It's Good For The Game

## Changelog
🆑
refactor: Flesh Worms are now basic mobs. Please report any unexpected
behaviour.
sprite: Flesh Worms are a little bit slimmer.
/🆑
* Basic Mob Flesh Worm
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Admin dynamic rule management (#78720)
## About The Pull Request

This PR adds a very ugly menu which allows admins to force dynamic
rulesets to be enabled or disabled.
Some admins asked if someone could add this and it seems reasonably
useful.

The information you have available becomes slightly more detailed once
the game is actually running, because then we know how many players and
how much threat there is.

I don't know why the weight of every midround is 0 when I run locally.
It's fine.
Unfortunately, the interface I have crafted is hideous. This is because
it's not part of tgui and I am not very good at working with byond UIs
without my beautiful typescript. It functions though.
If anyone has any pointers I'll take 'em.
"Force disabling" a ruleset simply ensures it will never run.
"Force enabling" a ruleset disregards minimum population and minimum
threat rules, but doesn't ensure that the ruleset will run. It might
still be skipped due to low weight, insufficient threat to _buy_ it, or
other disqualifying factors.
## Why It's Good For The Game
It was an admin request so presumably they have some plans for it.
It's a less-intrusive way of theming a round than disabling dynamic and
running all the midround rules yourself.
If they want to temporarily set the game to traitorling I guess they can
do that. Or only heretic/cult.
## Changelog
🆑
admin: Admins can turn off dynamic rulesets (or force them on despite
not meeting the qualification criteria) on a per-round basis.
/🆑
* Admin dynamic rule management
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fixes display of appearance type in VV (#78725)
## About The Pull Request
Appearance vars are awful to detect. They have a type var you can
access, for an appearance the value of this var is `/image`. However
`istype(appearance, /image) == 0`. This is good enough for
identification, you might think this just means detecting appearance
would be something like `if(thing.type == /image && !istype(thing,
/image))`, but there's a problem with this: `istype(appearance, /datum)
== 0`. For that matter it seems like all istypes that check if an
appearance is some type fail, so you can't know that it's safe to access
the `.type` var to do that earlier combined check.
Now we get into magic territory, `istype(new /image, appearance) == 1`.
I have no clue internally why this is the case but it seems to be unique
to appearances, and so can be used to identify them from a previously
unknown var. You have to rule out that the thing you're checking is a
path, it would pass the check if the value were `/image` then, but this
is simple enough.
I hate having to know all this, so now you know this too.
🆑 ninjanomnom
admin: Appearance vars in VV now display instead of being left blank
/🆑
* Fixes display of appearance type in VV
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Heretic Ascension Tweaks (#78472)
## About The Pull Request
Some changes to Cosmic and Knock heretic ascensions, in response to
feedback.
- Cosmic Heretics can no longer control their summon while jaunted.
- Additionally the death link element the Star Gazer used... wouldn't
work if there was more than one cosmic heretic. I refactored it into a
component, so that it would.
Frankly there are probably a lot of _other_ abilities which shouldn't be
usable while jaunted but are, but I have been burned in the past by
adding defaults which were applied too widely so we'll leave it
case-by-case for now.
- The Knock rift can no longer summon Flesh Worms of any kind.
- But it _can_ summon fire sharks (we really need to reflavour these...)
and any future "basic mob" heretic mobs (or ones which are converted).
- Additionally the rift can't be clicked by ghosts while it's polling
ghosts automatically because that would create funky empty-minded mobs.
- Finally it goes away when the heretic dies.
## Why It's Good For The Game
For Cosmic Heretics, controlling the Star Gazer in conjunction with
Space Jaunt essentially meant that the heretic was playing an RTS as an
invincible observer with an invulnerable unit, now they have to actually
be present and killable in order to sic The Beast on you.
For Knock Heretics, Minor Flesh Worms are a proof of concept which was
never meant to be used except by admins. They're _barely_ weaker than a
normal flesh worm, extraordinarily tanky, delete walls, and generally
devalue the Flesh path ascension.
Vanishing upon heretic death is because every _other_ ascension is at
least theoretically stoppable except this one. Now this one is too.
It's still _very hard_ to kill the heretic because every _10 seconds_
they can transform into a heretic mob which acts as an extra health
pool.
## Changelog
🆑
fix: If two cosmic heretics ascend in the same round, their star gazer
survival will be linked to each individual heretic and not shared by
just one of them.
fix: You can't click the Knock heretic portal to join as a mob while
already signed up to become a mob.
balance: Cosmic heretics can't order the Star Gazer around while
jaunting.
balance: The Knock Heretic portal cannot summon Flesh Worms, but can
summon Fire Sharks.
balance: The Knock Heretic portal will disperse if its creator is
killed.
/🆑
* Heretic Ascension Tweaks
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* tweaks mob-creation `message_admins()` message (#78654)
## About The Pull Request
Right now it says "ADMIN created 10ea spiders.", which is really odd
syntax since nothing else in the game does this. This just fixes it so
the message reads "ADMIN created 10 spiders.", which is a lot more clear
to my eyes.
## Changelog
I'll be honest I had no idea you could spawn mobs this way and I don't
think it's measurable enough to even put an `admin` changelog.
* tweaks mob-creation `message_admins()` message
---------
Co-authored-by: san7890 <the@san7890.com>
* Adds add/remove mob ability to VV dropdown menu (#78652)
## About The Pull Request
You add spells to mobs via a dropdown in VV but mob abilities via
marking the mob and pressing a button in the admin status panel.
I like opening the VV menu more than I like marking mobs (I am usually
going to need to open it anyway) so I added an alternate route in the VV
dropdown.
## Why It's Good For The Game
It's better for my personal workflow.
## Changelog
🆑
admin: Mob abilities can be granted to arbitrary mobs via the VV menu in
a similar way to spells.
/🆑
* Adds add/remove mob ability to VV dropdown menu
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Valentines and ERTs will no longer get mood boosts from traitor moodener items (#78597)
## About The Pull Request
Valentines and ERTs will no longer get mood boosts from traitor moodener
items
Closes#73432
## Why It's Good For The Game
bugge
## Changelog
🆑
fix: Valentines and ERTs will no longer get mood boosts from traitor
moodener items
/🆑
* Valentines and ERTs will no longer get mood boosts from traitor moodener items
---------
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
* Refsearch Info Injection (#78574)
## About The Pull Request
Adds a proc that types can override to inject extra information into the
refsearch
This'll allow us to more easily track and deal with refs held by general
datums, like callbacks.
I've implemented a template example FOR callbacks, to provide an example
and assist in solving future issues
Done to help lumipharon from TGMC, they were having trouble with this
case.
This isn't perfectly optimized, but this proc has a LOT of issues just
in general. Need to rework it to cut down on string churn someday
* Refsearch Info Injection
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Allows admins to overrule God (#78429)
## About The Pull Request
Adds a "manage religious sect" verb to the "game" menu of the admin
panel.
It can be used to assign the chaplain's sect if they haven't picked one
yet, or reassign it (to a different one, or to nothing) if they already
have.
This is likely mostly going to be used for ahelps where someone
misclicks or suddenly logs off and wants to be replaced by a different
chaplain with different ideas.
## Why It's Good For The Game
Admins asked me to make it
## Changelog
🆑
admin: Admins can now reset or modify the chaplain's sect from a UI
panel
/🆑
* Allows admins to overrule God
* Updates modular to use the reset signal for nulling the altars instead
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Fixes Boneless Smite (#78449)
## About The Pull Request
The boneless smite was using a list of strings instead of a list of
numbers, and didn't work as a result. This just fixes it. Fixes#78437.
## Why It's Good For The Game
Bugfixes good.
## Changelog
🆑
admin: Boneless smite should work properly again.
/🆑
* Fixes Boneless Smite
---------
Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
* Replaces "Bread" smite with "Objectify" (#78445)
Instead of turning people into bread, the bread smite can now turn people into any object (including bread).
* Replaces "Bread" smite with "Objectify"
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Adds NONE to empty bitflags in VV (#78355)
This has annoyed me forever. Let's do somethin about it.
* Adds NONE to empty bitflags in VV
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support
* Wound refactor two compatability (#23618)
* Delam emergency procedure moth (#23483)
* safety moff
* delta/whitespace/examine
* icebox
* moff poster
* moff poster
* Update DelamProcedure.tsx
* Update scram.dm
* sound plays during warning
* remove nightshift, theres already a global proc
* scrubber hint
* missed that define
* Apply suggestions from code review
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* covered by ui_interact
* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Automatic changelog for PR #23483 [ci skip]
* Automatic changelog compile [ci skip]
* [non modular] disables TG "hold up" for the foreseeable future (#23607)
Update gun.dm
* Automatic changelog for PR #23607 [ci skip]
* [MIRROR] Desouls Hivelord [MDB IGNORE] (#23609)
* Desouls Hivelord (#78213)
## About The Pull Request

Replaces the sprite of the hivelord with a new one, in my continuing
quest to annihilate the old asteroid mob sprites.
A (never completed) asteroid mob resprite was actually my first PR, this
one is my 200th.
I am also planning on fucking with basic mob versions of these mobs some
time but the sprites can be atomised out.
In addition to replacing the old-ass MSPaint sprites, this PR also adds
a short death animation effect to the hivelord brood (from hivelords or
legions) which looks nicer than them just vanishing instantly upon
death.
Look at this video for an example of the animation:
https://www.youtube.com/watch?v=cKaskN5-y2A
## Why It's Good For The Game
Looks nicer.
## Changelog
🆑
image: Hivelords have a new sprite.
image: Hivelord and Legion brood have a death animation.
/🆑
* Desouls Hivelord
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Automatic changelog for PR #23609 [ci skip]
* [MIRROR] Updates chem factory tank sprites [MDB IGNORE] (#23608)
* Updates chem factory tank sprites (#78209)
Updates chem factory tank sprites.
* Updates chem factory tank sprites
---------
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* [MIRROR] Rice Dough can be made in a beaker [MDB IGNORE] (#23611)
* Rice Dough can be made in a beaker (#78062)
## About The Pull Request
Rice dough can be made in a beaker using 20u of Rice Flour and 10u of
Water. 10u of Rice Flour is made from 5u of Rice and 5u of Flour. Rice
dough can still be crafted manually using the crafting menu and the
original recipe.
## Why It's Good For The Game
Cooks can sometimes get swamped with work, especially on a high-pop
shift or when there are no botanists. By making rice dough more
convenient to make, cooks don't need to spend as much time in the
crafting menu.
Rice Flour is made from mixing equal parts Rice and Flour. Since no
recipe other than Rice dough uses both Rice and Flour in it's Recipe, it
should be fine to turn those regents into the intermediate reagent "Rice
Flour".
Fixes#77966
## Changelog
🆑
qol: Rice Dough may be made in beaker instead of being crafted, but the
rice and flour must be added first
/🆑
* Rice Dough can be made in a beaker
---------
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
* Automatic changelog for PR #23608 [ci skip]
* Automatic changelog for PR #23611 [ci skip]
* f
* awda
* unused type!!!
* Apply suggestions from code review
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* oh hey unused defines! bye
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
---------
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
* Removes Sleep Printing Library (#78324)
## About The Pull Request
#76286, which spawned it, is dead. Don't need to hang onto it anymore
per moth's instructions
* Removes Sleep Printing Library
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes the admin log when adding a new admin from the permissions panel not displaying the ckey of the new admin (#78245)
## About The Pull Request
It was just displaying nothing, which was only a mild annoyance, but
after tolerating it for a few years, today I've had enough and fixed it.
## Why It's Good For The Game
Finally others can know who was added to the team without having
`R_PERMISSIONS` themselves.

## Changelog
🆑 GoldenAlpharex
fix: The message sent to admins when a new admin has been added via the
Permissions Panel will now properly show the new admin's ckey.
/🆑
* Fixes the admin log when adding a new admin from the permissions panel not displaying the ckey of the new admin
---------
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* The Create Command Report verb has the option to prevent printing reports now (#78208)
## About The Pull Request
Title summarizes all.
## Why It's Good For The Game
<details>

</details>
Prevents this nightmare on a comms console during an event with
particularly high centcom announcement traffic.
No, don't come at me with "it's soul", it's just highly annoying to deal
with and having the option to prevent it is better. If you leave a
downvote and tell me in the comments that I'm "taking" soul out of the
game then I will come find you and actually take your soul out of your
body.
## Changelog
🆑
admin: The "Create Command Report" verb now has the option to not print
report papers at communications consoles.
/🆑
* The Create Command Report verb has the option to prevent printing reports now
---------
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>