From cc7fa8ed4b69fa2a968444fd5210d47799ced252 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Sun, 29 Mar 2015 20:33:45 +0100 Subject: [PATCH] Added two more implants. "Close" surgery now heals damage. --- .../research/designs/medical_designs.dm | 51 ++++++--- code/modules/surgery/cybernetic_implants.dm | 50 ++++++--- .../surgery/organs/cybernetic_implants.dm | 98 +++++++++++++++++- code/modules/surgery/surgery_step.dm | 21 ++++ icons/obj/surgery.dmi | Bin 12582 -> 12726 bytes 5 files changed, 193 insertions(+), 27 deletions(-) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 2c7ae702d64..dbe03173e4e 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -102,7 +102,7 @@ datum/design/bluespacebodybag name = "Medical HUD implant" desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." id = "ci-medhud" - req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4) + req_tech = list("materials" = 6, "programming" = 4, "biotech" = 4) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 200, "$glass" = 200, "$silver" = 200, "$gold" = 100) build_path = /obj/item/cybernetic_implant/eyes/hud/medical @@ -112,7 +112,7 @@ datum/design/bluespacebodybag name = "Security HUD implant" desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control." id = "ci-sechud" - req_tech = list("materials" = 5, "programming" = 5, "biotech" = 5, "combat" = 2) + req_tech = list("materials" = 6, "programming" = 5, "biotech" = 4, "combat" = 2) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 200, "$glass" = 200, "$silver" = 300, "$gold" = 300) build_path = /obj/item/cybernetic_implant/eyes/hud/security @@ -122,38 +122,65 @@ datum/design/bluespacebodybag name = "X-Ray implant" desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." id = "ci-xray" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5, "magnets" = 5, "plasmatech" = 3) + req_tech = list("materials" = 7, "programming" = 5, "biotech" = 6, "magnets" = 5, "plasmatech" = 3) build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 200, "$glass" = 200, "$silver" = 200, "$gold" = 200, "$plasma" = 200, "$diamond" = 500) + materials = list("$metal" = 200, "$glass" = 200, "$silver" = 200, "$gold" = 200, "$plasma" = 200, "$uranium" = 500, "$diamond" = 1000) build_path = /obj/item/cybernetic_implant/eyes/xray category = list("Medical Designs") -/datum/design/cyberimb_thermals +/datum/design/cyberimp_thermals name = "Thermals implant" desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included." id = "ci-thermals" - req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5, "magnets" = 5, "plasmatech" = 3) + req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5, "magnets" = 5, "plasmatech" = 3, "syndicate" = 4) build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 200, "$glass" = 200, "$silver" = 200, "$gold" = 200, "$plasma" = 200, "$diamond" = 500) + materials = list("$metal" = 200, "$glass" = 200, "$silver" = 200, "$gold" = 200, "$plasma" = 200, "$diamond" = 1000) build_path = /obj/item/cybernetic_implant/eyes/thermals category = list("Medical Designs") -/datum/design/cyberimb_antidrop +/datum/design/cyberimp_antidrop name = "Anti-Drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." id = "ci-antidrop" - req_tech = list("materials" = 6, "programming" = 5, "biotech" = 5) + req_tech = list("materials" = 7, "programming" = 5, "biotech" = 5) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 200, "$glass" = 200, "$silver" = 400, "$gold" = 400) build_path = /obj/item/cybernetic_implant/brain/anti_drop category = list("Medical Designs") -/datum/design/cyberimb_antistun +/datum/design/cyberimp_antistun name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." id = "ci-antistun" - req_tech = list("materials" = 6, "programming" = 5, "biotech" = 5) + req_tech = list("materials" = 7, "programming" = 5, "biotech" = 6) build_type = PROTOLATHE | MECHFAB - materials = list("$metal" = 200, "$glass" = 200, "$silver" = 400, "$gold" = 600) + materials = list("$metal" = 200, "$glass" = 200, "$silver" = 500, "$gold" = 1000) build_path = /obj/item/cybernetic_implant/brain/anti_stun + category = list("Medical Designs") + +/datum/design/cyberimp_nutriment + name = "Nutriment pump implant" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." + id = "ci-nutriment" + req_tech = list("materials" = 6, "programming" = 4, "biotech" = 5) + build_type = PROTOLATHE | MECHFAB + materials = list("$metal" = 200, "$glass" = 200, "$gold" = 500, "$uranium" = 500) + category = list("Medical Designs") + +/datum/design/cyberimp_nutriment_plus + name = "Nutriment pump implant PLUS" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." + id = "ci-nutrimentplus" + req_tech = list("materials" = 6, "programming" = 4, "biotech" = 6) + build_type = PROTOLATHE | MECHFAB + materials = list("$metal" = 200, "$glass" = 200, "$gold" = 500, "$uranium" = 750) + category = list("Medical Designs") + +/datum/design/cyberimp_reviver + name = "Reviver implant" + desc = "This implant will automatically deliver a therapeutic dose of electrical energy to your heart if it ever stops beating, and inject you with nanites. A second chance!" + id = "ci-reviver" + req_tech = list("materials" = 6, "programming" = 4, "biotech" = 6) + build_type = PROTOLATHE | MECHFAB + materials = list("$metal" = 200, "$glass" = 200, "$gold" = 1000, "$uranium" = 500, "$diamond" = 2000) category = list("Medical Designs") \ No newline at end of file diff --git a/code/modules/surgery/cybernetic_implants.dm b/code/modules/surgery/cybernetic_implants.dm index 6d289144127..3fd16cb8b62 100644 --- a/code/modules/surgery/cybernetic_implants.dm +++ b/code/modules/surgery/cybernetic_implants.dm @@ -1,35 +1,37 @@ #define MAX_BRAIN_IMPLANT 2 +#define MAX_CHEST_IMPLANT 3 +/datum/surgery_step/cybernetic_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/implant, datum/surgery/surgery) + user.visible_message("[user] begins to implant [target] with [implant].") + +//[[[[EYES]]]] /datum/surgery/eye_cybernetic_implant/eyes name = "eye cybernetic implant" steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/cybernetic_implant/eyes, /datum/surgery_step/fix_eyes, /datum/surgery_step/close) location = "eyes" -/datum/surgery/eye_cybernetic_implant/brain - name = "brain cybernetic implant" - steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/cybernetic_implant/brain, /datum/surgery_step/close) - location = "head" - /datum/surgery_step/cybernetic_implant/eyes implements = list(/obj/item/cybernetic_implant/eyes = 100) time = 32 -/datum/surgery_step/cybernetic_implant/brain - implements = list(/obj/item/cybernetic_implant/brain = 100) - time = 32 - -/datum/surgery_step/cybernetic_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/implant, datum/surgery/surgery) - user.visible_message("[user] begins to implant [target] with [implant].") - /datum/surgery_step/cybernetic_implant/eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/eyes/implant, datum/surgery/surgery) if(implant) var/full = 0 if(locate(/obj/item/cybernetic_implant/eyes,target.internal_organs)) full = 1 - insert(user,target,implant,target_zone,full) return 1 +//[[[[BRAIN]]]] +/datum/surgery/eye_cybernetic_implant/brain + name = "brain cybernetic implant" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/cybernetic_implant/brain, /datum/surgery_step/close) + location = "head" + +/datum/surgery_step/cybernetic_implant/brain + implements = list(/obj/item/cybernetic_implant/brain = 100) + time = 32 + /datum/surgery_step/cybernetic_implant/brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/brain/implant, datum/surgery/surgery) if(implant) var/full = 0 @@ -39,10 +41,30 @@ if(full < MAX_BRAIN_IMPLANT) full = 0 - insert(user,target,implant,target_zone,full) return 1 +//[[[[CHEST]]]] +/datum/surgery/eye_cybernetic_implant/chest + name = "torso cybernetic implant" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/cybernetic_implant/chest, /datum/surgery_step/close) + location = "chest" + +/datum/surgery_step/cybernetic_implant/chest + implements = list(/obj/item/cybernetic_implant/chest = 100) + time = 32 + +/datum/surgery_step/cybernetic_implant/chest/success(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/chest/implant, datum/surgery/surgery) + if(implant) + var/full = 0 + for(var/obj/item/I in target.contents) + if(istype(I,/obj/item/cybernetic_implant/chest)) + full++ + + if(full < MAX_CHEST_IMPLANT) + full = 0 + insert(user,target,implant,target_zone,full) + return 1 /datum/surgery_step/cybernetic_implant/proc/insert(mob/user, mob/living/carbon/target, obj/item/cybernetic_implant/implant,target_zone,full) if(full) diff --git a/code/modules/surgery/organs/cybernetic_implants.dm b/code/modules/surgery/organs/cybernetic_implants.dm index 5b5a928148b..0d48eb69cce 100644 --- a/code/modules/surgery/organs/cybernetic_implants.dm +++ b/code/modules/surgery/organs/cybernetic_implants.dm @@ -44,6 +44,7 @@ desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control." eye_color = "0ff" implant_color = "#00FFFF" + origin_tech = "materials=4;programming=3;biotech=4" /obj/item/cybernetic_implant/eyes/hud/medical/function() if(!owner) @@ -59,6 +60,7 @@ desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control." eye_color = "d00" implant_color = "#CC0000" + origin_tech = "materials=4;programming=4;biotech=3;combat=1" /obj/item/cybernetic_implant/eyes/hud/security/function() if(!owner) @@ -74,6 +76,7 @@ desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile." eye_color = "000" implant_color = "#000000" + origin_tech = "materials=6;programming=4;biotech=5;magnets=5;plasmatech=2" /obj/item/cybernetic_implant/eyes/xray/function() if(!owner) @@ -93,6 +96,7 @@ eye_color = "FC0" implant_color = "#FFCC00" flash_protect = -1 + origin_tech = "materials=6;programming=4;biotech=5;magnets=5;plasmatech=2;syndicate=4" /obj/item/cybernetic_implant/eyes/thermals/function() if(!owner) @@ -143,6 +147,7 @@ var/obj/item/l_hand_obj = null var/obj/item/r_hand_obj = null implant_color = "#DE7E00" + origin_tech = "materials=5;programming=4;biotech=4" /obj/item/cybernetic_implant/brain/anti_drop/function() action_button_name = "Toggle Anti-Drop" @@ -213,6 +218,7 @@ name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." implant_color = "#FFFF00" + origin_tech = "materials=6;programming=4;biotech=5" /obj/item/cybernetic_implant/brain/anti_stun/function() SSobj.processing |= src @@ -233,4 +239,94 @@ /obj/item/cybernetic_implant/brain/anti_stun/emp_act(severity) SSobj.processing.Remove(src) spawn(..() * 10) - SSobj.processing |= src \ No newline at end of file + SSobj.processing |= src + + +//[[[[CHEST]]]] + +/obj/item/cybernetic_implant/chest + name = "cybernetic torso implant" + desc = "implants for the organs in your torso" + icon_state = "chest_implant" + +/obj/item/cybernetic_implant/chest/nutriment + name = "Nutriment pump implant" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." + icon_state = "chest_implant" + var/hunger_threshold = NUTRITION_LEVEL_STARVING + var/synthesizing = 0 + var/nutriment_amount = 30 + var/poison_amount = 5 + origin_tech = "materials=5;programming=3;biotech=4" + +/obj/item/cybernetic_implant/chest/nutriment/function() + SSobj.processing |= src + +/obj/item/cybernetic_implant/chest/nutriment/process() + if(synthesizing) + return + if(!owner) + SSobj.processing.Remove(src) + qdel(src) + return + if(owner.stat == DEAD) + return + + if(owner.nutrition <= hunger_threshold) + synthesizing = 1 + spawn(50) + owner << "You feel less hungry..." + owner.nutrition += nutriment_amount + synthesizing = 0 + +/obj/item/cybernetic_implant/chest/nutriment/plus + name = "Nutriment pump implant PLUS" + desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." + icon_state = "chest_implant" + hunger_threshold = NUTRITION_LEVEL_HUNGRY + nutriment_amount = 50 + poison_amount = 10 + origin_tech = "materials=5;programming=3;biotech=5" + +/obj/item/cybernetic_implant/chest/nutriment/emp_act(severity) + owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning + owner << "You feel like your insides are burning." + +/obj/item/cybernetic_implant/chest/reviver + name = "Reviver implant" + desc = "This implant will automatically deliver a therapeutic dose of electrical energy to your heart if it ever stops beating, and inject you with nanites. A second chance!" + icon_state = "chest_implant" + var/defibrillating = 0 + var/recharge_time + +/obj/item/cybernetic_implant/chest/reviver/function() + recharge_time = world.time + 2000 + SSobj.processing |= src + +/obj/item/cybernetic_implant/chest/reviver/process() + if(defibrillating) + return + if(!owner) + SSobj.processing.Remove(src) + qdel(src) + return + if(world.time < recharge_time) + return + if(owner.stat != DEAD) + return + + defibrillating = 1 + spawn(600) + if(owner.stat == DEAD) + owner.visible_message("[owner]'s body convulses by itself.") + playsound(get_turf(src), "bodyfall", 50, 1) + playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) + owner.reagents.add_reagent("nanites",10) + owner.stat = UNCONSCIOUS + owner.heart_attack = 0 + dead_mob_list -= owner + living_mob_list |= list(owner) + owner.emote("gasp") + add_logs(owner, owner, "revived", object="defibrillator implant") + recharge_time = world.time + 20000 + defibrillating = 0 \ No newline at end of file diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index f4509701ac0..68d781e9065 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -86,6 +86,27 @@ user.visible_message("[user] screws up!") return 0 +/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) + var/limb_type + switch(target_zone) + if("head") + limb_type = /obj/item/organ/limb/head + if("chest") + limb_type = /obj/item/organ/limb/chest + if("l_arm") + limb_type = /obj/item/organ/limb/l_arm + if("r_arm") + limb_type = /obj/item/organ/limb/r_arm + if("l_leg") + limb_type = /obj/item/organ/limb/l_leg + if("r_leg") + limb_type = /obj/item/organ/limb/r_leg + else + return + var/obj/item/organ/limb/limb = target.getlimb(limb_type) + if(limb) + limb.heal_damage(35,0,0) /datum/surgery_step/proc/tool_check(mob/user, obj/item/tool) return 1 diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 93ebade829d8b8b54225500b975b4fa4965b54ef..c325add6f21caa8c8dc643ebb64a9732ea35287c 100644 GIT binary patch literal 12726 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 literal 12582 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