## About The Pull Request
Adds a new area flag, LOCAL_TELEPORT.
This flag allows teleports ONLY in the same area that the teleport is
used. This allows for short range hijinks without enabling long range
exploits, and thus it's given to DMs and domains.
Changed almost all area_flags & NO_TELEPORT checks to use
check_teleport() (as now areas may use local_teleport instead, and this
lets them check for multiple things instead)
Thus I re-added Void Phase to the heretic scribe in DM and shuffled some
stuff around
(realizing now i neglected to doublecheck if blade breaking tps you to
station. need to check just in case)
## Why It's Good For The Game
It sucks you can't use teleporting abilities in temporary areas, so this
is a good way to allow this to still happen without opening the way for
gamebreaking exploits.
## Changelog
🆑
code: Adds a new area flag, LOCAL_TELEPORT, given to virtual domains and
deathmatch arenas.
code: Re-added Void Phase to Heretic Scribes in Deathmatch's Ragnarok
map.
/🆑
## About The Pull Request
this prevents corgi pop, as well as some other animals like cats, from
skyrocketing. there were some measures against this in the ai behavior
code, but they werent working properly.
## Why It's Good For The Game
fixes corgi pop skyrocketing, for the sake of performance
## Changelog
🆑
fix: corgi's population will no longer exponentially grow
/🆑
## About The Pull Request
You can now use a fishing rod to fish random vending products from
vending machines, using holochips, coins and spacecash as bait. The
value of the money used as bait will positively influence the chance of
getting the pricier vending items, while using less than the minimum
paycheck (25 credits) will increase the minigame difficulty and carries
an additional, small risk of getting a dud or even hurling the vending
machine in your direction.
This also warranted a slight refactor of how vending product prices are
set.
## Why It's Good For The Game
Expands the list of things you can do with a fishing rod. Like for the
organ manipulation fishing PR. This is not about getting fish, but the
unconventional things we can do along the way.
Now tested, it works.
## Changelog
🆑
add: You can now try to fish random products out of vending machines
with a fishing rod and a few bucks.
fix: Fixing the 1000 cr holochip loot from exploration drones.
/🆑
## About The Pull Request
This PR completely rewrites our embedding system in favor of embedding
datum handlers which acts as containers for all embedding-related data
and logic.
Currently embedding logic relies on an element-component-datum triad,
where elements on the items handle embedding logic, singleton datums
store embedding data and components (which get assigned to ***mobs*** in
whom the item embedded) handle pain and the item being ripped out. How
do we access all the procs? By using comsigs as procs, which is really
bad. This code was written back in 2020 when DCS was hot stuff but in
hindsight this implementation was a mistake, as it heavily restricts
custom embedding behaviors unless you're willing to constantly run
GetComponent (bad, ugly, incarnation of evil)
This PR rewrites all that logic to be handled by lazyloaded
``/datum/embedding``, which is stored similarly to current
``/datum/embed_data``. Upon being requested, it is initialized and
assigned to a parent from whom all the logic is handled, from being
embedded to pain and having the item ripped out. On projectiles this
only handles one proc, after which it copies itself down to the shrapnel
item instead and runs the chain further from there.
Ideally, most embedding-related logic now should be handled purely
datum-side - in most cases items should not be hooking up to themselves
like they did before (unless said logic is for when the item is made
sticky or smth) and instead the code should be handled by the embedding
datum (see sholean grapes implementation in this PR). This should allow
us to do fancy stuff like syringe guns embedding syringes into targets
and injecting them that way, and fix some bugs along the way.
Closes#88115Closes#87946
Also fixed a bug with scars not displaying when examined closely from
#86506 because i was in the area anyways
## About The Pull Request
Adds brain in a jar, a rare coroner mail goodie.

