diff --git a/code/datums/wires/vending.dm b/code/datums/wires/vending.dm
new file mode 100644
index 00000000000..f2445f65f8c
--- /dev/null
+++ b/code/datums/wires/vending.dm
@@ -0,0 +1,59 @@
+/datum/wires/vending
+ holder_type = /obj/machinery/vending
+ wire_count = 4
+
+var/const/VENDING_WIRE_THROW = 1
+var/const/VENDING_WIRE_CONTRABAND = 2
+var/const/VENDING_WIRE_ELECTRIFY = 4
+var/const/VENDING_WIRE_IDSCAN = 8
+
+/datum/wires/vending/CanUse(var/mob/living/L)
+ var/obj/machinery/vending/V = holder
+ if(!istype(L, /mob/living/silicon))
+ if(V.seconds_electrified)
+ if(V.shock(L, 100))
+ return 0
+ if(V.panel_open)
+ return 1
+ return 0
+
+/datum/wires/vending/Interact(var/mob/living/user)
+ if(CanUse(user))
+ var/obj/machinery/vending/V = holder
+ V.attack_hand(user)
+
+/datum/wires/vending/GetInteractWindow()
+ var/obj/machinery/vending/V = holder
+ . += "
"
+ . += ..(0, 0)
+ . += "
The orange light is [V.seconds_electrified ? "on" : "off"].
"
+ . += "The red light is [V.shoot_inventory ? "off" : "blinking"].
"
+ . += "The green light is [V.extended_inventory ? "on" : "off"].
"
+ . += "A [V.scan_id ? "purple" : "yellow"] light is on.
"
+
+/datum/wires/vending/UpdatePulsed(var/index)
+ var/obj/machinery/vending/V = holder
+ switch(index)
+ if(VENDING_WIRE_THROW)
+ V.shoot_inventory = !V.shoot_inventory
+ if(VENDING_WIRE_CONTRABAND)
+ V.extended_inventory = !V.extended_inventory
+ if(VENDING_WIRE_ELECTRIFY)
+ V.seconds_electrified = 30
+ if(VENDING_WIRE_IDSCAN)
+ V.scan_id = !V.scan_id
+
+/datum/wires/vending/UpdateCut(var/index, var/mended)
+ var/obj/machinery/vending/V = holder
+ switch(index)
+ if(VENDING_WIRE_THROW)
+ V.shoot_inventory = !mended
+ if(VENDING_WIRE_CONTRABAND)
+ V.extended_inventory = 0
+ if(VENDING_WIRE_ELECTRIFY)
+ if(mended)
+ V.seconds_electrified = 0
+ else
+ V.seconds_electrified = -1
+ if(VENDING_WIRE_IDSCAN)
+ V.scan_id = 1
\ No newline at end of file
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index ed1a3b09815..6b0a38e72db 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -6,7 +6,7 @@
/obj/machinery/bot/mulebot
- name = "Mulebot"
+ name = "\improper MULEbot"
desc = "A Multiple Utility Load Effector bot."
icon_state = "mulebot0"
layer = MOB_LAYER
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 38be876003d..8631364b48d 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -5,68 +5,63 @@
var/display_color = "blue"
-
/obj/machinery/vending
- name = "Vendomat"
+ name = "\improper Vendomat"
desc = "A generic vending machine."
icon = 'icons/obj/vending.dmi'
icon_state = "generic"
layer = 2.9
anchored = 1
density = 1
- var/active = 1 //No sales pitches if off!
- var/vend_ready = 1 //Are we ready to vend?? Is it time??
- var/vend_delay = 10 //How long does it take to vend?
+ var/active = 1 //No sales pitches if off!
+ var/vend_ready = 1 //Are we ready to vend?? Is it time??
+ var/vend_delay = 10 //How long does it take to vend?
// To be filled out at compile time
- var/list/products = list() // For each, use the following pattern:
- var/list/contraband = list() // list(/type/path = amount,/type/path2 = amount2)
- var/list/premium = list() // No specified amount = only one in stock
+ var/list/products = list() //For each, use the following pattern:
+ var/list/contraband = list() //list(/type/path = amount,/type/path2 = amount2)
+ var/list/premium = list() //No specified amount = only one in stock
- 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_slogans = "" //String of slogans separated by semicolons, optional
+ var/product_ads = "" //String of small ad messages in the vending screen - random chance
var/list/product_records = list()
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/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?
- var/slogan_delay = 6000 //How long until we can pitch again?
- var/icon_vend //Icon_state when vending!
- var/icon_deny //Icon_state when vending!
- //var/emagged = 0 //Ignores if somebody doesn't have card access to that machine.
- var/seconds_electrified = 0 //Shock customers like an airlock.
- var/shoot_inventory = 0 //Fire items at customers! We're broken!
- var/shut_up = 0 //Stop spouting those godawful pitches!
- var/extended_inventory = 0 //can we access the hidden inventory?
- var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar.
- var/wires = 15
+ var/last_slogan = 0 //When did we last pitch?
+ var/slogan_delay = 6000 //How long until we can pitch again?
+ var/icon_vend //Icon_state when vending!
+ var/icon_deny //Icon_state when vending!
+ var/seconds_electrified = 0 //Shock customers like an airlock.
+ var/shoot_inventory = 0 //Fire items at customers! We're broken!
+ var/shut_up = 0 //Stop spouting those godawful pitches!
+ var/extended_inventory = 0 //can we access the hidden inventory?
+ var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar.
+ var/scan_id = 1
var/obj/item/weapon/coin/coin
- var/const/WIRE_EXTEND = 1
- var/const/WIRE_SCANID = 2
- var/const/WIRE_SHOCK = 3
- var/const/WIRE_SHOOTINV = 4
+ var/datum/wires/vending/wires = null
+
/obj/machinery/vending/New()
..()
+ wires = new(src)
spawn(4)
- src.slogan_list = text2list(src.product_slogans, ";")
+ slogan_list = text2list(product_slogans, ";")
// So not all machines speak at the exact same time.
// The first time this machine says something will be at slogantime + this random value,
// so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated.
- src.last_slogan = world.time + rand(0, slogan_delay)
+ last_slogan = world.time + rand(0, slogan_delay)
- src.build_inventory(products)
+ build_inventory(products)
//Add hidden inventory
- src.build_inventory(contraband, 1)
- src.build_inventory(premium, 0, 1)
+ build_inventory(contraband, 1)
+ build_inventory(premium, 0, 1)
power_change()
- return
- return
/obj/machinery/vending/ex_act(severity)
switch(severity)
@@ -74,28 +69,22 @@
del(src)
return
if(2.0)
- if (prob(50))
+ if(prob(50))
del(src)
return
if(3.0)
- if (prob(25))
- spawn(0)
- src.malfunction()
- return
- return
- else
- return
+ if(prob(25))
+ malfunction()
+
/obj/machinery/vending/blob_act()
- if (prob(50))
- spawn(0)
- src.malfunction()
- del(src)
- return
+ if(prob(75))
+ malfunction()
+ else
+ del(src)
- return
-/obj/machinery/vending/proc/build_inventory(var/list/productlist,hidden=0,req_coin=0)
+/obj/machinery/vending/proc/build_inventory(list/productlist, hidden=0, req_coin=0)
for(var/typepath in productlist)
var/amount = productlist[typepath]
if(isnull(amount)) amount = 1
@@ -114,71 +103,74 @@
else
product_records += R
// world << "Added: [R.product_name]] - [R.amount] - [R.product_path]"
- return
-/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W, /obj/item/weapon/card/emag))
- src.emagged = 1
+
+/obj/machinery/vending/attackby(obj/item/weapon/W, mob/user)
+ if(istype(W, /obj/item/weapon/card/emag))
+ emagged = 1
user << "You short out the product lock on [src]"
return
else if(istype(W, /obj/item/weapon/screwdriver))
- src.panel_open = !src.panel_open
- user << "You [src.panel_open ? "open" : "close"] the maintenance panel."
- src.overlays.Cut()
- if(src.panel_open)
- src.overlays += image(src.icon, "[initial(icon_state)]-panel")
- src.updateUsrDialog()
+ panel_open = !panel_open
+ user << "You [panel_open ? "open" : "close"] the maintenance panel."
+ overlays.Cut()
+ if(panel_open)
+ overlays += image(icon, "[initial(icon_state)]-panel")
+ updateUsrDialog()
return
else if(istype(W, /obj/item/device/multitool)||istype(W, /obj/item/weapon/wirecutters))
- if(src.panel_open)
+ if(panel_open)
attack_hand(user)
return
else if(istype(W, /obj/item/weapon/coin) && premium.len > 0)
user.drop_item()
W.loc = src
coin = W
- user << "\blue You insert the [W] into the [src]"
+ user << "You insert [W] into [src]."
return
else
..()
-/obj/machinery/vending/attack_paw(mob/user as mob)
+
+/obj/machinery/vending/attack_paw(mob/user)
return attack_hand(user)
-/obj/machinery/vending/attack_ai(mob/user as mob)
+
+/obj/machinery/vending/attack_ai(mob/user)
return attack_hand(user)
-/obj/machinery/vending/attack_hand(mob/user as mob)
+
+/obj/machinery/vending/attack_hand(mob/user)
if(stat & (BROKEN|NOPOWER))
return
user.set_machine(src)
- if(src.seconds_electrified != 0)
- if(src.shock(user, 100))
+ if(seconds_electrified != 0)
+ if(shock(user, 100))
return
- var/vendorname = (src.name) //import the machine's name
+ var/vendorname = (name) //import the machine's name
var/dat = "[vendorname]
" //display the name, and added a horizontal rule
dat += "Select an item:
" //the rest is just general spacing and bolding
- if (premium.len > 0)
+ if(premium.len > 0)
dat += "Coin slot: [coin ? coin : "No coin inserted"] (Remove)
"
- if (src.product_records.len == 0)
+ if(product_records.len == 0)
dat += "No product loaded!"
else
- var/list/display_records = src.product_records
- if(src.extended_inventory)
- display_records = src.product_records + src.hidden_records
- if(src.coin)
- display_records = src.product_records + src.coin_records
- if(src.coin && src.extended_inventory)
- display_records = src.product_records + src.hidden_records + src.coin_records
+ var/list/display_records = product_records
+ if(extended_inventory)
+ display_records = product_records + hidden_records
+ if(coin)
+ display_records = product_records + coin_records
+ if(coin && extended_inventory)
+ display_records = product_records + hidden_records + coin_records
for (var/datum/data/vending_product/R in display_records)
dat += "[R.product_name]:"
dat += " [R.amount] "
- if (R.amount > 0)
+ if(R.amount > 0)
dat += "(Vend)"
else
dat += " SOLD OUT"
@@ -187,35 +179,19 @@
dat += ""
if(panel_open)
- var/list/vendwires = list(
- "Violet" = 1,
- "Orange" = 2,
- "Goldenrod" = 3,
- "Green" = 4,
- )
- dat += "
Access Panel
"
- for(var/wiredesc in vendwires)
- var/is_uncut = src.wires & APCWireColorToFlag[vendwires[wiredesc]]
- dat += "[wiredesc] wire: "
- if(!is_uncut)
- dat += "Mend"
- else
- dat += "Cut "
- dat += "Pulse "
- dat += "
"
+ dat += wires()
- 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 != "")
- dat += "The speaker switch is [src.shut_up ? "off" : "on"]. Toggle"
+ if(product_slogans != "")
+ dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle"
user << browse(dat, "window=vending")
onclose(user, "")
- return
+
+
+// returns the wire panel text
+/obj/machinery/vending/proc/wires()
+ return "
" + wires.GetInteractWindow(0, 0)
+
/obj/machinery/vending/Topic(href, href_list)
if(stat & (BROKEN|NOPOWER))
@@ -223,166 +199,141 @@
if(usr.stat || usr.restrained())
return
+
if(istype(usr,/mob/living/silicon))
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = usr
if(!(R.module && istype(R.module,/obj/item/weapon/robot_module/butler) ))
- usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
+ usr << "The vending machine refuses to interface with you, as you are not in its target demographic!"
return
else
- usr << "\red The vending machine refuses to interface with you, as you are not in its target demographic!"
+ usr << "The vending machine refuses to interface with you, as you are not in its target demographic!"
return
+
if(href_list["remove_coin"])
if(!coin)
- usr << "There is no coin in this machine."
+ usr << "There is no coin in this machine."
return
- coin.loc = src.loc
+ coin.loc = loc
if(!usr.get_active_hand())
usr.put_in_hands(coin)
- usr << "\blue You remove the [coin] from the [src]"
+ usr << "You remove [coin] from [src]."
coin = null
- if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
+ if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))))
usr.set_machine(src)
- if ((href_list["vend"]) && (src.vend_ready))
+ if((href_list["vend"]) && (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)
+ if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH
+ usr << "Access denied." //Unless emagged of course
+ flick(icon_deny,src)
return
- src.vend_ready = 0 //One thing at a time!!
+ vend_ready = 0 //One thing at a time!!
var/datum/data/vending_product/R = locate(href_list["vend"])
- if (!R || !istype(R) || !R.product_path || R.amount <= 0)
- src.vend_ready = 1
+ if(!R || !istype(R) || !R.product_path || R.amount <= 0)
+ vend_ready = 1
return
- if (R in coin_records)
+ if(R in coin_records)
if(!coin)
- usr << "\blue You need to insert a coin to get this item."
+ usr << "You need to insert a coin to get this item."
return
if(coin.string_attached)
if(prob(50))
- usr << "\blue You successfully pull the coin out before the [src] could swallow it."
+ usr << "You successfully pull the coin out before [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."
+ usr << "You weren't able to pull the coin out fast enough, the machine ate it, string and all."
del(coin)
else
del(coin)
R.amount--
- 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
+ if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply)
+ speak(vend_reply)
+ 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)
+ if(icon_vend) //Show the vending animation if needed
+ flick(icon_vend,src)
+ spawn(vend_delay)
new R.product_path(get_turf(src))
- src.vend_ready = 1
+ vend_ready = 1
return
- src.updateUsrDialog()
+ updateUsrDialog()
return
- else if ((href_list["cutwire"]) && (src.panel_open))
- var/twire = text2num(href_list["cutwire"])
- if (!( istype(usr.get_active_hand(), /obj/item/weapon/wirecutters) ))
- usr << "You need wirecutters!"
- return
- if (src.isWireColorCut(twire))
- src.mend(twire)
- else
- src.cut(twire)
+ else if(href_list["togglevoice"] && panel_open)
+ shut_up = !shut_up
- else if ((href_list["pulsewire"]) && (src.panel_open))
- var/twire = text2num(href_list["pulsewire"])
- if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
- usr << "You need a multitool!"
- return
- if (src.isWireColorCut(twire))
- usr << "You can't pulse a cut wire."
- return
- else
- src.pulse(twire)
-
- else if ((href_list["togglevoice"]) && (src.panel_open))
- src.shut_up = !src.shut_up
-
- src.add_fingerprint(usr)
- src.updateUsrDialog()
+ add_fingerprint(usr)
+ updateUsrDialog()
else
usr << browse(null, "window=vending")
- return
- return
+
/obj/machinery/vending/process()
if(stat & (BROKEN|NOPOWER))
return
-
- if(!src.active)
+ if(!active)
return
- if(src.seconds_electrified > 0)
- src.seconds_electrified--
+ if(seconds_electrified > 0)
+ seconds_electrified--
//Pitch to the people! Really sell it!
- if(((src.last_slogan + src.slogan_delay) <= world.time) && (src.slogan_list.len > 0) && (!src.shut_up) && prob(5))
- var/slogan = pick(src.slogan_list)
- src.speak(slogan)
- src.last_slogan = world.time
+ if(last_slogan + slogan_delay <= world.time && slogan_list.len > 0 && !shut_up && prob(5))
+ var/slogan = pick(slogan_list)
+ speak(slogan)
+ last_slogan = world.time
- if(src.shoot_inventory && prob(2))
- src.throw_item()
+ if(shoot_inventory && prob(2))
+ throw_item()
- return
-/obj/machinery/vending/proc/speak(var/message)
- if(stat & NOPOWER)
+/obj/machinery/vending/proc/speak(message)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ if(!message)
return
- if (!message)
- return
+ visible_message("[src] beeps, \"[message]\"")
- for(var/mob/O in hearers(src, null))
- O.show_message("[src] beeps, \"[message]\"",2)
- return
/obj/machinery/vending/power_change()
if(stat & BROKEN)
icon_state = "[initial(icon_state)]-broken"
else
- if( powered() )
+ if(powered())
icon_state = initial(icon_state)
stat &= ~NOPOWER
else
- spawn(rand(0, 15))
- src.icon_state = "[initial(icon_state)]-off"
- stat |= NOPOWER
+ icon_state = "[initial(icon_state)]-off"
+ stat |= NOPOWER
+
//Oh no we're malfunctioning! Dump out some product and break.
/obj/machinery/vending/proc/malfunction()
- for(var/datum/data/vending_product/R in src.product_records)
- if (R.amount <= 0) //Try to use a record that actually has something to dump.
+ for(var/datum/data/vending_product/R in product_records)
+ if(R.amount <= 0) //Try to use a record that actually has something to dump.
continue
var/dump_path = R.product_path
- if (!dump_path)
+ if(!dump_path)
continue
while(R.amount>0)
- new dump_path(src.loc)
+ new dump_path(loc)
R.amount--
break
stat |= BROKEN
- src.icon_state = "[initial(icon_state)]-broken"
+ icon_state = "[initial(icon_state)]-broken"
return
//Somebody cut an important wire and now we're following a new definition of "pitch."
@@ -392,67 +343,23 @@
if(!target)
return 0
- for(var/datum/data/vending_product/R in src.product_records)
- if (R.amount <= 0) //Try to use a record that actually has something to dump.
+ for(var/datum/data/vending_product/R in product_records)
+ if(R.amount <= 0) //Try to use a record that actually has something to dump.
continue
var/dump_path = R.product_path
- if (!dump_path)
+ if(!dump_path)
continue
R.amount--
- throw_item = new dump_path(src.loc)
+ throw_item = new dump_path(loc)
break
- if (!throw_item)
+ if(!throw_item)
return 0
- spawn(0)
- throw_item.throw_at(target, 16, 3)
- src.visible_message("\red [src] launches [throw_item.name] at [target.name]!")
+
+ throw_item.throw_at(target, 16, 3)
+ visible_message("[src] launches [throw_item] at [target]!")
return 1
-/obj/machinery/vending/proc/isWireColorCut(var/wireColor)
- var/wireFlag = APCWireColorToFlag[wireColor]
- return ((src.wires & wireFlag) == 0)
-
-/obj/machinery/vending/proc/isWireCut(var/wireIndex)
- var/wireFlag = APCIndexToFlag[wireIndex]
- return ((src.wires & wireFlag) == 0)
-
-/obj/machinery/vending/proc/cut(var/wireColor)
- var/wireFlag = APCWireColorToFlag[wireColor]
- var/wireIndex = APCWireColorToIndex[wireColor]
- src.wires &= ~wireFlag
- switch(wireIndex)
- if(WIRE_EXTEND)
- src.extended_inventory = 0
- if(WIRE_SHOCK)
- src.seconds_electrified = -1
- if (WIRE_SHOOTINV)
- if(!src.shoot_inventory)
- src.shoot_inventory = 1
-
-
-/obj/machinery/vending/proc/mend(var/wireColor)
- var/wireFlag = APCWireColorToFlag[wireColor]
- var/wireIndex = APCWireColorToIndex[wireColor] //not used in this function
- src.wires |= wireFlag
- switch(wireIndex)
-// if(WIRE_SCANID)
- if(WIRE_SHOCK)
- src.seconds_electrified = 0
- if (WIRE_SHOOTINV)
- src.shoot_inventory = 0
-
-/obj/machinery/vending/proc/pulse(var/wireColor)
- var/wireIndex = APCWireColorToIndex[wireColor]
- switch(wireIndex)
- if(WIRE_EXTEND)
- src.extended_inventory = !src.extended_inventory
-// if (WIRE_SCANID)
- if (WIRE_SHOCK)
- src.seconds_electrified = 30
- if (WIRE_SHOOTINV)
- src.shoot_inventory = !src.shoot_inventory
-
/obj/machinery/vending/proc/shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
@@ -462,7 +369,7 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
- if (electrocute_mob(user, get_area(src), src, 0.7))
+ if(electrocute_mob(user, get_area(src), src, 0.7))
return 1
else
return 0
@@ -497,7 +404,7 @@
*/
/obj/machinery/vending/boozeomat
- name = "Booze-O-Mat"
+ name = "\improper Booze-O-Mat"
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
icon_deny = "boozeomat-deny"
@@ -524,7 +431,7 @@
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"
+ name = "hot drinks machine"
desc = "A vending machine which dispenses hot drinks."
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"
icon_state = "coffee"
@@ -536,7 +443,7 @@
/obj/machinery/vending/snack
- name = "Getmore Chocolate Corp"
+ name = "\improper Getmore Chocolate Corp"
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
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!"
@@ -549,7 +456,7 @@
/obj/machinery/vending/cola
- name = "Robust Softdrinks"
+ name = "\improper Robust Softdrinks"
desc = "A softdrink vendor provided by Robust Industries, LLC."
icon_state = "Cola_Machine"
product_slogans = "Robust Softdrinks: More robust than a toolbox to the head!"
@@ -561,7 +468,7 @@
//This one's from bay12
/obj/machinery/vending/cart
- name = "PTech"
+ name = "\improper PTech"
desc = "Cartridges for PDAs"
product_slogans = "Carts to go!"
icon_state = "cart"
@@ -572,7 +479,7 @@
/obj/machinery/vending/cigarette
- name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating
+ name = "cigarette machine" //OCD had to be uppercase to look nice with the new formating
desc = "If you want to get cancer, might as well do it in style"
product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!"
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."
@@ -583,7 +490,7 @@
premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2)
/obj/machinery/vending/medical
- name = "NanoMed Plus"
+ name = "\improper NanoMed Plus"
desc = "Medical drug dispenser."
icon_state = "med"
icon_deny = "med-deny"
@@ -598,14 +505,14 @@
//This one's from bay12
/obj/machinery/vending/plasmaresearch
- name = "Toximate 3000"
+ name = "\improper Toximate 3000"
desc = "All the fine parts you need in one vending machine!"
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
/obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6,
/obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6)
/obj/machinery/vending/wallmed1
- name = "NanoMed"
+ name = "\improper NanoMed"
desc = "Wall-mounted Medical Equipment dispenser."
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?"
icon_state = "wallmed"
@@ -616,7 +523,7 @@
contraband = list(/obj/item/weapon/reagent_containers/syringe/antitoxin = 4,/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/pill/tox = 1)
/obj/machinery/vending/wallmed2
- name = "NanoMed"
+ name = "\improper NanoMed"
desc = "Wall-mounted Medical Equipment dispenser."
icon_state = "wallmed"
icon_deny = "wallmed-deny"
@@ -627,7 +534,7 @@
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3)
/obj/machinery/vending/security
- name = "SecTech"
+ name = "\improper SecTech"
desc = "A security equipment vendor"
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?"
icon_state = "sec"
@@ -638,7 +545,7 @@
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2)
/obj/machinery/vending/hydronutrients
- name = "NutriMax"
+ name = "\improper NutriMax"
desc = "A plant nutrients vendor"
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_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
@@ -649,7 +556,7 @@
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5)
/obj/machinery/vending/hydroseeds
- name = "MegaSeed Servitor"
+ name = "\improper MegaSeed Servitor"
desc = "When you need seeds fast!"
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
@@ -666,7 +573,7 @@
/obj/machinery/vending/magivend
- name = "MagiVend"
+ name = "\improper MagiVend"
desc = "A magic vending machine."
icon_state = "MagiVend"
product_slogans = "Sling spells the proper way with MagiVend!;Be your own Houdini! Use MagiVend!"
@@ -677,15 +584,15 @@
contraband = list(/obj/item/weapon/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
/obj/machinery/vending/dinnerware
- name = "Dinnerware"
+ name = "dinnerware"
desc = "A kitchen and restaurant equipment vendor"
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..."
icon_state = "dinnerware"
products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6,/obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2)
- contraband = list(/obj/item/weapon/kitchen/utensil/spoon = 2,/obj/item/weapon/kitchen/utensil/knife = 2,/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/butch = 2)
+ contraband = list(/obj/item/weapon/kitchen/rollingpin = 2, /obj/item/weapon/butch = 2)
/obj/machinery/vending/sovietsoda
- name = "BODA"
+ name = "\improper BODA"
desc = "Old sweet water vending machine"
icon_state = "sovietsoda"
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
@@ -693,7 +600,7 @@
contraband = list(/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola = 20)
/obj/machinery/vending/tool
- name = "YouTool"
+ name = "\improper YouTool"
desc = "Tools for tools."
icon_state = "tool"
icon_deny = "tool-deny"
@@ -704,7 +611,7 @@
premium = list(/obj/item/clothing/gloves/yellow = 1)
/obj/machinery/vending/engivend
- name = "Engi-Vend"
+ name = "\improper Engi-Vend"
desc = "Spare tool vending. What? Did you expect some witty description?"
icon_state = "engivend"
icon_deny = "engivend-deny"
@@ -715,7 +622,7 @@
//This one's from bay12
/obj/machinery/vending/engineering
- name = "Robco Tool Maker"
+ name = "\improper Robco Tool Maker"
desc = "Everything you need for do-it-yourself station repair."
icon_state = "engi"
icon_deny = "engi-deny"
@@ -732,7 +639,7 @@
//This one's from bay12
/obj/machinery/vending/robotics
- name = "Robotech Deluxe"
+ name = "\improper Robotech Deluxe"
desc = "All the tools you need to create your own robot army."
icon_state = "robotics"
icon_deny = "robotics-deny"
diff --git a/code/modules/surgery/brain_removal.dm b/code/modules/surgery/brain_removal.dm
index e91a4df6603..bf51485ed8f 100644
--- a/code/modules/surgery/brain_removal.dm
+++ b/code/modules/surgery/brain_removal.dm
@@ -1,6 +1,6 @@
/datum/surgery/brain_removal
name = "brain removal"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/extract_brain, /datum/surgery_step/close)
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/extract_brain)
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
location = "head"
diff --git a/tgstation.dme b/tgstation.dme
index deeb8e6abd2..835b4fac2f6 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -150,6 +150,7 @@
#include "code\datums\wires\particle_accelerator.dm"
#include "code\datums\wires\radio.dm"
#include "code\datums\wires\robot.dm"
+#include "code\datums\wires\vending.dm"
#include "code\datums\wires\wires.dm"
#include "code\defines\obj.dm"
#include "code\defines\obj\weapon.dm"