diff --git a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm index 0882c9ce99a..13f350f1da1 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm @@ -107,6 +107,10 @@ item_path = /obj/item/radio/weather_monitor cost_per_order = 320 +/datum/orderable_item/mining/ventpointer + item_path = /obj/item/pinpointer/vent + cost_per_order = 1150 + /datum/orderable_item/mining/boulder_processing item_path = /obj/item/boulder_beacon desc = "A Bouldertech brand all-in-one boulder processing beacon. Each use will teleport in a component of a full boulder processing assembly line. Good for when you need to process additional boulders." diff --git a/code/game/objects/structures/lavaland/ore_vent.dm b/code/game/objects/structures/lavaland/ore_vent.dm index 70ab15427b7..a6ab8a58d70 100644 --- a/code/game/objects/structures/lavaland/ore_vent.dm +++ b/code/game/objects/structures/lavaland/ore_vent.dm @@ -270,6 +270,7 @@ balloon_alert_to_viewers("vent tapped!") icon_state = icon_state_tapped update_appearance(UPDATE_ICON_STATE) + qdel(GetComponent(/datum/component/gps)) else visible_message(span_danger("\the [src] creaks and groans as the mining attempt fails, and the vent closes back up.")) icon_state = initial(icon_state) @@ -308,6 +309,7 @@ discovered = TRUE generate_description(user) balloon_alert_to_viewers("vent scanned!") + AddComponent(/datum/component/gps, name) return if(DOING_INTERACTION_WITH_TARGET(user, src)) @@ -321,6 +323,7 @@ discovered = TRUE balloon_alert(user, "vent scanned!") generate_description(user) + AddComponent(/datum/component/gps, name) var/obj/item/card/id/user_id_card = user.get_idcard(TRUE) if(isnull(user_id_card)) return diff --git a/code/modules/mining/equipment/vent_pointer.dm b/code/modules/mining/equipment/vent_pointer.dm new file mode 100644 index 00000000000..4edab185597 --- /dev/null +++ b/code/modules/mining/equipment/vent_pointer.dm @@ -0,0 +1,19 @@ +/obj/item/pinpointer/vent + name = "ventpointer" + desc = "A handheld tracking device. It will locate and point to nearby vents. A bit unreliable though." + icon_state = "pinpointer_vent" + minimum_range = 14 //gotta use them eyes + +/obj/item/pinpointer/vent/scan_for_target() + var/closest_dist = INFINITY + + for(var/obj/structure/ore_vent/vent in SSore_generation.possible_vents) + if(vent.discovered || vent.tapped) + continue + if(vent.z != loc.z) + continue + + var/target_dist = get_dist(src, vent) + if(target_dist < closest_dist) + closest_dist = target_dist + target = vent diff --git a/icons/effects/vent_overlays.dmi b/icons/effects/vent_overlays.dmi index 54ac3d7a819..375117f4c79 100644 Binary files a/icons/effects/vent_overlays.dmi and b/icons/effects/vent_overlays.dmi differ diff --git a/icons/obj/devices/tracker.dmi b/icons/obj/devices/tracker.dmi index 0508fe816bc..59884c0aff8 100644 Binary files a/icons/obj/devices/tracker.dmi and b/icons/obj/devices/tracker.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 1d9394a9fd1..765bf645d3e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4539,6 +4539,7 @@ #include "code\modules\mining\equipment\miningradio.dm" #include "code\modules\mining\equipment\resonator.dm" #include "code\modules\mining\equipment\survival_pod.dm" +#include "code\modules\mining\equipment\vent_pointer.dm" #include "code\modules\mining\equipment\wormhole_jaunter.dm" #include "code\modules\mining\equipment\monster_organs\brimdust_sac.dm" #include "code\modules\mining\equipment\monster_organs\monster_organ.dm"