Calls the final HUD update later (higher, in mob/death) since stat was not yet DEAD (2) when it was called before.
Also makes all mobs update the HUDs all life() ticks, so people who have ghosted and left a body have correct HUD readings. If this affects performance, sorry? ... It really shouldn't. Only carbons should have real HUDs to update. The rest are tiny little procs.
While MMIs are 'expensive' and preserving them is important... this is probably more important. Needs to properly be removed so FBPs and borgs with MMI can be removed.
I missed it! So I fixed it.
It could have been done with a bunch of "If you're SUPPOSED to be blind" or "If you're ASLEEP" but honestly this check should be in there anyway. P.sure people with tourettes don't randomly scream things while asleep.
Naked and trying to wear a rig, it will attempt to access w_uniform.inv_flags which will be null and runtime.
Moves shoe redrawing to uniform and suit update_inv code in update_icons, rather than in inventory.dm. update_icons already had code for this.
Previously, because noncritical robolimbs did not count for bruteloss or burnloss (per line 13 in human_damage.dm), nothing would ever cause robot limbs to call update_wounds() on the organs to clear wounds after repair. Furthermore, update_wounds ignored wounds on robotic limbs and edited early without even checking if it should remove them. This caused a problem.
This corrects this, and still exits early(er) in update_wounds() for robotic limbs, but makes sure there are no 0-damage wounds left and if there are, removes them.
As a 'backup', hitting a robolimb with a welder when there's nothing to fix will also call this proc, to catch any cases where someone has directly changed wounds or anything like that.
Also fixes spacing on robolimb damage examine text (get_wound_desc had spaces, but should not have in most cases), and added a message for having an open maintenance panel on a limb.
Does not use initial(pixel_x) and initial(pixel_y) for 'finishing' attack animations, so that mobs can have old_x and old_y updated to reflect a natural pixel offset (e.g. for mobs that are longer/taller than 32x32 and are nudged to fit into a tile).
For example, we have a 32x64 cyborg module which sets pixel_x, pixel_y, old_x, and old_y when selected, however attacking with it resets it to 0 as this doesn't respect old_x and old_y like all other mob anims do (see floating, etc).
Also why define this on atom and then literally never use it on anything other than a mob, in the... mob/animations.dm file?
_Sorry to keep making QOL PRs. I promise I'll send something cool eventually._
As in, scooped mob holders, like Teshari. If they throw an item, it falls out now rather than being trapped and eventually deleted in their holder object.
Makes the name of the starsystem and station generic such that it can be modified in global.dm and replace the strings where it is used. This won't have an effect on Polaris itself, but makes changing the name much more simple for forks. Using string concat constants on the advice of Psi.
Cleans up a list in the booze vendor
Removes tea from contraband and puts into the normal product list in the booze vendor
Adds the shot glasses to the autolathe and makes glasses there no longer children of bucket recipes
Changes the Death Alarms from announcing to general comms, to just
Security and Medical. Because sometimes hearing your best friend has
died over Common channel is not the best scenario to hear that someone's
died.
Used the captain's headset to keep things slightly cleaner, and it gets
deleted after as far as I can tell.