* Completing experiments after their associated nodes have been researched gives back a partial refund of the discount lost (#73814)
## About The Pull Request
So we're like simultaneously moving two vague directions with research.
One being "experisci grants discounts for prohibitively expensive nodes
so you want to do the experiments to discount them" and the other being
"Let's give Heads of Staff a way to research anything they want without
any communication to the research department, including the very
expensive nodes that scientists may be working on"
You already see the issue, right? You can't have your cake and eat it
too.
It sucks for scientists to be working on a complex experiment like
weapons tech for that huge 90% discount only for the HoS to stumble onto
the bridge and research it anyways. Your time is wasted and RND is
slowed down massively.
We can do something to assuage that.
This PR makes it so completing an experiment which discounts already
completed nodes will refund a partial amount of the discount that
would've applied.
For example, researching industrial engineering without scanning the
iron toilets will refund ~5000 points.
This can only apply once per experiment, so if an experiment discounts
multiple technologies, they will only get a refund based on the first
technology researched.
## Why It's Good For The Game
This accomplishes the following:
- Expensive research nodes with difficult experiments remain expensive
without completing the experiments. If no one does the experiment, they
act the same as before.
- Expensive research nodes with very easy experiments (but time
consuming) no longer put RND on a time crunch to beat the itchy trigger
finger of the Heads of Staff. Stuff like scanning lathes allow the
scientists to work more at their own pace: they can talk to people or
maybe stop at the bar or kitchen between departments without feeling
pressure to get it done urgently.
- Scientists are able to complete experiments which previously were no
longer deemed relevant if they need a point injection. Experiments left
behind are no longer completely useless bricks. Maybe even gives
latejoin scientists something to do.
- Scientists mid experiment can still complete it to not feel like their
time is wasted.
Overall I think this has many benefits to the current science system
where many have complaints.
## Changelog
🆑 Melbert
qol: Completing an experiment which discounts a researched tech node
will give a partial refund of the discount lost. For example,
researching the industrial engineering research without scanning iron
toilets will refund ~5000 points if you complete it afterwards. This
only applies once per experiment, so experiments which discount multiple
nodes only refund the first researched.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Completing experiments after their associated nodes have been researched gives back a partial refund of the discount lost
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* A worn item which has its color changed (such as by a slime potion) with now have its color change reflected on mobs. (#73627)
## About The Pull Request
If I'm wearing an outfit and use a slime fireproof potion on it at
present it wont become blue until taking it off and putting it back on
again, this PR makes it so it changes immediately. Also means if an
admin VVs the color value of a worn item its icon worn color will update
to reflect this change immediately.
## Why It's Good For The Game
Bugfix!
## Changelog
🆑
fix: Any worn item that has its color changed will now have its color
change reflected on the item's worn icon immediately.
/🆑
* A worn item which has its color changed (such as by a slime potion) with now have its color change reflected on mobs.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Fixes overloading and deconstructing of the master RND server not affecting research rate (#73569)
## About The Pull Request
Only a traitor removing the HDD would affect the income modifier of the
stored research web.
Updated it so `on_deconstruction` with an HDD present or a ninja
overloading with an HDD preset will also negatively affect the income
modifier.
## Why It's Good For The Game
Fixes#73338
Round impact!
## Changelog
🆑 Melbert
fix: Deconstructing (or overloading) the Master RND server with an HDD
preset will correctly half research rate
/🆑
* Fixes overloading and deconstructing of the master RND server not affecting research rate
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes NtosNet Downloader & App themes (#73500)
## About The Pull Request
NtOS' downloading app is the only application where PC device theme is
actually used by the app directly, instead of handled by NtOS Window. I
forgot about this, and removed it from the data, breaking the TGUI page.
Also two edits;
- NtosWindow now takes their theme directly from PC_device_theme, this
means we're not relying anymore on apps to individually give the theme
they want to have, and tablets will get alerts of downloading illegal
programs if they are on any theme but the syndicate one (instead of not
getting the message if theyre on any but the nt one).
- Removes bad uses of ``as anything`` on stored files, because it holds
more than just programs (like ordnance data).
## Why It's Good For The Game
the NtOS app now works again, sorry for the issue.
Closes https://github.com/tgstation/tgstation/issues/73493
Closes https://github.com/tgstation/tgstation/issues/73507
## Changelog
🆑
fix: NtOS program downloader now works again, and will now properly
alert you of downloading illegal ROMs if you change your theme to
anything that isn't Syndicate.
fix: NtOS themes are now recognized by all windows.
/🆑
* Fixes NtosNet Downloader & App themes
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Reworked PDA menu & NtOS themes (#73070)
## About The Pull Request
This is a port/rework of
https://github.com/yogstation13/Yogstation/pull/15735 - I changed a lot
of how it acted (some themes are locked behind maintenance apps).
The original author allowed this port to happen, and I really liked how
it looked there so I'd like to add it here.
### Applications
Removes the hardware configurator application, as all it did was show
you your space and battery now that all hardware was removed. These are
things your PC does by default, so it was just a waste of space.
Adds a Theme manager application instead, which allows you to change
your PDA's theme at will.
Adds a new Maintenance application that will give a new theme, however
it will also increase the size of the theme manager app itself as it's
bloatware.
### Menu
There's now a bar at the top of the menu showing 'special' tablet apps
which, for one reason or another, should stand out from the rest of the
apps. Currently this is PDA messenger and the Theme manager
Flashlight and Flashlight color is now only an icon, and is shown on the
same line as Updating you ID
https://cdn.discordapp.com/attachments/961874788706574386/1069621173693972551/2023-01-30_09-10-52.mov

### Themes
Adds a lot of themes to choose from, although SOME are hidden behind
Maintenance applications, which will give you a random theme. These are
bloatware however, so they come with some extra cost to the app's
required space storage.
Themes are now supported on ALL APPLICATIONS! If you have a computer
theme, you will have that theme in EVERY app you enter, rather than just
a select few.
ALSO also, emagging the tablet will automatically set & unlock the
Syndicate theme, which makes your PDA obvious but you can disguise it if
you wish through just re-painting it to something else.
https://cdn.discordapp.com/attachments/828923843829432340/1069565383155122266/2023-01-30_05-29-53.mov
### Preferences
This also adds a pref for theme, reworking the ringtone code to work
with it as well. I also removed 2 entirely unused PDA prefs just 'cause.
Screenshot not up-to-date, they now have proper names.

### Other stuff
Made defines for device_themes
Added support for special app-side checks to download files
Fixed programs downloading themselves TWICE because defines all had the
same definition
Removes the Chemistry computer disk as it was empty due to chemistry
app's removal
Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
Moved over and added better documentation on data computer files, and
moved the ordnance ones to the same file as the others.
## Why It's Good For The Game
It makes PDAs a lot more customizable while adding more features to
maintenance applications. I think the themes look cool and it fits with
PDAs being "personal" anyways.
I also explained most of my other arguments in the about section, such
as the hardware configuration application.
## Changelog
🆑 Chubbygummibear & JohnFulpWillard
add: A ton of new NtOS themes, which are accessible by the new Themify
application that comes with all PCs.
add: Emagging a PC now defaults it to the Syndicate option (and adds it
to go back to it if you wish)
add: There's a new maintenance app that gives you rarer themes
qol: The NtOS Main menu was moved around, added "header" applications
that are shown where the Flashlight is, such as your Theme manager and
PDA messenger.
code: Made defines for device_themes
code: Added support for special app-side checks to download files
code: Removes the 'run_emag' proc, since apps can directly refer to the
computer to check for emag status instead.
fix: Programs no longer download twice.
del: Removes the Chemistry computer disk as it was empty due to
chemistry app's removal
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Reworked PDA menu & NtOS themes
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event (#73024)
## About The Pull Request
This PR description might be a bit rushed because I accidentally
submitted the PR and want to bang out a quick explanation of what this
is before people start asking questions.
Adds a new, rare, ghost-themed anomaly event -- The Ectoplasmic
Outburst.

This event increases in power as more ghosts orbit it, with three
important thresholds to meet.
If 10% or more of all active observers are orbiting the anomaly, an
effect will occur in the nearby area akin to the revenant's defile
spell, damaging flooring, windows, and making a mess.
If 35% or more are orbiting the anomaly, nearby objects in the effect
radius have a chance to become haunted, and will fling themselves at
anyone nearby for a bit. Spooky!
Now, at 50% or more participation, things get serious. Ghosts orbiting
the anomaly will be polled to be brought back into the world for a brief
period as a vengeful spirit, anchored to a SUPER spooky ghost portal.
The portal closes after two minutes (alternatively, smash it with a
toolbox) and deletes all of the ghosts it spawned. Vengeful spirits are
mostly just meant to smash stuff and be a nuisance while they can. It's
a wonderful opportunity to let deadchat desalinate a little.

Oh, also, the anomaly is deadchat controlled. With enough ghosts, you
could theoretically outrun anyone trying to neutralize it!
The associated reactive armor has an effect similar to the anomaly,
haunting nearby objects for a time when the wearer is struck. Not
particularly outstanding, but it can introduce an element of chaos into
a fight that your opponent might not expect.
## Why It's Good For The Game
Anomaly events are great for ghosts. Why not make one tailored just for
them!
Gives admins something to spawn when a wizard has killed half of the
crew but it's not quiiiite time for an ERT.
It's a bit of a silly event with a novelty reward, but I think it's rare
enough not to be a huge issue.
## Changelog
🆑 Rhials
add: Ectoplasmic Outburst anomaly event
add: Reactive Ectoplasm Armor
/🆑
* Adds the Ectoplasmic Outburst, a rare ghost-centric anomaly event
---------
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* Dominate & Lazarus Inject basic mobs. Lazarus Injected mobs don't fight each other. (#72440)
Fixes#72404
The Lazarus Injector doesn't currently work on basic mobs, but should.
Problem:
The EMPed state of the Lazarus Injector is intended to make a revived
mob hostile to everyone except you, including other mobs you have
revived wtih an EMPed Lazarus Injector.
This is trivial to achieve for Simple Mobs which essentially all share
the same AI, but I could not think of a single workable solution for
Basic Mobs which don't, or at least any which didn't come with a tedious
requirement to closely consider this niche item when programming any
additional AI.
Solution:
Change the default behaviour of the Lazarus Injector so this is not a
problem.
If all it does it make the mob loyal to you _and_ friendly to other mobs
which are loyal to you, then it's pretty easy because we can just use
the existing faction flags.
This is unambiguously a buff to using the item for nefarious purposes as
now if you revive four ice drakes and fulton them onto the station they
won't kill each other until only one is left, but is the only workable
solution I could really think of.
A lot of the very dangerous mining fauna can't be dragged so
transporting your army to the station still poses a question.
The alternate solution was just to replace the AI controller of any
emp-revived basic mob with a "zombie" AI controller, but this has the
problem that
A- It would now make things like cows and dogs into hostile creatures
when they previously weren't.
B- It loses any interesting behaviour the mob previously had and for
cases like Bileworms doesn't even make any sense (they'd try to walk and
just get stuck in place).
This ultimately leads to needing to make bespoke versions for various
mobs, which doesn't seem desirable from a maintainability standpoint.
As a side note it's still not a great idea to revive Bileworms _anyway_
as, their ability to move is tied to their ability to attack so once
they don't have a target they will just kind of sit there and if they
_do_ get a target their attempts to help you fight are difficult to
distinguish from attempts to kill you... but at least being able to
revive them makes it easier to make one sapient if you really want to
trap a player's mind inside a body which is incapable of leaving
lavaland.
Additional edit:
At Fikou's suggestion I've also added a sentience comparison proc to
`mob/living` and removed some code duplication which dealt with this
problem in the sentience/mind transfer potions, as well as added it to
the Dominate spell.
This device is meant to revive mobs and it shouldn't be required for
players to memorise an arbitrary list of which mobs it does and doesn't
work on.
Especially as the goal is eventually that all simple mobs should be
basic mobs.
This way of working is more intuitive, even if it is also stronger. I
was surprised when I used EMPed injectors and my "new minions" just
killed each other.
🆑
fix: You can now revive 'basic mobs' with a Lazarus Injector, such as
dogs, cows, axolotls, or carp.
fix: The same category of mobs can also now be effected by the Runic
Golem Dominate spell.
fix: Basic Mobs will switch target if they can no longer attack their
current target; meaning that if you become a Bileworm's friend it will
stop attacking you.
balance: Mobs injected with the Lazarus Injector while it is EMPed will
no longer attack other mobs revived by EMPed Lazarus Injectors.
/🆑
* Update code/modules/research/xenobiology/xenobiology.dm
* Update code/modules/research/xenobiology/xenobiology.dm
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Vox clowns and mimes now spawn with their masks, added gas mask filters for vox
Fixed vox clowns and mimes not spawning with their job-related masks.
Added said job related masks.
* Moved the gas masks out from breath and into gasmask.dm
* Fixes unused proc from tg that is used on Skyrat
give_important_for_life() proc is a cleaner way to do the vox outfit-giving but I noticed it was not working. The proc itself was bugged, fixed it.
* Update species.dm
* Revert "Update species.dm"
This reverts commit 5b737965f573258211dc219fb6399284cdee8749.
* Revert "Fixes unused proc from tg that is used on Skyrat"
This reverts commit 3d8219a347cee0c17e99d4de32f5ebb3d70585cb.
* Fixes give_important_for_life() proc
give_important_for_life() proc is a cleaner way to do the vox outfit-giving but I noticed it was not working. The proc itself was bugged, fixed it.
* revert skyrat edit, wait for upstream PR to merge
* Fixes potential issue with null jobs, handle vox outfits properly for 'other vox'
* Removed gas filtering flags on the clown and mime masks
* Fixes a balaclava that made you go bald
* Created missing sprites for the alternate versions
Now you can change the style with the radial menu
* ocd edit
* No longer needed as it is handled within equip
* Merge conflict update..
* No longer needed after the update to equipOutfit
Opening internals in hand slots is now done automatically there #19054
* Do not alert admins when an inert BoH is made (#73185)
## About The Pull Request
Removes the `dangerous_construction` variable that was only used by the
BoH, as well as the admin message sent when an inert BoH was printed.
## Why It's Good For The Game
Since the bag of holding changes, admins don't need to know when an
inert BoH is printed.
## Changelog
🆑 Tattle
admin: Admins are no longer alerted when an inert BoH is printed
/🆑
---------
Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Do not alert admins when an inert BoH is made
* Update bluespace_design.dm
---------
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Renames Datum Parts above tier 1 accordingly to their tier.
* Makes it so all of our machine also use the datum stock parts, because that's also important
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds nutriment factor to liquid gibs. (#73033)
## About The Pull Request
Over the years I've heard quite a few lizard players scratch their heads
in confusion due to the lack of gibs filling you up. I gave it a fairly
low value of 2 so people don't end up trying to power game it.
## Why It's Good For The Game
Adding an alternative use to gibs is always nice, at the moment it's
mostly just used for soap and cytology (Which barely anyone does.)
## Changelog
🆑
balance: Gibs now provide a small amount of nutriment.
/🆑
* Fixes the modular uses of liquid gibs
* Fixes an error that somehow slipped through.
---------
Co-authored-by: carshalash <carshalash@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Don't initialize stack components inside machines (#72863)
## About The Pull Request
An attempt at the
[Initiative](https://github.com/tgstation/dev-cycles-initiative/issues/29)
all types/subtypes of `obj/item/stack` no longer exist inside any
machine. Only during deconstruction is the stack created from the
circuit boards requested components.
Also moved the component printer & module duplicator circuitboards into
`machine_circuitboards.dm` so they all are in one place
I was unable to do this for circuitboards because that still needs to
exist so we can use `apply_default_parts()` on the machine. I tried to
do the whole datum circuitboard approach just like with stock parts but
i'm unsure about it so maybe next time
## Changelog
🆑
refactor: stack components no longer exist inside a machine's
component_parts
refactor: move component printer & module duplicator circuitboards into
machine_circuitboards.dm
/🆑
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Xenobiology regenerative sepia crossbreed usage's description is corrected (#73143)
Changes the description of the "regenerative sepia crossbreed" to tell
what it actually does : Fully heal, then "déjà-vu" on the position it
was used.
* Xenobiology regenerative sepia crossbreed usage's description is corrected
---------
Co-authored-by: Tristrian <Tiago.A.C.9@hotmail.com>
Crafting light switches, request consoles, telescreens, and ticket machines (#72859)
## About The Pull Request
Breaking down #72371 because it's... unreasonably large.
So this PR adds recipes for light switches, request consoles,
telescreens, and ticket machines. Ticket machine frame by Kryson.
You can't print all of the telescreens, like the head of staff ones, but
the general department ones can be printed in their respective
departments.
## Why It's Good For The Game
Wallening compliance, and more of me on my shit breaking down long
files.
## Changelog
🆑 Tattle, Kryson
qol: light switches, request consoles, telescreens, and ticket machines
can now all be printed from lathes
/🆑
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
* Clarifies that TRAC bullets are not teleporter compatible (#73141)
## About The Pull Request
The detective's TRAC bullets embeds tracking implants into people. This
implants works similarly to the injectable tracking implant, such as
with the Prisoner Console or the Bluespace Locator. However, it has
`allow_teleport` set to false, preventing it from being used on the
teleporter. This has not been communicated in game, unless if you take
out the implant from whoever you shot, and stuck it inside the implanter
pad to read its in detail description.
This PR updates the ammo box and the design datum's description, to make
this clearer.
## Why It's Good For The Game
Closes#73121 , if a future detective examines the box, they will know
not to walk into the teleporter room to set up an ambush.
## Changelog
🆑
spellcheck: Clarifies that TRAC bullets are not teleporter compatible
/🆑
* Clarifies that TRAC bullets are not teleporter compatible
---------
Co-authored-by: Profakos <profakos@gmail.com>
[NO GBP] Lazy Template Cordoning | Double Runtime Fix (#72709)
## About The Pull Request
Adds automatic cordoning to block reservations.
Also fixes an issue where ChangeTurf would cause SSicon_smoothing to
throw runtimes by calling QUEUE_SMOOTH regardless of initialization
completion
## Why It's Good For The Game
## Changelog
---------
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Adds Axolotls to List of Cytology Creatures (#72924)
## About The Pull Request
Adds axolotls to list of cytology creatures. Edits the name of the cells
for frogs by changing to "anura amphibian cells" and for axolotls,
"caudata amphibian cells." These mean both "frog" and "salamander"
amphibian cells respectively. Also makes axolotls swabbable, adds their
cell lines to fern's list, and they are now distinguishable from the
frog's reagent lists.
## Why It's Good For The Game
Adding more thing to cytology is always good. Frogs could be grown but
not axolotls despite them coming from the same place and are amphibians.
Adds more ways to get axolotls and another reason why you should do
cytology.
Reinforces the PR
([https://github.com/tgstation/tgstation/pull/72922](url)) I added for
amphibian cytology.
## Changelog
🆑
add: Axolotl lovers rejoice! I added axolotls to cytology and as such
are now swabbable.
add: Frog cells are now named "anura amphibian cells." This literally
means "frog amphibian cells."
add: Axolotl are "caudata amphibian cells." This literally means
"salamander amphibian cells."
/🆑
---------
Co-authored-by: ophaq <44999764+ophaq@users.noreply.github.com>
Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com>
Add clown firing pin to techweb (#72930)
## About The Pull Request
This adds the clown firing pin to the `Clown Technology` node.
## Why It's Good For The Game
Clown technode should have all the funny clown items. The firing pin is
something you get from cargo, but I think it's okay to have it as a
techweb item since it requires `bananium` which is one of the rarest
ores in the game.
## Changelog
🆑
qol: Add clown firing pin to techweb
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Add mining scanners to techweb (#72931)
## About The Pull Request
This adds basic mining scanners to the `Mining Technology` node
## Why It's Good For The Game
A mining scanner is a basic tool, much like mesons or a bag.
It should be available to any person who wishes to mine for ore. There
are a limited number of them on the station that can run out and this is
a good way to encourage more people to mine since it's apart of the
basic kit.
## Changelog
🆑
qol: Add mining scanners to techweb
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Adds the universal scanner to lathes (#73006)
## About The Pull Request
Adds the basic tool back to autolathes and cargo protolathe
This was in the game before #70314 so I think it's a fix more than an
addition, but whatever
## Why It's Good For The Game
Sometimes I like to sell things from custom vendors and I don't want to
have to hunt down a roundstart cargonian just to get a price tagger.
## Changelog
🆑
add: You can print universal scanners (export scanners, price taggers,
sales taggers) from the lathe again
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Checks if a machine has no research before connecting techweb (#72944)
## About The Pull Request
Currently all machines, if the config to not have a techweb link is on,
will set their node to science even if they were meant to be connected
to another (like through subtypes). This fixes that by checking to
ensure they don't have a techweb connected already before giving them a
new one.
Also as a minor fix, RD consoles will now properly add themselves to the
list of accessing RD consoles if they aren't linking to the default.
This list currently does nothing but I can see good uses of it in the
future.
## Why It's Good For The Game
Fixes an error that was found on a downstream, it's a worthwhile fix
that thankfully was caught this early.
## Changelog
Nothing player-facing.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Add advanced fire extinguisher to techweb (#72933)
## About The Pull Request
This adds the advanced fire extinguisher to the `Experimental Tools`
node.
## Why It's Good For The Game
There are several advanced engineering tools in this node. This is an
item that is considered a better version of a regular fire extinguisher
for atmos techs. It makes sense to put this with the other upgraded
tools in techweb, since ya know, it's technically an advanced version.
It does spawn empty, so it needs to be refilled with a foam tank
dispenser.
## Changelog
🆑
qol: Add advanced fire extinguisher to techweb
/🆑
Co-authored-by: Tim <timothymtorres@gmail.com>
Mint can gib obese people again (#72970)
## About The Pull Request
Changes minttoxin(a toxin) to mintextract(a food).
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/72969
The chef's mint is intended to gib fat people. Due to
https://github.com/tgstation/tgstation/pull/70764, liver functionality
was reworked so that instead of being purged rapidly, toxin's in a mobs
system with 3 units or less have no effect. Since the chef's mint only
has 2 units of mint toxin, it's intended functionality is impossible
under normal circumstances.
By changing the reagent type from toxin to consumable, it restores the
ability to gib.
## Changelog
🆑
fix: Mint Toxin(a toxin) has been changed to Mint Extract(a food). The
chef's mint can once again gib, fatties beware.
/🆑
Co-authored-by: the-orange-cow <76538214+the-orange-cow@users.noreply.github.com>
* adds atmospheric gloves, small resprite of firefighter gear, repaths stupid glove paths (#72736)
repaths a lot of gloves off /color because they were incredibly stupid
firefighter gear has gotten an update (it doesnt cover hands anymore
though, you need something else)
firefighter helmets no longer hide your mask or glasses

fixed engine goggles starting with darkness vision
to the atmos lockers adds atmospheric gloves, a pair of thick (chunky
fingers) gloves that are fireproof and fire protective, slightly shock
resistant and let you fireman carry people faster.
atmospheric firefighter helmets now are a subtype of welding hardhats,
you can enable a welding visor.
welding hardhats change mode with right click instead of altclick
im not a good spriter but i think this resprite makes them fit nicer
with other engi equipment
lets me firefighter rp
🆑
add: Atmospheric Gloves, thick gloves that are fully fireproof and fire
protective and let you fireman carry people faster.
fix: fixes engine goggles starting with darkness vision
qol: firefighter helmets can now enable a welding visor
qol: welding hardhats change mode with right click instead of altclick
balance: firesuits no longer protect your hands
/🆑
* Makes shit compile
* Updates the digi and snouted stuff to match the new sprites (thanks Halcyon!)
* Fixes a whole ton more issues that popped up
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Add shovel to cargo lathe (#72937)
## About The Pull Request
This adds the shovel to the cargo lathe. It can now be printed from
autolathe, service lathe, or cargo lathe.
## Why It's Good For The Game
The shovel is a basic mining item that spawns in a few places. Mainly it
spawns in mining areas, but it also spawns in some gardens. It would be
a good idea to add it to the cargo lathe for consistency.
## Changelog
🆑
qol: Add shovel to cargo lathe
/🆑
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Adds the 2 new components to the techweb (#72910)
## About The Pull Request
Adds the 2 new components I made in my prior PR to the basic circuit
research
also fix an issue with associative pick list
## Why It's Good For The Game
Being able to print them would be usefull
Reason I didn't notice was properly since I ran on debug station and it
never crossed my mind that they where research thingy
## Changelog
🆑
fix: You can print the new list pick and associative list pick
components
fix: Associative list pick works as intended now
/🆑
Co-authored-by: Autisem <36102060+Autisem@users.noreply.github.com>
* Stock Part Datumization Complete (#72559)
So i accidently reverted all my commits in #72511 when resolving a merge
conflict So ummm yeah fuck my bad anyway
Finishes what was started in #71693 and completes the
[initiative](https://github.com/tgstation/dev-cycles-initiative/issues/1)
Except for `obj/item/stock_parts/cell` and its subtypes. All machines
now use `datum/stock_part` for its requested components & component
parts
Not sure if i caught every machine & stuff in the game so merge with
caution
🆑
code: datum stock part for every obj stock part
refactor: all machines & dependent experiments to use datum stock parts
/🆑
* Fixes a teeny tiny Funce mistake :)
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Categorizes uncategorized items in techweb, also recategorizes others for sanity reasons (#72689)
## About The Pull Request
Mostly did this for my own sanity in trying to find stuff that's mixed
together in a blob of a subcategory (or completely not in one like the
grinder). This primarily affected the Cybernetics and implants as a
whole but touches some engineering stuff as well. I sort of
universalized the code to make it easier to visually adjust things - i
didnt touch existing stuff that i didnt need too however but if we want
that i can do that.

If you see any verbiage changes/category changes or want more broken
down (Security and Engineering have some i think that could be broken
apart i just couldnt think of the best way) let me know
## Why It's Good For The Game
Making things uniform across the board in appearance makes it easier for
people to find things, Now finding the organ you want will quickly show
the most advanced one you have for example.
<details>
<Summary>Some Screenshots of the new look</Summary>
Cyber Organs are now tiered based on their coding (Ears are oddly named
and i was thinking of fixing it to match but wanted input there)

The grinder now doesnt float in no-mans land at the top of protolathes

Electronics and Construction assemblies are segregated

Gas filters are no longer gas tanks and are just equipment now

</details>
## Changelog
:cl:Zergspower
qol: Protolathes and the like had their printable items categorized
further
fix: fixes a few uncategorized items in protolathes and the like
refactor: Cleaner techweb code with more categories to break apart
individual printable items at proto/mech fabs
/🆑
* Updates the category define usages on our modular medical designs files
Co-authored-by: Zergspower <Griffinj88@yahoo.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Autounlock techwebs are shared between machines that use them. (#72515)
## About The Pull Request
Did you know that for every Autolathe, Limbgrower, Biogenerator, ORM,
and Smelter that was built, an entire new techweb was made? The average
round has 2 ORMs (smelters count) if not more from ORM deconstruction
objective, 2 biogenerators, several autolathes and generally 0-1
limbgrower, I think there's more techwebs being created than we need.
Creating a whole techweb was a pretty terrible way to optimize this, so
I made a global list that stores these techwebs. Created on demand,
these autounlocking techwebs now share between the machines that use
them. It also generate all hacked nodes which will be visible if the
machine is hacked, instead of 'researching' them for each hacked
individual machine.
The 'specialized' techweb subtype was removed because its sole purpose
was to allow autounlocking to be a subtype of it. Now autounlocking is
just the direct subtype. I also removed mechfab autounlocking type
because it wasn't used, mechfabs use techwebs directly.
Autolathes and Limbgrowers now locally store 'imported designs' which
are things uploaded from technology disks. Outside of this, the
autounlocking techweb subtype now stores 'hacked designs' which unlocks
when the machine is emagged.
While doing this, I saw ORMs and Biogenerators had disks you can insert
into them, but I did not find anything that can actually be uploaded to
them (I saw Alien Alloys as a possibility, but there's no such disk to
allow uploading this alloy to the machine, and I didn't think an entire
system for 1 single alloy was worth keeping around), so I removed this
unused feature from both machines.
I merged 'Hacked' and 'Emagged' categories because they served the same
purpose, 'hacked' being on hacked autolathes and 'emagged' being on
hacked (emagged) limbgrowers.
Tech disk techwebs (which is created every time a disk is made, however
I hope to change this in the future) into it's own subtype, so admins
understand where its from when looking in VV panel (because I was
confused when I saw them at first).
``autolathe_crafted`` proc was removed because it was entirely unused
too.
Now it looks like this, which I consider an improvement:

## Why It's Good For The Game
We no longer initialize a brand new techweb for no reason whatsoever.
Each techweb made is making entire lists of experiments and research
papers, all of which is never to be seen in-game and is completely
useless to the player. Cutting down on these techwebs is a good first
step to this needless initializing.
## Changelog
🆑
qol: Removed the tech disk part of the ORM's UI as it was entirely
unused, now it's a little more compact with less scrolling needed.
refactor: Autolathes, Limb growers, Biogenerators, ORMs and Smelters now
share techwebs with other machines of their types, rather than all make
new techwebs each time. This means they only build their nodes once,
including hacked ones. Instead of researching nodes on hacking the
machine, they now show hacked ones depending on if it's hacked.
/🆑
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Autounlock techwebs are shared between machines that use them.
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Biogen shows default reagent container icons instead of beakers (#72247)
## About The Pull Request
With the new crafting menu some reagents now have default container
assigned.
I applied these to visualize reagents in biogen UI too.
<img alt="060ybChTkI"
src="https://user-images.githubusercontent.com/3625094/209483256-e4159a05-46ae-47b8-bc42-9d003cf6c303.png">
## Why It's Good For The Game
Better representation of a reagent.
## Changelog
🆑
qol: Biogenerator shows default reagent containers instead of beakers
/🆑
* Biogen shows default reagent container icons instead of beakers
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* [no gbp] removes all duplicate armor datums (#72354)
closes#72348
Title
My bad
Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;
var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();
foreach (var file in allFiles)
{
var fileLines = File.ReadAllLines(file);
for (var i = 0; i < fileLines.Length; i++)
{
var line = fileLines[i];
if (line.StartsWith("/datum/armor/"))
{
var armorName = line.Replace("/datum/armor/", "").Trim();
if (!known.ContainsKey(armorName))
known[armorName] = new List<KeyValuePair<string, int>>();
var knownList = known[armorName];
knownList.Add(new KeyValuePair<string, int>(file, i));
}
}
}
Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");
var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
var actuals = entries.Skip(1).ToList();
foreach (var actual in actuals)
{
if (!duplicates.ContainsKey(actual.Key))
duplicates[actual.Key] = new List<int>();
duplicates[actual.Key].Add(actual.Value);
}
}
Console.WriteLine($"There are {duplicates.Count} files to update.");
foreach (var (file, idxes) in duplicates)
{
var fileContents = File.ReadAllLines(file).ToList();
foreach (var idx in idxes.OrderByDescending(i => i))
{
string line;
do
{
line = fileContents[idx];
fileContents.RemoveAt(idx);
}
while (!String.IsNullOrWhiteSpace(line));
}
File.WriteAllLines(file, fileContents);
}
```
* modular
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Add lints for idiomatic balloon alert usage (#72280)
Adds lints for `balloon_alert(span_xxx(...))` (which is always wrong),
and balloon alert where the first letter is a capital (which is usually
wrong). Fixes everything that failed them. As a reminder, abbreviations
like "AI" and "GPS" shouldn't be capitalized in a balloon alert.
In cases where this is intentional for flavor (there was one case), you
can `UNLINT` like so:
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* RPED can pick up & install circuit boards in machine frames (#72540)
* RPED can pick up & install circuit boards in machine frames
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Crafting/Cooking menu update
* Yeeted away all of the merge conflicts, time to fix the code
* Okay, now it compiles, and after testing, it seems to work just fine
* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu
* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Removes the accounting console board from the sec lathe and moves it to the service lathe (#72276)
## About The Pull Request
Removes the design for the accounting console circuit board. There is
now a replacement circuit board in the HoP locker.
This PR is mainly meant to address a downstream issue, but I figure I
should make the PR up here first.
## Why It's Good For The Game
It's the HoPs job to monitor and handle the accounting console, not
security's. This will encourage security to co-operate and talk with the
HoP if they need to monitor purchases.
## Changelog
🆑
balance: Moved the account console board to the service lathe
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Removes the accounting console board from the sec lathe and moves it to the service lathe
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Basic Mobs can run away (#71963)
## About The Pull Request
That's right I'm still atomising #71421, some day I might even post
something related to carp.
This PR adds various behaviours to basic mobs allowing them to run away,
in a couple of variations.
Mice will flee from anyone who doesn't share their factions, at all
times (so they will scatter from most humans, but not regal rats).
Rabbits and Sheep will flee from anyone who has attacked them.
Pigs will run away from people who have attacked them, but only if
they're below half health.
https://user-images.githubusercontent.com/7483112/207127135-d1737f91-d3f7-468a-ac60-7c7ae5d6623d.mp4
Mice are still plenty catchable because they don't run _very far_ (or
very fast) but I think the chase will be good enrichment.
To achieve this I had to change the signal COMSIG_CARBON_HEALTH_UPDATE
into COMSIG_LIVING_HEALTH_UPDATE but frankly the latter seems more
sensible anyway.
## Why It's Good For The Game
More behaviours to use later when designing mobs, gradually gives mobs
more things to do rather than just sort of moving aimlessly around the
area you left them in.
It'll give people hunting rats in maintenance some exercise.
## Changelog
🆑
add: Mice will now run away from you, you have to catch them if you want
to eat them. Use those traps!
add: Rabbits, Sheep, and Pigs likewise won't just sit there and let you
pulverise them if they can see an escape route.
/🆑
* Basic Mobs can run away
* Modular!
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>