diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm index 07b975f1338..b934ba5fa2a 100644 --- a/code/game/objects/items/devices/sensor_device.dm +++ b/code/game/objects/items/devices/sensor_device.dm @@ -6,6 +6,7 @@ w_class = WEIGHT_CLASS_SMALL slot_flags = ITEM_SLOT_BELT custom_price = 1750 + custom_premium_price = 1750 /obj/item/sensor_device/attack_self(mob/user) GLOB.crewmonitor.show(user,src) //Proc already exists, just had to call it diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index aa91c2870c8..90ed5a05cf1 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -17,7 +17,6 @@ var/active = FALSE var/atom/movable/target //The thing we're searching for var/minimum_range = 0 //at what range the pinpointer declares you to be at your destination - var/ignore_suit_sensor_level = FALSE // Do we find people even if their suit sensors are turned off var/alert = FALSE // TRUE to display things more seriously var/process_scan = TRUE // some pinpointers change target every time they scan, which means we can't have it change very process but instead when it turns on. var/icon_suffix = "" // for special pinpointer icons @@ -70,6 +69,10 @@ if(here.z != there.z) . += "pinon[alert ? "alert" : ""]null[icon_suffix]" return + update_direction_icon(here, there) + +///Called by update_icon after sanity. There is a target +/obj/item/pinpointer/proc/update_direction_icon(here, there) if(get_dist_euclidian(here,there) <= minimum_range) . += "pinon[alert ? "alert" : ""]direct[icon_suffix]" else @@ -86,9 +89,11 @@ name = "crew pinpointer" desc = "A handheld tracking device that points to crew suit sensors." icon_state = "pinpointer_crew" - custom_price = 1000 + custom_price = 900 + custom_premium_price = 900 var/has_owner = FALSE var/pinpointer_owner = null + var/ignore_suit_sensor_level = FALSE /// Do we find people even if their suit sensors are turned off /obj/item/pinpointer/crew/proc/trackable(mob/living/carbon/human/H) var/turf/here = get_turf(src) @@ -158,6 +163,26 @@ if(!target) //target can be set to null from above code, or elsewhere active = FALSE +/obj/item/pinpointer/crew/prox //Weaker version of crew monitor primarily for EMT + name = "proximity crew pinpointer" + desc = "A handheld tracking device that displays its proximity to crew suit sensors." + icon_state = "pinpointer_crewprox" + custom_price = 300 + +/obj/item/pinpointer/crew/prox/update_direction_icon(here, there) + var/size = "" + if(here == there) + size = "small" + else + switch(get_dist(here, there)) + if(1 to 4) + size = "xtrlarge" + if(5 to 16) + size = "large" + //17 through 28 use the normal pinion, "pinondirect" + if(29 to INFINITY) + size = "small" + add_overlay("pinondirect[size]") /obj/item/pinpointer/pair name = "pair pinpointer" diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 5c7bf68d470..61fbfacee25 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -31,7 +31,7 @@ belt = /obj/item/storage/belt/medical/paramedic id = /obj/item/card/id l_pocket = /obj/item/pda/medical - r_pocket = /obj/item/pinpointer/crew + r_pocket = /obj/item/pinpointer/crew/prox backpack_contents = list(/obj/item/roller=1) pda_slot = ITEM_SLOT_LPOCKET diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index ad41674f246..9ae12273d5d 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -136,11 +136,21 @@ desc = "Allows tracking of someone's location if their suit sensors are turned to tracking beacon." id = "crewpinpointer" build_type = PROTOLATHE - materials = list(/datum/material/iron = 3000, /datum/material/glass = 1500, /datum/material/gold = 200) + materials = list(/datum/material/iron = 3000, /datum/material/glass = 1500, /datum/material/gold = 500) build_path = /obj/item/pinpointer/crew category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL +/datum/design/crewpinpointerprox + name = "Proximity Crew Pinpointer" + desc = "Displays your approximate proximity to someone if their suit sensors are turned to tracking beacon." + id = "crewpinpointerprox" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 1200, /datum/material/glass = 300, /datum/material/gold = 200) + build_path = /obj/item/pinpointer/crew/prox + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + /datum/design/defibrillator name = "Defibrillator" desc = "A portable defibrillator, used for resuscitating recently deceased crew." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index e0491e6fad5..f405758c64e 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -56,7 +56,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("chem_heater", "chem_master", "chem_dispenser", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel","genescanner", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk") + design_ids = list("chem_heater", "chem_master", "chem_dispenser", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel","genescanner", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/vending/medical.dm b/code/modules/vending/medical.dm index cfadc833106..4b76ce03d1b 100644 --- a/code/modules/vending/medical.dm +++ b/code/modules/vending/medical.dm @@ -24,19 +24,19 @@ /obj/item/reagent_containers/syringe/antiviral = 6, /obj/item/reagent_containers/medigel/libital = 2, /obj/item/reagent_containers/medigel/aiuri = 2, - /obj/item/reagent_containers/medigel/sterilizine = 1, - /obj/item/sensor_device = 2, - /obj/item/pinpointer/crew = 2) + /obj/item/reagent_containers/medigel/sterilizine = 1) contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/multiver = 6, /obj/item/storage/box/hug/medical = 1) premium = list(/obj/item/reagent_containers/medigel/instabitaluri = 2, - /obj/item/storage/pill_bottle/psicodine = 2, - /obj/item/reagent_containers/hypospray/medipen = 3, - /obj/item/storage/belt/medical = 3, - /obj/item/storage/firstaid/advanced = 2, - /obj/item/shears = 1) + /obj/item/storage/pill_bottle/psicodine = 2, + /obj/item/reagent_containers/hypospray/medipen = 3, + /obj/item/storage/belt/medical = 3, + /obj/item/sensor_device = 2, + /obj/item/pinpointer/crew = 2, + /obj/item/storage/firstaid/advanced = 2, + /obj/item/shears = 1) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/medical diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 8ad974fbffb..de5721723dc 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