diff --git a/code/__DEFINES/preferences_defines.dm b/code/__DEFINES/preferences_defines.dm index 54ff7d5142b..22b06dec3cb 100644 --- a/code/__DEFINES/preferences_defines.dm +++ b/code/__DEFINES/preferences_defines.dm @@ -83,8 +83,9 @@ // toggles_3 variables. These MUST be prefixed with PREFTOGGLE_3 #define PREFTOGGLE_3_COGBAR_ANIMATIONS (1<<0) // 1 +#define PREFTOGGLE_3_DARK_FLASH (1<<1) // 2 -#define TOGGLES_3_TOTAL 1 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. +#define TOGGLES_3_TOTAL 3 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined. #define TOGGLES_3_DEFAULT (PREFTOGGLE_3_COGBAR_ANIMATIONS) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index ccf7d3528f5..4ab44ce1b49 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -125,9 +125,17 @@ icon = 'icons/mob/screen_gen.dmi' screen_loc = "WEST,SOUTH to EAST,NORTH" icon_state = "flash" + var/dark_type = /atom/movable/screen/fullscreen/stretch/flash/dark + +/atom/movable/screen/fullscreen/stretch/flash/dark + icon_state = "flash_dark" /atom/movable/screen/fullscreen/stretch/flash/noise icon_state = "noise" + dark_type = /atom/movable/screen/fullscreen/stretch/flash/noise/dark + +/atom/movable/screen/fullscreen/stretch/flash/noise/dark + icon_state = "noise_dark" /atom/movable/screen/fullscreen/stretch/high icon = 'icons/mob/screen_gen.dmi' diff --git a/code/modules/client/preference/link_processing.dm b/code/modules/client/preference/link_processing.dm index ea05103d6f3..1642a093403 100644 --- a/code/modules/client/preference/link_processing.dm +++ b/code/modules/client/preference/link_processing.dm @@ -1065,6 +1065,9 @@ var/atom/movable/screen/plane_master/cogbar/PM = locate(/atom/movable/screen/plane_master/cogbar) in parent.screen PM.backdrop(parent.mob) + if("dark_flash") + toggles3 ^= PREFTOGGLE_3_DARK_FLASH + if("be_special") var/r = href_list["role"] if(r in GLOB.special_roles) diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 4c7189c9be2..19f0b2c6e3a 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -487,6 +487,7 @@ GLOBAL_LIST_INIT(special_role_times, list( dat += " - TGUI Input - Large Buttons: [(toggles2 & PREFTOGGLE_2_LARGE_INPUT_BUTTONS) ? "Yes" : "No"]
" dat += " - TGUI Input - Swap Buttons: [(toggles2 & PREFTOGGLE_2_SWAP_INPUT_BUTTONS) ? "Yes" : "No"]
" dat += " - TGUI Say Theme: [(toggles2 & PREFTOGGLE_2_ENABLE_TGUI_SAY_LIGHT_MODE) ? "Light" : "Dark"]
" + dat += "Dark flash: [(toggles3 & PREFTOGGLE_3_DARK_FLASH) ? "Yes" : "No"]
" dat += "" if(TAB_ANTAG) // Antagonist's Preferences (and maps) diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm index acb50711528..98980017b18 100644 --- a/code/modules/mob/living/carbon/carbon_procs.dm +++ b/code/modules/mob/living/carbon/carbon_procs.dm @@ -402,7 +402,7 @@ if((E?.status & ORGAN_DEAD) || E?.is_broken() || !.) return FALSE -/mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash) +/mob/living/carbon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, flash_type = /atom/movable/screen/fullscreen/stretch/flash) //Parent proc checks if a mob can_be_flashed() . = ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 574f54113c0..ab2dd4fa319 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -856,10 +856,13 @@ return TRUE //called when the mob receives a bright flash -/mob/living/proc/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash) +/mob/living/proc/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, flash_type = /atom/movable/screen/fullscreen/stretch/flash) SIGNAL_HANDLER if(can_be_flashed(intensity, override_blindness_check)) - overlay_fullscreen("flash", type) + var/atom/movable/screen/fullscreen/stretch/flash/flash = flash_type + if(client && client.prefs.toggles3 & PREFTOGGLE_3_DARK_FLASH) + flash_type = flash.dark_type + overlay_fullscreen("flash", flash_type) addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", 25), 25) return 1 diff --git a/code/modules/mob/living/silicon/robot/drone/maint_drone.dm b/code/modules/mob/living/silicon/robot/drone/maint_drone.dm index 816d167dfcb..e1fe28f53a2 100644 --- a/code/modules/mob/living/silicon/robot/drone/maint_drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/maint_drone.dm @@ -396,7 +396,7 @@ ..() update_headlamp(TRUE, 0, FALSE) -/mob/living/silicon/robot/drone/flash_eyes(intensity = 1, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash/noise) +/mob/living/silicon/robot/drone/flash_eyes(intensity = 1, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, laser_pointer = FALSE, flash_type = /atom/movable/screen/fullscreen/stretch/flash/noise) if(affect_silicon) return ..() diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index c55c3778426..530000b5b91 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -55,7 +55,7 @@ sleep(3) step_away(src, user, 15) -/mob/living/silicon/robot/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash/noise) +/mob/living/silicon/robot/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, flash_type = /atom/movable/screen/fullscreen/stretch/flash/noise) if(!affect_silicon || !can_be_flashed()) return Confused(intensity * 4 SECONDS) diff --git a/code/modules/mob/living/silicon/silicon_mob.dm b/code/modules/mob/living/silicon/silicon_mob.dm index 55b67a49a40..6a067da1c52 100644 --- a/code/modules/mob/living/silicon/silicon_mob.dm +++ b/code/modules/mob/living/silicon/silicon_mob.dm @@ -466,7 +466,7 @@ /mob/living/silicon/get_access() return IGNORE_ACCESS //silicons always have access -/mob/living/silicon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, type = /atom/movable/screen/fullscreen/stretch/flash/noise) +/mob/living/silicon/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, laser_pointer = FALSE, flash_type = /atom/movable/screen/fullscreen/stretch/flash/noise) if(affect_silicon) return ..() diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 140ceb8e5d0..662f1a5b5c2 100644 Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