diff --git a/code/game/machinery/computer/RCON_Console.dm b/code/game/machinery/computer/RCON_Console.dm index cf275eb5ce..17d0552779 100644 --- a/code/game/machinery/computer/RCON_Console.dm +++ b/code/game/machinery/computer/RCON_Console.dm @@ -13,7 +13,7 @@ circuit = /obj/item/weapon/circuitboard/rcon_console req_one_access = list(access_engine) var/current_tag = null - var/obj/nano_module/rcon/rcon + var/datum/nano_module/rcon/rcon /obj/machinery/computer/rcon/New() ..() diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 07b075a5f1..46d2735750 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -12,7 +12,7 @@ circuit = "/obj/item/weapon/circuitboard/atmoscontrol" req_access = list(access_ce) var/list/monitored_alarm_ids = null - var/obj/nano_module/atmos_control/atmos_control + var/datum/nano_module/atmos_control/atmos_control /obj/machinery/computer/atmoscontrol/New() ..() diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 6928d104ca..6df502891f 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -7,7 +7,7 @@ idle_power_usage = 250 active_power_usage = 500 circuit = "/obj/item/weapon/circuitboard/crew" - var/obj/nano_module/crew_monitor/crew_monitor + var/datum/nano_module/crew_monitor/crew_monitor /obj/machinery/computer/crew/New() crew_monitor = new(src) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 696273d2ab..ea0952e9f7 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -5,15 +5,15 @@ icon_state = "alert:0" light_color = "#e6ffff" circuit = /obj/item/weapon/circuitboard/stationalert_engineering - var/obj/nano_module/alarm_monitor/alarm_monitor - var/monitor_type = /obj/nano_module/alarm_monitor/engineering + var/datum/nano_module/alarm_monitor/alarm_monitor + var/monitor_type = /datum/nano_module/alarm_monitor/engineering /obj/machinery/computer/station_alert/security - monitor_type = /obj/nano_module/alarm_monitor/security + monitor_type = /datum/nano_module/alarm_monitor/security circuit = /obj/item/weapon/circuitboard/stationalert_security /obj/machinery/computer/station_alert/all - monitor_type = /obj/nano_module/alarm_monitor/all + monitor_type = /datum/nano_module/alarm_monitor/all circuit = /obj/item/weapon/circuitboard/stationalert_all /obj/machinery/computer/station_alert/New() diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 8141dcf5a3..acae472554 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -14,7 +14,7 @@ if(shattered) return if(ishuman(user)) - var/obj/nano_module/appearance_changer/AC = ui_users[user] + var/datum/nano_module/appearance_changer/AC = ui_users[user] if(!AC) AC = new(src, user) AC.name = "SalonPro Nano-Mirror(TM)" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index af1e049b39..ef4fa997c8 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -735,7 +735,7 @@ var/list/admin_verbs_mentor = list( var/mob/living/silicon/S = input("Select silicon.", "Manage Silicon Laws") as null|anything in silicon_mob_list if(!S) return - var/obj/nano_module/law_manager/L = new(S) + var/datum/nano_module/law_manager/L = new(S) L.ui_interact(usr, state = admin_state) admin_log_and_message_admins("has opened [S]'s law manager.") feedback_add_details("admin_verb","MSL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 5f9527b93b..3990490145 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human/proc/change_appearance(var/flags = APPEARANCE_ALL_HAIR, var/location = src, var/mob/user = src, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list(), var/datum/topic_state/state = default_state) - var/obj/nano_module/appearance_changer/AC = new(location, src, check_species_whitelist, species_whitelist, species_blacklist) + var/datum/nano_module/appearance_changer/AC = new(location, src, check_species_whitelist, species_whitelist, species_blacklist) AC.flags = flags AC.ui_interact(user, state = state) diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 84d3cfd229..b8132b5357 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -20,10 +20,6 @@ if(!psupply) create_powersupply() - if (src.machine) - if (!( src.machine.check_eye(src) )) - src.reset_view(null) - // Handle power damage (oxy) if(aiRestorePowerRoutine != 0 && !APU_power) // Lose power diff --git a/code/modules/mob/living/silicon/subystems.dm b/code/modules/mob/living/silicon/subystems.dm index e8909b0b50..f79f5664a2 100644 --- a/code/modules/mob/living/silicon/subystems.dm +++ b/code/modules/mob/living/silicon/subystems.dm @@ -1,11 +1,11 @@ /mob/living/silicon var/register_alarms = 1 - var/obj/nano_module/alarm_monitor/all/alarm_monitor - var/obj/nano_module/atmos_control/atmos_control - var/obj/nano_module/crew_monitor/crew_monitor - var/obj/nano_module/law_manager/law_manager - var/obj/nano_module/power_monitor/power_monitor - var/obj/nano_module/rcon/rcon + var/datum/nano_module/alarm_monitor/all/alarm_monitor + var/datum/nano_module/atmos_control/atmos_control + var/datum/nano_module/crew_monitor/crew_monitor + var/datum/nano_module/law_manager/law_manager + var/datum/nano_module/power_monitor/power_monitor + var/datum/nano_module/rcon/rcon /mob/living/silicon var/list/silicon_subsystems = list( diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm index 10cda75162..8e4aeb5640 100644 --- a/code/modules/nano/interaction/base.dm +++ b/code/modules/nano/interaction/base.dm @@ -1,7 +1,7 @@ -/atom/proc/nano_host() +/datum/proc/nano_host() return src -/atom/proc/CanUseTopic(var/mob/user, var/datum/topic_state/state) +/datum/proc/CanUseTopic(var/mob/user, var/datum/topic_state/state) var/src_object = nano_host() return state.can_use_topic(src_object, user) diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm index d073f6f6d2..5040241d0f 100644 --- a/code/modules/nano/modules/alarm_monitor.dm +++ b/code/modules/nano/modules/alarm_monitor.dm @@ -1,50 +1,50 @@ -/obj/nano_module/alarm_monitor +/datum/nano_module/alarm_monitor name = "Alarm monitor" var/list_cameras = 0 // Whether or not to list camera references. A future goal would be to merge this with the enginering/security camera console. Currently really only for AI-use. var/list/datum/alarm_handler/alarm_handlers // The particular list of alarm handlers this alarm monitor should present to the user. -/obj/nano_module/alarm_monitor/all/New() +/datum/nano_module/alarm_monitor/all/New() ..() alarm_handlers = alarm_manager.all_handlers -/obj/nano_module/alarm_monitor/engineering/New() +/datum/nano_module/alarm_monitor/engineering/New() ..() alarm_handlers = list(atmosphere_alarm, fire_alarm, power_alarm) -/obj/nano_module/alarm_monitor/security/New() +/datum/nano_module/alarm_monitor/security/New() ..() alarm_handlers = list(camera_alarm, motion_alarm) -/obj/nano_module/alarm_monitor/proc/register(var/object, var/procName) +/datum/nano_module/alarm_monitor/proc/register(var/object, var/procName) for(var/datum/alarm_handler/AH in alarm_handlers) AH.register(object, procName) -/obj/nano_module/alarm_monitor/proc/unregister(var/object) +/datum/nano_module/alarm_monitor/proc/unregister(var/object) for(var/datum/alarm_handler/AH in alarm_handlers) AH.unregister(object) -/obj/nano_module/alarm_monitor/proc/all_alarms() +/datum/nano_module/alarm_monitor/proc/all_alarms() var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) all_alarms += AH.alarms return all_alarms -/obj/nano_module/alarm_monitor/proc/major_alarms() +/datum/nano_module/alarm_monitor/proc/major_alarms() var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) all_alarms += AH.major_alarms() return all_alarms -/obj/nano_module/alarm_monitor/proc/minor_alarms() +/datum/nano_module/alarm_monitor/proc/minor_alarms() var/list/all_alarms = new() for(var/datum/alarm_handler/AH in alarm_handlers) all_alarms += AH.minor_alarms() return all_alarms -/obj/nano_module/alarm_monitor/ai/Topic(ref, href_list) +/datum/nano_module/alarm_monitor/ai/Topic(ref, href_list) if(..()) return 1 if(href_list["switchTo"]) @@ -56,7 +56,7 @@ usr.switch_to_camera(C) return 1 -/obj/nano_module/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) var/data[0] var/categories[0] diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm index 3897526865..e1cc519b2f 100644 --- a/code/modules/nano/modules/atmos_control.dm +++ b/code/modules/nano/modules/atmos_control.dm @@ -1,16 +1,14 @@ -/obj/nano_module/atmos_control +/datum/nano_module/atmos_control name = "Atmospherics Control" - var/ui_ref + var/obj/access = new() var/emagged = 0 + var/ui_ref var/list/monitored_alarms = list() - var/datum/topic_state/atmos_state -/obj/nano_module/atmos_control/New(atmos_computer, req_access, req_one_access, monitored_alarm_ids) +/datum/nano_module/atmos_control/New(atmos_computer, req_access, req_one_access, monitored_alarm_ids) ..() - loc = atmos_computer - src.req_access = req_access - src.req_one_access = req_one_access - atmos_state = default_state + access.req_access = req_access + access.req_one_access = req_one_access if(monitored_alarm_ids) for(var/obj/machinery/alarm/alarm in machines) @@ -19,7 +17,7 @@ // machines may not yet be ordered at this point monitored_alarms = dd_sortedObjectList(monitored_alarms) -/obj/nano_module/atmos_control/Topic(href, href_list) +/datum/nano_module/atmos_control/Topic(href, href_list) if(..()) return 1 @@ -31,7 +29,7 @@ alarm.ui_interact(usr, master_ui = ui_ref, state = TS) return 1 -/obj/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) +/datum/nano_module/atmos_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) var/data[0] var/alarms[0] @@ -48,15 +46,15 @@ ui.set_auto_update(1) ui_ref = ui -/obj/nano_module/atmos_control/proc/generate_state(air_alarm) +/datum/nano_module/atmos_control/proc/generate_state(air_alarm) var/datum/topic_state/air_alarm/state = new() state.atmos_control = src state.air_alarm = air_alarm return state /datum/topic_state/air_alarm - var/obj/nano_module/atmos_control/atmos_control = null - var/obj/machinery/alarm/air_alarm = null + var/datum/nano_module/atmos_control/atmos_control = null + var/obj/machinery/alarm/air_alarm = null /datum/topic_state/air_alarm/can_use_topic(var/src_object, var/mob/user) if(has_access(user)) @@ -71,4 +69,4 @@ return extra_href /datum/topic_state/air_alarm/proc/has_access(var/mob/user) - return user && (user.isAI() || atmos_control.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) + return user && (user.isAI() || atmos_control.access.allowed(user) || atmos_control.emagged || air_alarm.rcon_setting == RCON_YES || (air_alarm.alarm_area.atmosalm && air_alarm.rcon_setting == RCON_AUTO)) diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm index 2758b859d7..cd52ad6603 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/nano/modules/crew_monitor.dm @@ -1,8 +1,8 @@ -/obj/nano_module/crew_monitor +/datum/nano_module/crew_monitor name = "Crew monitor" var/list/tracked = new -/obj/nano_module/crew_monitor/Topic(href, href_list) +/datum/nano_module/crew_monitor/Topic(href, href_list) if(..()) return var/turf/T = get_turf(src) if (!T || !(T.z in config.player_levels)) @@ -14,9 +14,6 @@ usr.unset_machine() ui.close() return 0 - if(href_list["update"]) - src.updateDialog() - return 1 if(href_list["track"]) if(usr.isAI()) var/mob/living/silicon/ai/AI = usr @@ -25,7 +22,7 @@ AI.ai_actual_track(H) return 1 -/obj/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) user.set_machine(src) src.scan() @@ -87,7 +84,7 @@ // should make the UI auto-update; doesn't seem to? ui.set_auto_update(1) -/obj/nano_module/crew_monitor/proc/scan() +/datum/nano_module/crew_monitor/proc/scan() for(var/mob/living/carbon/human/H in mob_list) if(istype(H.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/C = H.w_uniform diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index 47324c47b0..3b3deff06c 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -1,6 +1,6 @@ -/obj/nano_module/appearance_changer +/datum/nano_module/appearance_changer name = "Appearance Editor" - flags = APPEARANCE_ALL_HAIR + var/flags = APPEARANCE_ALL_HAIR var/mob/living/carbon/human/owner = null var/list/valid_species = list() var/list/valid_hairstyles = list() @@ -10,15 +10,14 @@ var/list/whitelist var/list/blacklist -/obj/nano_module/appearance_changer/New(var/location, var/mob/living/carbon/human/H, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list()) +/datum/nano_module/appearance_changer/New(var/location, var/mob/living/carbon/human/H, var/check_species_whitelist = 1, var/list/species_whitelist = list(), var/list/species_blacklist = list()) ..() - loc = location owner = H src.check_whitelist = check_species_whitelist src.whitelist = species_whitelist src.blacklist = species_blacklist -/obj/nano_module/appearance_changer/Topic(ref, href_list, var/nowindow, var/datum/topic_state/state = default_state) +/datum/nano_module/appearance_changer/Topic(ref, href_list, var/nowindow, var/datum/topic_state/state = default_state) if(..()) return 1 @@ -91,7 +90,7 @@ return 0 -/obj/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/appearance_changer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) generate_data(check_whitelist, whitelist, blacklist) var/data[0] @@ -128,31 +127,31 @@ data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src.name]", 800, 450, state = state) + ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src]", 800, 450, state = state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) -/obj/nano_module/appearance_changer/proc/update_dna() +/datum/nano_module/appearance_changer/proc/update_dna() if(owner && (flags & APPEARANCE_UPDATE_DNA)) owner.update_dna() -/obj/nano_module/appearance_changer/proc/can_change(var/flag) +/datum/nano_module/appearance_changer/proc/can_change(var/flag) return owner && (flags & flag) -/obj/nano_module/appearance_changer/proc/can_change_skin_tone() +/datum/nano_module/appearance_changer/proc/can_change_skin_tone() return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_TONE -/obj/nano_module/appearance_changer/proc/can_change_skin_color() +/datum/nano_module/appearance_changer/proc/can_change_skin_color() return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_COLOR -/obj/nano_module/appearance_changer/proc/cut_and_generate_data() +/datum/nano_module/appearance_changer/proc/cut_and_generate_data() // Making the assumption that the available species remain constant valid_facial_hairstyles.Cut() valid_facial_hairstyles.Cut() generate_data() -/obj/nano_module/appearance_changer/proc/generate_data() +/datum/nano_module/appearance_changer/proc/generate_data() if(!valid_species.len) valid_species = owner.generate_valid_species(check_whitelist, whitelist, blacklist) if(!valid_hairstyles.len || !valid_facial_hairstyles.len) diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm index 98c2cdc905..d471bf7a99 100644 --- a/code/modules/nano/modules/law_manager.dm +++ b/code/modules/nano/modules/law_manager.dm @@ -1,6 +1,5 @@ -/obj/nano_module/law_manager +/datum/nano_module/law_manager name = "Law manager" - var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -13,9 +12,8 @@ var/global/list/datum/ai_laws/player_laws var/mob/living/silicon/owner = null -/obj/nano_module/law_manager/New(var/mob/living/silicon/S) +/datum/nano_module/law_manager/New(var/mob/living/silicon/S) ..() - loc = S owner = S if(!admin_laws) @@ -29,7 +27,7 @@ if(laws.selectable) player_laws += laws -/obj/nano_module/law_manager/Topic(href, href_list) +/datum/nano_module/law_manager/Topic(href, href_list) if(..()) return 1 @@ -149,7 +147,7 @@ return 0 -/obj/nano_module/law_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/law_manager/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) var/data[0] owner.lawsync() @@ -185,14 +183,14 @@ ui.open() ui.set_auto_update(1) -/obj/nano_module/law_manager/proc/package_laws(var/list/data, var/field, var/list/datum/ai_law/laws) +/datum/nano_module/law_manager/proc/package_laws(var/list/data, var/field, var/list/datum/ai_law/laws) var/packaged_laws[0] for(var/datum/ai_law/AL in laws) packaged_laws[++packaged_laws.len] = list("law" = sanitize(AL.law), "index" = AL.get_index(), "state" = owner.laws.get_state_law(AL), "ref" = "\ref[AL]") data[field] = packaged_laws data["has_[field]"] = packaged_laws.len -/obj/nano_module/law_manager/proc/package_multiple_laws(var/list/datum/ai_laws/laws) +/datum/nano_module/law_manager/proc/package_multiple_laws(var/list/datum/ai_laws/laws) var/law_sets[0] for(var/datum/ai_laws/ALs in laws) var/packaged_laws[0] @@ -204,7 +202,7 @@ return law_sets -/obj/nano_module/law_manager/proc/is_malf(var/mob/user) +/datum/nano_module/law_manager/proc/is_malf(var/mob/user) return (is_admin(user) && !owner.is_slaved()) || owner.is_malf_or_traitor() /mob/living/silicon/proc/is_slaved() @@ -213,7 +211,7 @@ /mob/living/silicon/robot/is_slaved() return lawupdate && connected_ai ? sanitize(connected_ai.name) : null -/obj/nano_module/law_manager/proc/sync_laws(var/mob/living/silicon/ai/AI) +/datum/nano_module/law_manager/proc/sync_laws(var/mob/living/silicon/ai/AI) if(!AI) return for(var/mob/living/silicon/robot/R in AI.connected_robots) diff --git a/code/modules/nano/modules/nano_module.dm b/code/modules/nano/modules/nano_module.dm index 3fa8275099..0cdf451d6f 100644 --- a/code/modules/nano/modules/nano_module.dm +++ b/code/modules/nano/modules/nano_module.dm @@ -1,5 +1,12 @@ -/obj/nano_module/nano_host() - return loc +/datum/nano_module + var/name + var/host -/obj/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) +/datum/nano_module/New(var/host) + src.host = host + +/datum/nano_module/nano_host() + return host ? host : src + +/datum/nano_module/proc/can_still_topic(var/datum/topic_state/state = default_state) return CanUseTopic(usr, state) == STATUS_INTERACTIVE diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm index ed7c64aa94..07076fac0a 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/nano/modules/power_monitor.dm @@ -1,13 +1,13 @@ -/obj/nano_module/power_monitor +/datum/nano_module/power_monitor name = "Power monitor" var/list/grid_sensors var/active_sensor = null //name_tag of the currently selected sensor -/obj/nano_module/power_monitor/New() +/datum/nano_module/power_monitor/New() ..() refresh_sensors() -/obj/nano_module/power_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) +/datum/nano_module/power_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state) var/list/data = list() var/list/sensors = list() // Focus: If it remains null if no sensor is selected and UI will display sensor list, otherwise it will display sensor reading. @@ -34,7 +34,7 @@ ui.set_auto_update(1) // Refreshes list of active sensors kept on this computer. -/obj/nano_module/power_monitor/proc/refresh_sensors() +/datum/nano_module/power_monitor/proc/refresh_sensors() grid_sensors = list() var/turf/T = get_turf(src) for(var/obj/machinery/power/sensor/S in machines) @@ -45,7 +45,7 @@ grid_sensors += S // Allows us to process UI clicks, which are relayed in form of hrefs. -/obj/nano_module/power_monitor/Topic(href, href_list) +/datum/nano_module/power_monitor/Topic(href, href_list) if(..()) return if( href_list["clear"] ) diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm index 58e55894c1..8950f1228e 100644 --- a/code/modules/nano/modules/rcon.dm +++ b/code/modules/nano/modules/rcon.dm @@ -1,6 +1,5 @@ -/obj/nano_module/rcon +/datum/nano_module/rcon name = "Power RCON" - var/list/known_SMESs = null var/list/known_breakers = null // Allows you to hide specific parts of the UI @@ -8,7 +7,7 @@ var/hide_SMES_details = 0 var/hide_breakers = 0 -/obj/nano_module/rcon/ui_interact(mob/user, ui_key = "rcon", datum/nanoui/ui=null, force_open=1, var/datum/topic_state/state = default_state) +/datum/nano_module/rcon/ui_interact(mob/user, ui_key = "rcon", datum/nanoui/ui=null, force_open=1, var/datum/topic_state/state = default_state) FindDevices() // Update our devices list var/data[0] @@ -49,7 +48,7 @@ // Proc: Topic() // Parameters: 2 (href, href_list - allows us to process UI clicks) // Description: Allows us to process UI clicks, which are relayed in form of hrefs. -/obj/nano_module/rcon/Topic(href, href_list) +/datum/nano_module/rcon/Topic(href, href_list) if(..()) return @@ -93,7 +92,7 @@ // Proc: GetSMESByTag() // Parameters: 1 (tag - RCON tag of SMES we want to look up) // Description: Looks up and returns SMES which has matching RCON tag -/obj/nano_module/rcon/proc/GetSMESByTag(var/tag) +/datum/nano_module/rcon/proc/GetSMESByTag(var/tag) if(!tag) return @@ -104,7 +103,7 @@ // Proc: FindDevices() // Parameters: None // Description: Refreshes local list of known devices. -/obj/nano_module/rcon/proc/FindDevices() +/datum/nano_module/rcon/proc/FindDevices() known_SMESs = new /list() for(var/obj/machinery/power/smes/buildable/SMES in machines) if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon) diff --git a/code/modules/nano/nanoexternal.dm b/code/modules/nano/nanoexternal.dm index bb283accf5..08f9deffa9 100644 --- a/code/modules/nano/nanoexternal.dm +++ b/code/modules/nano/nanoexternal.dm @@ -37,7 +37,7 @@ * * @return nothing */ -/atom/movable/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = default_state) +/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = default_state) return // Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index f134d5d93b..9108f23e62 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -10,7 +10,7 @@ nanoui is used to open and update nano browser uis // the user who opened this ui var/mob/user // the object this ui "belongs" to - var/atom/movable/src_object + var/datum/src_object // the title of this ui var/title // the key of this ui, this is to allow multiple (different) uis for each src_object @@ -176,7 +176,7 @@ nanoui is used to open and update nano browser uis /datum/nanoui/proc/get_config_data() var/list/config_data = list( "title" = title, - "srcObject" = list("name" = src_object.name), + "srcObject" = list("name" = "[src_object]"), "stateKey" = state_key, "status" = status, "autoUpdateLayout" = auto_update_layout, diff --git a/code/modules/power/sensors/sensor_monitoring.dm b/code/modules/power/sensors/sensor_monitoring.dm index c4e9a191e9..3233337db0 100644 --- a/code/modules/power/sensors/sensor_monitoring.dm +++ b/code/modules/power/sensors/sensor_monitoring.dm @@ -18,7 +18,7 @@ use_power = 1 idle_power_usage = 300 active_power_usage = 300 - var/obj/nano_module/power_monitor/power_monitor + var/datum/nano_module/power_monitor/power_monitor // Checks the sensors for alerts. If change (alerts cleared or detected) occurs, calls for icon update. /obj/machinery/computer/power_monitor/process()