diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 0905a61266..d76cdab8f1 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -1,16 +1,20 @@ /proc/spawn_diona_nymph_from_organ(var/obj/item/organ/organ) if(!istype(organ)) - return + return 0 //This is a terrible hack and I should be ashamed. var/datum/seed/diona = plant_controller.seeds["diona"] if(!diona) - qdel(src) + return 0 spawn(1) // So it has time to be thrown about by the gib() proc. var/mob/living/carbon/alien/diona/D = new(get_turf(organ)) diona.request_player(D) - qdel(organ) + spawn(60) + if(D) + if(!D.ckey || !D.client) + D.death() + return 1 /obj/item/organ/external/diona name = "tendril" @@ -128,16 +132,13 @@ //DIONA ORGANS. /obj/item/organ/external/diona/removed() + var/mob/living/carbon/human/H = owner ..() - if(!istype(owner)) + if(!istype(H) || !H.organs || !H.organs.len) + H.death() + if(prob(50) && spawn_diona_nymph_from_organ(src)) qdel(src) - if(!owner.organs.len) - owner.death() - - if(prob(50)) - spawn_diona_nymph_from_organ(src) - /obj/item/organ/diona/process() return @@ -172,16 +173,13 @@ organ_tag = "special" // Turns into a nymph instantly, no transplanting possible. /obj/item/organ/diona/removed(var/mob/living/user) - + var/mob/living/carbon/human/H = owner ..() - if(!istype(owner)) + if(!istype(H) || !H.organs || !H.organs.len) + H.death() + if(prob(50) && spawn_diona_nymph_from_organ(src)) qdel(src) - if(!owner.internal_organs.len) - owner.death() - - spawn_diona_nymph_from_organ(src) - // These are different to the standard diona organs as they have a purpose in other // species (absorbing radiation and light respectively) /obj/item/organ/diona/nutrients