diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index f4a80c0a41..5887e0bc32 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -1,3 +1,20 @@ +var/global/list/holodeck_programs = list( + "emptycourt" = /area/holodeck/source_emptycourt, \ + "boxingcourt" = /area/holodeck/source_boxingcourt, \ + "basketball" = /area/holodeck/source_basketball, \ + "thunderdomecourt" = /area/holodeck/source_thunderdomecourt, \ + "beach" = /area/holodeck/source_beach, \ + "desert" = /area/holodeck/source_desert, \ + "space" = /area/holodeck/source_space, \ + "picnicarea" = /area/holodeck/source_picnicarea, \ + "snowfield" = /area/holodeck/source_snowfield, \ + "theatre" = /area/holodeck/source_theatre, \ + "meetinghall" = /area/holodeck/source_meetinghall, \ + "burntest" = /area/holodeck/source_burntest, \ + "wildlifecarp" = /area/holodeck/source_wildlife, \ + "turnoff" = /area/holodeck/source_plating \ + ) + /obj/machinery/computer/HolodeckControl name = "Holodeck Control Computer" desc = "A computer used to control a nearby holodeck." @@ -8,7 +25,20 @@ var/list/holographic_items = list() var/damaged = 0 var/last_change = 0 - + var/list/supported_programs = list( \ + "Empty Court" = "emptycourt", \ + "Boxing Court"="boxingcourt", \ + "Basketball Court" = "basketball", \ + "Thunderdome Court" = "thunderdomecourt", \ + "Beach" = "beach", \ + "Desert" = "desert", \ + "Space" = "space", \ + "Picnic Area" = "picnicarea", \ + "Snow Field" = "snowfield", \ + "Theatre" = "theatre", \ + "Meeting Hall" = "meetinghall" \ + ) + var/list/restricted_programs = list("Atmospheric Burn Simulation" = "burntest", "ildlife Simulation" = "wildlifecarp") attack_ai(var/mob/user as mob) return src.attack_hand(user) @@ -23,45 +53,31 @@ user.set_machine(src) var/dat - dat += "Holodeck Control System
" dat += "
Current Loaded Programs:
" - - dat += "((Empty Court))
" - dat += "((Boxing Court))
" - dat += "((Basketball Court))
" - dat += "((Thunderdome Court))
" - dat += "((Beach))
" - dat += "((Desert))
" - dat += "((Space))
" - dat += "((Picnic Area))
" - dat += "((Snow Field))
" - dat += "((Theatre))
" - dat += "((Meeting Hall))
" -// dat += "((Shutdown System))
" + for(var/prog in supported_programs) + dat += "(([prog]))
" dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.
" - if(emagged) - dat += "(Begin Atmospheric Burn Simulation)
" - dat += "Ensure the holodeck is empty before testing.
" - dat += "
" - dat += "(Begin Wildlife Simulation)
" - dat += "Ensure the holodeck is empty before testing.
" - dat += "
" - if(issilicon(user)) + if(issilicon(user)) + if(emagged) dat += "(Re-Enable Safety Protocols?)
" + else + dat += "(Override Safety Protocols?)
" + + if(emagged) + for(var/prog in restricted_programs) + dat += "(Begin [prog])
" + dat += "Ensure the holodeck is empty before testing.
" + dat += "
" dat += "Safety Protocols are DISABLED
" else - if(issilicon(user)) - dat += "(Override Safety Protocols?)
" - dat += "
" dat += "Safety Protocols are ENABLED
" user << browse(dat, "window=computer;size=400x500") onclose(user, "computer") - return @@ -71,77 +87,12 @@ if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) - if(href_list["emptycourt"]) - target = locate(/area/holodeck/source_emptycourt) - if(target) - loadProgram(target) - - else if(href_list["boxingcourt"]) - target = locate(/area/holodeck/source_boxingcourt) - if(target) - loadProgram(target) - - else if(href_list["basketball"]) - target = locate(/area/holodeck/source_basketball) - if(target) - loadProgram(target) - - else if(href_list["thunderdomecourt"]) - target = locate(/area/holodeck/source_thunderdomecourt) - if(target) - loadProgram(target) - - else if(href_list["beach"]) - target = locate(/area/holodeck/source_beach) - if(target) - loadProgram(target) - - else if(href_list["desert"]) - target = locate(/area/holodeck/source_desert) - if(target) - loadProgram(target) - - else if(href_list["space"]) - target = locate(/area/holodeck/source_space) - if(target) - loadProgram(target) - - else if(href_list["picnicarea"]) - target = locate(/area/holodeck/source_picnicarea) - if(target) - loadProgram(target) - - else if(href_list["snowfield"]) - target = locate(/area/holodeck/source_snowfield) - if(target) - loadProgram(target) - - else if(href_list["theatre"]) - target = locate(/area/holodeck/source_theatre) - if(target) - loadProgram(target) - - else if(href_list["meetinghall"]) - target = locate(/area/holodeck/source_meetinghall) - if(target) - loadProgram(target) - - else if(href_list["turnoff"]) - target = locate(/area/holodeck/source_plating) - if(target) - loadProgram(target) - - else if(href_list["burntest"]) - if(!emagged) return - target = locate(/area/holodeck/source_burntest) - if(target) - loadProgram(target) - - else if(href_list["wildlifecarp"]) - if(!emagged) return - target = locate(/area/holodeck/source_wildlife) - if(target) - loadProgram(target) + if(href_list["program"]) + var/prog = href_list["program"] + if(prog in holodeck_programs) + target = locate(holodeck_programs[prog]) + if(target) + loadProgram(target) else if(href_list["AIoverride"]) if(!issilicon(usr)) return @@ -158,38 +109,7 @@ return - /obj/machinery/computer/HolodeckControl/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob) -//Warning, uncommenting this can have concequences. For example, deconstructing the computer may cause holographic eswords to never derez - -/* if(istype(D, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - if (src.stat & BROKEN) - user << "\blue The broken glass falls out." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - new /obj/item/weapon/shard( src.loc ) - var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A ) - for (var/obj/C in src) - C.loc = src.loc - A.circuit = M - A.state = 3 - A.icon_state = "3" - A.anchored = 1 - del(src) - else - user << "\blue You disconnect the monitor." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) - var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A ) - for (var/obj/C in src) - C.loc = src.loc - A.circuit = M - A.state = 4 - A.icon_state = "4" - A.anchored = 1 - del(src) - -*/ if(istype(D, /obj/item/weapon/card/emag) && !emagged) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) emagged = 1 @@ -447,7 +367,7 @@ if(isrobot(user)) return - + ..() /obj/structure/table/holotable/wood