## About The Pull Request
Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game
Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.
I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts
## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai
## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
## About The Pull Request
I have decided to help out with basic mobbing slimes, and found out,
that this code is ancient and crusty. So I have decided to refactor and
tweak things bit but but, until the moment I will hit AI related stuff.
I might have gone a bit overboard, and performed a melange of fixes. I
have done the following in order:
- Slime colour, core type and mutation list are now held by a single
`slime_type datum`. This means the slime's core is no longer spawned
using text operations on the slime's colour, and the slime's mutation is
no longer a single large switch statement that returns an exactly four
element length array. Icons are still based on the slime's colour
define, but that is now more changeable.
- Autodocced all the slime procs and vars I could find, while also
renamed them to be more descriptive. Also made Booleans actual booleans.
Also added code to confused code segments. For example, did you know
that slimes would forgive all its stacks of Feeling Very Attack Right
Now, if it has exactly one level of Discipline? I didn't, and I almost
turned the 1 in the check into a TRUE before I had a second look.
- Added defines to the slime hunger checks
- Cleaned up a lot of single letter vars in all code that referenced the
now changed variables.
- Large amount of if-chain pyramids have been turned into early returns.
More readable.
- Made the xenobiology camera shortcuts and actions always do the same
thing, though the action buttons still loop through all of the conents.
In addition, after seeing a comment lamenting about varied load orders,
I have made autolinking the monkey recycler is now done in
LateInitialize, which didn't exist when it was made.
- I have included an UpdatePath that changes the colours of premapped
slimes, but I did not do anything for the other values.
- I noticed slimes were unable to attack pacifist humans, due to trait
checking the human instead of the attacking slime. This has been fixed.
- The slime scanner has an examine block, and it now describes your
slimes' "mutation attempt chance", instead of like, performing math in
case the slime's current colour is one of the mutations, or hiding it if
it has none. This value is needed to breed rainbow slimes.
This has been an extremely large scrubbing. I am willing to try rip it
up into smaller chunks, even if most of it is just single letter vars
and if pyramids.
## Why It's Good For The Game
If code is more readable and expandable, it will aid in further
refactors.
## Changelog
🆑
refactor: Slimes's colour, core type and mutation list is now held in a
slime type datum
code: Slime's variables have been documented, and renamed a bit to add
clarity. Please report bugs that might stem from renaming.
fix: Slimes are not longer prevented from attacking pacifist humans.
qol: Slime scans now display the actual amount of genetic instability,
instead of hiding it if a slime doesn't mutate further, or tweaking it
if it might mutate back into itself. This will make it easier to parse
which slime to breed further to get a rainbow slime.
/🆑
## About The Pull Request
Adds an arctangent 2 component (atan2)
## Why It's Good For The Game
It's made to convert offsets into angles, something thats pretty useful
in a coordinate based game
## Changelog
🆑
add: Adds an arctangent2 component to circuitry!
/🆑
- add Internal inducer: An inducer for engi borgs, it uses power from
there own cell to charge other devices
- Buff the RPED module to be onpar with BSRPED in storage(same
otherwise)
- Borg chargers now also draw from powernet like cells do
The RPED buff is more because the standard capacity for parts is really
low, this lets borgs use RPED more hassle free. They still need to
physicaly be next to the machine so its not an insane buff otherwise
## About The Pull Request
Robotics can print Advanced cybernetic arms and legs. These limbs have a
higher max health (though contribute the exact same amount to core
health as normal limbs), higher unarmed damage and higher unarmed
effectiveness than organic limbs.
In addition, Strongarm implants now respect the unarmed potential of the
limb it occupies. This means you can potentially get much higher damage
output if your arm would be capable of higher potential damage and armor
penetration. They also do additional stamina damage (1.5x punch damage)
so that you can capitalize better on unarmed combinations.
Surplus Prosthetic limbs now contribute a total of 250% of their carried
damage against overall health. With only 20 max HP, that means at full
damage, the user suffers 50 damage per limb. They also have terrible
unarmed values.
Cleans up exofabricators a touch and creates some defines for limb
values.
New Sprites


