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