diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index cfdc56f290b..9bf59bce63d 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -70,9 +70,13 @@ B.transfer_identity(user) + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + H.update_hair(0) + ..() -/obj/item/organ/internal/brain/insert(var/mob/living/target) +/obj/item/organ/internal/brain/insert(var/mob/living/target,special = 0) var/brain_already_exists = 0 if(istype(target,/mob/living/carbon/human)) // No more IPC multibrain shenanigans @@ -80,6 +84,9 @@ if(target.get_int_organ(/obj/item/organ/internal/brain)) brain_already_exists = 1 + var/mob/living/carbon/human/H = target + H.update_hair(0) + if(!brain_already_exists) if(target.key) target.ghostize() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ba88d6d7527..46066726271 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -471,7 +471,10 @@ var/global/list/damage_icon_parts = list() else //warning("Invalid h_style for [species.name]: [h_style]") - overlays_standing[HAIR_LAYER] = image(hair_standing) + if(!src.get_int_organ(/obj/item/organ/internal/brain) && !src.get_species() == "Machine" )//make it obvious we have NO BRAIN + overlays_standing[HAIR_LAYER] = image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s") + else + overlays_standing[HAIR_LAYER] = image(hair_standing) if(update_icons) update_icons() diff --git a/code/modules/projectiles/guns/mounted.dm b/code/modules/projectiles/guns/mounted.dm index 5183998cdc1..bd2cf712a49 100644 --- a/code/modules/projectiles/guns/mounted.dm +++ b/code/modules/projectiles/guns/mounted.dm @@ -4,7 +4,7 @@ icon_state = "armcannonstun" item_state = "armcannonstun" modifystate = "armcannonstun" - force = "5" + force = 5 self_recharge = 1 flags = NODROP slot_flags = null @@ -20,7 +20,7 @@ icon_state = "armcannon" item_state = "armcannonlase" modifystate = "armcannon" - force = "5" + force = 5 self_recharge = 1 flags = NODROP slot_flags = null diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 20eaf7dbd79..3bd8634758a 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -50,10 +50,8 @@ /obj/item/weapon/reagent_containers/attack_self(mob/user as mob) return -///obj/item/weapon/reagent_containers/attack(mob/M as mob, mob/user as mob, def_zone) -// if (can_operate(M)) //Checks if mob is lying down on table for surgery -// if (do_surgery(M,user,src)) -// return +/obj/item/weapon/reagent_containers/attack(mob/M as mob, mob/user as mob, def_zone) + return // this prevented pills, food, and other things from being picked up by bags. // possibly intentional, but removing it allows us to not duplicate functionality. diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index ea44ce56084..539a4ed0c5a 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -102,7 +102,7 @@ O.status |= ORGAN_CUT_AWAY if(!O.sterile) spread_germs_to_organ(O,user) // This wouldn't be any cleaner than the actual surgery - O.remove(src) + O.forceMove(src) if(!(user.l_hand && user.r_hand)) user.put_in_hands(removing) user.visible_message("[user] extracts [removing] from [src] with [W]!") diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 85db201f391..cf12bd80cc2 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -45,7 +45,16 @@ if(M) M.internal_organs -= src if(vital && !special) - M.death() + if(M.stat != DEAD)//safety check! + M.death() + + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/parent = H.get_organ(check_zone(parent_organ)) + if(!istype(parent)) + log_to_dd("[src] attempted to remove from a [parent], but [parent] didn't exist! Area: [get_area(M)], Mob: [M]") + else + parent.internal_organs -= src if(organ_action_name) action_button_name = null @@ -54,6 +63,10 @@ remove(owner) ..() +/obj/item/organ/internal/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected) + insert(target) + ..() + /obj/item/organ/internal/proc/on_find(mob/living/finder) return @@ -368,6 +381,7 @@ M.mutations.Add(CLUMSY) M.dna.SetSEState(COMICBLOCK,1,1) genemutcheck(M,COMICBLOCK,null,MUTCHK_FORCED) + lasthonk = world.time /obj/item/organ/internal/honktumor/remove(mob/living/carbon/M, special = 0) M.mutations.Remove(CLUMSY) @@ -378,9 +392,8 @@ if(!owner) return - if(lasthonk == 0) - lasthonk = world.time - if((lasthonk > world.time + 60)|| lasthonk == 0) + + if((lasthonk > world.time + 60)) lasthonk = world.time owner << "HONK" owner.sleeping = 0 diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index 76a91d8a7c2..d1aac66a71c 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -123,7 +123,7 @@ mob/living/carbon/human/proc/handle_pain() continue if(I.damage > 2) if(prob(2)) var/obj/item/organ/external/parent = get_organ(I.parent_organ) - src.custom_pain("You feel a sharp pain in your [parent.name]", 1) + src.custom_pain("You feel a sharp pain in your [parent.limb_name]", 1) var/toxDamageMessage = null var/toxMessageProb = 1 diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 5c7e0e99cfd..f7f46d56160 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -36,6 +36,11 @@ return 0 return 1 +/datum/surgery/organ_manipulation/alien/can_start(mob/user, mob/living/carbon/target) + if(istype(target,/mob/living/carbon/alien/humanoid)) + return 1 + else return 0 + // Internal surgeries. /datum/surgery_step/internal priority = 2 diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 7eec478d96b..83dfb8e81e6 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