Fixes some runtimes [IDB IGNORE] (#17194)

* Fixes some runtimes

* typo

* No more infinite mannequins

* crash

* More runtime fixes and  pressure fling

Makes it so you can unwrench pipes that are pressurized, at the cost of being flung back from the pipe. Higher pressure = longer distance and faster.

* Fixes a memory leak and a bug
This commit is contained in:
Cameron Lennox
2025-03-06 13:17:13 -05:00
committed by GitHub
parent 13e1c11d04
commit ddc95236e0
11 changed files with 102 additions and 39 deletions
@@ -197,10 +197,10 @@
humanform.species.update_misc_tabs(src)
/mob/living/simple_mob/protean_blob/updatehealth()
if(!humanform)
CRASH("A protean blob does not have a humanform! src = [src] ckey = [ckey]")
if(humanform.nano_dead_check(src))
return
if(!humanform)
return ..()
//Set the max
maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh.
@@ -324,6 +324,8 @@
/mob/living/simple_mob/protean_blob/Life()
. = ..()
if(!humanform)
CRASH("A protean_blob calling Life() has no humanform! Src = [src] ckey = [ckey]")
if(!humanform.nano_dead_check(src))
if(. && istype(refactory) && humanform)
if(!healing && (human_brute || human_burn) && refactory.get_stored_material(MAT_STEEL) >= 100)
@@ -654,6 +656,8 @@
return ..()
/mob/living/simple_mob/protean_blob/handle_mutations_and_radiation()
if(!humanform)
CRASH("A protean blob does not have a humanform! src = [src] ckey = [ckey]")
humanform.handle_mutations_and_radiation()
/mob/living/simple_mob/protean_blob/update_icon()
@@ -155,6 +155,8 @@
// Update T.
T = get_step(src, get_dir(src, destination))
if(!T) //There is no turf in that direction.
return FALSE //Hit a non-existant turf.
if(T.check_density(ignore_mobs = TRUE))
to_chat(src, span_critical("You hit something really solid!"))
playsound(src, "punch", 75, 1)
@@ -187,6 +187,7 @@
client.prefs.dress_preview_mob(mannequin)
var/mob/observer/dead/observer = new(mannequin)
observer.moveToNullspace() //Let's not stay in our doomed mannequin
qdel(mannequin) //We're not used anymore, so goodbye!
spawning = 1
if(client.media)