mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
NanoUI sources can now be datums instead of atom/movable.
Also accidentally fixes #7042 as the AI no longer cares about the machinery var.
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
circuit = /obj/item/weapon/circuitboard/rcon_console
|
circuit = /obj/item/weapon/circuitboard/rcon_console
|
||||||
req_one_access = list(access_engine)
|
req_one_access = list(access_engine)
|
||||||
var/current_tag = null
|
var/current_tag = null
|
||||||
var/obj/nano_module/rcon/rcon
|
var/datum/nano_module/rcon/rcon
|
||||||
|
|
||||||
/obj/machinery/computer/rcon/New()
|
/obj/machinery/computer/rcon/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
circuit = "/obj/item/weapon/circuitboard/atmoscontrol"
|
circuit = "/obj/item/weapon/circuitboard/atmoscontrol"
|
||||||
req_access = list(access_ce)
|
req_access = list(access_ce)
|
||||||
var/list/monitored_alarm_ids = null
|
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()
|
/obj/machinery/computer/atmoscontrol/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
idle_power_usage = 250
|
idle_power_usage = 250
|
||||||
active_power_usage = 500
|
active_power_usage = 500
|
||||||
circuit = "/obj/item/weapon/circuitboard/crew"
|
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()
|
/obj/machinery/computer/crew/New()
|
||||||
crew_monitor = new(src)
|
crew_monitor = new(src)
|
||||||
|
|||||||
@@ -5,15 +5,15 @@
|
|||||||
icon_state = "alert:0"
|
icon_state = "alert:0"
|
||||||
light_color = "#e6ffff"
|
light_color = "#e6ffff"
|
||||||
circuit = /obj/item/weapon/circuitboard/stationalert_engineering
|
circuit = /obj/item/weapon/circuitboard/stationalert_engineering
|
||||||
var/obj/nano_module/alarm_monitor/alarm_monitor
|
var/datum/nano_module/alarm_monitor/alarm_monitor
|
||||||
var/monitor_type = /obj/nano_module/alarm_monitor/engineering
|
var/monitor_type = /datum/nano_module/alarm_monitor/engineering
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/security
|
/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
|
circuit = /obj/item/weapon/circuitboard/stationalert_security
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/all
|
/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
|
circuit = /obj/item/weapon/circuitboard/stationalert_all
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/New()
|
/obj/machinery/computer/station_alert/New()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
if(shattered) return
|
if(shattered) return
|
||||||
|
|
||||||
if(ishuman(user))
|
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)
|
if(!AC)
|
||||||
AC = new(src, user)
|
AC = new(src, user)
|
||||||
AC.name = "SalonPro Nano-Mirror(TM)"
|
AC.name = "SalonPro Nano-Mirror(TM)"
|
||||||
|
|||||||
@@ -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
|
var/mob/living/silicon/S = input("Select silicon.", "Manage Silicon Laws") as null|anything in silicon_mob_list
|
||||||
if(!S) return
|
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)
|
L.ui_interact(usr, state = admin_state)
|
||||||
admin_log_and_message_admins("has opened [S]'s law manager.")
|
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!
|
feedback_add_details("admin_verb","MSL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|||||||
@@ -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)
|
/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.flags = flags
|
||||||
AC.ui_interact(user, state = state)
|
AC.ui_interact(user, state = state)
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,6 @@
|
|||||||
if(!psupply)
|
if(!psupply)
|
||||||
create_powersupply()
|
create_powersupply()
|
||||||
|
|
||||||
if (src.machine)
|
|
||||||
if (!( src.machine.check_eye(src) ))
|
|
||||||
src.reset_view(null)
|
|
||||||
|
|
||||||
// Handle power damage (oxy)
|
// Handle power damage (oxy)
|
||||||
if(aiRestorePowerRoutine != 0 && !APU_power)
|
if(aiRestorePowerRoutine != 0 && !APU_power)
|
||||||
// Lose power
|
// Lose power
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
/mob/living/silicon
|
/mob/living/silicon
|
||||||
var/register_alarms = 1
|
var/register_alarms = 1
|
||||||
var/obj/nano_module/alarm_monitor/all/alarm_monitor
|
var/datum/nano_module/alarm_monitor/all/alarm_monitor
|
||||||
var/obj/nano_module/atmos_control/atmos_control
|
var/datum/nano_module/atmos_control/atmos_control
|
||||||
var/obj/nano_module/crew_monitor/crew_monitor
|
var/datum/nano_module/crew_monitor/crew_monitor
|
||||||
var/obj/nano_module/law_manager/law_manager
|
var/datum/nano_module/law_manager/law_manager
|
||||||
var/obj/nano_module/power_monitor/power_monitor
|
var/datum/nano_module/power_monitor/power_monitor
|
||||||
var/obj/nano_module/rcon/rcon
|
var/datum/nano_module/rcon/rcon
|
||||||
|
|
||||||
/mob/living/silicon
|
/mob/living/silicon
|
||||||
var/list/silicon_subsystems = list(
|
var/list/silicon_subsystems = list(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/atom/proc/nano_host()
|
/datum/proc/nano_host()
|
||||||
return src
|
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()
|
var/src_object = nano_host()
|
||||||
return state.can_use_topic(src_object, user)
|
return state.can_use_topic(src_object, user)
|
||||||
|
|
||||||
|
|||||||
@@ -1,50 +1,50 @@
|
|||||||
/obj/nano_module/alarm_monitor
|
/datum/nano_module/alarm_monitor
|
||||||
name = "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_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.
|
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
|
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)
|
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)
|
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)
|
for(var/datum/alarm_handler/AH in alarm_handlers)
|
||||||
AH.register(object, procName)
|
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)
|
for(var/datum/alarm_handler/AH in alarm_handlers)
|
||||||
AH.unregister(object)
|
AH.unregister(object)
|
||||||
|
|
||||||
/obj/nano_module/alarm_monitor/proc/all_alarms()
|
/datum/nano_module/alarm_monitor/proc/all_alarms()
|
||||||
var/list/all_alarms = new()
|
var/list/all_alarms = new()
|
||||||
for(var/datum/alarm_handler/AH in alarm_handlers)
|
for(var/datum/alarm_handler/AH in alarm_handlers)
|
||||||
all_alarms += AH.alarms
|
all_alarms += AH.alarms
|
||||||
|
|
||||||
return all_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()
|
var/list/all_alarms = new()
|
||||||
for(var/datum/alarm_handler/AH in alarm_handlers)
|
for(var/datum/alarm_handler/AH in alarm_handlers)
|
||||||
all_alarms += AH.major_alarms()
|
all_alarms += AH.major_alarms()
|
||||||
|
|
||||||
return all_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()
|
var/list/all_alarms = new()
|
||||||
for(var/datum/alarm_handler/AH in alarm_handlers)
|
for(var/datum/alarm_handler/AH in alarm_handlers)
|
||||||
all_alarms += AH.minor_alarms()
|
all_alarms += AH.minor_alarms()
|
||||||
|
|
||||||
return all_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(..())
|
if(..())
|
||||||
return 1
|
return 1
|
||||||
if(href_list["switchTo"])
|
if(href_list["switchTo"])
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
usr.switch_to_camera(C)
|
usr.switch_to_camera(C)
|
||||||
return 1
|
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/data[0]
|
||||||
|
|
||||||
var/categories[0]
|
var/categories[0]
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
/obj/nano_module/atmos_control
|
/datum/nano_module/atmos_control
|
||||||
name = "Atmospherics Control"
|
name = "Atmospherics Control"
|
||||||
var/ui_ref
|
var/obj/access = new()
|
||||||
var/emagged = 0
|
var/emagged = 0
|
||||||
|
var/ui_ref
|
||||||
var/list/monitored_alarms = list()
|
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
|
access.req_access = req_access
|
||||||
src.req_access = req_access
|
access.req_one_access = req_one_access
|
||||||
src.req_one_access = req_one_access
|
|
||||||
atmos_state = default_state
|
|
||||||
|
|
||||||
if(monitored_alarm_ids)
|
if(monitored_alarm_ids)
|
||||||
for(var/obj/machinery/alarm/alarm in machines)
|
for(var/obj/machinery/alarm/alarm in machines)
|
||||||
@@ -19,7 +17,7 @@
|
|||||||
// machines may not yet be ordered at this point
|
// machines may not yet be ordered at this point
|
||||||
monitored_alarms = dd_sortedObjectList(monitored_alarms)
|
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(..())
|
if(..())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -31,7 +29,7 @@
|
|||||||
alarm.ui_interact(usr, master_ui = ui_ref, state = TS)
|
alarm.ui_interact(usr, master_ui = ui_ref, state = TS)
|
||||||
return 1
|
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/data[0]
|
||||||
var/alarms[0]
|
var/alarms[0]
|
||||||
|
|
||||||
@@ -48,15 +46,15 @@
|
|||||||
ui.set_auto_update(1)
|
ui.set_auto_update(1)
|
||||||
ui_ref = ui
|
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()
|
var/datum/topic_state/air_alarm/state = new()
|
||||||
state.atmos_control = src
|
state.atmos_control = src
|
||||||
state.air_alarm = air_alarm
|
state.air_alarm = air_alarm
|
||||||
return state
|
return state
|
||||||
|
|
||||||
/datum/topic_state/air_alarm
|
/datum/topic_state/air_alarm
|
||||||
var/obj/nano_module/atmos_control/atmos_control = null
|
var/datum/nano_module/atmos_control/atmos_control = null
|
||||||
var/obj/machinery/alarm/air_alarm = null
|
var/obj/machinery/alarm/air_alarm = null
|
||||||
|
|
||||||
/datum/topic_state/air_alarm/can_use_topic(var/src_object, var/mob/user)
|
/datum/topic_state/air_alarm/can_use_topic(var/src_object, var/mob/user)
|
||||||
if(has_access(user))
|
if(has_access(user))
|
||||||
@@ -71,4 +69,4 @@
|
|||||||
return extra_href
|
return extra_href
|
||||||
|
|
||||||
/datum/topic_state/air_alarm/proc/has_access(var/mob/user)
|
/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))
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/obj/nano_module/crew_monitor
|
/datum/nano_module/crew_monitor
|
||||||
name = "Crew monitor"
|
name = "Crew monitor"
|
||||||
var/list/tracked = new
|
var/list/tracked = new
|
||||||
|
|
||||||
/obj/nano_module/crew_monitor/Topic(href, href_list)
|
/datum/nano_module/crew_monitor/Topic(href, href_list)
|
||||||
if(..()) return
|
if(..()) return
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if (!T || !(T.z in config.player_levels))
|
if (!T || !(T.z in config.player_levels))
|
||||||
@@ -14,9 +14,6 @@
|
|||||||
usr.unset_machine()
|
usr.unset_machine()
|
||||||
ui.close()
|
ui.close()
|
||||||
return 0
|
return 0
|
||||||
if(href_list["update"])
|
|
||||||
src.updateDialog()
|
|
||||||
return 1
|
|
||||||
if(href_list["track"])
|
if(href_list["track"])
|
||||||
if(usr.isAI())
|
if(usr.isAI())
|
||||||
var/mob/living/silicon/ai/AI = usr
|
var/mob/living/silicon/ai/AI = usr
|
||||||
@@ -25,7 +22,7 @@
|
|||||||
AI.ai_actual_track(H)
|
AI.ai_actual_track(H)
|
||||||
return 1
|
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)
|
user.set_machine(src)
|
||||||
src.scan()
|
src.scan()
|
||||||
|
|
||||||
@@ -87,7 +84,7 @@
|
|||||||
// should make the UI auto-update; doesn't seem to?
|
// should make the UI auto-update; doesn't seem to?
|
||||||
ui.set_auto_update(1)
|
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)
|
for(var/mob/living/carbon/human/H in mob_list)
|
||||||
if(istype(H.w_uniform, /obj/item/clothing/under))
|
if(istype(H.w_uniform, /obj/item/clothing/under))
|
||||||
var/obj/item/clothing/under/C = H.w_uniform
|
var/obj/item/clothing/under/C = H.w_uniform
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/obj/nano_module/appearance_changer
|
/datum/nano_module/appearance_changer
|
||||||
name = "Appearance Editor"
|
name = "Appearance Editor"
|
||||||
flags = APPEARANCE_ALL_HAIR
|
var/flags = APPEARANCE_ALL_HAIR
|
||||||
var/mob/living/carbon/human/owner = null
|
var/mob/living/carbon/human/owner = null
|
||||||
var/list/valid_species = list()
|
var/list/valid_species = list()
|
||||||
var/list/valid_hairstyles = list()
|
var/list/valid_hairstyles = list()
|
||||||
@@ -10,15 +10,14 @@
|
|||||||
var/list/whitelist
|
var/list/whitelist
|
||||||
var/list/blacklist
|
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
|
owner = H
|
||||||
src.check_whitelist = check_species_whitelist
|
src.check_whitelist = check_species_whitelist
|
||||||
src.whitelist = species_whitelist
|
src.whitelist = species_whitelist
|
||||||
src.blacklist = species_blacklist
|
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(..())
|
if(..())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@
|
|||||||
|
|
||||||
return 0
|
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)
|
generate_data(check_whitelist, whitelist, blacklist)
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
@@ -128,31 +127,31 @@
|
|||||||
data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR)
|
data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR)
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
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.set_initial_data(data)
|
||||||
ui.open()
|
ui.open()
|
||||||
ui.set_auto_update(1)
|
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))
|
if(owner && (flags & APPEARANCE_UPDATE_DNA))
|
||||||
owner.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)
|
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
|
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
|
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
|
// Making the assumption that the available species remain constant
|
||||||
valid_facial_hairstyles.Cut()
|
valid_facial_hairstyles.Cut()
|
||||||
valid_facial_hairstyles.Cut()
|
valid_facial_hairstyles.Cut()
|
||||||
generate_data()
|
generate_data()
|
||||||
|
|
||||||
/obj/nano_module/appearance_changer/proc/generate_data()
|
/datum/nano_module/appearance_changer/proc/generate_data()
|
||||||
if(!valid_species.len)
|
if(!valid_species.len)
|
||||||
valid_species = owner.generate_valid_species(check_whitelist, whitelist, blacklist)
|
valid_species = owner.generate_valid_species(check_whitelist, whitelist, blacklist)
|
||||||
if(!valid_hairstyles.len || !valid_facial_hairstyles.len)
|
if(!valid_hairstyles.len || !valid_facial_hairstyles.len)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/obj/nano_module/law_manager
|
/datum/nano_module/law_manager
|
||||||
name = "Law manager"
|
name = "Law manager"
|
||||||
|
|
||||||
var/ion_law = "IonLaw"
|
var/ion_law = "IonLaw"
|
||||||
var/zeroth_law = "ZerothLaw"
|
var/zeroth_law = "ZerothLaw"
|
||||||
var/inherent_law = "InherentLaw"
|
var/inherent_law = "InherentLaw"
|
||||||
@@ -13,9 +12,8 @@
|
|||||||
var/global/list/datum/ai_laws/player_laws
|
var/global/list/datum/ai_laws/player_laws
|
||||||
var/mob/living/silicon/owner = null
|
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
|
owner = S
|
||||||
|
|
||||||
if(!admin_laws)
|
if(!admin_laws)
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
if(laws.selectable)
|
if(laws.selectable)
|
||||||
player_laws += laws
|
player_laws += laws
|
||||||
|
|
||||||
/obj/nano_module/law_manager/Topic(href, href_list)
|
/datum/nano_module/law_manager/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -149,7 +147,7 @@
|
|||||||
|
|
||||||
return 0
|
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]
|
var/data[0]
|
||||||
owner.lawsync()
|
owner.lawsync()
|
||||||
|
|
||||||
@@ -185,14 +183,14 @@
|
|||||||
ui.open()
|
ui.open()
|
||||||
ui.set_auto_update(1)
|
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]
|
var/packaged_laws[0]
|
||||||
for(var/datum/ai_law/AL in laws)
|
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]")
|
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[field] = packaged_laws
|
||||||
data["has_[field]"] = packaged_laws.len
|
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]
|
var/law_sets[0]
|
||||||
for(var/datum/ai_laws/ALs in laws)
|
for(var/datum/ai_laws/ALs in laws)
|
||||||
var/packaged_laws[0]
|
var/packaged_laws[0]
|
||||||
@@ -204,7 +202,7 @@
|
|||||||
|
|
||||||
return law_sets
|
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()
|
return (is_admin(user) && !owner.is_slaved()) || owner.is_malf_or_traitor()
|
||||||
|
|
||||||
/mob/living/silicon/proc/is_slaved()
|
/mob/living/silicon/proc/is_slaved()
|
||||||
@@ -213,7 +211,7 @@
|
|||||||
/mob/living/silicon/robot/is_slaved()
|
/mob/living/silicon/robot/is_slaved()
|
||||||
return lawupdate && connected_ai ? sanitize(connected_ai.name) : null
|
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)
|
if(!AI)
|
||||||
return
|
return
|
||||||
for(var/mob/living/silicon/robot/R in AI.connected_robots)
|
for(var/mob/living/silicon/robot/R in AI.connected_robots)
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
/obj/nano_module/nano_host()
|
/datum/nano_module
|
||||||
return loc
|
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
|
return CanUseTopic(usr, state) == STATUS_INTERACTIVE
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
/obj/nano_module/power_monitor
|
/datum/nano_module/power_monitor
|
||||||
name = "Power monitor"
|
name = "Power monitor"
|
||||||
var/list/grid_sensors
|
var/list/grid_sensors
|
||||||
var/active_sensor = null //name_tag of the currently selected sensor
|
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()
|
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/data = list()
|
||||||
var/list/sensors = 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.
|
// 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)
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
// Refreshes list of active sensors kept on this computer.
|
// 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()
|
grid_sensors = list()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
for(var/obj/machinery/power/sensor/S in machines)
|
for(var/obj/machinery/power/sensor/S in machines)
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
grid_sensors += S
|
grid_sensors += S
|
||||||
|
|
||||||
// Allows us to process UI clicks, which are relayed in form of hrefs.
|
// 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(..())
|
if(..())
|
||||||
return
|
return
|
||||||
if( href_list["clear"] )
|
if( href_list["clear"] )
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/obj/nano_module/rcon
|
/datum/nano_module/rcon
|
||||||
name = "Power RCON"
|
name = "Power RCON"
|
||||||
|
|
||||||
var/list/known_SMESs = null
|
var/list/known_SMESs = null
|
||||||
var/list/known_breakers = null
|
var/list/known_breakers = null
|
||||||
// Allows you to hide specific parts of the UI
|
// Allows you to hide specific parts of the UI
|
||||||
@@ -8,7 +7,7 @@
|
|||||||
var/hide_SMES_details = 0
|
var/hide_SMES_details = 0
|
||||||
var/hide_breakers = 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
|
FindDevices() // Update our devices list
|
||||||
var/data[0]
|
var/data[0]
|
||||||
|
|
||||||
@@ -49,7 +48,7 @@
|
|||||||
// Proc: Topic()
|
// Proc: Topic()
|
||||||
// Parameters: 2 (href, href_list - allows us to process UI clicks)
|
// 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.
|
// 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(..())
|
if(..())
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -93,7 +92,7 @@
|
|||||||
// Proc: GetSMESByTag()
|
// Proc: GetSMESByTag()
|
||||||
// Parameters: 1 (tag - RCON tag of SMES we want to look up)
|
// Parameters: 1 (tag - RCON tag of SMES we want to look up)
|
||||||
// Description: Looks up and returns SMES which has matching RCON tag
|
// 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)
|
if(!tag)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -104,7 +103,7 @@
|
|||||||
// Proc: FindDevices()
|
// Proc: FindDevices()
|
||||||
// Parameters: None
|
// Parameters: None
|
||||||
// Description: Refreshes local list of known devices.
|
// Description: Refreshes local list of known devices.
|
||||||
/obj/nano_module/rcon/proc/FindDevices()
|
/datum/nano_module/rcon/proc/FindDevices()
|
||||||
known_SMESs = new /list()
|
known_SMESs = new /list()
|
||||||
for(var/obj/machinery/power/smes/buildable/SMES in machines)
|
for(var/obj/machinery/power/smes/buildable/SMES in machines)
|
||||||
if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon)
|
if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
*
|
*
|
||||||
* @return nothing
|
* @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
|
return
|
||||||
|
|
||||||
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
// Used by the Nano UI Manager (/datum/nanomanager) to track UIs opened by this mob
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ nanoui is used to open and update nano browser uis
|
|||||||
// the user who opened this ui
|
// the user who opened this ui
|
||||||
var/mob/user
|
var/mob/user
|
||||||
// the object this ui "belongs" to
|
// the object this ui "belongs" to
|
||||||
var/atom/movable/src_object
|
var/datum/src_object
|
||||||
// the title of this ui
|
// the title of this ui
|
||||||
var/title
|
var/title
|
||||||
// the key of this ui, this is to allow multiple (different) uis for each src_object
|
// 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()
|
/datum/nanoui/proc/get_config_data()
|
||||||
var/list/config_data = list(
|
var/list/config_data = list(
|
||||||
"title" = title,
|
"title" = title,
|
||||||
"srcObject" = list("name" = src_object.name),
|
"srcObject" = list("name" = "[src_object]"),
|
||||||
"stateKey" = state_key,
|
"stateKey" = state_key,
|
||||||
"status" = status,
|
"status" = status,
|
||||||
"autoUpdateLayout" = auto_update_layout,
|
"autoUpdateLayout" = auto_update_layout,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
use_power = 1
|
use_power = 1
|
||||||
idle_power_usage = 300
|
idle_power_usage = 300
|
||||||
active_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.
|
// Checks the sensors for alerts. If change (alerts cleared or detected) occurs, calls for icon update.
|
||||||
/obj/machinery/computer/power_monitor/process()
|
/obj/machinery/computer/power_monitor/process()
|
||||||
|
|||||||
Reference in New Issue
Block a user