<details>
<summary> About the jar </summary>
The jar is a 150u reagent container. You can put a single organ inside
it for display; if the jar's filled to the brim with formaldehyde, the
organ will be preserved.
The jar that comes to the coroners in mail is pre-filled with
formaldehyde, as well as a brain.
</details>
<details>
<summary> About the brain </summary>
The brain is revivable, thanks to #87072 and its glorious
ghostrole_on_revive component.
For one reason or the other, the brain is scarred, meaning it has a
random special brain trauma.
</details>
Also, added an examine tip to brains with ghostrole_on_revive component,
signaling that it can be revived.
## Why It's Good For The Game
Putting a brain that came to you in the mail into a body and zapping it
with a defibrillator fits the coroner's human experimentation theme IMO;
also a brain in a jar sounds like an interior item that a coroner would
enjoy.
## Changelog
🆑
add: brain in a jar, a rare coroner mail goodie
qol: soul-less brains that can be revived (like those from recovered
crew) now have an examine tip
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
- added a signal - `COMSIG_ATOM_DENSITY_CHANGED`, is sent when
set_density is called and doesn't early return
- changed all manual assignments of .density to use `set_density` so the
signal is sent
- airlocks get the leanable component, if the airlock opens while you
are leaning on it - you will fall
- computers get the leanable component
## Why It's Good For The Game
can lean on more stuff, roleplay! Immersion!
*John Tider leans on the airlock*
## Changelog
🆑 grungussuss
add: computers and airlocks are now leanable
refactor: changed how density/collision of some objects is changed,
report any oddities!
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
## About The Pull Request
closes#88743 . the issue is while they'd ignore ur command since its
impossible, the emote would still appear, which i now realize was a
mistake
## Why It's Good For The Game
fixes being able to tell animals to commit atrocious acts
## Changelog
🆑
fix: radial pet commanding emotes will now not appear if the command is
impossible to execute
/🆑
## About The Pull Request
What it says on the tin. Also cleans up some tackling code
## Why It's Good For The Game
Only in my delirium did I actually realize how I fucked up. Thanks flu.
## Changelog
🆑
fix: Tackling resulting in a neutral outcome does not force you to the
floor.
fix: Getting up is now properly influenced by spinal implants.
/🆑
## About The Pull Request
Plumbing components waste extra ticks in requesting reagents if those
requested reagents are stored in a reaction chamber & they are catalysts
which cannot be sent out. That is because the reaction chamber lies &
tells the pipeline it can give them inside it's
`/datum/component/plumbing/reaction_chamber/can_give()` proc but won't
actually transfer them if it has no excess to spare.
This doesn't cause errors because those components will eventually get
their requested values from other supplies but it takes extra ticks to
do so
This ensures the reaction chamber won't volunteer itself as a supplier
if it can't give out those catalysts thus enabling the pipeline to
request more accurate values by excluding that reaction chamber from its
list suppliers
## Changelog
🆑
code: plumbing reaction chamber won't waste extra ticks for the pipeline
when sending out catalysts
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Adds rift fishing to the game.

Drained and undrained influences can be fished in, the latter only by
heretics. Fishing in an undrained influence shows a bobber floating over
nothing to other people, so don't be stupid!
The loot pool includes the following:
- Knowledge. Great for heretics, bad for crew. Only actually gives
knowledge if fished up in an unopened rift, opening it.
One of each heretic potion type.
- A wild Fire Shark, hostile to all.
- One of each heretic potion, and two flasks of eldritch essence.
- Several new fish:

In order:
1. Chrystarfish
Cosmostarfishe that snuck into the bluespace compartment of a shuttle
engine. Teleports around when eaten. Can be cut into bluespace crystals.
Very pointy.
2. Flumpulus
Probably not an actual fish. Contains flumpuline, which is in many ways
an upgrade to oculine. Except for it occasionally popping your eyes out
and replacing them with fungus. It also gets flattened if you land on
it, cushioning your fall.

