mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
* 516 compat: HTML wrappers * More HTML * Legacy gult * Forgot these * forgot that thanks travis
173 lines
4.8 KiB
Plaintext
173 lines
4.8 KiB
Plaintext
/obj/item/device/radio/electropack
|
|
name = "electropack"
|
|
desc = "Dance my monkeys! DANCE!!!"
|
|
icon_state = "electropack0"
|
|
item_state = "electropack"
|
|
origin_tech = Tc_MATERIALS + "=1;" + Tc_POWERSTORAGE + "=2"
|
|
frequency = 1449
|
|
flags = FPRINT
|
|
siemens_coefficient = 1
|
|
slot_flags = SLOT_BACK
|
|
w_class = W_CLASS_HUGE
|
|
starting_materials = list(MAT_IRON = 10000, MAT_GLASS = 2500)
|
|
w_type = RECYK_ELECTRONIC
|
|
var/code = 2
|
|
var/datum/radio_frequency/radio_connection
|
|
|
|
/obj/item/device/radio/electropack/New()
|
|
..()
|
|
if(radio_controller)
|
|
initialize()
|
|
else
|
|
spawn(50)
|
|
if(radio_controller)
|
|
initialize()
|
|
|
|
/obj/item/device/radio/electropack/initialize()
|
|
if(frequency < MINIMUM_FREQUENCY || frequency > MAXIMUM_FREQUENCY)
|
|
src.frequency = sanitize_frequency(src.frequency)
|
|
|
|
set_frequency(frequency)
|
|
|
|
/obj/item/device/radio/electropack/set_frequency(new_frequency)
|
|
radio_controller.remove_object(src, frequency)
|
|
frequency = new_frequency
|
|
radio_connection = radio_controller.add_object(src, frequency)
|
|
|
|
/obj/item/device/radio/electropack/attack_hand(mob/user as mob)
|
|
if(src == user.back)
|
|
to_chat(user, "<span class='notice'>You need help taking this off!</span>")
|
|
return
|
|
..()
|
|
|
|
/obj/item/device/radio/electropack/prepickup(mob/user)
|
|
return src == user.back //Prevents picking the item up if it's the user's back slot item. e.g.: if they are quickswapping
|
|
|
|
/obj/item/device/radio/electropack/Destroy()
|
|
if(istype(src.loc, /obj/item/assembly/shock_kit))
|
|
var/obj/item/assembly/shock_kit/S = src.loc
|
|
if(S.part1 == src)
|
|
S.part1 = null
|
|
else if(S.part2 == src)
|
|
S.part2 = null
|
|
master = null
|
|
if(radio_controller)
|
|
radio_controller.remove_object(src, frequency)
|
|
..()
|
|
|
|
/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)
|
|
to_chat(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'
|
|
|
|
user.drop_from_inventory(W)
|
|
W.forceMove(A)
|
|
W.master = A
|
|
A.part1 = W
|
|
|
|
user.drop_from_inventory(src)
|
|
loc = A
|
|
master = A
|
|
A.part2 = src
|
|
|
|
user.put_in_hands(A)
|
|
A.add_fingerprint(user)
|
|
|
|
/obj/item/device/radio/electropack/Topic(href, href_list)
|
|
//..()
|
|
if(usr.stat || usr.restrained())
|
|
return
|
|
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.set_machine(src)
|
|
if(href_list["freq"])
|
|
var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"]))
|
|
set_frequency(new_frequency)
|
|
else
|
|
if(href_list["code"])
|
|
code += text2num(href_list["code"])
|
|
code = round(code)
|
|
code = min(100, code)
|
|
code = max(1, code)
|
|
else
|
|
if(href_list["power"])
|
|
on = !( on )
|
|
icon_state = "electropack[on]"
|
|
if(!( master ))
|
|
if(istype(loc, /mob))
|
|
attack_self(loc)
|
|
else
|
|
for(var/mob/M in viewers(1, src))
|
|
if(M.client)
|
|
attack_self(M)
|
|
else
|
|
if(istype(master.loc, /mob))
|
|
attack_self(master.loc)
|
|
else
|
|
for(var/mob/M in viewers(1, master))
|
|
if(M.client)
|
|
attack_self(M)
|
|
else
|
|
usr << browse(null, "window=radio")
|
|
return
|
|
return
|
|
|
|
/obj/item/device/radio/electropack/receive_signal(datum/signal/signal)
|
|
if(!signal || signal.encryption != code)
|
|
return
|
|
|
|
if(istype(src.loc, /obj/mecha) && on)
|
|
var/obj/mecha/R = src.loc //R is for GIANT ROBOT
|
|
R.shock_n_boot()
|
|
|
|
else if(istype(src.loc, /obj/item/assembly/shock_kit) && on)
|
|
var/obj/item/assembly/shock_kit/SK = src.loc
|
|
SK.receive_signal()
|
|
|
|
else if(ismob(loc) && on)
|
|
var/mob/M = loc
|
|
var/turf/T = M.loc
|
|
if(istype(T, /turf))
|
|
if(!M.moved_recently && M.last_move)
|
|
M.moved_recently = 1
|
|
step(M, M.last_move)
|
|
spawn(50)
|
|
if(M)
|
|
M.moved_recently = 0
|
|
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
|
spark(M)
|
|
|
|
M.Knockdown(10)
|
|
M.Stun(10)
|
|
|
|
if(master && isWireCut(1))
|
|
master.receive_signal()
|
|
return
|
|
|
|
/obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1)
|
|
|
|
if(!istype(user, /mob/living/carbon/human))
|
|
return
|
|
user.set_machine(src)
|
|
var/dat = {"<TT>
|
|
<A href='?src=\ref[src];power=1'>Turn [on ? "Off" : "On"]</A><BR>
|
|
<B>Frequency/Code</B> for electropack:<BR>
|
|
Frequency:
|
|
<A href='byond://?src=\ref[src];freq=-10'>-</A>
|
|
<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=10'>+</A><BR>
|
|
|
|
Code:
|
|
<A href='byond://?src=\ref[src];code=-5'>-</A>
|
|
<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=5'>+</A><BR>
|
|
</TT>"}
|
|
user << browse(HTML_SKELETON(dat), "window=radio")
|
|
onclose(user, "radio")
|
|
return
|