## About The Pull Request
NODE Drones now have higher move resistance
(MOVE_FORCE_EXTREMELY_STRONG), preventing them from being bumped off the
node, pulled away, or lifted away by a fulton extraction kit.
As an extra layer of assurance, the NODE Drone will depart from the site
if it is moved off of its vent.
## Why It's Good For The Game
Closes#83164.
I'm pretty sure these things shouldn't really be ever moving off of
their vents.
## Changelog
🆑 Rhials
fix: You can no longer force NODE Drones off of ore vents. That includes
using fulton packs!
fix: When a NODE Drone is forcibly separated from its vent, it will fly
away.
/🆑
## About The Pull Request
`move_on_shuttle` was a variable that existed on `/mob` despite only
ever being used by cameras. This PR downgrades the variable to only
exist on `/mob/camera` types, but have the only thing that variable do
is add a trait that blocks movement on shuttles if not allowed. This
allows us to check the variable without casting to camera, which is what
some code was un-necessarily doing. This also retainst the ability to
add the trait later on to different mobs who we may not want to be on
shuttles that aren't `/mob/camera`.
## Why It's Good For The Game
There's no point for this variable to live on `/mob` if all it can do is
clog up the VV screen, especially if the current utilization for it is
only cameras. Let's move it off `/mob` and turn it into a trait so it
still has the similar utilization on a global level without typecasting
- as well as make it actually work since needless typecasting was
introducing a minor bug
## Changelog
Irrelevant.
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Reduced amount of animal and plant DNA needed for the DNA vault
objective.
## Why It's Good For The Game
This objective getting completed is incredibly rare, BSA is a fun
station objective and gets completed often, The DNA vault is too tedious
and hopefully this will counteract that a little bit before some kind of
rework comes in to fix the underlying issue of the objective being quite
boring.
## Changelog
🆑 grungussuss
balance: The DNA vault now requires less animal and plant DNA to be
completed
/🆑
## About The Pull Request
This pr increases the metabolism rate from 0.25 to 1 for oculine and
adds a 30u threshold and changes the amount of oculine a carrot contains
from 100 potency from 25 units to 10 units(still very reasonable amount
since you usually farm in batches of 10)
## Why It's Good For The Game
Oculine at the moment gives you soft night vision lets me give you a
comparision
This is without Oculine in system

This is with Oculine in system

