mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-15 20:52:07 +00:00
Updates Part One
This commit is contained in:
@@ -157,3 +157,15 @@
|
||||
/datum/gear/utility/umbrella/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/cheaptablet
|
||||
display_name = "cheap tablet computer"
|
||||
path = /obj/item/modular_computer/tablet/preset/custom_loadout/cheap
|
||||
sort_category = "utility"
|
||||
cost = 3
|
||||
|
||||
/datum/gear/normaltablet
|
||||
display_name = "tablet computer"
|
||||
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
|
||||
sort_category = "utility"
|
||||
cost = 4
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/obj/machinery/modular_computer/console/preset/
|
||||
// Can be changed to give devices specific hardware
|
||||
var/_has_id_slot = 0
|
||||
var/_has_printer = 0
|
||||
var/_has_battery = 0
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/New()
|
||||
. = ..()
|
||||
if(!cpu)
|
||||
return
|
||||
if(_has_id_slot)
|
||||
cpu.card_slot = new/obj/item/weapon/computer_hardware/card_slot(cpu)
|
||||
if(_has_printer)
|
||||
cpu.nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(cpu)
|
||||
if(_has_battery)
|
||||
cpu.battery_module = new/obj/item/weapon/computer_hardware/battery_module/super(cpu)
|
||||
install_programs()
|
||||
|
||||
// Override in child types to install preset-specific programs.
|
||||
/obj/machinery/modular_computer/console/preset/proc/install_programs()
|
||||
return
|
||||
|
||||
// ===== ENGINEERING CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/engineering
|
||||
console_department = "Engineering"
|
||||
desc = "A stationary computer. This one comes preloaded with engineering programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/engineering/install_programs()
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/power_monitor())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/alarm_monitor())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/atmos_control())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/rcon_console())
|
||||
|
||||
|
||||
// ===== MEDICAL CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/medical
|
||||
console_department = "Medbay"
|
||||
desc = "A stationary computer. This one comes preloaded with medical programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/medical/install_programs()
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/suit_sensors())
|
||||
|
||||
|
||||
// ===== RESEARCH CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/research
|
||||
console_department = "Medbay"
|
||||
desc = "A stationary computer. This one comes preloaded with research programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/research/install_programs()
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/ntnetmonitor())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
|
||||
|
||||
// ===== COMMAND CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/command
|
||||
console_department = "Command"
|
||||
desc = "A stationary computer. This one comes preloaded with command programs."
|
||||
_has_id_slot = 1
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/command/install_programs()
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/card_mod())
|
||||
|
||||
|
||||
// ===== SECURITY CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/security
|
||||
console_department = "Security"
|
||||
desc = "A stationary computer. This one comes preloaded with security programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/security/install_programs()
|
||||
return // No security programs exist, yet, but the preset is ready so it may be mapped in.
|
||||
|
||||
|
||||
// ===== CIVILIAN CONSOLE =====
|
||||
/obj/machinery/modular_computer/console/preset/civilian
|
||||
console_department = "Civilian"
|
||||
desc = "A stationary computer. This one comes preloaded with generic programs."
|
||||
|
||||
/obj/machinery/modular_computer/console/preset/civilian/install_programs()
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/chatclient())
|
||||
cpu.hard_drive.store_file(new/datum/computer_file/program/nttransfer())
|
||||
@@ -10,6 +10,12 @@
|
||||
|
||||
var/obj/machinery/modular_computer/machinery_computer = null
|
||||
|
||||
/obj/item/modular_computer/processor/Destroy()
|
||||
if(machinery_computer && (machinery_computer.cpu == src))
|
||||
machinery_computer.cpu = null
|
||||
machinery_computer = null
|
||||
return ..()
|
||||
|
||||
// Due to how processes work, we'd receive two process calls - one from machinery type and one from our own type.
|
||||
// Since we want this to be in-sync with machinery (as it's hidden type for machinery-based computers) we'll ignore
|
||||
// non-relayed process calls.
|
||||
|
||||
@@ -6,3 +6,4 @@
|
||||
icon_state_menu = "menu"
|
||||
hardware_flag = PROGRAM_TABLET
|
||||
max_hardware_size = 1
|
||||
w_class = 2
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
// Available as custom loadout item, this is literally the worst possible cheap tablet
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/cheap/New()
|
||||
. = ..()
|
||||
desc = "A low-end tablet often seen among low ranked station personnel"
|
||||
battery_module = new/obj/item/weapon/computer_hardware/battery_module/nano(src)
|
||||
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/micro(src)
|
||||
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
||||
|
||||
// Alternative version, an average one, for higher ranked positions mostly
|
||||
/obj/item/modular_computer/tablet/preset/custom_loadout/advanced/New()
|
||||
. = ..()
|
||||
battery_module = new/obj/item/weapon/computer_hardware/battery_module(src)
|
||||
hard_drive = new/obj/item/weapon/computer_hardware/hard_drive/small(src)
|
||||
network_card = new/obj/item/weapon/computer_hardware/network_card(src)
|
||||
nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src)
|
||||
card_slot = new/obj/item/weapon/computer_hardware/card_slot(src)
|
||||
218
code/modules/modular_computers/file_system/programs/card.dm
Normal file
218
code/modules/modular_computers/file_system/programs/card.dm
Normal file
@@ -0,0 +1,218 @@
|
||||
/datum/computer_file/program/card_mod
|
||||
filename = "cardmod"
|
||||
filedesc = "ID card modification program"
|
||||
nanomodule_path = /datum/nano_module/card_mod
|
||||
program_icon_state = "id"
|
||||
extended_desc = "Program for programming employee ID cards to access parts of the station."
|
||||
required_access = access_hop
|
||||
requires_ntnet = 0
|
||||
size = 8
|
||||
|
||||
/datum/nano_module/card_mod
|
||||
name = "ID card modification program"
|
||||
var/mod_mode = 1
|
||||
var/is_centcom = 0
|
||||
var/show_assignments = 0
|
||||
|
||||
/datum/nano_module/card_mod/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()
|
||||
if(program)
|
||||
data = program.get_header_data()
|
||||
|
||||
data["src"] = "\ref[src]"
|
||||
data["station_name"] = station_name()
|
||||
data["manifest"] = data_core ? data_core.get_manifest(0) : null
|
||||
data["assignments"] = show_assignments
|
||||
if(program && program.computer)
|
||||
data["have_id_slot"] = !!program.computer.card_slot
|
||||
data["have_printer"] = !!program.computer.nano_printer
|
||||
data["authenticated"] = program.can_run(user)
|
||||
if(!program.computer.card_slot)
|
||||
mod_mode = 0 //We can't modify IDs when there is no card reader
|
||||
else
|
||||
data["have_id_slot"] = 0
|
||||
data["have_printer"] = 0
|
||||
data["authenticated"] = 0
|
||||
data["mmode"] = mod_mode
|
||||
data["centcom_access"] = is_centcom
|
||||
|
||||
if(program && program.computer && program.computer.card_slot)
|
||||
var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card
|
||||
data["has_id"] = !!id_card
|
||||
data["id_account_number"] = id_card ? id_card.associated_account_number : null
|
||||
data["id_rank"] = id_card && id_card.assignment ? id_card.assignment : "Unassigned"
|
||||
data["id_owner"] = id_card && id_card.registered_name ? id_card.registered_name : "-----"
|
||||
data["id_name"] = id_card ? id_card.name : "-----"
|
||||
|
||||
|
||||
data["engineering_jobs"] = format_jobs(engineering_positions)
|
||||
data["medical_jobs"] = format_jobs(medical_positions)
|
||||
data["science_jobs"] = format_jobs(science_positions)
|
||||
data["security_jobs"] = format_jobs(security_positions)
|
||||
data["cargo_jobs"] = format_jobs(cargo_positions)
|
||||
data["civilian_jobs"] = format_jobs(civilian_positions)
|
||||
data["centcom_jobs"] = format_jobs(get_all_centcom_jobs())
|
||||
|
||||
data["all_centcom_access"] = is_centcom ? get_accesses(1) : null
|
||||
data["regions"] = get_accesses()
|
||||
|
||||
if(program.computer.card_slot.stored_card)
|
||||
var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card
|
||||
if(is_centcom)
|
||||
var/list/all_centcom_access = list()
|
||||
for(var/access in get_all_centcom_access())
|
||||
all_centcom_access.Add(list(list(
|
||||
"desc" = replacetext(get_centcom_access_desc(access), " ", " "),
|
||||
"ref" = access,
|
||||
"allowed" = (access in id_card.access) ? 1 : 0)))
|
||||
data["all_centcom_access"] = all_centcom_access
|
||||
else
|
||||
var/list/regions = list()
|
||||
for(var/i = 1; i <= 7; i++)
|
||||
var/list/accesses = list()
|
||||
for(var/access in get_region_accesses(i))
|
||||
if (get_access_desc(access))
|
||||
accesses.Add(list(list(
|
||||
"desc" = replacetext(get_access_desc(access), " ", " "),
|
||||
"ref" = access,
|
||||
"allowed" = (access in id_card.access) ? 1 : 0)))
|
||||
|
||||
regions.Add(list(list(
|
||||
"name" = get_region_accesses_name(i),
|
||||
"accesses" = accesses)))
|
||||
data["regions"] = regions
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "identification_computer_lap.tmpl", name, 600, 700, state = state)
|
||||
ui.auto_update_layout = 1
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/datum/nano_module/card_mod/proc/format_jobs(list/jobs)
|
||||
var/obj/item/weapon/card/id/id_card = program.computer.card_slot.stored_card
|
||||
var/list/formatted = list()
|
||||
for(var/job in jobs)
|
||||
formatted.Add(list(list(
|
||||
"display_name" = replacetext(job, " ", " "),
|
||||
"target_rank" = id_card && id_card.assignment ? id_card.assignment : "Unassigned",
|
||||
"job" = job)))
|
||||
|
||||
return formatted
|
||||
|
||||
/datum/nano_module/card_mod/proc/get_accesses(var/is_centcom = 0)
|
||||
|
||||
return null
|
||||
|
||||
|
||||
/datum/computer_file/program/card_mod/Topic(href, href_list)
|
||||
var/mob/living/user = usr
|
||||
var/obj/item/weapon/card/id/user_id_card = user.GetIdCard()
|
||||
var/obj/item/weapon/card/id/id_card = computer.card_slot.stored_card
|
||||
var/datum/nano_module/card_mod/module = NM
|
||||
switch(href_list["action"])
|
||||
if("switchm")
|
||||
if(href_list["target"] == "mod")
|
||||
module.mod_mode = 1
|
||||
else if (href_list["target"] == "manifest")
|
||||
module.mod_mode = 0
|
||||
if("togglea")
|
||||
if(module.show_assignments)
|
||||
module.show_assignments = 0
|
||||
else
|
||||
module.show_assignments = 1
|
||||
if("print")
|
||||
if(computer && computer.nano_printer) //This option should never be called if there is no printer
|
||||
if(module.mod_mode)
|
||||
if(can_run(user, 1))
|
||||
var/contents = {"<h4>Access Report</h4>
|
||||
<u>Prepared By:</u> [user_id_card.registered_name ? user_id_card.registered_name : "Unknown"]<br>
|
||||
<u>For:</u> [id_card.registered_name ? id_card.registered_name : "Unregistered"]<br>
|
||||
<hr>
|
||||
<u>Assignment:</u> [id_card.assignment]<br>
|
||||
<u>Account Number:</u> #[id_card.associated_account_number]<br>
|
||||
<u>Blood Type:</u> [id_card.blood_type]<br><br>
|
||||
<u>Access:</u><br>
|
||||
"}
|
||||
for(var/A in id_card.access)
|
||||
contents += " [get_access_desc(A)]"
|
||||
|
||||
if(!computer.nano_printer.print_text(contents,"access report"))
|
||||
usr << "<span class='notice'>Hardware error: Printer was unable to print the file. It may be out of paper.</span>"
|
||||
return
|
||||
else
|
||||
computer.visible_message("<span class='notice'>[computer] prints out paper.</span>")
|
||||
else
|
||||
var/contents = {"<h4>Crew Manifest</h4>
|
||||
<br>
|
||||
[data_core ? data_core.get_manifest(0) : ""]
|
||||
"}
|
||||
if(!computer.nano_printer.print_text(contents,text("crew manifest ([])", stationtime2text())))
|
||||
usr << "<span class='notice'>Hardware error: Printer was unable to print the file. It may be out of paper.</span>"
|
||||
return
|
||||
else
|
||||
computer.visible_message("<span class='notice'>[computer] prints out paper.</span>")
|
||||
if("eject")
|
||||
if(computer && computer.card_slot)
|
||||
computer.proc_eject_id(user)
|
||||
if("terminate")
|
||||
if(computer && can_run(user, 1))
|
||||
id_card.assignment = "Terminated"
|
||||
id_card.access = list()
|
||||
callHook("terminate_employee", list(id_card))
|
||||
if("edit")
|
||||
if(computer && can_run(user, 1))
|
||||
if(href_list["name"])
|
||||
var/temp_name = sanitizeName(input("Enter name.", "Name", id_card.registered_name))
|
||||
if(temp_name)
|
||||
id_card.registered_name = temp_name
|
||||
else
|
||||
computer.visible_message("<span class='notice'>[computer] buzzes rudely.</span>")
|
||||
else if(href_list["account"])
|
||||
var/account_num = text2num(input("Enter account number.", "Account", id_card.associated_account_number))
|
||||
id_card.associated_account_number = account_num
|
||||
if("assign")
|
||||
if(computer && can_run(user, 1) && id_card)
|
||||
var/t1 = href_list["assign_target"]
|
||||
if(t1 == "Custom")
|
||||
var/temp_t = sanitize(input("Enter a custom job assignment.","Assignment", id_card.assignment), 45)
|
||||
//let custom jobs function as an impromptu alt title, mainly for sechuds
|
||||
if(temp_t)
|
||||
id_card.assignment = temp_t
|
||||
else
|
||||
var/list/access = list()
|
||||
if(module.is_centcom)
|
||||
access = get_centcom_access(t1)
|
||||
else
|
||||
var/datum/job/jobdatum
|
||||
for(var/jobtype in typesof(/datum/job))
|
||||
var/datum/job/J = new jobtype
|
||||
if(ckey(J.title) == ckey(t1))
|
||||
jobdatum = J
|
||||
break
|
||||
if(!jobdatum)
|
||||
usr << "<span class='warning'>No log exists for this job: [t1]</span>"
|
||||
return
|
||||
|
||||
access = jobdatum.get_access()
|
||||
|
||||
id_card.access = access
|
||||
id_card.assignment = t1
|
||||
id_card.rank = t1
|
||||
|
||||
callHook("reassign_employee", list(id_card))
|
||||
if("access")
|
||||
if(href_list["allowed"] && computer && can_run(user, 1))
|
||||
var/access_type = text2num(href_list["access_target"])
|
||||
var/access_allowed = text2num(href_list["allowed"])
|
||||
if(access_type in (get_all_centcom_access() + get_all_station_access()))
|
||||
id_card.access -= access_type
|
||||
if(!access_allowed)
|
||||
id_card.access += access_type
|
||||
if(id_card)
|
||||
id_card.name = text("[id_card.registered_name]'s ID Card ([id_card.assignment])")
|
||||
|
||||
SSnanoui.update_uis(NM)
|
||||
..(href, href_list)
|
||||
return 1
|
||||
@@ -29,6 +29,10 @@
|
||||
if(!istype(movable))
|
||||
movable = null
|
||||
|
||||
if(istype(movable, /obj/item/modular_computer/processor))
|
||||
var/obj/item/modular_computer/processor/P = movable
|
||||
stationary = P.machinery_computer
|
||||
|
||||
// No computer connection, we can't get data from that.
|
||||
if(!movable && !stationary)
|
||||
return 0
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
/obj/item/weapon/computer_hardware/card_slot/Destroy()
|
||||
if(holder2 && (holder2.card_slot == src))
|
||||
holder2.card_slot = null
|
||||
stored_card.loc = get_turf(holder2)
|
||||
if(stored_card)
|
||||
stored_card.forceMove(get_turf(holder2))
|
||||
holder2 = null
|
||||
..()
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "nano printer"
|
||||
desc = "Small integrated printer with scanner and paper recycling module."
|
||||
power_usage = 50
|
||||
critical = 0
|
||||
icon_state = "printer"
|
||||
hardware_size = 1
|
||||
var/stored_paper = 5
|
||||
@@ -9,7 +10,7 @@
|
||||
var/obj/item/weapon/paper/P = null // Currently stored paper for scanning.
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/nano_printer/proc/print_text(var/text_to_print)
|
||||
/obj/item/weapon/computer_hardware/nano_printer/proc/print_text(var/text_to_print, var/paper_title = null)
|
||||
if(!stored_paper)
|
||||
return 0
|
||||
|
||||
@@ -21,6 +22,8 @@
|
||||
|
||||
P = new/obj/item/weapon/paper(get_turf(holder2))
|
||||
P.info = text_to_print
|
||||
if(paper_title)
|
||||
P.name = paper_title
|
||||
P.update_icon()
|
||||
stored_paper--
|
||||
P = null
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
id = "hdd_basic"
|
||||
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 2000, "glass" = 100)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/
|
||||
sort_string = "VBAAA"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
id = "hdd_advanced"
|
||||
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 4000, "glass" = 200)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced
|
||||
sort_string = "VBAAB"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
id = "hdd_super"
|
||||
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 8000, "glass" = 400)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 8000, "glass" = 400)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/super
|
||||
sort_string = "VBAAC"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
id = "hdd_cluster"
|
||||
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 16000, "glass" = 800)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 16000, "glass" = 800)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster
|
||||
sort_string = "VBAAD"
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
id = "hdd_small"
|
||||
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 4000, "glass" = 200)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 200)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/small
|
||||
sort_string = "VBAAE"
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
id = "hdd_micro"
|
||||
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 2000, "glass" = 100)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 100)
|
||||
build_path = /obj/item/weapon/computer_hardware/hard_drive/micro
|
||||
sort_string = "VBAAF"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
id = "netcard_basic"
|
||||
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list("metal" = 500, "glass" = 100)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 100)
|
||||
chemicals = list("sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card
|
||||
sort_string = "VBAAG"
|
||||
@@ -70,7 +70,7 @@
|
||||
id = "netcard_advanced"
|
||||
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list("metal" = 1000, "glass" = 200)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200)
|
||||
chemicals = list("sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card/advanced
|
||||
sort_string = "VBAAH"
|
||||
@@ -80,7 +80,7 @@
|
||||
id = "netcard_wired"
|
||||
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list("metal" = 5000, "glass" = 400)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 400)
|
||||
chemicals = list("sacid" = 20)
|
||||
build_path = /obj/item/weapon/computer_hardware/network_card/wired
|
||||
sort_string = "VBAAI"
|
||||
@@ -122,7 +122,7 @@
|
||||
id = "cardslot"
|
||||
req_tech = list(TECH_DATA = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000)
|
||||
build_path = /obj/item/weapon/computer_hardware/card_slot
|
||||
sort_string = "VBAAM"
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
id = "nanoprinter"
|
||||
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 3000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000)
|
||||
build_path = /obj/item/weapon/computer_hardware/nano_printer
|
||||
sort_string = "VBAAN"
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
id = "teslalink"
|
||||
req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 10000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000)
|
||||
build_path = /obj/item/weapon/computer_hardware/tesla_link
|
||||
sort_string = "VBAAO"
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
id = "bat_normal"
|
||||
req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module
|
||||
sort_string = "VBAAP"
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
id = "bat_advanced"
|
||||
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 4000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module/advanced
|
||||
sort_string = "VBAAQ"
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
id = "bat_super"
|
||||
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 8000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 8000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module/super
|
||||
sort_string = "VBAAR"
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
id = "bat_ultra"
|
||||
req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 16000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 16000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module/ultra
|
||||
sort_string = "VBAAS"
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
id = "bat_nano"
|
||||
req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 2000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module/nano
|
||||
sort_string = "VBAAT"
|
||||
|
||||
@@ -197,6 +197,6 @@
|
||||
id = "bat_micro"
|
||||
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("metal" = 4000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000)
|
||||
build_path = /obj/item/weapon/computer_hardware/battery_module/micro
|
||||
sort_string = "VBAAU"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.4 KiB |
191
nano/templates/identification_computer_lap.tmpl
Normal file
191
nano/templates/identification_computer_lap.tmpl
Normal file
@@ -0,0 +1,191 @@
|
||||
{{if data.have_id_slot}}{{:helper.link('Access Modification', 'home', {'action' : 'switchm', 'target' : 'mod'}, data.mmode ? 'disabled' : null)}}{{/if}}
|
||||
{{:helper.link('Crew Manifest', 'folder-open', {'action' : 'switchm', 'target' : 'manifest'}, !data.mmode ? 'disabled' : null)}}
|
||||
{{if data.have_printer}}{{:helper.link('Print', 'print', {'action' : 'print'}, (!data.mmode || data.has_id) ? null : 'disabled')}}{{/if}}
|
||||
|
||||
{{if !data.mmode}}
|
||||
<div class='item'>
|
||||
<h2>Crew Manifest</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:data.manifest}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>Access Modification</h2>
|
||||
</div>
|
||||
|
||||
{{if !data.has_id}}
|
||||
<span class='alert'><i>Please insert the ID into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Target Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.id_name, 'eject', {'action' : 'eject'})}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{{if data.authenticated}}
|
||||
{{if data.has_id}}
|
||||
<div class='item'>
|
||||
<h2>Details</h2>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Registered Name:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.id_owner, 'pencil', {'action' : 'edit', 'name' : 1})}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Account Number:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.id_account_number, 'pencil', {'action' : 'edit', 'account' : 1})}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Terminations:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link('Terminate ' + data.id_owner, 'gear', {'action' : 'terminate'}, data.id_rank == "Terminated" ? 'disabled' : null, data.id_rank == "Terminated" ? 'disabled' : 'linkDanger')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<h2>Assignment</h2>
|
||||
</div>
|
||||
{{:helper.link(data.assignments ? "Hide assignments" : "Show assignments", 'gear', {'action' : 'togglea'})}}
|
||||
<div class='item'>
|
||||
<span id='allvalue.jobsslot'>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{if data.assignments}}
|
||||
<div id="all-value.jobs">
|
||||
<table>
|
||||
<tr>
|
||||
<th></th><th>Command</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Special</th>
|
||||
<td>
|
||||
{{:helper.link("Captain", '', {'action' : 'assign', 'assign_target' : 'Captain'}, data.id_rank == 'Captain' ? 'disabled' : null)}}
|
||||
{{:helper.link("Custom", '', {'action' : 'assign', 'assign_target' : 'Custom'})}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#FFA500';">Engineering</th>
|
||||
<td>
|
||||
{{for data.engineering_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#008000';">Medical</th>
|
||||
<td>
|
||||
{{for data.medical_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#800080';">Science</th>
|
||||
<td>
|
||||
{{for data.science_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#DD0000';">Security</th>
|
||||
<td>
|
||||
{{for data.security_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#cc6600';">Cargo</th>
|
||||
<td>
|
||||
{{for data.cargo_jobs}}
|
||||
{{if index && index % 6 === 0}}
|
||||
</td></tr><tr><th></th><td>
|
||||
{{/if}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#808080';">Civilian</th>
|
||||
<td>
|
||||
{{for data.civilian_jobs}}
|
||||
{{if index && index % 6 === 0}}
|
||||
</td></tr><tr><th></th><td>
|
||||
{{/if}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{if data.centcom_access}}
|
||||
<tr>
|
||||
<th style="color: '#A52A2A';">CentCom</th>
|
||||
<td>
|
||||
{{for data.centcom_jobs}}
|
||||
{{if index % 6 === 0}}
|
||||
</td></tr><tr><th></th><td>
|
||||
{{/if}}
|
||||
|
||||
{{:helper.link(value.display_name, '', {'action' : 'assign', 'assign_target' : value.job}, data.id_rank == value.job ? 'disabled' : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{if data.centcom_access}}
|
||||
<div class='item'>
|
||||
<h2>Central Command</h2>
|
||||
</div>
|
||||
<div class='item' style='width: 100%'>
|
||||
{{for data.all_centcom_access}}
|
||||
<div class='itemContentWide'>
|
||||
{{:helper.link(value.desc, '', {'action' : 'access', 'access_target' : value.ref, 'allowed' : value.allowed}, null, value.allowed ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>{{:data.station_name}}</h2>
|
||||
</div>
|
||||
<div class='item' style='width: 100%'>
|
||||
{{for data.regions}}
|
||||
<div style='float: left; width: 175px; min-height: 250px'>
|
||||
<div class='average'><b>{{:value.name}}</b></div>
|
||||
{{for value.accesses :accessValue:accessKey}}
|
||||
<div class='itemContentWide'>
|
||||
{{:helper.link(accessValue.desc, '', {'action' : 'access', 'access_target' : accessValue.ref, 'allowed' : accessValue.allowed}, null, accessValue.allowed ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
@@ -2101,6 +2101,7 @@
|
||||
#include "code\modules\modular_computers\computers\item\modular_computer.dm"
|
||||
#include "code\modules\modular_computers\computers\item\processor.dm"
|
||||
#include "code\modules\modular_computers\computers\item\tablet.dm"
|
||||
#include "code\modules\modular_computers\computers\item\tablet_presets.dm"
|
||||
#include "code\modules\modular_computers\computers\machinery\modular_computer.dm"
|
||||
#include "code\modules\modular_computers\computers\machinery\modular_console.dm"
|
||||
#include "code\modules\modular_computers\computers\machinery\modular_laptop.dm"
|
||||
@@ -2109,6 +2110,7 @@
|
||||
#include "code\modules\modular_computers\file_system\program.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\_engineering.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\_medical.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\card.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\configurator.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\file_browser.dm"
|
||||
#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm"
|
||||
|
||||
Reference in New Issue
Block a user