From 5f0c39f1cf65fa18551be1f32585ff6204ec4bfb Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 6 Jan 2013 11:25:53 +0400 Subject: [PATCH] Added implant removal surgery. If you fail the step, has small chance of activating implant. Gives you a sound and ~15 ticks to run away like hell. Changes I did to other parts to make this possible: -Implants are now organ-based, not mob-based -Part of implant working code is moved to appropriate activate() procs --- code/WorkInProgress/surgery.dm | 75 ++++++++++++++++++ code/datums/organs/organ_external.dm | 1 + code/game/objects/items.dm | 27 +++---- .../objects/items/weapons/implants/implant.dm | 61 +++++++++----- .../items/weapons/implants/implanter.dm | 9 +++ icons/obj/device.dmi | Bin 16615 -> 16734 bytes 6 files changed, 138 insertions(+), 35 deletions(-) diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index 404afdbb859..f07cf4b1f05 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -39,6 +39,16 @@ // evil infection stuff that will make everyone hate me var/can_infect = 0 + proc/isright(obj/item/tool) //is it is a required surgical tool for this step + return (istype(tool,required_tool)) + + proc/isacceptable(obj/item/tool) //is it is an accepted replacement tool for this step + if (allowed_tools) + for (var/T in allowed_tools) + if (istype(tool,T)) + return 1 + return 0 + // Build this list by iterating over all typesof(/datum/surgery_step) and sorting the results by priority @@ -1226,3 +1236,68 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) user:bloody_hands(target, 0) user:bloody_body(target) +////////////////////////////////////////////////////////////////// +// IMPLANT REMOVAL SURGERY // +////////////////////////////////////////////////////////////////// + +/datum/surgery_step/implant_removal + required_tool = /obj/item/weapon/hemostat + allowed_tools = list(/obj/item/weapon/wirecutters, /obj/item/weapon/kitchen/utensil/fork) + + min_duration = 80 + max_duration = 100 + + can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 2 && !(affected.status & ORGAN_BLEEDING) + + begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/affected = target.get_organ(target_zone) + user.visible_message("[user] starts poking around inside the incision on [target]'s [affected.display_name] with \the [tool].", \ + "You start poking around inside the incision on [target]'s [affected.display_name] with \the [tool]" ) + target.custom_pain("The pain in your chest is living hell!",1) + + end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/chest/affected = target.get_organ("chest") + + var/find_prob = 0 + if (affected.implants.len) + var/obj/item/weapon/implant/imp = affected.implants[1] + if (imp.islegal()) + find_prob +=60 + else + find_prob +=40 + if (isright(tool)) + find_prob +=20 + + if (prob(find_prob)) + user.visible_message("\blue [user] takes something out of incision on [target]'s [affected.display_name] with \the [tool].", \ + "\blue You take something out of incision on [target]'s [affected.display_name]s with \the [tool]." ) + var/obj/item/weapon/implant/imp = affected.implants[1] + affected.implants -= imp + imp.loc = get_turf(target) + imp.imp_in = null + imp.implanted = 0 + else + user.visible_message("\blue [user] could not find anything inside [target]'s [affected.display_name], and pulls \the [tool] out.", \ + "\blue You could not find anything inside [target]'s [affected.display_name]." ) + if (ishuman(user) && prob(80)) user:bloody_hands(target, 0) + + fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + var/datum/organ/external/chest/affected = target.get_organ(target_zone) + user.visible_message("\red [user]'s hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!", \ + "\red Your hand slips, scraping tissue inside [target]'s [affected.display_name] with \the [tool]!") + affected.createwound(CUT, 20) + if (affected.implants.len) + var/fail_prob = 10 + if (!isright(tool)) + fail_prob += 30 + if (prob(fail_prob)) + var/obj/item/weapon/implant/imp = affected.implants[1] + user.visible_message("\red Something beeps inside [target]'s [affected.display_name]!") + playsound(imp.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) + spawn(15) + imp.activate() + if (ishuman(user)) + user:bloody_hands(target, 0) + user:bloody_body(target) \ No newline at end of file diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index 06f46ed1927..167cbe6f0b1 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -34,6 +34,7 @@ var/open = 0 var/stage = 0 + var/list/implants = list() // INTERNAL germs inside the organ, this is BAD if it's greater 0 var/germ_level = 0 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index b6c7cf8da8f..b2c9caaa15c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -186,26 +186,21 @@ if (!istype(M)) // not sure if this is the right thing... return + if (can_operate(M)) //Checks if mob is lying down on table for surgery if(istype(M,/mob/living/carbon)) - if (user.a_intent != "harm") + if (user.a_intent != "harm") //check for Hippocratic Oath if(surgery_steps.len == 0) build_surgery_steps_list() for(var/datum/surgery_step/S in surgery_steps) - //check if tool is right or close enough - var/right = istype(src, S.required_tool) - if (!right && S.allowed_tools) - for (var/T in S.allowed_tools) - if (istype(src, T)) - right = 1 - if(right && S.can_use(user, M, user.zone_sel.selecting, src)) //is this step possible? - S.begin_step(user, M, user.zone_sel.selecting, src) - if(do_mob(user, M, rand(S.min_duration, S.max_duration))) - S.end_step(user, M, user.zone_sel.selecting, src) - else - S.fail_step(user, M, user.zone_sel.selecting, src) - return //don't want to do weapony things after surgery - if (is_surgery_tool(src)) - return + if( S.isright(src) || S.isacceptable(src) ) //check if tool is right or close enough + if(S.can_use(user, M, user.zone_sel.selecting, src)) //and if this step is possible + S.begin_step(user, M, user.zone_sel.selecting, src) //start on it + if(do_mob(user, M, rand(S.min_duration, S.max_duration))) //if user did nto move or changed hands + S.end_step(user, M, user.zone_sel.selecting, src) //finish successfully + else //or + S.fail_step(user, M, user.zone_sel.selecting, src) //malpractice~ + return //don't want to do weapony things after surgery + var/messagesource = M diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 0ef3fa6bf1d..9f31412710b 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -1,7 +1,10 @@ /obj/item/weapon/implant name = "implant" + icon = 'device.dmi' + icon_state = "implant" var/implanted = null var/mob/imp_in = null + var/datum/organ/external/part = null color = "b" var/allow_reagents = 0 @@ -23,8 +26,8 @@ proc/hear(message, source as mob) return - - + proc/islegal() + return 0 /obj/item/weapon/implant/tracking name = "tracking" @@ -82,6 +85,8 @@ Implant Specifics:
"} if(src.imp_in) src.imp_in.gib() + islegal() + return 0 //BS12 Explosive /obj/item/weapon/implant/explosive name = "explosive implant" @@ -110,15 +115,18 @@ Implant Specifics:
"} var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") msg = sanitize_simple(msg, replacechars) if(findtext(msg,phrase)) - if(istype(imp_in, /mob/)) - var/mob/T = imp_in - T.gib() - explosion(get_turf(imp_in), 1, 3, 4, 6, 3) - var/turf/t = get_turf(imp_in) - if(t) - t.hotspot_expose(3500,125) + activate() del(src) + activate() + if(istype(imp_in, /mob/)) + var/mob/T = imp_in + T.gib() + explosion(get_turf(imp_in), 1, 3, 4, 6, 3) + var/turf/t = get_turf(imp_in) + if(t) + t.hotspot_expose(3500,125) + implanted(mob/source as mob) phrase = input("Choose activation phrase:") as text var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") @@ -127,6 +135,8 @@ Implant Specifics:
"} usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate." return 1 + islegal() + return 0 /obj/item/weapon/implant/chem name = "chem" @@ -266,14 +276,16 @@ the implant may become unstable and either pre-maturely inject the subject or si process() if (!implanted) return var/mob/M = imp_in - var/area/t = get_area(M) if(isnull(M)) // If the mob got gibbed - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) - a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") - del(a) - processing_objects.Remove(src) + activate() else if(M.stat == 2) + activate("death") + + activate(var/cause) + var/mob/M = imp_in + var/area/t = get_area(M) + if(cause == "death") var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) ) //give the syndies a bit of stealth @@ -282,7 +294,11 @@ the implant may become unstable and either pre-maturely inject the subject or si a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm") del(a) processing_objects.Remove(src) - + else + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) + a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") + del(a) + processing_objects.Remove(src) implanted(mob/source as mob) mobname = source.real_name @@ -314,13 +330,20 @@ the implant may become unstable and either pre-maturely inject the subject or si if (emote == src.activation_emote) source << "The air glows as \the [src.scanned.name] uncompresses." - var/turf/t = get_turf(source) - src.scanned.loc = t - del src + activate() + + activate() + var/turf/t = get_turf(src) + src.scanned.loc = t + if (part) part.implants -= src + del src implanted(mob/source as mob) src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") - source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) + if (source.mind) + source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." return 1 + islegal() + return 0 diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 9cf12fe2478..ae21beff2d4 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -40,6 +40,11 @@ src.imp.loc = M src.imp.imp_in = M src.imp.implanted = 1 + if (ishuman(M)) + var/mob/living/carbon/human/H = M + var/datum/organ/external/affected = H.get_organ(user.zone_sel.selecting) + affected.implants += src.imp + imp.part = affected src.imp = null update() @@ -107,6 +112,10 @@ /obj/item/weapon/implanter/compressed/afterattack(atom/A, mob/user as mob) if(istype(A,/obj/item) && imp) + var/obj/item/weapon/implant/compressed/c = imp + if (c.scanned) + user << "\red Something is already scanned inside the implant!" + return imp:scanned = A A.loc.contents.Remove(A) update() diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index e57a75e0525d6fab528c91ab746f9ba2affc1da8..4831ad2ebf751e00e1e5adaf9ed23ba1c5083843 100644 GIT binary patch literal 16734 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 LQ7KWjc=q1_bQ>4Y literal 16615 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