## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.
## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.
Currently a WIP as I slowly deal with the unit test reports.
## Changelog
🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
## About The Pull Request
Physical experiments don't call `unregister_events()` on completion like
normal experiments do, due to how they're finished. This led to the
arcade experiment never unregistering its victory signal and completing
over and over again. This pr unregisters the arcade's signal upon
completion, preventing this spam.
This also applies the same fix to the `meat_wall_explosion` experiment,
which isn't doable because it isn't referenced anywhere(anybody know
what's up with that? seems like a neat experiment), but it'd also have
not unregistered its signal upon completion.
## Why It's Good For The Game
fixes#94174
## Changelog
🆑
fix: Video game winning experiment no longer completes over and over
/🆑
## About The Pull Request
Played around with fishing and aquariums the other day. While it has
come a long way, aquariums are still a pain in the ass in many ways and
there are still things that don't work as intended as well as some pet
peeves. This PR:
- removes code that didn't work to begin with (rotating the fish when
mounted on for fish trophy wallmounts)
- fixes the predator and necrophage traits triggering when the fish is
NOT hungry and on fishes that are bigger than the not-so-hungry fish,
rather than smaller.
- Add an examine line to fish tanks when full.
- Fixes evolution probability for self-reproducing fishes (purple
sludgefish should be 1 in 20, not 1 in 40)
- Fixes fish analyzers not being usable on equipped/held items.
- Nit with examine lines for fishing rods.
- Experiments handler devices won't announce when an experiment that
they cannot perform is completed. The big exception is the generic
experi-scanner. This means fish analyzers and operating computers will
no longer bug you about material scan experiments being completed.
- the ping sound from using lures should be a smidge louder and can be
heard from more than 1 tile away.
## Why It's Good For The Game
Issues with fishing and aquariums mainly, also a smidge of a code
improvement for experiment handlers.
## Changelog
🆑
fix: Fixed some fishes trying to eat other (bigger) fish while not
hungry. Also a nit with purple sludgefish being a bit too rare.
fix: Fixes fish analyzers not working with held or equipped fish or
aquariums (not in your backpack).
balance: Fish analyzers and operating computers no longer announce
completed experiments that they aren't compatible with.
balance: the ping sound from using fishing lures should be a smidge
louder and can be heard from more than 1 tile away.
qol: Examining fish tanks (the item) when they're almost full will warn
you about it.
/🆑
## About The Pull Request
Previously, the arcade game win experiment succeeded upon the machine
calling `prizevend()`, meaning the experiment completed upon tickets
being inserted into the machine, counter to the experiment's text. This
pr changes the experiment to succeed upon the machine calling the new
`victory_tickets()`, which has replaced each instance of a won game
dispensing tickets.
## Why It's Good For The Game
fixes#80218
Standardized ticket dispensing
## Changelog
🆑
fix: Arcade machine experiment now succeeds on output rather than input
of tickets
/🆑
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
## Changelog
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
adds snails to the game

these are harmless critters you can find in maints. they love eating all
variety of fruits, and are gravitated towards snail people, where
they'll dance around them.
you can also pick them up and put them on your head.
finally, you can also grab them and put them in hydrotrays (they will
swim around in it very slowly). they'll help ur plants grow as they act
as natural weed-repellants, as they'll eat weeds that grow in trays.

## Why It's Good For The Game
there's not that many mobs you can usually find in maints, currently
there's only mice and cockroaches, this helps expand the pools a bit.
## Changelog
🆑
add: adds snails to the game. (keep them away from salt!)
/🆑
## About The Pull Request
adds snails to the game

these are harmless critters you can find in maints. they love eating all
variety of fruits, and are gravitated towards snail people, where
they'll dance around them.
you can also pick them up and put them on your head.
finally, you can also grab them and put them in hydrotrays (they will
swim around in it very slowly). they'll help ur plants grow as they act
as natural weed-repellants, as they'll eat weeds that grow in trays.

