diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 829551b9fcc..5db7e620325 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -966,12 +966,12 @@ datum/mind
switch(href_list["shadowling"])
if("clear")
ticker.mode.update_shadow_icons_removed(src)
- current.spell_list = null
+ current.spell_list.Cut()
if(src in ticker.mode.shadows)
ticker.mode.shadows -= src
special_role = null
current << "Your powers have been quenched! You are no longer a shadowling!"
- current.spell_list = null
+ current.spell_list.Cut()
message_admins("[key_name_admin(usr)] has de-shadowling'ed [current].")
log_admin("[key_name(usr)] has de-shadowling'ed [current].")
current.verbs -= /mob/living/carbon/human/proc/shadowling_hatch
diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
index dba7f327eb6..4dd5ff26b68 100644
--- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm
@@ -19,6 +19,8 @@
for(var/obj/item/I in usr) //drops all items
usr.unEquip(I)
+ if(istype(I, /obj/item/organ) && (I in src.internal_organs)) //Shadowlings only have a brain, the other organs would drop otherwise.
+ qdel(I)
sleep(50)
var/turf/simulated/floor/F
@@ -31,7 +33,7 @@
usr.visible_message("A chrysalis forms around [usr], sealing them inside.", \
"You create your chrysalis and begin to contort within.")
-
+ usr.Weaken(30)
sleep(100)
usr.visible_message("The skin on [usr]'s back begins to split apart. Black spines slowly emerge from the divide.", \
"Spines pierce your back. Your claws break apart your fingers. You feel excruciating pain as your true form begins its exit.")
diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm
index cf6b4b9bae1..5ad58df488f 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/mob/living/carbon/brain/brain_item.dm
@@ -23,8 +23,8 @@
/obj/item/organ/brain/New()
..()
spawn(5)
- if(brainmob && brainmob.client) //This is runtiming too. What the fuck? "runtime error: undefined variable /obj/item/organ/brain/var/client" BUT YOU'RE SUPPOSED TO BE CHECKING THE BRAINMOB.
- brainmob.client.screen.len = null //clear the hud
+ for(var/mob/living/carbon/brain/bmob in src) //I'm going to hell for this, but there's no other way to stop these runtimes.
+ bmob.client.screen.len = null //clear the hud
/obj/item/organ/brain/proc/transfer_identity(var/mob/living/carbon/H)
name = "\the [H]'s [initial(src.name)]"
diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm
index 76f15657886..8540507d057 100644
--- a/code/modules/mob/living/carbon/brain/posibrain.dm
+++ b/code/modules/mob/living/carbon/brain/posibrain.dm
@@ -169,17 +169,17 @@
..()
/obj/item/device/mmi/posibrain/New()
-
- src.brainmob = new(src)
- src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
- src.brainmob.real_name = src.brainmob.name //WHY THE FUCK IS THIS RUNTIMING? "Undefined variable /obj/item/device/mmi/posibrain/var/real_name" WHY ARE YOU CHECKING THE POSIBRAIN AND NOT THE BRAINMOB?!
- src.brainmob.loc = src
- src.brainmob.container = src
- src.brainmob.robot_talk_understand = 1
- src.brainmob.stat = 0
- src.brainmob.silent = 0
- src.brainmob.brain_op_stage = 4.0
- dead_mob_list -= src.brainmob
+ for(var/mob/living/carbon/brain/bmob in src) //Also going to hell for this, but this should fix the runtimes.
+ bmob = new /mob/living/carbon/brain(src)
+ bmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
+ bmob.real_name = src.brainmob.name
+ bmob.loc = src
+ bmob.container = src
+ bmob.robot_talk_understand = 1
+ bmob.stat = 0
+ bmob.silent = 0
+ bmob.brain_op_stage = 4.0
+ dead_mob_list -= bmob
..()
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index bace5337085..ac726058103 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -988,7 +988,7 @@ var/list/slot_equipment_priority = list( \
if(mind && mind.changeling)
add_stings_to_statpanel(mind.changeling.purchasedpowers)
- if(spell_list && spell_list.len) //YAY RUNTIMES "runtime error: undefined variable /obj/effect/proc_holder/spell/wizard/targeted/enthrall/var/len" BYOND is fucking up references for some reason. This one breaks admin-made shadowlings.
+ if(spell_list && spell_list.len)
for(var/obj/effect/proc_holder/spell/wizard/S in spell_list)
switch(S.charge_type)
if("recharge")