Expands the Farragus Quantum Network (#29650)

* Update cerestation.dmm

* TELEPORTATION!!!!!

* Update cerestation.dmm

* Update cerestation.dmm

* prototype telepad network

* Update cerestation.dmm

* e

* Update teleporter.dm

* Update teleporter.dm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update cerestation.dmm

* Update teleporter.dm

* I fucking hate teleporter code

* Update cerestation.dmm

---------

Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
This commit is contained in:
CRUNCH
2025-07-23 18:30:29 +00:00
committed by GitHub
co-authored by warriorstar-orion
parent aa7bf198aa
commit b404a985ab
6 changed files with 1651 additions and 1263 deletions
File diff suppressed because it is too large Load Diff
@@ -270,6 +270,9 @@
/area/station/public/quantum/security
name = "Security Quantum Pad"
/area/station/public/quantum/engineering
name = "Engineering Quantum Pad"
/area/station/public/quantum/docking
name = "Docking Quantum Pad"
+2
View File
@@ -12,6 +12,7 @@
var/obj/item/beacon/Beacon
var/enabled = TRUE
var/cc_beacon = FALSE //can be teleported to even if on zlevel2
var/broadcast_to_teleport_hubs = TRUE
/obj/machinery/bluespace_beacon/Initialize(mapload)
. = ..()
@@ -25,6 +26,7 @@
Beacon.syndicate = syndicate
Beacon.area_bypass = area_bypass
Beacon.cc_beacon = cc_beacon
Beacon.broadcast_to_teleport_hubs = broadcast_to_teleport_hubs
if(!T.transparent_floor)
hide(T.intact)
+5 -45
View File
@@ -12,45 +12,15 @@
var/teleport_cooldown = 400 //30 seconds base due to base parts
var/teleport_speed = 50
var/last_teleport //to handle the cooldown
var/teleporting = FALSE //if it's in the process of teleporting
// Is the pad currently doing a teleportation?
var/teleporting = FALSE
// Power consumption multiplier.
var/power_efficiency = 1
// The pad this quantum pad will teleport to.
var/obj/machinery/quantumpad/linked_pad = null
// Pre-linked pad target, for mapped-in quantum pads.
var/preset_target = null
/obj/machinery/quantumpad/cere/cargo_arrivals
preset_target = /obj/machinery/quantumpad/cere/arrivals_cargo
/obj/machinery/quantumpad/cere/cargo_security
preset_target = /obj/machinery/quantumpad/cere/security_cargo
/obj/machinery/quantumpad/cere/security_cargo
preset_target = /obj/machinery/quantumpad/cere/cargo_security
/obj/machinery/quantumpad/cere/security_science
preset_target = /obj/machinery/quantumpad/cere/science_security
/obj/machinery/quantumpad/cere/science_security
preset_target = /obj/machinery/quantumpad/cere/security_science
/obj/machinery/quantumpad/cere/science_arrivals
preset_target = /obj/machinery/quantumpad/cere/arrivals_science
/obj/machinery/quantumpad/cere/arrivals_science
preset_target = /obj/machinery/quantumpad/cere/science_arrivals
/obj/machinery/quantumpad/cere/arrivals_cargo
preset_target = /obj/machinery/quantumpad/cere/cargo_arrivals
/obj/machinery/quantumpad/cere/security_medbay
preset_target = /obj/machinery/quantumpad/cere/medbay_security
/obj/machinery/quantumpad/cere/medbay_security
preset_target = /obj/machinery/quantumpad/cere/security_medbay
/obj/machinery/quantumpad/cere/medbay_science
preset_target = /obj/machinery/quantumpad/cere/science_medbay
/obj/machinery/quantumpad/cere/science_medbay
preset_target = /obj/machinery/quantumpad/cere/medbay_science
/obj/machinery/quantumpad/cere/arrivals_service
preset_target = /obj/machinery/quantumpad/cere/service_arrivals
/obj/machinery/quantumpad/cere/service_arrivals
preset_target = /obj/machinery/quantumpad/cere/arrivals_service
/obj/machinery/quantumpad/cere/cargo_service
preset_target = /obj/machinery/quantumpad/cere/service_cargo
/obj/machinery/quantumpad/cere/service_cargo
preset_target = /obj/machinery/quantumpad/cere/cargo_service
/obj/machinery/quantumpad/Initialize(mapload)
. = ..()
PopulateParts()
@@ -64,16 +34,6 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
/obj/machinery/quantumpad/cere/Initialize(mapload)
. = ..()
linked_pad = locate(preset_target)
/obj/machinery/quantumpad/cere/PopulateParts()
// No parts in Cere telepads, just hardcode the efficiencies
power_efficiency = 4
teleport_speed = 10
teleport_cooldown = 0
/obj/machinery/quantumpad/Destroy()
linked_pad = null
return ..()
+82 -10
View File
@@ -218,6 +218,8 @@
continue
if(R.syndicate && !emagged)
continue
if(!R.broadcast_to_teleport_hubs)
continue
var/tmpname = T.loc.name
if(areaindex[tmpname])
tmpname = "[tmpname] ([++areaindex[tmpname]])"
@@ -483,27 +485,37 @@
/obj/machinery/teleport/perma
name = "permanent teleporter"
desc = "A teleporter with the target pre-set on the circuit board."
desc = "A teleporter with the target pre-set on the circuit board. The permently aligned transmitter allows it to be more power efficient than a regular teleporter station at the cost of flexibility. \
Built-in safeties prevent it from teleporting during a recalibration, so you will never get thrown into space."
icon_state = "tele0"
density = FALSE
layer = HOLOPAD_LAYER
plane = FLOOR_PLANE
idle_power_consumption = 10
active_power_consumption = 2000
idle_power_consumption = 50 // Both of these are half the consumption of a non-permanent tele.
active_power_consumption = 1000
var/recalibrating = FALSE
var/target
var/tele_delay = 50
var/tele_delay = 3 SECONDS
var/teleport_cost = 1000 // 1/5 cost of a non permanent tele.
var/admin_usage = FALSE // If TRUE, this will work on the CC Z-level.
/obj/machinery/teleport/perma/Initialize(mapload)
. = ..()
update_lighting()
initialize_parts()
var/static/list/loc_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_atom_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
update_lighting()
/obj/machinery/teleport/perma/proc/initialize_parts()
component_parts = list()
component_parts += new /obj/item/circuitboard/teleporter_perma(null)
component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null, 3)
component_parts += new /obj/item/stock_parts/matter_bin(null)
RefreshParts()
/obj/machinery/teleport/perma/process()
teleports_this_cycle = 0
@@ -515,18 +527,25 @@
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
A -= M.rating * 10
tele_delay = max(A, 0)
update_icon(UPDATE_ICON_STATE)
/obj/machinery/teleport/perma/proc/on_atom_entered(datum/source, atom/movable/entered)
if(stat & (BROKEN|NOPOWER))
return
if(!is_teleport_allowed(z))
to_chat(entered, "<span class='notice'>You can't use this here.</span>")
if(!is_teleport_allowed(z) && !admin_usage)
if(ismob(entered))
to_chat(entered, "You can't use this here.")
return
if(entered == src)
return
teleport(entered)
/obj/machinery/teleport/perma/proc/teleport(atom/movable/entered as mob|obj)
if(target && !recalibrating && !panel_open && !blockAI(entered) && (teleports_this_cycle <= MAX_ALLOWED_TELEPORTS_PER_PROCESS) && !iseffect(entered))
do_teleport(entered, target)
use_power(5000)
use_power(teleport_cost)
teleports_this_cycle++
if(tele_delay)
recalibrating = TRUE
@@ -577,6 +596,59 @@
if(default_deconstruction_screwdriver(user, "tele-o", "tele0", I))
return TRUE
/obj/machinery/teleport/perma/preset
var/target_beacon_type
/obj/machinery/teleport/perma/preset/Initialize(mapload)
. = ..()
if(target_beacon_type)
target = locate(target_beacon_type)
update_icon(UPDATE_ICON_STATE | UPDATE_OVERLAYS)
update_lighting()
/obj/machinery/teleport/perma/initialize_parts()
tele_delay = 0 // Act like a fully upgraded tele, no T4 stock parts to plunder.
/obj/machinery/teleport/perma/preset/cerestation
/obj/machinery/teleport/perma/preset/cerestation/medbay
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/medbay
/obj/machinery/teleport/perma/preset/cerestation/service
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/service
/obj/machinery/teleport/perma/preset/cerestation/cargo
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/cargo
/obj/machinery/teleport/perma/preset/cerestation/brig
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/brig
/obj/machinery/teleport/perma/preset/cerestation/science
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/science
/obj/machinery/teleport/perma/preset/cerestation/departures
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/departures
/obj/machinery/teleport/perma/preset/cerestation/engineering
target_beacon_type = /obj/machinery/bluespace_beacon/cerestation/engineering
/obj/machinery/bluespace_beacon/cerestation
broadcast_to_teleport_hubs = FALSE
/obj/machinery/bluespace_beacon/cerestation/medbay
/obj/machinery/bluespace_beacon/cerestation/cargo
/obj/machinery/bluespace_beacon/cerestation/brig
/obj/machinery/bluespace_beacon/cerestation/science
/obj/machinery/bluespace_beacon/cerestation/departures
/obj/machinery/bluespace_beacon/cerestation/engineering
/obj/machinery/bluespace_beacon/cerestation/service
/obj/machinery/teleport/station
name = "station"
desc = "The power control station for a bluespace teleporter."
@@ -16,6 +16,7 @@
var/area_bypass = FALSE
var/cc_beacon = FALSE //set if allowed to teleport to even if on zlevel2
var/wormhole_weaver = FALSE // special beacons for wormwhole weaver
var/broadcast_to_teleport_hubs = TRUE
/obj/item/beacon/Initialize(mapload)
. = ..()