diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 0976ed5ea3..f1de2ddd45 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -49,3 +49,11 @@ var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglyce var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate. var/list/heartstopper = list("potassium_chlorophoride", "zombie_powder") // This stops the heart. var/list/cheartstopper = list("potassium_chloride") // This stops the heart when overdose is met. -- c = conditional + +#define MAX_PILL_SPRITE 24 //max icon state of the pill sprites +#define MAX_BOTTLE_SPRITE 4 //max icon state of the pill sprites +#define MAX_MULTI_AMOUNT 20 // Max number of pills/patches that can be made at once +#define MAX_UNITS_PER_PILL 60 // Max amount of units in a pill +#define MAX_UNITS_PER_PATCH 60 // Max amount of units in a patch +#define MAX_UNITS_PER_BOTTLE 60 // Max amount of units in a bottle (it's volume) +#define MAX_CUSTOM_NAME_LEN 64 // Max length of a custom pill/condiment/whatever \ No newline at end of file diff --git a/code/controllers/subsystems/chemistry.dm b/code/controllers/subsystems/chemistry.dm new file mode 100644 index 0000000000..148e975542 --- /dev/null +++ b/code/controllers/subsystems/chemistry.dm @@ -0,0 +1,58 @@ +SUBSYSTEM_DEF(chemistry) + name = "Chemistry" + wait = 20 + flags = SS_NO_FIRE + init_order = INIT_ORDER_CHEMISTRY + + var/list/chemical_reactions = list() + var/list/instant_reactions_by_reagent = list() + var/list/distilled_reactions_by_reagent = list() +// var/list/fusion_reactions_by_reagent = list() // TODO: Fusion reactions as chemical reactions + var/list/chemical_reagents = list() + +/datum/controller/subsystem/chemistry/Recover() + log_debug("[name] subsystem Recover().") + chemical_reactions = SSchemistry.chemical_reactions + chemical_reagents = SSchemistry.chemical_reagents + +/datum/controller/subsystem/chemistry/Initialize() + initialize_chemical_reagents() + initialize_chemical_reactions() + ..() + +/datum/controller/subsystem/chemistry/stat_entry() + ..("C: [chemical_reagents.len] | R: [chemical_reactions.len]") + +//Chemical Reactions - Initialises all /decl/chemical_reaction into a list +// It is filtered into multiple lists within a list. +// For example: +// chemical_reactions_by_reagent["phoron"] is a list of all reactions relating to phoron +// Note that entries in the list are NOT duplicated. So if a reaction pertains to +// more than one chemical it will still only appear in only one of the sublists. +/datum/controller/subsystem/chemistry/proc/initialize_chemical_reactions() + var/list/paths = decls_repository.get_decls_of_subtype(/decl/chemical_reaction) + + for(var/path in paths) + var/decl/chemical_reaction/D = paths[path] + chemical_reactions += D + if(D.required_reagents && D.required_reagents.len) + var/reagent_id = D.required_reagents[1] + + var/list/add_to = instant_reactions_by_reagent // Default to instant reactions list, if something's gone wrong +// if(istype(D, /decl/chemical_reaction/fusion)) // TODO: fusion reactions as chemical reactions +// add_to = fusion_reactions_by_reagent + if(istype(D, /decl/chemical_reaction/distilling)) + add_to = distilled_reactions_by_reagent + + LAZYINITLIST(add_to[reagent_id]) + add_to[reagent_id] += D + +//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id +/datum/controller/subsystem/chemistry/proc/initialize_chemical_reagents() + var/paths = subtypesof(/datum/reagent) + chemical_reagents = list() + for(var/path in paths) + var/datum/reagent/D = new path() + if(!D.name) + continue + chemical_reagents[D.id] = D diff --git a/code/controllers/subsystems/processing/chemistry.dm b/code/controllers/subsystems/processing/chemistry.dm deleted file mode 100644 index b4641ba7e0..0000000000 --- a/code/controllers/subsystems/processing/chemistry.dm +++ /dev/null @@ -1,54 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(chemistry) - name = "Chemistry" - wait = 20 - flags = SS_BACKGROUND|SS_POST_FIRE_TIMING - init_order = INIT_ORDER_CHEMISTRY - var/list/chemical_reactions = list() - var/list/chemical_reactions_by_reagent = list() - var/list/chemical_reagents = list() - -/datum/controller/subsystem/processing/chemistry/Recover() - log_debug("[name] subsystem Recover().") - if(SSchemistry.current_thing) - log_debug("current_thing was: (\ref[SSchemistry.current_thing])[SSchemistry.current_thing]([SSchemistry.current_thing.type]) - currentrun: [SSchemistry.currentrun.len] vs total: [SSchemistry.processing.len]") - var/list/old_processing = SSchemistry.processing.Copy() - for(var/datum/D in old_processing) - if(CHECK_BITFIELD(D.datum_flags, DF_ISPROCESSING)) - processing |= D - - chemical_reactions = SSchemistry.chemical_reactions - chemical_reagents = SSchemistry.chemical_reagents - -/datum/controller/subsystem/processing/chemistry/Initialize() - initialize_chemical_reactions() - initialize_chemical_reagents() - ..() - -//Chemical Reactions - Initialises all /datum/chemical_reaction into a list -// It is filtered into multiple lists within a list. -// For example: -// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron -// Note that entries in the list are NOT duplicated. So if a reaction pertains to -// more than one chemical it will still only appear in only one of the sublists. -/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reactions() - var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction - chemical_reactions = list() - chemical_reactions_by_reagent = list() - - for(var/path in paths) - var/datum/chemical_reaction/D = new path - chemical_reactions += D - if(D.required_reagents && D.required_reagents.len) - var/reagent_id = D.required_reagents[1] - LAZYINITLIST(chemical_reactions_by_reagent[reagent_id]) - chemical_reactions_by_reagent[reagent_id] += D - -//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id -/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reagents() - var/paths = typesof(/datum/reagent) - /datum/reagent - chemical_reagents = list() - for(var/path in paths) - var/datum/reagent/D = new path() - if(!D.name) - continue - chemical_reagents[D.id] = D diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index f295676402..0529f5aedd 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -247,11 +247,21 @@ /obj/item/clothing/suit/radiation = 3, /obj/item/clothing/head/radiation = 3 ) - name = "Radiation suits package" + name = "Radiation suits package (Humanoid)" cost = 20 containertype = /obj/structure/closet/radiation containername = "Radiation suit locker" +/datum/supply_pack/eng/radsuitteshari + contains = list( + /obj/item/clothing/suit/radiation/teshari = 3, + /obj/item/clothing/head/radiation/teshari = 3 + ) + name = "Radiation suits package (Teshari)" + cost = 40 + containertype = /obj/structure/closet/crate/aether + containername = "Teshari radiation suit locker" + /datum/supply_pack/eng/pacman_parts name = "P.A.C.M.A.N. portable generator parts" cost = 25 diff --git a/code/datums/uplink/visible_weapons_vr.dm b/code/datums/uplink/visible_weapons_vr.dm index d8df7d15eb..764e30b12f 100644 --- a/code/datums/uplink/visible_weapons_vr.dm +++ b/code/datums/uplink/visible_weapons_vr.dm @@ -2,11 +2,21 @@ * Highly Visible and Dangerous Weapons * ***************************************/ /datum/uplink_item/item/visible_weapons/holdout - name = "Holdout Phaser" + name = "Frontier Holdout" item_cost = 30 path = /obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked /datum/uplink_item/item/visible_weapons/frontier - name = "Frontier Carbine" + name = "Frontier Phaser" item_cost = 75 + path = /obj/item/weapon/gun/energy/locked/frontier/unlocked + +/datum/uplink_item/item/visible_weapons/carbine + name = "Frontier Carbine" + item_cost = 85 path = /obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked + +/datum/uplink_item/item/visible_weapons/rifle + name = "Frontier Marksman Rifle" + item_cost = 100 + path = /obj/item/weapon/gun/energy/locked/frontier/rifle/unlocked diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 98ad80e468..34d988e483 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -246,7 +246,7 @@ if(!R.cell) return - if(R.mob_size >= MOB_LARGE) + if(istype(R, /mob/living/silicon/robot/platform)) to_chat(R, SPAN_WARNING("You are too large to fit into \the [src].")) return diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 1183a21d19..e958abddfd 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -634,10 +634,6 @@ model_text = "Exploration" departments = list("Exploration","Expedition Medic","Old Exploration","No Change") -/obj/machinery/suit_cycler/exploration/Initialize() - species -= SPECIES_TESHARI - return ..() - /obj/machinery/suit_cycler/pilot name = "Pilot suit cycler" model_text = "Pilot" diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm index 7b9cc60617..e9beda6de1 100644 --- a/code/game/objects/random/_random.dm +++ b/code/game/objects/random/_random.dm @@ -9,25 +9,36 @@ // creates a new object and deletes itself /obj/random/Initialize() ..() - if (!prob(spawn_nothing_percentage)) - spawn_item() + if(!prob(spawn_nothing_percentage)) + try_spawn_item() return INITIALIZE_HINT_QDEL +/obj/random/proc/try_spawn_item() + var/atom/result = spawn_item() + if(istype(result) && !QDELETED(result)) + apply_adjustments(result) + else if(islist(result)) + for(var/atom/A in result) + if(!QDELETED(A)) + apply_adjustments(A) + // this function should return a specific item to spawn /obj/random/proc/item_to_spawn() - return 0 + return + +/obj/random/proc/apply_adjustments(atom/A) + if(istype(A)) + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.set_dir(dir) /obj/random/drop_location() - return drop_get_turf? get_turf(src) : ..() + return drop_get_turf ? get_turf(src) : ..() // creates the random item /obj/random/proc/spawn_item() var/build_path = item_to_spawn() - - var/atom/A = new build_path(drop_location()) - if(pixel_x || pixel_y) - A.pixel_x = pixel_x - A.pixel_y = pixel_y + return new build_path(drop_location()) var/list/random_junk_ var/list/random_useful_ @@ -82,7 +93,7 @@ var/list/random_useful_ /obj/random/multiple/spawn_item() var/list/things_to_make = item_to_spawn() for(var/new_type in things_to_make) - new new_type(src.loc) + LAZYADD(., new new_type(src.loc)) /* // Multi Point Spawn diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 4b6c275a1a..6be3942fd7 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -176,7 +176,6 @@ /obj/item/stack/marker_beacon/thirty, /obj/item/weapon/material/knife/tacknife/survival, /obj/item/weapon/material/knife/machete/deluxe, - /obj/item/weapon/gun/energy/locked/frontier/carbine, /obj/item/clothing/accessory/holster/machete, /obj/random/explorer_shield, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, diff --git a/code/modules/blob2/core_chunk.dm b/code/modules/blob2/core_chunk.dm index 4abc06843e..15db91e89e 100644 --- a/code/modules/blob2/core_chunk.dm +++ b/code/modules/blob2/core_chunk.dm @@ -118,19 +118,19 @@ return FALSE -/datum/chemical_reaction/blob_reconstitution +/decl/chemical_reaction/instant/blob_reconstitution name = "Hostile Blob Revival" id = "blob_revival" result = null required_reagents = list("phoron" = 60) result_amount = 1 -/datum/chemical_reaction/blob_reconstitution/can_happen(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/can_happen(var/datum/reagents/holder) if(holder.my_atom && istype(holder.my_atom, /obj/item/weapon/blobcore_chunk)) return ..() return FALSE -/datum/chemical_reaction/blob_reconstitution/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/on_reaction(var/datum/reagents/holder) var/obj/item/weapon/blobcore_chunk/chunk = holder.my_atom if(chunk.can_genesis && chunk.regen()) chunk.visible_message("[chunk] bubbles, surrounding itself with a rapidly expanding mass of [chunk.blob_type.name]!") @@ -138,14 +138,14 @@ else chunk.visible_message("[chunk] shifts strangely, but falls still.") -/datum/chemical_reaction/blob_reconstitution/domination +/decl/chemical_reaction/instant/blob_reconstitution/domination name = "Allied Blob Revival" id = "blob_friend" result = null required_reagents = list("hydrophoron" = 40, "peridaxon" = 20, "mutagen" = 20) result_amount = 1 -/datum/chemical_reaction/blob_reconstitution/domination/on_reaction(var/datum/reagents/holder) +/decl/chemical_reaction/instant/blob_reconstitution/domination/on_reaction(var/datum/reagents/holder) var/obj/item/weapon/blobcore_chunk/chunk = holder.my_atom if(chunk.can_genesis && chunk.regen("neutral")) chunk.visible_message("[chunk] bubbles, surrounding itself with a rapidly expanding mass of [chunk.blob_type.name]!") diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index c91b2314c8..48a28a9700 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -66,8 +66,10 @@ var/list/gear_datums = list() for(var/gear_name in gear_datums) var/datum/gear/G = gear_datums[gear_name] - if(G.whitelisted && !is_alien_whitelisted(preference_mob, GLOB.all_species[G.whitelisted])) - continue + //VOREStation Removal Start - No need for species-based whitelists for species clothes + //if(G.whitelisted && G.whitelisted != pref.species) + // continue + //VOREStation Removal End if(max_cost && G.cost > max_cost) continue //VOREStation Edit Start diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 0ecbe0390d..0dde614e04 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -78,7 +78,7 @@ * Radiation protection */ /obj/item/clothing/head/radiation - name = "Radiation Hood" + name = "Radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation" flags_inv = BLOCKHAIR @@ -98,4 +98,20 @@ slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER - item_flags = THICKMATERIAL \ No newline at end of file + item_flags = THICKMATERIAL + +/obj/item/clothing/suit/radiation/teshari + name = "Small radiation suit" + desc = "A specialist suit that protects against radiation, designed specifically for use by Teshari. Made to order by Aether." + icon = 'icons/obj/clothing/species/teshari/suits.dmi' + icon_override = 'icons/mob/species/teshari/suit.dmi' + icon_state = "rad_fitted" + species_restricted = list(SPECIES_TESHARI) + +/obj/item/clothing/head/radiation/teshari + name = "Small radiation hood" + desc = "A specialist hood with radiation protective properties, designed specifically for use by Teshari. Made to order by Aether." + icon = 'icons/obj/clothing/species/teshari/hats.dmi' + icon_override = 'icons/mob/species/teshari/head.dmi' + icon_state = "rad_fitted" + species_restricted = list(SPECIES_TESHARI) \ No newline at end of file diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm index 9e3fb438d8..839148ebaf 100644 --- a/code/modules/economy/price_list.dm +++ b/code/modules/economy/price_list.dm @@ -13,7 +13,7 @@ //---Beverages---// //***************// -/datum/reagent/var/price_tag = null +/datum/reagent/var/price_tag = 0 // Juices, soda and similar // diff --git a/code/modules/events/supply_demand_vr.dm b/code/modules/events/supply_demand_vr.dm index 6447630c9e..64d402c443 100644 --- a/code/modules/events/supply_demand_vr.dm +++ b/code/modules/events/supply_demand_vr.dm @@ -274,8 +274,7 @@ /datum/event/supply_demand/proc/choose_chemistry_items(var/differentTypes) // Checking if they show up in health analyzer is good huristic for it being a drug var/list/medicineReagents = list() - for(var/path in typesof(/datum/chemical_reaction) - /datum/chemical_reaction) - var/datum/chemical_reaction/CR = path // Stupid casting required for reading + for(var/decl/chemical_reaction/instant/CR in SSchemistry.chemical_reactions) var/datum/reagent/R = SSchemistry.chemical_reagents[initial(CR.result)] if(R && R.scannable) medicineReagents += R @@ -288,8 +287,7 @@ /datum/event/supply_demand/proc/choose_bar_items(var/differentTypes) var/list/drinkReagents = list() - for(var/path in typesof(/datum/chemical_reaction) - /datum/chemical_reaction) - var/datum/chemical_reaction/CR = path // Stupid casting required for reading + for(var/decl/chemical_reaction/instant/drinks/CR in SSchemistry.chemical_reactions) var/datum/reagent/R = SSchemistry.chemical_reagents[initial(CR.result)] if(istype(R, /datum/reagent/drink) || istype(R, /datum/reagent/ethanol)) drinkReagents += R diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm index 56d303371a..1f7beec6b9 100644 --- a/code/modules/food/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -341,20 +341,20 @@ . = ..() reagents.add_reagent("absinthe", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor - name = "Emeraldine Melon Liquor" +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor //MODIFIED ON 04/21/2021 + name = "Emeraldine Melon Liqueur" desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." - icon_state = "alco-green" //Placeholder. + icon_state = "melon_liqueur" center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/Initialize() . = ..() reagents.add_reagent("melonliquor", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao //MODIFIED ON 04/21/2021 name = "Miss Blue Curacao" desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." - icon_state = "alco-blue" //Placeholder. + icon_state = "blue_curacao" center_of_mass = list("x"=16, "y"=6) /obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/Initialize() @@ -371,36 +371,6 @@ . = ..() reagents.add_reagent("grenadine", 100) -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola - name = "\improper Space Cola" - desc = "Cola. in space" - icon_state = "colabottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize() - . = ..() - reagents.add_reagent("cola", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up - name = "\improper Space-Up" - desc = "Tastes like a hull breach in your mouth." - icon_state = "space-up_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() - . = ..() - reagents.add_reagent("space_up", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind - name = "\improper Space Mountain Wind" - desc = "Blows right through you like a space wind." - icon_state = "space_mountain_wind_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() - . = ..() - reagents.add_reagent("spacemountainwind", 100) - /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine name = "Warlock's Velvet" desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" @@ -421,7 +391,107 @@ . = ..() reagents.add_reagent("unathiliquor", 100) -//////////////////////////JUICES AND STUFF /////////////////////// +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake + name = "Mono-No-Aware Luxury Sake" + desc = "Dry alcohol made from rice, a favorite of businessmen." + icon_state = "sakebottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize() + . = ..() + reagents.add_reagent("sake", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne + name = "Gilthari Luxury Champagne" + desc = "For those special occassions." + icon_state = "champagne" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize() + . = ..() + reagents.add_reagent("champagne", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps + name = "Dr. Bone's Peppermint Schnapps" + desc = "A flavoured grain liqueur with a fresh, minty taste." + icon_state = "schnapps_pep" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pep", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps + name = "Dr. Bone's Peach Schnapps" + desc = "A flavoured grain liqueur with a fruity peach taste." + icon_state = "schnapps_pea" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_pea", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps + name = "Dr. Bone's Lemonade Schnapps" + desc = "A flavoured grain liqueur with a sweetish, lemon taste." + icon_state = "schnapps_lem" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps/Initialize() + . = ..() + reagents.add_reagent("schnapps_lem", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/jager + name = "Schusskonig" + desc = "A complex tasting digestif. Thank god the original's trademark lapsed." + icon_state = "jager_bottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/jager/Initialize() + . = ..() + reagents.add_reagent("jager", 100) + +//////////////////////////JUICES AND STUFF/////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space Cola" + desc = "Cola. In space." + icon_state = "colabottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize() + . = ..() + reagents.add_reagent("cola", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space-Up" + desc = "Tastes like a hull breach in your mouth." + icon_state = "space-up_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/Initialize() + . = ..() + reagents.add_reagent("space_up", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind //MODIFIED ON 04/21/2021 + name = "\improper two-liter Space Mountain Wind" + desc = "Blows right through you like a space wind." + icon_state = "space_mountain_wind_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/Initialize() + . = ..() + reagents.add_reagent("spacemountainwind", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/dr_gibb //ADDED ON 04/21/2021 + name = "\improper two-liter Dr. Gibb" + desc = "A delicious mixture of 42 different flavors." + icon_state = "dr_gibb_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/dr_gibb/Initialize() + . = ..() + reagents.add_reagent("dr_gibb", 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice name = "Orange Juice" @@ -507,7 +577,8 @@ . = ..() reagents.add_reagent("lemonjuice", 100) -//Small bottles +//////////////////////////SMALL BOTTLES/////////////////////// + /obj/item/weapon/reagent_containers/food/drinks/bottle/small volume = 50 smash_duration = 1 @@ -578,63 +649,3 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/hushedwhisper/Initialize() . = ..() reagents.add_reagent("ale", 50) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake - name = "Mono-No-Aware Luxury Sake" - desc = "Dry alcohol made from rice, a favorite of businessmen." - icon_state = "sakebottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize() - . = ..() - reagents.add_reagent("sake", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne - name = "Gilthari Luxury Champagne" - desc = "For those special occassions." - icon_state = "champagne" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize() - . = ..() - reagents.add_reagent("champagne", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps - name = "Dr. Bone's Peppermint Schnapps" - desc = "A flavoured grain liqueur with a fresh, minty taste." - icon_state = "schnapps_pep" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_pep", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps - name = "Dr. Bone's Peach Schnapps" - desc = "A flavoured grain liqueur with a fruity peach taste." - icon_state = "schnapps_pea" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_pea", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps - name = "Dr. Bone's Lemonade Schnapps" - desc = "A flavoured grain liqueur with a sweetish, lemon taste." - icon_state = "schnapps_lem" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps/Initialize() - . = ..() - reagents.add_reagent("schnapps_lem", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/jager - name = "Schusskonig" - desc = "A complex tasting digestif. Thank god the original's trademark lapsed." - icon_state = "jager_bottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/jager/Initialize() - . = ..() - reagents.add_reagent("jager", 100) diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm index df0e6874aa..63dc510eb9 100644 --- a/code/modules/food/recipe_dump.dm +++ b/code/modules/food/recipe_dump.dm @@ -8,13 +8,11 @@ //////////////////////// DRINK var/list/drink_recipes = list() - for(var/path in typesof(/datum/chemical_reaction/drinks) - /datum/chemical_reaction/drinks) - var/datum/chemical_reaction/drinks/CR = new path() - drink_recipes[path] = list("Result" = CR.name, + for(var/decl/chemical_reaction/instant/drinks/CR in SSchemistry.chemical_reactions) + drink_recipes[CR.type] = list("Result" = CR.name, "ResAmt" = CR.result_amount, "Reagents" = CR.required_reagents, "Catalysts" = CR.catalysts) - qdel(CR) //////////////////////// FOOD var/list/food_recipes = typesof(/datum/recipe) - /datum/recipe @@ -43,16 +41,14 @@ qdel(R) //////////////////////// FOOD+ (basically condiments, tofu, cheese, soysauce, etc) - for(var/path in typesof(/datum/chemical_reaction/food) - /datum/chemical_reaction/food) - var/datum/chemical_reaction/food/CR = new path() - food_recipes[path] = list("Result" = CR.name, + for(var/decl/chemical_reaction/instant/food/CR in SSchemistry.chemical_reactions) + food_recipes[CR.type] = list("Result" = CR.name, "ResAmt" = CR.result_amount, "Reagents" = CR.required_reagents, "Catalysts" = CR.catalysts, "Fruit" = list(), "Ingredients" = list(), "Image" = null) - qdel(CR) //////////////////////// PROCESSING //Items needs further processing into human-readability. diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 3bd20bbcbd..4454ea3a1a 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -286,13 +286,15 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/DBQuery/query = dbcon_old.NewQuery("SELECT id, author, title, category FROM library ORDER BY [sortby]") query.Execute() + var/show_admin_options = check_rights(R_ADMIN, show_msg = FALSE) + while(query.NextRow()) var/id = query.item[1] var/author = query.item[2] var/title = query.item[3] var/category = query.item[4] dat += "