applications of phoron: telecomms, SMESs (#22966)

- Represents phoron lore in telecomms stock part descriptions
- Represents phoron lore in SMES unit sprites/descriptions
- Adds a phoron-free cryogenic alternative to phoronic SMES units
- Replaces all instances of quantum mechanics being used for FTL Comms
with Bluespace (eg. the Quantum Relay -> Bluespace Relay)

Does not map the cryo SMES in anywhere, but use-cases would be Einstein
Engines, EE-supported factions, and less affluent indie groups

some basic recolouring:
<img width="333" height="107" alt="resprite1"
src="https://github.com/user-attachments/assets/8961274a-39bc-4523-8e11-9daadc652be7"
/>
<img width="559" height="106" alt="resprite2"
src="https://github.com/user-attachments/assets/3afefe66-5487-41f1-bbd7-59ea1bb37b40"
/>
This commit is contained in:
c#min7
2026-08-03 01:23:20 +00:00
committed by GitHub
parent cb9b4c7431
commit 14266ea5aa
16 changed files with 116 additions and 42 deletions
+1 -1
View File
@@ -48,7 +48,7 @@
P.stamped = new
P.stamped += /obj/item/stamp
P.AddOverlays(stampoverlay)
P.stamps += "<HR><i>This paper has been stamped by the Central Command Quantum Relay.</i>"
P.stamps += "<HR><i>This paper has been stamped by the Central Command Bluespace Relay.</i>"
if(fax.receivefax(P))
if(announce == 1)
+1 -1
View File
@@ -521,7 +521,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if((world.time - last_emergency_message_time) < AI_EMERGENCY_MESSAGE_COOLDOWN)
to_chat(src, SPAN_WARNING("Arrays are recycling. You need to wait <b>[DisplayTimeText(AI_EMERGENCY_MESSAGE_COOLDOWN - (world.time - last_emergency_message_time))]</b> before you can send another message."))
return FALSE
var/input = sanitize(input(usr, "Please choose a message to transmit to [SSatlas.current_map.boss_short] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
var/input = sanitize(input(usr, "Please choose a message to transmit to [SSatlas.current_map.boss_short] via bluespace. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", ""))
if(!input)
return FALSE
@@ -1,6 +1,6 @@
/obj/structure/machinery/ntnet_relay
name = "NTNet Quantum Relay"
desc = "A very complex core router and transmitter capable of connecting electronic devices together. Looks fragile."
name = "NTNet Bluespace Relay"
desc = "A very complex router and transmitter capable of connecting electronic devices together. Looks fragile."
use_power = POWER_USE_ACTIVE
active_power_usage = 20000 //20kW, appropriate for machine that keeps massive cross-Zlevel wireless network operational.
idle_power_usage = 100
@@ -156,12 +156,12 @@
if((dos_overload > dos_capacity) && !dos_failure)
dos_failure = TRUE
update_icon()
GLOB.ntnet_global.add_log("Quantum relay switched from normal operation mode to overload recovery mode.")
GLOB.ntnet_global.add_log("Bluespace relay switched from normal operation mode to overload recovery mode.")
// If the DoS buffer reaches 0 again, restart.
if((dos_overload == 0) && dos_failure)
dos_failure = FALSE
update_icon()
GLOB.ntnet_global.add_log("Quantum relay switched from overload recovery mode to normal operation mode.")
GLOB.ntnet_global.add_log("Bluespace relay switched from overload recovery mode to normal operation mode.")
..()
/obj/structure/machinery/ntnet_relay/ui_interact(mob/user, datum/tgui/ui)
@@ -194,11 +194,11 @@
dos_overload = FALSE
dos_failure = FALSE
update_icon()
GLOB.ntnet_global.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.")
GLOB.ntnet_global.add_log("Bluespace relay manually restarted from overload recovery mode to normal operation mode.")
. = TRUE
if(action=="toggle")
enabled = !enabled
GLOB.ntnet_global.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
GLOB.ntnet_global.add_log("Bluespace relay manually [enabled ? "enabled" : "disabled"].")
update_icon()
. = TRUE
@@ -216,7 +216,7 @@
GLOB.ntnet_global.relays.Add(src)
NTNet = GLOB.ntnet_global
sync_linked()
GLOB.ntnet_global.add_log("New quantum relay activated. Current amount of linked relays: [NTNet.relays.len]")
GLOB.ntnet_global.add_log("New bluespace relay activated. Current amount of linked relays: [NTNet.relays.len]")
/obj/structure/machinery/ntnet_relay/LateInitialize()
. = ..()
@@ -225,7 +225,7 @@
/obj/structure/machinery/ntnet_relay/Destroy()
if(GLOB.ntnet_global)
GLOB.ntnet_global.relays.Remove(src)
GLOB.ntnet_global.add_log("Quantum relay connection severed. Current amount of linked relays: [NTNet.relays.len]")
GLOB.ntnet_global.add_log("Bluespace relay connection severed. Current amount of linked relays: [NTNet.relays.len]")
return ..()
/obj/structure/machinery/ntnet_relay/attackby(obj/item/attacking_item, mob/user)
@@ -138,7 +138,7 @@
if(centcomm_message_cooldown)
to_chat(usr, SPAN_WARNING("Arrays recycling. Please stand by."))
return TRUE
var/input = sanitize(tgui_input_text(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement.", "Emergency M&#e55sage", multiline = TRUE, encode = FALSE))
var/input = sanitize(tgui_input_text(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via bluespace.", "Emergency M&#e55sage", multiline = TRUE, encode = FALSE))
if(!input || computer.use_check_and_message(usr))
return FALSE
Syndicate_announce(input, usr)
@@ -154,7 +154,7 @@
if(!is_relay_online())//Contact Centcom has a check, Syndie doesn't to allow for Traitor funs.
to_chat(usr, SPAN_WARNING("No Emergency Bluespace Relay detected. Unable to transmit message."))
return
var/input = sanitize(tgui_input_text(usr, "Please choose a message to transmit to [SSatlas.current_map.boss_name] via quantum entanglement.", "Emergency Message", multiline = TRUE, encode = FALSE))
var/input = sanitize(tgui_input_text(usr, "Please choose a message to transmit to [SSatlas.current_map.boss_name] via bluespace.", "Emergency Message", multiline = TRUE, encode = FALSE))
if(!input || computer.use_check_and_message(usr))
return
Centcomm_announce(input, usr)
+48 -3
View File
@@ -45,6 +45,14 @@
var/charge = 1e6 /// actual charge
var/max_coils = 0
/// Coils that this SMES accepts.
var/list/compatible_coils = list(
/obj/item/smes_coil,
/obj/item/smes_coil/weak,
/obj/item/smes_coil/super_capacity,
/obj/item/smes_coil/super_io
)
/// 1 = attempting to charge, 0 = not attempting to charge
var/input_attempt = 0
/// 1 = actually inputting, 0 = not inputting
@@ -559,8 +567,8 @@
/obj/structure/machinery/power/smes/magical
name = "quantum power storage unit"
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Gains energy from quantum entanglement link."
name = "bluespace power storage unit"
desc = "A high-capacity superconducting magnetic energy storage (SMES) unit. Siphons energy out of bluespace... somehow."
capacity = 5000000
output_level = 250000
should_be_mapped = 1
@@ -571,11 +579,48 @@
/obj/structure/machinery/power/smes/buildable/superconducting
name = "superconducting cryogenic capacitor"
desc = "An experimental, extremely high-capacity type of SMES. It uses integrated cryogenic cooling and superconducting cables to break conventional limits on power transfer."
desc = "An experimental, extremely high-capacity type of SMES. It uses both integrated cryogenic cooling and superconducting cables to break conventional limits on power transfer."
icon_state = "cannon_smes"
charge = 0
max_coils = 12
cur_coils = 12
compatible_coils = list(
/obj/item/smes_coil,
/obj/item/smes_coil/weak,
/obj/item/smes_coil/super_capacity,
/obj/item/smes_coil/super_io,
/obj/item/smes_coil/cryo
)
// EE's phoron-free alternative
/obj/structure/machinery/power/smes/buildable/cryogenic
name = "cryogenic power storage unit"
desc = "A superconducting magnetic energy storage (SMES) unit fitted with cryogenic coolant arrays to induce superconductivity in installed coils. \
The Einstein Engines alternative to phoron-based power systems in the growing Phoron Scarcity crisis; inferior, more hassle, but a phoron-free marvel of engineering!"
icon_state = "smes_cryo"
charge = 0
max_coils = 4
cur_coils = 0
compatible_coils = list(
/obj/item/smes_coil/cryo
)
/obj/structure/machinery/power/smes/buildable/cryogenic/Initialize()
. = ..()
component_parts += new /obj/item/smes_coil/cryo(src)
component_parts += new /obj/item/smes_coil/cryo(src)
component_parts += new /obj/item/smes_coil/cryo(src)
cur_coils = 3 // this is set here to stop non-cryo coils being added on /smes/buildable/Initialise()
/// Intended for phoron-free third party outposts (eg. Einstien Engines, independents avoiding phoron).
/obj/structure/machinery/power/smes/buildable/cryogenic/outpost/Initialize()
. = ..()
input_attempt = TRUE
output_attempt = TRUE
input_level = 200000
output_level = 200000
charge = 5000000
#undef SMES_CLEVEL_1
#undef SMES_CLEVEL_2
+16 -1
View File
@@ -11,7 +11,8 @@
/// MAGNETIC COILS - These things actually store and transmit power within the SMES. Different types have different properties
/obj/item/smes_coil
name = "superconductive magnetic coil"
desc = "Standard superconductive magnetic coil with balanced capacity and I/O rating."
desc = "A standard superconductive magnetic coil with balanced capacity and I/O rating."
desc_extended = "One of the primary uses of phoron, these coils rely on phoron as a room-temperature superconductor to store or transmit energy with near zero loss."
icon = 'icons/obj/stock_parts.dmi'
icon_state = "smes_coil"
/// It's LARGE (backpack sized)
@@ -30,6 +31,8 @@
/obj/item/smes_coil/weak
name = "basic superconductive magnetic coil"
desc = "Cheaper model of the standard superconductive magnetic coil. Its capacity and I/O rating are considerably lower."
desc_extended = "One of the primary uses of phoron, these coils rely on phoron as a room-temperature superconductor to store or transmit energy with near zero loss. \
The phoron in this coil is low-grade and in small quantity."
icon_state = "smes_coil_weak"
ChargeCapacity = 500000
IOCapacity = 300000
@@ -50,6 +53,14 @@
ChargeCapacity = 250000
IOCapacity = 2000000
// 75% Charge Capacity, 50% I/O Capacity.
/obj/item/smes_coil/cryo
name = "cryogenic superconductive transmission coil"
desc = "A non-phoronic superconductive coil instead reliant on a proprietary Einstein Engines superhydride compound. It can only be installed in cryogenic SMES units."
icon_state = "smes_coil_cryo"
ChargeCapacity = 1875000
IOCapacity = 250000
// SMES SUBTYPES - THESE ARE MAPPED IN AND CONTAIN DIFFERENT TYPES OF COILS
// These are used on individual outposts as backup should power line be cut, or engineering outpost lost power.
@@ -487,6 +498,10 @@
else if(istype(attacking_item, /obj/item/smes_coil))
if (cur_coils < max_coils)
if(!(attacking_item in compatible_coils))
to_chat(usr, "This coil isn't compatible with this SMES unit.")
return
if (failure_probability && prob(failure_probability))
total_system_failure(failure_probability, user)
return
@@ -29,7 +29,7 @@
build_path = /obj/item/circuitboard/telecomms/receiver
/datum/design/circuit/tcom/ntnet_relay
name = "NTNet Quantum Relay"
name = "NTNet Bluespace Relay"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/ntnet_relay
@@ -92,7 +92,7 @@
/datum/design/item/stock_part/subspace_ansible
desc = "A component used in telecomms machinery construction."
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MATERIAL_STEEL = 80, MATERIAL_SILVER = 20)
materials = list(MATERIAL_STEEL = 80, MATERIAL_SILVER = 50, MATERIAL_PHORON = 500)
build_path = /obj/item/stock_parts/subspace/ansible
/datum/design/item/stock_part/hyperwave_filter
@@ -104,7 +104,7 @@
/datum/design/item/stock_part/subspace_amplifier
desc = "A component used in telecomms machinery construction."
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MATERIAL_STEEL = 10, MATERIAL_GOLD = 30, MATERIAL_URANIUM = 15)
materials = list(MATERIAL_STEEL = 10, MATERIAL_GOLD = 30, MATERIAL_URANIUM = 15, MATERIAL_PHORON = 100)
build_path = /obj/item/stock_parts/subspace/amplifier
/datum/design/item/stock_part/subspace_treatment
@@ -122,7 +122,7 @@
/datum/design/item/stock_part/subspace_crystal
desc = "A component used in telecomms machinery construction."
req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MATERIAL_GLASS = 1000, MATERIAL_SILVER = 20, MATERIAL_GOLD = 20)
materials = list(MATERIAL_GLASS = 1000, MATERIAL_SILVER = 20, MATERIAL_GOLD = 20, MATERIAL_PHORON = 500)
build_path = /obj/item/stock_parts/subspace/crystal
/datum/design/item/stock_part/subspace_transmitter
+22 -18
View File
@@ -255,53 +255,57 @@
//TCOMS stock parts
/obj/item/stock_parts/subspace/ansible
name = "subspace ansible"
icon_state = "subspace_ansible"
desc = "A compact module capable of sensing extradimensional activity."
name = "bluespace ansible"
icon_state = "ansible_crystal"
desc = "A specially energised bluespace crystal that can be used to receive and transcribe transmissions received from within bluespace."
desc_extended = "Perhaps the most under-valued use of phoron and bluespace, and the backbone of interstellar FTL communications. \
Without these, it will be back to warp couriers and dreaded sub-luminal radio communications..."
origin_tech = list(TECH_DATA = 3, TECH_MAGNET = 5 ,TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10, MATERIAL_PHORON = 50)
/obj/item/stock_parts/subspace/filter
name = "hyperwave filter"
icon_state = "hyperwave_filter"
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
desc = "A tiny device capable of filtering and converting bluespace transmissions."
origin_tech = list(TECH_DATA = 4, TECH_MAGNET = 2)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10)
/obj/item/stock_parts/subspace/amplifier
name = "subspace amplifier"
name = "bluespace amplifier"
icon_state = "subspace_amplifier"
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
desc = "A compact ampule of phoron gas capable of amplifying weak bluespace transmissions."
origin_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10, MATERIAL_PHORON = 50)
/obj/item/stock_parts/subspace/treatment
name = "subspace treatment disk"
name = "bluespace treatment disk"
icon_state = "treatment_disk"
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
desc = "A compact micro-machine capable of stretching out hyper-compressed bluespace transmissions."
origin_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 5, TECH_BLUESPACE = 2)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10)
/obj/item/stock_parts/subspace/analyzer
name = "subspace wavelength analyzer"
name = "bluespace transmission analyzer"
icon_state = "wavelength_analyzer"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
desc = "A sophisticated analyzer capable of analyzing cryptic bluespace transmissions."
origin_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
matter = list(MATERIAL_STEEL = 30, MATERIAL_GLASS = 10)
/obj/item/stock_parts/subspace/crystal
name = "ansible crystal"
name = "bluespace transmission crystal"
icon_state = "ansible_crystal"
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
desc = "A specially energised bluespace crystal capable of punching tiny micro-portals into bluespace, through which laser databursts can be transmitted FTL."
desc_extended = "Perhaps the most under-valued use of phoron and bluespace, and the backbone of interstellar FTL communications. \
Without these, it will be back to warp couriers and dreaded sub-luminal radio communications..."
origin_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
matter = list(MATERIAL_GLASS = 50)
matter = list(MATERIAL_PHORON = 50)
/obj/item/stock_parts/subspace/transmitter
name = "subspace transmitter"
name = "data laser transmitter"
icon_state = "subspace_transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
desc = "A small laser that can be used to transmit data through an opened bluespace micro-portal."
origin_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3)
matter = list(MATERIAL_STEEL = 50)
matter = list(MATERIAL_STEEL = 25, MATERIAL_GLASS = 25)
#undef STOCK_PART_BASIC
#undef STOCK_PART_ADVANCED
+1 -1
View File
@@ -252,7 +252,7 @@
if(stamptext)
P.stamps += "<HR><i>This paper has been stamped [stamptext].</i>"
else
P.stamps += "<HR><i>This paper has been stamped by the Central Command Quantum Relay.</i>"
P.stamps += "<HR><i>This paper has been stamped by the Central Command Bluespace Relay.</i>"
if(F.receivefax(P))
log_and_message_admins("[senderkey] sent a fax message to the [F.department] fax machine via the api. (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[F.x];Y=[F.y];Z=[F.z]'>JMP</a>)")