From 6eb2a73c9d6c26439b7aa886d6252c7cd0e3062d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 22 Mar 2016 19:15:49 -0400 Subject: [PATCH 1/3] Ports Dental Implants --- code/modules/surgery/dental_implant.dm | 52 ++++++++++++++++++++++++++ code/modules/surgery/generic.dm | 14 +++++++ paradise.dme | 1 + 3 files changed, 67 insertions(+) create mode 100644 code/modules/surgery/dental_implant.dm diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm new file mode 100644 index 00000000000..63425cb6986 --- /dev/null +++ b/code/modules/surgery/dental_implant.dm @@ -0,0 +1,52 @@ +/datum/surgery/dental_implant + name = "dental implant" + steps = list(/datum/surgery_step/generic/drill, /datum/surgery_step/insert_pill) + possible_locs = list("mouth") + +/datum/surgery/dental_implant/can_start(mob/user, mob/living/carbon/target) + if(istype(target,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = target + if(!H.check_has_mouth()) + return 0 + return 1 + +/datum/surgery_step/insert_pill + name = "insert pill" + allowed_tools = list(/obj/item/weapon/reagent_containers/food/pill = 100) + time = 16 + +/datum/surgery_step/insert_pill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to wedge \the [tool] in [target]'s [parse_zone(target_zone)].", "You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]...") + ..() + +/datum/surgery_step/insert_pill/end_step(mob/living/user, mob/living/carbon/target, target_zone, var/obj/item/weapon/reagent_containers/food/pill/tool, datum/surgery/surgery) + if(!istype(tool)) + return 0 + + user.drop_item() + target.internal_organs += tool + tool.forceMove(target) + + var/datum/action/item_action/hands_free/activate_pill/P = new + P.button_icon_state = tool.icon_state + P.target = tool + P.name = "Activate Pill ([tool.name])" + P.Grant(target) + + user.visible_message("[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!", "You wedge [tool] into [target]'s [parse_zone(target_zone)].") + return 1 + +/datum/action/item_action/hands_free/activate_pill + name = "Activate Pill" + +/datum/action/item_action/hands_free/activate_pill/Trigger() + if(!Checks()) + return + owner << "You grit your teeth and burst the implanted [target]!" + add_logs(owner, null, "swallowed an implanted pill", target) + if(target.reagents.total_volume) + target.reagents.reaction(owner, INGEST) + target.reagents.trans_to(owner, target.reagents.total_volume) + Remove(owner) + qdel(target) + return 1 \ No newline at end of file diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index eaacc784c6f..316a2f860b2 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -211,6 +211,20 @@ target.apply_damage(3, BURN, affected) return 0 +//drill bone +/datum/surgery_step/generic/drill + name = "drill bone" + allowed_tools = list(/obj/item/weapon/surgicaldrill = 100, /obj/item/weapon/pickaxe/drill = 60, /obj/item/weapon/screwdriver = 20) + time = 30 + +/datum/surgery_step/generic/drill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].", "You begin to drill into the bone in [target]'s [parse_zone(target_zone)]...") + ..() + +/datum/surgery_step/generic/drill/end_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] drills into [target]'s [parse_zone(target_zone)]!", "You drill into [target]'s [parse_zone(target_zone)].") + return 1 + /datum/surgery_step/generic/amputate name = "amputate limb" diff --git a/paradise.dme b/paradise.dme index df54965eea9..8138de2811b 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1862,6 +1862,7 @@ #include "code\modules\store\items.dm" #include "code\modules\store\store.dm" #include "code\modules\surgery\bones.dm" +#include "code\modules\surgery\dental_implant.dm" #include "code\modules\surgery\encased.dm" #include "code\modules\surgery\face.dm" #include "code\modules\surgery\generic.dm" From f7ad204ff0ace8a018c5541722c774906244213d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 24 Mar 2016 00:26:57 -0400 Subject: [PATCH 2/3] mech drills --- code/modules/surgery/generic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 316a2f860b2..842eaf84af5 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -214,7 +214,7 @@ //drill bone /datum/surgery_step/generic/drill name = "drill bone" - allowed_tools = list(/obj/item/weapon/surgicaldrill = 100, /obj/item/weapon/pickaxe/drill = 60, /obj/item/weapon/screwdriver = 20) + allowed_tools = list(/obj/item/weapon/surgicaldrill = 100, /obj/item/weapon/pickaxe/drill = 60, /obj/item/mecha_parts/mecha_equipment/tool/drill = 60, /obj/item/weapon/screwdriver = 20) time = 30 /datum/surgery_step/generic/drill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) From 900211db2f63e3e7a13365ae67eb12946e397099 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 26 Mar 2016 01:03:24 -0400 Subject: [PATCH 3/3] pill limit --- code/modules/surgery/dental_implant.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 63425cb6986..5fbe6a5486c 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -23,6 +23,13 @@ if(!istype(tool)) return 0 + var/dental_implants = 0 + for(var/obj/item/weapon/reagent_containers/food/pill in target.internal_organs) // Can't give them more than 4 dental implants. + dental_implants++ + if(dental_implants >= 4) + user.visible_message("[user] pulls \the [tool] back out of [target]'s [parse_zone(target_zone)]!", "You pull \the [tool] back out of [target]'s [parse_zone(target_zone)], there wans't enough room...") + return 0 + user.drop_item() target.internal_organs += tool tool.forceMove(target)