diff --git a/code/_compatibility/509/JSON Reader.dm b/code/_compatibility/509/JSON Reader.dm
deleted file mode 100644
index 18f739c5ef9..00000000000
--- a/code/_compatibility/509/JSON Reader.dm
+++ /dev/null
@@ -1,209 +0,0 @@
-#if DM_VERSION < 510
-
-json_token
- var
- value
- New(v)
- src.value = v
- text
- number
- word
- symbol
- eof
-
-json_reader
- var
- list
- string = list("'", "\"")
- symbols = list("{", "}", "\[", "]", ":", "\"", "'", ",")
- sequences = list("b" = 8, "t" = 9, "n" = 10, "f" = 12, "r" = 13)
- tokens
- json
- i = 1
-
-
- proc
- // scanner
- ScanJson(json)
- src.json = json
- . = new/list()
- src.i = 1
- while(src.i <= length(json))
- var/char = get_char()
- if(is_whitespace(char))
- i++
- continue
- if(string.Find(char))
- . += read_string(char)
- else if(symbols.Find(char))
- . += new/json_token/symbol(char)
- else if(is_digit(char))
- . += read_number()
- else
- . += read_word()
- i++
- . += new/json_token/eof()
-
- read_word()
- var/val = ""
- while(i <= length(json))
- var/char = get_char()
- if(is_whitespace(char) || symbols.Find(char))
- i-- // let scanner handle this character
- return new/json_token/word(val)
- val += char
- i++
-
- read_string(delim)
- var
- escape = FALSE
- val = ""
- while(++i <= length(json))
- var/char = get_char()
- if(escape)
- switch(char)
- if("\\", "'", "\"", "/", "u")
- val += char
- else
- // TODO: support octal, hex, unicode sequences
- ASSERT(sequences.Find(char))
- val += ascii2text(sequences[char])
- else
- if(char == delim)
- return new/json_token/text(val)
- else if(char == "\\")
- escape = TRUE
- else
- val += char
- CRASH("Unterminated string.")
-
- read_number()
- var/val = ""
- var/char = get_char()
- while(is_digit(char) || char == "." || lowertext(char) == "e")
- val += char
- i++
- char = get_char()
- i-- // allow scanner to read the first non-number character
- return new/json_token/number(text2num(val))
-
- check_char()
- ASSERT(args.Find(get_char()))
-
- get_char()
- return copytext(json, i, i+1)
-
- is_whitespace(char)
- return char == " " || char == "\t" || char == "\n" || text2ascii(char) == 13
-
- is_digit(char)
- var/c = text2ascii(char)
- return 48 <= c && c <= 57 || char == "+" || char == "-"
-
-
- // parser
- ReadObject(list/tokens)
- src.tokens = tokens
- . = new/list()
- i = 1
- read_token("{", /json_token/symbol)
- while(i <= tokens.len)
- var/json_token/K = get_token()
- check_type(/json_token/word, /json_token/text)
- next_token()
- read_token(":", /json_token/symbol)
-
- .[K.value] = read_value()
-
- var/json_token/S = get_token()
- check_type(/json_token/symbol)
- switch(S.value)
- if(",")
- next_token()
- continue
- if("}")
- next_token()
- return
- else
- die()
-
- get_token()
- return tokens[i]
-
- next_token()
- return tokens[++i]
-
- read_token(val, type)
- var/json_token/T = get_token()
- if(!(T.value == val && istype(T, type)))
- CRASH("Expected '[val]', found '[T.value]'.")
- next_token()
- return T
-
- check_type(...)
- var/json_token/T = get_token()
- for(var/type in args)
- if(istype(T, type))
- return
- CRASH("Bad token type: [T.type].")
-
- check_value(...)
- var/json_token/T = get_token()
- ASSERT(args.Find(T.value))
-
- read_key()
- var/char = get_char()
- if(char == "\"" || char == "'")
- return read_string(char)
-
- read_value()
- var/json_token/T = get_token()
- switch(T.type)
- if(/json_token/text, /json_token/number)
- next_token()
- return T.value
- if(/json_token/word)
- next_token()
- switch(T.value)
- if("true")
- return TRUE
- if("false")
- return FALSE
- if("null")
- return null
- if(/json_token/symbol)
- switch(T.value)
- if("\[")
- return read_array()
- if("{")
- return ReadObject(tokens.Copy(i))
- die()
-
- read_array()
- read_token("\[", /json_token/symbol)
- . = new/list()
- var/list/L = .
- while(i <= tokens.len)
- // Avoid using Add() or += in case a list is returned.
- L.len++
- L[L.len] = read_value()
- var/json_token/T = get_token()
- check_type(/json_token/symbol)
- switch(T.value)
- if(",")
- next_token()
- continue
- if("]")
- next_token()
- return
- else
- die()
- next_token()
- CRASH("Unterminated array.")
-
-
- die(json_token/T)
- if(!T) T = get_token()
- CRASH("Unexpected token: [T.value].")
-
-#endif
\ No newline at end of file
diff --git a/code/_compatibility/509/JSON Writer.dm b/code/_compatibility/509/JSON Writer.dm
deleted file mode 100644
index 80e4976687b..00000000000
--- a/code/_compatibility/509/JSON Writer.dm
+++ /dev/null
@@ -1,62 +0,0 @@
-#if DM_VERSION < 510
-
-json_writer
- var
- use_cache = 0
-
- proc
- WriteObject(list/L)
- if(use_cache && L["__json_cache"])
- return L["__json_cache"]
-
- . = "{"
- var/i = 1
- for(var/k in L)
- var/val = L[k]
- . += {"\"[k]\":[write(val)]"}
- if(i++ < L.len)
- . += ","
- . += "}"
-
- write(val)
- if(isnum(val))
- return num2text(val)
- else if(isnull(val))
- return "null"
- else if(istype(val, /list))
- if(is_associative(val))
- return WriteObject(val)
- else
- return write_array(val)
- else
- . += write_string("[val]")
-
- write_array(list/L)
- . = "\["
- for(var/i = 1 to L.len)
- . += write(L[i])
- if(i < L.len)
- . += ","
- . += "]"
-
- write_string(txt)
- var/static/list/json_escape = list("\\" = "\\\\", "\"" = "\\\"", "\n" = "\\n")
- for(var/targ in json_escape)
- var/start = 1
- while(start <= length(txt))
- var/i = findtext(txt, targ, start)
- if(!i)
- break
- var/lrep = length(json_escape[targ])
- txt = copytext(txt, 1, i) + json_escape[targ] + copytext(txt, i + length(targ))
- start = i + lrep
-
- return {""[txt]""}
-
- is_associative(list/L)
- for(var/key in L)
- // if the key is a list that means it's actually an array of lists (stupid Byond...)
- if(!isnum(key) && !isnull(L[key]) && !istype(key, /list))
- return TRUE
-
-#endif
\ No newline at end of file
diff --git a/code/_compatibility/509/_JSON.dm b/code/_compatibility/509/_JSON.dm
deleted file mode 100644
index 46f488ac568..00000000000
--- a/code/_compatibility/509/_JSON.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-#if DM_VERSION < 510
-/*
-n_Json v11.3.21
-*/
-
-proc
- json_decode(json)
- var/static/json_reader/_jsonr = new()
- return _jsonr.ReadObject(_jsonr.ScanJson(json))
-
- json_encode(list/L)
- var/static/json_writer/_jsonw = new()
- return _jsonw.write(L)
-#endif
\ No newline at end of file
diff --git a/code/_compatibility/509/text.dm b/code/_compatibility/509/text.dm
deleted file mode 100644
index c22790ccb87..00000000000
--- a/code/_compatibility/509/text.dm
+++ /dev/null
@@ -1,6 +0,0 @@
-#if DM_VERSION < 510
-
-/proc/replacetext(text, find, replacement)
- return jointext(splittext(text, find), replacement)
-
-#endif
\ No newline at end of file
diff --git a/code/_compatibility/509/type2type.dm b/code/_compatibility/509/type2type.dm
deleted file mode 100644
index 62d7a5e5c79..00000000000
--- a/code/_compatibility/509/type2type.dm
+++ /dev/null
@@ -1,102 +0,0 @@
-#if DM_VERSION < 510
-// Concatenates a list of strings into a single string. A seperator may optionally be provided.
-/proc/jointext(list/ls, sep)
- if (ls.len <= 1) // Early-out code for empty or singleton lists.
- return ls.len ? ls[1] : ""
-
- var/l = ls.len // Made local for sanic speed.
- var/i = 0 // Incremented every time a list index is accessed.
-
- if (sep <> null)
- // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc...
- #define S1 sep, ls[++i]
- #define S4 S1, S1, S1, S1
- #define S16 S4, S4, S4, S4
- #define S64 S16, S16, S16, S16
-
- . = "[ls[++i]]" // Make sure the initial element is converted to text.
-
- // Having the small concatenations come before the large ones boosted speed by an average of at least 5%.
- if (l-1 & 0x01) // 'i' will always be 1 here.
- . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2.
- if (l-i & 0x02)
- . = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
- if (l-i & 0x04)
- . = text("[][][][][][][][][]", ., S4) // And so on....
- if (l-i & 0x08)
- . = text("[][][][][][][][][][][][][][][][][]", ., S4, S4)
- if (l-i & 0x10)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16)
- if (l-i & 0x20)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
- if (l-i & 0x40)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
- while (l > i) // Chomp through the rest of the list, 128 elements at a time.
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
-
- #undef S64
- #undef S16
- #undef S4
- #undef S1
- else
- // Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc...
- #define S1 ls[++i]
- #define S4 S1, S1, S1, S1
- #define S16 S4, S4, S4, S4
- #define S64 S16, S16, S16, S16
-
- . = "[ls[++i]]" // Make sure the initial element is converted to text.
-
- if (l-1 & 0x01) // 'i' will always be 1 here.
- . += S1 // Append 1 element if the remaining elements are not a multiple of 2.
- if (l-i & 0x02)
- . = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
- if (l-i & 0x04)
- . = text("[][][][][]", ., S4) // And so on...
- if (l-i & 0x08)
- . = text("[][][][][][][][][]", ., S4, S4)
- if (l-i & 0x10)
- . = text("[][][][][][][][][][][][][][][][][]", ., S16)
- if (l-i & 0x20)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
- if (l-i & 0x40)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
- while (l > i) // Chomp through the rest of the list, 128 elements at a time.
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
-
- #undef S64
- #undef S16
- #undef S4
- #undef S1
-
-// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
-/proc/splittext(text, delimiter="\n")
- var/delim_len = length(delimiter)
- if (delim_len < 1)
- return list(text)
-
- . = list()
- var/last_found = 1
- var/found
-
- do
- found = findtext(text, delimiter, last_found, 0)
- . += copytext(text, last_found, found)
- last_found = found + delim_len
- while (found)
-#endif
\ No newline at end of file
diff --git a/code/_helpers/type2type.dm b/code/_helpers/type2type.dm
index cb5834ffb1e..efef4130135 100644
--- a/code/_helpers/type2type.dm
+++ b/code/_helpers/type2type.dm
@@ -2,11 +2,9 @@
* Holds procs designed to change one type of value, into another.
* Contains:
* hex2num & num2hex
- * text2list & list2text
* file2list
* angle2dir
* angle2text
- * worldtime2text
*/
// Returns an integer given a hexadecimal number string as input.
@@ -294,107 +292,6 @@
return strtype
return copytext(strtype, delim_pos)
-// Concatenates a list of strings into a single string. A seperator may optionally be provided.
-/proc/list2text(list/ls, sep)
- if (ls.len <= 1) // Early-out code for empty or singleton lists.
- return ls.len ? ls[1] : ""
-
- var/l = ls.len // Made local for sanic speed.
- var/i = 0 // Incremented every time a list index is accessed.
-
- if (sep != null)
- // Macros expand to long argument lists like so: sep, ls[++i], sep, ls[++i], sep, ls[++i], etc...
- #define S1 sep, ls[++i]
- #define S4 S1, S1, S1, S1
- #define S16 S4, S4, S4, S4
- #define S64 S16, S16, S16, S16
-
- . = "[ls[++i]]" // Make sure the initial element is converted to text.
-
- // Having the small concatenations come before the large ones boosted speed by an average of at least 5%.
- if (l-1 & 0x01) // 'i' will always be 1 here.
- . = text("[][][]", ., S1) // Append 1 element if the remaining elements are not a multiple of 2.
- if (l-i & 0x02)
- . = text("[][][][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
- if (l-i & 0x04)
- . = text("[][][][][][][][][]", ., S4) // And so on....
- if (l-i & 0x08)
- . = text("[][][][][][][][][][][][][][][][][]", ., S4, S4)
- if (l-i & 0x10)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16)
- if (l-i & 0x20)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
- if (l-i & 0x40)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
- while (l > i) // Chomp through the rest of the list, 128 elements at a time.
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
-
- #undef S64
- #undef S16
- #undef S4
- #undef S1
- else
- // Macros expand to long argument lists like so: ls[++i], ls[++i], ls[++i], etc...
- #define S1 ls[++i]
- #define S4 S1, S1, S1, S1
- #define S16 S4, S4, S4, S4
- #define S64 S16, S16, S16, S16
-
- . = "[ls[++i]]" // Make sure the initial element is converted to text.
-
- if (l-1 & 0x01) // 'i' will always be 1 here.
- . += S1 // Append 1 element if the remaining elements are not a multiple of 2.
- if (l-i & 0x02)
- . = text("[][][]", ., S1, S1) // Append 2 elements if the remaining elements are not a multiple of 4.
- if (l-i & 0x04)
- . = text("[][][][][]", ., S4) // And so on...
- if (l-i & 0x08)
- . = text("[][][][][][][][][]", ., S4, S4)
- if (l-i & 0x10)
- . = text("[][][][][][][][][][][][][][][][][]", ., S16)
- if (l-i & 0x20)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S16, S16)
- if (l-i & 0x40)
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64)
- while (l > i) // Chomp through the rest of the list, 128 elements at a time.
- . = text("[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]\
- [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]", ., S64, S64)
-
- #undef S64
- #undef S16
- #undef S4
- #undef S1
-
-// Converts a string into a list by splitting the string at each delimiter found. (discarding the seperator)
-/proc/text2list(text, delimiter="\n")
- var/delim_len = length(delimiter)
- if (delim_len < 1)
- return list(text)
-
- . = list()
- var/last_found = 1
- var/found
-
- do
- found = findtext(text, delimiter, last_found, 0)
- . += copytext(text, last_found, found)
- last_found = found + delim_len
- while (found)
-
/proc/type2parent(child)
var/string_type = "[child]"
var/last_slash = findlasttext(string_type, "/")
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index ec9633e20c4..10ac37ca0ec 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -196,9 +196,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
return 1
return 0
-/proc/sign(x)
- return x!=0?x/abs(x):0
-
/proc/getline(atom/M,atom/N)//Ultra-Fast Bresenham Line-Drawing Algorithm
var/px=M.x //starting x
var/py=M.y
@@ -207,8 +204,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/dy=N.y-py
var/dxabs=abs(dx)//Absolute value of x distance
var/dyabs=abs(dy)
- var/sdx=sign(dx) //Sign of x distance (+ or -)
- var/sdy=sign(dy)
+ var/sdx=SIGN(dx) //Sign of x distance (+ or -)
+ var/sdy=SIGN(dy)
var/x=dxabs>>1 //Counters for steps taken, setting to distance/2
var/y=dyabs>>1 //Bit-shifting makes me l33t. It also makes getline() unnessecarrily fast.
var/j //Generic integer for counting
@@ -426,34 +423,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
else . = pick(ais)
return .
-/proc/get_sorted_mobs()
- var/list/old_list = getmobs()
- var/list/AI_list = list()
- 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(issilicon(M))
- AI_list |= M
- else 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 += AI_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()
return observe_list_format(sortmobs())
@@ -528,14 +497,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
return "[round((powerused * 0.000001),0.001)] MW"
return "[round((powerused * 0.000000001),0.0001)] GW"
-/proc/get_mob_by_ckey(key)
- if(!key)
- return
- var/list/mobs = sortmobs()
- for(var/mob/M in mobs)
- if(M.ckey == key)
- return M
-
//Forces a variable to be posative
/proc/modulus(var/M)
if(M >= 0)
@@ -648,34 +609,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
cant_pass = 1
return cant_pass
-/proc/get_step_towards2(var/atom/ref , var/atom/trg)
- var/base_dir = get_dir(ref, get_step_towards(ref,trg))
- var/turf/temp = get_step_towards(ref,trg)
-
- if(is_blocked_turf(temp))
- var/dir_alt1 = turn(base_dir, 90)
- var/dir_alt2 = turn(base_dir, -90)
- var/turf/turf_last1 = temp
- var/turf/turf_last2 = temp
- var/free_tile = null
- var/breakpoint = 0
-
- while(!free_tile && breakpoint < 10)
- if(!is_blocked_turf(turf_last1))
- free_tile = turf_last1
- break
- if(!is_blocked_turf(turf_last2))
- free_tile = turf_last2
- break
- turf_last1 = get_step(turf_last1,dir_alt1)
- turf_last2 = get_step(turf_last2,dir_alt2)
- breakpoint++
-
- if(!free_tile) return get_step(ref, base_dir)
- else return get_step_towards(ref,free_tile)
-
- else return get_step(ref, base_dir)
-
//Takes: Anything that could possibly have variables and a varname to check.
//Returns: 1 if found, 0 if not.
/proc/hasvar(var/datum/A, var/varname)
@@ -693,20 +626,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
/proc/return_sorted_areas()
return sortTim(return_areas(), /proc/cmp_text_asc)
-//Takes: Area type as text string or as typepath OR an instance of the area.
-//Returns: A list of all areas of that type in the world.
-/proc/get_areas(var/areatype)
- if(!areatype) return null
- if(istext(areatype)) areatype = text2path(areatype)
- if(isarea(areatype))
- var/area/areatemp = areatype
- areatype = areatemp.type
-
- var/list/areas = new/list()
- for(var/area/N in world)
- if(istype(N, areatype)) areas += N
- return areas
-
//Takes: Area type as text string or as typepath OR an instance of the area.
//Returns: A list of all turfs in areas of that type of that type in the world.
/proc/get_area_turfs(var/areatype)
@@ -1021,10 +940,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/dy = abs(B.y - A.y)
return get_dir(A, B) & (rand() * (dx+dy) < dy ? 3 : 12)
-//chances are 1:value. anyprob(1) will always return true
-/proc/anyprob(value)
- return (rand(1,value)==value)
-
/proc/view_or_range(distance = world.view , center = usr , type)
switch(type)
if("view")
@@ -1033,14 +948,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
. = range(distance,center)
return
-/proc/oview_or_orange(distance = world.view , center = usr , type)
- switch(type)
- if("view")
- . = oview(distance,center)
- if("range")
- . = orange(distance,center)
- return
-
/proc/get_mob_with_client_list()
var/list/mobs = list()
for(var/mob/M in mob_list)
@@ -1162,16 +1069,6 @@ var/global/list/common_tools = list(
istype(W, /obj/item/weapon/shovel) \
)
-/proc/is_surgery_tool(obj/item/W as obj)
- return ( \
- istype(W, /obj/item/weapon/surgical/scalpel) || \
- istype(W, /obj/item/weapon/surgical/hemostat) || \
- istype(W, /obj/item/weapon/surgical/retractor) || \
- istype(W, /obj/item/weapon/surgical/cautery) || \
- istype(W, /obj/item/weapon/surgical/bonegel) || \
- istype(W, /obj/item/weapon/surgical/bonesetter)
- )
-
// check if mob is lying down on something we can operate him on.
// The RNG with table/rollerbeds comes into play in do_surgery() so that fail_step() can be used instead.
/proc/can_operate(mob/living/carbon/M, mob/living/user)
@@ -1191,29 +1088,13 @@ var/global/list/common_tools = list(
var/obj/surface = null
for(var/obj/O in loc) // Looks for the best surface.
if(O.surgery_odds)
- if(!surface || surface.surgery_odds < O)
+ if(!surface || surface.surgery_odds < O.surgery_odds)
surface = O
if(surface)
return surface
/proc/reverse_direction(var/dir)
- switch(dir)
- if(NORTH)
- return SOUTH
- if(NORTHEAST)
- return SOUTHWEST
- if(EAST)
- return WEST
- if(SOUTHEAST)
- return NORTHWEST
- if(SOUTH)
- return NORTH
- if(SOUTHWEST)
- return NORTHEAST
- if(WEST)
- return EAST
- if(NORTHWEST)
- return SOUTHEAST
+ return global.reverse_dir[dir]
/*
Checks if that loc and dir has a item on the wall
@@ -1485,9 +1366,6 @@ var/mob/dview/dview_mob = new
if(337.5)
return "North-Northwest"
-/proc/pass()
- return
-
/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if (value == FALSE) //nothing should be calling us with a number, so this is safe
value = input(usr, "Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
diff --git a/code/global.dm b/code/global.dm
index 1fde7aca07a..674c81f8eec 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -1,6 +1,6 @@
//#define TESTING
-#if DM_VERSION < 506
-#warn This compiler is out of date. You may experience issues with projectile animations.
+#if DM_VERSION < 512
+#error This compiler is out of date Please update to at least BYOND 512.
#endif
// Items that ask to be called every cycle.
diff --git a/code/modules/food/kitchen/cooking_machines/_appliance.dm b/code/modules/food/kitchen/cooking_machines/_appliance.dm
index 1b090068f6b..9a838efeb87 100644
--- a/code/modules/food/kitchen/cooking_machines/_appliance.dm
+++ b/code/modules/food/kitchen/cooking_machines/_appliance.dm
@@ -506,7 +506,7 @@
if (!S)
continue
- words |= text2list(S.name," ")
+ words |= splittext(S.name," ")
cooktypes |= S.cooked
if (S.reagents && S.reagents.total_volume > 0)
diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
index be6421600ad..59089b39823 100644
--- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
+++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm
@@ -228,21 +228,21 @@
if(!delivery && compactor && length(contents))//garbage counter for trashpup
dat += "Current load: [length(contents)] / [max_item_count] objects.
"
- dat += "([list2text(contents,", ")])
"
+ dat += "([contents.Join(", ")])
"
if(delivery && length(contents))
dat += "Current load: [length(contents)] / [max_item_count] objects.
"
dat += "Cargo compartment slot: Cargo 1.
"
if(length(deliveryslot_1))
- dat += "([list2text(deliveryslot_1,", ")])
"
+ dat += "([deliveryslot_1.Join(", ")])
"
dat += "Cargo compartment slot: Cargo 2.
"
if(length(deliveryslot_2))
- dat += "([list2text(deliveryslot_2,", ")])
"
+ dat += "([deliveryslot_2.Join(", ")])
"
dat += "Cargo compartment slot: Cargo 3.
"
if(length(deliveryslot_3))
- dat += "([list2text(deliveryslot_3,", ")])
"
+ dat += "([deliveryslot_3.Join(", ")])
"
dat += "Cargo compartment slot: Fuel.
"
- dat += "([list2text(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])
"
+ dat += "([jointext(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])
"
if(analyzer && !synced)
dat += "Sync Files
"
diff --git a/code/modules/power/antimatter/engine.dm b/code/modules/power/antimatter/engine.dm
index aa1c2245d6f..13f230bbb6e 100644
--- a/code/modules/power/antimatter/engine.dm
+++ b/code/modules/power/antimatter/engine.dm
@@ -98,7 +98,7 @@
H_fuel = 0
antiH_fuel = 0
else
- var/residual_matter = modulus(H_fuel - antiH_fuel)
+ var/residual_matter = abs(H_fuel - antiH_fuel)
var/mass = antiH_fuel + H_fuel - residual_matter
energy = convert2energy(mass)
if( H_fuel > antiH_fuel )
@@ -149,7 +149,7 @@
else //else if they're not equal determine which isn't equal
//and set it equal to either H or antiH so we don't lose anything
- var/residual_matter = modulus(H_fuel - antiH_fuel)
+ var/residual_matter = abs(H_fuel - antiH_fuel)
mass = antiH_fuel + H_fuel - residual_matter
energy = convert2energy(mass)
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index bacd5c296cf..940f5731d96 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -447,7 +447,7 @@
var/messages = null
if(raw_messages)
- messages = list2text(raw_messages, delim)
+ messages = raw_messages.Join(delim)
return messages
// The next function sets the messages on the belly, from human-readable var
@@ -456,7 +456,7 @@
/obj/belly/proc/set_messages(raw_text, type, delim = "\n\n")
ASSERT(type == "smo" || type == "smi" || type == "dmo" || type == "dmp" || type == "em" || type == "ema" || type == "im_digest" || type == "im_hold" || type == "im_absorb" || type == "im_heal" || type == "im_drain")
- var/list/raw_list = text2list(html_encode(raw_text),delim)
+ var/list/raw_list = splittext(html_encode(raw_text),delim)
if(raw_list.len > 10)
raw_list.Cut(11)
log_debug("[owner] tried to set [lowertext(name)] with 11+ messages")
diff --git a/vorestation.dme b/vorestation.dme
index eaedfce719d..825e308b844 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -106,11 +106,6 @@
#include "code\__defines\dcs\flags.dm"
#include "code\__defines\dcs\helpers.dm"
#include "code\__defines\dcs\signals.dm"
-#include "code\_compatibility\509\_JSON.dm"
-#include "code\_compatibility\509\JSON Reader.dm"
-#include "code\_compatibility\509\JSON Writer.dm"
-#include "code\_compatibility\509\text.dm"
-#include "code\_compatibility\509\type2type.dm"
#include "code\_global_vars\bitfields.dm"
#include "code\_global_vars\misc.dm"
#include "code\_global_vars\mobs.dm"