mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Burn wound surgery (#22105)
* adds burn wound surgery * burn wounds review changes * Update code/modules/surgery/other.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * Update code/modules/surgery/other.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * Update code/modules/surgery/abstract_steps.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * Update code/modules/surgery/other.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> --------- Co-authored-by: cybercapitalism <petersmovie@live.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
@@ -292,13 +292,30 @@
|
||||
to_chat(user, "<span class='warning'>The bones in [target]'s [parse_zone(affected)] look fully intact, they don't need mending.</span>")
|
||||
return FALSE
|
||||
|
||||
/// Proxy surgery step to allow healing bleeding and mending bones.
|
||||
/datum/surgery/intermediate/treat_burns
|
||||
name = "Burns (abstract)"
|
||||
desc = "An intermediate surgery to treat burn wounds while a patient is undergoing another procedure."
|
||||
steps = list(/datum/surgery_step/treat_burns)
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT)
|
||||
|
||||
/datum/surgery/intermediate/treat_burns/can_start(mob/user, mob/living/carbon/target)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_selected)
|
||||
if(affected.status & ORGAN_BURNT)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/// Proxy surgery step to allow healing bleeding, bones, and burns.
|
||||
/// Should be added into surgeries just after the first three standard steps.
|
||||
/datum/surgery_step/proxy/open_organ
|
||||
name = "mend internal bleeding or mend bone (proxy)"
|
||||
name = "mend internal bleeding, bones, or burns (proxy)"
|
||||
branches = list(
|
||||
/datum/surgery/intermediate/bleeding,
|
||||
/datum/surgery/intermediate/mendbone
|
||||
/datum/surgery/intermediate/mendbone,
|
||||
/datum/surgery/intermediate/treat_burns
|
||||
)
|
||||
|
||||
/// Mend IB without healing bones
|
||||
|
||||
@@ -33,6 +33,26 @@
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT)
|
||||
requires_organic_bodypart = TRUE
|
||||
|
||||
/datum/surgery/treat_burns
|
||||
name = "Treat Severe Burns"
|
||||
steps = list(
|
||||
/datum/surgery_step/generic/cut_open,
|
||||
/datum/surgery_step/generic/clamp_bleeders,
|
||||
/datum/surgery_step/generic/retract_skin,
|
||||
/datum/surgery_step/proxy/open_organ,
|
||||
/datum/surgery_step/generic/cauterize
|
||||
)
|
||||
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_PRECISE_R_HAND, BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT)
|
||||
|
||||
/datum/surgery/treat_burns/can_start(mob/user, mob/living/carbon/target)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
var/obj/item/organ/external/affected = target.get_organ(user.zone_selected)
|
||||
if(affected.status & ORGAN_BURNT)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/surgery/bleeding/can_start(mob/user, mob/living/carbon/target)
|
||||
. = ..()
|
||||
if(!.)
|
||||
@@ -51,7 +71,6 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/surgery_step/fix_vein
|
||||
name = "mend internal bleeding"
|
||||
allowed_tools = list(
|
||||
@@ -94,13 +113,66 @@
|
||||
/datum/surgery_step/fix_vein/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
user.visible_message(
|
||||
"<span class='warning'> [user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</span>",
|
||||
"<span class='warning'> Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</span>"
|
||||
"<span class='warning'>[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</span>",
|
||||
"<span class='warning'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</span>"
|
||||
)
|
||||
affected.receive_damage(5, 0)
|
||||
|
||||
return SURGERY_STEP_RETRY
|
||||
|
||||
/datum/surgery_step/treat_burns
|
||||
name = "mend burns"
|
||||
allowed_tools = list(
|
||||
/obj/item/stack/medical/ointment/advanced = 100,
|
||||
/obj/item/stack/medical/ointment = 90
|
||||
)
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
time = 3.2 SECONDS
|
||||
|
||||
/datum/surgery_step/treat_burns/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(!(affected.status & ORGAN_BURNT))
|
||||
to_chat(user, "<span class='warning'>The skin on [target]'s [parse_zone(affected)] seems to be in perfect condition, it doesn't need treatment.</span>")
|
||||
return SURGERY_BEGINSTEP_SKIP
|
||||
|
||||
user.visible_message(
|
||||
"[user] starts to treat the scorched tissue in [target]'s [affected.name] with [tool].",
|
||||
"You start to treat the scorched tissue in [target]'s [affected.name] with [tool]."
|
||||
)
|
||||
target.custom_pain("Your [affected.name] flares with agony as its burn is touched!")
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/treat_burns/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/obj/item/stack/stack = tool
|
||||
|
||||
stack.use(1)
|
||||
affected.fix_burn_wound()
|
||||
affected.germ_level = 0
|
||||
target.update_body()
|
||||
|
||||
user.visible_message(
|
||||
"<span class='notice'>[user] finishes treating affected tissue in [target]'s [affected.name].</span>",
|
||||
"<span class='notice'>You finish treating affected tissue in [target]'s [affected.name] with [tool].</span>"
|
||||
)
|
||||
|
||||
return SURGERY_STEP_CONTINUE
|
||||
|
||||
/datum/surgery_step/treat_burns/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
var/obj/item/stack/stack = tool
|
||||
|
||||
stack.use(1)
|
||||
|
||||
user.visible_message(
|
||||
"<span class='warning'>[user]'s hand slips, applying [tool] in the wrong place on [target]'s [affected.name]!</span>",
|
||||
"<span class='warning'>Your hand slips, applying [tool] in the wrong place on [target]'s [affected.name]!</span>"
|
||||
)
|
||||
|
||||
return SURGERY_STEP_RETRY
|
||||
/datum/surgery_step/fix_dead_tissue //Debridement
|
||||
name = "remove dead tissue"
|
||||
allowed_tools = list(
|
||||
@@ -136,8 +208,8 @@
|
||||
/datum/surgery_step/fix_dead_tissue/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
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>"
|
||||
"<span class='warning'>[user]'s hand slips, slicing an artery inside [target]'s [affected.name] with [tool]!</span>",
|
||||
"<span class='warning'>Your hand slips, slicing an artery inside [target]'s [affected.name] with [tool]!</span>"
|
||||
)
|
||||
affected.receive_damage(20)
|
||||
|
||||
@@ -223,8 +295,8 @@
|
||||
container.reagents.reaction(target, REAGENT_INGEST) //technically it's contact, but the reagents are being applied to internal tissue
|
||||
|
||||
user.visible_message(
|
||||
"<span class='warning'> [user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!</span>",
|
||||
"<span class='warning'> Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!</span>"
|
||||
"<span class='warning'>[user]'s hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!</span>",
|
||||
"<span class='warning'>Your hand slips, applying [trans] units of the solution to the wrong place in [target]'s [affected.name] with the [tool]!</span>"
|
||||
)
|
||||
|
||||
//no damage or anything, just wastes medicine
|
||||
|
||||
Reference in New Issue
Block a user