## About The Pull Request
Fixes#85028
Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.
Closes#92760
Just removes the species exception checks for not making sense
Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.
## Why It's Good For The Game
Stops a million excessive calls to `check_obscured_slots`
Makes obscured behavior more consistent
Makes obscured behavior easier to use
Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)
## Changelog
🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Pirate export markets now check against both pirate markets AND cargo
markets when selling loot.
In layman's terms, you can sell everything you used to be able to sell,
like crates and stolen materials, instead of pirate-only loot like
credit chips or kidnapped victims.
I sure hope this doesn't break the unit tests.
This was done by making the export loop accept a list of markets, as
suggested in #91349.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Closes#91349, for the most part. Parrots are still sold for 0 credits
but I'm pretty sure that issue is unrelated to the market issue.
I'll make a new issue report focusing on the parrot matter if this goes
through.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑 Rhials
fix: Pirates can sell minerals and other cargo exports on their bounty
pad again.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
Restores victims of a heretic sacrifice's blood to blood_volume_okay if
they need it upon arriving in the mansus.
Does not conflict with #92119.
## Why It's Good For The Game
closes#88557
As was said in the issue, dying because you were too asleep to do
anything about it is lame. The determination buff already gives you
quite strong blood regen, but it's the initial value that counts.
## About The Pull Request
Removes cargo/warehouse area from the wizard Grand Ritual blacklist
## Why It's Good For The Game
The written reason was that Kilostation has an area mapped as
cargo/warehouse in space offstation, and Kilostation is long gone. No
reason for it to be on the blacklist anymore. The comment even says
"this should be fine".
## Changelog
🆑
fix: Cargo's warehouse is now magically charged enough to cast the Grand
Ritual
/🆑
## About The Pull Request
https://github.com/user-attachments/assets/074a0959-5dce-40ef-8eb5-d2ad86117d83
Fixes an old bug where abductor agent disguises were revealed after
moving between z-levels. While stealth is active, the vest now listens
for z-level changes and reasserts the disguise overlays on the next
tick; it unregisters this listener when stealth is deactivated.
## Why It's Good For The Game
Fixes#92555
Prevents unintended reveal of abductors during multi-Z movement
## Changelog
🆑
fix: Abductor agent disguises no longer break when moving between
z-levels.
/🆑
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
## About The Pull Request
Oh man, so this entire pr started because of two things:
1. A kinda hacky fix to #92123 that got closed a good while ago.
2. A borg I know mentioning you can't do custom say verbs over robotic
talk.
Which subsequently led me down this rabbit hole of say modes and custom
say verbs.
So! The most wide-reaching thing this does is merge the custom say
verb/radio emote logic that used to be specialcased in
`compose_message(...)` into `say_quote(...)`, renaming this to
`generate_messagepart(...)` with its new functionality. This means
things that don't use the exact same chain as living things talking
normally can still generate custom say verbs if given that message
modifier.
Then, we split up say modes into a "can we do this" and "try to do this"
check to reduce conflicts (like #92123), and forward more of our data to
the latter. This allows us to then edit the say modes to actually make
use of that data, and with the previous addition of
`generate_messagepart(...)` allow for custom say verbs to be used.
In doing this I realized the logging was kind of awkward and all over
the place, so we create the new logging helper `log_sayverb_talk(...)`
which handles selecting how we should log things based on the given
message modifiers.
For better or worse I forgot about this pr for a few weeks, so I don't
perfectly remember all the details, but those are the big key parts.
## Why It's Good For The Game
Fixes#92123.
I think custom say verbs are some of the best flavour we have for
talking over radio, and any situation benefits from that being possible.
It's great to be able to tap your microphone, and it's hilarious for an
AI to be able to emote beaming an image directly into the heads of their
borgs over robotic talk.
The rest is mostly cleanup.
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Fixes#92454 by making it so Nar'Sie can't be spam-clicked at the speed
of light to spawn infinite cult shells and blow up your ears.
Instead, clicking on Nar'Sie will now give you an input box asking if
you want to become a harvester or not.
Additionally, cultbanned individuals can no longer interact with her
either.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Nar'Sie no longer escapes into the real world and does grievous bodily
harm to your ears when some joker decides to spam-click her.
Additionally, it feels smoother to click Nar'Sie and be able to
immediately become a harvester, versus clicking Nar'sie and then having
to twiddle your thumbs for 10 seconds waiting for the ghost query to
end.
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
fix: Nar'Sie can no longer be spam-clicked as a ghost and destroy ears
via infinite shell creation.
fix: Cult-banned players can no longer interact with Nar'Sie
qol: Interacting with Nar'Sie as a ghost no longer creates a ghost query
and instead allows you to immediately become a harvester after
confirming you wish to become a harvester.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
This PR fixes wrong usage of bitflags in a few places, where instead of
bitfields lists were used.
## Why It's Good For The Game
It will help prevent problems that can be a thing in the future,
improving consistency of the codebase.
## About The Pull Request
Ammo box `multiload` var was changed into a bitflag covering
`AMMO_BOX_MULTILOAD_IN`, and `AMMO_BOX_MULTILOAD_OUT`, respectively. By
default, ammo boxes have both multiloading in and out, while magazines
only have multiloading in, which means you can't use magazines as
speedloaders, but you can still feed ammo into magazines quickly if you
had, say, an ammo box for that magazine's caliber. Or... something.
---
Also adds an icon state for .223 casings, which is just an edit of the
old 7.62 casings to be shorter.
<img width="403" height="89" alt="image"
src="https://github.com/user-attachments/assets/b3206b94-c2b3-4b90-8162-b4c620bbe4cf"
/>
---
Also adds a description for toy gun magazines.
## Why It's Good For The Game
Splitting ammo box multiload into "multiload in" and "multiload out"
means you can't use an ammo box as a speedloader, which I thought was
silly. Emergent gameplay, sure, but also silly.
.223 having a unique icon instead of just looking like any other pistol
casing is nice (read: pistol-caliber casings from a rifle round annoyed
me).
Toy gun magazine thing was for funsies at this point.
## Changelog
🆑
code: Ammo boxes' multiload variable is now a bitflag that determines if
a magazine can be multiloaded into or out of. Ammo boxes can multiload
in or out, while magazines can only multiload in.
image: .223 ammo now has a distinct casing icon.
fix: Foam force magazines now have a proper description.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
Changes human name to update whenever anything that could result in
their visible name changing occurs, such as changing IDs, equipping
gasmasks, picking potted plants, etc. Currently name updates occur every
``Life()`` tick and in a few "special" cases, which causes a lot of name
changes from sources such as equipment to not apply until the mob ticks,
and makes us waste a tiiiny bit of CPU time on name updates.
I've also slighly cleaned up human /Life() and made species'
``spec_life()`` not run when the mob is dead, as it was causing certain
unintended interactions, such as slimepeople regenerating blood while
dead.
## Why It's Good For The Game
Microoptimization, ensures that correct names are always used (in case
something could update their name but the mob hasn't ticked yet), plus
its just a cleaner implementation
## About The Pull Request
Adds a warning in the DNA Extract Sting helptext that you won't be able
to absorb bodies you've stung with it.
Also changes several "you"s and "your"s in the descriptions into the
proper "we"s and such.
## Why It's Good For The Game
closes#92373
Most of them already use "we"s "us"s and "our"s, and its oddly
inconsistent as is
## About The Pull Request
well. here it happened, as foretold. whoops.
## Why It's Good For The Game
yeah uh. fuck
## Changelog
🆑
fix: ghosts can't buy heretic powers
/🆑
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
## About The Pull Request
Dragon rifts no longer take damage from telekinesis objects.
## Why It's Good For The Game
Telekinesis is way too oppressive against dragons. With how most maps
are laid out, you'll always have the opportunity to destroy the
(surprisingly weak) carp portal from behind a window or airlock. If not,
you can just wait until the dragon is distracted with fighting off the
entire crew and smash it from a safe distance.
The way I see it, TK users sit amongst the highest priority
considerations for a Dragon. This sucks. Other priorities (mechs,
renegade ordnance scientists, assistant with an esword and a dream) are
more overtly threatening, and make sure there's enough conflict to keep
things interesting. Standing at a distance and whittling down a portal
while everyone is busy fighting is not interesting for anyone involved,
even the guy doing it.
Oh, also, you can bolt down a portal from 15 tiles away if you get it on
the alt-click menu. Seen this one get used a few times. I try to avoid
swearing in my balance PRs, but I think this one is a bit bullshit.
https://github.com/user-attachments/assets/a4eb6b64-6b63-41ed-ae55-35880d98a5b6
## Changelog
🆑 Rhials
balance: Dragon rifts no longer take damage from telekinesis-ed objects.
Get in there and fight like a man!
/🆑
## About The Pull Request
We have multiple "nullrods" which aren't actually ``/obj/item/nullrod``
subtypes, which causes runtimes when selecting them, which prevented the
signal from being sent out and the global variable from being assigned.
Additionally, we have multiple interactions which directly typecheck for
the nullrod item, which blocked multiple interactions (dispelling
heretic runes, rends, haunted items, psyker revolver and cult blade
conversion), which I fixed by instead converting those interactions to
check for ``TRAIT_NULLROD_ITEM`` which is assigned to all nullrods and
non-nullrod weapons spawned from the nullrod.
- Closes#77373
## Changelog
🆑
fix: Fixed fire arrow ritual not being accessible
fix: Fixed certain nullrod types not being usable for certain holy and
unholy interactions
/🆑
## About The Pull Request
Partially reverts #84594, removing forced tint from night vision goggles
(if anyone for some reason wants to experience it again, they can toggle
it via alt click like it could be done before the [aforementioned
PR](https://github.com/tgstation/tgstation/pull/84594))
Approved by Ghom (the original PR author)
## Why It's Good For The Game
NVG tint is a pretty sizeable accessibility issue, as forced screentint
can easily cause eye strain if they're used for prolonged periods of
time, being especially bad for blue-tinted NVGs. They're already locked
pretty deep down the techweb, and this change just made everyone avoid
them. If we need to make tintless variants of them for every single
antag and special role (and bitrunners, lol), we maybe shouldn't have
added the tint in the first place.
## About The Pull Request
Ghosts can see the antag UI button in the button list when observing a
heretic, and click on it to view it.
## Why It's Good For The Game
It'd be nice to be conveniently look at the heretic info without
actually being a heretic, and see what powers the heretic has and has
bought
## Changelog
🆑
add: you can now a ghost observe heretics heretics and click on their
antag panel button to view their heretic UI
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Let heretics see their UI while dead, currently we just force close it.
## Why It's Good For The Game
There's no valid reason besides fear of being able to buy abilities
while dead to dissalow the heretic to look at the UI while dead. Right?
With UI_UPDATE you can't click on anything anyway and ui_act already
early returns if you only have UI_UPDATE, only possible issue is if
ui_act doesn't early return on the parent return value, but heretic's
does.
## Changelog
🆑
add: Heretics can now look at their UI while dead, though you can't buy
stuff
/🆑
## About The Pull Request
HoP traitors have a chance to get an objective to "replace the captain"
requiring they assassinate the captain and steal their (or any) gold id.
It can only be rolled if there's a captain (obviously)
## Why It's Good For The Game
Figured we could give certain jobs fun unique objectives which lean into
some common sci fi tropes, like "untrustworthy second in command". In
this case, it'd be pretty fitting for a hop to have enough and try to
take over the station themself.
However I kept the flavor pretty broad - for some they might take the
objective as "I'm becoming the new captain", for others it might be "I'm
jealous of their cool ID card".
## Changelog
🆑 Melbert
add: HoP traitors can get an objective to "replace the captain" -
requiring they assassinate the captain and steal their id.
/🆑
## About The Pull Request
Closes#92168
Swapping this to drop_location makes sure that bees get spawned inside
of your locker/disposals holder instead of being spewed out on your
tile.
Also converted attackby to item_interaction
## Changelog
🆑
fix: Fixed hiveheads spawning bees on tiles when you're riding disposals
code: Cleaned up and updated hivehead code
/🆑
## About The Pull Request
Deletes the Void Torch from Cult
Mapped in uses have been replaced with similar red torches
Deathmatch uses were replaced with red torches as well (did they even
have a use in dm?)
## Why It's Good For The Game
Void Torch is maybe the # 1 example of bloat that comes to mind when I
think of "Cult"
- Very few people know that it does anything
- Even fewer people know how to use it
- Even FEWER people know how to use it effectively
- It isn't even uniquely produced, it comes with another object for no
reason
- In fact, I see people not even *realize* that they get a torch with
their veil shifter. In fact in fact, I see more people throw it *away*
than use it.
I don't really see a reason why it should stick around. A fair argument
I could see is "muh sandbox, you're pidgeonholeing cult in to just
swords and stun". But if that was the case, then why haven't people been
using it?
The only sad part to me is torches are cult kino thematically.
## Changelog
🆑 Melbert
del: Removes the Void Torch from Cult
/🆑
## About The Pull Request
Removes Flagellent Robes entirely
Deathmatch outfits were replaced with basic cult robes
## Why It's Good For The Game
A continued effort to de-clutter / streamline cult a bit, but this one
has a bit more justification:
Flagellent Robes are a very odd tool in the cult arsenal and I'm not
sure it fits the current environment of the game super well.
To start, they tend to noob trap people. Most people just pick it
without realizing it speeds you up, and most people don't further
realize that it makes you take a ton more damage. I reckon most people
get told to "get robes from the forge", click on the forge, and then
click on one of the robes.
This is of course, addressable, I did it in my tooltip pr. But thinking
about it more I'm not sure if it's worth addressed.
Cultists are already capable of teleportation - both short distance and
long distance - so what exactly are they gaining from increased
movement? It's not repositioning, and it's not escaping. It's just for
combat, right?
But do we want cultists moving at mach 10 in combat? It's an absolute
nightmare for pacing. Most antags with access to speed boosts have it in
temporary forms such as stimulants, yet they can wear these forever.
Thus, I think it should be axed. Limit cult to one primary set of robes.
Makes it easier to balance their armor (as there's only one* set we need
to focus on going forward), gives them a unified identity (all cultists
are wearing the same robes, how quaint), and helps streamline the cult
equipment step for new players.
*Yes there's the non-hardened set to but I don't think it's particularly
egregious
## Changelog
🆑 Melbert
del: Removes the Flagellant's Robes from Cult
/🆑
## About The Pull Request
atomization of https://github.com/tgstation/tgstation/pull/91702 with a
few changes.
- armor booster module has been removed, nukie suits are now always
fully armored and EVA proof.
- Jetpack modules have had their power drain reduced considerably.
- Cap,Hos and Sec MODs armor values have been bumped up (similar to the
old hardsuit values).
- Sec armor plates are now a cargo import.
The nf suit now comes with the Shock absorber pre-installed.
- Fixes Nukie suits not having T4 flash protection.
- All combat modsuits now have ear protection by default when the suit
active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.)
- Night visor module now comes preinstalled in the syndie mods and
doesn't conflict with other vision modules, nor it costs complexity,
power drain reduced, the module itself has been removed from the uplink.
- Increases the complexity on the nukie suits by 2 points.
- all traitor modules now cost 1 less TC.
## Why It's Good For The Game
**armor booster removal**
I really dislike how this module works, it's a constant hassle having to
manually swap mode depending on the pressure, it's just an annoyng
memory check that punishes you with chip damage when not respected.
The choice of wheter wearing a mod or not doesn't really apply to
nuclear operatives since they wear these things all the time and losing
half of your armor in space never really made a ton of sense to begin
with.
**Jetpack power drain buff**
The drain on this thing is absolute fucking nuts, it eats high capacity
cells in a matter of minutes, power should be a limiting factor to using
these things but it shouldn't tank your battery health this quickly.
**Cap,Sec,Hos MODs buffs**
Back when Fikou introduced MODsuits, one point he clarified in the
design doc is that "Combat stuff usually leads to uninteresting design,
it makes the suits do everything for everyone"
I don't want to diss on the dude (Love you bud), but I don't think his
point makes a ton of sense.
Combat stuff, on this case Combat mods should be built with Combat in
mind.
In all fairness he then has a paragraph addressing why the crew based
combat suits should have low armor, but it still rings hollow to me.
Armored or not, being slower than your average spessman is enough to
make you an easy target or to never be able to chase anyone on foot,
even with their armor increased I don't see players having them
constantly on all the time, the slowdown is a hard enough disincentive.
The Magnate and HoS mods specifically are unique pieces of gear, and
they are usually assigned to 2 of the most important (and prone to
assassination) roles on the station.
There's also a weird paradox with some of the modules they come equipped
with the sec MODs, the pepper spray and the projectile dampener are
built around getting hit, which is a hard sell when your armor is so low
you might as well just die straight up.
Out of respect to Fikou's will of not wanting to grant the crew the
ability to mass produce combat MODs, I removed the sec modplates from
the techweb and moved em as a cargo import.
**Uplink MODules Price reduction**
These were originally priced with progression in mind, traitor
specifically has become considerably weaker since they lost access to
avenues to generate extra TCs.
It's hard to justify getting a suit when most weapons in the uplink cost
more than half of your budget, let alone the modules.
**Shock absorption into the inf suit**
This module is pretty much already mandatory if you don't want to lose
fights in one hit, wearing a syndie modsuit makes you giga valid to
everyone on station and any traitor worth their salt will buy this
module regardless anyway; it just punishes new players who don't know
better.
**Night Visor MOD changes**
This module is completely useless, nobody ever uses it, because it
conflicts with other vision modules, and it's completely redundant since
Thermal vision already comes packed with NV on their own.
**Complexity increase on the Nukie suits + T4 flashing protection
added**
The nukie suits have honestly quite limited complexity for the role they
are supposed to fill , the T4 flash protection missing from the suit is
unintended as we made any other MODsuit have T4 protection already, Moth
Nukies rejoice.
**Ear Protection on combat MODs (oh boy)**
Listen, as of right now we have a total of 2 counters for flashbangs, a
Bowman or being deaf.
A sealed, airtight suit shouldn't offer less protection against loud
noises than a mere headset.
baddies that usually pack these suits usually have a Bowman anyway,
Nukies have it, ninja can easily teleport into a sec outpost and get it,
it's a bit more tricky for traitor since they usually have to invest in
an emag to quickly take the set or kill a security officer.
At least now if you see a baddie roll up in a suit you no longer have to
play hypotheticals wheter your flashbang will work properly or not.
I also gave the ear protection to the RD mod despite it not being a
combat MOD, because frankly it made sense, it's a bomb proof armor, It
should also protect you from loud noises.
## Changelog
🆑
removal: Armor booster module has been removed.
balance: Jetpack module energy drain has been massively reduced.
balance: armor on the Magnate,Safegaurd and sec modsuits has been
considerably increased.
balance: Sec MOD plates have been transferred from RnD to Cargo.
balance The Infiltrator MOD now comes with the shock absorption module
pre-installed.
balance: Nukie MODsuits hav a bit more complexity.
fix: Nukie MODs now have the same flash protection as the other suits
with welding protection.
balance: night visor module comes pre-installed in the syndie mods, no
longer consumes complexity,drains less power and doesn't conflict with
the other visor MODules.
removal: Nightvision MODule removed from the uplink.
balance: Combat MODs and RDs now grant earing protection when the suit
is active.
/🆑
---------
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
## About The Pull Request
Wizard MOD is now bio,flash proof, and comes with the no slips module ,
and the Hilbert DNA lock module installed.
Energy shield charges on the battle shield module have been reduced from
15 to 5 but now regenerate over time.
energy shield charges are now only consumed if at least 3 damage is
dealt to the bubble.
## Why It's Good For The Game
atomization of this PR:
https://github.com/tgstation/tgstation/pull/91702 so I'm just gonna
copypaste the same reasoning.
**Wiz Modsuit changes**
Despite being the Mod given to arguably the highest possible threat a
station should face, this thing is insanely underwhelming.
It doesn't come packaged with even some basic immunities we would grant
to our common antagonists, the charges are limited and once they expire
this suit has nothing to offer besides basic space protection and some
decent armor.
The suit has been rebalanced to offer a wide array of protections and
have the Shield charges regenerate overtime to a maximum of 5, and it no
longer has any slowdown.
You might also want to reconsider using this as crew....
"That's a lot of stuff Jake, won't this make the suit overpowered?"
You can bet your spessman arse it will, Wizard is not supposed to be a
balanced antagonist in any way shape or form, but an absolute force of
chaos.
Given how everything else in the game has been powercept over the Years,
we left this poor dude behind, it's time to address that.
**Energy Shield MOD changes**
I don't think the Shield should expire if no damage (or a pitiful amount
of) hits the bubble, these have already been nerfed to only have 1
charge, it shouldn't require so little firepower (or none of) to
destroy.
## Changelog
🆑
balance: Wiz suit is now bio,flash proof, comes with the no slip and
Hilbert dna module installed, slowdown was removed.
balance: Energy shield charges on the battlemage module have been
reduced to 5 but now regenerate over time.
balance: energy shield charges now require a minimum of 3 total damage
to be consumed.
removal: you can no longer buy additional shield charges for the suit
using the spellbook.
/🆑
---------
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
## About The Pull Request
Moves all the dna block handling onto singleton datums initialized
inside global lists, to make the handling dna less of a copy-paste mess
and make adding new blocks significantly easier. There is still some
work to be done in the copypaste department but ultimately that falls
under its own PR scope after the core refactor goes through. (Ill
probably do those but it will also be easier for everyone else as the
code is now significantly less of an eyesore)
Both features and identities have been tested through and through, and
seem to be working fine.
Also removed the reliance on weird hardcoded lookup tables for length,
and other similar things that just didn't make sense when I was passing
through DNA code. There's a lot more that fall out of scope for this
exact PR's goal however
## Why It's Good For The Game
I've been told the maintainers will love me for doing this
## Changelog
🆑
code: feature keys are no longer magical strings floating around the
codebase and use proper defines
refactor: DNA blocks are now handled with singleton datums.
/🆑
## About The Pull Request
1. Fix action buttons not getting their set tooltip style
2. Radials can now specify what tooltip theme to use on a per-slice
basis
3. The "Info" button now has a tooltip showing you the info text
<img width="370" height="496" alt="image"
src="https://github.com/user-attachments/assets/caff9d97-4ccd-4611-9135-1f39b72f9237"
/>
## Why It's Good For The Game
1. Wow this has been broken for some time
2. Allows for theming of radials according to context, like cult
radials. Next step would be to allow changing the background but that's
for later.
3. You don't need to click it -> look at chat -> look back at the
radial, you can just hover over it. A lot more convenient
## Changelog
🆑 Melbert
fix: Cult spell action buttons have their unique tooltip style again
qol: Radial tooltips can now have unique styles
qol: Radial "info" buttons now have tooltips with the info text, meaning
you don't have to click on the button and read chat
/🆑
## About The Pull Request
Altars, Archives, and Forges now have a `?` next to their options
reporting what each of the objects actually does
## Why It's Good For The Game
A little bit more info not requiring the wiki
## Changelog
🆑 Melbert
qol: Altars, Archives, and Forges now have a ? explaining what the items
do
/🆑
## About The Pull Request
Half YOLOing this because I can't fully test it due to BYOND being
DDOSed and I don't wanna get locked out, but the code seems good to me
and successfully fails to put a ghost in if there's noone else around.
When trying to create a construct from a DNRed/banned borg or spirit, be
it via soulstones, twisted construction or conversion runes, ghosts will
be polled for potential players. If no willing player is found, the
construct is turned back into a shell.
- Closes#92062
## Changelog
🆑
fix: Cult banned or DNRed players no longer can become constructs
/🆑
## About The Pull Request
Fixes the bugged malf ai descriptions, properly describing which modules
need minimum number of hacked apcs
Adds a processing power limit to discourage just sitting on your ass for
2 hours to stack up infinite points
Increases the power draw of hacked APCs to increase the phantom drain on
powernet brought by malf hacking a lot
## Why It's Good For The Game
Discourages hacking two apcs and waiting for next two hours. Also having
working descriptions is cool.
## About The Pull Request
Removes the buy limit on items in traitor uplink discount tab.
Purchase limits are kept on a few problematic items
A purchase limit was added to powersink
## Why It's Good For The Game
Traitor is a great role for doing interesting things. I'm loving the
removal of progtot as it has encouraged players to think of interesting
things to do instead of purely game. I want to further encourage
interesting things by removing the buy limit on the discounts for
traitor uplink.
Unfortunately this does add a bit of power to traitors through certain
discounts like syndicate bomb, but it doesn't add too much. Apart from a
few niche items, what is a traitor going to do with 7 syndicate modsuits
or 4 revolvers? One purchase generally gives them enough power to
succeed.
I'm hoping this encourages more traitors to team up or do something
funny with 20 e-daggers.
also enables general griefsky
## Changelog
🆑
balance: Removes buy limit on traitor discounts
balance: Purchase limit was added to powersink
/🆑
closes#91874
Our chain of events was a little wrong for the insertion
Insert is called to insert the nightmare brain
- on_mob_insert makes it a nightmare and regenerates all organs
- bodypart_insert inserts the brai- WAIT THERE'S ALREADY A BRAIN FROM
ON_MOB_INSERT CALLING SET_SPECIES AHHHH
I added an option to not regenerate missing organs on species change,
and use that for nightmare brain insertion
Maybe I should redo the entire movement-insertion change, but I don't
want to
🆑
fix: Fixes inserting nightmare brains implanting the organ into their
???
/🆑
## About The Pull Request
AI now gains its malf points over time, based on the number of APCs
hacked. I also added a simple way to lock malf modules from being bought
if you haven't hacked enough APCs, to avoid cheese with delta or robot
factory.
## Why It's Good For The Game
APCs hacked are a constant risk of being found, and instantly targeted,
yet they give one time bonus, that is fairly small. This incentivises
not using antag powers, and using natural AI tools, which blurs the line
for the crew between malf and subverted AIs, and makes fighting it
easier and more boring. With constant gain from the APCs the risk of
being found is rewarded, and malf that hacks a big amount of APCs and
avoids being found can use its powers fairly liberally, at a cost of
having to manage the detection chance.
## About The Pull Request
This PR makes a number of changes focusing on improving the blob
minions, spores, nauts, zombies and their associated component.
## New sprites
The blob spore, blob zombie and blobbernaut has been resprited.
The spore and zombie have been lightly touched to preserve the most of
the original characteristics while given a cleaner look.
The spore and zombie have a partially desaturated version used to let
more of the strain colour through instead of them all ending up dark
brown.
The blobbernaut has been reshaded and the side sprite has been made
coherent with the front state, I made decided how the front state was
shaded should be the "canon" one (this might be a bit controversial but
the wild inconsistency was bugging me.)
The blobbernaut is a bit less veiny, but the veins look more natural and
use the strain complementary colour. Many combinations are cool, some
are a bit lacking due to the weird choices of complementary colour.


## New Cytology Related Features
Blob mobs can now have strains independently of an overmind.
The 15% mutation chance of vat grown creatures causes a spore or
blobbernaut to get a random strain.
When I first added the blob spore cell line, ghosts could click on cyto
blob spores to posses them, they would then presumably(?) but not
explicitly be free antags. This ability was lost when the blob spore
code was modernised.
Very few people knew about this, and no one grew blob spores anyway.
This feature is coming back in a big way, vat grown blob spores present
a new unique job hazard, they are automatically offered to ghost as an
extremely shitty, but free antag.
I have tested spawning like 15 antag pre-buff blob spores in a live
round and they failed completely to antagonise the crew effectively,
hopefully these buffed spores won't present too much of an issue to our
great administration team, if that ends up being the case, there are
many levers to pull to tone them down.
## Blob Spore Buffs
Blob spores prior to this PR were almost completely useless.
The main cause of this was the extremely dilute reagent smoke reaction;
10u divided over 20 seconds.
This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely
negligible and useless amount.
The smoke reagent concentration has been massively increased(10u -> 40u)
and the smoke duration has been reduced(20s -> 8s).
The result of this is that blob spore clouds are something you want to
avoid standing in, but they provide less smoke cover for the blob and
nauts.
Blob spores have also gained the ability to vent crawl. Simple mobs that
can't either open doors or vent crawl feel super bad to play.
They also deal a little more melee damage, but this is still
pathetically low on account of their low attack speed.
I have adjusted their supplementary reagents and reduced the amounts of
spores produced per cycle(2 -> 1) to make them a bit harder to mass
produce.
## Blob Strain Buffs
I have not made this PR with the goal of buffing any particular strain,
but some changes have affected blob strain balance:
### Debris Devourer
This was the only strain that was strongly mechanically tied to the
core.
In order to allow for independent debris devourer mobs, they can now eat
trash(or any item really), they are independent, they store these items
inside their mob, and use these for the debris devourer reactions.
If they have an overmind, the item gets sent to the core.
This should result in a nice buff to the strain, which I've been told is
one of the bad ones.
### Regenerative Materia & Cryogenic Poison
5 years back another contributor removed the ability of blobs and
blobbernauts to transfer reagents with their attacks(as their expose
method is vapour).
This was a completely undocumented change and possibly unintentional, so
I am reverting it by giving blob reagents penetrates_skin = VAPOR again.
This only really affects these two strains. It makes regenerative
materia much stronger, while barely having any effect on cryogenic
poison, because temperature normalisation changes has made it completely
ineffective even with much more reagent applied.
### Electromagnetic Web
The spore reagent cloud buff might also give a boost to some strains
with good expose effects, like electromagnetic web.
## Blob Cooking
Blob spores now drop spore sacks, they can be ground for spore toxin, or
cracked on a griddle to create an egg-like treat!
I also added a detoxification reaction to reduce the amount of toxin
when cooked, might not work yet because I think griddles may not
actually heat the food?
## Sound Effects
Blob spores bursting and blobbernauts dying have sound effects.
## Why It's Good For The Game
level 5 biohazard
## Changelog
🆑
image: blob mobs have been respectfully resprited.
add: vat grown blob mobs can sometimes get born with a blob strain.
add: blob spores drop spore sacks, crack them on the griddle.
add: debris devourer mobs can now eat trash, sending it to the core, if
there is one.
add: vat grown blob spores are now sentient and evil.
balance: blob spores now have much more concentrated smoke.
balance: blob spores can ventcrawl.
fix: regenerative materia and cryogenic poison strain blob tiles & nauts
now inject chems again.
sound: blob spores & blobbernaut now have death sound effects.
/🆑
## About The Pull Request
1. The Energy Katana, when clicking on a mob, no longer refuses to
teleport. It will instead teleport you adjacent to the mob (to the tile
closest to your origin) and immediately perform an attack.
2. Energy Katana is now a bit more consistent about what you can and
cannot teleport to, now abiding by the same rules as the heirophant
staff - you can teleport onto tables, but you can't teleport into dense
objects by clicking on the tile instead of the object.
3. The Energy Katana now has `NEEDS_PERMIT` flag, like the Energy Sword,
meaning Beepsky will consider it a threat (but it won't hunt down Ninjas
over it)
Also added pass_flags_self bitfield and updated pass_flags bitfield.
## Why It's Good For The Game
I ran around with it for like 3 seconds and found it a little clunky. So
I just cleaned it up a bit to make it 1. easier to use 2. cooler to use
The permit thing was just making it consistent with other melee weapons
## Changelog
🆑 Melbert
qol: Energy Katana is now a bit more consistent about what you can and
cannot teleport to, now abiding by the same rules as the heirophant
staff. IE, you can now teleport onto tables.
add: Energy Katana now has a "teleport attack" - if you click on a mob,
you will teleport adjacent to them and immediately perform an attack!
add: Energy Katana is now considered a threatening weapon by secbots.
Ninjas will be unaffected, but if you loot one off a dead ninja and
don't have a weapons permit, it might chase after you.
/🆑
## About The Pull Request
The three powers changed in this pr are as follows:
- Tentacle now tells you you can combo it with armblade to drag someone
to you and impale them on it.
- Resonant Shriek explains the fact the confusion is best used to hamper
victims from running away.
- Dissonant Shriek (Now Technophagic Shriek) says some of the uses of
EMPs outside borg-killing, like breaking headsets or laser weapons.
Renamed to be less confusing with the above resonant shriek, and more
clearly "THIS ONE BREAKS COMPUTERS, NOT JUST BORGS."
## Why It's Good For The Game
Ling is unable to refund its powers once it gets them, so the choice
lings make on what they buy is important. However, unlike traitor, where
a gun or sword acts how one would expect, a lot of ling powers aren't as
obvious for what they do at a glance. This pr hopefully explains some of
the abilities and their use cases better.
As for the rename, "Dissonant" and "Resonant" aren't very different, and
as such it's possible the shrieks could be confused by newer players.
Renaming Dissonant Shriek to Technophagic shriek explains its role
better and shows it works against a wide variety of enemies, not just
cyborgs.
## Changelog
🆑 Webcomicartist
qol: A handful of Changeling abilities have more detailed shop
descriptions.
qol: Changeling "Dissonant Shriek" renamed to "Technophagic Shriek" to
emphasize its use against all computers and avoid confusion with the
anti-human "Resonant Shriek"
fix: Changeling Tentacle now informs you it pierces armor and impale
works with armblade.
/🆑
## About The Pull Request
Reworks the Voidwalker into a basic mob, including a lot of the balance
and mechanics!
Old (left), new (right)

https://github.com/user-attachments/assets/22d6138f-11aa-4f7a-8600-2565e6578bcf
(little outdated)
https://youtu.be/cp1E3qPJGX4 (high res mirror)
**🟨Voidwalker mob changes🟨**
No longer a human species and no more void eater. Instead deals damage
by simple unarmed attacks.
Instead of dealing brute, the voidwalker does oxygen damage (4-5 hits to
knock out) with left-click, and slight brute on right click. Non-human
mobs automatically take brute damage instead of oxygen damage.
150 HP
33% burn armor
Yes it has hands, but it can only pick up and drop stuff
**🟨Window phase🟨**

Instead of needing to smash a window with the void eater, moving through
windows simply leaves them passable for 5 seconds. Makes kidnapping a
lot easier, but also makes it easier for people to chase you
People who used the voided skull also leave windows passable for a short
bit.
**🟩Cosmic Charge🟩**
Standard charge ability, but only lets you charge towards space and
works while dragging people
**🟩The Vomitwalker🟩**
People you kidnapped now occasionally do the nebula vomit, which
voidwalkers can use to dive from and into

Diving into it is very fast but also removes the nebula vomit. You can
also kidnap people into the vomit (this doesn't remove the vomit).
There is also a little UI for tracking this. Clicking it while in space
dive teleports you to the next nebula vomit, if there are any.

**🟨Voided people changes🟨**
Kidnapped people and people that used the cosmic skull are no longer
muted, but take 10% extra brute and occasionally leave behind glass
shards when taking a lot of damage.
Are no longer obliterated on a second encounter with voidwalkers.
Voidwalkers can't hurt people they've already voided (unless they really
want to), but instead just knock them out for 30s
Also the kidnapped do space vomit as I said earlier.
**🟩Sunwalker🟩**
Voidwalker variant made for pure murderbone. Has no camo and kindap
mechanics, but has a fiery charge, loads of damage and area igniting and
people ignition. It's admin, but I might change this later once I've had
some more time to think about it.

Other changes:
- Voidwindows no longer need to be space adjacent
- Unsettle works faster but can't be used in combat anymore
- Space camo now grants complete space invisibility
- Makes a lot of aspects easily moddable, so we can easily mod it into a
moistwalker in-game
- Taking a cosmic skull when you already used one gives you the old
voidwalker void eater arm. Additional uses just gives you more void
eater arms until you run out of hands
- I definitely forgot a lot more
- I made a cool voidwalker hud! It even has a unique space camo toggle
## Why It's Good For The Game
<details>
<summary>Lot of text</summary>
Voidwalker was basically a snowflaked toghether human species because I
didn't know how to sprite, but I was able to work with species and
visual effects. Then I realized I can just commission sprites!
This also let me just cut out a lot of the snowflake code, because it's
no longer a human so half the things I didn't want them to be able to
do, they just literally cannot do.
Voidwalkers were in a bit of strange spot with kidnapping? There was
essentially no incentive, other than "smash spaceman = funny". They also
had issues doing, anything? There's surprisingly little space on a space
station, especially maps such as tram. Making the voided victims have
nebula vomit gives the voidwalker a reason to WANT to kidnap, by giving
them a way to appear basically anywhere on the station. I don't think
it's too overpowered. Voided people don't vomit that much, it's easily
cleanable and diving into it removes them, so they're limited usability.
Replacing the brute damage with oxygen damage also kinda... just makes
sense? I seriously contemplated letting them do stamina damage for the
first iteration, but opted not to do it because stamina damage has so
many hooks attached. Oxygen damage doesn't! It's also just incredibly
thematic, let's them bypass most armor and makes them more suited to
non-letha kidnappings.
Space camo making them completely invisible was also long overdue. It
was literally just urging people to turn up their gamma and turn down
their parallax settings. I thought it was an interesting mechanic, but
it's just straight up unfair and doesn't belong in a multiplayer game.
They now more frequently leave behind little glass shards, leave
particles from nebula vomit they leave from and have more unique sound
effects, so attentive (and lucky) people can still deduce if an area is
safe-ish.
I removed being able to shatter voided people because the mechanic was
deeply misunderstood. It was intended to give them a means of removing
people if they kept incessently bothering the voidwalker, but people
went out of their way to use this to roundremove people they had already
voided. The 30s sleep conveys my intention a lot better, and fits better
now that the voidwalker benefits from having as many voided people
vomitting all over the place.
The cosmic charge gives them some much needed survivability. My
experiences (in observing voidwalkers, I can never get the roll ;_;) is
that they're constantly one mistake away from complete obliteration. The
cosmic charge let's them get out quick despite their slow movement speed
in gravity. It also makes them stronger when fighting in space.
They got 33% burn armor so it's a tiny bit harder to wipe them away in a
single laser salvo, while still giving people ample opportunity to fight
them off . Also they're like glass or something so it fits thematically.
I gave them hands because I thought it was cool, might be a mistake idk
</details>
## Changelog
🆑 Time-Green, INFRARED_BACON
add: Voidwalker has been throughly reworked! Now you are even less safe!
admin: Adds admin-only Sunwalker mob
fix: Unsettle doesnt work on yourself anymore
fix: Space camo doesnt stop bobbing anymore
fix: Voidwalker windows now recharge on kidnap
runtime: Fixes healthanalyzers runtiming when scanning mobs without
reagent holders
/🆑
## About The Pull Request
Quirks only send their on_gain text when given midround, such as by an
admin
## Why It's Good For The Game
Spams the hell out of you for no reason - in very few contexts are these
messages important (randomized allergies come to mind), but there are
other avenues to figure out (such as dogtags)

## Changelog
🆑 Melbert
qol: Quirks spam you less on roundstart or latejoin
/🆑
## About The Pull Request
If you use the mech clamp offensively, it actually performs an attack
animation and sound, and properly checks armor and block. It only deals
brute damage.
As a consequence of these changes, it actually logs attacks made against
mobs that die when gibbed.
Also, xenos take x3 damage from the clamp.
## Why It's Good For The Game
This is a pretty sinister kind of attack, as it is completely silent
except for throwing a warning into chat, and can be done even in a large
crowd of people. Someone who isn't aware that the clamp can be used this
way may not even understand what is happening before it is too late.
> block check
While mech melee doesn't normally check block, this is an improvised
attack on a non-combat mech. I think it should stay a bit weak compared
to a proper mech melee in most ways and have some additional
limitations.
> Xenos
I thought this was already a thing. It's thematically on point, no?
## Changelog
🆑
balance: Mech hydraulic clamps perform an attack animation and sound
when attacking mobs.
balance: Mech hydraulic clamps can be blocked and respect armor.
balance: Mech hydraulic clamps do triple damage to xenomorphs.
/🆑
## About The Pull Request
https://github.com/SpaceManiac/SpacemanDMM/pull/435 added a new
dreamchecker lint, for SDMM `set` statements not at the top of the proc.
While this lint isn't in the current SDMM _release_, I was testing it
out earlier and saw these issues, so might as well fix them before they
even become an issue.
i also fixed a useless variable in moon heretic code that was right next
to the incorrectly placed `SIGNAL_HANDLER`
## Why It's Good For The Game
https://github.com/user-attachments/assets/5b063f41-32f3-490a-b0a3-199ca8147ec3
## Changelog
No player-facing changes.
## About The Pull Request
Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic
from the ground-up
- Dynamic configuration is now vastly streamlined, making it far far far
easier to understand and edit
- Threat is gone entirely; round chaos is now determined by dynamic
tiers
- There's 5 dynamic tiers, 0 to 4.
- 0 is a pure greenshift.
- Tiers are just picked via weight - "16% chance of getting a high chaos
round".
- Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be
selected".
- Tier determines how much of every ruleset is picked. "Tier 4 (High
Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3
latejoins".
- The number of rulesets picked depends on how many people are in the
server - this is also configurable[2]. As an example, a tier that
demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and
will not spawn 2 rulesets if population <= 25.
- Tiers also determine time before light, heavy, and latejoin rulesets
are picked, as well as the cooldown range between spawns. More chaotic
tiers may send midrounds sooner or wait less time between sending them.
- On the ruleset side of things, "requirements", "scaling", and
"enemies" is gone.
- You can configure a ruleset's min pop and weight flat, or per tier.
- For example a ruleset like Obsession is weighted higher for tiers 1-2
and lower for tiers 3-4.
- Rather than scaling up, roundstart rulesets can just be selected
multiple times.
- Rulesets also have `min_antag_cap` and `max_antag_cap`.
`min_antag_cap` determines how many candidates are needed for it to run,
and `max_antag_cap` determines how many candidates are selected.
- Rulesets attempt to run every 2.5 minutes. [3]
- Light rulesets will ALWAYS be picked before heavy rulesets. [4]
- Light injection chance is no longer 100%, heavy injection chance
formula has been simplified.
- Chance simply scales based on number of dead players / total number
off players, with a flag 50% chance if no antags exist. [5]
[1] This does not guarantee you will actually GET 3-4 roundstart
rulesets. If a roundstart ruleset is picked, and it ends up being unable
to execute (such as "not enough candidates", that slot is effectively a
wash.) This might be revisited.
[2] Currently, this is a hard limit - below X pop, you WILL get a
quarter or a half of the rulesets. This might be revisited to just be
weighted - you are just MORE LIKELY to get a quarter or a half.
[3] Little worried about accidentally frontloading everything so we'll
see about this
[4] This may be revisited but in most contexts it seems sensible.
[5] This may also be revisited, I'm not 100% sure what the best / most
simple way to tackle midround chances is.
Other implementation details
- The process of making rulesets has been streamlined as well. Many
rulesets only amount to a definition and `assign_role`.
- Dynamic.json -> Dynamic.toml
- Dynamic event hijacked was ripped out entirely.
- Most midround antag random events are now dynamic rulesets. Fugitives,
Morphs, Slaughter Demons, etc.
- The 1 weight slaughter demon event is gone. RIP in peace.
- There is now a hidden midround event that simply adds +1 latejoin, +1
light, or +1 heavy ruleset.
- `mind.special_role` is dead. Minds have a lazylist of special roles
now but it's essentially only used for traitor panel.
- Revs refactored almost entirely. Revs can now exist without a dynamic
ruleset.
- Cult refactored a tiny bit.
- Antag datums cleaned up.
- Pre round setup is less centralized on Dynamic.
- Admins have a whole panel for interfacing with dynamic. It's pretty
slapdash I'm sure someone could make a nicer looking one.


- Maybe some other things.
## Why It's Good For The Game
See readme for more info.
Will you see a massive change in how rounds play out? My hunch says
rounds will spawn less rulesets on average, but it's ultimately to how
it's configured
## Changelog
🆑 Melbert
refactor: Dynamic rewritten entirely, report any strange rounds
config: Dynamic config reworked, it's now a TOML file
refactor: Refactored antag roles somewhat, report any oddities
refactor: Refactored Revolution entirely, report any oddities
del: Deleted most midround events that spawn antags - they use dynamic
rulesets now
add: Dynamic rulesets can now be false alarms
add: Adds a random event that gives dynamic the ability to run another
ruleset later
admin: Adds a panel for messing around with dynamic
admin: Adds a panel for chance for every dynamic ruleset to be selected
admin: You can spawn revs without using dynamic now
fix: Nuke team leaders get their fun title back
/🆑
## About The Pull Request
Adds 2 new species: Spirits and Ghosts
Spirits are available roundstart during Halloween, Wabbajack and
Xenobio's black slime extract
Ghosts are available through Magic mirrors
They fly around, and don't have legs and instead float around. They also
can't get legs implanted onto themselves.
They also do have organs, so they are affected by flashbangs, they do
get hungry, they do need oxygen to survive (they don't take damage in
space but they do suffocate & get slowdown), and can process chems.
Gibbing a ghost gives ectoplasm, an ingredient for ghost burgers.
Chaplains also got a buff here, null rod-type weapons' bane is now
against Spirit mobs, rather than hardcoded revenants. This means it now
includes Spirits/Ghosts, but also Soulscythes & Cult shades.
Also re-adds https://github.com/tgstation/tgstation/pull/81630 which was
reverted in https://github.com/tgstation/tgstation/pull/86506 which I
assume was accidental.
### The difference between Spirits and Ghosts
Ghosts have an innate ability to become incorporeal, which allows them
to phase through walls and stuff. Using this will immediately make them
drop any non-ghost limb/organ (not implants cause I thought it would be
funny). This ability is not available if they have holy water in their
system, and like revenants they also can't walk over blessed tiles with
it. They are also invisible to cameras while using this (not the obscura
though).
Sprites taken from observers directly, if anyone wants to make custom
sprites for them feel free. If anyone wants to make this obtainable
somehow in-game as well I wouldn't be opposed, halloween is just where I
thought it would fit most.
This also adds a lot of fixes that I encountered trying to add this,
from systems that have been neglected throughout the years.
https://github.com/user-attachments/assets/e368d710-80a0-4c63-b271-1abe3dd41a5e
## Why It's Good For The Game
We haven't gotten a new halloween species in a long time and thought it
would be fun if you can play as an actual ghost, the soul that remains
after a person passes, so Halloween feels more haunted. It's overall
made in just good fun, with a bonus that Ghosts are a cool species to
play with as well for Wizards & maybe Chaplains in the future (Dead sect
when?)
## Changelog
🆑
add: Added a new halloween species: Spirits, a species without legs and
instead floats.
add: Added a new magic mirror species: Ghosts, like spirits but with the
ability to become incorporeal, traversing through solid wall.
fix: Mobs unable to use storage items now can't use storage items.
fix: Mobs unable to use items can now not open airlocks & closets
fix: Mobs unable to pick items up can no longer pick items up and
immediately drop, moving one tile at a time.
fix: Mobs with intentional missing limbs (Alien larva) no longer show
their limbs as missing on examine (again)
fix: Golems' pref page had a missing icon, it now has one.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Does exactly what the PR title says. Also, in order to facilitate this
different sound, war ops remotes can be varedited to use an arbitrary
sound.
## Why It's Good For The Game
Come on, the thematics are obvious. A military march co-opted into
literal clown music, being used by a paramilitary special operations
team consisting entirely of clowns?
Also makes it more obvious that it's clown ops and not regular war ops,
without the need to say so in the declaration itself.
## Changelog
🆑
sound: Clown Operatives will now broadcast their declarations of war
with a fitting auditory cue.
/🆑
Fixes the lockdown timer counting from server start instead of challenge
start.
## Why It's Good For The Game
I'm not sure it's actually good, but balance should be explicit not
confluence of bugs.