Currently how it is you make 90 units beaker and it lasts you a hour
trough the round its pretty easy to make
Which is kinda ridicilous because at that point it just becomes chug a
beaker and have bootleg NV this PR
Will make the chem a little more situational it still will lost long
enough to benefit in a combat scenario
just not enough to chug a beaker and not care about for it the rest of
the round
## Changelog
🆑
balance: Adds a threshold to oculine and increases metabolism, and
reduces the amount of oculine in a carrot
/🆑
## About The Pull Request
`update_mode_power_usage` updates the power usage variables for a
machine, so using that variable as the baseline in calculating new power
consumption, means that those calculations stack infinitely.
When this comes up elsewhere, the calculations are based off the
*initial* value, so this updates holodecks and holopads to use that
logic.
## Why It's Good For The Game
why are the chess players using 1.3 megawatts turn off the tv please
## Changelog
🆑 Fluffles
fix: holodecks no longer use increasing amounts of power the longer
they're on
/🆑
## About The Pull Request
Saw this in the wild and fixed what I believe was the cause: `!@!$&: THE
MEDICAL DOCTORSIS IN NEED OF THREE NAKED CHAPLAINS` (Round ID: 229577)
## Why It's Good For The Game
Spellcheck good.
## Changelog
🆑
spellcheck: Fixed a missing space typo in ion law logic.
/🆑
## About The Pull Request
Makes the turfs' temperatures be set to their initial values when
fix_air is used on them.
## Why It's Good For The Game
Prevents the turfs from heating the air back up after an admin uses
fix_air on a very hot room.
## Changelog
🆑
admin: fix_air will also fix the turfs' temperatures.
/🆑
## About The Pull Request
Anyone that's ever played botany knows that cutting down tower cap logs
simply nukes your chat, it used to spam it with ***three*** messages for
each log that's been turned into planks.
*Not anymore!*
Now, it simply shows you a balloon alert to inform you of how many
planks you've created. Not only that, but it also cleans up the code
that was being used there, instead letting the stacks attempt to merge
on their own, rather than having their own implementation, which is what
led to cotton bundles to cause runtimes from trying to merge things
manually after accidentally having the spawned raw cotton being merged
automatically.
It also has the benefit of no longer causing the final stack of items to
move all over the place every time you cut a log, instead it stays in
place until it's full, and *only then* does a new one appear at a random
position on the tile, making it a lot less annoying when cutting logs
whilst standing on the same tile as them.
## Why It's Good For The Game
Less chat spam is *always* good. You don't *need* a live update to the
count of planks in your plank stack, you can just shift-click it to
examine it to know. Much, much neater that way.
## Changelog
🆑 GoldenAlpharex
qol: Grown logs no longer spam your chat when cut into planks, instead
displaying balloon alerts informing you of how many planks were made!
qol: Cotton and Durathread bundles no longer spam your chat either, and
display a balloon alert instead.
fix: Cotton and Durathread bundles no longer runtime when creating raw
cotton/durathread from the created stack having been merged with an
existing one.
/🆑
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Base alt click would skip turfs as I did not think any had special alt
click behaviors. I was mistaken. The comment was too.
Note: Checking can_perform_action() does not work on turfs. I added some
simple checks for turfs in its absence.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Fixes#83430
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## 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: Added a screentip for hilbert's hotel door
fix: Fixed alt-click interaction with hilbert's hotel door
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Initial PR here: https://github.com/NovaSector/NovaSector/pull/2694
This is a proposed fix for an issue reported downstream on
https://github.com/NovaSector/NovaSector/issues/2198 and requested to be
put upstream where watcher wreath bounties were not accepting the items
they state they want. The root of the issue seemed to be the FALSE flags
attached to the wanted_types. include_subtypes can be used for what
might have been the intended effect of having only ice wreaths for the
ice bounty and normal wreaths for the normal bounty.
## Why It's Good For The Game
This bug would prevent someone from being able to do any bounties until
the 5 minute timer to refresh the bounty options passed. Less wait time
on undoable tasks means more time spent interacting with the round.
## Changelog
🆑
fix: fixed watcher wreath bounties being incompletable
/🆑
## About The Pull Request
Ok so like, beam rifles send out tracer rounds right
We send out tracer rounds once every few seconds and if the mob or mouse
moves.
The problem is those tracer rounds are hitscan, and hitscan projectiles
don't like, wait to move.
So if I just drag my mouse a bunch I'm causin a bunch of hitscan
attempts.
This might be ok, but what happens if I do it in space (the place with
100s of turfs empty of things to hit).
Anyway let's do some tick checking in hitscan's while loop so it can't
eat seconds of cpu time uncontested
## Why It's Good For The Game

https://github.com/tgstation/tgstation/assets/58055496/2ce870f5-b65d-46e5-8dc3-11646c789290
## About The Pull Request
Chutes were playing a sound per item in a stack because the condition
was that the last played sound happened before worldtime+1 which was
always the case, that's in the future. They now only play a single sound
when multiple items enter them at once.
Outlets functioned correctly but the sound for midpipe ejections was a
bit overpowering, so I deadened it a bit(-4 LUFS).
Tested. No observed effect on consecutive insertions.
## Why It's Good For The Game
It is often the case that a conveyor with a large stack of items may be
activated, pushing a large quantity of items into a chute, which would
then fry the eardrums of all those nearby.
## Changelog
🆑
sound: Disposal chutes will no longer play a sound for each item when
many items enter it at once
/🆑
## About The Pull Request
Patches up some things that were lacking post #82905
- Some missing (un)seal messages
- a missed direct use of the mod_parts list
EDIT: Also fixes the modsuit painter, and makes sure modsuits can still
be set to use custom dmi files via
`MOD_ICON_OVERRIDE`/`MOD_WORN_ICON_OVERRIDE`
Fixes#83442
## Changelog
🆑
fix: some missing modsuit (un)sealing messages should no longer be
missing
fix: MOD circuit adapter core deployed parts output should work again
fix: Modsuit painter works again
/🆑
## About The Pull Request
I tried to make the name a proper noun with the /p tag, but /p isn't the
way to do it. I don't know the way to do it, but the name will be
capitalised anyways so lets just remove it.
## Why It's Good For The Game
It's better this way.
## Changelog
🆑
spellcheck: Fixes labour camp shuttle retrieval message starting with
"/p".
/🆑
## About The Pull Request
As the title says. This should significantly improve the performance of
running lua scripts.
## Why It's Good For The Game
There is a lot of performance overhead in logging each individual
function called by a lua script as can be seen in the following
screenshot:
This is a test done on a local server where I run the
`zombie_controller.lua` script that can be found on the auxlua-cookbook
repository with a lot of AI zombies spawned in.


