diff --git a/code/modules/mob/living/deity/deity.dm b/code/modules/mob/living/deity/deity.dm index f3a5f2ff9ddd..a8a8981195b4 100644 --- a/code/modules/mob/living/deity/deity.dm +++ b/code/modules/mob/living/deity/deity.dm @@ -52,14 +52,34 @@ return STATUS_INTERACTIVE /mob/living/deity/Destroy() + + for(var/phenom in phenomenas) + remove_phenomena(phenom) + + if(length(items_by_category)) + for(var/cat in items_by_category) + var/list/L = items_by_category[cat] + L.Cut() + items_by_category.Cut() + + if(length(items)) + for(var/i in items) + qdel(items[i]) + items.Cut() + death(0) - minions.Cut() - structures.Cut() - eyeobj.release() + if(length(minions)) + minions.Cut() + if(length(structures)) + structures.Cut() + if(eyeobj) + eyeobj.release() + QDEL_NULL(eyeobj) QDEL_NULL(eyenet) //We do it here as some mobs have eyes that have access to the visualnet and we only want to destroy it when the deity is destroyed - QDEL_NULL(eyeobj) + QDEL_NULL(form) + return ..() /mob/living/deity/verb/return_to_plane() diff --git a/code/modules/mob/living/deity/deity_items.dm b/code/modules/mob/living/deity/deity_items.dm index 9245a8dbbd02..3dfa6e4dc642 100644 --- a/code/modules/mob/living/deity/deity_items.dm +++ b/code/modules/mob/living/deity/deity_items.dm @@ -31,14 +31,3 @@ if(items[name]) var/datum/deity_item/di = items[name] . = di.level - - -/mob/living/deity/Destroy() - for(var/cat in items_by_category) - var/list/L = items_by_category[cat] - L.Cut() - items_by_category.Cut() - for(var/i in items) - qdel(items[i]) - items.Cut() - . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/deity/deity_phenomena.dm b/code/modules/mob/living/deity/deity_phenomena.dm index 02533e6186c9..1409e8996092 100644 --- a/code/modules/mob/living/deity/deity_phenomena.dm +++ b/code/modules/mob/living/deity/deity_phenomena.dm @@ -38,11 +38,6 @@ if(power_per_regen < 0 || power < power_min) adjust_power(power_per_regen) -/mob/living/deity/Destroy() - for(var/phenom in phenomenas) - remove_phenomena(phenom) - return ..() - /mob/living/deity/proc/add_phenomena(var/type) if(!phenomenas) phenomenas = list() diff --git a/code/modules/mob/observer/eye/freelook/freelook.dm b/code/modules/mob/observer/eye/freelook/freelook.dm index b3cf191a3c30..7234084d0cdb 100644 --- a/code/modules/mob/observer/eye/freelook/freelook.dm +++ b/code/modules/mob/observer/eye/freelook/freelook.dm @@ -4,12 +4,12 @@ /mob/observer/eye/freelook var/list/visibleChunks = list() - var/datum/visualnet/visualnet /mob/observer/eye/freelook/Initialize(var/mapload, var/datum/visualnet/net) . = ..() - if(net) visualnet = net + if(net) + visualnet = net /mob/observer/eye/freelook/Destroy() . = ..() @@ -17,16 +17,17 @@ /mob/observer/eye/freelook/possess(var/mob/user) . = ..() - visualnet.update_eye_chunks(src, TRUE) + if(visualnet) + visualnet.update_eye_chunks(src, TRUE) /mob/observer/eye/freelook/release(var/mob/user) - if(user == owner) + if(visualnet && user == owner) visualnet.remove_eye(src) . = ..() - + // Streams the chunk that the new loc is in. /mob/observer/eye/freelook/setLoc(var/T) . = ..() - if(.) + if(. && visualnet) visualnet.update_eye_chunks(src) \ No newline at end of file