Skip to content

Commit 6953c96

Browse files
authored
Medical Borg Tool upgrade (More compact) (#6040)
## About The Pull Request Adds an upgrade path for medical cyborgs that gives them Cybernetic efficiency tools. ## Why It's Good For The Game Borgs being limited to solely the base surgical speed sucks hard, so I think this is better as it being an upgrade just makes sense. ## Changelog :cl: add: Adds an upgrade for better medical borg surgical tools. /:cl:
1 parent 6e8bb36 commit 6953c96

File tree

6 files changed

+87
-7
lines changed

6 files changed

+87
-7
lines changed

code/modules/mob/living/silicon/robot/robot_model.dm

+6-6
Original file line numberDiff line numberDiff line change
@@ -672,12 +672,12 @@
672672
/obj/item/reagent_containers/dropper,
673673
/obj/item/reagent_containers/syringe,
674674
/obj/item/surgical_drapes,
675-
/obj/item/retractor/augment, //monkestation edit start: Augmented tools
676-
/obj/item/hemostat/augment,
677-
/obj/item/cautery/augment,
678-
/obj/item/surgicaldrill/augment,
679-
/obj/item/scalpel/augment,
680-
/obj/item/circular_saw/augment, //monkestation edit end: Augmented tools
675+
/obj/item/retractor, //Monke edit start: remove augment tools
676+
/obj/item/hemostat,
677+
/obj/item/cautery,
678+
/obj/item/surgicaldrill,
679+
/obj/item/scalpel,
680+
/obj/item/circular_saw, //Monke edit end: remove augment tools
681681
/obj/item/bonesetter,
682682
/obj/item/blood_filter,
683683
/obj/item/extinguisher/mini,

code/modules/research/techweb/cyborg_nodes.dm

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"borg_upgrade_piercinghypospray",
4848
"borg_upgrade_pinpointer",
4949
"borg_upgrade_surgicalprocessor",
50+
"borg_upgrade_surgicaltools", //Monke edit: Might need to move this one to the same research node as cybernetic surgical toolset for balance.
5051
)
5152
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
5253

code/modules/surgery/surgery_step.dm

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
modded_time = min(modded_time, time * SURGERY_SLOWDOWN_CAP_MULTIPLIER)//also if that, then cap modded_time at time*modifier
102102

103103
if(iscyborg(user))//any immunities to surgery slowdown should go in this check.
104-
modded_time = time
104+
modded_time = (time * tool.toolspeed) //Monkestation edit, allows borgs to have better surgery speed
105105
else if(HAS_TRAIT(user, TRAIT_PERFECT_SURGEON))
106106
modded_time = min(round(time * 0.75, 5), modded_time) // monke edit: perfect surgeon will always be at least 25% faster than normal
107107

code/modules/surgery/tools.dm

+4
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@
227227
desc = "Ultra-sharp blade attached directly to your bone for extra-accuracy."
228228
toolspeed = 0.5
229229

230+
/obj/item/scalpel/borg // Monke edit start:
231+
desc = "Ultra-sharp blade attached directly to your servos for extra-accuracy."
232+
toolspeed= 0.5 // Monke Edit end: Added a borg scalpel for some different flavor text since, ya know borgs dont exactly have "Bones"
233+
230234
/obj/item/circular_saw
231235
name = "circular saw"
232236
desc = "For heavy duty cutting."

monkestation/code/game/objects/items/robot/items/robot_upgrades.dm

+64
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,67 @@
1212
. = ..()
1313
if(.)
1414
robutt.RemoveComponentSource(REF(src), /datum/component/fluffy_tongue)
15+
16+
/obj/item/borg/upgrade/surgery
17+
name = "Surgical Toolset Upgrade"
18+
desc = "An upgrade to the Medical model cyborg's surgical tools, streamlining \
19+
the surgical process."
20+
icon_state = "cyborg_upgrade3"
21+
require_model = TRUE
22+
model_type = list(/obj/item/robot_model/medical)
23+
model_flags = BORG_MODEL_MEDICAL
24+
var/list/adv_surgical_tools = list( /obj/item/circular_saw/augment, /obj/item/scalpel/borg, /obj/item/cautery/augment, /obj/item/retractor/augment, /obj/item/hemostat/augment)
25+
var/list/surgical_tools = list( /obj/item/circular_saw, /obj/item/scalpel, /obj/item/cautery, /obj/item/retractor, /obj/item/hemostat)
26+
/obj/item/borg/upgrade/surgery/action(mob/living/silicon/robot/R, user = usr)
27+
. = ..()
28+
if(.)
29+
for(var/obj/item/module in R.model.modules)
30+
if(module.type in surgical_tools)
31+
R.model.remove_module(module, TRUE)
32+
33+
var/obj/item/circular_saw/augment/saw = new /obj/item/circular_saw/augment(R.model)
34+
R.model.basic_modules += saw
35+
R.model.add_module(saw, FALSE, TRUE)
36+
37+
var/obj/item/scalpel/borg/scalpel = new /obj/item/scalpel/borg(R.model)
38+
R.model.basic_modules += scalpel
39+
R.model.add_module(scalpel, FALSE, TRUE)
40+
41+
var/obj/item/cautery/augment/cautery = new /obj/item/cautery/augment(R.model)
42+
R.model.basic_modules += cautery
43+
R.model.add_module(cautery, FALSE, TRUE)
44+
45+
var/obj/item/retractor/augment/retractor = new /obj/item/retractor/augment(R.model)
46+
R.model.basic_modules += retractor
47+
R.model.add_module(retractor, FALSE, TRUE)
48+
49+
var/obj/item/hemostat/augment/hemostat = new /obj/item/hemostat/augment(R.model)
50+
R.model.basic_modules += hemostat
51+
R.model.add_module(hemostat, FALSE, TRUE)
52+
53+
/obj/item/borg/upgrade/surgery/deactivate(mob/living/silicon/robot/R, user = usr)
54+
. = ..()
55+
if(.)
56+
for(var/advsurgtool in adv_surgical_tools) //For some reason only this is the only list that worked.
57+
for(advsurgtool in R.model.modules)
58+
R.model.remove_module(advsurgtool, TRUE)
59+
60+
var/obj/item/retractor/retractor = new (R.model)
61+
R.model.basic_modules += retractor
62+
R.model.add_module(retractor, FALSE, TRUE)
63+
64+
var/obj/item/scalpel/scalpel = new (R.model)
65+
R.model.basic_modules += scalpel
66+
R.model.add_module(scalpel, FALSE, TRUE)
67+
68+
var/obj/item/circular_saw/saw = new (R.model)
69+
R.model.basic_modules += saw
70+
R.model.add_module(saw, FALSE, TRUE)
71+
72+
var/obj/item/hemostat/hemo = new (R.model)
73+
R.model.basic_modules += hemo
74+
R.model.add_module(hemo, FALSE, TRUE)
75+
76+
var/obj/item/cautery/cautery = new (R.model)
77+
R.model.basic_modules += cautery
78+
R.model.add_module(cautery, FALSE, TRUE)

monkestation/code/modules/research/designs/mechfabricator_designs.dm

+11
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,14 @@
174174
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL,
175175
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_PEACEKEEPER,
176176
)
177+
178+
/datum/design/borg_upgrade_surgical_tools
179+
name = "Cyborg Surgical Tools"
180+
id = "borg_upgrade_surgicaltools"
181+
build_type = MECHFAB
182+
build_path = /obj/item/borg/upgrade/surgery
183+
materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT*1.5, /datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT*1.5)
184+
construction_time = 40
185+
category = list(
186+
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL
187+
)

0 commit comments

Comments
 (0)