mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-17 02:54:44 +01:00
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:
@@ -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."))
|
||||
|
||||
Reference in New Issue
Block a user