This PR removes fusion from reactions.dm and add the Hypertorus machine and its new and improved fusion reaction (results may vary).
Fusion is one of the most costly reactions from the atmos system, is one of the most complex and yet most simple ones; this will move fusion inside a buildable machine and it will allow a degree of complexity that can't be done inside react()
Really it's a bandaid as it would be better to wait until the refactor is done, but it turned out to be a rather easy fix.
Food trays may now once again mass insert both new and old food into the microwaves and food processors.
Prevents any manual handing when cooking large quantities of food at once.
Also, you get the switch gathering mode button when being given the serving tray again.
Spraycans now check the cost of placing down a new spray before performing the do_after countdown, then uses the charge immediately after the do_after is completed.
Spraycans should check and only use a charge AFTER their cooldown timer is complete.
* Final Stage Capitalism.
* tweaks.
* Got overzelous in my fervor for blood
* well, this now has my full attention.
* Whoops missed a <<
* fixes issue because there were changes I missed
* Cobby: Departmental income is static.
* Whoops
* Various high cost premium prices and a few custom_prices have been adjusted to better suit the lack of income. Code cleanup on income so they're all in-line with cargo.
* First, this has been atomized out.
* UI is now fixed as god intended.
* Actually no, this is dynamic now. No more confusion.
* Conflicts fixed.
* Apply suggestions from code review
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* tgui recompile.
* Hopefully aquires that green checkmark.
* --fixes the spacing.
* var cleanup and departmental budget assignment cleanup.
* merge conflict fix
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* The Re-pricening
* Rewritten and adjusted for paycheck defines.
* I made the map changes finally.
* And the refills too.
* "OH YEAH REPLACING IT ALL WITH DEFINES AND SCALING IT THE EXCEL DOCUMENT WILL BE EASY, ARCANE!!!"
* And the premium ones too.
* Accidently spoiled a future pr due to dme bleedover
## About The Pull Request
The shocks from the shock touch mutation now ignore insulated gloves, because you're touching your victim's body, not giving them a handshake.
The shocks from punching charged energy fields (special holosigns from emagged cyborgs) now DON'T ignore insulated gloves, because you're literally punching them with your hand.
The shocks from running into charged energy fields now DON'T ignore insulated gloves, to be consistent with things like electrified doors.
The shocks from the on_mob_life() effect of liquid electricity now ignore insulated gloves, like the shocks from the on_mob_life() effect of teslium do (thanks for pointing this out, Angustmeta!).
## Why It's Good For The Game
Logical sense and consistency in what forms of protection shocks check for are good things, I think.
The PR aims to allow advanced tool users to be defined by traits rather than a hardcoded proc.
Also necessary for the CanUseTopic refactor I'm working on, which will be PRed separately for atomization purposes.
This PR also fixes an inconsistency with can_hold_items (since monkeys can actually hold items).
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned.
Fixes greyscale floor tiles merging regardless of their materials.
Fixes greyscale floor tiles voiding materials when splitting the stack.
Fixes greyscale floor tile stacks being created with no mats_per_unit and only enough custom materials for a single unit.
Fixes greyscale tile flooring being created with the wrong amount of materials.
Fixes greyscale tile flooring not producing floor tiles/producing floor tiles with 0 units.
Fixed a bug where royal aliens would have their base pixel offset applied twice, making them off-center (https://i.imgur.com/BtspaM0.png)
Changed the mob/living procs get_standard_pixel_x_offset() and get_standard_pixel_y_offset() to variables (body_position_pixel_x_offset and body_position_pixel_y_offset), to match the contribution guidelines.
Also corrected a few random things that weren't using base pixels but should have been.
* Medipen Differences
Adds a box for medipens, and gives each of the "common" pens a new look.
* Adds medipen box to craftables.
* Lighter first aid pen.
Turns the speargun from the syndikit bundle into a bolt action rifle instead of a pnuematic cannon.
The spears the rifle fires embeds using the new bullet embedding system by Ryll. The spears do a lot of fucking damage.
The new bundle includes:
The Ballistic Harpoon Gun
The weapon is a single shot rifle that can be loaded with harpoons. The rifle, being bolt action, requires pulling back the bolt, loading the new harpoon, then locking the bolt every time you wish to fire the weapon. This is more busy work than the pnuematic cannon version, but more reliable in functionality without any messy business with throwing.
The harpoons do 60 force, have a high wound chance against unarmored targets and very high embed chance, with a 100% against unarmored targets. They also have considerable armor piercing at 50, letting you nearly entirely shoot through a ballistic vest.
The weapon is essentially a powered-up single shot mosin or a significantly more powerful improvised shotgun filled with slugs.
The Quiver
Now a bag that goes on your belt. It holds up to 40 harpoons for your harpoon gun. This change was done because the harpoons cannot be retrieved, unlike the magspears, which were simply hacky ninja stars and could be pulled out with surgical tools/wirecutters. Previously you had 20 magspears, which because of their retrievable nature lasted a little longer than you would expect.
Sprites
New back sprites for the harpoon gun, ensuring nobody is missing it when you have it. Additionally, the Mosin Nagant now has it's back sprite as a suit storage sprite.
New sprite for the quiver.
[01:44:12] Runtime in RPD.dm, line 392: Cannot read 1.type
/obj/machinery/atmospherics/wrench_act can return a boolean instead of an object under the following scenarios:
You cannot unwrench the machine.
You can unwrench the machine, but use_tool later returns FALSE instead of TRUE.
use_tool can fail when you stack wrench_acts ontop of eachother. The first wrench_act will work as expected and return the deconstructed version of the pipe, all other stacked wrench_acts will have use_tool fail and will instead just return TRUE.
This PR prevents stacking of wrench_act-based do_afters and guards against unexpected runtimes by CRASHing when wrench_act returns something unexpected.
The UNREAL SORD null rod form's suicide_act() now closely matches the suicide_act of an actual SORD.
For reference, an actual SORD's suicide_act() is:
```
/obj/item/sord/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's USELESS...</span>")
return SHAME
```
And the UNREAL SORD null rod form's new suicide_act() is:
```
/obj/item/nullrod/sord/suicide_act(mob/user) //a near-exact copy+paste of the actual sord suicide_act()
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's TOO HOLY...</span>")
return SHAME
```
Basically just reformats the logging code for TTVs when valves get opened. It's a bit more verbose, giving a bit more detail in general. It also has line breaks, because it makes things easier to read.
I've also added the ability for signals to hold a logging string. In this case, a signaller creates a signal and attaches a logging string. If the signal is received by any signallers attached to a TTV, it stores the last logging string associated with that signal. Functionally, this means that TTVs can now ask their attached signaller for the logging string of the last signal it received and display it as part of the logging string.
* Only art is now an element. There have been some issues with beauty.
* Typo.
* Update art.dm
* Update art.dm
* Maintainer suggestions. Reversing order of switch(impress) for correct moodlets.
* Fixing some pre-existing oddities with art element.
* stating the right var.
* simplifying the component.
* Update art.dm
* lowercasing pronoun.
Tables could be placed on top of each other, leading to stacking of glass tables, and infinite sin. This doesn't cover anything close to all of it, but it's a good patch for now.
About The Pull Request
Makes the name of the lifeform stasis unit lowercase like all other improper nouns.
Why It's Good For The Game
Consistency, I guess
* base
* fixes
* crate
* Update code/game/turfs/open/floor/fancy_floor.dm
Co-authored-by: Fikou <piotrbryla@onet.pl>
* adds the crate to the pool.
* the crate is pretty rare, why not let it drop four items?
* Update lootdrop.dm
Newline phone edit
* ungoofed
Co-authored-by: Fikou <piotrbryla@onet.pl>