diff --git a/code/__defines/is_helpers.dm b/code/__defines/is_helpers.dm
index 465b0be8e9..59972d6ba7 100644
--- a/code/__defines/is_helpers.dm
+++ b/code/__defines/is_helpers.dm
@@ -21,6 +21,8 @@
#define isstorage(A) istype(A, /obj/item/weapon/storage)
+#define ismecha(A) istype(A, /obj/mecha)
+
//---------------
//#define isarea(D) istype(D, /area) //Built in
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 1c92c3e94e..00647f37f3 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -158,7 +158,8 @@
/obj/item/stack/nanopaste,
/obj/item/weapon/cell, //this is a bigger belt, might as well make it hold bigger cells too
/obj/item/weapon/pipe_dispenser, //bigger belt for bigger tools
- /obj/item/weapon/rcd //see above
+ /obj/item/weapon/rcd, //see above
+ /obj/item/device/quantum_pad_booster
)
diff --git a/code/modules/research/designs/engineering.dm b/code/modules/research/designs/engineering.dm
index 1ce4143981..16a58ab395 100644
--- a/code/modules/research/designs/engineering.dm
+++ b/code/modules/research/designs/engineering.dm
@@ -59,6 +59,15 @@
build_path = /obj/item/weapon/pipe_dispenser
sort_string = "NAAAD"
+/datum/design/item/tool/qpad_booster
+ name = "Quantum Pad Particle Booster"
+ desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw."
+ id = "qpad_booster"
+ req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 6)
+ materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 1000)
+ build_path = /obj/item/device/quantum_pad_booster
+ sort_string = "NAAAF"
+
// Other devices
/datum/design/item/engineering/AssembleDesignName()
diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm
index ecdb5df785..a636d05917 100644
--- a/code/modules/telesci/quantum_pad.dm
+++ b/code/modules/telesci/quantum_pad.dm
@@ -13,6 +13,7 @@
var/last_teleport //to handle the cooldown
var/teleporting = 0 //if it's in the process of teleporting
var/power_efficiency = 1
+ var/boosted = 0 // do we teleport mecha?
var/obj/machinery/power/quantumpad/linked_pad
//mapping
@@ -32,6 +33,18 @@
mapped_quantum_pads -= map_pad_id
return ..()
+/obj/machinery/power/quantumpad/examine(mob/user)
+ . = ..()
+ . += "It is [linked_pad ? "currently" : "not"] linked to another pad."
+ if(world.time < last_teleport + teleport_cooldown)
+ . += "[src] is recharging power. A timer on the side reads [round((last_teleport + teleport_cooldown - world.time)/10)] seconds."
+ if(boosted)
+ . += SPAN_NOTICE("There appears to be a booster haphazardly jammed into the side of [src]. That looks unsafe.")
+ if(!panel_open)
+ . += "The panel is screwed in, obstructing the linking device."
+ else
+ . += "The linking device is now able to be scanned with a multitool."
+
/obj/machinery/power/quantumpad/RefreshParts()
var/E = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
@@ -64,6 +77,14 @@
to_chat(user, "You link [src] to the one in [I]'s buffer.")
update_icon()
return 1
+
+ if(istype(I, /obj/item/device/quantum_pad_booster))
+ var/obj/item/device/quantum_pad_booster/booster = I
+ visible_message("[user] violently jams [booster] into the side of [src]. [src] beeps, quietly.", \
+ "You hear the sound of a device being improperly installed in sensitive machinery, then subsequent beeping.", runemessage = "beep!")
+ playsound(src, 'sound/items/rped.ogg', 25, 1)
+ boosted = TRUE
+ qdel(I)
if(default_part_replacement(user, I))
return
@@ -216,6 +237,8 @@
// Otherwise we'll need a powernet
var/power_to_use = 10000 / power_efficiency
+ if(boosted)
+ power_to_use * 5
if(draw_power(power_to_use) != power_to_use)
return FALSE
return TRUE
@@ -223,7 +246,10 @@
/obj/machinery/power/quantumpad/proc/transport_objects(turf/destination)
for(var/atom/movable/ROI in get_turf(src))
// if is anchored, don't let through
- if(ROI.anchored)
+ if(ROI.anchored && !ismecha(ROI))
+ if(ismecha(ROI))
+ if(boosted)
+ continue
if(isliving(ROI))
var/mob/living/L = ROI
if(L.buckled)
@@ -265,3 +291,13 @@
to_chat(user, "You feel yourself pulled in different directions, before ending up not far from where you started.")
flick("qpad-beam-out", src)
transport_objects(get_turf(dest))
+
+/obj/item/device/quantum_pad_booster
+ icon = 'icons/obj/device_vr.dmi'
+ name = "quantum pad particle booster"
+ desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw."
+ description_info = "The three prongs at the base of the tool are not, in fact, for show."
+ force = 9
+ sharp = TRUE
+ item_state = "analyzer"
+ icon_state = "hacktool"
\ No newline at end of file
diff --git a/icons/obj/device_vr.dmi b/icons/obj/device_vr.dmi
index b75163e881..3c4a3c5d09 100644
Binary files a/icons/obj/device_vr.dmi and b/icons/obj/device_vr.dmi differ