Merge pull request #1128 from Hubblenaut/cash

Retail Scanner, Fixes and QOL
This commit is contained in:
Datraen
2016-03-08 16:40:02 -05:00
4 changed files with 136 additions and 98 deletions

View File

@@ -56,7 +56,8 @@
reset_memory()
user << "<span class='notice'>You reset the machine's memory.</span>"
else
custom_interface(user)
user.set_machine(src)
interact(user)
/obj/machinery/cash_register/AltClick(mob/user)
@@ -64,8 +65,8 @@
open_cash_box()
/obj/machinery/cash_register/proc/custom_interface(mob/user as mob)
var/dat = "<h2>Retail Scanner<hr></h2>"
/obj/machinery/cash_register/interact(mob/user as mob)
var/dat = "<h2>Cash Register<hr></h2>"
if (locked)
dat += "<a href='?src=\ref[src];choice=toggle_lock'>Unlock</a><br>"
dat += "Linked account: <b>[linked_account ? linked_account.owner_name : "None"]</b><br>"
@@ -82,10 +83,17 @@
dat += locked ? "<br>" : "<a href='?src=\ref[src];choice=reset_log'>Reset Log</a><br>"
dat += "<br>"
dat += "<i>Device ID:</i> [machine_id]"
user << browse(dat, "window=retail;size=350x500")
user << browse(dat, "window=cash_register;size=350x500")
onclose(user, "cash_register")
/obj/machinery/cash_register/Topic(var/href, var/href_list)
if(..())
return
usr.set_machine(src)
add_fingerprint(usr)
if(href_list["choice"])
switch(href_list["choice"])
if("toggle_lock")
@@ -119,7 +127,7 @@
if("reset_log")
transaction_logs.Cut()
usr << "\icon[src]<span class='notice'>Transaction log reset.</span>"
custom_interface(usr)
updateDialog()
@@ -323,7 +331,7 @@
transaction_purpose += "[O]: [price] Thaler\s"
transaction_amount += price
item_list += "[O]"
price_list += "[price] &thorn"
price_list += price
// Animation and sound
playsound(src, 'sound/machines/twobeep.ogg', 25)
// Reset confirmation
@@ -332,6 +340,7 @@
/obj/machinery/cash_register/proc/add_transaction_log(var/c_name, var/p_method, var/t_amount)
var/dat = {"
<!DOCTYPE html><html>
<head><style>
.tx-table {border: 1px solid black;}
.tx-title {text-align: center; background-color:#ddddff; font-weight: bold}
@@ -348,9 +357,9 @@
<table width=300>
"}
for(var/i=1, i<=item_list.len, i++)
dat += "<tr><td class=\"tx-name\">[item_list[i]]</td><td class=\"tx-data\" width=50>[price_list[i]]</td></tr>"
dat += "<tr><td class=\"tx-name\">[item_list[i]]</td><td class=\"tx-data\" width=50>[price_list[i]] &thorn</td></tr>"
dat += "<tr></tr><tr><td colspan=\"2\" class=\"tx-name\" style='text-align: right'><b>Total Amount: [transaction_amount] &thorn</b></td></tr>"
dat += "</table>"
dat += "</table></html>"
transaction_logs += dat
@@ -372,6 +381,8 @@
src.visible_message("\icon[src]<span class='notice'>Transaction complete.</span>")
flick("register_approve", src)
reset_memory()
updateDialog()
/obj/machinery/cash_register/proc/reset_memory()
transaction_amount = null
@@ -389,19 +400,19 @@
if(usr.stat) return
if(cash_locked)
usr << "<span class='warning'>The cash box is locked.</span>"
else if(cash_open)
if(cash_open)
cash_open = 0
overlays -= "register_approve"
overlays -= "register_open"
overlays -= "register_cash"
else
else if(!cash_locked)
cash_open = 1
overlays += "register_approve"
overlays += "register_open"
if(cash_stored)
overlays += "register_cash"
else
usr << "<span class='warning'>The cash box is locked.</span>"
/obj/machinery/cash_register/proc/toggle_anchors(obj/item/weapon/wrench/W, mob/user)

View File

@@ -42,10 +42,10 @@
// Beer //
/datum/reagent/drink/ethanol/ale
/datum/reagent/ethanol/ale
price_tag = 2
/datum/reagent/drink/ethanol/beer
/datum/reagent/ethanol/beer
price_tag = 2
@@ -67,244 +67,247 @@
// Spirituous liquors //
/datum/reagent/drink/ethanol/irish_cream
/datum/reagent/ethanol/irish_cream
price_tag = 5
/datum/reagent/drink/ethanol/absinthe
/datum/reagent/ethanol/absinthe
price_tag = 5
/datum/reagent/drink/ethanol/bluecuracao
/datum/reagent/ethanol/bluecuracao
price_tag = 5
/datum/reagent/drink/ethanol/deadrum
/datum/reagent/ethanol/deadrum
price_tag = 5
/datum/reagent/drink/ethanol/gin
/datum/reagent/ethanol/gin
price_tag = 5
/datum/reagent/drink/ethanol/coffee/kahlua
/datum/reagent/ethanol/coffee/kahlua
price_tag = 5
/datum/reagent/drink/ethanol/melonliquor
/datum/reagent/ethanol/melonliquor
price_tag = 5
/datum/reagent/drink/ethanol/rum
/datum/reagent/ethanol/rum
price_tag = 5
/datum/reagent/drink/ethanol/tequilla
/datum/reagent/ethanol/tequilla
price_tag = 5
/datum/reagent/drink/ethanol/thirteenloko
/datum/reagent/ethanol/thirteenloko
price_tag = 5
/datum/reagent/drink/ethanol/vodka
/datum/reagent/ethanol/vodka
price_tag = 5
/datum/reagent/drink/ethanol/whiskey
/datum/reagent/ethanol/whiskey
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.
// Wines //
/datum/reagent/drink/ethanol/wine
/datum/reagent/ethanol/wine
price_tag = 8
/datum/reagent/drink/ethanol/cognac
/datum/reagent/ethanol/cognac
price_tag = 8
/datum/reagent/drink/ethanol/sake
/datum/reagent/ethanol/sake
price_tag = 8
/datum/reagent/drink/ethanol/vermouth
/datum/reagent/ethanol/vermouth
price_tag = 8
/datum/reagent/drink/ethanol/pwine
/datum/reagent/ethanol/pwine
price_tag = 8
// Cocktails //
/datum/reagent/drink/ethanol/acid_spit
/datum/reagent/ethanol/acid_spit
price_tag = 4
/datum/reagent/drink/ethanol/alliescocktail
/datum/reagent/ethanol/alliescocktail
price_tag = 4
/datum/reagent/drink/ethanol/aloe
/datum/reagent/ethanol/aloe
price_tag = 4
/datum/reagent/drink/ethanol/amasec
/datum/reagent/ethanol/amasec
price_tag = 4
/datum/reagent/drink/ethanol/andalusia
/datum/reagent/ethanol/andalusia
price_tag = 4
/datum/reagent/drink/ethanol/antifreeze
/datum/reagent/ethanol/antifreeze
price_tag = 4
/datum/reagent/drink/ethanol/atomicbomb
/datum/reagent/ethanol/atomicbomb
price_tag = 4
/datum/reagent/drink/ethanol/coffee/b52
/datum/reagent/ethanol/coffee/b52
price_tag = 4
/datum/reagent/drink/ethanol/bahama_mama
/datum/reagent/ethanol/bahama_mama
price_tag = 4
/datum/reagent/drink/ethanol/barefoot
/datum/reagent/ethanol/barefoot
price_tag = 4
/datum/reagent/drink/ethanol/beepsky_smash
/datum/reagent/ethanol/beepsky_smash
price_tag = 4
/datum/reagent/drink/ethanol/bilk
/datum/reagent/ethanol/bilk
price_tag = 4
/datum/reagent/drink/ethanol/black_russian
/datum/reagent/ethanol/black_russian
price_tag = 4
/datum/reagent/drink/ethanol/bloody_mary
/datum/reagent/ethanol/bloody_mary
price_tag = 4
/datum/reagent/drink/ethanol/booger
/datum/reagent/ethanol/booger
price_tag = 4
/datum/reagent/drink/ethanol/brave_bull
/datum/reagent/ethanol/brave_bull
price_tag = 4
/datum/reagent/drink/ethanol/changeling_sting
/datum/reagent/ethanol/changeling_sting
price_tag = 4
/datum/reagent/drink/ethanol/martini
/datum/reagent/ethanol/martini
price_tag = 4
/datum/reagent/drink/ethanol/cuba_libre
/datum/reagent/ethanol/cuba_libre
price_tag = 4
/datum/reagent/drink/ethanol/demonsblood
/datum/reagent/ethanol/demonsblood
price_tag = 4
/datum/reagent/drink/ethanol/devilskiss
/datum/reagent/ethanol/devilskiss
price_tag = 4
/datum/reagent/drink/ethanol/driestmartini
/datum/reagent/ethanol/driestmartini
price_tag = 4
/datum/reagent/drink/ethanol/ginfizz
/datum/reagent/ethanol/ginfizz
price_tag = 4
/datum/reagent/drink/ethanol/grog
/datum/reagent/ethanol/grog
price_tag = 4
/datum/reagent/drink/ethanol/erikasurprise
/datum/reagent/ethanol/erikasurprise
price_tag = 4
/datum/reagent/drink/ethanol/gargleblaster
/datum/reagent/ethanol/gargleblaster
price_tag = 4
/datum/reagent/drink/ethanol/gintonic
/datum/reagent/ethanol/gintonic
price_tag = 4
/datum/reagent/drink/ethanol/goldschlager
/datum/reagent/ethanol/goldschlager
price_tag = 4
/datum/reagent/drink/ethanol/hippies_delight
/datum/reagent/ethanol/hippies_delight
price_tag = 4
/datum/reagent/drink/ethanol/hooch
/datum/reagent/ethanol/hooch
price_tag = 4
/datum/reagent/drink/ethanol/iced_beer
/datum/reagent/ethanol/iced_beer
price_tag = 4
/datum/reagent/drink/ethanol/irishcarbomb
/datum/reagent/ethanol/irishcarbomb
price_tag = 4
/datum/reagent/drink/ethanol/coffee/irishcoffee
/datum/reagent/ethanol/coffee/irishcoffee
price_tag = 4
/datum/reagent/drink/ethanol/longislandicedtea
/datum/reagent/ethanol/longislandicedtea
price_tag = 4
/datum/reagent/drink/ethanol/manhattan
/datum/reagent/ethanol/manhattan
price_tag = 4
/datum/reagent/drink/ethanol/manhattan_proj
/datum/reagent/ethanol/manhattan_proj
price_tag = 4
/datum/reagent/drink/ethanol/manly_dorf
/datum/reagent/ethanol/manly_dorf
price_tag = 4
/datum/reagent/drink/ethanol/margarita
/datum/reagent/ethanol/margarita
price_tag = 4
/datum/reagent/drink/ethanol/mead
/datum/reagent/ethanol/mead
price_tag = 4
/datum/reagent/drink/ethanol/moonshine
/datum/reagent/ethanol/moonshine
price_tag = 4
/datum/reagent/drink/ethanol/neurotoxin
/datum/reagent/ethanol/neurotoxin
price_tag = 4
/datum/reagent/drink/ethanol/patron
/datum/reagent/ethanol/patron
price_tag = 4
/datum/reagent/drink/ethanol/red_mead
/datum/reagent/ethanol/red_mead
price_tag = 4
/datum/reagent/drink/ethanol/sbiten
/datum/reagent/ethanol/sbiten
price_tag = 4
/datum/reagent/drink/ethanol/screwdrivercocktail
/datum/reagent/ethanol/screwdrivercocktail
price_tag = 4
/datum/reagent/drink/ethanol/silencer
/datum/reagent/ethanol/silencer
price_tag = 4
/datum/reagent/drink/ethanol/singulo
/datum/reagent/ethanol/singulo
price_tag = 4
/datum/reagent/drink/ethanol/snowwhite
/datum/reagent/ethanol/snowwhite
price_tag = 4
/datum/reagent/drink/ethanol/suidream
/datum/reagent/ethanol/suidream
price_tag = 4
/datum/reagent/drink/ethanol/syndicatebomb
/datum/reagent/ethanol/syndicatebomb
price_tag = 4
/datum/reagent/drink/ethanol/tequillasunrise
/datum/reagent/ethanol/tequillasunrise
price_tag = 4
/datum/reagent/drink/ethanol/threemileisland
/datum/reagent/ethanol/threemileisland
price_tag = 4
/datum/reagent/drink/ethanol/toxins_special
/datum/reagent/ethanol/toxins_special
price_tag = 4
/datum/reagent/drink/ethanol/vodkamartini
/datum/reagent/ethanol/vodkamartini
price_tag = 4
/datum/reagent/drink/ethanol/vodkatonic
/datum/reagent/ethanol/vodkatonic
price_tag = 4
/datum/reagent/drink/ethanol/white_russian
/datum/reagent/ethanol/white_russian
price_tag = 4
/datum/reagent/drink/ethanol/whiskey_cola
/datum/reagent/ethanol/whiskey_cola
price_tag = 4
/datum/reagent/drink/ethanol/whiskeysoda
/datum/reagent/ethanol/whiskeysoda
price_tag = 4
/datum/reagent/drink/ethanol/specialwhiskey
/datum/reagent/ethanol/specialwhiskey
price_tag = 4
// Cocktails without alcohol //
/datum/reagent/drink/ethanol/bananahonk
/datum/reagent/ethanol/bananahonk
price_tag = 3

View File

@@ -3,8 +3,11 @@
desc = "Swipe your ID card to make purchases electronically."
icon = 'icons/obj/device.dmi'
icon_state = "retail_idle"
flags = NOBLUDGEON
flags = NOBLUDGEON|CONDUCT
slot_flags = SLOT_BELT
req_access = list(access_heads)
w_class = 2.0
origin_tech = list(TECH_MATERIAL = 1)
var/locked = 1
var/emagged = 0
@@ -49,15 +52,17 @@
reset_memory()
user << "<span class='notice'>You reset the device.</span>"
else
custom_interface(user)
user.set_machine(src)
interact(user)
/obj/item/device/retail_scanner/AltClick(var/mob/user)
if(Adjacent(user))
custom_interface(user)
user.set_machine(src)
interact(user)
/obj/item/device/retail_scanner/proc/custom_interface(mob/user as mob)
/obj/item/device/retail_scanner/interact(mob/user as mob)
var/dat = "<h2>Retail Scanner<hr></h2>"
if (locked)
dat += "<a href='?src=\ref[src];choice=toggle_lock'>Unlock</a><br>"
@@ -74,9 +79,16 @@
dat += "<br>"
dat += "<i>Device ID:</i> [machine_id]"
user << browse(dat, "window=retail;size=350x500")
onclose(user, "retail")
/obj/item/device/retail_scanner/Topic(var/href, var/href_list)
if(..())
return
usr.set_machine(src)
add_fingerprint(usr)
if(href_list["choice"])
switch(href_list["choice"])
if("toggle_lock")
@@ -108,7 +120,7 @@
if("reset_log")
transaction_logs.Cut()
usr << "\icon[src]<span class='notice'>Transaction log reset.</span>"
custom_interface(usr)
updateDialog()
@@ -130,6 +142,11 @@
scan_item_price(O)
/obj/item/device/retail_scanner/showoff(mob/user)
for (var/mob/M in view(user))
M.show_message("[user] holds up [src]. <a HREF=?src=\ref[M];clickitem=\ref[src]>Swipe card or item.</a>",1)
/obj/item/device/retail_scanner/proc/confirm(var/obj/item/I)
if(confirm_item == I)
return 1
@@ -248,7 +265,7 @@
transaction_purpose += "[O]: [price] Thaler\s"
transaction_amount += price
item_list += "[O]"
price_list += "[price] &thorn"
price_list += price
// Animation and sound
flick("retail_scan", src)
playsound(src, 'sound/machines/twobeep.ogg', 25)
@@ -274,7 +291,7 @@
<table width=300>
"}
for(var/i=1, i<=item_list.len, i++)
dat += "<tr><td class=\"tx-name\">[item_list[i]]</td><td class=\"tx-data\" width=50>[price_list[i]]</td></tr>"
dat += "<tr><td class=\"tx-name\">[item_list[i]]</td><td class=\"tx-data\" width=50>[price_list[i]] &thorn</td></tr>"
dat += "<tr></tr><tr><td colspan=\"2\" class=\"tx-name\" style='text-align: right'><b>Total Amount: [transaction_amount] &thorn</b></td></tr>"
dat += "</table>"
@@ -298,6 +315,8 @@
src.visible_message("\icon[src]<span class='notice'>Transaction complete.</span>")
flick("retail_approve", src)
reset_memory()
updateDialog()
/obj/item/device/retail_scanner/proc/reset_memory()
transaction_amount = null

View File

@@ -616,6 +616,11 @@
var/mob/M = locate(href_list["lookmob"])
src.examinate(M)
if (href_list["clickitem"])
var/obj/item/I = locate(href_list["clickitem"])
if(src.client)
src.ClickOn(I)
if (href_list["flavor_change"])
switch(href_list["flavor_change"])
if("done")