mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 12:56:10 +01:00
7f664eb1eb
Ports stickynotes from bay. They can be stuck to most surfaces, but have a much smaller character limit. Pads have been placed across the Horizon and can be ordered from Operations. Receipt paper and notepad paper was added for visual quality of life. Point of Sales now use receipt paper where applicable. Sprites were either created by myself, or modifications of baystation sprites from this PR: https://github.com/Baystation12/Baystation12/pull/23109 --------- Signed-off-by: CatsinHD <31459154+CatsinHD@users.noreply.github.com> Co-authored-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: FabianK3 <21039694+FabianK3@users.noreply.github.com> Co-authored-by: Wildkins <john.wildkins@gmail.com>
687 lines
24 KiB
Plaintext
687 lines
24 KiB
Plaintext
/**
|
|
* Cigarette shelf
|
|
* Clothing shelf
|
|
* Food and drinks shelf
|
|
* Toy shelf
|
|
* Cash register
|
|
* Commissary restock
|
|
* Cigarettes
|
|
* Tobacco leaves
|
|
* Chewing tobacco
|
|
* Smoking accessories
|
|
* Electronic cigarette
|
|
* Snack
|
|
* Xeno snack
|
|
* Candy
|
|
* Microwave meal
|
|
* Drink
|
|
* Cheap booze
|
|
* Restock crate
|
|
*/
|
|
|
|
/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,
|
|
/obj/item/spacecash/ewallet/lotto
|
|
)
|
|
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,
|
|
/obj/item/storage/box/pineapple,
|
|
/obj/item/storage/box/fancy/gum,
|
|
/obj/item/storage/box/fancy/vkrexitaffy,
|
|
/obj/item/clothing/mask/chewable/candy/lolli,
|
|
/obj/item/storage/box/fancy/admints,
|
|
/obj/item/storage/box/fancy/quick_microwave_pizza,
|
|
/obj/item/reagent_containers/food/snacks/packaged_microwave_mac_and_cheeze,
|
|
/obj/item/reagent_containers/food/snacks/packaged_microwave_fiery_mac_and_cheeze,
|
|
/obj/item/storage/box/fancy/packaged_burger,
|
|
/obj/item/storage/box/fancy/packaged_mossburger,
|
|
/obj/item/storage/box/fancy/toptarts_strawberry,
|
|
/obj/item/storage/box/fancy/toptarts_chocolate_peanutbutter,
|
|
/obj/item/storage/box/fancy/toptarts_blueberry,
|
|
/obj/item/storage/box/unique/donkpockets,
|
|
/obj/item/storage/box/fancy/yoke
|
|
)
|
|
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/paicard,
|
|
/obj/item/camera,
|
|
/obj/item/synthesized_instrument,
|
|
/obj/item/storage/box/unique/snappops,
|
|
/obj/item/haircomb,
|
|
/obj/item/storage/box/fancy/crayons,
|
|
/obj/item/melee/dinograbber,
|
|
/obj/item/laser_pointer,
|
|
/obj/item/deck,
|
|
/obj/item/storage/pill_bottle/dice,
|
|
/obj/item/pen,
|
|
/obj/item/storage/stickersheet,
|
|
/obj/item/gun/projectile/revolver/capgun,
|
|
/obj/item/gun/bang,
|
|
/obj/item/eightball,
|
|
/obj/item/bikehorn
|
|
)
|
|
display_tiers = 4
|
|
display_tier_amt = 5
|
|
|
|
/obj/machinery/smartfridge/tradeshelf/mouse_drop_receive(atom/dropping, mob/user, params)
|
|
LoadComponent(/datum/component/leanable, dropping)
|
|
|
|
/obj/machinery/smartfridge/tradeshelf/attackby(obj/item/attacking_item, mob/user)
|
|
if(istype(attacking_item, /obj/item/commissary_restrock))
|
|
var/obj/item/commissary_restrock/P = attacking_item
|
|
var/item_loaded = 0
|
|
for(var/obj/G in P.contents)
|
|
if(accept_check(G))
|
|
if(length(contents) >= max_n_of_items)
|
|
break
|
|
P.remove_from_storage(G,src)
|
|
item_quants[G.name]++
|
|
item_loaded++
|
|
if(item_loaded)
|
|
user.visible_message("<b>[user]</b> loads [src] with [P].", SPAN_NOTICE("You load [src] with [P]."))
|
|
if(length(P.contents) > 0)
|
|
to_chat(user, SPAN_NOTICE("Some items are refused."))
|
|
update_overlays()
|
|
return TRUE
|
|
. = ..()
|
|
|
|
// -------------------------------------------------
|
|
/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
|
|
var/shop_name = "Commissary"
|
|
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 credits: [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/notepad/receipt/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-hop"
|
|
if(!R.stamped)
|
|
R.stamped = new
|
|
R.stamped += /obj/item/stamp
|
|
R.AddOverlays(stampoverlay)
|
|
R.stamps += "<HR><i>This paper has been stamped by the Idris Quik-Pay Register.</i>"
|
|
usr.put_in_any_hand_if_possible(R)
|
|
R.ripped = TRUE
|
|
|
|
/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)]<span class='warning'>[transaction].</span>"))
|
|
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)
|
|
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]." )
|
|
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
|
src.audible_message(SPAN_NOTICE("[icon2html(src, viewers(get_turf(src)))] \The [src] chimes."))
|
|
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", 550, 550)
|
|
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"], "price" = items_to_price[params["buying"]]))
|
|
|
|
if("removal")
|
|
var/index = 0
|
|
for(var/list/L in buying)
|
|
index++
|
|
if(L["name"] == params["removal"])
|
|
if(L["amount"] > 1)
|
|
L["amount"]--
|
|
else
|
|
buying.Cut(index, index+1)
|
|
. = TRUE
|
|
|
|
if("confirm")
|
|
// Ensuring it is clear, in case the button is clicked multiple times
|
|
receipt = ""
|
|
sum = 0
|
|
var/obj/item/card/id/id_card = usr.GetIdCard()
|
|
var/cashier = id_card? id_card.registered_name : "Unknown"
|
|
receipt = "<center><H2>[shop_name] receipt</H2>Today's date: [worlddate2text()]<BR>Cashier: [cashier]</center><HR>Purchased items:<ul>"
|
|
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 += "<li><b>[item_name]</b>: [item_amount] x [item_price]电: [item_amount * item_price]电<br>"
|
|
sum += item_price * item_amount
|
|
|
|
receipt += "</ul><HR>Total:</b> [sum]电<br>"
|
|
playsound(src, 'sound/machines/ping.ogg', 25, 1)
|
|
audible_message(SPAN_NOTICE("[icon2html(src, viewers(get_turf(src)))] \The [src] pings."))
|
|
. = 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 = ""
|
|
|
|
/obj/item/commissary_restrock
|
|
name = "commissary cigarette restock pack"
|
|
icon = 'icons/obj/storage/boxes.dmi'
|
|
icon_state = "commissary_restock"
|
|
item_state = "commissary_restock"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
var/illustration = "sparkler"
|
|
var/starts_with = list(
|
|
// Cigarettes
|
|
/obj/item/storage/box/fancy/cigarettes/pra = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/dpra = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/nka = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/federation = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/dyn = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/oracle = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/koko = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/dromedaryco = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/nicotine = 3,
|
|
/obj/item/storage/box/fancy/cigarettes/cigar = 3
|
|
)
|
|
|
|
/obj/item/commissary_restrock/rollable
|
|
name = "commissary tobacco leaves restock pack"
|
|
starts_with = list(
|
|
// Rollables
|
|
/obj/item/storage/chewables/rollable = 3,
|
|
/obj/item/storage/chewables/rollable/unathi = 3,
|
|
/obj/item/storage/chewables/rollable/fine = 3,
|
|
/obj/item/storage/chewables/rollable/nico = 3,
|
|
/obj/item/storage/chewables/rollable/oracle = 3,
|
|
/obj/item/storage/chewables/rollable/vedamor = 3
|
|
)
|
|
|
|
/obj/item/commissary_restrock/chewable
|
|
name = "commissary chewing tobacco restock pack"
|
|
starts_with = list(
|
|
// Chewing tobacco
|
|
/obj/item/storage/chewables/tobacco = 3,
|
|
/obj/item/storage/chewables/tobacco/bad = 3,
|
|
/obj/item/storage/chewables/tobacco/fine = 3,
|
|
/obj/item/storage/chewables/tobacco/federation = 3,
|
|
/obj/item/storage/chewables/tobacco/dyn = 3,
|
|
/obj/item/storage/chewables/tobacco/koko = 3,
|
|
/obj/item/storage/box/fancy/chewables/tobacco/nico = 3,
|
|
/obj/item/storage/chewables/oracle = 3,
|
|
/obj/item/storage/chewables/solar_salve = 3
|
|
)
|
|
|
|
/obj/item/commissary_restrock/smoking_accessory
|
|
name = "commissary smoking accessories restock pack"
|
|
starts_with = list(
|
|
// Misc smoking
|
|
/obj/item/storage/cigfilters = 6,
|
|
/obj/item/storage/box/fancy/cigpaper = 3,
|
|
/obj/item/storage/box/fancy/cigpaper/fine = 3,
|
|
// Lighters & stuff
|
|
/obj/item/storage/box/fancy/matches = 5,
|
|
/obj/item/flame/lighter/random = 4,
|
|
/obj/item/flame/lighter/zippo = 4,
|
|
/obj/item/spacecash/ewallet/lotto = 8 // A bit of a risk that hangar techs may just use them instead of selling, but that should be handled IC as theft
|
|
)
|
|
|
|
/obj/item/commissary_restrock/electronic_cig
|
|
name = "commissary electronic cigarette restock pack"
|
|
starts_with = list(
|
|
// Electronic
|
|
/obj/item/clothing/mask/smokable/ecig/util = 3,
|
|
/obj/item/reagent_containers/ecig_cartridge/med_nicotine = 2,
|
|
/obj/item/reagent_containers/ecig_cartridge/high_nicotine = 2,
|
|
/obj/item/reagent_containers/ecig_cartridge/orange = 2,
|
|
/obj/item/reagent_containers/ecig_cartridge/watermelon = 2,
|
|
/obj/item/reagent_containers/ecig_cartridge/grape = 2
|
|
)
|
|
|
|
/obj/item/commissary_restrock/food
|
|
name = "commissary snack restock pack"
|
|
illustration = "snack"
|
|
starts_with = list(
|
|
// Chips
|
|
/obj/item/reagent_containers/food/snacks/chips = 6,
|
|
/obj/item/reagent_containers/food/snacks/chips/chicken = 3,
|
|
/obj/item/reagent_containers/food/snacks/chips/cucumber = 3,
|
|
/obj/item/reagent_containers/food/snacks/chips/dirtberry = 3,
|
|
/obj/item/reagent_containers/food/snacks/chips/phoron = 3, // Not actually phoron
|
|
/obj/item/reagent_containers/food/snacks/algaechips = 2,
|
|
// General
|
|
/obj/item/reagent_containers/food/snacks/no_raisin = 3,
|
|
/obj/item/storage/box/pineapple = 2,
|
|
/obj/item/reagent_containers/food/snacks/ricetub = 4,
|
|
/obj/item/reagent_containers/food/snacks/riceball = 4,
|
|
/obj/item/reagent_containers/food/snacks/seaweed = 4,
|
|
/obj/item/reagent_containers/food/snacks/tuna = 2,
|
|
/obj/item/reagent_containers/food/drinks/dry_ramen = 3,
|
|
/obj/item/reagent_containers/food/snacks/sosjerky = 3
|
|
)
|
|
|
|
/obj/item/commissary_restrock/food/xeno
|
|
name = "commissary xeno snack restock pack"
|
|
illustration = "snack"
|
|
starts_with = list(
|
|
// Skrell
|
|
/obj/item/reagent_containers/food/snacks/skrellsnacks = 3,
|
|
/obj/item/reagent_containers/food/snacks/meatsnack = 2,
|
|
/obj/item/reagent_containers/food/drinks/jyalra = 2,
|
|
/obj/item/reagent_containers/food/drinks/jyalra/cheese = 2,
|
|
/obj/item/reagent_containers/food/drinks/jyalra/apple = 2,
|
|
/obj/item/reagent_containers/food/drinks/jyalra/cherry = 2,
|
|
// Vaurca
|
|
/obj/item/reagent_containers/food/snacks/koisbar_clean = 6,
|
|
// Unathi
|
|
/obj/item/reagent_containers/food/snacks/nathisnack = 2,
|
|
/obj/item/reagent_containers/food/snacks/candy/koko = 3,
|
|
// Tajara
|
|
/obj/item/reagent_containers/food/snacks/adhomian_can = 2,
|
|
)
|
|
|
|
/obj/item/commissary_restrock/food/candy
|
|
name = "commissary candy restock pack"
|
|
starts_with = list(
|
|
// Candy
|
|
/obj/item/reagent_containers/food/snacks/candy = 4,
|
|
/obj/item/reagent_containers/food/snacks/chocolatebar = 4,
|
|
/obj/item/reagent_containers/food/snacks/whitechocolate/wrapped = 4,
|
|
/obj/item/storage/box/fancy/cookiesnack = 3,
|
|
/obj/item/storage/box/fancy/gum = 4,
|
|
/obj/item/storage/box/fancy/vkrexitaffy = 3,
|
|
/obj/item/clothing/mask/chewable/candy/lolli = 5,
|
|
/obj/item/storage/box/fancy/admints = 3,
|
|
/obj/item/reagent_containers/food/drinks/bottle/bestblend,
|
|
/obj/item/storage/box/fancy/foysnack,
|
|
/obj/item/reagent_containers/food/snacks/choctruffles
|
|
)
|
|
|
|
/obj/item/commissary_restrock/food/microwave
|
|
name = "commissary microwave meal restock pack"
|
|
starts_with = list(
|
|
// Microwave meals
|
|
/obj/item/storage/box/fancy/quick_microwave_pizza = 3,
|
|
/obj/item/storage/box/fancy/quick_microwave_pizza/olive = 3,
|
|
/obj/item/storage/box/fancy/quick_microwave_pizza/pepperoni = 3,
|
|
/obj/item/storage/box/fancy/quick_microwave_pizza/district6 = 3,
|
|
/obj/item/reagent_containers/food/snacks/packaged_microwave_mac_and_cheeze = 3,
|
|
/obj/item/reagent_containers/food/snacks/packaged_microwave_fiery_mac_and_cheeze = 3,
|
|
/obj/item/storage/box/fancy/packaged_burger = 3,
|
|
/obj/item/storage/box/fancy/packaged_mossburger = 2,
|
|
/obj/item/reagent_containers/food/snacks/quick_curry = 3,
|
|
/obj/item/reagent_containers/food/snacks/hv_dinner = 3,
|
|
/obj/item/storage/box/fancy/toptarts_strawberry = 3,
|
|
/obj/item/storage/box/fancy/toptarts_chocolate_peanutbutter = 3,
|
|
/obj/item/storage/box/fancy/toptarts_blueberry = 3,
|
|
/obj/item/storage/box/unique/donkpockets = 3
|
|
)
|
|
|
|
/obj/item/commissary_restrock/drink
|
|
name = "commissary drink restock pack"
|
|
illustration = "soda"
|
|
starts_with = list(
|
|
// Soda
|
|
/obj/item/reagent_containers/food/drinks/cans/cola = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/diet_cola = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/dr_gibb = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/starkist = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/peach_soda = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/space_up = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/melon_soda = 5,
|
|
// Misc
|
|
/obj/item/reagent_containers/food/drinks/waterbottle = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/root_beer = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/iced_tea = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/grape_juice = 5,
|
|
/obj/item/reagent_containers/food/drinks/zobo = 5,
|
|
// Skrell
|
|
/obj/item/reagent_containers/food/drinks/cans/dyn = 5,
|
|
// Tajara
|
|
/obj/item/reagent_containers/food/drinks/cans/hrozamal_soda = 5,
|
|
/obj/item/reagent_containers/food/drinks/cans/adhomai_milk = 3,
|
|
/obj/item/reagent_containers/food/drinks/cans/earthen_juice = 3,
|
|
// Milk
|
|
/obj/item/reagent_containers/food/drinks/cans/beetle_milk = 5,
|
|
/obj/item/reagent_containers/food/drinks/carton/small/milk = 5,
|
|
/obj/item/reagent_containers/food/drinks/carton/small/milk/choco = 5,
|
|
/obj/item/reagent_containers/food/drinks/carton/small/milk/strawberry = 5
|
|
)
|
|
|
|
/obj/item/commissary_restrock/drink/booze_cheap
|
|
name = "commissary cheap booze restock pack"
|
|
starts_with = list(
|
|
// Booze
|
|
/obj/item/storage/box/fancy/yoke/beer = 2,
|
|
/obj/item/storage/box/fancy/yoke/ebisu = 2,
|
|
/obj/item/storage/box/fancy/yoke/shimauma = 2,
|
|
/obj/item/reagent_containers/food/drinks/cans/beer = 6,
|
|
/obj/item/reagent_containers/food/drinks/cans/beer/rice = 6,
|
|
/obj/item/reagent_containers/food/drinks/cans/beer/rice/shimauma = 6,
|
|
/obj/item/reagent_containers/food/drinks/cans/beer/whistlingforest = 6,
|
|
/obj/item/reagent_containers/food/drinks/bottle/small/xuizijuice = 6
|
|
)
|
|
|
|
/obj/item/commissary_restrock/Initialize(mapload, ...)
|
|
. = ..()
|
|
if(illustration)
|
|
var/image/illustration_img = image(icon, illustration)
|
|
illustration_img.appearance_flags |= RESET_COLOR
|
|
AddOverlays(illustration_img)
|
|
fill()
|
|
|
|
/obj/item/commissary_restrock/proc/fill()
|
|
if(LAZYLEN(starts_with))
|
|
for(var/t in starts_with)
|
|
if(!ispath(t))
|
|
crash_with("[t] in [src]'s starts_with list is not a path!")
|
|
continue
|
|
for(var/i=0, i<starts_with[t], i++)
|
|
new t(src)
|
|
return
|
|
|
|
/obj/item/commissary_restrock/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "This item can be used to restock the commissary shelves."
|
|
. += "Left-click on this when empty to fold it into a sheet if it is empty."
|
|
|
|
/obj/item/commissary_restrock/attack_self(mob/user as mob)
|
|
. = ..()
|
|
|
|
if(contents.len)
|
|
to_chat(user, SPAN_NOTICE("There are still things left in \the [src]."))
|
|
return
|
|
to_chat(user, SPAN_NOTICE("You fold \the [src] flat."))
|
|
playsound(src.loc, 'sound/items/storage/boxfold.ogg', 30, 1)
|
|
var/obj/item/foldable = new /obj/item/stack/material/cardboard()
|
|
qdel(src)
|
|
user.put_in_hands(foldable) //try to put it inhands if possible
|
|
|
|
/obj/item/commissary_restrock/proc/remove_from_storage(obj/item/W, atom/new_location)
|
|
if(!istype(W))
|
|
return FALSE
|
|
|
|
if(new_location)
|
|
W.forceMove(new_location)
|
|
else
|
|
W.forceMove(get_turf(src))
|
|
|
|
W.on_exit_storage(src)
|
|
update_icon()
|
|
return TRUE
|
|
|
|
/obj/item/commissary_restrock/update_icon()
|
|
. = ..()
|
|
|
|
if(length(contents) == 0)
|
|
icon_state = "[initial(icon_state)]_used"
|
|
item_state = "[initial(item_state)]_used"
|
|
|
|
/obj/structure/closet/crate/commissary
|
|
name = "commissary crate"
|
|
desc = "A crate packed with boxes of various goods. Handle with care!"
|
|
|
|
/obj/structure/closet/crate/commissary/fill()
|
|
new /obj/item/commissary_restrock(src)
|
|
new /obj/item/commissary_restrock/rollable(src)
|
|
new /obj/item/commissary_restrock/chewable(src)
|
|
new /obj/item/commissary_restrock/smoking_accessory(src)
|
|
new /obj/item/commissary_restrock/electronic_cig(src)
|
|
new /obj/item/commissary_restrock/food(src)
|
|
new /obj/item/commissary_restrock/food/candy(src)
|
|
new /obj/item/commissary_restrock/food/xeno(src)
|
|
new /obj/item/commissary_restrock/food/microwave(src)
|
|
new /obj/item/commissary_restrock/drink(src)
|
|
new /obj/item/commissary_restrock/drink/booze_cheap(src)
|