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 |
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')}
- />
+ <>
+