* Canisters: Wires, Rigging and Screentips (#80265)
## About The Pull Request
Added 6 wires to gas canisters, accessible when you screw open the panel
Toggle valve, toggle shielding, min pressure, max pressure, eject tank,
toggle reaction suppression (only works with hypernob crystal'd
canisters)
Pulsing the wires only works if the canister has a cell
You can attach dual assembly combos to canisters too, doesn't have to be
an igniter combo, could be a prox-signaler or timer-signaler. These are
visible on the canister sprite and can be removed by right-clicking the
canister. Visible assemblies don't trigger anything inside the canister,
it's like taping it to the canister, also looks more menacing.
Also added screentips to canisters
## Why It's Good For The Game
Emergent gameplay, more possibilities with atmos automation and
contraptions, can make traps like a proximity sensor N2O canister in
maint for cult conversions, anything
AND YES EVERYTHING IS LOGGED NO STEALTH GRIEFING POSSIBLE
## Video
https://github.com/tgstation/tgstation/assets/46101244/922465b3-9f9c-4b7b-8769-fca6df3b87a3
## Changelog
🆑
add: Canisters now have wires! You can pulse wires to do various
canister functions like opening/closing the valve. Make sure it has a
cell though.
add: You can rig assembly combos (igniter-timer, prox-signaler, etc.)
onto canisters
qol: Canisters now have screentips
/🆑
* Canisters: Wires, Rigging and Screentips
---------
Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
* changes mutiline text to multiline text in vv (#80535)
## About The Pull Request
this has been a bug for like 10 years
## Why It's Good For The Game
lol
## Changelog
🆑
spellcheck: changes mutiline text to multiline text in vv
/🆑
* changes mutiline text to multiline text in vv
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Making the camera circuit actually work again, and letting it work while held. (#80533)
## About The Pull Request
Alternative title: Hidden Pocket Camera Circuits! _(That Actually
Work)_.
So camera circuits have been broken for a while, and looking deeper into
it this seems to be because at some point someone moved the user check
for customization to before actually creating the picture item. Because
camera circuits rely on calling the `captureimage()` proc with a null
user, this made it so no image was ever printed nor were the photos left
decremented.
Similarly, multiple times I've encountered people being confused about
why their camera circuit isn't even trying to proc while held or hung
around their neck. So I decided to add a check to the `can_target()`
proc for whether it's on a carbon and what it could see from the given
carbon. This allows it to work while held, while hung around one's neck,
and while hidden sneakily in one's pockets. Well, insofar a bright flash
and camera snap are sneaky.
Notably it doesn't work when put in a bag in your inventory. While
having it work from a briefcase would be _incredibly_ funny, that's
outside of the scope of this pr.
Additionally, it felt weird for it to just drop the picture while
procced in your inventory, so I made it first try to put the printed
picture in the carbon's hands if at all possible.
While looking through the code, I also found that there was a typo in
where the circuit calls `captureimage()`, where `camera.picture_size_y`
was used in place of where `camera.picture_size_x` should be.
## Why It's Good For The Game
It makes camera circuits actually work again.
As for having them work while on a carbon, I've encountered multiple
people who were confused about their camera circuits not even _trying_
to proc while held or hung around their neck, when logically they
should- it's visible, after all. Hell, when held it works manually, but
not with a circuit!
Then, camera circuits working in one's pockets were a side-effect of my
first naive fix, and I thought it'd be neat to keep in; the ability to
make hidden pocket cameras just sounds cool to have. They're also only
hidden insofar you can still see the flash and hear the snap.
## Changelog
🆑
fix: Camera circuits actually print pictures again!
qol: Camera circuits can now take pictures while on a carbon, whether
held, hung around the neck, or sneakily hidden in either pocket. When
held they try to deposit their pictures into the holder's hands if
possible.
fix: Camera circuits should now actually use the camera's x axis picture
size, rather than using the camera's y axis picture size setting for
both axis.
/🆑
* Making the camera circuit actually work again, and letting it work while held.
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* Fix: Allow PAI to wake up (#80541)
## About The Pull Request
Fixes#66760FixesSkyrat-SS13/Skyrat-tg#25745
This PR fixes a bug which causes Personal AI cards to be unable to wake
up from sleep.
Currently, emotes such as "collapse" effectively cause PAI to go into a
coma, which I tested on both TG and Skyrat.
We noticed a similar issue was fixed in PR #77857 in a very direct way,
so I copied that fix.
## Why It's Good For The Game
- Allows PAI to safely get knocked-out and wake up.
- Allows PAI to safely emote knockout-applying emotes such as "collapse"
and "faint" without going into a coma.
- Successfully tested!
## Changelog
🆑 A.C.M.O.
fix: Fixed Personal AI cards, allowing them to wake up from sleep.
/🆑
* Fix: Allow PAI to wake up
---------
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
* Revert "Fixes observers spamming admin logs when observing themselves" (#80470)
Reverts tgstation/tgstation#80407Fixes#80460Fixes#80485
I don't think this was a good fix, we should be preventing people from
observing themselves outright. Not "they can observe themselves but skip
the actual observe-part of observing".
Also it breaks observing.
* Revert "Fixes observers spamming admin logs when observing themselves"
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* More optimizations for reagent code (#80529)
## About The Pull Request
1. Removed offsetting reagent volumes by the quantization/rounding
constants before comparing values. Not required since the final total
volume is rounded inside the reagent holder anyway.
2. Removed excessive calls to the hottest proc in reagent code i.e.
`update_total()` per reaction step. Speeds up reactions even more.
3. Removed rounding of volumes (like in liver, pyrotechnics, overheated
reactions) where the volume is already rounded inside the holder.
4. Avoid calling `handle_reactions()` if the holder is already reacting
when adding new reagents.
## Changelog
🆑
code: removed excess calls to `update_total()` making reaction code
slightly faster.
code: removed excessive use of chemical constants (quantisation &
rounding constants) in places where they were not needed i.e. plumbing
buffer, reaction chamber, pyrotechnics & the liver.
/🆑
* More optimizations for reagent code
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Change quirks_taken from nested tally to tally (#80479)
Nested tally is overkill and requires that this be handled especially in
Superset. Version is not updated as the data for this is the exact same.
I recommend running this query after merge (CC @ MrStonedOne):
```sql
UPDATE feedback SET key_type = 'tally' WHERE key_name = 'quirks_taken'
```
* Change quirks_taken from nested tally to tally
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* PDA update (Messenger works while dead, Microwave works, etc). (#80069)
This is an update that touches many more things all at once (compared to
my other PRs) meant to make PDAs in general feel more consistent and not
take away from one of the experiences we want to encourage: interaction
between players.
1. Replaced all checks of a 'pda' with a 'modular pc'. This means
technically (though not done in-game currently) other modpcs can hold an
uplink, and microwaves can charge laptops.
2. Speaking of microwave, they now don't break and require
deconstruction if the cell is removed mid-charge.
3. When a Mod PC is out of power, it will now allow the Messenger to
work (which now also doesn't consume any additional power), if the app
exists on the PC. Here's a video demonstration
https://github.com/tgstation/tgstation/assets/53777086/7ae12f81-a271-49b8-95fa-2ba54d2e2d1f
4. Flashlights can't be turned on while the cell is dead
5. I replaced a bunch of program vars with ``program_flags`` and renamed
``usage_flags`` to ``can_run_on_flags``.
6. Added a debug modPC that has every app installed by default. Mafia
had some issues in the past that were unknown because Mafia wasn't
preinstalled with any tablet so was never in create & destroy nor in any
other unit test. This was just an easy solution I had, but PDAs should
get more in-depth unit tests in the future for running apps n stuff- I
just wanted to make sure no other apps were broken/harddeling.
Currently when a PDA dies, its only use is to reply to PDA messages sent
to you, since you can still reply to them. Instead of just fixing it and
telling players to cope, I thought it would be nice to allow PDA
Messenger to still work, as it is a vital app.
You can call it some emergency power mode or whatever, I don't really
mind the reason behind why it is this way.
When I made cells used more on PDAs, my main goal was to encourage
upgrading your PDA and/or limiting how many apps you use at once, I did
not want this to hit on players who use it as a form of interaction.
This is the best of both worlds, I think.
The rest of the changes is just for modularity, if some downstream wants
to add tablets, phone computers, or whatever the hell else, they can
still get just as far as PDAs should be able to get to, hopefully.
🆑
add: PDAs with a dead power cell are now limited to using their
Messenger app.
fix: Microwaves now stop charging PDAs if the cell was removed
mid-charge.
fix: Microwaves can now charge laptops.
fix: PDA Flashlights can't be turned on while the PDA is dead.
fix: You can now hold a laptop up to a camera (if it has a notekeeper
app installed) like PDAs already could.
/🆑
---------
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* ok
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* [BOUNTY] Re-adds Contractors
* I hate copy pasted overrides so much. BEGONE
* Fixes the merge conflict. It's still not gonna work, too many proc redefinition
* The sheer amount of overrides
* This is hell
* remove modular copy of spawn_contractor_partner
* part 2 of spawn_contractor_partner oops
* un-duplicate create_contracts proc
* Remove duplicate contract generate and finish_enter
* something to make the linter stop crying
* Receiving
* removes our contractor stuff in favour of parity
* Update SyndicateContractor.tsx
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Save json savefiles to disk in pretty print form (#80512)
Pretty printed json files are easier to store file history for.
* Save json savefiles to disk in pretty print form
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Color matrix defines for filters and identity (#80320)
This PR converts the procs `color_matrix_identity`,
`color_matrix_lightness` and `color_matrix_contrast` into
defines/macros. Also adds in defines for common color matrix filters.
I don't like how `color_matrix_identity` is a one-line proc with no arg.
Also these help people identify the sort of color matrix filter is being
used.
* Color matrix defines for filters and identity
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fix "/datum/element/damage_threshold looks unharmed!" (#80546)
Fixed a bug that would give you the chat message
* Fix "/datum/element/damage_threshold looks unharmed!"
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Adds Look up and Look down verbs (#80103)
Adds IC verbs for looking up and looking down
Means you don't need hotkeys to look up or down.
* Adds Look up and Look down verbs
---------
Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
* Make spritesheets cacheable by default, killing a lot of overtime in the round start spike (#80522)
## About The Pull Request
Makes all spritesheets cache by default. This wasn't the case originally
because some spritesheets like vending machines relied on in world
state, but none of them do anymore because that's whack.
Also fixes a bug that would cause half completed caches to break other
stuff. This didn't happen in real gameplay, but would've happened if you
tried to change cachable on anything while you already had a tmp folder.
## Changelog
🆑
fix: Cut down a significant amount of time that caused the start of
rounds to lag.
/🆑
* Make spritesheets cacheable by default, killing a lot of overtime in the round start spike
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* update blacklisted client byond versions (#80523)
Also cleans up old ones that don't matter. Since we use 514 client
features so byond forces 514 clients anyways.
Resolves#80504
* update blacklisted client byond versions
---------
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Adds a mint condition clear PDA to the Goodies menu for 100,000 credits. (#80446)
## About The Pull Request
Adds a mint condition clear PDA to the Goodies menu for 100,000 credits.
## Why It's Good For The Game
Encourages crewmembers to hustle for that sweet, sweet mint condition in
box clear PDA.
## Changelog
🆑
add: Adds a mint condition clear PDA to the Goodies menu for 100,000
credits.
/🆑
* Adds a mint condition clear PDA to the Goodies menu for 100,000 credits.
---------
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
* Track time to queuedInsert in feedback (#80521)
Investigating large lag spikes in round start and noticed a large amount
of overtime (3s worth) to queuedInsert.
It's vending machines and R&D, but let's keep an eye on this.
* Track time to queuedInsert in feedback
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Change datum.vars warning to use MIN_COMPILER_VERSION (#80515)
We can't change this line of code until we require 515.1620, so it
shouldn't warn.
* Change datum.vars warning to use MIN_COMPILER_VERSION
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Replaces cyborg lover with transhumanist (#80509)
<!-- 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
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
This reworks cyborg lover to be more interesting. Taking this quirk will
start the user off with a robotic limb. The user gains mood buffs by
being around silicon based lifeforms and loses mood by being around
organic based lifeforms.
Additionally, they can gain mood buffs by replacing all of their limbs
to their silicon counterparts but can also gain a massive mood debuff if
they lose or replace their starting robotic limb with an organic one.
The idea being here that they hate organics and seek to become robotic
Also, transhumanists won't be scared of people who have two or more
augments.
## Why It's Good For The Game
<!-- 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. -->
Cyborg lover isn't really all that interesting since it's just a basic
mood buff upon clicking on a silicon.
This makes it more interesting by making it a dynamic between silicons
and organics and may adapt the playstyle of anyone choosing to take this
perk as they will need to stay away from organics to avoid mood debuffs.
## 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. -->
🆑
balance: Cyborg lover has been replaced with Transhumanist.
Transhumanists start with a robotic limb and get mood buffs by being
near to silicon-based lifeforms. However, they get mood debuffs by being
near organics, so there is a tradeoff to taking this quirk. The cost for
this quirk has been reduced from 2 to 0.
/🆑
<!-- 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: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Replaces cyborg lover with transhumanist
---------
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Circuit action button refactor (#80379)
## About The Pull Request
This PR makes several changes to how circuit action buttons work:
- The MOD action and BCI action components have been merged into a
single component.
- MOD circuit actions can be pinned from the configuration menu. This
works the same way as pinning individual modules, and can be done both
by the wearer and a suit AI.
- Action components have an output pin for the user of the action. This
allows MOD module circuits to distinguish between the wearer and an AI.
- Creates a supertype for `/datum/action/item_action/mod/pinned_module`
named `/datum/action/item_action/mod/pinnable`, which implements common
functionality for pinned modules and pinned circuit module actions.
## Why It's Good For The Game
The prior functionality of circuit MOD actions was somewhat unintuitive,
requiring the user to select an action from a radial menu *after*
activating the module, whether from a pinned action or from the module
radial. Providing similar pinning functionality to modules themselves
makes MOD actions more readily usable.
Merging the two different types of circuit components into one was made
with the idea that adding new types of shells with equipment actions
would inflate the number of subtypes of
`/obj/item/circuit_component/equipment_action` without adding much
meaningful functionality.
## Changelog
🆑
qol: MOD wearers and internal AIs can pin the individual actions in a
MOD circuit module in a similar way to how they can pin modules. Circuit
module actions can be pinned from the configuration menu of the circuit
refactor: The MOD action and BCI action components have been merged into
one component - the Equipment Action component.
/🆑
* Circuit action button refactor
---------
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Add weapon rechargers to sec designs (#80489)
## About The Pull Request
This PR makes weapon rechargers boards available at sec techfab.
## Why It's Good For The Game
I think it is obvious that sec should have this at their techfabs,
becuase it is literally designed for them.
## Changelog
🆑
add: Added weapon recharger boards to designs available to print on sec
techfab.
/🆑
* Add weapon rechargers to sec designs
---------
Co-authored-by: SSensum <121913313+SSensum@users.noreply.github.com>
* Removes Bluespace Crystals and Diamonds from emergency roller bed's recipe (#80190)
## About The Pull Request
This PR _should_ remove the 0.5 sheets of bluespace crystals and
diamonds required in the "Medical Bed (Emergency)" recipe.
## Why It's Good For The Game
The roller bed just seems like an ordinary item, it IS an ordinary item,
and functions like an ordinary item. I see no reason that it would
require bluespace crystals, since it doesn't use any sort of bluespace
wizardry. SURE it would make sense.. if you could fit 5 patients in one
roller bed and then fold it then fit it in your bag, but right now?
Yeah, it doesn't. Besides: It's already locked behind Research, and
bluespace crystals are already a valuable enough resource.
and then we have the diamonds. Why does a **roller bed** require
diamonds? Sure, titanium makes sense, for the integrity of the roller
bed, but... Diamonds? It's already a scarce enough material that runs
out pretty quickly, and it's not so much better than wheelchairs (5
Iron)
## Proof of Testing
<details>
<summary>Screenshots/Videos</summary>



</details>
## Changelog
🆑 KannaLisvern
qol: Removed Bluespace Crystals and Diamonds from medical emergency
bed's recipe.
/🆑
* Removes Bluespace Crystals and Diamonds from emergency roller bed's recipe
---------
Co-authored-by: Hypertorus Fusion Reactor <109750345+dis-integrates-the-integration-tests@users.noreply.github.com>
* Deviant Crew antag panel category, Obsessed crew now shown in orbit menu, Paradox Clone orbit tab is now white (#80450)
## About The Pull Request
This rounds up the "Other" (Brainwashed, Hypnotised, Wizard Revenge, and
Obsession) antagonist category into the new "Deviant Crew" category.
This tab is white!
Obsessed crew are now displayed in the orbit panel (no other antagonists
in this group are though).
The Spacetime Aberrations (Paradox Clone) group has also been changed to
be white.
Here's how that looks:

## Why It's Good For The Game
As was the case with paradox clones, observers can already discern when
a player is obsessed. It shouldn't be a pain to observe these guys,
especially when they're a more RP oriented antag that are (usually)
deserving of the audience.
I made paradox clones and obsessed the same color because they're both
in the broader spectrum of "fucked up crew".
Also converts common text entries to a single define. That is good
coding practice I think.
## Changelog
🆑 Rhials
qol: Obsessed crewmembers are now displayed in the orbit panel.
qol: The Paradox Clone orbit menu tab is now white. Neat!
/🆑
* Deviant Crew antag panel category, Obsessed crew now shown in orbit menu, Paradox Clone orbit tab is now white
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Allows ai's to eject from mech domination (#80357)
## About The Pull Request
Lets ais eject from dominated mechs
If this is too strong at 30 I'd be happy to bump it or apply some other
restrictions
## Why It's Good For The Game
They have a big eject button which is essentially bait at the moment, it
does nothing.
I think its fine to let combat upgraded ai's and malfunctional ai's to
use this mech domination ability more freely, because how it usually
goes is malf ai dominates mech, everyone sees occupants of mech get
tossed out and the ai is promptly killed. I don't think this is fun or
healthy for an ability which is pretty expensive and the only other way
I see it used is an ai just trying to live for a few moments more by
shunting into a cargo mech, from which they can't do a whole lot and
simply exist until the crew figure them out.
TLDR: For a very expensive ability it does not provide a lot of benefit
and is easily dispatched by the crew.
## Changelog
🆑
balance: Ai's using the mech domination ability can now eject from the
mech
/🆑
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Allows ai's to eject from mech domination
---------
Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Adds Head of Security beret and bowman to their locker (#80503)
## About The Pull Request
adds Head of Security beret to their garmet bag and adds Head of
Security bowman to their locker
## Why It's Good For The Game
Other departments start with their round start drip in their lockers,
Head of Security should too, for consistency!
Promoted Head of Security should get their fancy beret and headset
## Changelog
🆑
qol: Head of Security beret added to their garmet bag
qol: Head of Security bowman added to their locker
/🆑
* Adds Head of Security beret and bowman to their locker
---------
Co-authored-by: Redbert <109347230+Deadgebert@users.noreply.github.com>
* Miasma is now filtered through gas mask filters, at medium strength. (#80499)
## About The Pull Request
Miasma is now filtered through gas mask, at medium strength.
## Why It's Good For The Game
A little weird that miasma isn't filtered through gas masks despite that
being something that'd make sense for gas masks to filter.
## Changelog
🆑 BurgerBB
balance: Miasma is now filtered through gas mask filters, at medium
strength.
/🆑
* Miasma is now filtered through gas mask filters, at medium strength.
---------
Co-authored-by: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
* Engineering autolathe now prints engi inducers instead of science ones + boosts recharge rate of sci-printed inducers (#80126)
## About The Pull Request
Allows engineering to print/order engi inducers instead of science ones.
They have their own type of inducer, so its weird that the amount of
them is finite.
## Why It's Good For The Game
I thought this was the case when I made my crossbow PR, and it only is
craftable with an engineering one. Turns out engineering quickly ran out
of inducers to make them with since they only get three. Oops.
As for the science inducer charge buff, around half of my 400ish hours
in ss13 is engi, and not once have I been asked by a scientist if they
could have a better inducer. 500 charge vs 1000 charge is only a change
of clicking an apc again and waiting an extra second. Plus, the reason I
picked inducers as the item that the crossbow required in the first
place is that 95% of rounds they never once moved from the closet (and
people most certainly open said closet, since the insuls are almost
always gone.)
## Changelog
🆑
qol: Engineering now can print/order engi inducers instead of science's
purple ones.
bal: Sci inducers now recharge 1000 charge per go, just like engi ones
do.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
* Engineering autolathe now prints engi inducers instead of science ones + boosts recharge rate of sci-printed inducers
---------
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
* Mecha cell, Medipen & related reagent holder refactors (#80401)
## About The Pull Request
Changed the reagent volume check to a total reagent volume check as
sometimes the total volume can be set to 0 and can pass through the
check if it was only looking for the sum total of all the reagents'
volume. Additionally added a check to mechs for if it's cell has a max
charge of 0 so that it won't divide by zero. Refactoring hyposprays to
utilize a new var to check if they're fully used up rather than
forcefully setting the total volume to 0 should prevent any potential
future errors.
## Why It's Good For The Game
Removes division by zero runtimes and doesn't force total volume to
equal 0.
## Changelog
🆑
fix: Injecting yourself twice with a luxury medipen in pressure doesn't
runtime and mechs with a cell with no max charge won't runtime.
refactor: Gives hyposprays a var to check if they're fully used up
rather than setting total_volume to 0.
/🆑
## Runtime Logs
To show that they exist and were ignored because they're extremely
specific weird ones.

Mech runtime from somehow having a cell with no charge. No idea how they
managed to do that at all.
<img width="967" alt="image"
src="https://github.com/tgstation/tgstation/assets/26240645/a66401a7-e52b-42f9-85c8-b5715c45848b">
Using the luxury medipen twice causes a runtime by somehow causing the
total_volume to believe it's 0.
---------
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@ users.noreply.github.com>
* Mecha cell, Medipen & related reagent holder refactors
---------
Co-authored-by: Diamond_ <novadiamonddigger@gmail.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@ users.noreply.github.com>
* Adds a search function to the loadout menu, and improves readability
* Removes the tutorial button that never did anything
* Trims a lot of the fat, deprecated code
Data was being passed to the ui that isn't even being used any more.
* Update preferences.dm
* Optimizations for reactions (#80380)
## About The Pull Request
1. Fixes#80365
The lowers the rounding accuracy for reaction rate from
`CHEMICAL_VOLUME_ROUNDING(0.01)` to
`CHEMICAL_QUANTIZATION_LEVEL(0.0001)`. This stops reactions from
abruptly ending when either their temperature/ph/volume become very low
values.
This also removes a call to `handle_reactions()` after the reaction has
finished so it that it doesn't restart reactions that have failed due to
failed environmental conditions(low ph/temps far below the optimal
value). This not only saves overhead but can also stop potential
infinite reaction loops(where if a reaction fails we try to restart it
again)
2. Simplifies math for temperature handling and stops each react step
from calling `handle_reactions()` when new reagent products are formed
thus making reactions slightly faster. Also ensures early return if
adding/removing reagents failed at any point & other smaller. nitpicks
3. Removes excess call to `update_total()` in each react step making it
even faster
## Changelog
🆑
fix: Reactions whose temps/ph values fall way below their optimal values
no longer restart & prevents infinite loops. Made reaction code slightly
faster
/🆑
* Optimizations for reactions
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
* Wizard Apprentices now spawn at their summoning contract, instead of the Wizard Den (#80473)
## About The Pull Request
Wizard apprentices will now spawn on the summoning contract's turf,
instead of in the wizard den.
Originally, apprentices would be spawned on the contract with a puff of
smoke, and then sent to their spawn point by the wizard antag datum. It
makes more sense for them to spawn in with the smoke, and whoever
summoned them.
## Why It's Good For The Game
More consistency with how most other antag spawners work.
I watched a wizard get confused by this last night which was kind of
funny and prompted me to make this change.
## Changelog
🆑 Rhials
qol: Wizard apprentices now spawn on the same tile as the contract that
summoned them.
/🆑
* Wizard Apprentices now spawn at their summoning contract, instead of the Wizard Den
---------
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
* Fix ling blackbox feedback incrementing `changeling_power_purchase` when nothing was purchased (#80480)
## About The Pull Request
#80108 added `on_purchase` calls to `regain_powers` as a bugfix, due to
some powers having effects ONLY in "purchase".
Unfortunately we put blackbox logging in there.
So every time `regain_powers` is called, it incremented the tally by one
despite the fact that they weren't purchasing anything, they were
already purchased.
* Fix ling blackbox feedback incrementing `changeling_power_purchase` when nothing was purchased
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>