Coonflict fiiixeeess

This commit is contained in:
Artur
2020-05-13 12:56:17 +03:00
261 changed files with 3312 additions and 1483 deletions
+301 -90
View File
@@ -30,6 +30,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/amount = 0
///How many we can store at maximum
var/max_amount = 0
///Does the item have a custom price override
var/custom_price
///Does the item have a custom premium price override
var/custom_premium_price
/**
* # vending machines
@@ -50,6 +54,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
integrity_failure = 0.33
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
circuit = /obj/item/circuitboard/machine/vendor
payment_department = ACCOUNT_SRV
light_power = 0.5
light_range = MINIMUM_USEFUL_LIGHT_RANGE
/// Is the machine active (No sales pitches if off)!
@@ -118,11 +123,13 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/extended_inventory
///Are we checking the users ID
var/scan_id = TRUE
///Coins that we accept?
var/obj/item/coin/coin
///Bills that we accept?
var/obj/item/stack/spacecash/bill
///Default price of items if not overridden
var/default_price = 25
///Default price of premium items if not overridden
var/extra_price = 50
///cost multiplier per department or access
var/list/cost_multiplier_per_dept = list()
/**
* Is this item on station or not
*
@@ -144,7 +151,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
var/obj/item/vending_refill/refill_canister = null
/// how many items have been inserted in a vendor
var/loaded_items
var/loaded_items = 0
///Name of lighting mask for the vending machine
var/light_mask
@@ -180,11 +187,18 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
// so if slogantime is 10 minutes, it will say it at somewhere between 10 and 20 minutes after the machine is crated.
last_slogan = world.time + rand(0, slogan_delay)
power_change()
if(onstation_override) //overrides the checks if true.
onstation = TRUE
return
if(mapload && !is_station_level(z)) //check if it was initially created off station during mapload.
onstation = FALSE
if(circuit)
circuit.onstation = onstation //sync up the circuit so the pricing schema is carried over if it's reconstructed.
else if(circuit && (circuit.onstation != onstation)) //check if they're not the same to minimize the amount of edited values.
onstation = circuit.onstation //if it was constructed outside mapload, sync the vendor up with the circuit's var so you can't bypass price requirements by moving / reconstructing it off station.
/obj/machinery/vending/Destroy()
QDEL_NULL(wires)
QDEL_NULL(coin)
QDEL_NULL(bill)
return ..()
/obj/machinery/vending/can_speak()
@@ -284,6 +298,7 @@ GLOBAL_LIST_EMPTY(vending_products)
if(!start_empty)
R.amount = amount
R.max_amount = amount
R.custom_price = initial(temp.custom_price)
recordlist += R
/**
* Refill a vending machine from a refill canister
@@ -375,39 +390,7 @@ GLOBAL_LIST_EMPTY(vending_products)
if(panel_open && is_wire_tool(I))
wires.interact(user)
return
else if(istype(I, /obj/item/coin))
if(coin)
to_chat(user, "<span class='warning'>[src] already has [coin] inserted</span>")
return
if(bill)
to_chat(user, "<span class='warning'>[src] already has [bill] inserted</span>")
return
if(!premium.len)
to_chat(user, "<span class='warning'>[src] doesn't have a coin slot.</span>")
return
if(!user.transferItemToLoc(I, src))
return
coin = I
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
return
else if(istype(I, /obj/item/stack/spacecash))
if(coin)
to_chat(user, "<span class='warning'>[src] already has [coin] inserted</span>")
return
if(bill)
to_chat(user, "<span class='warning'>[src] already has [bill] inserted</span>")
return
if(!premium.len)
to_chat(user, "<span class='warning'>[src] doesn't have a bill slot.</span>")
return
if(!user.transferItemToLoc(I, src))
return
var/obj/item/stack/S = I
S.use(1)
bill = new S.type(src, 1)
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
return
else if(refill_canister && istype(I, refill_canister))
if(refill_canister && istype(I, refill_canister))
if (!panel_open)
to_chat(user, "<span class='warning'>You should probably unscrew the service panel first!</span>")
else if (stat & (BROKEN|NOPOWER))
@@ -543,11 +526,13 @@ GLOBAL_LIST_EMPTY(vending_products)
/obj/machinery/vending/ui_static_data(mob/user)
. = list()
.["onstation"] = onstation
.["product_records"] = list()
for (var/datum/data/vending_product/R in product_records)
var/list/data = list(
path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
name = R.name,
price = R.custom_price || default_price,
max_amount = R.max_amount,
ref = REF(R)
)
@@ -557,6 +542,7 @@ GLOBAL_LIST_EMPTY(vending_products)
var/list/data = list(
path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
name = R.name,
price = R.custom_premium_price || extra_price,
max_amount = R.max_amount,
ref = REF(R),
premium = TRUE
@@ -567,6 +553,7 @@ GLOBAL_LIST_EMPTY(vending_products)
var/list/data = list(
path = replacetext(replacetext("[R.product_path]", "/obj/item/", ""), "/", "-"),
name = R.name,
price = R.custom_price || default_price,
max_amount = R.max_amount,
ref = REF(R),
premium = TRUE
@@ -575,12 +562,28 @@ GLOBAL_LIST_EMPTY(vending_products)
/obj/machinery/vending/ui_data(mob/user)
. = list()
var/obj/item/card/id/C = user.get_idcard(TRUE)
.["cost_mult"] = 1
.["cost_text"] = ""
if(C && C.registered_account)
.["user"] = list()
.["user"]["name"] = C.registered_account.account_holder
.["user"]["cash"] = C.registered_account.account_balance
if(C.registered_account.account_job)
.["user"]["job"] = C.registered_account.account_job.title
else
.["user"]["job"] = "No Job"
var/cost_mult = get_best_discount(C)
if(cost_mult != 1)
.["cost_mult"] = cost_mult
if(cost_mult < 1)
.["cost_text"] = " [(1 - cost_mult) * 100]% OFF"
else
.["cost_text"] = " [(cost_mult - 1) * 100]% EXTRA"
.["stock"] = list()
for(var/datum/data/vending_product/R in product_records + coin_records + hidden_records)
for (var/datum/data/vending_product/R in product_records + coin_records + hidden_records)
.["stock"][R.name] = R.amount
.["extended_inventory"] = extended_inventory
.["coin"] = coin
.["bill"] = bill
/obj/machinery/vending/ui_act(action, params)
. = ..()
@@ -594,75 +597,71 @@ GLOBAL_LIST_EMPTY(vending_products)
if(panel_open)
to_chat(usr, "<span class='warning'>The vending machine cannot dispense products while its service panel is open!</span>")
return
if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH
to_chat(usr, "<span class='warning'>Access denied.</span>" )
flick(icon_deny,src)
return
vend_ready = FALSE //One thing at a time!!
var/datum/data/vending_product/R = locate(params["ref"])
var/list/record_to_check = product_records + coin_records
if(extended_inventory)
record_to_check = product_records + coin_records + hidden_records
if(!R || !istype(R) || !R.product_path)
vend_ready = TRUE
return
if(R.amount <= 0)
to_chat(usr, "<span class='warning'>Sold out.</span>")
vend_ready = TRUE
return
var/price_to_use = default_price
if(R.custom_price)
price_to_use = R.custom_price
if(R in hidden_records)
if(!extended_inventory)
vend_ready = TRUE
return
else if(R in coin_records)
if(!(coin || bill))
to_chat(usr, "<span class='warning'>You need to insert a coin to get this item!</span>")
vend_ready = TRUE
return
if(coin && coin.string_attached)
if(prob(50))
if(usr.put_in_hands(coin))
to_chat(usr, "<span class='notice'>You successfully pull [coin] out before [src] could swallow it.</span>")
coin = null
else
to_chat(usr, "<span class='warning'>You couldn't pull [coin] out because your hands are full!</span>")
QDEL_NULL(coin)
else
to_chat(usr, "<span class='warning'>You weren't able to pull [coin] out fast enough, the machine ate it, string and all!</span>")
QDEL_NULL(coin)
else
QDEL_NULL(coin)
QDEL_NULL(bill)
else if(!(R in product_records))
else if (!(R in record_to_check))
vend_ready = TRUE
message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!")
return
if(((last_reply + 200) <= world.time) && vend_reply)
speak(vend_reply)
last_reply = world.time
if (R.amount <= 0)
say("Sold out of [R.name].")
flick(icon_deny,src)
vend_ready = TRUE
return
if(onstation && price_to_use >= 0)
var/obj/item/card/id/C = usr.get_idcard(TRUE)
if(!C)
say("No card found.")
flick(icon_deny,src)
vend_ready = TRUE
return
else if (!C.registered_account)
say("No account found.")
flick(icon_deny,src)
vend_ready = TRUE
return
var/datum/bank_account/account = C.registered_account
if(coin_records.Find(R) || hidden_records.Find(R))
price_to_use = R.custom_premium_price ? R.custom_premium_price : extra_price
else
price_to_use = round(price_to_use * get_best_discount(C))
if(price_to_use && !account.adjust_money(-price_to_use))
say("You do not possess the funds to purchase [R.name].")
flick(icon_deny,src)
vend_ready = TRUE
return
var/datum/bank_account/D = SSeconomy.get_dep_account(payment_department)
if(D)
D.adjust_money(price_to_use)
if(last_shopper != usr || purchase_message_cooldown < world.time)
say("Thank you for shopping with [src]!")
purchase_message_cooldown = world.time + 5 SECONDS
last_shopper = usr
use_power(5)
if(icon_vend) //Show the vending animation if needed
flick(icon_vend,src)
var/vended = new R.product_path(get_turf(src))
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
var/obj/item/vended = new R.product_path(get_turf(src))
R.amount--
if(usr.CanReach(src) && usr.put_in_hands(vended))
to_chat(usr, "<span class='notice'>You take [R.name] out of the slot.</span>")
else
to_chat(usr, "<span class='warning'>[capitalize(R.name)] falls onto the floor!</span>")
R.amount--
SSblackbox.record_feedback("nested tally", "vending_machine_usage", 1, list("[type]", "[R.product_path]"))
vend_ready = TRUE
return
if("takeoutcoin")
usr.put_in_hands(coin)
to_chat(usr, "<span class='notice'>You remove [coin] from [src].</span>")
coin = null
return
if("takeoutbill")
usr.put_in_hands(bill)
to_chat(usr, "<span class='notice'>You remove [bill] from [src].</span>")
bill = null
return
if("togglevoice")
if(panel_open)
shut_up = !shut_up
/obj/machinery/vending/process()
if(stat & (BROKEN|NOPOWER))
@@ -697,6 +696,25 @@ GLOBAL_LIST_EMPTY(vending_products)
say(message)
/**
* Gets the best discount from a given ID card, comparing its access and paycheck depart with cost_multiplier_per_dept.
* It only applies to the regular selection, not premium or contraband. And a bank account is still required.
* But it can also be used to charge more to certain departments or accesses. :)
*
* Arguments:
* * list/dept_access_list - the list to compare
*/
/obj/machinery/vending/proc/get_best_discount(obj/item/card/id/C)
var/list/discounts = NUMLIST2TEXTLIST(C.GetAccess())
if(C.registered_account?.account_job)
discounts += C.registered_account.account_job.paycheck_department
discounts &= cost_multiplier_per_dept
if(!length(discounts))
return 1
. = INFINITY
for(var/k in discounts)
. = min(cost_multiplier_per_dept[k], .)
/obj/machinery/vending/power_change()
. = ..()
if(powered())
@@ -774,3 +792,196 @@ GLOBAL_LIST_EMPTY(vending_products)
/obj/machinery/vending/onTransitZ()
return
/obj/machinery/vending/custom
name = "Custom Vendor"
icon_state = "robotics"
icon_deny = "robotics-deny"
max_integrity = 400
payment_department = NO_FREEBIES
refill_canister = /obj/item/vending_refill/custom
/// where the money is sent
var/datum/bank_account/private_a
/// max number of items that the custom vendor can hold
var/max_loaded_items = 20
/// Base64 cache of custom icons.
var/list/base64_cache = list()
/obj/machinery/vending/custom/compartmentLoadAccessCheck(mob/user)
. = FALSE
var/mob/living/carbon/human/H
var/obj/item/card/id/C
if(ishuman(user))
H = user
C = H.get_idcard(FALSE)
if(C?.registered_account && C.registered_account == private_a)
return TRUE
/obj/machinery/vending/custom/canLoadItem(obj/item/I, mob/user)
. = FALSE
if(loaded_items >= max_loaded_items)
say("There are too many items in stock.")
return
if(istype(I, /obj/item/stack))
say("Loose items may cause problems, try use it inside wrapping paper.")
return
if(I.custom_price)
return TRUE
/obj/machinery/vending/custom/ui_data(mob/user)
. = ..()
.["access"] = compartmentLoadAccessCheck(user)
.["vending_machine_input"] = list()
for (var/O in vending_machine_input)
if(vending_machine_input[O] > 0)
var/base64
var/price = 0
for(var/obj/T in contents)
if(T.name == O)
price = T.custom_price
if(!base64)
if(base64_cache[T.type])
base64 = base64_cache[T.type]
else
base64 = icon2base64(icon(T.icon, T.icon_state))
base64_cache[T.type] = base64
break
var/list/data = list(
name = O,
price = price,
img = base64
)
.["vending_machine_input"] += list(data)
/obj/machinery/vending/custom/ui_act(action, params)
. = ..()
if(.)
return
switch(action)
if("dispense")
. = TRUE
if(!vend_ready)
return
var/N = params["item"]
var/obj/S
vend_ready = FALSE
if(ishuman(usr))
var/mob/living/carbon/human/H = usr
var/obj/item/card/id/C = H.get_idcard(TRUE)
if(!C)
say("No card found.")
flick(icon_deny,src)
vend_ready = TRUE
return
else if (!C.registered_account)
say("No account found.")
flick(icon_deny,src)
vend_ready = TRUE
return
var/datum/bank_account/account = C.registered_account
for(var/obj/O in contents)
if(O.name == N)
S = O
break
if(S)
if(compartmentLoadAccessCheck(usr))
vending_machine_input[N] = max(vending_machine_input[N] - 1, 0)
S.forceMove(drop_location())
loaded_items--
use_power(5)
vend_ready = TRUE
updateUsrDialog()
return
if(account.has_money(S.custom_price))
account.adjust_money(-S.custom_price)
var/datum/bank_account/owner = private_a
if(owner)
owner.adjust_money(S.custom_price)
vending_machine_input[N] = max(vending_machine_input[N] - 1, 0)
S.forceMove(drop_location())
loaded_items--
use_power(5)
if(last_shopper != usr || purchase_message_cooldown < world.time)
say("Thank you for buying local and purchasing [S]!")
purchase_message_cooldown = world.time + 5 SECONDS
last_shopper = usr
vend_ready = TRUE
updateUsrDialog()
return
else
say("You do not possess the funds to purchase this.")
vend_ready = TRUE
/obj/machinery/vending/custom/attackby(obj/item/I, mob/user, params)
if(!private_a)
var/mob/living/carbon/human/H
var/obj/item/card/id/C
if(ishuman(user))
H = user
C = H.get_idcard(TRUE)
if(C?.registered_account)
private_a = C.registered_account
say("\The [src] has been linked to [C].")
if(compartmentLoadAccessCheck(user))
if(istype(I, /obj/item/pen))
name = stripped_input(user,"Set name","Name", name, 20)
desc = stripped_input(user,"Set description","Description", desc, 60)
slogan_list += stripped_input(user,"Set slogan","Slogan","Epic", 60)
last_slogan = world.time + rand(0, slogan_delay)
return
if(canLoadItem(I))
loadingAttempt(I,user)
updateUsrDialog()
return
if(panel_open && is_wire_tool(I))
wires.interact(user)
return
return ..()
/obj/machinery/vending/custom/crowbar_act(mob/living/user, obj/item/I)
return FALSE
/obj/machinery/vending/custom/Destroy()
unbuckle_all_mobs(TRUE)
var/turf/T = get_turf(src)
if(T)
for(var/obj/item/I in contents)
I.forceMove(T)
explosion(T, -1, 0, 3)
return ..()
/obj/machinery/vending/custom/unbreakable
name = "Indestructible Vendor"
resistance_flags = INDESTRUCTIBLE
/obj/item/vending_refill/custom
machine_name = "Custom Vendor"
icon_state = "refill_custom"
custom_premium_price = 100
/obj/item/price_tagger
name = "price tagger"
desc = "This tool is used to set a price for items used in custom vendors."
icon = 'icons/obj/device.dmi'
icon_state = "pricetagger"
custom_premium_price = 25
///the price of the item
var/price = 1
/obj/item/price_tagger/attack_self(mob/user)
price = max(1, round(input(user,"set price","price") as num|null, 1))
to_chat(user, "<span class='notice'> The [src] will now give things a [price] cr tag.</span>")
/obj/item/price_tagger/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity)
return
if(isitem(target))
var/obj/item/I = target
I.custom_price = price
to_chat(user, "<span class='notice'>You set the price of [I] to [price] cr.</span>")
+3
View File
@@ -19,6 +19,9 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/assist
resistance_flags = FIRE_PROOF
default_price = 50
extra_price = 100
payment_department = NO_FREEBIES
/obj/item/vending_refill/assist
icon_state = "refill_engi"
+13 -7
View File
@@ -3,7 +3,6 @@
desc = "A vending machine for costumes."
icon_state = "theater"
icon_deny = "theater-deny"
req_access = list(ACCESS_THEATRE)
product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!"
vend_reply = "Thank you for using AutoDrobe!"
products = list(/obj/item/clothing/suit/chickensuit = 1,
@@ -124,7 +123,7 @@
/obj/item/clothing/shoes/roman = 1,
/obj/item/shield/riot/roman/fake = 1,
/obj/item/skub = 1,
/obj/item/clothing/under/costume/lobster = 1, // CIT CHANGES
/obj/item/clothing/under/costume/lobster = 1,
/obj/item/clothing/head/lobsterhat = 1,
/obj/item/clothing/head/drfreezehat = 1,
/obj/item/clothing/suit/dracula = 1,
@@ -137,12 +136,19 @@
/obj/item/clothing/under/costume/christmas/croptop/green = 3,
/obj/item/clothing/head/christmashat = 3,
/obj/item/clothing/head/christmashatg = 3,
/obj/item/clothing/under/costume/drfreeze = 1) //End of Cit Changes
refill_canister = /obj/item/vending_refill/autodrobe
/obj/item/clothing/under/costume/drfreeze = 1)
/obj/machinery/vending/autodrobe/all_access
desc = "A vending machine for costumes. This model appears to have no access restrictions."
req_access = null
refill_canister = /obj/item/vending_refill/autodrobe
default_price = 180
extra_price = 360
payment_department = ACCOUNT_SRV
/obj/machinery/vending/autodrobe/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_THEATRE]" = 0)
/obj/machinery/vending/autodrobe/canLoadItem(obj/item/I,mob/user)
return (I.type in products)
/obj/item/vending_refill/autodrobe
machine_name = "AutoDrobe"
+14 -9
View File
@@ -4,7 +4,7 @@
icon_state = "boozeomat"
icon_deny = "boozeomat-deny"
products = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 30,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
/obj/item/reagent_containers/food/drinks/bottle/gin = 5,
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 5,
/obj/item/reagent_containers/food/drinks/bottle/tequila = 5,
@@ -39,12 +39,11 @@
/obj/item/reagent_containers/food/drinks/bottle/trappist = 5)
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!"
req_access = list(ACCESS_BAR)
refill_canister = /obj/item/vending_refill/boozeomat
/obj/machinery/vending/boozeomat/all_access
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions."
req_access = null
default_price = 120
extra_price = 100
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/machinery/vending/boozeomat/pubby_maint //abandoned bar on Pubbystation
products = list(/obj/item/reagent_containers/food/drinks/bottle/whiskey = 1,
@@ -56,7 +55,6 @@
/obj/item/reagent_containers/food/drinks/ice = 3,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 6,
/obj/item/reagent_containers/food/drinks/flask = 1)
req_access = null
/obj/machinery/vending/boozeomat/pubby_captain //Captain's quarters on Pubbystation
products = list(/obj/item/reagent_containers/food/drinks/bottle/rum = 1,
@@ -65,10 +63,17 @@
/obj/item/reagent_containers/food/drinks/drinkingglass = 6,
/obj/item/reagent_containers/food/drinks/ice = 1,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 4);
req_access = list(ACCESS_CAPTAIN)
/obj/machinery/vending/boozeomat/pubby_captain/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_CAPTAIN]" = 0)
/obj/machinery/vending/boozeomat/syndicate_access
req_access = list(ACCESS_SYNDICATE)
payment_department = NO_FREEBIES
/obj/machinery/vending/boozeomat/syndicate_access/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_SYNDICATE]" = 0)
/obj/item/vending_refill/boozeomat
machine_name = "Booze-O-Mat"
+4
View File
@@ -16,6 +16,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/cart
resistance_flags = FIRE_PROOF
default_price = 250
extra_price = 500
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/cart
icon_state = "refill_pda"
+8
View File
@@ -20,6 +20,9 @@
/obj/item/storage/fancy/cigarettes/cigars/havana = 1,
/obj/item/storage/fancy/cigarettes/cigars/cohiba = 1)
refill_canister = /obj/item/vending_refill/cigarette
default_price = 75
extra_price = 250
payment_department = ACCOUNT_SRV
/obj/machinery/vending/cigarette/syndicate
products = list(/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 7,
@@ -30,6 +33,11 @@
/obj/item/storage/box/matches = 10,
/obj/item/lighter/greyscale = 4,
/obj/item/storage/fancy/rollingpapers = 5)
payment_department = NO_FREEBIES
/obj/machinery/vending/cigarette/syndicate/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_SYNDICATE]" = 0)
/obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin
name = "\improper ShadyCigs Ultra"
+6
View File
@@ -173,6 +173,12 @@
/obj/item/clothing/suit/jacket/letterman_nanotrasen = 5,
/obj/item/clothing/suit/hooded/wintercoat/polychromic = 5)
refill_canister = /obj/item/vending_refill/clothing
default_price = 60
extra_price = 120
payment_department = NO_FREEBIES
/obj/machinery/vending/clothing/canLoadItem(obj/item/I,mob/user)
return (I.type in products)
/obj/item/vending_refill/clothing
machine_name = "ClothesMate"
+3
View File
@@ -14,6 +14,9 @@
/obj/item/reagent_containers/food/condiment/sugar = 1)
refill_canister = /obj/item/vending_refill/coffee
default_price = 45
extra_price = 150
payment_department = ACCOUNT_SRV
/obj/item/vending_refill/coffee
machine_name = "Solar's Best Hot Drinks"
+3
View File
@@ -21,6 +21,9 @@
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull = 1,
/obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy = 1)
refill_canister = /obj/item/vending_refill/cola
default_price = 45
extra_price = 200
payment_department = ACCOUNT_SRV
/obj/item/vending_refill/cola
machine_name = "Robust Softdrinks"
+4
View File
@@ -29,6 +29,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/dinnerware
resistance_flags = FIRE_PROOF
default_price = 50
extra_price = 250
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/dinnerware
icon_state = "refill_cook"
+4 -1
View File
@@ -4,7 +4,6 @@
desc = "Everything you need for do-it-yourself station repair."
icon_state = "engi"
icon_deny = "engi-deny"
req_access = list(ACCESS_ENGINE_EQUIP)
products = list(/obj/item/clothing/under/rank/engineering/chief_engineer = 4,
/obj/item/clothing/under/rank/engineering/engineer = 4,
/obj/item/clothing/shoes/sneakers/orange = 4,
@@ -29,3 +28,7 @@
/obj/item/stock_parts/manipulator = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
default_price = 450
extra_price = 500
payment_department = ACCOUNT_ENG
cost_multiplier_per_dept = list(ACCOUNT_ENG = 0)
+4 -1
View File
@@ -3,7 +3,6 @@
desc = "Spare tool vending. What? Did you expect some witty description?"
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access = list(ACCESS_ENGINE_EQUIP)
products = list(/obj/item/clothing/glasses/meson/engine = 5,
/obj/item/clothing/glasses/welding = 5,
/obj/item/multitool = 5,
@@ -30,6 +29,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/engivend
resistance_flags = FIRE_PROOF
default_price = 450
extra_price = 500
payment_department = ACCOUNT_ENG
cost_multiplier_per_dept = list(ACCOUNT_ENG = 0)
/obj/item/vending_refill/engivend
icon_state = "refill_engi"
+4
View File
@@ -11,6 +11,10 @@
premium = list(/obj/item/melee/skateboard/pro = 3,
/obj/item/melee/skateboard/hoverboard = 1)
refill_canister = /obj/item/vending_refill/games
default_price = 50
extra_price = 250
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/games
machine_name = "\improper Good Clean Fun"
+3
View File
@@ -40,6 +40,9 @@
/obj/item/clothing/under/pants/chaps = 5
)
refill_canister = /obj/item/vending_refill/kink
default_price = 80
extra_price = 250
payment_department = NO_FREEBIES
/obj/item/vending_refill/kink
machine_name = "KinkMate"
+3
View File
@@ -28,3 +28,6 @@
/obj/item/reagent_containers/food/snacks/burger/superbite = 3) //U S A
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
default_price = 150
extra_price = 500
payment_department = ACCOUNT_SEC
+7
View File
@@ -25,3 +25,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
default_price = 150
extra_price = 300
payment_department = NO_FREEBIES
/obj/machinery/vending/toyliberationstation/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_SYNDICATE]" = 0)
+3
View File
@@ -16,3 +16,6 @@
contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "magic" = 100)
resistance_flags = FIRE_PROOF
default_price = 250
extra_price = 500
payment_department = ACCOUNT_SRV
+9 -2
View File
@@ -4,7 +4,6 @@
icon_state = "med"
icon_deny = "med-deny"
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?;Ping!"
req_access = list(ACCESS_MEDICAL)
products = list(/obj/item/reagent_containers/syringe = 12,
/obj/item/reagent_containers/dropper = 3,
/obj/item/healthanalyzer = 4,
@@ -47,6 +46,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/medical
default_price = 200
extra_price = 250
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/medical
machine_name = "NanoMed Plus"
@@ -54,4 +57,8 @@
/obj/machinery/vending/medical/syndicate_access
name = "\improper SyndiMed Plus"
req_access = list(ACCESS_SYNDICATE)
payment_department = NO_FREEBIES
/obj/machinery/vending/medical/syndicate_access/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_SYNDICATE]" = 0)
+4
View File
@@ -18,6 +18,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/wallmed
default_price = 0
extra_price = 100
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/wallmed
machine_name = "NanoMed"
+4
View File
@@ -57,6 +57,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/hydroseeds
resistance_flags = FIRE_PROOF
default_price = 100
extra_price = 350
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/hydroseeds
icon_state = "refill_hydro"
+4
View File
@@ -19,6 +19,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/hydronutrients
resistance_flags = FIRE_PROOF
default_price = 100
extra_price = 250
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/hydronutrients
icon_state = "refill_hydro"
+4
View File
@@ -11,3 +11,7 @@
/obj/item/assembly/prox_sensor = 6,
/obj/item/assembly/igniter = 6)
contraband = list(/obj/item/assembly/health = 3)
default_price = 400
extra_price = 600
payment_department = ACCOUNT_SCI
cost_multiplier_per_dept = list(ACCOUNT_SCI = 0)
+3 -1
View File
@@ -4,7 +4,6 @@
desc = "All the tools you need to create your own robot army."
icon_state = "robotics"
icon_deny = "robotics-deny"
req_access = list(ACCESS_ROBOTICS)
products = list(/obj/item/clothing/suit/toggle/labcoat = 4,
/obj/item/clothing/under/rank/rnd/roboticist = 4,
/obj/item/stack/cable_coil = 4,
@@ -21,3 +20,6 @@
/obj/item/crowbar = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
default_price = 600
payment_department = ACCOUNT_SCI
cost_multiplier_per_dept = list(ACCOUNT_SCI = 0)
+4 -1
View File
@@ -4,7 +4,6 @@
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"
icon_deny = "sec-deny"
req_access = list(ACCESS_SECURITY)
products = list(/obj/item/restraints/handcuffs = 8,
/obj/item/restraints/handcuffs/cable/zipties = 10,
/obj/item/grenade/flashbang = 4,
@@ -26,6 +25,10 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/security
default_price = 650
extra_price = 700
payment_department = ACCOUNT_SEC
cost_multiplier_per_dept = list(ACCOUNT_SEC = 0)
/obj/machinery/vending/security/pre_throw(obj/item/I)
if(istype(I, /obj/item/grenade))
+6 -67
View File
@@ -26,77 +26,16 @@
/obj/item/storage/box/donkpockets = 2)
refill_canister = /obj/item/vending_refill/snack
var/chef_compartment_access = "28" //ACCESS_KITCHEN
canload_access_list = list(ACCESS_KITCHEN)
default_price = 60
extra_price = 160
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
input_display_header = "Chef's Food Selection"
/obj/item/vending_refill/snack
machine_name = "Getmore Chocolate Corp"
/obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/food/snacks))
if(!compartment_access_check(user))
return
var/obj/item/reagent_containers/food/snacks/S = W
if(!S.junkiness)
if(!iscompartmentfull(user))
if(!user.transferItemToLoc(W, src))
return
food_load(W)
to_chat(user, "<span class='notice'>You insert [W] into [src]'s chef compartment.</span>")
else
to_chat(user, "<span class='notice'>[src]'s chef compartment does not accept junk food.</span>")
else if(istype(W, /obj/item/storage/bag/tray))
if(!compartment_access_check(user))
return
var/obj/item/storage/T = W
var/loaded = 0
var/denied_items = 0
for(var/obj/item/reagent_containers/food/snacks/S in T.contents)
if(iscompartmentfull(user))
break
if(!S.junkiness)
SEND_SIGNAL(T, COMSIG_TRY_STORAGE_TAKE, S, src, TRUE)
food_load(S)
loaded++
else
denied_items++
if(denied_items)
to_chat(user, "<span class='notice'>[src] refuses some items.</span>")
if(loaded)
to_chat(user, "<span class='notice'>You insert [loaded] dishes into [src]'s chef compartment.</span>")
updateUsrDialog()
return
else
return ..()
/obj/machinery/vending/snack/Destroy()
for(var/obj/item/reagent_containers/food/snacks/S in contents)
S.forceMove(get_turf(src))
return ..()
/obj/machinery/vending/snack/proc/compartment_access_check(user)
req_access_txt = chef_compartment_access
if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id)
to_chat(user, "<span class='warning'>[src]'s chef compartment blinks red: Access denied.</span>")
req_access_txt = "0"
return 0
req_access_txt = "0"
return 1
/obj/machinery/vending/snack/proc/iscompartmentfull(mob/user)
if(contents.len >= 30) // no more than 30 dishes can fit inside
to_chat(user, "<span class='warning'>[src]'s chef compartment is full.</span>")
return 1
return 0
/obj/machinery/vending/snack/proc/food_load(obj/item/reagent_containers/food/snacks/S)
if(dish_quants[S.name])
dish_quants[S.name]++
else
dish_quants[S.name] = 1
sortList(dish_quants)
/obj/machinery/vending/snack/random
name = "\improper Random Snackies"
icon_state = "random_snack"
+3
View File
@@ -7,3 +7,6 @@
contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
default_price = 1
extra_price = 1
payment_department = NO_FREEBIES
+3
View File
@@ -23,6 +23,9 @@
premium = list()
refill_canister = /obj/item/vending_refill/soviet
default_price = 1
extra_price = 1
payment_department = NO_FREEBIES
/obj/item/vending_refill/soviet
machine_name = "sovietvend"
+3
View File
@@ -14,6 +14,9 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
refill_canister = /obj/item/vending_refill/sustenance
resistance_flags = FIRE_PROOF
default_price = 0
extra_price = 0
payment_department = NO_FREEBIES
/obj/item/vending_refill/sustenance
icon_state = "refill_cook"
+3
View File
@@ -25,6 +25,9 @@
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
default_price = 150
extra_price = 300
payment_department = ACCOUNT_SRV
/obj/item/vending_refill/donksoft
machine_name = "Donksoft Toy Vendor"
+48 -1
View File
@@ -1,6 +1,15 @@
/obj/item/vending_refill/wardrobe
icon_state = "refill_clothes"
/obj/machinery/vending/wardrobe
default_price = 350
extra_price = 400
payment_department = NO_FREEBIES
input_display_header = "Returned Clothing"
/obj/machinery/vending/wardrobe/canLoadItem(obj/item/I,mob/user)
return (I.type in products)
/obj/machinery/vending/wardrobe/sec_wardrobe
name = "\improper SecDrobe"
desc = "A vending machine for security and security-related clothing!"
@@ -22,6 +31,8 @@
premium = list(/obj/item/clothing/under/rank/security/officer/formal = 5,
/obj/item/clothing/head/beret/sec/navyofficer = 5)
refill_canister = /obj/item/vending_refill/wardrobe/sec_wardrobe
payment_department = ACCOUNT_SEC
cost_multiplier_per_dept = list(ACCOUNT_SEC = 0)
/obj/item/vending_refill/wardrobe/sec_wardrobe
machine_name = "SecDrobe"
@@ -57,6 +68,8 @@
/obj/item/clothing/suit/apron/surgical = 5,
/obj/item/clothing/mask/surgical = 5)
refill_canister = /obj/item/vending_refill/wardrobe/medi_wardrobe
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/wardrobe/medi_wardrobe
machine_name = "MediDrobe"
@@ -80,6 +93,8 @@
/obj/item/clothing/head/hardhat = 5,
/obj/item/clothing/head/hardhat/weldhat = 3)
refill_canister = /obj/item/vending_refill/wardrobe/engi_wardrobe
payment_department = ACCOUNT_ENG
cost_multiplier_per_dept = list(ACCOUNT_ENG = 0)
/obj/item/vending_refill/wardrobe/engi_wardrobe
machine_name = "EngiDrobe"
@@ -101,6 +116,8 @@
/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt = 5,
/obj/item/clothing/shoes/sneakers/black = 5)
refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe
payment_department = ACCOUNT_ENG
cost_multiplier_per_dept = list(ACCOUNT_ENG = 0)
/obj/item/vending_refill/wardrobe/atmos_wardrobe
machine_name = "AtmosDrobe"
@@ -119,6 +136,8 @@
/obj/item/clothing/head/soft = 5,
/obj/item/radio/headset/headset_cargo = 3)
refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe
payment_department = ACCOUNT_CAR
cost_multiplier_per_dept = list(ACCOUNT_CAR = 0)
/obj/item/vending_refill/wardrobe/cargo_wardrobe
machine_name = "CargoDrobe"
@@ -141,6 +160,8 @@
/obj/item/clothing/mask/bandana/skull = 2)
contraband = list(/obj/item/clothing/suit/hooded/techpriest = 2)
refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe
payment_department = ACCOUNT_SCI
cost_multiplier_per_dept = list(ACCOUNT_SCI = 0)
/obj/item/vending_refill/wardrobe/robo_wardrobe
machine_name = "RoboDrobe"
@@ -163,6 +184,8 @@
/obj/item/radio/headset/headset_sci = 4,
/obj/item/clothing/mask/gas = 5)
refill_canister = /obj/item/vending_refill/wardrobe/science_wardrobe
payment_department = ACCOUNT_SCI
cost_multiplier_per_dept = list(ACCOUNT_SCI = 0)
/obj/item/vending_refill/wardrobe/science_wardrobe
machine_name = "SciDrobe"
@@ -182,6 +205,8 @@
/obj/item/clothing/under/rank/civilian/hydroponics/skirt = 5,
/obj/item/clothing/mask/bandana = 4)
refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/wardrobe/hydro_wardrobe
machine_name = "HyDrobe"
@@ -206,6 +231,8 @@
/obj/item/clothing/glasses/regular/jamjar = 1,
/obj/item/storage/bag/books = 1)
refill_canister = /obj/item/vending_refill/wardrobe/curator_wardrobe
payment_department = ACCOUNT_CIV
cost_multiplier_per_dept = list(ACCOUNT_CIV = 0)
/obj/item/vending_refill/wardrobe/curator_wardrobe
machine_name = "CuraDrobe"
@@ -234,6 +261,8 @@
/obj/item/clothing/neck/petcollar = 3,
/obj/item/storage/belt/bandolier = 1)
refill_canister = /obj/item/vending_refill/wardrobe/bar_wardrobe
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/wardrobe/bar_wardrobe
machine_name = "BarDrobe"
@@ -259,6 +288,8 @@
/obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2,
/obj/item/book/granter/crafting_recipe/coldcooking = 2)
refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/wardrobe/chef_wardrobe
machine_name = "ChefDrobe"
@@ -290,6 +321,8 @@
/obj/item/screwdriver = 2,
/obj/item/stack/cable_coil/random = 4)
refill_canister = /obj/item/vending_refill/wardrobe/jani_wardrobe
payment_department = ACCOUNT_SRV
cost_multiplier_per_dept = list(ACCOUNT_SRV = 0)
/obj/item/vending_refill/wardrobe/jani_wardrobe
machine_name = "JaniDrobe"
@@ -321,6 +354,8 @@
/obj/item/clothing/shoes/laceup = 3,
/obj/item/clothing/accessory/lawyers_badge = 3)
refill_canister = /obj/item/vending_refill/wardrobe/law_wardrobe
payment_department = ACCOUNT_CIV
cost_multiplier_per_dept = list(ACCOUNT_CIV = 0)
/obj/item/vending_refill/wardrobe/law_wardrobe
machine_name = "LawDrobe"
@@ -347,6 +382,8 @@
premium = list(/obj/item/toy/plush/plushvar = 1,
/obj/item/toy/plush/narplush = 1)
refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe
payment_department = ACCOUNT_CIV
cost_multiplier_per_dept = list(ACCOUNT_CIV = 0)
/obj/item/vending_refill/wardrobe/chap_wardrobe
machine_name = "ChapDrobe"
@@ -368,6 +405,8 @@
/obj/item/storage/bag/chemistry = 3,
/obj/item/fermichem/pHbooklet = 3)//pH indicator)
refill_canister = /obj/item/vending_refill/wardrobe/chem_wardrobe
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/wardrobe/chem_wardrobe
machine_name = "ChemDrobe"
@@ -386,6 +425,8 @@
/obj/item/storage/backpack/genetics = 3,
/obj/item/storage/backpack/satchel/gen = 3)
refill_canister = /obj/item/vending_refill/wardrobe/gene_wardrobe
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/wardrobe/gene_wardrobe
machine_name = "GeneDrobe"
@@ -406,6 +447,8 @@
/obj/item/storage/backpack/virology = 3,
/obj/item/storage/backpack/satchel/vir = 3)
refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe
payment_department = ACCOUNT_MED
cost_multiplier_per_dept = list(ACCOUNT_MED = 0)
/obj/item/vending_refill/wardrobe/viro_wardrobe
machine_name = "ViroDrobe"
@@ -416,7 +459,6 @@
icon_state = "capsdrobe"
icon_deny = "capsdrobe-deny"
product_ads = "Only the greatest for a commander such as ours."
req_access = list(ACCESS_CAPTAIN)
vend_reply = "A wonderful day to you, great leader."
products = list(/obj/item/clothing/suit/hooded/wintercoat/captain = 1,
/obj/item/storage/backpack/captain = 1,
@@ -436,6 +478,11 @@
/obj/item/clothing/glasses/sunglasses/gar/supergar = 1,
/obj/item/clothing/gloves/color/captain = 1)
refill_canister = /obj/item/vending_refill/wardrobe/cap_wardrobe
payment_department = ACCOUNT_CIV
/obj/machinery/vending/wardrobe/cap_wardrobe/Initialize()
. = ..()
cost_multiplier_per_dept = list("[ACCESS_CAPTAIN]" = 0)
/obj/item/vending_refill/wardrobe/cap_wardrobe
machine_name = "Captain's Wardrobe"
+6 -1
View File
@@ -15,12 +15,17 @@
/obj/item/flashlight/glowstick/red = 6,
/obj/item/flashlight = 7)
contraband = list(/obj/item/weldingtool/largetank = 4,
/obj/item/clothing/gloves/color/fyellow = 4)
/obj/item/clothing/gloves/color/fyellow = 4,
/obj/item/multitool = 2)
premium = list(/obj/item/clothing/gloves/color/yellow = 2,
/obj/item/weldingtool/hugetank = 2)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
refill_canister = /obj/item/vending_refill/tool
resistance_flags = FIRE_PROOF
default_price = 50
extra_price = 300
payment_department = ACCOUNT_ENG
cost_multiplier_per_dept = list(ACCOUNT_ENG = 0)
/obj/item/vending_refill/tool
icon_state = "refill_engi"