/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/code = 2 var/frequency = FREQ_ELECTROPACK var/on = TRUE var/shock_cooldown = FALSE /obj/item/electropack/suicide_act(mob/living/carbon/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() . = ..() set_frequency(frequency) /obj/item/electropack/Destroy() SSradio.remove_object(src, frequency) . = ..() //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/living/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) 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(!usr.canUseTopic(src, BE_CLOSE)) usr << browse(null, "window=radio") onclose(usr, "radio") return if(href_list["set"]) if(href_list["set"] == "freq") var/new_freq = input(usr, "Input a new receiving frequency", "Electropack Frequency", format_frequency(frequency)) as num|null if(!usr.canUseTopic(src, BE_CLOSE)) return new_freq = unformat_frequency(new_freq) new_freq = sanitize_frequency(new_freq, TRUE) set_frequency(new_freq) if(href_list["set"] == "code") var/new_code = input(usr, "Input a new receiving code", "Electropack Code", code) as num|null if(!usr.canUseTopic(src, BE_CLOSE)) return new_code = round(new_code) new_code = CLAMP(new_code, 1, 100) code = new_code if(href_list["set"] == "power") if(!usr.canUseTopic(src, BE_CLOSE)) return on = !(on) icon_state = "electropack[on]" if(usr) attack_self(usr) return /obj/item/electropack/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency SSradio.add_object(src, frequency, RADIO_SIGNALER) return /obj/item/electropack/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) return if(isliving(loc) && on) if(shock_cooldown == TRUE) return shock_cooldown = TRUE addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) 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/ui_interact(mob/user) if(!ishuman(user)) return user.set_machine(src) var/dat = {" Turned [on ? "On" : "Off"] - Toggle
Frequency/Code for electropack:
Frequency: [format_frequency(src.frequency)] Set
Code: [src.code] Set
"} user << browse(dat, "window=radio") onclose(user, "radio") return /obj/item/electropack/shockcollar name = "shock collar" desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi' icon_state = "shockcollar" item_state = "shockcollar" body_parts_covered = NECK slot_flags = ITEM_SLOT_NECK | ITEM_SLOT_DENYPOCKET //no more pocket shockers w_class = WEIGHT_CLASS_SMALL strip_delay = 60 equip_delay_other = 60 materials = list(MAT_METAL=5000, MAT_GLASS=2000) var/tagname = null /datum/design/electropack/shockcollar name = "Shockcollar" id = "shockcollar" build_type = AUTOLATHE build_path = /obj/item/electropack/shockcollar materials = list(MAT_METAL=5000, MAT_GLASS=2000) category = list("hacked", "Misc") /obj/item/electropack/shockcollar/attack_hand(mob/user) if(loc == user && user.get_item_by_slot(SLOT_NECK)) to_chat(user, "The collar is fastened tight! You'll need help taking this off!") return return ..() /obj/item/electropack/shockcollar/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) return if(isliving(loc) && on) if(shock_cooldown == TRUE) return shock_cooldown = TRUE addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) var/mob/living/L = loc step(L, pick(GLOB.cardinals)) to_chat(L, "You feel a sharp shock from the collar!") 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/shockcollar/attackby(obj/item/W, mob/user, params) //moves it here because on_click is being bad if(istype(W, /obj/item/pen)) var/t = stripped_input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot", MAX_NAME_LEN) if(t) tagname = t name = "[initial(name)] - [t]" else return ..() /obj/item/electropack/shockcollar/ui_interact(mob/user) //on_click calls this var/dat = {" Frequency/Code for shock collar:
Frequency: [format_frequency(src.frequency)] Set
Code: [src.code] Set
"} user << browse(dat, "window=radio") onclose(user, "radio") return