diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index 0c1b0a35426..157b0312995 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -64,8 +64,8 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new())
// Icons/overlays/underlays
/obj/machinery/atmospherics/update_icon()
- var/turf/T = loc
- if(level == 2 || !T.intact)
+ var/turf/T = get_turf(loc)
+ if(!T || level == 2 || !T.intact)
plane = GAME_PLANE
else
plane = FLOOR_PLANE
diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm
index 2dad0abca0f..3757237243f 100644
--- a/code/controllers/subsystem/idlenpcpool.dm
+++ b/code/controllers/subsystem/idlenpcpool.dm
@@ -29,6 +29,7 @@ SUBSYSTEM_DEF(idlenpcpool)
var/mob/living/simple_animal/SA = currentrun[currentrun.len]
--currentrun.len
if(!SA)
+ log_debug("idlenpcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_IDLE list: [SA in GLOB.simple_animals[AI_IDLE]]")
GLOB.simple_animals[AI_IDLE] -= SA
continue
diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm
index 0de306b12eb..f2e159404fd 100644
--- a/code/controllers/subsystem/npcpool.dm
+++ b/code/controllers/subsystem/npcpool.dm
@@ -21,6 +21,10 @@ SUBSYSTEM_DEF(npcpool)
while(currentrun.len)
var/mob/living/simple_animal/SA = currentrun[currentrun.len]
--currentrun.len
+ if(!SA)
+ log_debug("npcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_ON list: [SA in GLOB.simple_animals[AI_ON]]")
+ GLOB.simple_animals[AI_ON] -= SA
+ continue
if(!SA.ckey && !SA.notransform)
if(SA.stat != DEAD)
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index 140ead3a947..74ed59d2469 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -48,13 +48,14 @@
update_health_hud()
/mob/camera/blob/update_health_hud()
- if(blob_core)
+ if(blob_core && hud_used)
hud_used.blobhealthdisplay.maptext = "
[round(blob_core.obj_integrity)]
"
/mob/camera/blob/proc/add_points(var/points)
if(points != 0)
blob_points = Clamp(blob_points + points, 0, max_blob_points)
- hud_used.blobpwrdisplay.maptext = "[round(src.blob_points)]
"
+ if(hud_used)
+ hud_used.blobpwrdisplay.maptext = "[round(src.blob_points)]
"
/mob/camera/blob/say(var/message)
if(!message)
diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
index b0b77a456d5..4663fef8b97 100644
--- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
+++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm
@@ -40,7 +40,7 @@
name = "protective membranes"
desc = "These variable transparency organic membranes will protect you from welders and flashes and heal your eye damage."
icon_state = "ling_eyeshield"
- eye_colour = null
+ eye_colour = "#000000"
implant_overlay = null
slot = "eye_ling"
status = 0
@@ -61,7 +61,7 @@
name = "heat receptors"
desc = "These heat receptors dramatically increases eyes light sensing ability."
icon_state = "ling_thermal"
- eye_colour = null
+ eye_colour = "#000000"
implant_overlay = null
slot = "eye_ling"
status = 0
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index f3a4b8a241c..5244bcb32e1 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -69,7 +69,7 @@
/obj/structure/grille/attack_animal(mob/user)
. = ..()
- if(!shock(user, 70))
+ if(. && !QDELETED(src) && !shock(user, 70))
take_damage(rand(5,10), BRUTE, "melee", 1)
/obj/structure/grille/hulk_damage()
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index ea12f0a82d3..ee28919fd67 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -147,6 +147,8 @@ Gunshots/explosions/opening doors/less rare audio (done)
START_PROCESSING(SSobj, src)
/obj/effect/hallucination/fake_flood/process()
+ if(!target)
+ qdel(src)
if(next_expand <= world.time)
radius++
if(radius > FAKE_FLOOD_MAX_RADIUS)
diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm
index 463911861c2..80dceea5048 100644
--- a/code/modules/surgery/organs/augments_eyes.dm
+++ b/code/modules/surgery/organs/augments_eyes.dm
@@ -12,12 +12,11 @@
var/see_invisible = 0
var/lighting_alpha
- var/eye_colour = "#000000"
+ var/eye_colour = "#000000" // Should never be null
var/old_eye_colour = "#000000"
var/flash_protect = 0
var/aug_message = "Your vision is augmented!"
-
/obj/item/organ/internal/cyberimp/eyes/insert(var/mob/living/carbon/M, var/special = 0)
..()
var/mob/living/carbon/human/H = M
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index fba2df57e8a..2973573bc2c 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -5,7 +5,7 @@
organ_tag = "eyes"
parent_organ = "head"
slot = "eyes"
- var/eye_colour = "#000000"
+ var/eye_colour = "#000000" // Should never be null
var/list/colourmatrix = null
var/list/colourblind_matrix = MATRIX_GREYSCALE //Special colourblindness parameters. By default, it's black-and-white.
var/list/replace_colours = LIST_GREYSCALE_REPLACE
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index 1fde13e246e..305c08ff17e 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -404,7 +404,7 @@ Note that amputating the affected organ does in fact remove the infection from t
fracture()
/obj/item/organ/external/proc/check_for_internal_bleeding(damage)
- if(NO_BLOOD in owner.dna.species.species_traits)
+ if(owner && NO_BLOOD in owner.dna.species.species_traits)
return
var/local_damage = brute_dam + damage
if(damage > 15 && local_damage > 30 && prob(damage) && !is_robotic())