diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 72493bfba6f..a9a7712f054 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -225,28 +225,37 @@ to destroy them and players will be able to make replacements.
req_components = list(
/obj/item/weapon/vending_refill/boozeomat = 3)
- var/list/names_paths = list(/obj/machinery/vending/boozeomat = "Booze-O-Mat",
- /obj/machinery/vending/coffee = "Solar's Best Hot Drinks",
- /obj/machinery/vending/snack = "Getmore Chocolate Corp",
- /obj/machinery/vending/cola = "Robust Softdrinks",
- /obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
- /obj/machinery/vending/autodrobe = "AutoDrobe",
- /obj/machinery/vending/hatdispenser = "Hatlord 9000",
- /obj/machinery/vending/suitdispenser = "Suitlord 9000",
- /obj/machinery/vending/shoedispenser = "Shoelord 9000",
- /obj/machinery/vending/clothing = "ClothesMate",
- /obj/machinery/vending/crittercare = "CritterCare")
+ var/list/names_paths = list("Booze-O-Mat" = /obj/machinery/vending/boozeomat,
+ "Solar's Best Hot Drinks" = /obj/machinery/vending/coffee,
+ "Getmore Chocolate Corp" = /obj/machinery/vending/snack,
+ "Robust Softdrinks" = /obj/machinery/vending/cola,
+ "ShadyCigs Deluxe" = /obj/machinery/vending/cigarette,
+ "AutoDrobe" = /obj/machinery/vending/autodrobe,
+ "Hatlord 9000" = /obj/machinery/vending/hatdispenser,
+ "Suitlord 9000" = /obj/machinery/vending/suitdispenser,
+ "Shoelord 9000" = /obj/machinery/vending/shoedispenser,
+ "ClothesMate" = /obj/machinery/vending/clothing,
+ "CritterCare" = /obj/machinery/vending/crittercare)
/obj/item/weapon/circuitboard/vendor/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/screwdriver))
- set_type(pick(names_paths), user)
-
+ set_type(null, user)
/obj/item/weapon/circuitboard/vendor/proc/set_type(typepath, mob/user)
- build_path = typepath
- name = "circuit board ([names_paths[build_path]] Vendor)"
- to_chat(user, "You set the board to [names_paths[build_path]].")
- req_components = list(text2path("/obj/item/weapon/vending_refill/[copytext("[build_path]", 24)]") = 3)
+ var/new_name = "Booze-O-Mat Vendor"
+ if(!typepath)
+ new_name = input("Circuit Setting", "What would you change the board setting to?") in names_paths
+ typepath = names_paths[new_name]
+ else
+ for(var/name in names_paths)
+ if(names_paths[name] == typepath)
+ new_name = name
+ break
+ build_path = typepath
+ name = "circuit board ([new_name])"
+ req_components = list(text2path("/obj/item/weapon/vending_refill/[copytext("[build_path]", 24)]") = 3)
+ if(user)
+ to_chat(user, "You set the board to [new_name].")
/obj/item/weapon/circuitboard/smes
name = "circuit board (SMES)"
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 81799f01115..e07af10f1db 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -691,6 +691,12 @@
vend_delay = 0
*/
+/obj/machinery/vending/assist
+ products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
+ /obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
+ contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
+ product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
+
/obj/machinery/vending/boozeomat
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."
@@ -722,11 +728,6 @@
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!"
refill_canister = /obj/item/weapon/vending_refill/boozeomat
-/obj/machinery/vending/assist
- products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
- /obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
- contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
- product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
/obj/machinery/vending/boozeomat/New()
..()
@@ -861,10 +862,18 @@
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."
vend_delay = 34
icon_state = "cigs"
- products = list(/obj/item/weapon/storage/fancy/cigarettes = 5,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2, /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 10, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4,/obj/item/weapon/rollingpaperpack = 5)
+ products = list(/obj/item/weapon/storage/fancy/cigarettes = 5, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3,
+ /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3,
+ /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 2,
+ /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 10, /obj/item/weapon/storage/box/matches = 10,
+ /obj/item/weapon/lighter/random = 4, /obj/item/weapon/rollingpaperpack = 5, /obj/item/weapon/pipe_tobacco = 6)
contraband = list(/obj/item/weapon/lighter/zippo = 4)
- premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1)
- prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60,/obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150, /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 15, /obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20)
+ premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1)
+ prices = list(/obj/item/weapon/storage/fancy/cigarettes = 60, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 60,
+ /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 60, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 60,
+ /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 60, /obj/item/weapon/storage/fancy/cigarettes/cigpack_random = 150,
+ /obj/item/weapon/reagent_containers/food/pill/patch/nicotine = 15, /obj/item/weapon/storage/box/matches = 10,
+ /obj/item/weapon/lighter/random = 60, /obj/item/weapon/rollingpaperpack = 20, /obj/item/weapon/pipe_tobacco = 40)
refill_canister = /obj/item/weapon/vending_refill/cigarette
/obj/machinery/vending/cigarette/New()
diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm
index 25a50a5bfe1..253e5249b11 100644
--- a/code/game/objects/items/weapons/cigs.dm
+++ b/code/game/objects/items/weapons/cigs.dm
@@ -78,7 +78,7 @@ LIGHTERS ARE IN LIGHTERS.DM
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
- if(M.lit)
+ if(M.lit == 1) //No more lighting stuff with burnt out matches
light("[user] lights their [name] with their [W].")
else if(istype(W, /obj/item/weapon/melee/energy/sword/saber))
@@ -217,8 +217,8 @@ LIGHTERS ARE IN LIGHTERS.DM
..()
var/list/jointnames = list("joint","doobie","spliff","blunt")
name = pick(jointnames)
- src.pixel_x = rand(-5.0, 5)
- src.pixel_y = rand(-5.0, 5)
+ pixel_x = rand(-5.0, 5)
+ pixel_y = rand(-5.0, 5)
/obj/item/clothing/mask/cigarette/joint/deus
desc = "A roll of ambrosium deus wrapped in a thin paper. Dude."
@@ -230,8 +230,8 @@ LIGHTERS ARE IN LIGHTERS.DM
/obj/item/weapon/cigbutt/roach/New()
..()
- src.pixel_x = rand(-5.0, 5)
- src.pixel_y = rand(-5.0, 5)
+ pixel_x = rand(-5.0, 5)
+ pixel_y = rand(-5.0, 5)
/obj/item/clothing/mask/cigarette/handroll
name = "hand-rolled cigarette"
@@ -315,7 +315,7 @@ LIGHTERS ARE IN LIGHTERS.DM
icon_on = "pipeon" //Note - these are in masks.dmi
icon_off = "pipeoff"
smoketime = 500
- chem_volume = 200
+ chem_volume = 100
/obj/item/clothing/mask/cigarette/pipe/New()
..()
@@ -356,14 +356,37 @@ LIGHTERS ARE IN LIGHTERS.DM
item_state = icon_off
processing_objects.Remove(src)
return
- if(smoketime <= 0)
- to_chat(user, "You refill the pipe with tobacco.")
- reagents.add_reagent("nicotine", chem_volume)
- smoketime = initial(smoketime)
+ if(smoketime > 0)
+ to_chat(user, "You empty the pipe to make room for fresh filling.")
+ reagents.clear_reagents()
+ smoketime = 0
return
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(istype(W, /obj/item/weapon/match))
+ if(smoketime <= 0 && !lit) //Filling a lit pipe is probably a bad idea, so don't do it.
+ if(istype(W, /obj/item/weapon/pipe_tobacco))
+ var/obj/item/weapon/pipe_tobacco/PT = W
+ PT.pipefuls -= 1
+ smoketime = initial(smoketime)
+ reagents.add_reagent("nicotine", chem_volume)
+ if(PT.pipefuls < 1)
+ to_chat(user, "You empty the last of \the [PT] into \the [src], and toss away the tin.")
+ user.unEquip(PT)
+ qdel(PT)
+ else
+ to_chat(user, "You fill \the [src] from \the [PT] and pack it gently.")
+ if(istype(W, /obj/item/weapon/reagent_containers/food/snacks/grown))
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W
+ if(G.seed && G.seed.kitchen_tag)
+ if(G.seed.kitchen_tag == "tobacco" || G.seed.kitchen_tag == "stobacco" || G.seed.kitchen_tag == "ambrosia" || G.seed.kitchen_tag == "ambrosiadeus")
+ to_chat(user, "You shred \the [G] and pack it into \the [src].")
+ G.reagents.trans_to(src, G.reagents.total_volume)
+ smoketime = initial(smoketime)
+ user.unEquip(G)
+ qdel(G)
+ else
+ to_chat(user, "You don't think this [G] would make a fine smokable.")
+ else if(istype(W, /obj/item/weapon/match))
..()
else
to_chat(user, "\The [src] straight out REFUSES to be lit by such means.")
@@ -375,9 +398,26 @@ LIGHTERS ARE IN LIGHTERS.DM
item_state = "cobpipeoff"
icon_on = "cobpipeon" //Note - these are in masks.dmi
icon_off = "cobpipeoff"
- smoketime = 800
+ smoketime = 400
chem_volume = 40
+/obj/item/clothing/mask/cigarette/pipe/New()
+ ..()
+ smoketime = 0 //Corn pipes shouldn't come magically pre-filled when you carve them.
+ reagents.clear_reagents()
+
+/obj/item/weapon/pipe_tobacco
+ name = "pipe tobacco tin"
+ desc = "A tin of pipe-ready tobacco, for the more dignified nicotine addict."
+ icon = 'icons/obj/cigarettes.dmi'
+ icon_state = "tobacco_tin"
+ w_class = 2
+ var/pipefuls = 5
+
+/obj/item/weapon/pipe_tobacco/examine(mob/user)
+ ..(user)
+ to_chat(user, "There are [pipefuls] pipefuls left in the tin.")
+
///////////
//ROLLING//
///////////
@@ -428,4 +468,4 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user)
/obj/item/weapon/rollingpaperpack/examine(mob/user)
..(user)
- to_chat(user, "There are [src.papers] left")
+ to_chat(user, "There are [papers] left")
diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm
index 9f22daf08f8..696a37c7e0f 100644
--- a/code/game/objects/items/weapons/vending_items.dm
+++ b/code/game/objects/items/weapons/vending_items.dm
@@ -51,7 +51,7 @@
/obj/item/weapon/vending_refill/cigarette
machine_name = "cigarette"
icon_state = "refill_smoke"
- charges = 9// of 30
+ charges = 12// of 36
/obj/item/weapon/vending_refill/autodrobe
machine_name = "AutoDrobe"
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index e8df519fe43..237dd9ac46b 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -80,7 +80,7 @@
/obj/item/weapon/reagent_containers/wash(mob/user, atom/source)
if(is_open_container())
if(reagents.total_volume >= volume)
- to_chat(user, "span class='warning'>\The [src] is full.")
+ to_chat(user, "\The [src] is full.")
return
else
reagents.add_reagent("water", min(volume - reagents.total_volume, amount_per_transfer_from_this))
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index 234b23800e6..4559d20fbbf 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -646,4 +646,14 @@
build_type = AUTOLATHE
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
build_path = /obj/item/weapon/circuitboard/logic_gate
+ category = list("initial", "Electronics")
+
+/datum/design/vendor
+ name = "Machine Board (Vendor)"
+ desc = "The circuit board for a Vendor."
+ id = "vendor"
+ req_tech = list("programming" = 1)
+ build_type = AUTOLATHE
+ materials = list(MAT_GLASS = 750, MAT_METAL = 250)
+ build_path = /obj/item/weapon/circuitboard/vendor
category = list("initial", "Electronics")
\ No newline at end of file
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index e2a89b38bec..afb1e09b40f 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -442,16 +442,6 @@
build_path = /obj/item/weapon/circuitboard/programmable
category = list("Misc. Machinery")
-/datum/design/vendor
- name = "Machine Board (Vendor)"
- desc = "The circuit board for a Vendor."
- id = "vendor"
- req_tech = list("programming" = 1)
- build_type = IMPRINTER
- materials = list(MAT_GLASS = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/vendor
- category = list("Misc. Machinery")
-
/datum/design/pod
name = "Machine Board (Mass Driver and Pod Doors Control)"
desc = "Allows for the construction of circuit boards used to build a Mass Driver and Pod Doors Control."
diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi
index 98d2257ff4f..de8b8525527 100644
Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