diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a3a995bb28a..c80d5d4315d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -246,6 +246,25 @@ usr.client.trigger_centcom_recall() + else if(href_list["move_shuttle"]) + if(!check_rights(R_ADMIN)) + return + + var/obj/docking_port/mobile/shuttle = SSshuttle.getShuttle(href_list["move_shuttle"]) + if(!shuttle) + return + shuttle.admin_fly_shuttle(usr) + + else if(href_list["unlock_shuttle"]) + if(!check_rights(R_ADMIN)) + return + + var/obj/machinery/computer/shuttle/shuttle_console = locate(href_list["unlock_shuttle"]) + if(!shuttle_console) + return + shuttle_console.admin_controlled = !shuttle_console.admin_controlled + to_chat(usr, "[shuttle_console] was [shuttle_console.admin_controlled ? "locked" : "unlocked"].", confidential = TRUE) + else if(href_list["toggle_continuous"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 882d93e891f..3a17b3dab11 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -60,7 +60,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) if(is_station_level(FA.z)) FA.update_icon() for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines) - pod.admin_controlled = FALSE + pod.locked = FALSE if(SEC_LEVEL_DELTA) minor_announce(CONFIG_GET(string/alert_delta), "Attention! Delta security level reached!",1) if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL) @@ -73,7 +73,7 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN) if(is_station_level(FA.z)) FA.update_icon() for(var/obj/machinery/computer/shuttle/pod/pod in GLOB.machines) - pod.admin_controlled = FALSE + pod.locked = FALSE if(level >= SEC_LEVEL_RED) for(var/obj/machinery/door/D in GLOB.machines) if(D.red_alert_access) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 6dfdd8fbb8e..d0dbf15d56c 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -15,6 +15,8 @@ var/no_destination_swap = FALSE /// ID of the currently selected destination of the attached shuttle var/destination + /// If the console controls are locked + var/locked = FALSE /// Authorization request cooldown to prevent request spam to admin staff COOLDOWN_DECLARE(request_cooldown) @@ -30,7 +32,7 @@ var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId) data["docked_location"] = M ? M.get_status_text_tgui() : "Unknown" data["locations"] = list() - data["locked"] = FALSE + data["locked"] = locked data["authorization_required"] = admin_controlled data["timer_str"] = M ? M.getTimerStr() : "00:00" data["destination"] = destination @@ -39,8 +41,16 @@ return data if(admin_controlled) data["status"] = "Unauthorized Access" + else if(locked) + data["status"] = "Locked" else - data["status"] = M.mode == SHUTTLE_IGNITING ? "Igniting" : M.mode != SHUTTLE_IDLE ? "In Transit" : "Idle" + switch(M.mode) + if(SHUTTLE_IGNITING) + data["status"] = "Igniting" + if(SHUTTLE_IDLE) + data["status"] = "Idle" + else + data["status"] = "In Transit" for(var/obj/docking_port/stationary/S in SSshuttle.stationary) if(!options.Find(S.id)) continue @@ -106,7 +116,7 @@ return COOLDOWN_START(src, request_cooldown, 1 MINUTES) to_chat(usr, "Your request has been received by CentCom.") - to_chat(GLOB.admins, "FERRY: [ADMIN_LOOKUPFLW(usr)] (Move Ferry) is requesting to move the transport ferry to CentCom.") + to_chat(GLOB.admins, "SHUTTLE: [ADMIN_LOOKUPFLW(usr)] (Move Shuttle)(Lock/Unlock Shuttle) is requesting to move or unlock the shuttle.") return TRUE /obj/machinery/computer/shuttle/emag_act(mob/user) diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 0f532aec134..636f6fc3274 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -465,7 +465,7 @@ /obj/machinery/computer/shuttle/pod name = "pod control computer" - admin_controlled = TRUE + locked = TRUE possible_destinations = "pod_asteroid" icon = 'icons/obj/terminals.dmi' icon_state = "dorm_available"