Logging these calls is not necessary as it doesn't provide any real
information to anyone looking for bad actors. Lua scripts are already
logged when ran and they can be examined to spot if the script being run
is done so in bad faith.
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
## About The Pull Request
Fixes#83292 by making mobs larger than Humans break out of the mech
jail cell 10x faster than humans.
Also I made the error output into balloon alerts.
## Why It's Good For The Game
This is a security mech designed for interacting with crew; it doesn't
_need_ the ability to arrest alien queens or space dragons and we didn't
really design any of these antagonists with the idea that you can stuff
them inside a mech that looks smaller than they are.
Resultingly; now they don't stay stuck in it for very long if you are
not paying attention.
## Changelog
🆑
balance: Mobs significantly larger than humans, such as Space Dragons
and Xenomorph Queens, breakout of being arrested by a mech significantly
faster.
/🆑
## About The Pull Request
Does as title says. Infected AI *could* be given a new sound effect but
I'll leave that to someone in the future.
Also removes the ability for Infected AIs to set their own custom
objectives
## Why It's Good For The Game
Getting Malf AI usually means you can ignore laws. AIs really should be
checking their Law 0 before deciding to do their own flavor of chaos but
Infected AI having the same sound effect is an unnecessary extra chance
to mix the two up.
## Changelog
🆑
qol: Traitor-created Infected AIs no longer hear the Malf AI antag sound
alert.
/🆑
---------
Co-authored-by: Afevis <ShizCalev@users.noreply.github.com>
## About The Pull Request
Converts wendigo's abilities into mob abilities, behavior should be
almost identical to how it was before. Also gave megafauna the same
night vision as normal lavaland mobs since controlling them and being
unable to see was difficult while testing. Wendigo's scream and slam
were made into global procs so they could be used across these
abilities, but if there's a better way to do that I'm open to it.
## Why It's Good For The Game
More refactoring to make way for converting these all to basic
megafauna.
## Changelog
🆑
refactor: Wendigos abilities have been changed into actions that can be
added to any mob.
/🆑
## About The Pull Request
What it says on the tin, this adds logging to nested_logging for
autolathes, protolathes, and the mech fabricator.
Also quickly renames a variable name within the mech fabricator because
this thing hasn't been updated in awhile and it was egregious to me.
## Why It's Good For The Game
I wanted to throw together a quick superset chart of what items are
printed most often and how often, and was shocked to learn that it
wasn't logged in this way.
It was recorded somewhat within the silo log, but this is MUCH easier to
use all thing considered, so it's an easy fix.
## Changelog
No front facing changes.
## About The Pull Request
This PR makes the computer console's print feature work on a signal
instead of wasting paper every string update, changes the flashlight
color change to do the same, fixes the on/off signal not turning the
console on, and fixes the signal for the console turning off not
functioning.
## Why It's Good For The Game
Besides the bug fixes, this makes the console components more consistent
with every other circuit component. The refactor is to prevent worrying
about nulls for colors or errors because of early returns.
## Changelog
🆑
fix: computers with no lights can now turn on using the on/off signal
fix: RGB lights on PDA circuits now use a signal
fix: the is_off signal now works on consoles
fix: printing text on a console component now uses a signal
refactor: each input signal in console circuits now have their own proc
/🆑
## About The Pull Request
Fixes#83072 by preventing the ability from targeting anchored atoms.
Also fixes the logic to only check for obstacles interposed between us
and the target, not ones sharing the tile.
## Why It's Good For The Game
This is how the ability was already supposed to work
## Changelog
🆑
fix: Venus Man Traps cannot use vines to drag around machines or objects
that are bolted, welded, rooted to, or otherwise are part of the ground
fix: Standing on a table will not prevent you from being grappled by a
Venus Man Trap
/🆑
## About The Pull Request
Right now parallax is like a quarter of SSinput, which is BAD. It's so
high mostly because of the animates we need to do, but also due to the
cost of setting screen_loc.

