Fixes issue 865.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4694 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
petethegoat@gmail.com
2012-09-15 23:37:20 +00:00
parent 0bbb591b3e
commit 5b33027e69
4 changed files with 106 additions and 152 deletions

View File

@@ -1,161 +1,124 @@
/obj/item/device/radio/electropack /obj/item/device/radio/electropack
name = "Electropack" name = "electropack"
desc = "Dance my monkeys! DANCE!!!" desc = "Dance my monkeys! DANCE!!!"
icon_state = "electropack0" icon_state = "electropack0"
var/code = 2 item_state = "electropack"
var/e_pads = 0.0
g_amt = 2500
m_amt = 10000
frequency = 1449 frequency = 1449
w_class = 5.0
flags = FPRINT | CONDUCT | TABLEPASS flags = FPRINT | CONDUCT | TABLEPASS
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
item_state = "electropack" w_class = 5.0
g_amt = 2500
/obj/item/device/radio/electropack/examine() m_amt = 10000
set src in view() var/code = 2
..()
if ((in_range(src, usr) || src.loc == usr))
if (src.e_pads)
usr << "\blue The electric pads are exposed!"
return
/obj/item/device/radio/electropack/attack_paw(mob/user as mob)
return src.attack_hand(user)
return
/obj/item/device/radio/electropack/attack_hand(mob/user as mob) /obj/item/device/radio/electropack/attack_hand(mob/user as mob)
if(src == user.back)
if (src == user.back) user << "<span class='notice'>You need help taking this off!</span>"
user << "\blue You need help taking this off!"
return return
else ..()
..()
return
/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
if(istype(W, /obj/item/clothing/head/helmet))
if(!b_stat)
user << "<span class='notice'>[src] is not ready to be attached!</span>"
return
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
A.icon = 'icons/obj/assemblies.dmi'
if (istype(W, /obj/item/weapon/screwdriver)) user.drop_from_inventory(W)
src.e_pads = !( src.e_pads ) W.loc = A
if (src.e_pads) W.master = A
user.show_message("\blue The electric pads have been exposed!") A.part1 = W
else
user.show_message("\blue The electric pads have been reinserted!")
src.add_fingerprint(user)
return
else
if (istype(W, /obj/item/clothing/head/helmet))
var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user )
A.icon = 'icons/obj/assemblies.dmi'
user.drop_from_inventory(W) user.drop_from_inventory(src)
W.loc = A loc = A
W.master = A master = A
A.part1 = W A.part2 = src
user.drop_from_inventory(src) user.put_in_hands(A)
src.loc = A A.add_fingerprint(user)
src.master = A
A.part2 = src
user.put_in_hands(A)
A.add_fingerprint(user)
return
/obj/item/device/radio/electropack/Topic(href, href_list) /obj/item/device/radio/electropack/Topic(href, href_list)
//..() //..()
if (usr.stat || usr.restrained()) if(usr.stat || usr.restrained())
return return
if (((istype(usr, /mob/living/carbon/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(src.master) || (in_range(src, usr) && istype(src.loc, /turf))))) if(((istype(usr, /mob/living/carbon/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(master) || (in_range(src, usr) && istype(loc, /turf)))))
usr.machine = src usr.machine = src
if (href_list["freq"]) if(href_list["freq"])
var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"]))
set_frequency(new_frequency) set_frequency(new_frequency)
else else
if (href_list["code"]) if(href_list["code"])
src.code += text2num(href_list["code"]) code += text2num(href_list["code"])
src.code = round(src.code) code = round(code)
src.code = min(100, src.code) code = min(100, code)
src.code = max(1, src.code) code = max(1, code)
else else
if (href_list["power"]) if(href_list["power"])
src.on = !( src.on ) on = !( on )
src.icon_state = text("electropack[]", src.on) icon_state = "electropack[on]"
if (!( src.master )) if(!( master ))
if (istype(src.loc, /mob)) if(istype(loc, /mob))
attack_self(src.loc) attack_self(loc)
else else
for(var/mob/M in viewers(1, src)) for(var/mob/M in viewers(1, src))
if (M.client) if(M.client)
src.attack_self(M) attack_self(M)
//Foreach goto(308)
else else
if (istype(src.master.loc, /mob)) if(istype(master.loc, /mob))
src.attack_self(src.master.loc) attack_self(master.loc)
else else
for(var/mob/M in viewers(1, src.master)) for(var/mob/M in viewers(1, master))
if (M.client) if(M.client)
src.attack_self(M) attack_self(M)
//Foreach goto(384)
else else
usr << browse(null, "window=radio") usr << browse(null, "window=radio")
return return
return return
/*
/obj/item/device/radio/electropack/accept_rad(obj/item/device/radio/signaler/R as obj, message)
if ((istype(R, /obj/item/device/radio/signaler) && R.frequency == src.frequency && R.code == src.code))
return 1
else
return null
return*/
/obj/item/device/radio/electropack/receive_signal(datum/signal/signal) /obj/item/device/radio/electropack/receive_signal(datum/signal/signal)
if(!signal || (signal.encryption != code)) if(!signal || signal.encryption != code)
return return
if ((ismob(src.loc) && src.on)) if(ismob(loc) && on)
var/mob/M = loc
var/mob/M = src.loc
var/turf/T = M.loc var/turf/T = M.loc
if ((istype(T, /turf))) if(istype(T, /turf))
if (!M.moved_recently && M.last_move) if(!M.moved_recently && M.last_move)
M.moved_recently = 1 M.moved_recently = 1
step(M, M.last_move) step(M, M.last_move)
sleep 50 sleep(50)
if(M) if(M)
M.moved_recently = 0 M.moved_recently = 0
M.show_message("\red <B>You feel a sharp shock!</B>") M << "<span class='danger'>You feel a sharp shock!</span>"
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, M) s.set_up(3, 1, M)
s.start() s.start()
M.Weaken(10) M.Weaken(10)
if ((src.master && src.wires & 1)) if(master && wires & 1)
src.master.receive_signal() master.receive_signal()
return return
/obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1) /obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1)
if (!( istype(user, /mob/living/carbon/human) )) if(!istype(user, /mob/living/carbon/human))
return return
user.machine = src user.machine = src
var/dat = {"<TT> var/dat = {"<TT>
<A href='?src=\ref[src];power=1'>Turn [src.on ? "Off" : "On"]</A><BR> <A href='?src=\ref[src];power=1'>Turn [on ? "Off" : "On"]</A><BR>
<B>Frequency/Code</B> for electropack:<BR> <B>Frequency/Code</B> for electropack:<BR>
Frequency: Frequency:
<A href='byond://?src=\ref[src];freq=-10'>-</A> <A href='byond://?src=\ref[src];freq=-10'>-</A>
<A href='byond://?src=\ref[src];freq=-2'>-</A> [format_frequency(src.frequency)] <A href='byond://?src=\ref[src];freq=-2'>-</A> [format_frequency(frequency)]
<A href='byond://?src=\ref[src];freq=2'>+</A> <A href='byond://?src=\ref[src];freq=2'>+</A>
<A href='byond://?src=\ref[src];freq=10'>+</A><BR> <A href='byond://?src=\ref[src];freq=10'>+</A><BR>
Code: Code:
<A href='byond://?src=\ref[src];code=-5'>-</A> <A href='byond://?src=\ref[src];code=-5'>-</A>
<A href='byond://?src=\ref[src];code=-1'>-</A> [src.code] <A href='byond://?src=\ref[src];code=-1'>-</A> [code]
<A href='byond://?src=\ref[src];code=1'>+</A> <A href='byond://?src=\ref[src];code=1'>+</A>
<A href='byond://?src=\ref[src];code=5'>+</A><BR> <A href='byond://?src=\ref[src];code=5'>+</A><BR>
</TT>"} </TT>"}

