mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
[Ready]Bluespace research updates (#40245)
* Quantum Keycards * Bluespace research updates * . * .. * codersprites * costier * moved portal gun * removes hand tele
This commit is contained in:
@@ -73,16 +73,27 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is no quantum pad data saved in [I]'s buffer!</span>")
|
||||
return TRUE
|
||||
|
||||
else if(istype(I, /obj/item/quantum_keycard))
|
||||
var/obj/item/quantum_keycard/K = I
|
||||
if(K.qpad)
|
||||
to_chat(user, "<span class='notice'>You insert [K] into [src]'s card slot, activating it.</span>")
|
||||
interact(user, K.qpad)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You insert [K] into [src]'s card slot, initiating the link procedure.</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
to_chat(user, "<span class='notice'>You complete the link between [K] and [src].</span>")
|
||||
K.qpad = src
|
||||
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/quantumpad/interact(mob/user)
|
||||
if(!linked_pad || QDELETED(linked_pad))
|
||||
/obj/machinery/quantumpad/interact(mob/user, obj/machinery/quantumpad/target_pad = linked_pad)
|
||||
if(!target_pad || QDELETED(target_pad))
|
||||
if(!map_pad_link_id || !initMappedLink())
|
||||
to_chat(user, "<span class='warning'>There is no linked pad!</span>")
|
||||
to_chat(user, "<span class='warning'>Target pad not found!</span>")
|
||||
return
|
||||
|
||||
if(world.time < last_teleport + teleport_cooldown)
|
||||
@@ -93,15 +104,15 @@
|
||||
to_chat(user, "<span class='warning'>[src] is charging up. Please wait.</span>")
|
||||
return
|
||||
|
||||
if(linked_pad.teleporting)
|
||||
to_chat(user, "<span class='warning'>Linked pad is busy. Please wait.</span>")
|
||||
if(target_pad.teleporting)
|
||||
to_chat(user, "<span class='warning'>Target pad is busy. Please wait.</span>")
|
||||
return
|
||||
|
||||
if(linked_pad.stat & NOPOWER)
|
||||
to_chat(user, "<span class='warning'>Linked pad is not responding to ping.</span>")
|
||||
if(target_pad.stat & NOPOWER)
|
||||
to_chat(user, "<span class='warning'>Target pad is not responding to ping.</span>")
|
||||
return
|
||||
add_fingerprint(user)
|
||||
doteleport(user)
|
||||
doteleport(user, target_pad)
|
||||
|
||||
/obj/machinery/quantumpad/proc/sparks()
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
@@ -117,8 +128,8 @@
|
||||
if(linked_pad)
|
||||
ghost.forceMove(get_turf(linked_pad))
|
||||
|
||||
/obj/machinery/quantumpad/proc/doteleport(mob/user)
|
||||
if(linked_pad)
|
||||
/obj/machinery/quantumpad/proc/doteleport(mob/user, obj/machinery/quantumpad/target_pad = linked_pad)
|
||||
if(target_pad)
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, 1)
|
||||
teleporting = TRUE
|
||||
|
||||
@@ -130,7 +141,7 @@
|
||||
to_chat(user, "<span class='warning'>[src] is unpowered!</span>")
|
||||
teleporting = FALSE
|
||||
return
|
||||
if(!linked_pad || QDELETED(linked_pad) || linked_pad.stat & NOPOWER)
|
||||
if(!target_pad || QDELETED(target_pad) || target_pad.stat & NOPOWER)
|
||||
to_chat(user, "<span class='warning'>Linked pad is not responding to ping. Teleport aborted.</span>")
|
||||
teleporting = FALSE
|
||||
return
|
||||
@@ -141,12 +152,12 @@
|
||||
// use a lot of power
|
||||
use_power(10000 / power_efficiency)
|
||||
sparks()
|
||||
linked_pad.sparks()
|
||||
target_pad.sparks()
|
||||
|
||||
flick("qpad-beam", src)
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5)
|
||||
flick("qpad-beam", linked_pad)
|
||||
playsound(get_turf(linked_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5)
|
||||
flick("qpad-beam", target_pad)
|
||||
playsound(get_turf(target_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5)
|
||||
for(var/atom/movable/ROI in get_turf(src))
|
||||
// if is anchored, don't let through
|
||||
if(ROI.anchored)
|
||||
@@ -160,7 +171,7 @@
|
||||
continue
|
||||
else if(!isobserver(ROI))
|
||||
continue
|
||||
do_teleport(ROI, get_turf(linked_pad))
|
||||
do_teleport(ROI, get_turf(target_pad))
|
||||
|
||||
/obj/machinery/quantumpad/proc/initMappedLink()
|
||||
. = FALSE
|
||||
|
||||
32
code/game/objects/items/devices/quantum_keycard.dm
Normal file
32
code/game/objects/items/devices/quantum_keycard.dm
Normal file
@@ -0,0 +1,32 @@
|
||||
/obj/item/quantum_keycard
|
||||
name = "quantum keycard"
|
||||
desc = "A keycard able to link to a quantum pad's particle signature, allowing other quantum pads to travel there instead of their linked pad."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "quantum_keycard"
|
||||
item_state = "card-id"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/obj/machinery/quantumpad/qpad
|
||||
|
||||
/obj/item/quantum_keycard/examine(mob/user)
|
||||
..()
|
||||
if(qpad)
|
||||
to_chat(user, "It's currently linked to a quantum pad.")
|
||||
to_chat(user, "<span class='notice'>Alt-click to unlink the keycard.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Insert [src] into an active quantum pad to link it.</span>")
|
||||
|
||||
/obj/item/quantum_keycard/AltClick(mob/living/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start pressing [src]'s unlink button...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
to_chat(user, "<span class='notice'>The keycard beeps twice and disconnects the quantum link.</span>")
|
||||
qpad = null
|
||||
|
||||
/obj/item/quantum_keycard/update_icon()
|
||||
if(qpad)
|
||||
icon_state = "quantum_keycard_on"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
@@ -206,6 +206,16 @@
|
||||
build_path = /obj/item/locator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/quantum_keycard
|
||||
name = "Quantum Keycard"
|
||||
desc = "Allows for the construction of a quantum keycard."
|
||||
id = "quantum_keycard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500, MAT_SILVER = 500, MAT_BLUESPACE = 1000)
|
||||
build_path = /obj/item/quantum_keycard
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/anomaly_neutralizer
|
||||
name = "Anomaly Neutralizer"
|
||||
|
||||
@@ -171,18 +171,26 @@
|
||||
display_name = "Basic Bluespace Theory"
|
||||
description = "Basic studies into the mysterious alternate dimension known as bluespace."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("beacon", "xenobioconsole", "telesci_gps")
|
||||
design_ids = list("beacon", "xenobioconsole", "telesci_gps", "bluespace_crystal")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/adv_bluespace
|
||||
id = "adv_bluespace"
|
||||
display_name = "Advanced Bluespace Research"
|
||||
description = "Deeper understanding of how the Bluespace dimension works"
|
||||
prereq_ids = list("practical_bluespace", "high_efficiency")
|
||||
design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "tele_station", "tele_hub", "quantumpad", "launchpad", "launchpad_console",
|
||||
"teleconsole", "bag_holding", "bluespace_crystal", "wormholeprojector", "bluespace_pod")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 15000)
|
||||
/datum/techweb_node/bluespace_travel
|
||||
id = "bluespace_travel"
|
||||
display_name = "Bluespace Travel"
|
||||
description = "Application of Bluespace for static teleportation technology."
|
||||
prereq_ids = list("practical_bluespace")
|
||||
design_ids = list("tele_station", "tele_hub", "quantumpad", "launchpad", "launchpad_console", "bluespace_pod")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/micro_bluespace
|
||||
id = "micro_bluespace"
|
||||
display_name = "Miniaturized Bluespace Research"
|
||||
description = "Extreme reduction in space required for bluespace engines, leading to portable bluespace technology."
|
||||
prereq_ids = list("bluespace_travel", "practical_bluespace", "high_efficiency")
|
||||
design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "bag_holding", "quantum_keycard", "wormholeprojector")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/practical_bluespace
|
||||
@@ -198,7 +206,7 @@
|
||||
id = "bluespace_power"
|
||||
display_name = "Bluespace Power Technology"
|
||||
description = "Even more powerful.. power!"
|
||||
prereq_ids = list("adv_power", "adv_bluespace")
|
||||
prereq_ids = list("adv_power", "practical_bluespace")
|
||||
design_ids = list("bluespace_cell", "quadratic_capacitor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
@@ -838,6 +838,7 @@
|
||||
#include "code\game\objects\items\devices\pipe_painter.dm"
|
||||
#include "code\game\objects\items\devices\powersink.dm"
|
||||
#include "code\game\objects\items\devices\pressureplates.dm"
|
||||
#include "code\game\objects\items\devices\quantum_keycard.dm"
|
||||
#include "code\game\objects\items\devices\reverse_bear_trap.dm"
|
||||
#include "code\game\objects\items\devices\scanners.dm"
|
||||
#include "code\game\objects\items\devices\sensor_device.dm"
|
||||
|
||||
Reference in New Issue
Block a user