mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 20:47:43 +01:00
Adds vendor refill cartridges to cargo
This commit is contained in:
@@ -23,6 +23,7 @@ var/list/all_supply_groups = list("Atmospherics",
|
||||
"Science",
|
||||
"Security",
|
||||
"Supplies",
|
||||
"Vendor Refills",
|
||||
"Voidsuits")
|
||||
|
||||
/datum/supply_pack
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='notice'>You cannot refill [src] while it is not functioning.</span>")
|
||||
return
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='notice'>You cannot refill [src] while it is not secured.</span>")
|
||||
return
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='notice'>You cannot refill [src] while it's panel is open.</span>")
|
||||
return
|
||||
if(!refillable)
|
||||
to_chat(user, "<span class='notice'>\the [src] does not have a refill port.</span>")
|
||||
return
|
||||
var/obj/item/weapon/refill_cartridge/RC = W
|
||||
if(RC.can_refill(src))
|
||||
to_chat(user, "<span class='notice'>You refill [src] using [RC].</span>")
|
||||
user.drop_from_inventory(RC)
|
||||
qdel(RC)
|
||||
refill_inventory()
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot refill [src] with [RC].</span>")
|
||||
return
|
||||
else if(W.is_screwdriver())
|
||||
panel_open = !panel_open
|
||||
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
|
||||
|
||||
@@ -152,6 +152,9 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 2,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/greentea = 10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/chaitea = 5) // VOREStation Edit - Lowers Coffee/Hot Chocolate/Tea Prices from 3 -> 2.
|
||||
refill = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 15,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/tea = 1,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ice = 29)
|
||||
vending_sound = "machines/vending/vending_coffee.ogg"
|
||||
|
||||
/obj/machinery/vending/snack
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -146,3 +146,13 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("sleevingcure", 1)
|
||||
color = reagents.get_color()
|
||||
|
||||
/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)
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 941 B |
@@ -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"
|
||||
|
||||
@@ -471,6 +471,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"
|
||||
@@ -2145,6 +2146,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"
|
||||
|
||||
Reference in New Issue
Block a user