//Generates a markdown txt file for use with the wiki /proc/find_reagent(input) //prefer types! . = GLOB.chemical_reagents_list[text2path(input)] if(.) return . = GLOB.name2reagent[ckey(input)] /client/proc/generate_wikichem_list() set name = "Generate Wikichems" set category = "Debug" set desc = "Generate a huge loglist of all the chems. Do not click unless you want lag." var/prefix = "|Name | Reagents | Reaction vars | Description | Chem properties |\n|---|---|---|-----------|---|\n" var/input_reagent = replacetext(lowertext(input("Input the name/type of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent type is a lowercase, no spaces / underscored version of the name if(input_reagent) var/input_reagent2 = find_reagent(input_reagent) if(!input_reagent2) to_chat(usr, "Unable to find reagent, stopping proc.") var/single_parse = generate_chemwiki_line(input_reagent2, input_reagent, FALSE) text2file(single_parse, "[GLOB.log_directory]/chem_parse.md") to_chat(usr, "[single_parse].") single_parse = generate_chemwiki_line(input_reagent2, input_reagent, FALSE) text2file(single_parse, "[GLOB.log_directory]/chem_parse.md") to_chat(usr, "[single_parse].") to_chat(usr, "Saved line to (wherever your root folder is, i.e. where the DME is)/[GLOB.log_directory]/chem_parse.md OR use the Get Current Logs verb under the Admin tab. (if you click Open, and it does nothing, that's because you've not set a .md default program! Try downloading it instead, and use that file to set a default program! Also have a cute day.)") //Do things here return to_chat(usr, "Generating big list") message_admins("Someone pressed the lag button. (Generate Wikichems)") ///datum/reagent/medicine, /datum/reagent/toxin, /datum/reagent/consumable, /datum/reagent/plantnutriment, /datum/reagent/uranium, ///datum/reagent/colorful_reagent, /datum/reagent/mutationtoxin, /datum/reagent/fermi, /datum/reagent/drug, /datum/reagent/impure //Probably not the most eligant of solutions. to_chat(usr, "Attempting reagent scan. Length of list [LAZYLEN(GLOB.chemical_reagents_list)*2]") var/datum/reagent/R var/tally = 0 var/processCR = TRUE //Process reactions first var/medicine = "" var/toxin = "" var/consumable = "" var/plant = "" var/uranium = "" var/colours = "" var/muta = "" var/fermi = "" var/remainder = "" var/drug = "" var/basic = "" var/upgraded = "" var/drinks = "" var/alco = "" var/grinded = "" var/blob = "" var/impure = "" //Chem_dispencer var/obj/machinery/chem_dispenser/C var/list/dispensable_reagents = initial(C.dispensable_reagents) var/list/components = initial(C.upgrade_reagents) + initial(C.upgrade_reagents2) + initial(C.upgrade_reagents3) var/list/grind = list( /datum/reagent/bluespace, /datum/reagent/gold, /datum/reagent/toxin/plasma, /datum/reagent/uranium ) //Bartender var/obj/machinery/chem_dispenser/drinks/D var/dispence_drinks = initial(D.dispensable_reagents) var/obj/machinery/chem_dispenser/drinks/beer/B var/dispence_alco = initial(B.dispensable_reagents) var/breakout = FALSE for(var/i = 1, i <= 2, i+=1) for(var/X in GLOB.chemical_reagents_list) R = GLOB.chemical_reagents_list[X] if(!R.description) //No description? It's not worth my time. continue for(var/Y in dispensable_reagents) //Why do you have to do this if(R.type == Y) basic += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in components) if(R.type == Y) upgraded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_drinks) if(R.type == Y) drinks += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_alco) if(R.type == Y) alco += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in grind) if(R.type == Y) grinded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue if(breakout) breakout = FALSE continue if(istype(R, /datum/reagent/medicine)) medicine += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/toxin)) toxin += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/consumable)) consumable += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/plantnutriment)) plant += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/uranium)) uranium += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/colorful_reagent)) colours += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/mutationtoxin)) muta += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/fermi)) fermi += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/drug)) drug += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/blob)) blob += generate_chemwiki_line(R, X, processCR) else if(istype(R, /datum/reagent/impure)) impure += generate_chemwiki_line(R, X, processCR) else remainder += generate_chemwiki_line(R, X, processCR) tally++ if((tally%50)==0) to_chat(usr, "[tally] of [LAZYLEN(GLOB.chemical_reagents_list)*2] done.") processCR = FALSE to_chat(usr, "finished chems") var/wholeString = ("\n# DISPENCEABLE REAGENTS\n\n[prefix][basic]\n\n# COMPONENT REAGENTS\n\n[prefix][upgraded]\n\n# GROUND REAGENTS\n\n[prefix][grinded]\n") wholeString += ("\n# MEDICINE:\n\n[prefix][medicine]\n\n# TOXIN:\n\n[prefix][toxin]\n\n# DRUGS\n\n[prefix][drug]\n\n# FERMI\n\nThese chems lie on the cutting edge of chemical technology, and as such are not recommended for beginners!\n\n[prefix][fermi]\n\n# IMPURE REAGENTS\n\n[prefix][impure]\n\n# GENERAL REAGENTS\n\n[prefix][remainder]\n\n# DISPENCEABLE SOFT DRINKS\n\n[prefix][drinks]\n\n# DISPENCEABLE HARD DRINKS\n\n[prefix][alco]\n\n# CONSUMABLE\n\n[prefix][consumable]\n\n# PLANTS\n\n[prefix][plant]\n\n# URANIUM\n\n[prefix][uranium]\n\n# COLOURS\n\n[prefix][colours]\n\n# RACE MUTATIONS\n\n[prefix][muta]\n\n\n# BLOB REAGENTS\n\n[prefix][blob]\n") prefix = "|Name | Reagents | Reaction vars | Description |\n|---|---|---|----------|\n" var/CRparse = "" to_chat(usr, "starting reactions") //generate the reactions that we missed from before for(var/reagent in GLOB.chemical_reactions_list) for(var/datum/chemical_reaction/CR in GLOB.chemical_reactions_list[reagent]) CRparse += generate_chemreactwiki_line(CR) wholeString += ("\n# CHEMICAL REACTIONS\n\n[prefix][CRparse]\n") text2file(wholeString, "[GLOB.log_directory]/chem_parse.md") to_chat(usr, "finished reactions") to_chat(usr, "Saved file to (wherever your root folder is, i.e. where the DME is)/[GLOB.log_directory]/chem_parse.md OR use the Get Current Logs verb under the Admin tab. (if you click Open, and it does nothing, that's because you've not set a .md default program! Try downloading it instead, and use that file to set a default program! Also have a cute day.)") ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Generate the big list of reagent based reactions. /proc/generate_chemwiki_line(datum/reagent/R, X, processCR) //name | Reagent pH | reagents | reaction temp | explosion temp | pH range | Kinetics | description | OD level | Addiction level | Metabolism rate | impure chem | inverse chem var/datum/chemical_reaction/CR = get_chemical_reaction(R.type) if((!CR && processCR) || (CR && !processCR)) // Do reactions first. return "" var/outstring = "|
!\[[R.color]\](https://placehold.it/15/[copytext_char(R.color, 2, 8)]/000000?text=+)[R.name]
pH: [R.pH] | " var/datum/reagent/R3 if(CR) outstring += " | " else outstring += "N/A | " //Temp, Explosions and pH if(CR) outstring += "| " else outstring += " | " //Description, OD, Addict, Meta outstring += "[R.description] | |\n" return outstring //Generate the big list of reaction based reactions. //|Name | Reagents | Reaction vars | Description | Chem properties /proc/generate_chemreactwiki_line(datum/chemical_reaction/CR) if(CR.results.len) //Handled prior return var/outstring = "|[CR.name] | | | fill in manually " outstring += "