## About The Pull Request
Might as well go over all of them here.
1. Holoparasites deal half of the damage they take as clone damage to
their summoner when they are knocked out. Now it deals damage to the
brain instead.
2. Prion peptides used to deal a little bit of clone damage every
reagent tick. Now they do it to the brain.
3. When transforming back to human from a slime via a shapeshift spell,
the total damage you have gets flat converted into clone damage. Now it
gets flat converted to toxin damage.
4. Black stabilized slimes let you drain health from other people if you
latched onto them, dealing clone damage to whoever you latched onto,
same as slimes used to do. This has been converted to brute damage.
## Why It's Good For The Game
Explanation from #77569:
> Clone damage is a damage type that shouldn't exist anymore, it's a
relic left from the era of cloning and it's so specific of a damage type
that it rarely gets used as a result. It really should be a type of
affliction (wound etc) instead of its own damage counter.
Only a few left to go, cosmic heretic lore, the greed ruin and the
decloner gun. Then we can remove clone damage completely.
## Changelog
🆑
del: Removes miscellaneous sources of clone damage from the game.
/🆑
1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc
calls `datum/component/material_container/user_insert()` anyway which
performs all the checks necessary for inserting stuff into the ore silo
and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating
its code & checks. So now inserting into the ore silo is directly
handled by the mat container without this proxy proc making the
operation slightly faster
2. Removed silo `attackby` code. Same operations can be done via
`screwdriver_act` & `crowbar_act` procs much cleaner
3. The ore silo now hooks onto signals
`COMSIG_MATCONTAINER_ITEM_CONSUMED` and
`COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are
triggered. This means when you insert/eject sheets from the silo the
connected machine performing the operation no longer has to do the
logging manually thus the proc `silo_log` has been removed from a lot of
places ,reducing overall code size
4. A lot of stuff that use materials from the ore silo follow this
pattern.
i.e. They first use the materials from the silo and then log it via
`silo_log` proc. This code pattern is repeated in a lot of places so
let's just merge these 2 lines with some extra sanity checks into a
single proc inside `remote_materials` itself. That's what was done and
the number of places where you log manually into the silo has been
removed further reducing code size everywhere.
5. Added auto doc & cleaned up some procs
Since logging is now done by the ore silo directly, we need a way to
pass the machine that is inserting items into the silo to the signal
handlers of the ore silo [via the `context` var]. So other code changes
elsewhere is because of this var
## About The Pull Request
This PR replaces clone damage dealt by slimes with a new status effect,
"Covered in Slime".
The status effect is applied when you wrestle a slime off. The status
effect has a chance of not applying if your biohazard protection on your
head and chest is good enough.
It deals brute damage over time and gets removed when you stand under
the shower for about 10 seconds or when you are about to enter softcrit.
As a direct consequence of adding this feature I added showers to the
North Star and Birdshot Xenobiology Labs. I'm sorry, I'm sure you wanted
to make a statement with this, but we kind of require them in there now.
## Why It's Good For The Game
One source of clone damage eliminated whilst hopefully keeping a
"unique" interaction when dealing with slimes. No other source of clone
damage has been touched.
Clone damage is a damage type that shouldn't exist anymore, it's a relic
left from the era of cloning and it's so specific of a damage type that
it rarely gets used as a result. It really should be a type of
affliction (wound etc) instead of its own damage counter.
However, some things in the game still depend on clone damage being
around, so those needs to be addressed first.
We start off with slimes in this PR.
This status effect either lets you either continue with your work if you
react fast enough or it forces you to medbay, giving a victim more
control over the situation, as opposed to just being dealt a rare damage
type that always forces you to go to medbay if you want it healed.
## Changelog
🆑 distributivgesetz
add: Replaced slime clone damage with a "Covered in Slime" status effect
that deals brute damage over time and can be washed off by standing
under a shower.
add: Northstar and Birdshot Xenobiology have been outfitted with a new
shower.
code: Replaced the magic strings in slime code with macros. Also
included some warnings to anyone daring to touch the macros.
/🆑
## About The Pull Request
A pact made with `@Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em


## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.
## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑
Whatever you do, if it warrants the use of something like
`handle_atom_del`, chances are `Exited` can do it better, as most of
these cases involve movables that shouldn't be moved out of their loc
(`Destroy` forcefully moves movables to nullspace) without calling
specific procs, and for the remaining few, `handle_atom_del` doesn't
even cover the eventuality of a movable being deleted outside the source
atom, so it's quite garbage.
Beside, I feel confident in saying `handle_atom_del()` is older than the
DCS, an echo on the workarounds done at the time.
## About The Pull Request
- Gives engineers an RCD as part of their round start equipment
- RCD by default will build/deconstruct slower if you already have
another one in progress. This can be upgraded with the new cooling
upgrade disk. Reconstructing (anything that was there roundstart as per
the destructive scan) doesn't have this downside, only
construction/deconstruction.
- RCD construction effects can now be attacked in order to cancel them.
This can be deterred with the anti-disruption upgrade disk.
- RCDs for nukies and whatever don't have these downsides
- The CE's roundstart RCD also doesn't have these downsides
## Why It's Good For The Game
Construction and reconstruction are currently one of the worst aspects
of SS13--they are so slow and tedious that any sort of mass destruction
goes unfixed for 10-30+ minutes, if fixed at all. This limits us because
it means people don't want traitors to create large explosions, for
instance--I do and so I think it's crucial that we fix construction.
Reconstruction has already been improved on the RCD with the destructive
scans, but I see no reason to limit this to something so out of the way.
Ideally the RCD even gets more functionalities, like the ability to
print stock parts (or having stock parts removed), etc, in order to
lessen this burden.
## Changelog
🆑
add: Engineers now have an RCD round start.
balance: RCD construction/deconstruction effects can now be attacked in
order to cancel them. You can get the anti-disruption upgrade disk to
prevent this.
balance: RCD construction/deconstruction is now slower if you already
have another effect up. This does not effect reconstruction.
balance: Both of the above effects do not effect the CE's roundstart
RCD, nor any other RCDs such as combat RCDs.
/🆑
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
## About The Pull Request
the mega arachnid is now a basic monster. he is a very tricky and
opportunistic creature he will plan his attacks carefully and only
attack the weak. he will first try to throw fleshy legcuffs at his
victims, if the victim becomes cuffed he will move in to attack him,
otherwise he will run away from him while trying to throw restraints at
his legs. while he is running away he will also release slippery acid to
slip his prey. also when he is looking for his prey, he will be
transparent for more stealth. after he finds his prey the transparency
will wear off. he is also a very stealthy creature, he will break any
lights and cameras near him and he can also climb trees to hide in them
while he is looking for a victim.
## Why It's Good For The Game
add more combat depth for the mega arachnid
## Changelog
🆑
refactor: the mega arachnid is now a basic monster ,please report any
bugs
feature: the mega arachnid now have an ability to slip victims
/🆑
## About The Pull Request
Makes the cockroach and blob spore cell lines easier to suppress in
Cytology.
Making fun stuff with Cytology already is very hard with how you have to
build your own setup in most maps and somehow get all the reagents you
need.
## Why It's Good For The Game
All of the fun recipes with Cytology require at least 1 of Organic
Slurry or Growth Serum. Sometimes both. And roaches are hard to suppress
and thrive on that. That means that if your cell line includes roaches
you are forced to throw it out. This change makes roaches at least able
to be dealt with by making them not grow as much from these fun reagents
and having a easier to find reagent to suppress them (salt).
Blob spores were already on a relatively balanced state where in some
petri dishes you could ignore them and in others you couldn't. I wanted
to preserve that fun aspect of figuring out if you should or not care
about blob spores based on what you see so I didn't touch its
supplementary reagents. However suppresing them was really hard so if
you did decide that you have to deal with them in the dish you had to
throw the entire petri dish away. This PR adds a way to deal with them;
it's not the easiest to get but it can be obtained with the chemist's
help or (more interestingly) the Psychologist's help since they spawn
with psicodine pills (iirc), making for a very nice interdepartmental
cooperation and giving a lil love to the Psychologist.
## Changelog
🆑
balance: Nuisance cell lines are easier to deal with in Cytology;
Cockroaches:
Salt N/A -> -2
Growth Serum +2 -> +1
Organic Slurry +4 -> +2
Immature blob spore:
Psicodine: N/A -> -2
/🆑

