diff --git a/code/game/objects/items/devices/communicator/UI.dm b/code/game/objects/items/devices/communicator/UI.dm index 8c2e43f6ed..ded52f1ffe 100644 --- a/code/game/objects/items/devices/communicator/UI.dm +++ b/code/game/objects/items/devices/communicator/UI.dm @@ -119,6 +119,9 @@ data["cart_templates"] = cartridge.ui_templates for(var/list/L in cartridge.get_data()) data[L["field"]] = L["value"] + // cartridge.get_data() returns a list of tuples: + // The field element is the tag used to access the information by the template + // The value element is the actual data, and can take any form necessary for the template // update the ui if it exists, returns null if no ui is passed/found ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -178,7 +181,7 @@ if(href_list["dial"]) if(!get_connection_to_tcomms()) - usr << "Error: Cannot connect to Exonet node." + to_chat(usr, "Error: Cannot connect to Exonet node.") return var/their_address = href_list["dial"] exonet.send_message(their_address, "voice") @@ -270,5 +273,8 @@ var/obj/O = cartridge.internal_devices[text2num(href_list["toggle_device"])] cartridge.active_devices ^= list(O) // Exclusive or, will toggle its presence + if(href_list["cartridge_topic"] && cartridge) // Has to have a cartridge to perform these functions + data = cartridge.Topic(href, href_list) + GLOB.nanomanager.update_uis(src) add_fingerprint(usr) diff --git a/code/game/objects/items/devices/communicator/cartridge.dm b/code/game/objects/items/devices/communicator/cartridge.dm index 0c529c980f..d9d2f95e3b 100644 --- a/code/game/objects/items/devices/communicator/cartridge.dm +++ b/code/game/objects/items/devices/communicator/cartridge.dm @@ -8,9 +8,9 @@ item_state = "electronic" w_class = ITEMSIZE_TINY - var/list/internal_devices = list() - var/list/active_devices = list() - var/list/ui_templates = list() + var/list/internal_devices = list() // Devices that can be toggled on to trigger on attack() + var/list/active_devices = list() // Devices that will be triggered on attack() + var/list/ui_templates = list() // List of lists for when multiple templates /obj/item/weapon/commcard/proc/get_device_status() var/list/L = list() @@ -22,35 +22,53 @@ L[++L.len] = list("name" = I.name, "active" = 0, "index" = i++) return L +// cartridge.get_data() returns a list of tuples: +// The field element is the tag used to access the information by the template +// The value element is the actual data, and can take any form necessary for the template /obj/item/weapon/commcard/proc/get_data() return list() +// Engineering Cartridge: +// Devices +// *- Halogen Counter +// Templates +// -- Power Monitor /obj/item/weapon/commcard/engineering name = "\improper Power-ON cartridge" icon_state = "cart-e" ui_templates = list(list("name" = "Power Monitor", "template" = "comm_power_monitor.tmpl")) - //Power monitor template - //Halogen counter /obj/item/weapon/commcard/engineering/New() ..() internal_devices |= new /obj/item/device/halogen_counter(src) - // Add power monitor template +/obj/item/weapon/commcard/engineering/get_data() + // Fetch power monitor data + + +// Atmospherics Cartridge: +// Devices +// *- Gas scanner /obj/item/weapon/commcard/atmos name = "\improper BreatheDeep cartridge" icon_state = "cart-a" - //Gas scanner /obj/item/weapon/commcard/atmos/New() ..() internal_devices |= new /obj/item/device/analyzer(src) + +// Medical Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// Templates +// *- Medical Records /obj/item/weapon/commcard/medical name = "\improper Med-U cartridge" icon_state = "cart-m" - ui_templates = list(list("name" = "Medical Records", "template" = "med_records.tmpl"), list("name" = "test", "template" = "comm2.tmpl")) // List of list for when multiple templates - //Med records template + ui_templates = list(list("name" = "Medical Records", "template" = "med_records.tmpl")) + //Med records //Med scanner //Halogen counter @@ -60,240 +78,284 @@ internal_devices |= new /obj/item/device/halogen_counter(src) /obj/item/weapon/commcard/medical/get_data() - var/med_records[0] - for(var/datum/data/record/M in sortRecord(data_core.medical)) - var/record[0] - record[++record.len] = list("tab" = "Name", "val" = M.fields["name"]) - record[++record.len] = list("tab" = "ID", "val" = M.fields["id"]) - record[++record.len] = list("tab" = "Blood Type", "val" = M.fields["b_type"]) - record[++record.len] = list("tab" = "DNA #", "val" = M.fields["b_dna"]) - record[++record.len] = list("tab" = "Gender", "val" = M.fields["id_gender"]) - record[++record.len] = list("tab" = "Entity Classification", "val" = M.fields["brain_type"]) - record[++record.len] = list("tab" = "Minor Disorders", "val" = M.fields["mi_dis"]) - record[++record.len] = list("tab" = "Major Disorders", "val" = M.fields["ma_dis"]) - record[++record.len] = list("tab" = "Allergies", "val" = M.fields["alg"]) - record[++record.len] = list("tab" = "Condition", "val" = M.fields["cdi"]) - record[++record.len] = list("tab" = "Notes", "val" = M.fields["notes"]) + return list(list("field" = "med_records", "value" = get_med_records())) - med_records[++med_records.len] = list("name" = M.fields["name"], "record" = record) - return list(list("field" = "med_records", "value" = med_records)) +// Chemistry Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// *- Reagent Scanner +// Templates +// *- Medical Records /obj/item/weapon/commcard/medical/chemistry name = "\improper ChemWhiz cartridge" icon_state = "cart-chem" - //Reagent scanner /obj/item/weapon/commcard/medical/chemistry/New() ..() internal_devices |= new /obj/item/device/reagent_scanner(src) + +// Detective Cartridge: +// Devices +// *- Halogen Counter +// *- Health Analyzer +// Templates +// *- Medical Records +// *- Security Records +/obj/item/weapon/commcard/medical/detective + name = "\improper D.E.T.E.C.T. cartridge" + icon_state = "cart-s" + ui_templates = list( + list("name" = "Medical Records", "template" = "med_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl") + ) + +/obj/item/weapon/commcard/medical/detective/get_data() + var/list/data = ..() + data[++data.len] = list("field" = "sec_records", "value" = get_sec_records()) + return data + + +// Internal Affairs Cartridge: +// Templates +// *- Security Records +// *- Employment Records /obj/item/weapon/commcard/int_aff name = "\improper P.R.O.V.E. cartridge" icon_state = "cart-s" - ui_templates = list(list("name" = "Employment Records", "template" = "emp_records.tmpl")) - //Emp records + ui_templates = list( + list("name" = "Employment Records", "template" = "emp_records.tmpl"), + list("name" = "Security Records", "template" = "sec_records.tmpl") + ) /obj/item/weapon/commcard/int_aff/New() ..() /obj/item/weapon/commcard/int_aff/get_data() - var/emp_records[0] - for(var/datum/data/record/G in sortRecord(data_core.general)) - var/record[0] - record[++record.len] = list("tab" = "Name", "val" = G.fields["name"]) - record[++record.len] = list("tab" = "ID", "val" = G.fields["id"]) - record[++record.len] = list("tab" = "Rank", "val" = G.fields["rank"]) - record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields["fingerprint"]) - record[++record.len] = list("tab" = "Entity Classification", "val" = G.fields["brain_type"]) - record[++record.len] = list("tab" = "Sex", "val" = G.fields["sex"]) - record[++record.len] = list("tab" = "Species", "val" = G.fields["species"]) - record[++record.len] = list("tab" = "Age", "val" = G.fields["age"]) - record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) - emp_records[++emp_records.len] = list("name" = G.fields["name"], "record" = record) - return list(list("field" = "emp_records", "value" = emp_records)) + return list( + list("field" = "emp_records", "value" = get_emp_records()), + list("field" = "sec_records", "value" = get_sec_records()) + ) + +// Security Cartridge: +// Templates +// *- Security Records +// *- Security Bot Access /obj/item/weapon/commcard/security name = "\improper R.O.B.U.S.T. cartridge" icon_state = "cart-s" - ui_templates = list(list("name" = "Security Records", "template" = "sec_records.tmpl"), list("name" = "Security Bot Controller", "template" = "sec_bot_access.tmpl")) - //Sec records - //Sec bot access template + ui_templates = list( + list("name" = "Security Records", "template" = "sec_records.tmpl"), + list("name" = "Security Bot Controller", "template" = "sec_bot_access.tmpl") + ) /obj/item/weapon/commcard/security/New() ..() - //Add sec records to ui template - //Add sec bot access template /obj/item/weapon/commcard/security/get_data() - var/sec_records[0] - for(var/datum/data/record/G in sortRecord(data_core.general)) - var/record[0] - record[++record.len] = list("tab" = "Name", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Sex", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Species", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Age", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Rank", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Physical Status", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Mental Status", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Criminal Status", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Major Crimes", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Minor Crimes", "val" = G.fields[""]) - record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) - sec_records[++sec_records.len] = list("name" = G.fields["name"], "record" = record) - return list(list("field" = "sec_records", "value" = sec_records)) + return list( + list("field" = "sec_records", "value" = get_sec_records()), + list("field" = "sec_bot_access", "value" = get_sec_bot_access()) + ) -/obj/item/weapon/commcard/security/detective - name = "\improper D.E.T.E.C.T. cartridge" - icon_state = "cart-s" - //Med records - -/obj/item/weapon/commcard/security/detective/New() - var/list/data = ..() - var/med_records[0] - for(var/datum/data/record/M in sortRecord(data_core.medical)) - var/record[0] - record[++record.len] = list("tab" = "Name", "val" = M.fields["name"]) - record[++record.len] = list("tab" = "ID", "val" = M.fields["id"]) - record[++record.len] = list("tab" = "Blood Type", "val" = M.fields["b_type"]) - record[++record.len] = list("tab" = "DNA #", "val" = M.fields["b_dna"]) - record[++record.len] = list("tab" = "Gender", "val" = M.fields["id_gender"]) - record[++record.len] = list("tab" = "Entity Classification", "val" = M.fields["brain_type"]) - record[++record.len] = list("tab" = "Minor Disorders", "val" = M.fields["mi_dis"]) - record[++record.len] = list("tab" = "Major Disorders", "val" = M.fields["ma_dis"]) - record[++record.len] = list("tab" = "Allergies", "val" = M.fields["alg"]) - record[++record.len] = list("tab" = "Condition", "val" = M.fields["cdi"]) - record[++record.len] = list("tab" = "Notes", "val" = M.fields["notes"]) - - med_records[++med_records.len] = list("name" = M.fields["name"], "record" = record) - data[++data.len] = list("field" = "med_records", "value" = med_records) +// Janitor Cartridge: +// Templates +// -- Janitorial Locator Magicbox /obj/item/weapon/commcard/janitor name = "\improper CustodiPRO cartridge" desc = "The ultimate in clean-room design." - //Janitorial Supplies Locator -/obj/item/weapon/commcard/janitor/New() - ..() - // Add janitoral locator template +/obj/item/weapon/commcard/janitor/get_data() + // Fetch janitorial locator + +// Service Cartridge: +// Templates +// -- Recipe Lists /obj/item/weapon/commcard/service name = "\improper Serv-U Pro" desc = "A data cartridge designed to serve YOU!" //I'm gonna regret this but recipes menu -/obj/item/weapon/commcard/service/New() - ..() +/obj/item/weapon/commcard/service/get_data() // Add list of recipes to ui template // SEE: /code/modules/food/recipe_dump.dm + +// Signal Cartridge: +// Devices +// *- Signaler +// Templates +// -- Signaler Access /obj/item/weapon/commcard/signal name = "generic signaler cartridge" desc = "A data cartridge with an integrated radio signaler module." - //Signaller + ui_templates = list( + list("name" = "Signaller", "template" = "signaler.tmpl") + ) /obj/item/weapon/commcard/signal/New() ..() - // Make a signaller, add it to internal devices - // Access the signaller through the ui template + internal_devices |= new /obj/item/device/assembly/signaler(src) // I'm probably gonna regret this too +/obj/item/weapon/commcard/signal/get_data() + signallers[0] + for(var/obj/item/device/assembly/signaler/S in internal_devices) + world << "Found [S]" + unit[0] + unit[++unit.len] = list("tab" = "Code", "value" = S.code) + unit[++unit.len] = list("tab" = "Frequency", "value" = S.frequency) + + signallers[++signallers.len] = unit + + return list( + list("field" = "signallers", "value" = signallers) + ) + + +// Science Cartridge: +// Devices +// *- Signaler +// *- Reagent Scanner +// *- Gas Scanner +// Templates +// -- Signaler Access /obj/item/weapon/commcard/signal/science name = "\improper Signal Ace 2 cartridge" desc = "Complete with integrated radio signaler!" icon_state = "cart-tox" - //Reagent scanner - //Gas scanner + // UI templates inherited /obj/item/weapon/commcard/signal/science/New() ..() internal_devices |= new /obj/item/device/reagent_scanner(src) internal_devices |= new /obj/item/device/analyzer(src) -/obj/item/weapon/commcard/quartermaster + +// Supply Cartridge: +// Templates +// -- Supply Records +// -- Supply Bot Access +/obj/item/weapon/commcard/supply name = "\improper Space Parts & Space Vendors cartridge" desc = "Perfect for the Quartermaster on the go!" icon_state = "cart-q" - //Supply records - //Supply bot access -/obj/item/weapon/commcard/quartermaster/New() - ..() +/obj/item/weapon/commcard/supply/get_data() // Add supply records to ui template // Add supply bot access to ui template + +// Mining Cartridge: +// Templates +// -- Ore Processing Recipes /obj/item/weapon/commcard/miner name = "\improper Drill-Jockey 4.5" desc = "It's covered in some sort of sand." - //Ore processing instructions?! -/obj/item/weapon/commcard/miner/New() - ..() +/obj/item/weapon/commcard/miner/get_data() // Add ore recipes to ui template + +// Command Cartridge: +// Templates +// -- Status Display Access +// *- Employment Records /obj/item/weapon/commcard/head name = "\improper Easy-Record DELUXE" icon_state = "cart-h" - //Status display - //Employment records -/obj/item/weapon/commcard/head/New() - ..() +/obj/item/weapon/commcard/head/get_data() // Add status display to ui template // Add employment records to ui template + +// Head of Personnel Cartridge: +// Templates +// -- Status Display Access +// *- Employment Records +// *- Security Records +// -- Supply Records +// -- Supply Bot Access +// -- Recipe Lists +// -- Janitorial Locator Magicbox /obj/item/weapon/commcard/head/hop name = "\improper HumanResources9001 cartridge" icon_state = "cart-h" - //Sec records - //Supply records - //Supply bot access - //Janitorial Supplies Locator - //Service menu -/obj/item/weapon/commcard/head/hop/New() - ..() - // Add sec records to ui template - // Add supply records to ui template - // Add supply bot access to ui template - // Add janitorial supplies locator to template - // Add service menu to template +/obj/item/weapon/commcard/head/hop/get_data() + var/list/data = ..() + // Sec records + // Supply records + // Supply bot access + // Janitorial locator magicbox + // Recipe lists + return data + +// Head pf Security Cartridge: +// Templates +// -- Status Display Access +// *- Employment Records +// *- Security Records +// *- Security Bot Access /obj/item/weapon/commcard/head/hos name = "\improper R.O.B.U.S.T. DELUXE" icon_state = "cart-hos" - // Sec records - // Sec bot access -/obj/item/weapon/commcard/head/hos/New() - ..() +/obj/item/weapon/commcard/head/hos/get_data() + var/list/data = ..() // Add sec records to ui template // Add sec bot access to ui template + return data + +// Research Director Cartridge: +// Devices +// *- Signaler +// *- Gas Scanner +// *- Reagent Scanner +// Templates +// -- Status Display Access +// *- Employment Records +// -- Signaler Access /obj/item/weapon/commcard/head/rd name = "\improper Signal Ace DELUXE" icon_state = "cart-rd" - //Signaller - //Gas scanner - //Reagent scanner /obj/item/weapon/commcard/head/rd/New() ..() - // Add signaller access template internal_devices |= new /obj/item/device/analyzer(src) internal_devices |= new /obj/item/device/reagent_scanner(src) + internal_devices |= new /obj/item/device/assembly/signaler(src) + +/obj/item/weapon/commcard/head/rd/get_data() + var/list/data = ..() + // Status Display + // Employment Records + // Signaler Access + return data +// Chief Medical Officer Cartridge: +// Devices +// *- Health Analyzer +// *- Reagent Scanner +// *- Halogen Counter +// Templates +// -- Status Display Access +// *- Employment Records +// *- Medical Records /obj/item/weapon/commcard/head/cmo name = "\improper Med-U DELUXE" icon_state = "cart-cmo" - //Med records - //Med scanner - //Health analyzer - //Reagent scanner - //Halogen counter /obj/item/weapon/commcard/head/cmo/New() ..() @@ -301,64 +363,84 @@ internal_devices |= new /obj/item/device/reagent_scanner(src) internal_devices |= new /obj/item/device/halogen_counter(src) +/obj/item/weapon/commcard/head/cmo/get_data() + var/list/data = ..() + // Med records + return data + +// Chief Engineer Cartridge: +// Devices +// *- Gas Scanner +// *- Halogen Counter +// Templates +// -- Status Display Access +// *- Employment Records +// -- Power Monitoring /obj/item/weapon/commcard/head/ce name = "\improper Power-On DELUXE" icon_state = "cart-ce" - //Power monitor - //Gas scanner - //Halogen counter /obj/item/weapon/commcard/head/ce/New() ..() internal_devices |= new /obj.item/device/analyzer(src) internal_devices |= new /obj/item/device/halogen_counter(src) - // Add power monitor to ui template +/obj/item/weapon/commcard/head/ce/get_data() + var/list/data = ..() + // Add power monitor to ui template + return data + + +// Captain Cartridge: +// Devices +// *- Health analyzer +// *- Gas Scanner +// *- Reagent Scanner +// *- Halogen Counter +// -- GPS +// *- Signaler +// Templates +// -- Status Display Access +// *- Employment Records +// *- Medical Records +// *- Security Records +// -- Power Monitoring +// -- Supply Records +// -- Supply Bot Access +// *- Security Bot Access +// -- Janitorial Locator Magicbox +// -- GPS Access +// -- Signaler Access /obj/item/weapon/commcard/head/captain name = "\improper Value-PAK cartridge" desc = "Now with 200% more value!" icon_state = "cart-c" - //Literally everything: - //Power monitor - //Med records - //Sec records - //Supply records - //Med scanner - //Reagent scanner - //Gas scanner - //Supply bot access - //Sec bot access - //Janitorial supply locator - //Gas analyzer - //Health analyzer - //Reagent scanner - //Halogen counter /obj/item/weapon/commcard/head/captain/New() ..() - // Add med records to ui template - // Add sec records to ui template - // Add supply records to ui template - // Add supply bot access to ui template - // Add sec bot access to ui template - // Add power monitor to ui template - // Add janitorial locator to ui template - // Add service menu to ui template internal_devices |= new /obj.item/device/analyzer(src) internal_devices |= new /obj/item/device/healthanalyzer(src) internal_devices |= new /obj/item/device/reagent_scanner(src) internal_devices |= new /obj/item/device/halogen_counter(src) +// Mercenary Cartridge +// Templates +// -- Syndicate Shuttle Door Controller /obj/item/weapon/commcard/mercenary name = "\improper Detomatix cartridge" icon_state = "cart" - //Syndi shuttle door controller -/obj/item/weapon/commcard/mercenary/New() - ..() +/obj/item/weapon/commcard/mercenary/get_data() + // Syndi shuttle door controller // Fuck if I know how that thing works + +// Explorer Cartridge +// Devices +// -- GPS +// Templates +// -- GPS Access /obj/item/weapon/commcard/explorer name = "\improper Explorator cartridge" icon_state = "cart-tox" @@ -367,4 +449,6 @@ /obj/item/weapon/commcard/explorer/New() ..() internal_devices |= new /obj/item/device/gps(src) - // Add GPS access to ui template \ No newline at end of file + +/obj/item/weapon/commcard/explorer/get_data() + // GPS Access \ No newline at end of file diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index 0dcf5c137d..5bd8074bb4 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -94,4 +94,102 @@ if(news[i]["time_stamp"] == oldest) news.Remove(news[i]) - return news \ No newline at end of file + return news + + + +// Putting the commcard data harvesting helpers here +// Not ideal to put all the procs on the base type +// but it may open options for adminbus, +// And it saves duplicated code + +// Medical records +/obj/item/weapon/commcard/proc/get_med_records() + var/med_records[0] + for(var/datum/data/record/M in sortRecord(data_core.medical)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = M.fields["name"]) + record[++record.len] = list("tab" = "ID", "val" = M.fields["id"]) + record[++record.len] = list("tab" = "Blood Type", "val" = M.fields["b_type"]) + record[++record.len] = list("tab" = "DNA #", "val" = M.fields["b_dna"]) + record[++record.len] = list("tab" = "Gender", "val" = M.fields["id_gender"]) + record[++record.len] = list("tab" = "Entity Classification", "val" = M.fields["brain_type"]) + record[++record.len] = list("tab" = "Minor Disorders", "val" = M.fields["mi_dis"]) + record[++record.len] = list("tab" = "Major Disorders", "val" = M.fields["ma_dis"]) + record[++record.len] = list("tab" = "Allergies", "val" = M.fields["alg"]) + record[++record.len] = list("tab" = "Condition", "val" = M.fields["cdi"]) + record[++record.len] = list("tab" = "Notes", "val" = M.fields["notes"]) + + med_records[++med_records.len] = list("name" = M.fields["name"], "record" = record) + return med_records + +// Employment records +/obj/item/weapon/commcard/proc/get_emp_records() + var/emp_records[0] + for(var/datum/data/record/G in sortRecord(data_core.general)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = G.fields["name"]) + record[++record.len] = list("tab" = "ID", "val" = G.fields["id"]) + record[++record.len] = list("tab" = "Rank", "val" = G.fields["rank"]) + record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields["fingerprint"]) + record[++record.len] = list("tab" = "Entity Classification", "val" = G.fields["brain_type"]) + record[++record.len] = list("tab" = "Sex", "val" = G.fields["sex"]) + record[++record.len] = list("tab" = "Species", "val" = G.fields["species"]) + record[++record.len] = list("tab" = "Age", "val" = G.fields["age"]) + record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) + + emp_records[++emp_records.len] = list("name" = G.fields["name"], "record" = record) + return emp_records + +// Security records +/obj/item/weapon/commcard/proc/get_sec_records() + var/sec_records[0] + for(var/datum/data/record/G in sortRecord(data_core.general)) + var/record[0] + record[++record.len] = list("tab" = "Name", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Sex", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Species", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Age", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Rank", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Fingerprint", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Physical Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Mental Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Criminal Status", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Major Crimes", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Minor Crimes", "val" = G.fields[""]) + record[++record.len] = list("tab" = "Notes", "val" = G.fields["notes"]) + + sec_records[++sec_records.len] = list("name" = G.fields["name"], "record" = record) + return sec_records + +/obj/item/weapon/commcard/proc/get_sec_bot_access() + var/sec_bots[0] + for(var/mob/living/bot/secbot/S in mob_list) + // Get new bot + var/status[0] + status[++status.len] = list("tab" = "Name", "val" = sanitize(S.name)) + + // If it's turned off, then it shouldn't be broadcasting any further info + if(!S.on) + status[++status.len] = list("tab" = "Power", "val" = "Off") // Encoding the span classes here so I don't have to do complicated switches in the ui template + continue + status[++status.len] = list("tab" = "Power", "val" = "On") + + // -- What it's doing + // If it's engaged, then say who it thinks it's engaging + if(S.target) + status[++status.len] = list("tab" = "Status", "val" = "Apprehending Target") + status[++status.len] = list("tab" = "Target", "val" = S.target_name(S.target)) + // Else if it's patrolling + else if(S.will_patrol) + status[++status.len] = list("tab" = "Status", "val" = "Patrolling") + // Otherwise we don't know what it's doing + else + status[++status.len] = list("tab" = "Status", "val" = "Idle") + + // Where it is + status[++status.len] = list("tab" = "Location", "val" = sanitize("[get_area(S.loc)]")) + + // Append bot to the list + sec_bots[++sec_bots.len] = list("bot" = S.name, "status" = status) + return sec_bots \ No newline at end of file diff --git a/nano/templates/emp_records.tmpl b/nano/templates/emp_records.tmpl index e59fa38fd6..16b5159039 100644 --- a/nano/templates/emp_records.tmpl +++ b/nano/templates/emp_records.tmpl @@ -11,11 +11,13 @@ {{for data.emp_records}} {{if value.name == data.currentTab}}
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

