## About The Pull Request
Closes https://github.com/tgstation/tgstation/issues/92764
Title.
## Why It's Good For The Game
bugs bad
## Changelog
🆑
fix: Player-controlled medbots can now inject chloral on healthy targets
/🆑
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.
No more roaches and rollies everywhere. Baby's first PR.
## About The Pull Request
Adds cigbutts to the list of trash on cleanbots. Cleanbots will now melt
and sweep cigarette butts, cigar butts, roaches, etc.
## Why It's Good For The Game
Cigarette trash is still trash, and deserves to be melted like the rest
of the trash.
## Changelog
🆑
add: Cleanbots now clean up used cigarettes.
/🆑
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/92533 by having
knife cleanbots read your worn id rather than reading your mind.
<img width="1920" height="1080" alt="image"
src="https://github.com/user-attachments/assets/3a40c315-de4c-4e86-9b76-d4401eb06998"
/>
edit: Incidentally makes a harder achievement much easier because its
based on id rather than magic mind reading
## Why It's Good For The Game
exploit to find out someone's identity bad
## Changelog
🆑
fix: knifed up cleanbots will now read your id card rather than your
mind when stealing valor
/🆑
## 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
This PR adds logging for people turning bot sapience on and off
This is currently logged to silicon logs, even though the mob is not a
silicon, just because I figured that's where an admin would look for
information related to robots. If you think that is stupid I can put it
somewhere else.
## Why It's Good For The Game
This is an action that can adds ghosts (and meta knowledge) into the
round which didn't leave any kind of paper trail, so it should probably
have one
Ejecting an existing player from bot control was already logged and I
didn't remove it
## Changelog
🆑
admin: adds logging for turning bot sapience on and off
/🆑
## About The Pull Request
I have added the ability to create and edit station radio channels
through the existing telecommunications system.
You can change the name of the radio channel and its color.
The channel settings are changed and created through the servers
(Frequencies Settings)

Here i created my own channel:
1) Add frequency at Receiver (you will not see channel name):

2) Add frequency at Bus (you will not see channel name):

3) Add frequency at Server
4) Add settings for your frequency

5) See the result:

