From b459bf9d93a89304969ee2ed4565eb311c6787d0 Mon Sep 17 00:00:00 2001 From: Bop Date: Mon, 2 Oct 2023 08:25:29 +0700 Subject: [PATCH 01/18] world --- .../crates_lockers/crates/secure.dm | 32 +++++++++++++++++++ code/modules/cargo/exports/large_objects.dm | 7 +++- code/modules/cargo/packs.dm | 15 ++++++++- .../programs/supply/budgetordering.dm | 21 ++++++------ code/modules/shuttle/supply.dm | 15 ++++++++- 5 files changed, 76 insertions(+), 14 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index bd5bf80cb346..392779f102a6 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -97,6 +97,38 @@ ///Is the crate being bought by a person, or a budget card? var/department_purchase = FALSE +/obj/structure/closet/crate/secure/owned/cheap + +/obj/structure/closet/crate/secure/owned/hydroponics + icon_state = "hydrosecurecrate" + +/obj/structure/closet/crate/secure/owned/hydroponics/cheap + +/obj/structure/closet/crate/secure/owned/engineering + icon_state = "engi_secure_crate" + +/obj/structure/closet/crate/secure/owned/engineering/cheap + +/obj/structure/closet/crate/secure/owned/science + icon_state = "scisecurecrate" + +/obj/structure/closet/crate/secure/owned/science/cheap + +/obj/structure/closet/crate/secure/owned/medical + icon_state = "medsecurecrate" + +/obj/structure/closet/crate/secure/owned/medical/cheap + +/obj/structure/closet/crate/secure/owned/gear + icon_state = "secgearcrate" + +/obj/structure/closet/crate/secure/owned/gear/cheap + +/obj/structure/closet/crate/secure/owned/civ + icon_state = "securecrate" + +/obj/structure/closet/crate/secure/owned/civ/cheap + /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 8f8f8131d880..76bc56e28157 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -2,13 +2,18 @@ cost = 500 unit_name = "crate" export_types = list(/obj/structure/closet/crate) - exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin) + exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin) /datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much. . = ..() if(. && notes) . += " Thanks for participating in Nanotrasen Crates Recycling Program." +/datum/export/large/crate/cheap + cost = 100 + export_types = list(/obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap, /obj/structure/closet/crate/secure/owned/civ/cheap, /obj/structure/closet/crate/secure/owned/engineering/cheap, /obj/structure/closet/crate/secure/owned/gear/cheap, /obj/structure/closet/crate/secure/owned/hydroponics/cheap, /obj/structure/closet/crate/secure/owned/science/cheap, /obj/structure/closet/crate/secure/owned/medical/cheap) + exclude_types = list() + /datum/export/large/crate/wooden cost = 100 unit_name = "large wooden crate" diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 38990b7b3893..78bf132f3edb 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -21,7 +21,20 @@ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) - C = new /obj/structure/closet/crate/secure/owned(A, paying_account) + if(paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) + C = new /obj/structure/closet/crate/secure/owned/medical(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) + C = new /obj/structure/closet/crate/secure/owned/engineering(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_SCI)) + C = new /obj/structure/closet/crate/secure/owned/science(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_SRV)) + C = new /obj/structure/closet/crate/secure/owned/hydroponics(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_SEC)) + C = new /obj/structure/closet/crate/secure/owned/gear(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_CIV)) + C = new /obj/structure/closet/crate/secure/owned/civ(A, paying_account) + else + C = new /obj/structure/closet/crate/secure/owned(A, paying_account) C.name = "[crate_name] - Purchased by [paying_account.account_holder]" else C = new crate_type(A) diff --git a/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm b/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm index 28bffb560811..5995aa3edb50 100644 --- a/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm @@ -31,8 +31,6 @@ var/budget_order = FALSE ///If this is true, unlock the ability to order through budgets var/unlock_budget = TRUE - ///account for everything - var/datum/bank_account/account /datum/computer_file/program/budgetorders/proc/get_export_categories() . = EXPORT_CARGO @@ -73,7 +71,7 @@ . = ..() var/list/data = get_header_data() data["location"] = SSshuttle.supply.getStatusText() - account = SSeconomy.get_dep_account(ACCOUNT_CAR) + var/datum/bank_account/buyer = SSeconomy.get_dep_account(ACCOUNT_CAR) var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] var/obj/item/card/id/id_card = card_slot?.GetID() if(id_card?.registered_account) @@ -81,7 +79,7 @@ if(id_card?.registered_account?.account_job?.paycheck_department == ACCOUNT_CAR) unlock_budget = FALSE //cargo tech is already using the same budget. if(id_card?.registered_account?.account_job?.paycheck_department && budget_order) - account = SSeconomy.get_dep_account(id_card.registered_account.account_job.paycheck_department) + buyer = SSeconomy.get_dep_account(id_card.registered_account.account_job.paycheck_department) if((ACCESS_HEADS in id_card.access) || (ACCESS_QM in id_card.access) || (ACCESS_CARGO in id_card.access)) requestonly = FALSE can_approve_requests = TRUE @@ -93,8 +91,8 @@ else requestonly = TRUE unlock_budget = FALSE //none registered account shouldnt be using budget order - if(account) - data["points"] = account.account_balance + if(buyer) + data["points"] = buyer.account_balance //Otherwise static data, that is being applied in ui_data as the crates visible and buyable are not static, and are determined by inserted ID. data["requestonly"] = requestonly @@ -210,14 +208,13 @@ var/ckey = usr.ckey if(ishuman(usr)) var/mob/living/carbon/human/H = usr - if(budget_order) - name = account.account_holder - else - name = H.get_authentification_name() + name = H.get_authentification_name() rank = H.get_assignment(hand_first = TRUE) else if(issilicon(usr)) name = usr.real_name rank = "Silicon" + + var/datum/bank_account/account if(self_paid && ishuman(usr)) var/mob/living/carbon/human/H = usr var/obj/item/card/id/id_card = H.get_idcard(TRUE) @@ -242,9 +239,11 @@ var/obj/item/card/id/id_card = card_slot?.GetID() if(budget_order) account = SSeconomy.get_dep_account(id_card?.registered_account?.account_job.paycheck_department) + name = account.account_holder + rank = "*None Provided*" var/turf/T = get_turf(computer) - var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account, account.account_holder) + var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account, account?.account_holder) SO.generateRequisition(T) if((requestonly && !self_paid) || !(card_slot?.GetID())) SSshuttle.requestlist += SO diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index f4c18df95eb9..45060c0aa35e 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -126,7 +126,20 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( if(SO.pack.small_item) //small_item means it gets piled in the miscbox if(SO.paying_account) if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned(pick_n_take(empty_turfs), SO.paying_account) + if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/medical(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/engineering(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SCI)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/science(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SRV)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/hydroponics(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SEC)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/gear(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_CIV)) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/civ(pick_n_take(empty_turfs), SO.paying_account) + else + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned(pick_n_take(empty_turfs), SO.paying_account) miscboxes[D.account_holder].name = "small items crate - purchased by [D.account_holder]" misc_contents[D.account_holder] = list() for (var/item in SO.pack.contains) From 9df27c9d381690c1d59ec7d2dc54594c6ff8fd71 Mon Sep 17 00:00:00 2001 From: Bop Date: Mon, 2 Oct 2023 08:39:10 +0700 Subject: [PATCH 02/18] forgor oops --- code/modules/cargo/exports/large_objects.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 76bc56e28157..530071cfc334 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -2,7 +2,7 @@ cost = 500 unit_name = "crate" export_types = list(/obj/structure/closet/crate) - exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin) + exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin, /obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap, /obj/structure/closet/crate/secure/owned/civ/cheap, /obj/structure/closet/crate/secure/owned/engineering/cheap, /obj/structure/closet/crate/secure/owned/gear/cheap, /obj/structure/closet/crate/secure/owned/hydroponics/cheap, /obj/structure/closet/crate/secure/owned/science/cheap, /obj/structure/closet/crate/secure/owned/medical/cheap) /datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much. . = ..() From 096d88f60bad48ed7c4691f2cebdcea0ae289da5 Mon Sep 17 00:00:00 2001 From: Bop Date: Mon, 2 Oct 2023 11:45:42 +0700 Subject: [PATCH 03/18] guh --- code/modules/shuttle/supply.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 45060c0aa35e..c0561c131bb6 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -127,19 +127,19 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( if(SO.paying_account) if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/medical(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/medical/cheap(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/engineering(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/engineering/cheap(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SCI)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/science(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/science/cheap(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SRV)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/hydroponics(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/hydroponics/cheap(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SEC)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/gear(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/gear/cheap(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_CIV)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/civ(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/civ/cheap(pick_n_take(empty_turfs), SO.paying_account) else - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap(pick_n_take(empty_turfs), SO.paying_account) miscboxes[D.account_holder].name = "small items crate - purchased by [D.account_holder]" misc_contents[D.account_holder] = list() for (var/item in SO.pack.contains) From 9963fa4abef57b5dad33c8b5f7bd3bd1f5cc9447 Mon Sep 17 00:00:00 2001 From: Bop Date: Mon, 2 Oct 2023 12:52:54 +0700 Subject: [PATCH 04/18] yes --- .../game/objects/structures/crates_lockers/crates/secure.dm | 4 ++++ code/modules/cargo/packs.dm | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 392779f102a6..221ff1a763bb 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -129,6 +129,10 @@ /obj/structure/closet/crate/secure/owned/civ/cheap +/*/obj/structure/closet/crate/secure/owned/radiation + icon_state = "radiation_secure" +*/ + /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 78bf132f3edb..6460820b7d7b 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -17,10 +17,16 @@ var/DropPodOnly = FALSE//only usable by the Bluespace Drop Pod via the express cargo console var/admin_spawned = FALSE var/small_item = FALSE //Small items can be grouped into a single crate. + /** + * var/budget_radioactive = FALSE //Overwrite budget crate into radiation protective crate + */ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) + //if(budget_radioactive) + //C = new /obj/structure/closet/crate/secure/owned/radiation(A, paying_account) + //else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) C = new /obj/structure/closet/crate/secure/owned/medical(A, paying_account) else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) From 36600beb264ce0bbe815508335ded2cab25f242c Mon Sep 17 00:00:00 2001 From: Bop Date: Mon, 2 Oct 2023 22:11:53 +0700 Subject: [PATCH 05/18] fix it --- code/game/objects/structures/crates_lockers/crates/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 221ff1a763bb..aa507031d95c 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -125,7 +125,7 @@ /obj/structure/closet/crate/secure/owned/gear/cheap /obj/structure/closet/crate/secure/owned/civ - icon_state = "securecrate" + icon_state = "plasmacrate" /obj/structure/closet/crate/secure/owned/civ/cheap From 109752c33eb7b5a8d6b85e45975387d43cc6cb94 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 13:25:54 +0700 Subject: [PATCH 06/18] when --- .../crates_lockers/crates/secure.dm | 3 +-- code/modules/cargo/packs.dm | 14 +++++++------- icons/obj/crates.dmi | Bin 23680 -> 24912 bytes 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index c758bbafdcfc..5c7cdbfe3ffd 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -130,9 +130,8 @@ /obj/structure/closet/crate/secure/owned/civ/cheap -/*/obj/structure/closet/crate/secure/owned/radiation +/obj/structure/closet/crate/secure/owned/radiation icon_state = "radiation_secure" -*/ /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 75cd240cb94c..055fad41f52e 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -17,17 +17,14 @@ var/DropPodOnly = FALSE//only usable by the Bluespace Drop Pod via the express cargo console var/admin_spawned = FALSE var/small_item = FALSE //Small items can be grouped into a single crate. - /** - * var/budget_radioactive = FALSE //Overwrite budget crate into radiation protective crate - */ + var/budget_radioactive = FALSE //Overwrite budget crate into radiation protective crate /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) - //if(budget_radioactive) - //C = new /obj/structure/closet/crate/secure/owned/radiation(A, paying_account) - //else - if(paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) + if(budget_radioactive) + C = new /obj/structure/closet/crate/secure/owned/radiation(A, paying_account) + else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) C = new /obj/structure/closet/crate/secure/owned/medical(A, paying_account) else if(paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) C = new /obj/structure/closet/crate/secure/owned/engineering(A, paying_account) @@ -1264,6 +1261,7 @@ /obj/item/fuel_rod) crate_name = "Uranium-235 Fuel Rods" crate_type = /obj/structure/closet/crate/radiation + budget_radioactive = TRUE /datum/supply_pack/engine/fuel_rod_plutonium name = "Plutonium-239 Fuel Rods Crate" @@ -1276,6 +1274,7 @@ /obj/item/fuel_rod/plutonium) crate_name = "Plutonium-239 Fuel Rods" crate_type = /obj/structure/closet/crate/radiation + budget_radioactive = TRUE /datum/supply_pack/engine/fuel_rod_bananium name = "Bananium Fuel Rods Crate" @@ -1289,6 +1288,7 @@ /obj/item/fuel_rod/material/bananium) crate_name = "Bananium Fuel Rods" crate_type = /obj/structure/closet/crate/radiation + budget_radioactive = TRUE ////////////////////////////////////////////////////////////////////////////// /////////////////////// Canisters & Materials //////////////////////////////// diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index ff78317b55a991aa011754fb8e55a0ddf4c300b4..45bffe288f89cc20c996ee99fb082f3e982f0fb1 100644 GIT binary patch literal 24912 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 From a467db01843ce00d309e58e964a2280989f5dc48 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 13:34:57 +0700 Subject: [PATCH 07/18] lmao even --- .../game/objects/structures/crates_lockers/crates/secure.dm | 6 ++++++ code/modules/cargo/packs.dm | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 5c7cdbfe3ffd..146766604696 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -73,6 +73,11 @@ desc = "A crate with a lock on it, painted in the scheme of the station's engineers." name = "secure engineering crate" icon_state = "engi_secure_crate" + +/obj/structure/closet/crate/secure/radiation + desc = "A crate with a lock and is painted with a radiation sign on it." + name = "secure engineering crate" + icon_state = "radiation_secure" flags_1 = RAD_CONTAIN_CONTENTS // rad-insulated /obj/structure/closet/crate/secure/science @@ -132,6 +137,7 @@ /obj/structure/closet/crate/secure/owned/radiation icon_state = "radiation_secure" + flags_1 = RAD_CONTAIN_CONTENTS // rad-insulated /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 055fad41f52e..6a5048a39736 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1260,7 +1260,7 @@ /obj/item/fuel_rod, /obj/item/fuel_rod) crate_name = "Uranium-235 Fuel Rods" - crate_type = /obj/structure/closet/crate/radiation + crate_type = /obj/structure/closet/crate/secure/radiation budget_radioactive = TRUE /datum/supply_pack/engine/fuel_rod_plutonium @@ -1273,7 +1273,7 @@ /obj/item/fuel_rod/plutonium, /obj/item/fuel_rod/plutonium) crate_name = "Plutonium-239 Fuel Rods" - crate_type = /obj/structure/closet/crate/radiation + crate_type = /obj/structure/closet/crate/secure/radiation budget_radioactive = TRUE /datum/supply_pack/engine/fuel_rod_bananium @@ -1287,7 +1287,7 @@ /obj/item/fuel_rod/material/bananium, /obj/item/fuel_rod/material/bananium) crate_name = "Bananium Fuel Rods" - crate_type = /obj/structure/closet/crate/radiation + crate_type = /obj/structure/closet/crate/secure/radiation budget_radioactive = TRUE ////////////////////////////////////////////////////////////////////////////// From 5acf0581cbcbd95c30a4137be4909fe5ea97c269 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 14:13:52 +0700 Subject: [PATCH 08/18] Update secure.dm --- code/game/objects/structures/crates_lockers/crates/secure.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 146766604696..f89df4efd317 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -75,8 +75,9 @@ icon_state = "engi_secure_crate" /obj/structure/closet/crate/secure/radiation - desc = "A crate with a lock and is painted with a radiation sign on it." - name = "secure engineering crate" + desc = "A crate with a lock and is painted with a radiation sign on it. This crate is design +ed to prevent radiation from leaking outside of the crate." + name = "secure radiation crate" icon_state = "radiation_secure" flags_1 = RAD_CONTAIN_CONTENTS // rad-insulated From b4ed134b09be556eeeccc40eee5b0572d8fc8b46 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 14:18:21 +0700 Subject: [PATCH 09/18] Update secure.dm --- code/game/objects/structures/crates_lockers/crates/secure.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index f89df4efd317..4a782a378bf1 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -75,8 +75,7 @@ icon_state = "engi_secure_crate" /obj/structure/closet/crate/secure/radiation - desc = "A crate with a lock and is painted with a radiation sign on it. This crate is design -ed to prevent radiation from leaking outside of the crate." + desc = "A crate with a lock and is painted with a radiation sign on it. This crate is designed to prevent radiation from leaking outside of the crate." name = "secure radiation crate" icon_state = "radiation_secure" flags_1 = RAD_CONTAIN_CONTENTS // rad-insulated From fe06af5a0a905d376c256c5cb248e464732ac84d Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 16:31:39 +0700 Subject: [PATCH 10/18] cool --- .../crates_lockers/crates/secure.dm | 34 +++++++++++-------- code/modules/cargo/exports/large_objects.dm | 4 +-- code/modules/shuttle/supply.dm | 14 ++++---- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 146766604696..0632c07cf5c0 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -103,42 +103,48 @@ ///Is the crate being bought by a person, or a budget card? var/department_purchase = FALSE -/obj/structure/closet/crate/secure/owned/cheap - /obj/structure/closet/crate/secure/owned/hydroponics icon_state = "hydrosecurecrate" -/obj/structure/closet/crate/secure/owned/hydroponics/cheap - /obj/structure/closet/crate/secure/owned/engineering icon_state = "engi_secure_crate" -/obj/structure/closet/crate/secure/owned/engineering/cheap - /obj/structure/closet/crate/secure/owned/science icon_state = "scisecurecrate" -/obj/structure/closet/crate/secure/owned/science/cheap - /obj/structure/closet/crate/secure/owned/medical icon_state = "medsecurecrate" -/obj/structure/closet/crate/secure/owned/medical/cheap - /obj/structure/closet/crate/secure/owned/gear icon_state = "secgearcrate" -/obj/structure/closet/crate/secure/owned/gear/cheap - /obj/structure/closet/crate/secure/owned/civ icon_state = "plasmacrate" -/obj/structure/closet/crate/secure/owned/civ/cheap - /obj/structure/closet/crate/secure/owned/radiation icon_state = "radiation_secure" flags_1 = RAD_CONTAIN_CONTENTS // rad-insulated +/obj/structure/closet/crate/secure/owned/cheap + +/obj/structure/closet/crate/secure/owned/cheap/hydroponics + icon_state = "hydrosecurecrate" + +/obj/structure/closet/crate/secure/owned/cheap/engineering + icon_state = "engi_secure_crate" + +/obj/structure/closet/crate/secure/owned/cheap/science + icon_state = "scisecurecrate" + +/obj/structure/closet/crate/secure/owned/cheap/medical + icon_state = "medsecurecrate" + +/obj/structure/closet/crate/secure/owned/cheap/gear + icon_state = "secgearcrate" + +/obj/structure/closet/crate/secure/owned/cheap/civ + icon_state = "plasmacrate" + /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 530071cfc334..675727b8767a 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -2,7 +2,7 @@ cost = 500 unit_name = "crate" export_types = list(/obj/structure/closet/crate) - exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin, /obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap, /obj/structure/closet/crate/secure/owned/civ/cheap, /obj/structure/closet/crate/secure/owned/engineering/cheap, /obj/structure/closet/crate/secure/owned/gear/cheap, /obj/structure/closet/crate/secure/owned/hydroponics/cheap, /obj/structure/closet/crate/secure/owned/science/cheap, /obj/structure/closet/crate/secure/owned/medical/cheap) + exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/mail, /obj/structure/closet/crate/coffin, /obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap) /datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much. . = ..() @@ -11,7 +11,7 @@ /datum/export/large/crate/cheap cost = 100 - export_types = list(/obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap, /obj/structure/closet/crate/secure/owned/civ/cheap, /obj/structure/closet/crate/secure/owned/engineering/cheap, /obj/structure/closet/crate/secure/owned/gear/cheap, /obj/structure/closet/crate/secure/owned/hydroponics/cheap, /obj/structure/closet/crate/secure/owned/science/cheap, /obj/structure/closet/crate/secure/owned/medical/cheap) + export_types = list(/obj/structure/closet/crate/secure/cheap, /obj/structure/closet/crate/secure/owned/cheap) exclude_types = list() /datum/export/large/crate/wooden diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index c0561c131bb6..a9d7334363bd 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -127,17 +127,17 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( if(SO.paying_account) if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/medical/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/medical(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/engineering/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/engineering(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SCI)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/science/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/science(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SRV)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/hydroponics/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/hydroponics(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_SEC)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/gear/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/gear(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_CIV)) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/civ/cheap(pick_n_take(empty_turfs), SO.paying_account) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/civ(pick_n_take(empty_turfs), SO.paying_account) else miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap(pick_n_take(empty_turfs), SO.paying_account) miscboxes[D.account_holder].name = "small items crate - purchased by [D.account_holder]" @@ -147,7 +147,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( misc_order_num[D.account_holder] = "[misc_order_num[D.account_holder]]#[SO.id] " else //No private payment, so we just stuff it all into a generic crate if(!miscboxes.len || !miscboxes["Cargo"]) - miscboxes["Cargo"] = new /obj/structure/closet/crate/secure/cheap(pick_n_take(empty_turfs)) + miscboxes["Cargo"] = new /obj/structure/closet/crate/secure(pick_n_take(empty_turfs)) miscboxes["Cargo"].name = "small items crate" misc_contents["Cargo"] = list() miscboxes["Cargo"].req_access = list() From c2cf12235928cc6093876cd0dbf3496bcd4e3d61 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 20:48:10 +0700 Subject: [PATCH 11/18] crazy --- code/modules/shuttle/supply.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index a9d7334363bd..d10c5dc68993 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -126,7 +126,9 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( if(SO.pack.small_item) //small_item means it gets piled in the miscbox if(SO.paying_account) if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person - if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) + if(SO.pack.budget_radioactive) + miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/radiation(pick_n_take(empty_turfs), SO.paying_account) + else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/medical(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/engineering(pick_n_take(empty_turfs), SO.paying_account) @@ -147,7 +149,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( misc_order_num[D.account_holder] = "[misc_order_num[D.account_holder]]#[SO.id] " else //No private payment, so we just stuff it all into a generic crate if(!miscboxes.len || !miscboxes["Cargo"]) - miscboxes["Cargo"] = new /obj/structure/closet/crate/secure(pick_n_take(empty_turfs)) + miscboxes["Cargo"] = new /obj/structure/closet/crate/secure/cheap(pick_n_take(empty_turfs)) miscboxes["Cargo"].name = "small items crate" misc_contents["Cargo"] = list() miscboxes["Cargo"].req_access = list() From 3f95fbc13c739c02d33f594e99469b94e98b6b55 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 20:49:01 +0700 Subject: [PATCH 12/18] cra --- code/modules/shuttle/supply.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index d10c5dc68993..d908a532ab6c 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -126,9 +126,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( if(SO.pack.small_item) //small_item means it gets piled in the miscbox if(SO.paying_account) if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person - if(SO.pack.budget_radioactive) - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/radiation(pick_n_take(empty_turfs), SO.paying_account) - else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) + if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_MED)) miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/medical(pick_n_take(empty_turfs), SO.paying_account) else if(SO.paying_account == SSeconomy.get_dep_account(ACCOUNT_ENG)) miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned/cheap/engineering(pick_n_take(empty_turfs), SO.paying_account) From 0a53780863f0251a8f9a8132a6b2e7f32cce90c2 Mon Sep 17 00:00:00 2001 From: Bop Date: Thu, 5 Oct 2023 21:06:19 +0700 Subject: [PATCH 13/18] real --- .../file_system/programs/supply/budgetordering.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm b/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm index 5995aa3edb50..c9f3ac343a79 100644 --- a/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/supply/budgetordering.dm @@ -110,7 +110,7 @@ continue data["supplies"][P.group]["packs"] += list(list( "name" = P.name, - "cost" = P.cost, + "cost" = P.get_cost(), "id" = pack, "desc" = P.desc || P.name, // If there is a description, use it. Otherwise use the pack's name. "access" = P.access @@ -137,7 +137,7 @@ for(var/datum/supply_order/SO in SSshuttle.shoppinglist) data["cart"] += list(list( "object" = SO.pack.name, - "cost" = SO.pack.cost, + "cost" = SO.pack.get_cost(), "id" = SO.id, "orderer" = SO.orderer, "paid" = !isnull(SO.paying_account), //paid by requester @@ -148,7 +148,7 @@ for(var/datum/supply_order/SO in SSshuttle.requestlist) data["requests"] += list(list( "object" = SO.pack.name, - "cost" = SO.pack.cost, + "cost" = SO.pack.get_cost(), "orderer" = SO.orderer, "reason" = SO.reason, "id" = SO.id, From e13bbe3f5252e053079d52b0173cb45725c32171 Mon Sep 17 00:00:00 2001 From: Bop Date: Fri, 6 Oct 2023 15:35:46 +0700 Subject: [PATCH 14/18] head can now open private crates --- .../objects/structures/crates_lockers/crates/secure.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index d3ff2011cbce..e94a8577a905 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -171,9 +171,10 @@ if(!id_card || !id_card.registered_account) to_chat(user, span_notice("No bank account found!")) return - if((id_card.registered_account != buyer_account) && !(department_purchase && (id_card.registered_account?.account_job?.paycheck_department) == (department_account.department_id))) - to_chat(user, span_notice("Bank account does not match with buyer!")) - return + if(!(ACCESS_HEADS in id_card.access)) + if((id_card.registered_account != buyer_account) && !(department_purchase && (id_card.registered_account?.account_job?.paycheck_department) == (department_account.department_id))) + to_chat(user, span_notice("Bank account does not match with buyer!")) + return if(iscarbon(user)) add_fingerprint(user) locked = !locked From a0d257077df9079d643f28f2e9c20b57ecf744ce Mon Sep 17 00:00:00 2001 From: Bop Date: Fri, 6 Oct 2023 15:51:57 +0700 Subject: [PATCH 15/18] ? --- code/game/objects/structures/crates_lockers/crates/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index e94a8577a905..6d797307cd73 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -179,5 +179,5 @@ add_fingerprint(user) locked = !locked user.visible_message(span_notice("[user] [locked ? null : "un"]locks [src]."), - span_notice("You [locked ? null : "un"]lock [src].")) + span_notice("You [locked ? null : "un"]lock [src].")) update_appearance(UPDATE_ICON) From 59df3c1aded4223a993eccad5d6617e694c22f54 Mon Sep 17 00:00:00 2001 From: Bop Date: Fri, 6 Oct 2023 15:53:41 +0700 Subject: [PATCH 16/18] flavour --- code/game/objects/structures/crates_lockers/crates/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 6d797307cd73..1816c7e95c70 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -147,7 +147,7 @@ /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() - . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") + . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID or head's ID.") /obj/structure/closet/crate/secure/owned/Initialize(mapload, datum/bank_account/_buyer_account) . = ..() From c73800e4d695fdaf66af163e6494ee83b6fc3948 Mon Sep 17 00:00:00 2001 From: Bop Date: Sun, 8 Oct 2023 12:35:01 +0700 Subject: [PATCH 17/18] Remove head --- .../objects/structures/crates_lockers/crates/secure.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 1816c7e95c70..999d8a38d7d0 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -171,10 +171,9 @@ if(!id_card || !id_card.registered_account) to_chat(user, span_notice("No bank account found!")) return - if(!(ACCESS_HEADS in id_card.access)) - if((id_card.registered_account != buyer_account) && !(department_purchase && (id_card.registered_account?.account_job?.paycheck_department) == (department_account.department_id))) - to_chat(user, span_notice("Bank account does not match with buyer!")) - return + if((id_card.registered_account != buyer_account) && !(department_purchase && (id_card.registered_account?.account_job?.paycheck_department) == (department_account.department_id))) + to_chat(user, span_notice("Bank account does not match with buyer!")) + return if(iscarbon(user)) add_fingerprint(user) locked = !locked From 1e16c60ec9c6f197f563c5b18b815714fccb44c1 Mon Sep 17 00:00:00 2001 From: Bop Date: Sun, 8 Oct 2023 12:35:56 +0700 Subject: [PATCH 18/18] Update secure.dm --- code/game/objects/structures/crates_lockers/crates/secure.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 999d8a38d7d0..7bfef142fb45 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -147,7 +147,7 @@ /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() - . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID or head's ID.") + . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") /obj/structure/closet/crate/secure/owned/Initialize(mapload, datum/bank_account/_buyer_account) . = ..()