mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-30 12:13:02 +00:00
107 lines
3.0 KiB
Plaintext
107 lines
3.0 KiB
Plaintext
/obj/structure/stool/bed/chair/e_chair
|
|
name = "electrified chair"
|
|
desc = "Looks absolutely terrifying!"
|
|
icon_state = "e_chair0"
|
|
var/atom/movable/overlay/overl = null
|
|
var/on = 0.0
|
|
var/obj/item/assembly/shock_kit/part1 = null
|
|
var/isshocking
|
|
var/datum/effect/effect/system/spark_spread/spark = new /datum/effect/effect/system/spark_spread
|
|
var/list/mob/living/affected = list()
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/New()
|
|
|
|
src.overl = new /atom/movable/overlay( src.loc )
|
|
src.overl.icon = 'objects.dmi'
|
|
src.overl.icon_state = "e_chairo0"
|
|
src.overl.layer = 5
|
|
src.overl.name = "electrified chair"
|
|
src.overl.master = src
|
|
spark.set_up(12, 1, src)
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/Del()
|
|
|
|
//src.overl = null
|
|
del(src.overl)
|
|
..()
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
|
|
if (istype(W, /obj/item/weapon/wrench))
|
|
var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair( src.loc )
|
|
playsound(src.loc, 'Ratchet.ogg', 50, 1)
|
|
C.dir = src.dir
|
|
src.part1.loc = src.loc
|
|
src.part1.master = null
|
|
src.part1 = null
|
|
//SN src = null
|
|
del(src)
|
|
return
|
|
if(istype(W, /obj/item/device/assembly/signaler))
|
|
var/obj/item/assembly/shock_kit/kit = src.part1
|
|
var/obj/item/device/radio/electropack/target = kit.part2
|
|
var/obj/item/device/assembly/signaler/S = W
|
|
target.set_frequency(S.frequency)
|
|
target.code = S.code
|
|
for(var/mob/M in viewers(src, null))
|
|
M.show_message("\red [user] has set the electric chair using the [W].")
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/verb/toggle_power()
|
|
set name = "Toggle Electric Chair"
|
|
set category = "Object"
|
|
set src in oview(1)
|
|
|
|
if ((usr.stat || usr.restrained() || !( usr.canmove ) || usr.lying))
|
|
return
|
|
if(isshocking && on)
|
|
shock()
|
|
src.on = !( src.on )
|
|
src.icon_state = text("e_chair[]", src.on)
|
|
src.overl.icon_state = text("e_chairo[]", src.on)
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/rotate()
|
|
..()
|
|
overlays = null
|
|
overlays += image('objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) //there's probably a better way of handling this, but eh. -Pete
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/proc/shock()
|
|
if (!( src.on ))
|
|
return
|
|
if(isshocking)
|
|
processing_objects.Remove(src)
|
|
src.icon_state = text("e_chair[]", src.on)
|
|
src.overl.icon_state = text("e_chairo[]", src.on)
|
|
for(var/mob/living/M in affected)
|
|
M.jitteriness = 0
|
|
M.is_jittery = 0
|
|
M.anchored = 0
|
|
affected.Remove(M)
|
|
isshocking = 0
|
|
return
|
|
else
|
|
src.icon_state = "e_chairs"
|
|
src.overl.icon_state = "e_chairos"
|
|
spark.start()
|
|
for(var/mob/M in hearers(src, null))
|
|
M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
|
|
processing_objects.Add(src)
|
|
isshocking = 1
|
|
return
|
|
|
|
/obj/structure/stool/bed/chair/e_chair/process()
|
|
// special power handling
|
|
var/area/A = get_area(src)
|
|
if(isarea(A) && A.powered(EQUIP))
|
|
A.use_power(EQUIP, 5000)
|
|
for(var/mob/living/M in src.loc)
|
|
affected.Add(M)
|
|
M.make_jittery(1000)
|
|
M.anchored = 1
|
|
M.Stun(600)
|
|
M.burn_skin(10)
|
|
spark.start() |