* Splits Pirates into Two Subgroups, One For Light Midrounds And Another For Heavy (#73881)
## About The Pull Request
This PR splits the Pirate midround antagonists into two separate groups,
normal and dangerous. Normal pirates are the human, silverscale, and
psycker groups, and they are all light antagonists now, meaning they can
show up early in the round, similar to when a revenant or nightmare can
spawn. Dangerous Space Pirates only consist of the Skeleton Crew, and
they will remain as heavy weight antagonists with the same spawning
restrictions as it is currently. I also fudged with the crew required
value some for both, not that it makes a huge difference.
Since pirates were split into two separate groups, both versions have a
reduced dynamic weight of 3, from 4.
Also added a sanity check to the pirate's dynamic ruleset to make sure
there are remaining pirates to be spawned for the ruleset to be allowed.
Also added a check to the pirate event itself to prevent runtimes when
no pirate team is available to be chosen, unless an admin specifies what
pirate team they want to use.
## Why It's Good For The Game
As it is right now, there is a massive difference between the skeleton
pirates and the rest of the pirate types. Skeleton Pirates have cannons,
innate space immunity and other small benefits which make them much more
threatening than the other pirate crews. In our current system,
something like Psycker pirates can spawn in lieu of something like blob
or xenomorphs when they aren't anywhere near the same level of
threatening, so moving the less dangerous pirates off to be light weight
midrounds seems like a good move, especially since we need more
lightweight midrounds to keep the variety up anyway.
Keep in mind these designations are not permanent and may change at the
request of maintainers or as the pirate teams get nerfed/buffed.
## Changelog
🆑
balance: The pirate gangs have been split into two subcategories, one
which can spawn earlier in a shift and one that spawns later as they
currently do. While skeleton pirates will still be only seen later into
the shift, expect to see the other pirate gangs earlier on.
fix: Prevented the pirate event from runtiming when no possible pirate
gangs were available.
fix: Pirates can no longer be selected by Dynamic if there are no more
pirates gangs that can be used.
/🆑
* Splits Pirates into Two Subgroups, One For Light Midrounds And Another For Heavy
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Limit theft/destroy secondary objectives to items which at least one person cares about
* Update objective_items.dm
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Buff Abductor Spawn Weight From 2 to 4 (#73819)
## About The Pull Request
This PR buffs abductor spawn weight from 2 to 4. With this, abductors
have the same weight as revenant and most other light midround
antagonists, and matches their spawn weight prior to getting moved to
being light weight antagonists as opposed to heavy.
## Why It's Good For The Game
Abductors in my opinion are currently needlessly too rare. This will
resolve the issue.
## Changelog
🆑
balance: Abductors' midround spawn weight has been increased. Expect to
see them more often
/🆑
* Buff Abductor Spawn Weight From 2 to 4
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* [no gbp] Latejoin Rulesets sync (#73772)
## About The Pull Request
Syncs the codebase inherent values for dynamic rulesets with the current
config-side values used on our LRP servers.
## Why It's Good For The Game
This is technically irrelevant for the game as these numbers are the
ones currently used on the servers - it's more for the good of the
codebase than the game.
## Changelog
🆑
balance: Latejoin dynamic rulesets have been rebalanced to reduce the
frequency of midround revolution spawns.
/🆑
* [no gbp] Latejoin Rulesets sync
---------
Co-authored-by: Spookuni <70739420+Spookuni@users.noreply.github.com>
* Fixes hijacked shuttles not counting as escaped, cleans up associated code (#73623)
## About The Pull Request
Fixes#72240
So, in the past, `onCentCom` ran a check at the end that said "if we're
on centcom z, in centcom area, or in shuttle that is endgame launched:
return TRUE"
Meanwhile its brother `onSyndieBase` did not need to run the same
checks, because it was also on the centcom z-level.
This meant that for the purposes of `considered_escaped`, `onCentCom`
pretty much entirely eclipsed `onSyndieBase`, only mattering for, well,
Nuke Ops
So the fix was simple - add the check for "in shuttle that is engame
launched" to `onSyndieBase`.
I took this opportunity to do a quick audit of associated "escaped" and
"alive" code. Did you know that hardcore random only checked that you
were on centcom to award survival points? Instead of any other checks
for escaped like stat?
Also the ancient "romerol zombies can't be used as an easy way to
greentext escape" was broken, because it checked the wrong species ID?
Bonus performance optimization: `in area` -> `in
area.get_contained_turfs()`
## Why It's Good For The Game
Hijack does not turn around to become an L
## Changelog
🆑 Melbert
fix: Hijacked shuttles now count as "escaping alive" once agian
fix: Hardcore random survival now actually checks that you've escaped
alive, and not just made it to centcom
fix: Intelligent zombies can now escape.
fix: Infectious zombies now don't count as escaped as intended.
/🆑
* Fixes hijacked shuttles not counting as escaped, cleans up associated code
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Write roundstart logout report to admin log (#73672)
## About The Pull Request
- Writes the roundstart logout report to the admin log
- Increases the threshold for the report, clients > 10 minutes are
deemed AFK
## Why It's Good For The Game
While the report is broadcasted in chat, it's not actually saved in the
log. Sometimes we want to go back and read this later.
## Changelog
🆑 LT3
admin: Roundstart logout report is written to the admin log
admin: Roundstart report threshold is now 10 minutes
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Write roundstart logout report to admin log
* timer
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
* Adds required template keys to some midround rulesets, fixes midround nuclear operative leaders from spawning on arrivals (#73620)
## About The Pull Request
`/datum/antagonist/nukeop/leader/move_to_spawnpoint()` overrides
`/datum/antagonist/nukeop/move_to_spawnpoint()`, which is responsible
for calling `SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE)`
Nuke op leaders also get created first thing, so they always got sent to
arrivals
`move_to_spawnpoint` now is not overridden by anything, location is now
obtained though `get_spawnpoint`
But this doesn't solve the entire issue! Seemed like there was a race
condition in that, on nukie team creation, it looked for the nuke to
generate the nuke code. But it created the team before creating the nuke
(and template). So it runtimed and broke, no nukies.
So I had to go deeper.
Rulesets have this list, `ruleset_lazy_templates`, that none of the
midround rulesets used. CC @ ZephyrTFA on this, but it seemed like it
caused a few issues related to lazyloading by missing them?
I added the keys to abductor and nukies. and also ninja even though
it'll probably never be used
I also also made the kidnapping objective for traitors pre-emptively
load the holding facility on objective *taken*, rather than waiting for
the exact moment which the victim is kidnapped.
(Should) Fix#72248
## Why It's Good For The Game
LATE FOR WORK
## Changelog
🆑 Melbert
fix: Nuke Ops Leaders midround don't spawn on Arrivals Shuttle late for
work
fix: (Maybe) fixes some additional issues related to midround nukie /
abductor spawns
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds required template keys to some midround rulesets, fixes midround nuclear operative leaders from spawning on arrivals
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Console Hack / Unfavourable Events won't run ghost roles which don't have time to do anything
* nya
* Update dynamic_unfavorable_situation.dm
* Update dynamic_unfavorable_situation.dm
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
[NEW GHOST ANTAG] The Paradox Clone (#71141)

[DESIGN DOC]
https://hackmd.io/@tGKknGe5Q7qtddEspif79g/BJ3w9QLri/edit
Bluespace technology has destabilized the very fabric of reality, even
time itself!
Sometimes during a shift, it's possible for a PARADOX CLONE to spawn
somewhere on the station (usually maintenance). This paradox clone has
the exact appearance and DNA as a random crew member on the station,
wearing the same clothes they were at the start of the shift, including
their ID.
To maintain timeline coherency, the paradox clone must now hunt down and
kill the original and take their place or die trying, if the original
survives they have failed.
The only thing the paradox clone spawns with is a mechanical toolbox
that helps them from being stuck in maints if their ID doesn't have
maints access.
The inclusion of this antag encourages good crew coordination and adds a
less destructive, more personalized antag to the roster.
This antag rewards good detective work, as both the clone and the
original are identical in every way, and will therefore require a
detective to break out their detective skills to figure out who the
clone is.
Also a possible tie-in with the Chrono Legionnaires in the future.
🆑
add: Time and space has destabilized even further due to Nanotrasen
bluespace research, now, on occasion, clones from different timelines
can appear on the station and hunt you down to maintain timeline
stability! Beware the Paradox Clone!
/🆑
---------
Co-authored-by: 1bw0kopy <xz2rbf23@protonmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
(cherry picked from commit 214174874c)
Co-authored-by: Shadyyy66 <114319683+Shadyyy66@users.noreply.github.com>
* Fixes admin "power failure" secret. (#73277)
## About The Pull Request
- Fixes "power failure" secret not working.
`GLOB.the_station_areas` is a list of types, not list of areas.
This `as anything` was causing runtimes, as it was accessing values on
types, and not area instances.
Swaps it over to use `GLOB.areas` + location check that the areas are on
station Z level.
- Fixes "power failure" secret having no announcement if no grid check
has occurred
`GLOB.power_failure_message_cooldown` starts at 0, so it was always
lower than `world.time` if an admin uses it when no grid check has
occurred. Delving deeper, these should not have been linked whatsoever.
The power failure spam prevention is now tied to the grid check event
itself. I also don't believe it to be necessary, as we fixed discounts
having infinite stock, but I'll keep it just cause.
## Why It's Good For The Game
Secrets work as advertised
## Changelog
🆑 Melbert
fix: Admins, "All areas unpowered" in the secrets menu will now function
again.
/🆑
* Fixes admin "power failure" secret.
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Allows MODSuit AIs to count towards Steal AI Traitor Objective (#72902)
## About The Pull Request
On the tin. It was simpler than it looked, just had to genericize the
behavior a tad bit (the proc is not called unless the type in either
targetitem or altitems is matched in
`/datum/objective/steal/check_completion()`). I decided that since the
current framework restricts us to only having a set range of items that
we may as well be safe and check the var that references the "stored"
AI, which works well enough.
## Why It's Good For The Game

Very cool!
Fixes#72205. Almost certainly an oversight, because if you create an AI
that is lawed to obey you regardless of anything in order to serve as
your modsuit buddy... it's just a pain and completely un-intuitive to
have to pop it out of the modsuit just so you can get the epic
greentext.
## Changelog
🆑
fix: After over a year of continuous research, the Syndicate have
finally managed to crack Nanotrasen's Protocol for transferring AIs from
an intelliCard into a MODsuit, and vice-versa in order to extract the
valuable AI in a method fit-for-sale. In short: The "Steal a Functional
AI" objective will work if the "captured" AI is in a MODsuit.
/🆑
* Update objective_items.dm
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* 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>
* Made "free objective" text consistently capitalized. (#71388)
## About The Pull Request
I noticed recently that the "free objective" placeholder text that pops
up when an objective can't be assigned a target is not consistently
capitalized - it's "Free Objective" in some places and "Free objective"
in others. I have made it "Free objective." in all places, including
punctuation - to be more consistent with the basic formatting of all
real objectives.
## Why It's Good For The Game
Free objectives are little more than an error handler for if an
objective somehow can't find _any_ targets. However, it still looks a
little bad when they don't match the formatting of real objectives, and
it looks worse if you somehow gain multiple free objectives and they
aren't capitalized the same. In this rare circumstance, consistency is
just nice.
## Changelog
🆑
spellcheck: Made "free objective" text consistent.
/🆑
* Made "free objective" text consistently capitalized.
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
* Strays away from GLOB.machines when possible (#71100)
## 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.
* Strays away from GLOB.machines when possible
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Sets a default list of ruleset enemies / Fixes Latejoin Provocateur being very common(?) (#70870)
Sets a default list of ruleset enemies for all rulesets, fixing other latejoin antags from runtiming, leading to revolutions being so common.
* Sets a default list of ruleset enemies / Fixes Latejoin Provocateur being very common(?)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes "absorb another ling" objective (#70413)
Purchased powers was changed to assoc list, and this was not updated
* Fixes "absorb another ling" objective
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Make Abductors a Light Midround Antagonist (#70324)
* Make abductors a light ruleset antag
* Abductor Weight from 4 to 2
* Make Abductors a Light Midround Antagonist
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Lowers the in-repo threat cost of heretics + also their requirements (#69216)
* lowers the threat cost / pop of heretics
* Adjusts heretic smuggler too
* Lowers the in-repo threat cost of heretics + also their requirements
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Spends 6 hours teaching Papercode how to conform to better standards and practices, and also fixes a trivial 5 minute bug with command reports.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Power failure event will now only provide an announcement if the previous power failure has ended (#68943)
Power failure event will now only provide a message if a previous power failure has ended
* Power failure event will now only provide an announcement if the previous power failure has ended
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* add some tests for if empty space is present (#68582)
About The Pull Request
Fixes: #62140
Fixes part of: #53689
Why It's Good For The Game
Aurora Caelus should no longer run on icebox as intended.
Station goal on stations without space shouldn't get station goals that require space.
Changelog
cl
fix: Added a test in Aurora Caelus event for if the station has the ability to show it.
fix: Stations without space should no longer receive station objectives that require space to be present.
/cl
* add some tests for if empty space is present
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
* Spinward Threat Advisory: Making Dynamic Threat Announcements Make More Sense (#68754)
* Spinward Threat Advisory: Making Dynamic Threat Announcements Make More Sense
Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
* fixes nuke ops leaders not spawning (#68855)
this code was untestable because
it required a config flag to be set on, this flag is false by default on local
it requires multiple people on the server
so it turned out that leader spawning is broken. this should fix it
* fixes nuke ops leaders not spawning
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Nuke Ops Leader update (#68830)
makes the nuke op player with the most nuke ops playtime the leader
makes the leader start with loud mode on on their radio
idea for that second one from BeeStation/BeeStation-Hornet#6631
making the most playtime nuke op the leader prevents 1st time players from rolling it, they will generally be more competent, and able to be entrusted, just like you can trust a head of staff more. a player with more competency will also probably be better at actually leading and not just clicking a button to open the ship, if they try.
the radio is a tiny change to make the leader matter more, and able to give better leadership, because im pretty sure most people dont even realize the leader has access to loud mode
* Nuke Ops Leader update
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>