mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Redoes the whole surgery PR
This commit is contained in:
@@ -1267,7 +1267,7 @@ var/global/list/damage_icon_parts = list()
|
||||
var/image/total = new
|
||||
for(var/obj/item/organ/external/E in organs)
|
||||
if(E.open)
|
||||
var/image/I = image("icon"='icons/mob/surgery.dmi', "icon_state"="[E.name][round(E.open)]", "layer"=-SURGERY_LEVEL)
|
||||
var/image/I = image("icon"='icons/mob/surgery.dmi', "icon_state"="[E.icon_name][round(E.open)]", "layer"=-SURGERY_LEVEL)
|
||||
total.overlays += I
|
||||
overlays_standing[SURGERY_LEVEL] = total
|
||||
if(update_icons) update_icons()
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
// BONE SURGERY //
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Bone Glue Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/glue_bone
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/bonegel = 100, \
|
||||
@@ -14,13 +18,13 @@
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/glue_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && (affected.robotic < ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 0
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/glue_bone/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)
|
||||
if (affected.stage == 0)
|
||||
user.visible_message("<font color='blue'>[user] starts applying medication to the damaged bones in [target]'s [affected.name] with \the [tool].</font>" , \
|
||||
@@ -28,17 +32,21 @@
|
||||
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/glue_bone/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("<font color='blue'>[user] applies some [tool] to [target]'s bone in [affected.name]</font>", \
|
||||
"<font color='blue'>You apply some [tool] to [target]'s bone in [affected.name] with \the [tool].</font>")
|
||||
affected.stage = 1
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/glue_bone/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("<font color='red'>[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>" , \
|
||||
"<font color='red'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Bone Setting Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/set_bone
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/bonesetter = 100, \
|
||||
@@ -48,20 +56,20 @@
|
||||
min_duration = 60
|
||||
max_duration = 70
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/set_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && affected.organ_tag != BP_HEAD && !(affected.robotic >= ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/set_bone/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("<font color='blue'>[user] is beginning to set the bone in [target]'s [affected.name] in place with \the [tool].</font>" , \
|
||||
"<font color='blue'>You are beginning to set the bone in [target]'s [affected.name] in place with \the [tool].</font>")
|
||||
target.custom_pain("The pain in your [affected.name] is going to make you pass out!", 50)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/set_bone/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)
|
||||
if (affected.status & ORGAN_BROKEN)
|
||||
user.visible_message("<font color='blue'>[user] sets the bone in [target]'s [affected.name] in place with \the [tool].</font>", \
|
||||
@@ -72,12 +80,16 @@
|
||||
"You set the bone in [target]'s [affected.name]<font color='red'> in the WRONG place with \the [tool].</font>")
|
||||
affected.fracture()
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/set_bone/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("<font color='red'>[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>" , \
|
||||
"<font color='red'>Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(BRUISE, 5)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Skull Mending Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/mend_skull
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/bonesetter = 100, \
|
||||
@@ -87,24 +99,24 @@
|
||||
min_duration = 60
|
||||
max_duration = 70
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/mend_skull/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && affected.organ_tag == BP_HEAD && (affected.robotic < ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/mend_skull/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] is beginning to piece together [target]'s skull with \the [tool].</font>" , \
|
||||
"<font color='blue'>You are beginning to piece together [target]'s skull with \the [tool].</font>")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/mend_skull/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("<font color='blue'>[user] sets [target]'s skull with \the [tool].</font>" , \
|
||||
"<font color='blue'>You set [target]'s skull with \the [tool].</font>")
|
||||
affected.stage = 2
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/mend_skull/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("<font color='red'>[user]'s hand slips, damaging [target]'s face with \the [tool]!</font>" , \
|
||||
"<font color='red'>Your hand slips, damaging [target]'s face with \the [tool]!</font>")
|
||||
@@ -112,6 +124,10 @@
|
||||
h.createwound(BRUISE, 10)
|
||||
h.disfigured = 1
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Bone Fixing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/finish_bone
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/bonegel = 100, \
|
||||
@@ -123,31 +139,33 @@
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/finish_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && affected.open >= 2 && !(affected.robotic >= ORGAN_ROBOT) && affected.stage == 2
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/finish_bone/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("<font color='blue'>[user] starts to finish mending the damaged bones in [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You start to finish mending the damaged bones in [target]'s [affected.name] with \the [tool].</font>")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/finish_bone/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("<font color='blue'>[user] has mended the damaged bones in [target]'s [affected.name] with \the [tool].</font>" , \
|
||||
"<font color='blue'>You have mended the damaged bones in [target]'s [affected.name] with \the [tool].</font>" )
|
||||
affected.status &= ~ORGAN_BROKEN
|
||||
affected.stage = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/finish_bone/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("<font color='red'>[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>" , \
|
||||
"<font color='red'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>")
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Bone Clamp Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/clamp_bone
|
||||
allowed_tools = list(
|
||||
@@ -159,13 +177,13 @@
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/clamp_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && (affected.robotic < ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 0
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/clamp_bone/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)
|
||||
if (affected.stage == 0)
|
||||
user.visible_message("<font color='blue'>[user] starts repairing the damaged bones in [target]'s [affected.name] with \the [tool].</font>" , \
|
||||
@@ -173,13 +191,13 @@
|
||||
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/clamp_bone/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("<font color='blue'>[user] sets the bone in [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You sets [target]'s bone in [affected.name] with \the [tool].</font>")
|
||||
affected.status &= ~ORGAN_BROKEN
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/clamp_bone/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("<font color='red'>[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>" , \
|
||||
"<font color='red'>Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
|
||||
@@ -6,14 +6,17 @@
|
||||
priority = 2
|
||||
can_infect = 1
|
||||
blood_level = 1
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && !(affected.robotic >= ORGAN_ROBOT) && affected.encased && affected.open >= 2
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Rib Sawing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/open_encased/saw
|
||||
allowed_tools = list(
|
||||
@@ -24,14 +27,13 @@
|
||||
min_duration = 50
|
||||
max_duration = 70
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/open_encased/saw/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/saw/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -41,8 +43,7 @@
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 60)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/saw/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -51,8 +52,7 @@
|
||||
"<font color='blue'>You have cut [target]'s [affected.encased] open with \the [tool].</font>")
|
||||
affected.open = 2.5
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/saw/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -63,6 +63,9 @@
|
||||
affected.createwound(CUT, 20)
|
||||
affected.fracture()
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Rib Opening Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/open_encased/retract
|
||||
allowed_tools = list(
|
||||
@@ -73,14 +76,13 @@
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/open_encased/retract/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2.5
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/retract/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -91,12 +93,10 @@
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 40)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/retract/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
var/msg = "<font color='blue'>[user] forces open [target]'s [affected.encased] with \the [tool].</font>"
|
||||
var/self_msg = "<font color='blue'>You force open [target]'s [affected.encased] with \the [tool].</font>"
|
||||
user.visible_message(msg, self_msg)
|
||||
@@ -107,8 +107,7 @@
|
||||
if(prob(10))
|
||||
affected.fracture()
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/retract/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -120,6 +119,10 @@
|
||||
affected.createwound(BRUISE, 20)
|
||||
affected.fracture()
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Rib Closing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/open_encased/close
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/retractor = 100, \
|
||||
@@ -129,15 +132,13 @@
|
||||
min_duration = 20
|
||||
max_duration = 40
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/close/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 3
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/close/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -148,8 +149,7 @@
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/close/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -160,8 +160,7 @@
|
||||
|
||||
affected.open = 2.5
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/close/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -177,6 +176,10 @@
|
||||
user.visible_message("<font color='red'> A rib pierces the lung!</font>")
|
||||
target.rupture_lung()*/
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Rib Mending Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/open_encased/mend
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/bonegel = 100, \
|
||||
@@ -186,15 +189,13 @@
|
||||
min_duration = 20
|
||||
max_duration = 40
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/mend/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return ..() && affected && affected.open == 2.5
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/mend/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -205,8 +206,7 @@
|
||||
target.custom_pain("Something hurts horribly in your [affected.name]!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/open_encased/mend/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
priority = 2
|
||||
req_open = 0
|
||||
can_infect = 0
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/face/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -15,6 +16,10 @@
|
||||
return 0
|
||||
return target_zone == O_MOUTH
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Face Opening Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/cut_face
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel = 100, \
|
||||
@@ -25,26 +30,30 @@
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_face/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
return ..() && target_zone == O_MOUTH && target.op_stage.face == 0
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to cut open [target]'s face and neck with \the [tool].", \
|
||||
"You start to cut open [target]'s face and neck with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] has cut open [target]'s face and neck with \the [tool].</font>" , \
|
||||
"<font color='blue'> You have cut open[target]'s face and neck with \the [tool].</font>",)
|
||||
target.op_stage.face = 1
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_face/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("<font color='red'>[user]'s hand slips, slicing [target]'s throat wth \the [tool]!</font>" , \
|
||||
"<font color='red'>Your hand slips, slicing [target]'s throat wth \the [tool]!</font>" )
|
||||
affected.createwound(CUT, 60)
|
||||
target.AdjustLosebreath(10)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Vocal Cord/Face Repair Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/face/mend_vocal
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/hemostat = 100, \
|
||||
@@ -55,24 +64,28 @@
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/mend_vocal/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
return ..() && target.op_stage.face == 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/mend_vocal/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts mending [target]'s vocal cords with \the [tool].", \
|
||||
"You start mending [target]'s vocal cords with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/mend_vocal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] mends [target]'s vocal cords with \the [tool].</font>", \
|
||||
"<font color='blue'>You mend [target]'s vocal cords with \the [tool].</font>")
|
||||
target.op_stage.face = 2
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/mend_vocal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!</font>")
|
||||
target.AdjustLosebreath(10)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Face Fixing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/face/fix_face
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/retractor = 100, \
|
||||
@@ -82,25 +95,29 @@
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/fix_face/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
return ..() && target.op_stage.face == 2
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/fix_face/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts pulling the skin on [target]'s face back in place with \the [tool].", \
|
||||
"You start pulling the skin on [target]'s face back in place with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/fix_face/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] pulls the skin on [target]'s face back in place with \the [tool].</font>", \
|
||||
"<font color='blue'>You pull the skin on [target]'s face back in place with \the [tool].</font>")
|
||||
target.op_stage.face = 3
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/fix_face/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("<font color='red'>[user]'s hand slips, tearing skin on [target]'s face with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing skin on [target]'s face with \the [tool]!</font>")
|
||||
target.apply_damage(10, BRUTE, affected, sharp=1, sharp=1)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Face Cauterizing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/face/cauterize
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/cautery = 100, \
|
||||
@@ -112,15 +129,15 @@
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/cauterize/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
return ..() && target.op_stage.face > 0
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/cauterize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] is beginning to cauterize the incision on [target]'s face and neck with \the [tool].</font>" , \
|
||||
"<font color='blue'>You are beginning to cauterize the incision on [target]'s face and neck with \the [tool].</font>")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/cauterize/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("<font color='blue'>[user] cauterizes the incision on [target]'s face and neck with \the [tool].</font>", \
|
||||
"<font color='blue'>You cauterize the incision on [target]'s face and neck with \the [tool].</font>")
|
||||
@@ -131,7 +148,7 @@
|
||||
h.disfigured = 0
|
||||
target.op_stage.face = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/face/cauterize/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("<font color='red'>[user]'s hand slips, leaving a small burn on [target]'s face with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, leaving a small burn on [target]'s face with \the [tool]!</font>")
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
/datum/surgery_step/generic/
|
||||
can_infect = 1
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/generic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (isslime(target))
|
||||
return 0
|
||||
if (target_zone == O_EYES) //there are specific steps for eye surgery
|
||||
@@ -21,88 +22,9 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel/laser3 = 95, \
|
||||
/obj/item/weapon/surgical/scalpel/laser2 = 85, \
|
||||
/obj/item/weapon/surgical/scalpel/laser1 = 75, \
|
||||
/obj/item/weapon/melee/energy/sword = 5
|
||||
)
|
||||
priority = 2
|
||||
req_open = 0
|
||||
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 && affected.open == 0 && target_zone != O_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]!", 50)
|
||||
..()
|
||||
|
||||
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("<font color='blue'>[user] has made a bloodless incision on [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have made a bloodless incision on [target]'s [affected.name] with \the [tool].</font>",)
|
||||
//Could be cleaner ...
|
||||
affected.open = 1
|
||||
|
||||
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("<font color='red'>[user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 7.5)
|
||||
affected.createwound(BURN, 12.5)
|
||||
|
||||
/datum/surgery_step/generic/incision_manager
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel/manager = 100
|
||||
)
|
||||
priority = 2
|
||||
req_open = 0
|
||||
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 && affected.open == 0 && target_zone != O_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!", 50)
|
||||
..()
|
||||
|
||||
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("<font color='blue'>[user] has constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].</font>",)
|
||||
affected.open = 1
|
||||
|
||||
if(istype(target) && target.should_have_organ(O_HEART))
|
||||
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("<font color='red'>[user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 20)
|
||||
affected.createwound(BURN, 15)
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Scalpel Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/cut_open
|
||||
allowed_tools = list(
|
||||
@@ -115,19 +37,19 @@
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_open/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 && affected.open == 0 && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_open/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 incision on [target]'s [affected.name] with \the [tool].", \
|
||||
"You start the incision on [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("You feel a horrible pain as if from a sharp knife in your [affected.name]!", 40)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_open/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("<font color='blue'>[user] has made an incision on [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have made an incision on [target]'s [affected.name] with \the [tool].</font>",)
|
||||
@@ -138,12 +60,107 @@
|
||||
|
||||
affected.createwound(CUT, 1)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cut_open/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("<font color='red'>[user]'s hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, slicing open [target]'s [affected.name] in the wrong place with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 10)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Laser Scalpel Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel/laser3 = 95, \
|
||||
/obj/item/weapon/surgical/scalpel/laser2 = 85, \
|
||||
/obj/item/weapon/surgical/scalpel/laser1 = 75, \
|
||||
/obj/item/weapon/melee/energy/sword = 5
|
||||
)
|
||||
priority = 2
|
||||
req_open = 0
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser/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 && affected.open == 0 && target_zone != O_MOUTH
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser/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]!", 50)
|
||||
..()
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser/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("<font color='blue'>[user] has made a bloodless incision on [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have made a bloodless incision on [target]'s [affected.name] with \the [tool].</font>",)
|
||||
//Could be cleaner ...
|
||||
affected.open = 1
|
||||
|
||||
affected.createwound(CUT, 1)
|
||||
affected.clamp()
|
||||
spread_germs_to_organ(affected, user)
|
||||
|
||||
/datum/surgery_step/generic/cut_with_laser/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("<font color='red'>[user]'s hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips as the blade sputters, searing a long gash in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 7.5)
|
||||
affected.createwound(BURN, 12.5)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Incision Management Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/incision_manager
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel/manager = 100
|
||||
)
|
||||
priority = 2
|
||||
req_open = 0
|
||||
min_duration = 80
|
||||
max_duration = 120
|
||||
|
||||
/datum/surgery_step/generic/incision_manager/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 && affected.open == 0 && target_zone != O_MOUTH
|
||||
|
||||
/datum/surgery_step/generic/incision_manager/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!", 50)
|
||||
..()
|
||||
|
||||
/datum/surgery_step/generic/incision_manager/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("<font color='blue'>[user] has constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have constructed a prepared incision on and within [target]'s [affected.name] with \the [tool].</font>",)
|
||||
affected.open = 1
|
||||
|
||||
if(istype(target) && target.should_have_organ(O_HEART))
|
||||
affected.status |= ORGAN_BLEEDING
|
||||
|
||||
affected.createwound(CUT, 1)
|
||||
affected.clamp()
|
||||
affected.open = 2
|
||||
|
||||
/datum/surgery_step/generic/incision_manager/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("<font color='red'>[user]'s hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand jolts as the system sparks, ripping a gruesome hole in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 20)
|
||||
affected.createwound(BURN, 15)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Hemostat Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/clamp_bleeders
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/hemostat = 100, \
|
||||
@@ -154,31 +171,35 @@
|
||||
min_duration = 40
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/clamp_bleeders/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 && affected.open && (affected.status & ORGAN_BLEEDING)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/clamp_bleeders/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 clamping bleeders in [target]'s [affected.name] with \the [tool].", \
|
||||
"You start clamping bleeders in [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("The pain in your [affected.name] is maddening!", 40)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/clamp_bleeders/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("<font color='blue'>[user] clamps bleeders in [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You clamp bleeders in [target]'s [affected.name] with \the [tool].</font>")
|
||||
affected.clamp()
|
||||
spread_germs_to_organ(affected, user)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/clamp_bleeders/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("<font color='red'>[user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.name] with \the [tool]!</font>",)
|
||||
affected.createwound(CUT, 10)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Retractor Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/retract_skin
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/retractor = 100, \
|
||||
@@ -189,12 +210,12 @@
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/retract_skin/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 && affected.open == 1 //&& !(affected.status & ORGAN_BLEEDING)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/retract_skin/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)
|
||||
var/msg = "[user] starts to pry open the incision on [target]'s [affected.name] with \the [tool]."
|
||||
var/self_msg = "You start to pry open the incision on [target]'s [affected.name] with \the [tool]."
|
||||
@@ -208,7 +229,7 @@
|
||||
target.custom_pain("It feels like the skin on your [affected.name] is on fire!", 40)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/retract_skin/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)
|
||||
var/msg = "<font color='blue'>[user] keeps the incision open on [target]'s [affected.name] with \the [tool].</font>"
|
||||
var/self_msg = "<font color='blue'>You keep the incision open on [target]'s [affected.name] with \the [tool].</font>"
|
||||
@@ -221,7 +242,7 @@
|
||||
user.visible_message(msg, self_msg)
|
||||
affected.open = 2
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/retract_skin/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)
|
||||
var/msg = "<font color='red'>[user]'s hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!</font>"
|
||||
var/self_msg = "<font color='red'>Your hand slips, tearing the edges of the incision on [target]'s [affected.name] with \the [tool]!</font>"
|
||||
@@ -234,6 +255,10 @@
|
||||
user.visible_message(msg, self_msg)
|
||||
target.apply_damage(12, BRUTE, affected, sharp=1)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Cauterize Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/cauterize
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/cautery = 100, \
|
||||
@@ -245,19 +270,19 @@
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cauterize/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 && affected.open && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cauterize/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] is beginning to cauterize the incision on [target]'s [affected.name] with \the [tool]." , \
|
||||
"You are beginning to cauterize the incision on [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("Your [affected.name] is being burned!", 40)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cauterize/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("<font color='blue'>[user] cauterizes the incision on [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You cauterize the incision on [target]'s [affected.name] with \the [tool].</font>")
|
||||
@@ -265,12 +290,16 @@
|
||||
affected.germ_level = 0
|
||||
affected.status &= ~ORGAN_BLEEDING
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/cauterize/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("<font color='red'>[user]'s hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, leaving a small burn on [target]'s [affected.name] with \the [tool]!</font>")
|
||||
target.apply_damage(3, BURN, affected)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Amputation Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/generic/amputate
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/circular_saw = 100, \
|
||||
@@ -281,7 +310,7 @@
|
||||
min_duration = 110
|
||||
max_duration = 160
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/amputate/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (target_zone == O_EYES) //there are specific steps for eye surgery
|
||||
return 0
|
||||
if (!hasorgans(target))
|
||||
@@ -291,20 +320,20 @@
|
||||
return 0
|
||||
return !affected.cannot_amputate
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/amputate/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] is beginning to amputate [target]'s [affected.name] with \the [tool]." , \
|
||||
"You are beginning to cut through [target]'s [affected.amputation_point] with \the [tool].")
|
||||
target.custom_pain("Your [affected.amputation_point] is being ripped apart!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/amputate/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("<font color='blue'>[user] amputates [target]'s [affected.name] at the [affected.amputation_point] with \the [tool].</font>", \
|
||||
"<font color='blue'>You amputate [target]'s [affected.name] with \the [tool].</font>")
|
||||
affected.droplimb(1,DROPLIMB_EDGE)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/generic/amputate/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("<font color='red'>[user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!</font>")
|
||||
|
||||
@@ -38,6 +38,10 @@
|
||||
"<font color='red'>Your hand slips, scraping around inside [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 20)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Space Making Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/cavity/make_space
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/surgicaldrill = 100, \
|
||||
@@ -66,6 +70,10 @@
|
||||
user.visible_message("<font color='blue'>[user] makes some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].</font>", \
|
||||
"<font color='blue'>You make some space inside [target]'s [get_cavity(affected)] cavity with \the [tool].</font>" )
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Cavity Closing Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/cavity/close_space
|
||||
priority = 2
|
||||
allowed_tools = list(
|
||||
@@ -78,12 +86,12 @@
|
||||
min_duration = 60
|
||||
max_duration = 80
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/close_space/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 && affected.cavity
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/close_space/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 mending [target]'s [get_cavity(affected)] cavity wall with \the [tool].", \
|
||||
"You start mending [target]'s [get_cavity(affected)] cavity wall with \the [tool]." )
|
||||
@@ -91,11 +99,15 @@
|
||||
affected.cavity = 0
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/close_space/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
user.visible_message("<font color='blue'>[user] mends [target]'s [get_cavity(affected)] cavity walls with \the [tool].</font>", \
|
||||
"<font color='blue'> You mend[target]'s [get_cavity(affected)] cavity walls with \the [tool].</font>" )
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Item Implantation Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/cavity/place_item
|
||||
priority = 0
|
||||
allowed_tools = list(/obj/item = 100)
|
||||
@@ -103,7 +115,7 @@
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/place_item/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)
|
||||
if(istype(user,/mob/living/silicon/robot))
|
||||
@@ -116,14 +128,14 @@
|
||||
total_volume += I.w_class
|
||||
return total_volume <= get_max_wclass(affected)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/place_item/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("<font color='blue'>[user] starts putting \the [tool] inside [target]'s [get_cavity(affected)] cavity.</font>", \
|
||||
"<font color='blue'>You start putting \the [tool] inside [target]'s [get_cavity(affected)] cavity.</font>" ) //Nobody will probably ever see this, but I made these two blue. ~CK
|
||||
target.custom_pain("The pain in your chest is living hell!",1)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/place_item/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
|
||||
user.visible_message("<font color='blue'>[user] puts \the [tool] inside [target]'s [get_cavity(affected)] cavity.</font>", \
|
||||
@@ -139,7 +151,7 @@
|
||||
affected.cavity = 0
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// IMPLANT/ITEM REMOVAL SURGERY //
|
||||
// IMPLANT/ITEM REMOVAL SURGERY
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/cavity/implant_removal
|
||||
@@ -152,7 +164,7 @@
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/implant_removal/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(affected.organ_tag == BP_HEAD)
|
||||
var/obj/item/organ/internal/brain/sponge = target.internal_organs_by_name["brain"]
|
||||
@@ -160,14 +172,14 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/implant_removal/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("<font color='blue'>[user] starts poking around inside [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You start poking around inside [target]'s [affected.name] with \the [tool].</font>" )
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!",1)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/implant_removal/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
|
||||
var/find_prob = 0
|
||||
@@ -214,7 +226,7 @@
|
||||
user.visible_message("<font color='blue'>[user] could not find anything inside [target]'s [affected.name], and pulls \the [tool] out.</font>", \
|
||||
"<font color='blue'>You could not find anything inside [target]'s [affected.name].</font>" )
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/cavity/implant_removal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
..()
|
||||
var/obj/item/organ/external/chest/affected = target.get_organ(target_zone)
|
||||
if (affected.implants.len)
|
||||
@@ -226,4 +238,3 @@
|
||||
playsound(imp.loc, 'sound/items/countdown.ogg', 75, 1, -3)
|
||||
spawn(25)
|
||||
imp.activate()
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
priority = 3 // Must be higher than /datum/surgery_step/internal
|
||||
req_open = 0
|
||||
can_infect = 0
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/limb/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return 0
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -16,13 +17,17 @@
|
||||
var/list/organ_data = target.species.has_limbs["[target_zone]"]
|
||||
return !isnull(organ_data)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Limb Attachment Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/limb/attach
|
||||
allowed_tools = list(/obj/item/organ/external = 100)
|
||||
|
||||
min_duration = 50
|
||||
max_duration = 70
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/attach/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
var/obj/item/organ/external/P = target.organs_by_name[E.parent_organ]
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -41,12 +46,12 @@
|
||||
else
|
||||
return 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/attach/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("[user] starts attaching [E.name] to [target]'s [E.amputation_point].", \
|
||||
"You start attaching [E.name] to [target]'s [E.amputation_point].")
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/attach/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='notice'>[user] has attached [target]'s [E.name] to the [E.amputation_point].</span>", \
|
||||
"<span class='notice'>You have attached [target]'s [E.name] to the [E.amputation_point].</span>")
|
||||
@@ -56,12 +61,16 @@
|
||||
target.updatehealth()
|
||||
target.UpdateDamageIcon()
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/attach/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, damaging [target]'s [E.amputation_point]!</span>", \
|
||||
"<span class='warning'> Your hand slips, damaging [target]'s [E.amputation_point]!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Limb Connection Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/limb/connect
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/hemostat = 100, \
|
||||
@@ -73,16 +82,16 @@
|
||||
min_duration = 100
|
||||
max_duration = 120
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/connect/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = target.get_organ(target_zone)
|
||||
return E && !E.is_stump() && (E.status & ORGAN_DESTROYED)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/connect/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = target.get_organ(target_zone)
|
||||
user.visible_message("[user] starts connecting tendons and muscles in [target]'s [E.amputation_point] with [tool].", \
|
||||
"You start connecting tendons and muscle in [target]'s [E.amputation_point].")
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/connect/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = target.get_organ(target_zone)
|
||||
user.visible_message("<span class='notice'>[user] has connected tendons and muscles in [target]'s [E.amputation_point] with [tool].</span>", \
|
||||
"<span class='notice'>You have connected tendons and muscles in [target]'s [E.amputation_point] with [tool].</span>")
|
||||
@@ -94,19 +103,23 @@
|
||||
target.updatehealth()
|
||||
target.UpdateDamageIcon()
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/connect/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/E = tool
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, damaging [target]'s [E.amputation_point]!</span>", \
|
||||
"<span class='warning'> Your hand slips, damaging [target]'s [E.amputation_point]!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Robolimb Attachment Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/limb/mechanize
|
||||
allowed_tools = list(/obj/item/robot_parts = 100)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/mechanize/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(..())
|
||||
var/obj/item/robot_parts/p = tool
|
||||
if (p.part)
|
||||
@@ -114,11 +127,11 @@
|
||||
return 0
|
||||
return isnull(target.get_organ(target_zone))
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/mechanize/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts attaching \the [tool] to [target].", \
|
||||
"You start attaching \the [tool] to [target].")
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/mechanize/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/robot_parts/L = tool
|
||||
user.visible_message("<span class='notice'>[user] has attached \the [tool] to [target].</span>", \
|
||||
"<span class='notice'>You have attached \the [tool] to [target].</span>")
|
||||
@@ -142,7 +155,7 @@
|
||||
|
||||
qdel(tool)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/limb/mechanize/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, damaging [target]'s flesh!</span>", \
|
||||
"<span class='warning'> Your hand slips, damaging [target]'s flesh!</span>")
|
||||
target.apply_damage(10, BRUTE, null, sharp=1)
|
||||
|
||||
@@ -65,8 +65,7 @@
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/fix_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -79,7 +78,7 @@
|
||||
break
|
||||
return ..() && is_organ_damaged
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/fix_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/tool_name = "\the [tool]"
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
tool_name = "regenerative membrane"
|
||||
@@ -100,7 +99,7 @@
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/fix_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/tool_name = "\the [tool]"
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
tool_name = "regenerative membrane"
|
||||
@@ -122,8 +121,7 @@
|
||||
if(I.organ_tag == O_LUNGS)
|
||||
target.SetLosebreath(0)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/fix_organ/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -134,7 +132,6 @@
|
||||
|
||||
if (istype(tool, /obj/item/stack/medical/advanced/bruise_pack))
|
||||
target.adjustToxLoss(5)
|
||||
|
||||
else if (istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
dam_amt = 5
|
||||
target.adjustToxLoss(10)
|
||||
@@ -144,7 +141,11 @@
|
||||
if(I && I.damage > 0)
|
||||
I.take_damage(dam_amt,0)
|
||||
|
||||
/datum/surgery_step/internal/detatch_organ
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Organ Detaching Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/internal/detatch_organ/
|
||||
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel = 100, \
|
||||
@@ -155,8 +156,7 @@
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/detatch_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!..())
|
||||
return 0
|
||||
|
||||
@@ -181,8 +181,7 @@
|
||||
|
||||
return ..() && organ_to_remove
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/detatch_organ/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 separate [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
@@ -190,7 +189,7 @@
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/detatch_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='notice'>[user] has separated [target]'s [target.op_stage.current_organ] with \the [tool].</span>" , \
|
||||
"<span class='notice'>You have separated [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
|
||||
@@ -198,12 +197,16 @@
|
||||
if(I && istype(I))
|
||||
I.status |= ORGAN_CUT_AWAY
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/detatch_organ/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("<span class='warning'>[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</span>")
|
||||
affected.createwound(CUT, rand(30,50), 1)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Organ Removal Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/internal/remove_organ
|
||||
|
||||
allowed_tools = list(
|
||||
@@ -215,8 +218,7 @@
|
||||
min_duration = 60
|
||||
max_duration = 80
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/remove_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!..())
|
||||
return 0
|
||||
|
||||
@@ -235,13 +237,13 @@
|
||||
target.op_stage.current_organ = organ_to_remove
|
||||
return ..()
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/remove_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts removing [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start removing [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
target.custom_pain("Someone's ripping out your [target.op_stage.current_organ]!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/remove_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='notice'>[user] has removed [target]'s [target.op_stage.current_organ] with \the [tool].</span>", \
|
||||
"<span class='notice'>You have removed [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
|
||||
@@ -252,12 +254,16 @@
|
||||
O.removed(user)
|
||||
target.op_stage.current_organ = null
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/remove_organ/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("<span class='warning'>[user]'s hand slips, damaging [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging [target]'s [affected.name] with \the [tool]!</span>")
|
||||
affected.createwound(BRUISE, 20)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Organ Replacement Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/internal/replace_organ
|
||||
allowed_tools = list(
|
||||
/obj/item/organ = 100
|
||||
@@ -266,11 +272,13 @@
|
||||
min_duration = 60
|
||||
max_duration = 80
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/replace_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/internal/O = tool
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(!affected) return
|
||||
|
||||
if(!affected)
|
||||
return
|
||||
|
||||
var/organ_compatible
|
||||
var/organ_missing
|
||||
|
||||
@@ -308,14 +316,14 @@
|
||||
|
||||
return ..() && organ_missing && organ_compatible
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/replace_organ/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 transplanting \the [tool] into [target]'s [affected.name].", \
|
||||
"You start transplanting \the [tool] into [target]'s [affected.name].")
|
||||
target.custom_pain("Someone's rooting around in your [affected.name]!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/replace_organ/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("<span class='notice'>[user] has transplanted \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='notice'>You have transplanted \the [tool] into [target]'s [affected.name].</span>")
|
||||
@@ -324,13 +332,17 @@
|
||||
user.remove_from_mob(O)
|
||||
O.replaced(target,affected)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/replace_organ/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, damaging \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging \the [tool]!</span>")
|
||||
var/obj/item/organ/I = tool
|
||||
if(istype(I))
|
||||
I.take_damage(rand(3,5),0)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Organ Attaching Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/internal/attach_organ
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/FixOVein = 100, \
|
||||
@@ -340,8 +352,7 @@
|
||||
min_duration = 100
|
||||
max_duration = 120
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/internal/attach_organ/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!..())
|
||||
return 0
|
||||
|
||||
@@ -360,13 +371,13 @@
|
||||
target.op_stage.current_organ = organ_to_replace
|
||||
return ..()
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/attach_organ/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
target.custom_pain("Someone's digging needles into your [target.op_stage.current_organ]!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/attach_organ/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='notice'>[user] has reattached [target]'s [target.op_stage.current_organ] with \the [tool].</span>" , \
|
||||
"<span class='notice'>You have reattached [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
|
||||
@@ -374,7 +385,7 @@
|
||||
if(I && istype(I))
|
||||
I.status &= ~ORGAN_CUT_AWAY
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/internal/attach_organ/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("<span class='warning'>[user]'s hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>", \
|
||||
"<span class='warning'>Your hand slips, damaging the flesh in [target]'s [affected.name] with \the [tool]!</span>")
|
||||
@@ -394,5 +405,5 @@
|
||||
// min_duration = 30
|
||||
// max_duration = 40
|
||||
|
||||
// can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
// /datum/surgery_step/ribcage/heart/cut/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
// return ..() && target.op_stage.ribcage == 2
|
||||
@@ -3,6 +3,9 @@
|
||||
// INTERNAL WOUND PATCHING //
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Internal Bleeding Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/fix_vein
|
||||
priority = 2
|
||||
@@ -16,7 +19,7 @@
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/fix_vein/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
@@ -29,14 +32,14 @@
|
||||
|
||||
return affected.open == (affected.encased ? 3 : 2) && internal_bleeding
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/fix_vein/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 patching the damaged vein in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start patching the damaged vein in [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/fix_vein/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("<font color='blue'>[user] has patched the damaged vein in [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have patched the damaged vein in [target]'s [affected.name] with \the [tool].</font>")
|
||||
@@ -46,55 +49,15 @@
|
||||
affected.update_damages()
|
||||
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/fix_vein/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("<font color='red'>[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>" , \
|
||||
"<font color='red'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>")
|
||||
affected.take_damage(5, 0)
|
||||
|
||||
/datum/surgery_step/fix_dead_tissue //Debridement
|
||||
priority = 2
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel = 100, \
|
||||
/obj/item/weapon/material/knife = 75, \
|
||||
/obj/item/weapon/material/shard = 50, \
|
||||
)
|
||||
|
||||
can_infect = 1
|
||||
blood_level = 1
|
||||
|
||||
min_duration = 110
|
||||
max_duration = 160
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(!hasorgans(target))
|
||||
return 0
|
||||
|
||||
if (target_zone == O_MOUTH || target_zone == O_EYES)
|
||||
return 0
|
||||
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
return affected && affected.open >= 2 && (affected.status & ORGAN_DEAD)
|
||||
|
||||
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 cutting away necrotic tissue in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start cutting away necrotic tissue in [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("The pain in [affected.name] is unbearable!", 100)
|
||||
..()
|
||||
|
||||
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("<font color='blue'>[user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool].</font>", \
|
||||
"<font color='blue'>You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool].</font>")
|
||||
affected.open = 3
|
||||
|
||||
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("<font color='red'>[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, slicing an artery inside [target]'s [affected.name] with \the [tool]!</font>")
|
||||
affected.createwound(CUT, 20, 1)
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Necrosis Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/treat_necrosis
|
||||
priority = 2
|
||||
@@ -112,7 +75,7 @@
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/treat_necrosis/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
return 0
|
||||
|
||||
@@ -129,14 +92,14 @@
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
return affected && affected.open == 3 && (affected.status & ORGAN_DEAD)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/treat_necrosis/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 applying medication to the affected tissue in [target]'s [affected.name] with \the [tool]." , \
|
||||
"You start applying medication to the affected tissue in [target]'s [affected.name] with \the [tool].")
|
||||
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/treat_necrosis/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)
|
||||
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
@@ -152,7 +115,7 @@
|
||||
user.visible_message("<font color='blue'>[user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name].</font>", \
|
||||
"<font color='blue'>You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].</font>")
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/treat_necrosis/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)
|
||||
|
||||
if (!istype(tool, /obj/item/weapon/reagent_containers))
|
||||
@@ -167,6 +130,10 @@
|
||||
|
||||
//no damage or anything, just wastes medicine
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Hardsuit Removal Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/hardsuit
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/weldingtool = 80,
|
||||
@@ -181,7 +148,7 @@
|
||||
min_duration = 120
|
||||
max_duration = 180
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/hardsuit/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(!istype(target))
|
||||
return 0
|
||||
if(istype(tool,/obj/item/weapon/weldingtool))
|
||||
@@ -190,13 +157,12 @@
|
||||
return 0
|
||||
return (target_zone == BP_TORSO) && istype(target.back, /obj/item/weapon/rig) && !(target.back.canremove)
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/hardsuit/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting through the support systems of [target]'s [target.back] with \the [tool]." , \
|
||||
"You start cutting through the support systems of [target]'s [target.back] with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/hardsuit/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/weapon/rig/rig = target.back
|
||||
if(!istype(rig))
|
||||
return
|
||||
@@ -204,6 +170,6 @@
|
||||
user.visible_message("<span class='notice'>[user] has cut through the support systems of [target]'s [rig] with \the [tool].</span>", \
|
||||
"<span class='notice'>You have cut through the support systems of [target]'s [rig] with \the [tool].</span>")
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/hardsuit/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='danger'>[user]'s [tool] can't quite seem to get through the metal...</span>", \
|
||||
"<span class='danger'>Your [tool] can't quite seem to get through the metal. It's weakening, though - try again.</span>")
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
|
||||
/datum/surgery_step/robotics/
|
||||
can_infect = 0
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (isslime(target))
|
||||
return 0
|
||||
if (target_zone == O_EYES) //there are specific steps for eye surgery
|
||||
@@ -21,6 +22,10 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Unscrew Hatch Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/unscrew_hatch
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/screwdriver = 100,
|
||||
@@ -32,28 +37,32 @@
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/unscrew_hatch/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 && affected.open == 0 && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/unscrew_hatch/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 unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].", \
|
||||
"You start to unscrew the maintenance hatch on [target]'s [affected.name] with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/unscrew_hatch/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("<span class='notice'>[user] has opened the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='notice'>You have opened the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>",)
|
||||
affected.open = 1
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/unscrew_hatch/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("<span class='warning'>[user]'s [tool.name] slips, failing to unscrew [target]'s [affected.name].</span>", \
|
||||
"<span class='warning'>Your [tool] slips, failing to unscrew [target]'s [affected.name].</span>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Open Hatch Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/open_hatch
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/retractor = 100,
|
||||
@@ -64,28 +73,32 @@
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/open_hatch/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 && affected.open == 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/open_hatch/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 pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].",
|
||||
"You start to pry open the maintenance hatch on [target]'s [affected.name] with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/open_hatch/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("<span class='notice'>[user] opens the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='notice'>You open the maintenance hatch on [target]'s [affected.name] with \the [tool].</span>")
|
||||
affected.open = 3
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/open_hatch/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("<span class='warning'>[user]'s [tool.name] slips, failing to open the hatch on [target]'s [affected.name].</span>",
|
||||
"<span class='warning'>Your [tool] slips, failing to open the hatch on [target]'s [affected.name].</span>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Close Hatch Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/close_hatch
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/retractor = 100,
|
||||
@@ -96,29 +109,33 @@
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/close_hatch/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 && affected.open && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/close_hatch/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] begins to close and secure the hatch on [target]'s [affected.name] with \the [tool]." , \
|
||||
"You begin to close and secure the hatch on [target]'s [affected.name] with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/close_hatch/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("<span class='notice'>[user] closes and secures the hatch on [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='notice'>You close and secure the hatch on [target]'s [affected.name] with \the [tool].</span>")
|
||||
affected.open = 0
|
||||
affected.germ_level = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/close_hatch/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("<span class='warning'>[user]'s [tool.name] slips, failing to close the hatch on [target]'s [affected.name].</span>",
|
||||
"<span class='warning'>Your [tool.name] slips, failing to close the hatch on [target]'s [affected.name].</span>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Brute Repair Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/repair_brute
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/weldingtool = 100,
|
||||
@@ -128,7 +145,7 @@
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_brute/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)
|
||||
if(istype(tool,/obj/item/weapon/weldingtool))
|
||||
@@ -137,24 +154,29 @@
|
||||
return 0
|
||||
return affected && affected.open == 3 && (affected.disfigured || affected.brute_dam > 0) && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_brute/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] begins to patch damage to [target]'s [affected.name]'s support structure with \the [tool]." , \
|
||||
"You begin to patch damage to [target]'s [affected.name]'s support structure with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_brute/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("<span class='notice'>[user] finishes patching damage to [target]'s [affected.name] with \the [tool].</span>", \
|
||||
"<span class='notice'>You finish patching damage to [target]'s [affected.name] with \the [tool].</span>")
|
||||
affected.heal_damage(rand(30,50),0,1,1)
|
||||
affected.disfigured = 0
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/repair_brute/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("<span class='warning'>[user]'s [tool.name] slips, damaging the internal structure of [target]'s [affected.name].</span>",
|
||||
"<span class='warning'>Your [tool.name] slips, damaging the internal structure of [target]'s [affected.name].</span>")
|
||||
target.apply_damage(rand(5,10), BURN, affected)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Burn Repair Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/repair_burn
|
||||
allowed_tools = list(
|
||||
/obj/item/stack/cable_coil = 100
|
||||
@@ -163,7 +185,7 @@
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_burn/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)
|
||||
if(istype(tool,/obj/item/stack/cable_coil/))
|
||||
@@ -180,25 +202,29 @@
|
||||
|
||||
return affected && affected.open == 3 && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_burn/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] begins to splice new cabling into [target]'s [affected.name]." , \
|
||||
"You begin to splice new cabling into [target]'s [affected.name].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_burn/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("<span class='notice'>[user] finishes splicing cable into [target]'s [affected.name].</span>", \
|
||||
"<span class='notice'>You finishes splicing new cable into [target]'s [affected.name].</span>")
|
||||
affected.heal_damage(0,rand(30,50),1,1)
|
||||
affected.disfigured = 0
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/repair_burn/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("<span class='warning'>[user] causes a short circuit in [target]'s [affected.name]!</span>",
|
||||
"<span class='warning'>You cause a short circuit in [target]'s [affected.name]!</span>")
|
||||
target.apply_damage(rand(5,10), BURN, affected)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Robot Organ Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/fix_organ_robotic //For artificial organs
|
||||
allowed_tools = list(
|
||||
/obj/item/stack/nanopaste = 100, \
|
||||
@@ -209,8 +235,7 @@
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/fix_organ_robotic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -222,8 +247,7 @@
|
||||
break
|
||||
return affected.open == 3 && is_organ_damaged
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/fix_organ_robotic/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -237,14 +261,12 @@
|
||||
target.custom_pain("The pain in your [affected.name] is living hell!",1)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/fix_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
for(var/obj/item/organ/I in affected.internal_organs)
|
||||
|
||||
if(I && I.damage > 0)
|
||||
if(I.robotic >= ORGAN_ROBOT)
|
||||
user.visible_message("<span class='notice'>[user] repairs [target]'s [I.name] with [tool].</span>", \
|
||||
@@ -253,8 +275,7 @@
|
||||
if(I.organ_tag == O_EYES)
|
||||
target.sdisabilities &= ~BLIND
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/fix_organ_robotic/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if (!hasorgans(target))
|
||||
return
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -269,6 +290,10 @@
|
||||
if(I)
|
||||
I.take_damage(rand(3,5),0)
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Robot Organ Detaching Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic
|
||||
|
||||
allowed_tools = list(
|
||||
@@ -278,8 +303,7 @@
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(!(affected && (affected.robotic >= ORGAN_ROBOT)))
|
||||
return 0
|
||||
@@ -302,12 +326,12 @@
|
||||
|
||||
return ..() && organ_to_remove
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts to decouple [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start to decouple [target]'s [target.op_stage.current_organ] with \the [tool]." )
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='notice'>[user] has decoupled [target]'s [target.op_stage.current_organ] with \the [tool].</span>" , \
|
||||
"<span class='notice'>You have decoupled [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
|
||||
@@ -315,10 +339,14 @@
|
||||
if(I && istype(I))
|
||||
I.status |= ORGAN_CUT_AWAY
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/detatch_organ_robotic/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, disconnecting \the [tool].</span>", \
|
||||
"<span class='warning'>Your hand slips, disconnecting \the [tool].</span>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Robot Organ Attaching Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/attach_organ_robotic
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/screwdriver = 100,
|
||||
@@ -327,8 +355,7 @@
|
||||
min_duration = 100
|
||||
max_duration = 120
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(!(affected && (affected.robotic >= ORGAN_ROBOT)))
|
||||
return 0
|
||||
@@ -350,12 +377,12 @@
|
||||
target.op_stage.current_organ = organ_to_replace
|
||||
return ..()
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] begins reattaching [target]'s [target.op_stage.current_organ] with \the [tool].", \
|
||||
"You start reattaching [target]'s [target.op_stage.current_organ] with \the [tool].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='notice'>[user] has reattached [target]'s [target.op_stage.current_organ] with \the [tool].</span>" , \
|
||||
"<span class='notice'>You have reattached [target]'s [target.op_stage.current_organ] with \the [tool].</span>")
|
||||
|
||||
@@ -363,10 +390,14 @@
|
||||
if(I && istype(I))
|
||||
I.status &= ~ORGAN_CUT_AWAY
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/attach_organ_robotic/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips, disconnecting \the [tool].</span>", \
|
||||
"<span class='warning'>Your hand slips, disconnecting \the [tool].</span>")
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// MMI Insertion Surgery
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi
|
||||
allowed_tools = list(
|
||||
/obj/item/device/mmi = 100
|
||||
@@ -375,8 +406,7 @@
|
||||
min_duration = 60
|
||||
max_duration = 80
|
||||
|
||||
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
if(target_zone != BP_HEAD)
|
||||
return
|
||||
|
||||
@@ -406,13 +436,13 @@
|
||||
|
||||
return 1
|
||||
|
||||
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/install_mmi/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 installing \the [tool] into [target]'s [affected.name].", \
|
||||
"You start installing \the [tool] into [target]'s [affected.name].")
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/install_mmi/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("<span class='notice'>[user] has installed \the [tool] into [target]'s [affected.name].</span>", \
|
||||
"<span class='notice'>You have installed \the [tool] into [target]'s [affected.name].</span>")
|
||||
@@ -443,6 +473,6 @@
|
||||
target.name = new_name
|
||||
target.real_name = target.name
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips.</span>", \
|
||||
"<span class='warning'>Your hand slips.</span>")
|
||||
|
||||
@@ -6,9 +6,11 @@
|
||||
is_valid_target(mob/living/simple_animal/slime/target)
|
||||
return istype(target, /mob/living/simple_animal/slime/)
|
||||
|
||||
can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
return target.stat == 2
|
||||
|
||||
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel = 100, \
|
||||
@@ -19,22 +21,24 @@
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
|
||||
can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && istype(target) && target.core_removal_stage == 0
|
||||
|
||||
begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", \
|
||||
"You start cutting through [target]'s flesh with \the [tool].")
|
||||
|
||||
end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] cuts through [target]'s flesh with \the [tool].</font>", \
|
||||
"<font color='blue'>You cut through [target]'s flesh with \the [tool], revealing its silky innards.</font>")
|
||||
target.core_removal_stage = 1
|
||||
|
||||
fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, tearing [target]'s flesh with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing [target]'s flesh with \the [tool]!</font>")
|
||||
|
||||
|
||||
|
||||
/datum/surgery_step/slime/cut_innards
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/scalpel = 100, \
|
||||
@@ -45,22 +49,24 @@
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
|
||||
can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && istype(target) && target.core_removal_stage == 1
|
||||
|
||||
begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool].", \
|
||||
"You start cutting [target]'s silky innards apart with \the [tool].")
|
||||
|
||||
end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] cuts [target]'s innards apart with \the [tool], exposing the cores.</font>", \
|
||||
"<font color='blue'>You cut [target]'s innards apart with \the [tool], exposing the cores.</font>")
|
||||
target.core_removal_stage = 2
|
||||
|
||||
fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, tearing [target]'s innards with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing [target]'s innards with \the [tool]!</font>")
|
||||
|
||||
|
||||
|
||||
/datum/surgery_step/slime/saw_core
|
||||
allowed_tools = list(
|
||||
/obj/item/weapon/surgical/circular_saw = 100, \
|
||||
@@ -70,14 +76,14 @@
|
||||
min_duration = 50
|
||||
max_duration = 70
|
||||
|
||||
can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && (istype(target) && target.core_removal_stage == 2 && target.cores > 0) //This is being passed a human as target, unsure why.
|
||||
|
||||
begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool].", \
|
||||
"You start cutting out one of [target]'s cores with \the [tool].")
|
||||
|
||||
end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
target.cores--
|
||||
user.visible_message("<font color='blue'>[user] cuts out one of [target]'s cores with \the [tool].</font>",, \
|
||||
"<font color='blue'>You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.</font>")
|
||||
@@ -88,6 +94,6 @@
|
||||
target.icon_state = "slime extracted"
|
||||
|
||||
|
||||
fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, causing \him to miss the core!</font>", \
|
||||
"<font color='red'>Your hand slips, causing you to miss the core!</font>")
|
||||
Reference in New Issue
Block a user