* General maintenance for Lathes (#81244)
## About The Pull Request
1. **Qol Stuff**
- Screentips & examines for screwdriver, crowbar acts, multiool &
wirecutter Also for Alt click
- Techfabs can now also use the Mouse drag functionality to set drop
target for items
- Lathe printing animation now plays on loop instead of just flicking
once till printing is finished for more visual feedback
2. **Code Improvements**
- Merged `start_making()` with `do_make_item()`. That proc was like only
3 lines long and used only in 1 place so let's just move that code to
`ui_act()`
- Merged `user_print_item_id()` with `ui_act()`. Again was used only in
1 place so let's just move that code in to save some proc overhead
- Sets `processing_flags` for autolathe to `NONE` cause we don't use
`process()`
- Autodocs vars such as `hacked` , `shocked` etc & procs
- `maxmult` is now computed client side saving backend bandwidth,
`construction_time` is removed from lathes which did not use it
- Removed all usages of lathe taxes and their related vars, removed
engineering lathe no tax from ice moon, replaced with normal engineering
lathe
3. **Fixes**
- Lathe sheet insertion animations are now linked & work again for all
material types inserted via remote silo/local storage,
silver/titanium/plastic all play the same animation(that is
`protolathe_shiny` overlay). Other materials have their own respective
overlays
- Fixes#81243. Calling `update_static_data_for_all_viewers()` is too
expensive for the UI. We should instead use `SStgui.update_uis(src)`
which will report the `busy` status to the UI more immediatly
- Fixes#81236. Some problems with the params passed to the timer
callback. It should now print the correct number of requested items
- Fixes#81192. `design.materials` would runtime for custom material
items as they were list of texts not materials. We have to pass our
manually parsed list of materials for an specific item to ensure they
are set & used correctly. Same fixes apply for techfabs as well
## Changelog
🆑
qol: adds screentips & examines for screwdriver & crowbar acts & alt
click.
qol: techfabs can now use the mouse drop functionality to set drop
target.
qol: lathe printing animation plays on loop while printing rather than
flicking once for more visual feedback
fix: lathe sheet insertion animations are now linked & work again for
all material types inserted via remote silo/local storage
fix: printing custom materials items from autolathe works again.
fix: printing multiple items from lathes will actually print that
correct quantity of items requested.
fix: printing items the 2nd time around from lathes won't cause the UI
to reload each time.
code: autodoc for some vars & procs, merges procs.
refactor: Optimized code for autolathe & techfabs in general. Report
bugs on github
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* There we go
* aaaa
* Missed this little thingy
* There we go, should be clean af
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
You can now move and talk through statues and mannequins (#81188)
## About The Pull Request
I recently played a game where I rotated my skeleton model while
rotating my own character at the same time and it being in sync gave me
the realization on how cool it would be if the Coroner was able to
simply control the skeleton body.
I find skeleton displays very funny and I want to see more funny things
happen with them, so I thought this would be a good place to start, with
the benefits that it also works on mannequins and statues too so they
aren't left out.
Basically, while it is unanchored, if you have a statue/mannequin
grabbed, it will change its direction as you do, and speak the same
words you do. Your own messages can only be heard if the person is
directly next to you, revealing that it was you talking through it all
along.
I was originally gonna add this to the simple rotation component but
moved off when I decided to add talking through it, I left in the code
improvements I made to the component though since it is one of the
oldest components and hasn't been touched in a while.
Video demonstration (before I added the person also talking, just ignore
that missing)
https://github.com/tgstation/tgstation/assets/53777086/27242fc3-9649-418d-95cb-b31619319e97
While fixing the Toilet bong's rotation stuff I noticed a lot of it
wasn't up to proper code standards so I went over it and fixed issues I
had with it. It now doesn't give text saying you found something nasty
to species that still likes mice (like flypeople), and fixed its update
appearance to match the codebase standard set by the introduction of
``update_appearance`` many years ago.
## Why It's Good For The Game
It's a funny small idea I had and got inspired to add, it's a niche
mechanic that I think fits the aesthetic I am going for with Coroner and
also give a funny interaction with the human-like inanimate objects.
## Changelog
🆑
fix: Species that can eat mice don't get disgusted from seeing one in
the toilet bong.
add: Grabbing an unwrenched statue/mannequin/skeleton model will now
move its direction as you move yours, and you can talk through it.
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Legcuffs on Aliens Work as Intended (#81321)
Currently on live, if you throw a bola at a xenomorph or use a beartrap
on them, the legcuff will successfully attach itself to the xenomorph
but nothing will happen. It will not be present visually nor apply
slowdown to the xenomorph at all, and it also gives the xenomorph no
indication that it is attached to them or option to remove it. This PR
fixes that problem by moving some human-specific code downwards,
allowing xenomorphs to visually have legcuffs applied to them, be slowed
down by them and to take them off by themselves.
Note that as with all cuff-related items, xenomorphs will break the item
immediately upon attempting to resist it at all. Therefore, this PR
doesn't really do anything balance-related, although maybe you can buy
yourself a half-second while the xenomorph you just bola'd realizes they
need to take it off before chasing you down again.
Another thing to note is that queens and praetorians don't look right
with these overlays applied (they float to the left of their sprite),
but that's a bigger issue with a lot of the overlays in general (fire
being a big one), to be fixed in another PR.
This has bothered me for a while now, so its about time I do something
about it. Even if using bolas or beartraps on xenomorphs is practically
useless, if we're gonna let players do it then we're going to let them
do it right.
🆑
fix: Xenomorphs now have legcuffs applied to them properly.
/🆑
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Adds head-only target hotkey (#81222)
## About The Pull Request
Adds a new optional hotkey that targets only the head and does not cycle
to eyes or mouth.
Currently the way the numpad hotkeys work on /tg/ is every key targets
one body part... except 8. Numpad 8 Currently cycles through
head-eyes-mouth, despite _**numpad 7 already handling mouth and numpad 9
already handling eyes**_. There's no head-only key.
* Adds head-only target hotkey
---------
Co-authored-by: Swift <jackwars4@gmail.com>
* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds (#81307)
## About The Pull Request
Fixes#79318
- See the issue for more information. I fixed the runtimes as expected,
and then removed `SURGERY_REQUIRE_LIMB` from some surgeries which don't
actually require a limb, such as implant removal, dissection, and living
revival. I could've easily missed some, and as a result some surgeries
are lost to the void and unselectable, but from what I could tell in
testing it seems... fine.
- Adds `SHOULD_CALL_PARENT` to surgery `can_start`. Cleans up some
surgery `can_start` overrides.
- Adds missing sounds to puncture repair surgery.
## Changelog
🆑 Melbert
fix: Fixed Puncture Repair surgery not having surgical sounds
fix: Fixed Surgery Initiator potentially showing invalid surgeries
/🆑
* Fixes surgeries runtiming constantly when having the surgery initator open, fixes some surgeries missing sounds
* Fixeed
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Adds a suicide_act() to the smite spell (#81252)
## About The Pull Request
What it says on the tin
## Why It's Good For The Game
https://youtu.be/cvfLHTyDv9o?t=4
## Changelog
🆑 Wallem
add: Adds a new suicide_act() to the smite spell
/🆑
* Adds a suicide_act() to the smite spell
---------
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* Refactors fancy type generation (#81259)
## About The Pull Request
[Refactors fancy type
generation](3f218ac7b7)
Ok so we have this proc that generates concatenated names for types so
admins have a nice list to sort through.
The trouble is this is done by, for each type, iterating all possible
replacements, and seeing which ones apply (with expensive string
operations)
A clean run of this applied to all datums takes about 3.5 seconds on my
pc.
This sucks.
Ok so can we do better. Well, yes, pretty easily.
Rather then, for each potential type, iterating all the options, let's
build a zebra typecache (a lookup list of type -> string to use), and
use that.
Then we can use a list of replacement -> the bit to tear out to figure
out what to remove.
This works quite well. It does mean that we're doing it based off the
type tree and not type paths, so if we didn't have a replacement for
like, mob, it'd look weird, but we don't have cases like that so it's
fine.
Or well we sorta did, didn't have anything for atom movables or areas,
but I fixed that so sall good.
Anyway, we only need to do this work once. It takes about 0.3 seconds on
my machine, so we can cache it.
Just this on its own would technically slow init, since we have a some
code that's running this proc off static, but we can just not, that's
fine (technically saves init time too since we don't have to burn 0.1
seconds on it anymore).
This brings the cost of generating this list for all datums from 3
seconds to 0.16, assuming we have the static pre generated.
We could in theory pre-generate just like, all the strings?
But I don't think the cached cost is high enough for that to be a real
problem. IDK open to other thoughts
Oh also I had to reorder the strings in that list, cause
zebra_typecacheof has reverse priority. s life
[Updates stat tracking macro to work at world
start](1fbfb701a1)
It for some reason doesn't actually get anything this early, but now at
least the logging would in theory function
## Why It's Good For The Game
Better response times for admins, faster code, more better
* Refactors fancy type generation
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Barcode scanners can now be printed. (#81324)
## About The Pull Request
Currently the only way to get a barcode scanner is by spawning as a
Curator, this is lame and prevents people to job change into a
librarian, so now it can be printed like basically all other service
job's tools.
Part of computer tech

## Why It's Good For The Game
You no longer have to spawn as a Curator to be able to work in the
Library, and Curators can now replace their otherwise completely
irreplaceable equipment.
## Changelog
🆑
qol: The barcode scanner is now part of computer tech and can be printed
at the service techfab.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Barcode scanners can now be printed.
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* [MDB IGNORE] Adds a map lint against using dir-var and icon-var edited windoors (#81272)
## About The Pull Request
Title.
Another big updatepaths PR thats been on my radar for awhile.
The dir banned var edit is self explanatory. However, I banned
icon_state from them as well as there are a big handful of windoors that
are either regular, and look like security doors, OR are their mirrored
counter part (a south right door var edited to look like a south left
door).
## Why It's Good For The Game
Avoid mapping sins like this

## Changelog
N/A to players
* [MDB IGNORE] Adds a map lint against using dir-var and icon-var edited windoors
* 1
* bs kilo
* rest
* 3
---------
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Zergspower <Griffinj88@yahoo.com>
* Station Goals are now handled by SSstation instead of a global list (#81177)
## About The Pull Request
You can now get station goals in a slightly better way over using a
`locate() in` call on a global list.
The Meteor Satellite goal no longer stores a giant list of ALL OBJECTS
in view. And now correctly only counts turfs.
## Changelog
🆑
fix: Meteor Satellites no longer erroneously count every piece of paper
as a protected turf.
fix: As a result the station goal is slightly more difficult
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Station Goals are now handled by SSstation instead of a global list
* Will it work? I do not know. But it compiles.
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Fix some copy paste UI errors (#81325)
## About The Pull Request
One day we will have opendream lint to catch this. (WYCI I guess)
* Fix some copy paste UI errors
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Alien Hunter's Pounce Visuals (#81322)
## About The Pull Request
Currently on live, when an alien hunter goes for a pounce, once the
pounce is completed the hunter will rise quite a distance slowly from
the floor as setting body_position_pixel_y_offset now is done with
animation as opposed to being instant. This looked extremely stupid, so
I went and fixed it. Initially, I was going to add some form of trait to
cancel out the smoothing effect from a shifting y offset, until I looked
at the sprite for alien pouncing and realized it was 96x96 for no
reason. For reference, 96x96 is the size of Bubblegum's sprites.
So, I just made the sprites 48x32, got rid of the unused sprites
(sentinel and drone both had pounce sprites but neither ever had that
ability iirc) and adjusted some of the pounce ability's internal offset
stuff to compensate and it looks perfectly fine now. Somehow made the
image file larger by 243 bytes according to Github but I guess it is
what it is.
## Why It's Good For The Game
The alien hunter ascending from 2 tiles below where it actually was
whenever it pounced was incredibly jarring. This fixes the problem.
## Changelog
🆑
fix: Alien Hunter's pounce ability no longer has any weird offset issues
once the pounce is completed.
/🆑
* Fixes Alien Hunter's Pounce Visuals
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* Restore non-functional ash mark ability (#81320)
## About The Pull Request
Apparently, ash mark is supposed to replenish mansus grasp cooldown by
75% when triggered, but this is neither reflected by the research
description, nor functional ingame. This edit makes it work, and adds
the effect to the description.
Additionally, that same block of code was present in moon mark research
also. I removed that because I assume it is intended to be an ash-only
feature, and moon only had it because of copy-pasting.
And since we're at it, I also reworded the mark description to be more
clear about the mark only transferring to a single heathen at a time.
## Why It's Good For The Game
I don't think we should have code which does not work. The options are
to either remove it, or make it work, and the latter is more fun.
## Changelog
🆑
fix: ash mark now properly lowers the cooldown of mansus grasp when
triggered
/🆑
* Restore non-functional ash mark ability
---------
Co-authored-by: ViktorKoL <44502667+ViktorKoL@users.noreply.github.com>
* Fix bad reference management in object overlay circuit (#81338)
## About The Pull Request
`/obj/item/circuit_component/object_overlay` handled the wrong
references when implementing `Destroy`.
## Changelog
🆑 Melbert
fix: The object overlay circuit component will no longer take things
with it.
/🆑
* Fix bad reference management in object overlay circuit
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* [FIX] Makes Ghetto Surgery Behave In Line With Expectations
* fixes
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
* Regenerative Materia Blobs No Longer Drug Non-Carbons (#81318)
## About The Pull Request
Fixes#79841
This PR fixes the bug where cyborgs could get high from being attacked
by regenerative materia blobs by adding a requirement that the target is
a carbon before applying the drug effect to them.
## Why It's Good For The Game
This isn't believed to be intentional (its marked as a bug) and applying
the drugginess effect to non-carbons has shown in the past to cause some
issues (ex. cyborgs which have the high effect for much much longer than
intended were it applied to a carbon)
## Changelog
🆑
fix: Regenerative Materia blobs can no longer drug non-carbons.
/🆑
* Regenerative Materia Blobs No Longer Drug Non-Carbons
---------
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
* RD and QM coats can hold their telebatons. QM coat can also hold items that a regular jacket can hold (#81301)
## About The Pull Request
RD's and QM's coats can now hold telebatons.
QM's coat can now hold items that any regular jacket can hold, such as
small oxygen tanks.
## Why It's Good For The Game
RD and QM coats were the only head of staff suits that couldn't hold
telebatons (even their winter coats can hold them). Both were added
recently, so I think it's an oversight, but I'm labeling this as a
balance change anyway.
It's also really weird that QM's coat couldn't even hold internals
before.
More consistency for head of staff suits
## Changelog
🆑
balance: RD and QM coats can hold telebatons now
qol: Quartermaster's coat can hold items that a normal jacket can hold,
such as small oxygen tanks
/🆑
* RD and QM coats can hold their telebatons. QM coat can also hold items that a regular jacket can hold
---------
Co-authored-by: cnleth <113535457+cnleth@users.noreply.github.com>
* [FIX] Prevents Buckling Megas, Blobs, Constructs, Slimes, and Dragons (#81287)
## About The Pull Request
fixes#80946
not sure why it borrowed the wrong commit msg
## Why It's Good For The Game
on the one hand it's funny but on the other hand it's dumb to be able to
buckle massive mobs to tiny-sprite objects they might not be able to get
out of without just destroying their own chair - assuming they can,
which in the case of some things you can buckle to, you can't (looking
at roller beds.)
## Changelog
🆑
fix: removed ability to buckle megafauna, constructs, blob minions,
dragons, and slimes.
/🆑
* [FIX] Prevents Buckling Megas, Blobs, Constructs, Slimes, and Dragons
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
* Adds new Role restricted Traitor item: Reticence Assasination Exosuit (#81212)
## About The Pull Request
Adds a decade old item that has been in the code for a LONG LONG TIME
but yet still unobtainable without admin intervention
as a traitor item as it was (supposedly?) designed as
screenshots of the item


and a ameteur demonstration video
https://github.com/tgstation/tgstation/assets/118483925/641dfc9c-d548-4e56-a106-6f85a5c12ad4
Note: this is my first ever addition PR in tgstation, please inform me
if you believe i have made any issues!
## Why It's Good For The Game
makes a decade old mime-themed item, obtainable by mime traitors
this item is a **VERY FRAGILE** silent, fast, "assasination" exosuit
the suit has barely any armor and exactly 100 durability making it
extremely fragile to oncoming attacks, however, it includes a RCD, a
silenced pistol and the ability to punch open structures
effectively making this a glass cannon
personally i think this item should have been obtainable by mime
traitors in the first place, but i dont get why it never was, i believe
it to be a fairly balanced item for any ordinary traitor to use ((unlike
certain items))
so i believe its a good addition
## Changelog
🆑
add: Added Reticence Assasination Exosuit For 20 TC to mime traitors
tweak: makes the mime mech have a air tank by default
tweak: reticence is faster and slightly stronger
/🆑
* Adds new Role restricted Traitor item: Reticence Assasination Exosuit
---------
Co-authored-by: K4rlox <118483925+K4rlox@users.noreply.github.com>
* Science Xenos no longer turn the roundend report all bold (#81311)
## About The Pull Request
Fixes the 2% xeno's roundend report from turning the rest of the report
into bold letters.
## Why It's Good For The Game
look it's not all bold anymore

## Changelog
🆑
fix: Science Xenos no longer turn the entire roundend report into bold
letters.
/🆑
* Science Xenos no longer turn the roundend report all bold
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Cryo tubes will dump legions spawned inside them when opened (#81273)
## About The Pull Request
Someone reported this on discord and didn't make an issue report, gross
Anyway if you get turned into a legion via legion cancer it spawns in
your loc, if your loc is a cryo tube then it only dumps specifically the
person who was placed into the tube rather than all mobs when opened, so
it resulted in a tube which would endlessly spawn legion skulls until
destroyed.
I fixed this by making cryo tubes dump all mobs regardless of how they
are placed into the tube.
I don't think there were _likely_ to be other related edge cases because
xeno larvae use turf instead of loc when created, but I think spawning
in loc is more fun so I fixed that rather than just making it spawn in
the turf.
## Changelog
🆑
fix: Being consumed by the flesh of the necropolis while inside a cryo
tube will no longer convert the tube into a legion spawn point until the
tube is destroyed
/🆑
* Cryo tubes will dump legions spawned inside them when opened
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Makes point_types not be dumb (#81202)
## About The Pull Request
We currently have a list of point types that is meant to be
list(``DEFINE`` = name) but it's completely useless since the define is
just the name anyways. It's not used for anything, it has no purpose to
be this way. It seems more like a holdover from when there were multiple
types of research points (it was made for that purpose, even before
nanite points were a thing) but even for that, it serves no purpose.
I reworked it now to be the abbreviated name of the research point type,
de-hardcoding techwebs a little bit and removing the need for
downstreams to edit the techweb UI.
## Why It's Good For The Game
This at least looks better and makes more sense at people just looking
over it.
## Changelog
No player-facing changes.
* Makes point_types not be dumb
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes ore vents spawning without ores on icebox, sets up map specific ore configurations (#81103)
## About The Pull Request
In short, we used a static list previously within the ore_generation
subsystem that held the amount of each ore that we expected a single map
to uniformly need. We held this number constant, since we were spawning
15 vents per map.
**Pros:** This worked flawlessly for Lavaland since 15 vents on a single
Z level makes it pretty densely packed map with a good amount of
map-based ore spawns, and it worked consistently.
**Cons:** 15 vents did not work well on Icebox however, even when split
so that the majority of the ores were spawning on the lower levels,
players did not feel like icebox spawned nearly enough ores and reported
the map spawning empty.
**Result:** As a result, we adjusted the ratio, so that we spawned
vastly more ores on the lower levels, now up to 4 vents on the upper
level, and 21 vents on the lower level. However, as we were still using
the ore distribution list based on lavaland, icebox vents were quickly
running out of ores to distribute between them, resulting in empty vents
-> which produced empty boulders -> which not only don't really let you
process them properly, but also just result in a metric ton of runtimes.
Icebox now has it's own list of ore distributions. These distributions
are now moved to a set of global lists as opposed to being saved on the
subsystem as a static list, which will make going and setting up new ore
distribution lists very very easy. Additionally, we've moved the setting
and getting of those ore_distributions over to the seedRuins proc, so
that we're actually setting the list of ores right before we actually
place them to make sure that the order that it's set is roughly as it's
needed, while still setting the list at the same time the
map-appropriate ruin placements are dropped in.
**Plus some misc cleanup fixes:**
`var/list/ore_vent_sizes` in SSore_generation wasn't being treated as a
similar budget list as `ore_vent_minerals`, since it `pick()`s off it's
own static size list. Which is honestly fine for this five seconds, I
can handle that later while we make sure the rest of the code code is
stable. In the meantime, I've just tweak it so that it's easy to see at
a glance how many of each random vent has spawned into the map.
Tweaked the description to not include anything about chemical
processing, as I'm planning on hitting on that in a part 2 PR that I'll
be picking back up after the freeze.
## Why It's Good For The Game
Cleans up the code a bit, but primarily fixes ores not spawning on
icebox as they should.
Should fix#81058.
Improves description to not mention mechanics that aren't in game.
Also, cleans up a piece of code that currently isn't serving much of a
purpose.
## Changelog
🆑
fix: Icebox should have it's ore distribution and it's ore vents fixed,
so that vents should now produce ore.
spellcheck: Boulder processing machines now don't mention things they
don't do.
/🆑
* Fixes ore vents spawning without ores on icebox, sets up map specific ore configurations
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Gives paradox clone their own ghost polling icon (#81229)
## About The Pull Request
Currently all ghost roles, when polling for players, shows a syndicate
poster. This is lame as hell, especially since most of the roles aren't
even Syndicate aligned.
This adds support to have your own icons for it, and adds one for the
Paradox clone since I already had an idea for it.
## Why It's Good For The Game
Paradox clones are not syndicate aligned and it does not make sense to
portray that to players, this looks much better, and hopefully soon
other antags will follow suite.

## Changelog
🆑
add: Paradox clones now have a bluespace stream instead of a syndicate
poster as their ghost poll icon.
/🆑
* Gives paradox clone their own ghost polling icon
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Reactions now use volume averaged purity (#81246)
## About The Pull Request
Cause it only makes sense
Currently the purity of reagents created in a reaction is computed as
follows
`total sum of purity of all reagents present / total number of reagents`
This is incorrect because regardless of how much "volume" of an
impure/pure reagent is present the purity of the final solution is
unaffected. Logically if we have more amount of an impure reagent the
more impure the final solution should be & same for opposite case. This
is the case for ph, where if we have a large volume of say "acidic"
reagent then changes in other reagents have a small effect to the
overall "acidity" of the solution. The same concept now applies for
purity as well
`get_average_purity()`accounts for volume thus yielding more realistic
results. The effect becomes more significant with larger volumes of
reagents.
🆑
fix: reactions now compute purity of reagents based on their volume,
meaning larger amounts of reagents created will have more significant
effects on the final purity of the solution
/🆑
* Reactions now use volume averaged purity
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Fixes some irregularities in heretic research tree (#81302)
## About The Pull Request
Once again, I fix a few errors in the heretic research tree:
- the lunar path no longer unlocks its sidepaths and reroll one research
before every other path, and this side knowledge in turn no longer
unlocks the earlier knowledge of the moon path
- blood siphon no longer unlocks apetra vulnera in addition to its
proper main path nodes
- ashen ritual now unlocks the nightwatcher's rebirth, instead of
unlocking the lonely ritual
- lunar blade upgrade is no longer cheaper than those of the other paths
- burglar's finesse now costs 1 point like other knowledge of its level
## Why It's Good For The Game
Heretic tree should not be irregular for no reason, I think. If any of
those quirks were intentional, please let me know.
## Changelog
🆑
fix: smoothed out a few asymmetries in the heretic research tree
/🆑
* Fixes some irregularities in heretic research tree
---------
Co-authored-by: ViktorKoL <44502667+ViktorKoL@users.noreply.github.com>
* Mechs now use proper name when renamed (#81309)
## About The Pull Request
When you rename a mech, it now becomes a proper name.
## Why It's Good For The Game
People give their guns people names, and in my experience people also
give mechs people names, it would be cool if they were referred to
'thing' instead of 'the thing', to encourage that.
## Changelog
🆑
spellcheck: Mechs that have been renamed now are proper names, so are
not described as 'the' mech.
/🆑
* Mechs now use proper name when renamed
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* You can no longer convert objective targets to your blood brother team (#81305)
## About The Pull Request
You can no longer convert your objective targets to your blood brother
team.
This means the usual "commit violence against this user" objectives, but
also includes protect objectives and should (theoretically) prevent you
from converting targets from other conflicting objectives such as
mutiny/sacrifice/obsession targets.
## Why It's Good For The Game
This kind of fucks up the whole antagonist on a conceptual level. Pick
ANYONE else please!
## Changelog
🆑 Rhials
fix: You can no longer convert assassination targets to your blood
brother team.
/🆑
* You can no longer convert objective targets to your blood brother team
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Fix `/datum/ui_state/greyscale_menu_state` for non-atom datums (#81310)
## About The Pull Request
`can_use_topic` returns a UI define like `UI_INTERACTIVE`, not `TRUE` /
`FALSE`
This line is intended to allow greyscale menus to be used when targeting
non-atoms, however it prevents that entirely. #77322
## Changelog
Not necessary since _we_ don't have any GAGS menu usage that targets a
datum... currently.
* Fix `/datum/ui_state/greyscale_menu_state` for non-atom datums
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Automated IV drips now respect the layer set in the plumbing constructor (#81294)
## About The Pull Request
Automated IV drips will now be on the layer set by the plumbing
constructor when created, whereas before they would be built on layer 3
regardless of the set layer
## Why It's Good For The Game
Bug bad
## Changelog
🆑
fix: Automated IV drips will now be on the layer set by the plumbing
constructor when created.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* Automated IV drips now respect the layer set in the plumbing constructor
---------
Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
* Fixes a spurious runtime in AI code (#81253)
## About The Pull Request
Tin.

No more of this. It's been annoying downstream for the past few days, so
here's the fix. `find_this_thing()` should not be getting called when
`controller.pawn` is qdeleted so I just moved that check up a couple
lines.
## Why It's Good For The Game
Makes CI functional again. Tested downstream with 5 CI runs, the runtime
did not occur in any of them where it was happening just about every run
previously.
## Changelog
🆑
fix: fixes a runtime in AI search_tactic
/🆑
* Fixes a spurious runtime in AI code
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* health assembly altclick sanity (#81264)
## About The Pull Request
checks can_interact now
## Why It's Good For The Game
bug bad
## Changelog
🆑
fix: you may not toggle health assemblies from any range, even while
crit
/🆑
* health assembly altclick sanity
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Tinacusiate doesn't futz with things it doesn't need to futz with (#81277)
## About The Pull Request
Rather than replacing the entire raw message, just adds to spans.
Also adds some flavor ™️ while i'm here.
## Changelog
🆑 Melbert
fix: Tinacusiate should break less, and break less things
fix: Speaking to a Sign Languager with Tinacusiate in your system
doesn't mess with their text, because they're not speaking.
/🆑
* Tinacusiate doesn't futz with things it doesn't need to futz with
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* [FIX] Removes accidental? RR from contractor GBJ (#81286)
## About The Pull Request
fixes#80963
previously if the place you got sent from was uninhabitable you'd just
be left for dead. if you were already dead, you might never find out
why.
Now, even if the location you got sent from is fucked, you'll just get
zapped with the heart attack gun and blasted off there anyway.
## Why It's Good For The Game
RRing people to off-map Z-levels with no way of escape is not intended
for contractor afaik.
## Changelog
🆑
fix: fixes contractor abduction RRing people in the offmap hideout
without any feedback. You might not like how it turns out, but your body
will get back to the station now.
/🆑
* [FIX] Removes accidental? RR from contractor GBJ
---------
Co-authored-by: Higgin <cdonny11@yahoo.com>
* Less laughing from trace nitrous (#81223)
## About The Pull Request
Re-open of #80808 post embargo
I've increased the minimum amount of n2o required in the air to cause
giggling. Threshold is still well below the para and sleep values.
This should stop people randomly getting drugged and giggly from trace
amounts of gas.
I'm not gonna lie I had no idea how to fully dial this in, so the
numbers are an arbitrary ~~10x increase from .01 mol to .1 mol~~ 8x
increase from .01 mol to .08 mol.
## Why It's Good For The Game
After "extensive" real life testing I've determined that giggling and
euphoria from trace amounts of the gas is unrealistic.
Also it would be a lot less annoying. @ Cheshify also called it qol so
I'm sticking with that.
<img alt="220f1c0470cef181192facef1374bf5c"
src="https://github.com/tgstation/tgstation/assets/26744576/1f42cc27-24d0-42c1-a233-f0bae9f1aa77">
## Changelog
🆑
qol: Increased threshold of trace n2o required to make euphoria and
giggles happen.
/🆑
* Less laughing from trace nitrous
---------
Co-authored-by: Swift <jackwars4@gmail.com>
* Lowers contractor baton cost. Baton can only be bought by roundstart traitors, while midroll/latejoin traitors cannot buy a baton (They must buy the contractor kit for one). (#81204)
## About The Pull Request
Contractor baton 12 -> 7 TC
Mid/latejoin traitors can no longer buy a baton (They must buy the
contractor kit)
Fix midroll/latejoin traitors having access to roundstart traitor shop.
## Why It's Good For The Game


## Changelog
🆑
balance: Contractor baton costs 7 TC (down from 12 TC)
balance: Midroll/Latejoin traitors can no longer buy the baton, they
must buy the whole kit
fix: Midroll/Latejoin traitors no longer have access to roundstart
traitor exclusive items
/🆑
* Lowers contractor baton cost. Baton can only be bought by roundstart traitors, while midroll/latejoin traitors cannot buy a baton (They must buy the contractor kit for one).
---------
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
* Kills off /obj/item/onetankbomb, assembly bombs now handled by the tank itself (#81218)
* Kills off /obj/item/onetankbomb, assembly bombs now handled by the tank itself
---------
Co-authored-by: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com>
Kicks Martial Arts out of the attack chain (yippee), makes it use signals, plus a large clean up of existing martial arts (#81097)
- Kicks Martial Arts out of the attack chain.
- All Martial Arts attacks are now handled via unarmed attack or grab
signals
- This means all martial arts are now technically on the living level,
allowing any mob that can unarmed attack to martial arts. Sort of. YMMV.
- All martial arts block checking is now handled by the arts themselves,
meaning you can selectively decide for a martial arts strike to not be
blocked. Maybe good for the future.
- A comprehensive cleanup of all existing martial arts. Improving var
names, code, adding some missing animation calls, etc.
Fixes#74829
Untangles the mess that is martial arts, making it a lot easier to work
with the attack chain and making it overall a ton more consistent.
🆑 Melbert
refactor: Big martial arts refactor, they should now overall act a ton
more consistent. Also technically any mob can do martial arts. Let me
know if something is funky.
/🆑
---------
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Gloves changes featuring nerfed shove cuffing (#81187)
<!-- 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. -->
This PR increases cuff time to 4 seconds, but adds a trait for gloves
that makes you cuff 1 second faster. Currently this is placed on black
gloves, the captain's gloves and any other gloves which are used for
combat (like krav maga, any tacklers, and combat gloves). Chameleon
gloves also have this trait so that traitors have a glove choice other
than the somewhat conspicuous combat gloves to help them with
kidnapping, something they may do for objectives or contracting.
It also makes nitrile and latex gloves hide your fingerprints once
again.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Latex gloves not hiding fingerprints was basically done purely for
balance reasons to make them not a direct upgrade over black gloves,
however it bothered me that this made little sense logically and is very
unintuitive and not something that's easy to tell in game. I've
personally arrested multiple people while playing sec using finger print
evidence they didn't even realize I could possibly have because they
thought their gloves would protect them.
Also I don't like playing against shove cuffing, dying because you dared
to stand within 1 tile of a wall or table and got shoved once is unfun
and takes basically zero effort or preparation and is one of the most
effective things you can do to fight someone, it discourages RP because
literally anyone can just turn on combat mode, walk you into the wall
while you're typing and kill you with nothing but a pair a cable cuffs.
This will make it take a little more prep and make you a little more
conspicuous when you intend to do it.
<!-- 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. -->
<!-- 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: Wearing certain gloves (such as black gloves and combat oriented
gloves) allow you to cuff people faster
balance: base handcuffing time is now 4 seconds
balance: latex gloves now hide your fingerprints
/🆑
<!-- 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: SkeletalElite <skeletalelite0@gmail.com>
* Spider egg radial menus now require proximity (#81209)
## About The Pull Request
Spider radial menus now require proximity, and will close if you move
away from them.

## Why It's Good For The Game
Clicking the egg and not picking anything leaves the radial open. If you
try to use any other eggs the menu will not open until you track down
the radial menu and close it properly. If you aren't aware of this,
it'll feel like all of the eggs are broken and lead to confusion. This
has happened to myself and others.
## Changelog
🆑 Rhials
qol: Spider eggs will now close their spawn menu when you move away from
them.
/🆑
* Spider egg radial menus now require proximity
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>