View File

@@ -7,18 +7,18 @@
var/last_time = 1.0 var/last_time = 1.0
/obj/structure/stool/bed/chair/e_chair/New() /obj/structure/stool/bed/chair/e_chair/New()
..()
overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
return return
/obj/structure/stool/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob) /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)) if(istype(W, /obj/item/weapon/wrench))
var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair(src.loc) var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair(loc)
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
C.dir = src.dir C.dir = dir
src.part.loc = src.loc part.loc = loc
src.part.master = null part.master = null
src.part = null part = null
del(src) del(src)
return return
return return
@@ -34,6 +34,7 @@
else else
on = 1 on = 1
icon_state = "echair1" icon_state = "echair1"
usr << "<span class='notice'>You switch [on ? "on" : "off"] [src].</span>"
return return
/obj/structure/stool/bed/chair/e_chair/rotate() /obj/structure/stool/bed/chair/e_chair/rotate()
@@ -43,11 +44,11 @@
return return
/obj/structure/stool/bed/chair/e_chair/proc/shock() /obj/structure/stool/bed/chair/e_chair/proc/shock()
if(!(src.on)) if(!on)
return return
if((src.last_time + 50) > world.time) if(last_time + 50 > world.time)
return return
src.last_time = world.time last_time = world.time
// special power handling // special power handling
var/area/A = get_area(src) var/area/A = get_area(src)
@@ -65,12 +66,11 @@
s.start() s.start()
if(buckled_mob) if(buckled_mob)
buckled_mob.burn_skin(85) buckled_mob.burn_skin(85)
buckled_mob << "\red <B>You feel a deep shock course through your body!</B>" buckled_mob << "<span class='danger'>You feel a deep shock course through your body!</span>"
sleep(1) sleep(1)
buckled_mob.burn_skin(85) buckled_mob.burn_skin(85)
buckled_mob.Stun(600) buckled_mob.Stun(600)
for(var/mob/M in hearers(src, null)) visible_message("<span class='danger'>The electric chair went off!</span>", "<span class='danger'>You hear a deep sharp shock!</span>")
M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
A.power_light = light A.power_light = light
A.updateicon() A.updateicon()

