## 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
/🆑
## About The Pull Request
Hovering over mobs on the same tile as the commanded mob will no longer
close the command menu, and it will automatically get closed once the
user lets go of the hotkey without having to forcefully time out.
## Why It's Good For The Game
The same tile requirement prevents the menu from fading out if you're
trying to command the mob you're riding, and not closing the menu when
unregistering the hover signal actually prevented you from getting rid
of the menu without waiting for the automatic timeout, which is super
weird and unintuitive.
## Changelog
🆑
qol: Letting go of the pet command hotkey (Shift by default) will
instantly close the menu
fix: Hovering over things on the same tile no longer closes the pet
command menu
/🆑
## About The Pull Request
Carpets were manually assigning emissive plane to a normal overlay,
while using incorrect logic (adding alpha to it instead of coloring the
overlay), resulting in this mess which both shows through objects and is
twice as bright as it should be
<img width="494" height="227" alt="image"
src="https://github.com/user-attachments/assets/9cc63e90-a4e9-4d2b-b164-ec1e173af628"
/>
I've added a separate emissive decal element subtype, as well as (just
in case) banning all FLOAT_LAYER overlays from topdown planes, instead
of allowing them when manually passed into the proc (topdown planes
should never have floating emissives)
## Changelog
🆑
fix: Fixed emissive overlays on neon carpets poking through objects
/🆑
What it says on the tin. Paramedics still retain their expanded access
on lowpop.
I gave myself a task and I guess I'm doing it. I even made it six months
in case I changed my mind, and in that time, I actually was more and
more convinced it was the right course of action.
[I've attempted at least one moderate approach to resolving this problem
and it ended up going
nowhere.](https://github.com/tgstation/tgstation/pull/84422) Metek
attempted a few times and nothing happened.
I've already iterated a lot of the gameplay issues in my first PR. I
won't repeat them, just expand my frustrations since then. I went from
annoyance to pure resentment of the role existing during that time as
I've had to deal with more and more paramedic tiders with time.
Paramedics actively fuck with mapping in a way that maps were not
designed to accommodate, nor should they be in the first place. It is
pretty reasonable to expect that the only people who should have access
to a department are those who are from that department, have expanded
access from being a head of staff, or got access from the HOP.
Paramedics come pre-packaged with this expanded access as a non-head, so
they just are out the gate more versatile than the vast majority of
other roles while also having an entire department onto themselves
(short of pharmacy access on all but skeleton crew). Trying to
accommodate paramedics likely will start to have negative quality of
life impacts on other roles just to contain a role that probably
shouldn't be entitled to this kind of access in the first place.
[Even in the original PR that introduced
paramedics](https://github.com/tgstation/tgstation/pull/48236), Denton
acknowledged the potential problem of paramedics becoming Doctor+, but
failed to followup on auditing what they actually could access. So the
end result is more or less what he didn't want to have happen.
Paramedics are better than most roles in general. not just doctors.
Paramedics have almost as much access as most heads of staff. And maps
rarely have consistently planned spaces for what constitutes a 'lobby'.
Often times there can even be an open floor plan that paramedics can
waltz right into and do what they like in. Because, as I said, mappers
create maps with the expectation that the people who can access those
areas probably are in that department or are a head of staff with broad
access.
I'm not interested in waiting for overengineered solutions. We bite the
bullet and tell paramedics to cope, because they're getting snowflaked
to be able to go where they please for reasons that don't seem to be the
primary concern of the people who are abusing the levity provided to
this role. It's just too much of a low hanging fruit for abuse.
# I already asked maptainers long ago about this and they said "No" to
making map changes to contain paramedics. Don't bother bringing it up.
## About The Pull Request
This PR adds the ability to install a B.O.R.I.S. in a circuit that
contains an MMI component. These circuits can then be remotely connected
to by an AI by clicking on them or anything they are inside of. To
indicate that a circuit allows remote AI connection, an indicator is
given to the circuit and anything containing it.
Additionally:
- Refactors the MMI component to use `item_interaction`, since it was
pertinent.
- You cannot insert an MMI/B.O.R.I.S. into a locked circuit.
- You can no longer hotswap MMIs/B.O.R.I.S.es - you must manually eject
the inserted one.
Let me know what changelog labels I should use for the hotswap removal
and the prevention of insertion into locked circuits.
## Why It's Good For The Game
If you can put an MMI or posibrain in a circuit, why not allow an AI to
use it using a B.O.R.I.S.?
## Changelog
🆑
add: B.O.R.I.S.es can be installed inside of integrated circuits with
MMI components, allowing an AI to remotely interface with them the same
way an MMI or posibrain could.
refactor: The MMI component now uses item interaction behavior for
inserting MMIs/B.O.R.I.S.es.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
#92394 did more harm than good.
First, only the microwavable element transferred reagents even if the
result was a burned mess (in general, a non-positive one), while
grillable and bakeable comps didn't... but that's because I've
overlooked a few checks that skipped the "transfer reagents to the
result" step, which the microwavable element also has, though it stopped
working as intended after I messed with it.
However, I think it's stupid for bad recipes to have a static amount of
"bad food" reagent in them, and overcooking a whole cake shouldn't yield
the same reagents as a bag of chips burned to a crisp, so I scrapped
those damn bad_result checks, and finally let the burned mess item
itself handle converting the consumable reagents into "bad food".
Second, examining most food items no longer tells you that you can make
a burned mess if you microwave it.
## Why It's Good For The Game
This fixes the above issues.
## Changelog
🆑
fix: Examining most food items no longer tells you that you can make
burned mess by microwaving them.
fix: Burned mess now has "bad food" in it more or less proportional to
the nutrients of the item you just overcooked. This also applies to
decomposition now.
/🆑
## About The Pull Request
- Wrapping a crate with package wrapping while pulling it will now
automatically make you grab it
- You can now open the crate while dragging it with the H.A.U.L.
gauntlets if you're the one who's pulling it. Also applies to other
items (including MOD modules) that have the component
https://github.com/user-attachments/assets/7b4743c8-855d-4274-89ca-b0507f6d3e0e
## Why It's Good For The Game
QOL for cargo technicians - having to constantly grab and let go of
crates is very annoying
## About The Pull Request
makes the "the" a "\the"
## Why It's Good For The Game
fixes#92822
## Changelog
🆑
spellcheck: fixes double the on acid on floors
/🆑
## About The Pull Request
Closes#92790
Also there was a missing period in the paladin lawset, so I fixed that
too
## Changelog
🆑
spellcheck: Fixed a missing period in Nutimov and Paladin lawsets
/🆑
## About The Pull Request
Fixes#92188
1. The Accounting console now has a new UI
<img width="757" height="486" alt="image"
src="https://github.com/user-attachments/assets/0c6ce73f-ae1c-4a54-b6ba-bcc3b3232d13"
/>
2. The Accounting console can now dish out advances on paychecks, giving
you for full paycheck early. You can give up to 3 advances. This of
course means your next paycheck is not paid out when relevant.
3. The Accounting console can now change paycheck sizes of crewmembers -
up to 1.5x and down to 0.5x.
## Why It's Good For The Game
- Gives the HoP some more duties, now being able to dish out money on
request, reward good behavior, or punish bad behavior.
## Changelog
🆑 Melbert
add: Accounting Console: New UI!
add: Accounting Console: Now can give advances to crewmembers
add: Accounting Console: Can now give pay raises or pay cuts
add: Accounting Console: Now only printable in the security lathe
add: Accounting Console: A spare board is now now found in secure tech
storage.
fix: Fix vending machines adding payments to audit log twice.
fix: Non-crewmembers are no longer shown in the accounting console
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
This fixes several bitfield operations that were missing parenthesis
encapsulation. I noticed this problem in:
- #92601
And decided to use regex to search for similar patterns which I came
across in:
- Move loops bypassing the `MOVELOOP_STATUS_RUNNING` status
- Elastic arms mutation bypassing `ABSTRACT` object flags for picking up
objects
- Species radiation bypassing `HEAD_HAIR` hairstyle flags for balding
- Damaged APC board status bypassing `EMAGGED` and `BROKEN` status for
screentips
- Shuttle cleanup code bypassing `MOVE_CONTENTS` for moving old turfs
- Tram crossing signals bypassing `NORTH` and `EAST` direction checks
## Why It's Good For The Game
Code behaves as intended.
## About The Pull Request
Alternative to 3️⃣(#92591), which has been fatally shot.
Makes it so that His Grace can be turned into Her Grace via a
xenobiology gender-change potion. Her Grace turns the souls of the
consumed into confetti, creating a nice party atmosphere.
Also adds pronoun helpers for /atom/s, as they weren't there before.
## Why It's Good For The Game
I thought this was a good idea
<img width="934" height="153" alt="image"
src="https://github.com/user-attachments/assets/aff7abe0-86b6-47e1-a8e6-2c233544e9aa"
/>
It's a silly little variation, and it's purely voluntary. Couldn't hurt.
## Changelog
🆑
add: His Grace will now drink gender-change potions
/🆑
---------
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
## About The Pull Request
Adds portable wind turbines that can be put in your back slot or
anchored to the ground. They accept a cell-powered item and charge it
while you walk, or when space wind passes over them. Can be purchased
for 400 credits or crafted with 3 kitchen knives, plastic, and servos.
Requires a capacitor to charge things, and higher tiers charge faster,
faster walkspeed also charges faster.
<img width="592" height="644" alt="im222age"
src="https://github.com/user-attachments/assets/e9997536-5ee0-4417-a31c-cb58666d4d07"
/>
https://github.com/user-attachments/assets/1cf7fce5-d385-4e3e-be97-fb15e253c308
## Why It's Good For The Game
Sometimes you don't have a cell charger. And you need to charge
something. Now you can charge something by running laps around the
station.
During a blob, rechargers are brought to the front lines to charge
energy guns and such but what if the blob turns off the power? And what
are bar-rp'ers to do? Kill two birds with one stone by having them run
laps instead of sitting around doing nothing.
Also its funny.
## Changelog
🆑
add: Added a portable wind turbine which can charge things when you walk
around
add: Added a signal that procs when an object resists space wind (from
being anchored / pulled)
sound: added woosh.ogg as a low "wooshing" noise
image: added a wind turbine sprite
/🆑
---------
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
This adds the temporary body component to split personality and its
children
This should ensure that once split personality ends, the original mind
will return again and the ghost will be ghosted
fix#80212
and potentially #81256
## About The Pull Request
Title. Using better tools should now make crafting faster (or lower)
depending on the quality of the tools. This affects roughly 85% of the
crafting time, so, for every second of it, you're guaranteed to spend
0.15 seconds even if your tools are fast as light itself.
Also a nit with the main benefit of the mining skill being locked to
humans despite it being bound to the mind datum.
## Why It's Good For The Game
Tool speed previously didn't play a role in crafting. Now it does.
## Changelog
🆑
balance: The speed of tools used in a crafting recipe now affect the
time spent on it. Report any recipe that takes awfully little or too
long to complete.
balance: Non-humanoid mobs can now benefit from being skilled at mining
when swinging that pickaxe.
/🆑
## About The Pull Request
A verb is now available on localhost called `"Export Save as Dev
Preferences"`
This exports your current savefile to `/config/dev_preferences.json`
If you then connect to your localhost as a guest, it will load
`dev_preferences.json` as your preference datum
This allows for devs testing the game locally to load preferences for
guests.
(Guests connecting to live servers are completely unaffected.)
## Why It's Good For The Game
Initially I only did this because the recent keybinding changes have
destroyed my muscle memory when testing w/o logging in.
But as I worked on it I thought of a few other usecases, like when
implementing preference version migration - the dev preference is never
saved which means you can re-compile as much as you want without needing
to revert your save manually.
## About The Pull Request
Flamethrower exploding when shot was handled by hit_reaction previously,
and will now use the generic bullet_intercepting component. Also adds
handling for multiple projectile types in the bullet_intercepting
component, as well as a check for whether the object currently can block
bullets. Should have no gameplay changes.
## Why It's Good For The Game
closes#81863 , they said it'd be better consistency
## About The Pull Request
Changes crusher trophy drops from butchering to use guaranteed drops
instead of RNG-dependant ones
## Why It's Good For The Game
Some mobs are limited in quantity (rare variants, such as ice/magmawings
for example) and not getting a drop sucks, and getting duplicate drops
is inconsistent with how del on death mob drops work.
## About The Pull Request
Now all mobs are unbuckled from falling objects and dropped
individually, similarly to how lava functions. Also updated jaunters to
be comsig-based rather than chasms snowflake checking for jaunters in
belt slots.
Closes#92663
## About The Pull Request
- Adds **OPTIONAL** keybinds that lets you select a specific hand
- Alters **OPTIONAL** default keybinds as such:
- Q: Swap to Right Hand (replacing Drop item)
- E: Swap to Left Hand (replacing Quick equip)
- R: Quick equip (replacing Toggle Throw Mode)
- ShiftR: Quick equip belt
- X: Drop item (replacing Swap hands)
- Swap hands is Unbound
## Why It's Good For The Game
Swapping hands has always been somewhat awkward. Since it depends on the
currently selected hand, swapping your hands requires you to look away
from what you're doing and mentally process what you're holding and what
you have selected. In the heat of the moment (like a fight) it's really
easy to forget which hand you have selected and do something you did not
want to do (like accidentally hug your target instead of attack them).
This makes it so that, at the very least, you only need to check what
you're holding.
The **OPTIONAL** default keybinds **THAT ARE OPTIONAL YOU DON'T HAVE TO
USE THEM** were altered so that new players use this new feature,
hopefully alleviating some of the hiccups from learning hand swapping.
## Changelog
🆑
qol: Added [OPTIONAL] keybinds to for Swap Left/Right hands. Check your
keybinds. [NOT OPTIONAL]
/🆑
## About The Pull Request
red raptors will now be able to retaliate against mobs adjacent to it
while ridden.
## Why It's Good For The Game
red raptors dont have much use compared to its colleagues. this gives it
a bit of a unique purpose and makes it a viable option to have out on
the field
## Changelog
🆑
balance: red raptors are now able to attack while ridden
/🆑
## About The Pull Request
1. Penbang
A flashbang disguised as a pen. Clicking the pen arms the flashbang and
has no other visual or audio tell besides the pen clicking.
The fuse's length is based on the angle the pen cap is twisted.
Works as a normal pen otherwise.
2. Camera Flash
A camera with a high power flash.
Clicking on an adjacent target will flash them, ie, as a handheld flash.
Works as a normal camera otherwise - no tell.
3. Dagger Boot
A pair of jackboots with a blade embedded in them.
Makes your kicks sharp, meaning they will cause bleeding.
Looks like normal jackboots otherwise, though has a tell on
double-examine
4. Monster Cube Box
A box containing 5 monster cubes, which spawn into a random monster when
wet.
Monsters include Migos, Carps, Bears, Spiders, Wolves...
5. Spider Bite Scroll
A martial art focused around kicks and grabs.
- Punches against standing, staggered targets will instead kick them,
applying the bonus accuracy and damage that you'd expect from a kick.
(Also combos with the dagger boots)
- All kicks have a chance to disarm the target's active weapon. Chance
increases per sequential kick.
- Grants you the innate ability to tackle. This form of tackling has a
very high skill modifier, meaning you are very likely to get a positive
outcome (or at least, not fail). You also get up fast from it.
- Your grabs are 20% harder to escape from and deal an additional 10
stam damage on fail.
## Why It's Good For The Game
1, 2, 3: Just some random flavorful items, giving them some more toys to
use to complete bounties.
4: Shenanigans, for people who just wanna do "funny thing" instead of
focusing on big loot.
5: I figured it would fill a fun niche: Spies are commonly depicted as
martial artists, and the only martial arts they can obtain is Krav Maga
(it's not unique to Spies) and Sleeping Carp (it's not unique to Spies).
This gives them their own thing that people may look forward to
acquiring and playing around with.
As for the design of it, I wanted to add something that synergizes with
one of the other other items, so in the field if you notice both of them
pop up you really want to go for both.
The rest of the design I just filled in as vaguely useful and flavorful
tools a spy might want for kidnapping or detaining people: Better grabs,
tackling, and disarms.
Then I just went with the flavor of it being something the Spider Clan
used to teach to their Spies / Ninjas, kinda like an analog to the real
life Ninjutsu. (Maybe we can give it to Space Ninjas as well later...
since it doesn't especially benefit Ninjas in any way.)
## Changelog
🆑 Melbert
add: Adds 5 rewards to the Spy item pool: Penbang, Camera Flash,
Dagger-Boot, Monster Cube Box, and the Spider Bite martial art
/🆑
## About The Pull Request
Title. Adds missing stamina and projectile speed variable copies to
copied pellets.
## Why It's Good For The Game
Consistency.
## Changelog
🆑
fix: Stamina and projectile speed multipliers on pellet-cloud
projectiles (e.g. buckshot, rubber shot, flechettes) now respect
appropriate multipliers when fired from appropriate guns.
/🆑
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
Fixes#92639
The eyes-in-dark hallucination worked, but dispelled instantly due to
checking "is light" instead of "is dark"
Hallucination tier logic was inverted so it only re-calculated max tiers
for hallucination effects which didn't want them recalculated
## Changelog
🆑 Melbert
fix: Wackier hallucinations should rear their head again
fix: Ghost eyes hallucination works properly
/🆑
## About The Pull Request
`get_image()` proc of `/datum/bodypart_overlay/mutant` assumed a
`/obj/item/bodypart`'s `limb_gender` variable was a `FEMALE` or `MALE`
define, when its actually a `"f"` `"m"` string.
## Why It's Good For The Game
Its nice that sprite accessories can be gender specific, even if we may
not have any right now.
## Changelog
🆑
fix: Mutant bodypart overlays (tails and et cetera) that are
gender-specific now display correctly
/🆑
---------
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
## About The Pull Request
<img width="911" height="517" alt="image"
src="https://github.com/user-attachments/assets/631d5254-95a4-42d5-ae07-f58a815a1976"
/>
Adds the surplus energy sword. This is found in the black market with a
reasonable probability of being stocked but at a pretty high cost.
The weapon otherwise functions as an energy sword, but with a
significantly lower amount of damage if you're not hitting someone who
is in a compromised position; such as being prone, staggered, attacked
from behind or incapacitated (like stuns).
After 20 hits, you need to recharge the sword by clicking it with the
right mouse button. After an interaction timer, the weapon recharges to
full. You can do this early if you'd like.
Energy swords default to WEIGHT_CLASS_HUGE while active.
## Why It's Good For The Game
I've seen a few folk complain about a lack of particularly interesting
and potent melee weapons that might be floating around to find and
acquire. It'd also be somewhat funny for an actual traitor to have to
get through a pack of goons wielding shitty knockoffs of their own
energy sword.
This was actually my first ever idea for a PR back when I was first
starting the game but had absolutely no idea as to how to code or
anything. I was hardstuck on this for a long ass time. Now I guess I'm
doing it because I was reminded abotu that fact.
## Changelog
🆑
add: Adds the surplus energy sword; the mall katana of the future. It
cuts like shit, but if you're desperate enough, you could kill someone
with it. Just remember to keep it charged.
balance: Energy swords are huge objects while activated.
/🆑
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
We probably shouldn't be doing all of this work for all the stacking
status effects without visuals considering only a single status effect
uses the overlay system as of now.
## Changelog
🆑
code: Stacking status effects without visual overlays will no longer try
to create them and fail to do so.
/🆑
## About The Pull Request
Crude but simple fix for mulebots trying to buckle people. Mouse
dragging was opening stripping UI instead of buckling people.
Bots can't strip people anyway but I left a way to open strip UI. It is
working just like for cyborgs, bot needs to be in combat mode to open
it. Maybe someone will want to let Medbot strip people.
The issue happened when new strip UI was added 4 years ago:
https://github.com/tgstation/tgstation/pull/57889
Before the new UI the problem was known and someone fixed it:
<img width="633" height="149" alt="obraz"
src="https://github.com/user-attachments/assets/bfa3c323-60db-485c-a2d4-79c687839b74"
/>
But such simple solution isn't available anymore.
## Why It's Good For The Game
Fix good, we fix.
## Changelog
🆑
fix: Fixed bots unable to buckle people to themselves.
/🆑
## About The Pull Request
the family heirloom quirk runs `get_all_contents` on the quirk holder
every process. which is kinda dumb and wasteful when we are looking to
see if the quirk holder has an item _that we already have a reference
to_... `/atom/proc/contains` exists and works just fine for this.
## Why It's Good For The Game
`get_all_contents` is very wasteful and unneeded for this use-case
## Changelog
no user-facing changes
## About The Pull Request
Tin, some more hard dels that were found. Additionally there was a
balloon alert meant to display phrases like "Kapow!" "Bam!" etc but it
is runtiming before it can do so because the mob gets deleted before the
balloon alert gets displayed. (solution for these sorts of issues is to
display the balloon alert on the `loc` instead.
## Why It's Good For The Game
Less chug, and a bugfix.
## Changelog
Probably nothing worth mentioning
## About The Pull Request
Turns the surface z-level of icebox into a 1x3 area, effectively adding
2 wilderness new z-levels surrounding the station
Because it's not always clear to other people what I'm talking about,
this is what I mean with making the surface level a 3x3 z-level
The wilderness z-levels are gridlinked, instead of crosslinked, which
just means the connections are consistent and not randomized. If you
keep going right, you will always end up where you started again,
eventually. This also removes the black border around the surface icebox
z-level (cause you can just go there now)
**Wilderness levels**
I've added some Z-level templates that can be generated. They're
incredibly basic, but all can spawn runes on them as well.
- Snow planes (5x)
- Ice planes (1x)
- Forest planes (1x)
- Mountain planes (1x)
I've also tweaked surface generation quite a bit. It being completely
covered in bones always felt weird, and the intersparsed rocks and
chasms never sat right with me. The default overworldgen is now more
like the Forested trait, but with more sparse trees.
All of this is modular btw. You can increase the amount of z-levels,
make any space z-level be unrandomized gridlinked or add your own
wilderness z-levels (either to your own map or icebox)
## Why It's Good For The Game
Icebox exploration is kind of depressing. We have this unique setting,
but we can't really go anywhere? You can go down and find that one pool,
which is about the peak of exploration of icebox.
Now you can literally explore the entire round and get incredibly lost!
It's also a great opportunity for mappers! (Especially since the
templates I made were made rather quickly as I wasn't sure if this had
merit).
2 extra z-levels isn't a lot, but it'll let us further develop planetary
wilderness z-levels further without impacting load times that much.
Maybe 3x3 icebox can be real in the future, but for now 1x3 icebox will
have to do
## About The Pull Request
Adds a new surface ruin to icebox, the RoroCo factory. Contains a couple
of puzzles, and a small amount of loot in the form of ~~3 total pairs of
insulated gloves~~ a pair of insulated gloves, two adorable roros and a
cool unique labcoat. Just don't ask where the gloves come from...
Puzzles can of course be avoided/brute-forced by breaking down the walls
but that's for chumps.
<img width="1152" height="1024" alt="Space Station 13 2025-08-06 221903"
src="https://github.com/user-attachments/assets/21050aa6-9b27-494d-a949-7496aeda18cf"
/>
## Why It's Good For The Game
The upcoming 1x3 icebox surface calls for more ruin content to help fill
that space.
## Changelog
🆑
add: A new insulated glove factory has popped up on the ice moon.
add: Freezer floor tiles now come in the full range of shapes.
/🆑
## About The Pull Request
Also, all middle hair masks were broken because they had an incorrectly
set icon_state
Closes#92450
## Why It's Good For The Game
Its supposed to be a replacement for the security helmet, and while it
makes sense that it doesn't act as a full helmet (as it doesn't fully
cover your head), it still probably should have armor as per original
design (and also to not be useless for sec, who are the intended users
of this item)
## Changelog
🆑
fix: Fixed constable helmet not having any armor
fix: Fixed some hair masks not working
/🆑
## 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

Resprites:
Tesla Cannon
Tesla Cannon crafting kit
### New SFX / VFX
The tesla cannon now uses a new type of beam effect that randomly picks
sprite variants for each segment instead of a tracer.
This makes the arc look more dynamic and less distorted.
Autofire guns can now choose to use a looping sound datum when firing.

#### Balance changes
The tesla cannon must now have its stock unfolded before firing, this
takes 1.5 seconds and makes the gun bulky.
It is still normal sized when folded, and folding it is instant.
### Bug fixes
Fixed a bug where looping_sound.stop() would fail to stop sounds.
The tesla cannon is an incredibly powerfu
## Why It's Good For The Game
### My reasons for respriting
The old sprite was not bad, by all means but I had a few gripes with it.
* The old sprite does not incorporate the flux anomaly yellow colour.
* The old sprite looks a bit much like a real, professionally produced
sci-fi weapon,
* The old sprite looks pretty small for such a ultra high dps full auto
weapon.
* The old inhand is quite indistinct for something that can game end you
in like one second.
### My design
I think that anomaly items should be very mad science coded and, since
anomaly science is by definition a poorly studied field, they should
look more like prototypes created by a scientist rather than something
professionally made in a factory.
## Changelog
🆑
image: The tesla cannon has new sprites.
image: The tesla parts kit has new sprites.
image: The tesla cannon has a new shocking beam effect when firing.
sound: The tesla cannon has new sounds.
balance: The tesla cannon must now be unfolded to fire.
fix: looping sounds now stop playing sounds when commaned to do so.
/🆑
## 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.
## About The Pull Request
So in a recent round I noticed the newscaster UI was acting kind of
funky, where two channels seemed to overlap and weirdly pick between the
two in unpredictable ways. Looking into it, it seemed that somehow the
channels had managed to get their unique IDs to overlap-
Oh.
5d3353e7af/code/game/machinery/newscaster/newscaster_data.dm (L109-L131)
I see.
...I think that code speaks for itself, in how this could've gone wrong.
Anyhow, in this pr we entirely ditch this system, and instead make it
use an incremental and thus guaranteed to be unique ID.
This fixes our issues.
While we're here, we also remove the unused `channel_IDs` list, and
replace it with the associative lists `network_channels_by_id` and
`network_channels_by_name`. This allows us to also stop iterating over
every network channel until we find the one with the right name or ID.
We also rename some confusing, wrong, or non-standard vars while we're
here.
## About The Pull Request
Purged several files inthe theme of misc.dm and broken the contents out
into better organised files.
Incidentally done some minor cleanup by removing an unused global list
referring to a string file that no-longer exists, and removing a useless
proc that replicated the behaviour of file2list().
## Why It's Good For The Game
See #60358 and all its successors
## Changelog
🆑
code: Reduced the number of files named misc.dm or similar by 14%.
/🆑
## About The Pull Request
title
## Why It's Good For The Game
i feel like paramedic really should have pharmacy access on lowpop to
cook chems, because unlikely you will have other chemists/doctors, plus
thats just a trend that on lowpop your job usually has more access to do
more job on understaffed station (like robo gets xenobio, coroner
mentioned pharmacy and etc)
## Changelog
🆑
balance: Paramedic now has extra access to pharmacy on skeleton crew
station.
/🆑
## About The Pull Request
<img width="346" height="190" alt="rhJh93UCUl"
src="https://github.com/user-attachments/assets/376199f1-2083-4c9d-b301-461c23c1c03b"
/>
Tin. Caused by someone passing a hard ref in the source arg of
`ADD_TRAIT`. Also does a quick pass for similar bugs.
## Why It's Good For The Game
Less chug
## Changelog
Nothing player facing enough to put in the CL
## About The Pull Request
When an item is cooked, reagents are generally cleared from the
resulting object and the reagents of the source object are transferred
to it instead. This means burned mess won't have its toxins when cooked,
locking you out of one or two chemistry recipes that require it while
also making the item generally not toxic at all.
So to fix it, we simply have to replace all or most of the consumable
reagents inside the burned mess with bad food, via component signals.
## Why It's Good For The Game
Fixing an issue with food and chemistry.
## Changelog
🆑
fix: burned mess made with a microwave, oven or griddle once again
toxins.
/🆑
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>