diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 9364f1b859..58c5d18ea0 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -8,10 +8,6 @@
* Circular Saw
*/
-/*
- * Retractor
- */
-
/obj/item/weapon/surgical
name = "Surgical tool"
desc = "This shouldn't be here, ahelp it."
@@ -25,10 +21,13 @@
return 0
..()
+/*
+ * Retractor
+ */
+
/obj/item/weapon/surgical/retractor
name = "retractor"
desc = "Retracts stuff."
- icon = 'icons/obj/surgery.dmi'
icon_state = "retractor"
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
@@ -173,3 +172,33 @@
throw_speed = 3
throw_range = 5
attack_verb = list("attacked", "hit", "bludgeoned")
+
+
+// Cyborg Tools
+
+/obj/item/weapon/surgical/retractor/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/hemostat/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/cautery/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/surgicaldrill/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/scalpel/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/circular_saw/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/bonegel/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/FixOVein/cyborg
+ toolspeed = 0.5
+
+/obj/item/weapon/surgical/bonesetter/cyborg
+ toolspeed = 0.5
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 92b05760b6..6ff7ff8f72 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -312,19 +312,19 @@
/obj/item/weapon/weldingtool/examine(mob/user)
if(..(user, 0))
if(max_fuel)
- user << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
+ to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
if(istype(W,/obj/item/weapon/screwdriver))
if(welding)
- user << "Stop welding first!"
+ to_chat(user, "Stop welding first!")
return
status = !status
if(status)
- user << "You secure the welder."
+ to_chat(user, "You secure the welder.")
else
- user << "The welder can now be attached and modified."
+ to_chat(user, "The welder can now be attached and modified.")
src.add_fingerprint(user)
return
@@ -380,16 +380,16 @@
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
if(!welding && max_fuel)
O.reagents.trans_to_obj(src, max_fuel)
- user << "Welder refueled"
+ to_chat(user, "Welder refueled")
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
return
else if(!welding)
- user << "[src] doesn't use fuel."
+ to_chat(user, "[src] doesn't use fuel.")
return
else
message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
- user << "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done."
+ to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
var/obj/structure/reagent_dispensers/fueltank/tank = O
tank.explode()
return
@@ -429,7 +429,7 @@
return 1
else
if(M)
- M << "You need more welding fuel to complete this task."
+ to_chat(M, "You need more welding fuel to complete this task.")
update_icon()
return 0
@@ -509,7 +509,7 @@
if(set_welding && !welding)
if (get_fuel() > 0)
if(M)
- M << "You switch the [src] on."
+ to_chat(M, "You switch the [src] on.")
else if(T)
T.visible_message("\The [src] turns on.")
playsound(loc, acti_sound, 50, 1)
@@ -524,14 +524,14 @@
else
if(M)
var/msg = max_fuel ? "welding fuel" : "charge"
- M << "You need more [msg] to complete this task."
+ to_chat(M, "You need more [msg] to complete this task.")
return
//Otherwise
else if(!set_welding && welding)
if(!always_process)
processing_objects -= src
if(M)
- M << "You switch \the [src] off."
+ to_chat(M, "You switch \the [src] off.")
else if(T)
T.visible_message("\The [src] turns off.")
playsound(loc, deac_sound, 50, 1)
@@ -556,29 +556,29 @@
return
switch(safety)
if(1)
- usr << "Your eyes sting a little."
+ to_chat(usr, "Your eyes sting a little.")
E.damage += rand(1, 2)
if(E.damage > 12)
user.eye_blurry += rand(3,6)
if(0)
- usr << "Your eyes burn."
+ to_chat(usr, "Your eyes burn.")
E.damage += rand(2, 4)
if(E.damage > 10)
E.damage += rand(4,10)
if(-1)
- usr << "Your thermals intensify the welder's glow. Your eyes itch and burn severely."
+ to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
user.eye_blurry += rand(12,20)
E.damage += rand(12, 16)
if(safety<2)
if(E.damage > 10)
- user << "Your eyes are really starting to hurt. This can't be good for you!"
+ to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
if (E.damage >= E.min_broken_damage)
- user << "You go blind!"
+ to_chat(user, "You go blind!")
user.sdisabilities |= BLIND
else if (E.damage >= E.min_bruised_damage)
- user << "You go blind!"
+ to_chat(user, "You go blind!")
user.Blind(5)
user.eye_blurry = 5
user.disabilities |= NEARSIGHTED
@@ -688,16 +688,19 @@
cell_type = null
/obj/item/weapon/weldingtool/electric/examine(mob/user)
- ..()
- if(power_supply)
- user << text("\icon[] [] has [] charge left.", src, src.name, get_fuel())
- else
- user << text("\icon[] [] has power for no power cell!", src, src.name)
+ if(get_dist(src, user) > 1)
+ to_chat(user, desc)
+ else // The << need to stay, for some reason
+ if(power_supply)
+ user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
+ else
+ user << text("\icon[] The [] has no power cell!", src, src.name)
/obj/item/weapon/weldingtool/electric/get_fuel()
if(use_external_power)
var/obj/item/weapon/cell/external = get_external_power_supply()
- return external.charge
+ if(external)
+ return external.charge
else if(power_supply)
return power_supply.charge
else
@@ -727,7 +730,7 @@
return 1
else
if(M)
- M << "You need more energy to complete this task."
+ to_chat(M, "You need more energy to complete this task.")
update_icon()
return 0
@@ -737,7 +740,7 @@
power_supply.update_icon()
user.put_in_hands(power_supply)
power_supply = null
- user << "You remove the cell from the [src]."
+ to_chat(user, "You remove the cell from the [src].")
setWelding(0)
update_icon()
return
@@ -752,12 +755,12 @@
user.drop_item()
W.loc = src
power_supply = W
- user << "You install a cell in \the [src]."
+ to_chat(user, "You install a cell in \the [src].")
update_icon()
else
- user << "\The [src] already has a cell."
+ to_chat(user, "\The [src] already has a cell.")
else
- user << "\The [src] cannot use that type of cell."
+ to_chat(user, "\The [src] cannot use that type of cell.")
else
..()
@@ -778,6 +781,8 @@
/obj/item/weapon/weldingtool/electric/mounted
use_external_power = 1
+/obj/item/weapon/weldingtool/electric/mounted/cyborg
+ toolspeed = 0.5
/*
* Crowbar
*/
@@ -814,7 +819,7 @@
return ..()
if(!welding)
- user << "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!"
+ to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
return 1
if(S.robo_repair(15, BRUTE, "some dents", src, user))
@@ -878,9 +883,9 @@
/obj/item/weapon/combitool/examine()
..()
if(loc == usr && tools.len)
- usr << "It has the following fittings:"
+ to_chat(usr, "It has the following fittings:")
for(var/obj/item/tool in tools)
- usr << "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]"
+ to_chat(usr, "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]")
/obj/item/weapon/combitool/New()
..()
@@ -891,9 +896,9 @@
if(++current_tool > tools.len) current_tool = 1
var/obj/item/tool = tools[current_tool]
if(!tool)
- user << "You can't seem to find any fittings in \the [src]."
+ to_chat(user, "You can't seem to find any fittings in \the [src].")
else
- user << "You switch \the [src] to the [tool.name] fitting."
+ to_chat(user, "You switch \the [src] to the [tool.name] fitting.")
return 1
/obj/item/weapon/combitool/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 8d9becaa4b..a92a639661 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -212,19 +212,20 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/surgeon(src)
- src.modules += new /obj/item/weapon/surgical/scalpel(src)
- src.modules += new /obj/item/weapon/surgical/hemostat(src)
- src.modules += new /obj/item/weapon/surgical/retractor(src)
- src.modules += new /obj/item/weapon/surgical/cautery(src)
- src.modules += new /obj/item/weapon/surgical/bonegel(src)
- src.modules += new /obj/item/weapon/surgical/FixOVein(src)
- src.modules += new /obj/item/weapon/surgical/bonesetter(src)
- src.modules += new /obj/item/weapon/surgical/circular_saw(src)
- src.modules += new /obj/item/weapon/surgical/surgicaldrill(src)
+ src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/hemostat/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/retractor/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/cautery/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/bonegel/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/FixOVein/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/bonesetter/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/surgicaldrill/cyborg(src)
src.modules += new /obj/item/weapon/gripper/no_use/organ(src)
src.modules += new /obj/item/weapon/gripper/medical(src)
src.modules += new /obj/item/weapon/shockpaddles/robot(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper(src) // Allows surgeon borg to fix necrosis
+ src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.emag = new /obj/item/weapon/reagent_containers/spray(src)
src.emag.reagents.add_reagent("pacid", 250)
src.emag.name = "Polyacid spray"
@@ -356,7 +357,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/rcd/borg(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
+ src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
@@ -394,7 +395,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/engineering/general/New()
..()
src.modules += new /obj/item/borg/sight/meson(src)
- src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
+ src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
@@ -708,13 +709,13 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
src.modules += new /obj/item/device/robotanalyzer(src)
src.modules += new /obj/item/weapon/card/robot(src)
- src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
+ src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
- src.modules += new /obj/item/weapon/surgical/scalpel(src)
- src.modules += new /obj/item/weapon/surgical/circular_saw(src)
+ src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
+ src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
src.modules += new /obj/item/weapon/storage/part_replacer(src)
@@ -849,7 +850,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/drone/New(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/borg/sight/meson(src)
- src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
+ src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
src.modules += new /obj/item/weapon/crowbar/cyborg(src)
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 19007addae..8aab6a0a46 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -127,7 +127,8 @@
// Not staying still fails you too.
if(success)
- if(!do_mob(user, M, rand(S.min_duration, S.max_duration)))
+ var/calc_duration = rand(S.min_duration, S.max_duration)
+ if(!do_mob(user, M, calc_duration * toolspeed))
success = FALSE
to_chat(user, "You must remain close to your patient to conduct surgery.")