/obj/item/assembly/signaler/nanite var/datum/nanite_program/signaler/program /obj/item/assembly/signaler/nanite/New(_program) ..() program = _program if(!istype(program)) qdel(src) /obj/item/assembly/signaler/nanite/signal() //Almost the same as the original; altered log message if(!radio_connection) return var/datum/signal/signal = new(list("code" = code)) radio_connection.post_signal(src, signal) if(program.host_mob) // Sanity var/time = time2text(world.realtime,"hh:mm:ss") var/turf/T = get_turf(program.host_mob) GLOB.lastsignalers.Add("[time] : A nanite signaler program in [program.host_mob.key] @ location ([T.x],[T.y],[T.z]) : [format_frequency(frequency)]/[code]") return /obj/item/assembly/signaler/nanite/receive_signal(datum/signal/signal) //Got rid of beep and suicide in relation to the original. . = FALSE if(!signal) return if(signal.data["code"] != code) return if(!(src.wires & WIRE_RADIO_RECEIVE)) return program.send_code() return TRUE /datum/nanite_program/signaler name = "Signaler" desc = "The nanites receive and send radio signals. Trigger to send a radio signal; when a radio signal is received, sends a signal to the nanites." can_trigger = TRUE trigger_cost = 2 trigger_cooldown = 3 SECONDS rogue_types = list(/datum/nanite_program/toxic) var/obj/item/assembly/signaler/nanite/signaler //needed because radio code works with objects, not datums. /datum/nanite_program/signaler/register_extra_settings() extra_settings["Frequency"] = new /datum/nanite_extra_setting/number(FREQ_SIGNALER, MIN_FREE_FREQ, MAX_FREE_FREQ) extra_settings["Radio Code"] = new /datum/nanite_extra_setting/number(DEFAULT_SIGNALER_CODE, 1, 100) extra_settings["Nanite Code"] = new /datum/nanite_extra_setting/number(0, 1, 9999) /datum/nanite_program/signaler/proc/send_code() if(activated) var/datum/nanite_extra_setting/nanite_code = extra_settings["Nanite Code"] SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, nanite_code.value, "a [name] program") /datum/nanite_program/signaler/on_mob_add() ..() signaler = new(src) signaler.set_frequency(get_extra_setting_value("Frequency")) signaler.code = get_extra_setting_value("Radio Code") /datum/nanite_program/signaler/copy_programming(datum/nanite_program/target, copy_activated) ..() var/datum/nanite_program/signaler/T = target if(!istype(T)) return //how did we even get here? if(!T.signaler) return //don't need to copy, we're prolly a program in a cloud or something T.signaler.set_frequency(get_extra_setting_value("Frequency")) T.signaler.code = get_extra_setting_value("Radio Code") /datum/nanite_program/signaler/on_mob_remove() ..() qdel(signaler) /datum/nanite_program/signaler/on_trigger(comm_message) signaler.signal()