diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index e256030221e8..3e174c313786 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -26,6 +26,11 @@ if (wounding_type) LAZYSET(limb_owner.body_zone_dismembered_by, body_zone, wounding_type) + if((limb_id == SPECIES_OOZELING)) + to_chat(limb_owner, span_warning("Your [src] splatters with an unnerving squelch!")) + playsound(limb_owner, 'sound/effects/blobattack.ogg', 60, TRUE) + limb_owner.blood_volume -= 60 //Makes for 120 when you regenerate it. monkeedit it actually it costs 100 limbs are 40 right now. + drop_limb() limb_owner.update_equipment_speed_mods() // Update in case speed affecting item unequipped by dismemberment @@ -136,18 +141,18 @@ return if((limb_id == SPECIES_OOZELING) && !special) - to_chat(phantom_owner, span_warning("Your [src] splatters with an unnerving squelch!")) - playsound(phantom_owner, 'sound/effects/blobattack.ogg', 60, TRUE) - phantom_owner.blood_volume -= 60 //Makes for 120 when you regenerate it. - - var/list/limborgans = src.contents - if(limborgans) //Handle implants dropping when limb is dismembered - //Oozling heads can be dismemebered without death should those stay? - for(var/obj/item/organ/lmbimplant in limborgans) - if(!(deprecise_zone(src.body_zone) == BODY_ZONE_HEAD || deprecise_zone(src.body_zone) == BODY_ZONE_CHEST)) + if(deprecise_zone(src.body_zone) in list(BODY_ZONE_HEAD, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG )) + var/list/limborgans = src.contents + if(limborgans) //Handle implants dropping when limb is dismembered + for(var/obj/item/organ/lmbimplant in limborgans) lmbimplant.forceMove(drop_loc) + if(istype(lmbimplant, /obj/item/organ/internal/eyes)) // The eye slot is going to be some type of eyes right? + if(lmbimplant.type == /obj/item/organ/internal/eyes) // but we don't want to to drop oozlings natural eyes. Do the proper species check for eyes. + qdel(lmbimplant) + continue + var/obj/item/bodypart/head/oozeling/oozhead = src + oozhead.eyes = null // Need this otherwise qdel on head deletes the eyes. to_chat(phantom_owner, span_notice("Something small falls out the [src].")) - qdel(src) return diff --git a/monkestation/code/modules/surgery/organs/internal/brain.dm b/monkestation/code/modules/surgery/organs/internal/brain.dm index f2d63264d776..fdf7d21cba51 100644 --- a/monkestation/code/modules/surgery/organs/internal/brain.dm +++ b/monkestation/code/modules/surgery/organs/internal/brain.dm @@ -51,7 +51,8 @@ /obj/item/organ/external/horns, /obj/item/organ/external/snout, /obj/item/organ/external/antennae, - /obj/item/organ/external/spines + /obj/item/organ/external/spines, + /obj/item/organ/internal/eyes/robotic/glow )) //Quirks that roll unique effects or gives items to each new body should be saved between bodies. var/static/list/saved_quirks = typecacheof(list( @@ -376,16 +377,21 @@ continue if(istype(bodypart, /obj/item/bodypart/head)) // Living mobs eyes are stored in the body so remove the organs properly for their effect to work. - var/obj/item/organ/internal/eyes/eyes = new_body.get_organ_slot(ORGAN_SLOT_EYES) - eyes.Remove(new_body) - qdel(eyes) - qdel(bodypart) + if(new_body.has_quirk(/datum/quirk/bright_eyes)) // Either they have their eyes in their core or they are destroyed dont spawn another. + var/obj/item/organ/internal/eyes/eyes = new_body.get_organ_slot(ORGAN_SLOT_EYES) + eyes.Remove(new_body) + qdel(eyes) + bodypart.drop_limb() // Drop limb should delete the limb for oozlings unless someone changes it. new_body.visible_message(span_warning("[new_body]'s torso \"forms\" from [new_body.p_their()] core, yet to form the rest.")) to_chat(owner, span_purple("Your torso fully forms out of your core, yet to form the rest.")) //Make oozlings revive similar to other species. new_body.set_jitter_if_lower(200 SECONDS) new_body.emote("scream") else + if(new_body.has_quirk(/datum/quirk/bright_eyes)) // Either they have their eyes in core or they are destroyed don't spawn another. + var/obj/item/organ/new_organ = new_body.dna.species.get_mutant_organ_type_for_slot(ORGAN_SLOT_EYES) + new_organ = SSwardrobe.provide_type(new_organ) + new_organ.Insert(new_body, special = TRUE, drop_if_replaced = FALSE) new_body.visible_message(span_warning("[new_body]'s body fully forms from [new_body.p_their()] core!")) to_chat(owner, span_purple("Your body fully forms from your core!")) @@ -394,10 +400,6 @@ new_body.grab_ghost() transfer_observers_to(new_body) - //Update both the body and stats fixs visual body and HUD issues - new_body.update_stat() - new_body.update_body_parts() - drop_items_to_ground(new_body.drop_location()) return new_body