3. Gullion
This fish can be cut into two diamonds, and needs no mate to reproduce,
making it an excellent way to replenish the station's diamond supply!
However, it needs silicon in the fish tank to survive.
4. Walro-Dolphish
Weird, amphibious creature. Amazing weapon - high damage, strong
piercing wounds, decent block chances. However, it will bite you if you
hold it for too long, so be careful!
More fish are planned to be added. The PR was split in two to reduce
review complexity as the latter half of the fish were increasingly
convoluted.
Any fishing rod will do for fishing, but heretics are now able to infuse
their fishing rod with a grasp:

Infusing the rod will temporarily improve its fishing modifier and give
it a unique trait that lets heretics gather 2 influence, rather than 1,
from a fished-up rift.
If crew fish up a glimpse of the Mansus, they will recieve the same
effects as if they examined the rift, and a curse hand will shoot out at
them.
influences cannot be bombed for fish.
## Why It's Good For The Game
Rifts are _extremely_ close to basically just being eldritch pools of
liquid that some heretic spilled over the station. It's always stuck out
like a sore thumb that we can't fish in them, but now we _can_. (Also,
someone needs to PR fishing in a bucket for clowns and mimes.)
Fishing in a rift is just one of those things you see some random,
innocent assistant do while doing an errand, passively enhancing the
round with the sheer ridiculousness of it. Coming back, it's likely
you'll see them running from a wild Fire Shark they unwisely dug up from
messing with eldritch influences.
For Heretics, this is for the most part actively a worse alternative
than just doing things normally. But sometimes you don't want to be
optimal. Infusing their fishing rod is almost entirely an amusing twist
on the blade infusion that blade path has, and they can even infuse
other people's rods - make fish not war.
Ghommie gave me the fish sprites, and I interpreted them the silliest
and most interesting ways I could think of.
> Chrystarfish
Bluespace's technobabble has finally reached fish. Much like the
Gullion, the intention here was primarily some additional, risky way to
procure some amount of bluespace crystals and dust that doesn't depend
on Mining to do their job, either for the station or for your own stupid
plans. (Obviously mining is still the best way to get it, but it's not
healthy for the game for them to be the ONLY way to do so!)
>Flumpulus

Imagine taking a pill of 'Super oculine!' and suddenly your eyes pop out
and are replaced with fungeyes. 10/10
>Gullion
Diamonds are extremely scarce on the station and the only way to get
more is by mining. I thought adding some rare, restricted way of getting
more would be fun for the game, and encourage fish breeding.
Parthenogenesis may be a bit much admittedly, but let's just see what
happens
> Walro-Dolphish
The name for this thing kinda sucks. I like the idea of an amphibious
fish-weapon like the pikes that actually kinda just hates being wielded
around like a stick. It's also piercing to differentiate.

