* Any nulls present in the mob_list would cause a runtime when checked if they are gcDestroyed. Add a null check.
* Noticed that the object controller has the same bug, might as well fix now too.
This happens because edges cease processing when the delta between their zones is small enough. This is normally a fine optimization, but when it results in a room at 4kPa with a window open to space, it breaks imurshuns.
Two main changes to solve this problem without too much cpu cost:
1) Stop edges from sleeping if one side is a hard vacuum. This ensures that a zone doesn't freeze at a low-but-non-zero pressure when touching hard vacuum.
2) Prevent #1 from causing the edge to stay alive for ages while pressures asymptotically approach zero as they are repeatedly equalized but only half is dumped to space. (Would happen if ZoneA---ZoneB---Space arrangement exists) by detecting when the total amount of air left is small enough that it would normally sleep anyway, and just setting it to zero.
The end outcome is that behavior is mostly the same as before, except when zones have an open path to unsimulated space, they will reach equilibrium at zero instead of semi-random lowish values.
Fixes rooms showing wrong pressure after reaching equilibrium.
* If we do not do this, zones are left with the wrong total_moles (and therefore the wrong **pressure readout**) after equalizing.
* Equalizing happens when two connected zones get close enough to suspend processing. Thus the effect of this bug would be wrong pressure readings on rooms that are no longer being updated, thus locking in the wrong value!
* Changes navbeacons to no longer use radios (Doing so was slower and didn't really help anything) Note: var/freq remains for mapping compatibility until all maps are updated.
* Fixes navbeacons to actually hide under flooring if you put plating over them.
* Changed how navbeacons are mapped in. Don't use the picky "code_txt" variable, instead use appropriate subtype.
* Made useful reusable subtypes so you don't have to code in a type for every. single. one.
* Updated mulebot to use new navbeacon codes.
* Re-activate patrolling! With the new navbeacons, bots with will_patrol can follow the patrol navbeacons.
* Note: various "should_patrol" variables on each bot type unified under /mob/living/bot/var/will_patrol
* Securitrons (beepsky) got an overhaul to the new patrol routing.
* Note: BayStation replaced the snowflake handcuffs code with acutal handcuffs. Polaris handcuffs requiere a grab to work, so are more complicated. Kept our existing attack code.
* Behavior procs reorganized to use better movement detection and just be more flexible.
* Floorbot fixes & removal of bridgemode
* Floorbot will now remove & replace broken floor tiles.
* Floorbot will no longer decide its okay to pave over all of SPACE.
* For the moment patching hull breaches is disabled, it is too laggy.
* Sundry bugfixes to all bots
* Use forceMove() instead of setting loc
* Use "\The [X]" message strings.
* Pass target to do_after() when doing something to a target.
* Fixed events that were supposed to emag bots to now do so again.
LOOK NOBODY'S PERFECT OKAY
I added /food/ to the path of all the food recipes but these 7 have a completely silly means of actually creating the food items, and it results in that proc never being called because I didn't change THOSE to have /food/ in the path as well.
It's not like dough is important, okay.
And this mechanism of doing this is dumb.
And huff.
~~pleasedonthurtme~~
`/obj/item/weapon/reagent_containers/food/snacks/breadslice` is not a real thing. The only reason the code compiled with references to it is because there was a line at the top of sandwich.dm that defined the attackby proc for it, which willed it into existence with all the default 'snack' values so it was just called 'snack', had no icon, etc.
`/obj/item/weapon/reagent_containers/food/snacks/slice/bread` is the real path for bread slices, and this replaces all mentions of one with the other.
The nanoui template expects "internalBleeding" to be in the organStatus list, not in the organData list. I agree with this expectation, as this is also where normal "bleeding" is stored, so I updated the adv_med.dm file rather than changing the template.
In this event some sort of gas leak occours! A random area on the station is chosen to experience a leak of a randomly chosen gas!
* By default, areas with any people in them are protected, so it won't just kill someone.
* A warning announcement is given shortly before, so there is some warning.
* Dorms, Shuttles, Holodeck and Supermatter are protected.
* At higher severity, adds worse gasses and possibility of high/low temperature.
We define the inventory screen objects for hands to be special in that apply overlays to themselves for handcuffed. By putting that logic on the screen object itself, we allow it to be expanded to other cases besides handcuffs in the future without conflict.
I had to subtype all the recipes though. This should probably have been done a while ago anyway, medicine and drinks should probably have some sort of path separation like this.
The idea of updating the wiki list of recipes is daunting, especially getting all the icons and resizing them to look nice on a webpage, so fuuuuuuuuck that.
I made a verb that does it. It dumps upsized (64x64) images of every food icon and a recipes.html file into your cache with a table that contains all the recipes, nicely formatted, in alphabetical order (the -burger and -kebab at the top are because those are [whatever-meat]-burger and [whatever-meat]-kebab).
Then you can just throw them on a website. It will include a recipes.css file if it's in the same dir.
Here's the result on our server:
https://vore-station.net/infodump/recipes.html