* Feex (#55144)
For whatever reason we hardcoded the health value for drills at 200 brute damage before they can gib. 200 brute damage was picked as it was double the max health of /mob/living/carbon/whatever and double the max health was like, the cap on brute damage when someone is really, really, really, really dead.
Enter simplemobs. Their max health is regularly under 100, which means a hardcoded value of 200 brute damage to trigger gibbing effects is bad. Not that it matters anyway, because simplemobs also brute damage cap at maxHealth instead of maxHealth * 2 so the only simplemobs that could be gibbed by mech drills are those with 200 or more health.
This has been changed. Simplemobs now cap out at maxHealth * 2 damage, in line with all other /mob/living while drill code has been changed to check for maxHealth * 2 when gibbing instead of a hardcoded 200.
* Fixes issue with mecha drills failing to gib most simplemobs.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.
Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.
Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.
This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
* Humans have more complicated body temperatures
Co-authored-by: NightRed <nightred@gmail.com>
* Fixes#55112 - Swapping items no longer eats things (#55122)
Quick swapping items no longer hides them in the mobs contents
* Fixes#55112 - Swapping items no longer eats things
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Prevents mecha drills from stacking do_afters on the same target. (#55145)
* Feex
* Feex 2.0 Feexlectric Feexaloo
* Whitespace purge
* Prevents mecha drills from stacking do_afters on the same target.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* make sure slowdown effects get removed when items are unequipped (#54947)
* Make sure slowdown effects get removed when items are unequipped from a mob
Co-authored-by: Yenwodyah <yenwodyah@gmail.com>
* Detect if ghost reentered the brain (#54975)
* Fix misleading examine messages on the head without body
Co-authored-by: antropod <antropod@gmail.com>
* Fixes tool implant tools being storable in boxes (#54914)
* Moves storing tool implant items to use the drop hotkey rather than a dropped item event
* de-debugging
* Fixes tool implant tools being storable in boxes
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Foam darts and other unembeddable bullets will no longer leave ghost shrapnel (#54994)
Projectiles are assigned the ability to try embedding by the presence of a shrapnel_type variable being set on them, whether or not they actually have a set of embedding stats in their embedding var. By default, children of /obj/projectile/bullet have a shrapnel type set to a generic embedded bullet item, including things like foam darts and lollypop projectiles which shouldn't be able to embed (and certainly not embed as a bullet). While they had their embedding vars set to null, they still had their shrapnel_type set to the embedded bullet type, meaning shooting a person with a dart gun or whatever would leave a failed shrapnel item on the ground where they weren't supposed to.
This fixes that by requiring both a defined shrapnel_type AND a defined embedding var for the embedding stats. Any projectiles without both won't be able to try embedding. I also manually put 'shrapnel_type = null' on any bullet subtypes with embedding = null just to be safe and for consistency.
* Foam darts and other unembeddable bullets will no longer leave ghost shrapnel
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* shuttle catastrophe now cant trigger if it already happened (#55114)
Shuttle catastrophe now cant trigger if it already happened
* shuttle catastrophe now cant trigger if it already happened
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Moves grown food to newfood (#55040)
Moves grown food to newfood
Gives trash element support for callbacks for item creation override
* Moves grown food to newfood
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Reload verbs when the client goes into a new mob (#55106)
Try this experiment at home:
1.Ctrl shift click your ghost
2.Notice that you still have the Ghost tabs, and you don't see OOC > Ghost, uh oh.
This happens for more than ctrl-shift-clicking, it happens a lot with event mobs.
This reloads verbs on /mob/Login, aka when the client goes into a new mob (or when they reconnect).
* Reload verbs when the client goes into a new mob
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Hygienebots de/construct and behave like the other simplebots. (#55089)
Adds simple deconstruct steps to the hygiene bot assembly, as well as adds a simple crafting menu option to craft one.
Also, corrects an issue with hygienebots not needing to be opened in order to be emagged. They now need to be emagged to be opened with a screwdriver, then emag the open panel in order to emag the robot, just like every other robot.
* Hygienebots de/construct and behave like the other simplebots.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fixes cryogenics infinite gas deletion (#55068)
* cryo fixes and cleanup
Move magic numbers to defines
Fixes cryo deleting 100L of gas each time it transfers
Remove unneeded/unused variables
Moves gas all gas consumption to process_atmos
delta_time in process_atmos
* simplify consume_gas
* Fixes cryogenics infinite gas deletion
Co-authored-by: Maurukas <66576896+Maurukas@users.noreply.github.com>
* Makes it so living crate creatures can pass plastic flaps as god intended. (#55088)
* Makes it so living crate creatures can pass plastic flaps as god intended.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fixes and a little cleanup.
* False by default.
* Apply suggestions from code review
Co-authored-by: Azarak <azarak10@gmail.com>
* Modularization and comments.
* #include
Co-authored-by: Azarak <azarak10@gmail.com>
* Cell chargers now pull from the grid's surplus rather than their room's APC cell (#54989)
About The Pull Request
As the title says.
Creates a new proc, use_power_from_net() that attempts to pull power from the grid (by adding the amount needed to the APC's powernet load), and returns the amount gathered if there was enough surplus to do so. This bypasses the APC's internal cell for power drawn this way.
Changes cell chargers to use this new proc for charging a cell. The charger machine still uses some power from the APC, set to 1% of it's max cell charging rate, for machine-related power costs. I'm not deadset on that number, I just needed to start with something. To be clear, this 1% is to simulate running the cell charger's circuitry; all of the power for the cell it's charging is 1-to-1 coming from the powernet.
This does not subvert the original PR's purpose; cells are still drawing as much power from the grid as they charge with.
Why It's Good For The Game
Fixes cell chargers breaking rooms after the prior cell charger fix. The load is now on the grid, and it being surplus means that it (probably) won't actually powersink anything.
Fixes#54919 by taking a different approach that entirely avoids the issue.
* Cell chargers now pull from the grid's surplus rather than their room's APC cell
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Fixes paystands sending signals when attached with a signaler. (#55092)
Corrects how paystand's interact with their signalers by actually using the correct proc, and signaling out of the machine.
Not much else to say here.
* Fixes paystands sending signals when attached with a signaler.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Properly differentiates the nanodrug and nanomed vending machines. (#55069)
This repaths the nanodrug and nanomed vending machines, as well as visually tweaks the nanodrug vending machine from the nanomed vending machine, in order to
A) Fix the correct vending refills working on the correct vending machines.
B) Not make 2 different vending machines with different contents sell look identical.
Allows for visual clarity between 2 distinct, different vending machines. I got lazy and didn't do it the first time, and now they've been confusing players, apparently.
Additionally, makes them actually deconstruct able and constructible as a result of the fix to the circuit board.
* Properly differentiates the nanodrug and nanomed vending machines.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Minor refactor to signal handlers to remove potential sleeps (#54649)
About The Pull Request
These are legacy sleepers, the remaining 12 are non-trivial to fix.
* Minor refactor to signal handlers to remove potential sleeps
Co-authored-by: spookydonut <github@spooksoftware.com>
* Fixing the arena shuttle being unbuyable if medals are disabled. (#55066)
Fixed the arena shuttle not being unlockable if medals are disabled.
* Fixing the arena shuttle not being unlockable if medals are disabled.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* ghosts can no longer empty the gibber (#55021)
Ghosts could use the right click menu to empty a gibber. This removes that.
* Ghosts can no longer empty gibbers
Co-authored-by: tattlemothe <66640614+dragomagol@users.noreply.github.com>
* Fix nearsighted glasses being able to be neutered with quick swap (#54916)
You can no longer quick swap another pair of glasses with nearsighted to see perfectly.
Currently you can:
Choose nearsighted
Quick swap to another pair of glasses
See perfectly
This wasn't fixed by Shaps' changes since those call dropped, which do not run through unequip code.
I know one of you is abusing this, show yourself!
* Fix nearsighted glasses being able to be neutered with quick swap
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Cache values in TEST_ASSERT_EQUAL and TEST_ASSERT_NOTEQUAL (#55074)
Previously if a comparison assertion failed, it would re-evaluate the a and b parameters, which could lead to confusing output if the values passed are not fixed or are impure.
* Cache values in TEST_ASSERT_EQUAL and TEST_ASSERT_NOTEQUAL
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Typo fix and bug fix (#55075)
Replica pods were calling CanUse as opposed to canUseTopic when harvesting seeds, and since CanUse hinges on the machinery being usable and powered, it was preventing the harvesting of replica pods when depowered as expected. The only thing that should be needed for harvesting trays should pretty exclusively be the standard level of adjacency.
also corrects a line of spelling.
Fixes a bug, corrects some grammar. Makes the world a better place.
* You may now correctly harvest replica pod seeds when the hydroponics tray has no power.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Graveyard graves now sound like they're being dug open/closed. (#55080)
* Graveyard graves now sound like they're being dug open/closed.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Makes the foodcart actually become full (#55041)
The chef's food cart can no longer store an infinite amount of food stuff.
Oh also foodcarts support newfood now
* Makes the foodcart actually become full
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
* Fixing addictions not going away on no-metabolism trait gain. (#54797)
Also addiction_list is null by default, considering the wide majority of reagent holders don't even get addicted to stuff.
* Fixing addictions not going away on no-metabolism trait gain.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* minor material_container args/vars refactor and Mk-honk shoes peeve. (#54863)
My original intention was just fixing an issue with the Mk-honk banana shoes but, considering I didn't want to add two new variables to a component with already lot of args and lengthy AddComponent() calls in term of text, I had to merge some TRUE/FALSE variable/args into the breakdown_flags bitfield (now named mat_container_flags) in the process.
* minor material_container args/vars refactor and Mk-honk shoes peeve.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Machines no longer dump out their component_parts when qdel'd. (#55026)
Machines no longer vomit out their component parts when qdel'd and instead only vomit out their actual inventory contents.
Doing this uncovered another issue - Random vending machines will return INITIALIZE_HINT_QDEL and then attempt to qdel their circuits, which are still type paths and not initialised atoms yet (circuit was previously nulled by dump_contents, but this no longer happens in dump_inventory_contents). These circuits have been set to null appropriately.
* Machines no longer dump out their component_parts when qdel'd.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes Crucible Soul potion making you permanently phase through all matter and Void storm breaking after dying. (#55050)
Someone changed /obj/screen/alert to be /atom/movable/screen/alert and it caused this problem.
Also fixes the issue with void storm breaking if someone dies and gets revived.
* Fixes Crucible Soul potion making you permanently phase through all matter and Void storm breaking after dying.
Co-authored-by: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com>