## Why It's Good For The Game
there's not that many mobs you can usually find in maints, currently
there's only mice and cockroaches, this helps expand the pools a bit.
## Changelog
🆑
add: adds snails to the game. (keep them away from salt!)
/🆑
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
Improving old code. And I want to be able to pet mobroaches while
holding them too.
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.
## Changelog
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
Fishing UI has received a major glowup:
https://github.com/user-attachments/assets/e255822c-9c2c-4e09-843d-20ea70f470f5
All fishing rods now have unique frames (with material rods' frames'
colors being based on their material), and most fishing sources now have
unique backgrounds. Completion bar now uses alpha filters, making it
much smoother, and bait bar is assembled from thin lines, which allows
us to avoid stretching it when we need to resize the bar.
Fixed experiments not unlinking after being completed, resulting in
infinitely stacking examine lines on advanced fishing rods.
Fish death messages now use more fitting span_warning.
Removed devious SS_POST_FIRE_TIMING from the fishing SS, as it made
sometimes the fishing SS only fire every ***two*** ticks instead of
every tick, despite passing 0.05s (1 tick) into its process() calls -
this flag only makes sense on heavy and costly subsystems, not on a
subsystem dedicated mostly to fishing minigames. This is required as now
instead of directly assigning coordinates (why???) fishing UI uses
animate() to control the bait bar and fish icons, making it much
smoother.
Also gave blue dough its own bait overlay and mansus rift its own portal
icon because why not.
## Why It's Good For The Game
Fishing UI didn't look very nice, and removing the subsystem flag makes
the game smoother.
## Changelog
🆑
qol: Fishing minigame should be smoother now
fix: Fixed infinitely stacking examine lines on advanced fishing rods
image: Resprited fishing UI
image: Blue doughballs now have their own fishing rod overlay
image: Resprited mansus rift fishing portal overlay
/🆑
* Death of mutant bodyparts AND external organs (#85137)
Removes mutant bodyparts and external organs from the game completely
Digitgrade behaviour was mutant bodypart for no reason
Cat ears now work with the bodyparts overlay system, same as all the
other external organs (since all their behaviour is now just on /organ
It doesn't remove all the /external types, but moves all behaviour to
/organ. I'll follow up with a PR wiping all the /external organ types,
but it's just conflict heaven so not this PR
I've also streamlined a lot of duplicate/weird species regeneration code
Melbert did the same PR as well but due to a lack of time (?) I have
absorbed his PR to double nuke mutant bodyparts
Frees us from the chain of unmodular code, and kills my greatest nemesis
(after the shuttle meteor murder bug)
🆑 Time-Green and MrMelbert
Refactor: External organ behaviour has been moved to /organ, ears now
use the same system as the other organs
Refactor: Mutant bodyparts are dead! This likely does not mean much to
the average person but it's very dear to me
code: Improves digitgrade handling in preference code
/🆑
I have absorbed #85126, using Melberts code to improve and add some
missing changes. Mainly improving the functioning of preferences and
digitgrade legs. I didn't take over the hairstyle improvements.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes missing felinid ear preference (#86553)
Closes#86452🆑
fix: Fixed missing felinid ear preference
/🆑
* Spelling Fixes (#86056)
Fixes several errors to spelling, grammar, and punctuation.
Improves readability and user experience.
🆑
spellcheck: fixed a few typos
/🆑
* Fix plasmamen having all feature preferences (#86682)
Fixes#86622
Plasmamen relevant_external_organ is null, and it then checks if
relevant_external_organ is in a list containing nulls
I cleared the nulls from get_mut_organs to fix it
🆑
fix: Fixes plasmamen having all external organ species preferences
/🆑
* Fixes cat ear layering, makes getFlatIcon account for RESET_COLOR on under/overlays (#86757)
After the external organ removal pr, cat ears stopped being as weirdly
specialcased, and instead just used a `/datum/bodypart_overlay/mutant`
subtype. However, this was set up in a way where the inner ears were put
on a different layer from the outer ears, leading to wonky layering.
In this pr, we revert their layers and instead apply the inner ears as
an overlay onto the base ears, fixing this.
Thank you Melbert for the idea. o7
Additionally, as this pr tripped the screenshot tests, makes the
`getFlatIcon(...)` proc account for `RESET_COLOR` on under/overlays.
We do this by making it stop applying the colour after merging all the
under/overlays, and instead apply it and the parent color _before_
merging any under/overlays, while proxying the parent color as a new
parameter `parentcolor` to any new `getFlatIcon(...)` calls.
This coincidentally also fixes usage of `getFlatIcon(...)` on husked
bodies, as those also used `RESET_COLOR` for their blood overlay. The
screenshot tests had to be updated for this.
Fixes#86453.
🆑
fix: Fixed cat ears not layering properly.
fix: Husked bodies show their blood with the right colours in
photographs.
/🆑
* Automatic changelog for PR #86757 [ci skip]
* Fish infusion (#87030)
I'm adding a new infusion ~~(actually four, but two of them are just
holders for specific organs tied to a couple fish traits)~~ to the game.
As the title says, it's about fish.
The infusion is composed of three primary organs, plus another few that
can be gotten from fish with specific traits.
The primary organs are:
- Gills (lungs): Instead of breathing oxygen, you now need to stay wet
or breathe water vapor.
- fish-DNA infused stomach: Can safely eat raw fish.
- fish tail: On its own, it only speeds you up on water turfs, but it
has another effect once past the organ set threshold. It also makes you
waddle and flop like a fish while crawling (I still gotta finish sprites
on this one)
Other organs are:
- semi-aquatic lungs: A subtype of gills from fish with the 'amphibious'
trait, falls back on oxygen if there's no water. Can also be gotten from
frogs, axolotl and crabs.
- fish-DNA infused liver: From fish with the 'toxic' trait. Uses
tetrodotoxin as a healing chem instead of a toxin. Also better tolerance
to alcohol if you want to drink like a fish (ba dum tsh).
- inky tongue: From fish with the 'ink production' trait. Gives mobs the
ability to spit ink on a cooldown, blinding and confusion foes
temporarily.
The main gimmick of this infusion revolves around being drenched in
water to benefit from it, In the case you get the gills organ, this also
becomes a necessity, to not suffocate to death (alternatively, you can
breathe water vapor, without any benefit). To enable the bonus of the
organs set, three organs need to be infused. They can be gills, stomach,
tail and/or liver, while the inky tongue doesn't count towards it.
Once the threshold is reached, the following bonus are enabled:
- Wetness decays a lot slower and resists fire a bit more.
- Ink spit becomes stronger, allowing it to very briefly knock down
foes.
- Fishing bonuses and experience
- Resistance to high pressures
- Slightly expanded FOV
- drinking water and showers mildly heal you over time.
- for felinids: You won't hate getting sprayed by water or taking a
shower.
- While wet:
- - If the fish tail is implanted, crawling speed is boosted.
- - You no longer slip on wet tiles.
- - You also become slippery when lying on the floor.
- - You get a very mild damage resistance and passive stamina
regeneration, and cool down faster.
- - You resist grabs better.
- - get a very weak positive moodlet.
- However, being dry will make you quite squisher, especially against
fire damage, slower and give you a modest negative moodlet.
While working on it, I've also noticed a few things that explained why
tetrodotoxin (TTX) did jackshit at low doses, because livers have a set
toxin tolerance value, below which, any amount of toxin does nothing.
Also I've felt like reagents like multiver & co were a bit too strong
against a reagent that's supposed to work at very low doses, with slow
metabolization, so I've added a couple variables to buff TTX a bit,
making it harder to purge and resistant to liver toxin tolerance (also
added a bit of lungs damage).
I wanted to take a shot at coding a DNA infusion and see how chock-full
I could make it. DNA infusions are like a middle point between "aha,
small visual trinket" and organs with generally ok effects. I seek to
make something a bit more complex ~~(also tied to fishing ofc because
that's more or less the recurrent gag of my recent features)~~ primaly
focused around the unique theme of being strong when wet and weaker when
dry.
EDIT: The PR is now ready, have a set of screenshots of the (fairly mid)
fish tails (and gills, barely visible) on randomly generated spessman
and one consistent joe:

🆑
add: Added a new infusion to the game: Fish. Its main gimmick revolves
around being stronger and slippery when wet while weaker when dry.
balance: Buffed tetrodotoxin a little against liver tolerance and
purging reagents.
/🆑
* Eye wounds, scars and a new ~Pirate~ RP quirk (#87209)
Upon getting stabbed in your eyes or having a bullet fly through your
head there's a chance (minor for stabbing, extremely low for headshots)
you'll receive a new "Eye Puncture" wound which causes profuse bleeding
out of your now-empty eye hole. Once healed you'll have to deal with a
scar on your eye which cannot be cured and requires surgical
replacement. Eye scarring will reduce your eyes' max health by 15, give
you a minor screen tint and a fancy visual on your character sprite.
Getting scarring on both eyes will turn you completely blind.

This PR also introduces a new quirk which gives you eye scarring on the
eye of your choice and an eyepatch to go alongside it, just make sure
that it sits on the right eye.
Also added medical(white) subtype of eyepatches to loadout for those who
want that version instead. Credits to AnturK on discord for the idea.
Its a neat lil' feature that makes the game more immersive, and unlocks
more roleplay opportunities for players. New quirk gives access to this
feature for players who want to make it a part of their character's
backstory (or maybe as a part of permanent scar roleplaying).
🆑
add: Getting stabbed or shot in the eyes has a chance of giving you a
new wound and a semi-permanent scar, blinding you on one side
add: Added new "Scarred Eye" quirk which blinds you on one eye but gives
you a fancy eyepatch
add: Medical eyepatches have been added to loadout
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
* Resprited tails from fish infusion. (#87298)
Back when I made #87030 I got a bit lazy when it came to spriting the
fish tails and just ported a few ones from furry servers and made them
inherit the hair color. Let me tell you, those sprites kinda look bad,
and the fact that they've the same colors of hair is kinda... fuzzy, and
doesn't sit well with me, like some hairball stuck in a cat's throat.
So I took upon myself to actually make them better (and also give gill
overlays a couple extra pixels), at the cost of some of my free time and
their wagginess, because fuuuuuck wagging animations for anything that
isn't a somewhat amorphous fluffy tail. Fish don't wag their tail.
They also get one of several blue/grey tints if the owner of the part
doesn't have a peculiar skin tone like lizards or ethereals or moffs.
Anyway, comparison time:
OLD:

NEW:

Both from byond screenshots but I cut and pasted them in paint instead
of asesprite because old habits die hard.
Better sprites. Perhaps the selection of blues could be improved a bit
idk.
🆑
image: resprited fish tails from fish infusion.
/🆑
* Makes the game compile, first.
* Removes a duplicate loadout entry added by /tg/ (to avoid people's loadouts getting messed up)
* Fixed an issue with on_mob_insert() for /datum/bodypart_overlay/mutant
* Fixed an issue with the burn datum of the moth wings bodypart_overlay
* Fixing digitigrade legs not behaving as they should be
* A bunch of Insert->mob_insert and Remove->mob_remove
* Okay, now stuff gets colored properly
Also ears work properly too!
Only thing is that mutant organs on the preferences dummy don't seem to change between character, at least for most of them, which is really annoying.
* Properly returns ears to being internal organs
* Makes it so preferences can use relevant_mutant_bodyparts again!
* Makes organs properly update when changing species
* Markings now get removed when they don't need to be there on a limb
* Fully renives update_mutant_bodyparts(), as it was basically just update_body_parts() anyway at this point
* fix charging implant
* Restores the usage of simple bodypart_overlay for the sensory_enhancer and the hackerman_deck, as that was otherwise causing a bunch of runtimes
* Returns legs to being a sprite accessory, just for simplicity's sake (I don't want to have to refactor it on our end again)
* Fixes xenos not getting their mutant organs because I accidentally nulled the list for no reason 💀
* Makes it so certain organs (in this case, ears) can't be replaced when changing visual preferences, meaning Tesharis/Synths/Slimepeople will get their respective ears, regardless of what visuals they choose for them
* Fixes a small mistake with spines in the code
* Adds some mutant_bodyparts for the results of the infuser unit test. This might be a hack, but we'll cross that bridge when we get to it in the future.
* Adds a "None" option to tail_spines
* Allows ears to not constantly runtime because they don't have an accessory_name sometimes, which is a sad consequence of many species not setting their ear sprite sometimes
* Should fix CI, hopefully should be the last thing needed for this to work flawlessly from now on (crossing fingers)
* This ACTUALLY fixes the changeling transform and transform sting! Hurray!
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: klorpa <30924131+klorpa@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: Fluffles <piecopresident@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.
### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.
<details>
<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>
Before:
https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e
After:
https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915
</details>
<details>
<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>
Before:
https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348
After:
https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238
</details>
### But how will this affect the ~~trout population~~ gameplay?
Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.
This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.
Closes#71822Closes#78547Closes#78871Closes#83901Closes#87802Closes#88073
## Why It's Good For The Game
Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.
Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.
## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.
This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).
And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.
## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.
Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.
Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

## Changelog
🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
3591 individual conflicts
Update build.js
Update install_node.sh
Update byond.js
oh my fucking god
hat
slow
huh
holy shit
we all fall down
2 more I missed
2900 individual conflicts
2700 Individual conflicts
replaces yarn file with tg version, bumping us down to 2200-ish
Down to 2000 individual conflicts
140 down
mmm
aaaaaaaaaaaaaaaaaaa
not yt
575
soon
900 individual conflicts
600 individual conflicts, 121 file conflicts
im not okay
160 across 19 files
29 in 4 files
0 conflicts, compiletime fix time
some minor incap stuff
missed ticks
weird dupe definition stuff
missed ticks 2
incap fixes
undefs and pie fix
Radio update and some extra minor stuff
returns a single override
no more dupe definitions, 175 compiletime errors
Unticked file fix
sound and emote stuff
honk and more radio stuff
## About The Pull Request
This more or less ties with my previous PR where I fix some of the
issues I've seen with fishing, because both are the result of some live
playtesting in which I assessed some flaws and nits. So, let's get
started:
Lowered the number of fish to scan for each fish scanning experiment:
This is the most time-gating feature of fishing. As a scientist you're
usually better off doing anything else than this anyway, which is
understandable, but for whoever else that plans to get some nice ocean
fish, this is going to be a huge bummer. From 4, 8, 14, 21 to 3, 7, 11,
17.
Switched the ocean and chasm portal setting: Right now, the ocean portal
has the largest amount of catchable creatures, which can also help
progress the experiments, while the chasm setting only has two and is
only mildly useful for chasm chrabs --> lobstrosities (which suffer a
bit from not having a good enough AI right now). I hope I'll have the
time to add some late fishes to the chasm setting at some point.
Added a premapped fishing portal generator to the common service room of
every map: It takes quite some time to setup fishing. Making a fishing
portal is by far what I consider to be the most tedious part. Also Wawa
and Birdshot were also missing the aquarium kit. On a side-note I
realized some days ago that service jobs receive very good discounts on
the fishing items sold by the good clean vendor.
Added the fish puns speech modifier to fish-infused gills: I forgot to
do it when I made the PR. Shrimple as that.
Mild fish infusion tweaks: Lowered the crawling speed very sightly, but
buffed showers and water healing slightly. Drinking water now wets you
by about 1/4 of what splashing it would do.
Buffed fishing difficulty modifiers for items and chairs a little: For
the time and credits invested, buying a carp costume or whatever to be
slightly better at fishing doesn't seem that profitable, and I reckon I
was being a bit conservative with the values. Fishing is a considerable
time investment already, especially in the initial stage with the setup.
Also idk why sunglasses and thermals buff fishing while fish are
technically cold-blooded creatures so I removed the comp from them.
Added fishing rods and fish cases designs to cargo and science lathes:
Other base fishing designs are shared between the three departments,
while these two are only available for service (and autolathes
obviously).
Fishing skill now affects completion gain and not only completion loss:
Fishing as a feature has a slower pace than most things in the game. It
feels right that by the time you reach about legendary level, you get to
complete the minigame a bit faster.
## Why It's Good For The Game
To put it briefly, the feature feels right as a casual experience,
however time is very much against you and getting something done takes
some effort (especially on tram, where moving to and fro' departments is
almost like playing froggers at times)
## Changelog
🆑
map: Added a premapped fishing portal generator to every map.
balance: Lowered the requirements for fish scanning experiment. Swapped
the rewards of the second and third experiments.
balance: Buffed fishing difficulty modifiers for several items and
chairs.
balance: Fishing skill now affects completion speed of the minigame more
actively.
balance: Mild fish infusion tweaks. Crawling is a smidge slower, but
healing from showers and drank water is a bit better.
qol: Fishing rods and fish cases can now be printed by cargo and science
lathes.
add: Gills now give the fish puns speech modifier.
/🆑
## About The Pull Request
<details>
- renamed ai folder to announcer
-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer
- separated the ambience folder into ambience and instrumental
-- ambience --
- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it
-- instrumental --
- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)
-- items --
- moved secdeath to hailer
- moved surgery to handling
-- effects --
- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects
-- vehicles --
- moved mecha into vehicles
created mobs folder
-- mobs --
- moved creatures folder into mobs
- moved voice into mobs
renamed creatures to non-humanoids
renamed voice to humanoids
-- non-humanoids--
created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg
-- humanoids --
-- misc --
moved ghostwhisper to misc
moved insane_low_laugh to misc
I give up trying to document this.
</details>
- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc
- [X] mobs
- [X] runtime
- [X] vehicles
- [ ] attributions
## Why It's Good For The Game
This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.
## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
## About The Pull Request
this is a very marginal code improvement to fish. One bitfield is better
than a bunch of booleans, and it lets me add more TRUE/FALSE settings in
the future without having to make new vars for it.
Also VV support for several vars (fish_traits will have to wait), if me
or someone else wants to var-edit fish for testing purposes or whatsnot.
## Why It's Good For The Game
Slight code improvement and var-edititing support.
## Changelog
N/A
## About The Pull Request
I've come to realize manually updating all fishing stuff on the very
much outdated wiki would be a colossal pain in the rear, so I've decided
to automate a few bits to generate autowiki lists containing information
about fish, fish traits, bait, hooks, reels, fishng rods, fish sources
and fish experiments.
Now tested.
## Why It's Good For The Game
Making a huge autowiki for a feature that's being constantly updated (by
me) but still has a particularly lame and outdated page on the wiki.
## Changelog
N/A
## About The Pull Request
Removes mutant bodyparts and external organs from the game completely
Digitgrade behaviour was mutant bodypart for no reason
Cat ears now work with the bodyparts overlay system, same as all the
other external organs (since all their behaviour is now just on /organ
It doesn't remove all the /external types, but moves all behaviour to
/organ. I'll follow up with a PR wiping all the /external organ types,
but it's just conflict heaven so not this PR
I've also streamlined a lot of duplicate/weird species regeneration code
Melbert did the same PR as well but due to a lack of time (?) I have
absorbed his PR to double nuke mutant bodyparts
## Why It's Good For The Game
Frees us from the chain of unmodular code, and kills my greatest nemesis
(after the shuttle meteor murder bug)
## Changelog
🆑 Time-Green and MrMelbert
Refactor: External organ behaviour has been moved to /organ, ears now
use the same system as the other organs
Refactor: Mutant bodyparts are dead! This likely does not mean much to
the average person but it's very dear to me
code: Improves digitgrade handling in preference code
/🆑
I have absorbed #85126, using Melberts code to improve and add some
missing changes. Mainly improving the functioning of preferences and
digitgrade legs. I didn't take over the hairstyle improvements.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Currently to check for Silicon access, we do:
``if is silicon or is admin ghost or has unlimited silicon privileges or
has machine remote in hand``
What has unlimited silicon privileges? Bots, Drones, and admin ghosts.
To check for AI access, it just checks for AI instead of silicon, and
doesnt check for unlimited silicon privileges.
This was kinda silly, so I thought I should make this a little easier to
understand.
Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or
``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost,
since now instead of being a var on the client, we moved it to using the
same trait but giving it to the client instead, but since we have to
keep parity with previous functionality (admins can spawn in and not
have this on, it only works while as a ghost), I kept previous checks as
well.
No more type checks, removes a silly var on the mob level and another on
the client.
Now while I was doing this, I found a lot of tgui's ``ui_act`` still
uses ``usr`` and the wrong args, so I fixed those wherever I saw them,
and used a mass replace for the args.
Other changes:
- machinery's ``ui_act`` from
https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced
with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin
ghosts no longer get kicked off things not on cameras. This was my
fault, I overlooked this when adding Human AI.
- Human AI's wand gives AI control as long as it's in your hand, you can
swap to your offhand. I hope this doesn't end up going horribly,
otherwise I'll revert this part. It should let human AIs not have their
UI closed on them when swapping to eat food or use their door wand or
whatnot.
- Bots previously had special checks to scan reagents and be
unobservant, I replaced this with giving them the trait. I also fixed an
instance of unobservant not being used, so now statues don't affect the
basic creature, whatever that is.
## Why It's Good For The Game
This is an easier to understand way of handling silicon access and makes
these mobs more consistent between eachother.
Other than what I've mentioned above, this should have no impact on
gameplay itself.
## Changelog
🆑
fix: Statues don't count as eyes to creatures.
fix: Human AIs and Admin ghosts no longer get kicked off of machines
that aren't on cameranets.
/🆑
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
* Fixes Exosuit Stress Failure not working (#84776)
## About The Pull Request
Closes#84762
It was missing total_requirement which defaulted to 0 and made it not
generate properly.
## Changelog
🆑
fix: Exosuit Stress Failure experiment now works
/🆑
* Fixes Exosuit Stress Failure not working
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
## About The Pull Request
Closes#84762
It was missing total_requirement which defaulted to 0 and made it not
generate properly.
## Changelog
🆑
fix: Exosuit Stress Failure experiment now works
/🆑
* Adjusts medical techweb nodes (#84706)
## About The Pull Request
Swaps 'advanced medbay equipment' and 'cryostasis' on the medbay tech
tree, adjusting the required experiments and prerequisites as necessary.
## Why It's Good For The Game
Items like health analyzers, pinpointers, defibs and medical beds are
lower tech, commonly used items and should come before advanced cryo
technology, not the other way around.
## Changelog
🆑 LT3
balance: Advanced Medbay Equipment research node lowered to tier 3
balance: Advanced Medbay Equipment now requires haloperidol scan
experiment
balance: Haloperidol and cryostylane experiments can be performed
roundstart
balance: Cryostasis research node raised to tier 4
balance: Cryostasis now has Fusion instead of Controlled Plasma as a
prerequisite
balance: Cryostasis cryostylane scan is now a discount experiment
balance: Crystallizer moved from Controlled Plasma to Fusion
/🆑
* Adjusts medical techweb nodes
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
## About The Pull Request
Swaps 'advanced medbay equipment' and 'cryostasis' on the medbay tech
tree, adjusting the required experiments and prerequisites as necessary.
## Why It's Good For The Game
Items like health analyzers, pinpointers, defibs and medical beds are
lower tech, commonly used items and should come before advanced cryo
technology, not the other way around.
## Changelog
🆑 LT3
balance: Advanced Medbay Equipment research node lowered to tier 3
balance: Advanced Medbay Equipment now requires haloperidol scan
experiment
balance: Haloperidol and cryostylane experiments can be performed
roundstart
balance: Cryostasis research node raised to tier 4
balance: Cryostasis now has Fusion instead of Controlled Plasma as a
prerequisite
balance: Cryostasis cryostylane scan is now a discount experiment
balance: Crystallizer moved from Controlled Plasma to Fusion
/🆑
* [NO GBP] Augmented organs experiment hotfix (#84654)
I attempted to make a cleaner check without testing it in the recent PR
* [NO GBP] Augmented organs experiment hotfix
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
* More techweb tweaks [NO GBP] (#84574)
## About The Pull Request
More QoL tweaks and rebalance towards easier unlocking of high tier
nodes by doing discount experiments.
## Why It's Good For The Game
More ways to unlock desired nodes.
## Changelog
🆑
balance: Techweb: High yield explosive is now a discount experiment for
Exotic Ammo node, giving more free points
balance: Techweb: Replaced the botany/xenobio discount experiments with
a new mutant scan experiment for the Gene Engineering node
balance: Techweb: Damaged mech scan is a discount experiment for tier 4
Mech Energy Guns node, giving twice more free points
balance: Techweb: Added a new anomaly scan experiment that gives full
discount for the Advanced Anomaly Shells, also moving the node to tier 5
balance: Techweb: Moved mech RCD to the Experimental Tools node
balance: Techweb: Moved handcuffs to T2 security node, leaving only
zipties in T1
balance: Techweb: Non-human Autopsy is a discount experiment instead of
a required one now
balance: Techweb: Parts scan experiments require 6 machines instead of 4
del: Techweb: Removed the New Toys node moving contents to sec and
medbay trees
qol: Made air horn craftable from a spraycan and a bikehorn
qol: Techweb: Better wording on the slime scan experiment
/🆑
* More techweb tweaks [NO GBP]
* Update microfusion_techweb.dm
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>