## Changelog
🆑
Carlarc, Ghommie
add: Adds rift fishing to the game. Includes new wacky fish!
add: Drained and undrained influences can be fished in, the latter only
by heretics. Fishing in an undrained influence shows a bobber floating
over nothing to other people, so don't be stupid!
add: influences cannot be bombed for fish.
add: Heretics can now infuse their fishing rod, and fish for knowledge.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Renames all uses of caller, as they (currently) shadow the new byond var
and will in future error
Ups our "wan if compiled after" experiement compile version to 516
Adds an alternate 516 unit test
## About The Pull Request
Partially a port of
https://github.com/DaedalusDock/daedalusdock/pull/1163 which is a port
of my own code from bitbus
Closes#88579
Instead of manually setting hud images and positioning we now can use
set_hud_image_state which also updates their position to ensure that
they scale with the owner atom. HUDs had RESET_COLOR and RESET_TRANSFORM
but no KEEP_APART, so they were stuck with mobs all this time. I
replaced RESET_TRANSFORM with PIXEL_SCALE (shouldn't be reserved to mob
huds only to be honest) and added KEEP_APART, so that HUDs still
scale/rotate with their owner but don't inherit their color. Also fixed
the dragon issue, that's where this PR actually started.
Closes https://github.com/tgstation/tgstation/issues/45411
## Why It's Good For The Game
I don't want my HUDs to be pretty pink when I make a barbie Clarke.
## Changelog
🆑
refactor: Rewrote some of HUD code so they're no longer colored in their
owner's color
fix: Space dragons no longer turn invisible when toggling seethrough
mode
/🆑
## About The Pull Request
see title
also see video
https://github.com/user-attachments/assets/23e2d128-1175-4779-87cf-74a4d4e6e1c1
## Why It's Good For The Game
doing in 1 machine what was once done by 3-4 is nicer for the chemist.
less materials wasted and more space available to play around in. also
has the side effect of making the output slightly higher since time
spent transferring catalysts can now be spent on transferring reagents
that are consumed instead
## Changelog
🆑
add: catalyst function for plumbing reaction chambers
/🆑
---------
Co-authored-by: SyncIt21 <VLord3D@gmail.com>
## About The Pull Request
Didn't run the check in stabilization code, also fixed a forgotten
comsig unreg
## Changelog
🆑
fix: Fixed moth wing stabilization working in zero-g as long as you keep
moving
/🆑
## About The Pull Request
this PR improves the UX of pet commands a bit. i decided to expand on
their radial menu. You can now hold shift and hover over your pet to
display a menu of commands which you can choose from. alternatively, you
can still type out commands in chat
https://github.com/user-attachments/assets/9da7f7ea-58a3-4fd6-b040-45cc05cda51d
## Why It's Good For The Game
makes pet commands easier to give out when you're managing more than 1
pet. also fixes the fishing command not working.
## Changelog
🆑
qol: holding shift and hovering over your pet will display a list of
commands you can click from
fix: fixes the fishing pet command not working
/🆑
## About The Pull Request
This PR completely overhauls Midnight and Midnight-derived UIs, as well
as does some adjustments to the UI layout.

### Major changes:
* All UI elements for Midnight/Midnight-derived themes have been redrawn
to be cleaner, with consistent palettes and up-to-date sprites
* Tiny equip E is gone - Drop action has been moved in its place,
freeing some space in the bottom right corner
* Four minor menu keys have been bundled with actions, now-vertical
floor change element taking their place
* Action palette (wide thing in the top left corner) is now hidden when
it has zero actions bound to it and the player isn't currently dragging
an action button.
I've also fixed some minor issues with how hand elements are rendered,
and given feedback to resist button (it now lights up when pressed or
when the hotkey is held down)
<details>
<summary>Some screenshots of new UIs</summary>



Redrawn UIs now have themed clothing slots