View File

@@ -6,25 +6,26 @@
/obj/structure/stool/bed/chair/New() /obj/structure/stool/bed/chair/New()
if(anchored) if(anchored)
src.verbs -= /atom/movable/verb/pull src.verbs -= /atom/movable/verb/pull
handle_rotation()
..() ..()
spawn(3) //sorry. i don't think there's a better way to do this.
handle_rotation()
return return
/obj/structure/stool/bed/chair/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/structure/stool/bed/chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() ..()
if(istype(W, /obj/item/assembly/shock_kit)) if(istype(W, /obj/item/assembly/shock_kit))
var/obj/item/assembly/shock_kit/SK = W
if(!SK.status)
user << "<span class='notice'>[SK] is not ready to be attached!</span>"
return
user.drop_item()
var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc) var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
E.dir = src.dir E.dir = dir
E.part = W E.part = SK
W.loc = E SK.loc = E
W.master = E SK.master = E
user.u_equip(W)
W.layer = initial(W.layer)
del(src) del(src)
return
return
/obj/structure/stool/bed/chair/proc/handle_rotation() //making this into a seperate proc so office chairs can call it on Move() /obj/structure/stool/bed/chair/proc/handle_rotation() //making this into a seperate proc so office chairs can call it on Move()
if(src.dir == NORTH) if(src.dir == NORTH)

View File

@@ -1,56 +1,46 @@
/obj/item/assembly/shock_kit /obj/item/assembly/shock_kit
name = "Shock Kit" name = "electrohelmet assembly"
desc = "This appears to be made from both an Electric Pack and a Helmet." desc = "This appears to be made from both an electropack and a helmet."
icon_state = "shock_kit" icon_state = "shock_kit"
var/obj/item/clothing/head/helmet/part1 = null var/obj/item/clothing/head/helmet/part1 = null
var/obj/item/device/radio/electropack/part2 = null var/obj/item/device/radio/electropack/part2 = null
var/status = 0.0 var/status = 0
w_class = 5.0 w_class = 5.0
flags = FPRINT | TABLEPASS| CONDUCT flags = FPRINT | TABLEPASS| CONDUCT
/obj/item/assembly/shock_kit/Del() /obj/item/assembly/shock_kit/Del()
//src.part1 = null del(part1)
del(src.part1) del(part2)
//src.part2 = null
del(src.part2)
..() ..()
return return
/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob)
..() if(istype(W, /obj/item/weapon/wrench) && !status)
if ((istype(W, /obj/item/weapon/wrench) && !( src.status ))) var/turf/T = loc
var/turf/T = src.loc if(ismob(T))
if (ismob(T))
T = T.loc T = T.loc
src.part1.loc = T part1.loc = T
src.part2.loc = T part2.loc = T
src.part1.master = null part1.master = null
src.part2.master = null part2.master = null
src.part1 = null part1 = null
src.part2 = null part2 = null
del(src) del(src)
return return
if (!( istype(W, /obj/item/weapon/screwdriver) )) if(istype(W, /obj/item/weapon/screwdriver))
return status = !status
src.status = !( src.status ) user << "<span class='notice'>[src] is now [status ? "secured" : "unsecured"]!</span>"
if (!src.status) add_fingerprint(user)
user.show_message("\blue The shock pack is now secured!", 1)
else
user.show_message("\blue The shock pack is now unsecured!", 1)
src.add_fingerprint(user)
return return
/obj/item/assembly/shock_kit/attack_self(mob/user as mob) /obj/item/assembly/shock_kit/attack_self(mob/user as mob)
src.part1.attack_self(user, src.status) part1.attack_self(user, status)
src.part2.attack_self(user, src.status) part2.attack_self(user, status)
src.add_fingerprint(user) add_fingerprint(user)
return return
/obj/item/assembly/shock_kit/receive_signal() /obj/item/assembly/shock_kit/receive_signal()
//***** if(istype(loc, /obj/structure/stool/bed/chair/e_chair))
//world << "Shock kit got r_signal" var/obj/structure/stool/bed/chair/e_chair/C = loc
if (istype(src.loc, /obj/structure/stool/bed/chair/e_chair))
var/obj/structure/stool/bed/chair/e_chair/C = src.loc
//world << "Shock kit sending shock to EC"
C.shock() C.shock()
return return