/obj/item/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" icon = 'icons/obj/radio.dmi' icon_state = "electropack0" item_state = "electropack" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/on = TRUE var/code = 2 var/frequency = FREQ_ELECTROPACK var/shock_cooldown = 0 /obj/item/electropack/suicide_act(mob/user) user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) /obj/item/electropack/Initialize() . = ..() SSradio.add_object(src, frequency, RADIO_SIGNALER) /obj/item/electropack/Destroy() SSradio.remove_object(src, frequency) return ..() //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/electropack/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.back) to_chat(user, "You need help taking this off!") return return ..() /obj/item/electropack/attackby(obj/item/W, mob/user, params) 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' if(!user.transferItemToLoc(W, A)) to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") return W.master = A A.part1 = W user.transferItemToLoc(src, A, TRUE) master = A A.part2 = src user.put_in_hands(A) A.add_fingerprint(user) if(item_flags & NODROP) A.item_flags |= NODROP else return ..() /obj/item/electropack/Topic(href, href_list) //..() var/mob/living/carbon/C = usr if(usr.stat || usr.restrained() || C.back == src) return if((ishuman(usr) && usr.contents.Find(src)) || usr.contents.Find(master) || (in_range(src, usr) && isturf(loc))) usr.set_machine(src) if(href_list["freq"]) SSradio.remove_object(src, frequency) frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) SSradio.add_object(src, frequency, RADIO_SIGNALER) 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(ismob(loc)) attack_self(loc) else for(var/mob/M in viewers(1, src)) if(M.client) attack_self(M) else if(ismob(master.loc)) 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/electropack/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) return if(isliving(loc) && on) if(shock_cooldown != 0) return shock_cooldown = 1 spawn(100) shock_cooldown = 0 var/mob/living/L = loc step(L, pick(GLOB.cardinals)) to_chat(L, "You feel a sharp shock!") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, L) s.start() L.Knockdown(100) if(master) master.receive_signal() return /obj/item/electropack/attack_self(mob/user) if(!ishuman(user)) return user.set_machine(src) var/dat = {"Turned [on ? "On" : "Off"] - Toggle
Frequency/Code for electropack:
Frequency: - - [format_frequency(frequency)] + +
Code: - - [code] + +
"} user << browse(dat, "window=radio") onclose(user, "radio") return