diff --git a/aurorastation.dme b/aurorastation.dme index bb213dcf00a..1d5cc8b6cc7 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1155,6 +1155,7 @@ #include "code\modules\admin\secrets\fun_secrets\break_some_lights.dm" #include "code\modules\admin\secrets\fun_secrets\fix_all_lights.dm" #include "code\modules\admin\secrets\fun_secrets\ghost_mode.dm" +#include "code\modules\admin\secrets\fun_secrets\light_switches.dm" #include "code\modules\admin\secrets\fun_secrets\make_all_areas_powered.dm" #include "code\modules\admin\secrets\fun_secrets\make_all_areas_unpowered.dm" #include "code\modules\admin\secrets\fun_secrets\only_one.dm" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 57ef0e7e6f6..70afc8ba8dd 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -98,7 +98,10 @@ /area/proc/is_no_crew_expected() return flags & NO_CREW_EXPECTED -/area/proc/set_lightswitch(var/state) +/area/proc/set_lightswitch(var/state) // Set lights in area. TRUE for on, FALSE for off, NULL for initial state. + if(isnull(state)) + state = initial(lightswitch) + lightswitch = state var/obj/machinery/light_switch/L = locate() in src if(L) diff --git a/code/modules/admin/secrets/fun_secrets/light_switches.dm b/code/modules/admin/secrets/fun_secrets/light_switches.dm new file mode 100644 index 00000000000..6ae163d8e79 --- /dev/null +++ b/code/modules/admin/secrets/fun_secrets/light_switches.dm @@ -0,0 +1,30 @@ +/datum/admin_secret_item/fun_secret/light_switches + name = "Set All Light Switches" + log = 0 + feedback = 0 + warn_before_use = 0 + +/datum/admin_secret_item/fun_secret/light_switches/execute(var/mob/user) + . = ..() + if(.) + switch(input("What to set all light switches to?", "Set all light switches", "Cancel") in list("On", "Off", "Initial State", "Cancel")) + if("On") + log_and_message_admins("used secret '[name] ON'", user) + feedback_inc("admin_secrets_used", 1) + feedback_add_details("admin_secrets_used", "[name] ON") + set_switches(TRUE) + if("Off") + log_and_message_admins("used secret '[name] OFF'", user) + feedback_inc("admin_secrets_used", 1) + feedback_add_details("admin_secrets_used", "[name] OFF") + set_switches(FALSE) + if("Initial State") + log_and_message_admins("used secret '[name] INITIAL'", user) + feedback_inc("admin_secrets_used", 1) + feedback_add_details("admin_secrets_used", "[name] INITIAL") + set_switches(null) + +/datum/admin_secret_item/fun_secret/light_switches/proc/set_switches(var/new_state) + for(var/area/A in all_areas) + if(A.lightswitch != new_state) + A.set_lightswitch(new_state) diff --git a/html/changelogs/amunak-lightswitches.yml b/html/changelogs/amunak-lightswitches.yml new file mode 100755 index 00000000000..892d5ac3c4a --- /dev/null +++ b/html/changelogs/amunak-lightswitches.yml @@ -0,0 +1,5 @@ +author: Amunak +delete-after: True +changes: + - admin: "Admins now have a new secret to turn all light switches on, off or to their initial state." + - backend: "The 'area/set_lightswitch' proc can now be passed 'null' to set the area lights to initial state."