From fa575db934c1d28af162ca0ae3ec708cc527db82 Mon Sep 17 00:00:00 2001 From: Thalpy <33956696+Thalpy@users.noreply.github.com> Date: Fri, 19 Feb 2021 18:28:48 +0000 Subject: [PATCH] Fermichem part 2.2 Adds new tools, crafts and methods for ghetto chemists to handle the new reaction mechanics. (#56871) Since reactions now require a bit more involvement from chemists, ghetto chemistry is a bit harder. This seeks to help some of those problems by providing new tools for those without a chem heater/reaction chamber. Also some of these might be useful for chemists in the lab too! Here's what you can make: image the burners are similar to candles - except they burn their internal reagents. The temperature they heat by is dependant on the flame, fuel and oil burn for a lower amount, ethanol for a higher amount and plasma for the highest amount. They can be put on tables and bonked with beakers for a quick way to heat them (similar to lighters). You'll need to light them with a match or lighter too, though, and can be put out by use in hand. The thermometer looks like this and gives you temperature readings! thermom The pH booklets are the same as before - but you can now craft them by making universal indicator. These are the best way for a ghetto chemist to check their pH, and multiple sheets should be used over a reaction. The improvised chem heater looks like this, and is a reconfigured space heater, it requires more materials and tools lending itself to a static drug den, but has the best method of adjusting temperature and fighting against exo/endo thermic reactions: Improv_heater Finally, the cooling spray lets chemists do the oposite of a lighter on their beaker - cooling the reagents within. In addition, fire extinquishers perform the same function. In addition ice and universal indicator have been added as reactions. Co-authored-by: Rohesie Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com> Co-authored-by: Aleksej Komarov --- code/__DEFINES/construction.dm | 1 + code/__DEFINES/is_helpers.dm | 2 + code/__HELPERS/reagents.dm | 35 +++ code/_globalvars/lists/maintenance_loot.dm | 1 + code/datums/components/crafting/crafting.dm | 121 +++++---- code/datums/components/crafting/recipes.dm | 121 ++++++++- code/game/machinery/spaceheater.dm | 180 ++++++++++++- .../effects/effect_system/effects_water.dm | 6 + code/game/objects/items/extinguisher.dm | 22 ++ code/modules/food_and_drinks/drinks/drinks.dm | 14 + .../food_and_drinks/recipes/food_mixtures.dm | 2 +- code/modules/reagents/chemistry/items.dm | 239 +++++++++++++++--- code/modules/reagents/chemistry/reagents.dm | 11 +- .../chemistry/reagents/alcohol_reagents.dm | 2 + .../chemistry/reagents/medicine_reagents.dm | 2 + .../chemistry/reagents/other_reagents.dm | 31 +++ .../reagents/pyrotechnic_reagents.dm | 14 + .../chemistry/reagents/toxin_reagents.dm | 2 + code/modules/reagents/chemistry/recipes.dm | 1 - .../reagents/chemistry/recipes/others.dm | 47 ++++ code/modules/reagents/reagent_containers.dm | 3 - .../reagents/reagent_containers/glass.dm | 14 + .../reagents/reagent_containers/spray.dm | 15 ++ icons/obj/chemical.dmi | Bin 53868 -> 58006 bytes icons/obj/items_and_weapons.dmi | Bin 111252 -> 111662 bytes tgui/packages/tgui/constants.js | 5 + tgui/packages/tgui/interfaces/ChemHeater.js | 145 ++++++----- tgui/packages/tgui/interfaces/SpaceHeater.js | 7 + tgui/packages/tgui/interfaces/Thermometer.js | 98 +++++++ 29 files changed, 969 insertions(+), 172 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/Thermometer.js diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index d6bde85833d..c709a2bb07b 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -95,6 +95,7 @@ #define CAT_SPAGHETTI "Spaghettis" #define CAT_ICE "Frozen" #define CAT_DRINK "Drinks" +#define CAT_CHEMISTRY "Chemistry" //rcd modes #define RCD_FLOORWALL 0 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 63ee08482db..e01e5474db9 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -194,6 +194,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isgun(A) (istype(A, /obj/item/gun)) +#define is_reagent_container(O) (istype(O, /obj/item/reagent_containers)) + //Assemblies #define isassembly(O) (istype(O, /obj/item/assembly)) diff --git a/code/__HELPERS/reagents.dm b/code/__HELPERS/reagents.dm index 92c7b872bb1..b8e77066e27 100644 --- a/code/__HELPERS/reagents.dm +++ b/code/__HELPERS/reagents.dm @@ -89,3 +89,38 @@ return for(var/mob/M in viewers(5, location)) to_chat(M, notification) + +#define CONVERT_PH_TO_COLOR(pH, color) \ + switch(pH) {\ + if(14 to INFINITY)\ + { color = "#462c83" }\ + if(13 to 14)\ + { color = "#63459b" }\ + if(12 to 13)\ + { color = "#5a51a2" }\ + if(11 to 12)\ + { color = "#3853a4" }\ + if(10 to 11)\ + { color = "#3f93cf" }\ + if(9 to 10)\ + { color = "#0bb9b7" }\ + if(8 to 9)\ + { color = "#23b36e" }\ + if(7 to 8)\ + { color = "#3aa651" }\ + if(6 to 7)\ + { color = "#4cb849" }\ + if(5 to 6)\ + { color = "#b5d335" }\ + if(4 to 5)\ + { color = "#f7ec1e" }\ + if(3 to 4)\ + { color = "#fbc314" }\ + if(2 to 3)\ + { color = "#f26724" }\ + if(1 to 2)\ + { color = "#ef1d26" }\ + if(-INFINITY to 1)\ + { color = "#c6040c" }\ + } + diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 1c8cb08a44c..6ed2fb59763 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -132,6 +132,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/reagent_containers/glass/beaker = 1, /obj/item/reagent_containers/glass/rag = 1, /obj/item/reagent_containers/hypospray/medipen/pumpup = 2, + /obj/item/reagent_containers/glass/bottle/random_buffer = 2, ) = 1, list(//food diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index c29f20dd4f4..75f4ec2f3c4 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -68,8 +68,10 @@ */ /datum/component/personal_crafting/proc/check_contents(atom/a, datum/crafting_recipe/R, list/contents) var/list/item_instances = contents["instances"] + var/list/machines = contents["machinery"] contents = contents["other"] + var/list/requirements_list = list() // Process all requirements @@ -100,6 +102,10 @@ if(contents[requirement_path] < R.chem_catalysts[requirement_path]) return FALSE + for(var/machinery_path in R.machinery) + if(!machines[machinery_path])//We don't care for volume with machines, just if one is there or not + return FALSE + return R.check_requirements(a, requirements_list) /datum/component/personal_crafting/proc/get_environment(atom/a, list/blacklist = null, radius_range = 1) @@ -119,24 +125,27 @@ .["tool_behaviour"] = list() .["other"] = list() .["instances"] = list() - for(var/obj/item/I in get_environment(a,blacklist)) - if(.["instances"][I.type]) - .["instances"][I.type] += I - else - .["instances"][I.type] = list(I) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - .["other"][I.type] += S.amount - else if(I.tool_behaviour) - .["tool_behaviour"] += I.tool_behaviour - .["other"][I.type] += 1 - else - if(istype(I, /obj/item/reagent_containers)) - var/obj/item/reagent_containers/RC = I - if(RC.is_drainable()) - for(var/datum/reagent/A in RC.reagents.reagent_list) - .["other"][A.type] += A.volume - .["other"][I.type] += 1 + .["machinery"] = list() + for(var/obj/object in get_environment(a, blacklist)) + if(isitem(object)) + var/obj/item/item = object + LAZYADDASSOCLIST(.["instances"], item.type, item) + if(isstack(item)) + var/obj/item/stack/stack = item + .["other"][item.type] += stack.amount + else if(item.tool_behaviour) + .["tool_behaviour"] += item.tool_behaviour + .["other"][item.type] += 1 + else + if(is_reagent_container(item)) + var/obj/item/reagent_containers/container = item + if(container.is_drainable()) + for(var/datum/reagent/reagent in container.reagents.reagent_list) + .["other"][reagent.type] += reagent.volume + .["other"][item.type] += 1 + else if (ismachinery(object)) + LAZYADDASSOCLIST(.["machinery"], object.type, object) + /// Returns a boolean on whether the tool requirements of the input recipe are satisfied by the input source and surroundings. @@ -166,7 +175,7 @@ if(present_qualities[required_quality]) continue return FALSE - + for(var/required_path in recipe.tool_paths) var/found_this_tool = FALSE for(var/tool_path in available_tools) @@ -177,7 +186,7 @@ if(found_this_tool) continue return FALSE - + return TRUE @@ -233,17 +242,24 @@ . = list() var/data var/amt + var/list/requirements = list() + if(R.reqs) + requirements += R.reqs + if(R.machinery) + requirements += R.machinery main_loop: - for(var/A in R.reqs) - amt = R.reqs[A] + for(var/path_key in requirements) + amt = R.reqs[path_key] || R.machinery[path_key] + if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it! + continue main_loop surroundings = get_environment(a, R.blacklist) surroundings -= Deletion - if(ispath(A, /datum/reagent)) - var/datum/reagent/RG = new A + if(ispath(path_key, /datum/reagent)) + var/datum/reagent/RG = new path_key var/datum/reagent/RGNT while(amt > 0) var/obj/item/reagent_containers/RC = locate() in surroundings - RG = RC.reagents.get_reagent(A) + RG = RC.reagents.get_reagent(path_key) if(RG) if(!locate(RG.type) in Deletion) Deletion += new RG.type() @@ -267,11 +283,11 @@ SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING) // - [] TODO: Make this entire thing less spaghetti else surroundings -= RC - else if(ispath(A, /obj/item/stack)) + else if(ispath(path_key, /obj/item/stack)) var/obj/item/stack/S var/obj/item/stack/SD while(amt > 0) - S = locate(A) in surroundings + S = locate(path_key) in surroundings if(S.amount >= amt) if(!locate(S.type) in Deletion) SD = new S.type() @@ -292,34 +308,34 @@ else var/atom/movable/I while(amt > 0) - I = locate(A) in surroundings + I = locate(path_key) in surroundings Deletion += I surroundings -= I amt-- var/list/partlist = list(R.parts.len) for(var/M in R.parts) partlist[M] = R.parts[M] - for(var/A in R.parts) - if(istype(A, /datum/reagent)) - var/datum/reagent/RG = locate(A) in Deletion - if(RG.volume > partlist[A]) - RG.volume = partlist[A] + for(var/part in R.parts) + if(istype(part, /datum/reagent)) + var/datum/reagent/RG = locate(part) in Deletion + if(RG.volume > partlist[part]) + RG.volume = partlist[part] . += RG Deletion -= RG continue - else if(istype(A, /obj/item/stack)) - var/obj/item/stack/ST = locate(A) in Deletion - if(ST.amount > partlist[A]) - ST.amount = partlist[A] + else if(istype(part, /obj/item/stack)) + var/obj/item/stack/ST = locate(part) in Deletion + if(ST.amount > partlist[part]) + ST.amount = partlist[part] . += ST Deletion -= ST continue else - while(partlist[A] > 0) - var/atom/movable/AM = locate(A) in Deletion + while(partlist[part] > 0) + var/atom/movable/AM = locate(part) in Deletion . += AM Deletion -= AM - partlist[A] -= 1 + partlist[part] -= 1 while(Deletion.len) var/DL = Deletion[Deletion.len] Deletion.Cut(Deletion.len) @@ -423,6 +439,7 @@ else result.forceMove(user.drop_location()) to_chat(user, "[TR.name] constructed.") + TR.on_craft_completion(user, result) else to_chat(user, "Construction failed[result]") busy = FALSE @@ -441,26 +458,24 @@ var/list/data = list() data["name"] = R.name data["ref"] = "[REF(R)]" - var/req_text = "" - var/catalyst_text = "" + var/list/req_text = list() + var/list/tool_list = list() + var/list/catalyst_text = list() - for(var/a in R.reqs) + for(var/atom/req_atom as anything in R.reqs) //We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var) //Also these are typepaths so sadly we can't just do "[a]" - var/atom/A = a - req_text += " [R.reqs[A]] [initial(A.name)]," + req_text += "[R.reqs[req_atom]] [initial(req_atom.name)]" + for(var/obj/machinery/content as anything in R.machinery) + req_text += "[R.reqs[content]] [initial(content.name)]" if(R.additional_req_text) req_text += R.additional_req_text - req_text = replacetext(req_text,",","",-1) - data["req_text"] = req_text + data["req_text"] = req_text.Join(", ") - for(var/a in R.chem_catalysts) - var/atom/A = a //cheat-typecast - catalyst_text += " [R.chem_catalysts[A]] [initial(A.name)]," - catalyst_text = replacetext(catalyst_text,",","",-1) - data["catalyst_text"] = catalyst_text + for(var/atom/req_catalyst as anything in R.chem_catalysts) + catalyst_text += "[R.chem_catalysts[req_catalyst]] [initial(req_catalyst.name)]" + data["catalyst_text"] = catalyst_text.Join(", ") - var/list/tool_list = list() for(var/required_quality in R.tool_behaviors) tool_list += required_quality for(var/obj/item/required_path as anything in R.tool_paths) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 6d929c78b42..c9080489d26 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -1,3 +1,7 @@ +///If the machine is used/deleted in the crafting process +#define CRAFTING_MACHINERY_CONSUME 1 +///If the machine is only "used" i.e. it checks to see if it's nearby and allows crafting, but doesn't delete it +#define CRAFTING_MACHINERY_USE 0 /datum/crafting_recipe var/name = "" //in-game display name @@ -10,12 +14,14 @@ var/list/tool_paths var/time = 30 //time in deciseconds var/list/parts = list() //type paths of items that will be placed in the result - var/list/chem_catalysts = list() //like tools but for reagents + var/list/chem_catalysts = list() //like tool_behaviors but for reagents var/category = CAT_NONE //where it shows up in the crafting UI var/subcategory = CAT_NONE var/always_available = TRUE //Set to FALSE if it needs to be learned first. /// Additonal requirements text shown in UI var/additional_req_text + ///Required machines for the craft, set the assigned value of the typepath to CRAFTING_MACHINERY_CONSUME or CRAFTING_MACHINERY_USE. Lazy associative list: type_path key -> flag value. + var/list/machinery /datum/crafting_recipe/New() if(!(result in reqs)) @@ -34,6 +40,9 @@ /datum/crafting_recipe/proc/check_requirements(mob/user, list/collected_requirements) return TRUE +/datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result) + return + /datum/crafting_recipe/improv_explosive name = "IED" result = /obj/item/grenade/iedcasing @@ -1158,3 +1167,113 @@ /obj/item/aquarium_kit = 1 ) category = CAT_MISC + +/datum/crafting_recipe/alcohol_burner + name = "Alcohol burner" + result = /obj/item/burner + time = 5 SECONDS + reqs = list(/obj/item/reagent_containers/glass/beaker = 1, + /datum/reagent/consumable/ethanol = 15, + /obj/item/paper = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/oil_burner + name = "Oil burner" + result = /obj/item/burner/oil + time = 5 SECONDS + reqs = list(/obj/item/reagent_containers/glass/beaker = 1, + /datum/reagent/fuel/oil = 15, + /obj/item/paper = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/fuel_burner + name = "Fuel burner" + result = /obj/item/burner/fuel + time = 5 SECONDS + reqs = list(/obj/item/reagent_containers/glass/beaker = 1, + /datum/reagent/fuel = 15, + /obj/item/paper = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/thermometer + name = "Thermometer" + tool_behaviors = list(TOOL_WELDER) + result = /obj/item/thermometer + time = 5 SECONDS + reqs = list( + /datum/reagent/mercury = 5, + /obj/item/stack/sheet/glass = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/thermometer_alt + name = "Thermometer" + result = /obj/item/thermometer/pen + time = 5 SECONDS + reqs = list( + /datum/reagent/mercury = 5, + /obj/item/pen = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/ph_booklet + name = "pH booklet" + result = /obj/item/ph_booklet + time = 5 SECONDS + reqs = list( + /datum/reagent/universal_indicator = 5, + /obj/item/paper = 1 + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/dropper //Maybe make a glass pipette icon? + name = "Dropper" + result = /obj/item/reagent_containers/dropper + tool_behaviors = list(TOOL_WELDER) + time = 5 SECONDS + reqs = list( + /obj/item/stack/sheet/glass = 1, + ) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/improvised_chem_heater + name = "Improvised chem heater" + result = /obj/machinery/space_heater/improvised_chem_heater + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WIRECUTTER) + time = 15 SECONDS + reqs = list( + /obj/item/stack/cable_coil = 2, + /obj/item/stack/sheet/glass = 2, + /obj/item/stack/sheet/iron = 2, + /datum/reagent/water = 50, + /obj/item/thermometer = 1 + ) + machinery = list(/obj/machinery/space_heater = CRAFTING_MACHINERY_CONSUME) + category = CAT_CHEMISTRY + +/datum/crafting_recipe/improvised_chem_heater/on_craft_completion(mob/user, atom/result) + var/obj/item/stock_parts/cell/cell = locate(/obj/item/stock_parts/cell) in range(1) + if(!cell) + return + var/obj/machinery/space_heater/improvised_chem_heater/heater = result + var/turf/turf = get_turf(cell) + heater.forceMove(turf) + heater.attackby(cell, user) //puts it into the heater + +/datum/crafting_recipe/improvised_coolant + name = "Improvised cooling spray" + tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + result = /obj/item/extinguisher/crafted + time = 10 SECONDS + reqs = list( + /obj/item/toy/crayon/spraycan = 1, + /datum/reagent/water = 20, + /datum/reagent/consumable/ice = 10 + ) + category = CAT_CHEMISTRY + +#undef CRAFTING_MACHINERY_CONSUME +#undef CRAFTING_MACHINERY_USE diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index ab31ca18318..d9606b55282 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -1,6 +1,7 @@ #define HEATER_MODE_STANDBY "standby" #define HEATER_MODE_HEAT "heat" #define HEATER_MODE_COOL "cool" +#define HEATER_MODE_AUTO "auto" /obj/machinery/space_heater anchored = FALSE @@ -16,10 +17,10 @@ circuit = /obj/item/circuitboard/machine/space_heater /// We don't use area power, we always use the cell use_power = NO_POWER_USE - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell var/on = FALSE var/mode = HEATER_MODE_STANDBY - var/setMode = "auto" // Anything other than "heat" or "cool" is considered auto. + var/setMode = HEATER_MODE_AUTO // Anything other than "heat" or "cool" is considered auto. var/targetTemperature = T20C var/heatingPower = 20000 var/efficiency = 20000 @@ -32,7 +33,8 @@ /obj/machinery/space_heater/Initialize() . = ..() - cell = new(src) + if(ispath(cell)) + cell = new cell(src) update_appearance() /obj/machinery/space_heater/on_construction() @@ -60,7 +62,8 @@ /obj/machinery/space_heater/update_icon_state() icon_state = "[base_icon_state]-[on ? mode : "off"]" - return ..() + . = ..() + return /obj/machinery/space_heater/update_overlays() . = ..() @@ -179,6 +182,7 @@ data["on"] = on data["mode"] = setMode data["hasPowercell"] = !!cell + data["chemHacked"] = FALSE if(cell) data["powerLevel"] = round(cell.percent(), 1) data["targetTemp"] = round(targetTemperature - T0C, 1) @@ -232,6 +236,174 @@ cell = null . = TRUE +///For use with heating reagents in a ghetto way +/obj/machinery/space_heater/improvised_chem_heater + icon = 'icons/obj/chemical.dmi' + icon_state = "sheater-off" + name = "Improvised chem heater" + desc = "A space heater hacked to reroute heating to a water bath on the top." + panel_open = TRUE //This is always open - since we've injected wires in the panel + //We inherit the cell from the heater prior + cell = null + ///The beaker within the heater + var/obj/item/reagent_containers/beaker = null + ///How powerful the heating is, upgrades with parts. (ala chem_heater.dm's method, basically the same level of heating, but this is restricted) + var/chem_heating_power = 1 + +/obj/machinery/space_heater/improvised_chem_heater/Destroy() + . = ..() + QDEL_NULL(beaker) + +/obj/machinery/space_heater/improvised_chem_heater/process(delta_time) + if(!on) + update_appearance() + return PROCESS_KILL + + if(!is_operational || !cell || cell.charge <= 0) + on = FALSE + update_appearance() + return PROCESS_KILL + + if(!beaker)//No beaker to heat + update_appearance() + return + + if(beaker.reagents.total_volume) + var/power_mod = 0.1 * chem_heating_power + switch(setMode) + if(HEATER_MODE_AUTO) + power_mod *= 0.5 + beaker.reagents.adjust_thermal_energy((targetTemperature - beaker.reagents.chem_temp) * power_mod * delta_time * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume) + beaker.reagents.handle_reactions() + if(HEATER_MODE_HEAT) + if(targetTemperature < beaker.reagents.chem_temp) + return + beaker.reagents.adjust_thermal_energy((targetTemperature - beaker.reagents.chem_temp) * power_mod * delta_time * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume) + if(HEATER_MODE_COOL) + if(targetTemperature > beaker.reagents.chem_temp) + return + beaker.reagents.adjust_thermal_energy((targetTemperature - beaker.reagents.chem_temp) * power_mod * delta_time * SPECIFIC_HEAT_DEFAULT * beaker.reagents.total_volume) + var/requiredEnergy = heatingPower * delta_time * (power_mod * 4) + cell.use(requiredEnergy / efficiency) + beaker.reagents.handle_reactions() + update_appearance() + +/obj/machinery/space_heater/improvised_chem_heater/ui_data() + . = ..() + .["chemHacked"] = TRUE + .["beaker"] = beaker + .["currentTemp"] = beaker ? (round(beaker.reagents.chem_temp - T0C)) : "N/A" + +/obj/machinery/space_heater/improvised_chem_heater/ui_act(action, params) + . = ..() + if(.) + return + switch(action) + if("ejectBeaker") + //Eject doesn't turn it off, so you can preheat for beaker swapping + replace_beaker(usr) + . = TRUE + +///Slightly modified to ignore the open_hatch - it's always open, we hacked it. +/obj/machinery/space_heater/improvised_chem_heater/attackby(obj/item/item, mob/user, params) + add_fingerprint(user) + if(default_unfasten_wrench(user, item)) + return + if(default_deconstruction_crowbar(item)) + return + if(istype(item, /obj/item/stock_parts/cell)) + if(cell) + to_chat(user, "There is already a power cell inside!") + return + else if(!user.transferItemToLoc(item, src)) + return + cell = item + item.add_fingerprint(usr) + + user.visible_message("\The [user] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") + SStgui.update_uis(src) + //reagent containers + if(is_reagent_container(item) && !(item.item_flags & ABSTRACT) && item.is_open_container()) + . = TRUE //no afterattack + var/obj/item/reagent_containers/container = item + if(!user.transferItemToLoc(container, src)) + return + replace_beaker(user, container) + to_chat(user, "You add [container] to [src]'s water bath.") + updateUsrDialog() + return + //Dropper tools + if(beaker) + if(is_type_in_list(item, list(/obj/item/reagent_containers/dropper, /obj/item/ph_meter, /obj/item/ph_paper, /obj/item/reagent_containers/syringe))) + item.afterattack(beaker, user, 1) + return + + +/obj/machinery/space_heater/improvised_chem_heater/on_deconstruction(disassembled = TRUE) + . = ..() + if(disassembled) + beaker?.forceMove(drop_location()) + beaker = null + var/static/bonus_junk = list( + /obj/item/stack/cable_coil = 2, + /obj/item/stack/sheet/glass = 2, + /obj/item/stack/sheet/iron = 2, + /obj/item/thermometer = 1 + ) + for(var/item in bonus_junk) + if(prob(80)) + new item(get_turf(loc)) + +/obj/machinery/space_heater/improvised_chem_heater/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) + if(!user) + return FALSE + if(beaker) + try_put_in_hand(beaker, user) + beaker = null + if(new_beaker) + beaker = new_beaker + update_appearance() + return TRUE + +/obj/machinery/space_heater/improvised_chem_heater/AltClick(mob/living/user) + . = ..() + if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + return + replace_beaker(user) + +/obj/machinery/space_heater/improvised_chem_heater/update_icon_state() + . = ..() + if(!on || !beaker || !cell) + icon_state = "sheater-off" + return + if(targetTemperature < beaker.reagents.chem_temp) + icon_state = "sheater-cool" + return + if(targetTemperature > beaker.reagents.chem_temp) + icon_state = "sheater-heat" + return + icon_state = "sheater-off" + +/obj/machinery/space_heater/improvised_chem_heater/RefreshParts() + var/lasers_rating = 0 + var/capacitors_rating = 0 + for(var/obj/item/stock_parts/micro_laser/laser in component_parts) + lasers_rating += laser.rating + for(var/obj/item/stock_parts/capacitor/capacitor in component_parts) + capacitors_rating += capacitor.rating + + heatingPower = lasers_rating * 20000 + + settableTemperatureRange = capacitors_rating * 50 //-20 - 80 at base + efficiency = (capacitors_rating + 1) * 10000 + + targetTemperature = clamp(targetTemperature, + max(settableTemperatureMedian - settableTemperatureRange, TCMB), + settableTemperatureMedian + settableTemperatureRange) + + chem_heating_power = efficiency/20000 //1-2.5 + #undef HEATER_MODE_STANDBY #undef HEATER_MODE_HEAT #undef HEATER_MODE_COOL +#undef HEATER_MODE_AUTO diff --git a/code/game/objects/effects/effect_system/effects_water.dm b/code/game/objects/effects/effect_system/effects_water.dm index 3169613c90d..2742b22d911 100644 --- a/code/game/objects/effects/effect_system/effects_water.dm +++ b/code/game/objects/effects/effect_system/effects_water.dm @@ -22,6 +22,8 @@ /obj/effect/particle_effect/water/Bump(atom/A) if(reagents) reagents.expose(A) + if(A.reagents) + A.reagents.expose_temperature(-25) return ..() @@ -51,3 +53,7 @@ /datum/effect_system/steam_spread effect_type = /obj/effect/particle_effect/steam + +/obj/effect/particle_effect/water/Bump(atom/A) + if(A.reagents && reagents) + A.reagents.expose_temperature(reagents.chem_temp) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index dd9b218e715..ea676a83575 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -44,6 +44,28 @@ sprite_name = "miniFE" dog_fashion = null +/obj/item/extinguisher/crafted + name = "Improvised cooling spray" + desc = "Spraycan turned coolant dipsenser. Can be sprayed on containers to cool them. Refll using water." + icon_state = "coolant0" + inhand_icon_state = "miniFE" + hitsound = null //it is much lighter, after all. + flags_1 = null //doesn't CONDUCT_1 + throwforce = 1 + w_class = WEIGHT_CLASS_SMALL + force = 3 + custom_materials = list(/datum/material/iron = 50, /datum/material/glass = 40) + max_water = 30 + sprite_name = "coolant" + dog_fashion = null + cooling_power = 1.5 + power = 3 + +/obj/item/extinguisher/crafted/attack_self(mob/user) + safety = !safety + icon_state = "[sprite_name][!safety]" + to_chat(user, "[safety ? "You remove the straw and put it on the side of the cool canister" : "You insert the straw, readying it for use"].") + /obj/item/extinguisher/proc/refill() if(!chem) return diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 0d3bda65f79..b772e877676 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -116,6 +116,20 @@ if(hotness && reagents) reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") + + //Cooling method + if(istype(I, /obj/item/extinguisher)) + var/obj/item/extinguisher/extinguisher = I + if(extinguisher.safety) + return + if(extinguisher.reagents.total_volume < 1) + to_chat(user, "\The [extinguisher] is empty!") + return + var/cooling = (0 - reagents.chem_temp) * (extinguisher.cooling_power * 2) + reagents.expose_temperature(cooling) + to_chat(user, "You cool the [name] with the [I]!") + playsound(loc, 'sound/effects/extinguish.ogg', 75, TRUE, -3) + extinguisher.reagents.remove_all(1) ..() /obj/item/reagent_containers/food/drinks/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index eed688d1604..ae28e792e40 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -66,7 +66,7 @@ new /obj/item/food/chocolatebar(location) return -/datum/chemical_reaction/soysauce +/datum/chemical_reaction/food/soysauce results = list(/datum/reagent/consumable/soysauce = 5) required_reagents = list(/datum/reagent/consumable/soymilk = 4, /datum/reagent/toxin/acid = 1) diff --git a/code/modules/reagents/chemistry/items.dm b/code/modules/reagents/chemistry/items.dm index 03a16ced1d7..fc056f524a7 100644 --- a/code/modules/reagents/chemistry/items.dm +++ b/code/modules/reagents/chemistry/items.dm @@ -79,45 +79,15 @@ var/used = FALSE /obj/item/ph_paper/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - var/obj/item/reagent_containers/cont = target - if(!istype(cont)) + if(!is_reagent_container(target)) return + var/obj/item/reagent_containers/cont = target if(used == TRUE) to_chat(user, "[src] has already been used!") return if(!LAZYLEN(cont.reagents.reagent_list)) return - switch(round(cont.reagents.ph, 1)) - if(14 to INFINITY) - color = "#462c83" - if(13 to 14) - color = "#63459b" - if(12 to 13) - color = "#5a51a2" - if(11 to 12) - color = "#3853a4" - if(10 to 11) - color = "#3f93cf" - if(9 to 10) - color = "#0bb9b7" - if(8 to 9) - color = "#23b36e" - if(7 to 8) - color = "#3aa651" - if(6 to 7) - color = "#4cb849" - if(5 to 6) - color = "#b5d335" - if(4 to 5) - color = "#f7ec1e" - if(3 to 4) - color = "#fbc314" - if(2 to 3) - color = "#f26724" - if(1 to 2) - color = "#ef1d26" - if(-INFINITY to 1) - color = "#c6040c" + CONVERT_PH_TO_COLOR(round(cont.reagents.ph, 1), color) desc += " The paper looks to be around a pH of [round(cont.reagents.ph, 1)]" name = "used [name]" used = TRUE @@ -130,7 +100,6 @@ desc = "An electrode attached to a small circuit box that will display details of a solution. Can be toggled to provide a description of each of the reagents. The screen currently displays nothing." icon_state = "pHmeter" icon = 'icons/obj/chemical.dmi' - resistance_flags = FLAMMABLE w_class = WEIGHT_CLASS_TINY ///level of detail for output for the meter var/scanmode = DETAILED_CHEM_OUTPUT @@ -145,7 +114,7 @@ /obj/item/ph_meter/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(!istype(target, /obj/item/reagent_containers)) + if(!is_reagent_container(target)) return var/obj/item/reagent_containers/cont = target if(LAZYLEN(cont.reagents.reagent_list) == null) @@ -162,3 +131,203 @@ out_message += "Analysis: [R.description]\n" to_chat(user, "[out_message.Join()]") desc = "An electrode attached to a small circuit box that will display details of a solution. Can be toggled to provide a description of each of the reagents. The screen currently displays detected vol: [round(cont.volume, 0.01)] detected pH:[round(cont.reagents.ph, 0.1)]." + +/obj/item/burner + name = "Alcohol burner" + desc = "A small table size burner used for heating up beakers." + icon = 'icons/obj/chemical.dmi' + icon_state = "burner" + grind_results = list(/datum/reagent/consumable/ethanol = 5, /datum/reagent/silicon = 10) + item_flags = NOBLUDGEON + resistance_flags = FLAMMABLE + w_class = WEIGHT_CLASS_TINY + heat = 2000 + ///If the flame is lit - i.e. if we're processing and burning + var/lit = FALSE + ///total reagent volume + var/max_volume = 50 + ///What the creation reagent is + var/reagent_type = /datum/reagent/consumable/ethanol + +/obj/item/burner/Initialize() + . = ..() + create_reagents(max_volume, TRANSPARENT)//We have our own refillable - since we want to heat and pour + if(reagent_type) + reagents.add_reagent(reagent_type, 15) + +/obj/item/burner/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(is_reagent_container(I)) + if(lit) + var/obj/item/reagent_containers/container = I + container.reagents.expose_temperature(get_temperature()) + to_chat(user, "You heat up the [I] with the [src].") + playsound(user.loc, 'sound/chemistry/heatdam.ogg', 50, TRUE) + return + else if(I.is_drainable()) //Transfer FROM it TO us. Special code so it only happens when flame is off. + var/obj/item/reagent_containers/container = I + if(!container.reagents.total_volume) + to_chat(user, "[container] is empty and can't be poured!") + return + + if(reagents.holder_full()) + to_chat(user, "[src] is full.") + return + + var/trans = container.reagents.trans_to(src, container.amount_per_transfer_from_this, transfered_by = user) + to_chat(user, "You fill [src] with [trans] unit\s of the contents of [container].") + if(I.heat < 1000) + return + set_lit(TRUE) + user.visible_message("[user] lights up the [src].") + +/obj/item/burner/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(lit) + if(is_reagent_container(target)) + var/obj/item/reagent_containers/container = target + container.reagents.expose_temperature(get_temperature()) + to_chat(user, "You heat up the [src].") + playsound(user.loc, 'sound/chemistry/heatdam.ogg', 50, TRUE) + return + else if(isitem(target)) + var/obj/item/item = target + if(item.heat > 1000) + set_lit(TRUE) + user.visible_message("[user] lights up the [src].") + +/obj/item/burner/update_icon_state() + . = ..() + icon_state = "[initial(icon_state)][lit ? "-on" : ""]" + +/obj/item/burner/proc/set_lit(new_lit) + if(lit == new_lit) + return + lit = new_lit + if(lit) + force = 5 + damtype = BURN + hitsound = 'sound/items/welder.ogg' + attack_verb_continuous = string_list(list("burns", "sings")) + attack_verb_simple = string_list(list("burn", "sing")) + START_PROCESSING(SSobj, src) + else + hitsound = "swing_hit" + force = 0 + attack_verb_continuous = null //human_defense.dm takes care of it + attack_verb_simple = null + STOP_PROCESSING(SSobj, src) + set_light_on(lit) + update_icon() + +/obj/item/burner/extinguish() + set_lit(FALSE) + +/obj/item/burner/attack_self(mob/living/user) + . = ..() + if(.) + return + if(lit) + set_lit(FALSE) + user.visible_message("[user] snuffs out [src]'s flame.") + +/obj/item/burner/attack(mob/living/carbon/M, mob/living/carbon/user) + if(lit && M.IgniteMob()) + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(M)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]") + return ..() + +/obj/item/burner/process() + var/current_heat = 0 + var/number_of_burning_reagents = 0 + for(var/datum/reagent/reagent as anything in reagents.reagent_list) + reagent.burn(reagents) //burn can set temperatures of reagents + if(!isnull(reagent.burning_temperature)) + current_heat += reagent.burning_temperature + number_of_burning_reagents += 1 + reagents.remove_reagent(reagent.type, reagent.burning_volume) + continue + + if(!number_of_burning_reagents) + set_lit(FALSE) + heat = 0 + return + open_flame() + current_heat /= number_of_burning_reagents + heat = current_heat + +/obj/item/burner/get_temperature() + return lit * heat + +/obj/item/burner/oil + name = "Oil burner" + reagent_type = /datum/reagent/fuel/oil + grind_results = list(/datum/reagent/fuel/oil = 5, /datum/reagent/silicon = 10) + +/obj/item/burner/fuel + name = "Fuel burner" + reagent_type = /datum/reagent/fuel + grind_results = list(/datum/reagent/fuel = 5, /datum/reagent/silicon = 10) + +/obj/item/thermometer + name = "thermometer" + desc = "A thermometer for checking a beaker's temperature" + icon_state = "thermometer" + icon = 'icons/obj/chemical.dmi' + item_flags = NOBLUDGEON + w_class = WEIGHT_CLASS_TINY + grind_results = list(/datum/reagent/mercury = 5) + ///The reagents datum that this object is attached to, so we know where we are when it's added to something. + var/datum/reagents/attached_to_reagents + +/obj/item/thermometer/Destroy() + QDEL_NULL(attached_to_reagents) //I have no idea how you can destroy this, but not the beaker, but here we go + return ..() + +/obj/item/thermometer/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + if(target.reagents) + if(!user.transferItemToLoc(src, target)) + return + attached_to_reagents = target.reagents + to_chat(user, "You add the [src] to the [target].") + ui_interact(usr, null) + +/obj/item/thermometer/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Thermometer", name) + ui.open() + +/obj/item/thermometer/ui_close(mob/user) + . = ..() + remove_thermometer(user) + +/obj/item/thermometer/ui_status(mob/user) + if(!(in_range(src, user))) + return UI_CLOSE + return UI_INTERACTIVE + +/obj/item/thermometer/ui_state(mob/user) + return GLOB.physical_state + +/obj/item/thermometer/ui_data(mob/user) + if(!attached_to_reagents) + ui_close(user) + var/data = list() + data["Temperature"] = round(attached_to_reagents.chem_temp) + return data + +/obj/item/thermometer/proc/remove_thermometer(mob/target) + try_put_in_hand(src, target) + attached_to_reagents = null + +/obj/item/thermometer/proc/try_put_in_hand(obj/object, mob/living/user) + to_chat(user, "You remove the [src] from the [attached_to_reagents.my_atom].") + if(!issilicon(user) && in_range(src.loc, user)) + user.put_in_hands(object) + else + object.forceMove(drop_location()) + +/obj/item/thermometer/pen + color = "#888888" diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index a2986c8042b..542c8045168 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -81,10 +81,15 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) var/impure_chem = /datum/reagent/impurity /// If the impurity is below 0.5, replace ALL of the chem with inverse_chem upon metabolising var/inverse_chem_val = 0.25 - /// What chem is metabolised when purity is below inverse_chem_val + /// What chem is metabolised when purity is below inverse_chem_val var/inverse_chem = /datum/reagent/impurity/toxic ///what chem is made at the end of a reaction IF the purity is below the recipies purity_min at the END of a reaction only var/failed_chem = /datum/reagent/consumable/failed_reaction + ///Thermodynamic vars + ///How hot this reagent burns when it's on fire - null means it can't burn + var/burning_temperature = null + ///How much is consumed when it is burnt per second + var/burning_volume = 0.5 ///Assoc list with key type of addiction this reagent feeds, and value amount of addiction points added per unit of reagent metabolzied (which means * REAGENTS_METABOLISM every life()) var/list/addiction_types = null @@ -129,6 +134,10 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_TURF, exposed_turf, reac_volume) +///Called whenever a reagent is on fire, or is in a holder that is on fire. (WIP) +/datum/reagent/proc/burn(datum/reagents/holder) + return + /// Called from [/datum/reagents/proc/metabolize] /datum/reagent/proc/on_mob_life(mob/living/carbon/M, delta_time, times_fired) current_cycle++ diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 667a185eb61..a7d0367b6f2 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -14,6 +14,8 @@ taste_description = "alcohol" metabolization_rate = 0.5 * REAGENTS_METABOLISM ph = 7.33 + burning_temperature = 2193//ethanol burns at 1970C (at it's peak) + burning_volume = 0.1 var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning /* diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 078b7778ea9..e52ac513f92 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -156,6 +156,8 @@ color = "#0000C8" taste_description = "blue" ph = 11 + burning_temperature = 20 //cold burning + burning_volume = 0.1 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED /datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/carbon/M, delta_time, times_fired) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 61e618b8dc8..06311afbfe2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -12,6 +12,12 @@ penetrates_skin = NONE ph = 7.4 + // FEED ME +/datum/reagent/blood/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) + . = ..() + if(chems.has_reagent(type, 1)) + mytray.adjustPests(rand(2,3)) + /datum/reagent/blood/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message=TRUE, touch_protection=0) . = ..() if(data && data["viruses"]) @@ -224,6 +230,14 @@ ph = 7.5 //God is alkaline chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits. Also ALSO increases instability. +/datum/reagent/water/holywater/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray) + if(chems.has_reagent(type, 1)) + mytray.adjustWater(round(chems.get_reagent_amount(type) * 1)) + mytray.adjustHealth(round(chems.get_reagent_amount(type) * 0.1)) + if(myseed) + myseed.adjust_instability(round(chems.get_reagent_amount(type) * 0.15)) + /datum/reagent/water/holywater/on_mob_metabolize(mob/living/L) ..() ADD_TRAIT(L, TRAIT_HOLY, type) @@ -1103,6 +1117,8 @@ glass_desc = "Unless you're an industrial tool, this is probably not safe for consumption." penetrates_skin = NONE ph = 4 + burning_temperature = 1725 //more refined than oil + burning_volume = 0.2 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED addiction_types = list(/datum/addiction/alcohol = 4) @@ -1711,6 +1727,8 @@ reagent_state = LIQUID color = "#2D2D2D" taste_description = "oil" + burning_temperature = 1200//Oil is crude + burning_volume = 0.05 //but has a lot of hydrocarbons chemical_flags = REAGENT_CAN_BE_SYNTHESIZED addiction_types = null @@ -2573,3 +2591,16 @@ M.adjustBruteLoss(2 * REM * delta_time, FALSE) ..() +/datum/reagent/universal_indicator + name = "Universal indicator" + description = "A solution that can be used to create pH paper booklets, or sprayed on things to colour them by their pH." + taste_description = "a strong chemical taste" + color = "#1f8016" + +//Colours things by their pH +/datum/reagent/universal_indicator/expose_atom(atom/exposed_atom, reac_volume) + . = ..() + if(exposed_atom.reagents) + var/color + CONVERT_PH_TO_COLOR(exposed_atom.reagents.ph, color) + exposed_atom.add_atom_colour(color, WASHABLE_COLOUR_PRIORITY) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 6ad017e4988..00090822dbb 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -216,8 +216,14 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" self_consuming = TRUE + burning_volume = 0.05 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/cryostylane/burn(datum/reagents/holder) + if(holder.has_reagent(/datum/reagent/oxygen)) + burning_temperature = 0//king chilly + return + burning_temperature = null /datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M, delta_time, times_fired) //TODO: code freezing into an ice cube if(M.reagents.has_reagent(/datum/reagent/oxygen)) @@ -242,6 +248,8 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" self_consuming = TRUE + burning_temperature = null + burning_volume = 0.05 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED /datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M, delta_time, times_fired) @@ -253,6 +261,12 @@ humi.adjust_coretemperature(15 * REM * delta_time) ..() +/datum/reagent/pyrosium/burn(datum/reagents/holder) + if(holder.has_reagent(/datum/reagent/oxygen)) + burning_temperature = 3500 + return + burning_temperature = null + /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. name = "Teslium" description = "An unstable, electrically-charged metallic slurry. Periodically electrocutes its victim, and makes electrocutions against them more deadly. Excessively heating teslium results in dangerous destabilization. Do not allow to come into contact with water." diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 20a6b9bc7f6..7c2dae37565 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -78,6 +78,8 @@ material = /datum/material/plasma penetrates_skin = NONE ph = 4 + burning_temperature = 4500//plasma is hot!! + burning_volume = 0.3//But burns fast chemical_flags = REAGENT_CAN_BE_SYNTHESIZED /datum/reagent/toxin/plasma/on_new(data) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 13fe4af901d..7cef6219221 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -21,7 +21,6 @@ ///Determines if a chemical reaction can occur inside a mob var/mob_react = TRUE - ///The message shown to nearby people upon mixing, if applicable var/mix_message = "The solution begins to bubble." ///The sound played upon mixing, if applicable diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index be1bcdca8be..e879e7a12a9 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -643,3 +643,50 @@ for(var/i in 1 to created_volume) new /obj/item/stack/sheet/mineral/silver(location) +//////////////////////////////////// Water //////////////////////////////////////////////// + +/datum/chemical_reaction/ice + results = list(/datum/reagent/consumable/ice = 1.09)//density + required_reagents = list(/datum/reagent/water = 1) + is_cold_recipe = TRUE + required_temp = 274 // So we can be sure that basic ghetto rigged stuff can freeze + optimal_temp = 200 + overheat_temp = 0 + optimal_ph_min = 0 + optimal_ph_max = 14 + thermic_constant = 0 + H_ion_release = 0 + rate_up_lim = 50 + purity_min = 0 + mix_message = "The solution freezes up into ice!" + reaction_flags = REACTION_COMPETITIVE + +/datum/chemical_reaction/water + results = list(/datum/reagent/water = 0.92)//rough density excahnge + required_reagents = list(/datum/reagent/consumable/ice = 1) + required_temp = 275 + optimal_temp = 350 + overheat_temp = 99999 + optimal_ph_min = 0 + optimal_ph_max = 14 + thermic_constant = 0 + H_ion_release = 0 + rate_up_lim = 50 + purity_min = 0 + mix_message = "The ice melts back into water!" + +//////////////////////////////////// + +/datum/chemical_reaction/universal_indicator + results = list(/datum/reagent/universal_indicator = 3)//rough density excahnge + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/ethanol = 1, /datum/reagent/iodine = 1) + required_temp = 274 + optimal_temp = 350 + overheat_temp = 99999 + optimal_ph_min = 0 + optimal_ph_max = 14 + thermic_constant = 0 + H_ion_release = 0 + rate_up_lim = 50 + purity_min = 0 + mix_message = "The mixture's colors swirl together." diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 547e169fe22..011bd9c73d2 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -32,9 +32,6 @@ RegisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), .proc/on_reagent_change) RegisterSignal(reagents, COMSIG_PARENT_QDELETING, .proc/on_reagents_del) -/obj/item/reagent_containers/Destroy() - return ..() - /obj/item/reagent_containers/attack(mob/living/M, mob/living/user, params) if (!user.combat_mode) return diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index eb51a616cb1..f28719a911a 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -86,6 +86,20 @@ reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") + //Cooling method + if(istype(I, /obj/item/extinguisher)) + var/obj/item/extinguisher/extinguisher = I + if(extinguisher.safety) + return + if (extinguisher.reagents.total_volume < 1) + to_chat(user, "\The [extinguisher] is empty!") + return + var/cooling = (0 - reagents.chem_temp) * extinguisher.cooling_power * 2 + reagents.expose_temperature(cooling) + to_chat(user, "You cool the [name] with the [I]!") + playsound(loc, 'sound/effects/extinguish.ogg', 75, TRUE, -3) + extinguisher.reagents.remove_all(1) + if(istype(I, /obj/item/food/egg)) //breaking eggs var/obj/item/food/egg/E = I if(reagents) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9f6549a0fec..05f4baea219 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -129,6 +129,21 @@ if(hotness && reagents) reagents.expose_temperature(hotness) to_chat(user, "You heat [name] with [I]!") + + //Cooling method + if(istype(I, /obj/item/extinguisher)) + var/obj/item/extinguisher/extinguisher = I + if(extinguisher.safety) + return + if (extinguisher.reagents.total_volume < 1) + to_chat(user, "\The [extinguisher] is empty!") + return + var/cooling = (0 - reagents.chem_temp) * extinguisher.cooling_power * 2 + reagents.expose_temperature(cooling) + to_chat(user, "You cool the [name] with the [I]!") + playsound(loc, 'sound/effects/extinguish.ogg', 75, TRUE, -3) + extinguisher.reagents.remove_all(1) + return ..() /obj/item/reagent_containers/spray/verb/empty() diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 41ca84d9f45b36794c66b57054f13b056685a735..5260ae293e5c2ae055653fc0c4b301fed636588e 100644 GIT binary patch literal 58006 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 literal 53868 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

R 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 E0CjVuvj6}9 diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 44fbde672188c8f400ab06b2211723727f998387..40354b63abc7663508b5af4f1d8109d5498f03e8 100644 GIT binary patch delta 10485 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 XGmACFQ7vl+VLr+VZ(mo-nT7p7J~iS; delta 10072 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 bMo%ghaGqHM{OVW*p94 diff --git a/tgui/packages/tgui/constants.js b/tgui/packages/tgui/constants.js index 92c1f80e6c0..8a094bb4c6b 100644 --- a/tgui/packages/tgui/constants.js +++ b/tgui/packages/tgui/constants.js @@ -30,6 +30,11 @@ export const COLORS = { burn: '#e67e22', brute: '#e74c3c', }, + // reagent / chemistry related colours + reagent: { + acidicbuffer: "#fbc314", + basicbuffer: "#3853a4", + }, }; // Colors defined in CSS diff --git a/tgui/packages/tgui/interfaces/ChemHeater.js b/tgui/packages/tgui/interfaces/ChemHeater.js index b70e6ba3eac..2686b0dce62 100644 --- a/tgui/packages/tgui/interfaces/ChemHeater.js +++ b/tgui/packages/tgui/interfaces/ChemHeater.js @@ -1,12 +1,11 @@ -import { resolveAsset } from '../assets'; import { round, toFixed } from 'common/math'; +import { resolveAsset } from '../assets'; import { useBackend } from '../backend'; -import { AnimatedNumber, Box, Button, NumberInput, Section, ProgressBar, Table, RoundGauge, Flex, Icon, TextArea } from '../components'; -import { TableCell, TableRow } from '../components/Table'; +import { AnimatedNumber, Box, Button, Flex, Icon, NumberInput, ProgressBar, RoundGauge, Section, Table } from '../components'; +import { COLORS } from '../constants'; import { Window } from '../layouts'; import { BeakerContents } from './common/BeakerContents'; - export const ChemHeater = (props, context) => { const { act, data } = useBackend(context); const { @@ -26,7 +25,7 @@ export const ChemHeater = (props, context) => { beakerContents = [], activeReactions = [], } = data; - return ( + return ( @@ -51,17 +50,15 @@ export const ChemHeater = (props, context) => { )}> - + Heat - + Buffers - - + + { onDrag={(e, value) => act('disp_vol', { target: value, })} /> - + - - + + Target: - - + + { onDrag={(e, value) => act('temperature', { target: value, })} /> - - + + Acidic: - - + +
{!!isBeakerLoaded && ( @@ -175,7 +172,7 @@ export const ChemHeater = (props, context) => { {(_, value) => ( - { No active reactions. ) || ( - - - +
+ + Reaction - - + + {upgradeLevel < 4 ? "Status" : "Reaction quality"} - - + + Target - - + + {activeReactions.map(reaction => ( - - + + {reaction.name} - - + + {upgradeLevel < 4 && ( - ) || ( {(_, value) => ( - { )} )} - - + + {upgradeLevel > 2 && ( {reaction.targetVol}u ) || ( {reaction.targetVol}u )} - - + + ))} - +
)} )} {tutorialMessage && ( -
- - {tutorialMessage} + + {tutorialMessage}
)}
{ title="Power" buttons={( <> + {!!data.chemHacked && ( +