diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 1452273573a..176108b8f08 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -241,12 +241,20 @@
if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2)
return ..()
+ if(!isOn()) //why wasn't this being checked already?
+ to_chat(user, "Turn on [src] before attempting repairs!")
+ return 1
+
if(S.brute_dam)
if(S.brute_dam < ROBOLIMB_SELF_REPAIR_CAP)
- if(remove_fuel(0,null))
- playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
- S.heal_damage(15,0,0,1)
- user.visible_message("\The [user] patches some dents on \the [M]'s [S.name] with \the [src].")
+ if(get_fuel() >= 1)
+ if(H == user)
+ if(!do_mob(user, H, 10))
+ return 1
+ if(remove_fuel(1,null))
+ playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
+ S.heal_damage(15,0,0,1)
+ user.visible_message("\The [user] patches some dents on \the [M]'s [S.name] with \the [src].")
else if(S.open != 2)
to_chat(user, "Need more welding fuel!")
return 1
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index d2d2c619882..0bbc04c08d8 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -517,7 +517,15 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list(
if(S.burn_dam)
if(S.burn_dam < ROBOLIMB_SELF_REPAIR_CAP)
- S.heal_damage(0,15,0,1)
+ if(H == user)
+ if(!do_mob(user, H, 10))
+ return 1
+ var/cable_to_use = 0
+ for(cable_to_use in 1 to 5)
+ if(cable_to_use == amount || (cable_to_use * 3) >= S.burn_dam)
+ break
+ use(cable_to_use)
+ S.heal_damage(0, (cable_to_use * 3), 0, 1)
user.visible_message("\The [user] repairs some burn damage on \the [M]'s [S.name] with \the [src].")
else if(S.open != 2)
to_chat(user, "The damage is far too severe to patch over externally.")