## Why It's Good For The Game
I really want to encourage people to get involved in unarmed combat, so
I want to include some potential ways to seek out improving your unarmed
combat ability. One possibility should be robotics!
Currently, Strongarm implants are....possibly worse than unarmed
attacks? To solve that slightly, they now utilize the attacking limb's
unarmed potential as bonuses to the damage dealt as well as penetrative
power. I don't have a perfect solution for this at the moment, but at
least anyone utilizing this implant isn't unintentionally harming their
unarmed combat potency...too much.
Surplus Limbs are, once again, extremely good at taking damage and have
almost no actual negatives at the moment. I tried to resolve this in
https://github.com/tgstation/tgstation/pull/71739, but the code changes
I added have since become obsolete once again, leaving us once again
with surplus limbs acting as a health _boost_ rather than a health
_malus_. This fixes that issue once and for all, and if you have these
limbs, they're going to fucking _suck_.
## Changelog
🆑
add: The battle against Maint Khan's forces rages on in the periphery
stations of the Spinward Sector. And with it, a new breed of unarmed
warrior has emerged; the cybernetic martial artist. Nanotrasen, rather
than quell the minor maintenance civil war brewing in their sector, have
chosen to exploit this conflict to push their weapons and cybernetics
research to new heights!
add: Advanced cybernetic arms can be printed at the Robotics
exofabricator once researched. They are unlocked by researching the
Advanced Robotics Research node.
add: Advanced cybernetic arms are more durable than standard limbs, and
also have higher unarmed potential.
balance: Strongarm implants now utilize the attacking limb's unarmed
potential to determine damage and potential armor penetration. It also
does additional stamina damage (1.5x punch damage)
balance: Surplus prosthetic limbs contribute more of their carried
damage to overall health (AKA they make you actively more vulnerable to
damage), and deal less damage with unarmed attacks. Take Quadruple
Amputee at your own risk.
/🆑
## About The Pull Request
Recently, I've been trying to unlock the ayy node, but couldn't even
after disassembling an alien tool. Looked into the variables viewer and
saw the node id wasn't set in the `available_nodes` list. It seems there
was no update after it being unhidden.
## Why It's Good For The Game
Fixing an issue with the destructive analyzer, maybe from the new UI
refactor, but I couldn't bother to git blame it.
## Changelog
🆑
fix: Fixed an issue with un-hidden (alien, syndie etc.) nodes not being
researchable.
/🆑
## About The Pull Request
More code improvements for reagent holder. As you can see it removes a
lot more code than it adds so code savings are significant. This does
not touch on any floating point arithmetic, all that is behind us, this
focuses on removing redundant procs and merging existing procs to
achieve the same functionality so if you do see any changes in reagent
related behaviour it's not intentional and should be reported as a bug
here.
The following code changes can be summarized into points.
**1. Removes procs `get_master_reagent_id()` &
`get_master_reagent_name()`**
Both of these procs have the exact same functionality as
`get_master_reagent()` with the only exception of returning a different
value. Instead we can just call `get_master_reagent()` directly and
infer the name & type of it ourselves rather than creating a wrapper
proc to do it for us, therefore reducing overall code
**2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`**
The proc `remove_all_type()` is highly inefficient, it first uses a for
loop to look for the reagent to remove & then it again calls
`remove_reagent()` on the reagent once it has found it. We can just
embed this functionality directly into `remove_reagent()` by simply
adding an additional parameter `include_subtypes`. This way the
operation is faster, and we reduce the code to get the job done. Also
now `remove_reagent()` will return the total volume of reagents removed
rather that a simple TRUE/FALSE
**3. Removes & Merges `trans_id_to()` proc into `trans_to()`**
Both these procs have the same job of transferring either a single
reagent or all reagents. `trans_id_to()` is a scaled down version of
`trans_to()` because
- It does not have any `method` var. This means if you want to transfer
a single reagent to a mob/organ or any other object it does not have the
functionality to expose the target to that transferred reagent.
- It does not have a `multiplier` var to scale reagent volumes
- It does not have code to deal with organs or stop reactions i.e. it
does not have the `no_react` var.
We can overcome all these short comings by simply adding an extra var
`target_id` to specify what specific reagent to transfer therefore
attaining the same functionality while keeping the benefits of
`trans_to()` proc therefore reducing overall code
**4. Lowers plumbing reaction chamber tick usage for balancing ph.**
Rather than invoking a while loop to balance ph it's much easier for the
player to simply make the reaction chamber wait for e.g. add a reagent
that will never come. This will make the chamber wait therefore giving
the reaction chamber ample time to correctly balance the ph and then
remove that reagent from the list therefore getting correct ph levels.
No need to create code hacks when the player can do it themselves so
the while loop has been removed
## Changelog
🆑
code: removed redundant procs `get_master_reagent_id()` &
`get_master_reagent_name()`
code: merged `remove_all_type()` proc with `remove_reagent()` now this
proc can perform both functions. `remove_reagent()` now returns the
total volume of reagents removed rather than a simple TRUE/FALSE.
code: merged `trans_id_to()` proc with `trans_to()` now this proc can
perform both functions
refactor: plumbing reaction chamber will now use only a single tick to
balance ph of a solution making it less efficient but more faster. Just
make the reaction chamber wait for longer periods of time to accurately
balance ph
refactor: reagent holder code has been condensed. Report any bugs on
GitHub
/🆑
## About The Pull Request
allows the donksoft vendor refill cartridge to be built at the service
lathe
## Why It's Good For The Game
this is good for the game because it now allows you to make both the
donksoft vendor circuit board AND the vendor refill cartridge required
for it to be built without needing to go to engineering.
## Changelog
🆑
qol: the donksoft vendor refill cartridge is now available at the
service lathe
/🆑
## About The Pull Request
I made this to help me move more towards my goals [laid out
here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) which currently doesn't
have much interest.
This makes the Destructive Analyzer use a little neat TGUI menu instead
of its old HTML one. I also touch a lot of science stuff and a little
experimentor stuff, so let me explain a bit:
Old iterations of Science had different items that you can use to boost
nodes through deconstruction. This has been removed, and its only
feature is the auto-unlocking of nodes (that is; making them visible to
the R&D console). I thought that instead of keeping this deprecated code
around, I would rework it a little to make it clear what we actually use
it for (unhiding nodes).
All vars and procs that mentioned this have been renamed or reworked to
make more sense now.
Experimentor stuff shares a lot with the destructive analyzer, so I had
to mess with that a bit to keep its decayed corpse of deprecated code,
functional.
I also added context tips to the destructive analyzer, and added the
ability to AltClick to remove the inserted item. Removing items now also
plays a little sound because it was kinda lame.
Also, balloon alerts.
## Why It's Good For The Game
Moves a shitty machine to TGUI so it is slightly less shitty, now it's
more direct and compact with more player-feedback.
Helps me with a personal project and yea
### Video demonstration
I show off connecting the machine to R&D Servers, but I haven't changed
the behavior of that and the roundstart analyzers are connected to
servers by default.
https://github.com/tgstation/tgstation/assets/53777086/65295600-4fae-42d1-9bae-eccefe337a2b
## Changelog
🆑
refactor: Destructive Analyzers now have a TGUI menu.
/🆑
## About The Pull Request
Removes INTERACT_MACHINE_SET_MACHINE on machines that don't use a
non-TGUI UI.
Removes set_machine from TGUI things that forgot to remove them
previously.
Decouples advanced camera consoles from UI procs since it doesn't
actually use one.
## Why It's Good For The Game
TGUI machines don't need to be using these procs and vars, and this
makes it more clear what does and doesn't use a TGUI menu from a glance.
I explain it a bit better
[here](https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA) if you're interested.
## Changelog
No player-facing changes.
## About The Pull Request
- Adds a new combat mech, Paddy. Paddy is a modified Ripley MK-I,
intended for use by the station's security force. Like the MK-I, the
Paddy features an open-air cockpit design (and thus does not protect
from ranged weapons), but maintains the speed of the base unit.
Constructing a Paddy is similar to constructing a MK-II, though the kit
requires combat-mech level research. Sprites by
[DrDiasyl](https://github.com/DrDiasyl)
-- The paddy has an internal cargo bay capable of holding up to four
individuals (loaded with a hydraulic claw). If the pilot exits the
Paddy, any loaded individuals are likewise ejected. Individuals can
attempt to resist their way out of the mech, but it requires the mech to
be stationary for 45 seconds. If they do this, all individuals in the
holding cell are ejected.
- Adds a new mech equipment piece, the hydraulic claw. Similar to a
clamp, this Paddy-exclusive item can load mobs into the Paddy's cargo
bay. Humanoid mobs are handcuffed upon loading. The hydraulic claw is
unlocked on the same tech node as the Paddy.
- Adds a round-start Paddy, carrying one peacekeeper disabler and one
hydraulic claw, to each security area on all maps. Round-start Paddys
are also pre-locked with security access. Security now has access to a
mech charger, and a small bay for it all. Map edits were done by
[Maurukas](https://github.com/Maurukas).
- Also did some minor cleanup of various mech-related code. Ripley mech
cargo is no longer stored in the mech, but within the "ejector" object.
This doesn't have any player-facing changes, but it is easier to
organize behind the scenes. additionally, if Ripleys are destroyed now,
they drop their stored objects rather than deleting them.
## Why It's Good For The Game
Playing lone security is probably one of the least fun aspects of the
game. Arresting any assistant is inevitably setting yourself up against
the tide as a whole; You try to stun any one person and they crawl out
of the woodworks to get in your way, drag off the arrestee, and probably
try to steal your gear.
The Paddy is set up to be functional against low-threat targets, but not
particularly good against anything with purpose. The round-start Paddy
carries the disabler equipment, as well as the law claw, to detain
individuals in a *somewhat* safe manner. Being that you're inside an
exosuit, you're immune to shovespam that plagues the halls, and you
don't risk dropping important gear quite as easily.
However, The open canopy gives you no protection at all from ranged
attacks, nor from atmos hazards. Being that you're in an exosuit, you
cannot use other items or equipment. The AI will have trouble finding
you to open a door, due to your name not jumping their camera to your
location.
## Changelog
🆑 Zxaber, DrDiasyl, Maurukas
add: A new security-focused combat mech, the Paddy, has been added,
intended to be particularly helpful for lone sec officers. You will find
one in the Security main office, and a replacement can be built with
late-game mech research.
fix: Ripley MK-I and MK-II mechs no longer qdel their stored items when
destroyed.
/🆑

---------
Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com>
## About The Pull Request
refactors leapers into basic mobs and adds a new ability for wizards.
for 2 points wizards can buy their own leaper pet. they will get a
contract which lets them pick their pet's name and color

after they sign the contract they will get a frog statue which is used
to contain the leaper. players can use this statue to release or recall
the leaper into the statue. when its in the statue it will slowly regain
health or even revive from the dead, but if it gets gibbed then the
statue will be useless.
also adds a new ai behavior for leapers which lets them go swim in water
(and splash around) for a period of time. i gave this behavior to frogs
and crabs too
when riding the leaper, the players will get access to all its
abilities, it now has new abilities, it can create frog minions that
suicide bomb the enemies and it can also create a shower of poisonous
structures.
https://github.com/tgstation/tgstation/assets/138636438/931aa7b4-09f0-493f-bdb6-f3bdd0915b22
also when riding the leaper, players can point at walls near it so it
will destroy it. alternatively players can give commands to their
leapers to use abilities and to follow them if they are not riding it.
wizards cant be force dismounted from their frogs, and only wizards can
ride the frogs.
this also removes leapers from cytology as they now are much more
dangerous and have a new home
## Why It's Good For The Game
refactors leapers into basic mobs, and gives more gameplay opportunities
for wizards
## Changelog
🆑
refactor: leapers have been refactored into basic mobs please report any
bugs
add: wizards can now summon a leaper pet
removal: removes leapers from cytology
/🆑
## About The Pull Request
Improves penlight sprite and code.
A new type of pen has been introduced - the Security Pen. This pen is
red and can create a holograph around a person, similar to a medical
penlight. The holograph prompts the person to surrender for 30 seconds,
and the holograph itself is visible for 5. There is a 30-second cooldown
between usage.
Holosign itself does nothing except be visual, just like medical
holosign **(DO NOT MISTAKE HOLOSIGNS FOR HOLOBARRIERS)**
https://github.com/tgstation/tgstation/assets/42353186/1ee5f794-7218-4e52-b04f-3ebb50bd224a
Now every Security member spawns with a Security Pen in their PDA.
Now you can print Security Pens at Security Techfab, and Penlights at
Medical Techfab.
## Why It's Good For The Game
The only way to prompt someone to perform the surrender emote is by
holding them up with a gun. However, this mechanic can be quite
unreliable, even after updates, especially if the person is moving. As a
result, many players are unaware of how to prompt the surrender emote or
even about its existence, so they don't know they can trigger it
themselves by typing "*surrender".
This enables non-lethal arrests without stun batons or other tools.
Sprites are a significant improvement as the previous penlight sprites
were outdated.
## Changelog
🆑
qol: There is now a more convenient way to prompt surrender to emote -
the Security Pen. Each officer is equipped with one in their PDA. Simply
click someone with it to prompt a 30-second surrender. They are
printable at Security Techfab as well.
qol: Penlights now are printable at Medical Techfab.
image: Penlights got a new cleaner sprite to replace its ancient one
code: The code for Penlight's holographic sign has been improved.
/🆑
The problem is plumbing iv drip has the
`/datum/component/plumbing/iv_drip` component attached to it. We gave
this component full control over the mob we are trying to inject into
with this statement over here
c356f2f735/code/datums/components/plumbing/IV_drip.dm (L28)
Remember this component is inherited from `/datum/component/plumbing`
which has it's own **"process"** proc.
c356f2f735/code/datums/components/plumbing/_plumbing.dm (L74)
It was this proc that was injecting reagents into the mob at a rate of
`MACHINE_REAGENT_TRANSFER`(10 units) per second.
This process proc was conflicting with the base plumbing machinery
process proc
Why is why our transfer rate controls never worked. Now the plumbing
machinery only draws reagents from the plumbing network into it's own
internal container(not the mob) at an rate of
`MACHINE_REAGENT_TRANSFER`(10 units) per second leaving the injection &
draining rate alone and in full control of the player as intended.
Also since plumbing iv drip inherited from `/obj/machinery/iv_drip` and
not from the base type for all plumbing machinery
`/obj/machinery/plumbing` it did not override the `/obj/plunger_act()`
proc so the plunger did not work on it. That's fixed now too
Also took the opportunity to move plumbing vat to plumbing module folder
cause it belongs there
## About The Pull Request
This PR adds three basic/assistant bounties for shipping fish. The
reward is above par when compared to other basic bounties, however, each
shipped fish that is either dead or comes from a case (bought from
cargo, cause that's lazy) will reduce the payout by a portion of it,
also the pool of assistant bounties is quite big you wouldn't roll them
too often.
The three bounties are the following: One for any kind of fish, another
for fish of matching fluid type (freshwater, saltwater, sulphuric
water), and lastly, one for specific types of fish, possibly easy money
if RNG is with you.
## Why It's Good For The Game
I wanted to add something diffrent from most grimy assistant/basic
bounties where you either just print the stuff from the nearby autolathe
or fetch it for little money. Also, this provides another outlet to
fishing, I guess.
## Changelog
🆑
add: Added a few fish related bounties.
add: Fish cases to store and preserve life fish within can be now
printed from the service techfab and the autolathe.
/🆑
## About The Pull Request
- `apply_damage` is now uniform, handled, in a single place. At the
living level.
- Fixes people being held at gunpoint from being unable to flinch from
taking damage.
- Fixes a few signals (explodable, glass jaw) of apply damage maybe
potentially not having effects if the passed hit zone was a bodypart and
not a def zone.
- Fixes regenerator component always halting regeneration no matter what
damage taken.
- Fixes pressure damage being unaffected by `brute_mod` despite what
documentation claims.
- Signalizes the `check_species_weakness` proc on species.
## Why It's Good For The Game
The copy+paste of this proc made it awful, awful to maintain or add
features to. And also made it very bug prone.
This just takes a step forward in making sustaining damage a lot more
consistent, not only across all mobs, but across all methods of...
taking damage. Unarmed attacks, hulk, item attacks, etc.
## Changelog
🆑 Melbert
fix: People held at gunpoint can now flinch when being hit.
fix: Regenerating mobs no longer stop regenerating no matter hit with
what.
fix: Pressure damage is now properly modified by a mob's brute damage
modifier.
fix: Fixes some occasions which some effects (glass jaw, explodable worn
items) won't respond to hits.
refactor: Refactored core code related to mobs sustaining damage.
/🆑
## About The Pull Request
Downstream this silly tab has caused CI to get angry a few times since
prettier auto-formats it off, so everytime the file is saved it removes
it. So i'm just going for the source here, dont feel like it'd warrant
any GBP so i hope i tagged it right in to ignore it
## Why It's Good For The Game
Doesnt impact the game
## Changelog
## About The Pull Request
Allows for damage falloff to apply to more than just shotgun pellets.
Now any projectile can have a damage falloff defined.
Scatter Laser shells no longer use the minigun beams to determine their
damage. Instead they use the actually defined scatter laser beams. Those
beams do 7.5 damage per pellet, times by 6 pellets.
Scatter laser beams now have damage falloff, a separately defined
(positive) wounding power from normal beams, and wound falloff.
Scatter laser shells can be printed from security protolathes once you
have weapon tech.
Scatter laser shells _may_ be damaged by EMPs based on severity. The
result is that it fires a practically useless volley of laser fire. They
cause a honk sound when they hit, so you know when you've shot one of
these.
## Why It's Good For The Game
Well, we want shotguns universally to not be defined by their damage
output (especially extreme damage output) but by niche.
What does the scatter laser shell currently occupy as a niche?
The single highest damage output of any projectile weapon in direct
damage. The thing we don't want of shotguns, and it is reigning champion
of all guns.
Okay, that's a bit misleading, because obviously it is competing with
the likes of .50 BMG which does 70 damage outright and dismembers limbs,
potentially doing upwards of 90 damage if it does, and also hard stuns
people. Obviously _that_ is technically a stronger bullet.
But not for raw damage, because the scatter laser does 90 damage out the
gate, barring any potential wounding that might occur which increases
the damage multiplicatively. No gimmicks, no extra procs, nothing. It's
just 15 force lasers (with no damage dropoff) split between 6 beams.
And the reason for this is because this shell has been nerfed once prior
by making it not fire 6 normal laser shots into someone. That was 120
damage at the time, 120 to 90 was...I guess a nerf during the taser era.
Depends on how you viewed it. Buckshot was doing like 80 at the time,
believe me it was a wild period. But anyway, when we did the whole
damage rearrangement over the course of the laser few years, every other
shell got touched except this one for some reason. Even pulse slugs lost
10 damage while this was still sitting on 90 force point blank.
So what is the new niche? Well, it's laser buckshot. That's not a niche
but crew don't get buckshot, so this is their buckshot. It wounds real
good. Real goddamn good. And its is a laser. It fits the aesthetic,
obviously.
Okay, thanks.
## Changelog
🆑
balance: Scatter laser shells actually utilize the _real_ scatter laser
beam. This comes with damage changes. And wounding power.
feature: EMPs can potentially damage scatter laser shells.
refactor: All projectiles can now have damage falloff defined. Yay.
balance: Scatter laser shells can be printed when weapons technology is
researched.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
This makes a new ghost poll system which doesn't give TGUI popups -
instead, users are prompted to follow the POI and one of the orbiters is
chosen. The old system remains in place, so you can still prompt if you
want to.
This gives two things:
1. A deadchat notification:

2. A screen alert:

## Why It's Good For The Game
As stated in #76507, popups are pretty annoying. This is halfway between
a screen alert with no time limit and an event with more important
pings. This is better because:
1. Less popup fatigue
2. You can SEE how many you're competing with
4. DRY
## Changelog
🆑
add: Adds a subtle ghost poll. This pings in dead chat and gives a
screen alert, but no TGUI popup. Orbit the point of interest to be
selected for the role.
refactor: A number of ghost spawns now feature this alert. Write an
issue report if anything breaks.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
This PR is half a successor to #77399, and half QOL changes. When I made
the old PR, I originally wanted to add a scanning experiment to the
advanced robotics node, but several people (including at least one
maintainer) had reservations with this idea. My plan was to make the
experiment be completed automatically, instead of needing someone to
wave the scanner around, but as it turns out the experiment system is
just fundamentally not designed for experiments like that.
Now I've realized that there doesn't really need to be a new experiment.
So now the advanced robotics node is just not dependent on neural
programming, and that's it. No cost increase, no experiment needed.
As for the QOL changes, it just allows certain experiments to be
completed earlier than they otherwise would be. Normally, for an
experiment to even be available for completion, you need to get at least
one prerequisite node for one of the nodes the experiment benefits (as
in, one of the nodes it is required for or grants a discount too).
However, this sometimes means that you can't complete an experiment even
if you have the means to do it. Nonhuman autopsy is a good example; you
can autopsy a nonhuman corpse right at the start of a round, but the
experiment won't actually be completed unless biological technology has
been researched. The tier two laser experiment is another example. You
get access to tier two lasers necessary for the experiment by
researching industrial technology, but the experiment itself is locked
behind electromagnetic theory.
Now, the nonhuman autopsy experiment, divergent biology experiment, and
all medium and high grade material scanning experiments are unlocked
round-start. The tier two lasers experiment is unlocked by industrial
engineering.
## Why It's Good For The Game
For the advanced robotics change, I'll just quote myself from the last
PR:
> Robotics should not be dependent on an entirely different department
to access their core job content. Such dependencies encourage tiding and
other toxic interactions between departments.
For the QOL changes, it makes the whole system a lot more
newbie-friendly. For the autopsy especially, its common to see new
coroners autopsy the nonhuman bodies first and the human one second.
This means that, when the nonhuman autopsy experiment is actually
unlocked, there aren't any nonhuman bodies left to autopsy. Now it
doesn't matter which order they're autopsied in.
## Changelog
🆑
qol: Nonhuman autopsy, Tier Two Lasers, and several other experiments
can now be completed earlier.
balance: Advanced robotics techweb node no longer requires neural
programming node.
/🆑
## About The Pull Request
A long time ago, it was common for designs to cost reagents in addition
to normal materials. Every circuit board used to require sulfuric acid,
for example. However, these designs have slowly been whittled away, and
only two remain: the death syphon PKA modkit, which costs blood, and
paint remover in the service lathe, which costs acetone. Although these
two designs still use the old system, it is very outdated, and it shows.
TGUI doesn't take reagent costs into account at all. Reagent costs
aren't displayed on mouse over like material costs, and the design won't
be greyed out if there necessary reagents aren't present. If you try and
fail to print one of the two designs, the protolathe will tell you that
reagents are missing, but it won't say what reagents. In fact, there is
not way to find out what reagents are required without code diving.
## Why It's Good For The Game
In light of how outdated and unsupported this system is, I think it
makes sense to deprecate it almost entirely.* Now, protolathes, circuit
imprinters and techfabs will no longer take reagent costs into account
at all, even if a design does define reagent costs. The machines also no
longer need beakers to be built, and reagents can't be transferred into
them. The two remaining designs that did use reagent costs now don't,
and I've updated the designs unit test to fail if any non-limbgrower
design does set any reagent costs.
*Limb growers are the exception, as they're fully functional and work
fine.
## Changelog
🆑
del: Protolathe/circuit imprinter/techfab designs costing reagents is
now totally deprecated.
/🆑
## About The Pull Request
- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
- Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
- The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.
## Why It's Good For The Game
This is cringe.
1863eb2cd8/code/modules/mob/living/carbon/human/_species.dm (L1430-L1442)
Bullets should overall act more consistent across mob types and objects.
## Changelog
🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑
## About The Pull Request
For the hard-working tradesperson who's in the middle of nowhere and
just wants to warm up their pastry-based savoury item purchased from an
overpriced vending machine, introduces the engineer themed wireless
microwave.
No more going hungry in a pinch, this variant uses changeable power
cells instead of APC power. Can be built normally or printed with a
furnishings-upgraded RCD.
The other upgrade now available: PDA charging. Upgrade the capacitors in
the microwave to add a Charge mode for your portable device!
Also cleans up microwave code a bit and adds much needed context hints
for when it's broken, dirty, etc.
Swaps a few break room microwaves to upgraded variants on mapload, adds
a microwave/donks to Birdshot, donks to Tramstation.
## Why It's Good For The Game
Slap together a semi-portable microwave with your components on hand,
have an engineering picnic in space or wherever else the day takes you.
With increased PDA drain, adding another option to charge your PDA in
common areas is useful. Microwaves are already strategically placed
around the station. Please ensure the model you're using has the
charging feature before operating.


## Changelog
🆑 LT3
add: Introducing Nanotrasen Wave! A Nanotrasen exclusive, Waveallows
your PDA to be charged wirelessly through microwave frequencies. You can
Wave-charge your device by placing it inside a compatible microwave and
selecting the charge mode.
add: Microwaves can be upgraded to add wireless charging
add: Cell-swappable microwave for the engineer on-the-go
add: Microwave now has a wire to swap charge/cook modes
add: Furnishings RCD upgrade now includes wireless microwave
add: Tramstation and Birdshot engineering break rooms now have microwave
and donk pockets. Some microwaves come pre-equipped with wireless
charging and an upgraded cell.
fix: The microwave in the snowdin ruin is now real, not a fluff prop
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
This takes all the gib related procs:
- `gib()`
- `spawn_gibs()`
- `spill_organs()`
- `spread_bodyparts()`
And adds heavy documentation that communicates what the procs are used
for and how the different bitflags affect them. The difference is
noticeable:
`gib(TRUE, FALSE, FALSE, null)` vs `gib(DROP_ORGANS|DROP_BODYPARTS)`
The code is now much more legible which is important considering it's
used in a lot of places!
Another robust change, is that we had several places in the code where
there were double negatives like so:
```
/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts)
if(!no_bodyparts) // DOUBLE NEGATIVES ARE BAD M'KAY?!?
// do stuff here
```
This is a mindfuck to untangle. I inverted a lot of these parts so we
don't lose our sanity.
Last thing that was changed was a big `if()` loop in the `spill_organ()`
proc. This was refactored to just be a simple `for` loop with `continue`
statements where we needed to skip enabled bitflags. It's now shorter
and cleaner than before.
The only slight gameplay change this affects is that gibbing a mob now
guarantees to drop all items unless the `DROP_ITEMS` bitflag is
deliberately omitted. Some places like admin gib self, we don't want
this to happen.
## Why It's Good For The Game
Gib code is very old. (~15 years) People kept adding more arguments to
the procs when it should have been a bitflag initially. By doing it this
way, there is more flexibility and readability when it comes to adding
new code in the future.
## Changelog
🆑
refactor: Refactor gib code to be more robust.
qol: Gibbing a mob will result in all items being dropped instead of
getting deleted. There are a few exceptions (like admin gib self) where
this will not take place.
/🆑
## About The Pull Request
.
Adds tongs, as requested on the [Official TGStation13
Forums](https://tgstation13.org/phpBB/viewtopic.php?f=9&t=33026)
Tongs can be used to pick up food from two tiles away, and feed it to
people who are two tiles away.
You can also use them while in your hand to snap them together like a
crab, or use them to harmlessly pinch people who are up to two tiles
away.
Tongs are available from the kitchen's dinnerware vendor, the autolathe,
and the service lathe.
## Why It's Good For The Game
You can feed people from across a counter, without touching the food and
spreading your germs to them.
## Changelog
🆑 Coded by Jacquerel, Sprited by Dalmationer
add: Added tongs to the kitchen, which you can use to manipulate food
from further away
/🆑
## About The Pull Request
This is a PR I worked on last month, but had to put on hold while
dealing with some pressing issues with fishing feature, minigame and
other stuff, and because I had to atomize out some of the stuff
previously present here.
I've expanded on the fishing portal generator to do something other than
dispense guppies and goldfishes. It now has multiple settings,
unlockable by performing scanning experiments for fish types, available
from the get go, which also reward a meager amount of techweb points
upon completion. The generator can now be built too. No longer it has to
be ordered from cargo.
It can also be emagged for the syndicate setting, tho right now it only
dispenses donkfish and emulsijack, both otherwise impossible to get
outside of... exodrone adventures.
The advanced fishing rod now comes with an experiment handler component,
specific to the fish scanning experiment, that automatically scans
fished content. The node to get it now requires 2000 points and the
first fish scanning exp to be unock.
A new skillchip has been added, which adds a trait that changes the icon
of the fish shown in the minigame UI, giving some clues on what the
reward will be. The same trait is also gained by reaching the master
(penultimate) level of the fishing skill.
A new fish type has been added, with its own quirks. One of these quirks
included temporarily switching movement direction of the bait.
Currently, it can only be fished in the hyperspace and randomizer
setting of the fishing portal.
Screenshots:


## Why It's Good For The Game
The fishing portal generator is but a stale and underdeveloped prototype
of the fishing feature right now, so much I was thinking of removing it
at first. However, we also have a lot of fishes which are pretty much
unfishable, so I came up with the idea of adding new portal settings
that allow people to actually get them.
As for the skillchip and trait, it's but an extra to both the vending
machine in the library and the fishing skill itself, which has an
overall humble impact on the minigame.
## Changelog
🆑
add: Expanded the fishing portal generator. It now comes with several
portal options that can be unlocked by performing fish scanning
experiments, which also award a modest amount of techweb points.
balance: The fishing portal generator is now buildable and no longer
orderable. The board can be printed from cargo, service and science
lathes.
balance: Advanced fishing tech is no longer a BEPIS design. It now
requires the base fish scanning experiment and 2000 points to be
unlocked.
add: The advanced fishing rod now comes with an incorporated
experiscanner specific for fish scanning.
add: Added a new skillchip that may change the icon of the "fish" shown
in the minigame UI to less generic ones. Reaching master level in
fishing also does that.
qol: The experiment handler UI no longer shows unselectable experiments.
/🆑
## About The Pull Request
For a little biomass, candles can now be printed at any biogenerator.
## Why It's Good For The Game
Producing more candles was inaccessible. Now there is an easy solution!
## Changelog
🆑
add: Add candle design to biogenerator
/🆑
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
## About The Pull Request
I remembered today that blob code is ass, especially blob spores.
There's still a lot to improve but I cleaned up _some_ of it by
converting these mobs.
Now they use a newer framework and more signal handling as compared to
circular references.
I _expect_ the behaviour here to largely be the same as it was or
similar. I haven't added anything fancy or new.
This is a reasonably big PR but at least all of the files are small?
Everything here touched every other thing enough that it didnt make
sense to split up sorry.
Other things I did in code:
- Experimented with replacing the `mob/blob` subtype with a component.
Don't know if this is genius or stupid.
- AI subtree which just walks somewhere. We've used this behaviour a lot
but never given it its own subtree.
- Blob Spores and Zombies are two different mobs now instead of being
one mob which just changes every single one of its properties.
- Made a few living defence procs call super, because the only thing
super does was send a signal and we weren't doing that for no reason.
Also added a couple extra signals for intercepts we did not have.
## Changelog
🆑
fix: Blob spores will respond to rallies more reliably (it won't runtime
every time they try and pathfind).
fix: Blobbernaut pain animation overlays should align with the direction
the mob is facing instead of always facing South
refactor: Blob spores, zombies, and blobbernauts now all use the basic
mob framework. They should work the same, but please report any issues.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
A revival of #76508 which got closed due to it eating up genetics niche.
This PR fixess that issue by seperating the surgery into two. the normal
roundstart plastic surgery and advanced plastic surgery. both works
identically with the one exception being that the advanced one allows
the feature that the last PR tried to add. which is to allow surgery to
mimic people in photographs.
the regular one remains as-is.
The disk containing the surgery can be found in a lot of places, a
role-restricted item to doctors and roboticists for 1TC, as a rare maint
loot and BEPIS technode reward
## Why It's Good For The Game
Opportunity for more fun gimmicks, ammo for BB's and paranoia, staple of
SS13 gameplay.
This also retroactively buffs forensic scanners and records since it
really only changes your name and voice. You can change your hair all
you want but anything more than that is a trip to genetics. overall
allows for more engaging gameplay while not detracting from genetics
niche with how niche and rare it would appear in rounds.
## Changelog
🆑
add: Adds an advanced plastic surgery procedure, allowing you to imitate
people in pictures. Simply hold a picture in your offhand of the person
you wish to imitate as while conducting the surgery! Remember, it's not
foolproof, it only changes your name and voice!
adds: You can obtain the disk containing the afromentioned surgery. as a
role-restricted item to doctors and roboticists for 1TC, as a rare maint
loot and BEPIS technode reward
/🆑
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
After five long years of waiting, adds the messaging monitor board to
the tcomm research node.
Closes#35946
## Why It's Good For The Game
Consistency!
## About The Pull Request
I was working on a feature that required the buffer of a multitool to be
cleared out after linking two devices, when I noticed it wasn't possible
to clear the multitool's buffer. The change to multitools in #77639 made
it impossible to set the buffer of a multitool to null without
destroying the stored object, yet many objects still tried to have the
multitool clear it's buffer after a successful linkage. This creates a
new proc, clear_buffer() dedicated just to clearing the buffer of a
multitool.
Also made all of the multitool linkage messages balloon alerts.
If there's any issues or things I can improve please let me know, I'm a
bit new to BYOND and DM but I'm working on learning so I can make some
more ambitious projects! _(I think I got the signaling right)_
## Why It's Good For The Game
Some objects aren't meant to be saved in the multitool's buffer after
the initial linking, this should fix that.
Also balloon alerts are nice.
## Changelog
🆑
fix: Nanotrasen has finally recalled their faulty multitools and
replaced them with working ones! The multitool's buffer now properly
clears itself.
qol: Moved multitool link messages to balloon alerts
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Adds the ability to build mass drivers, you activate them by attaching a
signaler to their launch wire. They also have a safety wire, that when
pulsed, increases the power of it. To reset the power back to normal you
cut the safety wire. This is mostly just a port of
https://github.com/BeeStation/BeeStation-Hornet/pull/5563
## Why It's Good For The Game
Less weird unique machines, and you can do some interesting stuff with
mass drivers, like traps, cannons, and many other interesting things.
## Changelog
🆑
add: mass drivers are now buildable, you activate them by attaching a
signaler to their launch wire, and can increase their power by pulsing
the safeties wire, and reset it back to normal by cutting the safeties
wire.
/🆑
## About The Pull Request
Having seven trillion boolean arguments isn't kino nor poggerchampion,
let's adjust it so we use a define flag-based system that works really
nice. I also cleaned up a lot of jank and stuff that simply just never
was meant to work.
We also had sprites for nanite vomit, but this was completely unused!
Since we still have an interaction where you're meant to throw up
nanites, I added that it so it could be leveraged. Neato.
## Why It's Good For The Game
Much easier to pass in the right args or special args to a high-profile
proc.
## Changelog
🆑
image: When you throw up nanites, your vomit should now be appropriately
nanite-colored.
/🆑
Let me know if I glonked anything.
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
This immobilizes and restricts actions from any mob inside a capture
device. Players were abusing this exploit to have a capture device in
their pocket and being able to launch fireballs at will with chaos
magicarp and other fauna.
Any device like a soul shard or guardian does not allow the controlled
mobs to attack from inside their stored containers.
## Why It's Good For The Game
Exploits are bad... m'kay?
## Changelog
🆑
fix: Fix capture devices allowing mob actions while inside
/🆑
## About The Pull Request
Fixes#78179
Monkey clothes didn't fit following black charged slime transformation
(I hate xenobiology)
Moved the proc call which updated the clothing appearance from turning
into or returning from being a monkey into generic `on_species_gain` on
the basis that this would effect any species with weird clothing offsets
(such as transforming into a golem from the same source) and we don't
want a bunch of specific checks against it.
Also I just tidied up that proc a little bit.
## Changelog
🆑
fix: Your clothes and such should correctly reposition themselves if a
black charged slime extract turns you into a monkey.
/🆑
## About The Pull Request
Adds an upgrade similar to the extra beaker storage for mediborgs to
service borgs, which adds an additional drink apparatus (that also
doesn't do the weird drink refilling thing)
## Why It's Good For The Game
This can allow the service borg to carry a wider variety of drinks, also
considering they specialize in chemistry, they should get an apparatus
upgrade like mediborgs.
## Changelog
🆑
add: Added the service borg "drink apparatus" upgrade, which adds an
extra drinking apparatus to the borg, up to a maximum of 5 extra.
🆑
## About The Pull Request
Fixes#78198
Tentacle and bloodchiller had antimagic flags that they inherited from
`gun/magic` and were unusable if you had magic immunity. I set those
flags to `NONE`
## Why It's Good For The Game
Fixes a bug
## Changelog
🆑
fix: Changeling tentacle and bloodchiller from xenobio will no longer
stop working if you have antimagic
/🆑
## About The Pull Request
This PR does many things and I expect to be asked to atomize some stuff.
### Oldstation Additions
Oldstation now has their own research server, generating their own
points. To help alleviate major concerns, they have a few stuff to help
with this:
- They now have a pre-built operating computer
- They now have an Autopsy scanner
- They now have access to Experimental Dissection
Experimental Dissection is the old dissection, giving research points in
the form of paper notes on completion. They must be turned in to the RND
server (only works on the Oldstation one, so you can't abuse this) for
points. This was an idea I've had for some time, as Oldstation is used
somewhat as a representation of how ss13 used to be (through its use of
directional windows (before they got removed, but I'd like to bring them
back), old IDs, RTGs, and old engines before they got removed from the
game fully)
Considering there are 11 alien mobs in Oldstation, there is 27.5k
research points to get from alien corpses, enough to bring them up to
speed with whatever they wish to do. This is their 'alternative' for
experiments (which they can still do if they want, but it is very hard
to do, outside of dissection which is needed for the node).
This surgery isn't repeatable, isn't upgradable, and isn't removed by
being healed. It is not mutually exclusive with autopsy (so you can't
ruin yourself doing the wrong surgery).
### Other stuff
- Ninjas now drain RND points from the server they drain from, rather
than always hitting science
- Syncing machines to research roundstart is now a macro, and now
immediately syncs to a server on your Z-level. Machines will
automatically connect to the Science servers if none else are available.
### non-player facing
- Science, Admin, and Oldstation techwebs are now no longer vars on
research, but stored in research's list of techwebs.
- ``get_available_servers`` and ``find_valid_servers`` are now procs on
the research subsystem, rather than the experisci component.
- Oldstation code has been split into separate files.
## Why It's Good For The Game
Oldstation is one of my favorite ruins, but it is also one of the
largest complaints for RND (along with Golems) because they use the
station's Science nodes & points (I recently tried de-hardcoding Science
stuff to help prepare for this, but I didn't get everything in advance).
The complaint stems from these ghost roles, who are meant to be a fun
activity to do while waiting for the next round, using the station's
research points for their own stuff, completely untrackable unless
someone goes out of their way to grief a ghost spawn just for using
points to get things they need. These roles make their own servers to
drain the station, and I find that unfun and quite boring for everyone-
it's also not very flavorful, why would Charliestation know of the
station's RND to take advantage of it?
This hopes to fix those issues, make Charliestation more worthwhile, and
more flavorful.
## Changelog
🆑
fix: Getting a node researched now properly makes it no longer hidden.
fix: Ninjas draining RD servers now drains it from the connected
techweb, rather than sniping Science.
balance: Machines will first try to connect to a techweb with servers on
their z-level, with the Science techweb remaining as fallback.
add: Oldstation RND, comes with their own Techweb and special surgery to
gain research points through dissecting Xenomorphs.
/🆑
## About The Pull Request
'medical beds' in the game were just varedited survival pod beds. This
creates a proper medical bed subtype plus its own sprite for regular and
roller beds. Cleans up little bits of the bed code and adds context
helpers.
- Medical/roller bed is now constructable with titanium and plastic
after research
- Bed will face the correct direction when pulled
- Movable beds can have 'brakes' toggled with alt-click


## Why It's Good For The Game
Medical gets their own bed, new sprites, cleans up varedits on maps.
## Changelog
🆑 LT3
image: New medical bed and emergency roller bed
code: Added context hints for beds
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Transferred.
## Why It's Good For The Game
How did this get to be in 71 files?! This bothers me.
Also changes 'quality_oil' typepath in the reactions to 'olive_oil' to
match its rename post-foodening.
## Changelog
N/A