diff --git a/code/datums/action.dm b/code/datums/action.dm
index cb56c26b91..8659a9e7c4 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -544,6 +544,9 @@
cooldown = world.time
owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE)
+/datum/action/item_action/flash
+ name = "Flash"
+
//Preset for spells
/datum/action/spell_action
check_flags = 0
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 69c50c5461..7df10b56f7 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -250,6 +250,36 @@
throwforce = 12
glass_colour_type = /datum/client_colour/glass_colour/red
+/obj/item/clothing/glasses/sunglasses/stunglasses
+ name = "stunglasses"
+ desc = "Sunglasses with inbuilt flashes. Made for those who prefer to walk around in style, who needs clumsy flashes anyway?"
+ actions_types = list(/datum/action/item_action/flash)
+ var/obj/item/assembly/flash/installed
+
+/obj/item/clothing/glasses/sunglasses/stunglasses/Initialize()
+ . = ..()
+ if (!installed)
+ installed = new(src)
+
+/obj/item/clothing/glasses/sunglasses/stunglasses/ui_action_click(mob/user)
+ if (installed && !installed.crit_fail)
+ installed.attack_self(user)
+ else
+ to_chat(user, "Install a new flash in [src]!")
+
+/obj/item/clothing/glasses/sunglasses/stunglasses/attackby(obj/item/W,mob/user)
+ if (istype(W,/obj/item/screwdriver))
+ if (installed)
+ installed.forceMove(get_turf(src))
+ to_chat(user, "You remove [installed] from [src].")
+ installed = null
+ if (istype(W,/obj/item/assembly/flash))
+ if (!installed)
+ W.forceMove(src)
+ to_chat(user, "You install [W] into [src].")
+ installed = W
+ . = ..()
+
/obj/item/clothing/glasses/welding
name = "welding goggles"
desc = "Protects the eyes from welders; approved by the mad scientist association."
@@ -458,4 +488,4 @@
if(client && client.prefs.uses_glasses_colour && glasses_equipped)
add_client_colour(G.glass_colour_type)
else
- remove_client_colour(G.glass_colour_type)
+ remove_client_colour(G.glass_colour_type)
\ No newline at end of file
diff --git a/code/modules/crafting/recipes/recipes_clothing.dm b/code/modules/crafting/recipes/recipes_clothing.dm
index 26de5f380d..3e036c7b29 100644
--- a/code/modules/crafting/recipes/recipes_clothing.dm
+++ b/code/modules/crafting/recipes/recipes_clothing.dm
@@ -86,7 +86,17 @@
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1)
category = CAT_CLOTHING
-
+/* //Kevinz doesn't want it as a recipe for now, leaving it in if anything ever changes to let it in
+/datum/crafting_recipe/stunglasses
+ name = "Stunglasses"
+ result = /obj/item/clothing/glasses/sunglasses/stunglasses
+ time = 60
+ tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
+ reqs = list(/obj/item/assembly/flash = 1,
+ /obj/item/clothing/glasses/sunglasses = 1,
+ /obj/item/stack/cable_coil = 5)
+ category = CAT_CLOTHING
+*/
/datum/crafting_recipe/ghostsheet
name = "Ghost Sheet"
result = /obj/item/clothing/suit/ghost_sheet