Removes ID computer parts (Removes computer hardware) (#71320)

## About The Pull Request

Removes the last computer part in the game: ID parts
Because this is removed, I also removed all computer hardware in the
game, and removed mentions of it in the game.
There is still 'hardware', as in Computer, Tablet, or Laptop.

Computers now all hold one ID slot by default, the only time a second ID
was needed was to use the access of both at once, and for the ID
modification application. This was now replaced with a new UI that only
has one tab, one ID slot:


https://user-images.githubusercontent.com/53777086/202801939-151b783f-75c8-46bf-a6c5-1b57b0d0da8e.mp4

## Why It's Good For The Game

Computer hardware is finally dead 🦀 

## Changelog

🆑
balance: All modular computers now only have one ID slot, and cannot be
upgraded.
qol: The HoP's access application now only has one app, logging in will
directly modify the ID that's in it, making it less confusing to swap
back and forth.
/🆑
This commit is contained in:
John Willard
2022-11-21 02:04:45 -05:00
committed by GitHub
parent 819d9d9082
commit b8d86849c8
42 changed files with 284 additions and 1092 deletions
@@ -150,7 +150,7 @@
return TRUE
if("Dispense_Tickets")
if(computer.stored_paper <= 0)
to_chat(usr, span_notice("Hardware error: Printer is out of paper."))
to_chat(usr, span_notice("Printer is out of paper."))
return
else
computer.visible_message(span_notice("\The [computer] prints out paper."))
@@ -22,7 +22,6 @@
var/list/data = get_header_data()
var/list/formatted_requests = list()
var/list/formatted_applicants = list()
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
if(current_user)
data["user"] = list()
data["user"]["name"] = current_user.account_holder
@@ -40,8 +39,8 @@
if(!networked)
GLOB.allbountyboards += computer
networked = TRUE
if(card_slot && card_slot.stored_card && card_slot.stored_card.registered_account)
current_user = card_slot.stored_card.registered_account
if(computer.computer_id_slot)
current_user = computer.computer_id_slot?.registered_account
for(var/i in GLOB.request_list)
if(!i)
continue
@@ -50,11 +50,7 @@
//Aquire access from the inserted ID card.
if(!length(access))
var/obj/item/card/id/D
var/obj/item/computer_hardware/card_slot/card_slot
if(computer)
card_slot = computer.all_components[MC_CARD]
D = card_slot?.GetID()
var/obj/item/card/id/D = computer?.computer_id_slot?.GetID()
if(!D)
return FALSE
access = D.GetAccess()
@@ -70,8 +66,7 @@
data["location"] = SSshuttle.supply.getStatusText()
data["department"] = "Cargo"
var/datum/bank_account/buyer = SSeconomy.get_dep_account(cargo_account)
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/id_card = card_slot?.GetID()
var/obj/item/card/id/id_card = computer.computer_id_slot?.GetID()
if(id_card?.registered_account)
if((ACCESS_COMMAND in id_card.access))
requestonly = FALSE
@@ -150,9 +145,9 @@
return data
/datum/computer_file/program/budgetorders/ui_act(action, params, datum/tgui/ui)
if(..())
. = ..()
if(.)
return
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
switch(action)
if("send")
if(!SSshuttle.supply.canMove())
@@ -224,7 +219,7 @@
return
var/reason = ""
if((requestonly && !self_paid) || !(card_slot?.GetID()))
if((requestonly && !self_paid) || !(computer.computer_id_slot?.GetID()))
reason = tgui_input_text(usr, "Reason", name)
if(isnull(reason) || ..())
return
@@ -235,13 +230,13 @@
return
if(!requestonly && !self_paid && ishuman(usr) && !account)
var/obj/item/card/id/id_card = card_slot?.GetID()
var/obj/item/card/id/id_card = computer.computer_id_slot?.GetID()
account = SSeconomy.get_dep_account(id_card?.registered_account?.account_job.paycheck_department)
var/turf/T = get_turf(src)
var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account)
SO.generateRequisition(T)
if((requestonly && !self_paid) || !(card_slot?.GetID()))
if((requestonly && !self_paid) || !(computer.computer_id_slot?.GetID()))
SSshuttle.request_list += SO
else
SSshuttle.shopping_list += SO
@@ -262,7 +257,7 @@
var/id = text2num(params["id"])
for(var/datum/supply_order/SO in SSshuttle.request_list)
if(SO.id == id)
var/obj/item/card/id/id_card = card_slot?.GetID()
var/obj/item/card/id/id_card = computer.computer_id_slot?.GetID()
if(id_card && id_card?.registered_account)
SO.paying_account = SSeconomy.get_dep_account(id_card?.registered_account?.account_job.paycheck_department)
SSshuttle.request_list -= SO
@@ -35,10 +35,10 @@
* compared to the access on the supplied ID card.
* Arguments:
* * user - Program's user.
* * id_card - The ID card to attempt to authenticate under.
* * auth_card - The ID card to attempt to authenticate under.
*/
/datum/computer_file/program/card_mod/proc/authenticate(mob/user, obj/item/card/id/id_card)
if(!id_card)
/datum/computer_file/program/card_mod/proc/authenticate(mob/user, obj/item/card/id/auth_card)
if(!auth_card)
return
region_access.Cut()
@@ -46,10 +46,10 @@
job_templates.Cut()
// If the program isn't locked to a specific department or is_centcom and we have ACCESS_CHANGE_IDS in our auth card, we're not minor.
if((!target_dept || is_centcom) && (ACCESS_CHANGE_IDS in id_card.access))
if((!target_dept || is_centcom) && (ACCESS_CHANGE_IDS in auth_card.access))
minor = FALSE
authenticated_card = "[id_card.name]"
authenticated_user = id_card.registered_name ? id_card.registered_name : "Unknown"
authenticated_card = "[auth_card.name]"
authenticated_user = auth_card.registered_name ? auth_card.registered_name : "Unknown"
job_templates = is_centcom ? SSid_access.centcom_job_templates.Copy() : SSid_access.station_job_templates.Copy()
valid_access = is_centcom ? SSid_access.get_region_access_list(list(REGION_CENTCOM)) : SSid_access.get_region_access_list(list(REGION_ALL_STATION))
update_static_data(user)
@@ -60,14 +60,14 @@
for(var/access_as_text in managers)
var/list/info = managers[access_as_text]
var/access = access_as_text
if((access in id_card.access) && ((target_dept in info["regions"]) || !target_dept))
if((access in auth_card.access) && ((target_dept in info["regions"]) || !target_dept))
region_access |= info["regions"]
job_templates |= info["templates"]
if(length(region_access))
minor = TRUE
valid_access |= SSid_access.get_region_access_list(region_access)
authenticated_card = "[id_card.name] \[LIMITED ACCESS\]"
authenticated_card = "[auth_card.name] \[LIMITED ACCESS\]"
update_static_data(user)
return TRUE
@@ -78,25 +78,16 @@
if(.)
return
var/obj/item/computer_hardware/card_slot/card_slot
var/obj/item/computer_hardware/card_slot/card_slot2
if(computer)
card_slot = computer.all_components[MC_CARD]
card_slot2 = computer.all_components[MC_CARD2]
if(!card_slot || !card_slot2)
return
var/mob/user = usr
var/obj/item/card/id/user_id_card = card_slot.stored_card
var/obj/item/card/id/target_id_card = card_slot2.stored_card
var/obj/item/card/id/inserted_auth_card = computer.computer_id_slot
switch(action)
// Log in.
if("PRG_authenticate")
if(!computer || !user_id_card)
if(!computer || !inserted_auth_card)
playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
return TRUE
if(authenticate(user, user_id_card))
if(authenticate(user, inserted_auth_card))
playsound(computer, 'sound/machines/terminal_on.ogg', 50, FALSE)
return TRUE
// Log out.
@@ -113,19 +104,19 @@
return TRUE
var/contents = {"<h4>Access Report</h4>
<u>Prepared By:</u> [authenticated_user]<br>
<u>For:</u> [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"]<br>
<u>For:</u> [inserted_auth_card.registered_name ? inserted_auth_card.registered_name : "Unregistered"]<br>
<hr>
<u>Assignment:</u> [target_id_card.assignment]<br>
<u>Assignment:</u> [inserted_auth_card.assignment]<br>
<u>Access:</u><br>
"}
var/list/known_access_rights = SSid_access.get_region_access_list(list(REGION_ALL_STATION))
for(var/A in target_id_card.access)
for(var/A in inserted_auth_card.access)
if(A in known_access_rights)
contents += " [SSid_access.get_access_desc(A)]"
contents += " [SSid_access.get_access_desc(A)]"
if(!computer.print_text(contents, "access report - [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"]"))
to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper."))
if(!computer.print_text(contents, "access report - [inserted_auth_card.registered_name ? inserted_auth_card.registered_name : "Unregistered"]"))
to_chat(usr, span_notice("Printer is out of paper."))
return TRUE
else
playsound(computer, 'sound/machines/terminal_on.ogg', 50, FALSE)
@@ -133,59 +124,55 @@
return TRUE
// Eject the ID used to log on to the ID app.
if("PRG_ejectauthid")
if(!computer || !card_slot)
return TRUE
if(user_id_card)
return card_slot.try_eject(user)
if(inserted_auth_card)
return computer.RemoveID(usr)
else
var/obj/item/I = user.get_active_held_item()
if(isidcard(I))
return card_slot.try_insert(I, user)
return computer.InsertID(I, user)
// Eject the ID being modified.
if("PRG_ejectmodid")
if(!computer || !card_slot2)
return TRUE
if(target_id_card)
GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.assignment, target_id_card.get_trim_assignment())
return card_slot2.try_eject(user)
if(inserted_auth_card)
GLOB.data_core.manifest_modify(inserted_auth_card.registered_name, inserted_auth_card.assignment, inserted_auth_card.get_trim_assignment())
return computer.RemoveID(usr)
else
var/obj/item/I = user.get_active_held_item()
if(isidcard(I))
return card_slot2.try_insert(I, user)
return computer.InsertID(I, user)
return TRUE
// Used to fire someone. Wipes all access from their card and modifies their assignment.
if("PRG_terminate")
if(!computer || !authenticated_card)
return TRUE
if(minor)
if(!(target_id_card.trim?.type in job_templates))
if(!(inserted_auth_card.trim?.type in job_templates))
to_chat(usr, span_notice("Software error: You do not have the necessary permissions to demote this card."))
return TRUE
// Set the new assignment then remove the trim.
target_id_card.assignment = is_centcom ? "Fired" : "Demoted"
SSid_access.remove_trim_from_card(target_id_card)
inserted_auth_card.assignment = is_centcom ? "Fired" : "Demoted"
SSid_access.remove_trim_from_card(inserted_auth_card)
playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE)
return TRUE
// Change ID card assigned name.
if("PRG_edit")
if(!computer || !authenticated_card || !target_id_card)
if(!computer || !authenticated_card || !inserted_auth_card)
return TRUE
var/old_name = target_id_card.registered_name
var/old_name = inserted_auth_card.registered_name
// Sanitize the name first. We're not using the full sanitize_name proc as ID cards can have a wider variety of things on them that
// would not pass as a formal character name, but would still be valid on an ID card created by a player.
var/new_name = sanitize(params["name"])
if(!new_name)
target_id_card.registered_name = null
inserted_auth_card.registered_name = null
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
target_id_card.update_label()
inserted_auth_card.update_label()
// We had a name before and now we have no name, so this will unassign the card and we update the icon.
if(old_name)
target_id_card.update_icon()
inserted_auth_card.update_icon()
return TRUE
// However, we are going to reject bad names overall including names with invalid characters in them, while allowing numbers.
@@ -195,63 +182,63 @@
to_chat(usr, span_notice("Software error: The ID card rejected the new name as it contains prohibited characters."))
return TRUE
target_id_card.registered_name = new_name
inserted_auth_card.registered_name = new_name
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
target_id_card.update_label()
inserted_auth_card.update_label()
// Card wasn't assigned before and now it is, so update the icon accordingly.
if(!old_name)
target_id_card.update_icon()
inserted_auth_card.update_icon()
return TRUE
// Change age
if("PRG_age")
if(!computer || !authenticated_card || !target_id_card)
if(!computer || !authenticated_card || !inserted_auth_card)
return TRUE
var/new_age = params["id_age"]
if(!isnum(new_age))
stack_trace("[key_name(usr)] ([usr]) attempted to set invalid age \[[new_age]\] to [target_id_card]")
stack_trace("[key_name(usr)] ([usr]) attempted to set invalid age \[[new_age]\] to [inserted_auth_card]")
return TRUE
target_id_card.registered_age = new_age
inserted_auth_card.registered_age = new_age
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
return TRUE
// Change assignment
if("PRG_assign")
if(!computer || !authenticated_card || !target_id_card)
if(!computer || !authenticated_card || !inserted_auth_card)
return TRUE
var/new_asignment = sanitize(params["assignment"])
target_id_card.assignment = new_asignment
inserted_auth_card.assignment = new_asignment
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
target_id_card.update_label()
inserted_auth_card.update_label()
return TRUE
// Add/remove access.
if("PRG_access")
if(!computer || !authenticated_card || !target_id_card)
if(!computer || !authenticated_card || !inserted_auth_card)
return TRUE
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
var/access_type = params["access_target"]
var/try_wildcard = params["access_wildcard"]
if(!(access_type in valid_access))
stack_trace("[key_name(usr)] ([usr]) attempted to add invalid access \[[access_type]\] to [target_id_card]")
stack_trace("[key_name(usr)] ([usr]) attempted to add invalid access \[[access_type]\] to [inserted_auth_card]")
return TRUE
if(access_type in target_id_card.access)
target_id_card.remove_access(list(access_type))
LOG_ID_ACCESS_CHANGE(user, target_id_card, "removed [SSid_access.get_access_desc(access_type)]")
if(access_type in inserted_auth_card.access)
inserted_auth_card.remove_access(list(access_type))
LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "removed [SSid_access.get_access_desc(access_type)]")
return TRUE
if(!target_id_card.add_access(list(access_type), try_wildcard))
if(!inserted_auth_card.add_access(list(access_type), try_wildcard))
to_chat(usr, span_notice("ID error: ID card rejected your attempted access modification."))
LOG_ID_ACCESS_CHANGE(user, target_id_card, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]")
LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "failed to add [SSid_access.get_access_desc(access_type)][try_wildcard ? " with wildcard [try_wildcard]" : ""]")
return TRUE
if(access_type in ACCESS_ALERT_ADMINS)
message_admins("[ADMIN_LOOKUPFLW(user)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(target_id_card)] [(target_id_card.registered_name) ? "belonging to [target_id_card.registered_name]." : "with no registered name."]")
LOG_ID_ACCESS_CHANGE(user, target_id_card, "added [SSid_access.get_access_desc(access_type)]")
message_admins("[ADMIN_LOOKUPFLW(user)] just added [SSid_access.get_access_desc(access_type)] to an ID card [ADMIN_VV(inserted_auth_card)] [(inserted_auth_card.registered_name) ? "belonging to [inserted_auth_card.registered_name]." : "with no registered name."]")
LOG_ID_ACCESS_CHANGE(user, inserted_auth_card, "added [SSid_access.get_access_desc(access_type)]")
return TRUE
// Apply template to ID card.
if("PRG_template")
if(!computer || !authenticated_card || !target_id_card)
if(!computer || !authenticated_card || !inserted_auth_card)
return TRUE
playsound(computer, SFX_TERMINAL_TYPE, 50, FALSE)
@@ -265,10 +252,10 @@
if(trim.assignment != template_name)
continue
SSid_access.add_trim_access_to_card(target_id_card, trim_path)
SSid_access.add_trim_access_to_card(inserted_auth_card, trim_path)
return TRUE
stack_trace("[key_name(usr)] ([usr]) attempted to apply invalid template \[[template_name]\] to [target_id_card]")
stack_trace("[key_name(usr)] ([usr]) attempted to apply invalid template \[[template_name]\] to [inserted_auth_card]")
return TRUE
@@ -302,39 +289,21 @@
/datum/computer_file/program/card_mod/ui_data(mob/user)
var/list/data = get_header_data()
data["station_name"] = station_name()
var/obj/item/computer_hardware/card_slot/card_slot
var/obj/item/computer_hardware/card_slot/card_slot2
if(computer)
card_slot = computer.all_components[MC_CARD]
card_slot2 = computer.all_components[MC_CARD2]
data["have_auth_card"] = !!(card_slot)
data["have_id_slot"] = !!(card_slot2)
else
data["have_id_slot"] = FALSE
if(!card_slot2)
return data //We're just gonna error out on the js side at this point anyway
var/obj/item/card/id/auth_card = card_slot.stored_card
data["authIDName"] = auth_card ? auth_card.name : "-----"
var/obj/item/card/id/inserted_id = computer.computer_id_slot
data["authIDName"] = inserted_id ? inserted_id.name : "-----"
data["authenticatedUser"] = authenticated_card
var/obj/item/card/id/id_card = card_slot2.stored_card
data["has_id"] = !!id_card
data["id_name"] = id_card ? id_card.name : "-----"
if(id_card)
data["id_rank"] = id_card.assignment ? id_card.assignment : "Unassigned"
data["id_owner"] = id_card.registered_name ? id_card.registered_name : "-----"
data["access_on_card"] = id_card.access
data["wildcardSlots"] = id_card.wildcard_slots
data["id_age"] = id_card.registered_age
data["has_id"] = !!inserted_id
data["id_name"] = inserted_id ? inserted_id.name : "-----"
if(inserted_id)
data["id_rank"] = inserted_id.assignment ? inserted_id.assignment : "Unassigned"
data["id_owner"] = inserted_id.registered_name ? inserted_id.registered_name : "-----"
data["access_on_card"] = inserted_id.access
data["wildcardSlots"] = inserted_id.wildcard_slots
data["id_age"] = inserted_id.registered_age
if(id_card.trim)
var/datum/id_trim/card_trim = id_card.trim
if(inserted_id.trim)
var/datum/id_trim/card_trim = inserted_id.trim
data["hasTrim"] = TRUE
data["trimAssignment"] = card_trim.assignment ? card_trim.assignment : ""
data["trimAccess"] = card_trim.access ? card_trim.access : list()
@@ -19,11 +19,9 @@
/datum/computer_file/program/shipping/ui_data(mob/user)
var/list/data = get_header_data()
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : null
data["has_id_slot"] = !!card_slot
data["has_id_slot"] = !!computer.computer_id_slot
data["paperamt"] = "[computer.stored_paper] / [computer.max_paper]"
data["card_owner"] = card_slot?.stored_card ? id_card.registered_name : "No Card Inserted."
data["card_owner"] = computer.computer_id_slot || "No Card Inserted."
data["current_user"] = payments_acc ? payments_acc.account_holder : null
data["barcode_split"] = cut_multiplier * 100
return data
@@ -35,23 +33,17 @@
if(!computer)
return
// Get components
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : null
if(!card_slot) //We need both to successfully use this app.
if(!computer.computer_id_slot) //We need an ID to successfully run
return
switch(action)
if("ejectid")
if(id_card)
card_slot.try_eject(usr, TRUE)
computer.RemoveID(usr)
if("selectid")
if(!id_card)
return
if(!id_card.registered_account)
if(!computer.computer_id_slot.registered_account)
playsound(get_turf(ui_host()), 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1)
return
payments_acc = id_card.registered_account
payments_acc = computer.computer_id_slot.registered_account
playsound(get_turf(ui_host()), 'sound/machines/ping.ogg', 50, TRUE, -1)
if("resetid")
payments_acc = null
@@ -60,7 +52,7 @@
cut_multiplier = potential_cut ? clamp(round(potential_cut/100, cut_min), cut_min, cut_max) : initial(cut_multiplier)
if("print")
if(computer.stored_paper <= 0)
to_chat(usr, span_notice("Hardware error: Printer is out of paper."))
to_chat(usr, span_notice("Printer is out of paper."))
return
if(!payments_acc)
to_chat(usr, span_notice("Software error: Please set a current user first."))
@@ -17,7 +17,7 @@
/datum/computer_file/program/computerconfig/ui_data(mob/user)
// No computer connection, we can't get data from that.
if(!computer)
return 0
return FALSE
var/list/data = get_header_data()
@@ -31,28 +31,4 @@
"charge" = round(computer.internal_cell.charge),
)
var/list/all_entries[0]
for(var/I in computer.all_components)
var/obj/item/computer_hardware/H = computer.all_components[I]
all_entries.Add(list(list(
"name" = H.name,
"desc" = H.desc,
"enabled" = H.enabled,
"critical" = H.critical,
"powerusage" = H.power_usage,
)))
data["hardware"] = all_entries
return data
/datum/computer_file/program/computerconfig/ui_act(action,params)
. = ..()
if(.)
return
switch(action)
if("PC_toggle_component")
var/obj/item/computer_hardware/H = computer.find_hardware_by_name(params["name"])
if(H && istype(H))
H.enabled = !H.enabled
. = TRUE
@@ -29,7 +29,7 @@
[GLOB.data_core ? GLOB.data_core.get_manifest_html(0) : ""]
"}
if(!computer.print_text(contents,text("crew manifest ([])", station_time_timestamp())))
to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper."))
to_chat(usr, span_notice("Printer is out of paper."))
return
else
computer.visible_message(span_notice("\The [computer] prints out a paper."))
@@ -71,9 +71,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if(.)
return
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/user_id = card_slot?.stored_card
var/obj/item/card/id/user_id = computer.computer_id_slot
if(!user_id || !(ACCESS_CHANGE_IDS in user_id.access))
return
@@ -125,18 +123,19 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
var/list/data = get_header_data()
var/authed = FALSE
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/user_id = card_slot?.stored_card
var/obj/item/card/id/user_id = computer.computer_id_slot
if(user_id && (ACCESS_CHANGE_IDS in user_id.access))
authed = TRUE
data["authed"] = authed
var/list/pos = list()
for(var/j in SSjob.joinable_occupations)
var/datum/job/job = j
var/list/priority = list()
for(var/datum/job/job as anything in SSjob.joinable_occupations)
if(job.title in blacklisted)
continue
if(job in SSjob.prioritized_jobs)
priority += job.title
pos += list(list(
"title" = job.title,
@@ -146,12 +145,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
"status_close" = authed ? can_close_job(job) : FALSE,
))
data["slots"] = pos
data["prioritized"] = priority
var/delta = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1)
data["cooldown"] = delta < 0 ? 0 : delta
var/list/priority = list()
for(var/j in SSjob.prioritized_jobs)
var/datum/job/job = j
priority += job.title
data["prioritized"] = priority
return data
@@ -33,22 +33,22 @@
return to_chat(usr, span_notice("You need to specify how much you're sending."))
if(token == current_user.pay_token)
return to_chat(usr, span_notice("You can't send credits to yourself."))
for(var/account as anything in SSeconomy.bank_accounts_by_id)
var/datum/bank_account/acc = SSeconomy.bank_accounts_by_id[account]
if(acc.pay_token == token)
recipient = acc
break
if(!recipient)
return to_chat(usr, span_notice("The app can't find who you're trying to pay. Did you enter the pay token right?"))
if(!current_user.has_money(money_to_send))
return current_user.bank_card_talk("You cannot afford it.")
recipient.bank_card_talk("You received [money_to_send] credit(s). Reason: transfer from [current_user.account_holder]")
recipient.transfer_money(current_user, money_to_send)
current_user.bank_card_talk("You send [money_to_send] credit(s) to [recipient.account_holder]. Now you have [current_user.account_balance] credit(s)")
if("GetPayToken")
wanted_token = null
for(var/account in SSeconomy.bank_accounts_by_id)
@@ -63,13 +63,8 @@
/datum/computer_file/program/nt_pay/ui_data(mob/user)
var/list/data = get_header_data()
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
if(card_slot && card_slot.stored_card && card_slot.stored_card.registered_account)
current_user = card_slot.stored_card.registered_account
else
current_user = null
current_user = computer.computer_id_slot?.registered_account || null
if(!current_user)
data["name"] = null
else
@@ -125,12 +125,8 @@
return FALSE
/datum/computer_file/program/ntnetdownload/ui_data(mob/user)
if(!istype(computer))
return
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
var/list/access = card_slot?.GetAccess()
var/list/data = get_header_data()
var/list/access = computer.GetAccess()
data["downloading"] = !!downloaded_file
data["error"] = downloaderror || FALSE
@@ -173,7 +169,7 @@
/datum/computer_file/program/ntnetdownload/proc/check_compatibility(datum/computer_file/program/P)
var/hardflag = computer.hardware_flag
if(P?.is_supported_by_hardware(hardflag,0))
if(P?.is_supported_by_hardware(hardware_flag = hardflag, loud = FALSE))
return TRUE
return FALSE
@@ -27,11 +27,8 @@
var/list/botlist = list()
var/list/mulelist = list()
var/obj/item/computer_hardware/card_slot/card_slot = computer ? computer.all_components[MC_CARD] : null
data["have_id_slot"] = !!card_slot
if(computer)
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : ""
data["id_owner"] = id_card
data["id_owner"] = computer.computer_id_slot || ""
botcount = 0
@@ -91,12 +88,7 @@
if(.)
return
var/mob/current_user = ui.user
var/obj/item/computer_hardware/card_slot/card_slot
var/obj/item/card/id/id_card
if(computer)
card_slot = computer.all_components[MC_CARD]
if(card_slot)
id_card = card_slot.stored_card
var/obj/item/card/id/id_card = computer?.computer_id_slot
var/list/standard_actions = list(
"patroloff",
@@ -126,15 +118,15 @@
if("summon")
simple_bot.bot_control(action, current_user, id_card ? id_card.access : current_access)
if("ejectcard")
if(!computer || !card_slot)
if(!computer || !computer.computer_id_slot)
return
if(id_card)
GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment, id_card.get_trim_assignment())
card_slot.try_eject(current_user)
computer.RemoveID(usr)
else
playsound(get_turf(ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE)
if("changedroneaccess")
if(!computer || !card_slot || !id_card)
if(!computer || !computer.computer_id_slot || !id_card)
to_chat(current_user, span_notice("No ID found, authorization failed."))
return
if(isdrone(current_user))
@@ -92,10 +92,6 @@
. = ..()
if (.)
return
var/obj/item/computer_hardware/card_slot/card_slot
if(computer)
card_slot = computer.all_components[MC_CARD]
var/obj/item/card/id/user_id_card = card_slot?.stored_card
// Check if the console is locked to block any actions occuring
if (locked && action != "toggleLock")
@@ -107,7 +103,7 @@
if(computer.obj_flags & EMAGGED)
to_chat(usr, span_boldwarning("Security protocol error: Unable to access locking protocols."))
return TRUE
if(lock_access in user_id_card?.access)
if(lock_access in computer?.computer_id_slot?.access)
locked = !locked
else
to_chat(usr, span_boldwarning("Unauthorized Access. Please insert research ID card."))