//- Are all the floors with or without air, as they should be? (regular or airless) //- Does the area have an APC? //- Does the area have an Air Alarm? //- Does the area have a Request Console? //- Does the area have lights? //- Does the area have a light switch? //- Does the area have enough intercoms? //- Does the area have enough security cameras? (Use the 'Camera Range Display' verb under Debug) //- Is the area connected to the scrubbers air loop? //- Is the area connected to the vent air loop? (vent pumps) //- Is everything wired properly? //- Does the area have a fire alarm and firedoors? //- Do all pod doors work properly? //- Are accesses set properly on doors, pod buttons, etc. //- Are all items placed properly? (not below vents, scrubbers, tables) //- Does the disposal system work properly from all the disposal units in this room and all the units, the pipes of which pass through this room? //- Check for any misplaced or stacked piece of pipe (air and disposal) //- Check for any misplaced or stacked piece of wire //- Identify how hard it is to break into the area and where the weak points are //- Check if the area has too much empty space. If so, make it smaller and replace the rest with maintenance tunnels. GLOBAL_VAR_INIT(camera_range_display_status, FALSE) GLOBAL_VAR_INIT(intercom_range_display_status, FALSE) GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging) /obj/effect/debugging/camera_range icon = 'icons/480x480.dmi' icon_state = "25percent" /obj/effect/debugging/camera_range/Initialize(mapload, ...) . = ..() src.pixel_x = -224 src.pixel_y = -224 /obj/effect/debugging/marker icon = 'icons/turf/areas.dmi' icon_state = "yellow" /obj/effect/debugging/marker/Move() return 0 ADMIN_VERB_VISIBILITY(camera_view, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(camera_view, R_DEBUG, "Camera Range Display", "Globally changes the camera view (Only use on a test server).", ADMIN_CATEGORY_MAPPING_TESTS) if(GLOB.camera_range_display_status) GLOB.camera_range_display_status = FALSE else GLOB.camera_range_display_status = TRUE for(var/obj/effect/debugging/camera_range/C in GLOB.all_debugging_effects) qdel(C) if(GLOB.camera_range_display_status) for(var/obj/machinery/camera/C in GLOB.cameranet.cameras) new/obj/effect/debugging/camera_range(C.loc) feedback_add_details("admin_verb","mCRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ADMIN_VERB_VISIBILITY(sec_camera_report, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(sec_camera_report, R_DEBUG, "Camera Report", "Gives a report of the camera state (Only use on a test server).", ADMIN_CATEGORY_MAPPING_TESTS) if(!GLOB.master_controller) tgui_alert_async(user,"Master_controller not found.","Sec Camera Report") return 0 var/list/obj/machinery/camera/CL = list() for(var/obj/machinery/camera/C in GLOB.cameranet.cameras) CL += C var/output = span_bold("CAMERA ANNOMALITIES REPORT") + {"
"} + span_bold("The following annomalities have been detected. The ones in red need immediate attention: Some of those in black may be intentional.") + {"
" var/datum/browser/popup = new(user, "airreport", "Airreport", 1000, 500) popup.set_content(output) popup.open() feedback_add_details("admin_verb","mCRP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ADMIN_VERB_VISIBILITY(intercom_view, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(intercom_view, R_DEBUG, "Intercom Range Display", "Displays the intercom view as effects (Only use on a test server).", ADMIN_CATEGORY_MAPPING_TESTS) if(GLOB.intercom_range_display_status) GLOB.intercom_range_display_status = FALSE else GLOB.intercom_range_display_status = TRUE for(var/obj/effect/debugging/marker/M in GLOB.all_debugging_effects) qdel(M) if(GLOB.intercom_range_display_status) for(var/obj/item/radio/intercom/I in GLOB.machines) for(var/turf/T in orange(7,I)) var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T) if (!(F in view(7,I.loc))) qdel(F) feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/var/list/testZAScolors_turfs = list() /client/var/list/testZAScolors_zones = list() /client/var/usedZAScolors = 0 /client/var/list/image/ZAScolors = list() /client/proc/recurse_zone(var/datum/zone/Z, var/recurse_level =1) testZAScolors_zones += Z if(recurse_level > 10) return var/icon/yellow = new('icons/misc/debug_group.dmi', "yellow") for(var/turf/T in Z.contents) images += image(yellow, T, "zasdebug", TURF_LAYER) testZAScolors_turfs += T for(var/datum/connection_edge/zone/edge in Z.edges) var/datum/zone/connected = edge.get_connected_zone(Z) if(connected in testZAScolors_zones) continue recurse_zone(connected,recurse_level+1) ADMIN_VERB_VISIBILITY(testZAScolors, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(testZAScolors, R_DEBUG, "Check ZAS connections", "Displays ZAS connections as effects (Only use on a test server).", ADMIN_CATEGORY_MAPPING_ZAS) SSadmin_verbs.dynamic_invoke_verb(user, /datum/admin_verb/testZAScolors_remove) var/turf/simulated/location = get_turf(user.mob) if(!istype(location, /turf/simulated)) // We're in space, let's not cause runtimes. to_chat(user, span_red("this debug tool cannot be used from space")) return var/icon/red = new('icons/misc/debug_group.dmi', "red") //created here so we don't have to make thousands of these. var/icon/green = new('icons/misc/debug_group.dmi', "green") var/icon/blue = new('icons/misc/debug_group.dmi', "blue") if(!user.usedZAScolors) to_chat(user, "ZAS Test Colors") to_chat(user, "[span_green("Green")] = Zone you are standing in") to_chat(user, "[span_blue("Blue")] = Connected zone to the zone you are standing in") to_chat(user, "[span_yellow("Yellow")] = A zone that is connected but not one adjacent to your connected zone") to_chat(user, "[span_red("Red")] = Not connected") user.usedZAScolors = 1 user.testZAScolors_zones += location.zone for(var/turf/T in location.zone.contents) user.images += image(green, T,"zasdebug", TURF_LAYER) user.testZAScolors_turfs += T for(var/datum/connection_edge/zone/edge in location.zone.edges) var/datum/zone/Z = edge.get_connected_zone(location.zone) user.testZAScolors_zones += Z for(var/turf/T in Z.contents) user.images += image(blue, T,"zasdebug",TURF_LAYER) user.testZAScolors_turfs += T for(var/datum/connection_edge/zone/z_edge in Z.edges) var/datum/zone/connected = z_edge.get_connected_zone(Z) if(connected in user.testZAScolors_zones) continue user.recurse_zone(connected,1) for(var/turf/T in range(25,location)) if(!istype(T)) continue if(T in user.testZAScolors_turfs) continue user.images += image(red, T, "zasdebug", TURF_LAYER) user.testZAScolors_turfs += T ADMIN_VERB_VISIBILITY(testZAScolors_remove, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(testZAScolors_remove, R_DEBUG, "Remove ZAS connection colors", "Clears displayed ZAS connections (Only use on a test server).", ADMIN_CATEGORY_MAPPING_ZAS) user.testZAScolors_turfs.Cut() user.testZAScolors_zones.Cut() if(length(user.images)) for(var/image/i in user.images) if(i.icon_state == "zasdebug") user.images.Remove(i) ADMIN_VERB_VISIBILITY(rebootAirMaster, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(rebootAirMaster, R_DEBUG, "Reboot ZAS", "Rstarts ZAS (Only use on a test server).", ADMIN_CATEGORY_MAPPING_ZAS) if(tgui_alert(user, "This will destroy and remake all zone geometry on the whole map.","Reboot ZAS",list("Reboot ZAS","Nevermind")) == "Reboot ZAS") SSair.RebootZAS() ADMIN_VERB_VISIBILITY(count_objects_on_z_level, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(count_objects_on_z_level, R_DEBUG, "Count Objects On Level", "Counts all objects on a Z level (Only use on a test server).", ADMIN_CATEGORY_MAPPING) var/level = tgui_input_text(user, "Which z-level?","Level?") if(!level) return var/num_level = text2num(level) if(!num_level) return if(!isnum(num_level)) return var/type_text = tgui_input_text(user, "Which type path?","Path?") if(!type_text) return var/type_path = text2path(type_text) if(!type_path) return var/count = 1 var/list/atom/atom_list = list() for(var/atom/A in world) if(istype(A,type_path)) var/atom/B = A while(!(isturf(B.loc))) if(B && B.loc) B = B.loc else break if(B) if(B.z == num_level) count++ atom_list += A /* var/atom/temp_atom for(var/i = 0; i <= (atom_list.len/10); i++) var/line = "" for(var/j = 1; j <= 10; j++) if(i*10+j <= atom_list.len) temp_atom = atom_list[i*10+j] line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; " to_chat(world, line)*/ to_chat(world, "There are [count] objects of type [type_path] on z-level [num_level]") feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ADMIN_VERB_VISIBILITY(count_objects_all, ADMIN_VERB_VISIBLITY_FLAG_LOCALHOST) ADMIN_VERB(count_objects_all, R_DEBUG, "Count Objects All", "Count all objects by type (Only use on a test server).", ADMIN_CATEGORY_MAPPING) var/type_text = tgui_input_text(user, "Which type path?","") if(!type_text) return var/type_path = text2path(type_text) if(!type_path) return var/count = 0 for(var/atom/A in world) if(istype(A,type_path)) count++ /* var/atom/temp_atom for(var/i = 0; i <= (atom_list.len/10); i++) var/line = "" for(var/j = 1; j <= 10; j++) if(i*10+j <= atom_list.len) temp_atom = atom_list[i*10+j] line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; " to_chat(world, line)*/ to_chat(world, "There are [count] objects of type [type_path] in the game world") feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! ADMIN_VERB(enable_mapping_verbs, R_DEBUG, "Enable Mapping Verbs", "Enable all mapping verbs.", ADMIN_CATEGORY_MAPPING) SSadmin_verbs.update_visibility_flag(user, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG, TRUE) feedback_add_details("admin_verb","mapDB") ADMIN_VERB_VISIBILITY(disable_mapping_verbs, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG) ADMIN_VERB(disable_mapping_verbs, R_DEBUG, "Disable Mapping Verbs", "Disable all mapping verbs.", ADMIN_CATEGORY_MAPPING) SSadmin_verbs.update_visibility_flag(user, ADMIN_VERB_VISIBLITY_FLAG_MAPPING_DEBUG, FALSE)