diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index b133195e055..01f95d81ab6 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -72,7 +72,9 @@
if(L.flash_eyes(affect_silicon = 1))
L.Weaken(strength)
-
+ if(L.weakeyes)
+ L.Weaken(strength * 1.5)
+ L.visible_message("[L] gasps and shields their eyes!")
/obj/machinery/flasher/emp_act(severity)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 6f4e25a85e4..f40b057d46f 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -75,20 +75,25 @@
return 1
-/obj/item/device/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 5, convert = 1)
+/obj/item/device/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 5, targeted = 1)
add_logs(M, user, "flashed", object="[src.name]")
-
- if(user)
+ if(user && targeted)
+ if(M.weakeyes)
+ M.Weaken(3) //quick weaken bypasses eye protection but has no eye flash
if(M.flash_eyes(1, 1))
M.confused += power
terrible_conversion_proc(M, user)
M.Stun(1)
+ visible_message("[user] blinds [M] with the flash!")
+ user << "You blind [M] with the flash!"
+ M << "[user] blinds you with the flash!"
if(M.weakeyes)
M.Stun(2)
- M.visible_message("[M] gasps and shields their eyes!")
- user.visible_message("[user] blinds [M] with the [src.name]!")
+ M.visible_message("[M] gasps and shields their eyes!", "You gasp and shields your eyes!")
else
- user.visible_message("[user] fails to blind [M] with the [src.name]!")
+ visible_message("[user] fails to blind [M] with the flash!")
+ user << "You fail to blind [M] with the flash!"
+ M << "[user] fails to blind you with the flash!"
else
if(M.flash_eyes())
M.confused += power
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 271f9bdb763..bb9f1ab159d 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -25,16 +25,25 @@
//Checking for protections
var/ear_safety = M.check_ear_prot()
var/distance = max(1,get_dist(src,T))
+
//Flash
- if(M.flash_eyes(affect_silicon = 1))
+ if(M.weakeyes)
+ M.visible_message("[M] screams and collapses!")
+ M << "AAAAGH!"
+ M.Weaken(15) //hella stunned
+ M.Stun(15)
if(ishuman(M))
+ M.emote("scream")
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(E)
- E.damage += rand(1, 3)
+ E.damage += 8
+
+ if(M.flash_eyes(affect_silicon = 1))
M.Stun(max(10/distance, 3))
M.Weaken(max(10/distance, 3))
+
//Bang
if((loc == M) || loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
M.Stun(10)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 5befe1114ba..89814f6b56d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -315,6 +315,9 @@
if(.)
if(visual)
return
+ if(weakeyes)
+ Stun(2)
+
var/obj/item/organ/internal/eyes/E = get_int_organ(/obj/item/organ/internal/eyes)
if(!E)
return
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 017e29fb2fa..810e764ab62 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -201,7 +201,7 @@
var/area/lastarea = null
var/digitalcamo = 0 // Can they be tracked by the AI?
- var/weakeyes //Are they vulnerable to flashes?
+ var/weakeyes = 0 //Are they vulnerable to flashes?
var/list/radar_blips = list() // list of screen objects, radar blips
var/radar_open = 0 // nonzero is radar is open