- {{for value.record :itemValue:itemIndex}} -
-
{{:itemValue.tab}}
-
{{:itemValue.val}}
-
- {{/for}} +
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
{{/if}} {{/for}} \ No newline at end of file diff --git a/nano/templates/med_records.tmpl b/nano/templates/med_records.tmpl index 2c40a66d28..f24339a779 100644 --- a/nano/templates/med_records.tmpl +++ b/nano/templates/med_records.tmpl @@ -11,11 +11,13 @@ {{for data.med_records}} {{if value.name == data.currentTab}}
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

- {{for value.record :itemValue:itemIndex}} -
-
{{:itemValue.tab}}
-
{{:itemValue.val}}
-
- {{/for}} +
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
{{/if}} {{/for}} \ No newline at end of file diff --git a/nano/templates/sec_bot_access.tmpl b/nano/templates/sec_bot_access.tmpl new file mode 100644 index 0000000000..f473eb026f --- /dev/null +++ b/nano/templates/sec_bot_access.tmpl @@ -0,0 +1,37 @@ +

Security Bot Control

+ +{{if data.currentTab == 0}} + + +
+ Select A Bot. +
+
+ {{for data.sec_bot_access}} +
+ {{:helper.link(value.bot, 'gear', {'switch_tab' : value.bot})}} +
+ {{empty}} +

No bots found.

+ {{/for}} +
+ {{:helper.link('Scan for Bots','gear', {'cartridge_topic' : "1", 'refresh_sec_bots' : "1"})}} + +{{else}} + + + {{for data.sec_bot_access}} + {{if value.bot == data.currentTab}} + {{for value.status :statVal:statIndex}} +
+
+ {{:statVal.tab}} +
+
+ {{:statVal.val}} +
+
+ {{/for}} + {{/if}} + {{/for}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/sec_records.tmpl b/nano/templates/sec_records.tmpl index 20cc80ed41..f644289061 100644 --- a/nano/templates/sec_records.tmpl +++ b/nano/templates/sec_records.tmpl @@ -11,11 +11,13 @@ {{for data.sec_records}} {{if value.name == data.currentTab}}
{{:helper.link('Back', 'icon-triangle-1-w', {'switch_tab' : 0})}}

- {{for value.record :itemValue:itemIndex}} -
-
{{:itemValue.tab}}
-
{{:itemValue.val}}
-
- {{/for}} +
+ {{for value.record :itemValue:itemIndex}} +
+
{{:itemValue.tab}}
+
{{:itemValue.val}}
+
+ {{/for}} +
{{/if}} {{/for}} \ No newline at end of file