This sucks. The default step is to reduce the poll rate of the effect,
but I don't want to do that because it SUCKS. Sooooo how can we
optimize.
Well, if we stop thinking in terms of screen_loc, which is a string
(tree shit) and also unanimatable, and start working in pixel offsets,
this'd be a way cheaper.
We can make that happen by sticking all our parallax layers on one rock
screen object. Then they have relative positions and can be pixel offset
(I have stolen this concept wholesale from Ter)
This works unreasonably well, roughly a 65% cost reduction. S good shit.

While I'm here...
[uses KEEP_TOGETHER to reduce clientside load, makes the flying
animation
better.](52610398e2)
We were individually rendering all like fucking 24 480x480 overlays on
all 5 parallax layers, which means we had to apply our transform to EACH
ONE. This has GOTTA suck shit for clients, so let's... not? Should help.
The existing flying animation makes me depressed. it has some very
visible stutter, and jumps around a lot.
We can deal with the starting stutter by avoiding starting a new
animation on the layer until the old one is finished. This is what was
SUPPOSED to be happening, but because we fired one timer for all the
layers, they'd desync and jump in ugly ways.
This means we need to use one timer per layer, which does induce more
cost then I'd like. IDK how I feel about this to be honest.
I try and reduce ending weirdness by unscaling time at the end, so
different aspects don't slow down at different rates.
Speed on the parallax animation was weird, it'd spike up, then dip down
in flight.
This was because the percieved rate of change from the quad easing was
closer to 2x the existing.
I've handled this by halving the animation time in the loop
Oh also there's no sense calling the update animation proc if we are
coming to a stop, and thus have no follow up animation.
## Changelog
🆑 LemonInTheDark
refactor: I have reworked how parallax and its animations (space travel)
work. Please report any bugs lads!
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Dumps `handle_random_events` in the bin, giving us one less proc in
`Life`, that's a free proc call optimization baby.
Replaces its only implementation with a status effect conditionally
applied when gaining / losing tox dam.
## Changelog
🆑 Melbert
refactor: Refactored the way high toxins cause you to vomit.
/🆑
## About The Pull Request
Removes miasma generating random viruses (in two locations for some
reason)
Also removes diseases being generated by gibs, which is responsible for
a lot of disease spam
## Why It's Good For The Game
New diseases are spread through events and virology (and some other
minor sources). Miasma and gibs are a source of random viruses that
dilutes player response to diseases. It's frankly exhausting curing the
disease outbreak, just to see 10 others pop-up. Hopefully we can reduce
the madness a bit and place more focus on individual diseases
## Changelog
🆑
del: Miasma and gibs no longer generates random diseases
/🆑
Something like lung rot could be cool though, but out of scope for the
current PR
## About The Pull Request
Completely removes sentient disease from the game
## Why It's Good For The Game
Sentient disease is a unique antag and seems fun on paper, but really
doesn't work that well.
Sentient disease is a pretty binary antagonist: you either get cured and
watch helplessly as you lose all your hosts, or you infect everyone and
wipe out the entire station. Its everything bad about conversion antags,
but there's not even any fighting.
I also don't think any amount of balancing can fix sentient disease. If
we make it harder to cure, the disease gets an easier station wipe, but
if we make it less lethal, it loses all ability to stop cure generation.
The core gameplay pitches the entire crew against one disease, and it's
merely a timer before either it gets cured or wipes out everyone
This is my latest sentient disease round, where I wiped out the entire
station. I only even greentexted because there was one guy on the escape
shuttle in crit that barely made it because they had the sense to take
spaceilline.