</details>
## Why It's Good For The Game
Our UI icons are very outdated and compressed, with very large palettes
and odd transparency quirks, making adding new elements or redesigning
current ones quite hard and frustrating. A fresh coat of paint can take
user experience a long way.
As for moved elements, most people either equip things manually or use
the equip hotkey - E button is rather obscure and rarely used, while
drop button makes sense to be located near hands. Action palette just
takes up screen space most of the time, so there's no reason to not hide
it when you don't have any use for it.
## Changelog
🆑
qol: Resist button now has visible feedback.
qol: Readjusted UI layout.
image: Completely redrawn Midnight and Midnight-derived UIs!
/🆑
## About The Pull Request
Rather than checking for object layer if we can clean something, has a
trait which accomplishes this
This better allows us to pick and choose what objects we want to clean
when mopping
Note: I didn't apply the trait to everything it previously affected
Currently, it cleans stuff like pipes and plumbing, which I deemed not
necessary to carry over since they can't get dirty anyways
I can re-add this if desired though
Fixes#88445Fixes#88150
## Changelog
🆑 Melbert
fix: Gibs get bulk cleaned if you clean the turf again
refactor: Changed how things determine "I can be bulk cleaned if I clean
the turf underneath me", let me know if you notice anything not getting
bulk cleaned or weird things getting bulk cleaned
/🆑
## About The Pull Request
This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.
Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).
Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!
https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1
Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)
Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.
Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
## About The Pull Request
A) Queue time can be null and it'll be valid for hotstarting loops
B) Pushoffs working even when you're moving feels much better
C) Jetpacks were having race issues with drift handlers because those
were also using comsigs which is a remnant of old code back when they
were components. Handlers should fire last, post-comsigs.
D) We should not be hard-blocking jetpack movement when doing final
slowdown step. Like really.
## Why It's Good For The Game
Jetpacks ACTUALLY don't suck this time around.
## Changelog
🆑
qol: Jetpacks should ACTUALLY feel better now
/🆑
## About The Pull Request
- Removed unused vars `click_mods`, `lean_check` & `same_turf` from the
leaning component. Walls & windows the only two atoms that support
leaning don't use these vars so its unused code
- Leaning component now starts leaning inside its `Initialize()` proc,
which means we don't have to call `base_mouse_drop_handler()` manually
- Because of point 2 we can now properly lazy load the leaning component
via `LoadComponent()` proc instead of keeping track of a boolean var to
check if we added the component or not.
Just cleaner & lesser code overall
## Changelog
🆑
code: improved code for leaning
/🆑
## About The Pull Request
The arg should be the movable, not the component.
## Why It's Good For The Game
Fixing an issue that wasn't actually fixed but worsened.
## Changelog
🆑
fix: Actually fixed alt-clicking aquariums.
/🆑
## About The Pull Request
Moth wings prevent you from flying in gravity -> same check is used for
activation -> they're activated upon implanting -> unless you spawn or
get wings in zero-g you're screwed
Closes#88460Closes#88457
## Changelog
🆑
fix: Fixed moths only being able to fly if they spawn in zero gravity
/🆑
## About The Pull Request
Since #87866 PostTransfer now has it's parent set to nil, and instead
has a `datum/new_parent` argument supplied to it.
Why does the ***post*** transfer proc not have it's parent set yet? Not
sure, but some procs (and the documentation) haven't been adjusted yet
and this PR fixes that
also:
fixes#88156fixes#88325
## Why It's Good For The Game
Fix man good...
## Changelog
🆑
fix: /datum/component/PostTransfer() procs that didn't have their
new_parent arguments have now been fixed
fix: This means that turning into a Domain gondola shouldn't RR people
anymore
/🆑
## About The Pull Request
This PR improves our jetpacks in 2 major ways: partially decoupling them
and intentional space movement from SSnewphys, and implementing
consistent pushoff speeds.
Currently jetpacks work by applying constant newtonian force whenever an
input key is held down by a client and stabilizing the movement every
time they get processed by SSnewphys which is an SS_TICKER subsystem,
which means that it attempts to fire prior to everything else and has a
wait of a single tick. This would be fine if we could guarantee that
there isn't another SS_TICKER subsystem with a higher priority that
constantly overtimes... oh right, that'd be the most important subsystem
of SSinput.
Newtonian impulses, both when starting a drift and when applying
continious force rely on SSnewphys to fire the loop, which can end up
not happening due to overtime in input (and is a frequent issue on
highpop). To circumvent this, newtonian impulses now forcefully fire
their drift loop regardless of SSnewphys, thus ensuring that the
movement always happens in the tick it was called (If you ask something
to move with an ``instant`` flag you'd expect it to move the same tick).
Second issue stems from the fact that jetpacks try to move you at your
movement speed, except when pushing you off objects they hijack normal
movement code that would've ran, resulting in a single tile of slow,
janky movement (Or, when moving along walls, making the controls feel
"sticky" and worse than what you'd have without a jetpack in the first
place). By forcefully applying enough force to make players move at
expected speeds, we can solve that issue.
Third issue stems from a minor mistake in SSnewphys processing order -
process() on jetpacks ran **after** moveloops have fired, so all
stabilization only applied next tick. I swapped fire orders around which
solves this problem too, although it won't be triggering much as
stabilization would now forcefully fire the related loop by itself.
https://github.com/user-attachments/assets/1068f68b-2cd1-49b0-bff0-1f79ed0aed5a
Also I've refactored wings to be jetpacks since they behave exactly the
same, which is a bit cursed if you think about it.
## Why It's Good For The Game
Jetpack movement is highly inconsistent in speed/smoothness, janky and
gets ruined by even a slightest amount of overtime in subsystems above
it - this should solve all of those issues.
## Changelog
🆑
qol: Jetpacks are significantly smoother and nicer to use now - and not
affected by lag anymore!
code: Cleaned up spacemove/jetpack code a bit and moved some common code
to helpers.
refactor: Wings are now... jetpacks. They behave exactly the same and
this should reduce the amount of copypaste code in spacemove
significantly.
/🆑
## About The Pull Request
Technically an improved port of
https://github.com/DaedalusDock/daedalusdock/pull/651, instead of only
storing height over 32 pixels for HUDs we store both pure height and
width for the sake of cutting down on icon operation spam (which is
pretty costly). Should save us a significant amount of time, cuts down
update_health_hud times by 45% and total update_health by 30% which is
pretty good for a somewhat hot proc.
## Why It's Good For The Game
Our health HUDs constantly fetch icons ***twice*** every update_health,
jesus.
## Changelog
🆑 SmArtKar, Kapu
code: Implemented caching for icon sizes which should significantly
improve mob health performance due to HUDs constantly fetching icons
/🆑
## About The Pull Request
ok idk how to structure this but
basically the crafter (assembling machine) crafts stuff on top of it now
again items created by the crafter are tracked and will be attempted to
sent forward at once everytime it processes or crafts
this means junk shells and lizard boot recipes work
additionally, you can no longer have it craft initially anchored
objects. this was already a thing the check just never worked
also fixed some dumb define stuff and i made it call recipe completion
## Why It's Good For The Game
fixes#87876
the MANUFACTURING_FAIL_FULL define was basically just useless and if
statements thinks its a true value which makes certain things harder to
read
pockets defines got left in by accident because i tried to rework it at
some point (spoiler: did not work)
## Changelog
🆑
fix: manufacturing assembling machine crafts junk shells and lizard
boots properly, may no longer craft anchored objects (broken check), and
sends its crafted stuff at once
/🆑
## About The Pull Request
this PR does 2 things, firstly it allows u to directly feed animals from
ur hand instead of having to drop it on the floor and relying on their
AI to go eat it. So you can now directly feed ore to raptors or wheat to
cows by simply clicking on them with the item. secondly, it links the
tameable component and the eating element together, as now the former
relies on signals sent by the latter.
## Why It's Good For The Game
Small QOL for pet owners when it comes to feeding their animals.
## Changelog
🆑
qol: u can now directly feed animals from ur hands, like raptors or
cats, by clicking on them with their preferred food.
balance: u can now heal ur raptors mid or post battles by hand feeding
them ores
/🆑
Closes#88283
Closes https://github.com/tgstation/tgstation/issues/88320
Fixes a harddel caused by the limp status effect not being properly
deleted
Reduces update-body calls in:
- Initialize from 4 to 1
- On z-level change from 2 to 1
- On move with bloody shoes from 1 to 0
Mostly by just passing along the proper argument and removing seemingly
unnecessary update body calls
## About The Pull Request
repairbots now gain the ability to deconstruct when hacked by an AI. ive
also updated their crafting menu requirements and they now drop their
toolboxes when they're destroyed
## Why It's Good For The Game
closes#88336
## Changelog
🆑
fix: repairbots now gain their destructive abilities when hacked by an
AI
fix: repairbot crafting recipes have been updated
/🆑
## About The Pull Request
More small fixes to stuff that I broke while working and reworking on
aquariums.
## Why It's Good For The Game
Safe mode is now safe mode. Fish are not bottomless pits.
## About The Pull Request
Looks through calls to `receive_damage` and replaces them with calls to
`apply_damage`
`receive_damage` is a gross to use internal proc that doesn't take into
account physiology (damage modifiers) or even update the mob's sprite
when taking damage
It should be avoided many uses - `apply_damage`, in fact, can take a
bodypart as a target, and is overall a lot easier and more ergonomic to
use.
"So what are valid uses of it?"
- Apply damage itself, and similar direct-damage procs
- Ensuring you deal an exact amount of damage to a bodypart
- Damaging a limb with no owner
## Changelog
🆑 Melbert
refactor: A ton of things now use the more correct method of applying
damage to you. Which means they will correctly factor in damage
modifiers and are less likely to break your sprite. Some examples
include embedded objects jostling around, chiropractice, and tackling a
wall. Report any oddities, such as extreme damage or bodyparts being
wrongly affected.
fix: Having acid splashed on your face may now disfigure you and make
you bald, as it once did three years ago.
fix: Itchy heretic trauma now better checks if the bodypart is covered
or not before determining if you should itch.
fix: "Repair Puncture" logs no longer mistakenly report you are
"Incising burned flesh"
/🆑
## About The Pull Request
Not adding a limit on how many you can have attached at once was a
mistake. MODsuits can only attach one tether at a time and they're
*slightly* slower to cut. You still can attach yourself to more than one
anchor manually (or mob via embedding), but this prevents you from being
attached to more than one machine/structure at a time. Tether anchors
now also only support one link at most.
Tethers no longer require you to click on a specific tile and have a
couple of transparent pixels to the side to make them easier to cut in a
hurry.
Closes#88057
## Why It's Good For The Game


## Changelog
🆑
fix: You cannot have more than one MODtether (excluding manual
connections)
qol: Tethers are easier to cut (require less pixelhunting)
/🆑
## About The Pull Request
Aquarium kits can now be printed from service, cargo, science
protolathes and the autolathe too, from half a sheet of metal. You still
need the other materials to set it up but it should be fairy simple if
you can access a proto/autolathe.
The 'Growth/Reproduction' setting for aquariums has been renamed to
"Safe Mode", which, on top of disabling features such as growth,
reproduction, evolution, power generation etc etc, will also disable the
water, temperature and food requirements for keeping the fish alive.
Useful if you want a purely ornamental aquarium or you have to skidaddle
somewhere else for a while.
The lawyer, as well as prefilled aquariums start with 'Safe Mode'
enabled.
The 'Aggressive' fish trait has been replaced with 'Territorial', which
is exactly the same but the fish won't lash out unless the aquarium is
populated by five fishes or more. No more angelfish viciously attacking
the guppy and goldfish in prefilled aquariums.
Tweaked a couple values around hunger and fish health loss when starving
or in a bad environment to cause slightly less damage.
Lastly, added screentips to the aquarium component, which is something
I've forgot to do in the PR that brought it.
## Why It's Good For The Game
Aquariums may be a complex feature, but as far as I can tell, I had been
neglecting the possibility of aquariums as simple room decoration for a
while (outside of the beauty-related mechanics), and the constant
maintenance (and perhaps a bit of knowhow) they require makes them awful
at that. Also, the "growth/reproduction" setting really didn't have a
reason to be before, since it didn't offer any tangible benifit to turn
it off, so I had to revamped it.
Also it's been proven by now that keeping aquariums as cargo-orderable
stuff is just bad.
As for the fish trait change, it just sucks to see the angelfish shank
the goldfish with no way to solve it other than removing the
hyper-aggressive killer fish from san diego fella.
## Changelog
🆑
balance: Aquarium kits can now be printed from cargo, service, science
protolathes as well as the autolathe. They no longer have to be ordered
from cargo.
balance: Revamped the "Growth/Reproduction" setting for aquarium to
"Safe Mode", which also disables the food, temperature and water
requiremenets of aquariums, making it useful for purely decorative
aquariums.
balance: Replaced the "Aggressive" fish trait with "Territorial". No
more angelfish shanking the goldfish and guppy in prefilled aquariums
with less than 5 fishes.
qol: Added screentips to aquariums.
/🆑
## About The Pull Request
You can now fish from aquariums if you wish to. This includes some
backend changes to make it possible for the fish table from
get_fish_table() to contain instances, and all that it entails up to
spawn_reward(), which is a requirement for the gimmick to respect the
various traits and other variables of the already instantiated fish
rather than read from cached properties.
## Why It's Good For The Game
The fish progress score/index had only little nasty flaw that has been
nagging me since day one: Not all fish species can be caught. Skipping
McGill, which is a peculiar case that for cheevo purposes should be
considered a standard goldfish, there is the one, unsignificant yet rare
purple sludgefish which can only be gotten as a rare evolution of the
generic sludgefish. Talk about petty, but this may be a long-term nit I
prefer to handle right now.
Also why not? The 'unmarine mastodon' is near impossible to get unless
you somehow find a oil well which is locked behind a specific ruin.
## Changelog
🆑
fix: Aquariums are now potential fishing spots.
/🆑
## About The Pull Request
You can now wear a hat on any modsuit, even w/o the stabilizing module.
However:
- It will always sit slightly askew, at an angle.
- Involuntarily falling to the ground for any reason will cause the hat
to fall to the ground.
- Being thrown, slapped, or slipped will send it flying off.
Added the Atrocinator, Hat Stabilizer, and Tanning modules to the black
market.
Added the loose hat component to bio/bomb/rad hoods and space helmets.
## Why It's Good For The Game
> You can now wear a hat on any modsuit, even w/o the stabilizing
module.
I think the notion of, say, the Head of Security putting his cap on his
modsuit and then being slipped by the clown, who then steals the cap, is
really funny.
https://github.com/user-attachments/assets/3ad8a74d-0cb8-4118-8beb-d2ce9c76b358
The module is fairly rare and sometimes I just want to wear a silly hat
alongside the modsuit without badgering the captain for his hat module.
The downsides are rather plentiful so it's not like the hat module is
made irrelevant - if anything it makes it more notable.
This will add a bunch of enjoyable silliness to rounds, so I think it's
worth it.
> Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.
> Added the loose hat component to bio/bomb/rad hoods and space helmets.
It sucks losing your iconic drip when you need to venture out to space
for whichever reason - this lets you keep it without taking up space in
your bag, while having the throw downside.
They just feel perfect for the vibes of the black market. More
miscellaneous completely useless fancy stuff that has exorbitant prices
please!
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
add: You can now wear a hat on any modsuit, even w/o the stabilizing
module. But it may easily fall off...
add: Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.
add: Added the loose hat component to bio/bomb/rad hoods and space
helmets.
/🆑
~~I'm having a bit of an issue. Somewhere I fugged up and now the worn
overlay on the mod helmet sprite doesn't work properly...~~ Turns out
that code was never used and nonfunctional to begin with so I removed it
entirely yay
## About The Pull Request
A new item for 2 TC has been added to the chef's traitor uplink –
Molt'Obeso sauce!
Buying it, you get a bottle for 50 units, filled with this sauce. After
eating Molt'Obese, you'll think you're still hungry. It also removes the
limit on how much food you can eat, so you can just keep going and
going, but you never get full. Plus, Molt'Obeso helps your body absorb
more nutrients from food, so the food is even more nourishing with it.
## Why It's Good For The Game
The Syndicate sabotages the NT station by making everyone fat?
## Changelog
🆑
add: Add a new item to the chef traitor's uplink: Molt'Obeso sauce. A
sauce that makes people want to eat too much.
/🆑