From 6ea7295e872d7086ef7c5bc011d2f1d200ad286c Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Wed, 9 Mar 2016 17:40:11 +0100 Subject: [PATCH 1/3] Updates price list --- code/modules/economy/price_list.dm | 168 ++++++++++++++++++++++++++--- 1 file changed, 155 insertions(+), 13 deletions(-) diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm index 6c1ebe8308d..df6bc8e8f92 100644 --- a/code/modules/economy/price_list.dm +++ b/code/modules/economy/price_list.dm @@ -18,6 +18,9 @@ // Juices, soda and similar // +/datum/reagent/water + price_tag = 2 + /datum/reagent/drink/juice price_tag = 2 @@ -49,7 +52,6 @@ price_tag = 2 - // Hot Drinks // /datum/reagent/drink/rewriter @@ -64,6 +66,15 @@ /datum/reagent/drink/hot_coco price_tag = 3 +/obj/item/weapon/reagent_containers/food/drinks/coffee + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/drinks/tea + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/drinks/h_chocolate + price_tag = 3 + // Spirituous liquors // @@ -103,6 +114,15 @@ /datum/reagent/ethanol/whiskey price_tag = 5 +/datum/reagent/ethanol/specialwhiskey + price_tag = 5 + +/datum/reagent/ethanol/patron + price_tag = 5 + +/datum/reagent/ethanol/goldschlager + price_tag = 5 + /datum/reagent/ethanol/coffee/brave_bull // Not an original liquor in its own. But since it's a mix of purely Tequila price_tag = 5 // and Kahlua, it's basically just another one and gets the same price. @@ -202,15 +222,12 @@ /datum/reagent/ethanol/erikasurprise price_tag = 4 -/datum/reagent/ethanol/gargleblaster +/datum/reagent/ethanol/gargle_blaster price_tag = 4 /datum/reagent/ethanol/gintonic price_tag = 4 -/datum/reagent/ethanol/goldschlager - price_tag = 4 - /datum/reagent/ethanol/hippies_delight price_tag = 4 @@ -250,9 +267,6 @@ /datum/reagent/ethanol/neurotoxin price_tag = 4 -/datum/reagent/ethanol/patron - price_tag = 4 - /datum/reagent/ethanol/red_mead price_tag = 4 @@ -301,9 +315,6 @@ /datum/reagent/ethanol/whiskeysoda price_tag = 4 -/datum/reagent/ethanol/specialwhiskey - price_tag = 4 - // Cocktails without alcohol // @@ -339,9 +350,105 @@ //***************// -//---Foodstuff---// +//----Bottles----// //***************// +// Juices, soda and similar // + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice + price_tag = 6 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice + price_tag = 6 + + +// Beer // + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer + price_tag = 3 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale + price_tag = 3 + + +// Spirituous Liquors // + +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/gin + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/rum + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/patron + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing + price_tag = 15 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine + price_tag = 15 + + +// Wines // + +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine + price_tag = 25 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac + price_tag = 25 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth + price_tag = 25 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine + price_tag = 25 + + +//***************// +//---Foodstuff---// +//***************// // Snacks // @@ -811,4 +918,39 @@ /obj/item/pizzabox get_item_cost() - return get_item_cost(pizza) \ No newline at end of file + return get_item_cost(pizza) + + +//***************// +//----Smokes-----// +//***************// + +/obj/item/weapon/storage/fancy/cigarettes + price_tag = 15 + +/obj/item/weapon/storage/fancy/cigarettes/luckystars + price_tag = 17 + +/obj/item/weapon/storage/fancy/cigarettes/jerichos + price_tag = 22 + +/obj/item/weapon/storage/fancy/cigarettes/menthols + price_tag = 18 + +/obj/item/weapon/storage/fancy/cigar + price_tag = 27 + +/obj/item/weapon/storage/fancy/cigarettes/carcinomas + price_tag = 23 + +/obj/item/weapon/storage/fancy/cigarettes/professionals + price_tag = 25 + +/obj/item/weapon/storage/box/matches + price_tag = 1 + +/obj/item/weapon/flame/lighter + price_tag = 2 + +/obj/item/weapon/flame/lighter/zippo + price_tag = 5 \ No newline at end of file From 2c815af5267e24eb58a88c49537a466cb7d75eb1 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Wed, 9 Mar 2016 19:06:58 +0100 Subject: [PATCH 2/3] Adjusts price cumulation and logs --- code/modules/economy/cash_register.dm | 42 ++++++++++++++++---------- code/modules/economy/retail_scanner.dm | 22 ++++++++++---- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index 07d49030f7f..f3c9087215a 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -123,7 +123,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("\icon[src][transaction_purpose]: [transaction_amount] Thaler\s.") + src.visible_message("\icon[src][transaction_purpose]: [t_amount] Thaler\s.") if("reset_log") transaction_logs.Cut() usr << "\icon[src]Transaction log reset." @@ -180,18 +180,18 @@ if (!transaction_amount) return - if(!confirm(I)) + if (cash_open) + playsound(src, 'sound/machines/buzz-sigh.ogg', 25) + usr << "\icon[src]The cash box is open." + return + + if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I)) return if (!linked_account) usr.visible_message("\icon[src]Unable to connect to linked account.") return - if (cash_open) - playsound(src, 'sound/machines/buzz-sigh.ogg', 25) - usr << "\icon[src]The cash box is open." - return - // Access account for transaction if(check_account()) var/datum/money_account/D = get_account(I.associated_account_number) @@ -245,14 +245,14 @@ if (!transaction_amount) return - if(!confirm(E)) - return - if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) usr << "\icon[src]The cash box is open." return + if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E)) + return + // Access account for transaction if(check_account()) if(transaction_amount > E.worth) @@ -283,14 +283,14 @@ if (!transaction_amount) return - if(!confirm(SC)) - return - if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) usr << "\icon[src]The cash box is open." return + if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC)) + return + if(transaction_amount > SC.worth) src.visible_message("\icon[src]Not enough money.") else @@ -313,6 +313,9 @@ /obj/machinery/cash_register/proc/scan_item_price(obj/O) if(!istype(O)) return + if(item_list.len > 10) + src.visible_message("\icon[src]Only up to ten different items allowed per purchase.") + return if (cash_open) playsound(src, 'sound/machines/buzz-sigh.ogg', 25) usr << "\icon[src]The cash box is open." @@ -330,8 +333,13 @@ transaction_purpose += "
" transaction_purpose += "[O]: [price] Thaler\s" transaction_amount += price - item_list += "[O]" - price_list += price + for(var/obj/previously_scanned in item_list) + if(O == previously_scanned || istype(O, previously_scanned.type)) + . = item_list[previously_scanned]++ + if(!.) + item_list[O] = 1 + price_list += price + . = 1 // Animation and sound playsound(src, 'sound/machines/twobeep.ogg', 25) // Reset confirmation @@ -356,8 +364,10 @@ "} + var/obj/O for(var/i=1, i<=item_list.len, i++) - dat += "" + O = item_list[i] + dat += "" dat += "" dat += "
[item_list[i]][price_list[i]] þ
[item_list[O]] x [O.name][price_list[i] * item_list[O]] þ
Total Amount: [transaction_amount] þ
" diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index 88fd72acf2e..dc075744942 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -116,7 +116,7 @@ transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) - src.visible_message("\icon[src][transaction_purpose]: [transaction_amount] Thaler\s.") + src.visible_message("\icon[src][transaction_purpose]: [t_amount] Thaler\s.") if("reset_log") transaction_logs.Cut() usr << "\icon[src]Transaction log reset." @@ -161,7 +161,7 @@ if (!transaction_amount) return - if(!confirm(I)) + if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I)) return if (!linked_account) @@ -221,7 +221,7 @@ if (!transaction_amount) return - if(!confirm(E)) + if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E)) return // Access account for transaction @@ -252,6 +252,9 @@ /obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O) if(!istype(O)) return + if(item_list.len > 10) + src.visible_message("\icon[src]Only up to ten different items allowed per purchase.") + return // First check if item has a valid price var/price = O.get_item_cost() if(isnull(price)) @@ -264,8 +267,13 @@ transaction_purpose += "
" transaction_purpose += "[O]: [price] Thaler\s" transaction_amount += price - item_list += "[O]" - price_list += price + for(var/obj/previously_scanned in item_list) + if(O == previously_scanned || istype(O, previously_scanned.type)) + . = item_list[previously_scanned]++ + if(!.) + item_list[O] = 1 + price_list += price + . = 1 // Animation and sound flick("retail_scan", src) playsound(src, 'sound/machines/twobeep.ogg', 25) @@ -290,8 +298,10 @@ "} + var/obj/O for(var/i=1, i<=item_list.len, i++) - dat += "" + O = item_list[i] + dat += "" dat += "" dat += "
[item_list[i]][price_list[i]] þ
[item_list[O]] x [O.name][price_list[i] * item_list[O]] þ
Total Amount: [transaction_amount] þ
" From 0331ca9242ee1cd4f9a2519541cb57b965723f0b Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Wed, 9 Mar 2016 20:35:39 +0100 Subject: [PATCH 3/3] Extensive Interface Improvement --- code/modules/economy/cash_register.dm | 84 +++++++++++++++++++----- code/modules/economy/retail_scanner.dm | 88 +++++++++++++++++++++----- 2 files changed, 140 insertions(+), 32 deletions(-) diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index f3c9087215a..109572ffc0a 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -51,10 +51,6 @@ overlays -= "register_cash" else open_cash_box() - // Reset if necessary - else if(transaction_amount) - reset_memory() - user << "You reset the machine's memory." else user.set_machine(src) interact(user) @@ -76,7 +72,12 @@ dat += "Linked account: [linked_account ? linked_account.owner_name : "None"]
" dat += "[cash_locked? "Unlock" : "Lock"] Cash Box | " dat += "Custom Order
" - for(var/i=1, i<=transaction_logs.len, i++) + + if(item_list.len) + dat += get_current_transaction() + dat += "
" + + for(var/i=transaction_logs.len, i>=1, i--) dat += "[transaction_logs[i]]
" if(transaction_logs.len) @@ -118,12 +119,46 @@ if (!t_purpose || !Adjacent(usr)) return transaction_purpose = t_purpose item_list += t_purpose - var/t_amount = input("Enter price", "New price") as num + var/t_amount = round(input("Enter price", "New price") as num) if (!t_amount || !Adjacent(usr)) return transaction_amount += t_amount price_list += t_amount playsound(src, 'sound/machines/twobeep.ogg', 25) src.visible_message("\icon[src][transaction_purpose]: [t_amount] Thaler\s.") + if("set_amount") + var/item_name = locate(href_list["item"]) + var/n_amount = round(input("Enter amount", "New amount") as num) + n_amount = Clamp(n_amount, 0, 20) + if (!item_list[item_name] || !Adjacent(usr)) return + transaction_amount += (n_amount - item_list[item_name]) * price_list[item_name] + if(!n_amount) + item_list -= item_name + price_list -= item_name + else + item_list[item_name] = n_amount + if("subtract") + var/item_name = locate(href_list["item"]) + if(item_name) + transaction_amount -= price_list[item_name] + item_list[item_name]-- + if(item_list[item_name] <= 0) + item_list -= item_name + price_list -= item_name + if("add") + var/item_name = locate(href_list["item"]) + if(item_list[item_name] >= 20) return + transaction_amount += price_list[item_name] + item_list[item_name]++ + if("clear") + var/item_name = locate(href_list["item"]) + if(item_name) + transaction_amount -= price_list[item_name] * item_list[item_name] + item_list -= item_name + price_list -= item_name + else + transaction_amount = 0 + item_list.Cut() + price_list.Cut() if("reset_log") transaction_logs.Cut() usr << "\icon[src]Transaction log reset." @@ -333,24 +368,43 @@ transaction_purpose += "
" transaction_purpose += "[O]: [price] Thaler\s" transaction_amount += price - for(var/obj/previously_scanned in item_list) - if(O == previously_scanned || istype(O, previously_scanned.type)) + for(var/previously_scanned in item_list) + if(price == price_list[previously_scanned] && O.name == previously_scanned) . = item_list[previously_scanned]++ if(!.) - item_list[O] = 1 - price_list += price + item_list[O.name] = 1 + price_list[O.name] = price . = 1 // Animation and sound playsound(src, 'sound/machines/twobeep.ogg', 25) // Reset confirmation confirm_item = null + updateDialog() + + +/obj/machinery/cash_register/proc/get_current_transaction() + var/dat = {" + + + + "} + var/item_name + for(var/i=1, i<=item_list.len, i++) + item_name = item_list[i] + dat += "" + dat += "
New Entry
[item_list[item_name] ? "- Set + [item_list[item_name]] x " : ""][item_name] Remove[price_list[item_name] * item_list[item_name]] þ
" + dat += "" + dat += "
Clear EntryTotal Amount: [transaction_amount] þ
" + return dat /obj/machinery/cash_register/proc/add_transaction_log(var/c_name, var/p_method, var/t_amount) var/dat = {" - + + + "} + var/item_name + for(var/i=1, i<=item_list.len, i++) + item_name = item_list[i] + dat += "" + dat += "
New Entry
[item_list[item_name] ? "- Set + [item_list[item_name]] x " : ""][item_name] Remove[price_list[item_name] * item_list[item_name]] þ
" + dat += "" + dat += "
Clear EntryTotal Amount: [transaction_amount] þ
" + return dat + + /obj/item/device/retail_scanner/proc/add_transaction_log(var/c_name, var/p_method, var/t_amount) var/dat = {"