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