diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 37d524c689c..f38479d0c93 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -165,3 +165,43 @@ reliability_base = 76 build_path = /obj/item/device/flash/synthetic category = list("Misc") + +/datum/design/item/scalpel_laser1 + name = "Basic Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." + id = "scalpel_laser1" + req_tech = list("biotech" = 2, "materials" = 2, "magnets" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 12500, "$glass" = 7500) + build_path = /obj/item/weapon/scalpel/laser1 + category = list("Medical") + +/datum/design/item/scalpel_laser2 + name = "Improved Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." + id = "scalpel_laser2" + req_tech = list("biotech" = 3, "materials" = 4, "magnets" = 4) + build_type = PROTOLATHE + materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2500) + build_path = /obj/item/weapon/scalpel/laser2 + category = list("Medical") + +/datum/design/item/scalpel_laser3 + name = "Advanced Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" + id = "scalpel_laser3" + req_tech = list("biotech" = 4, "materials" = 6, "magnets" = 5) + build_type = PROTOLATHE + materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2000, "$gold" = 1500) + build_path = /obj/item/weapon/scalpel/laser3 + category = list("Medical") + +/datum/design/item/scalpel_manager + name = "Incision Management System" + desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." + id = "scalpel_manager" + req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4) + build_type = PROTOLATHE + materials = list ("$metal" = 12500, "$glass" = 7500, "$silver" = 1500, "$gold" = 1500, "$diamond" = 750) + build_path = /obj/item/weapon/scalpel/manager + category = list("Medical") \ No newline at end of file diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index b2021dd74aa..6f8e8f537d0 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -21,6 +21,90 @@ return 0 return 1 +/datum/surgery_step/generic/cut_with_laser + allowed_tools = list( + /obj/item/weapon/scalpel/laser3 = 95, \ + /obj/item/weapon/scalpel/laser2 = 85, \ + /obj/item/weapon/scalpel/laser1 = 75, \ + /obj/item/weapon/melee/energy/sword = 5 + ) + + min_duration = 90 + max_duration = 110 + + can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(..()) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + return affected.open == 0 && target_zone != "mouth" + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts the bloodless incision on [target]'s [affected.name] with \the [tool].", \ + "You start the bloodless incision on [target]'s [affected.name] with \the [tool].") + target.custom_pain("You feel a horrible, searing pain in your [affected.name]!",1) + ..() + + end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\blue [user] has made a bloodless incision on [target]'s [affected.name] with \the [tool].", \ + "\blue You have made a bloodless incision on [target]'s [affected.name] with \the [tool].",) + //Could be cleaner ... + affected.open = 1 + + if(istype(target) && !(target.species.flags & NO_BLOOD)) + affected.status |= ORGAN_BLEEDING + + affected.createwound(CUT, 1) + affected.clamp() + spread_germs_to_organ(affected, user) + + fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!", \ + "\red Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!") + affected.createwound(CUT, 7.5) + affected.createwound(BURN, 12.5) + +/datum/surgery_step/generic/incision_manager + allowed_tools = list( + /obj/item/weapon/scalpel/manager = 100 + ) + + min_duration = 80 + max_duration = 120 + + can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(..()) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + return affected.open == 0 && target_zone != "mouth" + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].", \ + "You start to construct a prepared incision on and within [target]'s [affected.name] with \the [tool].") + target.custom_pain("You feel a horrible, searing pain in your [affected.name] as it is pushed apart!",1) + ..() + + end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\blue [user] has constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].", \ + "\blue You have constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].",) + affected.open = 1 + + if(istype(target) && !(target.species.flags & NO_BLOOD)) + affected.status |= ORGAN_BLEEDING + + affected.createwound(CUT, 1) + affected.clamp() + affected.open = 2 + + fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/obj/item/organ/external/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!", \ + "\red Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!") + affected.createwound(CUT, 20) + affected.createwound(BURN, 15) + /datum/surgery_step/generic/cut_open allowed_tools = list( /obj/item/weapon/scalpel = 100, \ diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 425fa31279e..6cff8f427f1 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -41,11 +41,13 @@ desc = "You can drill using this item. You dig?" icon = 'icons/obj/surgery.dmi' icon_state = "drill" - hitsound = 'sound/weapons/circsawhit.ogg' + hitsound = 'sound/weapons/drill.ogg' m_amt = 10000 g_amt = 6000 flags = CONDUCT force = 15.0 + sharp = 1 + edge = 1 w_class = 3.0 origin_tech = "materials=1;biotech=1" attack_verb = list("drilled") @@ -82,6 +84,44 @@ return (BRUTELOSS) +/* + * Researchable Scalpels + */ +/obj/item/weapon/scalpel/laser1 + name = "laser scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." + icon_state = "scalpel_laser1_on" + item_state = "scalpel" + damtype = "fire" + hitsound = 'sound/weapons/sear2.ogg' + +/obj/item/weapon/scalpel/laser2 + name = "laser scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." + icon_state = "scalpel_laser2_on" + item_state = "scalpel" + damtype = "fire" + force = 12.0 + hitsound = 'sound/weapons/sear2.ogg' + +/obj/item/weapon/scalpel/laser3 + name = "laser scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" + icon_state = "scalpel_laser3_on" + item_state = "scalpel" + damtype = "fire" + force = 15.0 + hitsound = 'sound/weapons/sear2.ogg' + +/obj/item/weapon/scalpel/manager + name = "incision management system" + desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." + icon_state = "scalpel_manager_on" + item_state = "scalpel" + damtype = "fire" + force = 18.0 + hitsound = 'sound/weapons/sear2.ogg' + /obj/item/weapon/circular_saw name = "circular saw" desc = "For heavy duty cutting." @@ -90,6 +130,8 @@ hitsound = 'sound/weapons/circsawhit.ogg' flags = CONDUCT force = 15.0 + sharp = 1 + edge = 1 w_class = 3.0 throwforce = 9.0 throw_speed = 3 diff --git a/sound/weapons/sear2.ogg b/sound/weapons/sear2.ogg new file mode 100644 index 00000000000..c6d5f6846c9 Binary files /dev/null and b/sound/weapons/sear2.ogg differ