diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index d419198af3..14e97cce7a 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -23,6 +23,7 @@ var/list/all_supply_groups = list("Atmospherics", "Science", "Security", "Supplies", + "Vendor Refills", "Voidsuits") /datum/supply_pack diff --git a/code/datums/supplypacks/vending_refills_vr.dm b/code/datums/supplypacks/vending_refills_vr.dm new file mode 100644 index 0000000000..47ee538d7e --- /dev/null +++ b/code/datums/supplypacks/vending_refills_vr.dm @@ -0,0 +1,137 @@ +/datum/supply_pack/vending_refills + group = "Vendor Refills" + containertype = /obj/structure/closet/crate/plastic + containername = "vendor refill cartridge crate" + +/datum/supply_pack/randomised/vending_refills + group = "Vendor Refills" + containertype = /obj/structure/closet/crate/plastic + containername = "vendor refill cartridge crate" + +/datum/supply_pack/vending_refills/snack + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snack) + name = "Getmore Chocolate Corp Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/fitness + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/fitness) + name = "SweatMAX Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/hotfood + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/hotfood) + name = "Hot Foods Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/weeb + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/weeb) + name = "Nippon-tan Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sol + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/sol) + name = "Sol-Snacks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/snix + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snix) + name = "Snix Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/snlvend + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snlvend) + name = "Shop-n-Large Snacks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sovietvend + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/sovietvend) + name = "Ration Station Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/coffee + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/coffee) + name = "Hot Drinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cola + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/cola) + name = "Robust Softdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cola_soft + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/cola_soft) + name = "Soft Robustdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/sovietsoda + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda) + name = "BODA Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/bepis + contains = list(/obj/item/weapon/refill_cartridge/autoname/drink/bepis) + name = "Bepis Softdrinks Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/cigarette + contains = list(/obj/item/weapon/refill_cartridge/autoname/cigarette) + name = "Cigarette Vendor Refill Cartridge" + cost = 15 + +/datum/supply_pack/vending_refills/wardrobe + contains = list(/obj/item/weapon/refill_cartridge/multitype/wardrobe) + name = "Wardrobe Vendor Refill Cartridge" + cost = 10 + +/datum/supply_pack/vending_refills/giftvendor + contains = list(/obj/item/weapon/refill_cartridge/autoname/giftvendor) + name = "AlliCo Baubles and Confectionaries Vendor Refill Cartridge" + cost = 20 + +/datum/supply_pack/vending_refills/general_food + contains = list(/obj/item/weapon/refill_cartridge/multitype/food = 5) + name = "5-Pack Food Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_drink + contains = list(/obj/item/weapon/refill_cartridge/multitype/drink = 5) + name = "5-Pack Drink Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_clothing + contains = list(/obj/item/weapon/refill_cartridge/multitype/clothing = 5) + name = "5-Pack Clothing Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_technical + contains = list(/obj/item/weapon/refill_cartridge/multitype/technical = 5) + name = "5-Pack Technical Vendor Refill Cartridges" + cost = 75 + +/datum/supply_pack/vending_refills/general_specialty + contains = list(/obj/item/weapon/refill_cartridge/multitype/specialty = 5) + name = "5-Pack Specialty Vendor Refill Cartridges" + cost = 150 + +/datum/supply_pack/randomised/vending_refills/value_pack // 5 random vendor-specific cartridges at lower average price. But why? + num_contained = 5 + contains = list(/obj/item/weapon/refill_cartridge/autoname/food/snack, + /obj/item/weapon/refill_cartridge/autoname/food/fitness, + /obj/item/weapon/refill_cartridge/autoname/food/hotfood, + /obj/item/weapon/refill_cartridge/autoname/food/weeb, + /obj/item/weapon/refill_cartridge/autoname/food/sol, + /obj/item/weapon/refill_cartridge/autoname/food/snix, + /obj/item/weapon/refill_cartridge/autoname/food/snlvend, + /obj/item/weapon/refill_cartridge/autoname/food/sovietvend, + /obj/item/weapon/refill_cartridge/autoname/drink/coffee, + /obj/item/weapon/refill_cartridge/autoname/drink/cola, + /obj/item/weapon/refill_cartridge/autoname/drink/cola_soft, + /obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda, + /obj/item/weapon/refill_cartridge/autoname/drink/bepis, + /obj/item/weapon/refill_cartridge/autoname/cigarette, + /obj/item/weapon/refill_cartridge/multitype/wardrobe, + /obj/item/weapon/refill_cartridge/autoname/technical/assist, + /obj/item/weapon/refill_cartridge/autoname/technical/tool, + /obj/item/weapon/refill_cartridge/autoname/giftvendor) + name = "5-pack Extra-Cheap Vendor Refill Cartridges" + cost = 35 \ No newline at end of file diff --git a/code/datums/vending/stored_item.dm b/code/datums/vending/stored_item.dm index 7af6029bd5..fecc362c88 100644 --- a/code/datums/vending/stored_item.dm +++ b/code/datums/vending/stored_item.dm @@ -65,7 +65,12 @@ var/new_product = new item_path(stored) instances += new_product - +/datum/stored_item/proc/refill_products(var/refill_amount) + if(!instances) + init_products() + for(var/i = 1 to refill_amount) + var/new_product = new item_path(stored) + instances += new_product /datum/stored_item/stack/get_amount() return amount diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm index 09a9b480aa..f073f3f396 100644 --- a/code/modules/economy/vending.dm +++ b/code/modules/economy/vending.dm @@ -42,6 +42,10 @@ var/list/prices = list() // Prices for each item, list(/type/path = price), items not in the list don't have a price. /// Set automatically, enables pricing var/has_prices = FALSE + // This one is used for refill cartridge use. + var/list/refill = list() // For each, use the following pattern: + // Enables refilling with appropriate cartridges + var/refillable = TRUE // List of vending_product items available. var/list/product_records = list() @@ -126,12 +130,31 @@ GLOBAL_LIST_EMPTY(vending_products) if(LAZYLEN(premium)) has_premium = TRUE + + if(!LAZYLEN(refill) && refillable) // Manually setting refill list prevents the automatic population. By default filled with all entries from normal product. + refill += products + LAZYCLEARLIST(products) LAZYCLEARLIST(contraband) LAZYCLEARLIST(premium) LAZYCLEARLIST(prices) all_products.Cut() +/obj/machinery/vending/proc/refill_inventory() + if(!(LAZYLEN(refill))) //This shouldn't happen, but just in case... + return + + for(var/entry in refill) + var/datum/stored_item/vending_product/current_product + for(var/datum/stored_item/vending_product/product in product_records) + if(product.item_path == entry) + current_product = product + break + if(!current_product) + continue + else + current_product.refill_products(refill[entry]) + /obj/machinery/vending/Destroy() qdel(wires) wires = null @@ -170,6 +193,29 @@ GLOBAL_LIST_EMPTY(vending_products) if(I || istype(W, /obj/item/weapon/spacecash)) attack_hand(user) return + else if(istype(W, /obj/item/weapon/refill_cartridge)) + if(stat & (BROKEN|NOPOWER)) + to_chat(user, "You cannot refill [src] while it is not functioning.") + return + if(!anchored) + to_chat(user, "You cannot refill [src] while it is not secured.") + return + if(panel_open) + to_chat(user, "You cannot refill [src] while it's panel is open.") + return + if(!refillable) + to_chat(user, "\the [src] does not have a refill port.") + return + var/obj/item/weapon/refill_cartridge/RC = W + if(RC.can_refill(src)) + to_chat(user, "You refill [src] using [RC].") + user.drop_from_inventory(RC) + qdel(RC) + refill_inventory() + return + else + to_chat(user, "You cannot refill [src] with [RC].") + return else if(W.is_screwdriver()) panel_open = !panel_open to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index d0213216ed..f60863e1d0 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -23,6 +23,8 @@ /obj/item/clothing/glasses/omnihud/med = 4, /obj/item/device/glasses_kit = 1, /obj/item/weapon/storage/quickdraw/syringe_case = 4) ..() +// Food Machines (for event/away maps) + //I want this not just as part of the zoo. ;v /obj/machinery/vending/food name = "Food-O-Mat" @@ -234,20 +236,7 @@ contraband = list(/obj/item/weapon/reagent_containers/food/snacks/tofurkey = 10) vend_delay = 10 -//End of food event machines - -/* For later, then -/obj/machinery/vending/weapon_machine - name = "Frozen Star Guns&Ammo" - desc = "A self-defense equipment vending machine. When you need to take care of that clown." - product_slogans = "The best defense is good offense!;Buy for your whole family today!;Nobody can outsmart bullet!;God created man - Frozen Star made them EQUAL!;Nobody can outsmart bullet!;Stupidity can be cured! By LEAD.;Dead kids can't bully your children!" - product_ads = "Stunning!;Take justice in your own hands!;LEADearship!" - icon = 'icons/obj/vending_vr.dmi' - icon_state = "weapon" - products = list(/obj/item/device/flash = 6,/obj/item/weapon/reagent_containers/spray/pepper = 6, /obj/item/weapon/gun/projectile/olivaw = 5, /obj/item/weapon/gun/projectile/giskard = 5, /obj/item/ammo_magazine/mg/cl32/rubber = 20) - contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) - prices = list(/obj/item/device/flash = 600,/obj/item/weapon/reagent_containers/spray/pepper = 800, /obj/item/weapon/gun/projectile/olivaw = 1600, /obj/item/weapon/gun/projectile/giskard = 1200, /obj/item/ammo_magazine/mg/cl32/rubber = 200) -*/ +// Food Machines (for event/away maps) /obj/machinery/vending/fitness/New() products += list(/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 8) @@ -271,6 +260,75 @@ req_log_access = access_cmo has_logs = 1 +<<<<<<< HEAD +======= +//Airlock antitox vendor +/obj/machinery/vending/wallmed_airlock + name = "Airlock NanoMed" + desc = "Wall-mounted Medical Equipment dispenser. This limited-use version dispenses antitoxins with mild painkillers for surface EVAs." + icon_state = "wallmed" + density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude + products = list(/obj/item/weapon/reagent_containers/pill/airlock = 20) + contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2) + req_log_access = access_cmo + has_logs = 1 + +/obj/machinery/seed_storage/brig + name = "Prisoners' food seed storage" + starting_seeds = list( + /obj/item/seeds/appleseed = 3, + /obj/item/seeds/bananaseed = 3, + /obj/item/seeds/berryseed = 3, + /obj/item/seeds/cabbageseed = 3, + /obj/item/seeds/carrotseed = 3, + /obj/item/seeds/celery = 3, + /obj/item/seeds/chantermycelium = 3, + /obj/item/seeds/cherryseed = 3, + /obj/item/seeds/chiliseed = 3, + /obj/item/seeds/cocoapodseed = 3, + /obj/item/seeds/cornseed = 3, + /obj/item/seeds/durian = 3, + /obj/item/seeds/eggplantseed = 3, + /obj/item/seeds/grapeseed = 3, + /obj/item/seeds/grassseed = 3, + /obj/item/seeds/replicapod = 3, + /obj/item/seeds/lavenderseed = 3, + /obj/item/seeds/lemonseed = 3, + /obj/item/seeds/lettuce = 3, + /obj/item/seeds/limeseed = 3, + /obj/item/seeds/mtearseed = 2, + /obj/item/seeds/orangeseed = 3, + /obj/item/seeds/onionseed = 3, + /obj/item/seeds/peanutseed = 3, + /obj/item/seeds/plumpmycelium = 3, + /obj/item/seeds/poppyseed = 3, + /obj/item/seeds/potatoseed = 3, + /obj/item/seeds/pumpkinseed = 3, + /obj/item/seeds/rhubarb = 3, + /obj/item/seeds/riceseed = 3, + /obj/item/seeds/rose = 3, + /obj/item/seeds/soyaseed = 3, + /obj/item/seeds/pineapple = 3, + /obj/item/seeds/sugarcaneseed = 3, + /obj/item/seeds/sunflowerseed = 3, + /obj/item/seeds/shandseed = 2, + /obj/item/seeds/tobaccoseed = 3, + /obj/item/seeds/tomatoseed = 3, + /obj/item/seeds/towermycelium = 3, + /obj/item/seeds/vanilla = 3, + /obj/item/seeds/watermelonseed = 3, + /obj/item/seeds/wheatseed = 3, + /obj/item/seeds/whitebeetseed = 3, + /obj/item/seeds/wabback = 2) + +/obj/machinery/vending/hydronutrients/brig + name = "Brig NutriMax" + desc = "A plant nutrients vendor. Seems some items aren't included." + products = list(/obj/item/weapon/reagent_containers/glass/bottle/eznutrient = 6,/obj/item/weapon/reagent_containers/glass/bottle/left4zed = 4,/obj/item/weapon/reagent_containers/glass/bottle/robustharvest = 3,/obj/item/weapon/plantspray/pests = 20, + /obj/item/weapon/reagent_containers/glass/beaker = 4,/obj/item/weapon/storage/bag/plants = 5) + premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) + +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/machinery/vending/abductor name = "Abduct-U" desc = "A mysterious machine which can fabricate many tools for acquiring test subjects." @@ -294,7 +352,13 @@ /obj/item/device/perfect_tele/alien = 1 ) vend_delay = 15 +<<<<<<< HEAD +======= + +// Loadout Vending Machines Start + +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/machinery/vending/loadout name = "Fingers and Toes" desc = "A special vendor for gloves and shoes!" @@ -749,7 +813,10 @@ /obj/item/clothing/under/dress/maid = 5, /obj/item/clothing/under/dress/maid/sexy = 5, /obj/item/clothing/under/dress/maid/janitor = 5, +<<<<<<< HEAD /obj/item/clothing/under/harness = 5, //CHOMP Edit: Added gear harness, +======= +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/item/clothing/under/moderncoat = 5, /obj/item/clothing/under/permit = 5, /obj/item/clothing/under/oldwoman = 5, @@ -1037,6 +1104,7 @@ premium = list(/obj/item/clothing/under/color/rainbow = 1) contraband = list(/obj/item/clothing/under/rank/clown = 1) +<<<<<<< HEAD //////////////////START OF CHIPS CO. VENDORS////////////////// /obj/machinery/vending/loadout/gadget @@ -1130,6 +1198,8 @@ //////////////////END OF CHIPS CO. VENDORS////////////////// +======= +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/machinery/vending/loadout/loadout_misc name = "Bits and Bobs" desc = "A special vendor for things and also stuff!" @@ -1166,8 +1236,12 @@ product_ads = "Dress your best! It's what big D would want.;Overwear for all occasions!;Big D has what you need if what you need is some form of jacket!;Need a new hoodie? Bid D has you covered.;Big D says you need a new suit!;Big D smiles when he sees you in one of his coats!" icon_state = "suit" vend_delay = 16 +<<<<<<< HEAD products = list(/obj/item/clothing/suit/storage/toggle/labcoat/old = 100, /obj/item/clothing/suit/storage/apron = 5, +======= + products = list(/obj/item/clothing/suit/storage/apron = 5, +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/item/clothing/suit/storage/flannel/aqua = 5, /obj/item/clothing/suit/storage/toggle/bomber = 5, /obj/item/clothing/suit/storage/bomber/alt = 5, @@ -1210,6 +1284,10 @@ /obj/item/clothing/suit/storage/toggle/labcoat/pink = 5, /obj/item/clothing/suit/storage/toggle/labcoat/red = 5, /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 5, +<<<<<<< HEAD +======= + /obj/item/clothing/suit/storage/toggle/labcoat/old = 5, +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/item/clothing/suit/leathercoat = 5, /obj/item/clothing/suit/storage/toggle/leather_jacket = 5, /obj/item/clothing/suit/storage/leather_jacket_alt = 5, @@ -1234,6 +1312,10 @@ /obj/item/clothing/suit/jacket/puffer/vest = 5, /obj/item/clothing/suit/storage/flannel/red = 5, /obj/item/clothing/suit/unathi/robe = 5, +<<<<<<< HEAD +======= + /obj/item/clothing/suit/storage/snowsuit = 5, +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges /obj/item/clothing/suit/storage/toggle/internalaffairs = 5, /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5, /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5, @@ -1297,6 +1379,7 @@ /obj/item/clothing/suit/storage/toggle/labcoat/pink = 100, /obj/item/clothing/suit/storage/toggle/labcoat/red = 100, /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 100, + /obj/item/clothing/suit/storage/toggle/labcoat/old = 100, /obj/item/clothing/suit/leathercoat = 100, /obj/item/clothing/suit/storage/toggle/leather_jacket = 100, /obj/item/clothing/suit/storage/leather_jacket_alt = 100, @@ -1489,6 +1572,67 @@ contraband = list(/obj/item/clothing/head/syndicatefake = 1, /obj/item/clothing/suit/syndicatefake = 1) +/obj/machinery/vending/loadout/gadget + name = "Chips Co." + desc = "A special vendor for devices and gadgets." + product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" + icon_state = "gadgets" + vend_delay = 11 + products = list(/obj/item/clothing/suit/circuitry = 1, + /obj/item/clothing/head/circuitry = 1, + /obj/item/clothing/shoes/circuitry = 1, + /obj/item/clothing/gloves/circuitry = 1, + /obj/item/clothing/under/circuitry = 1, + /obj/item/clothing/glasses/circuitry = 1, + /obj/item/clothing/ears/circuitry = 1, + /obj/item/device/text_to_speech = 5, + /obj/item/device/paicard = 5, + /obj/item/device/communicator = 10, + /obj/item/device/communicator/watch = 10, + /obj/item/device/radio = 10, + /obj/item/device/camera = 5, + /obj/item/device/taperecorder = 5, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, + /obj/item/device/pda = 10, + /obj/item/device/radio/headset = 10, + /obj/item/device/flashlight = 5, + /obj/item/device/laser_pointer = 3, + /obj/item/clothing/glasses/omnihud = 10, + /obj/item/device/walkpod = 5, + /obj/item/device/juke_remote = 1, + /obj/item/instrument/piano_synth/headphones = 2, // You're making a subsystem do work, I don't want it TOO busy + /obj/item/instrument/piano_synth/headphones/spacepods = 2, + /obj/item/clothing/gloves/bluespace = 5) + prices = list(/obj/item/clothing/suit/circuitry = 100, + /obj/item/clothing/head/circuitry = 100, + /obj/item/clothing/shoes/circuitry = 100, + /obj/item/clothing/gloves/circuitry = 100, + /obj/item/clothing/under/circuitry = 100, + /obj/item/clothing/glasses/circuitry = 100, + /obj/item/clothing/ears/circuitry = 100, + /obj/item/device/text_to_speech = 300, + /obj/item/device/paicard = 100, + /obj/item/device/communicator = 100, + /obj/item/device/communicator/watch = 100, + /obj/item/device/radio = 100, + /obj/item/device/camera = 100, + /obj/item/device/taperecorder = 100, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 1000, + /obj/item/device/pda = 50, + /obj/item/device/radio/headset = 50, + /obj/item/device/flashlight = 100, + /obj/item/device/laser_pointer = 200, + /obj/item/clothing/glasses/omnihud = 100, + /obj/item/device/walkpod = 300, + /obj/item/device/juke_remote = 1000, + /obj/item/instrument/piano_synth/headphones = 200, + /obj/item/instrument/piano_synth/headphones/spacepods = 600, + /obj/item/clothing/gloves/bluespace = 500) + premium = list(/obj/item/device/perfect_tele/one_beacon = 1) + contraband = list(/obj/item/weapon/disk/nifsoft/compliance = 1) + +// Loadout Vending Machines End + /obj/machinery/vending/entertainer name = "Thespian's Delight" desc = "Sometimes nerds need costumes!" @@ -1580,6 +1724,7 @@ /obj/item/clothing/shoes/knight_costume = 3, /obj/item/clothing/shoes/knight_costume/black = 3) +// Event Loadout Vending Machines Start /obj/machinery/vending/event //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// name = "Fingers and Toes" @@ -2256,6 +2401,36 @@ /obj/item/clothing/suit/space/rig/military = 5 ) +/obj/machinery/vending/event/gadget //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// + name = "Chips Co." + desc = "A special vendor for devices and gadgets." + product_ads = "You can't RESIST our great deals!;Feeling disconnected? We have a gadget for you!;You know you have the capacity to buy our capacitors!;FILL THAT HOLE IN YOUR HEART WITH OUR PLASTIC DISTRACTIONS!!!;Devices for everyone! Chips Co.!;ROBUST INVENTORY, GREAT PRICES! ;DON'T FORGET THE oyPAD 13s PRO! ON SALE NOW, ONLY ONE THOUSAND THALERS!" + icon_state = "gadgets" + vend_delay = 11 + products = list(/obj/item/clothing/suit/circuitry = 1, + /obj/item/clothing/head/circuitry = 1, + /obj/item/clothing/shoes/circuitry = 1, + /obj/item/clothing/gloves/circuitry = 1, + /obj/item/clothing/under/circuitry = 1, + /obj/item/clothing/glasses/circuitry = 1, + /obj/item/clothing/ears/circuitry = 1, + /obj/item/device/text_to_speech = 5, + /obj/item/device/paicard = 5, + /obj/item/device/communicator = 10, + /obj/item/device/communicator/watch = 10, + /obj/item/device/radio = 10, + /obj/item/device/camera = 5, + /obj/item/device/taperecorder = 5, + /obj/item/modular_computer/tablet/preset/custom_loadout/cheap = 5, + /obj/item/device/pda = 10, + /obj/item/device/radio/headset = 10, + /obj/item/device/flashlight = 5, + /obj/item/device/laser_pointer = 3, + /obj/item/clothing/glasses/omnihud = 10, + /obj/item/device/perfect_tele/one_beacon = 1, + /obj/item/weapon/disk/nifsoft/compliance = 1, + /obj/item/device/perfect_tele/alien = 10) + /obj/machinery/vending/event/costume //FOR FACILITATING AND EQUIPPING EVENTS, DO NOT PLACE ON THE NORMAL MAP// name = "Thespian's Delight" desc = "Sometimes nerds need costumes!" @@ -2336,6 +2511,9 @@ /obj/item/clothing/suit/syndicatefake = 1 ) +// Event Loadout Vending Machines End + +// Event Food Vending Machines Start /obj/machinery/vending/event/food //FOR FACILITATING/OUTFITTING EVENTS, DO NOT PUT THESE ON THE MAP// name = "Dog Food" @@ -3277,6 +3455,8 @@ /obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat = 10) vend_delay = 15 +// Event Food Vending Machines End + /obj/machinery/vending/emergencyfood name = "Food Cube Dispenser" desc = "An ominous machine dispensing food cubes. It will keep you fed, but at what cost?" @@ -3292,6 +3472,8 @@ contraband = list(/obj/item/weapon/storage/box/wings/tray = 20) /obj/machinery/vending/cola/soft + name = "Soft Robustdrinks" + desc = "A different vendor brand for soft drinks, taking off very successfully with its unique imagery and equal stock." icon = 'icons/obj/vending_vr.dmi' icon_state = "Cola_Machine" diff --git a/code/modules/economy/vending_refills.dm b/code/modules/economy/vending_refills.dm new file mode 100644 index 0000000000..b2c0188ef9 --- /dev/null +++ b/code/modules/economy/vending_refills.dm @@ -0,0 +1,161 @@ +/obj/item/weapon/refill_cartridge + name = "vending refill cartridge" + desc = "A specialized cartridge used to refill vending machines with fresh product. Tamper proof." + icon = 'icons/obj/refill_cartridges.dmi' + icon_state = "rc_generic" + item_state = "syringe_kit" + var/refill_type + +/obj/item/weapon/refill_cartridge/proc/can_refill(obj/machinery/vending/V as obj) + if(V.type == refill_type) + return TRUE + return FALSE + +/obj/item/weapon/refill_cartridge/multitype + refill_type = list() + var/refill_exceptions = list() + +/obj/item/weapon/refill_cartridge/multitype/can_refill(obj/machinery/vending/V as obj) + for(var/entry in refill_type) + if(istype(V, entry) && !(V.type in refill_exceptions)) + return TRUE + return FALSE + +/obj/item/weapon/refill_cartridge/autoname/Initialize() + ..() + if(refill_type && ispath(refill_type)) + var/atom/tmp = refill_type + src.name = "[initial(tmp.name)] refill cartridge" + +/obj/item/weapon/refill_cartridge/universal // For admin/event use. Can refill any refillable vendor. + name = "ultimate vending refill cartridge" + desc = "A universal cartridge used to refill vending machines with fresh product." + icon_state = "rc_mystery" + +/obj/item/weapon/refill_cartridge/universal/can_refill(obj/machinery/vending/V as obj) + return TRUE + +// Multi-vendor subtypes + +/obj/item/weapon/refill_cartridge/multitype/technical + name = "technical vendor refill cartridge" + icon_state = "rc_mechanical" + refill_type = list(/obj/machinery/vending/assist, + /obj/machinery/vending/tool, + /obj/machinery/vending/loadout/gadget) + +/obj/item/weapon/refill_cartridge/multitype/food + name = "food vendor refill cartridge" + icon_state = "rc_food" + refill_type = list(/obj/machinery/vending/snack, + /obj/machinery/vending/fitness, + /obj/machinery/vending/hotfood, + /obj/machinery/vending/weeb, + /obj/machinery/vending/sol, + /obj/machinery/vending/snix, + /obj/machinery/vending/snlvend, + /obj/machinery/vending/sovietvend) + +/obj/item/weapon/refill_cartridge/multitype/drink + name = "drinks vendor refill cartridge" + icon_state = "rc_drink" + refill_type = list(/obj/machinery/vending/coffee, + /obj/machinery/vending/cola, + /obj/machinery/vending/sovietsoda, + /obj/machinery/vending/bepis) + +/obj/item/weapon/refill_cartridge/multitype/smokes //Multitype version in case multiple smoke machine vendors exist in future. + name = "smoking vendor refill cartridge" + icon_state = "rc_generic" + refill_type = list(/obj/machinery/vending/cigarette) + +/obj/item/weapon/refill_cartridge/multitype/clothing + name = "clothing vendor refill cartridge" + icon_state = "rc_clothes" + refill_type = list(/obj/machinery/vending/wardrobe, + /obj/machinery/vending/loadout) + refill_exceptions = list(/obj/machinery/vending/loadout/gadget) + +/obj/item/weapon/refill_cartridge/multitype/specialty + name = "specialty vendor refill cartridge" + icon_state = "rc_generic" + refill_type = list(/obj/machinery/vending/cart, + /obj/machinery/vending/medical, + /obj/machinery/vending/phoronresearch, + /obj/machinery/vending/wallmed1, + /obj/machinery/vending/wallmed2, + /obj/machinery/vending/wallmed_airlock, + /obj/machinery/vending/security, + /obj/machinery/vending/hydronutrients, + /obj/machinery/vending/dinnerware, + /obj/machinery/vending/engivend, + /obj/machinery/vending/robotics, + /obj/machinery/vending/fishing, + /obj/machinery/vending/blood, + /obj/machinery/vending/entertainer) + +/obj/item/weapon/refill_cartridge/autoname/food + icon_state = "rc_food" + +/obj/item/weapon/refill_cartridge/autoname/food/snack + refill_type = /obj/machinery/vending/snack + +/obj/item/weapon/refill_cartridge/autoname/food/fitness + refill_type = /obj/machinery/vending/fitness + +/obj/item/weapon/refill_cartridge/autoname/food/hotfood + refill_type = /obj/machinery/vending/hotfood + +/obj/item/weapon/refill_cartridge/autoname/food/weeb + refill_type = /obj/machinery/vending/weeb + +/obj/item/weapon/refill_cartridge/autoname/food/sol + refill_type = /obj/machinery/vending/sol + +/obj/item/weapon/refill_cartridge/autoname/food/snix + refill_type = /obj/machinery/vending/snix + +/obj/item/weapon/refill_cartridge/autoname/food/snlvend + refill_type = /obj/machinery/vending/snlvend + +/obj/item/weapon/refill_cartridge/autoname/food/sovietvend + refill_type = /obj/machinery/vending/sovietvend + +/obj/item/weapon/refill_cartridge/autoname/drink + icon_state = "rc_drink" + +/obj/item/weapon/refill_cartridge/autoname/drink/coffee + refill_type = /obj/machinery/vending/coffee + +/obj/item/weapon/refill_cartridge/autoname/drink/cola + refill_type = /obj/machinery/vending/cola + +/obj/item/weapon/refill_cartridge/autoname/drink/cola_soft + refill_type = /obj/machinery/vending/cola/soft + +/obj/item/weapon/refill_cartridge/autoname/drink/sovietsoda + refill_type = /obj/machinery/vending/sovietsoda + +/obj/item/weapon/refill_cartridge/autoname/drink/bepis + refill_type = /obj/machinery/vending/bepis + +/obj/item/weapon/refill_cartridge/autoname/cigarette + icon_state = "rc_generic" + refill_type = /obj/machinery/vending/cigarette + +/obj/item/weapon/refill_cartridge/multitype/wardrobe + name = "specialized wardrobe refill cartridge" + icon_state = "rc_clothes" + refill_type = list(/obj/machinery/vending/wardrobe) + +/obj/item/weapon/refill_cartridge/autoname/technical + icon_state = "rc_mechanical" + +/obj/item/weapon/refill_cartridge/autoname/technical/assist + refill_type = /obj/machinery/vending/assist + +/obj/item/weapon/refill_cartridge/autoname/technical/tool + refill_type = /obj/machinery/vending/tool + +/obj/item/weapon/refill_cartridge/autoname/giftvendor + refill_type = /obj/machinery/vending/giftvendor \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/pill_vr.dm b/code/modules/reagents/reagent_containers/pill_vr.dm index b7789b18ce..df787bf071 100644 --- a/code/modules/reagents/reagent_containers/pill_vr.dm +++ b/code/modules/reagents/reagent_containers/pill_vr.dm @@ -147,4 +147,17 @@ . = ..() reagents.add_reagent("sleevingcure", 1) color = reagents.get_color() +<<<<<<< HEAD */ //CHOMPStation removal end +======= + +/obj/item/weapon/reagent_containers/pill/airlock + name = "\'Airlock\' Pill" + desc = "Neutralizes toxins and provides a mild analgesic effect." + icon_state = "pill2" + +/obj/item/weapon/reagent_containers/pill/airlock/New() + ..() + reagents.add_reagent("anti_toxin", 15) + reagents.add_reagent("paracetamol", 5) +>>>>>>> b5e1cef4480... Merge pull request #12235 from Heroman3003/refill_cartridges diff --git a/icons/obj/refill_cartridges.dmi b/icons/obj/refill_cartridges.dmi new file mode 100644 index 0000000000..61818e977c Binary files /dev/null and b/icons/obj/refill_cartridges.dmi differ diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index abd967be09..ce61b1d9e0 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -264,27 +264,6 @@ /obj/machinery/power/supermatter/touch_map_edge() qdel(src) -//Airlock antitox vendor -/obj/machinery/vending/wallmed_airlock - name = "Airlock NanoMed" - desc = "Wall-mounted Medical Equipment dispenser. This limited-use version dispenses antitoxins with mild painkillers for surface EVAs." - icon_state = "wallmed" - density = 0 //It is wall-mounted, and thus, not dense. --Superxpdude - products = list(/obj/item/weapon/reagent_containers/pill/airlock = 20) - contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 2) - req_log_access = access_cmo - has_logs = 1 - -/obj/item/weapon/reagent_containers/pill/airlock - name = "\'Airlock\' Pill" - desc = "Neutralizes toxins and provides a mild analgesic effect." - icon_state = "pill2" - -/obj/item/weapon/reagent_containers/pill/airlock/New() - ..() - reagents.add_reagent("anti_toxin", 15) - reagents.add_reagent("paracetamol", 5) - //"Red" Armory Door /obj/machinery/door/airlock/security/armory name = "Red Armory" diff --git a/vorestation.dme b/vorestation.dme index 784c9844b9..805d696176 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -492,6 +492,7 @@ #include "code\datums\supplypacks\supply.dm" #include "code\datums\supplypacks\supply_vr.dm" #include "code\datums\supplypacks\supplypacks.dm" +#include "code\datums\supplypacks\vending_refills_vr.dm" #include "code\datums\supplypacks\voidsuits.dm" #include "code\datums\supplypacks\voidsuits_vr.dm" #include "code\datums\underwear\bottom.dm" @@ -2279,6 +2280,7 @@ #include "code\modules\economy\vending.dm" #include "code\modules\economy\vending_machines.dm" #include "code\modules\economy\vending_machines_vr.dm" +#include "code\modules\economy\vending_refills.dm" #include "code\modules\emotes\emote_define.dm" #include "code\modules\emotes\emote_mob.dm" #include "code\modules\emotes\definitions\_mob.dm"