Files
Bubberstation/code/modules/bitrunning/objects/quantum_console.dm
SyncIt21 31edad9967 Adds some bit running construction qol (#92217)
## About The Pull Request
- Closes #92210

1) Bit Forge can be deconstructed with a screwdriver & crowbar like a
normal machine
2) Adds examines & screentips for netpod, bitforge(icon for panel open
state added) & quantum server on how to deconstruct them. New icon state
for when bitforge has its panel open is shown below
<img width="210" height="103" alt="Screenshot (497)"
src="https://github.com/user-attachments/assets/bb44c78d-1f0e-468f-9a79-ebc5800edd09"
/>

3) Moved bitrunning machine designs into files that exist to hold that
type of code

## Changelog
🆑
code: moved designs & circuitboards for bitrunning into their correct
files
qol: adds examines & screentips for bitrunning netpod, bitforge & server
on how to deconstruct them
fix: bitforge can be deconstructed with a screwdriver & crowbar
/🆑

(cherry picked from commit bb38209bb4)
2025-08-08 15:29:17 -04:00

107 lines
3.0 KiB
Plaintext

/obj/machinery/computer/quantum_console
name = "quantum console"
circuit = /obj/item/circuitboard/computer/quantum_console
icon_keyboard = "mining"
icon_screen = "bitrunning"
req_access = list(ACCESS_MINING)
/// The server this console is connected to.
var/datum/weakref/server_ref
/obj/machinery/computer/quantum_console/Initialize(mapload, obj/item/circuitboard/circuit)
. = ..()
desc = "Even in the distant year [CURRENT_STATION_YEAR], Nanotrasen is still using REST APIs. How grim."
/obj/machinery/computer/quantum_console/post_machine_initialize()
. = ..()
find_server()
/obj/machinery/computer/quantum_console/examine(mob/user)
. = ..()
if(!server_ref)
. += span_warning("Please install an quantum server in any tile next to this console.")
/obj/machinery/computer/quantum_console/ui_interact(mob/user, datum/tgui/ui)
. = ..()
if(!is_operational)
return
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "QuantumConsole")
ui.open()
/obj/machinery/computer/quantum_console/ui_data()
var/list/data = list()
var/obj/machinery/quantum_server/server = find_server()
if(isnull(server))
data["connected"] = FALSE
return data
data["connected"] = TRUE
data["generated_domain"] = server.generated_domain?.key
data["occupants"] = length(server.avatar_connection_refs)
data["points"] = server.points
data["randomized"] = server.domain_randomized
data["ready"] = server.is_ready && server.is_operational
data["scanner_tier"] = server.scanner_tier
data["retries_left"] = length(server.exit_turfs) - server.retries_spent
data["broadcasting"] = server.broadcasting
data["broadcasting_on_cd"] = !COOLDOWN_FINISHED(server, broadcast_toggle_cd)
return data
/obj/machinery/computer/quantum_console/ui_static_data(mob/user)
var/list/data = list()
var/obj/machinery/quantum_server/server = find_server()
if(isnull(server))
return data
data["available_domains"] = SSbitrunning.get_available_domains(server.scanner_tier, server.points)
data["avatars"] = server.get_avatar_data()
return data
/obj/machinery/computer/quantum_console/ui_act(action, list/params, datum/tgui/ui)
. = ..()
if(.)
return TRUE
var/obj/machinery/quantum_server/server = find_server()
if(isnull(server))
return FALSE
switch(action)
if("random_domain")
server.cold_boot_map(server.get_random_domain_id())
return TRUE
if("refresh")
ui.send_full_update()
return TRUE
if("set_domain")
server.cold_boot_map(params["id"])
return TRUE
if("stop_domain")
server.begin_shutdown(usr)
return TRUE
if("broadcast")
server.toggle_broadcast()
return TRUE
return FALSE
/// Attempts to find a quantum server.
/obj/machinery/computer/quantum_console/proc/find_server()
var/obj/machinery/quantum_server/server = server_ref?.resolve()
if(server)
return server
for(var/direction in GLOB.cardinals)
var/obj/machinery/quantum_server/nearby_server = locate(/obj/machinery/quantum_server, get_step(src, direction))
if(nearby_server)
server_ref = WEAKREF(nearby_server)
return nearby_server