The removal of the virologist lets us balance viruses to be fairer
challenges to the player, but as long as sentient disease exists we'll
always have to balance viruses somewhat in favor of the enjoyment of the
disease blowing your head and making you spontaneously combust.
## Changelog
🆑
del: Removes sentient disease from the game
/🆑
Hopefully, once we get virology truly sorted out, we can readd sentient
disease, but this would require our diseases to have endgoals that
aren't focused around killing every person, being widespread while also
not being instantly curable. A reworked sentient disease would have to
be so different, it's better to leave it out, fix virology and then
consider if we can truly add a new sentient disease and have it be fun
and fair
## About The Pull Request
In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.
## Why It's Good For The Game
Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.
## Changelog
🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
## About The Pull Request
It made me really mad to see a huge list in the middle of client/Destroy
for something that doesn't even run for 95% of users so I split it out
into another proc so the fingerprint of the very important `Destroy()`
stuff could be as minimal as possible without a big `pick()` so the
server can send the "I need a man 🥺" message could be punted off to
where no-one would care for it. It was already doing the async TGS
operation so it doesn't matter anyways as far as proc overhead in my
books.
I also fixed up the code for `adminGreet()` as well because that was
being really weird with not having proper booleans and running `pick()`
on things with literally one value (as well as excess
stringification)... it wasn't good so I just cleaned all that up too.
Ideally this all means we take up a little less CPU time but the aim of
this PR is to just clean it all up for modern coding standards.
alphabetized lists and early returns galore.
## Why It's Good For The Game
Code is better to read and less idented, and better yet it's no longer
necessary to read all the softie messages in the middle of `Destroy()`
## Changelog
Irrelevant
## About The Pull Request
Random events can now be rerolled by admins, much like how they can
reroll dynamic rulesets. During the ten-second warning window, you can
choose "Something Else" to have a (randomly selected) different event
run in its stead. You still get the 10-second delay when this new one is
picked, meaning you can keep rerolling until you get something
interesting.
The option to just cancel a random event remains.
## Why It's Good For The Game
Cancelling a random event sets back the random event clock, meaning you
have to wait a few minutes for another one to roll. Now you can just
reroll dangerous events into something calmer (or y'know, calm events
into something more dangerous).
## Changelog
🆑 Rhials
admin: Admins can now reroll random events into something else.
/🆑
## About The Pull Request
Adds a line to the "Proto-Nitrate BZ response" reaction description,
specifying the temperature it requires.
_This PR does NOT change the reaction itself._

