Merge pull request #15590 from SandPoot/noisy-surgery

Adds sound effects to surgeries
This commit is contained in:
silicons
2022-04-15 17:43:37 -07:00
committed by GitHub
34 changed files with 144 additions and 6 deletions
@@ -2,6 +2,7 @@
name = "Brainwashing Surgery Disk" name = "Brainwashing Surgery Disk"
desc = "The disk provides instructions on how to impress an order on a brain, making it the primary objective of the patient." desc = "The disk provides instructions on how to impress an order on a brain, making it the primary objective of the patient."
surgeries = list(/datum/surgery/advanced/brainwashing) surgeries = list(/datum/surgery/advanced/brainwashing)
/datum/surgery/advanced/brainwashing /datum/surgery/advanced/brainwashing
name = "Brainwashing" name = "Brainwashing"
desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant." desc = "A surgical procedure which directly implants a directive into the patient's brain, making it their absolute priority. It can be cleared using a mindshield implant."
@@ -23,11 +24,16 @@
if(!B) if(!B)
return FALSE return FALSE
return TRUE return TRUE
/datum/surgery_step/brainwash /datum/surgery_step/brainwash
name = "brainwash" name = "brainwash"
implements = list(TOOL_HEMOSTAT = 85, TOOL_WIRECUTTER = 50, /obj/item/stack/packageWrap = 35, /obj/item/stack/cable_coil = 15) implements = list(TOOL_HEMOSTAT = 85, TOOL_WIRECUTTER = 50, /obj/item/stack/packageWrap = 35, /obj/item/stack/cable_coil = 15)
time = 200 time = 200
preop_sound = 'sound/surgery/hemostat1.ogg'
success_sound = 'sound/surgery/hemostat1.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
var/objective var/objective
/datum/surgery_step/brainwash/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/brainwash/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
objective = stripped_input(user, "Choose the objective to imprint on your victim's brain.", "Brainwashing", null, MAX_MESSAGE_LEN) objective = stripped_input(user, "Choose the objective to imprint on your victim's brain.", "Brainwashing", null, MAX_MESSAGE_LEN)
if(!objective) if(!objective)
@@ -12,6 +12,7 @@
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0 requires_bodypart_type = 0
/datum/surgery/advanced/lobotomy/can_start(mob/user, mob/living/carbon/target, obj/item/tool) /datum/surgery/advanced/lobotomy/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
if(!..()) if(!..())
return FALSE return FALSE
@@ -19,11 +20,16 @@
if(!B) if(!B)
return FALSE return FALSE
return TRUE return TRUE
/datum/surgery_step/lobotomize /datum/surgery_step/lobotomize
name = "perform lobotomy" name = "perform lobotomy"
implements = list(TOOL_SCALPEL = 85, /obj/item/melee/transforming/energy/sword = 55, /obj/item/kitchen/knife = 35, implements = list(TOOL_SCALPEL = 85, /obj/item/melee/transforming/energy/sword = 55, /obj/item/kitchen/knife = 35,
/obj/item/shard = 25, /obj/item = 20) /obj/item/shard = 25, /obj/item = 20)
time = 100 time = 100
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/scalpel2.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/lobotomize/tool_check(mob/user, obj/item/tool) /datum/surgery_step/lobotomize/tool_check(mob/user, obj/item/tool)
if(implement_type == /obj/item && !tool.get_sharpness()) if(implement_type == /obj/item && !tool.get_sharpness())
return FALSE return FALSE
@@ -11,15 +11,20 @@
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0 requires_bodypart_type = 0
/datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target, obj/item/tool) /datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
. = ..() . = ..()
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
if(!B) if(!B)
return FALSE return FALSE
/datum/surgery_step/pacify /datum/surgery_step/pacify
name = "rewire brain" name = "rewire brain"
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
time = 40 time = 40
preop_sound = 'sound/surgery/hemostat1.ogg'
success_sound = 'sound/surgery/hemostat1.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/pacify/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/pacify/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to pacify [target]...</span>", display_results(user, target, "<span class='notice'>You begin to pacify [target]...</span>",
+11 -2
View File
@@ -12,6 +12,7 @@
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0 requires_bodypart_type = 0
/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target, obj/item/tool) /datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
if(!..()) if(!..())
return FALSE return FALSE
@@ -23,10 +24,14 @@
if(!B) if(!B)
return FALSE return FALSE
return TRUE return TRUE
/datum/surgery_step/revive /datum/surgery_step/revive
name = "electrically stimulate brain" name = "electrically stimulate brain"
implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/rod_of_asclepius = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60) implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/rod_of_asclepius = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60)
time = 120 time = 120
success_sound = 'sound/magic/lightningbolt.ogg'
failure_sound = 'sound/magic/lightningbolt.ogg'
/datum/surgery_step/revive/tool_check(mob/user, obj/item/tool) /datum/surgery_step/revive/tool_check(mob/user, obj/item/tool)
. = TRUE . = TRUE
if(istype(tool, /obj/item/shockpaddles)) if(istype(tool, /obj/item/shockpaddles))
@@ -53,11 +58,16 @@
"[user] prepares to shock [target]'s brain with [tool].") "[user] prepares to shock [target]'s brain with [tool].")
target.notify_ghost_cloning("Someone is trying to zap your brain. Re-enter your corpse if you want to be revived!", source = target) target.notify_ghost_cloning("Someone is trying to zap your brain. Re-enter your corpse if you want to be revived!", source = target)
/datum/surgery_step/revive/play_preop_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(istype(tool, /obj/item/shockpaddles))
playsound(tool, 'sound/machines/defib_charge.ogg', 75, 0)
else
..()
/datum/surgery_step/revive/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/revive/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You successfully shock [target]'s brain with [tool]...</span>", display_results(user, target, "<span class='notice'>You successfully shock [target]'s brain with [tool]...</span>",
"[user] send a powerful shock to [target]'s brain with [tool]...", "[user] send a powerful shock to [target]'s brain with [tool]...",
"[user] send a powerful shock to [target]'s brain with [tool]...") "[user] send a powerful shock to [target]'s brain with [tool]...")
playsound(get_turf(target), 'sound/magic/lightningbolt.ogg', 50, 1)
target.adjustOxyLoss(-50, 0) target.adjustOxyLoss(-50, 0)
target.updatehealth() target.updatehealth()
var/tplus = world.time - target.timeofdeath var/tplus = world.time - target.timeofdeath
@@ -86,6 +96,5 @@
display_results(user, target, "<span class='notice'>You shock [target]'s brain with [tool], but [target.p_they()] doesn't react.</span>", display_results(user, target, "<span class='notice'>You shock [target]'s brain with [tool], but [target.p_they()] doesn't react.</span>",
"[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.", "[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.",
"[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.") "[user] send a powerful shock to [target]'s brain with [tool], but [target.p_they()] doesn't react.")
playsound(get_turf(target), 'sound/magic/lightningbolt.ogg', 50, 1)
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 199) target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 199)
return FALSE return FALSE
+3
View File
@@ -4,10 +4,13 @@
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
requires_bodypart_type = 0 requires_bodypart_type = 0
/datum/surgery_step/sever_limb /datum/surgery_step/sever_limb
name = "sever limb" name = "sever limb"
implements = list(TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/melee/arm_blade = 80, /obj/item/chainsaw = 80, /obj/item/mounted_chainsaw = 80, /obj/item/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) implements = list(TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/melee/arm_blade = 80, /obj/item/chainsaw = 80, /obj/item/mounted_chainsaw = 80, /obj/item/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
time = 64 time = 64
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to sever [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to sever [target]'s [parse_zone(target_zone)]...</span>",
+5
View File
@@ -11,10 +11,15 @@
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0 requires_bodypart_type = 0
/datum/surgery_step/fix_brain /datum/surgery_step/fix_brain
name = "fix brain" name = "fix brain"
implements = list(TOOL_HEMOSTAT = 85, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) //don't worry, pouring some alcohol on their open brain will get that chance to 100 implements = list(TOOL_HEMOSTAT = 85, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) //don't worry, pouring some alcohol on their open brain will get that chance to 100
time = 120 //long and complicated time = 120 //long and complicated
preop_sound = 'sound/surgery/hemostat1.ogg'
success_sound = 'sound/surgery/hemostat1.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool) /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool)
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
if(!B || istype(B, /obj/item/organ/brain/ipc)) if(!B || istype(B, /obj/item/organ/brain/ipc))
+3
View File
@@ -28,6 +28,9 @@
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCALPEL = 85, TOOL_SAW = 60, TOOL_WIRECUTTER = 40) implements = list(TOOL_HEMOSTAT = 100, TOOL_SCALPEL = 85, TOOL_SAW = 60, TOOL_WIRECUTTER = 40)
time = 30 time = 30
repeatable = TRUE repeatable = TRUE
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/retractor2.ogg'
failure_sound = 'sound/surgery/organ1.ogg'
/datum/surgery_step/debride/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/debride/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(surgery.operated_wound) if(surgery.operated_wound)
+5
View File
@@ -3,6 +3,7 @@
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close) steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close)
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST) possible_locs = list(BODY_ZONE_CHEST)
//handle cavity //handle cavity
/datum/surgery_step/handle_cavity /datum/surgery_step/handle_cavity
name = "implant item" name = "implant item"
@@ -11,11 +12,15 @@
implements = list(/obj/item = 100) implements = list(/obj/item = 100)
repeatable = TRUE repeatable = TRUE
time = 32 time = 32
preop_sound = 'sound/surgery/organ1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
var/obj/item/IC = null var/obj/item/IC = null
/datum/surgery_step/handle_cavity/tool_check(mob/user, obj/item/tool) /datum/surgery_step/handle_cavity/tool_check(mob/user, obj/item/tool)
if(istype(tool, /obj/item/cautery) || istype(tool, /obj/item/gun/energy/laser)) if(istype(tool, /obj/item/cautery) || istype(tool, /obj/item/gun/energy/laser))
return FALSE return FALSE
return !tool.get_temperature() return !tool.get_temperature()
/datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST) var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST)
IC = CH.cavity_item IC = CH.cavity_item
+6 -1
View File
@@ -12,13 +12,15 @@
return TRUE return TRUE
return FALSE return FALSE
//an incision but with greater bleed, and a 90% base success chance //an incision but with greater bleed, and a 90% base success chance
/datum/surgery_step/incise_heart /datum/surgery_step/incise_heart
name = "incise heart" name = "incise heart"
implements = list(TOOL_SCALPEL = 90, /obj/item/melee/transforming/energy/sword = 45, /obj/item/kitchen/knife = 45, implements = list(TOOL_SCALPEL = 90, /obj/item/melee/transforming/energy/sword = 45, /obj/item/kitchen/knife = 45,
/obj/item/shard = 25) /obj/item/shard = 25)
time = 16 time = 16
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/scalpel2.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/incise_heart/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s heart...</span>", display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s heart...</span>",
@@ -53,6 +55,9 @@
name = "graft coronary bypass" name = "graft coronary bypass"
implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5) implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5)
time = 90 time = 90
preop_sound = 'sound/surgery/hemostat1.ogg'
success_sound = 'sound/surgery/hemostat1.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to graft a bypass onto [target]'s heart...</span>", display_results(user, target, "<span class='notice'>You begin to graft a bypass onto [target]'s heart...</span>",
+2
View File
@@ -32,6 +32,8 @@
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 65, /obj/item/pen = 55) implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 65, /obj/item/pen = 55)
repeatable = TRUE repeatable = TRUE
time = 15 time = 15
success_sound = 'sound/surgery/retractor2.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
var/brutehealing = 0 var/brutehealing = 0
var/burnhealing = 0 var/burnhealing = 0
var/missinghpbonus = 0 //heals an extra point of damager per X missing damage of type (burn damage for burn healing, brute for brute). Smaller Number = More Healing! var/missinghpbonus = 0 //heals an extra point of damager per X missing damage of type (burn damage for burn healing, brute for brute). Smaller Number = More Healing!
+4
View File
@@ -3,12 +3,15 @@
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close) steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST) possible_locs = list(BODY_ZONE_CHEST)
//extract implant //extract implant
/datum/surgery_step/extract_implant /datum/surgery_step/extract_implant
name = "extract implant" name = "extract implant"
implements = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65) implements = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65)
time = 64 time = 64
success_sound = 'sound/surgery/hemostat1.ogg'
var/obj/item/implant/I = null var/obj/item/implant/I = null
/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
for(var/obj/item/O in target.implants) for(var/obj/item/O in target.implants)
I = O I = O
@@ -48,6 +51,7 @@
else else
to_chat(user, "<span class='warning'>You can't find anything in [target]'s [target_zone]!</span>") to_chat(user, "<span class='warning'>You can't find anything in [target]'s [target_zone]!</span>")
return 1 return 1
/datum/surgery/implant_removal/mechanic /datum/surgery/implant_removal/mechanic
name = "implant removal" name = "implant removal"
requires_bodypart_type = BODYPART_ROBOTIC requires_bodypart_type = BODYPART_ROBOTIC
+3
View File
@@ -19,6 +19,9 @@
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45, implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
/obj/item/shard = 35) /obj/item/shard = 35)
time = 42 time = 42
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/organ1.ogg'
failure_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s lungs...</span>", display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s lungs...</span>",
+37 -1
View File
@@ -3,10 +3,12 @@
name = "unscrew shell" name = "unscrew shell"
implements = list( implements = list(
TOOL_SCREWDRIVER = 100, TOOL_SCREWDRIVER = 100,
TOOL_SCALPEL = 75, // med borgs could try to unskrew shell with scalpel TOOL_SCALPEL = 75, // med borgs could try to unscrew shell with scalpel
/obj/item/kitchen/knife = 50, /obj/item/kitchen/knife = 50,
/obj/item = 10) // 10% success with any sharp item. /obj/item = 10) // 10% success with any sharp item.
time = 24 time = 24
preop_sound = 'sound/items/screwdriver.ogg'
success_sound = 'sound/items/screwdriver2.ogg'
/datum/surgery_step/mechanic_open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/mechanic_open/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to unscrew the shell of [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to unscrew the shell of [target]'s [parse_zone(target_zone)]...</span>",
@@ -16,7 +18,11 @@
/datum/surgery_step/mechanic_open/tool_check(mob/user, obj/item/tool) /datum/surgery_step/mechanic_open/tool_check(mob/user, obj/item/tool)
if(implement_type == /obj/item && !tool.get_sharpness()) if(implement_type == /obj/item && !tool.get_sharpness())
return FALSE return FALSE
if(tool.usesound)
preop_sound = tool.usesound
return TRUE return TRUE
//close shell //close shell
/datum/surgery_step/mechanic_close /datum/surgery_step/mechanic_close
name = "screw shell" name = "screw shell"
@@ -26,6 +32,8 @@
/obj/item/kitchen/knife = 50, /obj/item/kitchen/knife = 50,
/obj/item = 10) // 10% success with any sharp item. /obj/item = 10) // 10% success with any sharp item.
time = 24 time = 24
preop_sound = 'sound/items/screwdriver.ogg'
success_sound = 'sound/items/screwdriver2.ogg'
/datum/surgery_step/mechanic_close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/mechanic_close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to screw the shell of [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to screw the shell of [target]'s [parse_zone(target_zone)]...</span>",
@@ -35,7 +43,11 @@
/datum/surgery_step/mechanic_close/tool_check(mob/user, obj/item/tool) /datum/surgery_step/mechanic_close/tool_check(mob/user, obj/item/tool)
if(implement_type == /obj/item && !tool.get_sharpness()) if(implement_type == /obj/item && !tool.get_sharpness())
return FALSE return FALSE
if(tool.usesound)
preop_sound = tool.usesound
return TRUE return TRUE
//prepare electronics //prepare electronics
/datum/surgery_step/prepare_electronics /datum/surgery_step/prepare_electronics
name = "prepare electronics (multitool)" name = "prepare electronics (multitool)"
@@ -43,6 +55,8 @@
TOOL_MULTITOOL = 100, TOOL_MULTITOOL = 100,
TOOL_HEMOSTAT = 10) // try to reboot internal controllers via short circuit with some conductor TOOL_HEMOSTAT = 10) // try to reboot internal controllers via short circuit with some conductor
time = 24 time = 24
preop_sound = 'sound/items/taperecorder/tape_flip.ogg'
success_sound = 'sound/items/taperecorder/taperecorder_close.ogg'
/datum/surgery_step/prepare_electronics/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/prepare_electronics/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to prepare electronics in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to prepare electronics in [target]'s [parse_zone(target_zone)]...</span>",
@@ -56,12 +70,19 @@
TOOL_WRENCH = 100, TOOL_WRENCH = 100,
TOOL_RETRACTOR = 10) TOOL_RETRACTOR = 10)
time = 24 time = 24
preop_sound = 'sound/items/ratchet.ogg'
/datum/surgery_step/mechanic_unwrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/mechanic_unwrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to unwrench some bolts in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to unwrench some bolts in [target]'s [parse_zone(target_zone)]...</span>",
"[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].", "[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].",
"[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].") "[user] begins to unwrench some bolts in [target]'s [parse_zone(target_zone)].")
/datum/surgery_step/mechanic_unwrench/tool_check(mob/user, obj/item/tool)
if(tool.usesound)
preop_sound = tool.usesound
return TRUE
//wrench //wrench
/datum/surgery_step/mechanic_wrench /datum/surgery_step/mechanic_wrench
name = "wrench bolts" name = "wrench bolts"
@@ -69,23 +90,38 @@
TOOL_WRENCH = 100, TOOL_WRENCH = 100,
TOOL_RETRACTOR = 10) TOOL_RETRACTOR = 10)
time = 24 time = 24
preop_sound = 'sound/items/ratchet.ogg'
/datum/surgery_step/mechanic_wrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/mechanic_wrench/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to wrench some bolts in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to wrench some bolts in [target]'s [parse_zone(target_zone)]...</span>",
"[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].", "[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].",
"[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].") "[user] begins to wrench some bolts in [target]'s [parse_zone(target_zone)].")
/datum/surgery_step/mechanic_wrench/tool_check(mob/user, obj/item/tool)
if(tool.usesound)
preop_sound = tool.usesound
return TRUE
//open hatch //open hatch
/datum/surgery_step/open_hatch /datum/surgery_step/open_hatch
name = "open the hatch (empty hand)" name = "open the hatch (empty hand)"
accept_hand = 1 accept_hand = 1
time = 10 time = 10
preop_sound = 'sound/items/ratchet.ogg'
preop_sound = 'sound/machines/doorclick.ogg'
/datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/open_hatch/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to open the hatch holders in [target]'s [parse_zone(target_zone)]...</span>",
"[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].", "[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].",
"[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].") "[user] begins to open the hatch holders in [target]'s [parse_zone(target_zone)].")
/datum/surgery_step/mechanic_unwrench/tool_check(mob/user, obj/item/tool)
if(tool.usesound)
preop_sound = tool.usesound
return TRUE
//cut wires //cut wires
/datum/surgery_step/cut_wires /datum/surgery_step/cut_wires
name = "cut wires" name = "cut wires"
@@ -14,6 +14,7 @@
//there should be bone fixing //there should be bone fixing
/datum/surgery_step/close /datum/surgery_step/close
) )
/datum/surgery/organ_manipulation/soft /datum/surgery/organ_manipulation/soft
possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
steps = list( steps = list(
@@ -24,6 +25,7 @@
/datum/surgery_step/manipulate_organs, /datum/surgery_step/manipulate_organs,
/datum/surgery_step/close /datum/surgery_step/close
) )
/datum/surgery/organ_manipulation/alien /datum/surgery/organ_manipulation/alien
name = "Alien organ manipulation" name = "Alien organ manipulation"
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
@@ -36,6 +38,7 @@
/datum/surgery_step/manipulate_organs, /datum/surgery_step/manipulate_organs,
/datum/surgery_step/close /datum/surgery_step/close
) )
/datum/surgery/organ_manipulation/mechanic /datum/surgery/organ_manipulation/mechanic
name = "Prosthesis organ manipulation" name = "Prosthesis organ manipulation"
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD) possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD)
@@ -49,6 +52,7 @@
/datum/surgery_step/mechanic_wrench, /datum/surgery_step/mechanic_wrench,
/datum/surgery_step/mechanic_close /datum/surgery_step/mechanic_close
) )
/datum/surgery/organ_manipulation/mechanic/soft /datum/surgery/organ_manipulation/mechanic/soft
possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) possible_locs = list(BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
steps = list( steps = list(
@@ -58,20 +62,27 @@
/datum/surgery_step/manipulate_organs, /datum/surgery_step/manipulate_organs,
/datum/surgery_step/mechanic_close /datum/surgery_step/mechanic_close
) )
/datum/surgery_step/manipulate_organs /datum/surgery_step/manipulate_organs
time = 64 time = 64
name = "manipulate organs" name = "manipulate organs"
repeatable = 1 repeatable = 1
implements = list(/obj/item/organ = 100, /obj/item/organ_storage = 100) implements = list(/obj/item/organ = 100, /obj/item/organ_storage = 100)
preop_sound = 'sound/surgery/organ2.ogg'
success_sound = 'sound/surgery/organ1.ogg'
var/implements_extract = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 55) var/implements_extract = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 55)
var/current_type var/current_type
var/obj/item/organ/I = null var/obj/item/organ/I = null
/datum/surgery_step/manipulate_organs/New() /datum/surgery_step/manipulate_organs/New()
..() ..()
implements = implements + implements_extract implements = implements + implements_extract
/datum/surgery_step/manipulate_organs/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/manipulate_organs/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
I = null I = null
if(istype(tool, /obj/item/organ_storage)) if(istype(tool, /obj/item/organ_storage))
preop_sound = initial(preop_sound)
success_sound = initial(success_sound)
if(!tool.contents.len) if(!tool.contents.len)
to_chat(user, "<span class='notice'>There is nothing inside [tool]!</span>") to_chat(user, "<span class='notice'>There is nothing inside [tool]!</span>")
return -1 return -1
@@ -82,6 +93,8 @@
tool = I tool = I
if(isorgan(tool)) if(isorgan(tool))
current_type = "insert" current_type = "insert"
preop_sound = 'sound/surgery/hemostat1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
I = tool I = tool
if(target_zone != I.zone || target.getorganslot(I.slot)) if(target_zone != I.zone || target.getorganslot(I.slot))
to_chat(user, "<span class='notice'>There is no room for [I] in [target]'s [parse_zone(target_zone)]!</span>") to_chat(user, "<span class='notice'>There is no room for [I] in [target]'s [parse_zone(target_zone)]!</span>")
+12 -2
View File
@@ -4,6 +4,8 @@
implements = list(TOOL_SCALPEL = 100, /obj/item/melee/transforming/energy/sword = 75, /obj/item/kitchen/knife = 65, implements = list(TOOL_SCALPEL = 100, /obj/item/melee/transforming/energy/sword = 75, /obj/item/kitchen/knife = 65,
/obj/item/shard = 45, /obj/item = 30) // 30% success with any sharp item. /obj/item/shard = 45, /obj/item = 30) // 30% success with any sharp item.
time = 16 time = 16
preop_sound = 'sound/surgery/scalpel1.ogg'
success_sound = 'sound/surgery/scalpel2.ogg'
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s [parse_zone(target_zone)]...</span>",
@@ -41,6 +43,7 @@
name = "clamp bleeders" name = "clamp bleeders"
implements = list(TOOL_HEMOSTAT = 100, TOOL_WIRECUTTER = 60, /obj/item/stack/packageWrap = 35, /obj/item/stack/cable_coil = 15) implements = list(TOOL_HEMOSTAT = 100, TOOL_WIRECUTTER = 60, /obj/item/stack/packageWrap = 35, /obj/item/stack/cable_coil = 15)
time = 24 time = 24
preop_sound = 'sound/surgery/hemostat1.ogg'
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to clamp bleeders in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to clamp bleeders in [target]'s [parse_zone(target_zone)]...</span>",
@@ -56,25 +59,28 @@
if(BP) if(BP)
BP.generic_bleedstacks -= 3 BP.generic_bleedstacks -= 3
return ..() return ..()
//retract skin //retract skin
/datum/surgery_step/retract_skin /datum/surgery_step/retract_skin
name = "retract skin" name = "retract skin"
implements = list(TOOL_RETRACTOR = 100, TOOL_SCREWDRIVER = 45, TOOL_WIRECUTTER = 35) implements = list(TOOL_RETRACTOR = 100, TOOL_SCREWDRIVER = 45, TOOL_WIRECUTTER = 35)
time = 24 time = 24
preop_sound = 'sound/surgery/retractor1.ogg'
success_sound = 'sound/surgery/retractor2.ogg'
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to retract the skin in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to retract the skin in [target]'s [parse_zone(target_zone)]...</span>",
"[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].", "[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].",
"[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].") "[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].")
//close incision //close incision
/datum/surgery_step/close /datum/surgery_step/close
name = "mend incision" name = "mend incision"
implements = list(TOOL_CAUTERY = 100, /obj/item/gun/energy/laser = 90, TOOL_WELDER = 70, implements = list(TOOL_CAUTERY = 100, /obj/item/gun/energy/laser = 90, TOOL_WELDER = 70,
/obj/item = 30) // 30% success with any hot item. /obj/item = 30) // 30% success with any hot item.
time = 24 time = 24
preop_sound = 'sound/surgery/cautery1.ogg'
success_sound = 'sound/surgery/cautery2.ogg'
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to mend the incision in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to mend the incision in [target]'s [parse_zone(target_zone)]...</span>",
@@ -85,6 +91,7 @@
if(implement_type == TOOL_WELDER || implement_type == /obj/item) if(implement_type == TOOL_WELDER || implement_type == /obj/item)
return tool.get_temperature() return tool.get_temperature()
return TRUE return TRUE
/datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(locate(/datum/surgery_step/saw) in surgery.steps) if(locate(/datum/surgery_step/saw) in surgery.steps)
target.heal_bodypart_damage(45,0) target.heal_bodypart_damage(45,0)
@@ -94,11 +101,14 @@
if(BP) if(BP)
BP.generic_bleedstacks -= 3 BP.generic_bleedstacks -= 3
return ..() return ..()
//saw bone //saw bone
/datum/surgery_step/saw /datum/surgery_step/saw
name = "saw bone" name = "saw bone"
implements = list(TOOL_SAW = 100, /obj/item/melee/arm_blade = 75, /obj/item/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25) implements = list(TOOL_SAW = 100, /obj/item/melee/arm_blade = 75, /obj/item/fireaxe = 50, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25)
time = 54 time = 54
preop_sound = 'sound/surgery/saw.ogg'
success_sound = 'sound/surgery/organ2.ogg'
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to saw through the bone in [target]'s [parse_zone(target_zone)]...</span>", display_results(user, target, "<span class='notice'>You begin to saw through the bone in [target]'s [parse_zone(target_zone)]...</span>",
+23
View File
@@ -9,6 +9,9 @@
var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob. var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob.
var/require_all_chems = TRUE //any on the list or all on the list? var/require_all_chems = TRUE //any on the list or all on the list?
var/silicons_obey_prob = FALSE var/silicons_obey_prob = FALSE
var/preop_sound //Sound played when the step is started
var/success_sound //Sound played if the step succeeded
var/failure_sound //Sound played if the step fails
/datum/surgery_step/proc/try_op(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) /datum/surgery_step/proc/try_op(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
var/success = FALSE var/success = FALSE
@@ -56,6 +59,9 @@
if(preop(user, target, target_zone, tool, surgery) == -1) if(preop(user, target, target_zone, tool, surgery) == -1)
surgery.step_in_progress = FALSE surgery.step_in_progress = FALSE
return FALSE return FALSE
play_preop_sound(user, target, target_zone, tool, surgery) // Here because most steps overwrite preop
if(tool) if(tool)
speed_mod = tool.toolspeed //faster tools mean faster surgeries, but also less experience. speed_mod = tool.toolspeed //faster tools mean faster surgeries, but also less experience.
if(user.mind) if(user.mind)
@@ -69,6 +75,7 @@
if((prob(prob_chance) || (iscyborg(user) && !silicons_obey_prob)) && chem_check(target) && !try_to_fail) if((prob(prob_chance) || (iscyborg(user) && !silicons_obey_prob)) && chem_check(target) && !try_to_fail)
if(success(user, target, target_zone, tool, surgery)) if(success(user, target, target_zone, tool, surgery))
play_success_sound(user, target, target_zone, tool, surgery)
var/multi = (delay/SKILL_GAIN_DELAY_DIVISOR) var/multi = (delay/SKILL_GAIN_DELAY_DIVISOR)
if(repeatable) if(repeatable)
multi *= 0.5 //Spammable surgeries award less experience. multi *= 0.5 //Spammable surgeries award less experience.
@@ -76,6 +83,7 @@
advance = TRUE advance = TRUE
else else
if(failure(user, target, target_zone, tool, surgery)) if(failure(user, target, target_zone, tool, surgery))
play_failure_sound(user, target, target_zone, tool, surgery)
advance = TRUE advance = TRUE
if(advance && !repeatable) if(advance && !repeatable)
surgery.status++ surgery.status++
@@ -98,18 +106,33 @@
"[user] begins to perform surgery on [target].", "[user] begins to perform surgery on [target].",
"[user] begins to perform surgery on [target].") "[user] begins to perform surgery on [target].")
/datum/surgery_step/proc/play_preop_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(!preop_sound)
return
playsound(get_turf(target), preop_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1)
/datum/surgery_step/proc/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/proc/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You succeed.</span>", display_results(user, target, "<span class='notice'>You succeed.</span>",
"[user] succeeds!", "[user] succeeds!",
"[user] finishes.") "[user] finishes.")
return TRUE return TRUE
/datum/surgery_step/proc/play_success_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(!success_sound)
return
playsound(get_turf(target), success_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1)
/datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) /datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='warning'>You screw up!</span>", display_results(user, target, "<span class='warning'>You screw up!</span>",
"<span class='warning'>[user] screws up!</span>", "<span class='warning'>[user] screws up!</span>",
"[user] finishes.", TRUE) //By default the patient will notice if the wrong thing has been cut "[user] finishes.", TRUE) //By default the patient will notice if the wrong thing has been cut
return FALSE return FALSE
/datum/surgery_step/proc/play_failure_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(!failure_sound)
return
playsound(get_turf(target), failure_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1)
/datum/surgery_step/proc/tool_check(mob/user, obj/item/tool) /datum/surgery_step/proc/tool_check(mob/user, obj/item/tool)
return TRUE return TRUE
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.