Files
VOREStation/code/game/objects/devices/flash.dm
morikou@gmail.com a697428db7 Y2K update:
- New "empulse" proc. Works similarly to "explode" proc. It triggers the "emp_act" proc on everything within range. emp_act are effects similar or identical to the effects of the emp grenade. Any major changes to emp effects listed below. Note: EMPs now affect items in your backpack.
- New admin right-click command: EM Pulse. You can create an empulse at the desired location with a size you choose. Similar to Explosion command.
- disable device spell, emp grenade, and disable tech rune all use empulse now.
- New "disable device" spell datum added.
- EMP'ed gas canisters no longer drain the station of power.
- When a borg is EMP'ed, all objects in their module get their emp_act proc triggered.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1018 316c924e-a436-60f5-8080-3fe189b3f50e
2011-02-11 03:01:12 +00:00

112 lines
3.8 KiB
Plaintext

/obj/item/device/flash/attack(mob/living/carbon/M as mob, mob/user as mob)
if ((usr.mutations & 16) && prob(50))
usr << "\red The Flash slips out of your hand."
usr.drop_item()
return
if (src.shots > 0)
var/safety = null
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if (istype(H.glasses, /obj/item/clothing/glasses/sunglasses) || istype(H.head, /obj/item/clothing/head/helmet/welding))
safety = 1
if (istype(M, /mob/living/carbon/alien))//So aliens don't get flashed (they have no external eyes)/N
safety = 1
if(isrobot(user))
spawn(0)
var/atom/movable/overlay/animation = new(user.loc)
animation.layer = user.layer + 1
animation.icon_state = "blank"
animation.icon = 'mob.dmi'
animation.master = user
flick("blspell", animation)
sleep(5)
del(animation)
if (!( safety ))
if (M.client)//Probably here to prevent forced conversion of dced players. /N
if (status == 0)
user << "\red The bulb has been burnt out!"
return
if (!( safety ) && status == 1)
playsound(src.loc, 'flash.ogg', 100, 1)
if(!(M.mutations & 8)) M.weakened = 10
if (prob(10))
status = 0
user << "\red The bulb has burnt out!"
return
if ((M.eye_stat > 15 && prob(M.eye_stat + 50)))
flick("e_flash", M.flash)
M.eye_stat += rand(1, 2)
else
flick("flash", M.flash)
M.eye_stat += rand(0, 2)
if (M.eye_stat >= 20)
M << "\red You eyes start to burn badly!"
M.disabilities |= 1
if (prob(M.eye_stat - 20 + 1))
M << "\red You go blind!"
M.sdisabilities |= 1
if(ticker.mode.name == "revolution" && istype(M, /mob/living/carbon))
if(user.mind in ticker.mode:head_revolutionaries)
ticker.mode:add_revolutionary(M.mind)
for(var/mob/O in viewers(user, null))
if(status == 1)
O.show_message(text("\red [] blinds [] with the flash!", user, M))
else
for(var/mob/O in viewers(user, null))
if(status == 1)
O.show_message(text("\blue [] fails to blind [] with the flash!", user, M))
src.attack_self(user, 1)
return
/obj/item/device/flash/attack_self(mob/living/carbon/user as mob, flag)
if ((usr.mutations & 16) && prob(50))
usr << "\red The Flash slips out of your hand."
usr.drop_item()
return
if ( (world.time + 600) > src.l_time)
src.shots = 5
if (src.shots < 1)
user.show_message("\red *click* *click*", 2)
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
return
src.l_time = world.time
add_fingerprint(user)
src.shots--
playsound(src.loc, 'flash.ogg', 100, 1)
flick("flash2", src)
if(isrobot(user))
spawn(0)
var/atom/movable/overlay/animation = new(user.loc)
animation.layer = user.layer + 1
animation.icon_state = "blank"
animation.icon = 'mob.dmi'
animation.master = user
flick("blspell", animation)
sleep(5)
del(animation)
if (!( flag ))
for(var/mob/living/carbon/M in oviewers(3, null))
if (prob(50))
if (locate(/obj/item/weapon/cloaking_device, M))
for(var/obj/item/weapon/cloaking_device/S in M)
S.active = 0
S.icon_state = "shield0"
if (M.client)
var/safety = null
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if (istype(H.glasses, /obj/item/clothing/glasses/sunglasses) || istype(H.head, /obj/item/clothing/head/helmet/welding))
safety = 1
if (istype(M, /mob/living/carbon/alien))//So aliens don't see those annoying flash screens.
safety = 1
if (!( safety ))
flick("flash", M.flash)
/obj/item/device/flash/emp_act(severity)
src.attack_self()
..()