## Why It's Good For The Game
The Gas analyzer interface describes every reaction in great detail,
including the required reaction's temperature.
For whatever reason, the "Proto-Nitrate BZ response" ommits this,
leading to a lot of unnecessary guesswork on player's part.
## Changelog
🆑
qol: The "Proto-Nitrate BZ response" atmsopheric reaction now lists it's
required temperature.
/🆑
## About The Pull Request
I made a mistake
## Why It's Good For The Game
You can shoot at items on the floor again
## Changelog
🆑
fix: You can shoot at items on the floor again
/🆑
Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
## About The Pull Request
Fixes#83374Fixes#82445#81665 changed Narsie to transfer minds rather than assigning keys to
constructs.
This only works some amount of the time because observers don't have
minds.
Dying in certain ways (such as: when playing as a construct) also seems
to destroy the mind.
Now we transfer the mind if one exists, otherwise we assign the key
(which creates a mind).
## Changelog
🆑
fix: Ghosts can more reliably become a harvester.
/🆑
## About The Pull Request
For whatever reason, these were partially deleted but the projectile was
left in. Since the thing that spawns these projectiles is 100% gone from
the game and can't even be spawned by admins there's no reason to keep
this vestigial code.
## Why It's Good For The Game
Why waste lines of code and storage space on something that is now gone?
It's just clutter.
## Changelog
🆑
no player facing change
/🆑
## About The Pull Request
i think i made these a bit too strong, this hopefully balances them out
a bit. they were initially accidentally given alot of armor against
ranged attacks, this is now removed. also ive reduced their base hp by a
bit. im open to other suggestions and feedback
## Why It's Good For The Game
they were stronger than i intended. this keeps their usefulness for
battling tendrils, or ore vents but also prevents using them to cheese
several megafauna
## Changelog
🆑
balance: you can now polymorph into raptors
balance: raptors overall have less health and no longer have armor
against ranged attacks
/🆑
## About The Pull Request
When making moon rocks, saturnx, or blastoff I'd notice it'd sometimes
use more reagents than expected. Testing around a bit, it'd sometimes
just eat the reagents without making anything.
Looking into it, this seemed to be due to it trying to react and eating
the reagents to do so before actually reaching the minimum reagent
count.
Adding the `REACTION_INSTANT` flag to these reactions fixes this.
## Why It's Good For The Game
Fixes reagents disappearing without doing anything.
## Changelog
🆑
fix: Mixing the reagents for moon rocks, bLaSToFF ampoules, or SaturnX
globs in amounts less than the minimum for the recipe no longer eats the
reagents without doing anything.
/🆑
## About The Pull Request
Vendors dispensing cigarette boxes onto the floor would cause a broken
character to appear at the beginning of the line.
Looking into it, this seemed to be due to an attempt at capitalizing the
item names, which interacts with the `\improper` text macro to cause
this issue.
Calling `format_text(...)` beforehand resolves this issue.
Look in the linked issue for more details.
## Why It's Good For The Game
Fixes#82618.
## Changelog
🆑
spellcheck: When a vendor tells you something dropped onto the floor,
the line no longer starts with a broken character in the case of
cigarette boxes.
/🆑
## About The Pull Request
`in viewers` does not take into account blindness so you can open the
lootpanel at range as a blind person to see item names, icons etc
This limits their alt click range to 1 tile away and removes the
names/tooltips from the items in the ui
## Why It's Good For The Game
Realism and since this is a blindness nerf (as if they need one) I won't
be mad this gets closed
## Changelog
🆑
fix: You can no longer open the loot panel at range as a blind person
and cheese item names
/🆑
## About The Pull Request
Fixes#83273
We shouldn't exit out of interactions here if neither of those
interactions are available because we want to be able to put it in the
machine.
## Changelog
🆑
fix: The destructive analyser once more hungers for multitools
/🆑
## About The Pull Request
Dismisses the tutorial when the button is pushed
## Why It's Good For The Game
Some tutorials may pop up at inopportune moments and this lets players
deal with that, as well as when they bug out
## Changelog
🆑
qol: Added a "Remind me later" button for tutorials
/🆑
---------
Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com>
## About The Pull Request
So the smoker quirk would always reset back to "Random" whichever
preferences you selected, just in the menu.
Looking into why this was happening, it seemed to be failing at the
point where it deserializes and sanitizes your selected value,
specifically at the point where it'd compare it to the list of possible
preferences.
This seemed to be because the value it got back from tgui had removed
the `\improper` text macro, while the value in the list was saved with
that text macro.
It's not actually useful here, so we remove it using `format_text(...)`
when setting up the list, and this makes it work again.
We also split it off from the previous used proc used for setting up the
list:
```dm
/proc/setup_junkie_addictions(list/possible_addictions)
. = possible_addictions
for(var/datum/reagent/addiction as anything in .)
. -= addiction
.[addiction::name] = addiction
```
Because the smoker list doesn't actually use reagents. I'm surprised
this successfully got the name values for the non-reagents in the first
place.
## Why It's Good For The Game
Fixes#83277.
Fixes#82538.
## Changelog
🆑
fix: Smoker quirk users can select a favourite brand again.
/🆑
## About The Pull Request
Removes an S from the message `Due to a research mishaps, [station AI]
has been sent to be your replacement AI at [location]. Please treat them
with respect.`
## Why It's Good For The Game
Latejoin AIs don't have a goofy typo in them now. whoag.
## Changelog
🆑
spellcheck: Fixes a typo with latejoin AIs
/🆑
## About The Pull Request
this pr adds a new fish to lavaland and icebox, the lavaloop! i noticed
neither has any exclusive fish so im trying to add one of my own. u can
find this fish by using reinforced rods on lava or plasmarivers. this
fish is also lobstrosity's favorite delicacy as you will now often see
AI controlled lobstrosities fishing for it in lava and then eating it.

