mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
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:
co-authored by
warriorstar-orion
parent
aa7bf198aa
commit
b404a985ab
+1558
-1208
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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user