diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm
index 028c0ad3a14..e95315bb88c 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/mob/living/carbon/brain/brain_item.dm
@@ -67,8 +67,8 @@
if(borer)
borer.detatch() //Should remove borer if the brain is removed - RR
-
- B.transfer_identity(user)
+ if(owner.mind)//don't transfer if the owner does not have a mind.
+ B.transfer_identity(user)
if(istype(owner,/mob/living/carbon/human))
var/mob/living/carbon/human/H = owner
diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm
index 6b289d45b9d..d633bb020ad 100644
--- a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm
+++ b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm
@@ -34,9 +34,10 @@
d/=sober_str
+ var/obj/item/organ/internal/liver/L
if(ishuman(M))
var/mob/living/carbon/human/H = M
- var/obj/item/organ/internal/liver/L = H.get_int_organ(/obj/item/organ/internal/liver)
+ L = H.get_int_organ(/obj/item/organ/internal/liver)
if(!L || (istype(L) && L.dna.species in list("Skrell", "Neara")))
d*=5
@@ -64,8 +65,7 @@
M.drowsyness = max(M.drowsyness, 30/sober_str)
if(ishuman(M))
var/mob/living/carbon/human/H = M
- if (H.get_int_organ(/obj/item/organ/internal/liver))
- var/obj/item/organ/internal/liver/L = H.get_int_organ(/obj/item/organ/internal/liver)
+ if (L)
L.take_damage(0.1, 1)
H.adjustToxLoss(0.1)
..()
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index ee90720d0bc..ceab7a8c86e 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -15,7 +15,7 @@
possible_transfer_amounts = null //list(5,10,15)
volume = 15
w_class = 1
- sharp = 1
+ sharp = 0
var/mode = SYRINGE_DRAW
on_reagent_change()
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index 0b3fbce97b4..81aa947ac7b 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -170,16 +170,21 @@
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
if(istype(tool, /obj/item/weapon/disk/nuclear))
- user << "Central command would kill you if you implanted the disk into someone."
+ user << "Central command would kill you if you implanted the disk into someone."
return 0//fail
if(istype(tool,/obj/item/organ))
- user << "This isn't the type of surgery for that!"
+ user << "This isn't the type of surgery for organ transplants!"
return 0//fail
+ if(!user.canUnEquip(tool, 0))
+ user << "[tool] is stuck to your hand, you can't put it in [target]!"
+ return 0
+
+
if(tool)
if(IC)
- user << "There seems to be something in there already!"
+ user << "There seems to be something in there already!"
return 1
else
user.visible_message(" [user] puts \the [tool] inside [target]'s [get_cavity(affected)] cavity.", \
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index cc142ae3fd0..c020b873354 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -897,7 +897,7 @@ Note that amputating the affected organ does in fact remove the infection from t
O.forceMove(src)
// Grab all the internal giblets too.
- for(var/obj/item/organ/organ in internal_organs)
+ for(var/obj/item/organ/internal/organ in internal_organs)
organ.remove()
organ.forceMove(src)
diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm
index da8681e1b4e..c9cbbb17906 100644
--- a/code/modules/surgery/organs/subtypes/standard.dm
+++ b/code/modules/surgery/organs/subtypes/standard.dm
@@ -111,6 +111,11 @@
/obj/item/organ/external/hand/remove()
if(owner.gloves)
owner.unEquip(owner.gloves)
+ if(owner.l_hand)
+ owner.unEquip(owner.l_hand,1)
+ if(owner.r_hand)
+ owner.unEquip(owner.r_hand,1)
+
..()
/obj/item/organ/external/hand/right
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index 4fca951c82f..091f104707e 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -143,7 +143,6 @@
return -1
else if(implement_type in implements_mend)
- //todo Change message, make it heal the organs...
current_type = "mend"
var/tool_name = "\the [tool]"
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
@@ -163,11 +162,11 @@
spread_germs_to_organ(I, user)
user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \
"You start treating damage to [target]'s [I.name] with [tool_name]." )
- else if(I.robotic > 2 && istype(tool, /obj/item/stack/nanopaste))
+ else if(I.robotic >= 2 && istype(tool, /obj/item/stack/nanopaste))
user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \
"You start treating damage to [target]'s [I.name] with [tool_name]." )
- user << "No organs appear to be damaged."
+ user << "[I] does not appear to be damaged."
H.custom_pain("The pain in your [affected.name] is living hell!",1)
else if(istype(tool, /obj/item/weapon/reagent_containers/food/snacks/organ))
@@ -195,7 +194,7 @@
user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \
" You treat damage to [target]'s [I.name] with [tool_name]." )
I.damage = 0
- else if(I.robotic > 2 && istype (tool, /obj/item/stack/nanopaste))
+ else if(I.robotic >= 2 && istype (tool, /obj/item/stack/nanopaste))
user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \
" You treat damage to [target]'s [I.name] with [tool_name]." )
I.damage = 0
@@ -205,6 +204,10 @@
user.drop_item()
I.insert(target)
spread_germs_to_organ(I, user)
+ if(!user.canUnEquip(I, 0))
+ user << "[I] is stuck to your hand, you can't put it in [target]!"
+ return 0
+
if(affected)
user.visible_message(" [user] has transplanted \the [tool] into [target]'s [affected.name].", \
" You have transplanted \the [tool] into [target]'s [affected.name].")
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index fa1d1750648..c1851ecabc6 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -265,7 +265,7 @@
allowed_tools = list(/obj/item/device/mmi = 100)
var/implements_extract = list(/obj/item/device/multitool = 100)
var/implements_mend = list( /obj/item/stack/nanopaste = 100,/obj/item/weapon/bonegel = 30, /obj/item/weapon/screwdriver = 70)
- var/implements_insert = list(/obj/item/weapon/screwdriver = 100)
+ var/implements_insert = list(/obj/item/organ/internal = 100)
var/implements_finish =list(/obj/item/weapon/retractor = 100,/obj/item/weapon/crowbar = 100,/obj/item/weapon/kitchen/utensil = 50)
var/current_type
var/obj/item/organ/internal/I = null
@@ -285,13 +285,11 @@
affected = target.get_organ(target_zone)
if(implement_type in implements_insert)
current_type = "insert"
- //I = tool
- var/off_tool = user.get_inactive_hand()
+ var/obj/item/organ/internal/I = tool
+
+ if(I.status != ORGAN_ROBOT || I.robotic != 2)
+ user << "You can only implant cybernetic organs."
- if(!off_tool || !istype(off_tool,/obj/item/organ/internal))
- user << "You need a replacement internal part in your off hand."
- return -1
- I = off_tool //and please god let it be an organ...
if(target_zone != I.parent_organ || target.get_organ_slot(I.slot))
user << "There is no room for [I] in [target]'s [parse_zone(target_zone)]!"
return -1
@@ -304,8 +302,8 @@
user << " \The [target] already has [I]."
return -1
- user.visible_message("[user] begins reattaching [target]'s [off_tool] with \the [tool].", \
- "You start reattaching [target]'s [off_tool] with \the [tool].")
+ user.visible_message("[user] begins reattaching [target]'s [tool].", \
+ "You start reattaching [target]'s [tool].")
target.custom_pain("Someone's rooting around in your [affected.name]!",1)
else if(istype(tool,/obj/item/device/mmi))
current_type = "install"
@@ -407,18 +405,19 @@
" You repair [target]'s [I.name] with [tool]." )
I.damage = 0
else if(current_type == "insert")
- var/obj/item/organ/internal/I = target.get_int_organ(surgery.current_organ)
+ var/obj/item/organ/internal/I = tool
- var/off_tool = user.get_inactive_hand()
- I = off_tool
- //user.drop_item()
+ if(!user.canUnEquip(I, 0))
+ user << "[I] is stuck to your hand, you can't put it in [target]!"
+ return 0
+
+ user.drop_item()
I.insert(target)
- user.visible_message(" [user] has reattached [target]'s [I] with \the [tool]." , \
- " You have reattached [target]'s [I] with \the [tool].")
+ user.visible_message(" [user] has reattached [target]'s [I]." , \
+ " You have reattached [target]'s [I].")
if(I && istype(I))
I.status &= ~ORGAN_CUT_AWAY
- qdel(off_tool)
else if (current_type == "install")
user.visible_message(" [user] has installed \the [tool] into [target]'s [affected.name].", \
" You have installed \the [tool] into [target]'s [affected.name].")