because of its body's curvature and razor sharp spikes, this fish can
also be used as a make-shift boomerang weapon against mining mobs,
although it comes with some new mechanics. u can increase the damage it
does to mobs by winding up ur throw. when the bar reaches purple, this
indicates maximum damage. however, if it goes over the purple, it will
react violently and explode your arm off, so you have to time it just
right to get the best damage possible. On icebox, instead of dealing raw
damage, fish will freeze mobs depending on how long you charged ur
throw. charging it for too long will cause the fish to freeze you
instead
https://github.com/tgstation/tgstation/assets/138636438/c8ac3696-3705-45b0-bc43-c5b81d75cb1b
while its nowhere near as effective as using PKA's or crushers, it can
be a useful tool for hermits and ashwalkers.
## Why It's Good For The Game
having lobstrosities fish and hunt for it makes lavaland feel more like
an ecosystem with a food chain. also i think tossing fish at eldritch
horrors is a funny way to fight them
## Changelog
🆑
add: adds a new fish to lava and plasma rivers, the lava loop
/🆑
## About The Pull Request
jps movement can read accesses from the access component
## Why It's Good For The Game
i cant think of any mobs that need this now but it will be useful in the
future
## Changelog
🆑
/🆑
## About The Pull Request
This PR does a handful of things to make the hostile "Legion" mob less
dangerous.
Firstly: They will spawn extra mobs half as often.
Secondly: Those mobs have the "attack forecast" component also used by
Goliaths and some other mining mobs.
Also now Legions can't spawn skulls while they're inside pipes or bags,
because that doesn't make any sense.
## Why It's Good For The Game
When converted to basic mobs these guys became _far_ more deadly than
they were supposed to be, to the point where even approaching a Legion
tendril was basically suicide.
This was compounded by an issue which would sometimes cause 33% more
Legions to be present at the tendril than were supposed to spawn there,
but they'd still be fairly scary with just 3 of them.
There were a couple of causes of this which this PR does something to
address:
- Simple mob AI was simply a lot more sluggish than Basic Mobs. Legions
now react faster and more reliably _actually_ spawn skulls at every
available opportunity whereas previously despite having the same
cooldown they wouldn't always bother.
- Similarly, the skulls themselves were slower to pick a target and
slower to attack, whereas Basic Mob skulls will melee you the instant
they detect that you are in range.
- This also means three (or four with the spawner bug) Legions dropping
adds on you the second they see _you_, with no guarantee that you have
yet seen them. The damage starts to become quite hard to avoid, and 4x
Legion skulls (with another four spawning in two seconds) dealing 12
damage each would crit you very quickly.
- Our click CD means it's not even possible to punch four skulls in two
seconds even if you managed to time it perfectly.
So to solve this: Spawn fewer of them, they do less damage, and you can
step away from their attacks (this gets pretty hard when you're
surrounded, but that is by design).
Eventually I am probably going to play like 20 rounds of miner, look at
all of the mining mobs we have on each map, and then completely redraw
what their roles are in a way that probably changes what this mob does
quite significantly... but I'm not going to do it yet. This should do
for now.
## Changelog
🆑
balance: The melee attacks from small mobs spawned by Legions can now be
dodged.
balance: Legions spawn their mobs less often.
fix: Legions cannot spawn mobs while inside pipes or closets.
/🆑
## About The Pull Request
As stated in the title, auto-aiming at prone targets is disabled after
the projectile passed more than 10 tiles (the limit of vision of an
ordinary spaceman is 9 tiles). Within 10 tiles, shooting in combat mode
remains unchanged. This also does not apply to sniper rifles.
Here's a preview of how it works:
https://github.com/tgstation/tgstation/assets/126676387/d62fbb03-9f63-4a73-a32a-62b4d11e4515
## Why It's Good For The Game
The main problem of shooting in combat mode is shooting in busy
corridors. Often, you are unwilling to become a participant in the
security's pursuit of the antagonist, and receive unintended
projectiles. You will be lucky if the projectile turns out to be
non-lethal, but if it is a laser, you can get a second-degree burn or
even a catastrophic one from just one shot. (depending on which laser
was fired and where you were hit), which is not very pleasant. To stay
unharmed and simplify the work of security, it is logical to lie down on
the floor.
This will not revive the lie-down meta to dodge projectiles, because
within sight of the spaceman and even a little further, lying targets
will still be hit by projectiles. And if you decide to lie down during
the chase to dodge the projectiles, then the pursuers will quickly catch
up with you and shoot you in combat mode.
## Changelog
🆑
balance: Auto-aim in combat mode at mobs on the floor is disabled after
the projectile passes 10 tiles.
/🆑
---------
Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>