## About The Pull Request
Made a new UI and refactored some mech code in the process.
Fixes#66048Fixes#77051Fixes#65958 ??? if it was broken
Fixes#73051 - see details below
Fixes other undocumented things, see changelog.
## Why It's Good For The Game
The UI was too bulky and Mechs were too complex for no reason.
Now they follow some general rules shared between other SS13 machinery,
and there is less magic happening under the hood.
## Detailed Changes
### New Mech UI, Air Tank and Radio as separate modules
Previous UI for comparison:
<img alt="9SScrXAOjy"
src="https://github.com/tgstation/tgstation/assets/3625094/904e3d07-e7d7-4d3a-a062-93e0e35b4b66">
Previously mechs came with radio pre-installed and air canisters
magically pre-filled with air even when you build one in fab.
Radio and Air Tanks are now both utility modules that are optional to
install. Gas RCS thrusters still require Air Tank module to operate.
This made the Mechs more barebones when built, giving you only the basic
functionality.
<img alt="5SDMlXTJxv"
src="https://github.com/tgstation/tgstation/assets/3625094/b9364230-49ac-416b-aa70-e851fbf2050e">
To compensate this change, all mechs got two extra utility module slots.
All other modules got new UI. And ore box now shows the list of ores
inside.
<img alt="SRX5FjvsHA"
src="https://github.com/tgstation/tgstation/assets/3625094/cbe2e98d-1cd4-4667-8dae-2f9227b4b265">
### Mounted Radio
Works as a normal radio, but with subspace transmission. Available from
the basic mech research node and can be printed in fab.
### Cabin Sealing
To compensate for the lack of air tank by default, mechs with enclosed
cabin (e.g. all except Ripley) got an ability to toggle cabin exposure
to the outside air. Exiting the mech makes cabin air automatically
exposed.
When you seal the cabin, it traps some of the outside air inside the
cabin and you can breathe with this air to perform a short space trips.
But the oxygen will run out quickly and CO2 will build up.
Sealing the cabin in space will make the cabin filled with vacuum, and
it will stay there until you return to air environment and unseal the
cabin, letting the breathable air to enter. There are temperature and
pressure sensors that turn yellow/red when the corresponding warning
thresholds are reached.
You could also use personal internals in combination with cabin sealing
for long space travels, so Air Tank is completely optional now and
mostly needed when you need RCS thruster.
### RCS thrusters
They are now available earlier in tech tree and consume reasonable
amount of air (5 times more than human jetpacks), and they don't work
without Mounted Air Tank, unless it's an Ion thruster variant.
### Mounted Air Tank
Available from the basic mech research node and can be printed in fab.
Built model comes empty, and syndicate mechs come with one full of
oxygen.
<img alt="GrFDrH5Hwe"
src="https://github.com/tgstation/tgstation/assets/3625094/b677b705-bda0-4c8c-96c7-d32bf7bf9f28">
Can be switched to pressurize or not pressurize the cabin. Releases gas
only when the cabin is sealed shut. Starts releasing automatically, but
can be toggled to not release if you want to use it just as a portable
canister.
Cabin pressure can now be configured in the module UI instead of
Maintenance UI.
Can be attached to a pipe network when the mech is parked above a
connection port.
Comes with a pump that works similarly to the portable pump. It lets you
vent the air tank contents outside, or suck air from the room to fill
the air tank. Intended to provide an ability to fill the air tank
without the need to bother with pipes.
Also has gas sensors that display gas mix data of the tank and the cabin
(when sealed).
### Stock part changes
All mechs now require a servo motor and they reduce mech movement power
consumption instead of scanning module.
Scanning modules are optional for mech operation (still required to
build) and the lack of one disables the following UI elements:
- Display of mech integrity (you can still see the alerts or examine the
mech to get rough idea)
- Display of mech status on internal damage (and you can't repair what
you can't diagnose)
The rating of scanning module doesn't have any effect as of now.
Cargo mech comes without it roundstart.
<img alt="2vDtt99oqb"
src="https://github.com/tgstation/tgstation/assets/3625094/147144ca-824e-4501-acf5-6ee104f309e7">
Capacitors now also reduce light power usage and raise the overclocking
temperature thresholds (see below).
### Maintenance
Maintenance UI removed, and its logic migrated to other places.
Access modification now managed inside the mech, and anyone who can
control the mech, can adjust the access in the same way as they can set
DNA key.
To open the maintenance panel you just need a screwdriver. It is instant
when the mech is empty and it has a 5 second delay when there is an
occupant to avoid in-combat hacking and part removal. It will alert the
occupant that someone is trying to tinker with their mech.

Once the panel is open, you can see the part ratings:

With open panel you can hack the mech wires (roboticists can now see
them):
<img alt="mj205G2qDa"
src="https://github.com/tgstation/tgstation/assets/3625094/44cea0d1-44b4-4b50-b1d3-a97c0056bab3">
There are wires for:
- Enabling/Disabling ID and DNA locks
- Toggling mech lights
- Toggling mech circuits malfunction (battery drain, sparks)
- Toggling mech equipment malfunction (to repair after EMP or cause
EMP-like effect, disarming mech)
- 3 dud wires that do nothing
The hacker may be shocked if the mech power cell allows.
When the panel is open and the user has access to the mech, they can
remove parts with a crowbar:
<img alt="jR40gyTWtJ"
src="https://github.com/tgstation/tgstation/assets/3625094/b573f5b9-b8ea-412e-b3e0-c872e01e0c23">
Hitting the mech with an ID from outside now toggles the ID Lock on/off
if the ID has sufficient access.
### Power consumption and overclocking
Rebalanced mech power consumption. T4 parts were not working in
Syndicate Mechs, as their effect was not calculated until you manipulate
parts manually. Constructed mechs with t1 parts even had their energy
drain reduced with upgrade to t1.
Now all mechs apply their base step power usage correctly don't ignore
the stock parts.
Servo tier now reduces base power consumption by 0% at t1, 50% at t2,
33% at t3 and 25% at t4
Capacitor tier now reduces base power consumption of mele attacks,
phasing and light by the same amounts.
Gygax leg actuators overload replaced with mech overclocking. Any mech
can be overclocked by hacking wires, but only Gygax has a button for
toggling it from the Cabin.
Now there is an overclock coefficient. 1.5 for Gygax and other mechs, 2
for Dark Gygax.
When overclocked, mechs moves N times faster, but consumes N times more
power.

While overclocked, mech heats up every second, regardless of movement,
and starts receiving internal and integrity damage after a certain
temperature threshold. The chance is 0% at the threshold, and 100% at
thresholds * 2. The roll happens every tick. Capacitor upgrades this
threshold, letting you overclock safely for longer periods.

When you stop overclock, the temperature goes back down.
### Other changes and fixes
Concealed weapon bay now doesn't show up when you examine the mech, so
it's actually concealed now.
New radio module can properly change its frequency, as it didn't work
for previous radio.
Launcher type weapons were ignoring cooldowns and power usage, so you
could spam explosive banana peals, while they should have a 2 second
cooldown:
<img alt="q5GjUsHwGr"
src="https://github.com/tgstation/tgstation/assets/3625094/d102725d-e9e1-4588-9d6c-b9e38b7a6535">
Now this is fixed and all launcher type weapons properly use power and
have their cooldowns working.
And now they have the kickback effect working (when it pushes you in the
opposite direction in zero gravity on throw).
Thermoregulator now heats/cools considering heat capacity instead of
adding/reducing flat 10 degrees. So you can heat up cabin air quicker if
the pressure is low.
There were some other sloppy mistakes in mech code, like some functions
returning too early, blocking other functionality unintentionally. Fixed
these and made some other minor changes and improvements.
## Changelog
🆑
refactor: Refactored Mech UI
refactor: Refactored mech radio into a utility module, adding extra slot
to all mechs
refactor: Refactored mech air tank into a utility module with an air
pump, adding extra slot to all mechs
refactor: Refactored mech cabin air - there is now a button to seal or
unseal cabin to make it airtight or exchanging gases with the
environment
refactor: Removed mech maintenance UI Access is set in mech UI, and
parts are ejected with a crowbar
add: Mech now has wires and can be hacked
qol: Roboticists now can see MOD suit and mech wires
add: Mechs now require servo motor stock part and it affects movement
power usage instead of scanning module
add: Scanning module absence doesnt block mech movement and hides some
UI data instead. Big Bess starts without one.
qol: Hitting mech with ID card now toggles ID lock on/off if the card
has required access
fix: Fixed concealed weapon bay not being concealed on mech examine
fix: Fixed mech radio not changing frequency
fix: Fixed mech launcher type weapons ignoring specified cooldown
fix: Fixed mech launcher type weapons not using specified power amount
fix: Fixed mech temperature regulator ignoring gas heat capacity
fix: Fixed mech stopping processing other things while not heating
internal air
fix: Fixed mech being able to leave transit tube in transit
fix: Fixed mech internal damage flags working incorrectly
fix: Fixed Gygax leg overloading being useless
fix: Fixed mechs ignoring their stock parts on creation. Syndicate mechs
now stronger against lasers and consume less energy on move. Upgrading
from tier 1 to tier 2 doesn't make mech consume MORE energy than before
the upgrade.
balance: Rebalanced mech energy drain with part upgrades. Base energy
drain reduced by 50%, 33%, 25% with upgrades and applies to movement
(Servo rating), phasing, punching, light (Capacitor rating).
balance: Hydraulic clamp now can force open airlocks
balance: Made mech RCS pack consume reasonable amount of gas
code: Fixed some other minor bugs and made some minor changes in the
mech code
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
- Removed the `category` var from all plumbing machinery, now all the
designs are organized by category in a single static list(1 list for
each plumbing rcd type). This makes it easy to add new designs to 1 list
in the future and since the list is static memory is saved when multiple
plumbing RCDs are made in game
- Removed redundant `machinery_data` list. This list simply stored the
cost of designs from the `plumbing_designs` list. Rather than wasting
memory with this list we can derive the cost from `plumbing_designs`
list ourselves
- Removed unused list `choices`. No idea what that did back then
- When low on ammo the plumbing RCD would display multiple balloon
alerts. That's fixed now
- Made the icon sizes of designs in the UI slightly smaller so they
don't clip and look blurry
## Changelog
🆑
fix: multiple balloon alerts when the plumbing RCD is low on ammo
code: organized all plumbing designs into static lists for memory
savings
refactor: removed unused vars for further memory savings
/🆑
image: The Mosin-Nagant has been given new sprites and a reflavor, looking for the old rifle? Look for the Sakhno Precision Rifle.
balance: The tiniest balance thing, but since Silverscales use the Sakhno-Zhihao rifle, which has a scope on it, their main weapon now has a scope.
## About The Pull Request
Resolves#77554
Removes the modular receiver design from the base tech node, so that it
only appears in the hacked autolathe. This fixes a bug where hacking an
autolathe would make this recipe appear twice.
I assumed that _removing_ the receiver from the unhacked autolathe was
the correct direction to go, since the design is in the hacked category.
It would be easy enough to reverse this if desired, though.
## Why It's Good For The Game
Designs shouldn't be appearing in the autolathe twice. It also appears
that the intention was that you have to hack the autolathe to print a
modular receiver - which makes enough sense. Printing out gun parts
_probably_ shouldn't be default autolathe behavior.
## Changelog
🆑
fix: The modular receiver is now only printable from a hacked autolathe.
/🆑
## About The Pull Request
"Behold, a navigation beacon" Plato says to the crowd of shocked
onlookers.

What are you looking at here? Navigation beacons have been party
reworked for significantly improved ease of use, and for significantly
cooler functionality.
As it stands, in order to explore space with a ship of some sort, you
have to take the following steps:
Fly to target zlevel
Build a floor
Build a machine frame, then make the beacon out of it
Go back and park your ship
Now, while this doesn't eliminate this process, it makes it a step
shorter and a good bit less annoying to do. There are no gigabeacon
boards, instead a compact beacon can be printed. This can be used inhand
and, after a delay of three seconds, will create a brand new gigabeacon
in front of you with no extra hassle.
So, aside from the sprite (the old one is an alien power core, by the
way), what's new? Just a bit of flavor. Examining a gigabeacon will
mention a radio frequency. If you tune into this radio frequency, then
you might be able to catch the automatic messages the beacons put out
every five minutes. They detail a little bit about the beacon, namely
its coordinates, and if its activate or locked. While not critical info
my any means, it can be good information to have pop up every few
minutes, or for discovering that there are gigabeacons you didn't know
were there before.
## Why It's Good For The Game
Gigabeacons had two big problems, one was that they were pointlessly
annoying to set up, and two was that they didn't have their own sprite.
Yup, they just used a random alien tech structure and nobody said
anything about it. Hopefully this pr fixes both of those problems,
alongside adding a little neat bit of flavor to them in the form of the
automatic radio broadcasts they put every few minutes on a non-standard
channel.
## Changelog
🆑
qol: Gigabeacons no longer need to be constructed like standard
machines, instead being printed as items that can be deployed quickly
inhand without tools.
qol: Gigabeacons are no longer their own research node, instead being a
part of telecomms tech (due to the fact they're RADIO navigation
beacons)
image: Navigation gigabeacons now have their own unique sprites,
inspired by maritime EPIRB devices. If you find a yellow box with an
antenna on it, you probably found a nav beacon!
code: The deployable component now gives you an option to disable the
examine blurb it adds to its parent
/🆑
## About The Pull Request
Adds a new device you can research called the "Polymorphic Field Inverter".
It requires Advanced Biotechnology and Anomalous Research to unlock.
Completing that research lets you print out a fancy belt. Using it for 5
seconds on a mob (dead or alive) which is organic in nature and isn't
some kind of human or megafauna (monkeys are fine) will store a copy of
its DNA. Scanning another creature will replace the original stored DNA.
Storing DNA does absolutely nothing unless you have also inserted an
active Bioscrambler core.
If the item is activated with a Bioscrambler core then equipping it
grants you the ability to transform into the same kind of creature as
the one you scanned (and back). As in spells such as Wildshape you share
health with your transformed form and if you die while transformed then
you die, so be careful when turning into something like a cockroach
which has one hit point.
It has an associated experiment which makes the research free, which is
to scan two humans with (non-prosthetic) organs that they didn't have
when the round started. You can accomplish this through surgery, DNA
infusion, or a bioscrambler anomaly. You can do it on some monkeys if
nobody is cooperating with you.
I copied a teeny bit of this code from #73969 although I didn't actually
end up needing most of it.
These are absolutely codersprites so if anyone wanted to make cooler
ones, let me know.
## About The Pull Request
TRAIT_DISSECTED has had the surgical speed boost moved over to
TRAIT_SURGICALLY_ANALYZED.
TRAIT_DISSECTED now tracks if we can do an autopsy on the same body
again, and blocks further autopsies if it is on the mob. A mob that
comes back to life loses TRAIT_DISSECTED. This allows for mobs to be
autopsied once again.
Since it is completely redundant now (and was the whole time TBH),
dissections have been removed in favour of just having the experiment
track autopsies.
Fixes https://github.com/tgstation/tgstation/issues/76775
## Why It's Good For The Game
Today I showed up to a round where someone autopsied all the bodies in
the morgue, not realizing they were using the wrong surgery. Since I
couldn't _redo_ the surgery, this rendered all these bodies useless.
This was not out of maliciousness, they just didn't know better. There
are two autopsies in the surgery list, but only one is valid for the
experiment and doing the wrong one blocks _both surgeries_. Dissection
is completely useless outside of experiments. This same issue also
prevents additional autopsies on the same person, even if they had come
back to life and died again after you had done the initial autopsy.
Surely you would want to do more than one autopsy, right? That's two
separate deaths!
This resolves that by giving you a method of redoing any screwups on the
same corpse if necessary. It only matters if the experiment is available
anyway, so there isn't much reason to punish players unduly just because
they weren't aware science hadn't hit a button on their side (especially
since it isn't communicated to the coroner in any way to begin with). It
also removes a completely useless surgery and ties in the experiment to
what the coroner is already going to be doing. They can dissect their
corpses to their hearts content without worrying about retribution from
science for doing so.
In addition, someone repeatedly dying can continue to have autopsies
done on them over the course of the round. The surgery bonus only
applies once, so the only reason to do autopsies after the first is to
discover what might have killed someone. No reason this should block
further surgeries, just block surgeries when the person remains a
corpse.
## Changelog
🆑
fix: You can do autopsies on people who were revived and died again
after they had already been dissected.
qol: Autopsies have become the surgery needed to complete the dissection
experiments. As a result, the dissection surgery has been removed as it
is now redundant.
qol: A coroner knows whether someone has been autopsied and recently
dissected (and thus hasn't been revived) by examining them.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
https://github.com/tgstation/tgstation/pull/66573#discussion_r861157216
`status_effect/proc/tick(seconds_per_tick)` is wildly misleading and I
feel like I should address it
For a majority of status effects, they process on fast processing but do
not tick every fastprocessing tick
This means that using `seconds_per_tick` here is not giving you the
seconds between status effect ticks, it's giving you seconds between
processing ticks (`0.2`)
This is how it's misleading - If you have a tick interval of `1
SECONDS`, you'd think `seconds_per_tick` is, well, one. But it's
actually one-fifth. So all of your effects are now 80% weaker.
I have replaced the use of `seconds_per_tick` in tick with
`seconds_between_ticks`.
This number is, quite simply, the initial tick interval of the status
effect divided by ten.
An effect with the tick interval of `1 SECONDS` has a
`seconds_between_ticks` of 1.
As a consequence, some things which were inadvertently made weaker, such
as fire and some heretic things (at a glance), are now a little
stronger.
## Why It's Good For The Game
See above. Makes it more clear what you're doing when working with
effects.
## Changelog
🆑 Melbert
code: Updated some status effect tick code to be more clear of how long
is elapsing between ticks. Some effects that were inadvertently weakened
are now stronger as a result (fire and some heretic effects).
/🆑
## About The Pull Request
Autowiki functionality for stock parts
stockparts.dm extends the autowiki datum, implementing multiple
functions to upload images of and parse information about all the
craftable stock parts in the game a player is likely to encounter.
The template can be called on the wiki by using
`{{Autowiki/Content/StockParts}}`
[VIEW OUTPUT
HERE](https://tgstation13.org/wiki/Template:Autowiki/Content/StockParts)
## Why It's Good For The Game
Better documentation means lower learning curve, items that are properly
up-to-date is a good start.
This will probably branch into a few other autowiki additions for the
other various items from research, has the potential to lead to a full
documentation of the autolathe if done correctly.
## Changelog
:cl:Senefi
code: Autowiki module for stock parts
fix: Emergency lights no longer runtime when created in nullspace
/🆑
instead of mob/species/human the icon folders are now mob/human/species,
this makes much more sense imo than having human stuff like hair or
bodyparts (which are a GENERAL thing, not human species only) be behind
a folder while you see shit like podperson hair and golem in the main
folder
the icon for human is replaced by the new sprites instead of the old
yellow guy with green eyes
## About The Pull Request
Adjusts the placement of basic and upgraded cybernetic ears in the
research tree and adds two new variants: Whisper-sensitive Cybernetic
Ears, which make it slightly easier to hear whispers from a tile away,
at the cost of higher vulnerability to flashbangs and other loud noises;
and Wall-penetrating Cybernetic Ears, which allow you to 'hear through
walls' so to speak, also at the cost of higher vulnerability to loud
noises.
Basic cybernetic ears are now in basic medical tech node, meaning that
medbay can print them roundstart the same as other basic cybernetics.
The upgraded cybernetic ears are now unlocked with the other tier 2
cybernetics. The two new ear variants are unlocked with the other tier 3
cybernetic organs, and the luminiscent and welding shield eyes have also
been moved there from the cybernetic implants node for consistency
reasons.
The whisper ears allow you to clearly hear whispers from up to seven
tiles away, the same range where you can hear normal speech. The
wall-penetrating ears allow you to hear normal speech within seven tiles
even through walls. Due to technical limitations, runechat popups do not
show up for people you can't see, but the messages will still show up in
chat.
## Why It's Good For The Game
Currently, upgraded cybernetic ears are very underwhelming compared to
other high-tier cybernetic organs. All other high tier organs provide
some sort of benefit; even if the benefit is minor like a built-in
flashlight, a slightly higher tolerance to alcohol and toxins, or higher
tolerance to disgusting food. This change is intended to grant similarly
minor but useful benefits to the cybernetic ears.
## Changelog
🆑
add: Added whisper-sensitive cybernetic ears, which make it much easier
for the user to hear whispers at the cost of being more vulnerable to
loud noises
add: Added wall-penetrating cybernetic ears, which allow you to hear
speech through walls
balance: Basic cybernetic ears and upgraded cybernetic ears are now
unlocked with the other basic/normal cybernetics
balance: The welding shield and luminiscent cybernetic eyes are now
unlocked with the other upgraded cybernetics
/🆑
## About The Pull Request
Fixes#77257Fixes#77247
Made a big ooff in my feature PR. Its fixed now
## Changelog
🆑
fix: bluespace RPED can be put in bags again without dragging them into
their storage slots
fix: normal RPED exchanges parts & displays part info again
/🆑
## About The Pull Request
Read Tin
- If you have multiple computer circuit boards in the RPED a tgui input
is displayed asking you which specific one you want to install in the
computer frame
- If you have cable & glass inside the RPED it will attempt to install
them in the computer frame as well
You still have to use a screwdriver to turn the computer on as usual
Added extra checks to ensure we only install/remove a circuit board when
we actually a circuit board to work with
## Why It's Good For The Game
RPED already has the ability to carry cable & glass sheets which is
required to complete a computer frame, now after adding the ability to
carry & install computer circuit boards we can build computers much
faster without the need for manual clicking.
## Changelog
🆑
add: RPED can carry & install computer boards and complete computer
frames
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
1. Fixes#77177
Some things were not connecting to the ore silo round start because the
silo was not initialized yet so it went to local storage. Now it
connects with the ore silo again
3. Removed some unused code in remote materials
4. Protolathe uses `eject_sheets()` defined in remote materials and not
it's own version because that's redundant
5. Don't put the item back in the players hand when inserting it in the
material container cause we haven't even removed it yet
6. `fast_split()` is now even faster & robust and is a global proc
7. Some code cleanup for RHD silo link
## Changelog
🆑
fix: some things not connecting to the ore silo round start
/🆑
## About The Pull Request
the bear now a basic and he have a new behaviers. the bear now can go to
climbed the trees! he will looked for a tree to climbing and if he
founded a tree he will go climb him. also the bear now love honey he
will look for a bee hives to stole the honey from it so botanists must
be care. the bear will drag the honey behind him so u must chased him to
get the honey back again
## Why It's Good For The Game
the bear is a basic now so he and have more behavier for more depth
mechanis
## Changelog
🆑
refactor: the bear is a basic now. please report any bugs
add: the bear will climb trees and search honey
/🆑
## About The Pull Request
Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro.
## Why It's Good For The Game
Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir,
180)` call, being a simple set of binary operations. To sum it up, micro
optimization.
## Changelog
N/A
Listing the changes, off the top of my head:
- Resprited fishing rods, hooks, and the worm bait!
- Added a new, telescopic fishing rod, that can be bought as a goodie.
The master rod is also telescopic now.
- Added a couple hooks. One that lets you move the bait up and down,
otherwise keeping it in place, and another that stops the fish from
escaping, but slowly kills it. The former from the bepis fishing tech
node, the latter frm the black market.
- Added a fishing skill and relative legendary reward: A fishing hat,
like the one that recites "women fear me, fish fear me"
- You can now stop fishing by activating the fishing rod in your hand,
and stops it from stealing all clicks on other things if it isn't in
your active hand.
- Reworked fishing traits into fish traits, which can apply to fish
after it has been caught.
- Expanded the fish breeding system. Traits may be passed down to
offsprings, and offsprings may evolve (mutate?) into different kind of
fishes if conditions when conditions are met.
- Added half a dozen new fishes, each with its own traits: lubefish,
sludgefish (and its purple variant), slimefish, unmarine bonemass and
unmarine mastodon. Also, holodeck fish, as a joke.
- New traits: lubed skin, parthenogenesis, toxic (new reagent), toxin
immunity, predator, necrophage, no mating, crossbreeder, aggressive and
revival. Converted Emulsijack's ability and Donkfish's yuckiness into
traits as well.
- Added a fish analyzer that you can scan aquariums and fishes with.
- Fish can now be blended if you really want to. The number of reagents
from blending, w_class, and the number of fillets you get from cutting
fish now scale with size and weight.
- fish feed is no longer infinite (but it should still be plenty).
- Implemented temperature requirements for aquarium fish.
- You can now buy (dead) fish from the black market for dirt cheap.
- Last but now least, toilets are now valid fishing spots.
## About The Pull Request
Adds a `dog_fashion` for the stick of butter.(screenshot is outdated as
Lisa won't have butter no more)

Also cleans up dog.dm because it was SHIT and FUCK and MY FUCKING GOD
TWO INITIALIZE()s TWO TIMES IN A SINGLE FILE WHAT IN THE GODDAMN
Most noticeably, Lisa properly won't wear any hats, and puppies properly
can't wear head/back items (by just removing those item slots from the
strip/equip menu. if some admeme wants to fumble around they may still
equip shit there. but otherwise for a normal player those slots are
inaccessible).
Basic mobs now also send signals when they run
`appear_dead`/`appear_alive` procs, which corgis hook into to update
their dead fashion overlays.
The side-effect of getting that to work is that dogs (and any basic mob
that uses `play_dead` ai behavior) are so good at feigning death, that
they fool medical HUDs and other related things. They're just that good.
There's a bunch of other things involved and I was mostly just being
angry at the state of the file so I'll check back when I gather all
things changed.

## Why It's Good For The Game
https://github.com/tgstation/tgstation/assets/75863639/b34589cb-94d6-4b80-bf0f-1814c08da100
## Changelog
🆑
add: dog with a butter on 'em
add: dead dog with da butter on 'em (dogs feigning death are so good at
it, they appear dead to medical HUDs and other things)
add: Nars-Ian now can revive from the dead if he consumes a pet
fix: fixes dog fashion items with no speech modifiers set making dressed
up corgis unable to perform their speech or emote behaviors
fix: fixes old Ian losing his mobility ride when shaved with a razor
fix: fixes pets not dropping their collar when gibbed
fix: butter don't go on Lisa and corgi puppies (Lisa won't wear hats and
corgi puppies can't wear hats and back slot items)
/🆑
## About The Pull Request
Exactly what it reads on the tin. As a bonus, they will flee from
attacking targets, hunt tiny critters (crabs are now small-sized) and
actually move sideways (it's an element that covers both client and
basic movement)
## Why It's Good For The Game
Another simple to basic mob refactor.
## Changelog
🆑
refactor: Crabs refactored into basic mobs. They now hunt tiny critters
and flee from attackers.
fix: Fixed crabs not crab-walking.
/🆑
## About The Pull Request
**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes#76151
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes#76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes#72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization
**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes#76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc
e929cf39cd/code/datums/components/remote_materials.dm (L78-L87)
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this
e929cf39cd/code/datums/components/remote_materials.dm (L150-L153)
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens
## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe
## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids
## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai
## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑
## About The Pull Request
Adds a new station trait: Radioactive Nebula!
The station is located inside a radioactive nebula. Space background and
lighting is different shades of green. Objects in space will also glow
green. (This is kinda lying, since the glowing stuff isn't radioactive,
you just get an element that slowly irradiates you, though people and
certain objects that get the 'IRRADIATED' status may still double-whammy
you)
Do not go into space without rad-protected gear, or you will get very
sick very fast. RAD-protection MODsuit modules spawn in robotics and are
also immediately researched.
The nebula does protect against external threats, like pirates, ninja's
and nukies. They can still get to the station pretty well, but they
can't stay in space for extended periods of time
To make it more livable, public rad protection gear will spawn in
lockers around the station. Everyone will also spawn with potassium
iodide pills in their emergency box. Dynamics threat is also reduced by
30, so there's a proclivity towards more lower threat rounds when the
radioactive nebula is present. Radioactive resonance virus cannot be
generated though, since it kinda obliterates any and all challenge and
threat

**Shielding**

In order to protect the station from radiation, nebula shielding units
need to be constructed. Five spawn ready-to-built in engineering, and
more can be bought pretty cheap from cargo. (Normal radstorms are
disabled)
The gravity generator has 20 minutes of innate shielding, where every
nebula shielding unit adds another 20 minutes. 5 are needed to
completely block all radiation even when the gravity gen is down, but
constructing more is recommended in-case of sabotage/destructions/power
outtages.
Active nebula shielding will passively generate tritium. You can either
vent/ignore this, or use it for something. I'm not an atmos tech but I'm
sure you can do something with it
_What happens when no shielding units are constructed/they all fail?_
The station will suffer a 5 minute long radiation storm, with only
shuttles being excempt. The storm is nerfed strongly, and you can tank
the 5 minutes, but you'll be pretty sick. After the 5 minutes are over,
central command will send an emergency shielding unit which will block
the radiation for 10 minutes and warn the station to set up nebula
shielding.
## Why It's Good For The Game
The station being inside a radioactive nebula shakes up a pretty major
aspect of the game (that being the 'space' in space station 13). Hallway
decals are colored green, display screens will display radiation
markings, carps blend with the nebula, etc. Putting the station inside a
radioactive nebula shakes up the rules of the game and what people can
expect. Suddenly, you can no longer just go outside without taking meds
or getting proper radiation protection, encouraging people to stay cozy
and inside.

Inside, the crew gets the goal to set-up radiation shielding to defend
themselves against the nebula, rewarding a creative engineering
department with passive resource income and protecting the station
against massive radiation storms. I think it's nice to give engineering
something to set up. Even if they don't care, they can just plop it down
somewhere in a closed room and be done with it.
The radiation storm is pretty aggressive, but very survivable if you use
your potassium iodide pills, the extra radiation suits or whatever
chemistry has whipped up.
Most importantly, it gives the entire station a common enemy: the
nebula. Everyone is encouraged to prepare against the mechanics.
Chemistry can make meds, viro can make protective virusses, robotics
gets encouraged to make radprotected MODsuits, engineering gets to
set-up radiation shielding, assistants can look at space or whatever
assistants do.
<details>
<summary>Cool images</summary>




</details>
## Changelog
🆑
add: Adds a new rare radioactive nebula station trait! Get ready and
PREPARE, before it gets in...
tweak: Nearstation space area lighting may look slightly different
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Bank machine now has a circuit so you can repair it.
You can steal it from the secure tech storage.
You can research it and print in the same node as comms console.
Also i messed around with start_siphon proc by making check for
unauthorized before siphoning sets to TRUE so supposedly that should
prevent incorrect messages when someone starts to siphon.
Added gps signal to it because of possibility of creating custom area
and building machine there.
## Why It's Good For The Game
You can distract people with it, you can rob cargo with it, you can
repair it when someone breaks it.
## Changelog
🆑
add: Bank machine now has a circuit for it. Spawns in secure tech
storage and researchable in the same nod as comms console.
balance: Due to possibility of creating area and making there bank
machines that aren't roundstart will have gps signals.
fix: Bank machine now doesn't yell about unauthorized credit withdrawal
when its authorized.
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
## About The Pull Request
Hello friends, I've been on a bit of a lighting kick recently, and I
decided I clearly do not have enough things to work on as it is.
This pr adds angle support to static lights, and a concepting/debug tool
for playing with lights on a map.
Let's start from first principles yeah?
### Why Angled Lights?
Mappers, since they can't actually see a light's effect in editor, tend
to go off gut.
That gut is based more off what "makes sense" then how things actually
work
This means they'll overplace light sources, and also they tend to treat
lights, particularly light "bars" (the bigger ones) as directional.
So you'll have two lights on either sides of a pillar, lights inside a
room with lights outside pointing out, etc.

This has annoying side effects. A lot of our map is overlit, to the
point that knocking out a light does.... pretty much nothing.
I find this sad, and would like to work to prevent it. I think dark and
dim, while it does not suit the normal game, is amazing for vibes, and I
want it to be easier to see that.
Angled lights bring how lights work more in line with how mappers expect
lights work, and avoids bleedover into rooms that shouldn't be bled
into, working towards that goal of mine.
### How Angled Lights?
This is more complex then you'd first think so we'll go step by step

Oh before we start, some catchup from the last time I touched lighting
code.
Instead of doing a lighting falloff calculation for each lighting corner
(a block that represents the resolution of our lights) in view we
instead generate cached lightsheets. These precalculate and store all
possible falloffs for x and y distances from a source.
This is very useful for angle work, since it makes it almost totally
free.
Atoms get 2 new values. light_angle and light_dir
Light angle is the angle the light uses, and light_dir is a cardinal
direction it displays in
We take these values, and inside sheetbuilding do some optional angle
work. getting the center angle, the angle of a pair of coords, and then
the delta between them.
This is then multiplied against the standard falloff formula, and job
done.
We do need some extra fenangling to make this all work nicely tho.
We currently use a pixel turf var stored on the light source to do
distance calculations.
This is the turf we pretend the light source is on for visuals, most
often used to make wall lights work nice.
The trouble is it's not very granular, and doesn't always have the
effect you might want.
So, instead of generating and storing a pixel turf to do our distance
calculations against, we store x and y offset variables.
We use them to expand our working range and sheet size to ensure things
visually make sense, and then offset any positions by them.
I've added a way for sources to have opinions on their offsets too, and
am using them for wall lights.
This ensures the angle calculations don't make the wall behind a light
fulldark, which would be silly.
### Debug Tool?
In the interest of helping with that core problem, lights being complex
to display, I've added a prototyping tool to the game.
It's locked behind mapping verbs, and works about like this.
Once the verb is activated, it iterates over all the sources in the
world (except turfs because those are kinda silly), outlining and
"freezing" them, preventing any future changes.
Then, it adds 3 buttons to the owners of a light source.

The first button toggles the light on and off, as desired.
The third allows you to move the source around, with a little targeting
icon replacing your mouse
The second tho, that's more interesting.
The second button opens a debug menu for that light

There's a lot here, let's go through it.
Bit on the left is a list of templates, which allow you to sample
existing light types (No I have no idea why the background is fullwhite,
need to work on that pre merge)
You can choose one by clicking it, and hitting the upload button.
This replaces your existing lighting values with the template's,
alongside replacing its icon and icon state so it looks right.
There are three types as of now, mostly for categorization. Bar, which
are the larger typically stronger lights, Bulb, which are well, bulbs,
and Misc which could be expanded, but currently just contains floor
lights.
Alongside that you can manually edit the power, range, color and angle
of the focused light.
I also have support for changing the direction of the light source,
since anything that uses directional lighting would also tie light dir
to it.
This isn't *always* done tho, so I should maybe find a way to edit light
dir too.
My hope is this tool will allow for better concepting of a room's
lights, and easier changing of individual object's light values to suit
the right visuals.
### Lemon No Why What
Ok so I applied angle lights to bars and bulbs, which means I am
changing the lighting of pretty much every map in the codebase.
I'm gonna uh, go check my work.
Alongside this I intend to give lighting some depth. So if there's room
to make a space warmer, or highlight light colors from other sources, I
will do that.
(Images as examples)

I also want to work on that other goal of mine, making breaking lights
matter. So I'll be doing what I can to ensure you only need to break one
light to make a meaningful change in the scene.
This is semi complicated by one light source not ever actually reaching
fullbright on its own, but we do what we must because we can.

I'm as I hope you know biased towards darker spaces, I think contrast
has vibes.
In particular I do not think strong lights really suit maintenance.
Most of what is used there are bulbs, so I'm planning on replacing most
uses with low power bulbs, to keep light impacts to rooms, alongside
reducing the amount of lights placed in the main tunnels

**If you take issue with this methodology please do so NOW**, I don't
want to have to do another pass over things.
Oh also I'm saving station maps for last since ruins are less likely to
get touched in mapping march and all.
### Misc + Finishing Thoughts
Light templates support mirroring vars off typepaths using a subtype,
which means all the templates added here do not require updating if the
source type changes somehow. I'd like to expand the template list at
some point, perhaps in future.
I've opened this as a draft to make my intentions to make my changes to
lights known, and to serve as motivation for all the map changes I need
to do.
### Farish Future
I'm unhappy with how we currently configure lights. I would like a
system that more directly matches the idea of drawing falloff curves,
along with allowing for different falloffs for different colors,
alongside extending the idea to angle falloff.
This would make out of engine lighting easier, allow for nicer looking
lights (red to pink, blue to purple, etc), and improve accessibility by
artists.
This is slightly far off, because I have other obligations and it's
kinda complicated, but I'd like to mention it cause it's one of my many
pipedreams.
## Changelog
🆑
add: Added angle lighting, applies it to most wall lights!
add: Adds a lighting prototyping tool, mappers go try it out (it's
locked behind the mapping verb)
/🆑
---------
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
## About The Pull Request
It wasn't defined properly so it's price was 20 times higher.
## Why It's Good For The Game
## Changelog
🆑
fix: Onehuman and Freeform ai modules now have proper material prices.
/🆑
## About The Pull Request
New malf AI upgrade
Remote safety overrides: Mid-cost, Mid-supply. Allows the AI to remotely
emag things it can see and can access.
1. Very useful for psychological warfare (Emagging APCs to throw the
crew off their trail)
2. Logically makes sense - why, of all things, can the AI not emag
anything when it's fundumentally integrated with the station's
electronics?
3. Generally speaking can only access things that make sense for it to
access - it cannot emag ethereals, sadly
In order for this to work, emag_act now returns a boolean, designating
if the emag had any effect.
While I was in there, I also added args to every single emag_act I could
find and added far more feedback/converted a lot of things to balloon
alerts to allow the AI to see if its emag had any effect.
## Why It's Good For The Game
It just makes sense that the AI, the most electronically-sensitive
entity in the game, would be able to emag things. Plus, more options
given to malf that aren't strictly MURDER KILL MURDER are always a plus,
especially if they allow for fancier plays.
## Changelog
🆑
add: New malf ability: Remote safety overrides. Allows the AI to
remotely emag things it has access to.
code: emag_act() now returns a boolean designating it's success in
emagging
code: All instances of emag_act() now have the proper arguments
qol: Most usecases of emagging now have some kind of feedback, and
existing feedback has been sanity checked and converted to balloon
alerts.
/🆑
## About The Pull Request
Further continous organizing and cleaning the Icons folder. There are
still some minior nitpicks left to do, but I reached my daily sanity
expenses limit again, and the faster these get in the less issues for
both me and others later. Also cleans some mess I caused by my blindness
last PR.
## Why It's Good For The Game
Saner spriters = better sprites
## About The Pull Request
Due to a mental breakdown caused by unfathomable abomination that is
icons folder, I swore to myself to one day clean it. Today is kind of
that day. Been at it for around 6, you gotta understand I need a rest. I
tracked most changes in descriptions of commits if you are looking for
details.
## Why It's Good For The Game
Saner spriters make better sprites. And also, just helps keep track of
things.
## Changelog
🆑
image: added sprites for different variants of scrolls.
image: modified couple posters with ghost pixels.
/🆑
---------
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
## About The Pull Request
Fixes the design category for autorifle magazines to not be broken, so
they now appear in the ammo category instead of having to search all
designs to find them.
## Why It's Good For The Game
I HATE BUGS I HATE BUGS
## Changelog
🆑
fix: Autorifle magazines are now visible in the security techfab's
ammunition category.
/🆑
## About The Pull Request
Fixes typos in mRLD and RTD descriptions
## Why It's Good For The Game
Less typos
## Changelog
🆑
spellcheck: Fixed typos in the descriptions of the mRLD and RTD as seen
from protolathes.
/🆑
## About The Pull Request
As the title says, foxes are now basic mobs.
Foxes have a few new behaviors now, rather than the zero behaviors they
had before. Foxes, being very skittish animals, will flee from anything
that damages them. Additionally, they now have hunting behavior,
tracking down and killing anything of their size or smaller - regardless
of faction. They will not, however, hunt as long as someone is watching
them - which is to say, if any living humans are within 7 tiles of them.
Don't leave a fox and a chicken together while you're transporting your
grain to Lavaland! Also, make sure you don't leave Renault and Ian on
their play date unsupervised...

## Why It's Good For The Game
Gets rid of another simple animal. We grow ever closer to ascension.
Also, makes foxes a little more interesting rather than simply another
animal that does literally nothing. Renault will now flee from anyone
trying to kill her, for instance. Also opens up unique avenues of pet
murder if you want to make it look like an accident.
## Changelog
🆑
refactor: Foxes are more crafty now. They will run from danger, and hunt
small prey when no one is keeping an eye on them. Don't leave Renault
alone with Ian!
/🆑
## About The Pull Request
This PR refactors mind language holders into non-existence
As a result, `update_atom_languages` is no longer necessary
Mind-bound languages are transferred via `/mind/proc/transfer_to`
Species changing no longer deletes and re-creates the mob's language
holder, allowing them to keep any languages they have.
Species languages are sourced from `LANGUAGE_SPECIES` now, meaning they
are removed when they change species. If the mob is not a human with a
species datum, these are effectively just atom level languages.
Makes a bunch of unit tests to ensure language transfer over certain
events works as intended
## Why It's Good For The Game
Mobs with minds having two independent language holders results in a
good few bugs, and simply doesn't make sense when we have sources
(`LANGUAGE_MIND`).
Instead of tracking two language holders, we can simply use sources
better and only track one.
This means that the language holder you start with is your language
holder, period. It doesn't get deleted or re-instantiated or whatever.
## Changelog
🆑 Melbert
refactor: Refactored language holders, making species changes not delete
all of your known languages
/🆑
## About The Pull Request
PR done for bounty:
https://tgstation13.org/phpBB/viewtopic.php?f=5&t=33988
borgs can now turn on stoves and griddles
borg click code has been reworked a bit to be closer to base mob, you
are now able to click on stuff within reach rather than just Adjacent
(might be buggy to introduce this? hopefully not. if anything we can
testmerge this), which lets us make the apparatus work to pick up stoves
on the range and such
Adds the Codex Cibus Mechanicus as an upgrade you can research in RnD
with the other service borg ones. When you use it it shows you the
cooking menu!

## Why It's Good For The Game
The service borg has the tools to prepare ingredients, but it can't
actually do anything with them, which severely limits it, only being
able to do slapcrafted foods.
The apparatus not working on items that are on top of stoves/griddles
seems to be just a bug with how cyborg click code is handled.
## Changelog
🆑 Fikou
fix: service borg apparatus now works on stoves and griddles and ovens
qol: borgs can now activate stoves and griddles
add: rnd can research a cookbook for service borgs
/🆑
## About The Pull Request
i maked the mushrom from the simple monster to a basic monster so he is
dont a simple anymore but now he is a basic.i followe the instrucions in
the guide learn-ai.md to maked this pr. i also give the mushrom a extra
feture he will go and hunt food mushroms on the floor to ate them and
when he ate them he will heal small his hp
## Why It's Good For The Game
he is now a basic monster so he is not simple anymore. it is good
because he is a more advance ai and he will stil go and do the same stuf
he did when he is simple but he is now a basic
## Changelog
🆑
refactor: Mushrooms have been refactors, please report any
bugs/unintended behavior
add: the mushroom basic mob can eat the mushroom plant to heal itself
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Engineers start with a portable T-Ray scanner but scan normally only
print the eyewear version, for some reason, despite it being flagged as
an engineering tool. This makes them protolathe printable, and available
to science too as they might be conceivably useful on occasion there.
As moved a portion of the cost to glass (same overall material cost)
because it just seems to make intuitive sense that a scanner would have
a screen and would use some.
## Why It's Good For The Game
I couldn't really think of a reason that they wouldn't be printable like
other basic tools. They're also dirt cheap (less than the lathe tax,
where applicable) from public vending machines, so it doesn't seem like
they're particularly intended to be very restricted. So, seems like just
an oversight.
## Changelog
🆑
fix: Engineers can now print the non-eyewear T-Ray scanner from their
department lathe.
qol: Scientists can also print this scanner.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request

continues and closestgstation/tgstation#75708
- adds a generic status readout module that doesn't have a round timer
or round ID display
- the health analyzer's info display can now be toggled via a setting

- adds the generic status readout module to the advanced medical MODs
node

- it has a death sound now yippee (sound and volume are vareditable.
shoutouts to fikou for giving me a sound that was better)
- ninjas still get the one with round timer/ID display
## Why It's Good For The Game
it's a neat little module that tells you things about your spaceman that
you might want to keep track of, like viruses and health and nutritional
status
## Changelog
🆑
add: A really old data disk with the MOD module designs for the status
readout was recovered, and has been haphazardly hotpatched into the
research networks.
add: Also, the status readout module now plays a sound on death.
qol: The MODsuit health analyzer's info tab health readout can now be
disabled in its settings.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Gives duffelbags their proper slot count
They inherited this from backpacks, but I sorta just forgot about that
[Creates "levels" of locked objects, uses that to make locked duffels
work](c613c00f62)
[c613c00](c613c00f62)
Turns locked into something that holds defines, this makes life a lot
easier.
Requires a lot of boilerplate because of how many uses of these procs
there are and all the passthrough and shit.
Adds a few outfit subtypes to avoid this class of failure in future.
Renames the args in a few but not all touched procs, one thing at a time
Closes#76407Closes#76430 Had the lock check in the wrong place
Closes#76441 GOD I HATE TK SO MUCH
Wrote half the pr without glasses so if it's weird gimme some grace
yeah?
## Changelog
🆑
fix: Fixes some fuck with duffelbags, them not holding enough + issues
with spawning gear in them (job shit and all)
/🆑
The reusable and caseless types only purposes are the behaviors of
deleting the casing when fired and spawning a new object when the
projectile ultimately reaches its maximum range or hits a target, both
of which are easily "elementizable". Also, I don't like those barely
filled sub-folders in the projectile module, and the fact we've
divergent reusable and single use arrow types.
## About The Pull Request
Refactors livers so special chemical handling can be done by them,
instead of the species datum.
Plasmamen, skeletons and golems all use the liver for all their species
specific chem handling now.
## Why It's Good For The Game
SPECIES DATUM I HATE YOU!
Also, being able to handle reagents like any species if you have their
liver is REALLY FREAKING COOL and allows for emergent gameplay by mixing
various organs from various sources.
## Changelog
🆑
refactor: Mutant livers can now handle chemicals in special ways.
Currently, only plasmaman, skeleton and golem livers do it. Every other
species is the same.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>