diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm
index d75b661f8c4..9894a4fdaa7 100644
--- a/code/game/objects/devices/flashlight.dm
+++ b/code/game/objects/devices/flashlight.dm
@@ -14,61 +14,64 @@
icon_off = "flight0"
- attack_self(mob/user)
- on = !on
- if (on)
- icon_state = icon_on
- user.total_luminosity += brightness_on
- else
- icon_state = icon_off
- user.total_luminosity -= brightness_on
+/obj/item/device/flashlight/attack_self(mob/user)
+ if(!isturf(user.loc))
+ user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
+ on = !on
+ if (on)
+ icon_state = icon_on
+ user.total_luminosity += brightness_on
+ else
+ icon_state = icon_off
+ user.total_luminosity -= brightness_on
+ return
- attack(mob/M as mob, mob/user as mob)
- src.add_fingerprint(user)
- if(src.on && user.zone_sel.selecting == "eyes")
- if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
- return ..()//just hit them in the head
+/obj/item/device/flashlight/attack(mob/M as mob, mob/user as mob)
+ src.add_fingerprint(user)
+ if(src.on && user.zone_sel.selecting == "eyes")
+ if ((user.mutations & CLUMSY || user.brainloss >= 60) && prob(50))//too dumb to use flashlight properly
+ return ..()//just hit them in the head
- if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
- usr.show_message("\red You don't have the dexterity to do this!",1)
- return
+ if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")//don't have dexterity
+ usr.show_message("\red You don't have the dexterity to do this!",1)
+ return
- var/mob/living/carbon/human/H = M//mob has protective eyewear
- if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
- user << text("\blue You're going to need to remove that [] first.", ((H.head && H.head.flags & HEADCOVERSEYES) ? "helmet" : ((H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) ? "mask": "glasses")))
- return
+ var/mob/living/carbon/human/H = M//mob has protective eyewear
+ if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
+ user << text("\blue You're going to need to remove that [] first.", ((H.head && H.head.flags & HEADCOVERSEYES) ? "helmet" : ((H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) ? "mask": "glasses")))
+ return
- for(var/mob/O in viewers(M, null))//echo message
- if ((O.client && !(O.blinded )))
- O.show_message("\blue [(O==user?"You direct":"[user] directs")] [src] to [(M==user? "your":"[M]")] eyes", 1)
+ for(var/mob/O in viewers(M, null))//echo message
+ if ((O.client && !(O.blinded )))
+ O.show_message("\blue [(O==user?"You direct":"[user] directs")] [src] to [(M==user? "your":"[M]")] eyes", 1)
- if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))//robots and aliens are unaffected
- if(M.stat > 1 || M.sdisabilities & 1)//mob is dead or fully blind
- if(M!=user)
- user.show_message(text("\red [] pupils does not react to the light!", M),1)
- else if(M.mutations & XRAY)//mob has X-RAY vision
- if(M!=user)
- user.show_message(text("\red [] pupils give an eerie glow!", M),1)
- else //nothing wrong
- flick("flash", M.flash)//flash the affected mob
- if(M!=user)
- user.show_message(text("\blue [] pupils narrow", M),1)
- else
- return ..()
+ if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))//robots and aliens are unaffected
+ if(M.stat > 1 || M.sdisabilities & 1)//mob is dead or fully blind
+ if(M!=user)
+ user.show_message(text("\red [] pupils does not react to the light!", M),1)
+ else if(M.mutations & XRAY)//mob has X-RAY vision
+ if(M!=user)
+ user.show_message(text("\red [] pupils give an eerie glow!", M),1)
+ else //nothing wrong
+ flick("flash", M.flash)//flash the affected mob
+ if(M!=user)
+ user.show_message(text("\blue [] pupils narrow", M),1)
+ else
+ return ..()
- pickup(mob/user)
- if(on)
- src.sd_SetLuminosity(0)
- user.total_luminosity += brightness_on
+/obj/item/device/flashlight/pickup(mob/user)
+ if(on)
+ src.sd_SetLuminosity(0)
+ user.total_luminosity += brightness_on
- dropped(mob/user)
- if(on)
- user.total_luminosity -= brightness_on
- src.sd_SetLuminosity(brightness_on)
+/obj/item/device/flashlight/dropped(mob/user)
+ if(on)
+ user.total_luminosity -= brightness_on
+ src.sd_SetLuminosity(brightness_on)
/obj/item/device/flashlight/pen
@@ -83,8 +86,38 @@
+/obj/item/device/flashlight/pen/paralysis/attack(mob/M as mob, mob/user as mob)
+ if(!ismob(M))
+ return
+ user << "\red You stab [M] with the pen."
+ M << "\red You feel a tiny prick!"
+ M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [src.name] by [user.name] ([user.ckey])")
+ user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to stab [M.name] ([M.ckey])")
+ ..()
+ return
+
+/obj/item/device/flashlight/pen/paralysis/New()
+ var/datum/reagents/R = new/datum/reagents(15)
+ reagents = R
+ R.my_atom = src
+ R.add_reagent("zombiepowder", 15)
+ ..()
+ return
+
+/obj/item/device/flashlight/pen/paralysis/attack(mob/M as mob, mob/user as mob)
+ if (!( istype(M, /mob) ))
+ return
+ ..()
+ if (reagents.total_volume)
+ if(M.reagents) reagents.trans_to(M, 15)
+ return
+
+
//Looks like most of the clothing lights are here
/obj/item/clothing/head/helmet/hardhat/attack_self(mob/user)
+ if(!isturf(user.loc))
+ user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
+ return
on = !on
icon_state = "hardhat[on]_[color]"
item_state = "hardhat[on]_[color]"
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 44bfa14c7fb..a1fb5379f2d 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -196,32 +196,6 @@
if(M.reagents) reagents.trans_to(M, 50) //used to be 150
return
-/obj/item/device/flashlight/pen/paralysis/attack(mob/M as mob, mob/user as mob)
- if(!ismob(M))
- return
- user << "\red You stab [M] with the pen."
- M << "\red You feel a tiny prick!"
- M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [src.name] by [user.name] ([user.ckey])")
- user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to stab [M.name] ([M.ckey])")
- ..()
- return
-
-/obj/item/device/flashlight/pen/paralysis/New()
- var/datum/reagents/R = new/datum/reagents(15)
- reagents = R
- R.my_atom = src
- R.add_reagent("zombiepowder", 15)
- ..()
- return
-
-/obj/item/device/flashlight/pen/paralysis/attack(mob/M as mob, mob/user as mob)
- if (!( istype(M, /mob) ))
- return
- ..()
- if (reagents.total_volume)
- if(M.reagents) reagents.trans_to(M, 15)
- return
-
/obj/item/weapon/Bump(mob/M as mob)
spawn( 0 )
..()