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