diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm
index 12f6f45282..01069b8e23 100644
--- a/code/game/objects/structures/loot_piles.dm
+++ b/code/game/objects/structures/loot_piles.dm
@@ -376,6 +376,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
/obj/item/weapon/tool/wrench,
/obj/item/weapon/tool/screwdriver,
/obj/item/weapon/tool/wirecutters,
+ /obj/item/weapon/mining_scanner/advanced,
/obj/item/device/multitool,
/obj/item/mecha_parts/mecha_equipment/generator,
/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,
diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm
index 269f218f9c..ef113ca7b7 100644
--- a/code/modules/mining/drilling/scanner.dm
+++ b/code/modules/mining/drilling/scanner.dm
@@ -7,6 +7,8 @@
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 150)
var/scan_time = 2 SECONDS
+ var/range = 2
+ var/exact = FALSE
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
to_chat(user, "You begin sweeping \the [src] about, scanning for metal deposits.")
@@ -17,7 +19,7 @@
ScanTurf(get_turf(user), user)
-/obj/item/weapon/mining_scanner/proc/ScanTurf(var/atom/target, var/mob/user, var/exact = FALSE)
+/obj/item/weapon/mining_scanner/proc/ScanTurf(var/atom/target, var/mob/user)
var/list/metals = list(
"surface minerals" = 0,
"industrial metals" = 0,
@@ -30,7 +32,7 @@
var/turf/Turf = get_turf(target)
- for(var/turf/simulated/T in range(2, Turf))
+ for(var/turf/simulated/T in range(range, Turf))
if(!T.has_resources)
continue
@@ -66,3 +68,23 @@
message += "
- [result] of [ore_type]."
to_chat(user, message)
+
+/obj/item/weapon/mining_scanner/advanced
+ name = "advanced ore detector"
+ desc = "An advanced device used to locate ore deep underground."
+ description_info = "This scanner has variable range, you can use the Set Scanner Range verb, or alt+click the device. Drills dig in 5x5."
+ origin_tech = list(TECH_MAGNET = 4, TECH_ENGINEERING = 4)
+ matter = list(DEFAULT_WALL_MATERIAL = 150)
+ scan_time = 0.5 SECONDS
+ exact = TRUE
+
+/obj/item/weapon/mining_scanner/advanced/AltClick(mob/user)
+ change_size()
+
+/obj/item/weapon/mining_scanner/advanced/verb/change_size()
+ set name = "Set Scanner Range"
+ set category = "Object"
+ var/custom_range = input("Scanner Range","Pick a range to scan. ") as null|anything in list(0,1,2,3,4,5,6,7)
+ if(custom_range)
+ range = custom_range
+ to_chat(usr, "Scanner will now look up to [range] tile(s) away.")
\ No newline at end of file
diff --git a/code/modules/research/designs/mining_toys.dm b/code/modules/research/designs/mining_toys.dm
index 9e1ad560e2..4fb754b145 100644
--- a/code/modules/research/designs/mining_toys.dm
+++ b/code/modules/research/designs/mining_toys.dm
@@ -48,6 +48,14 @@
materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 1000, MAT_COPPER = 50)
build_path = /obj/item/device/depth_scanner
sort_string = "FBAAA"
+
+/datum/design/item/weapon/mining/mining_scanner
+ id = "mining_scanner"
+ req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1)
+ materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500, MAT_COPPER = 250)
+ build_path = /obj/item/weapon/mining_scanner/advanced
+ sort_string = "FBAAB"
+
// CHOMPstation addition
/datum/design/item/weapon/mining/satchel_holding
name = "Satchel of Holding"
@@ -56,5 +64,5 @@
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
materials = list("gold" = 2500, "diamond" = 1000, "uranium" = 250)
build_path = /obj/item/weapon/storage/bag/ore/holding
- sort_string = "FBAAB"
-// CHOMPstation addition end
\ No newline at end of file
+ sort_string = "FBAAC"
+// CHOMPstation addition end