From 9175f53a2ead21f4b888edd6c8856d0c14902f0a Mon Sep 17 00:00:00 2001 From: Alien <68290943+alien3301@users.noreply.github.com> Date: Fri, 12 Dec 2025 03:18:37 +0200 Subject: [PATCH] Adds "Department Budget" access that lets you place orders with the shopping app, gives it to warden and cargo techs (#94288) ## About The Pull Request The "NT Shopping Network" app now checks for if you have "Department Budget" access instead of command access for letting you place orders and not requests. All heads, cargo techs and the warden have it shift start but it can be given to anyone (same as EVA access) and heads of staff can add or remove it at their access consoles. Also makes warden start with the app to hint that they have access to the budget. ## Why It's Good For The Game The access itself is good because letting heads choose who has access to the department budget is obviously good. Cargo techs get it cuz they already have access to it by having access to the request consoles in cargo. Warden gets it by default because HOS is usually busy killing/arresting/patrolling while warden is the one actually managing brig and the armory. If HOS really hates that warden has access to the budget they can just remove it on their console. --- code/__DEFINES/access.dm | 11 +++++++++++ code/controllers/subsystem/networks/id_access.dm | 1 + code/datums/id_trim/jobs.dm | 8 ++++++++ .../computers/item/role_tablet_presets.dm | 1 + .../file_system/programs/budgetordering.dm | 2 +- 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index ed4db359b58..b139ef6713b 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -28,6 +28,8 @@ #define ACCESS_ALL_PERSONAL_LOCKERS "all_personal_lockers" /// Access used for Access-Changing Programs, this one will unlock all options that can be ever given via that program. #define ACCESS_CHANGE_IDS "change_ids" +/// Access the PDA shopping app checks for to see if you can only request or place orders immediately +#define ACCESS_BUDGET "department_budget" /// Access used for the Captain's personal quarters in mapping, as well as what allows one to order emergency shuttles. #define ACCESS_CAPTAIN "captain" /// Access used for the Head of Personnel's personal quarters in mapping, as well as the security console and other HoP-related things. @@ -296,6 +298,7 @@ ACCESS_BIT_DEN, \ ACCESS_BRIG, \ ACCESS_BRIG_ENTRANCE, \ + ACCESS_BUDGET, \ ACCESS_CARGO, \ ACCESS_CHAPEL_OFFICE, \ ACCESS_CONSTRUCTION, \ @@ -351,6 +354,7 @@ ACCESS_AI_UPLOAD, \ ACCESS_ALL_PERSONAL_LOCKERS, \ ACCESS_ARMORY, \ + ACCESS_BUDGET, \ ACCESS_CHANGE_IDS, \ ACCESS_COMMAND, \ ACCESS_EVA, \ @@ -430,6 +434,7 @@ /// Used to seed the accesses_by_region list in SSid_access. A list of general service accesses that are overseen by the HoP. #define REGION_ACCESS_GENERAL list( \ ACCESS_BAR, \ + ACCESS_BUDGET, \ ACCESS_CHAPEL_OFFICE, \ ACCESS_CREMATORIUM, \ ACCESS_HYDROPONICS, \ @@ -447,6 +452,7 @@ ACCESS_ARMORY, \ ACCESS_BRIG, \ ACCESS_BRIG_ENTRANCE, \ + ACCESS_BUDGET, \ ACCESS_COURT, \ ACCESS_DETECTIVE, \ ACCESS_HOS, \ @@ -458,6 +464,7 @@ #define REGION_MEDBAY "Medbay" /// Used to seed the accesses_by_region list in SSid_access. A list of all medbay regional accesses that are overseen by the CMO. #define REGION_ACCESS_MEDBAY list( \ + ACCESS_BUDGET, \ ACCESS_CMO, \ ACCESS_MECH_MEDICAL, \ ACCESS_MEDICAL, \ @@ -475,6 +482,7 @@ /// Used to seed the accesses_by_region list in SSid_access. A list of all research regional accesses that are overseen by the RD. #define REGION_ACCESS_RESEARCH list( \ ACCESS_AI_UPLOAD, \ + ACCESS_BUDGET, \ ACCESS_GENETICS, \ ACCESS_MECH_SCIENCE, \ ACCESS_MINISAT, \ @@ -493,6 +501,7 @@ #define REGION_ACCESS_ENGINEERING list( \ ACCESS_ATMOSPHERICS, \ ACCESS_AUX_BASE, \ + ACCESS_BUDGET, \ ACCESS_CE, \ ACCESS_CONSTRUCTION, \ ACCESS_ENGINEERING, \ @@ -509,6 +518,7 @@ /// Used to seed the accesses_by_region list in SSid_access. A list of all cargo regional accesses that are overseen by the HoP. #define REGION_ACCESS_SUPPLY list( \ ACCESS_BIT_DEN, \ + ACCESS_BUDGET, \ ACCESS_CARGO, \ ACCESS_MECH_MINING, \ ACCESS_MINERAL_STOREROOM, \ @@ -524,6 +534,7 @@ #define REGION_ACCESS_COMMAND list( \ ACCESS_AI_UPLOAD, \ ACCESS_ALL_PERSONAL_LOCKERS, \ + ACCESS_BUDGET, \ ACCESS_CAPTAIN, \ ACCESS_CHANGE_IDS, \ ACCESS_COMMAND, \ diff --git a/code/controllers/subsystem/networks/id_access.dm b/code/controllers/subsystem/networks/id_access.dm index 548d892ce81..94793f31114 100644 --- a/code/controllers/subsystem/networks/id_access.dm +++ b/code/controllers/subsystem/networks/id_access.dm @@ -273,6 +273,7 @@ SUBSYSTEM_DEF(id_access) desc_by_access[ACCESS_AI_UPLOAD] = "AI Chambers" desc_by_access[ACCESS_TELEPORTER] = "Teleporter" desc_by_access[ACCESS_EVA] = "EVA" + desc_by_access[ACCESS_BUDGET] = "Department Budget" desc_by_access[ACCESS_COMMAND] = "Command" desc_by_access[ACCESS_CAPTAIN] = "Captain" desc_by_access[ACCESS_ALL_PERSONAL_LOCKERS] = "Personal Lockers" diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index e15d5fecff2..eb9f063d64f 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -291,6 +291,7 @@ subdepartment_color = COLOR_CARGO_BROWN sechud_icon_state = SECHUD_CARGO_TECHNICIAN minimal_access = list( + ACCESS_BUDGET, ACCESS_CARGO, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MINING, @@ -375,6 +376,7 @@ ACCESS_ATMOSPHERICS, ACCESS_AUX_BASE, ACCESS_BRIG_ENTRANCE, + ACCESS_BUDGET, ACCESS_CE, ACCESS_COMMAND, ACCESS_CONSTRUCTION, @@ -418,6 +420,7 @@ extra_wildcard_access = list() minimal_access = list( ACCESS_BRIG_ENTRANCE, + ACCESS_BUDGET, ACCESS_COMMAND, ACCESS_KEYCARD_AUTH, ACCESS_PLUMBING, @@ -634,6 +637,7 @@ ACCESS_AUX_BASE, ACCESS_BAR, ACCESS_BRIG_ENTRANCE, + ACCESS_BUDGET, ACCESS_CARGO, ACCESS_CHAPEL_OFFICE, ACCESS_CHANGE_IDS, @@ -692,6 +696,7 @@ ACCESS_BIT_DEN, ACCESS_BRIG, ACCESS_BRIG_ENTRANCE, + ACCESS_BUDGET, ACCESS_CARGO, ACCESS_COMMAND, ACCESS_CONSTRUCTION, @@ -951,6 +956,7 @@ minimal_access = list( ACCESS_AUX_BASE, ACCESS_BIT_DEN, + ACCESS_BUDGET, ACCESS_CARGO, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MINING, @@ -994,6 +1000,7 @@ ACCESS_AI_UPLOAD, ACCESS_AUX_BASE, ACCESS_BRIG_ENTRANCE, + ACCESS_BUDGET, ACCESS_COMMAND, ACCESS_CONSTRUCTION, ACCESS_EVA, @@ -1335,6 +1342,7 @@ ACCESS_MINERAL_STOREROOM, ACCESS_SECURITY, ACCESS_WEAPONS, + ACCESS_BUDGET, ) // See /datum/job/warden/get_access() extra_access = list( ACCESS_DETECTIVE, diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 8f046748514..87f18a285d4 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -133,6 +133,7 @@ starting_programs = list( /datum/computer_file/program/records/security, /datum/computer_file/program/robocontrol, + /datum/computer_file/program/budgetorders, ) /** diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm index 6e4651e8bfa..f17a6337380 100644 --- a/code/modules/modular_computers/file_system/programs/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm @@ -67,7 +67,7 @@ var/obj/item/card/id/id_card = computer.stored_id?.GetID() if(id_card?.registered_account) buyer = SSeconomy.get_dep_account(id_card?.registered_account.account_job.paycheck_department) - if((ACCESS_COMMAND in id_card.access)) + if((ACCESS_BUDGET in id_card.access)) requestonly = FALSE can_approve_requests = TRUE // If buyer is a departmental budget, replaces "Cargo" with that budget - we're not using the cargo budget here