diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm
index 6cb5908f6f..a6fc34f738 100644
--- a/code/modules/mob/living/bot/cleanbot.dm
+++ b/code/modules/mob/living/bot/cleanbot.dm
@@ -180,11 +180,11 @@
w_class = 3.0
var/created_name = "Cleanbot"
-/obj/item/weapon/bucket_sensor/attackby(var/obj/item/O, var/mob/user)
+/obj/item/weapon/bucket_sensor/attackby(var/obj/item/W, var/mob/user)
..()
- if(istype(O, /obj/item/robot_parts/l_arm) || istype(O, /obj/item/robot_parts/r_arm))
+ if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm) || (istype(W, /obj/item/organ/external/arm) && ((W.name == "robotic left arm") || (W.name == "robotic right arm"))))
user.drop_item()
- qdel(O)
+ qdel(W)
var/turf/T = get_turf(loc)
var/mob/living/bot/cleanbot/A = new /mob/living/bot/cleanbot(T)
A.name = created_name
@@ -192,10 +192,10 @@
user.drop_from_inventory(src)
qdel(src)
- else if(istype(O, /obj/item/weapon/pen))
+ else if(istype(W, /obj/item/weapon/pen))
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
if(!t)
return
if(!in_range(src, usr) && src.loc != usr)
return
- created_name = t
+ created_name = t
\ No newline at end of file
diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm
index ec4278c967..80279a4538 100644
--- a/code/modules/mob/living/bot/ed209bot.dm
+++ b/code/modules/mob/living/bot/ed209bot.dm
@@ -94,7 +94,7 @@
switch(build_step)
if(0, 1)
- if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg))
+ if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg) || (istype(W, /obj/item/organ/external/leg) && ((W.name == "robotic right leg") || (W.name == "robotic left leg"))))
user.drop_item()
qdel(W)
build_step++
diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm
index 42452c49fa..905c53a20a 100644
--- a/code/modules/mob/living/bot/farmbot.dm
+++ b/code/modules/mob/living/bot/farmbot.dm
@@ -337,6 +337,18 @@
new /obj/item/weapon/farmbot_arm_assembly(loc, src)
+/obj/structure/reagent_dispensers/watertank/attackby(var/obj/item/organ/external/S, mob/user as mob)
+ if ((!istype(S, /obj/item/organ/external/arm)) && (!S.robotic == ORGAN_ROBOT))
+ ..()
+ return
+
+ user << "You add the robot arm to [src]."
+
+ user.drop_from_inventory(S)
+ qdel(S)
+
+ new /obj/item/weapon/farmbot_arm_assembly(loc, src)
+
/obj/item/weapon/farmbot_arm_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if((istype(W, /obj/item/device/analyzer/plant_analyzer)) && (build_step == 0))
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index 0072d9a444..ca4f572775 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -339,7 +339,7 @@
/obj/item/weapon/toolbox_tiles_sensor/attackby(var/obj/item/W, mob/user as mob)
..()
- if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
+ if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm) || (istype(W, /obj/item/organ/external/arm) && ((W.name == "robotic right arm") || (W.name == "robotic left arm"))))
qdel(W)
var/turf/T = get_turf(user.loc)
var/mob/living/bot/floorbot/A = new /mob/living/bot/floorbot(T)
diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm
index 8a0c7564d1..4186c047da 100644
--- a/code/modules/mob/living/bot/medbot.dm
+++ b/code/modules/mob/living/bot/medbot.dm
@@ -286,6 +286,52 @@
user.drop_from_inventory(src)
qdel(src)
+/obj/item/weapon/storage/firstaid/attackby(var/obj/item/robot_parts/S, mob/user as mob)
+ if ((!istype(S, /obj/item/robot_parts/l_arm)) && (!istype(S, /obj/item/robot_parts/r_arm)))
+ ..()
+ return
+
+ if(contents.len >= 1)
+ user << "You need to empty [src] out first."
+ return
+
+ var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
+ if(istype(src, /obj/item/weapon/storage/firstaid/fire))
+ A.skin = "ointment"
+ else if(istype(src, /obj/item/weapon/storage/firstaid/toxin))
+ A.skin = "tox"
+ else if(istype(src, /obj/item/weapon/storage/firstaid/o2))
+ A.skin = "o2"
+
+ qdel(S)
+ user.put_in_hands(A)
+ user << "You add the robot arm to the first aid kit."
+ user.drop_from_inventory(src)
+ qdel(src)
+
+/obj/item/weapon/storage/firstaid/attackby(var/obj/item/organ/external/S, mob/user as mob)
+ if (!istype(S, /obj/item/organ/external/arm) && !(S.robotic == ORGAN_ROBOT))
+ ..()
+ return
+
+ if(contents.len >= 1)
+ user << "You need to empty [src] out first."
+ return
+
+ var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
+ if(istype(src, /obj/item/weapon/storage/firstaid/fire))
+ A.skin = "ointment"
+ else if(istype(src, /obj/item/weapon/storage/firstaid/toxin))
+ A.skin = "tox"
+ else if(istype(src, /obj/item/weapon/storage/firstaid/o2))
+ A.skin = "o2"
+
+ qdel(S)
+ user.put_in_hands(A)
+ user << "You add the robot arm to the first aid kit."
+ user.drop_from_inventory(src)
+ qdel(src)
+
/obj/item/weapon/firstaid_arm_assembly
name = "first aid/robot arm assembly"
desc = "A first aid kit with a robot arm permanently grafted to it."
diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm
index b07202572e..f7556e0ece 100644
--- a/code/modules/mob/living/bot/secbot.dm
+++ b/code/modules/mob/living/bot/secbot.dm
@@ -258,40 +258,40 @@
var/build_step = 0
var/created_name = "Securitron"
-/obj/item/weapon/secbot_assembly/attackby(var/obj/item/O, var/mob/user)
+/obj/item/weapon/secbot_assembly/attackby(var/obj/item/W, var/mob/user)
..()
- if(istype(O, /obj/item/weapon/weldingtool) && !build_step)
- var/obj/item/weapon/weldingtool/WT = O
+ if(istype(W, /obj/item/weapon/weldingtool) && !build_step)
+ var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
build_step = 1
overlays += image('icons/obj/aibots.dmi', "hs_hole")
user << "You weld a hole in \the [src]."
- else if(isprox(O) && (build_step == 1))
+ else if(isprox(W) && (build_step == 1))
user.drop_item()
build_step = 2
- user << "You add \the [O] to [src]."
+ user << "You add \the [W] to [src]."
overlays += image('icons/obj/aibots.dmi', "hs_eye")
name = "helmet/signaler/prox sensor assembly"
- qdel(O)
+ qdel(W)
- else if((istype(O, /obj/item/robot_parts/l_arm) || istype(O, /obj/item/robot_parts/r_arm)) && build_step == 2)
+ else if((istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm) || (istype(W, /obj/item/organ/external/arm) && ((W.name == "robotic right arm") || (W.name == "robotic left arm")))) && build_step == 2)
user.drop_item()
build_step = 3
- user << "You add \the [O] to [src]."
+ user << "You add \the [W] to [src]."
name = "helmet/signaler/prox sensor/robot arm assembly"
overlays += image('icons/obj/aibots.dmi', "hs_arm")
- qdel(O)
+ qdel(W)
- else if(istype(O, /obj/item/weapon/melee/baton) && build_step == 3)
+ else if(istype(W, /obj/item/weapon/melee/baton) && build_step == 3)
user.drop_item()
user << "You complete the Securitron! Beep boop."
var/mob/living/bot/secbot/S = new /mob/living/bot/secbot(get_turf(src))
S.name = created_name
- qdel(O)
+ qdel(W)
qdel(src)
- else if(istype(O, /obj/item/weapon/pen))
+ else if(istype(W, /obj/item/weapon/pen))
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
if(!t)
return