Important Notes:
1) Headsets, radios, and intercoms will not see a change in
telecommunications, but will use standard names (Common, Security etc.).
2) There are still reserved names that cannot be used: CentComm,
Syndicate, Uplink, CTFs channels
3) Servers must filter frequency for applying settings on them
## Why It's Good For The Game
Now telecommunication channels names and colors depends on the settings
of the network servers, which makes it more flexible and logical. It is
also useful for foreign language servers, as you can translate channel
names.
## Changelog
🆑
add: Added ability to change existing radio channels and create new
qol: Added color for some buttons in Telecomms UI
/🆑
## About The Pull Request
* When gibbing mobs, spawned gib type is now based on mob's biotypes if
they're not a carbon, or their chest (or first) bodypart if they are,
rather than requiring a proc override for every single mob. This means
that a few robotic mobs no longer drop meaty gibs, and that gibbing
androids now produces cyborg gibs instead of a meaty surprise, plus they
should no longer runtime when trying to gib a robot. Gibs also are now
spawned around the gibber and streak outwards instead of magically
teleporting a few tiles away, for some visual flair.
* Fixed meat not overriding blood DNA on blood_walk component which made
xeno and lizard meat leave behind orange trails instead of proper
lime/dark green blood colors (due to them keeping human meat DNA).
* Brightened up the gibber blood overlay I've missed, so it should be
consistent with old blood colors now.
* Also cleaned up the gibspawner code.
## Why It's Good For The Game
Biotype/chest changes should make devs lives easier and gameplay a bit
more consistent, and streaking just makes the process look slightly
better.
## Changelog
🆑
add: Androids and fully augmented humans now drop robotic gibs instead
of meat
add: Improved gibber VFX
fix: Fixed gibber overlays being darker than intended
fix: Fixed xenomorph and lizard meat leaving orange trails behind
code: Improved gibs and gibspawner code
/🆑
## About The Pull Request
Makes bots use pronouns if they're given them.
## Why It's Good For The Game
Most bots are genderless, which is a given. But notably the hygiene and
sec bots use he/him instead of it/its, the tooltips related to their
panel and such didn't adhere to this until now. If a bot is given
gender, the description, tooltips and all other text info should adhere.
## Changelog
🆑
code: bots use their correct pronouns, if given any, in their tooltips
/🆑
## About The Pull Request
This has the potential to create a lot of needless mob updates which is
not great. Now should only update a mob's clothing if it was actually
washed.
This PR
1) ensures that all wash() procs return a bitflag.
2) ensures that `wash()` proccalls which result in expensive operations
like icon updates only do so when it is necessary
## Why It's Good For The Game
Updating mob sprites is expensive, and doing it when nothing has been
changed is bad.
## Changelog
Nothing really player facing
## About The Pull Request
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.
EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.
EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.
## Why It's Good For The Game
Improving the backbone of the crafting system. Also materials and food
code.
## Changelog
🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
## About The Pull Request
Refactors most of blood handling code untouched by #90593 and completely
rewrites all blood decals, components and reagents.
- Blood types now have behavioral flags which allow them to control
where they leave decals/DNA/viruses. Oil no longer transfers DNA and
viruses with it, while podpeople water-blood doesn't leave visible
decals on turfs and items, but still can be picked up by DNA scanners.
- Multiple blood types have received unique handling - liquid
electricity blood now glows in the dark, oil trails are flammable and
lube ones are slippery. Oil blood can be restored with fuel, lube with
silicon and slime with stable plasma (as normal plasma already passively
regenerates their blood), instead of everything using iron. Saline
solution only supplements on iron-based blood and won't do anything to
help with bloodloss for species who rely on different blood types.
(Roundstart this applies only to Ethereals)
- All blood logic has been moved away from the blood reagent itself into
a blood element that is assigned to the blood reagent by default, and to
any reagent that's drawn from a mob as their "blood" (in
``transfer_blood_to``). This means that blood you draw from lizards will
be green and have lizard's blood description instead of mentioning red
blood cells, Ethereal "blood" will actually contain their DNA and genes,
etc.
- Refactored all blood decals. Blood states are no more, everything is
now handled via blood DNA. Credits to MrMelbert and Maplestation, as a
significant amount of code has been taken from
https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his
followup PRs. Oil and xenomorph splatters are now subtypes of blood,
blood drying is now animated, blood trails now curve and can be
diagonal.
- Rewrote bloodysoles and bloody_spreader components, credits to Melbert
again for the former, while latter now makes more sense with its
interactions. Bloody soles no longer share blood DNA with your hands.
- Ported Melbert's bloody footprint sprites and bot-blood-spreading
functionality.
- Removed all species-side reagent interactions, instead they're handled
by said species' livers. (This previously included exotic blood
handling, thus the removal)
- Slightly optimized human rendering by removing inbetween overlay
holders for clothing when they're not needed.
- Blood-transmitted diseases will now get added to many more decals than
before.
- Cleaned up and partially refactored replica pods, fixed an issue where
monkeys/manipulators were unable to harvest mindless pods.
- Exotic bloodtype on species now automatically assigns their blood
reagent, without the need to assign them separately.
- Clown mobs now bleed (with colorful reagent instead of blood during
april fools), and so do vatbeasts (lizard blood)
- Implemented generic procs for handling bleeding checks, all sorts of
scanners now also correctly call your blood for what it is.
- Podpeople's guts are now lime-green like their organs, instead of
being weirdly greyish like their water-blood. (Their bleeding overlays
are still grey, as they're bleeding water)
- Slimepeople now can bleed. Their jelly is pale purple in color, but
their wound overlays copy their body color.
- Injecting/spraying/splashing/etc mob with a reagent preserves its
data, so you could theoretically recycle fine wines from someone's
bloodstream
- Fixed burdened chaplain's sect never actually giving a blessing when
applying effects, and giving a blessing when nothing can be healed.
Inverted check strikes again.
- Closes#91039
#### Examples
A lot of blood here has dried, visually the blood colors are almost
exactly the same as before either of the blood refactors.


## About The Pull Request
adds stoats to the game!

these are relatively friendly animals u can find in maints. they'll hunt
down mice and other smaller vermin (making them a janitor's best friend)
,and are nimble enough to crawl through pipes. They also love stealing
things as they will drag random objects they find lying around them.
additionally, you may find disposal bins that are shaking, this means
there's a stoat inside rummaging it for food. clicking eject or throwing
anything in the bin will cause the stoat to immediately jump out scared.
u can also tame them by feeding them eggs or dead mice.
## Why It's Good For The Game
further expands the mob pool of maints, establishing some sort of
ecosystem.
## Changelog
🆑
add: added stoats to the game
/🆑
## About The Pull Request
I was trying to fix a hard delete and it became a whole thing
- Reworks `/obj/item/stack/proc/split_stack` to no longer also try to
put it in the user's hands, or take a user at all. The proc now purely
splits the stack and returns the new one
- Creates `/obj/item/stack/proc/split_n_take` which uses `split_stack`
and does the other behaviors like fingerprint adding and putting in the
user's hands
- Update usages of `split_stack` to either properly use it and remove
the code added to get around the put in hands behavior, or change them
to use `split_n_take` instead
- Fix a random bug in pipe bomb building I noticed while testing
## Why It's Good For The Game
Ultimately this fixes a hard delete with goldgrubs eating a piece of ore
while sitting on top of another piece of ore of the same type (the put
in hands behavior of split stack would cause the ore being consumed to
drop to the ground briefly, merge with the ore there, and then qdel
while still being moved to the goldgrub contents), but also added bonus
that it makes `split_stack` just split the stack and not some other
stuff too. Also a pipe bomb bug fix
## Changelog
🆑
fix: fixed being able to add seemingly infinite refined bluespace
crystals to pipe bombs
refactor: /obj/item/stack/split_stack no longer tries to move the stack
into the user's hands, use /obj/item/stack/split_n_take for that
/🆑
## About The Pull Request
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
## Changelog
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.
## Changelog
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
Fixes#89940
This seems like a simple oversight made when making the bot basetype.
Simple Animal bots have this faction but Basic ones don't for some
reason, this causes them to be read as hostile by mobs that are supposed
to be passive towards station-aligned targets.
## Changelog
🆑
fix: Random supposedly-friendly mobs will no longer aggro onto and kill
medbots and cleanbots
/🆑
## About The Pull Request
516 requires float layered overlays to be using pixel_w and pixel_z
instead of pixel_x and pixel_y respectively, unless we want
visual/layering errors. This makes sense, as w,z are for visual effects
only. Sadly seems we were not entirely consistent in this, and many
things seem to have been using x,y incorrectly.
This hopefully fixes that, and thus also fixes layering issues. Complete
1:1 compatibility not guaranteed.
I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming
inside apply_overlays), and this is still included in the PR to flash
out possible issues in a TM (Plus I will need someone to grep the
runtimes for me after the TM period to make sure nothing was missed).
After this is done I'll remove all these extra checks.
Lints will probably be failing for a bit, got to wait for [this
update](4b77cd487d)
to them to make it into release. Or just unlint the lines, though that's
probably gonna produce code debt
## Why It's Good For The Game
Fixes this massive 516 mess, hopefully.
closes#90281
## Changelog
🆑
refactor: Changed many of our use cases for pixel_x and pixel_y
correctly into pixel_w and pixel_z, fixing layering issues in the
process.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SmArtKar <master.of.bagets@gmail.com>
## About The Pull Request
This trainwreck of a PR is (hopefully) a final solution to all rendering
jank stemming from the new filter-based coloring system. I went over
every single instance of RESET_COLOR, either adding KEEP_APART or
rewriting them entirely so they render properly. I've also fixed blood
rendering issues by utilizing alpha filters and adding an abstract
"holder" appearance for worn items, which holds blood overlays on worn
clothing as to avoid coloring it. I've also fixed horrible
inconsistencies with atmos pipe coloring as a result (of getting sucked
down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY
in atmos code to ATMOS_COLOR_OMNI to avoid confusion.
MODsuit modules still get colored into MOD unit's color, need to
refactor their rendering for this.
Closes#88989Closes#87526Closes#89837
## Changelog
🆑
refactor: Audited all remaining coloring code - among noticeable
changes, blood should no longer get colored or "leak out" of item
bounds, atmos pipes no longer color weirdly and repairbots are white
again.
/🆑
## About The Pull Request
Repair bots, when receiving sheets, now use `transferItemToLoc()` rather
than `forceMove()`, which means they now respect things like NODROP.
Thus, borgs can no longer lose their glass sheet tool into the bot.
## Why It's Good For The Game
Fixes#89737
## Changelog
🆑
fix: Sheets of materials with NODROP can no longer be given to repair
bots.
/🆑
## About The Pull Request
For some reason, `/datum/ai_behavior/execute_clean/finish_action` was
coded such that it returns early if the list of cleanbot emagged phrases
was empty (or null).
This shouldn't be a problem with regular cleanbots - they come with
emagged phrases already set. However, it makes this ai behavior
unsuitable for use with non-cleanbot controllers (such as Monkestation's
cleaner slimes - cute little slimes that will dissolve trash and
blood!), as the statement to clear the `target_key` blackboard value was
after this.
This PR handles this by changing around the `if` statements - where we
previously ended early if the emagged phrase list was empty, we now only
perform an emagged phrase if the list has any length. (and if you're
wondering - `length(null) == 0`)
## Why It's Good For The Game
Avoids potentially buggy behavior on admin-made mobs (or those made by
downstreams).
Also has the benefit of makes the code shorter and easier to understand!
## Changelog
:cl:MichiRecRoom
fix: The cleaning AI behavior (generally used by cleanbots) will no
longer return early if the list of emagged phrases is empty.
/🆑
## About The Pull Request
Converts `/datum/player_details` into `/datum/persistent_client`.
Persistent Clients persist across connections. The only time a mob's
persistent client will change is if the ckey it's bound to logs into a
different mob, or the mob is deleted (duh).
Also adds PossessByPlayer() so that transfering mob control is cleaner
and makes more immediate sense if you don't know byond-fu.
## Why It's Good For The Game
Clients are an abstract representation of a connection that can be
dropped at almost any moment so putting things that should be stable to
access at any time onto an undying object is ideal. This allows for
future expansions like abstracting away client.screen and managing
everything cleanly.
## About The Pull Request

#89341 resprited medbots but didn't resprite the bezerk bot, despite
tactical medkits still applying said skin.
Also removed an unused trait
Closes#89341
## Why It's Good For The Game
Missing sprites are bad
## Changelog
🆑
fix: Tactical medkits should no longer create invisible medbots
image: Implemented the missing bezerk medbot skin
/🆑
## About The Pull Request
Closes#85599 by A) replacing a break statement with continue, and B)
converting blood trails to be a subtype of blood pools, properly filled
with blood. This should also allow them to interact with bloody soles
component, making those who step into them leave bloody footprints.
## Changelog
🆑
fix: Cult blood rites should not longer create "empty" blood or be
unable to suck up more than one blood pool at a time.
code: Blood trails are now considered a subtype of blood pools
/🆑
## About The Pull Request
closes#88743 . the issue is while they'd ignore ur command since its
impossible, the emote would still appear, which i now realize was a
mistake
## Why It's Good For The Game
fixes being able to tell animals to commit atrocious acts
## Changelog
🆑
fix: radial pet commanding emotes will now not appear if the command is
impossible to execute
/🆑
Renames all uses of caller, as they (currently) shadow the new byond var
and will in future error
Ups our "wan if compiled after" experiement compile version to 516
Adds an alternate 516 unit test
## About The Pull Request
Partially a port of
https://github.com/DaedalusDock/daedalusdock/pull/1163 which is a port
of my own code from bitbus
Closes#88579
Instead of manually setting hud images and positioning we now can use
set_hud_image_state which also updates their position to ensure that
they scale with the owner atom. HUDs had RESET_COLOR and RESET_TRANSFORM
but no KEEP_APART, so they were stuck with mobs all this time. I
replaced RESET_TRANSFORM with PIXEL_SCALE (shouldn't be reserved to mob
huds only to be honest) and added KEEP_APART, so that HUDs still
scale/rotate with their owner but don't inherit their color. Also fixed
the dragon issue, that's where this PR actually started.
Closes https://github.com/tgstation/tgstation/issues/45411
## Why It's Good For The Game
I don't want my HUDs to be pretty pink when I make a barbie Clarke.
## Changelog
🆑
refactor: Rewrote some of HUD code so they're no longer colored in their
owner's color
fix: Space dragons no longer turn invisible when toggling seethrough
mode
/🆑
## About The Pull Request
this PR improves the UX of pet commands a bit. i decided to expand on
their radial menu. You can now hold shift and hover over your pet to
display a menu of commands which you can choose from. alternatively, you
can still type out commands in chat
https://github.com/user-attachments/assets/9da7f7ea-58a3-4fd6-b040-45cc05cda51d
## Why It's Good For The Game
makes pet commands easier to give out when you're managing more than 1
pet. also fixes the fishing command not working.
## Changelog
🆑
qol: holding shift and hovering over your pet will display a list of
commands you can click from
fix: fixes the fishing pet command not working
/🆑
## About The Pull Request
Technically an improved port of
https://github.com/DaedalusDock/daedalusdock/pull/651, instead of only
storing height over 32 pixels for HUDs we store both pure height and
width for the sake of cutting down on icon operation spam (which is
pretty costly). Should save us a significant amount of time, cuts down
update_health_hud times by 45% and total update_health by 30% which is
pretty good for a somewhat hot proc.
## Why It's Good For The Game
Our health HUDs constantly fetch icons ***twice*** every update_health,
jesus.
## Changelog
🆑 SmArtKar, Kapu
code: Implemented caching for icon sizes which should significantly
improve mob health performance due to HUDs constantly fetching icons
/🆑
## About The Pull Request
repairbots now gain the ability to deconstruct when hacked by an AI. ive
also updated their crafting menu requirements and they now drop their
toolboxes when they're destroyed
## Why It's Good For The Game
closes#88336
## Changelog
🆑
fix: repairbots now gain their destructive abilities when hacked by an
AI
fix: repairbot crafting recipes have been updated
/🆑
## About The Pull Request
this fixes some few sentient repairbot-related issues that were reported
a few days ago. ive also given sentient repairbots a new simple UI to
manage their materials.

while I was at it, i also fixed bots continuously trying to path to
unreachable beacons, which can be quite costly since they're regularly
very far away.
## Why It's Good For The Game
closes#88067
## Changelog
🆑
fix: repairbots no longer get flashed by their own welder
fix: repairbots no longer break glass tables they step on
fix: repairbots can no longer flush their own welders
fix: fixes some runtimes when emagged repairbots try to deconstruct
things
fix: fixes sentient repairbots not being able to see or remove their
material counts
/🆑
## About The Pull Request
`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage
## Changelog
🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
## About The Pull Request
adds repairbots to the game!

this pr serves as a massive rework and buff to floorbots. i was a bit
sad that they dont get built much anymore so ive given them tons of more
utilities and uses.
Repairbots still inherit to place tiles and repair breaches. but they
can now rebuild walls, rebuild windows and repair structure and
machinery. Also Ive given them voicelines to add more character to them.
In short, they are very depressed with their job (however they express
their happy go lucky attitude when u emag them where they will start
deconstructing the station)
to demonstrate capabilities, here's a slightly sped up clip of some
repairbots patching up an area that was maxcapped 4 times:
https://github.com/user-attachments/assets/bddac3b0-1984-4571-85d3-c5283dd7c0de
When repairbots feel threatened, they will retract into their little
toolbox which u can pick up and hold in ur hand, either to conveniently
carry and plop them down at breached sites, or to bash skull with it
U can build them using a toolbox, proximity sensor, cyborg arm and a
conveyor belt
## Why It's Good For The Game
refactors floorbots and makes them alot more useful tools for engineers
to use
## Changelog
🆑
refactor: floorbots have been refactored, please report any bugs
add: adds repairbots to the game!
/🆑
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.
This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).
And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.
## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.
Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.
Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

## Changelog
🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
## About The Pull Request
eventhough medbots wouldnt move towards them, itd still keep searching
for beacons. this fixes that
## Why It's Good For The Game
fixes stationary medbots still searching for patrol beacons
## Changelog
🆑
fix: stationary medbots no longer search for patrol beacons
/🆑
## About The Pull Request
mobs would disregard you for a bit if they went through a do_after, such
as goldgrub digging or medbots healing. this fixes that
## Why It's Good For The Game
fixes ai controllers resetting their targets post do_afters
## Changelog
🆑
fix: fixes ai controllers resetting their targets post do_afters
/🆑
Haunted Trading Post
-
- Shock traps no longer trigger when Syndicate mobs move nearby. This
stops patrolling bots wasting the traps' charges.
- Employee lounge has had its items rearranged, to prevent the 1-in-8
chance of the shock trap in the room emitting sparks in just the right
direction to ignite the fuel tanks.
- Dedbots now become sparks and robotic debris when destroyed.
- Space outside the map has been replaced with turf passthrough. By
default this doesn't change anything, but this stops the map template
bringing space tiles with it if it's force loaded on planetary maps.
Garbage Trucks
-
-Space outside the map has been replaced with turf passthrough.
Lizard Gas (Lavaland)
-
- Asphalt turfs in the unroofed parts of the ruins now use planetary
atmos. Atmospheric mishaps (ie plasmafloods and fires from broken or
sabotaged equipment) will spread in a more intuitive pattern (ie they
will bunch up and bubble under the roof, instead of sticking to the
road)
MI13 Food Truck
-
- Removed a decal in a wall.
- Minor tweak to thruster sprites.
## Why It's Good For The Game
These are maintenance fixes on maps I've made.
## Changelog
🆑
balance: [Haunted Trading Post] Explosive trap in Employee's Lounge is
now less sensitive.
balance: [Haunted Trading Post] Shock traps will no longer be triggered
by Syndicate mobs.
fix: Dedbots now properly spawn post-death visual effects.
fix: [Lizard's Gas (Lavaland)] Atmos outside the gas station has been
tweaked, for realism.
fix: [MI13 Food Truck] Minor visual fixes.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
All usages of world.icon_size in code have been replaced with new
`ICONSIZE_X`, `ICONSIZE_Y` and `ICONSIZE_ALL` defines depending on
context
Replaces some "32" magic numbers with the defines
A few bits of code have been modified to split up x/y math as well
## Why It's Good For The Game
Magic number bad, code more readable, code more flexible and I'm told
there's an access cost to doing world.icon_size so minor performance
gains
## Changelog
🆑 tonty
code: made some code relating to the world's icon size more readable
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
hygeinebot's pathing to unclean people was a little slow and
unresponsive because the behavior was trying to do too many things at
once. this splits the behavior into 2, one for chasing and one for
dealing threats. also fixes a minor bug where sometimes hygeinebots
would be unjustifiably angry at people it just met
## Why It's Good For The Game
fixes wonky hygeinebot pathing
## Changelog
🆑
fix: hygeinebots are better at chasing unclean people
/🆑
## About The Pull Request
<details>
- renamed ai folder to announcer
-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer
- separated the ambience folder into ambience and instrumental
-- ambience --
- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it
-- instrumental --
- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)
-- items --
- moved secdeath to hailer
- moved surgery to handling
-- effects --
- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects
-- vehicles --
- moved mecha into vehicles
created mobs folder
-- mobs --
- moved creatures folder into mobs
- moved voice into mobs
renamed creatures to non-humanoids
renamed voice to humanoids
-- non-humanoids--
created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg
-- humanoids --
-- misc --
moved ghostwhisper to misc
moved insane_low_laugh to misc
I give up trying to document this.
</details>
- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc
- [X] mobs
- [X] runtime
- [X] vehicles
- [ ] attributions
## Why It's Good For The Game
This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.
## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
## About The Pull Request
bot modes werent correctly reflecting the bot's AI states. this pr fixes
that. also fixes some issues where the bot's AI might get stuck
inbetween switching modes
## Why It's Good For The Game
closes#86771
## Changelog
🆑
fix: botkeeper now displays bot's correct states!
/🆑
## About The Pull Request
Basic bots were clearing the active hud image list before calling the
hud handler functions, this meant client images would stack slowly over
itme as you viewed bots, and lead to poor client performance
Shoutout to kyler for spotting the code
Shoutout to melbert and mso for helping me debug the issue on sybil live
## Why It's Good For The Game
Fixes#86498
## About The Pull Request
this is a revival of #82635 . i got permission from potato to reopen
this, he did almost all the work. i only just solved the conflicts and
fixed all the bugs that were preventing the original from being merged
(but it should be TMed first)
## Why It's Good For The Game
slightly improves the performance of basic mob AI
## Changelog
🆑
LemonInTheDark
refactor: able_to_run and incapacitated have been refactored to be event
based
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ZephyrTFA <matthew@tfaluc.com>