From b21a604c119ac4aaa16238e00ed6c9b886af70d2 Mon Sep 17 00:00:00 2001
From: "vageyenaman@gmail.com"
Date: Fri, 16 Dec 2011 00:06:59 +0000
Subject: [PATCH] Vending machine GUI overhaul. Love it or hate it (sorry
Erro)!
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2694 316c924e-a436-60f5-8080-3fe189b3f50e
---
code/defines/obj/vending.dm | 18 +-
code/game/machinery/vending.dm | 316 ++++++-----
html/changelog.html | 9 +
icons/VendingMachineBG.png | Bin 0 -> 29729 bytes
icons/obj/stationobjs.dmi | Bin 90570 -> 93872 bytes
interface/skin.dmf | 984 ++++++++++++++++++++++++++++-----
6 files changed, 1037 insertions(+), 290 deletions(-)
create mode 100644 icons/VendingMachineBG.png
diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm
index 8d55f6c25fce..37d29fcbc781 100644
--- a/code/defines/obj/vending.dm
+++ b/code/defines/obj/vending.dm
@@ -12,6 +12,7 @@
var/product_paths = "" //String of product paths separated by semicolons. No spaces!
var/product_amounts = "" //String of product amounts separated by semicolons, must have amount for every path in product_paths
var/product_slogans = "" //String of slogans separated by semicolons, optional
+ var/product_ads = "" //String of small ad messages in the vending screen - random chance
var/product_hidden = "" //String of products that are hidden unless hacked.
var/product_hideamt = "" //String of hidden product amounts, separated by semicolons. Exact same as amounts. Must be left blank if hidden is.
var/product_coin = ""
@@ -20,6 +21,7 @@
var/list/hidden_records = list()
var/list/coin_records = list()
var/list/slogan_list = list()
+ var/list/small_ads = list() // small ad messages in the vending screen - random chance of popping up whenever you open it
var/vend_reply //Thank you for shopping!
var/last_reply = 0
var/last_slogan = 0 //When did we last pitch?
@@ -40,17 +42,19 @@
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one."
icon_state = "boozeomat" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
product_paths = "/obj/item/weapon/reagent_containers/food/drinks/bottle/gin;/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey;/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla;/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka;/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth;/obj/item/weapon/reagent_containers/food/drinks/bottle/rum;/obj/item/weapon/reagent_containers/food/drinks/bottle/wine;/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac;/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua;/obj/item/weapon/reagent_containers/food/drinks/beer;/obj/item/weapon/reagent_containers/food/drinks/ale;/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice;/obj/item/weapon/reagent_containers/food/drinks/bottle/cream;/obj/item/weapon/reagent_containers/food/drinks/tonic;/obj/item/weapon/reagent_containers/food/drinks/cola;/obj/item/weapon/reagent_containers/food/drinks/sodawater;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/weapon/reagent_containers/food/drinks/ice"
- product_amounts = "5;5;5;5;5;5;5;5;5;6;6;4;4;4;4;8;8;15;30;"
+ product_amounts = "5;5;5;5;5;5;5;5;5;6;6;4;4;4;4;8;8;15;30;9"
vend_delay = 15
product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/tea"
product_hideamt = "10"
product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?"
+ product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
/obj/machinery/vending/assist
product_amounts = "5;3;4;1;4"
product_hidden = "/obj/item/device/flashlight;obj/item/device/assembly/timer"
product_paths = "/obj/item/device/assembly/prox_sensor;/obj/item/device/assembly/igniter;/obj/item/device/assembly/signaler;/obj/item/weapon/wirecutters;/obj/item/weapon/cartridge/signal"
product_hideamt = "5;2"
+ product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
/obj/machinery/vending/coffee
name = "Hot Drinks machine"
@@ -61,6 +65,7 @@
product_amounts = "25;25;25"
vend_delay = 34
product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/ice"
+ product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
product_hideamt = "10"
/obj/machinery/vending/snack
@@ -72,6 +77,7 @@
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_hidden = "/obj/item/weapon/reagent_containers/food/snacks/syndicake"
product_hideamt = "10"
+ product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
/obj/machinery/vending/cola
@@ -83,6 +89,7 @@
product_slogans = "Robust Softdrinks: More robust then a toolbox to the head!"
product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/thirteenloko"
product_hideamt = "5"
+ product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space."
/obj/machinery/vending/cigarette
name = "cigarette machine"
@@ -96,6 +103,7 @@
product_hideamt = "4"
product_coin = "/obj/item/clothing/mask/cigarette/cigar/havanian"
product_coin_amt = "2"
+ product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
/obj/machinery/vending/medical
name = "NanoMed Plus"
@@ -107,6 +115,7 @@
product_amounts = "4;4;4;4;4;12;5;4;2"
product_hidden = "/obj/item/weapon/reagent_containers/pill/tox;/obj/item/weapon/reagent_containers/pill/stox;/obj/item/weapon/reagent_containers/pill/antitox"
product_hideamt = "3;4;6"
+ product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?"
/obj/machinery/vending/wallmed1
name = "NanoMed"
@@ -119,6 +128,7 @@
product_hidden = "/obj/item/weapon/reagent_containers/syringe/antitoxin;/obj/item/weapon/reagent_containers/syringe/antiviral;/obj/item/weapon/reagent_containers/pill/tox"
product_hideamt = "4;4;1"
density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude
+ product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?"
/obj/machinery/vending/wallmed2
name = "NanoMed"
@@ -142,6 +152,7 @@
product_amounts = "8;4;5;12"
product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/kitchen/donut_box"
product_hideamt = "2;2"
+ product_ads = "Crack capitalist skulls!;Beat some heads in!;Don't forget - harm is good!;Your weapons are right here.;Handcuffs!;Freeze, scumbag!;Don't tase me bro!;Tase them, bro.;Why not have a donut?"
/obj/machinery/vending/hydronutrients
name = "NutriMax"
@@ -153,6 +164,7 @@
product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!"
product_hidden = "/obj/item/weapon/reagent_containers/glass/bottle/ammonia;/obj/item/weapon/reagent_containers/glass/bottle/diethylamine"
product_hideamt = "10;5"
+ product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
/obj/machinery/vending/hydroseeds
name = "MegaSeed Servitor"
@@ -165,6 +177,7 @@
product_hideamt = "2;2;2;2;2"
product_coin = "/obj/item/toy/waterflower"
product_coin_amt = "1"
+ product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
/obj/machinery/vending/magivend
name = "MagiVend"
@@ -177,6 +190,7 @@
vend_reply = "Have an enchanted evening!"
product_hidden = "/obj/item/weapon/reagent_containers/glass/bottle/wizarditis" //No one can get to the machine to hack it anyways
product_hideamt = "1" //Just one, for the lulz, not like anyone can get it - Microwave
+ product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
/obj/machinery/vending/dinnerware
name = "Dinnerware"
@@ -187,6 +201,7 @@
//product_amounts = "8;5;4" Old totals
product_hidden = "/obj/item/weapon/kitchen/utensil/spoon;/obj/item/weapon/kitchen/utensil/knife;/obj/item/weapon/kitchen/rollingpin;/obj/item/weapon/butch"
product_hideamt = "2;2;2;2"
+ product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
/obj/machinery/vending/sovietsoda
@@ -198,3 +213,4 @@
//product_amounts = "8;5;4" Old totals
product_hidden = "/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola"
product_hideamt = "20"
+ product_ads = "What the fuck is this shit?;Why would you buy this;holy shit help;i'm stuck;in;a;universe;factory;AAAAAARGH!;HEIL... Stalin?;CAPITALIST PIGS;FUCK THE WEST"
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index b7606b49cf95..2f8efae53763 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1,10 +1,13 @@
-//Comment related to the commenting out of dmf stuff:
-//Yes, I know it has the benefit of working without needing to refresh the screen, but it
-//just looked absolutely terrible. People with light on dark windows setups couldn't view it.
-//If you make it better, prettier... decent looking, sure, add it. But as it is it's just awful, sorry.
-//The updateWindow() and SkinCmd() procs have been commented out along with a part of attack_hand().
-//There were four or five calls to updateWindow() scattered through the file. They are commented out with '//' comments.
-//-Errorage
+/*
+Important notice: I changed "vendingwindow" to "vendingwindow_n" (n for new) because
+I extended the window's height a small amount and, for some reason, BYOND saves the
+height of all the panels on the player's computer in a text file. This means the
+players see some madly-deformed piece of shit window instead of what is intended.
+
+To combat this, I changed the window name. -- Doohl
+*/
+
+#define PRODUCTS_PER_PAGE 15 // # of products per page
/obj/machinery/vending
var/const
@@ -13,22 +16,20 @@
WIRE_SHOCK = 3
WIRE_SHOOTINV = 4
var/page
+ var/builtpaths = 0
+ var/lastpaths
/datum/data/vending_product
var/product_name = "generic"
var/product_path = null
var/amount = 0
- var/color = "#ffffff"
-
- New()
- ..()
- color = "#[pick(list("ff","ee","dd"))][pick(list("ff","ee","dd"))][pick(list("ff","ee","dd"))]"
/obj/machinery/vending/New()
..()
page = 1
spawn(4)
src.slogan_list = dd_text2List(src.product_slogans, ";")
+ src.small_ads = dd_text2List(src.product_ads, ";") // huehue
var/list/temp_paths = dd_text2List(src.product_paths, ";")
var/list/temp_amounts = dd_text2List(src.product_amounts, ";")
var/list/temp_hidden = dd_text2List(src.product_hidden, ";")
@@ -106,17 +107,91 @@
continue
return
+/obj/machinery/vending/proc/updateWindow(mob/user as mob, var/rebuild = 1)
+ winset(user, "vendingwindow_n.title", "text=\"[src.name]\"")
+ winset(user, "vendingwindow_n.advert", "text=\"\"")
-/*
-/obj/machinery/vending/proc/updateWindow(mob/user as mob)
+ if(prob(25) && small_ads.len)
+ var/advert = pick(small_ads)
+ winset(user, "vendingwindow_n.advert", "text=\"[advert]\"")
+
+ // Create a list of things to display
+ var/list/products = src.product_records
+ if(extended_inventory)
+ products |= src.hidden_records
+ if(coin)
+ products |= src.coin_records
+ winshow(user, "vendingwindow_n.coinbutton", 1)
+ else
+ winshow(user, "vendingwindow_n.coinbutton", 0)
+
+ if(rebuild) // rebuild the buttons and shit
+ for(var/i = 1, i <= PRODUCTS_PER_PAGE, i++) // "refresh" everything to default state
+ winshow(user, "vendingwindow_n.stock[i]", 0)
+ winshow(user, "vendingwindow_n.product[i]", 0)
+ winset(user, "vendingwindow_n.product[i]", "is-disabled=false")
+ winset(user, "vendingwindow_n.product[i]", "command=\"skincmd vending;buy[i-1]\"")
+
+ if(i % 2 == 0) // even number (remainder of i / 2 == 0)
+ winset(user, "vendingwindow_n.product[i]", "background-color=#78A6C7") // Specific even color
+ else
+ winset(user, "vendingwindow_n.product[i]", "background-color=#8BA5B4") // Odd color
+
+ for (var/i = 1, i <= products.len, i++) // loop through all products
+ if(i > PRODUCTS_PER_PAGE) // too many products, don't display on this page!
+ break
+
+ // Locate our product:
+
+ if(products.len < ((page-1) * PRODUCTS_PER_PAGE) + i)
+ continue
+ var/datum/data/vending_product/product = products[((page-1) * PRODUCTS_PER_PAGE) + i] // ie.: (1-0) * (15) + 1 = index 1 [start of 1st page]
+ // or : (2-1) * (15) + 1 = index 16 [start of 2nd page]
+ // Product located: display information
+ if(product)
+ winshow(user, "vendingwindow_n.stock[i]", 1) // unhide things
+ winshow(user, "vendingwindow_n.product[i]", 1) // unhide things
+ winset(user, "vendingwindow_n.stock[i]", "text=\"[product.amount]\"") // set stock number label
+ winset(user, "vendingwindow_n.product[i]", "text=\"[product.product_name]\"") // set product button name
+
+ if(product.amount <= 0)
+ winset(user, "vendingwindow_n.product[i]", "is-disabled=true") // disable product button, makes it unclickable and gives it that "disabled" look
+ winset(user, "vendingwindow_n.product[i]", "background-color=#526F7C") // Darken the button
+
+ // Calculate the number of pages in total
+ var/pages = -round(-products.len / PRODUCTS_PER_PAGE)
+
+ /* Ok, it took me a while to figure out why double negatives were even necessary, but eventually I got it:
+ Basically, instead of a small decimal number rounding to 0 it'd round to 1.
+ Really fucking bizarre but okay I guess it works??
+ */
+
+ winset(user, "vendingwindow_n.page", "text=[page]/[pages]")
+
+
+ if(page >= pages)
+ // Disable the forward page button if max page >= current
+ winset(user, "vendingwindow_n.forwardbutton", "is-disabled=true")
+
+ else
+ winset(user, "vendingwindow_n.forwardbutton", "is-disabled=false")
+
+ if(page <= 1)
+ // Disable the backwards page button if max page <= 1
+ winset(user, "vendingwindow_n.backbutton", "is-disabled=true")
+ else
+ winset(user, "vendingwindow_n.backbutton", "is-disabled=false")
- var/i
- for (i = 1, i <= 6, i++)
- winclone(user, "vendingslot", "vendingslot[i]")
- winset(user, "vendingwindow.slot[i]", "left=vendingslot[i]")
+
+ /* // Old code. I don't really like it, also I kind of needed to rewrite this stuff -- Doohl
+
+ for (var/i = 1, i <= 6, i++)
+ //winclone(user, "vendingslot", "vendingslot[i]")
+ winset(user, "vendingwindow_n.slot[i]", "left=vendingslot[i]")
winset(user, "vendingslot[i].buy", "command=\"skincmd vending;buy[i-1]\"")
- winset(user, "vendingwindow.title", "text=\"[src.name]\"")
+
+ winset(user, "vendingwindow_n.title", "text=\"[src.name]\"")
var/list/products = src.product_records
if(extended_inventory)
products |= src.hidden_records
@@ -125,7 +200,7 @@
var/pages = -round(-products.len / 6)
if (page > pages)
page = pages
- winset(user, "vendingwindow.page", "text=[page]/[pages]")
+ winset(user, "vendingwindow_n.page", "text=[page]/[pages]")
var/base = (page-1)*6+1
for (i = 0, i < 6, i++)
@@ -140,31 +215,48 @@
winset(user, "vendingslot[i+1].stock", "text=\"OUT OF STOCK\"")
winset(user, "vendingslot[i+1].stock", "text-color=\"#FF0000\"")
winshow(user, "vendingslot[i+1].buy", 0)
- winshow(user, "vendingwindow.slot[i+1]", 1)
+ winshow(user, "vendingwindow_n.slot[i+1]", 1)
else
- winshow(user, "vendingwindow.slot[i+1]", 0)
-
+ winshow(user, "vendingwindow_n.slot[i+1]", 0)
+ */
/obj/machinery/vending/SkinCmd(mob/user as mob, var/data as text)
if (get_dist(user, src) > 1)
return
+
var/list/products = src.product_records
if(extended_inventory)
products |= src.hidden_records
if(coin)
products |= src.coin_records
- var/pages = -round(-products.len / 6)
+
+
+ var/pages = -round(-products.len / PRODUCTS_PER_PAGE)
switch(data)
if ("pagen")
page++
if (page > pages)
page = pages
+ updateWindow(user)
if ("pagep")
page--
if (page < 1)
page = 1
+ updateWindow(user)
+ if ("coin")
+ if(!coin)
+ user << "There is no coin in this machine."
+ return
+
+ coin.loc = src.loc
+ if(!user.get_active_hand())
+ user.put_in_hand(coin)
+ user << "\blue You remove the [coin] from the [src]"
+ coin = null
+ updateWindow(user)
+
if (copytext(data, 1, 4) == "buy")
- var/base = (page-1)*6+1
+ var/base = (page-1) * PRODUCTS_PER_PAGE + 1
var/num = text2num(copytext(data, 4))
if (products.len < base + num)
return
@@ -186,7 +278,7 @@
usr << "\blue You need to insert a coin to get this item."
return
if(coin.string_attached)
- if(prob(50))
+ if(prob(80))
usr << "\blue You successfully pull the coin out before the [src] could swallow it."
else
usr << "\blue You weren't able to pull the coin out fast enough, the machine ate it, string and all."
@@ -195,21 +287,34 @@
del(coin)
R.amount--
- src.vend_ready = 0
+ //src.vend_ready = 0
+
+ /*
+ FOLKS IN IRC RULED THAT THIS WAS SHITTY -- Doohl
+ No more delays! Go nuts~~~~~~~~~~~
if(((src.last_reply + (src.vend_delay + 200)) <= world.time) && src.vend_reply)
spawn(0)
src.speak(src.vend_reply)
src.last_reply = world.time
+ */
use_power(5)
if (src.icon_vend) //Show the vending animation if needed
flick(src.icon_vend,src)
- spawn(src.vend_delay)
- new product_path(get_turf(src))
- src.vend_ready = 1
- updateWindow(user)*/
+ // spawn(src.vend_delay) NOPE.jpg
+ //src.vend_ready = 1
+
+ new product_path(get_turf(src))
+
+ if(R)
+ if(R in coin_records)
+ updateWindow(user)
+ return
+
+ updateWindow(user, 0)
+
/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -229,12 +334,16 @@
if(src.panel_open)
attack_hand(user)
return
- else if(istype(W, /obj/item/weapon/coin) && product_coin != "")
+ else if(istype(W, /obj/item/weapon/coin))
+ if(product_coin == "" || !product_coin)
+ user << "\blue This machine doesn't have a coin slot."
+ return
+
user.drop_item()
W.loc = src
coin = W
user << "\blue You insert the [W] into the [src]"
- //updateWindow(user)
+ updateWindow(user)
return
else
..()
@@ -254,139 +363,43 @@
if(src.shock(user, 100))
return
- /*updateWindow(user)
- winshow(user, "vendingwindow", 1)
- user.skincmds["vending"] = src*/
-
- var/dat = ""
-
-
- dat += {"
-
-
-
-
-
-
-
- [src.name]
- |
-
-
- Coin slot
- [coin ? "[coin.name]" : "empty"]
-
- |
-
-
-
-
- |
-
-
-
- SELECT ITEM
-
-
- |
-
-
- |
-
-
- |
-
-
- "}
-
- for( var/datum/data/vending_product/product in product_records)
- dat += {"
-
-
- [product.product_name][product.amount ? " ([product.amount])" : " Out of stock"] |
-
-
- |
-
-
- "}
+ updateWindow(user)
+ winshow(user, "vendingwindow_n", 1)
+ user.skincmds["vending"] = src
- if(extended_inventory)
- for( var/datum/data/vending_product/product in hidden_records)
- dat += {"
-
-
- [product.product_name][product.amount ? " ([product.amount])" : " Out of stock"] |
-
-
- |
-
-
- "}
+ var/dat = "[src.name]"
if(coin)
- for( var/datum/data/vending_product/product in coin_records)
- dat += {"
-
-
- [product.product_name][product.amount ? " ([product.amount])" : " Out of stock"] |
-
-
- |
-
-
- "}
-
- dat += {"
-
-
-
-
-
-
-
- "}
+ dat += "
There is a [coin.name] in the slot!"
+ else
+ dat += "
The coin slot is empty."
if(panel_open)
- var/dat2 = ""
var/list/vendwires = list(
"Violet" = 1,
"Orange" = 2,
"Goldenrod" = 3,
"Green" = 4,
)
- dat2 += "
Access Panel
"
+ dat += "
Access Panel
"
for(var/wiredesc in vendwires)
var/is_uncut = src.wires & APCWireColorToFlag[vendwires[wiredesc]]
- dat2 += "[wiredesc] wire: "
+ dat += "[wiredesc] wire: "
if(!is_uncut)
- dat2 += "Mend"
+ dat += "Mend"
else
- dat2 += "Cut "
- dat2 += "Pulse "
- dat2 += "
"
+ dat += "Cut "
+ dat += "Pulse "
+ dat += "
"
- dat2 += "
"
- dat2 += "The orange light is [(src.seconds_electrified == 0) ? "off" : "on"].
"
- dat2 += "The red light is [src.shoot_inventory ? "off" : "blinking"].
"
- dat2 += "The green light is [src.extended_inventory ? "on" : "off"].
"
- dat2 += "The [(src.wires & WIRE_SCANID) ? "purple" : "yellow"] light is on.
"
+ dat += "
"
+ dat += "The orange light is [(src.seconds_electrified == 0) ? "off" : "on"].
"
+ dat += "The red light is [src.shoot_inventory ? "off" : "blinking"].
"
+ dat += "The green light is [src.extended_inventory ? "on" : "off"].
"
+ dat += "The [(src.wires & WIRE_SCANID) ? "purple" : "yellow"] light is on.
"
if(product_slogans != "")
- dat2 += "The speaker switch is [src.shut_up ? "off" : "on"]. Toggle
"
- user << browse(dat2, "window=vending")
+ dat += "The speaker switch is [src.shut_up ? "off" : "on"]. Toggle"
user << browse(dat, "")
onclose(user, "")
@@ -417,13 +430,14 @@
usr.put_in_hand(coin)
usr << "\blue You remove the [coin] from the [src]"
coin = null
- //updateWindow(usr)
+ updateWindow(usr)
usr.skincmds["vending"] = src
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
usr.machine = src
if ((href_list["vend"]) && (src.vend_ready))
+
if ((!src.allowed(usr)) && (!src.emagged) && (src.wires & WIRE_SCANID)) //For SECURE VENDING MACHINES YEAH
usr << "\red Access denied." //Unless emagged of course
flick(src.icon_deny,src)
@@ -484,7 +498,7 @@
src.mend(twire)
else
src.cut(twire)
- //updateWindow(usr)
+ updateWindow(usr)
usr.skincmds["vending"] = src
else if ((href_list["pulsewire"]) && (src.panel_open))
@@ -497,7 +511,7 @@
return
else
src.pulse(twire)
- //updateWindow(usr)
+ updateWindow(usr)
usr.skincmds["vending"] = src
else if ((href_list["togglevoice"]) && (src.panel_open))
diff --git a/html/changelog.html b/html/changelog.html
index 9e66fc70e381..f6c23d072ecd 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -54,6 +54,15 @@ Changelog
(ie. code improvements for expandability, etc.) should not be listed here. They
should be listed in the changelog upon commit tho. Thanks. -->
+15 December 2011
+
+ - Doohl updated:
+
+ - Vending machines got yet another overhaul! Good lord, when will they stop assfucking those damned vendors??
+
+
+
+
14 December 2011
- Erro updated:
diff --git a/icons/VendingMachineBG.png b/icons/VendingMachineBG.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d7f010d1d789a8c3e85c7506b31648bf78832e9
GIT binary patch
literal 29729
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
!GobQ
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
literal 0
HcmV?d00001
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index 1c92b1415e55cb29a3e409b51cddaf7afe2d3fbd..edf57b52ee05245a891371f25889d5c38449bf96 100644
GIT binary patch
delta 67669
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