From 7f343a2fecbefd2df79a2de7b374cb91b71370cc Mon Sep 17 00:00:00 2001 From: Doubleumc Date: Fri, 31 May 2024 17:29:39 -0400 Subject: [PATCH] initial --- code/__HELPERS/lists.dm | 2 +- code/__HELPERS/unsorted.dm | 377 ------------------ code/game/machinery/rechargestation.dm | 4 +- code/game/machinery/spaceheater.dm | 2 +- code/modules/admin/topic/topic.dm | 2 +- code/modules/admin/topic/topic_events.dm | 8 +- code/modules/admin/verbs/mooc.dm | 5 +- code/modules/power/smes_construction.dm | 2 +- .../chemistry_machinery/acid_harness.dm | 58 +-- .../chemistry_machinery/chem_simulator.dm | 16 +- 10 files changed, 49 insertions(+), 427 deletions(-) diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index a1b38b48f754..856a0a492cbb 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -35,7 +35,7 @@ /proc/listgetindex(list/list,index) if(istype(list) && list.len) if(isnum(index)) - if(InRange(index,1,list.len)) + if(ISINRANGE(index,1,list.len)) return list[index] else if(list[index]) return list[index] diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 88bc3e8af9f5..cea6353699ad 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -3,8 +3,6 @@ */ // GLOBAL DEFINES // -#define is_hot(I) (I?:heat_source) - //Whether or not the given item counts as sharp in terms of dealing damage #define is_sharp(I) (isitem(I) && I?:sharp && I?:edge) @@ -17,9 +15,6 @@ HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) || istype(W, /obj/item/tool/pen ) || istype(W, /obj/item/tool/shovel)) \ ) -//Makes sure MIDDLE is between LOW and HIGH. If not, it adjusts it. Returns the adjusted value. -#define between(low, middle, high) (max(min(middle, high), low)) - //Offuscate x for coord system #define obfuscate_x(x) ((x) + GLOB.obfs_x) @@ -61,16 +56,6 @@ // GLOBAL PROCS // -//Returns the middle-most value -/proc/dd_range(low, high, num) - return max(low,min(high,num)) - -//Returns whether or not A is the middle most value -/proc/InRange(A, lower, upper) - if(A < lower) return 0 - if(A > upper) return 0 - return 1 - /// Gives X position on pixel grid of an object, accounting for offsets /proc/get_pixel_position_x(atom/subject, relative = FALSE) . = subject.pixel_x + subject.base_pixel_x @@ -245,9 +230,6 @@ -/proc/sign(x) - return x!=0?x/abs(x):0 - //Returns whether or not a player is a guest using their ckey as an input /proc/IsGuestKey(key) if (findtext(key, "Guest-", 1, 7) != 1) //was findtextEx @@ -295,61 +277,6 @@ search_id = 0 return 1 - - -//Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame() -//Last modified by Carn -/mob/proc/rename_self(role, allow_numbers=0) - var/oldname = real_name - var/time_passed = world.time - - var/newname - for(var/i=1,i<=3,i++) //we get 3 attempts to pick a suitable name. - newname = input(src,"You are a [role]. Would you like to change your name to something else?", "Name change",oldname) as text - if((world.time-time_passed)>300) - return //took too long - newname = reject_bad_name(newname,allow_numbers) //returns null if the name doesn't meet some basic requirements. Tidies up a few other things like bad-characters. - for(var/mob/living/M in GLOB.alive_mob_list) - if(M == src) - continue - - if(!newname || M.real_name == newname) - newname = null - break - - if(newname) - break //That's a suitable name! - to_chat(src, "Sorry, that [role]-name wasn't appropriate, please try another. It's possibly too long/short, has bad characters or is already taken.") - - if(!newname) //we'll stick with the oldname then - return - - fully_replace_character_name(oldname,newname) - -/proc/get_sorted_mobs() - var/list/old_list = getmobs() - var/list/Dead_list = list() - var/list/keyclient_list = list() - var/list/key_list = list() - var/list/logged_list = list() - for(var/named in old_list) - var/mob/M = old_list[named] - if(isobserver(M) || M.stat == 2) - Dead_list |= M - else if(M.key && M.client) - keyclient_list |= M - else if(M.key) - key_list |= M - else - logged_list |= M - old_list.Remove(named) - var/list/new_list = list() - new_list += keyclient_list - new_list += key_list - new_list += logged_list - new_list += Dead_list - return new_list - //Returns a list of all mobs with their name /proc/getmobs() var/list/mobs = sortmobs() @@ -378,150 +305,6 @@ return creatures -/proc/getxenos() - var/list/mobs = sortxenos() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if(isobserver(M)) - name += " \[ghost\]" - else if(M.stat == DEAD) - name += " \[dead\]" - creatures[name] = M - return creatures - -/proc/getpreds() - var/list/mobs = sortpreds() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(!isyautja(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/gethumans() - var/list/mobs = sorthumans() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getsurvivors() - var/list/mobs = sortsurvivors() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getertmembers() - var/list/mobs = sortertmembers() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getsynths() - var/list/mobs = sortsynths() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - /proc/get_multi_vehicles() var/list/multi_vehicles = GLOB.all_multi_vehicles.Copy() var/list/names = list() @@ -548,22 +331,6 @@ return vehicles -/proc/get_holograms() - var/list/holograms = list() - var/list/namecounts = list() - for(var/i in GLOB.hologram_list) - var/mob/hologram/H = i - var/name = H.name - if(name in namecounts) - namecounts[name]++ - name = "[name] #([namecounts[name]])" - else - namecounts[name] = 1 - - holograms[name] = H - - return holograms - //Orders mobs by type then by name /proc/sortmobs() var/list/moblist = list() @@ -590,62 +357,6 @@ moblist += friend return moblist -/proc/sortxenos() - var/list/xenolist = list() - var/list/sortmob = sortAtom(GLOB.xeno_mob_list) - for(var/mob/living/carbon/xenomorph/M in sortmob) - if(!M.client) - continue - xenolist.Add(M) - return xenolist - -/proc/sortpreds() - var/list/predlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || !M.species.name == "Yautja") - continue - predlist.Add(M) - return predlist - -/proc/sorthumans() - var/list/humanlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || M.species.name == "Yautja") - continue - humanlist.Add(M) - return humanlist - -/proc/sortsurvivors() - var/list/survivorlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || M.species.name == "Yautja") - continue - if(M.faction == FACTION_SURVIVOR) - survivorlist.Add(M) - return survivorlist - -/proc/sortertmembers() - var/list/ertmemberlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client) - continue - if(M.faction in FACTION_LIST_ERT) - ertmemberlist.Add(M) - return ertmemberlist - -/proc/sortsynths() - var/list/synthlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || !issynth(M)) - continue - synthlist.Add(M) - return synthlist - /proc/key_name(whom, include_link = null, include_name = 1, highlight_special_characters = 1) var/mob/M var/client/C @@ -1601,22 +1312,6 @@ GLOBAL_LIST_INIT(WALLITEMS, list( return TRUE return FALSE -// Returns only the perimeter of the block given by the min and max turfs -/proc/blockhollow(turf/min, turf/max) - var/list/perimeter_turfs = list() - - // Upper/lower perimeters - for(var/x_coord = min.x to max.x) - perimeter_turfs += locate(x_coord, min.y, min.z) - perimeter_turfs += locate(x_coord, max.y, min.z) - - // Left/right perimeters - for(var/y_coord = min.y + 1 to max.y - 1) - perimeter_turfs += locate(min.x, y_coord, min.z) - perimeter_turfs += locate(max.x, y_coord, min.z) - - return perimeter_turfs - /proc/flick_overlay(atom/target, overlay, time) target.overlays += overlay addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_timed_overlay), target, overlay), time) @@ -1624,67 +1319,6 @@ GLOBAL_LIST_INIT(WALLITEMS, list( /proc/remove_timed_overlay(atom/target, overlay) target.overlays -= overlay -/* - Returns a list of random-looking, zero-sum variances. - - Imagine a straight line divided up into n segments, - then divide each segment into 2 subsegments again, so each original segment gets "its own point" that divides the subsegments - Then displace the first segment's dividing point by e.g. 5. - Then displace the second segment's dividing point by -5. - Then displace the third segment's dividing point by 5, and so on, alternating between a displacement of 5 and -5 - (If there's an odd number of segments just don't displace the last point at all) - - At the end, you'll have a zig-zaggy line. You then go through each segment end and - take away/add some random amount of displacement from its point. If you keep track of how much - net displacement has been added/removed, you can distribute it among other points - and end up with net 0 displacement (i.e. 0 total variance) - - Basically, this is what happens: https://i.imgur.com/AuY7HHd.png -*/ -/proc/get_random_zero_sum_variances(amount, max_variance) - // Displace each "point" to max variance - var/list/variances[amount] - for(var/i in 1 to variances.len) - if(i == variances.len && (variances.len % 2)) - variances[i] = 0 - else - variances[i] = (i % 2 ? 1 : -1) * max_variance - - // Jiggle each variance a random amount towards the "center line"/0 variance - var/net_displacement = 0 - for(var/i in 1 to variances.len) - var/to_redistribute = (i % 2 ? -1 : 1) * rand(0, max_variance/2) - - net_displacement += to_redistribute - variances[i] += to_redistribute - - // Lucky! Everything jiggled towards 0 in a way that left 0 net displacement - if(!net_displacement) - return variances - - // Redistribute the net displacement evenly on the side of the center line that needs it - // Only half the points are gonna be affected. - var/to_redistribute = abs(ceil(net_displacement / (variances.len/2))) - for(var/i in 1 to variances.len) - if(!net_displacement) - break - - // Positive net displacement, only distribute to points that were given negative variance to begin with - if(net_displacement > 0 && !(i % 2)) - variances[i] -= min(abs(net_displacement), to_redistribute) - net_displacement -= to_redistribute - // Negative net displacement, only distribute to points that were given positive variance to begin with - else if(net_displacement < 0 && i % 2) - variances[i] += min(abs(net_displacement), to_redistribute) - net_displacement += to_redistribute - - return variances - -/proc/check_bitflag(flag, bit) - if(flag & bit) - return TRUE - return FALSE - // A proc purely for a callback that returns TRUE (and does nothing else) /proc/_callback_true() return TRUE @@ -1867,11 +1501,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) #define UNTIL(X) while(!(X)) stoplag() -/proc/IsValidSrc(datum/D) - if(istype(D)) - return !QDELETED(D) - return FALSE - //Repopulates sortedAreas list /proc/repopulate_sorted_areas() GLOB.sorted_areas = list() @@ -1950,12 +1579,6 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( M.regenerate_icons() return O -/proc/convert_to_json_text(json_file_string) - var/json_file = file(json_file_string) - json_file = file2text(json_file) - json_file = json_decode(json_file) - return json_file - ///Returns a list of all items of interest with their name /proc/getpois(mobs_only = FALSE, skip_mindless = FALSE, specify_dead_role = TRUE) var/list/mobs = sortmobs() diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 4b5e02dc8b8b..2e98eb7e88e9 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -73,9 +73,9 @@ var/charge_diff = max_internal_charge - current_internal_charge // OK we have charge differences charge_diff = charge_diff / CELLRATE // Deconvert from Charge to Joules if(chargemode) // Decide if use passive or active power - charge_diff = between(0, charge_diff, charging_cap_active) // Trim the values to limits + charge_diff = clamp(charge_diff, 0, charging_cap_active) // Trim the values to limits else // We should have load for this tick in Watts - charge_diff = between(0, charge_diff, charging_cap_passive) + charge_diff = clamp(charge_diff, 0, charging_cap_passive) charge_diff += 50 // 50W for circuitry diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index b4d5b7dece20..64c0023e6a09 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -127,7 +127,7 @@ var/value = text2num(href_list["val"]) // limit to 0-90 degC - set_temperature = dd_range(T0C, T0C + 90, set_temperature + value) + set_temperature = clamp(set_temperature + value, T0C, T0C + 90) if("cellremove") if(open && cell && !usr.get_active_hand()) diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index ecef2627ed3c..000d94e70866 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -1950,7 +1950,7 @@ alert("Removed:\n" + jointext(removed_paths, "\n")) var/list/offset = splittext(href_list["offset"],",") - var/number = dd_range(1, 100, text2num(href_list["object_count"])) + var/number = clamp(text2num(href_list["object_count"]), 1, 100) var/X = offset.len > 0 ? text2num(offset[1]) : 0 var/Y = offset.len > 1 ? text2num(offset[2]) : 0 var/Z = offset.len > 2 ? text2num(offset[3]) : 0 diff --git a/code/modules/admin/topic/topic_events.dm b/code/modules/admin/topic/topic_events.dm index ddb33a2ccc3f..eabd98fd3c28 100644 --- a/code/modules/admin/topic/topic_events.dm +++ b/code/modules/admin/topic/topic_events.dm @@ -165,8 +165,8 @@ alert("Select fewer paths, (max 1)") return - var/humans_to_spawn = dd_range(1, 100, text2num(href_list["object_count"])) - var/range_to_spawn_on = dd_range(0, 10, text2num(href_list["object_range"])) + var/humans_to_spawn = clamp(text2num(href_list["object_count"]), 1, 100) + var/range_to_spawn_on = clamp(text2num(href_list["object_range"]), 0, 10) var/free_the_humans = FALSE var/offer_as_ert = FALSE @@ -299,8 +299,8 @@ alert("Select fewer xeno paths, (max 1)") return - var/xenos_to_spawn = dd_range(1, 100, text2num(href_list["object_count"])) - var/range_to_spawn_on = dd_range(0, 10, text2num(href_list["object_range"])) + var/xenos_to_spawn = clamp(text2num(href_list["object_count"]), 1, 100) + var/range_to_spawn_on = clamp(text2num(href_list["object_range"]), 0, 10) var/free_the_xenos = FALSE var/offer_as_ert = FALSE diff --git a/code/modules/admin/verbs/mooc.dm b/code/modules/admin/verbs/mooc.dm index 22d9d2530924..dc9f39205566 100644 --- a/code/modules/admin/verbs/mooc.dm +++ b/code/modules/admin/verbs/mooc.dm @@ -20,9 +20,8 @@ if(M.client && (!M.client.admin_holder || !(M.client.admin_holder.rights & R_MOD))) // Send to marines who are non-staff to_chat_spaced(M, margin_top = 0.5, margin_bottom = 0.5, html = SPAN_MOOC("MOOC: [src.key]([src.admin_holder.rank]): [msg]")) - var/list/synthetics = getsynths() - for(var/mob/M in synthetics) - if(M.client && !M.client.admin_holder) + for(var/mob/M in GLOB.human_mob_list) + if(issynth(M) && M.client && !M.client.admin_holder) to_chat_spaced(M, margin_top = 0.5, margin_bottom = 0.5, html = SPAN_MOOC("MOOC: [src.key]([src.admin_holder.rank]): [msg]")) for(var/mob/dead/observer/M in GLOB.observer_list) diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index fdfc18390dbe..e3324efbbc1a 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -39,7 +39,7 @@ capacity += C.ChargeCapacity input_level_max += C.IOCapacity output_level_max += C.IOCapacity - charge = between(0, charge, capacity) + charge = clamp(charge, 0, capacity) return 1 else return 0 diff --git a/code/modules/reagents/chemistry_machinery/acid_harness.dm b/code/modules/reagents/chemistry_machinery/acid_harness.dm index 4fa087efc54f..874737ebef33 100644 --- a/code/modules/reagents/chemistry_machinery/acid_harness.dm +++ b/code/modules/reagents/chemistry_machinery/acid_harness.dm @@ -107,41 +107,41 @@ // damage - damagelist["Brute"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRUTE), "value" = ACID_SCAN_DAMAGE_BRUTE) - damagelist["Burn"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BURN), "value" = ACID_SCAN_DAMAGE_BURN) - damagelist["Toxin"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_TOXIN), "value" = ACID_SCAN_DAMAGE_TOXIN) - damagelist["Oxygen"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_OXYGEN), "value" = ACID_SCAN_DAMAGE_OXYGEN) - damagelist["Genetic"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_CLONE), "value" = ACID_SCAN_DAMAGE_CLONE) - damagelist["Heart"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_HEART), "value" = ACID_SCAN_DAMAGE_HEART) - damagelist["Liver"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LIVER), "value" = ACID_SCAN_DAMAGE_LIVER) - damagelist["Lungs"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LUNGS), "value" = ACID_SCAN_DAMAGE_LUNGS) - damagelist["Kidneys"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_KIDNEYS), "value" = ACID_SCAN_DAMAGE_KIDNEYS) - damagelist["Brain"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRAIN), "value" = ACID_SCAN_DAMAGE_BRAIN) + damagelist["Brute"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRUTE), "value" = ACID_SCAN_DAMAGE_BRUTE) + damagelist["Burn"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BURN), "value" = ACID_SCAN_DAMAGE_BURN) + damagelist["Toxin"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_TOXIN), "value" = ACID_SCAN_DAMAGE_TOXIN) + damagelist["Oxygen"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_OXYGEN), "value" = ACID_SCAN_DAMAGE_OXYGEN) + damagelist["Genetic"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_CLONE), "value" = ACID_SCAN_DAMAGE_CLONE) + damagelist["Heart"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_HEART), "value" = ACID_SCAN_DAMAGE_HEART) + damagelist["Liver"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LIVER), "value" = ACID_SCAN_DAMAGE_LIVER) + damagelist["Lungs"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LUNGS), "value" = ACID_SCAN_DAMAGE_LUNGS) + damagelist["Kidneys"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_KIDNEYS), "value" = ACID_SCAN_DAMAGE_KIDNEYS) + damagelist["Brain"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRAIN), "value" = ACID_SCAN_DAMAGE_BRAIN) // conditions - conditionslist["Vitals Level"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_VITALS), "value" = ACID_SCAN_CONDITION_VITALS) - conditionslist["Bleeding"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING), "value" = ACID_SCAN_CONDITION_BLEEDING) - conditionslist["Internal"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING_INTERNAL), "value" = ACID_SCAN_CONDITION_BLEEDING_INTERNAL) - conditionslist["Bloodloss"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLOODLOSS_HIGH), "value" = ACID_SCAN_CONDITION_BLOODLOSS_HIGH) - conditionslist["Fracture"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_FRACTURE), "value" = ACID_SCAN_CONDITION_FRACTURE) - conditionslist["Splinted"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_SPLINT), "value" = ACID_SCAN_CONDITION_SPLINT) - conditionslist["Organ Damage"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_DAMAGED), "value" = ACID_SCAN_CONDITION_ORGAN_DAMAGED) - conditionslist["Organ Failure"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_FAILURE), "value" = ACID_SCAN_CONDITION_ORGAN_FAILURE) - conditionslist["Death"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEATH), "value" = ACID_SCAN_CONDITION_DEATH) - conditionslist["Defibrillation"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEFIB), "value" = ACID_SCAN_CONDITION_DEFIB) - conditionslist["Concussion"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_CONCUSSION), "value" = ACID_SCAN_CONDITION_CONCUSSION) - conditionslist["Intoxication"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_INTOXICATION), "value" = ACID_SCAN_CONDITION_INTOXICATION) - conditionslist["Foreign Object"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_FOREIGN_OBJECT), "value" = ACID_SCAN_CONDITION_FOREIGN_OBJECT) + conditionslist["Vitals Level"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_VITALS), "value" = ACID_SCAN_CONDITION_VITALS) + conditionslist["Bleeding"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING), "value" = ACID_SCAN_CONDITION_BLEEDING) + conditionslist["Internal"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING_INTERNAL), "value" = ACID_SCAN_CONDITION_BLEEDING_INTERNAL) + conditionslist["Bloodloss"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLOODLOSS_HIGH), "value" = ACID_SCAN_CONDITION_BLOODLOSS_HIGH) + conditionslist["Fracture"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_FRACTURE), "value" = ACID_SCAN_CONDITION_FRACTURE) + conditionslist["Splinted"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_SPLINT), "value" = ACID_SCAN_CONDITION_SPLINT) + conditionslist["Organ Damage"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_DAMAGED), "value" = ACID_SCAN_CONDITION_ORGAN_DAMAGED) + conditionslist["Organ Failure"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_FAILURE), "value" = ACID_SCAN_CONDITION_ORGAN_FAILURE) + conditionslist["Death"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEATH), "value" = ACID_SCAN_CONDITION_DEATH) + conditionslist["Defibrillation"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEFIB), "value" = ACID_SCAN_CONDITION_DEFIB) + conditionslist["Concussion"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_CONCUSSION), "value" = ACID_SCAN_CONDITION_CONCUSSION) + conditionslist["Intoxication"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_INTOXICATION), "value" = ACID_SCAN_CONDITION_INTOXICATION) + conditionslist["Foreign Object"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_FOREIGN_OBJECT), "value" = ACID_SCAN_CONDITION_FOREIGN_OBJECT) // vitals - vitalslist["Optimal"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_OPTIMAL), "value" = ACID_VITALS_OPTIMAL) - vitalslist["Nominal"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_NOMINAL), "value" = ACID_VITALS_NOMINAL) - vitalslist["Low"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_DROPPING), "value" = ACID_VITALS_DROPPING) - vitalslist["Very low"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_LOW), "value" = ACID_VITALS_LOW) - vitalslist["Critical"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_CRITICAL), "value" = ACID_VITALS_CRITICAL) - vitalslist["Emergency"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_EMERGENCY), "value" = ACID_VITALS_EMERGENCY) + vitalslist["Optimal"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_OPTIMAL), "value" = ACID_VITALS_OPTIMAL) + vitalslist["Nominal"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_NOMINAL), "value" = ACID_VITALS_NOMINAL) + vitalslist["Low"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_DROPPING), "value" = ACID_VITALS_DROPPING) + vitalslist["Very low"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_LOW), "value" = ACID_VITALS_LOW) + vitalslist["Critical"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_CRITICAL), "value" = ACID_VITALS_CRITICAL) + vitalslist["Emergency"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_EMERGENCY), "value" = ACID_VITALS_EMERGENCY) // compile above lists into config list diff --git a/code/modules/reagents/chemistry_machinery/chem_simulator.dm b/code/modules/reagents/chemistry_machinery/chem_simulator.dm index 3c096568e0c8..fd14698619ad 100644 --- a/code/modules/reagents/chemistry_machinery/chem_simulator.dm +++ b/code/modules/reagents/chemistry_machinery/chem_simulator.dm @@ -136,7 +136,7 @@ data["property_data_list"] = list() for(var/datum/chem_property/P in GLOB.chemical_data.research_property_data) data["property_codings"][P.name] = P.code - if(template_filter && !check_bitflag(P.category, template_filter)) + if(template_filter && !HAS_FLAG(P.category, template_filter)) continue data["property_data_list"][P.name] = P.level data["property_data_list"] = sortAssoc(data["property_data_list"]) @@ -144,18 +144,18 @@ data["target_property_list"] = list() for(var/datum/chem_property/P in creation_template) data["target_property_list"][P.name] = P.level - if(template_filter && !check_bitflag(P.category, template_filter)) + if(template_filter && !HAS_FLAG(P.category, template_filter)) continue //Override the editor level with the enabled property level data["property_data_list"][P.name] = P.level data["template_filter"] = list( - "MED" = list(check_bitflag(template_filter, PROPERTY_TYPE_MEDICINE), PROPERTY_TYPE_MEDICINE), - "TOX" = list(check_bitflag(template_filter, PROPERTY_TYPE_TOXICANT), PROPERTY_TYPE_TOXICANT), - "STI" = list(check_bitflag(template_filter, PROPERTY_TYPE_STIMULANT), PROPERTY_TYPE_STIMULANT), - "REA" = list(check_bitflag(template_filter, PROPERTY_TYPE_REACTANT), PROPERTY_TYPE_REACTANT), - "IRR" = list(check_bitflag(template_filter, PROPERTY_TYPE_IRRITANT), PROPERTY_TYPE_IRRITANT), - "MET" = list(check_bitflag(template_filter, PROPERTY_TYPE_METABOLITE), PROPERTY_TYPE_METABOLITE) + "MED" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_MEDICINE), PROPERTY_TYPE_MEDICINE), + "TOX" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_TOXICANT), PROPERTY_TYPE_TOXICANT), + "STI" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_STIMULANT), PROPERTY_TYPE_STIMULANT), + "REA" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_REACTANT), PROPERTY_TYPE_REACTANT), + "IRR" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_IRRITANT), PROPERTY_TYPE_IRRITANT), + "MET" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_METABOLITE), PROPERTY_TYPE_METABOLITE) ) else if(target && target.data && target.completed)