From 8bc317a5c993094eebe8eef4b7bdaee4d9827856 Mon Sep 17 00:00:00 2001 From: Casper3667 <8396443+Casper3667@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:39:00 +0100 Subject: [PATCH] Adds new shelves and a cash register to the commissary (#21492) The shelves function similarly to a smartheater, but store various things that can be found in the commissary. The current shelf types are food & drinks, toys, cigarettes & lighters and clothing. A cash register was also added, which can store credits and handle transactions same way that a quik-pay can. The quik-pay also got a small upgrade, in that it can add items to it by clicking on the items. Smartfridges also got an upgrade, so they can have different amounts of overlay displays by only changing one list and one var. | Path | Original Author | License | | --- | --- | --- | | icons/obj/machinery/smartfridge.dmi | Tomixcomics (Aurora Station) | CC-BY | image Example of what the shelves look like. --- aurorastation.dme | 1 + code/game/objects/structures/urban.dm | 2 +- code/modules/cooking/machinery/commissary.dm | 339 ++++++++++++++++++ code/modules/cooking/machinery/smartfridge.dm | 15 +- code/modules/economy/quikpay.dm | 50 ++- html/changelogs/CommissaryUpgrades.yml | 9 + icons/obj/machinery/smartfridge.dmi | Bin 12145 -> 22002 bytes maps/sccv_horizon/sccv_horizon.dmm | 25 +- tgui/packages/tgui/interfaces/QuikPay.tsx | 37 +- 9 files changed, 434 insertions(+), 44 deletions(-) create mode 100644 code/modules/cooking/machinery/commissary.dm create mode 100644 html/changelogs/CommissaryUpgrades.yml diff --git a/aurorastation.dme b/aurorastation.dme index 7afbd72766a..65f04fe86fa 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2132,6 +2132,7 @@ #include "code\modules\cooking\plasticbag.dm" #include "code\modules\cooking\plates.dm" #include "code\modules\cooking\trays.dm" +#include "code\modules\cooking\machinery\commissary.dm" #include "code\modules\cooking\machinery\foodcart.dm" #include "code\modules\cooking\machinery\gibber.dm" #include "code\modules\cooking\machinery\icecream.dm" diff --git a/code/game/objects/structures/urban.dm b/code/game/objects/structures/urban.dm index a411ecaada2..0e6441534e5 100644 --- a/code/game/objects/structures/urban.dm +++ b/code/game/objects/structures/urban.dm @@ -825,7 +825,7 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp) name = "cash compartment" /obj/structure/cash_register/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params) - if(user == over && ishuman(over)) + if(user == over && ishuman(over) && storage_compartment) var/mob/living/carbon/human/H = over storage_compartment.open(H) diff --git a/code/modules/cooking/machinery/commissary.dm b/code/modules/cooking/machinery/commissary.dm new file mode 100644 index 00000000000..3eb5003466a --- /dev/null +++ b/code/modules/cooking/machinery/commissary.dm @@ -0,0 +1,339 @@ +/obj/machinery/smartfridge/tradeshelf + name = "cigarette shelf" + desc = "A commercialized shelf for cigarettes and associated items." + icon_state = "trade_smokes" + use_power = POWER_USE_OFF + idle_power_usage = 0 + active_power_usage = 0 + contents_path = "-cigarettebox" + accepted_items = list(/obj/item/storage/box/fancy/cigarettes, + /obj/item/storage/chewables, + /obj/item/storage/box/fancy/chewables, + /obj/item/storage/cigfilters, + /obj/item/storage/box/fancy/cigpaper, + /obj/item/storage/box/fancy/matches, + /obj/item/flame/lighter, + /obj/item/clothing/mask/smokable/ecig, + /obj/item/reagent_containers/ecig_cartridge + ) + display_tiers = 5 + display_tier_amt = 3 + +/obj/machinery/smartfridge/tradeshelf/clothing + name = "clothing shelf" + desc = "A commercialized shelf for clothing and associated items." + icon_state = "trade_clothes" + contents_path = "-clothing" + accepted_items = list(/obj/item/storage/backpack, + /obj/item/storage/belt, + /obj/item/clothing + ) + display_tiers = 3 + display_tier_amt = 5 + +/obj/machinery/smartfridge/tradeshelf/food + name = "food and drinks shelf" + desc = "A commercialized shelf for food and drinks." + icon_state = "trade_food" + contents_path = "-edible" + use_power = POWER_USE_IDLE + idle_power_usage = 5 + active_power_usage = 100 + cooling = TRUE + accepted_items = list(/obj/item/reagent_containers/food, + /obj/item/storage/box/fancy/cookiesnack + ) + display_tiers = 4 + display_tier_amt = 5 + +/obj/machinery/smartfridge/tradeshelf/toy + name = "toy shelf" + desc = "A commercialized shelf for toys and associated items." + icon_state = "trade_toys" + contents_path = "-toy" + accepted_items = list(/obj/item/toy, + /obj/item/lipstick, + /obj/item/device/paicard, + /obj/item/device/camera, + /obj/item/device/synthesized_instrument, + /obj/item/storage/box/unique/snappops, + /obj/item/haircomb, + /obj/item/storage/box/fancy/crayons, + /obj/item/melee/dinograbber, + /obj/item/device/laser_pointer, + /obj/item/deck, + /obj/item/storage/pill_bottle/dice + ) + display_tiers = 4 + display_tier_amt = 5 + +// ------------------------------------------------- +/obj/structure/cash_register/commissary + var/machine_id = "" + var/list/items = list() + var/list/items_to_price = list() + var/list/buying = list() + var/new_item = "" + var/new_price = 0 + var/sum = 0 + var/editmode = FALSE + var/receipt = "" + var/destinationact = "Operations" + var/credit = 100 + storage_type = null + +/obj/structure/cash_register/commissary/mechanics_hints(mob/user, distance, is_adjacent) + . = list() + . += "Alt click with a command id in hand, to gain command access." + . += "Alt click with credits in hand, to deposit them." + . += "Alt click while having operations access, to withdraw credits from it." + . += "Items can be paid for with id cards, charge cards or physical credits, and a receipt will be printed." + +/obj/structure/cash_register/commissary/Initialize() + . = ..() + machine_id = "[station_name()] Idris Quik-Pay Register #[SSeconomy.num_financial_terminals++]" + +/obj/structure/cash_register/commissary/AltClick(var/mob/user) + var/item = user.get_active_hand() + var/obj/item/card/id/I = item + if(istype(I) && (ACCESS_HEADS in I.access)) + if(ACCESS_HEADS in I.access) + editmode = TRUE + to_chat(user, SPAN_NOTICE("Command access granted.")) + SStgui.update_uis(src) + return + if(istype(item, /obj/item/spacecash) && !istype(item, /obj/item/spacecash/ewallet)) + var/obj/item/spacecash/cashmoney = item + credit += cashmoney.worth + user.drop_from_inventory(cashmoney,get_turf(src)) + visible_message("\The [user] inserts some credits into \the [src]." ) + qdel(cashmoney) + return + I = user.GetIdCard() + if(istype(I) && (ACCESS_CARGO in I.access)) + var/price_guess = text2num(sanitizeSafe( tgui_input_text(user, "How much do you wish to withdraw? Remaining cash: [credit]", "QuikPay", 0, 10), 10)) + if(isnull(price_guess) || price_guess == 0) + return + price_guess = max(0, round(price_guess, 0.01)) + if(credit >= price_guess) + spawn_money(price_guess, loc, user) + credit -= price_guess + visible_message("\The [user] remove some credits from \the [src]." ) + return + +/obj/structure/cash_register/commissary/proc/print_receipt() + var/obj/item/paper/R = new(loc) + var/receiptname = "Receipt: [machine_id]" + R.set_content_unsafe(receiptname, receipt, sum) + + //stamp the paper + var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') + stampoverlay.icon_state = "paper_stamp-cent" + if(!R.stamped) + R.stamped = new + R.stamped += /obj/item/stamp + R.AddOverlays(stampoverlay) + R.stamps += "
This paper has been stamped by the Idris Quik-Pay Register." + usr.put_in_any_hand_if_possible(R) + +/obj/structure/cash_register/commissary/attackby(obj/item/attacking_item, mob/user) + if(sum == 0) + return + if (istype(attacking_item, /obj/item/spacecash/ewallet)) + card_pay(attacking_item, user) + return + else if (istype(attacking_item, /obj/item/card/id)) + ID_pay(attacking_item, user) + return + else if(istype(attacking_item, /obj/item/spacecash)) + cash_pay(attacking_item, user) + return + +/obj/structure/cash_register/commissary/proc/cash_pay(obj/item/spacecash/cashmoney, mob/user) + var/transaction_amount = sum + if(transaction_amount > cashmoney.worth) + to_chat(user, SPAN_WARNING("[icon2html(cashmoney, user)] That is not enough money.")) + return 0 + if(istype(cashmoney, /obj/item/spacecash/bundle)) + visible_message(SPAN_INFO("\The [user] inserts some cash into \the [src].")) + var/obj/item/spacecash/bundle/cashmoney_bundle = cashmoney + cashmoney_bundle.worth -= transaction_amount + + if(cashmoney_bundle.worth <= 0) + usr.drop_from_inventory(cashmoney_bundle,get_turf(src)) + qdel(cashmoney_bundle) + else + cashmoney_bundle.update_icon() + else + visible_message(SPAN_INFO("\The [user] inserts a bill into \the [src].")) + var/left = cashmoney.worth - transaction_amount + user.drop_from_inventory(cashmoney,get_turf(src)) + qdel(cashmoney) + + if(left) + spawn_money(left, get_turf(user), user) + credit += transaction_amount + print_receipt() + clear_order() + return 1 + +/obj/structure/cash_register/commissary/proc/ID_pay(obj/item/attacking_item, mob/user) + var/obj/item/card/id/I = attacking_item.GetID() + var/transaction_amount = sum + var/transaction_purpose = "[destinationact] Payment" + var/transaction_terminal = machine_id + + var/transaction = SSeconomy.transfer_money(I.associated_account_number, SSeconomy.get_department_account(destinationact)?.account_number,transaction_purpose,transaction_terminal,transaction_amount,null,usr) + + if(transaction) + to_chat(user, SPAN_NOTICE("[icon2html(src, user)][transaction].")) + else + playsound(src, 'sound/machines/chime.ogg', 50, 1) + visible_message(SPAN_NOTICE("[icon2html(src, viewers(get_turf(src)))] \The [src] chimes.")) + visible_message("\The [user] swipes a card on \the [src]." ) + print_receipt() + sum = 0 + receipt = "" + to_chat(user, SPAN_NOTICE("Transaction completed, please return to the home screen.")) + clear_order() + +/obj/structure/cash_register/commissary/proc/card_pay(obj/item/attacking_item, mob/user) + var/obj/item/spacecash/ewallet/E = attacking_item + var/transaction_amount = sum + var/transaction_purpose = "[destinationact] Payment" + var/transaction_terminal = machine_id + + if(transaction_amount <= E.worth) + playsound(src, 'sound/machines/chime.ogg', 50, 1) + src.visible_message(SPAN_NOTICE("[icon2html(src, viewers(get_turf(src)))] \The [src] chimes.")) + + SSeconomy.charge_to_account(SSeconomy.get_department_account(destinationact)?.account_number, E.owner_name, transaction_purpose, transaction_terminal, transaction_amount) + E.worth -= transaction_amount + visible_message("\The [user] swipes a card on \the [src]." ) + print_receipt() + sum = 0 + receipt = "" + to_chat(user, SPAN_NOTICE("Transaction completed, please return to the home screen.")) + clear_order() + else if (transaction_amount > E.worth) + to_chat(user, SPAN_WARNING("[icon2html(src, user)]\The [E] doesn't have that much money!")) + return + +/obj/structure/cash_register/commissary/attack_hand(mob/living/user) + . = ..() + ui_interact(user) + +/obj/structure/cash_register/commissary/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "QuikPay", "Idris Quik-Pay Register", 400, 400) + ui.open() + +/obj/structure/cash_register/commissary/ui_data(var/mob/user) + var/list/data = list() + + data["items"] = items + data["buying"] = buying + data["sum"] = sum + data["new_item"] = new_item + data["new_price"] = new_price + data["editmode"] = editmode + data["destinationact"] = destinationact + + return data + +/obj/structure/cash_register/commissary/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("add") + if(!editmode) + to_chat(usr, SPAN_WARNING("Device locked.")) + return FALSE + + items += list(list("name" = new_item, "price" = new_price)) + items_to_price[new_item] = new_price + . = TRUE + + if("remove") + if(!editmode) + to_chat(usr, SPAN_NOTICE("Device locked.")) + return FALSE + var/index = 0 + for(var/list/L in items) + index++ + if(L["name"] == params["removing"]) + items.Cut(index, index+1) + . = TRUE + + if("set_new_price") + new_price = params["set_new_price"] + . = TRUE + + if("set_new_item") + new_item = params["set_new_item"] + . = TRUE + + if("clear") + clear_order() + . = TRUE + + if("buy") + for(var/list/L in buying) + if(L["name"] == params["buying"]) + L["amount"]++ + return TRUE + buying += list(list("name" = params["buying"], "amount" = params["amount"])) + + if("removal") + var/index = 0 + for(var/list/L in buying) + index++ + if(L["name"] == params["removal"]) + if(L["amount"] > 1) + L["amount"]-- + else + items.Cut(index, index+1) + . = TRUE + + if("confirm") + for(var/list/bought_item in buying) + var/item_name = bought_item["name"] + var/item_amount = bought_item["amount"] + var/item_price = items_to_price[item_name] + + receipt += "[item_name]: x[item_amount] at [item_price]cr each
" + sum += item_price * item_amount + receipt += "Total: [sum]cr
" + . = TRUE + + if("locking") + if(editmode) + editmode = FALSE + to_chat(usr, SPAN_NOTICE("Device locked.")) + else + if(!editmode) + var/obj/item/card/id/I = usr.GetIdCard() + if(!istype(I)) + return + if(check_access(I)) + editmode = !editmode + to_chat(usr, SPAN_NOTICE("Device [editmode ? "un" : ""]locked.")) + . = TRUE + + if("accountselect") + if(!editmode) + to_chat(usr, SPAN_WARNING("Device locked.")) + return FALSE + + var/dest = tgui_input_list(usr, "What account would you like to select?", "Destination Account", assoc_to_keys(SSeconomy.department_accounts)) + if(!dest) + return FALSE + destinationact = dest + return TRUE + +/obj/structure/cash_register/commissary/proc/clear_order() + buying.Cut() + sum = 0 + receipt = "" diff --git a/code/modules/cooking/machinery/smartfridge.dm b/code/modules/cooking/machinery/smartfridge.dm index 62b1e05237e..1c7c3334c3d 100644 --- a/code/modules/cooking/machinery/smartfridge.dm +++ b/code/modules/cooking/machinery/smartfridge.dm @@ -30,6 +30,8 @@ // what icon overlay to use to show its contents - set to NULL if no contents. var/contents_path = "-plant" + var/display_tiers = 3 + var/display_tier_amt = 25 component_types = list( /obj/item/circuitboard/smartfridge, @@ -284,17 +286,14 @@ AddOverlays("[initial(icon_state)]-panel") var/list/shown_contents = contents - component_parts if(contents_path && shown_contents.len > 0) - var/contents_icon_state - switch(shown_contents.len) - if(1 to 25) - contents_icon_state = "-1" - if(26 to 50) - contents_icon_state = "-2" - if(50 to INFINITY) - contents_icon_state = "-3" + var/contents_icon_state = change_display(shown_contents.len - 1) AddOverlays("[initial(icon_state)][contents_path][contents_icon_state]") AddOverlays("[initial(icon_state)]-glass[(stat & BROKEN) ? "-broken" : ""]") +/obj/machinery/smartfridge/proc/change_display(var/length) + var/tier = clamp((floor(length / display_tier_amt) + 1), 1, display_tiers) + return "-[num2text(tier)]" + /******************* * Item Adding ********************/ diff --git a/code/modules/economy/quikpay.dm b/code/modules/economy/quikpay.dm index 148fe5f3bac..bef6aba4acc 100644 --- a/code/modules/economy/quikpay.dm +++ b/code/modules/economy/quikpay.dm @@ -152,9 +152,11 @@ if(!editmode) to_chat(usr, SPAN_NOTICE("Device locked.")) return FALSE - - items -= params["remove"] - items_to_price -= params["remove"] + var/index = 0 + for(var/list/L in items) + index++ + if(L["name"] == params["removing"]) + items.Cut(index, index+1) . = TRUE if("set_new_price") @@ -214,24 +216,34 @@ to_chat(usr, SPAN_WARNING("Device locked.")) return FALSE - switch(input("What account would you like to select?", "Destination Account") as null|anything in list("Service", "Operations", "Command", "Medical", "Security", "Engineering", "Science")) - if("Service") - destinationact = "Service" - if("Operations") - destinationact = "Operations" - if("Command") - destinationact = "Command" - if("Medical") - destinationact = "Medical" - if("Security") - destinationact = "Security" - if("Engineering") - destinationact = "Engineering" - if("Science") - destinationact = "Science" - . = TRUE + var/dest = tgui_input_list(usr, "What account would you like to select?", "Destination Account", assoc_to_keys(SSeconomy.department_accounts)) + if(!dest) + return FALSE + destinationact = dest + return TRUE /obj/item/device/quikpay/proc/clear_order() buying.Cut() sum = 0 receipt = "" + +/obj/item/device/quikpay/afterattack(atom/target, mob/user, proximity) + if (!proximity) return + if (!istype(target, /obj)) + return + if (!editmode) + to_chat(user, SPAN_NOTICE("Unlock \the [src] to add items.")) + return + + var/obj/O = target + var/name_guess = O.name + var/price_guess = 0 + + price_guess = text2num(sanitizeSafe( tgui_input_text(user, "Set price for [name_guess]:", "QuikPay", 0, 10), 10)) + if(isnull(price_guess) || price_guess == 0) + return + price_guess = max(0, round(price_guess, 0.01)) + + items += list(list("name" = "[name_guess]", "price" = price_guess)) + + to_chat(user, SPAN_NOTICE("[src]: added '[name_guess]' for [price_guess].")) diff --git a/html/changelogs/CommissaryUpgrades.yml b/html/changelogs/CommissaryUpgrades.yml new file mode 100644 index 00000000000..4e60fa8a2a7 --- /dev/null +++ b/html/changelogs/CommissaryUpgrades.yml @@ -0,0 +1,9 @@ +author: TheGreyWolf, Tomixcomics + +delete-after: True + +changes: + - rscadd: "The commissary now has specific storage shelves for smokes, clothes, toys and food and drinks." + - rscadd: "The commissary has acquired a cash register to handle transactions with." + - rscadd: "The quik-pay can now add items by clicking on them while unlocked." + - bugfix: "The quik-pay can now remove items that has been input on it." diff --git a/icons/obj/machinery/smartfridge.dmi b/icons/obj/machinery/smartfridge.dmi index 67723acff5d204f51b8ab4814d274bbd9c8b36a5..57f69f2d154ca6a540d5bd74cc253e89b5105cb5 100644 GIT binary patch literal 22002 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 {
act('locking')} - /> + <> +