## About The Pull Request
Fixes#76310
`sound_override = TRUE` makes it so that no sound is played for the
announcement since "TRUE" isn't a sound file, but that might be bad code
let me know
## Why It's Good For The Game
Sending the message over the radio makes the AI "speak" it, so TTS plays
from AI at the same time as the VOX sounds, which makes the announcement
sound bad for the AI and anyone around them. This turns it from being
sent over the radio to an announcement so that TTS doesn't apply. It
also just makes more sense having the VOX announcement sent as an
announcement rather than just a normal radio message.
## Changelog
🆑
qol: AI VOX messages are sent over announcement instead of radio
fix: AI VOX messages work properly on multi-Z stations
/🆑
## About The Pull Request
Removes emergency meetings. Uh, let me know if I missed anything
## Why It's Good For The Game
We gotta come up with NEW ways to ruin the round each year, this one's
so old and busted
## Changelog
🆑
del: Votes out some sussy emergency meeting code
/🆑
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.
## About The Pull Request
Hey there,
This took a while to do, but here's the gist:
Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.
Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.
Scenarios this PR corrects:
* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*
(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game
If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).
Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.
I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.
(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
## About The Pull Request
Xenomorphs who are a product of the roundstart xenobio egg delivery will
now spawn as "Captive Xenomorphs", who receive an objective to break
containment. Here's how it works:
When a delivery egg is generated that area will be marked as the
"captivity area". Xenomorphs born within this area now have their own
team, and have their own section in the roundend report that will
greentext them based on if they were able to survive and escape
captivity. Xenomorphs born outside of this area will spawn as normal
Xenomorphs, with no escape objective or special fanfare.
To further encourage people from actually taking the role and
potentially resigning themselves to an hour in Xenobio CBT prison, the
first of the hive gets their own header on the roundend report.
(When I say "team" here, I mean they receive a different antag team
datum. They're still able to collaborate and cooperate with other
Xenomorphs, they just have a different title and extra objective in
addition to the bonus roundend report limelight.)


(This also adds a basic "survive and advance the hive" objective for all
xenomorphs, since their objective popup was otherwise completely blank).
Since the captivity area is entirely dependent on the location of the
egg itself, admins can plop one of these down anywhere, and mappers
don't have to put the egg mapping helper specifically in Xenobio.
For clarification -- To be qualified for the Captive Xenomorph team, **a
delivery egg must be spawned**, and the xeno you inhabit must be born in
the same area the egg was spawned. If the queen breaks captivity and
starts nesting elsewhere on the station, their children will be born as
normal Xenomorphs, not Captive Xenomorphs.
## Why It's Good For The Game
Adds a bit of distinction, and gives bragging rights, to anyone bold
enough to take a roundstart xeno roll and escape with it.
The Xeno egg delivery is already rare enough, I think it deserves a bit
more fanfare (especially considering the dramatic impact it sometimes
has on the direction of a round).
## Changelog
🆑
add: Xenomorphs born in the room the roundstart delivery egg was spawned
in will be part of a special "captive xenomorph" team, tasked with
escaping and tracked in the roundend report.
fix: Regular Xenomorphs no longer receive a blank objectives popup on
spawn.
/🆑
## About The Pull Request
Admins now have a verb to add footnotes to the roundstart threat report.
These messages can be signed, and multiple can be submitted at once.

(If no footnotes are submitted, the report does not display the
"additional notes" section)
This ALSO adds a verb to delay the roundstart threat report
indefinitely, to give some extra time. If you turn it off, be sure to
toggle it back on when you're done!
## Why It's Good For The Game
Gives admins a way to set the tone for a shift, give IC advisory on
stuff, bully the command players, or just add some flavor to the report.
We already give these chuckleheads enough platforms to shitpost from.
What's one more?
## Changelog
🆑
admin: new admin verb -- Command Report Footnote. Lets you attach a
signed message to the roundstart command report.
admin: new admin verb -- Delay Command Report. Lets you delay the
roundstart command report indefinitely.
/🆑
## About The Pull Request
This replaces needless GLOB.machines with more precise lists whenever
one existed, plus adding a new one for CTF machines.
## Why It's Good For The Game
GLOB.machines holds every single /obj/machinery in the game, so checking
the whole list for stuff is pretty big. This aims to cut that down by
using smaller lists whenever possible. I also gave CTF a new list
because it checked machines very often.
## Changelog
Nothing player facing.
* Fixes halloween races.
- Fixes a race condition involve checking for holidays befores SSevents is instantiated. Now, holiday checking is done through a helper, which will ensure the holidays list is created and filled before checked.
🆑
add: The captain can now sometimes call emergency meetings using the communications console! Hopefully the crew will be able to sus out any imposters who might be among them!
/🆑
Creates update_name and update_desc
Creates the wrapper proc update_appearance to batch update_name, update_desc, and update_icon together
Less non-icon handling code in update_icon and friends
Signal hooks for things that want to change names and descriptions
99%+ of the changes in this are just from switching everything over to update_appearance from update_icon
This PR adds station traits which are essentially small changes to a normal round that can be used to create small variations in how a round might play out, sometimes there might be only one, very simple trait, but you might have a round where they have a somewhat bigger impact, to make rounds feel slightly more different from each other.
The following traits have been added:
Positive:
Lucky winner - Free pizza and beer every 6-12 minutes
Galactic Grant - Larger starting funds for cargo
Premium internals boxes - emergency box has flare + radio as bonus
Bountiful bounties - Bounties pay 20% more
Strong supply lines - Imports 20% cheaper
Filled maint - More loot in maint
Fast shuttle - Cargo shuttle is faster
Free scarves - Free scarfs if a slot is free
Neutral:
Bananium shipment - Clown starts with 5 sheets of bananium (Neutral because this helps noone but the clown)
Unnatural atmosphere - Lava planet can get more restricted gasses
Unique AI - Random lawset at roundstart for AI
Ian adventure - Ian teleports to a random spot on the station
Glitched PDAs - PDA's have a different beep
Announcer intern - Changes the announcement messages to sound like they're from an intern at Centcom
Negative:
Carp infestation - Carp event is more common and can start earlier
Weak supply lines - Imports 20% more expensive
Blackout - Station lights are partially broken around the station
Empty maint - Less loot in maint
Overflow bureacracy mistake - Random overflow job (From a vetted list)
Late Arrivals - Everyone starts in arrivals
Random spawns - Random spawn location (by drop pod)
Slow shuttle - Cargo shuttle is slower
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@gmail.com>
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
* Refactor several log lines to use datum_info_line and atom_loc_line
* Add default return strings from datum_info_line and atom_loc_line
* Add parentheses around atom_loc_line data
* Change more logs to use atom_loc_line
* Add check in atom_loc_line for turfs to avoid calling get_turf on them
* Re-add removed 'at'
* Replace datum_info_line with key_name and atom_loc_line with loc_name
* Refactor logging functions
* Avoid double-logging self-interactions
* Fallback to simple stringification if all else fails in key_name()
* Rewrite muscle spasm logging to use log_message
* Standardize logging of martial arts
* Tweak individual logging panel look
* Fix individual logging panel source
* When I typed || I really meant &&
* Fix Telecomms logging always showing client logs in the panel
* Reverts addition of buggy ownership log to panel
* Remove colon
* Fix missing log_directed_talk tag
* Add warning for missing type in log_direted_talk
* Change warnings to stack_traces
* Add square brackets around fallthrough key_name() case to help parsing
* Allow atom arguments/src in log_*() functions
* Change log_combat call with null argument to log_message
* Change mecha types' log_message() arguments to match atom and mob version
* Add key_name() case for atoms
* Fix resist_grab() unsetting pulledby before log_combat gets a chance to use it
* Fix log_globally logic
* Add logging for hitting objects with items
* Move log_combat() to atoms.dm
* Use utility functions for object stringification in log_combat()
* Use utility functions for object stringification in log_combat()
* Add missing logs for interacting with display cases
* Rewrite log_combat() comment
* Add missing space in log_combat()
* Add logging for hitting grilles barehanded
* Add missing ..()
* Announced messages while drunk will be slurred
* Minor announcements, too!
* Update requests_console.dm
* Update communications.dm
* Fixup.
* Update requests_console.dm
* Adds locations to speech and related communications
Refactors how logging is handled for these.
* changes
* ahhhhh
* preemptive merge conflict undoing maybe?
* Let's not delay this further
* Adds SScommunications subsystem
🆑 coiax
add: Communication consoles now share cooldowns.
/🆑
Sharing cooldowns is good, having a central place to make announcements
is good. This moves some of the machinery for announcements out of the
consoles, which coincides with some plans I have for the communications
machinery of the station anyway.
* Oh yeah, AI's make vox announcements
* Removes priority for non-firing subsystem
* Moves the defines
* Removes dem defines
* Decoded input