From 3250621552627f8c133ae487f34c942768a90561 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 6 Sep 2015 02:19:44 -0400 Subject: [PATCH] Health Assembly --- code/game/machinery/vending.dm | 3 +- code/modules/assembly/health.dm | 104 ++++++++++++++++++ code/modules/mob/living/carbon/human/human.dm | 30 ++--- .../research/designs/autolathe_designs.dm | 8 ++ icons/obj/assemblies/new_assemblies.dmi | Bin 11088 -> 11591 bytes paradise.dme | 1 + 6 files changed, 131 insertions(+), 15 deletions(-) create mode 100644 code/modules/assembly/health.dm diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 4cfdc0a6c29..1b3f89af28a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -729,7 +729,7 @@ /obj/machinery/vending/assist products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4, /obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4) - contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2) + contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2) product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!" /obj/machinery/vending/boozeomat/New() @@ -887,6 +887,7 @@ products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6, /obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6, /obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6) + contraband = list(/obj/item/device/assembly/health = 3) /obj/machinery/vending/wallmed1 name = "NanoMed" diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm new file mode 100644 index 00000000000..f1a3f402336 --- /dev/null +++ b/code/modules/assembly/health.dm @@ -0,0 +1,104 @@ +/obj/item/device/assembly/health + name = "health sensor" + desc = "Used for scanning and monitoring health." + icon_state = "health" + materials = list(MAT_METAL=800, MAT_GLASS=200) + origin_tech = "magnets=1;biotech=1" + secured = 0 + + var/scanning = 0 + var/health_scan + var/alarm_health = 0 + + + +/obj/item/device/assembly/health/activate() + if(!..()) return 0//Cooldown check + toggle_scan() + return 0 + +/obj/item/device/assembly/health/toggle_secure() + secured = !secured + if(secured && scanning) + processing_objects.Add(src) + else + scanning = 0 + processing_objects.Remove(src) + update_icon() + return secured + +/obj/item/device/assembly/health/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/device/multitool)) + if(alarm_health == 0) + alarm_health = -90 + user.show_message("You toggle [src] to \"detect death\" mode.") + else + alarm_health = 0 + user.show_message("You toggle [src] to \"detect critical state\" mode.") + return + else + return ..() + +/obj/item/device/assembly/health/process() + if(!scanning || !secured) + return + + var/atom/A = src + if(connected && connected.holder) + A = connected.holder + + for(A, A && !ismob(A), A=A.loc); + // like get_turf(), but for mobs. + var/mob/living/M = A + + if(M) + health_scan = M.health + if(health_scan <= alarm_health) + pulse() + audible_message("\icon[src] *beep* *beep*", "*beep* *beep*") + toggle_scan() + return + return + +/obj/item/device/assembly/health/proc/toggle_scan() + if(!secured) return 0 + scanning = !scanning + if(scanning) + processing_objects.Add(src) + else + processing_objects.Remove(src) + return + +/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy + if(!secured) + user.show_message("The [name] is unsecured!") + return 0 + var/dat = text("Health Sensor [scanning?"On":"Off"]") + if(scanning && health_scan) + dat += "
Health: [health_scan]" + user << browse(dat, "window=hscan") + onclose(user, "hscan") + return + + +/obj/item/device/assembly/health/Topic(href, href_list) + ..() + if(!ismob(usr)) + return + + var/mob/user = usr + + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + usr << browse(null, "window=hscan") + onclose(usr, "hscan") + return + + if(href_list["scanning"]) + toggle_scan() + + if(href_list["close"]) + usr << browse(null, "window=hscan") + return + + attack_self(user) + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a63f487aec7..b5e637fa546 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -244,6 +244,8 @@ stat(null, eta_status) if (client.statpanel == "Status") + if(locate(/obj/item/device/assembly/health) in src) + stat(null, "Health: [health]") if (internal) if (!internal.air_contents) qdel(internal) @@ -431,7 +433,7 @@ var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) -/mob/living/carbon/human/proc/is_loyalty_implanted() +/mob/living/carbon/human/proc/is_loyalty_implanted() for(var/L in contents) if(istype(L, /obj/item/weapon/implant/loyalty)) for(var/obj/item/organ/external/O in organs) @@ -694,7 +696,7 @@ // if looting pockets with gloves, do it quietly if(href_list["pockets"]) - if(isanimal(usr)) + if(isanimal(usr)) return //animals cannot strip people if(frozen) @@ -726,19 +728,19 @@ // Update strip window if(usr.machine == src && in_range(src, usr)) show_inv(usr) - + else if(!pickpocket) // Display a warning if the user mocks up src << "You feel your [pocket_side] pocket being fumbled with!" // if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White if(href_list["item"]) - if(isanimal(usr)) + if(isanimal(usr)) return //animals cannot strip people - + if(frozen) usr << "\red Do not attempt to strip frozen people." - return + return var/itemTarget = href_list["item"] if(itemTarget == "id") if(pickpocket) @@ -1158,7 +1160,7 @@ if(!fail_msg) fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into." user << "[fail_msg]" - + /mob/living/carbon/human/proc/check_has_mouth() // Todo, check stomach organ when implemented. var/obj/item/organ/external/head/H = get_organ("head") @@ -1170,7 +1172,7 @@ if(stat==DEAD)return if(!check_has_mouth()) - return + return if(!lastpuke) lastpuke = 1 @@ -1517,16 +1519,16 @@ W.add_fingerprint(src) -// Allows IPC's to change their monitor display +// Allows IPC's to change their monitor display /mob/living/carbon/human/proc/change_monitor() - set category = "IC" + set category = "IC" set name = "Change Monitor Display" set desc = "Change the display on your monitor." - + if(stat || paralysis || stunned || weakened) src << "You cannot change your monitor display in your current state." - return - + return + var/list/hair = list() for(var/i in hair_styles_list) var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i] @@ -1540,7 +1542,7 @@ h_style = new_style update_hair() - + //Putting a couple of procs here that I don't know where else to dump. //Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse). /mob/living/carbon/human/proc/leap() diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 247bfdf25d8..5b324c2736a 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -162,6 +162,14 @@ build_path = /obj/item/device/assembly/infra category = list("initial", "Miscellaneous") +/datum/design/health_sensor + name = "Health sensor" + id = "health_sensor" + build_type = AUTOLATHE + materials = list(MAT_METAL = 800, MAT_GLASS = 200) + build_path = /obj/item/device/assembly/health + category = list("initial", "Medical") + /datum/design/kitchen_knife name = "Kitchen knife" id = "kitchen_knife" diff --git a/icons/obj/assemblies/new_assemblies.dmi b/icons/obj/assemblies/new_assemblies.dmi index 0f9dc4608250148b2c0809fb17bc14789cb0f7c2..b50ef0e13e393b83900afb893b12b07d6ecbc205 100644 GIT binary patch literal 11591 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 diff --git a/paradise.dme b/paradise.dme index b8184ad6713..238cea3415c 100644 --- a/paradise.dme +++ b/paradise.dme @@ -959,6 +959,7 @@ #include "code\modules\alarm\power_alarm.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" +#include "code\modules\assembly\health.dm" #include "code\modules\assembly\helpers.dm" #include "code\modules\assembly\holder.dm" #include "code\modules\assembly\igniter.dm"