/obj/item/device/radio/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" icon_state = "electropack0" item_state = "electropack" frequency = 1449 flags = CONDUCT slot_flags = SLOT_BACK w_class = 5.0 g_amt = 2500 m_amt = 10000 var/code = 2 /obj/item/device/radio/electropack/attack_hand(mob/user as mob) if(src == user.back) user << "You need help taking this off!" return ..() /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 return ..() /obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() if(istype(W, /obj/item/clothing/head/helmet)) if(!b_stat) user << "[src] is not ready to be attached!" return var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) A.icon = 'icons/obj/assemblies.dmi' if(!user.unEquip(W)) user << "\the [W] is stuck to your hand, you cannot attach it to \the [src]!" return W.loc = A W.master = A A.part1 = W user.unEquip(src) loc = A master = A A.part2 = src user.put_in_hands(A) A.add_fingerprint(user) if(src.flags & NODROP) A.flags |= NODROP /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(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) sleep(50) if(M) M.moved_recently = 0 M << "You feel a sharp shock!" var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, M) s.start() M.Weaken(5) if(master) 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 = {" Turn [on ? "Off" : "On"]
Frequency/Code for electropack:
Frequency: - - [format_frequency(frequency)] + +
Code: - - [code] + +
"} user << browse(dat, "window=radio") onclose(user, "radio") return