From c3388020ff9a8fcd43fd0350a6cbf4f061a8f360 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 2 Mar 2015 02:25:32 +0000 Subject: [PATCH] Reagent dispenser rework --- baystation12.dme | 6 + code/datums/supplypacks.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 3 + code/modules/reagents/Chemistry-Machinery.dm | 241 ----------------- code/modules/reagents/dispenser/_defines.dm | 8 + code/modules/reagents/dispenser/cartridge.dm | 90 +++++++ .../reagents/dispenser/cartridge_presets.dm | 94 +++++++ code/modules/reagents/dispenser/dispenser2.dm | 175 +++++++++++++ .../reagents/dispenser/dispenser_presets.dm | 115 +++++++++ code/modules/reagents/dispenser/supply.dm | 242 ++++++++++++++++++ .../reagents/reagent_containers/glass.dm | 2 +- icons/obj/chemical.dmi | Bin 33054 -> 33635 bytes maps/exodus-1.dmm | 12 +- maps/exodus-2.dmm | 18 +- maps/exodus-5.dmm | 2 +- .../{chem_dispenser.tmpl => chem_disp.tmpl} | 41 ++- 16 files changed, 766 insertions(+), 285 deletions(-) create mode 100644 code/modules/reagents/dispenser/_defines.dm create mode 100644 code/modules/reagents/dispenser/cartridge.dm create mode 100644 code/modules/reagents/dispenser/cartridge_presets.dm create mode 100644 code/modules/reagents/dispenser/dispenser2.dm create mode 100644 code/modules/reagents/dispenser/dispenser_presets.dm create mode 100644 code/modules/reagents/dispenser/supply.dm rename nano/templates/{chem_dispenser.tmpl => chem_disp.tmpl} (74%) diff --git a/baystation12.dme b/baystation12.dme index a8ceac79f0e..afe8ed029b4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1389,6 +1389,12 @@ #include "code\modules\reagents\Chemistry-Recipes.dm" #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" +#include "code\modules\reagents\dispenser\_defines.dm" +#include "code\modules\reagents\dispenser\cartridge.dm" +#include "code\modules\reagents\dispenser\cartridge_presets.dm" +#include "code\modules\reagents\dispenser\dispenser2.dm" +#include "code\modules\reagents\dispenser\dispenser_presets.dm" +#include "code\modules\reagents\dispenser\supply.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\borghydro.dm" #include "code\modules\reagents\reagent_containers\dropper.dm" diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 9beb08adc22..42303df6053 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -5,7 +5,7 @@ //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. //NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. -var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Atmospherics","Medical","Science","Hydroponics", "Supply", "Miscellaneous") +var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Atmospherics","Medical","Reagents","Reagent Cartridges","Science","Hydroponics", "Supply", "Miscellaneous") /datum/supply_packs var/name = null diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 2ec920b390e..46415bb8af7 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -47,6 +47,9 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ new/datum/stack_recipe("plastic knife", /obj/item/weapon/kitchen/utensil/pknife, 1, on_floor = 1), \ new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \ new/datum/stack_recipe("blood pack", /obj/item/weapon/reagent_containers/blood/empty, 4, on_floor = 0), \ + new/datum/stack_recipe("reagent dispenser cartridge (large)", /obj/item/weapon/reagent_containers/chem_disp_cartridge, 5, on_floor=0), // 500u + new/datum/stack_recipe("reagent dispenser cartridge (med)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium, 3, on_floor=0), // 250u + new/datum/stack_recipe("reagent dispenser cartridge (small)", /obj/item/weapon/reagent_containers/chem_disp_cartridge/small, 1, on_floor=0) // 100u ) var/global/list/datum/stack_recipe/iron_recipes = list ( \ diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 8d3f0016cf7..c90aad7425a 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -2,251 +2,10 @@ #define LIQUID 2 #define GAS 3 -#define CHEM_DISPENSER_ENERGY_COST 0.1 //How many energy points do we use per unit of chemical? #define BOTTLE_SPRITES list("bottle-1", "bottle-2", "bottle-3", "bottle-4") //list of available bottle sprites #define REAGENTS_PER_SHEET 20 -/obj/machinery/chem_dispenser - name = "chem dispenser" - density = 1 - anchored = 1 - icon = 'icons/obj/chemical.dmi' - icon_state = "dispenser" - use_power = 0 - idle_power_usage = 40 - var/ui_title = "Chem Dispenser 5000" - var/energy = 100 - var/max_energy = 100 - var/amount = 30 - var/accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname. - var/atom/beaker = null - var/recharged = 0 - var/hackedcheck = 0 - var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", - "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","radium","water","ethanol","sugar","sacid","tungsten") -/obj/machinery/chem_dispenser/proc/recharge() - if(stat & (BROKEN|NOPOWER)) return - var/addenergy = 1 - var/oldenergy = energy - energy = min(energy + addenergy, max_energy) - if(energy != oldenergy) - use_power(CHEM_SYNTH_ENERGY / CHEM_DISPENSER_ENERGY_COST) // This thing uses up "alot" of power (this is still low as shit for creating reagents from thin air) - nanomanager.update_uis(src) // update all UIs attached to src - -/obj/machinery/chem_dispenser/power_change() - ..() - nanomanager.update_uis(src) // update all UIs attached to src - -/obj/machinery/chem_dispenser/process() - if(recharged <= 0) - recharge() - recharged = 15 - else - recharged -= 1 - -/obj/machinery/chem_dispenser/New() - ..() - recharge() - dispensable_reagents = sortList(dispensable_reagents) - - -/obj/machinery/chem_dispenser/ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - if (prob(50)) - del(src) - return - -/obj/machinery/chem_dispenser/blob_act() - if (prob(50)) - del(src) - -/obj/machinery/chem_dispenser/meteorhit() - del(src) - return - - /** - * The ui_interact proc is used to open and update Nano UIs - * If ui_interact is not used then the UI will not update correctly - * ui_interact is currently defined for /atom/movable - * - * @param user /mob The mob who is interacting with this ui - * @param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") - * - * @return nothing - */ -/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1) - if(stat & (BROKEN|NOPOWER)) return - if(user.stat || user.restrained()) return - - // this is the data which will be sent to the ui - var/data[0] - data["amount"] = amount - data["energy"] = round(energy) - data["maxEnergy"] = round(max_energy) - data["isBeakerLoaded"] = beaker ? 1 : 0 - data["glass"] = accept_glass - var beakerContents[0] - var beakerCurrentVolume = 0 - if(beaker && beaker:reagents && beaker:reagents.reagent_list.len) - for(var/datum/reagent/R in beaker:reagents.reagent_list) - beakerContents.Add(list(list("name" = R.name, "volume" = R.volume))) // list in a list because Byond merges the first list... - beakerCurrentVolume += R.volume - data["beakerContents"] = beakerContents - - if (beaker) - data["beakerCurrentVolume"] = beakerCurrentVolume - data["beakerMaxVolume"] = beaker:volume - else - data["beakerCurrentVolume"] = null - data["beakerMaxVolume"] = null - - var chemicals[0] - for (var/re in dispensable_reagents) - var/datum/reagent/temp = chemical_reagents_list[re] - if(temp) - chemicals.Add(list(list("title" = temp.name, "id" = temp.id, "commands" = list("dispense" = temp.id)))) // list in a list because Byond merges the first list... - data["chemicals"] = chemicals - - // update the ui if it exists, returns null if no ui is passed/found - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - // the ui does not exist, so we'll create a new() one - // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 390, 655) - // when the ui is first opened this is the data it will use - ui.set_initial_data(data) - // open the new ui window - ui.open() - -/obj/machinery/chem_dispenser/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) - return 0 // don't update UIs attached to this object - - if(href_list["amount"]) - amount = round(text2num(href_list["amount"]), 5) // round to nearest 5 - if (amount < 0) // Since the user can actually type the commands himself, some sanity checking - amount = 0 - if (amount > 120) - amount = 120 - - if(href_list["dispense"]) - if (dispensable_reagents.Find(href_list["dispense"]) && beaker != null && beaker.is_open_container()) - var/obj/item/weapon/reagent_containers/B = src.beaker - var/datum/reagents/R = B.reagents - var/space = R.maximum_volume - R.total_volume - - //uses 1 energy per 10 units. - var/added_amount = min(amount, energy / CHEM_DISPENSER_ENERGY_COST, space) - R.add_reagent(href_list["dispense"], added_amount) - energy = max(energy - added_amount * CHEM_DISPENSER_ENERGY_COST, 0) - - if(href_list["ejectBeaker"]) - if(beaker) - var/obj/item/weapon/reagent_containers/B = beaker - B.loc = loc - beaker = null - - add_fingerprint(usr) - return 1 // update UIs attached to this object - -/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/reagent_containers/B as obj, var/mob/user as mob) - if(isrobot(user)) - return - if(src.beaker) - user << "Something is already loaded into the machine." - return - if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food)) - if(!accept_glass && istype(B,/obj/item/weapon/reagent_containers/food)) - user << "This machine only accepts beakers" - src.beaker = B - user.drop_item() - B.loc = src - user << "You set [B] on the machine." - nanomanager.update_uis(src) // update all UIs attached to src - return - -/obj/machinery/chem_dispenser/attack_ai(mob/user as mob) - return src.attack_hand(user) - -/obj/machinery/chem_dispenser/attack_hand(mob/user as mob) - if(stat & BROKEN) - return - ui_interact(user) - -/obj/machinery/chem_dispenser/soda - icon_state = "soda_dispenser" - name = "soda fountain" - desc = "A drink fabricating machine, capable of producing many sugary drinks with just one touch." - ui_title = "Soda Dispens-o-matic" - energy = 100 - accept_glass = 1 - max_energy = 100 - dispensable_reagents = list("water","ice","coffee","cream","tea","icetea","cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime","sugar","orangejuice","limejuice","watermelonjuice") - -/obj/machinery/chem_dispenser/soda/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) - ..() - if(istype(B, /obj/item/device/multitool)) - if(hackedcheck == 0) - user << "You change the mode from 'McNano' to 'Pizza King'." - dispensable_reagents += list("thirteenloko","grapesoda") - hackedcheck = 1 - return - - else - user << "You change the mode from 'Pizza King' to 'McNano'." - dispensable_reagents -= list("thirteenloko","grapesoda") - hackedcheck = 0 - return - -/obj/machinery/chem_dispenser/beer - icon_state = "booze_dispenser" - name = "booze dispenser" - ui_title = "Booze Portal 9001" - energy = 100 - accept_glass = 1 - max_energy = 100 - desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." - dispensable_reagents = list("lemon_lime","sugar","orangejuice","limejuice","sodawater","tonic","beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead") - -/obj/machinery/chem_dispenser/beer/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob) - ..() - - if(istype(B, /obj/item/device/multitool)) - if(hackedcheck == 0) - user << "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." - dispensable_reagents += list("goldschlager","patron","watermelonjuice","berryjuice") - hackedcheck = 1 - return - - else - user << "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." - dispensable_reagents -= list("goldschlager","patron","watermelonjuice","berryjuice") - hackedcheck = 0 - return - -/obj/machinery/chem_dispenser/meds - name = "chem dispenser magic" - density = 1 - anchored = 1 - icon = 'icons/obj/chemical.dmi' - icon_state = "dispenser" - use_power = 0 - idle_power_usage = 40 - ui_title = "Chem Dispenser 9000" - energy = 100 - max_energy = 100 - amount = 30 - accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname. - beaker = null - recharged = 0 - hackedcheck = 0 - dispensable_reagents = list("inaprovaline","ryetalyn","paracetamol","tramadol","oxycodone","sterilizine","leporazine","kelotane","dermaline","dexalin","dexalinp","tricordrazine","anti_toxin","synaptizine","hyronalin","arithrazine","alkysine","imidazoline","peridaxon","bicaridine","hyperzine","rezadone","spaceacillin","ethylredoxrazine","stoxin","chloralhydrate","cryoxadone","clonexadone") ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/dispenser/_defines.dm b/code/modules/reagents/dispenser/_defines.dm new file mode 100644 index 00000000000..60c12cdba66 --- /dev/null +++ b/code/modules/reagents/dispenser/_defines.dm @@ -0,0 +1,8 @@ +#define CARTRIDGE_VOLUME_LARGE 500 +#define CARTRIDGE_VOLUME_MEDIUM 250 +#define CARTRIDGE_VOLUME_SMALL 100 + +// Chemistry dispenser starts with 21 +// ERT dispenser starts with 28 +#define DISPENSER_MAX_CARTRIDGES 30 + diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/dispenser/cartridge.dm new file mode 100644 index 00000000000..eca2d3bc713 --- /dev/null +++ b/code/modules/reagents/dispenser/cartridge.dm @@ -0,0 +1,90 @@ +/obj/item/weapon/reagent_containers/chem_disp_cartridge + name = "chemical dispenser cartridge" + desc = "This goes in a chemical dispenser." + icon_state = "cartridge" + + w_class = 3 + + volume = CARTRIDGE_VOLUME_LARGE + amount_per_transfer_from_this = 50 + // Large, but inaccurate. Use a chem dispenser or beaker for accuracy. + possible_transfer_amounts = list(50, 100) + + New() + ..() + if(spawn_reagent) + reagents.add_reagent(spawn_reagent, volume) + var/datum/reagent/R = chemical_reagents_list[spawn_reagent] + setLabel(R.name) + + var/spawn_reagent = null + var/label = "" + + examine(mob/user) + ..() + user << "It has a capacity of [volume] units." + if(reagents.total_volume <= 0) + user << "It is empty." + else + user << "It contains [reagents.total_volume] units of liquid." + if(!is_open_container()) + user << "The cap is sealed." + + verb/setLabel(L as text) + set name = "Set Cartridge Label" + set category = "Object" + set src in view(usr, 1) + if(L) + if(usr) + usr << "You set the label on \the [src] to '[L]'." + + label = L + name = "[initial(name)] - '[L]'" + else + if(usr) + usr << "You clear the label on \the [src]." + label = "" + name = initial(name) + + attack_self() + ..() + if (is_open_container()) + usr << "You put the cap on \the [src]." + flags ^= OPENCONTAINER + else + usr << "You take the cap off \the [src]." + flags |= OPENCONTAINER + + afterattack(obj/target, mob/user , flag) + if (!is_open_container() || !flag) + return + + else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us. + target.add_fingerprint(user) + + if(!target.reagents.total_volume && target.reagents) + user << "\The [target] is empty." + return + + if(reagents.total_volume >= reagents.maximum_volume) + user << "\The [src] is full." + return + + var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this) + user << "You fill \the [src] with [trans] units of the contents of \the [target]." + + else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it. + + if(!reagents.total_volume) + user << "\The [src] is empty." + return + + if(target.reagents.total_volume >= target.reagents.maximum_volume) + user << "\The [target] is full." + return + + var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + user << "You transfer [trans] units of the solution to \the [target]." + + else + return ..() \ No newline at end of file diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm new file mode 100644 index 00000000000..007660c1e9a --- /dev/null +++ b/code/modules/reagents/dispenser/cartridge_presets.dm @@ -0,0 +1,94 @@ +/obj/item/weapon/reagent_containers/chem_disp_cartridge + small + volume = CARTRIDGE_VOLUME_SMALL + + medium + volume = CARTRIDGE_VOLUME_MEDIUM + + // Multiple + water spawn_reagent = "water" + sugar spawn_reagent = "sugar" + + // Chemistry + hydrogen spawn_reagent = "hydrogen" + lithium spawn_reagent = "lithium" + carbon spawn_reagent = "carbon" + nitrogen spawn_reagent = "nitrogen" + oxygen spawn_reagent = "oxygen" + fluorine spawn_reagent = "fluorine" + sodium spawn_reagent = "sodium" + aluminum spawn_reagent = "aluminum" + silicon spawn_reagent = "silicon" + phosphorus spawn_reagent = "phosphorus" + sulfur spawn_reagent = "sulfur" + chlorine spawn_reagent = "chlorine" + potassium spawn_reagent = "potassium" + iron spawn_reagent = "iron" + copper spawn_reagent = "copper" + mercury spawn_reagent = "mercury" + radium spawn_reagent = "radium" + ethanol spawn_reagent = "ethanol" + sacid spawn_reagent = "sacid" + tungsten spawn_reagent = "tungsten" + + // Bar, alcoholic + beer spawn_reagent = "beer" + kahlua spawn_reagent = "kahlua" + whiskey spawn_reagent = "whiskey" + wine spawn_reagent = "wine" + vodka spawn_reagent = "vodka" + gin spawn_reagent = "gin" + rum spawn_reagent = "rum" + tequila spawn_reagent = "tequilla" + vermouth spawn_reagent = "vermouth" + cognac spawn_reagent = "cognac" + ale spawn_reagent = "ale" + mead spawn_reagent = "mead" + + // Bar, soft + ice spawn_reagent = "ice" + coffee spawn_reagent = "coffee" + cream spawn_reagent = "cream" + tea spawn_reagent = "tea" + icetea spawn_reagent = "icetea" + cola spawn_reagent = "cola" + smw spawn_reagent = "spacemountainwind" + dr_gibb spawn_reagent = "dr_gibb" + spaceup spawn_reagent = "space_up" + tonic spawn_reagent = "tonic" + sodawater spawn_reagent = "sodawater" + lemon_lime spawn_reagent = "lemon_lime" + orange spawn_reagent = "orangejuice" + lime spawn_reagent = "limejuice" + watermelon spawn_reagent = "watermelonjuice" + + // ERT + inaprov spawn_reagent = "inaprovaline" + ryetalyn spawn_reagent = "ryetalyn" + paracetamol spawn_reagent = "paracetamol" + tramadol spawn_reagent = "tramadol" + oxycodone spawn_reagent = "oxycodone" + sterilizine spawn_reagent = "sterilizine" + leporazine spawn_reagent = "leporazine" + kelotane spawn_reagent = "kelotane" + dermaline spawn_reagent = "dermaline" + dexalin spawn_reagent = "dexalin" + dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin + dexalin_p spawn_reagent = "dexalinp" + tricord spawn_reagent = "tricordrazine" + dylovene spawn_reagent = "anti_toxin" + synaptizine spawn_reagent = "synaptizine" + hyronalin spawn_reagent = "hyronalin" + arithrazine spawn_reagent = "arithrazine" + alkysine spawn_reagent = "alkysine" + imidazoline spawn_reagent = "imidazoline" + peridaxon spawn_reagent = "peridaxon" + bicaridine spawn_reagent = "bicaridine" + hyperzine spawn_reagent = "hyperzine" + rezadone spawn_reagent = "rezadone" + spaceacillin spawn_reagent = "spaceacillin" + ethylredox spawn_reagent = "ethylredoxrazine" + sleeptox spawn_reagent = "stoxin" + chloral spawn_reagent = "chloralhydrate" + cryoxadone spawn_reagent = "cryoxadone" + clonexadone spawn_reagent = "clonexadone" diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm new file mode 100644 index 00000000000..4b4a3f93014 --- /dev/null +++ b/code/modules/reagents/dispenser/dispenser2.dm @@ -0,0 +1,175 @@ +/obj/machinery/chemical_dispenser + name = "chemical dispenser" + icon = 'icons/obj/chemical.dmi' + icon_state = "dispenser" + + var/list/spawn_cartridges = null // Set to a list of types to spawn one of each on New() + + var/list/cartridges = list() // Associative, label -> cartridge + var/obj/item/weapon/reagent_containers/container = null + + var/ui_title = "Chemical Dispenser" + + var/accept_drinking = 0 + var/amount = 30 + + use_power = 1 + idle_power_usage = 100 + density = 1 + anchored = 1 + + New() + ..() + + if(spawn_cartridges) + for(var/type in spawn_cartridges) + add_cartridge(new type(src)) + + examine(mob/user) + ..() + user << "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more." + + proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user) + if(!istype(C)) + if(user) + user << "\The [C] will not fit in \the [src]!" + return + + if(cartridges.len >= DISPENSER_MAX_CARTRIDGES) + if(user) + user << "\The [src] does not have any slots open for \the [C] to fit into!" + return + + if(!C.label) + if(user) + user << "\The [C] does not have a label!" + return + + if(cartridges[C.label]) + if(user) + user << "\The [src] already contains a cartridge with that label!" + return + + if(user) + user.drop_from_inventory(C) + user << "You add \the [C] to \the [src]." + + C.loc = src + cartridges[C.label] = C + cartridges = sortAssoc(cartridges) + nanomanager.update_uis(src) + + proc/remove_cartridge(label) + . = cartridges[label] + cartridges -= label + nanomanager.update_uis(src) + + attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "You begin to [anchored ? "un" : ""]fasten \the [src]." + if (do_after(user, 20)) + user.visible_message( + "\The [user] [anchored ? "un" : ""]fastens \the [src].", + "You have [anchored ? "un" : ""]fastened \the [src].", + "You hear a ratchet.") + anchored = !anchored + else + user << "You decide not to [anchored ? "un" : ""]fasten \the [src]." + + else if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge)) + add_cartridge(W, user) + + else if(istype(W, /obj/item/weapon/screwdriver)) + var/label = input(user, "Which cartridge would you like to remove?", "Chemical Dispenser") as null|anything in cartridges + if(!label) return + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label) + if(C) + user << "You remove \the [C] from \the [src]." + C.loc = loc + + else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food)) + var/obj/item/weapon/reagent_containers/RC = W + + if(!accept_drinking && istype(RC,/obj/item/weapon/reagent_containers/food)) + user << "This machine only accepts beakers!" + return + + if(!RC.is_open_container()) + user << "You don't see how \the [src] could dispense reagents into \the [RC]." + return + + container = RC + user.drop_from_inventory(RC) + RC.loc = src + user << "You set \the [RC] on \the [src]." + nanomanager.update_uis(src) // update all UIs attached to src + + else + return ..() + + ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1) + if(stat & (BROKEN|NOPOWER)) return + if(user.stat || user.restrained()) return + + // this is the data which will be sent to the ui + var/data[0] + data["amount"] = amount + data["isBeakerLoaded"] = container ? 1 : 0 + data["glass"] = accept_drinking + var beakerD[0] + if(container && container.reagents && container.reagents.reagent_list.len) + for(var/datum/reagent/R in container.reagents.reagent_list) + beakerD[++beakerD.len] = list("name" = R.name, "volume" = R.volume) + data["beakerContents"] = beakerD + + if(container) + data["beakerCurrentVolume"] = container.reagents.total_volume + data["beakerMaxVolume"] = container.reagents.maximum_volume + else + data["beakerCurrentVolume"] = null + data["beakerMaxVolume"] = null + + var chemicals[0] + for(var/label in cartridges) + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + chemicals[++chemicals.len] = list("label" = label, "amount" = C.reagents.total_volume) + data["chemicals"] = chemicals + + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "chem_disp.tmpl", ui_title, 390, 680) + ui.set_initial_data(data) + ui.open() + + Topic(href, href_list) + if(stat & (NOPOWER|BROKEN)) + return 0 // don't update UIs attached to this object + + if(href_list["amount"]) + amount = round(text2num(href_list["amount"]), 1) // round to nearest 1 + amount = max(0, min(120, amount)) // Since the user can actually type the commands himself, some sanity checking + + else if(href_list["dispense"]) + var/label = href_list["dispense"] + if(cartridges[label] && container && container.is_open_container()) + var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = cartridges[label] + C.reagents.trans_to(container, amount) + + else if(href_list["ejectBeaker"]) + if(container) + var/obj/item/weapon/reagent_containers/B = container + B.loc = loc + container = null + + add_fingerprint(usr) + return 1 // update UIs attached to this object + + attack_ai(mob/user as mob) + src.attack_hand(user) + + attack_hand(mob/user as mob) + if(stat & BROKEN) + return + ui_interact(user) \ No newline at end of file diff --git a/code/modules/reagents/dispenser/dispenser_presets.dm b/code/modules/reagents/dispenser/dispenser_presets.dm new file mode 100644 index 00000000000..60d30506920 --- /dev/null +++ b/code/modules/reagents/dispenser/dispenser_presets.dm @@ -0,0 +1,115 @@ +/obj/machinery/chemical_dispenser/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten + ) + +/obj/machinery/chemical_dispenser/ert + name = "medicine dispenser" + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ryetalyn, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/paracetamol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxycodone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sterilizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/leporazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dermaline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin_p, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/synaptizine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyronalin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/arithrazine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/alkysine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/imidazoline, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/peridaxon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hyperzine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rezadone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sleeptox, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chloral, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cryoxadone, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/clonexadone + ) + +/obj/machinery/chemical_dispenser/bar_soft + name = "soft drink dispenser" + desc = "A soda machine." + icon_state = "soda_dispenser" + ui_title = "Soda Dispenser" + accept_drinking = 1 + +/obj/machinery/chemical_dispenser/bar_soft/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon + ) + +/obj/machinery/chemical_dispenser/bar_alc + name = "booze dispenser" + desc = "A beer machine. Like a soda machine, but more fun!" + icon_state = "booze_dispenser" + ui_title = "Booze Dispenser" + accept_drinking = 1 + +/obj/machinery/chemical_dispenser/bar_alc/full + spawn_cartridges = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead + ) diff --git a/code/modules/reagents/dispenser/supply.dm b/code/modules/reagents/dispenser/supply.dm new file mode 100644 index 00000000000..b8ee0d21f01 --- /dev/null +++ b/code/modules/reagents/dispenser/supply.dm @@ -0,0 +1,242 @@ +/datum/supply_packs/chemistry_dispenser + name = "Reagent dispenser" + contains = list( + /obj/machinery/chemical_dispenser{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "reagent dispenser crate" + group = "Reagents" + +/datum/supply_packs/beer_dispenser + name = "Booze dispenser" + contains = list( + /obj/machinery/chemical_dispenser/bar_alc{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "booze dispenser crate" + group = "Reagents" + +/datum/supply_packs/soda_dispenser + name = "Soda dispenser" + contains = list( + /obj/machinery/chemical_dispenser/bar_soft{anchored = 0} + ) + cost = 25 + containertype = /obj/structure/largecrate + containername = "soda dispenser crate" + group = "Reagents" + +/datum/supply_packs/reagents + name = "Chemistry dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten + ) + cost = 150 + containertype = /obj/structure/closet/crate/secure + containername = "chemical crate" + access = list(access_chemistry) + group = "Reagents" + +/datum/supply_packs/alcohol_reagents + name = "Bar alcoholic dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead + ) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "alcoholic drinks crate" + access = list(access_bar) + group = "Reagents" + +/datum/supply_packs/softdrink_reagents + name = "Bar soft drink dispenser refill" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cream, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon + ) + cost = 50 + containertype = /obj/structure/closet/crate + containername = "soft drinks crate" + group = "Reagents" + +/datum/supply_packs/medicine_reagents + name = "Medicine dispenser cartridges" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin/small, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, + /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox + ) + cost = 300 + containertype = /obj/structure/closet/crate/secure + containername = "medicine crate" + access = list(access_chemistry) + group = "Reagents" + +/datum/supply_packs/dispenser_cartridges + name = "Empty dispenser cartridges" + contains = list( + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge, + /obj/item/weapon/reagent_containers/chem_disp_cartridge + ) + cost = 15 + containertype = /obj/structure/closet/crate + containername = "dispenser cartridge crate" + group = "Reagents" + +#define SEC_PACK(_tname, _type, _name, _cname, _cost, _access)\ + /datum/supply_packs/dispenser_cartridges{\ + _tname {\ + name = _name ;\ + containername = _cname ;\ + containertype = /obj/structure/closet/crate/secure;\ + access = list( _access );\ + cost = _cost ;\ + contains = list( _type , _type );\ + group = "Reagent Cartridges"\ + }\ + } +#define PACK(_tname, _type, _name, _cname, _cost)\ + /datum/supply_packs/dispenser_cartridges{\ + _tname {\ + name = _name ;\ + containername = _cname ;\ + containertype = /obj/structure/closet/crate/secure;\ + cost = _cost ;\ + contains = list( _type , _type );\ + group = "Reagent Cartridges"\ + }\ + } + +// Chemistry-restricted (raw reagents excluding sugar/water) +// Datum path Contents type Supply pack name Container name Cost Container access +SEC_PACK(hydrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/hydrogen, "Reagent refill - Hydrogen", "hydrogen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(lithium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lithium, "Reagent refill - Lithium", "lithium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(carbon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/carbon, "Reagent refill - Carbon", "carbon reagent cartridge crate", 15, access_chemistry) +SEC_PACK(nitrogen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/nitrogen, "Reagent refill - Nitrogen", "nitrogen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(oxygen, /obj/item/weapon/reagent_containers/chem_disp_cartridge/oxygen, "Reagent refill - Oxygen", "oxygen reagent cartridge crate", 15, access_chemistry) +SEC_PACK(fluorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/fluorine, "Reagent refill - Fluorine", "fluorine reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sodium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodium, "Reagent refill - Sodium", "sodium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(aluminium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/aluminum, "Reagent refill - Aluminum", "aluminum reagent cartridge crate", 15, access_chemistry) +SEC_PACK(silicon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/silicon, "Reagent refill - Silicon", "silicon reagent cartridge crate", 15, access_chemistry) +SEC_PACK(phosphorus,/obj/item/weapon/reagent_containers/chem_disp_cartridge/phosphorus, "Reagent refill - Phosphorus", "phosphorus reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sulfur, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sulfur, "Reagent refill - Sulfur", "sulfur reagent cartridge crate", 15, access_chemistry) +SEC_PACK(chlorine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/chlorine, "Reagent refill - Chlorine", "chlorine reagent cartridge crate", 15, access_chemistry) +SEC_PACK(potassium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/potassium, "Reagent refill - Potassium", "potassium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(iron, /obj/item/weapon/reagent_containers/chem_disp_cartridge/iron, "Reagent refill - Iron", "iron reagent cartridge crate", 15, access_chemistry) +SEC_PACK(copper, /obj/item/weapon/reagent_containers/chem_disp_cartridge/copper, "Reagent refill - Copper", "copper reagent cartridge crate", 15, access_chemistry) +SEC_PACK(mercury, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mercury, "Reagent refill - Mercury", "mercury reagent cartridge crate", 15, access_chemistry) +SEC_PACK(radium, /obj/item/weapon/reagent_containers/chem_disp_cartridge/radium, "Reagent refill - Radium", "radium reagent cartridge crate", 15, access_chemistry) +SEC_PACK(ethanol, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol, "Reagent refill - Ethanol", "ethanol reagent cartridge crate", 15, access_chemistry) +SEC_PACK(sacid, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sacid, "Reagent refill - Sulfuric Acid", "sulfuric acid reagent cartridge crate", 15, access_chemistry) +SEC_PACK(tungsten, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tungsten, "Reagent refill - Tungsten", "tungsten reagent cartridge crate", 15, access_chemistry) + +// Medical-restricted (medicines) +// Datum path Contents type Supply pack name Container name Cost Container access +SEC_PACK(inaprov, /obj/item/weapon/reagent_containers/chem_disp_cartridge/inaprov, "Reagent cartridge - Inaprovaline", "inaprovaline reagent cartridge crate", 100, access_medical) +SEC_PACK(tramadol, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tramadol, "Reagent cartridge - Tramadol", "tramadol reagent cartridge crate", 100, access_medical) +SEC_PACK(kelotane, /obj/item/weapon/reagent_containers/chem_disp_cartridge/kelotane, "Reagent cartridge - Kelotane", "kelotane reagent cartridge crate", 100, access_medical) +SEC_PACK(dexalin_s, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dexalin/small, "Reagent cartridge - Dexalin", "dexalin reagent cartridge crate", 100, access_medical) +SEC_PACK(tricord, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tricord, "Reagent cartridge - Tricordrazine", "tricordrazine reagent cartridge crate", 100, access_medical) +SEC_PACK(dylovene, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dylovene, "Reagent cartridge - Dylovene", "dylovene reagent cartridge crate", 100, access_medical) +SEC_PACK(bicaridine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/bicaridine, "Reagent cartridge - Bicaridine", "bicaridine reagent cartridge crate", 100, access_medical) +SEC_PACK(spaceacillin, /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceacillin, "Reagent cartridge - Spaceacillin", "spaceacillin reagent cartridge crate", 100, access_medical) +SEC_PACK(ethylredox, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ethylredox, "Reagent cartridge - Ethylredoxrazine", "ethylredoxrazine reagent cartridge crate", 100, access_medical) + +// Bar-restricted (alcoholic drinks) +// Datum path Contents type Supply pack name Container name Cost Container access +SEC_PACK(beer, /obj/item/weapon/reagent_containers/chem_disp_cartridge/beer, "Reagent refill - Beer", "beer reagent cartridge crate", 15, access_bar) +SEC_PACK(kahlua, /obj/item/weapon/reagent_containers/chem_disp_cartridge/kahlua, "Reagent refill - Kahlua", "kahlua reagent cartridge crate", 15, access_bar) +SEC_PACK(whiskey, /obj/item/weapon/reagent_containers/chem_disp_cartridge/whiskey, "Reagent refill - Whiskey", "whiskey reagent cartridge crate", 15, access_bar) +SEC_PACK(wine, /obj/item/weapon/reagent_containers/chem_disp_cartridge/wine, "Reagent refill - Wine", "wine reagent cartridge crate", 15, access_bar) +SEC_PACK(vodka, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vodka, "Reagent refill - Vodka", "vodka reagent cartridge crate", 15, access_bar) +SEC_PACK(gin, /obj/item/weapon/reagent_containers/chem_disp_cartridge/gin, "Reagent refill - Gin", "gin reagent cartridge crate", 15, access_bar) +SEC_PACK(rum, /obj/item/weapon/reagent_containers/chem_disp_cartridge/rum, "Reagent refill - Rum", "rum reagent cartridge crate", 15, access_bar) +SEC_PACK(tequila, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tequila, "Reagent refill - Tequila", "tequila reagent cartridge crate", 15, access_bar) +SEC_PACK(vermouth, /obj/item/weapon/reagent_containers/chem_disp_cartridge/vermouth, "Reagent refill - Vermouth", "vermouth reagent cartridge crate", 15, access_bar) +SEC_PACK(cognac, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cognac, "Reagent refill - Cognac", "cognac reagent cartridge crate", 15, access_bar) +SEC_PACK(ale, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ale, "Reagent refill - Ale", "ale reagent cartridge crate", 15, access_bar) +SEC_PACK(mead, /obj/item/weapon/reagent_containers/chem_disp_cartridge/mead, "Reagent refill - Mead", "mead reagent cartridge crate", 15, access_bar) + +// Unrestricted (water, sugar, non-alcoholic drinks) +// Datum path Contents type Supply pack name Container name Cost +PACK(water, /obj/item/weapon/reagent_containers/chem_disp_cartridge/water, "Reagent refill - Water", "water reagent cartridge crate", 15) +PACK(sugar, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar, "Reagent refill - Sugar", "sugar reagent cartridge crate", 15) +PACK(ice, /obj/item/weapon/reagent_containers/chem_disp_cartridge/ice, "Reagent refill - Ice", "ice reagent cartridge crate", 15) +PACK(tea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tea, "Reagent refill - Tea", "tea reagent cartridge crate", 15) +PACK(icetea, /obj/item/weapon/reagent_containers/chem_disp_cartridge/icetea, "Reagent refill - Iced Tea", "iced tea reagent cartridge crate", 15) +PACK(cola, /obj/item/weapon/reagent_containers/chem_disp_cartridge/cola, "Reagent refill - Space Cola", "\improper Space Cola reagent cartridge crate", 15) +PACK(smw, /obj/item/weapon/reagent_containers/chem_disp_cartridge/smw, "Reagent refill - Space Mountain Wind", "\improper Space Mountain Wind reagent cartridge crate", 15) +PACK(dr_gibb, /obj/item/weapon/reagent_containers/chem_disp_cartridge/dr_gibb, "Reagent refill - Dr. Gibb", "\improper Dr. Gibb reagent cartridge crate", 15) +PACK(spaceup, /obj/item/weapon/reagent_containers/chem_disp_cartridge/spaceup, "Reagent refill - Space-Up", "\improper Space-Up reagent cartridge crate", 15) +PACK(tonic, /obj/item/weapon/reagent_containers/chem_disp_cartridge/tonic, "Reagent refill - Tonic Water", "tonic water reagent cartridge crate", 15) +PACK(sodawater, /obj/item/weapon/reagent_containers/chem_disp_cartridge/sodawater, "Reagent refill - Soda Water", "soda water reagent cartridge crate", 15) +PACK(lemon_lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon_lime, "Reagent refill - Lemon-Lime Juice", "lemon-lime juice reagent cartridge crate", 15) +PACK(orange, /obj/item/weapon/reagent_containers/chem_disp_cartridge/orange, "Reagent refill - Orange Juice", "orange juice reagent cartridge crate", 15) +PACK(lime, /obj/item/weapon/reagent_containers/chem_disp_cartridge/lime, "Reagent refill - Lime Juice", "lime juice reagent cartridge crate", 15) +PACK(watermelon, /obj/item/weapon/reagent_containers/chem_disp_cartridge/watermelon, "Reagent refill - Watermelon Juice", "watermelon juice reagent cartridge crate", 15) + +#undef SEC_PACK +#undef PACK diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index d49f8d1d2ad..789514eccec 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -18,7 +18,7 @@ var/list/can_be_placed_into = list( /obj/machinery/chem_master/, - /obj/machinery/chem_dispenser/, + /obj/machinery/chemical_dispenser, /obj/machinery/reagentgrinder, /obj/structure/table, /obj/structure/closet, diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 5fe976397d5260e41d3bb4b38c8b59432722c626..2b0f051bd20d4dcc29288b0af0afbe85965c4b0e 100644 GIT binary patch literal 33635 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 JN@>%O{{^_s<&ppZ literal 33054 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 diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 33b225b0058..313593f4b69 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -2093,8 +2093,8 @@ "aOm" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOn" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOo" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "bar"; name = "Bar Shutters"; pixel_y = 25; throw_range = 15},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aOp" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/chem_dispenser/soda{pixel_x = 2; pixel_y = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aOq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer{pixel_x = -2; pixel_y = 9},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aOp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aOq" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aOr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aOs" = (/mob/living/carbon/monkey{name = "Pun Pun"; icon_state = "punpun1"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aOt" = (/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) @@ -2595,7 +2595,7 @@ "aXU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "aXV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aXW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) -"aXX" = (/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"aXX" = (/obj/structure/table,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "aXY" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aXZ" = (/obj/structure/table,/obj/item/weapon/book/manual/chef_recipes,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aYa" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) @@ -3372,7 +3372,7 @@ "bmR" = (/obj/structure/table/woodentable,/obj/item/device/eftpos{eftpos_name = "Captain EFTPOS scanner"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmS" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/chainofcommand,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bmT" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bmU" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bmU" = (/obj/machinery/chemical_dispenser/full,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmV" = (/obj/machinery/camera{c_tag = "Chemistry"; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 30},/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmW" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bmX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) @@ -5705,7 +5705,7 @@ "cfK" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfM" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant{icon_state = "plant-20"; tag = "icon-plant-22"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cfN" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfN" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfO" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfP" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cfQ" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) @@ -7437,7 +7437,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaT aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaGLaFlaGLaIxaGLaIyaGLaFlaGMaGNaGOaDPaFFaIAaIAaFGaICaIDaICaIAaIAaIEaIFaFCaGQaFHaGWaGVaFCaIKaILaIMaFLaFLaINaFLaIOaIPaIKaCMaaaaBYaBYaIQaIRaIQaBYaBYaaaazJazOazPaISaITaIUaFTaIVazPaIWaIXayLaIYazTaIZaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbaECaCuaCuaCuaCuaCuaHRaGCaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpaJsaJtaGsaGsaDqaJvaDsaDsaJwaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZaHTaHSaHWaHUaHYaIaaIaaIaaJjaIbaIgaJIaJJaJKaJLaJMaJNaIgaJOaJPaGFaJQaJRaJSaJTbinaJUaIoaJVaJkaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaIzaIHaIGaIJaIIaJZaJYaJAaKaaFCaIKaKmaKnaKoaKpaIKaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaKxaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTaKHaKIaKJaKKaKLaJeaEDaKNaKOaKPaEEaKRaaaaaaaJlaKSaJGawnaJlaKVaJnaJnaJnaKWaJnaJnaJnaBjaDpaKXaDpaDpaDpaDpaKYaDpaKZaLaaLbaLcaLdaLeaLfaLgaLhaLfaLfaLfaLfaLfaLiaLfaLfaLfaLfaLfaLfaLfaLfaJHaIgaLjaLkaLlaEFaLnaLoaIgaLpaJWaGFaLraLsaLtaJTaRraJUaIoaJVaIoaLvaLwaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaFlaFlaFlaLAaFlaFlaLBaFlaFlaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuaLYaKuaKuaLZaMaaLZaJeaJeaMbaMcaJeaJeaJeaJeaMdaMeaKTaKbaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaLqaKUaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaMvaMwaMxaMyaMzaKZaMAaMBaMCaMCaMDaLfaMEaMFaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaJHaIgaMPaMQaMRaMSaMTaMUaIgaMVaMWaMXaMYaMZaNaaNbaGFaGGaNcaJVaIoaNdaNeaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaNjaNjaNkaNjaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNAaNBaNzaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaNPaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaMgaMfaOhaOiaOjaOkaOlaOmaOnaJlaOoaOpaOqaOraOsaOtaOuaOvaOwaOxaKZaOyaOzaOAaOAaOBaLfaOCaODaOEaOEaOEaOEaOFaOGaOHaOIaOJaOKaOKaOLaOMaLfaJHaIgaONaOOaOPaOQaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaNjaNjaNkaNjaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNAaNBaNzaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaNPaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaMgaMfaOhaOiaOjaOkaOlaOmaOnaJlaOoaOqaOpaOraOsaOtaOuaOvaOwaOxaKZaOyaOzaOAaOAaOBaLfaOCaODaOEaOEaOEaOEaOFaOGaOHaOIaOJaOKaOKaOLaOMaLfaJHaIgaONaOOaOPaOQaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOXaOYaOZaPaaPaaPaaPaaPbaOYaOXaaaaBIaPcaPdaPeaMraMqaPhaPhaPiaIAaPjaNnaPkaPlaPmaPnaPoaPpaPqaPqaPraPsaPsaPsaPtaPuaPuaPvaPwaNIaPqaPqaPxaPyaPzaPAaPBaPBaPCaPBaPDaPyaPyaPyaPEaPFaPGaPHaMkaPIaPJaPJaPJaPJaPJaPJaPJaPJaPKaPJaPLaPMaPNaPOaPPaPQaPRaPSaPTaPJaPUaPJaPVaPWaPXaPWaPWaPWaPWaPWaPWaPYaPZaRsaQbaQbaQbaQcaQbaQbaQdaQeaQfaQgaKZaQhaMCaQiaQjaQkaLfaQlaQmaQnaQnaQnaQnaQnaQoaQpaOfaQraQnaQnaQsaQtaLfaJHaIgaQuaONaONaQvaONaQwaIgaGFaGFaGFaGFaGFaGFaQxaGFaIoaIoaJVaIoaQyaQzaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaQEaQFaQGaGOaQCaQHaQIaBIaQJaLEaPeaOgaQLaPhaPhaPiaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaQTaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaRbaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaImawOawOawOawOawOaItaRuaRvaRwaKZaKZaKZaKZaKZaRxaLfaRyaQmaQnaRzaRAaRBaPfaRDaREaRFaQraRGaRHaRIaRJaLfaJHaIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiaGfaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaSlaSlaNkaSlaNlaIAaSmaNnaSnaIAaLKaLKaSoaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKaStaLKaNraQPaSuaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeasfasNarVarXarXavParXarXarVasNawFaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaSOaSPaSPaSPaSPaSPaSPaSQaSRaSSaSTaSUaSVaSWaSXaSYaKZaKZaSZaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaJHaIgaThaONaRLaRMaONaONaTiaIgaTjaTkaTlaGGaIoaTmaTnaToaTpaTqaIoaTraTsaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 443ae9f66f0..9102d56d7c0 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -682,7 +682,7 @@ "nf" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "ng" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "nh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"ni" = (/obj/structure/table,/obj/machinery/chem_dispenser/soda{pixel_x = 2; pixel_y = 6},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"ni" = (/obj/machinery/chemical_dispenser/full,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "nj" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nk" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nl" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -973,7 +973,7 @@ "sK" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sL" = (/obj/machinery/vending/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) "sM" = (/obj/machinery/chem_master,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"sN" = (/obj/machinery/chem_dispenser,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"sN" = (/obj/structure/table,/obj/machinery/chemical_dispenser/bar_soft/full{pixel_x = 2; pixel_y = 6},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "sO" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/living) "sP" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/living) "sQ" = (/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/living) @@ -1271,7 +1271,7 @@ "yw" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/evac) "yx" = (/obj/structure/table/rack,/obj/item/weapon/rig/merc/empty,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "yy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control) -"yz" = (/obj/machinery/chem_dispenser/meds,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"yz" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yA" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "yB" = (/obj/structure/table/rack,/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "yC" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) @@ -1575,8 +1575,8 @@ "Eo" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/obj/item/weapon/inflatable_duck,/turf/unsimulated/floor{tag = "icon-siding4"; name = "plating"; icon_state = "siding4"},/area/centcom/holding) "Ep" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Eq" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/glass/rag,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) -"Er" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chem_dispenser/beer,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) -"Es" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chem_dispenser/soda,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) +"Er" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) +"Es" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "Et" = (/turf/unsimulated/floor{dir = 8; icon_state = "whitegreen"},/area/centcom/holding) "Eu" = (/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet5-1"; dir = 4},/area/holodeck/source_courtroom) "Ev" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor{icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_courtroom) @@ -1803,7 +1803,7 @@ "II" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/space) "IJ" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/space) "IK" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/space) -"IL" = (/obj/structure/table/woodentable,/obj/machinery/chem_dispenser/soda,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"IL" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "IM" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/cultpack,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "IN" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) "IO" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station) @@ -2137,7 +2137,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmXmxmxmxmxmOaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMihihmWmWmYihihmumumumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMihmWmWmWihmumumumumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmZnananbihihncihihihihihihihmumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMnvrPrIrIrIrBnzaMaMndnenfngnenenerlihninjnknlihmumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMmumumumumumuaMaMaMaMaMaMaMaMaMaMnvrPrIrIrIrBnzaMaMndnenfngnenenerlihsNnjnknlihmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMmumumumumuaMaMaMaMaMaMaMaMaMnvnHnInJnKnLnMnHnzaMndnenmnmnenenenennnonononpihmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMmumumumuaMaMaMaMaMaMaMaMaMnHnQnRnRnSnRnRnLnHaMndnqnrnsntneneneihnonononuihihihihihmumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMnHnZnRnRnRnRoanLnHaMndnenAnAnenenepaihnCnonDnEihbLkQbOihmumumumumumumumumumu @@ -2164,7 +2164,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqGqfrUrJrJrJrJpepBpBpBpBpBpepBrVrWpeoVpFqopUpUqpqvqvqvqvqvqvqvqvqvpFrLrXrYrYpFpFrZpFpZqzqXqYqYqYqYsaqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsWsXsYnHaMnHsZsZsZnHaMnHnLtatbnHaMaMaMaMaMaMaMmAaMmBaMmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUqRpepesgshshshpepBpNsipNpBpQpBsjskpeoVpFpFpFpFpFpFpFslpFpFpFqvqvqvsmrLsnsnrLrLrLrLrYpZqzqXqYqYqYqYqYrOpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsZsZsZnHaMomtmtntoooaMnHsZsZsZnHaMaMaMaMaMaMaMmAmBmBmBmBmBmumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVqRperJrJrJrJpepBsipNsipBpeqSpepeqHoVpFsxsyszpFsAsBsBsBsCpFqvqvqvqvrLrLrLrLsDrLrLrYpZqzqXqYqYqYqYsEsFpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMomtmtntoooaMaMaMaMaMaMaMomtmtntoooaMaMaMaMaMaMaMmAaMmBaMmBaMaMmumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVqRpesLsMsNpepBpBpBpBpBpepepeqHoVoVpFsOsPsQsRsBsBsBsBsSpFqvqvqvsmsTrLrLrLsUrLrLsVpZqzqXqYqYqYqYqYqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVqRpesLsMnipepBpBpBpBpBpepepeqHoVoVpFsOsPsQsRsBsBsBsBsSpFqvqvqvsmsTrLrLrLsUrLrLsVpZqzqXqYqYqYqYqYqXpZqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVqRpepepepepepepepepepeqHoVoVoVoVpFpFtctdpFpFpFtctetdpFqvqvqvpFtftgtgtgtgtgthpFpZqztitjqYqYqYtktlqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoToUoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVpFtptptptptptptptptppFpFtqpFpFtptptptptptptppFpZqztrtstttttttstuqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMoNtvoNoNoNoNoNoNoNoNoNoNoNoNtwtwtwtwtwtwtwtwtwtwtwtwtxtxtxtxtxtxtxpFtytztypFtxtxtxtxtxtxtxtxpZqzqztAtBtBtBtCqzqAqBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmumumumumumumumumumumu @@ -2206,7 +2206,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDFDgDgDgDsDaCPCPCPNyCPCPCPCPCPDGDHDHDHDHDHDHCNCNCNCNCNDIDICNCNCNCNCABRBRBRBRBRBSEAACNNATzSzTNMzSzTATNNACBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDgDLDgDMDsDiDNDODlCPDmDPDQDlCPDGDRDSDSDSDSDSCNDTDTDTNDDVDVDWDXDXCNBGBGBGBGyuaMaMAtNENFAtNHNIEaNKNJAtNLNGAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHEcDgDgEdDgDsDiEeEfDlCPDmEgEhDlCPDGDSDSDSDSDSDSCNEiEjEjElDVDVDVDXDXCNyuyuyuyuyuaMaMAtNXNYAtNWNVEaEaNUAtNTNSAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHNODgDgDgDgEoDaCPCPCPCPCPCPCPCPCPDGDSDSEpEqErEsCNEtDVDVDVEwExDVDVEyCNaMaMaMaMaMaMaMEAEBEBAtNQEaNREbNPAtEBEBBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHNODgDgDgDgEoDaCPCPCPCPCPCPCPCPCPDGDSDSEpEqEsErCNEtDVDVDVEwExDVDVEyCNaMaMaMaMaMaMaMEAEBEBAtNQEaNREbNPAtEBEBBVaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgECNuDrEDEEEFEGEGEGEHEHEHEIEJEKELEMEHEHEHCNCNCNNvDVDVEwEPEQExERESCNaMaMaMaMaMaMaMETEVEVBVDYDZEaNtNsEAEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHDgDgDgEDEXEYEZEZEZEZEHFaFbFcFdFeFfFgFbFaEHCNCNCNCNCNCNNrFiNqFkERESCNaMaMaMaMaMaMaMaMaMaMETATEUEUEUATEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHFlDgEDEXEYEYEZEZEZEZEHFbFmFnFdFeFfFnFoFbEHFpFqFrFsFtCNDVFhFkDVDVEwFuaMaMaMaMaMaMaMaMaMaMaMETEVEVEVEWaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 83cd7aedc11..c75c4422636 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -45,7 +45,7 @@ "aS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/outpost/abandoned) "aT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/analysis) "aU" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) -"aV" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) +"aV" = (/obj/machinery/chemical_dispenser/full,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "aW" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor{icon_state = "dark"},/area/outpost/research/analysis) "aX" = (/obj/structure/cable/blue,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen) "aY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway) diff --git a/nano/templates/chem_dispenser.tmpl b/nano/templates/chem_disp.tmpl similarity index 74% rename from nano/templates/chem_dispenser.tmpl rename to nano/templates/chem_disp.tmpl index c19167afe93..eaacb6a1dd5 100644 --- a/nano/templates/chem_dispenser.tmpl +++ b/nano/templates/chem_disp.tmpl @@ -2,15 +2,6 @@ Title: Chem Dispenser 5000 UI Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm --> -
-
- Energy: -
-
- {{:helper.displayBar(data.energy, 0, data.maxEnergy, 'good', data.energy + ' Units')}} -
-
-
Dispense: @@ -21,24 +12,24 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm {{:helper.link('20', 'gear', {'amount' : 20}, (data.amount == 20) ? 'selected' : null)}} {{:helper.link('30', 'gear', {'amount' : 30}, (data.amount == 30) ? 'selected' : null)}} {{:helper.link('40', 'gear', {'amount' : 40}, (data.amount == 40) ? 'selected' : null)}} +

+ {{:helper.link('--', '', {'amount' : data.amount-10})}} + {{:helper.link('-', '', {'amount' : data.amount-1})}} +
{{:data.amount}}
+ {{:helper.link('+', '', {'amount' : data.amount+1})}} + {{:helper.link('++', '', {'amount' : data.amount+10})}}
 
-
-
- {{if data.glass}} - Drink Dispenser - {{else}} - Chemical Dispenser - {{/if}} -
-
- {{for data.chemicals}} - {{:helper.link(value.title, 'circle-arrow-s', value.commands, null, data.glass ? 'fixedLeftWide' : 'fixedLeft')}} - {{/for}} - + {{if data.chemicals.length}} + {{for data.chemicals}} + {{:helper.link(value.label + " ("+value.amount+")", 'circle-arrow-s', {"dispense":value.label}, null, 'fixedLeftWide')}} + {{/for}} + {{else}} + No cartridges installed! + {{/if}}
 
@@ -67,8 +58,7 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm Glass {{else}} Beaker - {{/if}} - is empty + {{/if}} is empty {{/for}} {{else}} @@ -78,8 +68,7 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm Glass {{else}} Beaker - {{/if}} - loaded + {{/if}} loaded {{/if}}