/obj/machinery/prize_counter name = "Prize Counter" desc = "A machine which exchanges tickets for a variety of fabulous prizes!" icon = 'icons/obj/arcade.dmi' icon_state = "prize_counter-on" density = 1 anchored = 1 use_power = IDLE_POWER_USE idle_power_usage = 40 var/tickets = 0 /obj/machinery/prize_counter/New() ..() component_parts = list() component_parts += new /obj/item/circuitboard/prize_counter(null) component_parts += new /obj/item/stock_parts/matter_bin(null) component_parts += new /obj/item/stock_parts/manipulator(null) component_parts += new /obj/item/stack/cable_coil(null, 1) component_parts += new /obj/item/stack/sheet/glass(null) RefreshParts() /obj/machinery/prize_counter/update_icon() if(stat & BROKEN) icon_state = "prize_counter-broken" else if(panel_open) icon_state = "prize_counter-open" else if(stat & NOPOWER) icon_state = "prize_counter-off" else icon_state = "prize_counter-on" return /obj/machinery/prize_counter/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/stack/tickets)) var/obj/item/stack/tickets/T = O if(user.unEquip(T)) //Because if you can't drop it for some reason, you shouldn't be increasing the tickets var tickets += T.amount qdel(T) else to_chat(user, "\The [T] seems stuck to your hand!") return if(istype(O, /obj/item/screwdriver) && anchored) playsound(src.loc, O.usesound, 50, 1) panel_open = !panel_open to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") update_icon() return if(panel_open) if(istype(O, /obj/item/wrench)) default_unfasten_wrench(user, O) if(component_parts && istype(O, /obj/item/crowbar)) if(tickets) //save the tickets! print_tickets() default_deconstruction_crowbar(user, O) return return ..() /obj/machinery/prize_counter/attack_hand(mob/user as mob) if(..()) return add_fingerprint(user) interact(user) /obj/machinery/prize_counter/interact(mob/user as mob) user.set_machine(src) if(stat & (BROKEN|NOPOWER)) return var/dat = {" Arcade Ticket Exchange

Tickets: [tickets] | Eject Tickets

Arcade Ticket Exchange

Exchange that pile of tickets for a pile of cool prizes!


"} for(var/datum/prize_item/item in GLOB.global_prizes.prizes) var/cost_class="affordable" if(item.cost>tickets) cost_class="toomuch" var/itemID = GLOB.global_prizes.prizes.Find(item) var/row_color="light" if(itemID%2 == 0) row_color="dark" dat += {" "} dat += {" "} dat += {"
Available Prizes:
# Name/Description Tickets
[itemID]

[item.name]

[item.desc]

[item.cost]
"} user << browse(dat, "window=prize_counter;size=440x600;can_resize=0") onclose(user, "prize_counter") return /obj/machinery/prize_counter/Topic(href, href_list) if(..()) return 1 add_fingerprint(usr) if(href_list["eject"]) print_tickets() if(href_list["buy"]) var/itemID = text2num(href_list["buy"]) var/datum/prize_item/item = GLOB.global_prizes.prizes[itemID] var/sure = alert(usr,"Are you sure you wish to purchase [item.name] for [item.cost] tickets?","You sure?","Yes","No") in list("Yes","No") if(sure=="No") updateUsrDialog() return if(!GLOB.global_prizes.PlaceOrder(src, itemID)) to_chat(usr, "Unable to complete the exchange.") else to_chat(usr, "You've successfully purchased the item.") interact(usr) return /obj/machinery/prize_counter/proc/print_tickets() if(!tickets) return if(tickets >= 9999) new /obj/item/stack/tickets(get_turf(src), 9999) //max stack size tickets -= 9999 print_tickets() else new /obj/item/stack/tickets(get_turf(src), tickets) tickets = 0