From c0746aec8d03e96b6620a37f9dbd4eecda0f7dd6 Mon Sep 17 00:00:00 2001 From: Core0verload Date: Mon, 18 Jul 2016 00:21:48 +0300 Subject: [PATCH] Sterilizine now reduces surgery step failure prob (#19337) * surgery refactor * Sterilizine now reduces surgery step failure prob * Adds steriliizne sprayer to medical vendors --- code/game/machinery/vending.dm | 5 +- .../mob/living/carbon/carbon_defense.dm | 20 ++- .../mob/living/simple_animal/slime/slime.dm | 4 +- .../chemistry/reagents/alcohol_reagents.dm | 12 +- .../chemistry/reagents/medicine_reagents.dm | 6 + .../chemistry/reagents/other_reagents.dm | 15 +- .../reagents/reagent_containers/spray.dm | 15 +- code/modules/surgery/helpers.dm | 147 +++++++++--------- code/modules/surgery/surgery.dm | 67 ++++++-- code/modules/surgery/surgery_step.dm | 6 +- icons/obj/chemical.dmi | Bin 36614 -> 36953 bytes 11 files changed, 183 insertions(+), 114 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index e000b2d3016..92eb16774fb 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -787,7 +787,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!" req_access_txt = "5" products = list(/obj/item/weapon/reagent_containers/syringe = 12,/obj/item/weapon/reagent_containers/dropper = 3,/obj/item/stack/medical/gauze = 8,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5, /obj/item/weapon/reagent_containers/pill/insulin = 10, - /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, + /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/glass/bottle/charcoal = 4, /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1, /obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 4,/obj/item/weapon/reagent_containers/glass/bottle/morphine = 4,/obj/item/weapon/reagent_containers/glass/bottle/salglu_solution = 3, /obj/item/weapon/reagent_containers/glass/bottle/toxin = 3,/obj/item/weapon/reagent_containers/syringe/antiviral = 6,/obj/item/weapon/reagent_containers/pill/salbutamol = 2,/obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/morphine = 4,/obj/item/weapon/reagent_containers/pill/charcoal = 6) @@ -809,7 +809,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C icon_deny = "wallmed-deny" density = 0 products = list(/obj/item/weapon/reagent_containers/syringe = 3,/obj/item/weapon/reagent_containers/pill/patch/styptic = 5, - /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/pill/charcoal = 2) + /obj/item/weapon/reagent_containers/pill/patch/silver_sulf = 5,/obj/item/weapon/reagent_containers/pill/charcoal = 2, + /obj/item/weapon/reagent_containers/spray/medical/sterilizer = 1) contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2,/obj/item/weapon/reagent_containers/pill/morphine = 2) /obj/machinery/vending/security diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 56d75b56517..4fc25452cda 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -18,12 +18,11 @@ take_organ_damage(10) /mob/living/carbon/attackby(obj/item/I, mob/user, params) - if(lying) - if(surgeries.len) - if(user != src && user.a_intent == "help") - for(var/datum/surgery/S in surgeries) - if(S.next_step(user, src)) - return 1 + if(lying && surgeries.len) + if(user != src && user.a_intent == "help") + for(var/datum/surgery/S in surgeries) + if(S.next_step(user)) + return 1 return ..() @@ -39,12 +38,11 @@ if(D.IsSpreadByTouch()) ContractDisease(D) - if(lying) + if(lying && surgeries.len) if(user.a_intent == "help") - if(surgeries.len) - for(var/datum/surgery/S in surgeries) - if(S.next_step(user, src)) - return 1 + for(var/datum/surgery/S in surgeries) + if(S.next_step(user)) + return 1 return 0 diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 232d66b8f20..10dafe8f1e2 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -292,7 +292,7 @@ var/list/slime_colours = list("rainbow", "grey", "purple", "metal", "orange", if(stat == DEAD && surgeries.len) if(M.a_intent == "help") for(var/datum/surgery/S in surgeries) - if(S.next_step(M, src)) + if(S.next_step(M)) return 1 if(..()) //successful attack attacked += 10 @@ -307,7 +307,7 @@ var/list/slime_colours = list("rainbow", "grey", "purple", "metal", "orange", if(stat == DEAD && surgeries.len) if(user.a_intent == "help") for(var/datum/surgery/S in surgeries) - if(S.next_step(user, src)) + if(S.next_step(user)) return 1 if(istype(W,/obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma. if (user in Friends) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index ef802527662..c70c022d467 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -56,8 +56,18 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with ethanol isn't quite as good as fuel. if(!istype(M, /mob/living)) return - if(method == TOUCH || method == VAPOR) + + if(method in list(TOUCH, VAPOR, PATCH)) M.adjust_fire_stacks(reac_volume / 15) + + if(iscarbon(M)) + var/mob/living/carbon/C = M + var/power_multiplier = boozepwr / 65 // Weak alcohol has less sterilizing power + + for(var/s in C.surgeries) + var/datum/surgery/S = s + S.success_multiplier = max(0.10*power_multiplier, S.success_multiplier) + // +10% success propability on each step, useful while operating in less-than-perfect conditions return ..() /datum/reagent/consumable/ethanol/beer diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 46bc5472217..df4a732fd52 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -306,6 +306,12 @@ if(show_message) M << "Your stomach agonizingly cramps!" else + var/mob/living/carbon/C = M + for(var/s in C.surgeries) + var/datum/surgery/S = s + S.success_multiplier = max(0.10, S.success_multiplier) + // +10% success propability on each step, useful while operating in less-than-perfect conditions + if(show_message) M << "You feel your wounds fade away to nothing!" //It's a painkiller, after all ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index b2e0b8fb995..efcad8ef892 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -387,8 +387,10 @@ if(initial(S.blacklisted)) continue possible_morphs += S + + var/current_species = H.dna.species.type var/datum/species/mutation = pick(possible_morphs) - if(prob(90) && mutation) + if(mutation && mutation != current_species) H << "The pain subsides. You feel... different." H.set_species(mutation) else @@ -607,12 +609,21 @@ GG = new/obj/effect/decal/cleanable/greenglow(T) GG.reagents.add_reagent("radium", reac_volume) -/datum/reagent/sterilizine +/datum/reagent/space_cleaner/sterilizine name = "Sterilizine" id = "sterilizine" description = "Sterilizes wounds in preparation for surgery." color = "#C8A5DC" // rgb: 200, 165, 220 +/datum/reagent/space_cleaner/sterilizine/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(iscarbon(M) && (method in list(TOUCH, VAPOR, PATCH))) + var/mob/living/carbon/C = M + for(var/s in C.surgeries) + var/datum/surgery/S = s + S.success_multiplier = max(0.20, S.success_multiplier) + // +20% success propability on each step, useful while operating in less-than-perfect conditions + ..() + /datum/reagent/iron name = "Iron" id = "iron" diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index f999590d933..83eaa1ff201 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -117,7 +117,6 @@ user << "You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use." /obj/item/weapon/reagent_containers/spray/verb/empty() - set name = "Empty Spray Bottle" set category = "Object" set src in usr @@ -136,6 +135,7 @@ desc = "BLAM!-brand non-foaming space cleaner!" list_reagents = list("cleaner" = 250) +//spray tan /obj/item/weapon/reagent_containers/spray/spraytan name = "spray tan" volume = 50 @@ -143,6 +143,19 @@ list_reagents = list("spraytan" = 50) +/obj/item/weapon/reagent_containers/spray/medical + name = "medical spray" + icon = 'icons/obj/chemical.dmi' + icon_state = "medspray" + volume = 100 + + +/obj/item/weapon/reagent_containers/spray/medical/sterilizer + name = "sterilizer spray" + desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery." + list_reagents = list("sterilizine" = 100) + + //pepperspray /obj/item/weapon/reagent_containers/spray/pepper name = "pepperspray" diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 59259bda02f..79b641e3c06 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,93 +1,90 @@ /proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) - if(istype(M)) - var/mob/living/carbon/human/H - var/obj/item/bodypart/affecting - var/selected_zone = user.zone_selected + if(!istype(M)) + return - if(istype(M, /mob/living/carbon/human)) - H = M - affecting = H.get_bodypart(check_zone(selected_zone)) + var/mob/living/carbon/human/H + var/obj/item/bodypart/affecting + var/selected_zone = user.zone_selected - if(M.lying || isslime(M)) //if they're prone or a slime - var/datum/surgery/current_surgery + if(istype(M, /mob/living/carbon/human)) + H = M + affecting = H.get_bodypart(check_zone(selected_zone)) - for(var/datum/surgery/S in M.surgeries) - if(S.location == selected_zone) - current_surgery = S + if(!M.lying && !isslime(M)) //if they're prone or a slime + return - if(!current_surgery) - var/list/all_surgeries = surgeries_list.Copy() - var/list/available_surgeries = list() + var/datum/surgery/current_surgery - for(var/datum/surgery/S in all_surgeries) - if(!S.possible_locs.Find(selected_zone)) - continue - if(affecting) - if(!S.requires_bodypart) - continue - if(S.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) - continue - else if(H && S.requires_bodypart) //human with no limb in surgery zone when we need a limb - continue - if(!S.can_start(user, M)) - continue - for(var/path in S.species) - if(istype(M, path)) - available_surgeries[S.name] = S - break + for(var/datum/surgery/S in M.surgeries) + if(S.location == selected_zone) + current_surgery = S - var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries - if(P && user && user.Adjacent(M) && (I in user)) - var/datum/surgery/S = available_surgeries[P] + if(!current_surgery) + var/list/all_surgeries = surgeries_list.Copy() + var/list/available_surgeries = list() - for(var/datum/surgery/other in M.surgeries) - if(other.location == S.location) - return //during the input() another surgery was started at the same location. + for(var/datum/surgery/S in all_surgeries) + if(!S.possible_locs.Find(selected_zone)) + continue + if(affecting) + if(!S.requires_bodypart) + continue + if(S.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) + continue + else if(H && S.requires_bodypart) //human with no limb in surgery zone when we need a limb + continue + if(!S.can_start(user, M)) + continue + for(var/path in S.species) + if(istype(M, path)) + available_surgeries[S.name] = S + break - var/datum/surgery/procedure = new S.type - if(procedure) - procedure.location = selected_zone + var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries + if(P && user && user.Adjacent(M) && (I in user)) + var/datum/surgery/S = available_surgeries[P] - //we check that the surgery is still doable after the input() wait. - if(H) - affecting = H.get_bodypart(check_zone(selected_zone)) - if(affecting) - if(!procedure.requires_bodypart) - return - if(procedure.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) - return - else if(H && procedure.requires_bodypart) - return - if(!procedure.can_start(user, M)) - return + for(var/datum/surgery/other in M.surgeries) + if(other.location == S.location) + return //during the input() another surgery was started at the same location. - if(procedure.ignore_clothes || get_location_accessible(M, selected_zone)) - M.surgeries += procedure - procedure.organ = affecting - user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ - "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") + //we check that the surgery is still doable after the input() wait. + if(H) + affecting = H.get_bodypart(check_zone(selected_zone)) + if(affecting) + if(!S.requires_bodypart) + return + if(S.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) + return + else if(H && S.requires_bodypart) + return + if(!S.can_start(user, M)) + return - add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") - else - user << "You need to expose [M]'s [parse_zone(selected_zone)] first!" + if(S.ignore_clothes || get_location_accessible(M, selected_zone)) + var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) + user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", \ + "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") - else if(!current_surgery.step_in_progress) - if(current_surgery.status == 1) - M.surgeries -= current_surgery - user.visible_message("[user] removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else if(istype(user.get_inactive_hand(), /obj/item/weapon/cautery) && current_surgery.can_cancel) - M.surgeries -= current_surgery - user.visible_message("[user] mends the incision and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ - "You mend the incision and remove the drapes from [M]'s [parse_zone(selected_zone)].") - qdel(current_surgery) - else if(current_surgery.can_cancel) - user << "You need to hold a cautery in inactive hand to stop [M]'s surgery!" + add_logs(user, M, "operated", addition="Operation type: [procedure.name], location: [selected_zone]") + else + user << "You need to expose [M]'s [parse_zone(selected_zone)] first!" + else if(!current_surgery.step_in_progress) + if(current_surgery.status == 1) + M.surgeries -= current_surgery + user.visible_message("[user] removes the drapes from [M]'s [parse_zone(selected_zone)].", \ + "You remove the drapes from [M]'s [parse_zone(selected_zone)].") + qdel(current_surgery) + else if(istype(user.get_inactive_hand(), /obj/item/weapon/cautery) && current_surgery.can_cancel) + M.surgeries -= current_surgery + user.visible_message("[user] mends the incision and removes the drapes from [M]'s [parse_zone(selected_zone)].", \ + "You mend the incision and remove the drapes from [M]'s [parse_zone(selected_zone)].") + qdel(current_surgery) + else if(current_surgery.can_cancel) + user << "You need to hold a cautery in inactive hand to stop [M]'s surgery!" - return 1 - return 0 + return 1 diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 8bb3cf641a5..6595ee3f8a0 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -1,16 +1,37 @@ /datum/surgery var/name = "surgery" var/status = 1 - var/list/steps = list() //Steps in a surgery - var/step_in_progress = 0 //Actively performing a Surgery - var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery - var/list/species = list(/mob/living/carbon/human) //Acceptable Species - var/location = "chest" //Surgery location - var/requires_organic_bodypart = 1 //Prevents you from performing an operation on robotic limbs - var/list/possible_locs = list() //Multiple locations -- c0 - var/ignore_clothes = 0 //This surgery ignores clothes - var/obj/item/organ/organ //Operable body part - var/requires_bodypart = TRUE //Surgery available only when a bodypart is present, or only when it is missing. + var/list/steps = list() //Steps in a surgery + var/step_in_progress = 0 //Actively performing a Surgery + var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery + var/list/species = list(/mob/living/carbon/human) //Acceptable Species + var/location = "chest" //Surgery location + var/requires_organic_bodypart = 1 //Prevents you from performing an operation on robotic limbs + var/list/possible_locs = list() //Multiple locations + var/ignore_clothes = 0 //This surgery ignores clothes + var/mob/living/carbon/target //Operation target mob + var/obj/item/organ/organ //Operable body part + var/requires_bodypart = TRUE //Surgery available only when a bodypart is present, or only when it is missing. + var/success_multiplier = 0 //Step success propability multiplier + + +/datum/surgery/New(surgery_target, surgery_location, surgery_organ) + ..() + if(surgery_target) + target = surgery_target + target.surgeries += src + if(surgery_location) + location = surgery_location + if(surgery_organ) + organ = surgery_organ + +/datum/surgery/Destroy() + if(target) + target.surgeries -= src + target = null + organ = null + return ..() + /datum/surgery/proc/can_start(mob/user, mob/living/carbon/target) // if 0 surgery wont show up in list @@ -18,9 +39,9 @@ return 1 -/datum/surgery/proc/next_step(mob/user, mob/living/carbon/target) +/datum/surgery/proc/next_step(mob/user) if(step_in_progress) - return + return 1 var/datum/surgery_step/S = get_surgery_step() if(S) @@ -32,10 +53,23 @@ var/step_type = steps[status] return new step_type +/datum/surgery/proc/complete() + qdel(src) + + +/datum/surgery/proc/get_propability_multiplier() + var/propability = 0.5 + var/turf/T = get_turf(target) + + if(locate(/obj/structure/table/optable, T)) + propability = 1 + else if(locate(/obj/structure/table, T)) + propability = 0.8 + else if(locate(/obj/structure/bed, T)) + propability = 0.7 + + return propability + success_multiplier -/datum/surgery/proc/complete(mob/living/carbon/human/target) - target.surgeries -= src - src = null @@ -45,7 +79,6 @@ //Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon) // var/list/bodyparts (/mob/living/carbon/human) is the LIMBS of a Mob. //Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets. -// /code/modules/surgery/multiple_location_example.dm contains steps to setup a multiple location operation. //TODO @@ -60,4 +93,4 @@ //RESOLVED ISSUES //"Todo" jobs that have been completed //combine hands/feet into the arms - Hands/feet were removed - RR -//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see multiple_location_example.dm - RR \ No newline at end of file +//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see possible_locs var - c0 \ No newline at end of file diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 0b9c9980668..dae2c7092e2 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -1,10 +1,10 @@ /datum/surgery_step + var/name var/list/implements = list() //format is path = probability of success. alternatively var/implement_type = null //the current type of implement used. This has to be stored, as the actual typepath of the tool may not match the list type. var/accept_hand = 0 //does the surgery step require an open hand? If true, ignores implements. Compatible with accept_any_item. var/accept_any_item = 0 //does the surgery step accept any item? If true, ignores implements. Compatible with require_hand. var/time = 10 //how long does the step take? - var/name /datum/surgery_step/proc/try_op(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -48,7 +48,7 @@ if(implement_type) //this means it isn't a require hand or any item step. prob_chance = implements[implement_type] - prob_chance *= get_location_modifier(target) + prob_chance *= surgery.get_propability_multiplier() if(prob(prob_chance) || isrobot(user)) if(success(user, target, target_zone, tool, surgery)) @@ -60,7 +60,7 @@ if(advance) surgery.status++ if(surgery.status > surgery.steps.len) - surgery.complete(target) + surgery.complete() surgery.step_in_progress = 0 diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index c673435c85410c20b025ea968ac42f7534f51db8..17c68ddb123f139ebc688e16b7ac3e7f2d3a849c 100644 GIT binary patch delta 18621 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 i`#&;NF$}B(j5{?cQ?`{C2**J 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